diff --git a/.vpython3 b/.vpython3
new file mode 100644
index 0000000..6bb01bc
--- /dev/null
+++ b/.vpython3
@@ -0,0 +1,28 @@
+# This is a vpython "spec" file.
+#
+# It describes patterns for python wheel dependencies of the python scripts in
+# the chromium repo, particularly for dependencies that have compiled components
+# (since pure-python dependencies can be easily vendored into third_party).
+#
+# When vpython is invoked, it finds this file and builds a python VirtualEnv,
+# containing all of the dependencies described in this file, fetching them from
+# CIPD (the "Chrome Infrastructure Package Deployer" service). Unlike `pip`,
+# this never requires the end-user machine to have a working python extension
+# compilation environment. All of these packages are built using:
+#   https://chromium.googlesource.com/infra/infra/+/master/infra/tools/dockerbuild/
+#
+# All python scripts in the repo share this same spec, to avoid dependency
+# fragmentation.
+#
+# If you have depot_tools installed in your $PATH, you can invoke python scripts
+# in this repo by running them as you normally would run them, except
+# substituting `vpython` instead of `python` on the command line, e.g.:
+#   vpython path/to/script.py some --arguments
+#
+# Read more about `vpython` and how to modify this file here:
+#   https://chromium.googlesource.com/infra/infra/+/master/doc/users/vpython.md
+
+python_version: "3.8"
+
+# TODO(https://crbug.com/898348): Add in necessary wheels as Python3 versions
+# become available.
diff --git a/DEPS b/DEPS
index 729c68ef..1aba3128 100644
--- a/DEPS
+++ b/DEPS
@@ -162,7 +162,7 @@
   # 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': 'a47836e01af99b1ace19fdc35d7f0df47718d7d6',
+  'skia_revision': 'f57b7cb8f0bc285de32b12b285b4744998d512ca',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling V8
   # and whatever else without interference from each other.
@@ -225,7 +225,7 @@
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling catapult
   # and whatever else without interference from each other.
-  'catapult_revision': '884c81e1703f23320657fab45aaeca226f64de25',
+  'catapult_revision': '1f562b7ad68c7797e0d7c29fa18588198b6d5d9f',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling libFuzzer
   # and whatever else without interference from each other.
@@ -297,7 +297,7 @@
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling feed
   # and whatever else without interference from each other.
-  'dawn_revision': 'a900ccebcf428c99184ca44a3fad6030b2e43fc7',
+  'dawn_revision': 'f60522f5a4670f98e6d459a677122a2d4f89f3ad',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling feed
   # and whatever else without interference from each other.
@@ -867,7 +867,7 @@
   },
 
   'src/third_party/depot_tools':
-    Var('chromium_git') + '/chromium/tools/depot_tools.git' + '@' + 'e5641be5fe309f40aad850d4d1e1ca607768572c',
+    Var('chromium_git') + '/chromium/tools/depot_tools.git' + '@' + 'd9c1c856c64c30d6a45e318c7c0349bed9a995b3',
 
   'src/third_party/devtools-node-modules':
     Var('chromium_git') + '/external/github.com/ChromeDevTools/devtools-node-modules' + '@' + Var('devtools_node_modules_revision'),
@@ -1414,7 +1414,7 @@
     Var('chromium_git') + '/external/khronosgroup/webgl.git' + '@' + 'abaae129d9a0c6e1e092067e0b105475df43352e',
 
   'src/third_party/webrtc':
-    Var('webrtc_git') + '/src.git' + '@' + '45b01c7962da7bbd08a35ba59ad3e360457c6563',
+    Var('webrtc_git') + '/src.git' + '@' + 'de5f63910e2429472fc4fa7e53ac42fd91f69d02',
 
   'src/third_party/xdg-utils': {
       'url': Var('chromium_git') + '/chromium/deps/xdg-utils.git' + '@' + 'd80274d5869b17b8c9067a1022e4416ee7ed5e0d',
@@ -1455,7 +1455,7 @@
     Var('chromium_git') + '/v8/v8.git' + '@' +  Var('v8_revision'),
 
   'src-internal': {
-    'url': 'https://chrome-internal.googlesource.com/chrome/src-internal.git@c1ec0cbb921b362d60fb4e5f7dc95d49e804c746',
+    'url': 'https://chrome-internal.googlesource.com/chrome/src-internal.git@66d325b6e26e01770db22893e5a210256d17a78d',
     'condition': 'checkout_src_internal',
   },
 
diff --git a/OWNERS b/OWNERS
index 15836c3..872d82b 100644
--- a/OWNERS
+++ b/OWNERS
@@ -10,10 +10,9 @@
 per-file .git-blame-ignore-revs=mgiuca@chromium.org
 per-file .git-blame-ignore-revs=thakis@chromium.org
 per-file .gn=file://build/OWNERS
-per-file .vpython=dnj@chromium.org
-per-file .vpython=dpranke@chromium.org
-per-file .vpython=iannucci@chromium.org
-per-file .vpython=jbudorick@chromium.org
+per-file .vpython*=dpranke@chromium.org
+per-file .vpython*=iannucci@chromium.org
+per-file .vpython*=jbudorick@chromium.org
 per-file AUTHORS=*
 per-file BUILD.gn=file://build/OWNERS
 per-file codereview.settings=agable@chromium.org
diff --git a/android_webview/README.md b/android_webview/README.md
new file mode 100644
index 0000000..a114f3cf
--- /dev/null
+++ b/android_webview/README.md
@@ -0,0 +1,6 @@
+# Android WebView
+
+This directory contains the Android WebView implementation.
+
+See https://developer.android.com/reference/android/webkit/WebView for
+developer documentation.
diff --git a/android_webview/javatests/src/org/chromium/android_webview/test/SafeBrowsingTest.java b/android_webview/javatests/src/org/chromium/android_webview/test/SafeBrowsingTest.java
index 6e9ff2b..ae4236a 100644
--- a/android_webview/javatests/src/org/chromium/android_webview/test/SafeBrowsingTest.java
+++ b/android_webview/javatests/src/org/chromium/android_webview/test/SafeBrowsingTest.java
@@ -195,7 +195,7 @@
         }
 
         @Override
-        public boolean startAllowlistLookup(final String uri, int[] threatsOfInterest) {
+        public boolean startAllowlistLookup(final String uri, int threatType) {
             return false;
         }
     }
diff --git a/ash/app_list/views/apps_container_view.cc b/ash/app_list/views/apps_container_view.cc
index fa25d254..1922e66 100644
--- a/ash/app_list/views/apps_container_view.cc
+++ b/ash/app_list/views/apps_container_view.cc
@@ -75,9 +75,8 @@
           ? 0
           : kAppsGridMinimumMargin * 2;
 
-  // Enlarge with the apps grid view insets and margin.
-  size.Enlarge(min_grid_horizontal_margin,
-               AppsGridView::kFadeoutZoneHeight * 2);
+  // Enlarge with the apps grid view horizontal margin.
+  size.Enlarge(min_grid_horizontal_margin, 0);
 
   // Enlarge with suggestion chips.
   size.Enlarge(0, kSuggestionChipFullscreenY + kSuggestionChipContainerHeight);
@@ -282,7 +281,7 @@
       // fullscreen and peeking state to avoid resizing the view during
       // animation and dragging, which is an expensive operation.
       rect.set_y(chip_container_rect.bottom());
-      rect.set_height(rect.height() - kSuggestionChipFullscreenY -
+      rect.set_height(rect.height() - GetSuggestionChipContainerFullscreenY() -
                       kSuggestionChipContainerHeight);
 
       const int page_switcher_width =
@@ -423,21 +422,6 @@
     event->SetHandled();
 }
 
-gfx::Size AppsContainerView::GetMinimumSize() const {
-  const bool switch_cols_and_rows = ShouldSwitchColsAndRows();
-  const int cols = switch_cols_and_rows
-                       ? AppListConfig::instance().preferred_rows()
-                       : AppListConfig::instance().preferred_cols();
-  const int rows = switch_cols_and_rows
-                       ? AppListConfig::instance().preferred_cols()
-                       : AppListConfig::instance().preferred_rows();
-  gfx::Size min_size = apps_grid_view_->GetMinimumTileGridSize(cols, rows);
-
-  const gfx::Size non_apps_grid_size = GetNonAppsGridSize();
-  min_size.Enlarge(non_apps_grid_size.width(), non_apps_grid_size.height());
-  return min_size;
-}
-
 void AppsContainerView::OnWillBeHidden() {
   if (show_state_ == SHOW_APPS || show_state_ == SHOW_ITEM_REPARENT)
     apps_grid_view_->EndDrag(true);
@@ -564,7 +548,18 @@
   // Currently transition progress is between peeking and fullscreen
   // state.
   return gfx::Tween::IntValueBetween(progress - 1, kSuggestionChipPeekingY,
-                                     kSuggestionChipFullscreenY);
+                                     GetSuggestionChipContainerFullscreenY());
+}
+
+int AppsContainerView::GetSuggestionChipContainerFullscreenY() const {
+  // For small screen sizes, account for the search box size diff (48 - > 40),
+  // and reduce the margin between the search box and suggestion chips (24 ->
+  // 8).
+  if (GetContentsBounds().height() < kAppsGridMarginSmallWidthThreshold &&
+      !app_list_features::IsScalableAppListEnabled()) {
+    return kSuggestionChipFullscreenY - 24;
+  }
+  return kSuggestionChipFullscreenY;
 }
 
 bool AppsContainerView::ShouldSwitchColsAndRows() const {
diff --git a/ash/app_list/views/apps_container_view.h b/ash/app_list/views/apps_container_view.h
index 46df396..d7f2d61 100644
--- a/ash/app_list/views/apps_container_view.h
+++ b/ash/app_list/views/apps_container_view.h
@@ -81,7 +81,6 @@
   bool OnKeyPressed(const ui::KeyEvent& event) override;
   const char* GetClassName() const override;
   void OnGestureEvent(ui::GestureEvent* event) override;
-  gfx::Size GetMinimumSize() const override;
 
   // HorizontalPage overrides:
   void OnWillBeHidden() override;
@@ -115,6 +114,9 @@
     SHOW_ITEM_REPARENT,
   };
 
+  // Gets the suggestion chips container fullscreen Y coordinate.
+  int GetSuggestionChipContainerFullscreenY() const;
+
   void SetShowState(ShowState show_state, bool show_apps_with_animation);
 
   // Suggestion chips and apps grid view become unfocusable if |disabled| is
diff --git a/ash/app_list/views/apps_grid_view.cc b/ash/app_list/views/apps_grid_view.cc
index 79620f60..b9b4bc42 100644
--- a/ash/app_list/views/apps_grid_view.cc
+++ b/ash/app_list/views/apps_grid_view.cc
@@ -272,7 +272,8 @@
 // gradient fading out zones.
 class AppsGridView::FadeoutLayerDelegate : public ui::LayerDelegate {
  public:
-  FadeoutLayerDelegate() : layer_(ui::LAYER_TEXTURED) {
+  explicit FadeoutLayerDelegate(int fadeout_zone_height)
+      : layer_(ui::LAYER_TEXTURED), fadeout_zone_height_(fadeout_zone_height) {
     layer_.set_delegate(this);
     layer_.SetFillsBoundsOpaquely(false);
   }
@@ -287,9 +288,9 @@
   // the mask for the central area and only use it for top/bottom areas.
   void OnPaintLayer(const ui::PaintContext& context) override {
     const gfx::Size size = layer()->size();
-    gfx::Rect top_rect(0, 0, size.width(), kFadeoutZoneHeight);
-    gfx::Rect bottom_rect(0, size.height() - kFadeoutZoneHeight, size.width(),
-                          kFadeoutZoneHeight);
+    gfx::Rect top_rect(0, 0, size.width(), fadeout_zone_height_);
+    gfx::Rect bottom_rect(0, size.height() - fadeout_zone_height_, size.width(),
+                          fadeout_zone_height_);
 
     views::PaintInfo paint_info =
         views::PaintInfo::CreateRootPaintInfo(context, size);
@@ -310,12 +311,12 @@
     flags.setBlendMode(SkBlendMode::kSrc);
     flags.setAntiAlias(false);
     flags.setShader(gfx::CreateGradientShader(
-        gfx::Point(), gfx::Point(0, kFadeoutZoneHeight), SK_ColorTRANSPARENT,
+        gfx::Point(), gfx::Point(0, fadeout_zone_height_), SK_ColorTRANSPARENT,
         SK_ColorBLACK));
     canvas->DrawRect(top_rect, flags);
     // Draw bottom gradient zone.
     flags.setShader(gfx::CreateGradientShader(
-        gfx::Point(0, size.height() - kFadeoutZoneHeight),
+        gfx::Point(0, size.height() - fadeout_zone_height_),
         gfx::Point(0, size.height()), SK_ColorBLACK, SK_ColorTRANSPARENT));
     canvas->DrawRect(bottom_rect, flags);
   }
@@ -323,6 +324,7 @@
                                   float new_device_scale_factor) override {}
 
   ui::Layer layer_;
+  const int fadeout_zone_height_;
 
   DISALLOW_COPY_AND_ASSIGN(FadeoutLayerDelegate);
 };
@@ -346,8 +348,10 @@
   items_container_->layer()->SetFillsBoundsOpaquely(false);
   bounds_animator_ = std::make_unique<views::BoundsAnimator>(items_container_);
 
-  if (!folder_delegate)
-    SetBorder(views::CreateEmptyBorder(gfx::Insets(kFadeoutZoneHeight, 0)));
+  if (!folder_delegate) {
+    SetBorder(views::CreateEmptyBorder(
+        gfx::Insets(GetAppListConfig().grid_fadeout_zone_height(), 0)));
+  }
 
   pagination_model_.SetTransitionDurations(
       GetAppListConfig().page_transition_duration_ms(),
@@ -1007,7 +1011,8 @@
         // Always create a new layer. The layer may be recreated by animation,
         // and using the mask layer used by the detached layer can lead to
         // crash. b/118822974.
-        fadeout_layer_delegate_ = std::make_unique<FadeoutLayerDelegate>();
+        fadeout_layer_delegate_ = std::make_unique<FadeoutLayerDelegate>(
+            GetAppListConfig().grid_fadeout_zone_height());
         layer()->SetMaskLayer(fadeout_layer_delegate_->layer());
         fadeout_layer_delegate_->layer()->SetBounds(layer()->bounds());
       }
@@ -1193,6 +1198,11 @@
 
 void AppsGridView::Update() {
   DCHECK(!selected_view_ && !drag_view_);
+  if (!folder_delegate_) {
+    SetBorder(views::CreateEmptyBorder(
+        gfx::Insets(GetAppListConfig().grid_fadeout_zone_height(), 0)));
+  }
+
   view_model_.Clear();
   if (!item_list_ || !item_list_->item_count())
     return;
@@ -2114,8 +2124,7 @@
   DCHECK(!IsDraggingForReparentInRootLevelGridView());
   drag_and_drop_host_->CreateDragIconProxyByLocationWithNoAnimation(
       drag_view_->GetIconBoundsInScreen().origin(), drag_view_->GetIconImage(),
-      drag_view_,
-      kDragAndDropProxyScale * contents_view_->GetAppListMainViewScale(),
+      drag_view_, kDragAndDropProxyScale,
       drag_view_->item()->is_folder() && IsTabletMode()
           ? GetAppListConfig().blur_radius()
           : 0);
diff --git a/ash/app_list/views/apps_grid_view.h b/ash/app_list/views/apps_grid_view.h
index b9d9f86b..f7bd439 100644
--- a/ash/app_list/views/apps_grid_view.h
+++ b/ash/app_list/views/apps_grid_view.h
@@ -94,9 +94,6 @@
     TOUCH,
   };
 
-  // The height of gradient fade-out zones.
-  static constexpr int kFadeoutZoneHeight = 24;
-
   AppsGridView(ContentsView* contents_view,
                AppsGridViewFolderDelegate* folder_delegate);
   ~AppsGridView() override;
diff --git a/ash/app_list/views/contents_view.cc b/ash/app_list/views/contents_view.cc
index e565852..99c689b 100644
--- a/ash/app_list/views/contents_view.cc
+++ b/ash/app_list/views/contents_view.cc
@@ -370,9 +370,6 @@
   // to be original bounds. Note that this transform shouldn't be animated
   // through ui::LayerAnimator since intermediate transformed bounds might not
   // match with other animation and that could look janky.
-  const float scale = GetAppListMainViewScale();
-  target_bounds.set_origin(
-      gfx::Point(target_bounds.x() * scale, target_bounds.y() * scale));
   search_box->GetWidget()->SetBounds(target_bounds);
 
   UpdateSearchBoxAnimation(0.0f, current_state, target_state);
@@ -385,8 +382,6 @@
   if (!search_box->GetWidget())
     return;
 
-  const float scale = GetAppListMainViewScale();
-
   gfx::Rect previous_bounds = GetSearchBoxBoundsForState(current_state);
   previous_bounds = search_box->GetViewBoundsForSearchBoxContentsBounds(
       ConvertRectToWidgetWithoutTransform(previous_bounds));
@@ -398,14 +393,11 @@
       gfx::Tween::RectValueBetween(progress, previous_bounds, target_bounds);
   gfx::Transform transform;
 
-  if (current_bounds == target_bounds) {
-    transform.Scale(scale, scale);
-  } else {
+  if (current_bounds != target_bounds) {
     transform.Translate(current_bounds.origin() - target_bounds.origin());
-    // The existence of |scale| casts the width/height to float, so it's safe to
-    // divide.
-    transform.Scale(scale * current_bounds.width() / target_bounds.width(),
-                    scale * current_bounds.height() / target_bounds.height());
+    transform.Scale(
+        static_cast<float>(current_bounds.width()) / target_bounds.width(),
+        static_cast<float>(current_bounds.height()) / target_bounds.height());
   }
   search_box->GetWidget()->GetLayer()->SetTransform(transform);
 }
@@ -507,6 +499,15 @@
                            0);
   search_box_bounds.set_y(
       AppListConfig::instance().search_box_fullscreen_top_padding());
+  // Reduce the search box size in fullscreen view state when the work area
+  // height is less than 600 dip - the goal is to increase the amount of space
+  // available to apps grid.
+  if (GetContentsBounds().height() < 600 &&
+      !app_list_features::IsScalableAppListEnabled() &&
+      (target_view_state_ == ash::AppListViewState::kFullscreenAllApps ||
+       target_view_state_ == ash::AppListViewState::kFullscreenSearch)) {
+    search_box_bounds.set_height(40);
+  }
   return search_box_bounds;
 }
 
@@ -598,16 +599,11 @@
   gfx::Rect search_box_bounds = GetSearchBoxBoundsForState(current_state);
   search_box_bounds = search_box->GetViewBoundsForSearchBoxContentsBounds(
       ConvertRectToWidgetWithoutTransform(search_box_bounds));
-  const float scale = GetAppListMainViewScale();
-  search_box_bounds.set_origin(
-      gfx::Point(search_box_bounds.x() * scale, search_box_bounds.y() * scale));
   search_box->GetWidget()->SetBounds(search_box_bounds);
   search_box->UpdateLayout(1.f, current_state, current_state);
   search_box->UpdateBackground(1.f, current_state, current_state);
   // Reset the transform which can be set through animation.
-  gfx::Transform transform;
-  transform.Scale(scale, scale);
-  search_box->GetWidget()->GetLayer()->SetTransform(transform);
+  search_box->GetWidget()->GetLayer()->SetTransform(gfx::Transform());
 }
 
 const char* ContentsView::GetClassName() const {
@@ -707,13 +703,6 @@
   gfx::Rect search_rect = search_box->GetViewBoundsForSearchBoxContentsBounds(
       ConvertRectToWidgetWithoutTransform(
           apps_container_view->GetSearchBoxExpectedBounds()));
-
-  // Search box is in a different widget with AppListMainView, so we need to
-  // manually transform the search box position using the same scale based on
-  // the same origin.
-  const float scale = GetAppListMainViewScale();
-  search_rect.set_origin(
-      gfx::Point(search_rect.x() * scale, search_rect.y() * scale));
   search_box->GetWidget()->SetBounds(search_rect);
 
   search_results_page_view()->SetBoundsRect(
@@ -722,11 +711,6 @@
   apps_container_view->UpdateYPositionAndOpacity();
 }
 
-float ContentsView::GetAppListMainViewScale() const {
-  // The x and y scale are the same.
-  return app_list_view_->app_list_main_view()->GetTransform().Scale2d().x();
-}
-
 void ContentsView::SetExpandArrowViewVisibility(bool show) {
   if (expand_arrow_view_->GetVisible() == show)
     return;
diff --git a/ash/app_list/views/contents_view.h b/ash/app_list/views/contents_view.h
index 052912b..ae516262 100644
--- a/ash/app_list/views/contents_view.h
+++ b/ash/app_list/views/contents_view.h
@@ -214,10 +214,6 @@
   // Updates y position and opacity of the items in this view during dragging.
   void UpdateYPositionAndOpacity();
 
-  // Returns the scale that is used to transform the AppListMainView. The scale
-  // is also applied to search box window.
-  float GetAppListMainViewScale() const;
-
   // Show/hide the expand arrow view button when contents view is in fullscreen
   // and tablet mode is enabled.
   void SetExpandArrowViewVisibility(bool show);
diff --git a/ash/app_list/views/search_result_list_view.cc b/ash/app_list/views/search_result_list_view.cc
index 8f465c2..fe61e670 100644
--- a/ash/app_list/views/search_result_list_view.cc
+++ b/ash/app_list/views/search_result_list_view.cc
@@ -34,7 +34,6 @@
 
 namespace {
 
-constexpr int kMaxResults = 5;
 constexpr base::TimeDelta kImpressionThreshold =
     base::TimeDelta::FromSeconds(3);
 
@@ -137,7 +136,8 @@
   results_container_->SetLayoutManager(std::make_unique<views::BoxLayout>(
       views::BoxLayout::Orientation::kVertical));
 
-  for (int i = 0; i < kMaxResults; ++i) {
+  for (size_t i = 0;
+       i < AppListConfig::instance().max_search_result_list_items(); ++i) {
     search_result_views_.emplace_back(
         new SearchResultView(this, view_delegate_));
     search_result_views_.back()->set_index_in_container(i);
diff --git a/ash/assistant/assistant_ui_controller.cc b/ash/assistant/assistant_ui_controller.cc
index 7e8b119..9c2be42 100644
--- a/ash/assistant/assistant_ui_controller.cc
+++ b/ash/assistant/assistant_ui_controller.cc
@@ -38,11 +38,6 @@
 // When hidden, Assistant will automatically close after |kAutoCloseThreshold|.
 constexpr base::TimeDelta kAutoCloseThreshold = base::TimeDelta::FromMinutes(5);
 
-// When shown, the proactive suggestions widget will automatically close if the
-// user doesn't interact with it within a fixed interval.
-constexpr base::TimeDelta kAutoCloseProactiveSuggestionsThreshold =
-    base::TimeDelta::FromSeconds(15);
-
 // Toast -----------------------------------------------------------------------
 
 constexpr int kToastDurationMs = 2500;
@@ -213,7 +208,9 @@
     // The proactive suggestions widget will automatically be closed if the user
     // doesn't interact with it within a fixed interval.
     auto_close_proactive_suggestions_timer_.Start(
-        FROM_HERE, kAutoCloseProactiveSuggestionsThreshold,
+        FROM_HERE,
+        chromeos::assistant::features::
+            GetProactiveSuggestionsTimeoutThreshold(),
         base::BindRepeating(
             &AssistantUiController::ResetProactiveSuggestionsView,
             weak_factory_.GetWeakPtr(), proactive_suggestions->category(),
diff --git a/ash/assistant/ui/DEPS b/ash/assistant/ui/DEPS
index b2ebf4f..8d88e0be 100644
--- a/ash/assistant/ui/DEPS
+++ b/ash/assistant/ui/DEPS
@@ -13,6 +13,7 @@
   "+chromeos/assistant",
   "+chromeos/services/assistant/public",
   "+mojo/public/cpp",
+  "+net/base",
   "+services/content/public",
   "+third_party/skia/include/core",
   "+ui",
diff --git a/ash/assistant/ui/main_stage/assistant_query_view.cc b/ash/assistant/ui/main_stage/assistant_query_view.cc
index b008cda..058c36f 100644
--- a/ash/assistant/ui/main_stage/assistant_query_view.cc
+++ b/ash/assistant/ui/main_stage/assistant_query_view.cc
@@ -10,6 +10,7 @@
 #include "ash/assistant/model/assistant_query.h"
 #include "ash/assistant/ui/assistant_ui_constants.h"
 #include "base/strings/utf_string_conversions.h"
+#include "net/base/escape.h"
 #include "ui/accessibility/ax_enums.mojom.h"
 #include "ui/views/accessibility/view_accessibility.h"
 #include "ui/views/layout/box_layout.h"
@@ -109,11 +110,14 @@
   if (high_confidence_text.empty() && low_confidence_text.empty()) {
     label_->SetText(base::string16());
   } else {
+    // When coming from the server, both |high_confidence_text| and
+    // |low_confidence_text| may be HTML escaped, so we need to unescape both
+    // before displaying to avoid printing HTML entities to the user.
     const base::string16& high_confidence_text_16 =
-        base::UTF8ToUTF16(high_confidence_text);
+        net::UnescapeForHTML(base::UTF8ToUTF16(high_confidence_text));
 
     const base::string16& low_confidence_text_16 =
-        base::UTF8ToUTF16(low_confidence_text);
+        net::UnescapeForHTML(base::UTF8ToUTF16(low_confidence_text));
 
     label_->SetText(high_confidence_text_16 + low_confidence_text_16);
 
diff --git a/ash/assistant/ui/proactive_suggestions_view.cc b/ash/assistant/ui/proactive_suggestions_view.cc
index 573bd9f..7dd4bf3 100644
--- a/ash/assistant/ui/proactive_suggestions_view.cc
+++ b/ash/assistant/ui/proactive_suggestions_view.cc
@@ -11,6 +11,7 @@
 #include "ash/public/cpp/assistant/proactive_suggestions.h"
 #include "ash/resources/vector_icons/vector_icons.h"
 #include "base/strings/utf_string_conversions.h"
+#include "net/base/escape.h"
 #include "ui/display/screen.h"
 #include "ui/gfx/canvas.h"
 #include "ui/gfx/color_palette.h"
@@ -29,9 +30,12 @@
 
 // Appearance.
 constexpr int kAssistantIconSizeDip = 16;
-constexpr int kCloseButtonSizeDip = 16;
+constexpr int kCloseButtonIconSizeDip = 16;
+constexpr int kCloseButtonSizeDip = 32;
 constexpr int kLineHeightDip = 20;
 constexpr int kMaxWidthDip = 240;
+constexpr int kPaddingLeftDip = 8;
+constexpr int kPaddingRightDip = 0;
 constexpr int kPreferredHeightDip = 32;
 
 }  // namespace
@@ -130,7 +134,7 @@
   views::BoxLayout* layout_manager =
       SetLayoutManager(std::make_unique<views::BoxLayout>(
           views::BoxLayout::Orientation::kHorizontal,
-          gfx::Insets(0, kSpacingDip), kSpacingDip));
+          gfx::Insets(0, kPaddingLeftDip, 0, kPaddingRightDip)));
 
   layout_manager->set_cross_axis_alignment(
       views::BoxLayout::CrossAxisAlignment::kCenter);
@@ -143,6 +147,14 @@
       gfx::Size(kAssistantIconSizeDip, kAssistantIconSizeDip));
   AddChildView(assistant_icon);
 
+  // Spacing.
+  // Note that we don't add similar spacing between |label_| and the
+  // |close_button_| as the latter has internal spacing between its icon and
+  // outer bounds so as to provide a larger hit rect to the user.
+  views::View* spacing = new views::View();
+  spacing->SetPreferredSize(gfx::Size(kSpacingDip, kPreferredHeightDip));
+  AddChildView(spacing);
+
   // Label.
   views::Label* label = new views::Label();
   label->SetAutoColorReadabilityEnabled(false);
@@ -153,9 +165,15 @@
   label->SetHorizontalAlignment(gfx::HorizontalAlignment::ALIGN_LEFT);
   label->SetLineHeight(kLineHeightDip);
   label->SetMultiLine(false);
-  label->SetText(base::UTF8ToUTF16(delegate_->GetSuggestionsModel()
-                                       ->GetProactiveSuggestions()
-                                       ->description()));
+
+  // The |description| string coming from the proactive suggestions server may
+  // be HTML escaped so we need to unescape before displaying to avoid printing
+  // HTML entities to the user.
+  label->SetText(
+      net::UnescapeForHTML(base::UTF8ToUTF16(delegate_->GetSuggestionsModel()
+                                                 ->GetProactiveSuggestions()
+                                                 ->description())));
+
   AddChildView(label);
 
   // We impose a maximum width restriction on the proactive suggestions view.
@@ -166,8 +184,10 @@
   close_button_ = new views::ImageButton(/*listener=*/this);
   close_button_->SetImage(
       views::ImageButton::ButtonState::STATE_NORMAL,
-      gfx::CreateVectorIcon(views::kIcCloseIcon, kCloseButtonSizeDip,
+      gfx::CreateVectorIcon(views::kIcCloseIcon, kCloseButtonIconSizeDip,
                             gfx::kGoogleGrey100));
+  close_button_->SetImageHorizontalAlignment(views::ImageButton::ALIGN_CENTER);
+  close_button_->SetImageVerticalAlignment(views::ImageButton::ALIGN_MIDDLE);
   close_button_->SetPreferredSize(
       gfx::Size(kCloseButtonSizeDip, kCloseButtonSizeDip));
   AddChildView(close_button_);
diff --git a/ash/host/ash_window_tree_host_mirroring_unified.cc b/ash/host/ash_window_tree_host_mirroring_unified.cc
index 1be67b1..56cdcfced 100644
--- a/ash/host/ash_window_tree_host_mirroring_unified.cc
+++ b/ash/host/ash_window_tree_host_mirroring_unified.cc
@@ -72,4 +72,8 @@
   AshWindowTreeHostPlatform::PrepareForShutdown();
 }
 
+void AshWindowTreeHostMirroringUnified::OnMouseEnter() {
+  // No logical display change in unified desktop mode,so do nothing.
+}
+
 }  // namespace ash
diff --git a/ash/host/ash_window_tree_host_mirroring_unified.h b/ash/host/ash_window_tree_host_mirroring_unified.h
index 3c67277..78d0904e 100644
--- a/ash/host/ash_window_tree_host_mirroring_unified.h
+++ b/ash/host/ash_window_tree_host_mirroring_unified.h
@@ -30,6 +30,9 @@
   // ash::AshWindowTreeHostPlatform:
   void PrepareForShutdown() override;
 
+  // ui::PlatformWindowDelegate:
+  void OnMouseEnter() override;
+
  private:
   int64_t mirroring_display_id_;
 
diff --git a/ash/login/ui/parent_access_view.cc b/ash/login/ui/parent_access_view.cc
index 292fa69b..497111d 100644
--- a/ash/login/ui/parent_access_view.cc
+++ b/ash/login/ui/parent_access_view.cc
@@ -617,7 +617,7 @@
     label->SetSubpixelRenderingEnabled(false);
     label->SetAutoColorReadabilityEnabled(false);
     label->SetEnabledColor(kTextColor);
-    label->SetFocusBehavior(FocusBehavior::ALWAYS);
+    label->SetFocusBehavior(FocusBehavior::ACCESSIBLE_ONLY);
   };
 
   // Main view title.
diff --git a/ash/login/ui/parent_access_view_unittest.cc b/ash/login/ui/parent_access_view_unittest.cc
index 3313a30..22ab1d01 100644
--- a/ash/login/ui/parent_access_view_unittest.cc
+++ b/ash/login/ui/parent_access_view_unittest.cc
@@ -507,12 +507,6 @@
   EXPECT_TRUE(test_api.back_button()->HasFocus());
 
   generator->PressKey(ui::KeyboardCode::VKEY_TAB, ui::EF_NONE);
-  EXPECT_TRUE(test_api.title_label()->HasFocus());
-
-  generator->PressKey(ui::KeyboardCode::VKEY_TAB, ui::EF_NONE);
-  EXPECT_TRUE(test_api.description_label()->HasFocus());
-
-  generator->PressKey(ui::KeyboardCode::VKEY_TAB, ui::EF_NONE);
   EXPECT_TRUE(HasFocusInAnyChildView(test_api.access_code_view()));
 
   generator->PressKey(ui::KeyboardCode::VKEY_TAB, ui::EF_NONE);
@@ -539,12 +533,6 @@
   EXPECT_TRUE(HasFocusInAnyChildView(test_api.access_code_view()));
 
   generator->PressKey(ui::KeyboardCode::VKEY_TAB, ui::EF_SHIFT_DOWN);
-  EXPECT_TRUE(test_api.description_label()->HasFocus());
-
-  generator->PressKey(ui::KeyboardCode::VKEY_TAB, ui::EF_SHIFT_DOWN);
-  EXPECT_TRUE(test_api.title_label()->HasFocus());
-
-  generator->PressKey(ui::KeyboardCode::VKEY_TAB, ui::EF_SHIFT_DOWN);
   EXPECT_TRUE(test_api.back_button()->HasFocus());
 
   generator->PressKey(ui::KeyboardCode::VKEY_TAB, ui::EF_SHIFT_DOWN);
diff --git a/ash/public/cpp/app_list/app_list_config.cc b/ash/public/cpp/app_list/app_list_config.cc
index 2910987..56c47f4 100644
--- a/ash/public/cpp/app_list/app_list_config.cc
+++ b/ash/public/cpp/app_list/app_list_config.cc
@@ -16,6 +16,11 @@
 
 namespace {
 
+// The height reduced from the tile when min scale is not sufficient to make the
+// apps grid fit the available size - This would essentially remove the vertical
+// padding for the unclipped folder icon.
+constexpr int kMinYScaleHeightAdjustment = 16;
+
 // Scales |value| using the smaller one of |scale_1| and |scale_2|.
 int MinScale(int value, float scale_1, float scale_2) {
   return std::round(value * std::min(scale_1, scale_2));
@@ -245,6 +250,7 @@
       grid_title_color_(SK_ColorWHITE),
       grid_focus_dimension_(GridFocusDimensionForType(type)),
       grid_focus_corner_radius_(GridFocusCornerRadiusForType(type)),
+      grid_fadeout_zone_height_(24),
       search_tile_icon_dimension_(48),
       search_tile_badge_icon_dimension_(22),
       search_tile_badge_icon_offset_(5),
@@ -305,21 +311,31 @@
 AppListConfig::AppListConfig(const AppListConfig& base_config,
                              float scale_x,
                              float scale_y,
-                             float inner_tile_scale_y)
+                             float inner_tile_scale_y,
+                             bool min_y_scale)
     : type_(base_config.type_),
       scale_x_(scale_x),
       scale_y_(scale_y),
       grid_tile_width_(MinScale(base_config.grid_tile_width_, scale_x, 1)),
-      grid_tile_height_(MinScale(base_config.grid_tile_height_, scale_y, 1)),
+      grid_tile_height_(
+          MinScale(base_config.grid_tile_height_ -
+                       (min_y_scale ? kMinYScaleHeightAdjustment : 0),
+                   scale_y,
+                   1)),
       grid_tile_spacing_(base_config.grid_tile_spacing_),
       grid_icon_dimension_(MinScale(base_config.grid_icon_dimension_,
                                     scale_x,
                                     inner_tile_scale_y)),
-      grid_icon_bottom_padding_(MinScale(base_config.grid_icon_bottom_padding_,
-                                         inner_tile_scale_y,
-                                         1)),
+      grid_icon_bottom_padding_(
+          MinScale(base_config.grid_icon_bottom_padding_ +
+                       (min_y_scale ? kMinYScaleHeightAdjustment : 0),
+                   inner_tile_scale_y,
+                   1)),
       grid_title_top_padding_(
-          MinScale(base_config.grid_title_top_padding_, inner_tile_scale_y, 1)),
+          MinScale(base_config.grid_title_top_padding_ -
+                       (min_y_scale ? kMinYScaleHeightAdjustment : 0),
+                   inner_tile_scale_y,
+                   1)),
       grid_title_bottom_padding_(
           MinScale(base_config.grid_title_bottom_padding_,
                    inner_tile_scale_y,
@@ -334,6 +350,10 @@
       grid_focus_corner_radius_(MinScale(base_config.grid_focus_corner_radius_,
                                          scale_x,
                                          inner_tile_scale_y)),
+      grid_fadeout_zone_height_(
+          min_y_scale
+              ? 8
+              : MinScale(base_config.grid_fadeout_zone_height_, scale_y, 1)),
       search_tile_icon_dimension_(base_config.search_tile_icon_dimension_),
       search_tile_badge_icon_dimension_(
           base_config.search_tile_badge_icon_dimension_),
@@ -347,7 +367,8 @@
       suggestion_chip_icon_dimension_(
           base_config.suggestion_chip_icon_dimension_),
       app_title_max_line_height_(base_config.app_title_max_line_height_),
-      app_title_font_(base_config.app_title_font_),
+      app_title_font_(base_config.app_title_font_.DeriveWithSizeDelta(
+          min_y_scale ? -2 : (scale_y < 0.66 ? -1 : 0))),
       peeking_app_list_height_(base_config.peeking_app_list_height_),
       search_box_closed_top_padding_(
           base_config.search_box_closed_top_padding_),
@@ -389,7 +410,7 @@
       folder_dropping_circle_radius_(
           MinScale(base_config.folder_dropping_circle_radius_,
                    scale_x,
-                   scale_y)),
+                   inner_tile_scale_y)),
       folder_dropping_delay_(base_config.folder_dropping_delay_),
       folder_background_color_(base_config.folder_background_color_),
       page_flip_zone_size_(base_config.page_flip_zone_size_),
diff --git a/ash/public/cpp/app_list/app_list_config.h b/ash/public/cpp/app_list/app_list_config.h
index 4ba07623..2077cd2 100644
--- a/ash/public/cpp/app_list/app_list_config.h
+++ b/ash/public/cpp/app_list/app_list_config.h
@@ -34,12 +34,14 @@
   // |scale_y| - The scale at which apps grid tile should be scaled
   // vertically.
   // |inner_title_scale_y| - The scale to use to vertically scale dimensions
+  // |min_y_scale| - Whether |scale_y| is the minimum scale allowed.
   // within the apps grid tile. Different from |scale_y| because tile title
   // height is not vertically scaled.
   AppListConfig(const AppListConfig& base_config,
                 float scale_x,
                 float scale_y,
-                float inner_tile_scale_y);
+                float inner_tile_scale_y,
+                bool min_y_scale);
   ~AppListConfig();
 
   // Gets default app list configuration.
@@ -62,6 +64,7 @@
   int grid_focus_dimension() const { return grid_focus_dimension_; }
   int grid_focus_corner_radius() const { return grid_focus_corner_radius_; }
   SkColor grid_title_color() const { return grid_title_color_; }
+  int grid_fadeout_zone_height() const { return grid_fadeout_zone_height_; }
   int search_tile_icon_dimension() const { return search_tile_icon_dimension_; }
   int search_tile_badge_icon_dimension() const {
     return search_tile_badge_icon_dimension_;
@@ -156,6 +159,10 @@
 
   size_t max_search_result_tiles() const { return max_search_result_tiles_; }
 
+  size_t max_search_result_list_items() const {
+    return max_search_result_list_items_;
+  }
+
   gfx::Size grid_icon_size() const {
     return gfx::Size(grid_icon_dimension_, grid_icon_dimension_);
   }
@@ -247,6 +254,9 @@
   const int grid_focus_dimension_;
   const int grid_focus_corner_radius_;
 
+  // The vertical insets in the apps grid rezerved for the grid fade out mask.
+  const int grid_fadeout_zone_height_;
+
   // The icon dimension of tile views in search result page view.
   const int search_tile_icon_dimension_;
 
@@ -408,6 +418,9 @@
   // Max number of search result tiles in the launcher suggestion window.
   const size_t max_search_result_tiles_ = 6;
 
+  // Max number of search result list items in the launcher suggestion window.
+  const size_t max_search_result_list_items_ = 5;
+
   DISALLOW_COPY_AND_ASSIGN(AppListConfig);
 };
 
diff --git a/ash/public/cpp/app_list/app_list_config_provider.cc b/ash/public/cpp/app_list/app_list_config_provider.cc
index dd06683..0cbcf6e 100644
--- a/ash/public/cpp/app_list/app_list_config_provider.cc
+++ b/ash/public/cpp/app_list/app_list_config_provider.cc
@@ -16,8 +16,7 @@
 namespace {
 
 // The minimum scale that can be used when scaling down the app list view UI.
-// Selected so the grid tile height does not get smaller than 80 dip.
-constexpr float kMinimumConfigScale = 80. / 120.;
+constexpr float kMinimumConfigScale = 48. / 120.;
 
 // Determines the app list config that should be used for a display work area
 // size. It should not be used if ScalableAppList feature is disabled.
@@ -125,7 +124,9 @@
   if (available_grid_size.height() < min_grid_height) {
     scale_y = std::max(
         kMinimumConfigScale,
-        static_cast<float>(available_grid_size.height()) / min_grid_height);
+        static_cast<float>(available_grid_size.height() -
+                           2 * base_config.grid_fadeout_zone_height()) /
+            min_grid_height);
     // Adjust scale to reflect the fact the app list item title height does not
     // get scaled. The adjustment is derived from:
     // s * x + c = S * (x + c) and t = x + c
@@ -153,7 +154,8 @@
   }
 
   return std::make_unique<AppListConfig>(base_config, scale_x, scale_y,
-                                         inner_tile_scale_y);
+                                         inner_tile_scale_y,
+                                         scale_y == kMinimumConfigScale);
 }
 
 void AppListConfigProvider::ResetForTesting() {
diff --git a/ash/public/cpp/app_list/app_list_config_provider_unittest.cc b/ash/public/cpp/app_list/app_list_config_provider_unittest.cc
index 1943c33..3eae502 100644
--- a/ash/public/cpp/app_list/app_list_config_provider_unittest.cc
+++ b/ash/public/cpp/app_list/app_list_config_provider_unittest.cc
@@ -314,7 +314,7 @@
   // The app list has to be scaled down horizontally.
   config = AppListConfigProvider::Get().CreateForAppListWidget(
       gfx::Size(800, 600) /*display_work_area_size*/,
-      gfx::Size(500, 480) /*available_grid_size*/, config.get());
+      gfx::Size(500, 528) /*available_grid_size*/, config.get());
   ASSERT_TRUE(config);
   EXPECT_EQ(ash::AppListConfigType::kShared, config->type());
   EXPECT_EQ(500.f / kMinGridWidth, config->scale_x());
@@ -329,10 +329,12 @@
   // The app list has to be scaled down vertically.
   config = AppListConfigProvider::Get().CreateForAppListWidget(
       gfx::Size(800, 600) /*display_work_area_size*/,
-      gfx::Size(600, 400) /*available_grid_size*/, config.get());
+      gfx::Size(600, 448) /*available_grid_size*/, config.get());
   ASSERT_TRUE(config);
   EXPECT_EQ(ash::AppListConfigType::kShared, config->type());
   EXPECT_EQ(1, config->scale_x());
+  // Available height includes fadeout zones, which should not be included in
+  // scale calculation.
   EXPECT_EQ(400.f / kMinGridHeight, config->scale_y());
   EXPECT_EQ(112, config->grid_tile_width());
   // 100 == std::round(scale_y * 120)
@@ -344,10 +346,12 @@
   // Both vertical and horizontal scaling required.
   config = AppListConfigProvider::Get().CreateForAppListWidget(
       gfx::Size(800, 600) /*display_work_area_size*/,
-      gfx::Size(500, 400) /*available_grid_size*/, config.get());
+      gfx::Size(500, 448) /*available_grid_size*/, config.get());
   ASSERT_TRUE(config);
   EXPECT_EQ(ash::AppListConfigType::kShared, config->type());
   EXPECT_EQ(500.f / kMinGridWidth, config->scale_x());
+  // Available height includes fadeout zones, which should not be included in
+  // scale calculation.
   EXPECT_EQ(400.f / kMinGridHeight, config->scale_y());
   // 100 == std::round(scale_x * 112)
   EXPECT_EQ(100, config->grid_tile_width());
@@ -411,10 +415,12 @@
   // The app list has to be scaled down vertically.
   config = AppListConfigProvider::Get().CreateForAppListWidget(
       gfx::Size(600, 800) /*display_work_area_size*/,
-      gfx::Size(600, 400) /*available_grid_size*/, config.get());
+      gfx::Size(600, 448) /*available_grid_size*/, config.get());
   ASSERT_TRUE(config);
   EXPECT_EQ(ash::AppListConfigType::kShared, config->type());
   EXPECT_EQ(1, config->scale_x());
+  // Available height includes fadeout zones, which should not be included in
+  // scale calculation.
   EXPECT_EQ(400.f / kMinGridHeight, config->scale_y());
   EXPECT_EQ(112, config->grid_tile_width());
   // 80 == std::round(scale_y * 120)
@@ -426,10 +432,12 @@
   // Both vertical and horizontal scaling required.
   config = AppListConfigProvider::Get().CreateForAppListWidget(
       gfx::Size(600, 800) /*display_work_area_size*/,
-      gfx::Size(300, 500) /*available_grid_size*/, config.get());
+      gfx::Size(300, 548) /*available_grid_size*/, config.get());
   ASSERT_TRUE(config);
   EXPECT_EQ(ash::AppListConfigType::kShared, config->type());
   EXPECT_EQ(300.f / kMinGridWidth, config->scale_x());
+  // Available height includes fadeout zones, which should not be included in
+  // scale calculation.
   EXPECT_EQ(500.f / kMinGridHeight, config->scale_y());
   // 75 == std::round(scale_x * 112)
   EXPECT_EQ(75, config->grid_tile_width());
diff --git a/ash/public/cpp/shelf_types.h b/ash/public/cpp/shelf_types.h
index 1c0bed4..cfa93ba7 100644
--- a/ash/public/cpp/shelf_types.h
+++ b/ash/public/cpp/shelf_types.h
@@ -22,6 +22,16 @@
   SHELF_ALIGNMENT_BOTTOM_LOCKED,
 };
 
+enum class HotseatState {
+  // Hotseat is shown off screen.
+  kHidden,
+  // Hotseat is shown within the shelf. This will always be the case
+  // in clamshell mode.
+  kShown,
+  // Hotseat is shown above the shelf.
+  kExtended,
+};
+
 enum ShelfAutoHideBehavior {
   // Always auto-hide.
   SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS,
diff --git a/ash/shelf/hotseat_widget.cc b/ash/shelf/hotseat_widget.cc
index 925efcf..a3bb6237 100644
--- a/ash/shelf/hotseat_widget.cc
+++ b/ash/shelf/hotseat_widget.cc
@@ -6,8 +6,10 @@
 
 #include "ash/focus_cycler.h"
 #include "ash/keyboard/ui/keyboard_ui_controller.h"
+#include "ash/public/cpp/shelf_config.h"
 #include "ash/public/cpp/shelf_model.h"
 #include "ash/shelf/scrollable_shelf_view.h"
+#include "ash/shelf/shelf_layout_manager.h"
 #include "ash/shelf/shelf_navigation_widget.h"
 #include "ash/shelf/shelf_view.h"
 #include "ash/shelf/shelf_widget.h"
@@ -89,7 +91,14 @@
 void HotseatWidget::OnGestureEvent(ui::GestureEvent* event) {
   if (event->type() == ui::ET_GESTURE_TAP_DOWN)
     keyboard::KeyboardUIController::Get()->HideKeyboardImplicitlyByUser();
-  views::Widget::OnGestureEvent(event);
+  GetShelfView()
+      ->shelf_widget()
+      ->shelf_layout_manager()
+      ->ProcessGestureEventFromHotseatWidget(
+          event, static_cast<aura::Window*>(event->target()));
+
+  if (!event->handled())
+    views::Widget::OnGestureEvent(event);
 }
 
 bool HotseatWidget::OnNativeWidgetActivationChanged(bool active) {
@@ -123,6 +132,17 @@
   return GetShelfView()->IsShowingOverflowBubble();
 }
 
+bool HotseatWidget::IsDraggedToExtended() const {
+  DCHECK(GetShelfView()->shelf()->IsHorizontalAlignment());
+  const int extended_y =
+      display::Screen::GetScreen()
+          ->GetDisplayNearestView(GetShelfView()->GetWidget()->GetNativeView())
+          .bounds()
+          .bottom() -
+      ShelfConfig::Get()->shelf_size() * 2;
+  return GetWindowBoundsInScreen().y() == extended_y;
+}
+
 void HotseatWidget::FocusOverflowShelf(bool last_element) {
   if (!IsShowingOverflowBubble())
     return;
diff --git a/ash/shelf/hotseat_widget.h b/ash/shelf/hotseat_widget.h
index 9166d2f..f3d85e0 100644
--- a/ash/shelf/hotseat_widget.h
+++ b/ash/shelf/hotseat_widget.h
@@ -27,9 +27,12 @@
   void OnGestureEvent(ui::GestureEvent* event) override;
   bool OnNativeWidgetActivationChanged(bool active) override;
 
-  // Returns whether the overflow menu/bubble is currently being shown.
+  // Whether the overflow menu/bubble is currently being shown.
   bool IsShowingOverflowBubble() const;
 
+  // Whether the widget has been dragged to the extended position.
+  bool IsDraggedToExtended() const;
+
   // Focuses the first or the last app shortcut inside the overflow shelf.
   // Does nothing if the overflow shelf is not currently shown.
   void FocusOverflowShelf(bool last_element);
diff --git a/ash/shelf/scrollable_shelf_view.cc b/ash/shelf/scrollable_shelf_view.cc
index 004049e..8c685f6 100644
--- a/ash/shelf/scrollable_shelf_view.cc
+++ b/ash/shelf/scrollable_shelf_view.cc
@@ -5,8 +5,10 @@
 #include "ash/shelf/scrollable_shelf_view.h"
 
 #include "ash/public/cpp/shelf_config.h"
+#include "ash/screen_util.h"
 #include "ash/shelf/shelf_focus_cycler.h"
 #include "ash/shelf/shelf_widget.h"
+#include "ash/system/status_area_widget.h"
 #include "ash/wm/tablet_mode/tablet_mode_controller.h"
 #include "base/numerics/ranges.h"
 #include "ui/compositor/paint_recorder.h"
@@ -382,6 +384,32 @@
   return base::i18n::IsRTL() && GetShelf()->IsHorizontalAlignment();
 }
 
+bool ScrollableShelfView::ShouldApplyDisplayCentering() const {
+  if (layout_strategy_ != kNotShowArrowButtons)
+    return false;
+
+  const gfx::Rect display_bounds =
+      screen_util::GetDisplayBoundsWithShelf(GetWidget()->GetNativeWindow());
+  const int display_size_primary = GetShelf()->PrimaryAxisValue(
+      display_bounds.width(), display_bounds.height());
+  StatusAreaWidget* status_widget =
+      GetShelf()->shelf_widget()->status_area_widget();
+  const int status_widget_size = GetShelf()->PrimaryAxisValue(
+      status_widget->GetWindowBoundsInScreen().width(),
+      status_widget->GetWindowBoundsInScreen().height());
+
+  // An easy way to check whether the apps fit at the exact center of the
+  // screen is to imagine that we have another status widget on the other
+  // side (the status widget is always bigger than the home button plus
+  // the back button if applicable) and see if the apps can fit in the middle
+  int available_space_for_screen_centering =
+      display_size_primary -
+      2 * (status_widget_size + ShelfConfig::Get()->app_icon_group_margin());
+  return available_space_for_screen_centering >
+         shelf_view_->GetSizeOfAppIcons(shelf_view_->number_of_visible_apps(),
+                                        false);
+}
+
 Shelf* ScrollableShelfView::GetShelf() {
   return const_cast<Shelf*>(
       const_cast<const ScrollableShelfView*>(this)->GetShelf());
@@ -563,19 +591,25 @@
 }
 
 gfx::Insets ScrollableShelfView::CalculateEdgePadding() const {
-  const int available_size_for_app_icons =
-      (GetShelf()->IsHorizontalAlignment() ? width() : height()) -
-      2 * ShelfConfig::Get()->app_icon_group_margin();
+  // Display centering alignment
+  if (ShouldApplyDisplayCentering())
+    return CalculatePaddingForDisplayCentering();
+
   const int icons_size = shelf_view_->GetSizeOfAppIcons(
       shelf_view_->number_of_visible_apps(), false);
-
   gfx::Insets padding_insets(
       /*vertical= */ 0,
       /*horizontal= */ ShelfConfig::Get()->app_icon_group_margin());
-  int gap = layout_strategy_ == kNotShowArrowButtons
-                ? available_size_for_app_icons - icons_size -
-                      2 * GetAppIconEndPadding()
-                : CalculateOverflowPadding(available_size_for_app_icons);
+
+  const int available_size_for_app_icons =
+      (GetShelf()->IsHorizontalAlignment() ? width() : height()) -
+      2 * ShelfConfig::Get()->app_icon_group_margin();
+
+  int gap =
+      layout_strategy_ == kNotShowArrowButtons
+          ? available_size_for_app_icons - icons_size  // shelf centering
+          : CalculateOverflowPadding(available_size_for_app_icons);  // overflow
+
   padding_insets.set_left(padding_insets.left() + gap / 2);
   padding_insets.set_right(padding_insets.right() +
                            (gap % 2 ? gap / 2 + 1 : gap / 2));
@@ -583,6 +617,28 @@
   return padding_insets;
 }
 
+gfx::Insets ScrollableShelfView::CalculatePaddingForDisplayCentering() const {
+  const int icons_size = shelf_view_->GetSizeOfAppIcons(
+      shelf_view_->number_of_visible_apps(), false);
+  const gfx::Rect display_bounds =
+      screen_util::GetDisplayBoundsWithShelf(GetWidget()->GetNativeWindow());
+  const int display_size_primary = GetShelf()->PrimaryAxisValue(
+      display_bounds.width(), display_bounds.height());
+  const int gap = (display_size_primary - icons_size) / 2;
+
+  // Calculates paddings in view coordinates.
+  const gfx::Rect screen_bounds = GetBoundsInScreen();
+  const int left_padding = gap - GetShelf()->PrimaryAxisValue(
+                                     screen_bounds.x() - display_bounds.x(),
+                                     screen_bounds.y() - display_bounds.y());
+  const int right_padding =
+      gap - GetShelf()->PrimaryAxisValue(
+                display_bounds.right() - screen_bounds.right(),
+                display_bounds.bottom() - screen_bounds.bottom());
+
+  return gfx::Insets(0, left_padding, 0, right_padding);
+}
+
 bool ScrollableShelfView::ShouldHandleGestures(const ui::GestureEvent& event) {
   // ScrollableShelfView only handles the gesture scrolling along the main axis.
   // For other gesture events, including the scrolling across the main axis,
diff --git a/ash/shelf/scrollable_shelf_view.h b/ash/shelf/scrollable_shelf_view.h
index b5f61692..30ca9c4b 100644
--- a/ash/shelf/scrollable_shelf_view.h
+++ b/ash/shelf/scrollable_shelf_view.h
@@ -112,6 +112,9 @@
   // Returns whether the view should adapt to RTL.
   bool ShouldAdaptToRTL() const;
 
+  // Returns whether the app icon layout should be centering alignment.
+  bool ShouldApplyDisplayCentering() const;
+
   Shelf* GetShelf();
   const Shelf* GetShelf() const;
 
@@ -133,12 +136,15 @@
   // Overridden from ShellObserver:
   void OnShelfAlignmentChanged(aura::Window* root_window) override;
 
-  // Returns the padding inset. Padding for two scenarios: if there is
-  // sufficient space to accommodate all of shelf icons, add padding to show
-  // ScrollableShelfView in centering alignment; otherwise, add padding to fully
-  // show all of visible shelf icons.
+  // Returns the padding inset. Different Padding strategies for three scenarios
+  // (1) display centering alignment
+  // (2) scrollable shelf centering alignment
+  // (3) overflow mode
   gfx::Insets CalculateEdgePadding() const;
 
+  // Calculates padding for display centering alignment.
+  gfx::Insets CalculatePaddingForDisplayCentering() const;
+
   // Returns whether the received gesture event should be handled here.
   bool ShouldHandleGestures(const ui::GestureEvent& event);
 
diff --git a/ash/shelf/shelf_layout_manager.cc b/ash/shelf/shelf_layout_manager.cc
index 6099613..abe5174 100644
--- a/ash/shelf/shelf_layout_manager.cc
+++ b/ash/shelf/shelf_layout_manager.cc
@@ -57,8 +57,11 @@
 #include "ui/compositor/scoped_layer_animation_settings.h"
 #include "ui/display/display.h"
 #include "ui/display/screen.h"
+#include "ui/events/android/gesture_event_type.h"
 #include "ui/events/event.h"
+#include "ui/events/event_constants.h"
 #include "ui/events/event_handler.h"
+#include "ui/events/gesture_event_details.h"
 #include "ui/views/border.h"
 #include "ui/views/widget/widget.h"
 #include "ui/wm/core/coordinate_conversion.h"
@@ -109,6 +112,10 @@
   return Shell::Get()->tablet_mode_controller()->InTabletMode();
 }
 
+bool IsHotseatEnabled() {
+  return IsTabletModeEnabled() && chromeos::switches::ShouldShowShelfHotseat();
+}
+
 bool IsHomeScreenAvailable() {
   // Shell could be destroying. Shell destroys HomeScreenController before
   // closing all windows.
@@ -154,6 +161,41 @@
   DISALLOW_COPY_AND_ASSIGN(HideAnimationObserver);
 };
 
+// Forwards gesture events to ShelfLayoutManager to hide the hotseat
+// when it is kExtended.
+class HotseatEventHandler : public ui::EventHandler,
+                            public ShelfLayoutManagerObserver {
+ public:
+  HotseatEventHandler(ShelfLayoutManager* shelf_layout_manager)
+      : shelf_layout_manager_(shelf_layout_manager) {
+    shelf_layout_manager_->AddObserver(this);
+    Shell::Get()->AddPreTargetHandler(this);
+  }
+  ~HotseatEventHandler() override {
+    shelf_layout_manager_->RemoveObserver(this);
+    Shell::Get()->RemovePreTargetHandler(this);
+  }
+
+  // ShelfLayoutManagerObserver:
+  void OnHotseatStateChanged(HotseatState state) override {
+    should_forward_event_ = state == HotseatState::kExtended;
+  }
+
+  // ui::EventHandler:
+  void OnGestureEvent(ui::GestureEvent* event) override {
+    if (!should_forward_event_ || event->type() != ui::ET_GESTURE_TAP)
+      return;
+    shelf_layout_manager_->ProcessGestureEventOfInAppHotseat(
+        event, static_cast<aura::Window*>(event->target()));
+  }
+
+ private:
+  // Whether events should get forwarded to ShelfLayoutManager.
+  bool should_forward_event_ = false;
+  ShelfLayoutManager* const shelf_layout_manager_;  // unowned.
+  DISALLOW_COPY_AND_ASSIGN(HotseatEventHandler);
+};
+
 }  // namespace
 
 // ShelfLayoutManager::UpdateShelfObserver -------------------------------------
@@ -224,7 +266,8 @@
          other.window_state == window_state &&
          other.pre_lock_screen_animation_active ==
              pre_lock_screen_animation_active &&
-         other.session_state == session_state;
+         other.session_state == session_state &&
+         other.hotseat_state == hotseat_state;
 }
 
 // ShelfLayoutManager::ScopedSuspendVisibilityUpdate ---------------------------
@@ -254,6 +297,9 @@
   if (update_shelf_observer_)
     update_shelf_observer_->Detach();
 
+  // |hotseat_event_handler_| needs to be released before ShelfLayoutManager.
+  hotseat_event_handler_.reset();
+
   // Ensures that |overview_suspend_visibility_update_| is released before
   // ShelfLayoutManager.
   overview_suspend_visibility_update_.reset();
@@ -452,7 +498,6 @@
         event->type() == ui::ET_GESTURE_END && drag_status_ != kDragNone) {
       CompleteDrag(*event);
     }
-
     return;
   }
 
@@ -466,6 +511,22 @@
   }
 }
 
+void ShelfLayoutManager::ProcessGestureEventOfInAppHotseat(
+    ui::GestureEvent* event,
+    aura::Window* target) {
+  if (!IsHotseatEnabled())
+    return;
+  DCHECK_EQ(state_.hotseat_state, HotseatState::kExtended);
+
+  if (IsShelfWindow(target) || drag_status_ != DragStatus::kDragNone ||
+      event->type() != ui::ET_GESTURE_TAP) {
+    return;
+  }
+
+  base::AutoReset<bool> hide_hotseat(&should_hide_hotseat_, true);
+  UpdateVisibilityState();
+}
+
 void ShelfLayoutManager::AddObserver(ShelfLayoutManagerObserver* observer) {
   observers_.AddObserver(observer);
 }
@@ -494,6 +555,10 @@
 
   if (event_in_screen.type() == ui::ET_GESTURE_SCROLL_END ||
       event_in_screen.type() == ui::ET_SCROLL_FLING_START) {
+    if (event_in_screen.type() == ui::ET_SCROLL_FLING_START) {
+      last_drag_velocity_ =
+          event_in_screen.AsGestureEvent()->details().velocity_y();
+    }
     if (drag_status_ == kDragAppListInProgress)
       CompleteAppListDrag(event_in_screen);
     else
@@ -532,6 +597,12 @@
   }
 }
 
+void ShelfLayoutManager::ProcessGestureEventFromShelfWidget(
+    ui::GestureEvent* event_in_screen) {
+  if (ProcessGestureEvent(*event_in_screen))
+    event_in_screen->StopPropagation();
+}
+
 ShelfBackgroundType ShelfLayoutManager::GetShelfBackgroundType() const {
   if (state_.pre_lock_screen_animation_active)
     return SHELF_BACKGROUND_DEFAULT;
@@ -561,7 +632,7 @@
   if (IsHomeScreenAvailable()) {
     // If the home launcher is shown, being animated, or dragged, show the
     // default background.
-    if (is_home_launcher_shown_ || is_home_launcher_target_position_shown_)
+    if (is_home_launcher_shown_ || home_launcher_animation_state_ == kShowing)
       return SHELF_BACKGROUND_DEFAULT;
   } else if (is_app_list_visible_) {
     return maximized ? SHELF_BACKGROUND_MAXIMIZED_WITH_APP_LIST
@@ -591,6 +662,20 @@
     observer.OnBackgroundUpdated(shelf_background_type_, type);
 }
 
+void ShelfLayoutManager::ProcessGestureEventFromHotseatWidget(
+    ui::GestureEvent* event,
+    aura::Window* target) {
+  if (!IsHotseatEnabled())
+    return;
+
+  ui::GestureEvent event_in_screen(*event);
+  gfx::Point location_in_screen(event->location());
+  ::wm::ConvertPointToScreen(target, &location_in_screen);
+  event_in_screen.set_location(location_in_screen);
+  if (ProcessGestureEvent(event_in_screen))
+    event->StopPropagation();
+}
+
 bool ShelfLayoutManager::ShouldBlurShelfBackground() {
   return is_background_blur_enabled_ &&
          shelf_background_type_ == SHELF_BACKGROUND_DEFAULT &&
@@ -710,9 +795,15 @@
 
   if (IsTabletModeEnabled()) {
     is_home_launcher_shown_ = shown;
-    is_home_launcher_target_position_shown_ = false;
+    home_launcher_animation_state_ = HomeLauncherAnimationState::kFinished;
   }
+
+  const bool should_update_visibility_state = shown != is_app_list_visible_;
   is_app_list_visible_ = shown;
+
+  if (should_update_visibility_state)
+    UpdateVisibilityState();
+
   MaybeUpdateShelfBackground(AnimationChangeType::IMMEDIATE);
 }
 
@@ -726,7 +817,22 @@
   if (display_.id() != display_id)
     return;
 
-  is_home_launcher_target_position_shown_ = showing;
+  HomeLauncherAnimationState new_animation_state;
+  if (is_home_launcher_shown_ && !showing) {
+    new_animation_state = kHiding;
+  } else if (!is_home_launcher_shown_ && showing) {
+    new_animation_state = kShowing;
+  } else {
+    // No valid animation state.
+    return;
+  }
+  const bool should_update_visibility_state =
+      new_animation_state != home_launcher_animation_state_;
+  home_launcher_animation_state_ = new_animation_state;
+
+  if (should_update_visibility_state)
+    UpdateVisibilityState();
+
   MaybeUpdateShelfBackground(AnimationChangeType::IMMEDIATE);
 }
 
@@ -739,8 +845,13 @@
   if (display_.id() != display_id)
     return;
 
+  const bool should_update_visibility_state = is_home_launcher_shown_ != shown;
   is_home_launcher_shown_ = shown;
-  is_home_launcher_target_position_shown_ = false;
+  home_launcher_animation_state_ = HomeLauncherAnimationState::kFinished;
+
+  if (should_update_visibility_state)
+    UpdateVisibilityState();
+
   MaybeUpdateShelfBackground(AnimationChangeType::IMMEDIATE);
 }
 
@@ -835,7 +946,8 @@
   state.auto_hide_state = CalculateAutoHideState(visibility_state);
   state.window_state =
       GetShelfWorkspaceWindowState(shelf_widget_->GetNativeWindow());
-
+  state.hotseat_state =
+      GetHotseatState(state.visibility_state, state.auto_hide_state);
   // Preserve the log in screen states.
   state.session_state = state_.session_state;
   state.pre_lock_screen_animation_active =
@@ -905,6 +1017,81 @@
     for (auto& observer : observers_)
       observer.OnAutoHideStateChanged(state_.auto_hide_state);
   }
+
+  if (old_state.hotseat_state != state_.hotseat_state) {
+    if (state_.hotseat_state == HotseatState::kExtended)
+      hotseat_event_handler_ = std::make_unique<HotseatEventHandler>(this);
+    else
+      hotseat_event_handler_.reset();
+    for (auto& observer : observers_)
+      observer.OnHotseatStateChanged(state_.hotseat_state);
+  }
+}
+
+HotseatState ShelfLayoutManager::GetHotseatState(
+    ShelfVisibilityState visibility_state,
+    ShelfAutoHideState auto_hide_state) {
+  // TODO(https://crbug.com/1002132): Add tests for this behavior.
+  if (!IsHotseatEnabled() || !shelf_->IsHorizontalAlignment())
+    return HotseatState::kShown;
+
+  switch (drag_status_) {
+    case kDragNone: {
+      switch (home_launcher_animation_state_) {
+        case kShowing:
+          return HotseatState::kShown;
+        case kHiding:
+          return HotseatState::kHidden;
+        case kFinished:
+          if (is_home_launcher_shown_)
+            return HotseatState::kShown;
+          if (Shell::Get()->overview_controller() &&
+              Shell::Get()->overview_controller()->InOverviewSession()) {
+            return HotseatState::kShown;
+          }
+          if (visibility_state == SHELF_AUTO_HIDE) {
+            if (auto_hide_state == SHELF_AUTO_HIDE_HIDDEN)
+              return HotseatState::kHidden;
+            return HotseatState::kExtended;
+          }
+          if (state_.hotseat_state == HotseatState::kExtended &&
+              !should_hide_hotseat_)
+            return HotseatState::kExtended;
+          return HotseatState::kHidden;
+      }
+    }
+    case kDragCompleteInProgress:
+      FALLTHROUGH;
+    case kDragCancelInProgress: {
+      // If the drag being completed is not a Hotseat drag, don't change the
+      // state.
+      if (!hotseat_is_in_drag_)
+        return state_.hotseat_state;
+
+      if (shelf_widget_->hotseat_widget()->IsDraggedToExtended())
+        return HotseatState::kExtended;
+      if (std::abs(last_drag_velocity_) >= 5) {
+        if (last_drag_velocity_ > 0)
+          return HotseatState::kHidden;
+        return HotseatState::kExtended;
+      }
+      const int top_of_hotseat_to_screen_bottom =
+          display::Screen::GetScreen()
+              ->GetDisplayNearestView(shelf_widget_->GetNativeView())
+              .bounds()
+              .bottom() -
+          shelf_widget_->hotseat_widget()->GetWindowBoundsInScreen().y();
+      if (top_of_hotseat_to_screen_bottom < ShelfConfig::Get()->shelf_size())
+        return HotseatState::kHidden;
+      return HotseatState::kExtended;
+    }
+    default:
+      // Do not change the hotseat state until the drag is complete or
+      // canceled.
+      return state_.hotseat_state;
+  }
+  NOTREACHED();
+  return HotseatState::kShown;
 }
 
 ShelfVisibilityState ShelfLayoutManager::CalculateShelfVisibility() {
@@ -1179,16 +1366,33 @@
   int hotseat_width;
   int hotseat_height;
   if (shelf_->IsHorizontalAlignment()) {
+    int hotseat_y;
+    switch (state_.hotseat_state) {
+      case HotseatState::kShown:
+        // Show the hotseat co-altitude with ShelfView.
+        hotseat_y = 0;
+        break;
+      case HotseatState::kHidden:
+        // Show the hotseat offscreen.
+        hotseat_y = shelf_height;
+        break;
+      case HotseatState::kExtended:
+        // Show the hotseat at its extended position.
+        hotseat_y = -shelf_height;
+        break;
+    }
+
     hotseat_width =
         shelf_width - target_bounds->nav_bounds_in_shelf.size().width() -
         home_button_edge_spacing - ShelfConfig::Get()->app_icon_group_margin() -
         status_size.width();
-    int start_x = base::i18n::IsRTL()
-                      ? target_bounds->nav_bounds_in_shelf.x() -
-                            home_button_edge_spacing - hotseat_width
-                      : target_bounds->nav_bounds_in_shelf.right() +
-                            home_button_edge_spacing;
-    hotseat_origin = gfx::Point(start_x, 0);
+    const int hotseat_x = base::i18n::IsRTL()
+                              ? target_bounds->nav_bounds_in_shelf.x() -
+                                    home_button_edge_spacing - hotseat_width
+                              : target_bounds->nav_bounds_in_shelf.right() +
+                                    home_button_edge_spacing;
+    hotseat_origin = gfx::Point(hotseat_x, hotseat_y);
+
     hotseat_height = shelf_height;
   } else {
     hotseat_origin = gfx::Point(0, target_bounds->nav_bounds_in_shelf.bottom() +
@@ -1252,14 +1456,13 @@
 
 void ShelfLayoutManager::UpdateTargetBoundsForGesture(
     TargetBounds* target_bounds) const {
+  // TODO(https://crbug.com/1002132): Add tests for the hotseat bounds logic.
   CHECK_EQ(kDragInProgress, drag_status_);
   const bool horizontal = shelf_->IsHorizontalAlignment();
   const int shelf_size = ShelfConfig::Get()->shelf_size();
-  gfx::Rect available_bounds =
-      screen_util::GetDisplayBoundsWithShelf(shelf_widget_->GetNativeWindow());
-  int resistance_free_region = 0;
-  bool hidden_at_start = false;
 
+  int resistance_free_region = 0;
+  bool shelf_hidden_at_start = false;
   if (drag_auto_hide_state_ == SHELF_AUTO_HIDE_HIDDEN &&
       visibility_state() == SHELF_AUTO_HIDE &&
       auto_hide_state() != SHELF_AUTO_HIDE_SHOWN) {
@@ -1269,43 +1472,82 @@
     // sure the shelf sticks with the finger until the shelf is visible.
     resistance_free_region =
         shelf_size - ShelfConfig::Get()->hidden_shelf_in_screen_portion();
-    hidden_at_start = true;
+    shelf_hidden_at_start = true;
   }
 
-  bool resist = SelectValueForShelfAlignment(
-      drag_amount_ < -resistance_free_region, drag_amount_ >
-          resistance_free_region,
-      drag_amount_ < -resistance_free_region);
-
   float translate = 0.f;
-  if (resist) {
-    float diff = fabsf(drag_amount_) - resistance_free_region;
-    diff = std::min(diff, sqrtf(diff));
-    if (drag_amount_ < 0)
-      translate = -resistance_free_region - diff;
-    else
-      translate = resistance_free_region + diff;
-  } else {
+  if (IsHotseatEnabled()) {
+    // The drag up gesture should not taper off when the hotseat is enabled
+    // because there should be a linear transition to the home launcher gesture.
     translate = drag_amount_;
-  }
-  // Move the shelf with the gesture.
-  const int baseline = SelectValueForShelfAlignment(
-      available_bounds.bottom() - (hidden_at_start ? 0 : shelf_size),
-      available_bounds.x() - (hidden_at_start ? shelf_size : 0),
-      available_bounds.right() - (hidden_at_start ? 0 : shelf_size));
-  if (horizontal) {
-    target_bounds->shelf_bounds.set_y(baseline + translate);
-    target_bounds->nav_bounds_in_shelf.set_y(
-        ShelfConfig::Get()->button_spacing());
-    target_bounds->hotseat_bounds_in_shelf.set_y(0);
-    target_bounds->status_bounds_in_shelf.set_y(0);
   } else {
-    target_bounds->shelf_bounds.set_x(baseline + translate);
-    target_bounds->nav_bounds_in_shelf.set_x(
-        ShelfConfig::Get()->button_spacing());
-    target_bounds->hotseat_bounds_in_shelf.set_x(0);
-    target_bounds->status_bounds_in_shelf.set_x(0);
+    const bool resist = SelectValueForShelfAlignment(
+        drag_amount_<-resistance_free_region, drag_amount_>
+            resistance_free_region,
+        drag_amount_ < -resistance_free_region);
+    if (resist) {
+      float diff = fabsf(drag_amount_) - resistance_free_region;
+      diff = std::min(diff, sqrtf(diff));
+      if (drag_amount_ < 0)
+        translate = -resistance_free_region - diff;
+      else
+        translate = resistance_free_region + diff;
+    } else {
+      translate = drag_amount_;
+    }
   }
+
+  const gfx::Rect available_bounds =
+      screen_util::GetDisplayBoundsWithShelf(shelf_widget_->GetNativeWindow());
+  const int baseline = SelectValueForShelfAlignment(
+      available_bounds.bottom() - (shelf_hidden_at_start ? 0 : shelf_size),
+      available_bounds.x() - (shelf_hidden_at_start ? shelf_size : 0),
+      available_bounds.right() - (shelf_hidden_at_start ? 0 : shelf_size));
+
+  if (horizontal) {
+    if (!IsHotseatEnabled()) {
+      target_bounds->shelf_bounds.set_y(baseline + translate);
+      target_bounds->nav_bounds_in_shelf.set_y(
+          ShelfConfig::Get()->button_spacing());
+      target_bounds->hotseat_bounds_in_shelf.set_y(0);
+      target_bounds->status_bounds_in_shelf.set_y(0);
+      return;
+    }
+
+    const bool move_shelf_with_hotseat = visibility_state() == SHELF_AUTO_HIDE;
+    if (move_shelf_with_hotseat) {
+      // Do not allow the shelf to be dragged more than |shelf_size| from the
+      // bottom of the display.
+      const int shelf_y = std::max(available_bounds.bottom() - shelf_size,
+                                   static_cast<int>(baseline + translate));
+      target_bounds->shelf_bounds.set_y(shelf_y);
+    }
+
+    int hotseat_y = 0;
+    if (!Shell::Get()->overview_controller() ||
+        !Shell::Get()->overview_controller()->InOverviewSession()) {
+      const int hotseat_baseline =
+          (state_.hotseat_state == HotseatState::kExtended) ? -shelf_size
+                                                            : shelf_size;
+      bool use_hotseat_baseline =
+          (state_.hotseat_state == HotseatState::kExtended &&
+           visibility_state() == SHELF_AUTO_HIDE) ||
+          (state_.hotseat_state == HotseatState::kHidden &&
+           visibility_state() != SHELF_AUTO_HIDE);
+      hotseat_y = std::max(
+          -shelf_size,
+          static_cast<int>((use_hotseat_baseline ? hotseat_baseline : 0) +
+                           translate));
+    }
+    target_bounds->hotseat_bounds_in_shelf.set_y(hotseat_y);
+    return;
+  }
+
+  target_bounds->shelf_bounds.set_x(baseline + translate);
+  target_bounds->nav_bounds_in_shelf.set_x(
+      ShelfConfig::Get()->button_spacing());
+  target_bounds->hotseat_bounds_in_shelf.set_x(0);
+  target_bounds->status_bounds_in_shelf.set_x(0);
 }
 
 void ShelfLayoutManager::UpdateAutoHideStateNow() {
@@ -1531,6 +1773,11 @@
   if (!IsVisible())
     return false;
 
+  const bool up_on_extended_hotseat =
+      state_.hotseat_state == HotseatState::kExtended && scroll_y < 0;
+  if (IsHotseatEnabled() && !up_on_extended_hotseat)
+    return false;
+
   // Scroll down events should never be handled, unless they are currently being
   // handled
   if (scroll_y >= 0 && drag_status_ != kDragAppListInProgress)
@@ -1559,12 +1806,14 @@
             HomeLauncherGestureHandler::Mode::kSlideUpToShow,
             gesture_in_screen.location())) {
       return true;
-    } else {
-      drag_status_ = previous_drag_status;
     }
+    drag_status_ = previous_drag_status;
   }
 
-  return StartShelfDrag();
+  if (is_home_launcher_shown_)
+    return true;
+
+  return StartShelfDrag(gesture_in_screen);
 }
 
 void ShelfLayoutManager::UpdateGestureDrag(
@@ -1599,7 +1848,7 @@
 void ShelfLayoutManager::StartMouseDrag(const ui::MouseEvent& mouse_in_screen) {
   float scroll_y_hint = mouse_in_screen.y() - last_mouse_drag_position_.y();
   if (!StartAppListDrag(mouse_in_screen, scroll_y_hint))
-    StartShelfDrag();
+    StartShelfDrag(mouse_in_screen);
 }
 
 void ShelfLayoutManager::UpdateMouseDrag(
@@ -1717,7 +1966,8 @@
   return true;
 }
 
-bool ShelfLayoutManager::StartShelfDrag() {
+bool ShelfLayoutManager::StartShelfDrag(
+    const ui::LocatedEvent& event_in_screen) {
   // Disable the shelf dragging if the fullscreen app list is opened.
   if (is_app_list_visible_ && !IsHomeScreenAvailable())
     return false;
@@ -1730,11 +1980,33 @@
   drag_auto_hide_state_ = visibility_state() == SHELF_AUTO_HIDE
                               ? auto_hide_state()
                               : SHELF_AUTO_HIDE_SHOWN;
+  MaybeSetupHotseatDrag(event_in_screen);
   MaybeUpdateShelfBackground(AnimationChangeType::ANIMATE);
-  drag_amount_ = 0.f;
+
+  // For the hotseat, |drag_amount_| is relative to the top of the shelf.
+  // To keep the hotseat from jumping to the top of the shelf on drag, set the
+  // offset to the hotseats extended position.
+  if (state_.hotseat_state == HotseatState::kExtended &&
+      visibility_state() == SHELF_VISIBLE) {
+    drag_amount_ = -ShelfConfig::Get()->shelf_size();
+  } else {
+    drag_amount_ = 0.f;
+  }
   return true;
 }
 
+void ShelfLayoutManager::MaybeSetupHotseatDrag(
+    const ui::LocatedEvent& event_in_screen) {
+  if (!IsHotseatEnabled())
+    return;
+  // Do not allow Hotseat dragging when the hotseat is
+  // co-altitude with the shelf.
+  if (state_.hotseat_state == HotseatState::kShown)
+    return;
+
+  hotseat_is_in_drag_ = true;
+}
+
 void ShelfLayoutManager::UpdateDrag(const ui::LocatedEvent& event_in_screen,
                                     float scroll_x,
                                     float scroll_y) {
@@ -1755,6 +2027,10 @@
         shelf_bounds.bottom() - event_in_screen.location().y();
   } else {
     drag_amount_ += PrimaryAxisValue(scroll_y, scroll_x);
+    if (event_in_screen.type() == ui::ET_SCROLL_FLING_START) {
+      last_drag_velocity_ =
+          event_in_screen.AsGestureEvent()->details().velocity_y();
+    }
     LayoutShelf();
   }
 }
@@ -1764,7 +2040,6 @@
     CancelDrag();
     return;
   }
-
   shelf_widget_->Deactivate();
   shelf_widget_->status_area_widget()->Deactivate();
 
@@ -1780,6 +2055,7 @@
   drag_status_ = kDragCompleteInProgress;
   UpdateVisibilityState();
   drag_status_ = kDragNone;
+  hotseat_is_in_drag_ = false;
 }
 
 void ShelfLayoutManager::CompleteAppListDrag(
@@ -1826,6 +2102,7 @@
     drag_status_ = kDragCancelInProgress;
     UpdateVisibilityState();
   }
+  hotseat_is_in_drag_ = false;
   drag_status_ = kDragNone;
 }
 
diff --git a/ash/shelf/shelf_layout_manager.h b/ash/shelf/shelf_layout_manager.h
index 0396cc8..07adf81 100644
--- a/ash/shelf/shelf_layout_manager.h
+++ b/ash/shelf/shelf_layout_manager.h
@@ -35,9 +35,10 @@
 #include "ui/wm/public/activation_change_observer.h"
 
 namespace ui {
+class EventHandler;
 class ImplicitAnimationObserver;
-class MouseEvent;
 class LocatedEvent;
+class MouseEvent;
 }  // namespace ui
 
 namespace ash {
@@ -115,6 +116,11 @@
   void ProcessGestureEventOfAutoHideShelf(ui::GestureEvent* event,
                                           aura::Window* target);
 
+  // Handles events that are detected while the hotseat is kExtended in in-app
+  // shelf.
+  void ProcessGestureEventOfInAppHotseat(ui::GestureEvent* event,
+                                         aura::Window* target);
+
   void AddObserver(ShelfLayoutManagerObserver* observer);
   void RemoveObserver(ShelfLayoutManagerObserver* observer);
 
@@ -126,12 +132,19 @@
   // Handles mouse events from the shelf.
   void ProcessMouseEventFromShelf(const ui::MouseEvent& event_in_screen);
 
+  // Handles events from ShelfWidget.
+  void ProcessGestureEventFromShelfWidget(ui::GestureEvent* event_in_screen);
+
   // Returns how the shelf background should be painted.
   ShelfBackgroundType GetShelfBackgroundType() const;
 
   // Updates the background of the shelf if it has changed.
   void MaybeUpdateShelfBackground(AnimationChangeType change_type);
 
+  // Handles events from the HotseatWidget.
+  void ProcessGestureEventFromHotseatWidget(ui::GestureEvent* event,
+                                            aura::Window* target);
+
   // Returns whether the shelf should show a blurred background. This may
   // return false even if background blur is enabled depending on the session
   // state.
@@ -284,6 +297,7 @@
     ShelfVisibilityState visibility_state;
     ShelfAutoHideState auto_hide_state;
     WorkspaceWindowState window_state;
+    HotseatState hotseat_state;
 
     // True when the system is in the cancelable, pre-lock screen animation.
     bool pre_lock_screen_animation_active;
@@ -293,6 +307,11 @@
   // Sets the visibility of the shelf to |state|.
   void SetState(ShelfVisibilityState visibility_state);
 
+  // Gets the target HotseatState based on the current state of HomeLauncher,
+  // Overview, Shelf, and any active gestures.
+  HotseatState GetHotseatState(ShelfVisibilityState visibility_state,
+                               ShelfAutoHideState auto_hide_state);
+
   // Returns shelf visibility state based on current value of auto hide
   // behavior setting.
   ShelfVisibilityState CalculateShelfVisibility();
@@ -392,7 +411,9 @@
   bool IsDragAllowed() const;
   bool StartAppListDrag(const ui::LocatedEvent& event_in_screen,
                         float scroll_y_hint);
-  bool StartShelfDrag();
+  bool StartShelfDrag(const ui::LocatedEvent& event_in_screen);
+  // Sets the Hotseat up to be dragged, if applicable.
+  void MaybeSetupHotseatDrag(const ui::LocatedEvent& event_in_screen);
   void UpdateDrag(const ui::LocatedEvent& event_in_screen,
                   float scroll_x,
                   float scroll_y);
@@ -440,16 +461,21 @@
   // clamshell mode.
   bool is_app_list_visible_ = false;
 
-  // Whether the HomeLauncher is being dragged to, or animating to fullscreen.
-  // This is maintained by OnHomeLauncherTargetPositionChanged. Used to
-  // determine AppList visibility in tablet mode.
-  bool is_home_launcher_target_position_shown_ = false;
-
   // Whether the HomeLauncher is shown. This is maintained by
   // OnHomeLauncherAnimationComplete. Used to determine AppList visibility in
   // tablet mode.
   bool is_home_launcher_shown_ = false;
 
+  enum HomeLauncherAnimationState {
+    kFinished,
+    kShowing,
+    kHiding,
+  };
+
+  // Whether the home launcher is showing, hiding, or not animating. Maintained
+  // by the AppList and HomeLauncher visibility observers.
+  HomeLauncherAnimationState home_launcher_animation_state_ = kFinished;
+
   // Count of pending visibility update suspensions. Skip updating shelf
   // visibility state if it is greater than 0.
   int suspend_visibility_update_ = 0;
@@ -483,10 +509,21 @@
 
   DragStatus drag_status_ = kDragNone;
 
+  // Whether the hotseat is being dragged.
+  bool hotseat_is_in_drag_ = false;
+
+  // Whether the EXTENDED hotseat should be hidden. Set when HotseatEventHandler
+  // detects that the background has been interacted with.
+  bool should_hide_hotseat_ = false;
+
   // Tracks the amount of the drag. The value is only valid when
   // |drag_status_| is set to kDragInProgress.
   float drag_amount_ = 0.f;
 
+  // The velocity of the last drag event. Used to determine final state of the
+  // hotseat.
+  int last_drag_velocity_ = 0;
+
   // Tracks the amount of launcher that above the shelf bottom during dragging.
   float launcher_above_shelf_bottom_amount_ = 0.f;
 
@@ -499,6 +536,9 @@
   // Whether background blur is enabled.
   const bool is_background_blur_enabled_;
 
+  // Pretarget handler responsible for hiding the hotseat.
+  std::unique_ptr<ui::EventHandler> hotseat_event_handler_;
+
   // Stores the previous workspace state. Used by
   // SendA11yAlertForFullscreenWorkspaceState to compare with current workspace
   // state to determite whether need to send an a11y alert.
diff --git a/ash/shelf/shelf_layout_manager_observer.h b/ash/shelf/shelf_layout_manager_observer.h
index 8aac32d..7887cdfa 100644
--- a/ash/shelf/shelf_layout_manager_observer.h
+++ b/ash/shelf/shelf_layout_manager_observer.h
@@ -29,6 +29,9 @@
   // Called when shelf background animation is started.
   virtual void OnBackgroundUpdated(ShelfBackgroundType background_type,
                                    AnimationChangeType change_type) {}
+
+  // Called when the hotseat state changes.
+  virtual void OnHotseatStateChanged(HotseatState state) {}
 };
 
 }  // namespace ash
diff --git a/ash/shelf/shelf_layout_manager_unittest.cc b/ash/shelf/shelf_layout_manager_unittest.cc
index 70d5717..43938683 100644
--- a/ash/shelf/shelf_layout_manager_unittest.cc
+++ b/ash/shelf/shelf_layout_manager_unittest.cc
@@ -1073,8 +1073,11 @@
           .width();
   const int nav_width =
       shelf_widget->navigation_widget()->GetWindowBoundsInScreen().width();
-  const int hotseat_width =
-      GetPrimaryShelf()->GetShelfViewForTesting()->width();
+  const int hotseat_width = GetPrimaryShelf()
+                                ->shelf_widget()
+                                ->hotseat_widget()
+                                ->GetWindowBoundsInScreen()
+                                .width();
   const int margins = ShelfConfig::Get()->home_button_edge_spacing() +
                       ShelfConfig::Get()->app_icon_group_margin();
   EXPECT_EQ(200, total_width - nav_width - hotseat_width - margins);
@@ -3095,10 +3098,15 @@
         rtl_right_position);
   };
 
+  const std::string locale = base::i18n::GetConfiguredLocale();
+
   ShelfWidget* shelf_widget = GetPrimaryShelf()->shelf_widget();
   check_mirrored_placement(shelf_widget->navigation_widget());
   check_mirrored_placement(shelf_widget->status_area_widget());
   check_mirrored_placement(shelf_widget);
+
+  // Reset the lauguage setting.
+  base::i18n::SetICUDefaultLocale(locale);
 }
 
 class ShelfLayoutManagerKeyboardTest : public AshTestBase {
diff --git a/ash/shelf/shelf_view_unittest.cc b/ash/shelf/shelf_view_unittest.cc
index 11ecddbf..b1458751 100644
--- a/ash/shelf/shelf_view_unittest.cc
+++ b/ash/shelf/shelf_view_unittest.cc
@@ -1423,21 +1423,23 @@
 
   // The tooltip should hide if placed in between the home button and the
   // first shelf button.
-  const int left = home_button->bounds().right();
+  const int left = home_button->GetBoundsInScreen().right();
   // Find the first shelf button that's to the right of the home button.
   int right = 0;
   for (int i = 0; i < test_api_->GetButtonCount(); ++i) {
     ShelfAppButton* button = test_api_->GetButton(i);
     if (!button)
       continue;
-    right = button->bounds().x();
+    right = button->GetBoundsInScreen().x();
     if (right > left)
       break;
   }
-  const int center_x =
-      shelf_view_->GetMirroredXInView(left + (right - left) / 2);
-  EXPECT_TRUE(shelf_view_->ShouldHideTooltip(
-      gfx::Point(center_x, home_button->GetMirroredBounds().left_center().y())))
+
+  gfx::Point test_point(left + (right - left) / 2,
+                        home_button->GetBoundsInScreen().y());
+  views::View::ConvertPointFromScreen(shelf_view_, &test_point);
+  EXPECT_TRUE(shelf_view_->ShouldHideTooltip(gfx::Point(
+      shelf_view_->GetMirroredXInView(test_point.x()), test_point.y())))
       << "Tooltip should hide between home button and first shelf item";
 
   // The tooltip shouldn't hide if the mouse is in the gap between two buttons.
@@ -1486,8 +1488,10 @@
 
   // The tooltip should hide on the home button if the app list is visible.
   HomeButton* home_button = shelf_view_->shelf_widget()->GetHomeButton();
-  EXPECT_TRUE(shelf_view_->ShouldHideTooltip(
-      home_button->GetMirroredBounds().CenterPoint()));
+  gfx::Point center_point = home_button->GetBoundsInScreen().CenterPoint();
+  views::View::ConvertPointFromScreen(shelf_view_, &center_point);
+  EXPECT_TRUE(shelf_view_->ShouldHideTooltip(gfx::Point(
+      shelf_view_->GetMirroredXInView(center_point.x()), center_point.y())));
 }
 
 // Test that by moving the mouse cursor off the button onto the bubble it closes
diff --git a/ash/shelf/shelf_widget.cc b/ash/shelf/shelf_widget.cc
index 43c8c88..0309bd0 100644
--- a/ash/shelf/shelf_widget.cc
+++ b/ash/shelf/shelf_widget.cc
@@ -582,7 +582,13 @@
 void ShelfWidget::OnGestureEvent(ui::GestureEvent* event) {
   if (event->type() == ui::ET_GESTURE_TAP_DOWN)
     keyboard::KeyboardUIController::Get()->HideKeyboardImplicitlyByUser();
-  views::Widget::OnGestureEvent(event);
+  ui::GestureEvent event_in_screen(*event);
+  gfx::Point location_in_screen(event->location());
+  ::wm::ConvertPointToScreen(GetNativeWindow(), &location_in_screen);
+  event_in_screen.set_location(location_in_screen);
+  shelf_layout_manager()->ProcessGestureEventFromShelfWidget(&event_in_screen);
+  if (!event->handled())
+    views::Widget::OnGestureEvent(event);
 }
 
-}  // namespace ash
+}  // namespace ash
\ No newline at end of file
diff --git a/base/BUILD.gn b/base/BUILD.gn
index a2541d7..1dcd1245 100644
--- a/base/BUILD.gn
+++ b/base/BUILD.gn
@@ -2991,7 +2991,10 @@
   }
 
   if (is_desktop_linux) {
-    sources += [ "nix/xdg_util_unittest.cc" ]
+    sources += [
+      "linux_util_unittest.cc",
+      "nix/xdg_util_unittest.cc",
+    ]
   }
 
   if (!use_glib) {
diff --git a/base/android/jni_generator/BUILD.gn b/base/android/jni_generator/BUILD.gn
index dc671366..83d4b3e 100644
--- a/base/android/jni_generator/BUILD.gn
+++ b/base/android/jni_generator/BUILD.gn
@@ -111,5 +111,4 @@
   ]
 
   srcjar_deps = [ ":processor_args_java" ]
-  jacoco_never_instrument = true
 }
diff --git a/base/linux_util.cc b/base/linux_util.cc
index caf471a3..b771a26d 100644
--- a/base/linux_util.cc
+++ b/base/linux_util.cc
@@ -13,6 +13,7 @@
 #include <sys/types.h>
 #include <unistd.h>
 
+#include <iomanip>
 #include <memory>
 
 #include "base/command_line.h"
@@ -28,6 +29,8 @@
 #include "base/synchronization/lock.h"
 #include "build/build_config.h"
 
+namespace base {
+
 namespace {
 
 // Not needed for OS_CHROMEOS.
@@ -43,7 +46,7 @@
  public:
   // Retrieves the Singleton.
   static LinuxDistroHelper* GetInstance() {
-    return base::Singleton<LinuxDistroHelper>::get();
+    return Singleton<LinuxDistroHelper>::get();
   }
 
   // The simple state machine goes from:
@@ -55,7 +58,7 @@
   // we automatically move to STATE_CHECK_STARTED so nobody else will
   // do the check.
   LinuxDistroState State() {
-    base::AutoLock scoped_lock(lock_);
+    AutoLock scoped_lock(lock_);
     if (STATE_DID_NOT_CHECK == state_) {
       state_ = STATE_CHECK_STARTED;
       return STATE_DID_NOT_CHECK;
@@ -65,21 +68,72 @@
 
   // Indicate the check finished, move to STATE_CHECK_FINISHED.
   void CheckFinished() {
-    base::AutoLock scoped_lock(lock_);
+    AutoLock scoped_lock(lock_);
     DCHECK_EQ(STATE_CHECK_STARTED, state_);
     state_ = STATE_CHECK_FINISHED;
   }
 
  private:
-  base::Lock lock_;
+  Lock lock_;
   LinuxDistroState state_;
 };
+
+#if !defined(OS_CHROMEOS)
+std::string GetKeyValueFromOSReleaseFile(const std::string& input,
+                                         const char* key) {
+  StringPairs key_value_pairs;
+  SplitStringIntoKeyValuePairs(input, '=', '\n', &key_value_pairs);
+  for (const auto& pair : key_value_pairs) {
+    const std::string& key_str = pair.first;
+    const std::string& value_str = pair.second;
+    if (key_str == key) {
+      // It can contain quoted characters.
+      std::stringstream ss;
+      std::string pretty_name;
+      ss << value_str;
+      // Quoted with a single tick?
+      if (value_str[0] == '\'')
+        ss >> std::quoted(pretty_name, '\'');
+      else
+        ss >> std::quoted(pretty_name);
+
+      return pretty_name;
+    }
+  }
+
+  return "";
+}
+
+bool ReadDistroFromOSReleaseFile(const char* file) {
+  static const char kPrettyName[] = "PRETTY_NAME";
+
+  std::string os_release_content;
+  if (!ReadFileToString(FilePath(file), &os_release_content))
+    return false;
+
+  std::string pretty_name =
+      GetKeyValueFromOSReleaseFile(os_release_content, kPrettyName);
+  if (pretty_name.empty())
+    return false;
+
+  SetLinuxDistro(pretty_name);
+  return true;
+}
+
+// https://www.freedesktop.org/software/systemd/man/os-release.html
+void GetDistroNameFromOSRelease() {
+  static const char* const kFilesToCheck[] = {"/etc/os-release",
+                                              "/usr/lib/os-release"};
+  for (const char* file : kFilesToCheck) {
+    if (ReadDistroFromOSReleaseFile(file))
+      return;
+  }
+}
+#endif  // if !defined(OS_CHROMEOS)
 #endif  // if defined(OS_LINUX)
 
 }  // namespace
 
-namespace base {
-
 // Account for the terminating null character.
 static const int kDistroSize = 128 + 1;
 
@@ -94,6 +148,16 @@
     "Unknown";
 #endif
 
+BASE_EXPORT std::string GetKeyValueFromOSReleaseFileForTesting(
+    const std::string& input,
+    const char* key) {
+#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
+  return GetKeyValueFromOSReleaseFile(input, key);
+#else
+  return "";
+#endif  // defined(OS_LINUX) && !defined(OS_CHROMEOS)
+}
+
 std::string GetLinuxDistro() {
 #if defined(OS_CHROMEOS) || defined(OS_ANDROID)
   return g_linux_distro;
@@ -106,20 +170,8 @@
     return "Unknown"; // Don't wait for other thread to finish.
   DCHECK_EQ(state, STATE_DID_NOT_CHECK);
   // We do this check only once per process. If it fails, there's
-  // little reason to believe it will work if we attempt to run
-  // lsb_release again.
-  std::vector<std::string> argv;
-  argv.push_back("lsb_release");
-  argv.push_back("-d");
-  std::string output;
-  GetAppOutput(CommandLine(argv), &output);
-  if (output.length() > 0) {
-    // lsb_release -d should return: Description:<tab>Distro Info
-    const char field[] = "Description:\t";
-    if (output.compare(0, strlen(field), field) == 0) {
-      SetLinuxDistro(output.substr(strlen(field)));
-    }
-  }
+  // little reason to believe it will work if we attempt to run it again.
+  GetDistroNameFromOSRelease();
   distro_state_singleton->CheckFinished();
   return g_linux_distro;
 #else
@@ -137,7 +189,7 @@
 bool GetThreadsForProcess(pid_t pid, std::vector<pid_t>* tids) {
   // 25 > strlen("/proc//task") + strlen(std::to_string(INT_MAX)) + 1 = 22
   char buf[25];
-  base::strings::SafeSPrintf(buf, "/proc/%d/task", pid);
+  strings::SafeSPrintf(buf, "/proc/%d/task", pid);
   DirReaderPosix dir_reader(buf);
 
   if (!dir_reader.IsValid()) {
diff --git a/base/linux_util.h b/base/linux_util.h
index 568b4e8..80cd6e4 100644
--- a/base/linux_util.h
+++ b/base/linux_util.h
@@ -22,6 +22,14 @@
 // Get the Linux Distro if we can, or return "Unknown".
 BASE_EXPORT std::string GetLinuxDistro();
 
+#if defined(UNIT_TEST)
+// Get the value of given key from the given input (content of the
+// /etc/os-release file. Exposed for testing.
+BASE_EXPORT std::string GetKeyValueFromOSReleaseFileForTesting(
+    const std::string& input,
+    const char* key);
+#endif  // defined(UNIT_TEST)
+
 // Set the Linux Distro string.
 BASE_EXPORT void SetLinuxDistro(const std::string& distro);
 
diff --git a/base/linux_util_unittest.cc b/base/linux_util_unittest.cc
new file mode 100644
index 0000000..28d162a8
--- /dev/null
+++ b/base/linux_util_unittest.cc
@@ -0,0 +1,76 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "base/linux_util.h"
+
+#include "testing/gtest/include/gtest/gtest.h"
+
+namespace {
+
+const char kPrettyName[] = "PRETTY_NAME";
+
+TEST(LinuxUtilTest, ParseEtcOsReleaseFile) {
+  const char kOsRelease[] = R"X(
+NAME=Fedora
+VERSION="30 (Workstation Edition\)\"
+ID=fedora
+VERSION_ID=30
+VERSION_CODENAME=""
+PLATFORM_ID="platform:f30
+PRETTY_NAME="Fedora 30 (Workstation Edition)"
+ANSI_COLOR="0;34"
+LOGO=fedora-logo-icon
+CPE_NAME="cpe:/o:fedoraproject:fedora:30"
+HOME_URL="https://fedoraproject.org/"
+DOCUMENTATION_URL="https://docs.fedoraproject.org/en-US/fedora/f30/system-administrators-guide/"
+SUPPORT_URL="https://fedoraproject.org/wiki/Communicating_and_getting_help"
+BUG_REPORT_URL="https://bugzilla.redhat.com/"
+REDHAT_BUGZILLA_PRODUCT="Fedora"
+REDHAT_BUGZILLA_PRODUCT_VERSION=30
+REDHAT_SUPPORT_PRODUCT="Fedora"
+REDHAT_SUPPORT_PRODUCT_VERSION=30
+PRIVACY_POLICY_URL="https://fedoraproject.org/wiki/Legal:PrivacyPolicy"
+VARIANT="Workstation Edition"
+VARIANT_ID=workstation)X";
+
+  const char kOsReleaseMissingPrettyName[] = R"(
+NAME=Fedora
+VERSION='30 (Workstation Edition)'
+VARIANT_ID=workstation)";
+
+  std::string value =
+      base::GetKeyValueFromOSReleaseFileForTesting(kOsRelease, kPrettyName);
+  EXPECT_EQ(value, "Fedora 30 (Workstation Edition)");
+  // Missing key in the file
+  value = base::GetKeyValueFromOSReleaseFileForTesting(
+      kOsReleaseMissingPrettyName, kPrettyName);
+  EXPECT_EQ(value, "");
+  // Value quoted with single ticks
+  value = base::GetKeyValueFromOSReleaseFileForTesting(
+      kOsReleaseMissingPrettyName, "VERSION");
+  EXPECT_EQ(value, "30 (Workstation Edition)");
+  // Empty file
+  value = base::GetKeyValueFromOSReleaseFileForTesting("", kPrettyName);
+  EXPECT_EQ(value, "");
+  // Misspelled key
+  value =
+      base::GetKeyValueFromOSReleaseFileForTesting(kOsRelease, "PRETY_NAME");
+  EXPECT_EQ(value, "");
+  // Broken key=value format
+  value = base::GetKeyValueFromOSReleaseFileForTesting("A/B", kPrettyName);
+  EXPECT_EQ(value, "");
+  // Empty values
+  value =
+      base::GetKeyValueFromOSReleaseFileForTesting("PRETTY_NAME=", kPrettyName);
+  EXPECT_EQ(value, "");
+  value = base::GetKeyValueFromOSReleaseFileForTesting("PRETTY_NAME=\"\"",
+                                                       kPrettyName);
+  EXPECT_EQ(value, "");
+  // Only one key=value in the whole file
+  value = base::GetKeyValueFromOSReleaseFileForTesting("PRETTY_NAME=\"Linux\"",
+                                                       kPrettyName);
+  EXPECT_EQ(value, "Linux");
+}
+
+}  // namespace
diff --git a/base/strings/string_number_conversions.cc b/base/strings/string_number_conversions.cc
index 461502b..67bd3d0 100644
--- a/base/strings/string_number_conversions.cc
+++ b/base/strings/string_number_conversions.cc
@@ -15,6 +15,7 @@
 #include "base/logging.h"
 #include "base/no_destructor.h"
 #include "base/numerics/safe_math.h"
+#include "base/strings/string_util.h"
 #include "base/strings/utf_string_conversions.h"
 #include "base/third_party/double_conversion/double-conversion/double-conversion.h"
 
@@ -425,14 +426,15 @@
   return String16ToIntImpl(input, output);
 }
 
-bool StringToDouble(const std::string& input, double* output) {
+template <typename STRING, typename CHAR>
+bool StringToDoubleImpl(STRING input, const CHAR* data, double* output) {
   static NoDestructor<double_conversion::StringToDoubleConverter> converter(
       double_conversion::StringToDoubleConverter::ALLOW_LEADING_SPACES |
           double_conversion::StringToDoubleConverter::ALLOW_TRAILING_JUNK,
       0.0, 0, nullptr, nullptr);
 
   int processed_characters_count;
-  *output = converter->StringToDouble(input.c_str(), input.size(),
+  *output = converter->StringToDouble(data, input.size(),
                                       &processed_characters_count);
 
   // Cases to return false:
@@ -444,16 +446,17 @@
   //  - If the first character is a space, there was leading whitespace
   return !input.empty() && *output != HUGE_VAL && *output != -HUGE_VAL &&
          static_cast<size_t>(processed_characters_count) == input.size() &&
-         !isspace(input[0]);
+         !IsUnicodeWhitespace(input[0]);
 }
 
-// Note: if you need to add String16ToDouble, first ask yourself if it's
-// really necessary. If it is, probably the best implementation here is to
-// convert to 8-bit and then use the 8-bit version.
+bool StringToDouble(StringPiece input, double* output) {
+  return StringToDoubleImpl(input, input.data(), output);
+}
 
-// Note: if you need to add an iterator range version of StringToDouble, first
-// ask yourself if it's really necessary. If it is, probably the best
-// implementation here is to instantiate a string and use the string version.
+bool StringToDouble(StringPiece16 input, double* output) {
+  return StringToDoubleImpl(
+      input, reinterpret_cast<const uint16_t*>(input.data()), output);
+}
 
 std::string HexEncode(const void* bytes, size_t size) {
   static const char kHexChars[] = "0123456789ABCDEF";
diff --git a/base/strings/string_number_conversions.h b/base/strings/string_number_conversions.h
index 55f80a6d..bc4edf2 100644
--- a/base/strings/string_number_conversions.h
+++ b/base/strings/string_number_conversions.h
@@ -98,7 +98,8 @@
 // If your input is locale specific, use ICU to read the number.
 // WARNING: Will write to |output| even when returning false.
 //          Read the comments here and above StringToInt() carefully.
-BASE_EXPORT bool StringToDouble(const std::string& input, double* output);
+BASE_EXPORT bool StringToDouble(StringPiece input, double* output);
+BASE_EXPORT bool StringToDouble(StringPiece16 input, double* output);
 
 // Hex encoding ----------------------------------------------------------------
 
diff --git a/base/test/task_environment.cc b/base/test/task_environment.cc
index ab0c164..f2338545 100644
--- a/base/test/task_environment.cc
+++ b/base/test/task_environment.cc
@@ -363,14 +363,13 @@
                                     : nullptr),
       scoped_lazy_task_runner_list_for_testing_(
           std::make_unique<internal::ScopedLazyTaskRunnerListForTesting>()),
-      // TODO(https://crbug.com/918724): Enable Run() timeouts even for
-      // instances created with *MOCK_TIME, and determine whether the timeout
-      // can be reduced from action_max_timeout() to action_timeout().
+      // TODO(https://crbug.com/922098): Enable Run() timeouts even for
+      // instances created with *MOCK_TIME.
       run_loop_timeout_(
           mock_time_domain_
               ? nullptr
               : std::make_unique<RunLoop::ScopedRunTimeoutForTest>(
-                    TestTimeouts::action_max_timeout(),
+                    TestTimeouts::action_timeout(),
                     MakeExpectedNotRunClosure(FROM_HERE,
                                               "RunLoop::Run() timed out."))) {
   CHECK(!base::ThreadTaskRunnerHandle::IsSet());
diff --git a/build/android/bytecode/BUILD.gn b/build/android/bytecode/BUILD.gn
index 51fff21..326b380 100644
--- a/build/android/bytecode/BUILD.gn
+++ b/build/android/bytecode/BUILD.gn
@@ -7,7 +7,6 @@
 assert(current_toolchain == default_toolchain)
 
 java_binary("java_bytecode_rewriter") {
-  jacoco_never_instrument = true
   java_files = [
     "java/org/chromium/bytecode/AssertionEnablerClassAdapter.java",
     "java/org/chromium/bytecode/ByteCodeProcessor.java",
diff --git a/build/config/android/internal_rules.gni b/build/config/android/internal_rules.gni
index 7e8306a..afa2ee9 100644
--- a/build/config/android/internal_rules.gni
+++ b/build/config/android/internal_rules.gni
@@ -3312,6 +3312,7 @@
     if (defined(_final_jar_path)) {
       _jacoco_instrument =
           jacoco_coverage && _chromium_code && _java_files != [] &&
+          !_is_java_binary && !_is_annotation_processor &&
           (!defined(invoker.testonly) || !invoker.testonly)
       if (defined(invoker.jacoco_never_instrument)) {
         _jacoco_instrument =
diff --git a/build/config/mac/rules.gni b/build/config/mac/rules.gni
index 714bf700..3c81624 100644
--- a/build/config/mac/rules.gni
+++ b/build/config/mac/rules.gni
@@ -353,7 +353,8 @@
 
     if (enable_dsyms) {
       data = [
-        "$root_out_dir/$_output_name.dSYM/",
+        "$root_out_dir/$_output_name.dSYM/Contents/Info.plist",
+        "$root_out_dir/$_output_name.dSYM/Contents/Resources/DWARF/$_output_name",
       ]
     }
 
@@ -560,7 +561,8 @@
 
     if (enable_dsyms) {
       data = [
-        "$root_out_dir/$_output_name.dSYM/",
+        "$root_out_dir/$_output_name.dSYM/Contents/Info.plist",
+        "$root_out_dir/$_output_name.dSYM/Contents/Resources/DWARF/$_output_name",
       ]
     }
 
@@ -606,7 +608,7 @@
     forward_variables_from(invoker, [ "testonly" ])
     visibility = [ ":$_target_name" ]
     sources = [
-      "$target_out_dir/${_output_name}.so",
+      "$target_out_dir/$_output_name.so",
     ]
     outputs = [
       "{{bundle_executable_dir}}/$_output_name",
@@ -632,7 +634,8 @@
 
     if (enable_dsyms) {
       data = [
-        "$root_out_dir/$_output_name.so.dSYM/",
+        "$root_out_dir/$_output_name.so.dSYM/Contents/Info.plist",
+        "$root_out_dir/$_output_name.so.dSYM/Contents/Resources/DWARF/$_output_name.so",
       ]
     }
 
diff --git a/buildtools/OWNERS b/buildtools/OWNERS
index e8022b6..3cf9607f 100644
--- a/buildtools/OWNERS
+++ b/buildtools/OWNERS
@@ -1,3 +1,5 @@
 dpranke@chromium.org
 thakis@chromium.org
 thomasanderson@chromium.org
+
+# COMPONENT: Build
diff --git a/chrome/README.md b/chrome/README.md
new file mode 100644
index 0000000..3d90be4
--- /dev/null
+++ b/chrome/README.md
@@ -0,0 +1,15 @@
+# Chrome
+
+This directory contains the open source, application layer of Google Chrome.
+
+Unlike other parts of Chromium like //content, which provide framework intended
+to support multiple products, this directory contains code that is focused on
+building specific products with opinionated UX.
+
+Specific products include:
+- Chrome desktop browser for Chrome OS, Windows, Mac and Linux
+- Chrome mobile browser for Android
+- Chrome OS system UI
+
+See //ios for the Chrome mobile browser for iOS, and note that code that is
+shared between //chrome and //ios is typically factored out into //components.
diff --git a/chrome/android/java/res/drawable/shared_clipboard_zero_state_dark.xml b/chrome/android/java/res/drawable/shared_clipboard_zero_state_dark.xml
new file mode 100644
index 0000000..dc110e2
--- /dev/null
+++ b/chrome/android/java/res/drawable/shared_clipboard_zero_state_dark.xml
@@ -0,0 +1,143 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright 2019 The Chromium Authors. All rights reserved.
+     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"
+    xmlns:tools="http://schemas.android.com/tools"
+    tools:targetApi="21"
+    tools:ignore="VectorRaster"
+    android:width="412dp"
+    android:height="129dp"
+    android:viewportWidth="412"
+    android:viewportHeight="129">
+  <path
+      android:pathData="M358.064,-6.508L45.311,-6.508C40.761,-6.508 37.071,-2.818 37.071,1.732L37.071,86.055L366.304,86.055L366.304,1.732C366.304,-2.818 362.614,-6.508 358.064,-6.508Z"
+      android:strokeWidth="1"
+      android:fillColor="#F8F9FA"
+      android:fillType="evenOdd"
+      android:strokeColor="#00000000"/>
+  <path
+      android:pathData="M427,-6.508l-460.925,0l-0,121.025l460.925,0z"
+      android:strokeWidth="1"
+      android:fillColor="#202124"
+      android:fillType="evenOdd"
+      android:strokeColor="#00000000"/>
+  <path
+      android:pathData="M148.9,95.729L148.9,104.445C153.828,106.017 159.328,107.063 165.265,107.088C180.692,107.155 195.369,100.337 208.885,86.826L203.081,81.024C191.195,92.907 178.51,98.917 165.38,98.886C159.338,98.871 153.765,97.568 148.9,95.729Z"
+      android:strokeWidth="1"
+      android:fillColor="#3C4043"
+      android:fillType="nonZero"
+      android:strokeColor="#00000000"/>
+  <path
+      android:pathData="M101.889,18.427L98.068,18.427C92.386,18.427 87.779,23.032 87.779,28.712C87.779,66.248 87.779,90.996 87.779,102.955"
+      android:strokeLineJoin="round"
+      android:strokeWidth="1.03"
+      android:fillColor="#00000000"
+      android:strokeColor="#5F6368"
+      android:fillType="evenOdd"
+      android:strokeLineCap="round"/>
+  <path
+      android:pathData="M87.746,110.99L87.746,117.171C87.746,122.851 92.352,127.455 98.035,127.455L106.004,127.455M87.746,110.99L87.746,117.171C87.746,122.851 92.352,127.455 98.035,127.455L106.004,127.455"
+      android:strokeWidth="1.03"
+      android:fillColor="#00000000"
+      android:fillType="nonZero"
+      android:strokeColor="#F6AEA9"
+      android:strokeLineCap="round"/>
+  <path
+      android:pathData="M115.989,18.427L138.928,18.427C144.61,18.427 149.216,23.032 149.216,28.712L149.216,117.161C149.216,122.841 144.61,127.446 138.928,127.446L118.843,127.446M115.989,18.427L138.928,18.427C144.61,18.427 149.216,23.032 149.216,28.712L149.216,117.161C149.216,122.841 144.61,127.446 138.928,127.446L118.843,127.446"
+      android:strokeWidth="1.03"
+      android:fillColor="#00000000"
+      android:fillType="nonZero"
+      android:strokeColor="#5F6368"
+      android:strokeLineCap="round"/>
+  <path
+      android:pathData="M362.548,35.911C365.746,35.911 368.361,38.476 368.361,41.61L368.361,121.403L246.271,121.403L246.271,41.61C246.271,38.476 248.887,35.911 252.085,35.911L362.548,35.911Z"
+      android:strokeWidth="1.03"
+      android:fillColor="#202124"
+      android:strokeColor="#5F6368"
+      android:fillType="evenOdd"/>
+  <path
+      android:pathData="M392.599,127.446L222.712,127.446"
+      android:strokeWidth="1.03"
+      android:fillColor="#00000000"
+      android:strokeColor="#5F6368"
+      android:fillType="evenOdd"
+      android:strokeLineCap="square"/>
+  <path
+      android:pathData="M135.455,26.655C138.504,26.655 140.985,29.126 140.985,32.164L140.985,113.709C140.985,116.747 138.504,119.218 135.455,119.218L101.245,119.218C98.196,119.218 95.716,116.747 95.716,113.709L95.716,32.164C95.716,29.126 98.196,26.655 101.245,26.655L135.455,26.655Z"
+      android:strokeWidth="1.03"
+      android:fillColor="#202124"
+      android:strokeColor="#5F6368"
+      android:fillType="evenOdd"/>
+  <path
+      android:pathData="M281.278,82.653L287.082,76.851C286.673,76.443 276.902,66.801 261.631,62.48C247.42,58.461 225.701,58.444 202.934,81.203L208.738,87.003C224.756,70.991 241.8,65.397 259.396,70.375C272.632,74.118 281.193,82.567 281.278,82.653"
+      android:strokeWidth="1"
+      android:fillColor="#8AB4F8"
+      android:fillType="nonZero"
+      android:strokeColor="#00000000"/>
+  <path
+      android:pathData="M74.097,11.471C74.443,12.779 74.88,13.701 75.425,14.245C76.047,14.868 77.276,15.454 79.135,16.031C77.573,16.431 76.431,16.987 75.705,17.713C74.978,18.438 74.422,19.581 74.022,21.143C73.445,19.284 72.858,18.055 72.236,17.433C71.691,16.888 70.769,16.451 69.461,16.105C70.832,15.714 71.849,15.191 72.515,14.525C73.182,13.859 73.705,12.841 74.097,11.471Z"
+      android:strokeWidth="1.03"
+      android:fillColor="#FDD663"
+      android:strokeColor="#FDD663"
+      android:fillType="evenOdd"/>
+  <path
+      android:pathData="M240.821,22.761C241.303,24.849 241.93,26.284 242.726,27.079C243.605,27.958 245.442,28.796 248.267,29.624C245.868,30.163 244.147,30.946 243.102,31.991C242.056,33.036 241.273,34.756 240.734,37.155C239.905,34.331 239.067,32.494 238.188,31.615C237.393,30.82 235.958,30.193 233.869,29.712C236.024,29.178 237.588,28.431 238.564,27.455C239.54,26.48 240.287,24.916 240.821,22.761Z"
+      android:strokeWidth="1.03"
+      android:fillColor="#FDD663"
+      android:strokeColor="#FDD663"
+      android:fillType="evenOdd"/>
+  <path
+      android:pathData="M225.569,16.478C225.797,17.182 226.074,17.698 226.409,18.034C226.814,18.438 227.548,18.815 228.627,19.182C227.737,19.459 227.064,19.821 226.608,20.278C226.15,20.735 225.788,21.408 225.511,22.298C225.144,21.219 224.767,20.485 224.362,20.08C224.026,19.745 223.51,19.468 222.806,19.24C223.565,18.976 224.15,18.642 224.56,18.232C224.97,17.822 225.304,17.237 225.569,16.478Z"
+      android:strokeWidth="1.03"
+      android:fillColor="#FDD663"
+      android:strokeColor="#FDD663"
+      android:fillType="evenOdd"/>
+  <path
+      android:pathData="M58.104,5.672C58.332,6.376 58.609,6.893 58.944,7.228C59.349,7.633 60.083,8.01 61.162,8.377C60.272,8.654 59.599,9.016 59.143,9.473C58.685,9.929 58.323,10.602 58.046,11.492C57.679,10.413 57.302,9.679 56.897,9.274C56.561,8.939 56.045,8.662 55.341,8.434C56.1,8.17 56.685,7.836 57.095,7.426C57.505,7.016 57.839,6.432 58.104,5.672Z"
+      android:strokeWidth="1.03"
+      android:fillColor="#FDD663"
+      android:strokeColor="#FDD663"
+      android:fillType="evenOdd"/>
+  <path
+      android:pathData="M62.778,58.238C62.96,58.739 63.177,59.117 63.436,59.376C63.76,59.699 64.318,60 65.124,60.29C64.468,60.518 63.961,60.807 63.604,61.165C63.246,61.522 62.957,62.028 62.729,62.685C62.438,61.879 62.138,61.321 61.814,60.997C61.555,60.739 61.178,60.521 60.676,60.339C61.229,60.124 61.664,59.861 61.982,59.543C62.299,59.226 62.563,58.791 62.778,58.238Z"
+      android:strokeWidth="1.03"
+      android:fillColor="#FDD663"
+      android:strokeColor="#FDD663"
+      android:fillType="evenOdd"/>
+  <path
+      android:pathData="M22.168,50.515L44.542,50.515L56.098,50.515L66.908,50.515C66.535,44.879 61.829,40.407 56.098,40.407C54.884,40.407 53.671,40.618 52.491,41.037L52.009,41.206L51.688,40.809C48.514,36.884 43.803,34.631 38.764,34.631C29.847,34.631 22.547,41.692 22.168,50.515Z"
+      android:strokeWidth="1.03"
+      android:fillColor="#292A2D"
+      android:strokeColor="#5F6368"
+      android:fillType="evenOdd"/>
+  <path
+      android:pathData="M-25.878,104.659L-3.504,104.659L8.052,104.659L18.862,104.659C18.489,99.023 13.783,94.551 8.052,94.551C6.838,94.551 5.625,94.762 4.445,95.18L3.964,95.35L3.643,94.953C0.469,91.027 -4.242,88.775 -9.282,88.775C-18.199,88.775 -25.498,95.835 -25.878,104.659Z"
+      android:strokeWidth="1.03"
+      android:fillColor="#292A2D"
+      android:strokeColor="#5F6368"
+      android:fillType="evenOdd"/>
+  <path
+      android:pathData="M392.599,127.446L222.712,127.446"
+      android:strokeWidth="1.03"
+      android:fillColor="#00000000"
+      android:strokeColor="#5F6368"
+      android:fillType="evenOdd"
+      android:strokeLineCap="square"/>
+  <path
+      android:pathData="M135.452,26.653C138.501,26.653 140.982,29.124 140.982,32.162L140.982,113.707C140.982,116.745 138.501,119.216 135.452,119.216L101.242,119.216C98.192,119.216 95.712,116.745 95.712,113.707L95.712,32.162C95.712,29.124 98.192,26.653 101.242,26.653L135.452,26.653Z"
+      android:strokeWidth="1.03"
+      android:fillColor="#202124"
+      android:strokeColor="#5F6368"
+      android:fillType="evenOdd"/>
+  <group>
+    <clip-path android:pathData="M123.794,75.9C123.031,75.9 122.346,76.199 121.834,76.682L115.017,72.713C115.065,72.491 115.104,72.269 115.104,72.037C115.104,71.806 115.065,71.584 115.017,71.362L121.824,67.393C122.336,67.876 123.031,68.175 123.794,68.175C125.397,68.175 126.691,66.881 126.691,65.278C126.691,63.675 125.397,62.381 123.794,62.381C122.191,62.381 120.897,63.675 120.897,65.278C120.897,65.51 120.936,65.742 120.984,65.954L114.177,69.923C113.655,69.44 112.97,69.141 112.207,69.141C110.604,69.141 109.31,70.435 109.31,72.037C109.31,73.64 110.604,74.934 112.207,74.934C112.97,74.934 113.655,74.635 114.177,74.152L120.984,78.131C120.936,78.343 120.897,78.565 120.897,78.797C120.897,80.4 122.191,81.694 123.794,81.694C125.397,81.694 126.691,80.4 126.691,78.797C126.691,77.194 125.397,75.9 123.794,75.9ZM123.794,64.312C124.325,64.312 124.76,64.747 124.76,65.278C124.76,65.809 124.325,66.244 123.794,66.244C123.263,66.244 122.829,65.809 122.829,65.278C122.829,64.747 123.263,64.312 123.794,64.312ZM112.207,73.003C111.676,73.003 111.241,72.569 111.241,72.037C111.241,71.506 111.676,71.072 112.207,71.072C112.738,71.072 113.172,71.506 113.172,72.037C113.172,72.569 112.738,73.003 112.207,73.003ZM123.794,79.763C123.263,79.763 122.829,79.328 122.829,78.797C122.829,78.266 123.263,77.831 123.794,77.831C124.325,77.831 124.76,78.266 124.76,78.797C124.76,79.328 124.325,79.763 123.794,79.763Z M 0,0"/>
+    <path
+        android:pathData="M106.413,60.45h23.175v23.175h-23.175z"
+        android:strokeWidth="1"
+        android:fillColor="#5F6368"
+        android:fillType="evenOdd"
+        android:strokeColor="#00000000"/>
+  </group>
+</vector>
diff --git a/chrome/android/java/res/drawable/shared_clipboard_zero_state_light.xml b/chrome/android/java/res/drawable/shared_clipboard_zero_state_light.xml
new file mode 100644
index 0000000..b767fdf3
--- /dev/null
+++ b/chrome/android/java/res/drawable/shared_clipboard_zero_state_light.xml
@@ -0,0 +1,124 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright 2019 The Chromium Authors. All rights reserved.
+     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"
+    xmlns:tools="http://schemas.android.com/tools"
+    tools:targetApi="21"
+    tools:ignore="VectorRaster"
+    android:width="412dp"
+    android:height="129dp"
+    android:viewportWidth="412"
+    android:viewportHeight="129">
+  <path
+      android:pathData="M0,-6.508h460.925v121.025h-460.925z"
+      android:strokeWidth="1"
+      android:fillColor="#F8F9FA"
+      android:fillType="evenOdd"
+      android:strokeColor="#00000000"/>
+  <path
+      android:pathData="M149.35,95.785L149.35,104.501C154.279,106.074 159.781,107.121 165.72,107.146C181.147,107.213 195.823,100.395 209.339,86.884L203.536,81.082C191.649,92.965 178.965,98.974 165.835,98.944C159.791,98.929 154.216,97.625 149.35,95.785Z"
+      android:strokeWidth="1"
+      android:fillColor="#E8E9EB"
+      android:fillType="evenOdd"
+      android:strokeColor="#00000000"/>
+  <path
+      android:pathData="M102.339,18.49L98.518,18.49C92.836,18.49 88.229,23.094 88.229,28.774C88.229,66.31 88.229,91.058 88.229,103.017"
+      android:strokeLineJoin="round"
+      android:strokeWidth="1.03"
+      android:fillColor="#00000000"
+      android:strokeColor="#BDC0C5"
+      android:fillType="evenOdd"
+      android:strokeLineCap="round"/>
+  <path
+      android:pathData="M88.196,111.053L88.196,117.233C88.196,122.913 92.802,127.518 98.485,127.518L106.454,127.518M88.196,111.053L88.196,117.233C88.196,122.913 92.802,127.518 98.485,127.518L106.454,127.518"
+      android:strokeWidth="1.03"
+      android:fillColor="#00000000"
+      android:fillType="nonZero"
+      android:strokeColor="#E54440"
+      android:strokeLineCap="round"/>
+  <path
+      android:pathData="M116.439,18.49L139.378,18.49C145.06,18.49 149.666,23.094 149.666,28.774L149.666,117.223C149.666,122.904 145.06,127.508 139.378,127.508L119.293,127.508M116.439,18.49L139.378,18.49C145.06,18.49 149.666,23.094 149.666,28.774L149.666,117.223C149.666,122.904 145.06,127.508 139.378,127.508L119.293,127.508"
+      android:strokeWidth="1.03"
+      android:fillColor="#00000000"
+      android:fillType="nonZero"
+      android:strokeColor="#BDC0C5"
+      android:strokeLineCap="round"/>
+  <path
+      android:pathData="M252.535,35.974L362.998,35.974C366.196,35.974 368.811,38.538 368.811,41.673L368.811,121.466L246.721,121.466L246.721,41.673C246.721,38.538 249.337,35.974 252.535,35.974"
+      android:strokeWidth="1.03"
+      android:fillColor="#F4F4F4"
+      android:strokeColor="#BDC0C5"
+      android:fillType="evenOdd"/>
+  <path
+      android:pathData="M393.049,127.508L223.162,127.508"
+      android:strokeWidth="1.03"
+      android:fillColor="#00000000"
+      android:strokeColor="#BDC0C5"
+      android:fillType="evenOdd"
+      android:strokeLineCap="square"/>
+  <path
+      android:pathData="M135.905,26.718C138.954,26.718 141.435,29.189 141.435,32.226L141.435,113.772C141.435,116.809 138.954,119.28 135.905,119.28L101.695,119.28C98.646,119.28 96.166,116.809 96.166,113.772L96.166,32.226C96.166,29.189 98.646,26.718 101.695,26.718L135.905,26.718Z"
+      android:strokeWidth="1.03"
+      android:fillColor="#F4F4F4"
+      android:strokeColor="#E8E9EB"
+      android:fillType="evenOdd"/>
+  <path
+      android:pathData="M281.728,82.715L287.532,76.914C287.123,76.505 277.352,66.863 262.081,62.543C247.87,58.523 226.151,58.507 203.384,81.265L209.188,87.066C225.206,71.053 242.25,65.459 259.846,70.437C273.082,74.181 281.643,82.63 281.728,82.715"
+      android:strokeWidth="1"
+      android:fillColor="#4285F4"
+      android:fillType="evenOdd"
+      android:strokeColor="#00000000"/>
+  <path
+      android:pathData="M74.547,11.533C74.893,12.842 75.33,13.763 75.875,14.308C76.497,14.93 77.726,15.517 79.585,16.093C78.023,16.493 76.881,17.049 76.155,17.775C75.428,18.501 74.872,19.643 74.472,21.205C73.895,19.347 73.308,18.118 72.686,17.495C72.141,16.951 71.219,16.514 69.911,16.168C71.282,15.777 72.299,15.254 72.965,14.588C73.632,13.921 74.155,12.904 74.547,11.533Z"
+      android:strokeWidth="1.03"
+      android:fillColor="#FBBC06"
+      android:strokeColor="#FBBC06"
+      android:fillType="evenOdd"/>
+  <path
+      android:pathData="M241.271,22.824C241.753,24.912 242.38,26.347 243.176,27.142C244.055,28.021 245.892,28.858 248.717,29.686C246.318,30.226 244.597,31.008 243.552,32.053C242.506,33.098 241.723,34.819 241.184,37.218C240.355,34.393 239.517,32.556 238.638,31.677C237.843,30.882 236.408,30.255 234.319,29.774C236.474,29.24 238.038,28.493 239.014,27.518C239.99,26.542 240.737,24.979 241.271,22.824Z"
+      android:strokeWidth="1.03"
+      android:fillColor="#FBBC06"
+      android:strokeColor="#FBBC06"
+      android:fillType="evenOdd"/>
+  <path
+      android:pathData="M226.019,16.54C226.247,17.244 226.524,17.761 226.859,18.096C227.264,18.501 227.998,18.878 229.077,19.245C228.187,19.522 227.514,19.884 227.058,20.341C226.6,20.798 226.238,21.47 225.961,22.36C225.594,21.281 225.217,20.547 224.812,20.142C224.476,19.807 223.96,19.53 223.256,19.303C224.015,19.038 224.6,18.704 225.01,18.294C225.42,17.884 225.754,17.3 226.019,16.54Z"
+      android:strokeWidth="1.03"
+      android:fillColor="#FBBC06"
+      android:strokeColor="#FBBC06"
+      android:fillType="evenOdd"/>
+  <path
+      android:pathData="M58.554,5.735C58.782,6.439 59.059,6.955 59.394,7.291C59.799,7.695 60.533,8.072 61.612,8.439C60.722,8.716 60.049,9.078 59.593,9.535C59.135,9.992 58.773,10.665 58.496,11.555C58.129,10.476 57.752,9.742 57.347,9.337C57.011,9.002 56.495,8.725 55.791,8.497C56.55,8.233 57.135,7.899 57.545,7.489C57.955,7.078 58.289,6.494 58.554,5.735Z"
+      android:strokeWidth="1.03"
+      android:fillColor="#FBBC06"
+      android:strokeColor="#FBBC06"
+      android:fillType="evenOdd"/>
+  <path
+      android:pathData="M63.227,58.301C63.41,58.802 63.627,59.18 63.886,59.438C64.21,59.762 64.768,60.062 65.574,60.353C64.918,60.581 64.411,60.87 64.054,61.227C63.696,61.585 63.407,62.091 63.179,62.748C62.888,61.942 62.588,61.383 62.264,61.059C62.005,60.801 61.628,60.584 61.126,60.401C61.679,60.187 62.114,59.923 62.432,59.606C62.749,59.289 63.013,58.854 63.227,58.301Z"
+      android:strokeWidth="1.03"
+      android:fillColor="#FBBC06"
+      android:strokeColor="#FBBC06"
+      android:fillType="evenOdd"/>
+  <path
+      android:pathData="M22.617,50.578L44.992,50.578L56.548,50.578L67.358,50.578C66.985,44.942 62.279,40.47 56.548,40.47C55.334,40.47 54.121,40.681 52.941,41.099L52.459,41.269L52.138,40.872C48.964,36.946 44.253,34.694 39.214,34.694C30.297,34.694 22.997,41.754 22.617,50.578Z"
+      android:strokeWidth="1.03"
+      android:fillColor="#00000000"
+      android:strokeColor="#E8E9EB"
+      android:fillType="evenOdd"/>
+  <path
+      android:pathData="M-25.428,104.721L-3.054,104.721L8.502,104.721L19.312,104.721C18.939,99.085 14.233,94.613 8.502,94.613C7.288,94.613 6.075,94.824 4.895,95.243L4.414,95.413L4.093,95.016C0.919,91.09 -3.792,88.838 -8.832,88.838C-17.749,88.838 -25.048,95.898 -25.428,104.721Z"
+      android:strokeWidth="1.03"
+      android:fillColor="#00000000"
+      android:strokeColor="#E8E9EB"
+      android:fillType="evenOdd"/>
+  <group>
+    <clip-path android:pathData="M124.243,75.963C123.48,75.963 122.795,76.261 122.283,76.744L115.466,72.775C115.514,72.553 115.553,72.331 115.553,72.1C115.553,71.868 115.514,71.646 115.466,71.424L122.273,67.455C122.785,67.938 123.48,68.238 124.243,68.238C125.846,68.238 127.14,66.944 127.14,65.34C127.14,63.737 125.846,62.444 124.243,62.444C122.64,62.444 121.346,63.737 121.346,65.34C121.346,65.573 121.385,65.805 121.433,66.017L114.626,69.986C114.104,69.503 113.419,69.203 112.656,69.203C111.053,69.203 109.759,70.497 109.759,72.1C109.759,73.702 111.053,74.996 112.656,74.996C113.419,74.996 114.104,74.698 114.626,74.215L121.433,78.193C121.385,78.406 121.346,78.628 121.346,78.859C121.346,80.463 122.64,81.757 124.243,81.757C125.846,81.757 127.14,80.463 127.14,78.859C127.14,77.257 125.846,75.963 124.243,75.963ZM124.243,64.375C124.774,64.375 125.209,64.81 125.209,65.34C125.209,65.871 124.774,66.307 124.243,66.307C123.712,66.307 123.278,65.871 123.278,65.34C123.278,64.81 123.712,64.375 124.243,64.375ZM112.656,73.065C112.125,73.065 111.69,72.632 111.69,72.1C111.69,71.568 112.125,71.134 112.656,71.134C113.188,71.134 113.621,71.568 113.621,72.1C113.621,72.632 113.188,73.065 112.656,73.065ZM124.243,79.826C123.712,79.826 123.278,79.391 123.278,78.859C123.278,78.328 123.712,77.894 124.243,77.894C124.774,77.894 125.209,78.328 125.209,78.859C125.209,79.391 124.774,79.826 124.243,79.826Z M 0,0"/>
+    <path
+        android:pathData="M106.862,60.513h23.175v23.175h-23.175z"
+        android:strokeWidth="1"
+        android:fillColor="#BDC0C5"
+        android:fillType="evenOdd"
+        android:strokeColor="#00000000"/>
+  </group>
+</vector>
diff --git a/chrome/android/java/res/layout/sharing_device_picker.xml b/chrome/android/java/res/layout/sharing_device_picker.xml
index 12427d2..0bd6b40 100644
--- a/chrome/android/java/res/layout/sharing_device_picker.xml
+++ b/chrome/android/java/res/layout/sharing_device_picker.xml
@@ -13,7 +13,7 @@
       android:layout_width="match_parent"
       android:layout_height="0dp"
       android:layout_weight="1"
-      android:background="@android:color/transparent" />
+      android:background="@android:color/transparent"/>
 
   <LinearLayout
       android:id="@+id/device_picker_content"
@@ -21,6 +21,7 @@
       android:layout_height="wrap_content"
       android:orientation="vertical"
       android:background="@color/sheet_bg_color">
+
     <TextView
         android:id="@+id/device_picker_toolbar"
         android:layout_width="match_parent"
@@ -31,7 +32,9 @@
         android:paddingTop="16dp"
         android:paddingBottom="8dp"
         android:ellipsize="end"
-        android:textAppearance="@style/TextAppearance.BlackHint1" />
+        android:visibility="gone"
+        android:textAppearance="@style/TextAppearance.BlackToolbarTitle"
+        android:text="@string/send_tab_to_self_sheet_toolbar"/>
 
     <ListView
         android:id="@+id/device_picker_list"
@@ -39,18 +42,53 @@
         android:layout_height="wrap_content"
         android:divider="@null"/>
 
-    <TextView
-        android:id="@android:id/empty"
+    <LinearLayout
+        android:id="@+id/empty_state"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
-        android:gravity="center_vertical"
+        android:paddingBottom="32dp"
+        android:orientation="vertical">
+
+      <ImageView
+          android:id="@+id/empty_state_image"
+          android:layout_height="wrap_content"
+          android:layout_width ="match_parent"
+          android:contentDescription="@string/sharing_no_devices_available_text"
+          android:src="@drawable/shared_clipboard_zero_state"/>
+
+      <TextView
+        android:layout_width="match_parent"
+        android:layout_height="@dimen/min_touch_target_size"
+        android:gravity="center"
         android:paddingStart="30dp"
         android:paddingEnd="30dp"
         android:paddingTop="16dp"
-        android:paddingBottom="8dp"
         android:ellipsize="end"
-        android:textAppearance="@style/TextAppearance.BlackHint1"
-        android:text="@string/sharing_device_list_empty"/>
+        android:textAppearance="@style/TextAppearance.BlackToolbarTitle"
+        android:text="@string/sharing_no_devices_available_title"/>
+
+      <TextView
+          android:layout_width="match_parent"
+          android:layout_height="wrap_content"
+          android:gravity="center"
+          android:paddingStart="30dp"
+          android:paddingEnd="30dp"
+          android:paddingTop="16dp"
+          android:ellipsize="end"
+          android:textAppearance="@style/TextAppearance.BlackHint1"
+          android:text="@string/sharing_no_devices_available_text"/>
+
+      <org.chromium.ui.widget.ButtonCompat
+          android:id="@+id/chrome_settings"
+          android:layout_height="wrap_content"
+          android:layout_width="wrap_content"
+          android:layout_gravity="center"
+          android:layout_marginTop="16dp"
+          android:text="@string/sharing_chrome_settings"
+          android:visibility="gone"
+          style="@style/FilledButton"/>
+
+    </LinearLayout>
 
   </LinearLayout>
 
diff --git a/chrome/android/java/res/values/drawables.xml b/chrome/android/java/res/values/drawables.xml
index 2da6607..0c5d4f3 100644
--- a/chrome/android/java/res/values/drawables.xml
+++ b/chrome/android/java/res/values/drawables.xml
@@ -12,4 +12,5 @@
     <drawable name="ic_play_circle_filled_24dp">
         @drawable/ic_play_circle_filled_24dp_on_light_bg
     </drawable>
+    <drawable name="shared_clipboard_zero_state">@drawable/shared_clipboard_zero_state_light</drawable>
 </resources>
\ No newline at end of file
diff --git a/chrome/android/java/res_night/values-night/drawables.xml b/chrome/android/java/res_night/values-night/drawables.xml
index ec3f457..6b00b591 100644
--- a/chrome/android/java/res_night/values-night/drawables.xml
+++ b/chrome/android/java/res_night/values-night/drawables.xml
@@ -14,4 +14,5 @@
     <drawable name="password_manager_onboarding_illustration01">@drawable/password_manager_onboarding_illustration01_dark_mode</drawable>
     <drawable name="password_manager_onboarding_illustration02">@drawable/password_manager_onboarding_illustration02_dark_mode</drawable>
     <drawable name="password_manager_onboarding_illustration03">@drawable/password_manager_onboarding_illustration03_dark_mode</drawable>
+    <drawable name="shared_clipboard_zero_state">@drawable/shared_clipboard_zero_state_dark</drawable>
 </resources>
\ No newline at end of file
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/gesturenav/CompositorNavigationGlow.java b/chrome/android/java/src/org/chromium/chrome/browser/gesturenav/CompositorNavigationGlow.java
index 5cc8166..f83c815 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/gesturenav/CompositorNavigationGlow.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/gesturenav/CompositorNavigationGlow.java
@@ -7,6 +7,7 @@
 import android.view.ViewGroup;
 
 import org.chromium.base.annotations.JNINamespace;
+import org.chromium.base.annotations.NativeMethods;
 import org.chromium.content_public.browser.WebContents;
 
 /**
@@ -26,12 +27,14 @@
     public CompositorNavigationGlow(ViewGroup parentView, WebContents webContents) {
         super(parentView);
         mNativeNavigationGlow =
-                nativeInit(parentView.getResources().getDisplayMetrics().density, webContents);
+                CompositorNavigationGlowJni.get().init(CompositorNavigationGlow.this,
+                        parentView.getResources().getDisplayMetrics().density, webContents);
     }
 
     @Override
     public void prepare(float startX, float startY) {
-        nativePrepare(mNativeNavigationGlow, startX, startY, mParentView.getWidth(),
+        CompositorNavigationGlowJni.get().prepare(mNativeNavigationGlow,
+                CompositorNavigationGlow.this, startX, startY, mParentView.getWidth(),
                 mParentView.getHeight());
     }
 
@@ -39,35 +42,42 @@
     public void onScroll(float xDelta) {
         if (mNativeNavigationGlow == 0) return;
         mAccumulatedScroll += xDelta;
-        nativeOnOverscroll(mNativeNavigationGlow, mAccumulatedScroll, xDelta);
+        CompositorNavigationGlowJni.get().onOverscroll(
+                mNativeNavigationGlow, CompositorNavigationGlow.this, mAccumulatedScroll, xDelta);
     }
 
     @Override
     public void release() {
         if (mNativeNavigationGlow == 0) return;
-        nativeOnOverscroll(mNativeNavigationGlow, 0, 0);
+        CompositorNavigationGlowJni.get().onOverscroll(
+                mNativeNavigationGlow, CompositorNavigationGlow.this, 0, 0);
         mAccumulatedScroll = 0;
     }
 
     @Override
     public void reset() {
         if (mNativeNavigationGlow == 0) return;
-        nativeOnReset(mNativeNavigationGlow);
+        CompositorNavigationGlowJni.get().onReset(
+                mNativeNavigationGlow, CompositorNavigationGlow.this);
         mAccumulatedScroll = 0;
     }
 
     @Override
     public void destroy() {
         if (mNativeNavigationGlow == 0) return;
-        nativeDestroy(mNativeNavigationGlow);
+        CompositorNavigationGlowJni.get().destroy(
+                mNativeNavigationGlow, CompositorNavigationGlow.this);
         mNativeNavigationGlow = 0;
     }
 
-    private native long nativeInit(float dipScale, WebContents webContents);
-    private native void nativePrepare(
-            long nativeNavigationGlow, float startX, float startY, int width, int height);
-    private native void nativeOnOverscroll(
-            long nativeNavigationGlow, float accumulatedScroll, float delta);
-    private native void nativeOnReset(long nativeNavigationGlow);
-    private native void nativeDestroy(long nativeNavigationGlow);
+    @NativeMethods
+    interface Natives {
+        long init(CompositorNavigationGlow caller, float dipScale, WebContents webContents);
+        void prepare(long nativeNavigationGlow, CompositorNavigationGlow caller, float startX,
+                float startY, int width, int height);
+        void onOverscroll(long nativeNavigationGlow, CompositorNavigationGlow caller,
+                float accumulatedScroll, float delta);
+        void onReset(long nativeNavigationGlow, CompositorNavigationGlow caller);
+        void destroy(long nativeNavigationGlow, CompositorNavigationGlow caller);
+    }
 }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/history/BrowsingHistoryBridge.java b/chrome/android/java/src/org/chromium/chrome/browser/history/BrowsingHistoryBridge.java
index 5bc75ec..8676fc9 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/history/BrowsingHistoryBridge.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/history/BrowsingHistoryBridge.java
@@ -5,6 +5,7 @@
 package org.chromium.chrome.browser.history;
 
 import org.chromium.base.annotations.CalledByNative;
+import org.chromium.base.annotations.NativeMethods;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -17,7 +18,8 @@
     private boolean mHasPendingRemoveRequest;
 
     public BrowsingHistoryBridge(boolean isIncognito) {
-        mNativeHistoryBridge = nativeInit(isIncognito);
+        mNativeHistoryBridge =
+                BrowsingHistoryBridgeJni.get().init(BrowsingHistoryBridge.this, isIncognito);
     }
 
     @Override
@@ -28,24 +30,28 @@
     @Override
     public void destroy() {
         if (mNativeHistoryBridge != 0) {
-            nativeDestroy(mNativeHistoryBridge);
+            BrowsingHistoryBridgeJni.get().destroy(
+                    mNativeHistoryBridge, BrowsingHistoryBridge.this);
             mNativeHistoryBridge = 0;
         }
     }
 
     @Override
     public void queryHistory(String query) {
-        nativeQueryHistory(mNativeHistoryBridge, new ArrayList<HistoryItem>(), query);
+        BrowsingHistoryBridgeJni.get().queryHistory(mNativeHistoryBridge,
+                BrowsingHistoryBridge.this, new ArrayList<HistoryItem>(), query);
     }
 
     @Override
     public void queryHistoryContinuation() {
-        nativeQueryHistoryContinuation(mNativeHistoryBridge, new ArrayList<HistoryItem>());
+        BrowsingHistoryBridgeJni.get().queryHistoryContinuation(
+                mNativeHistoryBridge, BrowsingHistoryBridge.this, new ArrayList<HistoryItem>());
     }
 
     @Override
     public void markItemForRemoval(HistoryItem item) {
-        nativeMarkItemForRemoval(mNativeHistoryBridge, item.getUrl(), item.getNativeTimestamps());
+        BrowsingHistoryBridgeJni.get().markItemForRemoval(mNativeHistoryBridge,
+                BrowsingHistoryBridge.this, item.getUrl(), item.getNativeTimestamps());
     }
 
     @Override
@@ -58,7 +64,8 @@
         }
         mRemovingItems = true;
         mHasPendingRemoveRequest = false;
-        nativeRemoveItems(mNativeHistoryBridge);
+        BrowsingHistoryBridgeJni.get().removeItems(
+                mNativeHistoryBridge, BrowsingHistoryBridge.this);
     }
 
     @CalledByNative
@@ -99,13 +106,16 @@
         }
     }
 
-    private native long nativeInit(boolean isIncognito);
-    private native void nativeDestroy(long nativeBrowsingHistoryBridge);
-    private native void nativeQueryHistory(
-            long nativeBrowsingHistoryBridge, List<HistoryItem> historyItems, String query);
-    private native void nativeQueryHistoryContinuation(
-            long nativeBrowsingHistoryBridge, List<HistoryItem> historyItems);
-    private native void nativeMarkItemForRemoval(
-            long nativeBrowsingHistoryBridge, String url, long[] nativeTimestamps);
-    private native void nativeRemoveItems(long nativeBrowsingHistoryBridge);
+    @NativeMethods
+    interface Natives {
+        long init(BrowsingHistoryBridge caller, boolean isIncognito);
+        void destroy(long nativeBrowsingHistoryBridge, BrowsingHistoryBridge caller);
+        void queryHistory(long nativeBrowsingHistoryBridge, BrowsingHistoryBridge caller,
+                List<HistoryItem> historyItems, String query);
+        void queryHistoryContinuation(long nativeBrowsingHistoryBridge,
+                BrowsingHistoryBridge caller, List<HistoryItem> historyItems);
+        void markItemForRemoval(long nativeBrowsingHistoryBridge, BrowsingHistoryBridge caller,
+                String url, long[] nativeTimestamps);
+        void removeItems(long nativeBrowsingHistoryBridge, BrowsingHistoryBridge caller);
+    }
 }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/history/HistoryDeletionInfo.java b/chrome/android/java/src/org/chromium/chrome/browser/history/HistoryDeletionInfo.java
index 46889654..b71abd1 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/history/HistoryDeletionInfo.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/history/HistoryDeletionInfo.java
@@ -5,6 +5,7 @@
 package org.chromium.chrome.browser.history;
 
 import org.chromium.base.annotations.CalledByNative;
+import org.chromium.base.annotations.NativeMethods;
 
 /**
  * Android wrapper of the native history::DeletionInfo class. Any class that uses this needs to
@@ -27,40 +28,43 @@
      * @return An array of URLs that were deleted.
      */
     public String[] getDeletedURLs() {
-        return nativeGetDeletedURLs(mHistoryDeletionInfoPtr);
+        return HistoryDeletionInfoJni.get().getDeletedURLs(mHistoryDeletionInfoPtr);
     }
 
     /**
      * @return True if the time range is valid.
      */
     public boolean isTimeRangeValid() {
-        return nativeIsTimeRangeValid(mHistoryDeletionInfoPtr);
+        return HistoryDeletionInfoJni.get().isTimeRangeValid(mHistoryDeletionInfoPtr);
     }
 
     /**
      * @return True if the time range is for all time.
      */
     public boolean isTimeRangeForAllTime() {
-        return nativeIsTimeRangeForAllTime(mHistoryDeletionInfoPtr);
+        return HistoryDeletionInfoJni.get().isTimeRangeForAllTime(mHistoryDeletionInfoPtr);
     }
 
     /**
      * @return The beginning of the time range if the time range is valid.
      */
     public long getTimeRangeBegin() {
-        return nativeGetTimeRangeBegin(mHistoryDeletionInfoPtr);
+        return HistoryDeletionInfoJni.get().getTimeRangeBegin(mHistoryDeletionInfoPtr);
     }
 
     /**
      * @return The end of the time range if the time range is valid.
      */
     public long getTimeRangeEnd() {
-        return nativeGetTimeRangeBegin(mHistoryDeletionInfoPtr);
+        return HistoryDeletionInfoJni.get().getTimeRangeBegin(mHistoryDeletionInfoPtr);
     }
 
-    private static native String[] nativeGetDeletedURLs(long historyDeletionInfoPtr);
-    private static native boolean nativeIsTimeRangeValid(long historyDeletionInfoPtr);
-    private static native boolean nativeIsTimeRangeForAllTime(long historyDeletionInfoPtr);
-    private static native long nativeGetTimeRangeBegin(long historyDeletionInfoPtr);
-    private static native long nativeGetTimeRangeEnd(long historyDeletionInfoPtr);
+    @NativeMethods
+    interface Natives {
+        String[] getDeletedURLs(long historyDeletionInfoPtr);
+        boolean isTimeRangeValid(long historyDeletionInfoPtr);
+        boolean isTimeRangeForAllTime(long historyDeletionInfoPtr);
+        long getTimeRangeBegin(long historyDeletionInfoPtr);
+        long getTimeRangeEnd(long historyDeletionInfoPtr);
+    }
 }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/historyreport/HistoryReportJniBridge.java b/chrome/android/java/src/org/chromium/chrome/browser/historyreport/HistoryReportJniBridge.java
index eb93626..6d6fc76 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/historyreport/HistoryReportJniBridge.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/historyreport/HistoryReportJniBridge.java
@@ -10,6 +10,7 @@
 import org.chromium.base.VisibleForTesting;
 import org.chromium.base.annotations.CalledByNative;
 import org.chromium.base.annotations.JNINamespace;
+import org.chromium.base.annotations.NativeMethods;
 import org.chromium.base.task.PostTask;
 import org.chromium.content_public.browser.UiThreadTaskTraits;
 
@@ -34,8 +35,10 @@
         if (observer == null) return false;
         if (mNativeHistoryReportJniBridge != 0) return true;
         mDataChangeObserver = observer;
-        PostTask.runSynchronously(UiThreadTaskTraits.DEFAULT,
-                () -> { mNativeHistoryReportJniBridge = nativeInit(); });
+        PostTask.runSynchronously(UiThreadTaskTraits.DEFAULT, () -> {
+            mNativeHistoryReportJniBridge =
+                    HistoryReportJniBridgeJni.get().init(HistoryReportJniBridge.this);
+        });
         if (mNativeHistoryReportJniBridge == 0) {
             Log.w(TAG, "JNI bridge initialization unsuccessful.");
             return false;
@@ -64,7 +67,8 @@
             return new DeltaFileEntry[0];
         }
         Log.d(TAG, "query %d %d", lastSeqNo, limit);
-        DeltaFileEntry[] result = nativeQuery(mNativeHistoryReportJniBridge, lastSeqNo, limit);
+        DeltaFileEntry[] result = HistoryReportJniBridgeJni.get().query(
+                mNativeHistoryReportJniBridge, HistoryReportJniBridge.this, lastSeqNo, limit);
         return result;
     }
 
@@ -76,7 +80,8 @@
             return -1;
         }
         Log.d(TAG, "trimDeltaFile %d", seqNoLowerBound);
-        return nativeTrimDeltaFile(mNativeHistoryReportJniBridge, seqNoLowerBound);
+        return HistoryReportJniBridgeJni.get().trimDeltaFile(
+                mNativeHistoryReportJniBridge, HistoryReportJniBridge.this, seqNoLowerBound);
     }
 
     @Override
@@ -87,7 +92,8 @@
             return new UsageReport[0];
         }
         Log.d(TAG, "getUsageReportsBatch %d", batchSize);
-        return nativeGetUsageReportsBatch(mNativeHistoryReportJniBridge, batchSize);
+        return HistoryReportJniBridgeJni.get().getUsageReportsBatch(
+                mNativeHistoryReportJniBridge, HistoryReportJniBridge.this, batchSize);
     }
 
     @Override
@@ -101,7 +107,8 @@
         for (int i = 0; i < reports.length; ++i) {
             reportIds[i] = reports[i].reportId;
         }
-        nativeRemoveUsageReports(mNativeHistoryReportJniBridge, reportIds);
+        HistoryReportJniBridgeJni.get().removeUsageReports(
+                mNativeHistoryReportJniBridge, HistoryReportJniBridge.this, reportIds);
     }
 
     @Override
@@ -111,7 +118,8 @@
             Log.w(TAG, "clearUsageReports when JNI bridge not initialized");
             return;
         }
-        nativeClearUsageReports(mNativeHistoryReportJniBridge);
+        HistoryReportJniBridgeJni.get().clearUsageReports(
+                mNativeHistoryReportJniBridge, HistoryReportJniBridge.this);
     }
 
     @Override
@@ -121,7 +129,8 @@
             Log.w(TAG, "addHistoricVisitsToUsageReportsBuffer when JNI bridge not initialized");
             return false;
         }
-        return nativeAddHistoricVisitsToUsageReportsBuffer(mNativeHistoryReportJniBridge);
+        return HistoryReportJniBridgeJni.get().addHistoricVisitsToUsageReportsBuffer(
+                mNativeHistoryReportJniBridge, HistoryReportJniBridge.this);
     }
 
     @Override
@@ -129,7 +138,9 @@
         writer.append("\nHistoryReportJniBridge [").append("started: " + mStarted.get())
                 .append(", initialized: " + isInitialized());
         if (isInitialized()) {
-            writer.append(", " + nativeDump(mNativeHistoryReportJniBridge));
+            writer.append(", "
+                    + HistoryReportJniBridgeJni.get().dump(
+                            mNativeHistoryReportJniBridge, HistoryReportJniBridge.this));
         }
         writer.append("]");
     }
@@ -180,17 +191,20 @@
         mDataChangeObserver.stopReportingTask();
     }
 
-    private native long nativeInit();
-    private native long nativeTrimDeltaFile(long nativeHistoryReportJniBridge,
-            long seqNoLowerBound);
-    private native DeltaFileEntry[] nativeQuery(long nativeHistoryReportJniBridge, long lastSeqNo,
-            int limit);
-    private native UsageReport[] nativeGetUsageReportsBatch(long nativeHistoryReportJniBridge,
-            int batchSize);
-    private native void nativeRemoveUsageReports(long nativeHistoryReportJniBridge,
-            String[] reportIds);
-    private native void nativeClearUsageReports(long nativeHistoryReportJniBridge);
-    private native boolean nativeAddHistoricVisitsToUsageReportsBuffer(
-            long nativeHistoryReportJniBridge);
-    private native String nativeDump(long nativeHistoryReportJniBridge);
+    @NativeMethods
+    interface Natives {
+        long init(HistoryReportJniBridge caller);
+        long trimDeltaFile(long nativeHistoryReportJniBridge, HistoryReportJniBridge caller,
+                long seqNoLowerBound);
+        DeltaFileEntry[] query(long nativeHistoryReportJniBridge, HistoryReportJniBridge caller,
+                long lastSeqNo, int limit);
+        UsageReport[] getUsageReportsBatch(
+                long nativeHistoryReportJniBridge, HistoryReportJniBridge caller, int batchSize);
+        void removeUsageReports(long nativeHistoryReportJniBridge, HistoryReportJniBridge caller,
+                String[] reportIds);
+        void clearUsageReports(long nativeHistoryReportJniBridge, HistoryReportJniBridge caller);
+        boolean addHistoricVisitsToUsageReportsBuffer(
+                long nativeHistoryReportJniBridge, HistoryReportJniBridge caller);
+        String dump(long nativeHistoryReportJniBridge, HistoryReportJniBridge caller);
+    }
 }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/infobar/AutofillSaveCardInfoBar.java b/chrome/android/java/src/org/chromium/chrome/browser/infobar/AutofillSaveCardInfoBar.java
index b64f9d04c..731caced 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/infobar/AutofillSaveCardInfoBar.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/infobar/AutofillSaveCardInfoBar.java
@@ -12,6 +12,7 @@
 import android.view.View;
 
 import org.chromium.base.annotations.CalledByNative;
+import org.chromium.base.annotations.NativeMethods;
 import org.chromium.chrome.R;
 import org.chromium.chrome.browser.ResourceId;
 import org.chromium.ui.UiUtils;
@@ -214,7 +215,9 @@
                 text.setSpan(new ClickableSpan() {
                     @Override
                     public void onClick(View view) {
-                        nativeOnLegalMessageLinkClicked(mNativeAutofillSaveCardInfoBar, link.url);
+                        AutofillSaveCardInfoBarJni.get().onLegalMessageLinkClicked(
+                                mNativeAutofillSaveCardInfoBar, AutofillSaveCardInfoBar.this,
+                                link.url);
                     }
                 }, link.start, link.end, Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
             }
@@ -222,6 +225,9 @@
         }
     }
 
-    private native void nativeOnLegalMessageLinkClicked(
-            long nativeAutofillSaveCardInfoBar, String url);
+    @NativeMethods
+    interface Natives {
+        void onLegalMessageLinkClicked(
+                long nativeAutofillSaveCardInfoBar, AutofillSaveCardInfoBar caller, String url);
+    }
 }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/infobar/DataReductionPromoInfoBarDelegate.java b/chrome/android/java/src/org/chromium/chrome/browser/infobar/DataReductionPromoInfoBarDelegate.java
index f8fe3de3..78da8e27 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/infobar/DataReductionPromoInfoBarDelegate.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/infobar/DataReductionPromoInfoBarDelegate.java
@@ -8,6 +8,7 @@
 
 import org.chromium.base.ContextUtils;
 import org.chromium.base.annotations.CalledByNative;
+import org.chromium.base.annotations.NativeMethods;
 import org.chromium.chrome.R;
 import org.chromium.chrome.browser.datareduction.DataReductionProxyUma;
 import org.chromium.chrome.browser.net.spdyproxy.DataReductionProxySettings;
@@ -24,7 +25,7 @@
      * @param webContents The {@link WebContents} in which to launch the {@link InfoBar}.
      */
     static void launch(WebContents webContents) {
-        nativeLaunch(webContents);
+        DataReductionPromoInfoBarDelegateJni.get().launch(webContents);
     }
 
     private DataReductionPromoInfoBarDelegate() {
@@ -67,5 +68,8 @@
                 .dataReductionProxyUIAction(DataReductionProxyUma.ACTION_INFOBAR_DISMISSED);
     }
 
-    private static native void nativeLaunch(WebContents webContents);
+    @NativeMethods
+    interface Natives {
+        void launch(WebContents webContents);
+    }
 }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/infobar/DownloadProgressInfoBar.java b/chrome/android/java/src/org/chromium/chrome/browser/infobar/DownloadProgressInfoBar.java
index 719d21f7..544d6c12 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/infobar/DownloadProgressInfoBar.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/infobar/DownloadProgressInfoBar.java
@@ -14,6 +14,7 @@
 import android.widget.TextView;
 
 import org.chromium.base.annotations.CalledByNative;
+import org.chromium.base.annotations.NativeMethods;
 import org.chromium.base.task.PostTask;
 import org.chromium.chrome.R;
 import org.chromium.chrome.browser.download.DownloadInfoBarController;
@@ -90,7 +91,10 @@
      * @return The tab associated with this infobar.
      */
     public Tab getTab() {
-        return getNativeInfoBarPtr() == 0 ? null : nativeGetTab(getNativeInfoBarPtr());
+        return getNativeInfoBarPtr() == 0
+                ? null
+                : DownloadProgressInfoBarJni.get().getTab(
+                        getNativeInfoBarPtr(), DownloadProgressInfoBar.this);
     }
 
     /**
@@ -181,7 +185,7 @@
      */
     public static void createInfoBar(
             Client client, Tab tab, DownloadInfoBarController.DownloadProgressInfoBarData info) {
-        nativeCreate(client, tab, info);
+        DownloadProgressInfoBarJni.get().create(client, tab, info);
     }
 
     /**
@@ -199,8 +203,10 @@
         return new DownloadProgressInfoBar(client, info);
     }
 
-    private static native void nativeCreate(
-            Client client, Tab tab, DownloadInfoBarController.DownloadProgressInfoBarData info);
-
-    private native Tab nativeGetTab(long nativeDownloadProgressInfoBar);
+    @NativeMethods
+    interface Natives {
+        void create(
+                Client client, Tab tab, DownloadInfoBarController.DownloadProgressInfoBarData info);
+        Tab getTab(long nativeDownloadProgressInfoBar, DownloadProgressInfoBar caller);
+    }
 }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/infobar/InfoBar.java b/chrome/android/java/src/org/chromium/chrome/browser/infobar/InfoBar.java
index af5ea02..2993da15 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/infobar/InfoBar.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/infobar/InfoBar.java
@@ -16,6 +16,7 @@
 
 import org.chromium.base.ApiCompatibilityUtils;
 import org.chromium.base.annotations.CalledByNative;
+import org.chromium.base.annotations.NativeMethods;
 import org.chromium.chrome.R;
 import org.chromium.chrome.browser.infobar.InfoBarContainerLayout.Item.InfoBarPriority;
 import org.chromium.chrome.browser.snackbar.SnackbarManager;
@@ -247,7 +248,7 @@
     @InfoBarIdentifier
     public int getInfoBarIdentifier() {
         if (mNativeInfoBarPtr == 0) return InfoBarIdentifier.INVALID;
-        return nativeGetInfoBarIdentifier(mNativeInfoBarPtr);
+        return InfoBarJni.get().getInfoBarIdentifier(mNativeInfoBarPtr, InfoBar.this);
     }
 
     /**
@@ -315,7 +316,7 @@
 
     @Override
     public void onLinkClicked() {
-        if (mNativeInfoBarPtr != 0) nativeOnLinkClicked(mNativeInfoBarPtr);
+        if (mNativeInfoBarPtr != 0) InfoBarJni.get().onLinkClicked(mNativeInfoBarPtr, InfoBar.this);
     }
 
     /**
@@ -323,13 +324,15 @@
      * @param action The type of action defined in {@link ActionType} in this class.
      */
     protected void onButtonClicked(@ActionType int action) {
-        if (mNativeInfoBarPtr != 0) nativeOnButtonClicked(mNativeInfoBarPtr, action);
+        if (mNativeInfoBarPtr != 0) {
+            InfoBarJni.get().onButtonClicked(mNativeInfoBarPtr, InfoBar.this, action);
+        }
     }
 
     @Override
     public void onCloseButtonClicked() {
         if (mNativeInfoBarPtr != 0 && !mIsDismissed) {
-            nativeOnCloseButtonClicked(mNativeInfoBarPtr);
+            InfoBarJni.get().onCloseButtonClicked(mNativeInfoBarPtr, InfoBar.this);
         }
     }
 
@@ -338,8 +341,12 @@
     }
 
     @InfoBarIdentifier
-    private native int nativeGetInfoBarIdentifier(long nativeInfoBarAndroid);
-    private native void nativeOnLinkClicked(long nativeInfoBarAndroid);
-    private native void nativeOnButtonClicked(long nativeInfoBarAndroid, int action);
-    private native void nativeOnCloseButtonClicked(long nativeInfoBarAndroid);
+
+    @NativeMethods
+    interface Natives {
+        int getInfoBarIdentifier(long nativeInfoBarAndroid, InfoBar caller);
+        void onLinkClicked(long nativeInfoBarAndroid, InfoBar caller);
+        void onButtonClicked(long nativeInfoBarAndroid, InfoBar caller, int action);
+        void onCloseButtonClicked(long nativeInfoBarAndroid, InfoBar caller);
+    }
 }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/infobar/InfoBarContainer.java b/chrome/android/java/src/org/chromium/chrome/browser/infobar/InfoBarContainer.java
index e16cdd25..7219cfe2 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/infobar/InfoBarContainer.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/infobar/InfoBarContainer.java
@@ -12,6 +12,7 @@
 import org.chromium.base.UserData;
 import org.chromium.base.VisibleForTesting;
 import org.chromium.base.annotations.CalledByNative;
+import org.chromium.base.annotations.NativeMethods;
 import org.chromium.chrome.R;
 import org.chromium.chrome.browser.ChromeActivity;
 import org.chromium.chrome.browser.infobar.InfoBarContainerLayout.Item;
@@ -174,7 +175,7 @@
     /** The tab that hosts this infobar container. */
     private final Tab mTab;
 
-    /** Native InfoBarContainer pointer which will be set by nativeInit(). */
+    /** Native InfoBarContainer pointer which will be set by InfoBarContainerJni.get().init(). */
     private long mNativeInfoBarContainer;
 
     /** True when this container has been emptied and its native counterpart has been destroyed. */
@@ -230,7 +231,7 @@
 
         // Chromium's InfoBarContainer may add an InfoBar immediately during this initialization
         // call, so make sure everything in the InfoBarContainer is completely ready beforehand.
-        mNativeInfoBarContainer = nativeInit();
+        mNativeInfoBarContainer = InfoBarContainerJni.get().init(InfoBarContainer.this);
     }
 
     public SnackbarManager getSnackbarManager() {
@@ -403,7 +404,7 @@
         destroyContainerView();
         mTab.removeObserver(mTabObserver);
         if (mNativeInfoBarContainer != 0) {
-            nativeDestroy(mNativeInfoBarContainer);
+            InfoBarContainerJni.get().destroy(mNativeInfoBarContainer, InfoBarContainer.this);
             mNativeInfoBarContainer = 0;
         }
         mDestroyed = true;
@@ -480,7 +481,8 @@
         if (webContents != null && webContents != mInfoBarContainerView.getWebContents()) {
             mInfoBarContainerView.setWebContents(webContents);
             if (mNativeInfoBarContainer != 0) {
-                nativeSetWebContents(mNativeInfoBarContainer, webContents);
+                InfoBarContainerJni.get().setWebContents(
+                        mNativeInfoBarContainer, InfoBarContainer.this, webContents);
             }
         }
 
@@ -544,7 +546,10 @@
 
         if (mInfoBarContainerView != null) {
             mInfoBarContainerView.setWebContents(null);
-            if (mNativeInfoBarContainer != 0) nativeSetWebContents(mNativeInfoBarContainer, null);
+            if (mNativeInfoBarContainer != 0) {
+                InfoBarContainerJni.get().setWebContents(
+                        mNativeInfoBarContainer, InfoBarContainer.this, null);
+            }
             mInfoBarContainerView.destroy();
             mInfoBarContainerView = null;
         }
@@ -588,8 +593,11 @@
         return mInfoBarContainerView;
     }
 
-    private native long nativeInit();
-    private native void nativeSetWebContents(
-            long nativeInfoBarContainerAndroid, WebContents webContents);
-    private native void nativeDestroy(long nativeInfoBarContainerAndroid);
+    @NativeMethods
+    interface Natives {
+        long init(InfoBarContainer caller);
+        void setWebContents(long nativeInfoBarContainerAndroid, InfoBarContainer caller,
+                WebContents webContents);
+        void destroy(long nativeInfoBarContainerAndroid, InfoBarContainer caller);
+    }
 }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/infobar/InstallableAmbientBadgeInfoBar.java b/chrome/android/java/src/org/chromium/chrome/browser/infobar/InstallableAmbientBadgeInfoBar.java
index cd3f193..101e0d22 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/infobar/InstallableAmbientBadgeInfoBar.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/infobar/InstallableAmbientBadgeInfoBar.java
@@ -15,6 +15,7 @@
 
 import org.chromium.base.ApiCompatibilityUtils;
 import org.chromium.base.annotations.CalledByNative;
+import org.chromium.base.annotations.NativeMethods;
 import org.chromium.chrome.R;
 import org.chromium.chrome.browser.ResourceId;
 import org.chromium.chrome.browser.widget.accessibility.AccessibleTextView;
@@ -73,7 +74,8 @@
     public void onClick(View v) {
         if (getNativeInfoBarPtr() == 0 || mIsHiding) return;
 
-        nativeAddToHomescreen(getNativeInfoBarPtr());
+        InstallableAmbientBadgeInfoBarJni.get().addToHomescreen(
+                getNativeInfoBarPtr(), InstallableAmbientBadgeInfoBar.this);
     }
 
     /**
@@ -89,5 +91,9 @@
         mUrl = url;
     }
 
-    private native void nativeAddToHomescreen(long nativeInstallableAmbientBadgeInfoBar);
+    @NativeMethods
+    interface Natives {
+        void addToHomescreen(
+                long nativeInstallableAmbientBadgeInfoBar, InstallableAmbientBadgeInfoBar caller);
+    }
 }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/infobar/InstantAppsInfoBarDelegate.java b/chrome/android/java/src/org/chromium/chrome/browser/infobar/InstantAppsInfoBarDelegate.java
index a0a5f26f..397ed2a 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/infobar/InstantAppsInfoBarDelegate.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/infobar/InstantAppsInfoBarDelegate.java
@@ -5,6 +5,7 @@
 package org.chromium.chrome.browser.infobar;
 
 import org.chromium.base.annotations.CalledByNative;
+import org.chromium.base.annotations.NativeMethods;
 import org.chromium.chrome.browser.instantapps.InstantAppsBannerData;
 import org.chromium.chrome.browser.instantapps.InstantAppsHandler;
 import org.chromium.content_public.browser.WebContents;
@@ -18,7 +19,8 @@
     private InstantAppsBannerData mData;
 
     public static void launch(InstantAppsBannerData data) {
-        nativeLaunch(data.getWebContents(), data, data.getUrl(), data.isInstantAppDefault());
+        InstantAppsInfoBarDelegateJni.get().launch(
+                data.getWebContents(), data, data.getUrl(), data.isInstantAppDefault());
     }
 
     @CalledByNative
@@ -33,6 +35,9 @@
         InstantAppsHandler.getInstance().launchFromBanner(data);
     }
 
-    private static native void nativeLaunch(WebContents webContents, InstantAppsBannerData data,
-            String url, boolean instantAppIsDefault);
+    @NativeMethods
+    interface Natives {
+        void launch(WebContents webContents, InstantAppsBannerData data, String url,
+                boolean instantAppIsDefault);
+    }
 }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/infobar/PermissionUpdateInfoBarDelegate.java b/chrome/android/java/src/org/chromium/chrome/browser/infobar/PermissionUpdateInfoBarDelegate.java
index 9e7bc38..60f505a9 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/infobar/PermissionUpdateInfoBarDelegate.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/infobar/PermissionUpdateInfoBarDelegate.java
@@ -14,6 +14,7 @@
 import org.chromium.base.ApplicationStatus.ActivityStateListener;
 import org.chromium.base.ContextUtils;
 import org.chromium.base.annotations.CalledByNative;
+import org.chromium.base.annotations.NativeMethods;
 import org.chromium.chrome.browser.metrics.WebApkUma;
 import org.chromium.chrome.browser.webapps.WebApkActivity;
 import org.chromium.content_public.browser.WebContents;
@@ -55,7 +56,8 @@
     private void requestPermissions() {
         WindowAndroid windowAndroid = mWebContents.getTopLevelNativeWindow();
         if (windowAndroid == null) {
-            nativeOnPermissionResult(mNativePtr, false);
+            PermissionUpdateInfoBarDelegateJni.get().onPermissionResult(
+                    mNativePtr, PermissionUpdateInfoBarDelegate.this, false);
             return;
         }
 
@@ -74,7 +76,8 @@
             }
         } else {
             if (activity == null) {
-                nativeOnPermissionResult(mNativePtr, false);
+                PermissionUpdateInfoBarDelegateJni.get().onPermissionResult(
+                        mNativePtr, PermissionUpdateInfoBarDelegate.this, false);
                 return;
             }
 
@@ -85,7 +88,8 @@
                         ApplicationStatus.unregisterActivityStateListener(this);
                         mActivityStateListener = null;
 
-                        nativeOnPermissionResult(mNativePtr, false);
+                        PermissionUpdateInfoBarDelegateJni.get().onPermissionResult(
+                                mNativePtr, PermissionUpdateInfoBarDelegate.this, false);
                     } else if (newState == ActivityState.RESUMED) {
                         ApplicationStatus.unregisterActivityStateListener(this);
                         mActivityStateListener = null;
@@ -119,9 +123,15 @@
                 hasAllPermissions &= windowAndroid.hasPermission(mAndroidPermisisons[i]);
             }
         }
-        if (mNativePtr != 0) nativeOnPermissionResult(mNativePtr, hasAllPermissions);
+        if (mNativePtr != 0) {
+            PermissionUpdateInfoBarDelegateJni.get().onPermissionResult(
+                    mNativePtr, PermissionUpdateInfoBarDelegate.this, hasAllPermissions);
+        }
     }
 
-    private native void nativeOnPermissionResult(
-            long nativePermissionUpdateInfoBarDelegate, boolean allPermissionsGranted);
+    @NativeMethods
+    interface Natives {
+        void onPermissionResult(long nativePermissionUpdateInfoBarDelegate,
+                PermissionUpdateInfoBarDelegate caller, boolean allPermissionsGranted);
+    }
 }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/infobar/ReaderModeInfoBar.java b/chrome/android/java/src/org/chromium/chrome/browser/infobar/ReaderModeInfoBar.java
index 42edbe1..e5036a28 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/infobar/ReaderModeInfoBar.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/infobar/ReaderModeInfoBar.java
@@ -14,6 +14,7 @@
 
 import org.chromium.base.ApiCompatibilityUtils;
 import org.chromium.base.annotations.CalledByNative;
+import org.chromium.base.annotations.NativeMethods;
 import org.chromium.chrome.R;
 import org.chromium.chrome.browser.compositor.bottombar.OverlayPanel;
 import org.chromium.chrome.browser.compositor.bottombar.OverlayPanel.StateChangeReason;
@@ -95,7 +96,7 @@
      * @param tab The tab that the {@link InfoBar} should be shown in.
      */
     public static void showReaderModeInfoBar(Tab tab) {
-        nativeCreate(tab);
+        ReaderModeInfoBarJni.get().create(tab);
     }
 
     /**
@@ -103,7 +104,7 @@
      */
     private ReaderModeManager getReaderModeManager() {
         if (getNativeInfoBarPtr() == 0) return null;
-        Tab tab = nativeGetTab(getNativeInfoBarPtr());
+        Tab tab = ReaderModeInfoBarJni.get().getTab(getNativeInfoBarPtr(), ReaderModeInfoBar.this);
 
         if (tab == null || tab.getActivity() == null) return null;
         return tab.getActivity().getReaderModeManager();
@@ -117,6 +118,9 @@
         return new ReaderModeInfoBar();
     }
 
-    private static native void nativeCreate(Tab tab);
-    private native Tab nativeGetTab(long nativeReaderModeInfoBar);
+    @NativeMethods
+    interface Natives {
+        void create(Tab tab);
+        Tab getTab(long nativeReaderModeInfoBar, ReaderModeInfoBar caller);
+    }
 }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/infobar/SimpleConfirmInfoBarBuilder.java b/chrome/android/java/src/org/chromium/chrome/browser/infobar/SimpleConfirmInfoBarBuilder.java
index e92bbb4..4d1e470 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/infobar/SimpleConfirmInfoBarBuilder.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/infobar/SimpleConfirmInfoBarBuilder.java
@@ -9,6 +9,7 @@
 import android.graphics.BitmapFactory;
 
 import org.chromium.base.annotations.CalledByNative;
+import org.chromium.base.annotations.NativeMethods;
 import org.chromium.chrome.browser.tab.Tab;
 
 /**
@@ -81,8 +82,8 @@
         Activity activity = tab.getWindowAndroid().getActivity().get();
         Bitmap drawable = activity == null || drawableId == 0 ? null
                 : BitmapFactory.decodeResource(activity.getResources(), drawableId);
-        nativeCreate(tab, infobarTypeIdentifier, drawable, message, primaryText, secondaryText,
-                linkText, autoExpire, listener);
+        SimpleConfirmInfoBarBuilderJni.get().create(tab, infobarTypeIdentifier, drawable, message,
+                primaryText, secondaryText, linkText, autoExpire, listener);
     }
 
     @CalledByNative
@@ -100,8 +101,11 @@
         return listener == null ? false : listener.onInfoBarLinkClicked();
     }
 
-    private static native void nativeCreate(Tab tab, int infobarTypeIdentifier, Bitmap drawable,
-            String message, String primaryText, String secondaryText, String linkText,
-            boolean autoExpire, Object listener);
+    @NativeMethods
+    interface Natives {
+        void create(Tab tab, int infobarTypeIdentifier, Bitmap drawable, String message,
+                String primaryText, String secondaryText, String linkText, boolean autoExpire,
+                Object listener);
+    }
 }
 
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/infobar/SurveyInfoBar.java b/chrome/android/java/src/org/chromium/chrome/browser/infobar/SurveyInfoBar.java
index c873ae5a..b705b82 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/infobar/SurveyInfoBar.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/infobar/SurveyInfoBar.java
@@ -12,6 +12,7 @@
 
 import org.chromium.base.ApiCompatibilityUtils;
 import org.chromium.base.annotations.CalledByNative;
+import org.chromium.base.annotations.NativeMethods;
 import org.chromium.chrome.R;
 import org.chromium.chrome.browser.survey.SurveyController;
 import org.chromium.chrome.browser.tab.EmptyTabObserver;
@@ -55,7 +56,7 @@
     public static void showSurveyInfoBar(WebContents webContents, String siteId,
             boolean showAsBottomSheet, int displayLogoResId,
             SurveyInfoBarDelegate surveyInfoBarDelegate) {
-        nativeCreate(
+        SurveyInfoBarJni.get().create(
                 webContents, siteId, showAsBottomSheet, displayLogoResId, surveyInfoBarDelegate);
     }
 
@@ -85,7 +86,7 @@
 
     @Override
     protected void createCompactLayoutContent(InfoBarCompactLayout layout) {
-        Tab tab = nativeGetTab(getNativeInfoBarPtr());
+        Tab tab = SurveyInfoBarJni.get().getTab(getNativeInfoBarPtr(), SurveyInfoBar.this);
         tab.addObserver(new EmptyTabObserver() {
             @Override
             public void onHidden(Tab tab, @TabHidingType int type) {
@@ -178,8 +179,10 @@
         super.onCloseButtonClicked();
     }
 
-    private static native void nativeCreate(WebContents webContents, String siteId,
-            boolean showAsBottomSheet, int displayLogoResId,
-            SurveyInfoBarDelegate surveyInfoBarDelegate);
-    private native Tab nativeGetTab(long nativeSurveyInfoBar);
+    @NativeMethods
+    interface Natives {
+        void create(WebContents webContents, String siteId, boolean showAsBottomSheet,
+                int displayLogoResId, SurveyInfoBarDelegate surveyInfoBarDelegate);
+        Tab getTab(long nativeSurveyInfoBar, SurveyInfoBar caller);
+    }
 }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/infobar/TranslateCompactInfoBar.java b/chrome/android/java/src/org/chromium/chrome/browser/infobar/TranslateCompactInfoBar.java
index 6ccdf32..6a0b6a5c 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/infobar/TranslateCompactInfoBar.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/infobar/TranslateCompactInfoBar.java
@@ -14,6 +14,7 @@
 import android.widget.LinearLayout;
 
 import org.chromium.base.annotations.CalledByNative;
+import org.chromium.base.annotations.NativeMethods;
 import org.chromium.base.metrics.RecordHistogram;
 import org.chromium.chrome.R;
 import org.chromium.chrome.browser.infobar.translate.TranslateMenu;
@@ -260,7 +261,8 @@
     }
 
     private void initMenuHelper(int menuType) {
-        boolean isIncognito = nativeIsIncognito(mNativeTranslateInfoBarPtr);
+        boolean isIncognito = TranslateCompactInfoBarJni.get().isIncognito(
+                mNativeTranslateInfoBarPtr, TranslateCompactInfoBar.this);
         switch (menuType) {
             case TranslateMenu.MENU_OVERFLOW:
                 if (mOverflowMenuHelper == null) {
@@ -335,7 +337,8 @@
 
         // Check if we should trigger the auto "never translate" if infobar is closed explicitly.
         if (explicitly && mNativeTranslateInfoBarPtr != 0
-                && nativeShouldAutoNeverTranslate(mNativeTranslateInfoBarPtr, mMenuExpanded)) {
+                && TranslateCompactInfoBarJni.get().shouldAutoNeverTranslate(
+                        mNativeTranslateInfoBarPtr, TranslateCompactInfoBar.this, mMenuExpanded)) {
             createAndShowSnackbar(getContext().getString(R.string.translate_snackbar_language_never,
                                           mOptions.sourceLanguageName()),
                     Snackbar.UMA_TRANSLATE_NEVER, ACTION_AUTO_NEVER_LANGUAGE);
@@ -436,8 +439,8 @@
             recordInfobarAction(INFOBAR_MORE_LANGUAGES_TRANSLATE);
             recordInfobarLanguageData(
                     INFOBAR_HISTOGRAM_MORE_LANGUAGES_LANGUAGE, mOptions.targetLanguageCode());
-            nativeApplyStringTranslateOption(
-                    mNativeTranslateInfoBarPtr, TranslateOption.TARGET_CODE, code);
+            TranslateCompactInfoBarJni.get().applyStringTranslateOption(mNativeTranslateInfoBarPtr,
+                    TranslateCompactInfoBar.this, TranslateOption.TARGET_CODE, code);
             // Adjust UI.
             mTabLayout.replaceTabTitle(TARGET_TAB_INDEX, mOptions.getRepresentationFromCode(code));
             startTranslating(mTabLayout.getSelectedTabPosition());
@@ -456,8 +459,8 @@
         if (mNativeTranslateInfoBarPtr != 0 && mOptions.setSourceLanguage(code)) {
             recordInfobarLanguageData(
                     INFOBAR_HISTOGRAM_PAGE_NOT_IN_LANGUAGE, mOptions.sourceLanguageCode());
-            nativeApplyStringTranslateOption(
-                    mNativeTranslateInfoBarPtr, TranslateOption.SOURCE_CODE, code);
+            TranslateCompactInfoBarJni.get().applyStringTranslateOption(mNativeTranslateInfoBarPtr,
+                    TranslateCompactInfoBar.this, TranslateOption.SOURCE_CODE, code);
             // Adjust UI.
             mTabLayout.replaceTabTitle(SOURCE_TAB_INDEX, mOptions.getRepresentationFromCode(code));
             startTranslating(mTabLayout.getSelectedTabPosition());
@@ -582,14 +585,16 @@
             case ACTION_AUTO_NEVER_LANGUAGE:
                 mUserInteracted = true;
                 // After applying this option, the infobar will dismiss.
-                nativeApplyBoolTranslateOption(
-                        mNativeTranslateInfoBarPtr, TranslateOption.NEVER_TRANSLATE, true);
+                TranslateCompactInfoBarJni.get().applyBoolTranslateOption(
+                        mNativeTranslateInfoBarPtr, TranslateCompactInfoBar.this,
+                        TranslateOption.NEVER_TRANSLATE, true);
                 return;
             case ACTION_OVERFLOW_NEVER_SITE:
                 mUserInteracted = true;
                 // After applying this option, the infobar will dismiss.
-                nativeApplyBoolTranslateOption(
-                        mNativeTranslateInfoBarPtr, TranslateOption.NEVER_TRANSLATE_SITE, true);
+                TranslateCompactInfoBarJni.get().applyBoolTranslateOption(
+                        mNativeTranslateInfoBarPtr, TranslateCompactInfoBar.this,
+                        TranslateOption.NEVER_TRANSLATE_SITE, true);
                 return;
             default:
                 assert false : "Unsupported Menu Item Id, in handle post snackbar";
@@ -599,7 +604,8 @@
     private void toggleAlwaysTranslate() {
         mOptions.toggleAlwaysTranslateLanguageState(
                 !mOptions.getTranslateState(TranslateOptions.Type.ALWAYS_LANGUAGE));
-        nativeApplyBoolTranslateOption(mNativeTranslateInfoBarPtr, TranslateOption.ALWAYS_TRANSLATE,
+        TranslateCompactInfoBarJni.get().applyBoolTranslateOption(mNativeTranslateInfoBarPtr,
+                TranslateCompactInfoBar.this, TranslateOption.ALWAYS_TRANSLATE,
                 mOptions.getTranslateState(TranslateOptions.Type.ALWAYS_LANGUAGE));
     }
 
@@ -625,11 +631,14 @@
         return mParent != null ? mParent.getWidth() : 0;
     }
 
-    private native void nativeApplyStringTranslateOption(
-            long nativeTranslateCompactInfoBar, int option, String value);
-    private native void nativeApplyBoolTranslateOption(
-            long nativeTranslateCompactInfoBar, int option, boolean value);
-    private native boolean nativeShouldAutoNeverTranslate(
-            long nativeTranslateCompactInfoBar, boolean menuExpanded);
-    private native boolean nativeIsIncognito(long nativeTranslateCompactInfoBar);
+    @NativeMethods
+    interface Natives {
+        void applyStringTranslateOption(long nativeTranslateCompactInfoBar,
+                TranslateCompactInfoBar caller, int option, String value);
+        void applyBoolTranslateOption(long nativeTranslateCompactInfoBar,
+                TranslateCompactInfoBar caller, int option, boolean value);
+        boolean shouldAutoNeverTranslate(long nativeTranslateCompactInfoBar,
+                TranslateCompactInfoBar caller, boolean menuExpanded);
+        boolean isIncognito(long nativeTranslateCompactInfoBar, TranslateCompactInfoBar caller);
+    }
 }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/instantapps/InstantAppsSettings.java b/chrome/android/java/src/org/chromium/chrome/browser/instantapps/InstantAppsSettings.java
index dfc82c1..116138e 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/instantapps/InstantAppsSettings.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/instantapps/InstantAppsSettings.java
@@ -4,6 +4,7 @@
 
 package org.chromium.chrome.browser.instantapps;
 
+import org.chromium.base.annotations.NativeMethods;
 import org.chromium.content_public.browser.WebContents;
 
 /**
@@ -15,24 +16,27 @@
      * Check whether the instant app at the given url should be opened by default.
      */
     public static boolean isInstantAppDefault(WebContents webContents, String url) {
-        return nativeGetInstantAppDefault(webContents, url);
+        return InstantAppsSettingsJni.get().getInstantAppDefault(webContents, url);
     }
 
     /**
      * Remember that the instant app at the given url should be opened by default.
      */
     public static void setInstantAppDefault(WebContents webContents, String url) {
-        nativeSetInstantAppDefault(webContents, url);
+        InstantAppsSettingsJni.get().setInstantAppDefault(webContents, url);
     }
 
     /**
      * Check whether the banner promoting an instant app should be shown.
      */
     public static boolean shouldShowBanner(WebContents webContents, String url) {
-        return nativeShouldShowBanner(webContents, url);
+        return InstantAppsSettingsJni.get().shouldShowBanner(webContents, url);
     }
 
-    private static native boolean nativeGetInstantAppDefault(WebContents webContents, String url);
-    private static native void nativeSetInstantAppDefault(WebContents webContents, String url);
-    private static native boolean nativeShouldShowBanner(WebContents webContents, String url);
+    @NativeMethods
+    interface Natives {
+        boolean getInstantAppDefault(WebContents webContents, String url);
+        void setInstantAppDefault(WebContents webContents, String url);
+        boolean shouldShowBanner(WebContents webContents, String url);
+    }
 }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/invalidation/InvalidationServiceFactory.java b/chrome/android/java/src/org/chromium/chrome/browser/invalidation/InvalidationServiceFactory.java
index 6084bd72..b4e5b203 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/invalidation/InvalidationServiceFactory.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/invalidation/InvalidationServiceFactory.java
@@ -7,6 +7,7 @@
 import org.chromium.base.ThreadUtils;
 import org.chromium.base.VisibleForTesting;
 import org.chromium.base.annotations.JNINamespace;
+import org.chromium.base.annotations.NativeMethods;
 import org.chromium.chrome.browser.profiles.Profile;
 import org.chromium.components.invalidation.InvalidationService;
 
@@ -34,7 +35,7 @@
         ThreadUtils.assertOnUiThread();
         InvalidationService service = sServiceMap.get(profile);
         if (service == null) {
-            service = nativeGetForProfile(profile);
+            service = InvalidationServiceFactoryJni.get().getForProfile(profile);
             sServiceMap.put(profile, service);
         }
         return service;
@@ -42,9 +43,12 @@
 
     @VisibleForTesting
     public static InvalidationService getForTest() {
-        return nativeGetForTest();
+        return InvalidationServiceFactoryJni.get().getForTest();
     }
 
-    private static native InvalidationService nativeGetForProfile(Profile profile);
-    private static native InvalidationService nativeGetForTest();
+    @NativeMethods
+    interface Natives {
+        InvalidationService getForProfile(Profile profile);
+        InvalidationService getForTest();
+    }
 }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/jsdialog/JavascriptAppModalDialog.java b/chrome/android/java/src/org/chromium/chrome/browser/jsdialog/JavascriptAppModalDialog.java
index 7c6dd751..40fbd76 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/jsdialog/JavascriptAppModalDialog.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/jsdialog/JavascriptAppModalDialog.java
@@ -6,6 +6,7 @@
 
 import org.chromium.base.VisibleForTesting;
 import org.chromium.base.annotations.CalledByNative;
+import org.chromium.base.annotations.NativeMethods;
 import org.chromium.chrome.R;
 import org.chromium.chrome.browser.ChromeActivity;
 import org.chromium.ui.base.WindowAndroid;
@@ -63,7 +64,8 @@
         ChromeActivity activity = (ChromeActivity) window.getActivity().get();
         // If the activity has gone away, then just clean up the native pointer.
         if (activity == null) {
-            nativeDidCancelAppModalDialog(nativeDialogPointer, false);
+            JavascriptAppModalDialogJni.get().didCancelAppModalDialog(
+                    nativeDialogPointer, JavascriptAppModalDialog.this, false);
             return;
         }
 
@@ -81,14 +83,16 @@
     @Override
     protected void accept(String promptResult, boolean suppressDialogs) {
         if (mNativeDialogPointer != 0) {
-            nativeDidAcceptAppModalDialog(mNativeDialogPointer, promptResult, suppressDialogs);
+            JavascriptAppModalDialogJni.get().didAcceptAppModalDialog(mNativeDialogPointer,
+                    JavascriptAppModalDialog.this, promptResult, suppressDialogs);
         }
     }
 
     @Override
     protected void cancel(boolean buttonClicked, boolean suppressDialogs) {
         if (mNativeDialogPointer != 0) {
-            nativeDidCancelAppModalDialog(mNativeDialogPointer, suppressDialogs);
+            JavascriptAppModalDialogJni.get().didCancelAppModalDialog(
+                    mNativeDialogPointer, JavascriptAppModalDialog.this, suppressDialogs);
         }
     }
 
@@ -97,12 +101,15 @@
      */
     @VisibleForTesting
     public static JavascriptAppModalDialog getCurrentDialogForTest() {
-        return nativeGetCurrentModalDialog();
+        return JavascriptAppModalDialogJni.get().getCurrentModalDialog();
     }
 
-    private native void nativeDidAcceptAppModalDialog(
-            long nativeJavascriptAppModalDialogAndroid, String prompt, boolean suppress);
-    private native void nativeDidCancelAppModalDialog(
-            long nativeJavascriptAppModalDialogAndroid, boolean suppress);
-    private static native JavascriptAppModalDialog nativeGetCurrentModalDialog();
+    @NativeMethods
+    interface Natives {
+        void didAcceptAppModalDialog(long nativeJavascriptAppModalDialogAndroid,
+                JavascriptAppModalDialog caller, String prompt, boolean suppress);
+        void didCancelAppModalDialog(long nativeJavascriptAppModalDialogAndroid,
+                JavascriptAppModalDialog caller, boolean suppress);
+        JavascriptAppModalDialog getCurrentModalDialog();
+    }
 }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/jsdialog/JavascriptTabModalDialog.java b/chrome/android/java/src/org/chromium/chrome/browser/jsdialog/JavascriptTabModalDialog.java
index ef0a7db..af7e75f 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/jsdialog/JavascriptTabModalDialog.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/jsdialog/JavascriptTabModalDialog.java
@@ -5,6 +5,7 @@
 package org.chromium.chrome.browser.jsdialog;
 
 import org.chromium.base.annotations.CalledByNative;
+import org.chromium.base.annotations.NativeMethods;
 import org.chromium.chrome.R;
 import org.chromium.chrome.browser.ChromeActivity;
 import org.chromium.ui.base.WindowAndroid;
@@ -48,7 +49,8 @@
         ChromeActivity activity = (ChromeActivity) window.getActivity().get();
         // If the activity has gone away, then just clean up the native pointer.
         if (activity == null) {
-            nativeCancel(nativeDialogPointer, false);
+            JavascriptTabModalDialogJni.get().cancel(
+                    nativeDialogPointer, JavascriptTabModalDialog.this, false);
             return;
         }
 
@@ -75,7 +77,8 @@
     @Override
     protected void accept(String promptResult, boolean suppressDialogs) {
         if (mNativeDialogPointer == 0) return;
-        nativeAccept(mNativeDialogPointer, promptResult);
+        JavascriptTabModalDialogJni.get().accept(
+                mNativeDialogPointer, JavascriptTabModalDialog.this, promptResult);
     }
 
     /**
@@ -84,9 +87,15 @@
     @Override
     protected void cancel(boolean buttonClicked, boolean suppressDialogs) {
         if (mNativeDialogPointer == 0) return;
-        nativeCancel(mNativeDialogPointer, buttonClicked);
+        JavascriptTabModalDialogJni.get().cancel(
+                mNativeDialogPointer, JavascriptTabModalDialog.this, buttonClicked);
     }
 
-    private native void nativeAccept(long nativeJavaScriptDialogAndroid, String prompt);
-    private native void nativeCancel(long nativeJavaScriptDialogAndroid, boolean buttonClicked);
+    @NativeMethods
+    interface Natives {
+        void accept(
+                long nativeJavaScriptDialogAndroid, JavascriptTabModalDialog caller, String prompt);
+        void cancel(long nativeJavaScriptDialogAndroid, JavascriptTabModalDialog caller,
+                boolean buttonClicked);
+    }
 }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/locale/LocaleTemplateUrlLoader.java b/chrome/android/java/src/org/chromium/chrome/browser/locale/LocaleTemplateUrlLoader.java
index f076993..85e8503 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/locale/LocaleTemplateUrlLoader.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/locale/LocaleTemplateUrlLoader.java
@@ -3,6 +3,7 @@
 // found in the LICENSE file.
 
 package org.chromium.chrome.browser.locale;
+import org.chromium.base.annotations.NativeMethods;
 
 /**
  * A loader class for changes of template url in a given special locale. This is a JNI bridge and
@@ -20,7 +21,7 @@
     public LocaleTemplateUrlLoader(String localeId) {
         assert localeId.length() == 2;
         mLocaleId = localeId;
-        mNativeLocaleTemplateUrlLoader = nativeInit(localeId);
+        mNativeLocaleTemplateUrlLoader = LocaleTemplateUrlLoaderJni.get().init(localeId);
     }
 
     /**
@@ -28,7 +29,7 @@
      */
     public void destroy() {
         assert mNativeLocaleTemplateUrlLoader != 0;
-        nativeDestroy(mNativeLocaleTemplateUrlLoader);
+        LocaleTemplateUrlLoaderJni.get().destroy(mNativeLocaleTemplateUrlLoader);
         mNativeLocaleTemplateUrlLoader = 0;
     }
 
@@ -41,7 +42,8 @@
         assert mNativeLocaleTemplateUrlLoader != 0;
         // If the locale is the same as the one set at install time, there is no need to load the
         // search engines, as they are already cached in the template url service.
-        mAddedToService = nativeLoadTemplateUrls(mNativeLocaleTemplateUrlLoader);
+        mAddedToService =
+                LocaleTemplateUrlLoaderJni.get().loadTemplateUrls(mNativeLocaleTemplateUrlLoader);
         return mAddedToService;
     }
 
@@ -51,7 +53,9 @@
      */
     public void removeTemplateUrls() {
         assert mNativeLocaleTemplateUrlLoader != 0;
-        if (mAddedToService) nativeRemoveTemplateUrls(mNativeLocaleTemplateUrlLoader);
+        if (mAddedToService) {
+            LocaleTemplateUrlLoaderJni.get().removeTemplateUrls(mNativeLocaleTemplateUrlLoader);
+        }
     }
 
     /**
@@ -59,7 +63,8 @@
      */
     public void overrideDefaultSearchProvider() {
         assert mNativeLocaleTemplateUrlLoader != 0;
-        nativeOverrideDefaultSearchProvider(mNativeLocaleTemplateUrlLoader);
+        LocaleTemplateUrlLoaderJni.get().overrideDefaultSearchProvider(
+                mNativeLocaleTemplateUrlLoader);
     }
 
     /**
@@ -67,14 +72,16 @@
      */
     public void setGoogleAsDefaultSearch() {
         assert mNativeLocaleTemplateUrlLoader != 0;
-        nativeSetGoogleAsDefaultSearch(mNativeLocaleTemplateUrlLoader);
+        LocaleTemplateUrlLoaderJni.get().setGoogleAsDefaultSearch(mNativeLocaleTemplateUrlLoader);
     }
 
-    private static native long nativeInit(String localeId);
-    private static native void nativeDestroy(long nativeLocaleTemplateUrlLoader);
-    private static native boolean nativeLoadTemplateUrls(long nativeLocaleTemplateUrlLoader);
-    private static native void nativeRemoveTemplateUrls(long nativeLocaleTemplateUrlLoader);
-    private static native void nativeOverrideDefaultSearchProvider(
-            long nativeLocaleTemplateUrlLoader);
-    private static native void nativeSetGoogleAsDefaultSearch(long nativeLocaleTemplateUrlLoader);
+    @NativeMethods
+    interface Natives {
+        long init(String localeId);
+        void destroy(long nativeLocaleTemplateUrlLoader);
+        boolean loadTemplateUrls(long nativeLocaleTemplateUrlLoader);
+        void removeTemplateUrls(long nativeLocaleTemplateUrlLoader);
+        void overrideDefaultSearchProvider(long nativeLocaleTemplateUrlLoader);
+        void setGoogleAsDefaultSearch(long nativeLocaleTemplateUrlLoader);
+    }
 }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/login/ChromeHttpAuthHandler.java b/chrome/android/java/src/org/chromium/chrome/browser/login/ChromeHttpAuthHandler.java
index 882a05f..edf77219 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/login/ChromeHttpAuthHandler.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/login/ChromeHttpAuthHandler.java
@@ -9,6 +9,7 @@
 import org.chromium.base.Callback;
 import org.chromium.base.ThreadUtils;
 import org.chromium.base.annotations.CalledByNative;
+import org.chromium.base.annotations.NativeMethods;
 import org.chromium.chrome.browser.tab.EmptyTabObserver;
 import org.chromium.chrome.browser.tab.Tab;
 import org.chromium.chrome.browser.tab.Tab.TabHidingType;
@@ -68,18 +69,21 @@
      * Cancel the authorization request.
      */
     public void cancel() {
-        nativeCancelAuth(mNativeChromeHttpAuthHandler);
+        ChromeHttpAuthHandlerJni.get().cancelAuth(
+                mNativeChromeHttpAuthHandler, ChromeHttpAuthHandler.this);
     }
 
     /**
      * Proceed with the authorization with the given credentials.
      */
     public void proceed(String username, String password) {
-        nativeSetAuth(mNativeChromeHttpAuthHandler, username, password);
+        ChromeHttpAuthHandlerJni.get().setAuth(
+                mNativeChromeHttpAuthHandler, ChromeHttpAuthHandler.this, username, password);
     }
 
     public String getMessageBody() {
-        return nativeGetMessageBody(mNativeChromeHttpAuthHandler);
+        return ChromeHttpAuthHandlerJni.get().getMessageBody(
+                mNativeChromeHttpAuthHandler, ChromeHttpAuthHandler.this);
     }
 
     /** Return whether the auth dialog is being shown. */
@@ -157,12 +161,12 @@
         }
     }
 
-    // ---------------------------------------------
-    // Native side calls
-    // ---------------------------------------------
+    @NativeMethods
+    interface Natives {
+        void setAuth(long nativeChromeHttpAuthHandler, ChromeHttpAuthHandler caller,
+                String username, String password);
 
-    private native void nativeSetAuth(
-            long nativeChromeHttpAuthHandler, String username, String password);
-    private native void nativeCancelAuth(long nativeChromeHttpAuthHandler);
-    private native String nativeGetMessageBody(long nativeChromeHttpAuthHandler);
+        void cancelAuth(long nativeChromeHttpAuthHandler, ChromeHttpAuthHandler caller);
+        String getMessageBody(long nativeChromeHttpAuthHandler, ChromeHttpAuthHandler caller);
+    }
 }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/media/remote/RecordCastAction.java b/chrome/android/java/src/org/chromium/chrome/browser/media/remote/RecordCastAction.java
index e08861f..3f611ab 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/media/remote/RecordCastAction.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/media/remote/RecordCastAction.java
@@ -7,6 +7,7 @@
 import android.support.annotation.IntDef;
 
 import org.chromium.base.annotations.JNINamespace;
+import org.chromium.base.annotations.NativeMethods;
 import org.chromium.base.library_loader.LibraryLoader;
 import org.chromium.base.metrics.RecordHistogram;
 import org.chromium.chrome.browser.rappor.RapporServiceBridge;
@@ -46,8 +47,9 @@
      * @param playerType the type of cast receiver.
      */
     public static void remotePlaybackDeviceSelected(@RecordCastAction.DeviceType int playerType) {
-        if (LibraryLoader.getInstance().isInitialized())
-            nativeRecordRemotePlaybackDeviceSelected(playerType);
+        if (LibraryLoader.getInstance().isInitialized()) {
+            RecordCastActionJni.get().recordRemotePlaybackDeviceSelected(playerType);
+        }
     }
 
     /**
@@ -56,7 +58,9 @@
      * selecting the device initially.
      */
     public static void castPlayRequested() {
-        if (LibraryLoader.getInstance().isInitialized()) nativeRecordCastPlayRequested();
+        if (LibraryLoader.getInstance().isInitialized()) {
+            RecordCastActionJni.get().recordCastPlayRequested();
+        }
     }
 
     /**
@@ -65,8 +69,9 @@
      * @param castSucceeded true if the playback succeeded, false if there was an error
      */
     public static void castDefaultPlayerResult(boolean castSucceeded) {
-        if (LibraryLoader.getInstance().isInitialized())
-            nativeRecordCastDefaultPlayerResult(castSucceeded);
+        if (LibraryLoader.getInstance().isInitialized()) {
+            RecordCastActionJni.get().recordCastDefaultPlayerResult(castSucceeded);
+        }
     }
 
     /**
@@ -75,8 +80,9 @@
      * @param castSucceeded true if the playback succeeded, false if there was an error
      */
     public static void castYouTubePlayerResult(boolean castSucceeded) {
-        if (LibraryLoader.getInstance().isInitialized())
-            nativeRecordCastYouTubePlayerResult(castSucceeded);
+        if (LibraryLoader.getInstance().isInitialized()) {
+            RecordCastActionJni.get().recordCastYouTubePlayerResult(castSucceeded);
+        }
     }
 
     /**
@@ -87,7 +93,8 @@
      */
     public static void castEndedTimeRemaining(long videoLengthMs, long timeRemainingMs) {
         if (LibraryLoader.getInstance().isInitialized()) {
-            nativeRecordCastEndedTimeRemaining((int) videoLengthMs, (int) timeRemainingMs);
+            RecordCastActionJni.get().recordCastEndedTimeRemaining(
+                    (int) videoLengthMs, (int) timeRemainingMs);
         }
     }
 
@@ -98,7 +105,9 @@
      *            possible media types.
      */
     public static void castMediaType(int mediaType) {
-        if (LibraryLoader.getInstance().isInitialized()) nativeRecordCastMediaType(mediaType);
+        if (LibraryLoader.getInstance().isInitialized()) {
+            RecordCastActionJni.get().recordCastMediaType(mediaType);
+        }
     }
 
     /**
@@ -162,12 +171,15 @@
         }
     }
 
-    // Cast sending
-    private static native void nativeRecordRemotePlaybackDeviceSelected(int deviceType);
-    private static native void nativeRecordCastPlayRequested();
-    private static native void nativeRecordCastDefaultPlayerResult(boolean castSucceeded);
-    private static native void nativeRecordCastYouTubePlayerResult(boolean castSucceeded);
-    private static native void nativeRecordCastEndedTimeRemaining(
-            int videoLengthMs, int timeRemainingMs);
-    private static native void nativeRecordCastMediaType(int mediaType);
+    @NativeMethods
+    interface Natives {
+        // Cast sending
+        void recordRemotePlaybackDeviceSelected(int deviceType);
+
+        void recordCastPlayRequested();
+        void recordCastDefaultPlayerResult(boolean castSucceeded);
+        void recordCastYouTubePlayerResult(boolean castSucceeded);
+        void recordCastEndedTimeRemaining(int videoLengthMs, int timeRemainingMs);
+        void recordCastMediaType(int mediaType);
+    }
 }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/metrics/LaunchMetrics.java b/chrome/android/java/src/org/chromium/chrome/browser/metrics/LaunchMetrics.java
index 0a5a9c89..dec3676d 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/metrics/LaunchMetrics.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/metrics/LaunchMetrics.java
@@ -6,6 +6,7 @@
 
 import org.chromium.base.StrictModeContext;
 import org.chromium.base.annotations.JNINamespace;
+import org.chromium.base.annotations.NativeMethods;
 import org.chromium.base.metrics.CachedMetrics;
 import org.chromium.blink_public.platform.WebDisplayMode;
 import org.chromium.chrome.browser.ShortcutSource;
@@ -84,7 +85,7 @@
             @WebDisplayMode
             int displayMode =
                     (webappInfo == null) ? WebDisplayMode.UNDEFINED : webappInfo.displayMode();
-            nativeRecordLaunch(
+            LaunchMetricsJni.get().recordLaunch(
                     launch.mIsShortcut, launch.mUrl, launch.mSource, displayMode, webContents);
             if (webappInfo != null && webappInfo.isForWebApk()) {
                 WebApkInfo webApkInfo = (WebApkInfo) webappInfo;
@@ -110,7 +111,8 @@
             homepageUrl = "";
             assert !showHomeButton : "Homepage should be disabled for a null URL";
         }
-        nativeRecordHomePageLaunchMetrics(showHomeButton, homepageIsNtp, homepageUrl);
+        LaunchMetricsJni.get().recordHomePageLaunchMetrics(
+                showHomeButton, homepageIsNtp, homepageUrl);
     }
 
     /**
@@ -133,8 +135,11 @@
         return (source == ShortcutSource.UNKNOWN) ? ShortcutSource.WEBAPK_UNKNOWN : source;
     }
 
-    private static native void nativeRecordLaunch(boolean isShortcut, String url, int source,
-            @WebDisplayMode int displayMode, WebContents webContents);
-    private static native void nativeRecordHomePageLaunchMetrics(
-            boolean showHomeButton, boolean homepageIsNtp, String homepageUrl);
+    @NativeMethods
+    interface Natives {
+        void recordLaunch(boolean isShortcut, String url, int source,
+                @WebDisplayMode int displayMode, WebContents webContents);
+        void recordHomePageLaunchMetrics(
+                boolean showHomeButton, boolean homepageIsNtp, String homepageUrl);
+    }
 }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/metrics/UmaSessionStats.java b/chrome/android/java/src/org/chromium/chrome/browser/metrics/UmaSessionStats.java
index 1bf73bc..d90c102 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/metrics/UmaSessionStats.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/metrics/UmaSessionStats.java
@@ -11,6 +11,7 @@
 
 import org.chromium.base.ApplicationStatus;
 import org.chromium.base.annotations.CalledByNative;
+import org.chromium.base.annotations.NativeMethods;
 import org.chromium.base.library_loader.LibraryProcessType;
 import org.chromium.base.metrics.RecordHistogram;
 import org.chromium.base.task.PostTask;
@@ -54,9 +55,9 @@
         WebContents webContents = tab.getWebContents();
         boolean isDesktopUserAgent = webContents != null
                 && webContents.getNavigationController().getUseDesktopUserAgent();
-        nativeRecordPageLoaded(isDesktopUserAgent);
+        UmaSessionStatsJni.get().recordPageLoaded(isDesktopUserAgent);
         if (mKeyboardConnected) {
-            nativeRecordPageLoadedWithKeyboard();
+            UmaSessionStatsJni.get().recordPageLoadedWithKeyboard();
         }
 
         String url = tab.getUrl();
@@ -75,7 +76,7 @@
         if (mTabModelSelector == null) return;
 
         TabModel regularModel = mTabModelSelector.getModel(false);
-        nativeRecordTabCountPerLoad(getTabCountFromModel(regularModel));
+        UmaSessionStatsJni.get().recordTabCountPerLoad(getTabCountFromModel(regularModel));
     }
 
     private int getTabCountFromModel(TabModel model) {
@@ -114,7 +115,7 @@
             };
         }
 
-        nativeUmaResumeSession(sNativeUmaSessionStats);
+        UmaSessionStatsJni.get().umaResumeSession(sNativeUmaSessionStats, UmaSessionStats.this);
         updatePreferences();
         updateMetricsServiceState();
         DefaultBrowserInfo.logDefaultBrowserStats();
@@ -124,7 +125,7 @@
         // Lazily create the native object and the notification handler. These objects are never
         // destroyed.
         if (sNativeUmaSessionStats == 0) {
-            sNativeUmaSessionStats = nativeInit();
+            sNativeUmaSessionStats = UmaSessionStatsJni.get().init();
         }
     }
 
@@ -138,7 +139,7 @@
             mTabModelSelector = null;
         }
 
-        nativeUmaEndSession(sNativeUmaSessionStats);
+        UmaSessionStatsJni.get().umaEndSession(sNativeUmaSessionStats, UmaSessionStats.this);
     }
 
     /**
@@ -151,7 +152,7 @@
         privacyManager.setUsageAndCrashReporting(consent);
 
         // Perform native changes needed to reflect the new consent value.
-        nativeChangeMetricsReportingConsent(consent);
+        UmaSessionStatsJni.get().changeMetricsReportingConsent(consent);
 
         updateMetricsServiceState();
     }
@@ -160,21 +161,21 @@
      * Initializes the metrics consent bit to false. Used only for testing.
      */
     public static void initMetricsAndCrashReportingForTesting() {
-        nativeInitMetricsAndCrashReportingForTesting();
+        UmaSessionStatsJni.get().initMetricsAndCrashReportingForTesting();
     }
 
     /**
      * Clears the metrics consent bit used for testing to original setting. Used only for testing.
      */
     public static void unSetMetricsAndCrashReportingForTesting() {
-        nativeUnsetMetricsAndCrashReportingForTesting();
+        UmaSessionStatsJni.get().unsetMetricsAndCrashReportingForTesting();
     }
 
     /**
      * Updates the metrics consent bit to |consent|. Used only for testing.
      */
     public static void updateMetricsAndCrashReportingForTesting(boolean consent) {
-        nativeUpdateMetricsAndCrashReportingForTesting(consent);
+        UmaSessionStatsJni.get().updateMetricsAndCrashReportingForTesting(consent);
     }
 
     /**
@@ -189,7 +190,7 @@
         boolean mayUploadStats = privacyManager.isMetricsUploadPermitted();
 
         // Re-start the MetricsService with the given parameter, and current consent.
-        nativeUpdateMetricsServiceState(mayUploadStats);
+        UmaSessionStatsJni.get().updateMetricsServiceState(mayUploadStats);
     }
 
     /**
@@ -208,12 +209,12 @@
 
     public static void registerExternalExperiment(String studyName, int[] experimentIds) {
         assert isMetricsServiceAvailable();
-        nativeRegisterExternalExperiment(studyName, experimentIds);
+        UmaSessionStatsJni.get().registerExternalExperiment(studyName, experimentIds);
     }
 
     public static void registerSyntheticFieldTrial(String trialName, String groupName) {
         assert isMetricsServiceAvailable();
-        nativeRegisterSyntheticFieldTrial(trialName, groupName);
+        UmaSessionStatsJni.get().registerSyntheticFieldTrial(trialName, groupName);
     }
 
     /**
@@ -234,20 +235,20 @@
         return ApplicationStatus.hasVisibleActivities();
     }
 
-    private static native long nativeInit();
-    private static native void nativeChangeMetricsReportingConsent(boolean consent);
-    private static native void nativeInitMetricsAndCrashReportingForTesting();
-    private static native void nativeUnsetMetricsAndCrashReportingForTesting();
-    private static native void nativeUpdateMetricsAndCrashReportingForTesting(boolean consent);
-    private static native void nativeUpdateMetricsServiceState(boolean mayUpload);
-    private native void nativeUmaResumeSession(long nativeUmaSessionStats);
-    private native void nativeUmaEndSession(long nativeUmaSessionStats);
-    private static native void nativeRegisterExternalExperiment(
-            String studyName, int[] experimentIds);
-    private static native void nativeRegisterSyntheticFieldTrial(
-            String trialName, String groupName);
-    private static native void nativeRecordTabCountPerLoad(int numTabsOpen);
-    private static native void nativeRecordPageLoaded(boolean isDesktopUserAgent);
-    private static native void nativeRecordPageLoadedWithKeyboard();
-
+    @NativeMethods
+    interface Natives {
+        long init();
+        void changeMetricsReportingConsent(boolean consent);
+        void initMetricsAndCrashReportingForTesting();
+        void unsetMetricsAndCrashReportingForTesting();
+        void updateMetricsAndCrashReportingForTesting(boolean consent);
+        void updateMetricsServiceState(boolean mayUpload);
+        void umaResumeSession(long nativeUmaSessionStats, UmaSessionStats caller);
+        void umaEndSession(long nativeUmaSessionStats, UmaSessionStats caller);
+        void registerExternalExperiment(String studyName, int[] experimentIds);
+        void registerSyntheticFieldTrial(String trialName, String groupName);
+        void recordTabCountPerLoad(int numTabsOpen);
+        void recordPageLoaded(boolean isDesktopUserAgent);
+        void recordPageLoadedWithKeyboard();
+    }
 }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/metrics/UmaUtils.java b/chrome/android/java/src/org/chromium/chrome/browser/metrics/UmaUtils.java
index fb8b0bb..4b5bfce6 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/metrics/UmaUtils.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/metrics/UmaUtils.java
@@ -9,6 +9,7 @@
 import org.chromium.base.annotations.CalledByNative;
 import org.chromium.base.annotations.JNINamespace;
 import org.chromium.base.annotations.MainDex;
+import org.chromium.base.annotations.NativeMethods;
 
 /**
  * Utilities to support startup metrics - Android version.
@@ -73,7 +74,7 @@
      * is, and there was user consent, then metrics and crashes would be reported
      */
     public static boolean isClientInMetricsReportingSample() {
-        return nativeIsClientInMetricsReportingSample();
+        return UmaUtilsJni.get().isClientInMetricsReportingSample();
     }
 
     /**
@@ -82,7 +83,7 @@
      * This should only be set once, and only during first-run.
      */
     public static void recordMetricsReportingDefaultOptIn(boolean optIn) {
-        nativeRecordMetricsReportingDefaultOptIn(optIn);
+        UmaUtilsJni.get().recordMetricsReportingDefaultOptIn(optIn);
     }
 
     @CalledByNative
@@ -100,6 +101,9 @@
         UmaSessionStats.changeMetricsReportingConsent(enabled);
     }
 
-    private static native boolean nativeIsClientInMetricsReportingSample();
-    private static native void nativeRecordMetricsReportingDefaultOptIn(boolean optIn);
+    @NativeMethods
+    interface Natives {
+        boolean isClientInMetricsReportingSample();
+        void recordMetricsReportingDefaultOptIn(boolean optIn);
+    }
 }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/net/nqe/NetworkQualityProvider.java b/chrome/android/java/src/org/chromium/chrome/browser/net/nqe/NetworkQualityProvider.java
index 267a726..8481b73 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/net/nqe/NetworkQualityProvider.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/net/nqe/NetworkQualityProvider.java
@@ -7,6 +7,7 @@
 import org.chromium.base.ObserverList;
 import org.chromium.base.ObserverList.RewindableIterator;
 import org.chromium.base.annotations.CalledByNative;
+import org.chromium.base.annotations.NativeMethods;
 import org.chromium.base.library_loader.LibraryProcessType;
 import org.chromium.content_public.browser.BrowserStartupController;
 import org.chromium.net.EffectiveConnectionType;
@@ -69,7 +70,8 @@
     protected void doNativeInit() {
         assert BrowserStartupController.get(LibraryProcessType.PROCESS_BROWSER)
                 .isFullBrowserStarted();
-        mNativeNetworkQualityProvider = nativeInit();
+        mNativeNetworkQualityProvider =
+                NetworkQualityProviderJni.get().init(NetworkQualityProvider.this);
     }
 
     @CalledByNative
@@ -96,5 +98,8 @@
         }
     }
 
-    private native long nativeInit();
+    @NativeMethods
+    interface Natives {
+        long init(NetworkQualityProvider caller);
+    }
 }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/net/spdyproxy/DataReductionProxySettings.java b/chrome/android/java/src/org/chromium/chrome/browser/net/spdyproxy/DataReductionProxySettings.java
index 34cb2977..f8961ba 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/net/spdyproxy/DataReductionProxySettings.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/net/spdyproxy/DataReductionProxySettings.java
@@ -11,6 +11,7 @@
 import org.chromium.base.ThreadUtils;
 import org.chromium.base.VisibleForTesting;
 import org.chromium.base.annotations.CalledByNative;
+import org.chromium.base.annotations.NativeMethods;
 import org.chromium.chrome.browser.datareduction.DataReductionPromoUtils;
 import org.chromium.chrome.browser.preferences.datareduction.DataReductionDataUseItem;
 import org.chromium.chrome.browser.preferences.datareduction.DataReductionProxySavingsClearedReason;
@@ -125,17 +126,20 @@
         // Note that this technically leaks the native object, however,
         // DataReductionProxySettings is a singleton that lives forever and there's no clean
         // shutdown of Chrome on Android
-        mNativeDataReductionProxySettings = nativeInit();
+        mNativeDataReductionProxySettings =
+                DataReductionProxySettingsJni.get().init(DataReductionProxySettings.this);
     }
 
     /** Returns true if the SPDY proxy promo is allowed to be shown. */
     public boolean isDataReductionProxyPromoAllowed() {
-        return nativeIsDataReductionProxyPromoAllowed(mNativeDataReductionProxySettings);
+        return DataReductionProxySettingsJni.get().isDataReductionProxyPromoAllowed(
+                mNativeDataReductionProxySettings, DataReductionProxySettings.this);
     }
 
     /** Returns true if the data saver proxy promo is allowed to be shown as part of FRE. */
     public boolean isDataReductionProxyFREPromoAllowed() {
-        return nativeIsDataReductionProxyFREPromoAllowed(mNativeDataReductionProxySettings);
+        return DataReductionProxySettingsJni.get().isDataReductionProxyFREPromoAllowed(
+                mNativeDataReductionProxySettings, DataReductionProxySettings.this);
     }
 
     /** Returns true if the snackbar promo is allowed to be shown. */
@@ -159,12 +163,14 @@
         }
         ContextUtils.getAppSharedPreferences().edit()
                 .putBoolean(DATA_REDUCTION_ENABLED_PREF, enabled).apply();
-        nativeSetDataReductionProxyEnabled(mNativeDataReductionProxySettings, enabled);
+        DataReductionProxySettingsJni.get().setDataReductionProxyEnabled(
+                mNativeDataReductionProxySettings, DataReductionProxySettings.this, enabled);
     }
 
     /** Returns true if the Data Reduction Proxy proxy is enabled. */
     public boolean isDataReductionProxyEnabled() {
-        return nativeIsDataReductionProxyEnabled(mNativeDataReductionProxySettings);
+        return DataReductionProxySettingsJni.get().isDataReductionProxyEnabled(
+                mNativeDataReductionProxySettings, DataReductionProxySettings.this);
     }
 
     /**
@@ -179,7 +185,8 @@
 
     /** Returns true if the SPDY proxy is managed by an administrator's policy. */
     public boolean isDataReductionProxyManaged() {
-        return nativeIsDataReductionProxyManaged(mNativeDataReductionProxySettings);
+        return DataReductionProxySettingsJni.get().isDataReductionProxyManaged(
+                mNativeDataReductionProxySettings, DataReductionProxySettings.this);
     }
 
     /**
@@ -187,7 +194,8 @@
      * @return The last update time in milliseconds since the epoch.
      */
     public long getDataReductionLastUpdateTime() {
-        return nativeGetDataReductionLastUpdateTime(mNativeDataReductionProxySettings);
+        return DataReductionProxySettingsJni.get().getDataReductionLastUpdateTime(
+                mNativeDataReductionProxySettings, DataReductionProxySettings.this);
     }
 
     /**
@@ -211,7 +219,8 @@
                 .edit()
                 .putLong(DATA_REDUCTION_FIRST_ENABLED_TIME, System.currentTimeMillis())
                 .apply();
-        nativeClearDataSavingStatistics(mNativeDataReductionProxySettings, reason);
+        DataReductionProxySettingsJni.get().clearDataSavingStatistics(
+                mNativeDataReductionProxySettings, DataReductionProxySettings.this, reason);
     }
 
     /**
@@ -219,7 +228,8 @@
      * @return The content lengths.
      */
     public ContentLengths getContentLengths() {
-        return nativeGetContentLengths(mNativeDataReductionProxySettings);
+        return DataReductionProxySettingsJni.get().getContentLengths(
+                mNativeDataReductionProxySettings, DataReductionProxySettings.this);
     }
 
     /**
@@ -236,7 +246,8 @@
      * @return The HTTP content length saved.
      */
     public long getTotalHttpContentLengthSaved() {
-        return nativeGetTotalHttpContentLengthSaved(mNativeDataReductionProxySettings);
+        return DataReductionProxySettingsJni.get().getTotalHttpContentLengthSaved(
+                mNativeDataReductionProxySettings, DataReductionProxySettings.this);
     }
 
     /**
@@ -245,7 +256,8 @@
      * @return The history of daily totals
      */
     public long[] getOriginalNetworkStatsHistory() {
-        return nativeGetDailyOriginalContentLengths(mNativeDataReductionProxySettings);
+        return DataReductionProxySettingsJni.get().getDailyOriginalContentLengths(
+                mNativeDataReductionProxySettings, DataReductionProxySettings.this);
     }
 
     /**
@@ -254,7 +266,8 @@
      * @return The history of daily totals
      */
     public long[] getReceivedNetworkStatsHistory() {
-        return nativeGetDailyReceivedContentLengths(mNativeDataReductionProxySettings);
+        return DataReductionProxySettingsJni.get().getDailyReceivedContentLengths(
+                mNativeDataReductionProxySettings, DataReductionProxySettings.this);
     }
 
     /**
@@ -264,7 +277,8 @@
      * @return The data reduction proxy pass through header.
      */
     public String getDataReductionProxyPassThroughHeader() {
-        return nativeGetDataReductionProxyPassThroughHeader(mNativeDataReductionProxySettings);
+        return DataReductionProxySettingsJni.get().getDataReductionProxyPassThroughHeader(
+                mNativeDataReductionProxySettings, DataReductionProxySettings.this);
     }
 
     /**
@@ -272,7 +286,8 @@
      * @return true if the data reduction proxy is unreachable.
      */
     public boolean isDataReductionProxyUnreachable() {
-        return nativeIsDataReductionProxyUnreachable(mNativeDataReductionProxySettings);
+        return DataReductionProxySettingsJni.get().isDataReductionProxyUnreachable(
+                mNativeDataReductionProxySettings, DataReductionProxySettings.this);
     }
 
     /**
@@ -305,7 +320,8 @@
      * @return The URL to be used. Returns null if the URL param is null.
      */
     public String maybeRewriteWebliteUrl(String url) {
-        return nativeMaybeRewriteWebliteUrl(mNativeDataReductionProxySettings, url);
+        return DataReductionProxySettingsJni.get().maybeRewriteWebliteUrl(
+                mNativeDataReductionProxySettings, DataReductionProxySettings.this, url);
     }
 
     /**
@@ -319,8 +335,9 @@
     public void queryDataUsage(
             int numDays, Callback<List<DataReductionDataUseItem>> queryDataUsageCallback) {
         mQueryDataUsageCallback = queryDataUsageCallback;
-        nativeQueryDataUsage(mNativeDataReductionProxySettings,
-                new ArrayList<DataReductionDataUseItem>(), numDays);
+        DataReductionProxySettingsJni.get().queryDataUsage(mNativeDataReductionProxySettings,
+                DataReductionProxySettings.this, new ArrayList<DataReductionDataUseItem>(),
+                numDays);
     }
 
     @CalledByNative
@@ -337,35 +354,39 @@
         mQueryDataUsageCallback = null;
     }
 
-    private native long nativeInit();
-    private native boolean nativeIsDataReductionProxyPromoAllowed(
-            long nativeDataReductionProxySettingsAndroid);
-    private native boolean nativeIsDataReductionProxyFREPromoAllowed(
-            long nativeDataReductionProxySettingsAndroid);
-    private native boolean nativeIsDataReductionProxyEnabled(
-            long nativeDataReductionProxySettingsAndroid);
-    private native boolean nativeIsDataReductionProxyManaged(
-            long nativeDataReductionProxySettingsAndroid);
-    private native void nativeSetDataReductionProxyEnabled(
-            long nativeDataReductionProxySettingsAndroid, boolean enabled);
-    private native long nativeGetDataReductionLastUpdateTime(
-            long nativeDataReductionProxySettingsAndroid);
-    private native void nativeClearDataSavingStatistics(
-            long nativeDataReductionProxySettingsAndroid, int reason);
-    private native ContentLengths nativeGetContentLengths(
-            long nativeDataReductionProxySettingsAndroid);
-    private native long nativeGetTotalHttpContentLengthSaved(
-            long nativeDataReductionProxySettingsAndroid);
-    private native long[] nativeGetDailyOriginalContentLengths(
-            long nativeDataReductionProxySettingsAndroid);
-    private native long[] nativeGetDailyReceivedContentLengths(
-            long nativeDataReductionProxySettingsAndroid);
-    private native String nativeGetDataReductionProxyPassThroughHeader(
-            long nativeDataReductionProxySettingsAndroid);
-    private native boolean nativeIsDataReductionProxyUnreachable(
-            long nativeDataReductionProxySettingsAndroid);
-    private native String nativeMaybeRewriteWebliteUrl(
-            long nativeDataReductionProxySettingsAndroid, String url);
-    private native void nativeQueryDataUsage(long nativeDataReductionProxySettingsAndroid,
-            List<DataReductionDataUseItem> items, int numDays);
+    @NativeMethods
+    interface Natives {
+        long init(DataReductionProxySettings caller);
+        boolean isDataReductionProxyPromoAllowed(
+                long nativeDataReductionProxySettingsAndroid, DataReductionProxySettings caller);
+        boolean isDataReductionProxyFREPromoAllowed(
+                long nativeDataReductionProxySettingsAndroid, DataReductionProxySettings caller);
+        boolean isDataReductionProxyEnabled(
+                long nativeDataReductionProxySettingsAndroid, DataReductionProxySettings caller);
+        boolean isDataReductionProxyManaged(
+                long nativeDataReductionProxySettingsAndroid, DataReductionProxySettings caller);
+        void setDataReductionProxyEnabled(long nativeDataReductionProxySettingsAndroid,
+                DataReductionProxySettings caller, boolean enabled);
+        long getDataReductionLastUpdateTime(
+                long nativeDataReductionProxySettingsAndroid, DataReductionProxySettings caller);
+        void clearDataSavingStatistics(long nativeDataReductionProxySettingsAndroid,
+                DataReductionProxySettings caller, int reason);
+        ContentLengths getContentLengths(
+                long nativeDataReductionProxySettingsAndroid, DataReductionProxySettings caller);
+        long getTotalHttpContentLengthSaved(
+                long nativeDataReductionProxySettingsAndroid, DataReductionProxySettings caller);
+        long[] getDailyOriginalContentLengths(
+                long nativeDataReductionProxySettingsAndroid, DataReductionProxySettings caller);
+        long[] getDailyReceivedContentLengths(
+                long nativeDataReductionProxySettingsAndroid, DataReductionProxySettings caller);
+        String getDataReductionProxyPassThroughHeader(
+                long nativeDataReductionProxySettingsAndroid, DataReductionProxySettings caller);
+        boolean isDataReductionProxyUnreachable(
+                long nativeDataReductionProxySettingsAndroid, DataReductionProxySettings caller);
+        String maybeRewriteWebliteUrl(long nativeDataReductionProxySettingsAndroid,
+                DataReductionProxySettings caller, String url);
+        void queryDataUsage(long nativeDataReductionProxySettingsAndroid,
+                DataReductionProxySettings caller, List<DataReductionDataUseItem> items,
+                int numDays);
+    }
 }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/notifications/NotificationPlatformBridge.java b/chrome/android/java/src/org/chromium/chrome/browser/notifications/NotificationPlatformBridge.java
index e768d26..10c5115 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/notifications/NotificationPlatformBridge.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/notifications/NotificationPlatformBridge.java
@@ -27,6 +27,7 @@
 import org.chromium.base.Promise;
 import org.chromium.base.VisibleForTesting;
 import org.chromium.base.annotations.CalledByNative;
+import org.chromium.base.annotations.NativeMethods;
 import org.chromium.base.library_loader.ProcessInitException;
 import org.chromium.base.metrics.RecordHistogram;
 import org.chromium.base.metrics.RecordUserAction;
@@ -155,7 +156,7 @@
      */
     static boolean dispatchNotificationEvent(Intent intent) {
         if (sInstance == null) {
-            nativeInitializeNotificationPlatformBridge();
+            NotificationPlatformBridgeJni.get().initializeNotificationPlatformBridge();
             if (sInstance == null) {
                 Log.e(TAG, "Unable to initialize the native NotificationPlatformBridge.");
                 return false;
@@ -392,8 +393,9 @@
     public static String getOriginFromNotificationTag(@Nullable String tag) {
         if (tag == null
                 || !tag.startsWith(NotificationConstants.PERSISTENT_NOTIFICATION_TAG_PREFIX
-                           + NotificationConstants.NOTIFICATION_TAG_SEPARATOR))
+                        + NotificationConstants.NOTIFICATION_TAG_SEPARATOR)) {
             return null;
+        }
 
         // This code parses the notification id that was generated in notification_id_generator.cc
         // TODO(https://crbug.com/801164): Extract this to a separate class.
@@ -522,8 +524,9 @@
             String profileId, boolean incognito, String title, String body, Bitmap image,
             Bitmap icon, Bitmap badge, int[] vibrationPattern, long timestamp, boolean renotify,
             boolean silent, ActionInfo[] actions, String webApkPackage) {
-        nativeStoreCachedWebApkPackageForNotificationId(
-                mNativeNotificationPlatformBridge, notificationId, webApkPackage);
+        NotificationPlatformBridgeJni.get().storeCachedWebApkPackageForNotificationId(
+                mNativeNotificationPlatformBridge, NotificationPlatformBridge.this, notificationId,
+                webApkPackage);
         // Record whether it's known whether notifications can be shown to the user at all.
         NotificationSystemStatusUtil.recordAppNotificationStatusHistogram();
 
@@ -830,9 +833,9 @@
             String scopeUrl, String profileId, boolean incognito, String webApkPackage,
             int actionIndex, @Nullable String reply) {
         mLastNotificationClickMs = System.currentTimeMillis();
-        nativeOnNotificationClicked(mNativeNotificationPlatformBridge, notificationId,
-                notificationType, origin, scopeUrl, profileId, incognito, webApkPackage,
-                actionIndex, reply);
+        NotificationPlatformBridgeJni.get().onNotificationClicked(mNativeNotificationPlatformBridge,
+                NotificationPlatformBridge.this, notificationId, notificationType, origin, scopeUrl,
+                profileId, incognito, webApkPackage, actionIndex, reply);
     }
 
     /**
@@ -847,8 +850,9 @@
      */
     private void onNotificationClosed(String notificationId, int notificationType, String origin,
             String profileId, boolean incognito, boolean byUser) {
-        nativeOnNotificationClosed(mNativeNotificationPlatformBridge, notificationId,
-                notificationType, origin, profileId, incognito, byUser);
+        NotificationPlatformBridgeJni.get().onNotificationClosed(mNativeNotificationPlatformBridge,
+                NotificationPlatformBridge.this, notificationId, notificationType, origin,
+                profileId, incognito, byUser);
     }
 
     private TrustedWebActivityClient getTwaClient() {
@@ -858,16 +862,19 @@
         return mTwaClient;
     }
 
-    private static native void nativeInitializeNotificationPlatformBridge();
-
-    private native void nativeOnNotificationClicked(long nativeNotificationPlatformBridgeAndroid,
-            String notificationId, @NotificationType int notificationType, String origin,
-            String scopeUrl, String profileId, boolean incognito, String webApkPackage,
-            int actionIndex, String reply);
-    private native void nativeOnNotificationClosed(long nativeNotificationPlatformBridgeAndroid,
-            String notificationId, @NotificationType int notificationType, String origin,
-            String profileId, boolean incognito, boolean byUser);
-    private native void nativeStoreCachedWebApkPackageForNotificationId(
-            long nativeNotificationPlatformBridgeAndroid, String notificationId,
-            String webApkPackage);
+    @NativeMethods
+    interface Natives {
+        void initializeNotificationPlatformBridge();
+        void onNotificationClicked(long nativeNotificationPlatformBridgeAndroid,
+                NotificationPlatformBridge caller, String notificationId,
+                @NotificationType int notificationType, String origin, String scopeUrl,
+                String profileId, boolean incognito, String webApkPackage, int actionIndex,
+                String reply);
+        void onNotificationClosed(long nativeNotificationPlatformBridgeAndroid,
+                NotificationPlatformBridge caller, String notificationId,
+                @NotificationType int notificationType, String origin, String profileId,
+                boolean incognito, boolean byUser);
+        void storeCachedWebApkPackageForNotificationId(long nativeNotificationPlatformBridgeAndroid,
+                NotificationPlatformBridge caller, String notificationId, String webApkPackage);
+    }
 }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/notifications/scheduler/DisplayAgent.java b/chrome/android/java/src/org/chromium/chrome/browser/notifications/scheduler/DisplayAgent.java
index c849b859..017a586 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/notifications/scheduler/DisplayAgent.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/notifications/scheduler/DisplayAgent.java
@@ -13,6 +13,7 @@
 import org.chromium.base.ContextUtils;
 import org.chromium.base.Log;
 import org.chromium.base.annotations.CalledByNative;
+import org.chromium.base.annotations.NativeMethods;
 import org.chromium.base.library_loader.ProcessInitException;
 import org.chromium.chrome.R;
 import org.chromium.chrome.browser.ChromeApplication;
@@ -168,18 +169,18 @@
             case NotificationIntentInterceptor.IntentType.UNKNOWN:
                 break;
             case NotificationIntentInterceptor.IntentType.CONTENT_INTENT:
-                nativeOnUserAction(Profile.getLastUsedProfile(), clientType, UserActionType.CLICK,
-                        guid, ActionButtonType.UNKNOWN_ACTION, null);
+                DisplayAgentJni.get().onUserAction(Profile.getLastUsedProfile(), clientType,
+                        UserActionType.CLICK, guid, ActionButtonType.UNKNOWN_ACTION, null);
                 break;
             case NotificationIntentInterceptor.IntentType.DELETE_INTENT:
-                nativeOnUserAction(Profile.getLastUsedProfile(), clientType, UserActionType.DISMISS,
-                        guid, ActionButtonType.UNKNOWN_ACTION, null);
+                DisplayAgentJni.get().onUserAction(Profile.getLastUsedProfile(), clientType,
+                        UserActionType.DISMISS, guid, ActionButtonType.UNKNOWN_ACTION, null);
                 break;
             case NotificationIntentInterceptor.IntentType.ACTION_INTENT:
                 int actionButtonType = IntentUtils.safeGetIntExtra(
                         intent, EXTRA_ACTION_BUTTON_TYPE, ActionButtonType.UNKNOWN_ACTION);
                 String buttonId = IntentUtils.safeGetStringExtra(intent, EXTRA_ACTION_BUTTON_ID);
-                nativeOnUserAction(Profile.getLastUsedProfile(), clientType,
+                DisplayAgentJni.get().onUserAction(Profile.getLastUsedProfile(), clientType,
                         UserActionType.BUTTON_CLICK, guid, actionButtonType, buttonId);
                 break;
         }
@@ -283,7 +284,10 @@
 
     private DisplayAgent() {}
 
-    private static native void nativeOnUserAction(Profile profile,
-            @SchedulerClientType int clientType, @UserActionType int actionType, String guid,
-            @ActionButtonType int type, String buttonId);
+    @NativeMethods
+    interface Natives {
+        void onUserAction(Profile profile, @SchedulerClientType int clientType,
+                @UserActionType int actionType, String guid, @ActionButtonType int type,
+                String buttonId);
+    }
 }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/notifications/scheduler/NotificationSchedulerTask.java b/chrome/android/java/src/org/chromium/chrome/browser/notifications/scheduler/NotificationSchedulerTask.java
index 5de6af8d..93513ae2 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/notifications/scheduler/NotificationSchedulerTask.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/notifications/scheduler/NotificationSchedulerTask.java
@@ -11,6 +11,7 @@
 import org.chromium.base.Callback;
 import org.chromium.base.ContextUtils;
 import org.chromium.base.annotations.CalledByNative;
+import org.chromium.base.annotations.NativeMethods;
 import org.chromium.chrome.browser.background_task_scheduler.NativeBackgroundTask;
 import org.chromium.chrome.browser.profiles.Profile;
 import org.chromium.components.background_task_scheduler.BackgroundTaskScheduler;
@@ -51,7 +52,7 @@
         @SchedulerTaskTime
         int taskStartTime = taskParameters.getExtras().getInt(
                 EXTRA_SCHEDULER_TASK_TIME, NO_EXTRA_SCHEDULER_TASK_TIME);
-        nativeOnStartTask(
+        NotificationSchedulerTaskJni.get().onStartTask(NotificationSchedulerTask.this,
                 Profile.getLastUsedProfile().getOriginalProfile(), taskStartTime, taskCallback);
     }
 
@@ -67,7 +68,8 @@
         @SchedulerTaskTime
         int taskStartTime = taskParameters.getExtras().getInt(
                 EXTRA_SCHEDULER_TASK_TIME, NO_EXTRA_SCHEDULER_TASK_TIME);
-        return nativeOnStopTask(Profile.getLastUsedProfile().getOriginalProfile(), taskStartTime);
+        return NotificationSchedulerTaskJni.get().onStopTask(NotificationSchedulerTask.this,
+                Profile.getLastUsedProfile().getOriginalProfile(), taskStartTime);
     }
 
     /**
@@ -105,8 +107,11 @@
                 ContextUtils.getApplicationContext(), TaskIds.NOTIFICATION_SCHEDULER_JOB_ID);
     }
 
-    private native void nativeOnStartTask(
-            Profile profile, @SchedulerTaskTime int schedulerTaskTime, Callback<Boolean> callback);
-    private native boolean nativeOnStopTask(
-            Profile profile, @SchedulerTaskTime int schedulerTaskTime);
+    @NativeMethods
+    interface Natives {
+        void onStartTask(NotificationSchedulerTask caller, Profile profile,
+                @SchedulerTaskTime int schedulerTaskTime, Callback<Boolean> callback);
+        boolean onStopTask(NotificationSchedulerTask caller, Profile profile,
+                @SchedulerTaskTime int schedulerTaskTime);
+    }
 }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/ForeignSessionHelper.java b/chrome/android/java/src/org/chromium/chrome/browser/ntp/ForeignSessionHelper.java
index 6911b0d..ce6efba 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/ntp/ForeignSessionHelper.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ntp/ForeignSessionHelper.java
@@ -5,6 +5,7 @@
 package org.chromium.chrome.browser.ntp;
 
 import org.chromium.base.annotations.CalledByNative;
+import org.chromium.base.annotations.NativeMethods;
 import org.chromium.chrome.browser.profiles.Profile;
 import org.chromium.chrome.browser.tab.Tab;
 
@@ -121,7 +122,7 @@
      * @param profile Profile that will be used for syncing.
      */
     public ForeignSessionHelper(Profile profile) {
-        mNativeForeignSessionHelper = nativeInit(profile);
+        mNativeForeignSessionHelper = ForeignSessionHelperJni.get().init(profile);
     }
 
     /**
@@ -129,7 +130,7 @@
      */
     public void destroy() {
         assert mNativeForeignSessionHelper != 0;
-        nativeDestroy(mNativeForeignSessionHelper);
+        ForeignSessionHelperJni.get().destroy(mNativeForeignSessionHelper);
         mNativeForeignSessionHelper = 0;
     }
 
@@ -137,14 +138,14 @@
      * @return {@code True} iff Tab sync is enabled.
      */
     boolean isTabSyncEnabled() {
-        return nativeIsTabSyncEnabled(mNativeForeignSessionHelper);
+        return ForeignSessionHelperJni.get().isTabSyncEnabled(mNativeForeignSessionHelper);
     }
 
     /**
      * Force a sync for sessions.
      */
     void triggerSessionSync() {
-        nativeTriggerSessionSync(mNativeForeignSessionHelper);
+        ForeignSessionHelperJni.get().triggerSessionSync(mNativeForeignSessionHelper);
     }
 
     /**
@@ -152,7 +153,8 @@
      * @param callback The callback to be invoked.
      */
     void setOnForeignSessionCallback(ForeignSessionCallback callback) {
-        nativeSetOnForeignSessionCallback(mNativeForeignSessionHelper, callback);
+        ForeignSessionHelperJni.get().setOnForeignSessionCallback(
+                mNativeForeignSessionHelper, callback);
     }
 
     /**
@@ -164,7 +166,8 @@
             return null;
         }
         List<ForeignSession> result = new ArrayList<ForeignSession>();
-        boolean received = nativeGetForeignSessions(mNativeForeignSessionHelper, result);
+        boolean received = ForeignSessionHelperJni.get().getForeignSessions(
+                mNativeForeignSessionHelper, result);
         if (!received) {
             result = null;
         }
@@ -182,8 +185,8 @@
      */
     boolean openForeignSessionTab(Tab tab, ForeignSession session,
             ForeignSessionTab foreignTab, int windowOpenDisposition) {
-        return nativeOpenForeignSessionTab(mNativeForeignSessionHelper, tab, session.tag,
-                foreignTab.id, windowOpenDisposition);
+        return ForeignSessionHelperJni.get().openForeignSessionTab(mNativeForeignSessionHelper, tab,
+                session.tag, foreignTab.id, windowOpenDisposition);
     }
 
     /**
@@ -194,29 +197,31 @@
      * @param session Session to be deleted.
      */
     void deleteForeignSession(ForeignSession session) {
-        nativeDeleteForeignSession(mNativeForeignSessionHelper, session.tag);
+        ForeignSessionHelperJni.get().deleteForeignSession(
+                mNativeForeignSessionHelper, session.tag);
     }
 
     /**
      * Enable invalidations for sessions sync related datatypes.
      */
     public void setInvalidationsForSessionsEnabled(boolean enabled) {
-        nativeSetInvalidationsForSessionsEnabled(mNativeForeignSessionHelper, enabled);
+        ForeignSessionHelperJni.get().setInvalidationsForSessionsEnabled(
+                mNativeForeignSessionHelper, enabled);
     }
 
-    private static native long nativeInit(Profile profile);
-    private static native void nativeDestroy(long nativeForeignSessionHelper);
-    private static native boolean nativeIsTabSyncEnabled(long nativeForeignSessionHelper);
-    private static native void nativeTriggerSessionSync(long nativeForeignSessionHelper);
-    private static native void nativeSetOnForeignSessionCallback(
-            long nativeForeignSessionHelper, ForeignSessionCallback callback);
-    private static native boolean nativeGetForeignSessions(long nativeForeignSessionHelper,
-            List<ForeignSession> resultSessions);
-    private static native boolean nativeOpenForeignSessionTab(
-            long nativeForeignSessionHelper, Tab tab, String sessionTag, int tabId,
-            int disposition);
-    private static native void nativeDeleteForeignSession(
-            long nativeForeignSessionHelper, String sessionTag);
-    private static native void nativeSetInvalidationsForSessionsEnabled(
-            long nativeForeignSessionHelper, boolean enabled);
+    @NativeMethods
+    interface Natives {
+        long init(Profile profile);
+        void destroy(long nativeForeignSessionHelper);
+        boolean isTabSyncEnabled(long nativeForeignSessionHelper);
+        void triggerSessionSync(long nativeForeignSessionHelper);
+        void setOnForeignSessionCallback(
+                long nativeForeignSessionHelper, ForeignSessionCallback callback);
+        boolean getForeignSessions(
+                long nativeForeignSessionHelper, List<ForeignSession> resultSessions);
+        boolean openForeignSessionTab(long nativeForeignSessionHelper, Tab tab, String sessionTag,
+                int tabId, int disposition);
+        void deleteForeignSession(long nativeForeignSessionHelper, String sessionTag);
+        void setInvalidationsForSessionsEnabled(long nativeForeignSessionHelper, boolean enabled);
+    }
 }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/LogoBridge.java b/chrome/android/java/src/org/chromium/chrome/browser/ntp/LogoBridge.java
index 615c7c7..2202972 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/ntp/LogoBridge.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ntp/LogoBridge.java
@@ -7,6 +7,7 @@
 import android.graphics.Bitmap;
 
 import org.chromium.base.annotations.CalledByNative;
+import org.chromium.base.annotations.NativeMethods;
 import org.chromium.chrome.browser.profiles.Profile;
 
 /**
@@ -69,7 +70,7 @@
      * @param profile Profile of the tab that will show the logo.
      */
     public LogoBridge(Profile profile) {
-        mNativeLogoBridge = nativeInit(profile);
+        mNativeLogoBridge = LogoBridgeJni.get().init(LogoBridge.this, profile);
     }
 
     /**
@@ -78,7 +79,7 @@
      */
     void destroy() {
         assert mNativeLogoBridge != 0;
-        nativeDestroy(mNativeLogoBridge);
+        LogoBridgeJni.get().destroy(mNativeLogoBridge, LogoBridge.this);
         mNativeLogoBridge = 0;
     }
 
@@ -90,7 +91,7 @@
      *                     the cached logo is already available.
      */
     void getCurrentLogo(LogoObserver logoObserver) {
-        nativeGetCurrentLogo(mNativeLogoBridge, logoObserver);
+        LogoBridgeJni.get().getCurrentLogo(mNativeLogoBridge, LogoBridge.this, logoObserver);
     }
 
     @CalledByNative
@@ -98,7 +99,10 @@
         return new Logo(image, onClickUrl, altText, gifUrl);
     }
 
-    private native long nativeInit(Profile profile);
-    private native void nativeGetCurrentLogo(long nativeLogoBridge, LogoObserver logoObserver);
-    private native void nativeDestroy(long nativeLogoBridge);
+    @NativeMethods
+    interface Natives {
+        long init(LogoBridge caller, Profile profile);
+        void getCurrentLogo(long nativeLogoBridge, LogoBridge caller, LogoObserver logoObserver);
+        void destroy(long nativeLogoBridge, LogoBridge caller);
+    }
 }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentTabsPagePrefs.java b/chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentTabsPagePrefs.java
index 3cf2850..7b04957f 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentTabsPagePrefs.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentTabsPagePrefs.java
@@ -4,6 +4,7 @@
 
 package org.chromium.chrome.browser.ntp;
 
+import org.chromium.base.annotations.NativeMethods;
 import org.chromium.chrome.browser.ntp.ForeignSessionHelper.ForeignSession;
 import org.chromium.chrome.browser.profiles.Profile;
 
@@ -18,7 +19,7 @@
      * @param profile Profile that will be used for syncing.
      */
     RecentTabsPagePrefs(Profile profile) {
-        mNativePrefs = nativeInit(profile);
+        mNativePrefs = RecentTabsPagePrefsJni.get().init(profile);
     }
 
     /**
@@ -26,7 +27,7 @@
      */
     void destroy() {
         assert mNativePrefs != 0;
-        nativeDestroy(mNativePrefs);
+        RecentTabsPagePrefsJni.get().destroy(mNativePrefs);
         mNativePrefs = 0;
     }
 
@@ -36,7 +37,7 @@
      * @param isCollapsed Whether we want the snapshot documents list to be collapsed.
      */
     void setSnapshotDocumentCollapsed(boolean isCollapsed) {
-        nativeSetSnapshotDocumentCollapsed(mNativePrefs, isCollapsed);
+        RecentTabsPagePrefsJni.get().setSnapshotDocumentCollapsed(mNativePrefs, isCollapsed);
     }
 
     /**
@@ -46,7 +47,7 @@
      *         the Recent Tabs page.
      */
     boolean getSnapshotDocumentCollapsed() {
-        return nativeGetSnapshotDocumentCollapsed(mNativePrefs);
+        return RecentTabsPagePrefsJni.get().getSnapshotDocumentCollapsed(mNativePrefs);
     }
 
     /**
@@ -55,7 +56,7 @@
      * @param isCollapsed Whether we want the recently closed tabs list to be collapsed.
      */
     void setRecentlyClosedTabsCollapsed(boolean isCollapsed) {
-        nativeSetRecentlyClosedTabsCollapsed(mNativePrefs, isCollapsed);
+        RecentTabsPagePrefsJni.get().setRecentlyClosedTabsCollapsed(mNativePrefs, isCollapsed);
     }
 
     /**
@@ -65,7 +66,7 @@
      *         the Recent Tabs page.
      */
     boolean getRecentlyClosedTabsCollapsed() {
-        return nativeGetRecentlyClosedTabsCollapsed(mNativePrefs);
+        return RecentTabsPagePrefsJni.get().getRecentlyClosedTabsCollapsed(mNativePrefs);
     }
 
     /**
@@ -73,7 +74,7 @@
      * @param isCollapsed Whether we want the sync promo to be collapsed.
      */
     void setSyncPromoCollapsed(boolean isCollapsed) {
-        nativeSetSyncPromoCollapsed(mNativePrefs, isCollapsed);
+        RecentTabsPagePrefsJni.get().setSyncPromoCollapsed(mNativePrefs, isCollapsed);
     }
 
     /**
@@ -81,7 +82,7 @@
      * @return Whether the sync promo is collapsed (vs expanded) on the Recent Tabs page.
      */
     boolean getSyncPromoCollapsed() {
-        return nativeGetSyncPromoCollapsed(mNativePrefs);
+        return RecentTabsPagePrefsJni.get().getSyncPromoCollapsed(mNativePrefs);
     }
 
     /**
@@ -90,7 +91,8 @@
      * @param isCollapsed Whether we want the foreign session to be collapsed.
      */
     void setForeignSessionCollapsed(ForeignSession session, boolean isCollapsed) {
-        nativeSetForeignSessionCollapsed(mNativePrefs, session.tag, isCollapsed);
+        RecentTabsPagePrefsJni.get().setForeignSessionCollapsed(
+                mNativePrefs, session.tag, isCollapsed);
     }
 
     /**
@@ -99,24 +101,21 @@
      * @return Whether the given foreign session is collapsed (vs expanded) on the Recent Tabs page.
      */
     boolean getForeignSessionCollapsed(ForeignSession session) {
-        return nativeGetForeignSessionCollapsed(mNativePrefs, session.tag);
+        return RecentTabsPagePrefsJni.get().getForeignSessionCollapsed(mNativePrefs, session.tag);
     }
 
-    private static native long nativeInit(Profile profile);
-    private static native void nativeDestroy(long nativeRecentTabsPagePrefs);
-    private static native void nativeSetSnapshotDocumentCollapsed(
-            long nativeRecentTabsPagePrefs, boolean isCollapsed);
-    private static native boolean nativeGetSnapshotDocumentCollapsed(
-            long nativeRecentTabsPagePrefs);
-    private static native void nativeSetRecentlyClosedTabsCollapsed(
-            long nativeRecentTabsPagePrefs, boolean isCollapsed);
-    private static native boolean nativeGetRecentlyClosedTabsCollapsed(
-            long nativeRecentTabsPagePrefs);
-    private static native void nativeSetSyncPromoCollapsed(
-            long nativeRecentTabsPagePrefs, boolean isCollapsed);
-    private static native boolean nativeGetSyncPromoCollapsed(long nativeRecentTabsPagePrefs);
-    private static native void nativeSetForeignSessionCollapsed(
-            long nativeRecentTabsPagePrefs, String sessionTag, boolean isCollapsed);
-    private static native boolean nativeGetForeignSessionCollapsed(
-            long nativeRecentTabsPagePrefs, String sessionTag);
+    @NativeMethods
+    interface Natives {
+        long init(Profile profile);
+        void destroy(long nativeRecentTabsPagePrefs);
+        void setSnapshotDocumentCollapsed(long nativeRecentTabsPagePrefs, boolean isCollapsed);
+        boolean getSnapshotDocumentCollapsed(long nativeRecentTabsPagePrefs);
+        void setRecentlyClosedTabsCollapsed(long nativeRecentTabsPagePrefs, boolean isCollapsed);
+        boolean getRecentlyClosedTabsCollapsed(long nativeRecentTabsPagePrefs);
+        void setSyncPromoCollapsed(long nativeRecentTabsPagePrefs, boolean isCollapsed);
+        boolean getSyncPromoCollapsed(long nativeRecentTabsPagePrefs);
+        void setForeignSessionCollapsed(
+                long nativeRecentTabsPagePrefs, String sessionTag, boolean isCollapsed);
+        boolean getForeignSessionCollapsed(long nativeRecentTabsPagePrefs, String sessionTag);
+    }
 }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentlyClosedBridge.java b/chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentlyClosedBridge.java
index 4ef0202..7fabc9a7 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentlyClosedBridge.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentlyClosedBridge.java
@@ -7,6 +7,7 @@
 import android.support.annotation.Nullable;
 
 import org.chromium.base.annotations.CalledByNative;
+import org.chromium.base.annotations.NativeMethods;
 import org.chromium.chrome.browser.profiles.Profile;
 import org.chromium.chrome.browser.tab.Tab;
 
@@ -34,13 +35,13 @@
      * @param profile The Profile whose recently closed tabs will be queried.
      */
     public RecentlyClosedBridge(Profile profile) {
-        mNativeBridge = nativeInit(profile);
+        mNativeBridge = RecentlyClosedBridgeJni.get().init(RecentlyClosedBridge.this, profile);
     }
 
     @Override
     public void destroy() {
         assert mNativeBridge != 0;
-        nativeDestroy(mNativeBridge);
+        RecentlyClosedBridgeJni.get().destroy(mNativeBridge, RecentlyClosedBridge.this);
         mNativeBridge = 0;
         mTabsUpdatedRunnable = null;
     }
@@ -53,24 +54,28 @@
     @Override
     public List<RecentlyClosedTab> getRecentlyClosedTabs(int maxTabCount) {
         List<RecentlyClosedTab> tabs = new ArrayList<RecentlyClosedTab>();
-        boolean received = nativeGetRecentlyClosedTabs(mNativeBridge, tabs, maxTabCount);
+        boolean received = RecentlyClosedBridgeJni.get().getRecentlyClosedTabs(
+                mNativeBridge, RecentlyClosedBridge.this, tabs, maxTabCount);
         return received ? tabs : null;
     }
 
     @Override
     public boolean openRecentlyClosedTab(
             Tab tab, RecentlyClosedTab recentTab, int windowOpenDisposition) {
-        return nativeOpenRecentlyClosedTab(mNativeBridge, tab, recentTab.id, windowOpenDisposition);
+        return RecentlyClosedBridgeJni.get().openRecentlyClosedTab(
+                mNativeBridge, RecentlyClosedBridge.this, tab, recentTab.id, windowOpenDisposition);
     }
 
     @Override
     public void openRecentlyClosedTab() {
-        nativeOpenMostRecentlyClosedTab(mNativeBridge);
+        RecentlyClosedBridgeJni.get().openMostRecentlyClosedTab(
+                mNativeBridge, RecentlyClosedBridge.this);
     }
 
     @Override
     public void clearRecentlyClosedTabs() {
-        nativeClearRecentlyClosedTabs(mNativeBridge);
+        RecentlyClosedBridgeJni.get().clearRecentlyClosedTabs(
+                mNativeBridge, RecentlyClosedBridge.this);
     }
 
     /**
@@ -81,12 +86,17 @@
         if (mTabsUpdatedRunnable != null) mTabsUpdatedRunnable.run();
     }
 
-    private native long nativeInit(Profile profile);
-    private native void nativeDestroy(long nativeRecentlyClosedTabsBridge);
-    private native boolean nativeGetRecentlyClosedTabs(
-            long nativeRecentlyClosedTabsBridge, List<RecentlyClosedTab> tabs, int maxTabCount);
-    private native boolean nativeOpenRecentlyClosedTab(long nativeRecentlyClosedTabsBridge,
-            Tab tab, int recentTabId, int windowOpenDisposition);
-    private native boolean nativeOpenMostRecentlyClosedTab(long nativeRecentlyClosedTabsBridge);
-    private native void nativeClearRecentlyClosedTabs(long nativeRecentlyClosedTabsBridge);
+    @NativeMethods
+    interface Natives {
+        long init(RecentlyClosedBridge caller, Profile profile);
+        void destroy(long nativeRecentlyClosedTabsBridge, RecentlyClosedBridge caller);
+        boolean getRecentlyClosedTabs(long nativeRecentlyClosedTabsBridge,
+                RecentlyClosedBridge caller, List<RecentlyClosedTab> tabs, int maxTabCount);
+        boolean openRecentlyClosedTab(long nativeRecentlyClosedTabsBridge,
+                RecentlyClosedBridge caller, Tab tab, int recentTabId, int windowOpenDisposition);
+        boolean openMostRecentlyClosedTab(
+                long nativeRecentlyClosedTabsBridge, RecentlyClosedBridge caller);
+        void clearRecentlyClosedTabs(
+                long nativeRecentlyClosedTabsBridge, RecentlyClosedBridge caller);
+    }
 }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/snippets/SnippetsBridge.java b/chrome/android/java/src/org/chromium/chrome/browser/ntp/snippets/SnippetsBridge.java
index 62e5baa8..f17ef56 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/ntp/snippets/SnippetsBridge.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ntp/snippets/SnippetsBridge.java
@@ -9,6 +9,7 @@
 import org.chromium.base.Callback;
 import org.chromium.base.ObserverList;
 import org.chromium.base.annotations.CalledByNative;
+import org.chromium.base.annotations.NativeMethods;
 import org.chromium.chrome.browser.ntp.cards.SuggestionsCategoryInfo;
 import org.chromium.chrome.browser.profiles.Profile;
 import org.chromium.chrome.browser.suggestions.ContentSuggestionsAdditionalAction;
@@ -53,13 +54,13 @@
      * @param profile Profile of the user that we will retrieve snippets for.
      */
     public SnippetsBridge(Profile profile) {
-        mNativeSnippetsBridge = nativeInit(profile);
+        mNativeSnippetsBridge = SnippetsBridgeJni.get().init(SnippetsBridge.this, profile);
     }
 
     @Override
     public void destroy() {
         assert mNativeSnippetsBridge != 0;
-        nativeDestroy(mNativeSnippetsBridge);
+        SnippetsBridgeJni.get().destroy(mNativeSnippetsBridge, SnippetsBridge.this);
         mNativeSnippetsBridge = 0;
         mObserverList.clear();
     }
@@ -68,85 +69,93 @@
      * Notifies that Chrome on Android has been upgraded.
      */
     public static void onBrowserUpgraded() {
-        nativeRemoteSuggestionsSchedulerOnBrowserUpgraded();
+        SnippetsBridgeJni.get().remoteSuggestionsSchedulerOnBrowserUpgraded();
     }
 
     /**
      * Notifies that the persistent fetching scheduler woke up.
      */
     public static void onPersistentSchedulerWakeUp() {
-        nativeRemoteSuggestionsSchedulerOnPersistentSchedulerWakeUp();
+        SnippetsBridgeJni.get().remoteSuggestionsSchedulerOnPersistentSchedulerWakeUp();
     }
 
     @Override
     public boolean areRemoteSuggestionsEnabled() {
         assert mNativeSnippetsBridge != 0;
-        return nativeAreRemoteSuggestionsEnabled(mNativeSnippetsBridge);
+        return SnippetsBridgeJni.get().areRemoteSuggestionsEnabled(
+                mNativeSnippetsBridge, SnippetsBridge.this);
     }
 
     @Override
     public void fetchRemoteSuggestions() {
         assert mNativeSnippetsBridge != 0;
-        nativeReloadSuggestions(mNativeSnippetsBridge);
+        SnippetsBridgeJni.get().reloadSuggestions(mNativeSnippetsBridge, SnippetsBridge.this);
     }
 
     @Override
     public int[] getCategories() {
         assert mNativeSnippetsBridge != 0;
-        return nativeGetCategories(mNativeSnippetsBridge);
+        return SnippetsBridgeJni.get().getCategories(mNativeSnippetsBridge, SnippetsBridge.this);
     }
 
     @Override
     @CategoryStatus
     public int getCategoryStatus(int category) {
         assert mNativeSnippetsBridge != 0;
-        return nativeGetCategoryStatus(mNativeSnippetsBridge, category);
+        return SnippetsBridgeJni.get().getCategoryStatus(
+                mNativeSnippetsBridge, SnippetsBridge.this, category);
     }
 
     @Override
     public SuggestionsCategoryInfo getCategoryInfo(int category) {
         assert mNativeSnippetsBridge != 0;
-        return nativeGetCategoryInfo(mNativeSnippetsBridge, category);
+        return SnippetsBridgeJni.get().getCategoryInfo(
+                mNativeSnippetsBridge, SnippetsBridge.this, category);
     }
 
     @Override
     public List<SnippetArticle> getSuggestionsForCategory(int category) {
         assert mNativeSnippetsBridge != 0;
-        return nativeGetSuggestionsForCategory(mNativeSnippetsBridge, category);
+        return SnippetsBridgeJni.get().getSuggestionsForCategory(
+                mNativeSnippetsBridge, SnippetsBridge.this, category);
     }
 
     @Override
     public void fetchSuggestionImage(SnippetArticle suggestion, Callback<Bitmap> callback) {
         assert mNativeSnippetsBridge != 0;
-        nativeFetchSuggestionImage(mNativeSnippetsBridge, suggestion.mCategory,
-                suggestion.mIdWithinCategory, callback);
+        SnippetsBridgeJni.get().fetchSuggestionImage(mNativeSnippetsBridge, SnippetsBridge.this,
+                suggestion.mCategory, suggestion.mIdWithinCategory, callback);
     }
 
     @Override
     public void fetchSuggestionFavicon(SnippetArticle suggestion, int minimumSizePx,
             int desiredSizePx, Callback<Bitmap> callback) {
         assert mNativeSnippetsBridge != 0;
-        nativeFetchSuggestionFavicon(mNativeSnippetsBridge, suggestion.mCategory,
-                suggestion.mIdWithinCategory, minimumSizePx, desiredSizePx, callback);
+        SnippetsBridgeJni.get().fetchSuggestionFavicon(mNativeSnippetsBridge, SnippetsBridge.this,
+                suggestion.mCategory, suggestion.mIdWithinCategory, minimumSizePx, desiredSizePx,
+                callback);
     }
 
     @Override
     public void dismissSuggestion(SnippetArticle suggestion) {
         assert mNativeSnippetsBridge != 0;
-        nativeDismissSuggestion(mNativeSnippetsBridge, suggestion.mUrl, suggestion.getGlobalRank(),
-                suggestion.mCategory, suggestion.getPerSectionRank(), suggestion.mIdWithinCategory);
+        SnippetsBridgeJni.get().dismissSuggestion(mNativeSnippetsBridge, SnippetsBridge.this,
+                suggestion.mUrl, suggestion.getGlobalRank(), suggestion.mCategory,
+                suggestion.getPerSectionRank(), suggestion.mIdWithinCategory);
     }
 
     @Override
     public void dismissCategory(@CategoryInt int category) {
         assert mNativeSnippetsBridge != 0;
-        nativeDismissCategory(mNativeSnippetsBridge, category);
+        SnippetsBridgeJni.get().dismissCategory(
+                mNativeSnippetsBridge, SnippetsBridge.this, category);
     }
 
     @Override
     public void restoreDismissedCategories() {
         assert mNativeSnippetsBridge != 0;
-        nativeRestoreDismissedCategories(mNativeSnippetsBridge);
+        SnippetsBridgeJni.get().restoreDismissedCategories(
+                mNativeSnippetsBridge, SnippetsBridge.this);
     }
 
     @Override
@@ -167,8 +176,8 @@
         // We have nice JNI support for Callbacks but not for Runnables, so wrap the Runnable
         // in a Callback and discard the parameter.
         // TODO(peconn): Use a Runnable here if they get nice JNI support.
-        nativeFetch(mNativeSnippetsBridge, category, displayedSuggestionIds, successCallback,
-                ignored -> failureRunnable.run());
+        SnippetsBridgeJni.get().fetch(mNativeSnippetsBridge, SnippetsBridge.this, category,
+                displayedSuggestionIds, successCallback, ignored -> failureRunnable.run());
     }
 
     @CalledByNative
@@ -228,28 +237,31 @@
         for (Observer observer : mObserverList) observer.onSuggestionsVisibilityChanged(category);
     }
 
-    private native long nativeInit(Profile profile);
-    private native void nativeDestroy(long nativeNTPSnippetsBridge);
-    private native void nativeReloadSuggestions(long nativeNTPSnippetsBridge);
-    private static native void nativeRemoteSuggestionsSchedulerOnPersistentSchedulerWakeUp();
-    private static native void nativeRemoteSuggestionsSchedulerOnBrowserUpgraded();
-    private native boolean nativeAreRemoteSuggestionsEnabled(long nativeNTPSnippetsBridge);
-    private native int[] nativeGetCategories(long nativeNTPSnippetsBridge);
-    private native int nativeGetCategoryStatus(long nativeNTPSnippetsBridge, int category);
-    private native SuggestionsCategoryInfo nativeGetCategoryInfo(
-            long nativeNTPSnippetsBridge, int category);
-    private native List<SnippetArticle> nativeGetSuggestionsForCategory(
-            long nativeNTPSnippetsBridge, int category);
-    private native void nativeFetchSuggestionImage(long nativeNTPSnippetsBridge, int category,
-            String idWithinCategory, Callback<Bitmap> callback);
-    private native void nativeFetchSuggestionFavicon(long nativeNTPSnippetsBridge, int category,
-            String idWithinCategory, int minimumSizePx, int desiredSizePx,
-            Callback<Bitmap> callback);
-    private native void nativeFetch(long nativeNTPSnippetsBridge, int category,
-            String[] knownSuggestions, Callback<List<SnippetArticle>> successCallback,
-            Callback<Integer> failureCallback);
-    private native void nativeDismissSuggestion(long nativeNTPSnippetsBridge, String url,
-            int globalPosition, int category, int positionInCategory, String idWithinCategory);
-    private native void nativeDismissCategory(long nativeNTPSnippetsBridge, int category);
-    private native void nativeRestoreDismissedCategories(long nativeNTPSnippetsBridge);
+    @NativeMethods
+    interface Natives {
+        long init(SnippetsBridge caller, Profile profile);
+        void destroy(long nativeNTPSnippetsBridge, SnippetsBridge caller);
+        void reloadSuggestions(long nativeNTPSnippetsBridge, SnippetsBridge caller);
+        void remoteSuggestionsSchedulerOnPersistentSchedulerWakeUp();
+        void remoteSuggestionsSchedulerOnBrowserUpgraded();
+        boolean areRemoteSuggestionsEnabled(long nativeNTPSnippetsBridge, SnippetsBridge caller);
+        int[] getCategories(long nativeNTPSnippetsBridge, SnippetsBridge caller);
+        int getCategoryStatus(long nativeNTPSnippetsBridge, SnippetsBridge caller, int category);
+        SuggestionsCategoryInfo getCategoryInfo(
+                long nativeNTPSnippetsBridge, SnippetsBridge caller, int category);
+        List<SnippetArticle> getSuggestionsForCategory(
+                long nativeNTPSnippetsBridge, SnippetsBridge caller, int category);
+        void fetchSuggestionImage(long nativeNTPSnippetsBridge, SnippetsBridge caller, int category,
+                String idWithinCategory, Callback<Bitmap> callback);
+        void fetchSuggestionFavicon(long nativeNTPSnippetsBridge, SnippetsBridge caller,
+                int category, String idWithinCategory, int minimumSizePx, int desiredSizePx,
+                Callback<Bitmap> callback);
+        void fetch(long nativeNTPSnippetsBridge, SnippetsBridge caller, int category,
+                String[] knownSuggestions, Callback<List<SnippetArticle>> successCallback,
+                Callback<Integer> failureCallback);
+        void dismissSuggestion(long nativeNTPSnippetsBridge, SnippetsBridge caller, String url,
+                int globalPosition, int category, int positionInCategory, String idWithinCategory);
+        void dismissCategory(long nativeNTPSnippetsBridge, SnippetsBridge caller, int category);
+        void restoreDismissedCategories(long nativeNTPSnippetsBridge, SnippetsBridge caller);
+    }
 }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/offlinepages/AutoFetchNotifier.java b/chrome/android/java/src/org/chromium/chrome/browser/offlinepages/AutoFetchNotifier.java
index 81690e5..ab51b8e 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/offlinepages/AutoFetchNotifier.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/offlinepages/AutoFetchNotifier.java
@@ -19,6 +19,7 @@
 import org.chromium.base.VisibleForTesting;
 import org.chromium.base.annotations.CalledByNative;
 import org.chromium.base.annotations.JNINamespace;
+import org.chromium.base.annotations.NativeMethods;
 import org.chromium.base.metrics.CachedMetrics.EnumeratedHistogramSample;
 import org.chromium.base.metrics.RecordHistogram;
 import org.chromium.chrome.R;
@@ -374,7 +375,11 @@
     }
 
     private static void cancelInProgress() {
-        nativeCancelInProgress(Profile.getLastUsedProfile());
+        AutoFetchNotifierJni.get().cancelInProgress(Profile.getLastUsedProfile());
     }
-    private static native void nativeCancelInProgress(Profile profile);
+
+    @NativeMethods
+    interface Natives {
+        void cancelInProgress(Profile profile);
+    }
 }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/offlinepages/BackgroundSchedulerBridge.java b/chrome/android/java/src/org/chromium/chrome/browser/offlinepages/BackgroundSchedulerBridge.java
index 66e67b0..d3e5545 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/offlinepages/BackgroundSchedulerBridge.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/offlinepages/BackgroundSchedulerBridge.java
@@ -10,6 +10,7 @@
 import org.chromium.base.ContextUtils;
 import org.chromium.base.annotations.CalledByNative;
 import org.chromium.base.annotations.JNINamespace;
+import org.chromium.base.annotations.NativeMethods;
 import org.chromium.chrome.browser.DeviceConditions;
 
 /**
@@ -29,9 +30,9 @@
     //     separately determine if not allowed by policy.
     public static boolean startScheduledProcessing(
             DeviceConditions deviceConditions, Callback<Boolean> callback) {
-        return nativeStartScheduledProcessing(deviceConditions.isPowerConnected(),
-                deviceConditions.getBatteryPercentage(), deviceConditions.getNetConnectionType(),
-                callback);
+        return BackgroundSchedulerBridgeJni.get().startScheduledProcessing(
+                deviceConditions.isPowerConnected(), deviceConditions.getBatteryPercentage(),
+                deviceConditions.getNetConnectionType(), callback);
     }
 
     /**
@@ -39,7 +40,7 @@
      * @return true, as it always expects to be rescheduled.
      */
     public static boolean stopScheduledProcessing() {
-        nativeStopScheduledProcessing();
+        BackgroundSchedulerBridgeJni.get().stopScheduledProcessing();
         return true;
     }
 
@@ -85,9 +86,13 @@
                 requirePowerConnected, minimumBatteryPercentage, requireUnmeteredNetwork);
     }
 
-    /** Instructs the native RequestCoordinator to start processing. */
-    private static native boolean nativeStartScheduledProcessing(boolean powerConnected,
-            int batteryPercentage, int netConnectionType, Callback<Boolean> callback);
-    /** Instructs the native RequestCoordinator to stop processing. */
-    private static native void nativeStopScheduledProcessing();
+    @NativeMethods
+    interface Natives {
+        /** Instructs the native RequestCoordinator to start processing. */
+        boolean startScheduledProcessing(boolean powerConnected, int batteryPercentage,
+                int netConnectionType, Callback<Boolean> callback);
+
+        /** Instructs the native RequestCoordinator to stop processing. */
+        void stopScheduledProcessing();
+    }
 }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/offlinepages/RequestCoordinatorBridge.java b/chrome/android/java/src/org/chromium/chrome/browser/offlinepages/RequestCoordinatorBridge.java
index 7f88318..25137897e 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/offlinepages/RequestCoordinatorBridge.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/offlinepages/RequestCoordinatorBridge.java
@@ -11,6 +11,7 @@
 import org.chromium.base.VisibleForTesting;
 import org.chromium.base.annotations.CalledByNative;
 import org.chromium.base.annotations.JNINamespace;
+import org.chromium.base.annotations.NativeMethods;
 import org.chromium.chrome.browser.profiles.Profile;
 
 import java.util.ArrayList;
@@ -52,10 +53,10 @@
      */
     @VisibleForTesting
     public void getRequestsInQueue(Callback<SavePageRequest[]> callback) {
-        nativeGetRequestsInQueue(mProfile, callback);
+        RequestCoordinatorBridgeJni.get().getRequestsInQueue(mProfile, callback);
     }
 
-    private static class RequestsRemovedCallback {
+    static class RequestsRemovedCallback {
         private final Callback<List<RequestRemovedResult>> mCallback;
 
         public RequestsRemovedCallback(Callback<List<RequestRemovedResult>> callback) {
@@ -114,7 +115,8 @@
         for (int i = 0; i < requestIdList.size(); i++) {
             requestIds[i] = requestIdList.get(i).longValue();
         }
-        nativeRemoveRequestsFromQueue(mProfile, requestIds, new RequestsRemovedCallback(callback));
+        RequestCoordinatorBridgeJni.get().removeRequestsFromQueue(
+                mProfile, requestIds, new RequestsRemovedCallback(callback));
     }
 
     /**
@@ -182,8 +184,9 @@
                 }
             }
         };
-        nativeSavePageLater(mProfile, wrapper, url, clientId.getNamespace(), clientId.getId(),
-                origin.encodeAsJsonString(), userRequested);
+        RequestCoordinatorBridgeJni.get().savePageLater(mProfile, wrapper, url,
+                clientId.getNamespace(), clientId.getId(), origin.encodeAsJsonString(),
+                userRequested);
     }
 
     /**
@@ -234,11 +237,12 @@
         savePageLater(url, clientId, userRequested, origin, callback);
     }
 
-    private static native void nativeGetRequestsInQueue(
-            Profile profile, Callback<SavePageRequest[]> callback);
-    private static native void nativeRemoveRequestsFromQueue(
-            Profile profile, long[] requestIds, RequestsRemovedCallback callback);
-    private static native void nativeSavePageLater(Profile profile, Callback<Integer> callback,
-            String url, String clientNamespace, String clientId, String origin,
-            boolean userRequested);
+    @NativeMethods
+    interface Natives {
+        void getRequestsInQueue(Profile profile, Callback<SavePageRequest[]> callback);
+        void removeRequestsFromQueue(
+                Profile profile, long[] requestIds, RequestsRemovedCallback callback);
+        void savePageLater(Profile profile, Callback<Integer> callback, String url,
+                String clientNamespace, String clientId, String origin, boolean userRequested);
+    }
 }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/offlinepages/downloads/OfflinePageDownloadBridge.java b/chrome/android/java/src/org/chromium/chrome/browser/offlinepages/downloads/OfflinePageDownloadBridge.java
index 1aebb0b..8d67b6f3 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/offlinepages/downloads/OfflinePageDownloadBridge.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/offlinepages/downloads/OfflinePageDownloadBridge.java
@@ -17,6 +17,7 @@
 import org.chromium.base.ContextUtils;
 import org.chromium.base.annotations.CalledByNative;
 import org.chromium.base.annotations.JNINamespace;
+import org.chromium.base.annotations.NativeMethods;
 import org.chromium.chrome.R;
 import org.chromium.chrome.browser.AppHooks;
 import org.chromium.chrome.browser.ChromeTabbedActivity;
@@ -65,13 +66,16 @@
     }
 
     private OfflinePageDownloadBridge() {
-        mNativeOfflinePageDownloadBridge = sIsTesting ? 0L : nativeInit();
+        mNativeOfflinePageDownloadBridge = sIsTesting
+                ? 0L
+                : OfflinePageDownloadBridgeJni.get().init(OfflinePageDownloadBridge.this);
     }
 
     /** Destroys the native portion of the bridge. */
     public void destroy() {
         if (mNativeOfflinePageDownloadBridge != 0) {
-            nativeDestroy(mNativeOfflinePageDownloadBridge);
+            OfflinePageDownloadBridgeJni.get().destroy(
+                    mNativeOfflinePageDownloadBridge, OfflinePageDownloadBridge.this);
             mNativeOfflinePageDownloadBridge = 0;
         }
     }
@@ -172,7 +176,7 @@
      * @param origin the object encapsulating application origin of the request.
      */
     public static void startDownload(Tab tab, OfflinePageOrigin origin) {
-        nativeStartDownload(tab, origin.encodeAsJsonString());
+        OfflinePageDownloadBridgeJni.get().startDownload(tab, origin.encodeAsJsonString());
     }
 
     /**
@@ -260,7 +264,10 @@
         return null;
     }
 
-    private native long nativeInit();
-    private native void nativeDestroy(long nativeOfflinePageDownloadBridge);
-    private static native void nativeStartDownload(Tab tab, String origin);
+    @NativeMethods
+    interface Natives {
+        long init(OfflinePageDownloadBridge caller);
+        void destroy(long nativeOfflinePageDownloadBridge, OfflinePageDownloadBridge caller);
+        void startDownload(Tab tab, String origin);
+    }
 }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/offlinepages/evaluation/OfflinePageEvaluationBridge.java b/chrome/android/java/src/org/chromium/chrome/browser/offlinepages/evaluation/OfflinePageEvaluationBridge.java
index a8449f2..c296329 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/offlinepages/evaluation/OfflinePageEvaluationBridge.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/offlinepages/evaluation/OfflinePageEvaluationBridge.java
@@ -10,6 +10,7 @@
 import org.chromium.base.ThreadUtils;
 import org.chromium.base.annotations.CalledByNative;
 import org.chromium.base.annotations.JNINamespace;
+import org.chromium.base.annotations.NativeMethods;
 import org.chromium.base.task.PostTask;
 import org.chromium.base.task.TaskRunner;
 import org.chromium.base.task.TaskTraits;
@@ -73,7 +74,8 @@
     public OfflinePageEvaluationBridge(Profile profile, boolean useEvaluationScheduler) {
         ThreadUtils.assertOnUiThread();
         mNativeOfflinePageEvaluationBridge =
-                nativeCreateBridgeForProfile(profile, useEvaluationScheduler);
+                OfflinePageEvaluationBridgeJni.get().createBridgeForProfile(
+                        OfflinePageEvaluationBridge.this, profile, useEvaluationScheduler);
     }
 
     private static final String TAG = "OPEvalBridge";
@@ -91,7 +93,8 @@
     /** Destroys the native portion of the bridge. */
     public void destroy() {
         if (mNativeOfflinePageEvaluationBridge != 0) {
-            nativeDestroy(mNativeOfflinePageEvaluationBridge);
+            OfflinePageEvaluationBridgeJni.get().destroy(
+                    mNativeOfflinePageEvaluationBridge, OfflinePageEvaluationBridge.this);
             mNativeOfflinePageEvaluationBridge = 0;
             mIsOfflinePageModelLoaded = false;
         }
@@ -119,7 +122,8 @@
      */
     public void getAllPages(final Callback<List<OfflinePageItem>> callback) {
         List<OfflinePageItem> result = new ArrayList<>();
-        nativeGetAllPages(mNativeOfflinePageEvaluationBridge, result, callback);
+        OfflinePageEvaluationBridgeJni.get().getAllPages(mNativeOfflinePageEvaluationBridge,
+                OfflinePageEvaluationBridge.this, result, callback);
     }
 
     /**
@@ -130,8 +134,8 @@
      */
     public void savePageLater(final String url, final String namespace, boolean userRequested) {
         ClientId clientId = ClientId.createGuidClientIdForNamespace(namespace);
-        nativeSavePageLater(mNativeOfflinePageEvaluationBridge, url, namespace, clientId.getId(),
-                userRequested);
+        OfflinePageEvaluationBridgeJni.get().savePageLater(mNativeOfflinePageEvaluationBridge,
+                OfflinePageEvaluationBridge.this, url, namespace, clientId.getId(), userRequested);
     }
 
     /**
@@ -141,7 +145,8 @@
      * otherwise.
      */
     public boolean pushRequestProcessing(final Callback<Boolean> callback) {
-        return nativePushRequestProcessing(mNativeOfflinePageEvaluationBridge, callback);
+        return OfflinePageEvaluationBridgeJni.get().pushRequestProcessing(
+                mNativeOfflinePageEvaluationBridge, OfflinePageEvaluationBridge.this, callback);
     }
 
     /**
@@ -149,7 +154,8 @@
      * @param callback The callback would be invoked with a list of requests which are in the queue.
      */
     public void getRequestsInQueue(Callback<SavePageRequest[]> callback) {
-        nativeGetRequestsInQueue(mNativeOfflinePageEvaluationBridge, callback);
+        OfflinePageEvaluationBridgeJni.get().getRequestsInQueue(
+                mNativeOfflinePageEvaluationBridge, OfflinePageEvaluationBridge.this, callback);
     }
 
     /**
@@ -162,7 +168,9 @@
         for (int i = 0; i < requestIds.size(); i++) {
             ids[i] = requestIds.get(i);
         }
-        nativeRemoveRequestsFromQueue(mNativeOfflinePageEvaluationBridge, ids, callback);
+        OfflinePageEvaluationBridgeJni.get().removeRequestsFromQueue(
+                mNativeOfflinePageEvaluationBridge, OfflinePageEvaluationBridge.this, ids,
+                callback);
     }
 
     public void setLogOutputFile(File outputFile) throws IOException {
@@ -258,18 +266,22 @@
                 fileSize, creationTime, accessCount, lastAccessTimeMs, requestOrigin);
     }
 
-    private native long nativeCreateBridgeForProfile(
-            Profile profile, boolean useEvaluationScheduler);
-    private native void nativeDestroy(long nativeOfflinePageEvaluationBridge);
-
-    private native void nativeGetAllPages(long nativeOfflinePageEvaluationBridge,
-            List<OfflinePageItem> offlinePages, final Callback<List<OfflinePageItem>> callback);
-    private native void nativeSavePageLater(long nativeOfflinePageEvaluationBridge, String url,
-            String clientNamespace, String clientId, boolean userRequested);
-    private native boolean nativePushRequestProcessing(
-            long nativeOfflinePageEvaluationBridge, Callback<Boolean> callback);
-    private native void nativeGetRequestsInQueue(
-            long nativeOfflinePageEvaluationBridge, final Callback<SavePageRequest[]> callback);
-    private native void nativeRemoveRequestsFromQueue(long nativeOfflinePageEvaluationBridge,
-            long[] requestIds, final Callback<Integer> callback);
+    @NativeMethods
+    interface Natives {
+        long createBridgeForProfile(OfflinePageEvaluationBridge caller, Profile profile,
+                boolean useEvaluationScheduler);
+        void destroy(long nativeOfflinePageEvaluationBridge, OfflinePageEvaluationBridge caller);
+        void getAllPages(long nativeOfflinePageEvaluationBridge, OfflinePageEvaluationBridge caller,
+                List<OfflinePageItem> offlinePages, final Callback<List<OfflinePageItem>> callback);
+        void savePageLater(long nativeOfflinePageEvaluationBridge,
+                OfflinePageEvaluationBridge caller, String url, String clientNamespace,
+                String clientId, boolean userRequested);
+        boolean pushRequestProcessing(long nativeOfflinePageEvaluationBridge,
+                OfflinePageEvaluationBridge caller, Callback<Boolean> callback);
+        void getRequestsInQueue(long nativeOfflinePageEvaluationBridge,
+                OfflinePageEvaluationBridge caller, final Callback<SavePageRequest[]> callback);
+        void removeRequestsFromQueue(long nativeOfflinePageEvaluationBridge,
+                OfflinePageEvaluationBridge caller, long[] requestIds,
+                final Callback<Integer> callback);
+    }
 }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/offlinepages/prefetch/PrefetchConfiguration.java b/chrome/android/java/src/org/chromium/chrome/browser/offlinepages/prefetch/PrefetchConfiguration.java
index b3113a84..78eea6ef 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/offlinepages/prefetch/PrefetchConfiguration.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/offlinepages/prefetch/PrefetchConfiguration.java
@@ -5,6 +5,7 @@
 package org.chromium.chrome.browser.offlinepages.prefetch;
 
 import org.chromium.base.annotations.JNINamespace;
+import org.chromium.base.annotations.NativeMethods;
 import org.chromium.chrome.browser.ChromeFeatureList;
 import org.chromium.chrome.browser.profiles.ProfileKey;
 
@@ -27,14 +28,15 @@
      * user setting to be true. If the current browser Profile is null this method returns false.
      */
     public static boolean isPrefetchingEnabled() {
-        return nativeIsPrefetchingEnabled(ProfileKey.getLastUsedProfileKey());
+        return PrefetchConfigurationJni.get().isPrefetchingEnabled(
+                ProfileKey.getLastUsedProfileKey());
     }
 
     /**
      * Return the value of offline_pages.enabled_by_server pref.
      */
     public static boolean isPrefetchingEnabledByServer() {
-        return nativeIsEnabledByServer(ProfileKey.getLastUsedProfileKey());
+        return PrefetchConfigurationJni.get().isEnabledByServer(ProfileKey.getLastUsedProfileKey());
     }
 
     /**
@@ -43,14 +45,16 @@
      * since the last check.
      */
     public static boolean isForbiddenCheckDue() {
-        return nativeIsForbiddenCheckDue(ProfileKey.getLastUsedProfileKey());
+        return PrefetchConfigurationJni.get().isForbiddenCheckDue(
+                ProfileKey.getLastUsedProfileKey());
     }
 
     /**
      * Returns true if the GeneratePageBundle-forbidden check has never run and is due to run.
      */
     public static boolean isEnabledByServerUnknown() {
-        return nativeIsEnabledByServerUnknown(ProfileKey.getLastUsedProfileKey());
+        return PrefetchConfigurationJni.get().isEnabledByServerUnknown(
+                ProfileKey.getLastUsedProfileKey());
     }
 
     /**
@@ -58,7 +62,8 @@
      * enabled or disabled. If the current browser Profile is null the setting will not be changed.
      */
     public static void setPrefetchingEnabledInSettings(boolean enabled) {
-        nativeSetPrefetchingEnabledInSettings(ProfileKey.getLastUsedProfileKey(), enabled);
+        PrefetchConfigurationJni.get().setPrefetchingEnabledInSettings(
+                ProfileKey.getLastUsedProfileKey(), enabled);
     }
 
     /**
@@ -66,14 +71,17 @@
      * enabled or disabled.
      */
     public static boolean isPrefetchingEnabledInSettings() {
-        return nativeIsPrefetchingEnabledInSettings(ProfileKey.getLastUsedProfileKey());
+        return PrefetchConfigurationJni.get().isPrefetchingEnabledInSettings(
+                ProfileKey.getLastUsedProfileKey());
     }
 
-    private static native boolean nativeIsPrefetchingEnabled(ProfileKey key);
-    private static native boolean nativeIsEnabledByServer(ProfileKey key);
-    private static native boolean nativeIsForbiddenCheckDue(ProfileKey key);
-    private static native boolean nativeIsEnabledByServerUnknown(ProfileKey key);
-    private static native void nativeSetPrefetchingEnabledInSettings(
-            ProfileKey key, boolean enabled);
-    private static native boolean nativeIsPrefetchingEnabledInSettings(ProfileKey key);
+    @NativeMethods
+    interface Natives {
+        boolean isPrefetchingEnabled(ProfileKey key);
+        boolean isEnabledByServer(ProfileKey key);
+        boolean isForbiddenCheckDue(ProfileKey key);
+        boolean isEnabledByServerUnknown(ProfileKey key);
+        void setPrefetchingEnabledInSettings(ProfileKey key, boolean enabled);
+        boolean isPrefetchingEnabledInSettings(ProfileKey key);
+    }
 }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/omnibox/OmniboxPrerender.java b/chrome/android/java/src/org/chromium/chrome/browser/omnibox/OmniboxPrerender.java
index 8feb6633..f553f337 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/omnibox/OmniboxPrerender.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/omnibox/OmniboxPrerender.java
@@ -4,6 +4,7 @@
 
 package org.chromium.chrome.browser.omnibox;
 
+import org.chromium.base.annotations.NativeMethods;
 import org.chromium.chrome.browser.profiles.Profile;
 import org.chromium.chrome.browser.tab.Tab;
 
@@ -23,7 +24,7 @@
      * Constructor for creating a OmniboxPrerender instanace.
      */
     public OmniboxPrerender() {
-        mNativeOmniboxPrerender = nativeInit();
+        mNativeOmniboxPrerender = OmniboxPrerenderJni.get().init(OmniboxPrerender.this);
     }
 
     /**
@@ -33,7 +34,7 @@
      * @param profile profile instance corresponding to the active profile.
      */
     public void clear(Profile profile) {
-        nativeClear(mNativeOmniboxPrerender, profile);
+        OmniboxPrerenderJni.get().clear(mNativeOmniboxPrerender, OmniboxPrerender.this, profile);
     }
 
     /**
@@ -44,7 +45,8 @@
      * @param profile profile instance corresponding to active profile.
      */
     public void initializeForProfile(Profile profile) {
-        nativeInitializeForProfile(mNativeOmniboxPrerender, profile);
+        OmniboxPrerenderJni.get().initializeForProfile(
+                mNativeOmniboxPrerender, OmniboxPrerender.this, profile);
     }
 
     /**
@@ -60,16 +62,17 @@
      */
     public void prerenderMaybe(String url, String currentUrl, long nativeAutocompleteResult,
             Profile profile, Tab tab) {
-        nativePrerenderMaybe(mNativeOmniboxPrerender, url, currentUrl, nativeAutocompleteResult,
-                profile, tab);
+        OmniboxPrerenderJni.get().prerenderMaybe(mNativeOmniboxPrerender, OmniboxPrerender.this,
+                url, currentUrl, nativeAutocompleteResult, profile, tab);
     }
 
-    private native long nativeInit();
-    private native void nativeClear(long nativeOmniboxPrerender, Profile profile);
-    private native void nativeInitializeForProfile(
-            long nativeOmniboxPrerender,
-            Profile profile);
-    private native void nativePrerenderMaybe(long nativeOmniboxPrerender, String url,
-            String currentUrl, long nativeAutocompleteResult, Profile profile,
-            Tab tab);
+    @NativeMethods
+    interface Natives {
+        long init(OmniboxPrerender caller);
+        void clear(long nativeOmniboxPrerender, OmniboxPrerender caller, Profile profile);
+        void initializeForProfile(
+                long nativeOmniboxPrerender, OmniboxPrerender caller, Profile profile);
+        void prerenderMaybe(long nativeOmniboxPrerender, OmniboxPrerender caller, String url,
+                String currentUrl, long nativeAutocompleteResult, Profile profile, Tab tab);
+    }
 }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/omnibox/OmniboxUrlEmphasizer.java b/chrome/android/java/src/org/chromium/chrome/browser/omnibox/OmniboxUrlEmphasizer.java
index 4cbc3b9..1c7dd31 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/omnibox/OmniboxUrlEmphasizer.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/omnibox/OmniboxUrlEmphasizer.java
@@ -11,6 +11,7 @@
 
 import org.chromium.base.ApiCompatibilityUtils;
 import org.chromium.base.VisibleForTesting;
+import org.chromium.base.annotations.NativeMethods;
 import org.chromium.chrome.R;
 import org.chromium.chrome.browser.profiles.Profile;
 import org.chromium.chrome.browser.util.UrlConstants;
@@ -82,7 +83,8 @@
      */
     public static EmphasizeComponentsResponse parseForEmphasizeComponents(
             Profile profile, String text) {
-        int[] emphasizeValues = nativeParseForEmphasizeComponents(profile, text);
+        int[] emphasizeValues =
+                OmniboxUrlEmphasizerJni.get().parseForEmphasizeComponents(profile, text);
         assert emphasizeValues != null;
         assert emphasizeValues.length == 4;
 
@@ -188,17 +190,19 @@
                         }
                         break;
                     case ConnectionSecurityLevel.DANGEROUS:
-                        if (emphasizeScheme)
+                        if (emphasizeScheme) {
                             colorId = useDarkColors ? R.color.default_red_dark
                                                     : R.color.default_red_light;
+                        }
                         strikeThroughScheme = true;
                         break;
                     case ConnectionSecurityLevel.EV_SECURE:
                     // Intentional fall-through:
                     case ConnectionSecurityLevel.SECURE:
-                        if (emphasizeScheme)
+                        if (emphasizeScheme) {
                             colorId = useDarkColors ? R.color.default_green_dark
                                                     : R.color.default_green_light;
+                        }
                         break;
                     default:
                         assert false;
@@ -328,5 +332,8 @@
         }
     }
 
-    private static native int[] nativeParseForEmphasizeComponents(Profile profile, String text);
+    @NativeMethods
+    interface Natives {
+        int[] parseForEmphasizeComponents(Profile profile, String text);
+    }
 }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/omnibox/OmniboxViewUtil.java b/chrome/android/java/src/org/chromium/chrome/browser/omnibox/OmniboxViewUtil.java
index fc30b4a16..64af7b65 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/omnibox/OmniboxViewUtil.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/omnibox/OmniboxViewUtil.java
@@ -3,6 +3,7 @@
 // found in the LICENSE file.
 
 package org.chromium.chrome.browser.omnibox;
+import org.chromium.base.annotations.NativeMethods;
 
 /**
  * Utilities for the Omnibox view component.
@@ -16,8 +17,11 @@
      * @return The sanitized version of the string.
      */
     public static String sanitizeTextForPaste(String clipboardString) {
-        return nativeSanitizeTextForPaste(clipboardString);
+        return OmniboxViewUtilJni.get().sanitizeTextForPaste(clipboardString);
     }
 
-    private static native String nativeSanitizeTextForPaste(String clipboardString);
+    @NativeMethods
+    interface Natives {
+        String sanitizeTextForPaste(String clipboardString);
+    }
 }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/page_info/CertificateChainHelper.java b/chrome/android/java/src/org/chromium/chrome/browser/page_info/CertificateChainHelper.java
index 4bff191e..8ecf7fdc 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/page_info/CertificateChainHelper.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/page_info/CertificateChainHelper.java
@@ -4,6 +4,7 @@
 
 package org.chromium.chrome.browser.page_info;
 
+import org.chromium.base.annotations.NativeMethods;
 import org.chromium.content_public.browser.WebContents;
 
 /**
@@ -12,8 +13,11 @@
 public class CertificateChainHelper {
 
     public static byte[][] getCertificateChain(WebContents webContents) {
-        return nativeGetCertificateChain(webContents);
+        return CertificateChainHelperJni.get().getCertificateChain(webContents);
     }
 
-    private static native byte[][] nativeGetCertificateChain(WebContents webContents);
+    @NativeMethods
+    interface Natives {
+        byte[][] getCertificateChain(WebContents webContents);
+    }
 }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/page_info/CertificateViewer.java b/chrome/android/java/src/org/chromium/chrome/browser/page_info/CertificateViewer.java
index ebaae7a..5453895 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/page_info/CertificateViewer.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/page_info/CertificateViewer.java
@@ -22,6 +22,7 @@
 import android.widget.TextView;
 
 import org.chromium.base.ApiCompatibilityUtils;
+import org.chromium.base.annotations.NativeMethods;
 import org.chromium.chrome.R;
 
 import java.io.ByteArrayInputStream;
@@ -153,40 +154,41 @@
 
         mTitles.add(sslCert.getIssuedTo().getCName());
 
-        addSectionTitle(certificateView, nativeGetCertIssuedToText());
-        addItem(certificateView, nativeGetCertInfoCommonNameText(),
+        addSectionTitle(certificateView, CertificateViewerJni.get().getCertIssuedToText());
+        addItem(certificateView, CertificateViewerJni.get().getCertInfoCommonNameText(),
                 sslCert.getIssuedTo().getCName());
-        addItem(certificateView, nativeGetCertInfoOrganizationText(),
+        addItem(certificateView, CertificateViewerJni.get().getCertInfoOrganizationText(),
                 sslCert.getIssuedTo().getOName());
-        addItem(certificateView, nativeGetCertInfoOrganizationUnitText(),
+        addItem(certificateView, CertificateViewerJni.get().getCertInfoOrganizationUnitText(),
                 sslCert.getIssuedTo().getUName());
-        addItem(certificateView, nativeGetCertInfoSerialNumberText(),
+        addItem(certificateView, CertificateViewerJni.get().getCertInfoSerialNumberText(),
                 formatBytes(x509.getSerialNumber().toByteArray(), ':'));
 
-        addSectionTitle(certificateView, nativeGetCertIssuedByText());
-        addItem(certificateView, nativeGetCertInfoCommonNameText(),
+        addSectionTitle(certificateView, CertificateViewerJni.get().getCertIssuedByText());
+        addItem(certificateView, CertificateViewerJni.get().getCertInfoCommonNameText(),
                 sslCert.getIssuedBy().getCName());
-        addItem(certificateView, nativeGetCertInfoOrganizationText(),
+        addItem(certificateView, CertificateViewerJni.get().getCertInfoOrganizationText(),
                 sslCert.getIssuedBy().getOName());
-        addItem(certificateView, nativeGetCertInfoOrganizationUnitText(),
+        addItem(certificateView, CertificateViewerJni.get().getCertInfoOrganizationUnitText(),
                 sslCert.getIssuedBy().getUName());
 
-        addSectionTitle(certificateView, nativeGetCertValidityText());
+        addSectionTitle(certificateView, CertificateViewerJni.get().getCertValidityText());
         DateFormat dateFormat = DateFormat.getDateInstance(DateFormat.MEDIUM);
-        addItem(certificateView, nativeGetCertIssuedOnText(),
+        addItem(certificateView, CertificateViewerJni.get().getCertIssuedOnText(),
                 dateFormat.format(sslCert.getValidNotBeforeDate()));
-        addItem(certificateView, nativeGetCertExpiresOnText(),
+        addItem(certificateView, CertificateViewerJni.get().getCertExpiresOnText(),
                 dateFormat.format(sslCert.getValidNotAfterDate()));
 
-        addSectionTitle(certificateView, nativeGetCertFingerprintsText());
-        addItem(certificateView, nativeGetCertSHA256FingerprintText(),
+        addSectionTitle(certificateView, CertificateViewerJni.get().getCertFingerprintsText());
+        addItem(certificateView, CertificateViewerJni.get().getCertSHA256FingerprintText(),
                 formatBytes(sha256Digest, ' '));
-        addItem(certificateView, nativeGetCertSHA1FingerprintText(), formatBytes(sha1Digest, ' '));
+        addItem(certificateView, CertificateViewerJni.get().getCertSHA1FingerprintText(),
+                formatBytes(sha1Digest, ' '));
 
         List<String> subjectAltNames = getSubjectAlternativeNames(x509);
         if (!subjectAltNames.isEmpty()) {
-            addSectionTitle(certificateView, nativeGetCertExtensionText());
-            addLabel(certificateView, nativeGetCertSANText());
+            addSectionTitle(certificateView, CertificateViewerJni.get().getCertExtensionText());
+            addLabel(certificateView, CertificateViewerJni.get().getCertSANText());
             for (String name : subjectAltNames) {
                 addValue(certificateView, name);
             }
@@ -282,18 +284,21 @@
     public void onNothingSelected(AdapterView<?> parent) {
     }
 
-    private static native String nativeGetCertIssuedToText();
-    private static native String nativeGetCertInfoCommonNameText();
-    private static native String nativeGetCertInfoOrganizationText();
-    private static native String nativeGetCertInfoSerialNumberText();
-    private static native String nativeGetCertInfoOrganizationUnitText();
-    private static native String nativeGetCertIssuedByText();
-    private static native String nativeGetCertValidityText();
-    private static native String nativeGetCertIssuedOnText();
-    private static native String nativeGetCertExpiresOnText();
-    private static native String nativeGetCertFingerprintsText();
-    private static native String nativeGetCertSHA256FingerprintText();
-    private static native String nativeGetCertSHA1FingerprintText();
-    private static native String nativeGetCertExtensionText();
-    private static native String nativeGetCertSANText();
+    @NativeMethods
+    interface Natives {
+        String getCertIssuedToText();
+        String getCertInfoCommonNameText();
+        String getCertInfoOrganizationText();
+        String getCertInfoSerialNumberText();
+        String getCertInfoOrganizationUnitText();
+        String getCertIssuedByText();
+        String getCertValidityText();
+        String getCertIssuedOnText();
+        String getCertExpiresOnText();
+        String getCertFingerprintsText();
+        String getCertSHA256FingerprintText();
+        String getCertSHA1FingerprintText();
+        String getCertExtensionText();
+        String getCertSANText();
+    }
 }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/page_info/ConnectionInfoPopup.java b/chrome/android/java/src/org/chromium/chrome/browser/page_info/ConnectionInfoPopup.java
index 4955181..7448ecfd 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/page_info/ConnectionInfoPopup.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/page_info/ConnectionInfoPopup.java
@@ -21,6 +21,7 @@
 import org.chromium.base.ApiCompatibilityUtils;
 import org.chromium.base.Log;
 import org.chromium.base.annotations.CalledByNative;
+import org.chromium.base.annotations.NativeMethods;
 import org.chromium.chrome.R;
 import org.chromium.chrome.browser.ResourceId;
 import org.chromium.chrome.browser.tab.Tab;
@@ -74,7 +75,7 @@
                 mPaddingWide - mPaddingThin);
 
         // This needs to come after other member initialization.
-        mNativeConnectionInfoPopup = nativeInit(this, mWebContents);
+        mNativeConnectionInfoPopup = ConnectionInfoPopupJni.get().init(this, mWebContents);
         mWebContentsObserver = new WebContentsObserver(mWebContents) {
             @Override
             public void navigationEntryCommitted() {
@@ -195,7 +196,8 @@
     @Override
     public void onClick(View v) {
         if (mResetCertDecisionsButton == v) {
-            nativeResetCertDecisions(mNativeConnectionInfoPopup, mWebContents);
+            ConnectionInfoPopupJni.get().resetCertDecisions(
+                    mNativeConnectionInfoPopup, ConnectionInfoPopup.this, mWebContents);
             dismissDialog(DialogDismissalCause.ACTION_ON_CONTENT);
         } else if (mCertificateViewerTextView == v) {
             byte[][] certChain = CertificateChainHelper.getCertificateChain(mWebContents);
@@ -229,7 +231,7 @@
     public void onDismiss(PropertyModel model, int dismissalCause) {
         assert mNativeConnectionInfoPopup != 0;
         mWebContentsObserver.destroy();
-        nativeDestroy(mNativeConnectionInfoPopup);
+        ConnectionInfoPopupJni.get().destroy(mNativeConnectionInfoPopup, ConnectionInfoPopup.this);
         mDialogModel = null;
     }
 
@@ -260,9 +262,11 @@
         new ConnectionInfoPopup(context, tab);
     }
 
-    private static native long nativeInit(ConnectionInfoPopup popup,
-            WebContents webContents);
-    private native void nativeDestroy(long nativeConnectionInfoPopupAndroid);
-    private native void nativeResetCertDecisions(
-            long nativeConnectionInfoPopupAndroid, WebContents webContents);
+    @NativeMethods
+    interface Natives {
+        long init(ConnectionInfoPopup popup, WebContents webContents);
+        void destroy(long nativeConnectionInfoPopupAndroid, ConnectionInfoPopup caller);
+        void resetCertDecisions(long nativeConnectionInfoPopupAndroid, ConnectionInfoPopup caller,
+                WebContents webContents);
+    }
 }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/page_info/PageInfoController.java b/chrome/android/java/src/org/chromium/chrome/browser/page_info/PageInfoController.java
index e05da709..b1e5838 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/page_info/PageInfoController.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/page_info/PageInfoController.java
@@ -24,6 +24,7 @@
 import org.chromium.base.ApiCompatibilityUtils;
 import org.chromium.base.VisibleForTesting;
 import org.chromium.base.annotations.CalledByNative;
+import org.chromium.base.annotations.NativeMethods;
 import org.chromium.base.metrics.RecordUserAction;
 import org.chromium.chrome.R;
 import org.chromium.chrome.browser.feature_engagement.TrackerFactory;
@@ -265,7 +266,7 @@
                 mContext, mWindowAndroid, mFullUrl, this, mView::setPermissions);
 
         // This needs to come after other member initialization.
-        mNativePageInfoController = nativeInit(this, mTab.getWebContents());
+        mNativePageInfoController = PageInfoControllerJni.get().init(this, mTab.getWebContents());
         mWebContentsObserver = new WebContentsObserver(mTab.getWebContents()) {
             @Override
             public void navigationEntryCommitted() {
@@ -462,13 +463,14 @@
             mPendingRunAfterDismissTask = null;
         }
         mWebContentsObserver.destroy();
-        nativeDestroy(mNativePageInfoController);
+        PageInfoControllerJni.get().destroy(mNativePageInfoController, PageInfoController.this);
         mNativePageInfoController = 0;
     }
 
     private void recordAction(int action) {
         if (mNativePageInfoController != 0) {
-            nativeRecordPageInfoAction(mNativePageInfoController, action);
+            PageInfoControllerJni.get().recordPageInfoAction(
+                    mNativePageInfoController, PageInfoController.this, action);
         }
     }
 
@@ -568,10 +570,11 @@
                 offlinePageCreationDate, offlinePageState, previewPageState, contentPublisher);
     }
 
-    private static native long nativeInit(PageInfoController controller, WebContents webContents);
-
-    private native void nativeDestroy(long nativePageInfoControllerAndroid);
-
-    private native void nativeRecordPageInfoAction(
-            long nativePageInfoControllerAndroid, int action);
+    @NativeMethods
+    interface Natives {
+        long init(PageInfoController controller, WebContents webContents);
+        void destroy(long nativePageInfoControllerAndroid, PageInfoController caller);
+        void recordPageInfoAction(
+                long nativePageInfoControllerAndroid, PageInfoController caller, int action);
+    }
 }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/partnerbookmarks/PartnerBookmarksReader.java b/chrome/android/java/src/org/chromium/chrome/browser/partnerbookmarks/PartnerBookmarksReader.java
index 91e8f03..075dd0f 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/partnerbookmarks/PartnerBookmarksReader.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/partnerbookmarks/PartnerBookmarksReader.java
@@ -8,6 +8,7 @@
 
 import org.chromium.base.Log;
 import org.chromium.base.annotations.CalledByNative;
+import org.chromium.base.annotations.NativeMethods;
 import org.chromium.base.metrics.RecordHistogram;
 import org.chromium.base.task.AsyncTask;
 import org.chromium.chrome.browser.AppHooks;
@@ -78,7 +79,7 @@
      * A callback used to indicate success or failure of favicon fetching when retrieving favicons
      * from cache or server.
      */
-    private interface FetchFaviconCallback {
+    interface FetchFaviconCallback {
         @CalledByNative("FetchFaviconCallback")
         void onFaviconFetched(@FaviconFetchResult int result);
 
@@ -92,7 +93,8 @@
      */
     public PartnerBookmarksReader(Context context) {
         mContext = context;
-        mNativePartnerBookmarksReader = nativeInit();
+        mNativePartnerBookmarksReader =
+                PartnerBookmarksReaderJni.get().init(PartnerBookmarksReader.this);
         initializeAndDisableEditingIfNecessary();
     }
 
@@ -121,7 +123,7 @@
      */
     public void readBookmarks() {
         if (mNativePartnerBookmarksReader == 0) {
-            assert false : "readBookmarks called after nativeDestroy.";
+            assert false : "readBookmarks called after PartnerBookmarksReaderJni.get().destroy.";
             return;
         }
         new ReadBookmarksTask().executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
@@ -151,7 +153,8 @@
                         // this so we can refresh bookmarks when all favicons are fetched.
                         mFaviconsFetchedFromServer = true;
                         for (FaviconUpdateObserver observer : sFaviconUpdateObservers) {
-                            observer.onUpdateFavicon(nativeGetNativeUrlString(url));
+                            observer.onUpdateFavicon(
+                                    PartnerBookmarksReaderJni.get().getNativeUrlString(url));
                         }
                     }
                     mFaviconThrottle.onFaviconFetched(url, result);
@@ -169,8 +172,8 @@
                 }
             }
         };
-        return nativeAddPartnerBookmark(mNativePartnerBookmarksReader, url, title, isFolder,
-                parentId, favicon, touchicon,
+        return PartnerBookmarksReaderJni.get().addPartnerBookmark(mNativePartnerBookmarksReader,
+                PartnerBookmarksReader.this, url, title, isFolder, parentId, favicon, touchicon,
                 mFaviconThrottle.shouldFetchFromServerIfNecessary(url),
                 ViewUtils.dpToPx(mContext, DESIRED_FAVICON_SIZE_DP), callback);
     }
@@ -180,7 +183,8 @@
      * down the bookmark reader.
      */
     protected void onBookmarksRead() {
-        nativePartnerBookmarksCreationComplete(mNativePartnerBookmarksReader);
+        PartnerBookmarksReaderJni.get().partnerBookmarksCreationComplete(
+                mNativePartnerBookmarksReader, PartnerBookmarksReader.this);
         mFinishedReading = true;
         synchronized (mProgressLock) {
             if (mNumFaviconsInProgress == 0) {
@@ -207,7 +211,8 @@
                     observer.onCompletedFaviconLoading();
                 }
             }
-            nativeDestroy(mNativePartnerBookmarksReader);
+            PartnerBookmarksReaderJni.get().destroy(
+                    mNativePartnerBookmarksReader, PartnerBookmarksReader.this);
             mNativePartnerBookmarksReader = 0;
             mShutDown = true;
         }
@@ -357,7 +362,7 @@
      */
     public static void disablePartnerBookmarksEditing() {
         sForceDisableEditing = true;
-        if (sInitialized) nativeDisablePartnerBookmarksEditing();
+        if (sInitialized) PartnerBookmarksReaderJni.get().disablePartnerBookmarksEditing();
     }
 
     private static void initializeAndDisableEditingIfNecessary() {
@@ -365,15 +370,19 @@
         if (sForceDisableEditing) disablePartnerBookmarksEditing();
     }
 
-    // JNI
-    private native long nativeInit();
-    private native void nativeReset(long nativePartnerBookmarksReader);
-    private native void nativeDestroy(long nativePartnerBookmarksReader);
-    private native long nativeAddPartnerBookmark(long nativePartnerBookmarksReader, String url,
-            String title, boolean isFolder, long parentId, byte[] favicon, byte[] touchicon,
-            boolean fetchUncachedFaviconsFromServer, int desiredFaviconSizePx,
-            FetchFaviconCallback callback);
-    private native void nativePartnerBookmarksCreationComplete(long nativePartnerBookmarksReader);
-    private static native String nativeGetNativeUrlString(String url);
-    private static native void nativeDisablePartnerBookmarksEditing();
+    @NativeMethods
+    interface Natives {
+        long init(PartnerBookmarksReader caller);
+
+        void reset(long nativePartnerBookmarksReader, PartnerBookmarksReader caller);
+        void destroy(long nativePartnerBookmarksReader, PartnerBookmarksReader caller);
+        long addPartnerBookmark(long nativePartnerBookmarksReader, PartnerBookmarksReader caller,
+                String url, String title, boolean isFolder, long parentId, byte[] favicon,
+                byte[] touchicon, boolean fetchUncachedFaviconsFromServer, int desiredFaviconSizePx,
+                FetchFaviconCallback callback);
+        void partnerBookmarksCreationComplete(
+                long nativePartnerBookmarksReader, PartnerBookmarksReader caller);
+        String getNativeUrlString(String url);
+        void disablePartnerBookmarksEditing();
+    }
 }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/password_manager/AccountChooserDialog.java b/chrome/android/java/src/org/chromium/chrome/browser/password_manager/AccountChooserDialog.java
index b689cbe..8ad865a4 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/password_manager/AccountChooserDialog.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/password_manager/AccountChooserDialog.java
@@ -29,6 +29,7 @@
 import android.widget.TextView;
 
 import org.chromium.base.annotations.CalledByNative;
+import org.chromium.base.annotations.NativeMethods;
 import org.chromium.chrome.R;
 import org.chromium.chrome.browser.signin.ProfileDataCache;
 import org.chromium.components.url_formatter.UrlFormatter;
@@ -177,7 +178,8 @@
             spanableTitle.setSpan(new ClickableSpan() {
                 @Override
                 public void onClick(View view) {
-                    nativeOnLinkClicked(mNativeAccountChooserDialog);
+                    AccountChooserDialogJni.get().onLinkClicked(
+                            mNativeAccountChooserDialog, AccountChooserDialog.this);
                     mDialog.dismiss();
                 }
             }, mTitleLinkStart, mTitleLinkEnd, Spanned.SPAN_INCLUSIVE_INCLUSIVE);
@@ -287,7 +289,8 @@
         assert mNativeAccountChooserDialog != 0;
         assert !mIsDestroyed;
         mIsDestroyed = true;
-        nativeDestroy(mNativeAccountChooserDialog);
+        AccountChooserDialogJni.get().destroy(
+                mNativeAccountChooserDialog, AccountChooserDialog.this);
         mNativeAccountChooserDialog = 0;
         mDialog = null;
     }
@@ -311,18 +314,22 @@
     public void onDismiss(DialogInterface dialog) {
         if (!mWasDismissedByNative) {
             if (mCredential != null) {
-                nativeOnCredentialClicked(mNativeAccountChooserDialog, mCredential.getIndex(),
-                        mSigninButtonClicked);
+                AccountChooserDialogJni.get().onCredentialClicked(mNativeAccountChooserDialog,
+                        AccountChooserDialog.this, mCredential.getIndex(), mSigninButtonClicked);
             } else {
-                nativeCancelDialog(mNativeAccountChooserDialog);
+                AccountChooserDialogJni.get().cancelDialog(
+                        mNativeAccountChooserDialog, AccountChooserDialog.this);
             }
         }
         destroy();
     }
 
-    private native void nativeOnCredentialClicked(long nativeAccountChooserDialogAndroid,
-            int credentialId, boolean signinButtonClicked);
-    private native void nativeCancelDialog(long nativeAccountChooserDialogAndroid);
-    private native void nativeDestroy(long nativeAccountChooserDialogAndroid);
-    private native void nativeOnLinkClicked(long nativeAccountChooserDialogAndroid);
+    @NativeMethods
+    interface Natives {
+        void onCredentialClicked(long nativeAccountChooserDialogAndroid,
+                AccountChooserDialog caller, int credentialId, boolean signinButtonClicked);
+        void cancelDialog(long nativeAccountChooserDialogAndroid, AccountChooserDialog caller);
+        void destroy(long nativeAccountChooserDialogAndroid, AccountChooserDialog caller);
+        void onLinkClicked(long nativeAccountChooserDialogAndroid, AccountChooserDialog caller);
+    }
 }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/password_manager/AutoSigninFirstRunDialog.java b/chrome/android/java/src/org/chromium/chrome/browser/password_manager/AutoSigninFirstRunDialog.java
index cb749001..8a07c21b 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/password_manager/AutoSigninFirstRunDialog.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/password_manager/AutoSigninFirstRunDialog.java
@@ -17,6 +17,7 @@
 import android.widget.TextView;
 
 import org.chromium.base.annotations.CalledByNative;
+import org.chromium.base.annotations.NativeMethods;
 import org.chromium.chrome.R;
 import org.chromium.ui.base.WindowAndroid;
 
@@ -80,7 +81,8 @@
             spanableExplanation.setSpan(new ClickableSpan() {
                 @Override
                 public void onClick(View view) {
-                    nativeOnLinkClicked(mNativeAutoSigninFirstRunDialog);
+                    AutoSigninFirstRunDialogJni.get().onLinkClicked(
+                            mNativeAutoSigninFirstRunDialog, AutoSigninFirstRunDialog.this);
                     mDialog.dismiss();
                 }
             }, mExplanationLinkStart, mExplanationLinkEnd, Spanned.SPAN_INCLUSIVE_INCLUSIVE);
@@ -101,9 +103,11 @@
     @Override
     public void onClick(DialogInterface dialog, int whichButton) {
         if (whichButton == DialogInterface.BUTTON_NEGATIVE) {
-            nativeOnTurnOffClicked(mNativeAutoSigninFirstRunDialog);
+            AutoSigninFirstRunDialogJni.get().onTurnOffClicked(
+                    mNativeAutoSigninFirstRunDialog, AutoSigninFirstRunDialog.this);
         } else if (whichButton == DialogInterface.BUTTON_POSITIVE) {
-            nativeOnOkClicked(mNativeAutoSigninFirstRunDialog);
+            AutoSigninFirstRunDialogJni.get().onOkClicked(
+                    mNativeAutoSigninFirstRunDialog, AutoSigninFirstRunDialog.this);
         }
     }
 
@@ -114,7 +118,8 @@
 
     private void destroy() {
         assert mNativeAutoSigninFirstRunDialog != 0;
-        nativeDestroy(mNativeAutoSigninFirstRunDialog);
+        AutoSigninFirstRunDialogJni.get().destroy(
+                mNativeAutoSigninFirstRunDialog, AutoSigninFirstRunDialog.this);
         mNativeAutoSigninFirstRunDialog = 0;
         mDialog = null;
     }
@@ -126,8 +131,14 @@
         mDialog.dismiss();
     }
 
-    private native void nativeOnTurnOffClicked(long nativeAutoSigninFirstRunDialogAndroid);
-    private native void nativeOnOkClicked(long nativeAutoSigninFirstRunDialogAndroid);
-    private native void nativeDestroy(long nativeAutoSigninFirstRunDialogAndroid);
-    private native void nativeOnLinkClicked(long nativeAutoSigninFirstRunDialogAndroid);
+    @NativeMethods
+    interface Natives {
+        void onTurnOffClicked(
+                long nativeAutoSigninFirstRunDialogAndroid, AutoSigninFirstRunDialog caller);
+        void onOkClicked(
+                long nativeAutoSigninFirstRunDialogAndroid, AutoSigninFirstRunDialog caller);
+        void destroy(long nativeAutoSigninFirstRunDialogAndroid, AutoSigninFirstRunDialog caller);
+        void onLinkClicked(
+                long nativeAutoSigninFirstRunDialogAndroid, AutoSigninFirstRunDialog caller);
+    }
 }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/password_manager/CredentialLeakDialogBridge.java b/chrome/android/java/src/org/chromium/chrome/browser/password_manager/CredentialLeakDialogBridge.java
index 9033d42..6b43f25c 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/password_manager/CredentialLeakDialogBridge.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/password_manager/CredentialLeakDialogBridge.java
@@ -4,6 +4,7 @@
 package org.chromium.chrome.browser.password_manager;
 
 import org.chromium.base.annotations.CalledByNative;
+import org.chromium.base.annotations.NativeMethods;
 import org.chromium.chrome.R;
 import org.chromium.chrome.browser.ChromeActivity;
 import org.chromium.ui.base.WindowAndroid;
@@ -49,17 +50,25 @@
         if (mNativeCredentialLeakDialogViewAndroid == 0) return;
         switch (dismissalCause) {
             case DialogDismissalCause.POSITIVE_BUTTON_CLICKED:
-                nativeAccepted(mNativeCredentialLeakDialogViewAndroid);
+                CredentialLeakDialogBridgeJni.get().accepted(
+                        mNativeCredentialLeakDialogViewAndroid, CredentialLeakDialogBridge.this);
                 return;
             case DialogDismissalCause.NEGATIVE_BUTTON_CLICKED:
-                nativeCancelled(mNativeCredentialLeakDialogViewAndroid);
+                CredentialLeakDialogBridgeJni.get().cancelled(
+                        mNativeCredentialLeakDialogViewAndroid, CredentialLeakDialogBridge.this);
                 return;
             default:
-                nativeClosed(mNativeCredentialLeakDialogViewAndroid);
+                CredentialLeakDialogBridgeJni.get().closed(
+                        mNativeCredentialLeakDialogViewAndroid, CredentialLeakDialogBridge.this);
         }
     }
 
-    private native void nativeAccepted(long nativeCredentialLeakDialogViewAndroid);
-    private native void nativeCancelled(long nativeCredentialLeakDialogViewAndroid);
-    private native void nativeClosed(long nativeCredentialLeakDialogViewAndroid);
+    @NativeMethods
+    interface Natives {
+        void accepted(
+                long nativeCredentialLeakDialogViewAndroid, CredentialLeakDialogBridge caller);
+        void cancelled(
+                long nativeCredentialLeakDialogViewAndroid, CredentialLeakDialogBridge caller);
+        void closed(long nativeCredentialLeakDialogViewAndroid, CredentialLeakDialogBridge caller);
+    }
 }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/password_manager/OnboardingDialogBridge.java b/chrome/android/java/src/org/chromium/chrome/browser/password_manager/OnboardingDialogBridge.java
index 42d6d8bfa..998435e 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/password_manager/OnboardingDialogBridge.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/password_manager/OnboardingDialogBridge.java
@@ -10,6 +10,7 @@
 import android.content.res.Resources;
 
 import org.chromium.base.annotations.CalledByNative;
+import org.chromium.base.annotations.NativeMethods;
 import org.chromium.chrome.R;
 import org.chromium.chrome.browser.ChromeActivity;
 import org.chromium.ui.base.WindowAndroid;
@@ -76,18 +77,24 @@
         if (mNativeOnboardingDialogView == 0) return;
         switch (dismissalCause) {
             case DialogDismissalCause.POSITIVE_BUTTON_CLICKED:
-                nativeOnboardingAccepted(mNativeOnboardingDialogView);
+                OnboardingDialogBridgeJni.get().onboardingAccepted(
+                        mNativeOnboardingDialogView, OnboardingDialogBridge.this);
                 return;
             case DialogDismissalCause.NEGATIVE_BUTTON_CLICKED:
-                nativeOnboardingRejected(mNativeOnboardingDialogView);
+                OnboardingDialogBridgeJni.get().onboardingRejected(
+                        mNativeOnboardingDialogView, OnboardingDialogBridge.this);
                 return;
 
             default:
-                nativeOnboardingAborted(mNativeOnboardingDialogView);
+                OnboardingDialogBridgeJni.get().onboardingAborted(
+                        mNativeOnboardingDialogView, OnboardingDialogBridge.this);
         }
     }
 
-    private native void nativeOnboardingAccepted(long nativeOnboardingDialogView);
-    private native void nativeOnboardingRejected(long nativeOnboardingDialogView);
-    private native void nativeOnboardingAborted(long nativeOnboardingDialogView);
+    @NativeMethods
+    interface Natives {
+        void onboardingAccepted(long nativeOnboardingDialogView, OnboardingDialogBridge caller);
+        void onboardingRejected(long nativeOnboardingDialogView, OnboardingDialogBridge caller);
+        void onboardingAborted(long nativeOnboardingDialogView, OnboardingDialogBridge caller);
+    }
 }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/password_manager/PasswordGenerationDialogBridge.java b/chrome/android/java/src/org/chromium/chrome/browser/password_manager/PasswordGenerationDialogBridge.java
index c5ae883..cd73713 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/password_manager/PasswordGenerationDialogBridge.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/password_manager/PasswordGenerationDialogBridge.java
@@ -5,6 +5,7 @@
 package org.chromium.chrome.browser.password_manager;
 
 import org.chromium.base.annotations.CalledByNative;
+import org.chromium.base.annotations.NativeMethods;
 import org.chromium.chrome.browser.ChromeActivity;
 import org.chromium.ui.base.WindowAndroid;
 import org.chromium.ui.modaldialog.DialogDismissalCause;
@@ -49,14 +50,22 @@
         if (mNativePasswordGenerationDialogViewAndroid == 0) return;
 
         if (accepted) {
-            nativePasswordAccepted(mNativePasswordGenerationDialogViewAndroid, mGeneratedPassword);
+            PasswordGenerationDialogBridgeJni.get().passwordAccepted(
+                    mNativePasswordGenerationDialogViewAndroid, PasswordGenerationDialogBridge.this,
+                    mGeneratedPassword);
         } else {
-            nativePasswordRejected(mNativePasswordGenerationDialogViewAndroid);
+            PasswordGenerationDialogBridgeJni.get().passwordRejected(
+                    mNativePasswordGenerationDialogViewAndroid,
+                    PasswordGenerationDialogBridge.this);
         }
         mPasswordGenerationDialog.dismissDialog(DialogDismissalCause.ACTION_ON_CONTENT);
     }
 
-    private native void nativePasswordAccepted(
-            long nativePasswordGenerationDialogViewAndroid, String generatedPassword);
-    private native void nativePasswordRejected(long nativePasswordGenerationDialogViewAndroid);
+    @NativeMethods
+    interface Natives {
+        void passwordAccepted(long nativePasswordGenerationDialogViewAndroid,
+                PasswordGenerationDialogBridge caller, String generatedPassword);
+        void passwordRejected(long nativePasswordGenerationDialogViewAndroid,
+                PasswordGenerationDialogBridge caller);
+    }
 }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/password_manager/PasswordGenerationPopupBridge.java b/chrome/android/java/src/org/chromium/chrome/browser/password_manager/PasswordGenerationPopupBridge.java
index db23200..3fa6686b 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/password_manager/PasswordGenerationPopupBridge.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/password_manager/PasswordGenerationPopupBridge.java
@@ -10,6 +10,7 @@
 import android.widget.PopupWindow;
 
 import org.chromium.base.annotations.CalledByNative;
+import org.chromium.base.annotations.NativeMethods;
 import org.chromium.chrome.R;
 import org.chromium.ui.DropdownPopupWindow;
 import org.chromium.ui.base.WindowAndroid;
@@ -66,7 +67,9 @@
      */
     @Override
     public void onDismiss() {
-        nativeDismissed(mNativePasswordGenerationEditingPopupViewAndroid);
+        PasswordGenerationPopupBridgeJni.get().dismissed(
+                mNativePasswordGenerationEditingPopupViewAndroid,
+                PasswordGenerationPopupBridge.this);
     }
 
     /**
@@ -96,5 +99,9 @@
         if (mPopup != null) mPopup.dismiss();
     }
 
-    private native void nativeDismissed(long nativePasswordGenerationEditingPopupViewAndroid);
+    @NativeMethods
+    interface Natives {
+        void dismissed(long nativePasswordGenerationEditingPopupViewAndroid,
+                PasswordGenerationPopupBridge caller);
+    }
 }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/payments/CanMakePaymentQuery.java b/chrome/android/java/src/org/chromium/chrome/browser/payments/CanMakePaymentQuery.java
index ff0e9bd..9d33413b 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/payments/CanMakePaymentQuery.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/payments/CanMakePaymentQuery.java
@@ -6,6 +6,7 @@
 
 import org.chromium.base.annotations.CalledByNative;
 import org.chromium.base.annotations.JNINamespace;
+import org.chromium.base.annotations.NativeMethods;
 import org.chromium.content_public.browser.WebContents;
 import org.chromium.payments.mojom.PaymentMethodData;
 
@@ -27,7 +28,8 @@
      */
     public static boolean canQuery(WebContents webContents, String topLevelOrigin,
             String frameOrigin, Map<String, PaymentMethodData> query, boolean perMethodQuota) {
-        return nativeCanQuery(webContents, topLevelOrigin, frameOrigin, query, perMethodQuota);
+        return CanMakePaymentQueryJni.get().canQuery(
+                webContents, topLevelOrigin, frameOrigin, query, perMethodQuota);
     }
 
     @CalledByNative
@@ -44,6 +46,9 @@
 
     private CanMakePaymentQuery() {} // Do not instantiate.
 
-    private static native boolean nativeCanQuery(WebContents webContents, String topLevelOrigin,
-            String frameOrigin, Map<String, PaymentMethodData> query, boolean perMethodQuota);
+    @NativeMethods
+    interface Natives {
+        boolean canQuery(WebContents webContents, String topLevelOrigin, String frameOrigin,
+                Map<String, PaymentMethodData> query, boolean perMethodQuota);
+    }
 }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/payments/JourneyLogger.java b/chrome/android/java/src/org/chromium/chrome/browser/payments/JourneyLogger.java
index 16aac3c..49f2d09a 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/payments/JourneyLogger.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/payments/JourneyLogger.java
@@ -5,6 +5,7 @@
 package org.chromium.chrome.browser.payments;
 
 import org.chromium.base.annotations.JNINamespace;
+import org.chromium.base.annotations.NativeMethods;
 import org.chromium.content_public.browser.WebContents;
 
 /**
@@ -23,13 +24,14 @@
     public JourneyLogger(boolean isIncognito, WebContents webContents) {
         // Note that this pointer could leak the native object. The called must call destroy() to
         // ensure that the native object is destroyed.
-        mJourneyLoggerAndroid = nativeInitJourneyLoggerAndroid(isIncognito, webContents);
+        mJourneyLoggerAndroid = JourneyLoggerJni.get().initJourneyLoggerAndroid(
+                JourneyLogger.this, isIncognito, webContents);
     }
 
     /** Will destroy the native object. This class shouldn't be used afterwards. */
     public void destroy() {
         if (mJourneyLoggerAndroid != 0) {
-            nativeDestroy(mJourneyLoggerAndroid);
+            JourneyLoggerJni.get().destroy(mJourneyLoggerAndroid, JourneyLogger.this);
             mJourneyLoggerAndroid = 0;
         }
     }
@@ -45,8 +47,8 @@
     public void setNumberOfSuggestionsShown(
             int section, int number, boolean hasCompleteSuggestion) {
         assert section < Section.MAX;
-        nativeSetNumberOfSuggestionsShown(
-                mJourneyLoggerAndroid, section, number, hasCompleteSuggestion);
+        JourneyLoggerJni.get().setNumberOfSuggestionsShown(
+                mJourneyLoggerAndroid, JourneyLogger.this, section, number, hasCompleteSuggestion);
     }
 
     /**
@@ -56,7 +58,8 @@
      */
     public void incrementSelectionChanges(int section) {
         assert section < Section.MAX;
-        nativeIncrementSelectionChanges(mJourneyLoggerAndroid, section);
+        JourneyLoggerJni.get().incrementSelectionChanges(
+                mJourneyLoggerAndroid, JourneyLogger.this, section);
     }
 
     /**
@@ -66,7 +69,8 @@
      */
     public void incrementSelectionEdits(int section) {
         assert section < Section.MAX;
-        nativeIncrementSelectionEdits(mJourneyLoggerAndroid, section);
+        JourneyLoggerJni.get().incrementSelectionEdits(
+                mJourneyLoggerAndroid, JourneyLogger.this, section);
     }
 
     /**
@@ -76,7 +80,8 @@
      */
     public void incrementSelectionAdds(int section) {
         assert section < Section.MAX;
-        nativeIncrementSelectionAdds(mJourneyLoggerAndroid, section);
+        JourneyLoggerJni.get().incrementSelectionAdds(
+                mJourneyLoggerAndroid, JourneyLogger.this, section);
     }
 
     /**
@@ -85,7 +90,8 @@
      * @param value The return value of the CanMakePayment call.
      */
     public void setCanMakePaymentValue(boolean value) {
-        nativeSetCanMakePaymentValue(mJourneyLoggerAndroid, value);
+        JourneyLoggerJni.get().setCanMakePaymentValue(
+                mJourneyLoggerAndroid, JourneyLogger.this, value);
     }
 
     /**
@@ -94,7 +100,8 @@
      * @param value The return value of the HasEnrolledInstrument call.
      */
     public void setHasEnrolledInstrumentValue(boolean value) {
-        nativeSetHasEnrolledInstrumentValue(mJourneyLoggerAndroid, value);
+        JourneyLoggerJni.get().setHasEnrolledInstrumentValue(
+                mJourneyLoggerAndroid, JourneyLogger.this, value);
     }
 
     /**
@@ -108,7 +115,7 @@
 
         if (event == Event.SHOWN || event == Event.SKIPPED_SHOW) mWasPaymentRequestTriggered = true;
 
-        nativeSetEventOccurred(mJourneyLoggerAndroid, event);
+        JourneyLoggerJni.get().setEventOccurred(mJourneyLoggerAndroid, JourneyLogger.this, event);
     }
 
     /*
@@ -121,8 +128,8 @@
      */
     public void setRequestedInformation(boolean requestShipping, boolean requestEmail,
             boolean requestPhone, boolean requestName) {
-        nativeSetRequestedInformation(
-                mJourneyLoggerAndroid, requestShipping, requestEmail, requestPhone, requestName);
+        JourneyLoggerJni.get().setRequestedInformation(mJourneyLoggerAndroid, JourneyLogger.this,
+                requestShipping, requestEmail, requestPhone, requestName);
     }
 
     /*
@@ -135,8 +142,9 @@
      */
     public void setRequestedPaymentMethodTypes(boolean requestedBasicCard,
             boolean requestedMethodGoogle, boolean requestedMethodOther) {
-        nativeSetRequestedPaymentMethodTypes(mJourneyLoggerAndroid, requestedBasicCard,
-                requestedMethodGoogle, requestedMethodOther);
+        JourneyLoggerJni.get().setRequestedPaymentMethodTypes(mJourneyLoggerAndroid,
+                JourneyLogger.this, requestedBasicCard, requestedMethodGoogle,
+                requestedMethodOther);
     }
 
     /**
@@ -148,7 +156,7 @@
 
         if (!mHasRecorded) {
             mHasRecorded = true;
-            nativeSetCompleted(mJourneyLoggerAndroid);
+            JourneyLoggerJni.get().setCompleted(mJourneyLoggerAndroid, JourneyLogger.this);
         }
     }
 
@@ -165,7 +173,7 @@
         // recorded.
         if (!mHasRecorded) {
             mHasRecorded = true;
-            nativeSetAborted(mJourneyLoggerAndroid, reason);
+            JourneyLoggerJni.get().setAborted(mJourneyLoggerAndroid, JourneyLogger.this, reason);
         }
     }
 
@@ -180,7 +188,7 @@
 
         if (!mHasRecorded) {
             mHasRecorded = true;
-            nativeSetNotShown(mJourneyLoggerAndroid, reason);
+            JourneyLoggerJni.get().setNotShown(mJourneyLoggerAndroid, JourneyLogger.this, reason);
         }
     }
 
@@ -192,40 +200,46 @@
      * @param completed A boolean indicating whether the transaction has completed or not.
      */
     public void recordTransactionAmount(String currency, String value, boolean completed) {
-        nativeRecordTransactionAmount(mJourneyLoggerAndroid, currency, value, completed);
+        JourneyLoggerJni.get().recordTransactionAmount(
+                mJourneyLoggerAndroid, JourneyLogger.this, currency, value, completed);
     }
 
     /**
      * Records the time when request.show() is called.
      */
     public void setTriggerTime() {
-        nativeSetTriggerTime(mJourneyLoggerAndroid);
+        JourneyLoggerJni.get().setTriggerTime(mJourneyLoggerAndroid, JourneyLogger.this);
     }
 
-    private native long nativeInitJourneyLoggerAndroid(
-            boolean isIncognito, WebContents webContents);
-    private native void nativeDestroy(long nativeJourneyLoggerAndroid);
-    private native void nativeSetNumberOfSuggestionsShown(long nativeJourneyLoggerAndroid,
-            int section, int number, boolean hasCompleteSuggestion);
-    private native void nativeIncrementSelectionChanges(
-            long nativeJourneyLoggerAndroid, int section);
-    private native void nativeIncrementSelectionEdits(long nativeJourneyLoggerAndroid, int section);
-    private native void nativeIncrementSelectionAdds(long nativeJourneyLoggerAndroid, int section);
-    private native void nativeSetCanMakePaymentValue(
-            long nativeJourneyLoggerAndroid, boolean value);
-    private native void nativeSetHasEnrolledInstrumentValue(
-            long nativeJourneyLoggerAndroid, boolean value);
-    private native void nativeSetEventOccurred(long nativeJourneyLoggerAndroid, int event);
-    private native void nativeSetRequestedInformation(long nativeJourneyLoggerAndroid,
-            boolean requestShipping, boolean requestEmail, boolean requestPhone,
-            boolean requestName);
-    private native void nativeSetRequestedPaymentMethodTypes(long nativeJourneyLoggerAndroid,
-            boolean requestedBasicCard, boolean requestedMethodGoogle,
-            boolean requestedMethodOther);
-    private native void nativeSetCompleted(long nativeJourneyLoggerAndroid);
-    private native void nativeSetAborted(long nativeJourneyLoggerAndroid, int reason);
-    private native void nativeSetNotShown(long nativeJourneyLoggerAndroid, int reason);
-    private native void nativeRecordTransactionAmount(
-            long nativeJourneyLoggerAndroid, String currency, String value, boolean completed);
-    private native void nativeSetTriggerTime(long nativeJourneyLoggerAndroid);
+    @NativeMethods
+    interface Natives {
+        long initJourneyLoggerAndroid(
+                JourneyLogger caller, boolean isIncognito, WebContents webContents);
+        void destroy(long nativeJourneyLoggerAndroid, JourneyLogger caller);
+        void setNumberOfSuggestionsShown(long nativeJourneyLoggerAndroid, JourneyLogger caller,
+                int section, int number, boolean hasCompleteSuggestion);
+        void incrementSelectionChanges(
+                long nativeJourneyLoggerAndroid, JourneyLogger caller, int section);
+        void incrementSelectionEdits(
+                long nativeJourneyLoggerAndroid, JourneyLogger caller, int section);
+        void incrementSelectionAdds(
+                long nativeJourneyLoggerAndroid, JourneyLogger caller, int section);
+        void setCanMakePaymentValue(
+                long nativeJourneyLoggerAndroid, JourneyLogger caller, boolean value);
+        void setHasEnrolledInstrumentValue(
+                long nativeJourneyLoggerAndroid, JourneyLogger caller, boolean value);
+        void setEventOccurred(long nativeJourneyLoggerAndroid, JourneyLogger caller, int event);
+        void setRequestedInformation(long nativeJourneyLoggerAndroid, JourneyLogger caller,
+                boolean requestShipping, boolean requestEmail, boolean requestPhone,
+                boolean requestName);
+        void setRequestedPaymentMethodTypes(long nativeJourneyLoggerAndroid, JourneyLogger caller,
+                boolean requestedBasicCard, boolean requestedMethodGoogle,
+                boolean requestedMethodOther);
+        void setCompleted(long nativeJourneyLoggerAndroid, JourneyLogger caller);
+        void setAborted(long nativeJourneyLoggerAndroid, JourneyLogger caller, int reason);
+        void setNotShown(long nativeJourneyLoggerAndroid, JourneyLogger caller, int reason);
+        void recordTransactionAmount(long nativeJourneyLoggerAndroid, JourneyLogger caller,
+                String currency, String value, boolean completed);
+        void setTriggerTime(long nativeJourneyLoggerAndroid, JourneyLogger caller);
+    }
 }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/payments/PaymentManifestWebDataService.java b/chrome/android/java/src/org/chromium/chrome/browser/payments/PaymentManifestWebDataService.java
index 6c673dc..35ee5ae 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/payments/PaymentManifestWebDataService.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/payments/PaymentManifestWebDataService.java
@@ -6,6 +6,7 @@
 
 import org.chromium.base.annotations.CalledByNative;
 import org.chromium.base.annotations.JNINamespace;
+import org.chromium.base.annotations.NativeMethods;
 import org.chromium.components.payments.WebAppManifestSection;
 
 /** Java wrapper of the payment manifest web data service. */
@@ -36,14 +37,16 @@
     private long mManifestWebDataServiceAndroid;
 
     public PaymentManifestWebDataService() {
-        mManifestWebDataServiceAndroid = nativeInit();
+        mManifestWebDataServiceAndroid =
+                PaymentManifestWebDataServiceJni.get().init(PaymentManifestWebDataService.this);
     }
 
     /**
      * Destroy this class object. It destroys the native counterpart.
      */
     public void destroy() {
-        nativeDestroy(mManifestWebDataServiceAndroid);
+        PaymentManifestWebDataServiceJni.get().destroy(
+                mManifestWebDataServiceAndroid, PaymentManifestWebDataService.this);
         mManifestWebDataServiceAndroid = 0;
     }
 
@@ -56,7 +59,9 @@
      */
     public boolean getPaymentMethodManifest(
             String methodName, PaymentManifestWebDataServiceCallback callback) {
-        return nativeGetPaymentMethodManifest(mManifestWebDataServiceAndroid, methodName, callback);
+        return PaymentManifestWebDataServiceJni.get().getPaymentMethodManifest(
+                mManifestWebDataServiceAndroid, PaymentManifestWebDataService.this, methodName,
+                callback);
     }
 
     /**
@@ -68,8 +73,9 @@
      */
     public boolean getPaymentWebAppManifest(
             String appPackageName, PaymentManifestWebDataServiceCallback callback) {
-        return nativeGetPaymentWebAppManifest(
-                mManifestWebDataServiceAndroid, appPackageName, callback);
+        return PaymentManifestWebDataServiceJni.get().getPaymentWebAppManifest(
+                mManifestWebDataServiceAndroid, PaymentManifestWebDataService.this, appPackageName,
+                callback);
     }
 
     /**
@@ -80,7 +86,9 @@
      *                         applicable.
      */
     public void addPaymentMethodManifest(String methodName, String[] appIdentifiers) {
-        nativeAddPaymentMethodManifest(mManifestWebDataServiceAndroid, methodName, appIdentifiers);
+        PaymentManifestWebDataServiceJni.get().addPaymentMethodManifest(
+                mManifestWebDataServiceAndroid, PaymentManifestWebDataService.this, methodName,
+                appIdentifiers);
     }
 
     /**
@@ -89,7 +97,8 @@
      * @param manifest The manifest.
      */
     public void addPaymentWebAppManifest(WebAppManifestSection[] manifest) {
-        nativeAddPaymentWebAppManifest(mManifestWebDataServiceAndroid, manifest);
+        PaymentManifestWebDataServiceJni.get().addPaymentWebAppManifest(
+                mManifestWebDataServiceAndroid, PaymentManifestWebDataService.this, manifest);
     }
 
     @CalledByNative
@@ -124,17 +133,20 @@
         return manifestSection.fingerprints;
     }
 
-    private native long nativeInit();
-    private native void nativeDestroy(long nativePaymentManifestWebDataServiceAndroid);
-    private native boolean nativeGetPaymentMethodManifest(
-            long nativePaymentManifestWebDataServiceAndroid, String methodName,
-            PaymentManifestWebDataServiceCallback callback);
-    private native boolean nativeGetPaymentWebAppManifest(
-            long nativePaymentManifestWebDataServiceAndroid, String appPackageName,
-            PaymentManifestWebDataServiceCallback callback);
-    private native void nativeAddPaymentMethodManifest(
-            long nativePaymentManifestWebDataServiceAndroid, String methodName,
-            String[] appPackageNames);
-    private native void nativeAddPaymentWebAppManifest(
-            long nativePaymentManifestWebDataServiceAndroid, WebAppManifestSection[] manifest);
+    @NativeMethods
+    interface Natives {
+        long init(PaymentManifestWebDataService caller);
+        void destroy(long nativePaymentManifestWebDataServiceAndroid,
+                PaymentManifestWebDataService caller);
+        boolean getPaymentMethodManifest(long nativePaymentManifestWebDataServiceAndroid,
+                PaymentManifestWebDataService caller, String methodName,
+                PaymentManifestWebDataServiceCallback callback);
+        boolean getPaymentWebAppManifest(long nativePaymentManifestWebDataServiceAndroid,
+                PaymentManifestWebDataService caller, String appPackageName,
+                PaymentManifestWebDataServiceCallback callback);
+        void addPaymentMethodManifest(long nativePaymentManifestWebDataServiceAndroid,
+                PaymentManifestWebDataService caller, String methodName, String[] appPackageNames);
+        void addPaymentWebAppManifest(long nativePaymentManifestWebDataServiceAndroid,
+                PaymentManifestWebDataService caller, WebAppManifestSection[] manifest);
+    }
 }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/payments/ServiceWorkerPaymentAppBridge.java b/chrome/android/java/src/org/chromium/chrome/browser/payments/ServiceWorkerPaymentAppBridge.java
index 913e3b13..787584f 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/payments/ServiceWorkerPaymentAppBridge.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/payments/ServiceWorkerPaymentAppBridge.java
@@ -16,6 +16,7 @@
 import org.chromium.base.VisibleForTesting;
 import org.chromium.base.annotations.CalledByNative;
 import org.chromium.base.annotations.JNIAdditionalImport;
+import org.chromium.base.annotations.NativeMethods;
 import org.chromium.base.task.PostTask;
 import org.chromium.chrome.browser.ChromeActivity;
 import org.chromium.chrome.browser.ChromeFeatureList;
@@ -79,7 +80,7 @@
             boolean mayCrawl, PaymentAppFactory.PaymentAppCreatedCallback callback) {
         ThreadUtils.assertOnUiThread();
 
-        nativeGetAllPaymentApps(webContents,
+        ServiceWorkerPaymentAppBridgeJni.get().getAllPaymentApps(webContents,
                 methodData.values().toArray(new PaymentMethodData[methodData.size()]), mayCrawl,
                 callback);
     }
@@ -101,7 +102,7 @@
             });
             return;
         }
-        nativeHasServiceWorkerPaymentApps(callback);
+        ServiceWorkerPaymentAppBridgeJni.get().hasServiceWorkerPaymentApps(callback);
     }
 
     /**
@@ -123,7 +124,7 @@
             });
             return;
         }
-        nativeGetServiceWorkerPaymentAppsInfo(callback);
+        ServiceWorkerPaymentAppBridgeJni.get().getServiceWorkerPaymentAppsInfo(callback);
     }
 
     /**
@@ -156,8 +157,9 @@
             });
             return;
         }
-        nativeCanMakePayment(webContents, registrationId, swScope, paymentRequestId, origin,
-                iframeOrigin, methodData.toArray(new PaymentMethodData[0]),
+        ServiceWorkerPaymentAppBridgeJni.get().canMakePayment(webContents, registrationId, swScope,
+                paymentRequestId, origin, iframeOrigin,
+                methodData.toArray(new PaymentMethodData[0]),
                 modifiers.toArray(new PaymentDetailsModifier[0]), callback);
     }
 
@@ -195,8 +197,9 @@
             PaymentInstrument.InstrumentDetailsCallback callback) {
         ThreadUtils.assertOnUiThread();
 
-        nativeInvokePaymentApp(webContents, registrationId, swScope, origin, iframeOrigin,
-                paymentRequestId, methodData.toArray(new PaymentMethodData[0]), total,
+        ServiceWorkerPaymentAppBridgeJni.get().invokePaymentApp(webContents, registrationId,
+                swScope, origin, iframeOrigin, paymentRequestId,
+                methodData.toArray(new PaymentMethodData[0]), total,
                 modifiers.toArray(new PaymentDetailsModifier[0]),
                 host.getNativePaymentHandlerHost(), callback);
     }
@@ -229,8 +232,8 @@
             @Nullable Bitmap icon, URI swUri, URI scope, boolean useCache, String method) {
         ThreadUtils.assertOnUiThread();
 
-        nativeInstallAndInvokePaymentApp(webContents, origin, iframeOrigin, paymentRequestId,
-                methodData.toArray(new PaymentMethodData[0]), total,
+        ServiceWorkerPaymentAppBridgeJni.get().installAndInvokePaymentApp(webContents, origin,
+                iframeOrigin, paymentRequestId, methodData.toArray(new PaymentMethodData[0]), total,
                 modifiers.toArray(new PaymentDetailsModifier[0]),
                 host.getNativePaymentHandlerHost(), callback, appName, icon, swUri.toString(),
                 scope.toString(), useCache, method);
@@ -249,7 +252,8 @@
             String paymentRequestId, PaymentInstrument.AbortCallback callback) {
         ThreadUtils.assertOnUiThread();
 
-        nativeAbortPaymentApp(webContents, registrationId, swScope, paymentRequestId, callback);
+        ServiceWorkerPaymentAppBridgeJni.get().abortPaymentApp(
+                webContents, registrationId, swScope, paymentRequestId, callback);
     }
 
     /**
@@ -265,14 +269,15 @@
                 // Notify closing payment app window so as to abort payment if unsecure.
                 WebContents webContents = tab.getWebContents();
                 if (!SslValidityChecker.isValidPageInPaymentHandlerWindow(webContents)) {
-                    nativeOnClosingPaymentAppWindow(webContents,
+                    ServiceWorkerPaymentAppBridgeJni.get().onClosingPaymentAppWindow(webContents,
                             PaymentEventResponseType.PAYMENT_HANDLER_INSECURE_NAVIGATION);
                 }
             }
 
             @Override
             public void onDidAttachInterstitialPage(Tab tab) {
-                nativeOnClosingPaymentAppWindow(tab.getWebContents(),
+                ServiceWorkerPaymentAppBridgeJni.get().onClosingPaymentAppWindow(
+                        tab.getWebContents(),
                         PaymentEventResponseType.PAYMENT_HANDLER_INSECURE_NAVIGATION);
             }
         });
@@ -284,7 +289,7 @@
      * @param webContents The web contents in the opened window.
      */
     public static void onClosingPaymentAppWindow(WebContents webContents) {
-        nativeOnClosingPaymentAppWindow(
+        ServiceWorkerPaymentAppBridgeJni.get().onClosingPaymentAppWindow(
                 webContents, PaymentEventResponseType.PAYMENT_HANDLER_WINDOW_CLOSING);
     }
 
@@ -470,36 +475,31 @@
         callback.onCanMakePaymentResponse(canMakePayment);
     }
 
-    private static native void nativeGetAllPaymentApps(WebContents webContents,
-            PaymentMethodData[] methodData, boolean mayCrawlForInstallablePaymentApps,
-            PaymentAppFactory.PaymentAppCreatedCallback callback);
-
-    private static native void nativeHasServiceWorkerPaymentApps(
-            HasServiceWorkerPaymentAppsCallback callback);
-    private static native void nativeGetServiceWorkerPaymentAppsInfo(
-            GetServiceWorkerPaymentAppsInfoCallback callback);
-
-    private static native void nativeInvokePaymentApp(WebContents webContents, long registrationId,
-            String serviceWorkerScope, String topOrigin, String paymentRequestOrigin,
-            String paymentRequestId, PaymentMethodData[] methodData, PaymentItem total,
-            PaymentDetailsModifier[] modifiers, long nativePaymentHandlerObject,
-            PaymentInstrument.InstrumentDetailsCallback callback);
-
-    private static native void nativeInstallAndInvokePaymentApp(WebContents webContents,
-            String topOrigin, String paymentRequestOrigin, String paymentRequestId,
-            PaymentMethodData[] methodData, PaymentItem total, PaymentDetailsModifier[] modifiers,
-            long nativePaymentHandlerObject, PaymentInstrument.InstrumentDetailsCallback callback,
-            String appName, @Nullable Bitmap icon, String swUrl, String scope, boolean useCache,
-            String method);
-
-    private static native void nativeAbortPaymentApp(WebContents webContents, long registrationId,
-            String serviceWorkerScope, String paymentRequestId,
-            PaymentInstrument.AbortCallback callback);
-
-    private static native void nativeCanMakePayment(WebContents webContents, long registrationId,
-            String serviceWorkerScope, String paymentRequestId, String topOrigin,
-            String paymentRequestOrigin, PaymentMethodData[] methodData,
-            PaymentDetailsModifier[] modifiers, CanMakePaymentCallback callback);
-
-    private static native void nativeOnClosingPaymentAppWindow(WebContents webContents, int reason);
+    @NativeMethods
+    interface Natives {
+        void getAllPaymentApps(WebContents webContents, PaymentMethodData[] methodData,
+                boolean mayCrawlForInstallablePaymentApps,
+                PaymentAppFactory.PaymentAppCreatedCallback callback);
+        void hasServiceWorkerPaymentApps(HasServiceWorkerPaymentAppsCallback callback);
+        void getServiceWorkerPaymentAppsInfo(GetServiceWorkerPaymentAppsInfoCallback callback);
+        void invokePaymentApp(WebContents webContents, long registrationId,
+                String serviceWorkerScope, String topOrigin, String paymentRequestOrigin,
+                String paymentRequestId, PaymentMethodData[] methodData, PaymentItem total,
+                PaymentDetailsModifier[] modifiers, long nativePaymentHandlerObject,
+                PaymentInstrument.InstrumentDetailsCallback callback);
+        void installAndInvokePaymentApp(WebContents webContents, String topOrigin,
+                String paymentRequestOrigin, String paymentRequestId,
+                PaymentMethodData[] methodData, PaymentItem total,
+                PaymentDetailsModifier[] modifiers, long nativePaymentHandlerObject,
+                PaymentInstrument.InstrumentDetailsCallback callback, String appName,
+                @Nullable Bitmap icon, String swUrl, String scope, boolean useCache, String method);
+        void abortPaymentApp(WebContents webContents, long registrationId,
+                String serviceWorkerScope, String paymentRequestId,
+                PaymentInstrument.AbortCallback callback);
+        void canMakePayment(WebContents webContents, long registrationId, String serviceWorkerScope,
+                String paymentRequestId, String topOrigin, String paymentRequestOrigin,
+                PaymentMethodData[] methodData, PaymentDetailsModifier[] modifiers,
+                CanMakePaymentCallback callback);
+        void onClosingPaymentAppWindow(WebContents webContents, int reason);
+    }
 }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/payments/SslValidityChecker.java b/chrome/android/java/src/org/chromium/chrome/browser/payments/SslValidityChecker.java
index 76e7690..8c82d6c 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/payments/SslValidityChecker.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/payments/SslValidityChecker.java
@@ -5,6 +5,7 @@
 package org.chromium.chrome.browser.payments;
 
 import org.chromium.base.annotations.JNINamespace;
+import org.chromium.base.annotations.NativeMethods;
 import org.chromium.content_public.browser.WebContents;
 
 /** SSL validity checker. */
@@ -23,7 +24,7 @@
      *         contents or an empty string when the SSL certificate is valid.
      */
     public static String getInvalidSslCertificateErrorMessage(WebContents webContents) {
-        return nativeGetInvalidSslCertificateErrorMessage(webContents);
+        return SslValidityCheckerJni.get().getInvalidSslCertificateErrorMessage(webContents);
     }
 
     /**
@@ -33,12 +34,14 @@
      * @return Whether the web contents is a allowed in a payment handler window.
      */
     public static boolean isValidPageInPaymentHandlerWindow(WebContents webContents) {
-        return nativeIsValidPageInPaymentHandlerWindow(webContents);
+        return SslValidityCheckerJni.get().isValidPageInPaymentHandlerWindow(webContents);
     }
 
     private SslValidityChecker() {}
 
-    private static native String nativeGetInvalidSslCertificateErrorMessage(
-            WebContents webContents);
-    private static native boolean nativeIsValidPageInPaymentHandlerWindow(WebContents webContents);
+    @NativeMethods
+    interface Natives {
+        String getInvalidSslCertificateErrorMessage(WebContents webContents);
+        boolean isValidPageInPaymentHandlerWindow(WebContents webContents);
+    }
 }
\ No newline at end of file
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/permissions/PermissionDialogDelegate.java b/chrome/android/java/src/org/chromium/chrome/browser/permissions/PermissionDialogDelegate.java
index e3016ca8..382cfb57 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/permissions/PermissionDialogDelegate.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/permissions/PermissionDialogDelegate.java
@@ -5,6 +5,7 @@
 package org.chromium.chrome.browser.permissions;
 
 import org.chromium.base.annotations.CalledByNative;
+import org.chromium.base.annotations.NativeMethods;
 import org.chromium.chrome.browser.ResourceId;
 import org.chromium.chrome.browser.tab.Tab;
 
@@ -74,22 +75,24 @@
 
     public void onAccept() {
         assert mNativeDelegatePtr != 0;
-        nativeAccept(mNativeDelegatePtr);
+        PermissionDialogDelegateJni.get().accept(mNativeDelegatePtr, PermissionDialogDelegate.this);
     }
 
     public void onCancel() {
         assert mNativeDelegatePtr != 0;
-        nativeCancel(mNativeDelegatePtr);
+        PermissionDialogDelegateJni.get().cancel(mNativeDelegatePtr, PermissionDialogDelegate.this);
     }
 
     public void onDismiss() {
         assert mNativeDelegatePtr != 0;
-        nativeDismissed(mNativeDelegatePtr);
+        PermissionDialogDelegateJni.get().dismissed(
+                mNativeDelegatePtr, PermissionDialogDelegate.this);
     }
 
     public void destroy() {
         assert mNativeDelegatePtr != 0;
-        nativeDestroy(mNativeDelegatePtr);
+        PermissionDialogDelegateJni.get().destroy(
+                mNativeDelegatePtr, PermissionDialogDelegate.this);
         mNativeDelegatePtr = 0;
     }
 
@@ -141,8 +144,11 @@
         mSecondaryButtonText = secondaryButtonText;
     }
 
-    private native void nativeAccept(long nativePermissionDialogDelegate);
-    private native void nativeCancel(long nativePermissionDialogDelegate);
-    private native void nativeDismissed(long nativePermissionDialogDelegate);
-    private native void nativeDestroy(long nativePermissionDialogDelegate);
+    @NativeMethods
+    interface Natives {
+        void accept(long nativePermissionDialogDelegate, PermissionDialogDelegate caller);
+        void cancel(long nativePermissionDialogDelegate, PermissionDialogDelegate caller);
+        void dismissed(long nativePermissionDialogDelegate, PermissionDialogDelegate caller);
+        void destroy(long nativePermissionDialogDelegate, PermissionDialogDelegate caller);
+    }
 }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/photo_picker/DecoderService.java b/chrome/android/java/src/org/chromium/chrome/browser/photo_picker/DecoderService.java
index 2181a256..887145be 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/photo_picker/DecoderService.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/photo_picker/DecoderService.java
@@ -17,6 +17,7 @@
 import org.chromium.base.Log;
 import org.chromium.base.PathUtils;
 import org.chromium.base.annotations.MainDex;
+import org.chromium.base.annotations.NativeMethods;
 import org.chromium.base.library_loader.LibraryLoader;
 import org.chromium.base.library_loader.LibraryProcessType;
 import org.chromium.base.library_loader.ProcessInitException;
@@ -62,7 +63,7 @@
             });
 
             LibraryLoader.getInstance().ensureInitialized(LibraryProcessType.PROCESS_CHILD);
-            nativeInitializePhotoPickerSandbox();
+            DecoderServiceJni.get().initializePhotoPickerSandbox();
 
             mNativeLibraryAndSandboxInitialized = true;
         } catch (ProcessInitException e) {
@@ -149,7 +150,10 @@
         }
     };
 
-    // Initializes the seccomp-bpf sandbox when it's supported by the device. Records the sandbox
-    // status to the Android.SeccompStatus.PhotoPickerSandbox histogram.
-    private static native void nativeInitializePhotoPickerSandbox();
+    @NativeMethods
+    interface Natives {
+        // Initializes the seccomp-bpf sandbox when it's supported by the device. Records the
+        // sandbox status to the Android.SeccompStatus.PhotoPickerSandbox histogram.
+        void initializePhotoPickerSandbox();
+    }
 }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/policy/PolicyAuditor.java b/chrome/android/java/src/org/chromium/chrome/browser/policy/PolicyAuditor.java
index 877559e8..d8008d7 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/policy/PolicyAuditor.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/policy/PolicyAuditor.java
@@ -7,6 +7,7 @@
 import android.content.Context;
 import android.support.annotation.IntDef;
 
+import org.chromium.base.annotations.NativeMethods;
 import org.chromium.content_public.browser.WebContents;
 
 import java.lang.annotation.Retention;
@@ -40,5 +41,8 @@
 
     public void notifyCertificateFailure(int certificateFailure, Context context) {}
 
-    public static native int nativeGetCertificateFailure(WebContents webContents);
+    @NativeMethods
+    public interface Natives {
+        int getCertificateFailure(WebContents webContents);
+    }
 }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/prerender/ExternalPrerenderHandler.java b/chrome/android/java/src/org/chromium/chrome/browser/prerender/ExternalPrerenderHandler.java
index b98d463..75ee0bb 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/prerender/ExternalPrerenderHandler.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/prerender/ExternalPrerenderHandler.java
@@ -13,6 +13,7 @@
 
 import org.chromium.base.VisibleForTesting;
 import org.chromium.base.annotations.JNINamespace;
+import org.chromium.base.annotations.NativeMethods;
 import org.chromium.chrome.R;
 import org.chromium.chrome.browser.WebContentsFactory;
 import org.chromium.chrome.browser.profiles.Profile;
@@ -27,7 +28,7 @@
     private long mNativeExternalPrerenderHandler;
 
     public ExternalPrerenderHandler() {
-        mNativeExternalPrerenderHandler = nativeInit();
+        mNativeExternalPrerenderHandler = ExternalPrerenderHandlerJni.get().init();
     }
 
     /**
@@ -75,16 +76,16 @@
      */
     public WebContents addPrerender(Profile profile, WebContents webContents, String url,
             String referrer, Rect bounds, boolean prerenderOnCellular) {
-        return nativeAddPrerender(mNativeExternalPrerenderHandler, profile, webContents, url,
-                referrer, bounds.top, bounds.left, bounds.bottom, bounds.right,
-                prerenderOnCellular);
+        return ExternalPrerenderHandlerJni.get().addPrerender(mNativeExternalPrerenderHandler,
+                profile, webContents, url, referrer, bounds.top, bounds.left, bounds.bottom,
+                bounds.right, prerenderOnCellular);
     }
 
     /**
      * Cancel the current prerender action on this {@link ExternalPrerenderHandler}.
      */
     public void cancelCurrentPrerender() {
-        nativeCancelCurrentPrerender(mNativeExternalPrerenderHandler);
+        ExternalPrerenderHandlerJni.get().cancelCurrentPrerender(mNativeExternalPrerenderHandler);
     }
 
     /**
@@ -97,7 +98,7 @@
      */
     @VisibleForTesting
     public static boolean hasPrerenderedUrl(Profile profile, String url, WebContents webContents)  {
-        return nativeHasPrerenderedUrl(profile, url, webContents);
+        return ExternalPrerenderHandlerJni.get().hasPrerenderedUrl(profile, url, webContents);
     }
 
     /**
@@ -142,24 +143,23 @@
 
     @VisibleForTesting
     public static boolean hasRecentlyPrefetchedUrlForTesting(Profile profile, String url) {
-        return nativeHasRecentlyPrefetchedUrlForTesting(profile, url);
+        return ExternalPrerenderHandlerJni.get().hasRecentlyPrefetchedUrlForTesting(profile, url);
     }
 
     @VisibleForTesting
     public static void clearPrefetchInformationForTesting(Profile profile) {
-        nativeClearPrefetchInformationForTesting(profile);
+        ExternalPrerenderHandlerJni.get().clearPrefetchInformationForTesting(profile);
     }
 
-    private static native long nativeInit();
-    private static native WebContents nativeAddPrerender(
-            long nativeExternalPrerenderHandlerAndroid, Profile profile,
-            WebContents webContents, String url, String referrer,
-            int top, int left, int bottom, int right, boolean prerenderOnCellular);
-    private static native boolean nativeHasPrerenderedUrl(
-            Profile profile, String url, WebContents webContents);
-    private static native void nativeCancelCurrentPrerender(
-            long nativeExternalPrerenderHandlerAndroid);
-    private static native boolean nativeHasRecentlyPrefetchedUrlForTesting(
-            Profile profile, String url);
-    private static native void nativeClearPrefetchInformationForTesting(Profile profile);
+    @NativeMethods
+    interface Natives {
+        long init();
+        WebContents addPrerender(long nativeExternalPrerenderHandlerAndroid, Profile profile,
+                WebContents webContents, String url, String referrer, int top, int left, int bottom,
+                int right, boolean prerenderOnCellular);
+        boolean hasPrerenderedUrl(Profile profile, String url, WebContents webContents);
+        void cancelCurrentPrerender(long nativeExternalPrerenderHandlerAndroid);
+        boolean hasRecentlyPrefetchedUrlForTesting(Profile profile, String url);
+        void clearPrefetchInformationForTesting(Profile profile);
+    }
 }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/previews/PreviewsAndroidBridge.java b/chrome/android/java/src/org/chromium/chrome/browser/previews/PreviewsAndroidBridge.java
index c64ac21..facc299 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/previews/PreviewsAndroidBridge.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/previews/PreviewsAndroidBridge.java
@@ -4,6 +4,7 @@
 
 package org.chromium.chrome.browser.previews;
 
+import org.chromium.base.annotations.NativeMethods;
 import org.chromium.content_public.browser.WebContents;
 
 import java.net.URI;
@@ -25,11 +26,13 @@
     private final long mNativePreviewsAndroidBridge;
 
     private PreviewsAndroidBridge() {
-        mNativePreviewsAndroidBridge = nativeInit();
+        mNativePreviewsAndroidBridge =
+                PreviewsAndroidBridgeJni.get().init(PreviewsAndroidBridge.this);
     }
 
     public boolean shouldShowPreviewUI(WebContents webContents) {
-        return nativeShouldShowPreviewUI(mNativePreviewsAndroidBridge, webContents);
+        return PreviewsAndroidBridgeJni.get().shouldShowPreviewUI(
+                mNativePreviewsAndroidBridge, PreviewsAndroidBridge.this, webContents);
     }
 
     /**
@@ -48,8 +51,8 @@
      * Preview. Otherwise, the given visibleURL is returned.
      */
     public String getOriginalURL(String visibleURL) {
-        final String originalURL =
-                nativeGetLitePageRedirectOriginalURL(mNativePreviewsAndroidBridge, visibleURL);
+        final String originalURL = PreviewsAndroidBridgeJni.get().getLitePageRedirectOriginalURL(
+                mNativePreviewsAndroidBridge, PreviewsAndroidBridge.this, visibleURL);
         if (originalURL == null) return visibleURL;
         return originalURL;
     }
@@ -61,7 +64,8 @@
     public String getStalePreviewTimestamp(WebContents webContents) {
         assert shouldShowPreviewUI(webContents)
             : "getStalePreviewTimestamp called on a non-preview page";
-        return nativeGetStalePreviewTimestamp(mNativePreviewsAndroidBridge, webContents);
+        return PreviewsAndroidBridgeJni.get().getStalePreviewTimestamp(
+                mNativePreviewsAndroidBridge, PreviewsAndroidBridge.this, webContents);
     }
 
     /**
@@ -69,25 +73,30 @@
      */
     public void loadOriginal(WebContents webContents) {
         assert shouldShowPreviewUI(webContents) : "loadOriginal called on a non-preview page";
-        nativeLoadOriginal(mNativePreviewsAndroidBridge, webContents);
+        PreviewsAndroidBridgeJni.get().loadOriginal(
+                mNativePreviewsAndroidBridge, PreviewsAndroidBridge.this, webContents);
     }
 
     /**
      * Returns the committed preview type as a String.
      */
     public String getPreviewsType(WebContents webContents) {
-        return nativeGetPreviewsType(mNativePreviewsAndroidBridge, webContents);
+        return PreviewsAndroidBridgeJni.get().getPreviewsType(
+                mNativePreviewsAndroidBridge, PreviewsAndroidBridge.this, webContents);
     }
 
-    private native long nativeInit();
-    private native boolean nativeShouldShowPreviewUI(
-            long nativePreviewsAndroidBridge, WebContents webContents);
-    private native String nativeGetLitePageRedirectOriginalURL(
-            long nativePreviewsAndroidBridge, String visibleURL);
-    private native String nativeGetStalePreviewTimestamp(
-            long nativePreviewsAndroidBridge, WebContents webContents);
-    private native void nativeLoadOriginal(
-            long nativePreviewsAndroidBridge, WebContents webContents);
-    private native String nativeGetPreviewsType(
-            long nativePreviewsAndroidBridge, WebContents webContents);
+    @NativeMethods
+    interface Natives {
+        long init(PreviewsAndroidBridge caller);
+        boolean shouldShowPreviewUI(long nativePreviewsAndroidBridge, PreviewsAndroidBridge caller,
+                WebContents webContents);
+        String getLitePageRedirectOriginalURL(
+                long nativePreviewsAndroidBridge, PreviewsAndroidBridge caller, String visibleURL);
+        String getStalePreviewTimestamp(long nativePreviewsAndroidBridge,
+                PreviewsAndroidBridge caller, WebContents webContents);
+        void loadOriginal(long nativePreviewsAndroidBridge, PreviewsAndroidBridge caller,
+                WebContents webContents);
+        String getPreviewsType(long nativePreviewsAndroidBridge, PreviewsAndroidBridge caller,
+                WebContents webContents);
+    }
 }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/printing/TabPrinter.java b/chrome/android/java/src/org/chromium/chrome/browser/printing/TabPrinter.java
index 829fae5..ffa94ee 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/printing/TabPrinter.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/printing/TabPrinter.java
@@ -10,6 +10,7 @@
 import org.chromium.base.Log;
 import org.chromium.base.annotations.CalledByNative;
 import org.chromium.base.annotations.JNINamespace;
+import org.chromium.base.annotations.NativeMethods;
 import org.chromium.chrome.R;
 import org.chromium.chrome.browser.tab.Tab;
 import org.chromium.content_public.browser.WebContents;
@@ -46,7 +47,7 @@
         if (!canPrint()) return false;
         Tab tab = mTab.get();
         assert tab != null && tab.isInitialized();
-        return nativePrint(tab.getWebContents(), renderProcessId, renderFrameId);
+        return TabPrinterJni.get().print(tab.getWebContents(), renderProcessId, renderFrameId);
     }
 
     @Override
@@ -74,6 +75,8 @@
         return true;
     }
 
-    private static native boolean nativePrint(
-            WebContents webContents, int renderProcessId, int renderFrameId);
+    @NativeMethods
+    interface Natives {
+        boolean print(WebContents webContents, int renderProcessId, int renderFrameId);
+    }
 }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/provider/ChromeBrowserProvider.java b/chrome/android/java/src/org/chromium/chrome/browser/provider/ChromeBrowserProvider.java
index 70bcd28..042088c81 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/provider/ChromeBrowserProvider.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/provider/ChromeBrowserProvider.java
@@ -31,6 +31,7 @@
 import org.chromium.base.ThreadUtils;
 import org.chromium.base.VisibleForTesting;
 import org.chromium.base.annotations.CalledByNative;
+import org.chromium.base.annotations.NativeMethods;
 import org.chromium.base.library_loader.LibraryProcessType;
 import org.chromium.base.library_loader.ProcessInitException;
 import org.chromium.base.metrics.RecordHistogram;
@@ -453,7 +454,8 @@
         int result;
         switch (match) {
             case URI_MATCH_BOOKMARKS_ID :
-                result = nativeRemoveBookmark(mNativeChromeBrowserProvider, bookmarkId);
+                result = ChromeBrowserProviderJni.get().removeBookmark(
+                        mNativeChromeBrowserProvider, ChromeBrowserProvider.this, bookmarkId);
                 break;
             case URL_MATCH_API_BOOKMARK_ID:
                 result = removeBookmarkFromAPI(
@@ -511,8 +513,8 @@
                 if (values.containsKey(BOOKMARK_PARENT_ID_PARAM)) {
                     parentId = values.getAsLong(BOOKMARK_PARENT_ID_PARAM);
                 }
-                result = nativeUpdateBookmark(mNativeChromeBrowserProvider, bookmarkId, url, title,
-                        parentId);
+                result = ChromeBrowserProviderJni.get().updateBookmark(mNativeChromeBrowserProvider,
+                        ChromeBrowserProvider.this, bookmarkId, url, title, parentId);
                 updateLastModifiedBookmarkFolder(parentId);
                 break;
             case URL_MATCH_API_BOOKMARK_ID:
@@ -587,7 +589,8 @@
         if (values.containsKey(BOOKMARK_PARENT_ID_PARAM)) {
             parentId = values.getAsLong(BOOKMARK_PARENT_ID_PARAM);
         }
-        long id = nativeAddBookmark(mNativeChromeBrowserProvider, url, title, isFolder, parentId);
+        long id = ChromeBrowserProviderJni.get().addBookmark(mNativeChromeBrowserProvider,
+                ChromeBrowserProvider.this, url, title, isFolder, parentId);
         if (id == INVALID_BOOKMARK_ID) return id;
 
         if (isFolder) {
@@ -925,9 +928,9 @@
         if (row.mUrl == null) {
             throw new IllegalArgumentException("Must have a bookmark URL");
         }
-        return nativeAddBookmarkFromAPI(mNativeChromeBrowserProvider,
-                row.mUrl, row.mCreated, row.mIsBookmark, row.mDate, row.mFavicon,
-                row.mTitle, row.mVisits, row.mParentId);
+        return ChromeBrowserProviderJni.get().addBookmarkFromAPI(mNativeChromeBrowserProvider,
+                ChromeBrowserProvider.this, row.mUrl, row.mCreated, row.mIsBookmark, row.mDate,
+                row.mFavicon, row.mTitle, row.mVisits, row.mParentId);
     }
 
     private Cursor queryBookmarkFromAPI(String[] projectionIn, String selection,
@@ -939,24 +942,26 @@
             projection = projectionIn;
         }
 
-        return nativeQueryBookmarkFromAPI(mNativeChromeBrowserProvider, projection, selection,
-                selectionArgs, sortOrder);
+        return ChromeBrowserProviderJni.get().queryBookmarkFromAPI(mNativeChromeBrowserProvider,
+                ChromeBrowserProvider.this, projection, selection, selectionArgs, sortOrder);
     }
 
     private int updateBookmarkFromAPI(ContentValues values, String selection,
             String[] selectionArgs) {
         BookmarkRow row = BookmarkRow.fromContentValues(values);
-        return nativeUpdateBookmarkFromAPI(mNativeChromeBrowserProvider,
-                row.mUrl, row.mCreated, row.mIsBookmark, row.mDate,
+        return ChromeBrowserProviderJni.get().updateBookmarkFromAPI(mNativeChromeBrowserProvider,
+                ChromeBrowserProvider.this, row.mUrl, row.mCreated, row.mIsBookmark, row.mDate,
                 row.mFavicon, row.mTitle, row.mVisits, row.mParentId, selection, selectionArgs);
     }
 
     private int removeBookmarkFromAPI(String selection, String[] selectionArgs) {
-        return nativeRemoveBookmarkFromAPI(mNativeChromeBrowserProvider, selection, selectionArgs);
+        return ChromeBrowserProviderJni.get().removeBookmarkFromAPI(
+                mNativeChromeBrowserProvider, ChromeBrowserProvider.this, selection, selectionArgs);
     }
 
     private int removeHistoryFromAPI(String selection, String[] selectionArgs) {
-        return nativeRemoveHistoryFromAPI(mNativeChromeBrowserProvider, selection, selectionArgs);
+        return ChromeBrowserProviderJni.get().removeHistoryFromAPI(
+                mNativeChromeBrowserProvider, ChromeBrowserProvider.this, selection, selectionArgs);
     }
 
     @CalledByNative
@@ -979,14 +984,15 @@
         if (row.mTerm == null) {
             throw new IllegalArgumentException("Must have a search term");
         }
-        return nativeAddSearchTermFromAPI(mNativeChromeBrowserProvider, row.mTerm, row.mDate);
+        return ChromeBrowserProviderJni.get().addSearchTermFromAPI(
+                mNativeChromeBrowserProvider, ChromeBrowserProvider.this, row.mTerm, row.mDate);
     }
 
     private int updateSearchTermFromAPI(ContentValues values, String selection,
             String[] selectionArgs) {
         SearchRow row = SearchRow.fromContentValues(values);
-        return nativeUpdateSearchTermFromAPI(mNativeChromeBrowserProvider,
-                row.mTerm, row.mDate, selection, selectionArgs);
+        return ChromeBrowserProviderJni.get().updateSearchTermFromAPI(mNativeChromeBrowserProvider,
+                ChromeBrowserProvider.this, row.mTerm, row.mDate, selection, selectionArgs);
     }
 
     private Cursor querySearchTermFromAPI(String[] projectionIn, String selection,
@@ -997,13 +1003,13 @@
         } else {
             projection = projectionIn;
         }
-        return nativeQuerySearchTermFromAPI(mNativeChromeBrowserProvider, projection, selection,
-                selectionArgs, sortOrder);
+        return ChromeBrowserProviderJni.get().querySearchTermFromAPI(mNativeChromeBrowserProvider,
+                ChromeBrowserProvider.this, projection, selection, selectionArgs, sortOrder);
     }
 
     private int removeSearchFromAPI(String selection, String[] selectionArgs) {
-        return nativeRemoveSearchTermFromAPI(mNativeChromeBrowserProvider,
-                selection, selectionArgs);
+        return ChromeBrowserProviderJni.get().removeSearchTermFromAPI(
+                mNativeChromeBrowserProvider, ChromeBrowserProvider.this, selection, selectionArgs);
     }
 
     private static boolean isInUiThread() {
@@ -1138,7 +1144,10 @@
      */
     private void ensureNativeSideInitialized() {
         ThreadUtils.assertOnUiThread();
-        if (mNativeChromeBrowserProvider == 0) mNativeChromeBrowserProvider = nativeInit();
+        if (mNativeChromeBrowserProvider == 0) {
+            mNativeChromeBrowserProvider =
+                    ChromeBrowserProviderJni.get().init(ChromeBrowserProvider.this);
+        }
     }
 
     @SuppressLint("NewApi")
@@ -1200,43 +1209,38 @@
                 externalId, IntentHandler.ExternalAppId.NUM_ENTRIES);
     }
 
-    private native long nativeInit();
+    @NativeMethods
+    interface Natives {
+        long init(ChromeBrowserProvider caller);
 
-    // Public API native methods.
-    private native long nativeAddBookmark(long nativeChromeBrowserProvider,
-            String url, String title, boolean isFolder, long parentId);
+        long addBookmark(long nativeChromeBrowserProvider, ChromeBrowserProvider caller, String url,
+                String title, boolean isFolder, long parentId);
 
-    private native int nativeRemoveBookmark(long nativeChromeBrowserProvider, long id);
-
-    private native int nativeUpdateBookmark(long nativeChromeBrowserProvider,
-            long id, String url, String title, long parentId);
-
-    private native long nativeAddBookmarkFromAPI(long nativeChromeBrowserProvider,
-            String url, Long created, Boolean isBookmark, Long date, byte[] favicon,
-            String title, Integer visits, long parentId);
-
-    private native SQLiteCursor nativeQueryBookmarkFromAPI(long nativeChromeBrowserProvider,
-            String[] projection, String selection, String[] selectionArgs, String sortOrder);
-
-    private native int nativeUpdateBookmarkFromAPI(long nativeChromeBrowserProvider,
-            String url, Long created, Boolean isBookmark, Long date, byte[] favicon,
-            String title, Integer visits, long parentId, String selection, String[] selectionArgs);
-
-    private native int nativeRemoveBookmarkFromAPI(long nativeChromeBrowserProvider,
-            String selection, String[] selectionArgs);
-
-    private native int nativeRemoveHistoryFromAPI(long nativeChromeBrowserProvider,
-            String selection, String[] selectionArgs);
-
-    private native long nativeAddSearchTermFromAPI(long nativeChromeBrowserProvider,
-            String term, Long date);
-
-    private native SQLiteCursor nativeQuerySearchTermFromAPI(long nativeChromeBrowserProvider,
-            String[] projection, String selection, String[] selectionArgs, String sortOrder);
-
-    private native int nativeUpdateSearchTermFromAPI(long nativeChromeBrowserProvider,
-            String search, Long date, String selection, String[] selectionArgs);
-
-    private native int nativeRemoveSearchTermFromAPI(long nativeChromeBrowserProvider,
-            String selection, String[] selectionArgs);
+        int removeBookmark(long nativeChromeBrowserProvider, ChromeBrowserProvider caller, long id);
+        int updateBookmark(long nativeChromeBrowserProvider, ChromeBrowserProvider caller, long id,
+                String url, String title, long parentId);
+        long addBookmarkFromAPI(long nativeChromeBrowserProvider, ChromeBrowserProvider caller,
+                String url, Long created, Boolean isBookmark, Long date, byte[] favicon,
+                String title, Integer visits, long parentId);
+        SQLiteCursor queryBookmarkFromAPI(long nativeChromeBrowserProvider,
+                ChromeBrowserProvider caller, String[] projection, String selection,
+                String[] selectionArgs, String sortOrder);
+        int updateBookmarkFromAPI(long nativeChromeBrowserProvider, ChromeBrowserProvider caller,
+                String url, Long created, Boolean isBookmark, Long date, byte[] favicon,
+                String title, Integer visits, long parentId, String selection,
+                String[] selectionArgs);
+        int removeBookmarkFromAPI(long nativeChromeBrowserProvider, ChromeBrowserProvider caller,
+                String selection, String[] selectionArgs);
+        int removeHistoryFromAPI(long nativeChromeBrowserProvider, ChromeBrowserProvider caller,
+                String selection, String[] selectionArgs);
+        long addSearchTermFromAPI(long nativeChromeBrowserProvider, ChromeBrowserProvider caller,
+                String term, Long date);
+        SQLiteCursor querySearchTermFromAPI(long nativeChromeBrowserProvider,
+                ChromeBrowserProvider caller, String[] projection, String selection,
+                String[] selectionArgs, String sortOrder);
+        int updateSearchTermFromAPI(long nativeChromeBrowserProvider, ChromeBrowserProvider caller,
+                String search, Long date, String selection, String[] selectionArgs);
+        int removeSearchTermFromAPI(long nativeChromeBrowserProvider, ChromeBrowserProvider caller,
+                String selection, String[] selectionArgs);
+    }
 }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/sharing/shared_clipboard/SharedClipboardShareActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/sharing/shared_clipboard/SharedClipboardShareActivity.java
index b709e290..41014f4 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/sharing/shared_clipboard/SharedClipboardShareActivity.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/sharing/shared_clipboard/SharedClipboardShareActivity.java
@@ -13,7 +13,6 @@
 import android.widget.AdapterView;
 import android.widget.AdapterView.OnItemClickListener;
 import android.widget.ListView;
-import android.widget.TextView;
 
 import org.chromium.base.ContextUtils;
 import org.chromium.base.ThreadUtils;
@@ -22,10 +21,13 @@
 import org.chromium.chrome.R;
 import org.chromium.chrome.browser.ChromeFeatureList;
 import org.chromium.chrome.browser.init.AsyncInitializationActivity;
+import org.chromium.chrome.browser.preferences.PreferencesLauncher;
 import org.chromium.chrome.browser.sharing.SharingAdapter;
 import org.chromium.chrome.browser.sharing.SharingDeviceCapability;
 import org.chromium.chrome.browser.sharing.SharingServiceProxy;
 import org.chromium.chrome.browser.sharing.SharingServiceProxy.DeviceInfo;
+import org.chromium.components.sync.AndroidSyncSettings;
+import org.chromium.ui.widget.ButtonCompat;
 
 /**
  * Activity to display device targets to share text.
@@ -73,17 +75,22 @@
         View mask = findViewById(R.id.mask);
         mask.setOnClickListener(v -> finish());
 
-        TextView toolbarText = findViewById(R.id.device_picker_toolbar);
-        toolbarText.setText(R.string.send_tab_to_self_sheet_toolbar);
-
         mListView = findViewById(R.id.device_picker_list);
         mListView.setAdapter(mAdapter);
         mListView.setOnItemClickListener(this);
-        mListView.setEmptyView(findViewById(android.R.id.empty));
+        mListView.setEmptyView(findViewById(R.id.empty_state));
 
         View content = findViewById(R.id.device_picker_content);
         content.startAnimation(AnimationUtils.loadAnimation(this, R.anim.slide_in_up));
 
+        ButtonCompat chromeSettingsButton = findViewById(R.id.chrome_settings);
+        if (!AndroidSyncSettings.get().isChromeSyncEnabled()) {
+            chromeSettingsButton.setVisibility(View.VISIBLE);
+            chromeSettingsButton.setOnClickListener(view -> {
+                PreferencesLauncher.launchSettingsPage(ContextUtils.getApplicationContext(), null);
+            });
+        }
+
         onInitialLayoutInflationComplete();
     }
 
@@ -98,6 +105,10 @@
         super.finishNativeInitialization();
 
         mAdapter = new SharingAdapter(SharingDeviceCapability.SHARED_CLIPBOARD);
+        if (!mAdapter.isEmpty()) {
+            findViewById(R.id.device_picker_toolbar).setVisibility(View.VISIBLE);
+        }
+
         mListView.setAdapter(mAdapter);
     }
 
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabWebContentsDelegateAndroid.java b/chrome/android/java/src/org/chromium/chrome/browser/tab/TabWebContentsDelegateAndroid.java
index 4b7eff67..50163ab4 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabWebContentsDelegateAndroid.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/tab/TabWebContentsDelegateAndroid.java
@@ -19,6 +19,7 @@
 import org.chromium.chrome.browser.fullscreen.FullscreenOptions;
 import org.chromium.chrome.browser.media.MediaCaptureNotificationService;
 import org.chromium.chrome.browser.policy.PolicyAuditor;
+import org.chromium.chrome.browser.policy.PolicyAuditorJni;
 import org.chromium.components.embedder_support.delegate.WebContentsDelegateAndroid;
 import org.chromium.content_public.browser.InvalidateTypes;
 import org.chromium.content_public.browser.WebContents;
@@ -151,7 +152,7 @@
     public void visibleSSLStateChanged() {
         PolicyAuditor auditor = AppHooks.get().getPolicyAuditor();
         auditor.notifyCertificateFailure(
-                PolicyAuditor.nativeGetCertificateFailure(mTab.getWebContents()),
+                PolicyAuditorJni.get().getCertificateFailure(mTab.getWebContents()),
                 mTab.getApplicationContext());
         RewindableIterator<TabObserver> observers = mTab.getTabObservers();
         while (observers.hasNext()) {
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabWebContentsObserver.java b/chrome/android/java/src/org/chromium/chrome/browser/tab/TabWebContentsObserver.java
index d594c54..d69a9047 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabWebContentsObserver.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/tab/TabWebContentsObserver.java
@@ -21,6 +21,7 @@
 import org.chromium.chrome.browser.media.MediaCaptureNotificationService;
 import org.chromium.chrome.browser.policy.PolicyAuditor;
 import org.chromium.chrome.browser.policy.PolicyAuditor.AuditEvent;
+import org.chromium.chrome.browser.policy.PolicyAuditorJni;
 import org.chromium.content_public.browser.NavigationHandle;
 import org.chromium.content_public.browser.WebContents;
 import org.chromium.content_public.browser.WebContentsObserver;
@@ -298,7 +299,7 @@
             TabBrowserControlsState.updateEnabledState(mTab);
             PolicyAuditor auditor = AppHooks.get().getPolicyAuditor();
             auditor.notifyCertificateFailure(
-                    PolicyAuditor.nativeGetCertificateFailure(mTab.getWebContents()),
+                    PolicyAuditorJni.get().getCertificateFailure(mTab.getWebContents()),
                     mTab.getApplicationContext());
         }
 
diff --git a/chrome/android/java/strings/android_chrome_strings.grd b/chrome/android/java/strings/android_chrome_strings.grd
index d869e2e..db183815 100644
--- a/chrome/android/java/strings/android_chrome_strings.grd
+++ b/chrome/android/java/strings/android_chrome_strings.grd
@@ -3884,8 +3884,14 @@
       <message name="IDS_SHARING_DISMISS_ACTION" desc="Text for action that dismiss a sharing sending notification.">
         Dismiss
       </message>
-      <message name="IDS_SHARING_DEVICE_LIST_EMPTY" desc="Text to shown when no device targets are available for sharing.">
-        No devices available.
+      <message name="IDS_SHARING_NO_DEVICES_AVAILABLE_TITLE" desc="Text to show when no device targets are available for sharing.">
+        Turn on sync to share across devices
+      </message>
+      <message name="IDS_SHARING_NO_DEVICES_AVAILABLE_TEXT" desc="Text to show when no device targets are available for sharing.">
+        To share something from your phone to another device, turn on sync in Chrome settings on both devices
+      </message>
+      <message name="IDS_SHARING_CHROME_SETTINGS" desc="Text shown in a button when user has turned off sync.">
+        Go to Chrome settings
       </message>
 
       <!-- ClickToCall -->
diff --git a/chrome/android/java/strings/android_chrome_strings_grd/IDS_SHARING_CHROME_SETTINGS.png.sha1 b/chrome/android/java/strings/android_chrome_strings_grd/IDS_SHARING_CHROME_SETTINGS.png.sha1
new file mode 100644
index 0000000..50cc2945
--- /dev/null
+++ b/chrome/android/java/strings/android_chrome_strings_grd/IDS_SHARING_CHROME_SETTINGS.png.sha1
@@ -0,0 +1 @@
+fcba509995c0311872240db5d281c9d5bd905632
\ No newline at end of file
diff --git a/chrome/android/java/strings/android_chrome_strings_grd/IDS_SHARING_DEVICE_LIST_EMPTY.png.sha1 b/chrome/android/java/strings/android_chrome_strings_grd/IDS_SHARING_DEVICE_LIST_EMPTY.png.sha1
deleted file mode 100644
index a6b3a78..0000000
--- a/chrome/android/java/strings/android_chrome_strings_grd/IDS_SHARING_DEVICE_LIST_EMPTY.png.sha1
+++ /dev/null
@@ -1 +0,0 @@
-cce81a441bd0548b3eb6e1a775e6325987350935
\ No newline at end of file
diff --git a/chrome/android/java/strings/android_chrome_strings_grd/IDS_SHARING_NO_DEVICES_AVAILABLE_TEXT.png.sha1 b/chrome/android/java/strings/android_chrome_strings_grd/IDS_SHARING_NO_DEVICES_AVAILABLE_TEXT.png.sha1
new file mode 100644
index 0000000..ab098fe
--- /dev/null
+++ b/chrome/android/java/strings/android_chrome_strings_grd/IDS_SHARING_NO_DEVICES_AVAILABLE_TEXT.png.sha1
@@ -0,0 +1 @@
+91dea6d6099b9c96638204aee115c9c60936f401
\ No newline at end of file
diff --git a/chrome/android/java/strings/android_chrome_strings_grd/IDS_SHARING_NO_DEVICES_AVAILABLE_TITLE.png.sha1 b/chrome/android/java/strings/android_chrome_strings_grd/IDS_SHARING_NO_DEVICES_AVAILABLE_TITLE.png.sha1
new file mode 100644
index 0000000..ab098fe
--- /dev/null
+++ b/chrome/android/java/strings/android_chrome_strings_grd/IDS_SHARING_NO_DEVICES_AVAILABLE_TITLE.png.sha1
@@ -0,0 +1 @@
+91dea6d6099b9c96638204aee115c9c60936f401
\ No newline at end of file
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/MockSafeBrowsingApiHandler.java b/chrome/android/javatests/src/org/chromium/chrome/browser/MockSafeBrowsingApiHandler.java
index 4b37499..5f48fe6 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/MockSafeBrowsingApiHandler.java
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/MockSafeBrowsingApiHandler.java
@@ -62,7 +62,7 @@
     }
 
     @Override
-    public boolean startAllowlistLookup(final String uri, int[] threatsOfInterest) {
+    public boolean startAllowlistLookup(final String uri, int threatType) {
         return false;
     }
 
diff --git a/chrome/browser/DEPS b/chrome/browser/DEPS
index e533abc7..bccf13f 100644
--- a/chrome/browser/DEPS
+++ b/chrome/browser/DEPS
@@ -371,6 +371,7 @@
   "+chrome/browser/performance_manager/graph/policies/policy_features.h",
   "+chrome/browser/performance_manager/performance_manager.h",
   "+chrome/browser/performance_manager/performance_manager_tab_helper.h",
+  "+chrome/browser/performance_manager/test_support",
 
   # Explicitly disallow using SyncMessageFilter to prevent browser from
   # sending synchronous IPC messages on non-UI threads.
diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
index 5cef9b9..ffca4035 100644
--- a/chrome/browser/about_flags.cc
+++ b/chrome/browser/about_flags.cc
@@ -1308,8 +1308,19 @@
      1, nullptr},
     {"(mini-infobars)", &kQuietNotificationPromptsMiniInfobars, 1, nullptr},
 };
-
-#endif  // OS_ANDROID
+#else   // OS_ANDROID
+const FeatureEntry::FeatureParam kQuietNotificationPromptsStaticIcons = {
+    kQuietNotificationPromptsUIFlavourParameterName,
+    kQuietNotificationPromptsStaticIcon};
+const FeatureEntry::FeatureParam kQuietNotificationPromptsAnimatedIcons = {
+    kQuietNotificationPromptsUIFlavourParameterName,
+    kQuietNotificationPromptsAnimatedIcon};
+// The "default" option that only shows "Enabled" will be the static icon.
+const FeatureEntry::FeatureVariation kQuietNotificationPromptsVariations[] = {
+    {"(static-icon)", &kQuietNotificationPromptsStaticIcons, 1, nullptr},
+    {"(animated-icon)", &kQuietNotificationPromptsAnimatedIcons, 1, nullptr},
+};
+#endif  // !OS_ANDROID
 
 // RECORDING USER METRICS FOR FLAGS:
 // -----------------------------------------------------------------------------
@@ -4465,14 +4476,14 @@
      flag_descriptions::kPasswordLeakDetectionDescription, kOsAll,
      FEATURE_VALUE_TYPE(password_manager::features::kLeakDetection)},
 
-#if defined(OS_ANDROID)
     {"quiet-notification-prompts",
      flag_descriptions::kQuietNotificationPromptsName,
-     flag_descriptions::kQuietNotificationPromptsDescription, kOsAndroid,
+     flag_descriptions::kQuietNotificationPromptsDescription, kOsAll,
      FEATURE_WITH_PARAMS_VALUE_TYPE(features::kQuietNotificationPrompts,
                                     kQuietNotificationPromptsVariations,
                                     "QuietNotificationPrompts")},
 
+#if defined(OS_ANDROID)
     {"context-menu-search-with-google-lens",
      flag_descriptions::kContextMenuSearchWithGoogleLensName,
      flag_descriptions::kContextMenuSearchWithGoogleLensDescription, kOsAndroid,
@@ -4519,6 +4530,14 @@
      FEATURE_VALUE_TYPE(features::kSyncClipboardServiceFeature)},
 #endif  // OS_WIN || OS_MACOSX || OS_LINUX
 
+#if !defined(OS_ANDROID)
+    {"accessibility-internals-page-improvements",
+     flag_descriptions::kAccessibilityInternalsPageImprovementsName,
+     flag_descriptions::kAccessibilityInternalsPageImprovementsDescription,
+     kOsDesktop,
+     FEATURE_VALUE_TYPE(features::kAccessibilityInternalsPageImprovements)},
+#endif
+
     // NOTE: Adding a new flag requires adding a corresponding entry to enum
     // "LoginCustomFlags" in tools/metrics/histograms/enums.xml. See "Flag
     // Histograms" in tools/metrics/histograms/README.md (run the
diff --git a/chrome/browser/android/download/download_manager_service_unittest.cc b/chrome/browser/android/download/download_manager_service_unittest.cc
index f629b4b..d6ff2f6 100644
--- a/chrome/browser/android/download/download_manager_service_unittest.cc
+++ b/chrome/browser/android/download/download_manager_service_unittest.cc
@@ -69,7 +69,7 @@
     return download_.get();
   }
 
-  base::test::TaskEnvironment task_environment_;
+  base::test::SingleThreadTaskEnvironment task_environment_;
   DownloadManagerService* service_;
   download::SimpleDownloadManagerCoordinator coordinator_;
   std::unique_ptr<download::MockDownloadItem> download_;
diff --git a/chrome/browser/android/vr/arcore_device/arcore.h b/chrome/browser/android/vr/arcore_device/arcore.h
index b6c228c3..6de97776 100644
--- a/chrome/browser/android/vr/arcore_device/arcore.h
+++ b/chrome/browser/android/vr/arcore_device/arcore.h
@@ -10,6 +10,7 @@
 
 #include "base/android/scoped_java_ref.h"
 #include "base/macros.h"
+#include "base/optional.h"
 #include "device/vr/public/mojom/vr_service.mojom.h"
 #include "ui/display/display.h"
 #include "ui/gfx/transform.h"
@@ -54,6 +55,13 @@
       const mojom::XRRayPtr& ray,
       std::vector<mojom::XRHitResultPtr>* hit_results) = 0;
 
+  virtual base::Optional<int32_t> CreateAnchor(
+      const mojom::VRPosePtr& pose) = 0;
+  virtual base::Optional<int32_t> CreateAnchor(const mojom::VRPosePtr& pose,
+                                               int32_t plane_id) = 0;
+
+  virtual void DetachAnchor(int32_t anchor_id) = 0;
+
   virtual void Pause() = 0;
   virtual void Resume() = 0;
 };
diff --git a/chrome/browser/android/vr/arcore_device/arcore_gl.cc b/chrome/browser/android/vr/arcore_device/arcore_gl.cc
index d5685e9..dc1cffcd 100644
--- a/chrome/browser/android/vr/arcore_device/arcore_gl.cc
+++ b/chrome/browser/android/vr/arcore_device/arcore_gl.cc
@@ -583,6 +583,42 @@
   hit_test_requests_.push_back(std::move(request));
 }
 
+void ArCoreGl::CreateAnchor(mojom::VRPosePtr anchor_pose,
+                            CreateAnchorCallback callback) {
+  DVLOG(2) << __func__;
+
+  base::Optional<int32_t> maybe_anchor_id = arcore_->CreateAnchor(anchor_pose);
+
+  if (maybe_anchor_id) {
+    std::move(callback).Run(device::mojom::CreateAnchorResult::SUCCESS,
+                            *maybe_anchor_id);
+  } else {
+    std::move(callback).Run(device::mojom::CreateAnchorResult::FAILURE, 0);
+  }
+}
+
+void ArCoreGl::CreatePlaneAnchor(mojom::VRPosePtr anchor_pose,
+                                 int32_t plane_id,
+                                 CreatePlaneAnchorCallback callback) {
+  DVLOG(2) << __func__;
+
+  base::Optional<int32_t> maybe_anchor_id =
+      arcore_->CreateAnchor(anchor_pose, plane_id);
+
+  if (maybe_anchor_id) {
+    std::move(callback).Run(device::mojom::CreateAnchorResult::SUCCESS,
+                            *maybe_anchor_id);
+  } else {
+    std::move(callback).Run(device::mojom::CreateAnchorResult::FAILURE, 0);
+  }
+}
+
+void ArCoreGl::DetachAnchor(int32_t anchor_id) {
+  DVLOG(2) << __func__;
+
+  arcore_->DetachAnchor(anchor_id);
+}
+
 void ArCoreGl::SetFrameDataRestricted(bool frame_data_restricted) {
   DCHECK(IsOnGlThread());
   DCHECK(is_initialized_);
diff --git a/chrome/browser/android/vr/arcore_device/arcore_gl.h b/chrome/browser/android/vr/arcore_device/arcore_gl.h
index 709ec7c2..e283a1f 100644
--- a/chrome/browser/android/vr/arcore_device/arcore_gl.h
+++ b/chrome/browser/android/vr/arcore_device/arcore_gl.h
@@ -108,6 +108,14 @@
       mojom::XRRayPtr,
       mojom::XREnvironmentIntegrationProvider::RequestHitTestCallback) override;
 
+  void CreateAnchor(mojom::VRPosePtr anchor_pose,
+                    CreateAnchorCallback callback) override;
+  void CreatePlaneAnchor(mojom::VRPosePtr anchor_pose,
+                         int32_t plane_id,
+                         CreatePlaneAnchorCallback callback) override;
+
+  void DetachAnchor(int32_t anchor_id) override;
+
   // mojom::XRSessionController
   void SetFrameDataRestricted(bool restricted) override;
 
diff --git a/chrome/browser/android/vr/arcore_device/arcore_impl.cc b/chrome/browser/android/vr/arcore_device/arcore_impl.cc
index 2d0830d..fb80f464 100644
--- a/chrome/browser/android/vr/arcore_device/arcore_impl.cc
+++ b/chrome/browser/android/vr/arcore_device/arcore_impl.cc
@@ -37,6 +37,36 @@
   return result;
 }
 
+device::internal::ScopedArCoreObject<ArPose*> GetArPoseFromMojomPose(
+    ArSession* session,
+    const device::mojom::VRPosePtr& pose) {
+  float pose_raw[7] = {};  // 7 = orientation(4) + position(3).
+
+  if (pose->orientation) {
+    pose_raw[0] = pose->orientation->x();
+    pose_raw[1] = pose->orientation->y();
+    pose_raw[2] = pose->orientation->z();
+    pose_raw[3] = pose->orientation->w();
+  } else {
+    // Only need to set the .w to 1.
+    pose_raw[3] = 1;
+  }
+
+  if (pose->position) {
+    pose_raw[4] = pose->position->x();
+    pose_raw[5] = pose->position->y();
+    pose_raw[6] = pose->position->z();
+  }
+
+  device::internal::ScopedArCoreObject<ArPose*> result;
+
+  ArPose_create(
+      session, pose_raw,
+      device::internal::ScopedArCoreObject<ArPose*>::Receiver(result).get());
+
+  return result;
+}
+
 }  // namespace
 
 namespace device {
@@ -259,7 +289,7 @@
       continue;
     }
 
-    fn(ar_plane);
+    fn(std::move(trackable), ar_plane);
   }
 }  // namespace device
 
@@ -293,6 +323,10 @@
     bool created;
     std::tie(anchor_id, created) = *maybe_anchor_id_and_created;
 
+    DCHECK(!created)
+        << "Anchor creation is app-initiated - we should never encounter an "
+           "anchor that was created outside of `ArCoreImpl::CreateAnchor()`.";
+
     result.push_back(mojom::XRAnchorData::New(anchor_id, std::move(pose)));
   });
 
@@ -319,9 +353,9 @@
     bool created;
     std::tie(anchor_id, created) = *maybe_anchor_id_and_created;
 
-    // TODO(https://crbug.com/992033): Add explanation for the below DCHECK when
-    // implementing anchor creation.
-    DCHECK(!created);
+    DCHECK(!created)
+        << "Anchor creation is app-initiated - we should never encounter an "
+           "anchor that was created outside of `ArCoreImpl::CreateAnchor()`.";
 
     result.emplace_back(anchor_id);
   });
@@ -365,7 +399,9 @@
   ArFrame_getUpdatedTrackables(arcore_session_.get(), arcore_frame_.get(),
                                plane_tracked_type, arcore_planes_.get());
 
-  ForEachArCorePlane([this, &result](ArPlane* ar_plane) {
+  ForEachArCorePlane([this, &result](
+                         internal::ScopedArCoreObject<ArTrackable*> trackable,
+                         ArPlane* ar_plane) {
     // orientation
     ArPlaneType plane_type;
     ArPlane_getType(arcore_session_.get(), ar_plane, &plane_type);
@@ -426,7 +462,13 @@
   ArSession_getAllTrackables(arcore_session_.get(), plane_tracked_type,
                              arcore_planes_.get());
 
-  ForEachArCorePlane([this, &result](ArPlane* ar_plane) {
+  std::unordered_map<int32_t,
+                     device::internal::ScopedArCoreObject<ArTrackable*>>
+      plane_id_to_plane_object;
+
+  ForEachArCorePlane([this, &plane_id_to_plane_object, &result](
+                         internal::ScopedArCoreObject<ArTrackable*> trackable,
+                         ArPlane* ar_plane) {
     // ID
     auto maybe_plane_id_and_created = CreateOrGetPlaneId(ar_plane);
     if (!maybe_plane_id_and_created) {
@@ -443,8 +485,11 @@
         << "Newly detected planes should be handled by GetUpdatedPlanesData().";
 
     result.emplace_back(plane_id);
+    plane_id_to_plane_object[plane_id] = std::move(trackable);
   });
 
+  plane_id_to_plane_object_.swap(plane_id_to_plane_object);
+
   return result;
 }
 
@@ -672,6 +717,81 @@
   return true;
 }
 
+base::Optional<int32_t> ArCoreImpl::CreateAnchor(
+    const device::mojom::VRPosePtr& pose) {
+  DCHECK(pose);
+
+  auto ar_pose = GetArPoseFromMojomPose(arcore_session_.get(), pose);
+
+  device::internal::ScopedArCoreObject<ArAnchor*> ar_anchor;
+  ArSession_acquireNewAnchor(
+      arcore_session_.get(), ar_pose.get(),
+      device::internal::ScopedArCoreObject<ArAnchor*>::Receiver(ar_anchor)
+          .get());
+
+  auto maybe_anchor_id_and_created = CreateOrGetAnchorId(ar_anchor.get());
+  if (!maybe_anchor_id_and_created) {
+    return base::nullopt;
+  }
+
+  int32_t anchor_id;
+  bool created;
+  std::tie(anchor_id, created) = *maybe_anchor_id_and_created;
+
+  DCHECK(created) << "This should always be a new anchor, not something we've "
+                     "seen previously.";
+
+  anchor_id_to_anchor_object_[anchor_id] = std::move(ar_anchor);
+
+  return anchor_id;
+}
+
+base::Optional<int32_t> ArCoreImpl::CreateAnchor(
+    const device::mojom::VRPosePtr& pose,
+    int32_t plane_id) {
+  DCHECK(pose);
+
+  auto ar_pose = GetArPoseFromMojomPose(arcore_session_.get(), pose);
+
+  auto it = plane_id_to_plane_object_.find(plane_id);
+  if (it == plane_id_to_plane_object_.end()) {
+    return base::nullopt;
+  }
+
+  device::internal::ScopedArCoreObject<ArAnchor*> ar_anchor;
+  ArTrackable_acquireNewAnchor(
+      arcore_session_.get(), it->second.get(), ar_pose.get(),
+      device::internal::ScopedArCoreObject<ArAnchor*>::Receiver(ar_anchor)
+          .get());
+
+  auto maybe_anchor_id_and_created = CreateOrGetAnchorId(ar_anchor.get());
+  if (!maybe_anchor_id_and_created) {
+    return base::nullopt;
+  }
+
+  int32_t anchor_id;
+  bool created;
+  std::tie(anchor_id, created) = *maybe_anchor_id_and_created;
+
+  DCHECK(created) << "This should always be a new anchor, not something we've "
+                     "seen previously.";
+
+  anchor_id_to_anchor_object_[anchor_id] = std::move(ar_anchor);
+
+  return anchor_id;
+}
+
+void ArCoreImpl::DetachAnchor(int32_t anchor_id) {
+  auto it = anchor_id_to_anchor_object_.find(anchor_id);
+  if (it == anchor_id_to_anchor_object_.end()) {
+    return;
+  }
+
+  ArAnchor_detach(arcore_session_.get(), it->second.get());
+
+  anchor_id_to_anchor_object_.erase(it);
+}
+
 bool ArCoreImpl::IsOnGlThread() {
   return gl_thread_task_runner_->BelongsToCurrentThread();
 }
diff --git a/chrome/browser/android/vr/arcore_device/arcore_impl.h b/chrome/browser/android/vr/arcore_device/arcore_impl.h
index fa8ba54..ed47b1f 100644
--- a/chrome/browser/android/vr/arcore_device/arcore_impl.h
+++ b/chrome/browser/android/vr/arcore_device/arcore_impl.h
@@ -56,6 +56,11 @@
 }
 
 template <>
+void inline ScopedGenericArObject<ArAnchor*>::Free(ArAnchor* ar_anchor) {
+  ArAnchor_release(ar_anchor);
+}
+
+template <>
 void inline ScopedGenericArObject<ArTrackableList*>::Free(
     ArTrackableList* ar_trackable_list) {
   ArTrackableList_destroy(ar_trackable_list);
@@ -109,6 +114,13 @@
   bool RequestHitTest(const mojom::XRRayPtr& ray,
                       std::vector<mojom::XRHitResultPtr>* hit_results) override;
 
+  base::Optional<int32_t> CreateAnchor(
+      const device::mojom::VRPosePtr& pose) override;
+  base::Optional<int32_t> CreateAnchor(const device::mojom::VRPosePtr& pose,
+                                       int32_t plane_id) override;
+
+  void DetachAnchor(int32_t anchor_id) override;
+
  private:
   bool IsOnGlThread();
   base::WeakPtr<ArCoreImpl> GetWeakPtr() {
@@ -162,7 +174,12 @@
 
   int32_t next_id_ = 1;
   std::unordered_map<void*, int32_t> ar_plane_address_to_id_;
+  std::unordered_map<int32_t,
+                     device::internal::ScopedArCoreObject<ArTrackable*>>
+      plane_id_to_plane_object_;
   std::unordered_map<void*, int32_t> ar_anchor_address_to_id_;
+  std::unordered_map<int32_t, device::internal::ScopedArCoreObject<ArAnchor*>>
+      anchor_id_to_anchor_object_;
 
   // Returns tuple containing plane id and a boolean signifying that the plane
   // was created. The result will be a nullopt in case the ID should be assigned
diff --git a/chrome/browser/android/vr/arcore_device/arcore_shim.cc b/chrome/browser/android/vr/arcore_device/arcore_shim.cc
index 6ae60827..0ac05f4 100644
--- a/chrome/browser/android/vr/arcore_device/arcore_shim.cc
+++ b/chrome/browser/android/vr/arcore_device/arcore_shim.cc
@@ -64,6 +64,7 @@
   CALL(ArSession_setCameraTextureName)        \
   CALL(ArSession_setDisplayGeometry)          \
   CALL(ArSession_update)                      \
+  CALL(ArTrackable_acquireNewAnchor)          \
   CALL(ArTrackable_getTrackingState)          \
   CALL(ArTrackable_getType)                   \
   CALL(ArTrackable_release)                   \
@@ -276,6 +277,14 @@
                                                 out_trackable);
 }
 
+ArStatus ArTrackable_acquireNewAnchor(ArSession* session,
+                                      ArTrackable* trackable,
+                                      ArPose* pose,
+                                      ArAnchor** out_anchor) {
+  return arcore_api->impl_ArTrackable_acquireNewAnchor(session, trackable, pose,
+                                                       out_anchor);
+}
+
 void ArTrackable_getTrackingState(const ArSession* session,
                                   const ArTrackable* trackable,
                                   ArTrackingState* out_tracking_state) {
diff --git a/chrome/browser/android/vr/arcore_device/fake_arcore.cc b/chrome/browser/android/vr/arcore_device/fake_arcore.cc
index d3464de..8f973002 100644
--- a/chrome/browser/android/vr/arcore_device/fake_arcore.cc
+++ b/chrome/browser/android/vr/arcore_device/fake_arcore.cc
@@ -231,15 +231,52 @@
 
 mojom::XRAnchorsDataPtr FakeArCore::GetAnchorsData() {
   std::vector<mojom::XRAnchorDataPtr> result;
+  std::vector<int32_t> result_ids;
 
-  // 2m ahead of the origin, neutral orientation facing forward.
-  mojom::VRPosePtr pose = mojom::VRPose::New();
-  pose->position = gfx::Point3F(0.0, 0.0, -2.0);
-  pose->orientation = gfx::Quaternion();
+  for (auto& anchor_id_and_data : anchors_) {
+    mojom::VRPosePtr pose = mojom::VRPose::New();
+    pose->position = anchor_id_and_data.second.position;
+    pose->orientation = anchor_id_and_data.second.orientation;
 
-  result.push_back(mojom::XRAnchorData::New(2, std::move(pose)));
+    result.push_back(
+        mojom::XRAnchorData::New(anchor_id_and_data.first, std::move(pose)));
+    result_ids.push_back(anchor_id_and_data.first);
+  }
 
-  return mojom::XRAnchorsData::New(std::vector<int32_t>{2}, std::move(result));
+  return mojom::XRAnchorsData::New(std::move(result_ids), std::move(result));
+}
+
+base::Optional<int32_t> FakeArCore::CreateAnchor(const mojom::VRPosePtr& pose,
+                                                 int32_t plane_id) {
+  // TODO(992035): Fix this when implementing tests.
+  return CreateAnchor(pose);
+}
+
+base::Optional<int32_t> FakeArCore::CreateAnchor(const mojom::VRPosePtr& pose) {
+  DCHECK(pose);
+
+  gfx::Point3F position =
+      pose->position ? gfx::Point3F(pose->position->x(), pose->position->y(),
+                                    pose->position->z())
+                     : gfx::Point3F();
+
+  gfx::Quaternion orientation =
+      pose->orientation
+          ? gfx::Quaternion(pose->orientation->x(), pose->orientation->y(),
+                            pose->orientation->z(), pose->orientation->w())
+          : gfx::Quaternion(0, 0, 0, 1);
+
+  anchors_[next_id_] = {position, orientation};
+  int32_t anchor_id = next_id_;
+
+  next_id_++;
+
+  return anchor_id;
+}
+
+void FakeArCore::DetachAnchor(int32_t anchor_id) {
+  auto count = anchors_.erase(anchor_id);
+  DCHECK_EQ(1u, count);
 }
 
 void FakeArCore::Pause() {
diff --git a/chrome/browser/android/vr/arcore_device/fake_arcore.h b/chrome/browser/android/vr/arcore_device/fake_arcore.h
index a3420ee5..6e92972 100644
--- a/chrome/browser/android/vr/arcore_device/fake_arcore.h
+++ b/chrome/browser/android/vr/arcore_device/fake_arcore.h
@@ -40,6 +40,12 @@
   mojom::XRPlaneDetectionDataPtr GetDetectedPlanesData() override;
   mojom::XRAnchorsDataPtr GetAnchorsData() override;
 
+  base::Optional<int32_t> CreateAnchor(
+      const device::mojom::VRPosePtr& pose) override;
+  base::Optional<int32_t> CreateAnchor(const device::mojom::VRPosePtr& pose,
+                                       int32_t plane_id) override;
+  void DetachAnchor(int32_t anchor_id) override;
+
   void SetCameraAspect(float aspect) { camera_aspect_ = aspect; }
 
  private:
@@ -52,6 +58,14 @@
       display::Display::Rotation::ROTATE_0;
   gfx::Size frame_size_;
 
+  struct FakeAnchorData {
+    gfx::Point3F position;
+    gfx::Quaternion orientation;
+  };
+
+  int32_t next_id_ = 100;
+  std::unordered_map<int32_t, FakeAnchorData> anchors_;
+
   DISALLOW_COPY_AND_ASSIGN(FakeArCore);
 };
 
diff --git a/chrome/browser/browser_switcher/bho/BUILD.gn b/chrome/browser/browser_switcher/bho/BUILD.gn
index 05568ae..66a05b4 100644
--- a/chrome/browser/browser_switcher/bho/BUILD.gn
+++ b/chrome/browser/browser_switcher/bho/BUILD.gn
@@ -83,6 +83,7 @@
   ]
   deps = [
     "//base",
+    "//base/test:test_support",
     "//testing/gtest",
   ]
 }
diff --git a/chrome/browser/browser_switcher/bho/mini_bho_util_unittest.cc b/chrome/browser/browser_switcher/bho/mini_bho_util_unittest.cc
index 10c5592..38c4d0d6 100644
--- a/chrome/browser/browser_switcher/bho/mini_bho_util_unittest.cc
+++ b/chrome/browser/browser_switcher/bho/mini_bho_util_unittest.cc
@@ -11,6 +11,7 @@
 #include "base/files/scoped_temp_dir.h"
 #include "base/strings/string16.h"
 #include "base/strings/utf_string_conversions.h"
+#include "base/test/test_suite.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
 namespace {
@@ -38,13 +39,13 @@
   util::SetLogFilePathForTesting(log_path.value().c_str());
   util::InitLog();
 
-  util::puts(DEBUG, "hello world");
+  util::puts(INFO, "hello world");
   util::printf(ERR, "n = %d\n", 34);
 
   util::CloseLog();
 
   const char expected[] =
-      "[debug] : hello world\n"
+      "[info] : hello world\n"
       "[*ERROR!*] : n = 34\n";
 
   EXPECT_TRUE(base::PathExists(log_path));
@@ -182,6 +183,5 @@
 }
 
 int main(int argc, char** argv) {
-  testing::InitGoogleTest(&argc, argv);
-  return RUN_ALL_TESTS();
+  base::RunUnitTestsUsingBaseTestSuite(argc, argv);
 }
diff --git a/chrome/browser/chromeos/BUILD.gn b/chrome/browser/chromeos/BUILD.gn
index a2b69cf..cc3a34bb 100644
--- a/chrome/browser/chromeos/BUILD.gn
+++ b/chrome/browser/chromeos/BUILD.gn
@@ -487,6 +487,8 @@
     "arc/enterprise/cert_store/arc_cert_installer_utils.h",
     "arc/enterprise/cert_store/arc_cert_store_bridge.cc",
     "arc/enterprise/cert_store/arc_cert_store_bridge.h",
+    "arc/enterprise/cert_store/arc_smart_card_manager_bridge.cc",
+    "arc/enterprise/cert_store/arc_smart_card_manager_bridge.h",
     "arc/extensions/arc_support_message_host.cc",
     "arc/extensions/arc_support_message_host.h",
     "arc/file_system_watcher/arc_file_system_watcher_service.cc",
@@ -2410,6 +2412,7 @@
     "arc/boot_phase_monitor/arc_boot_phase_monitor_bridge_unittest.cc",
     "arc/enterprise/cert_store/arc_cert_installer_unittest.cc",
     "arc/enterprise/cert_store/arc_cert_installer_utils_unittest.cc",
+    "arc/enterprise/cert_store/arc_smart_card_manager_bridge_unittest.cc",
     "arc/extensions/arc_support_message_host_unittest.cc",
     "arc/file_system_watcher/arc_file_system_watcher_service_unittest.cc",
     "arc/fileapi/arc_content_file_system_async_file_util_unittest.cc",
diff --git a/chrome/browser/chromeos/arc/arc_service_launcher.cc b/chrome/browser/chromeos/arc/arc_service_launcher.cc
index 76dffa6..bb81bccc 100644
--- a/chrome/browser/chromeos/arc/arc_service_launcher.cc
+++ b/chrome/browser/chromeos/arc/arc_service_launcher.cc
@@ -23,6 +23,7 @@
 #include "chrome/browser/chromeos/arc/cast_receiver/arc_cast_receiver_service.h"
 #include "chrome/browser/chromeos/arc/enterprise/arc_enterprise_reporting_service.h"
 #include "chrome/browser/chromeos/arc/enterprise/cert_store/arc_cert_store_bridge.h"
+#include "chrome/browser/chromeos/arc/enterprise/cert_store/arc_smart_card_manager_bridge.h"
 #include "chrome/browser/chromeos/arc/file_system_watcher/arc_file_system_watcher_service.h"
 #include "chrome/browser/chromeos/arc/fileapi/arc_file_system_bridge.h"
 #include "chrome/browser/chromeos/arc/fileapi/arc_file_system_mounter.h"
@@ -208,6 +209,7 @@
   ArcRotationLockBridge::GetForBrowserContext(profile);
   ArcScreenCaptureBridge::GetForBrowserContext(profile);
   ArcSettingsService::GetForBrowserContext(profile);
+  ArcSmartCardManagerBridge::GetForBrowserContext(profile);
   ArcTimerBridge::GetForBrowserContext(profile);
   ArcTracingBridge::GetForBrowserContext(profile);
   ArcAppPerformanceTracing::GetForBrowserContext(profile);
diff --git a/chrome/browser/chromeos/arc/arc_session_manager_browsertest.cc b/chrome/browser/chromeos/arc/arc_session_manager_browsertest.cc
index 557e3342..a0800fee6 100644
--- a/chrome/browser/chromeos/arc/arc_session_manager_browsertest.cc
+++ b/chrome/browser/chromeos/arc/arc_session_manager_browsertest.cc
@@ -20,6 +20,8 @@
 #include "chrome/browser/chromeos/arc/arc_session_manager.h"
 #include "chrome/browser/chromeos/arc/arc_util.h"
 #include "chrome/browser/chromeos/arc/test/arc_data_removed_waiter.h"
+#include "chrome/browser/chromeos/certificate_provider/certificate_provider_service.h"
+#include "chrome/browser/chromeos/certificate_provider/certificate_provider_service_factory.h"
 #include "chrome/browser/chromeos/login/test/local_policy_test_server_mixin.h"
 #include "chrome/browser/chromeos/login/users/fake_chrome_user_manager.h"
 #include "chrome/browser/chromeos/policy/browser_policy_connector_chromeos.h"
@@ -66,6 +68,11 @@
 constexpr char kFakeUserName[] = "test@example.com";
 constexpr char kFakeGaiaId[] = "1234567890";
 
+std::unique_ptr<KeyedService> CreateCertificateProviderService(
+    content::BrowserContext* context) {
+  return std::make_unique<chromeos::CertificateProviderService>();
+}
+
 }  // namespace
 
 namespace arc {
@@ -148,6 +155,13 @@
     profile()->GetPrefs()->SetBoolean(prefs::kArcSignedIn, true);
     profile()->GetPrefs()->SetBoolean(prefs::kArcTermsAccepted, true);
 
+    // TestingProfile is not interpreted as a primary profile. Inject factory so
+    // that the instance of CertificateProviderService for the profile can be
+    // created.
+    chromeos::CertificateProviderServiceFactory::GetInstance()
+        ->SetTestingFactory(
+            profile(), base::BindRepeating(&CreateCertificateProviderService));
+
     // Set up ARC for test profile.
     // Currently, ArcSessionManager is singleton and set up with the original
     // Profile instance. This re-initializes the ArcServiceLauncher by
diff --git a/chrome/browser/chromeos/arc/auth/arc_auth_service_browsertest.cc b/chrome/browser/chromeos/arc/auth/arc_auth_service_browsertest.cc
index 88bd0fb..c380d25 100644
--- a/chrome/browser/chromeos/arc/auth/arc_auth_service_browsertest.cc
+++ b/chrome/browser/chromeos/arc/auth/arc_auth_service_browsertest.cc
@@ -25,6 +25,8 @@
 #include "chrome/browser/chromeos/arc/auth/arc_auth_context.h"
 #include "chrome/browser/chromeos/arc/auth/arc_auth_service.h"
 #include "chrome/browser/chromeos/arc/auth/arc_background_auth_code_fetcher.h"
+#include "chrome/browser/chromeos/certificate_provider/certificate_provider_service.h"
+#include "chrome/browser/chromeos/certificate_provider/certificate_provider_service_factory.h"
 #include "chrome/browser/chromeos/login/demo_mode/demo_session.h"
 #include "chrome/browser/chromeos/login/users/fake_chrome_user_manager.h"
 #include "chrome/browser/chromeos/policy/browser_policy_connector_chromeos.h"
@@ -80,6 +82,11 @@
   return base::StringPrintf(R"({ "token" : "%s"})", kFakeAuthCode);
 }
 
+std::unique_ptr<KeyedService> CreateCertificateProviderService(
+    content::BrowserContext* context) {
+  return std::make_unique<chromeos::CertificateProviderService>();
+}
+
 }  // namespace
 
 namespace arc {
@@ -287,6 +294,13 @@
     profile()->GetPrefs()->SetBoolean(prefs::kArcTermsAccepted, true);
     MigrateSigninScopedDeviceId(profile());
 
+    // TestingProfile is not interpreted as a primary profile. Inject factory so
+    // that the instance of CertificateProviderService for the profile can be
+    // created.
+    chromeos::CertificateProviderServiceFactory::GetInstance()
+        ->SetTestingFactory(
+            profile(), base::BindRepeating(&CreateCertificateProviderService));
+
     ArcServiceLauncher::Get()->OnPrimaryUserProfilePrepared(profile());
 
     auth_service_ = ArcAuthService::GetForBrowserContext(profile());
diff --git a/chrome/browser/chromeos/arc/enterprise/cert_store/arc_cert_installer.h b/chrome/browser/chromeos/arc/enterprise/cert_store/arc_cert_installer.h
index 01021379..1599443 100644
--- a/chrome/browser/chromeos/arc/enterprise/cert_store/arc_cert_installer.h
+++ b/chrome/browser/chromeos/arc/enterprise/cert_store/arc_cert_installer.h
@@ -6,6 +6,7 @@
 #define CHROME_BROWSER_CHROMEOS_ARC_ENTERPRISE_CERT_STORE_ARC_CERT_INSTALLER_H_
 
 #include <map>
+#include <memory>
 #include <set>
 #include <string>
 
@@ -29,7 +30,7 @@
 // ARC remote commands.
 class ArcCertInstaller : public policy::RemoteCommandsQueue::Observer {
  public:
-  ArcCertInstaller(content::BrowserContext* context);
+  explicit ArcCertInstaller(content::BrowserContext* context);
 
   // This constructor should be used only for testing.
   ArcCertInstaller(Profile* profile,
@@ -40,8 +41,10 @@
 
   // Install missing certificates via ARC remote commands.
   // Return false via |callback| in case of any error, and true otherwise.
-  void InstallArcCerts(const std::vector<net::ScopedCERTCertificate>& certs,
-                       InstallArcCertsCallback callback);
+  // Made virtual for override in test.
+  virtual void InstallArcCerts(
+      const std::vector<net::ScopedCERTCertificate>& certs,
+      InstallArcCertsCallback callback);
 
  private:
   // Install ARC certificate if not installed yet.
diff --git a/chrome/browser/chromeos/arc/enterprise/cert_store/arc_smart_card_manager_bridge.cc b/chrome/browser/chromeos/arc/enterprise/cert_store/arc_smart_card_manager_bridge.cc
new file mode 100644
index 0000000..3b44d12
--- /dev/null
+++ b/chrome/browser/chromeos/arc/enterprise/cert_store/arc_smart_card_manager_bridge.cc
@@ -0,0 +1,109 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/chromeos/arc/enterprise/cert_store/arc_smart_card_manager_bridge.h"
+
+#include <utility>
+
+#include "base/bind.h"
+#include "base/callback.h"
+#include "base/logging.h"
+#include "base/memory/singleton.h"
+#include "chrome/browser/chromeos/certificate_provider/certificate_provider_service.h"
+#include "chrome/browser/chromeos/certificate_provider/certificate_provider_service_factory.h"
+#include "components/arc/arc_browser_context_keyed_service_factory_base.h"
+#include "net/cert/x509_util_nss.h"
+
+namespace arc {
+
+namespace {
+
+// Singleton factory for ArcSmartCardManagerBridge.
+class ArcSmartCardManagerBridgeFactory
+    : public internal::ArcBrowserContextKeyedServiceFactoryBase<
+          ArcSmartCardManagerBridge,
+          ArcSmartCardManagerBridgeFactory> {
+ public:
+  // Factory name used by ArcBrowserContextKeyedServiceFactoryBase.
+  static constexpr const char* kName = "ArcSmartCardManagerBridgeFactory";
+
+  static ArcSmartCardManagerBridgeFactory* GetInstance() {
+    return base::Singleton<ArcSmartCardManagerBridgeFactory>::get();
+  }
+
+ private:
+  friend base::DefaultSingletonTraits<ArcSmartCardManagerBridgeFactory>;
+  ArcSmartCardManagerBridgeFactory() {
+    DependsOn(chromeos::CertificateProviderServiceFactory::GetInstance());
+  }
+
+  ~ArcSmartCardManagerBridgeFactory() override = default;
+};
+
+}  // namespace
+
+// static
+ArcSmartCardManagerBridge* ArcSmartCardManagerBridge::GetForBrowserContext(
+    content::BrowserContext* context) {
+  return ArcSmartCardManagerBridgeFactory::GetForBrowserContext(context);
+}
+
+ArcSmartCardManagerBridge::ArcSmartCardManagerBridge(
+    content::BrowserContext* context,
+    ArcBridgeService* bridge_service)
+    : ArcSmartCardManagerBridge(
+          bridge_service,
+          chromeos::CertificateProviderServiceFactory::GetForBrowserContext(
+              context)
+              ->CreateCertificateProvider(),
+          std::make_unique<ArcCertInstaller>(context)) {}
+
+ArcSmartCardManagerBridge::ArcSmartCardManagerBridge(
+    ArcBridgeService* bridge_service,
+    std::unique_ptr<chromeos::CertificateProvider> certificate_provider,
+    std::unique_ptr<ArcCertInstaller> installer)
+    : arc_bridge_service_(bridge_service),
+      certificate_provider_(std::move(certificate_provider)),
+      installer_(std::move(installer)),
+      weak_ptr_factory_(this) {
+  VLOG(1) << "ArcSmartCardManagerBridge::ArcSmartCardManagerBridge";
+  arc_bridge_service_->smart_card_manager()->SetHost(this);
+}
+
+ArcSmartCardManagerBridge::~ArcSmartCardManagerBridge() {
+  VLOG(1) << "ArcSmartCardManagerBridge::~ArcSmartCardManagerBridge";
+
+  arc_bridge_service_->smart_card_manager()->SetHost(nullptr);
+}
+
+void ArcSmartCardManagerBridge::Refresh(RefreshCallback callback) {
+  VLOG(1) << "ArcSmartCardManagerBridge::Refresh";
+
+  certificate_provider_->GetCertificates(
+      base::BindOnce(&ArcSmartCardManagerBridge::DidGetCerts,
+                     weak_ptr_factory_.GetWeakPtr(), std::move(callback)));
+}
+
+void ArcSmartCardManagerBridge::DidGetCerts(
+    RefreshCallback callback,
+    net::ClientCertIdentityList cert_identities) {
+  VLOG(1) << "ArcSmartCardManagerBridge::DidGetCerts";
+
+  std::vector<net::ScopedCERTCertificate> certificates;
+  for (const auto& identity : cert_identities) {
+    net::ScopedCERTCertificate nss_cert(
+        net::x509_util::CreateCERTCertificateFromX509Certificate(
+            identity->certificate()));
+    if (!nss_cert) {
+      LOG(ERROR) << "Certificate provider returned an invalid smart card "
+                 << "certificate.";
+      continue;
+    }
+
+    certificates.push_back(std::move(nss_cert));
+  }
+  installer_->InstallArcCerts(std::move(certificates), std::move(callback));
+}
+
+}  // namespace arc
diff --git a/chrome/browser/chromeos/arc/enterprise/cert_store/arc_smart_card_manager_bridge.h b/chrome/browser/chromeos/arc/enterprise/cert_store/arc_smart_card_manager_bridge.h
new file mode 100644
index 0000000..c94bf3a
--- /dev/null
+++ b/chrome/browser/chromeos/arc/enterprise/cert_store/arc_smart_card_manager_bridge.h
@@ -0,0 +1,66 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CHROME_BROWSER_CHROMEOS_ARC_ENTERPRISE_CERT_STORE_ARC_SMART_CARD_MANAGER_BRIDGE_H_
+#define CHROME_BROWSER_CHROMEOS_ARC_ENTERPRISE_CERT_STORE_ARC_SMART_CARD_MANAGER_BRIDGE_H_
+
+#include <memory>
+
+#include "base/memory/weak_ptr.h"
+#include "chrome/browser/chromeos/arc/enterprise/cert_store/arc_cert_installer.h"
+#include "chrome/browser/chromeos/certificate_provider/certificate_provider.h"
+#include "components/arc/mojom/cert_store.mojom.h"
+#include "components/arc/session/arc_bridge_service.h"
+#include "components/keyed_service/core/keyed_service.h"
+#include "net/cert/scoped_nss_types.h"
+
+namespace content {
+
+class BrowserContext;
+
+}  // namespace content
+
+namespace arc {
+
+class ArcBridgeService;
+
+class ArcSmartCardManagerBridge : public KeyedService,
+                                  public mojom::SmartCardManagerHost {
+ public:
+  // Returns singleton instance for the given BrowserContext,
+  // or nullptr if the browser |context| is not allowed to use ARC.
+  static ArcSmartCardManagerBridge* GetForBrowserContext(
+      content::BrowserContext* context);
+
+  ArcSmartCardManagerBridge(content::BrowserContext* context,
+                            ArcBridgeService* bridge_service);
+
+  // This constructor is public only for testing.
+  ArcSmartCardManagerBridge(
+      ArcBridgeService* bridge_service,
+      std::unique_ptr<chromeos::CertificateProvider> certificate_provider,
+      std::unique_ptr<ArcCertInstaller> installer);
+
+  ~ArcSmartCardManagerBridge() override;
+
+  // SmartCardManagerHost overrides.
+  void Refresh(RefreshCallback callback) override;
+
+ private:
+  void DidGetCerts(RefreshCallback callback,
+                   net::ClientCertIdentityList cert_identities);
+
+  ArcBridgeService* const arc_bridge_service_;  // Owned by ArcServiceManager.
+
+  std::unique_ptr<chromeos::CertificateProvider> certificate_provider_;
+  std::unique_ptr<ArcCertInstaller> installer_;
+
+  base::WeakPtrFactory<ArcSmartCardManagerBridge> weak_ptr_factory_;
+
+  DISALLOW_COPY_AND_ASSIGN(ArcSmartCardManagerBridge);
+};
+
+}  // namespace arc
+
+#endif  // CHROME_BROWSER_CHROMEOS_ARC_ENTERPRISE_CERT_STORE_ARC_SMART_CARD_MANAGER_BRIDGE_H_
diff --git a/chrome/browser/chromeos/arc/enterprise/cert_store/arc_smart_card_manager_bridge_unittest.cc b/chrome/browser/chromeos/arc/enterprise/cert_store/arc_smart_card_manager_bridge_unittest.cc
new file mode 100644
index 0000000..ce976a4
--- /dev/null
+++ b/chrome/browser/chromeos/arc/enterprise/cert_store/arc_smart_card_manager_bridge_unittest.cc
@@ -0,0 +1,184 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include <string>
+#include <vector>
+
+#include "base/memory/ptr_util.h"
+#include "base/threading/sequenced_task_runner_handle.h"
+#include "chrome/browser/chromeos/arc/enterprise/cert_store/arc_cert_installer.h"
+#include "chrome/browser/chromeos/arc/enterprise/cert_store/arc_smart_card_manager_bridge.h"
+#include "chrome/browser/chromeos/certificate_provider/certificate_provider.h"
+#include "chrome/common/net/x509_certificate_model_nss.h"
+#include "chrome/test/base/testing_profile.h"
+#include "components/arc/session/arc_bridge_service.h"
+#include "components/policy/core/common/remote_commands/remote_commands_queue.h"
+#include "content/public/test/browser_task_environment.h"
+#include "crypto/rsa_private_key.h"
+#include "net/cert/x509_certificate.h"
+#include "net/cert/x509_util.h"
+#include "net/ssl/client_cert_identity_test_util.h"
+#include "net/ssl/ssl_private_key.h"
+#include "net/ssl/test_ssl_private_key.h"
+#include "testing/gmock/include/gmock/gmock.h"
+#include "testing/gtest/include/gtest/gtest.h"
+
+namespace arc {
+
+using testing::_;
+using testing::Invoke;
+using testing::StrictMock;
+using testing::WithArg;
+
+namespace {
+
+MATCHER_P(EqualsClientCertIdentityList, cert_names, "") {
+  if (cert_names.size() != arg.size())
+    return false;
+  for (size_t i = 0; i < arg.size(); ++i) {
+    if (!arg[i])
+      return false;
+
+    std::string cert_name =
+        x509_certificate_model::GetCertNameOrNickname(arg[i].get());
+    if (cert_name != cert_names[i])
+      return false;
+  }
+  return true;
+}
+
+// Fake class for CertificateProvider.
+class FakeCertificateProvider : public chromeos::CertificateProvider {
+ public:
+  void GetCertificates(
+      base::OnceCallback<void(net::ClientCertIdentityList)> callback) override {
+    std::move(callback).Run(std::move(certificates_));
+  }
+
+  // Returns true if the certificates for |cert_names| are created successfully.
+  bool SetCertificates(std::vector<std::string> cert_names) {
+    certificates_ = net::ClientCertIdentityList();
+    for (const auto& cert_name : cert_names) {
+      if (!AddCert(cert_name))
+        return false;
+    }
+    return true;
+  }
+
+  std::unique_ptr<CertificateProvider> Copy() override {
+    NOTREACHED();
+    return nullptr;
+  }
+
+ private:
+  // Returns true if the certificate for |name| is created successfully.
+  bool AddCert(const std::string& name) {
+    if (name.empty())
+      return false;
+    std::unique_ptr<crypto::RSAPrivateKey> key(
+        crypto::RSAPrivateKey::Create(1024));
+    scoped_refptr<net::SSLPrivateKey> ssl_private_key =
+        net::WrapRSAPrivateKey(key.get());
+    if (!ssl_private_key)
+      return false;
+
+    std::string cn = "CN=" + name;
+    std::string der_cert;
+    if (!net::x509_util::CreateSelfSignedCert(
+            key->key(), net::x509_util::DIGEST_SHA256, cn, 1,
+            base::Time::UnixEpoch(), base::Time::UnixEpoch(), {}, &der_cert)) {
+      return false;
+    }
+    scoped_refptr<net::X509Certificate> cert =
+        net::X509Certificate::CreateFromBytes(der_cert.data(), der_cert.size());
+    if (!cert)
+      return false;
+    certificates_.push_back(
+        std::make_unique<net::FakeClientCertIdentity>(cert, ssl_private_key));
+    return true;
+  }
+
+  net::ClientCertIdentityList certificates_;
+};
+
+class MockArcCertInstaller : public ArcCertInstaller {
+ public:
+  MockArcCertInstaller(Profile* profile,
+                       std::unique_ptr<policy::RemoteCommandsQueue> queue)
+      : ArcCertInstaller(profile, std::move(queue)) {}
+  MOCK_METHOD2(InstallArcCerts,
+               void(const std::vector<net::ScopedCERTCertificate>& certs,
+                    InstallArcCertsCallback callback));
+};
+
+}  // namespace
+
+class ArcSmartCardManagerBridgeTest : public testing::Test {
+ public:
+  ArcSmartCardManagerBridgeTest()
+      : bridge_service_(std::make_unique<ArcBridgeService>()) {}
+
+  void SetUp() override {
+    provider_ = new FakeCertificateProvider();
+    installer_ = new StrictMock<MockArcCertInstaller>(
+        &profile_, std::make_unique<policy::RemoteCommandsQueue>());
+    bridge_ = std::make_unique<ArcSmartCardManagerBridge>(
+        bridge_service_.get(), base::WrapUnique(provider_),
+        base::WrapUnique(installer_));
+  }
+
+  void TearDown() override {
+    provider_ = nullptr;
+    installer_ = nullptr;
+    bridge_.reset();
+  }
+
+  FakeCertificateProvider* provider() { return provider_; }
+  MockArcCertInstaller* installer() { return installer_; }
+  ArcSmartCardManagerBridge* bridge() { return bridge_.get(); }
+
+ private:
+  content::BrowserTaskEnvironment browser_task_environment_;
+  TestingProfile profile_;
+
+  std::unique_ptr<ArcBridgeService> bridge_service_;
+
+  FakeCertificateProvider* provider_;  // Owned by |bridge_|.
+  MockArcCertInstaller* installer_;    // Owned by |bridge_|.
+
+  std::unique_ptr<ArcSmartCardManagerBridge> bridge_;
+
+  DISALLOW_COPY_AND_ASSIGN(ArcSmartCardManagerBridgeTest);
+};
+
+// Tests that refreshing smart card certs completes successfully if there is no
+// smart card certs.
+TEST_F(ArcSmartCardManagerBridgeTest, NoSmartCardTest) {
+  const std::vector<std::string> cert_names = {};
+  ASSERT_TRUE(provider()->SetCertificates(cert_names));
+  EXPECT_CALL(*installer(),
+              InstallArcCerts(EqualsClientCertIdentityList(cert_names), _))
+      .WillOnce(
+          WithArg<1>(Invoke([](base::OnceCallback<void(bool result)> callback) {
+            std::move(callback).Run(true);
+          })));
+  bridge()->Refresh(base::BindOnce([](bool result) { EXPECT_TRUE(result); }));
+}
+
+// Tests that refreshing smart card certs completes successfully if there are
+// two smart card certs available.
+TEST_F(ArcSmartCardManagerBridgeTest, BasicSmartCardTest) {
+  const std::vector<std::string> cert_names = {"fake1", "fake2"};
+
+  ASSERT_TRUE(provider()->SetCertificates(cert_names));
+  EXPECT_CALL(*installer(),
+              InstallArcCerts(EqualsClientCertIdentityList(cert_names), _))
+      .WillOnce(
+          WithArg<1>(Invoke([](base::OnceCallback<void(bool result)> callback) {
+            std::move(callback).Run(true);
+          })));
+  bridge()->Refresh(base::BindOnce([](bool result) { EXPECT_TRUE(result); }));
+}
+
+}  // namespace arc
diff --git a/chrome/browser/chromeos/policy/android_management_client_unittest.cc b/chrome/browser/chromeos/policy/android_management_client_unittest.cc
index feb943a7..3d09be4 100644
--- a/chrome/browser/chromeos/policy/android_management_client_unittest.cc
+++ b/chrome/browser/chromeos/policy/android_management_client_unittest.cc
@@ -78,7 +78,7 @@
   EXPECT_CALL(service_, StartJob(_))
       .WillOnce(DoAll(service_.CaptureJobType(&job_type),
                       service_.CaptureQueryParams(&params),
-                      service_.StartJobOKSync(android_management_response_)));
+                      service_.StartJobOKAsync(android_management_response_)));
   EXPECT_CALL(callback_observer_,
               Run(AndroidManagementClient::Result::UNMANAGED))
       .Times(1);
@@ -93,6 +93,7 @@
       .WaitForAccessTokenRequestIfNecessaryAndRespondWithToken(
           account_info.account_id, kOAuthToken, base::Time::Max());
 
+  base::RunLoop().RunUntilIdle();
   ASSERT_EQ(
       DeviceManagementService::JobConfiguration::TYPE_ANDROID_MANAGEMENT_CHECK,
       job_type);
diff --git a/chrome/browser/chromeos/policy/device_cloud_policy_manager_chromeos_unittest.cc b/chrome/browser/chromeos/policy/device_cloud_policy_manager_chromeos_unittest.cc
index 9b8efde..2aef21ad 100644
--- a/chrome/browser/chromeos/policy/device_cloud_policy_manager_chromeos_unittest.cc
+++ b/chrome/browser/chromeos/policy/device_cloud_policy_manager_chromeos_unittest.cc
@@ -831,7 +831,7 @@
   DeviceManagementService::JobConfiguration::JobType job_type;
   EXPECT_CALL(device_management_service_, StartJob(_))
       .WillOnce(DoAll(device_management_service_.CaptureJobType(&job_type),
-                      device_management_service_.StartJobOKSync(response)));
+                      device_management_service_.StartJobOKAsync(response)));
   EXPECT_CALL(*this, OnUnregistered(true));
 
   // Start unregistering.
@@ -853,7 +853,7 @@
   DeviceManagementService::JobConfiguration::JobType job_type;
   EXPECT_CALL(device_management_service_, StartJob(_))
       .WillOnce(DoAll(device_management_service_.CaptureJobType(&job_type),
-                      device_management_service_.StartJobSync(
+                      device_management_service_.StartJobAsync(
                           net::ERR_FAILED, DeviceManagementService::kSuccess)));
   EXPECT_CALL(*this, OnUnregistered(false));
 
diff --git a/chrome/browser/chromeos/policy/device_local_account_policy_service_unittest.cc b/chrome/browser/chromeos/policy/device_local_account_policy_service_unittest.cc
index 92f7555..895701ff 100644
--- a/chrome/browser/chromeos/policy/device_local_account_policy_service_unittest.cc
+++ b/chrome/browser/chromeos/policy/device_local_account_policy_service_unittest.cc
@@ -496,7 +496,8 @@
   response.mutable_policy_response()->add_responses()->CopyFrom(
       device_local_account_policy_.policy());
   EXPECT_CALL(mock_device_management_service_, StartJob(_))
-      .WillOnce(mock_device_management_service_.StartJobOKSync(response));
+      .WillRepeatedly(
+          mock_device_management_service_.StartJobOKAsync(response));
   EXPECT_CALL(*this, OnRefreshDone(true)).Times(1);
   // This will be called twice, because the ComponentCloudPolicyService will
   // also become ready after flushing all the pending tasks.
@@ -967,7 +968,7 @@
   // Bring up the cloud connection. The refresh scheduler may fire refreshes at
   // this point which are not relevant for the test.
   EXPECT_CALL(mock_device_management_service_, StartJob(_))
-      .WillRepeatedly(mock_device_management_service_.StartJobSync(
+      .WillRepeatedly(mock_device_management_service_.StartJobAsync(
           net::ERR_FAILED, DeviceManagementService::kSuccess));
   service_->Connect(&mock_device_management_service_);
   FlushDeviceSettings();
diff --git a/chrome/browser/component_updater/widevine_cdm_component_installer.cc b/chrome/browser/component_updater/widevine_cdm_component_installer.cc
index 243a017..b0a55912 100644
--- a/chrome/browser/component_updater/widevine_cdm_component_installer.cc
+++ b/chrome/browser/component_updater/widevine_cdm_component_installer.cc
@@ -6,7 +6,6 @@
 
 #include <stddef.h>
 #include <stdint.h>
-#include <string.h>
 #include <memory>
 #include <string>
 #include <utility>
@@ -14,21 +13,16 @@
 
 #include "base/base_paths.h"
 #include "base/bind.h"
-#include "base/containers/flat_set.h"
 #include "base/files/file_path.h"
 #include "base/files/file_util.h"
 #include "base/logging.h"
 #include "base/memory/ref_counted.h"
 #include "base/native_library.h"
 #include "base/stl_util.h"
-#include "base/strings/string16.h"
-#include "base/strings/string_number_conversions.h"
-#include "base/strings/string_split.h"
-#include "base/strings/string_util.h"
-#include "base/strings/utf_string_conversions.h"
 #include "base/task/post_task.h"
 #include "base/values.h"
 #include "build/build_config.h"
+#include "chrome/common/media/cdm_manifest.h"
 #include "components/component_updater/component_installer.h"
 #include "components/component_updater/component_updater_service.h"
 #include "components/version_info/version_info.h"
@@ -37,12 +31,6 @@
 #include "content/public/browser/cdm_registry.h"
 #include "content/public/common/cdm_info.h"
 #include "crypto/sha2.h"
-// TODO(crbug.com/825041): Move EncryptionMode out of decrypt_config and
-// rename it to EncryptionScheme.
-#include "media/base/decrypt_config.h"
-#include "media/base/video_codecs.h"
-#include "media/cdm/cdm_proxy.h"
-#include "media/cdm/supported_cdm_versions.h"
 #include "third_party/widevine/cdm/buildflags.h"
 #include "third_party/widevine/cdm/widevine_cdm_common.h"
 
@@ -85,54 +73,6 @@
     "???";
 #endif
 
-// The CDM manifest includes several custom values, all beginning with "x-cdm-".
-// All values are strings.
-// All values that are lists are delimited by commas. No trailing commas.
-// For example, "1,2,4".
-const char kCdmValueDelimiter[] = ",";
-
-// The following entries are required.
-//  Interface versions are lists of integers (e.g. "1" or "1,2,4").
-//  These are checked in this file before registering the CDM.
-//  All match the interface versions from content_decryption_module.h that the
-//  CDM supports.
-//    Matches CDM_MODULE_VERSION.
-const char kCdmModuleVersionsName[] = "x-cdm-module-versions";
-//    Matches supported ContentDecryptionModule_* version(s).
-const char kCdmInterfaceVersionsName[] = "x-cdm-interface-versions";
-//    Matches supported Host_* version(s).
-const char kCdmHostVersionsName[] = "x-cdm-host-versions";
-//  The codecs list is a list of simple codec names (e.g. "vp8,vorbis").
-const char kCdmCodecsListName[] = "x-cdm-codecs";
-//  Whether persistent license is supported by the CDM: "true" or "false".
-const char kCdmPersistentLicenseSupportName[] =
-    "x-cdm-persistent-license-support";
-const char kCdmSupportedEncryptionSchemesName[] =
-    "x-cdm-supported-encryption-schemes";
-const char kCdmSupportedCdmProxyProtocolsName[] =
-    "x-cdm-supported-cdm-proxy-protocols";
-
-// The following strings are used to specify supported codecs in the
-// parameter |kCdmCodecsListName|.
-const char kCdmSupportedCodecVp8[] = "vp8";
-// Legacy VP9, which is equivalent to VP9 profile 0.
-// TODO(xhwang): Newer CDMs should support "vp09" below. Remove this after older
-// CDMs are obsolete.
-const char kCdmSupportedCodecLegacyVp9[] = "vp9.0";
-// Supports at least VP9 profile 0 and profile 2.
-const char kCdmSupportedCodecVp9[] = "vp09";
-const char kCdmSupportedCodecAv1[] = "av01";
-const char kCdmSupportedCodecAvc1[] = "avc1";
-
-// The following strings are used to specify supported encryption schemes in
-// the parameter |kCdmSupportedEncryptionSchemesName|.
-const char kCdmSupportedEncryptionSchemeCenc[] = "cenc";
-const char kCdmSupportedEncryptionSchemeCbcs[] = "cbcs";
-
-// The following string(s) are used to specify supported CdmProxy protocols in
-// the parameter |kCdmSupportedCdmProxyProtocolsName|.
-const char kCdmSupportedCdmProxyProtocolIntel[] = "intel";
-
 // Widevine CDM is packaged as a multi-CRX. Widevine CDM binaries are located in
 // _platform_specific/<platform_arch> folder in the package. This function
 // returns the platform-specific subdirectory that is part of that multi-CRX.
@@ -143,235 +83,6 @@
   return base_path.AppendASCII("_platform_specific").AppendASCII(platform_arch);
 }
 
-typedef bool (*VersionCheckFunc)(int version);
-
-bool CheckForCompatibleVersion(const base::DictionaryValue& manifest,
-                               const std::string version_name,
-                               VersionCheckFunc version_check_func) {
-  std::string versions_string;
-  if (!manifest.GetString(version_name, &versions_string)) {
-    DVLOG(1) << "Widevine CDM component manifest missing " << version_name;
-    return false;
-  }
-  DVLOG_IF(1, versions_string.empty())
-      << "Widevine CDM component manifest has empty " << version_name;
-
-  for (const base::StringPiece& ver_str :
-       base::SplitStringPiece(versions_string, kCdmValueDelimiter,
-                              base::TRIM_WHITESPACE, base::SPLIT_WANT_ALL)) {
-    int version = 0;
-    if (base::StringToInt(ver_str, &version))
-      if (version_check_func(version))
-        return true;
-  }
-
-  DVLOG(1) << "Widevine CDM component manifest has no supported "
-           << version_name << " in '" << versions_string << "'";
-  return false;
-}
-
-// Returns whether the CDM's API versions, as specified in the manifest, are
-// supported in this Chrome binary and not disabled at run time.
-// Checks the module API, CDM interface API, and Host API.
-// This should never fail except in rare cases where the component has not been
-// updated recently or the user downgrades Chrome.
-bool IsCompatibleWithChrome(const base::DictionaryValue& manifest) {
-  return CheckForCompatibleVersion(manifest, kCdmModuleVersionsName,
-                                   media::IsSupportedCdmModuleVersion) &&
-         CheckForCompatibleVersion(
-             manifest, kCdmInterfaceVersionsName,
-             media::IsSupportedAndEnabledCdmInterfaceVersion) &&
-         CheckForCompatibleVersion(manifest, kCdmHostVersionsName,
-                                   media::IsSupportedCdmHostVersion);
-}
-
-// Returns true and updates |video_codecs| if the appropriate manifest entry is
-// valid. When VP9 is supported, sets |supports_vp9_profile2| if profile 2 is
-// supported. Older CDMs may only support profile 0. Returns false and does not
-// modify |video_codecs| if the manifest entry is incorrectly formatted.
-bool GetCodecs(const base::DictionaryValue& manifest,
-               std::vector<media::VideoCodec>* video_codecs,
-               bool* supports_vp9_profile2) {
-  DCHECK(video_codecs);
-
-  const base::Value* value = manifest.FindKey(kCdmCodecsListName);
-  if (!value) {
-    DLOG(WARNING) << "Widevine CDM component manifest is missing codecs.";
-    return true;
-  }
-
-  if (!value->is_string()) {
-    DLOG(ERROR) << "Manifest entry " << kCdmCodecsListName
-                << " is not a string.";
-    return false;
-  }
-
-  const std::string& codecs = value->GetString();
-  if (codecs.empty()) {
-    DLOG(WARNING) << "Widevine CDM component manifest has empty codecs list.";
-    return true;
-  }
-
-  std::vector<media::VideoCodec> result;
-  const std::vector<base::StringPiece> supported_codecs =
-      base::SplitStringPiece(codecs, kCdmValueDelimiter, base::TRIM_WHITESPACE,
-                             base::SPLIT_WANT_NONEMPTY);
-
-  // Assuming VP9 profile 2 is not supported by default. Will only be set when
-  // kCdmSupportedCodecVp9 is available below.
-  *supports_vp9_profile2 = false;
-
-  for (const auto& codec : supported_codecs) {
-    if (codec == kCdmSupportedCodecVp8) {
-      result.push_back(media::VideoCodec::kCodecVP8);
-    } else if (codec == kCdmSupportedCodecLegacyVp9) {
-      result.push_back(media::VideoCodec::kCodecVP9);
-    } else if (codec == kCdmSupportedCodecVp9) {
-      result.push_back(media::VideoCodec::kCodecVP9);
-      *supports_vp9_profile2 = true;
-    } else if (codec == kCdmSupportedCodecAv1) {
-      result.push_back(media::VideoCodec::kCodecAV1);
-    } else if (codec == kCdmSupportedCodecAvc1) {
-      result.push_back(media::VideoCodec::kCodecH264);
-    }
-  }
-
-  video_codecs->swap(result);
-  return true;
-}
-
-// Returns true and updates |session_types| if the appropriate manifest entry is
-// valid. Returns false if the manifest entry is incorrectly formatted.
-bool GetSessionTypes(const base::DictionaryValue& manifest,
-                     base::flat_set<media::CdmSessionType>* session_types) {
-  DCHECK(session_types);
-
-  bool is_persistent_license_supported = false;
-  const base::Value* value = manifest.FindKey(kCdmPersistentLicenseSupportName);
-  if (value) {
-    if (!value->is_bool())
-      return false;
-    is_persistent_license_supported = value->GetBool();
-  }
-
-  // Temporary session is always supported.
-  session_types->insert(media::CdmSessionType::kTemporary);
-
-  if (is_persistent_license_supported)
-    session_types->insert(media::CdmSessionType::kPersistentLicense);
-
-  return true;
-}
-
-// Returns true and updates |encryption_schemes| if the appropriate manifest
-// entry is valid. Returns false and does not modify |encryption_schemes| if the
-// manifest entry is incorrectly formatted. It is assumed that all CDMs support
-// 'cenc', so if the manifest entry is missing, the result will indicate support
-// for 'cenc' only. Incorrect types in the manifest entry will log the error and
-// fail. Unrecognized values will be reported but otherwise ignored.
-bool GetEncryptionSchemes(
-    const base::DictionaryValue& manifest,
-    base::flat_set<media::EncryptionMode>* encryption_schemes) {
-  DCHECK(encryption_schemes);
-
-  const base::Value* value =
-      manifest.FindKey(kCdmSupportedEncryptionSchemesName);
-  if (!value) {
-    // No manifest entry found, so assume only 'cenc' supported for backwards
-    // compatibility.
-    encryption_schemes->insert(media::EncryptionMode::kCenc);
-    return true;
-  }
-
-  if (!value->is_list()) {
-    DLOG(ERROR) << "Manifest entry " << kCdmSupportedEncryptionSchemesName
-                << " is not a list.";
-    return false;
-  }
-
-  base::span<const base::Value> list = value->GetList();
-  base::flat_set<media::EncryptionMode> result;
-  for (const auto& item : list) {
-    if (!item.is_string()) {
-      DLOG(ERROR) << "Unrecognized item type in manifest entry "
-                  << kCdmSupportedEncryptionSchemesName;
-      return false;
-    }
-
-    const std::string& scheme = item.GetString();
-    if (scheme == kCdmSupportedEncryptionSchemeCenc) {
-      result.insert(media::EncryptionMode::kCenc);
-    } else if (scheme == kCdmSupportedEncryptionSchemeCbcs) {
-      result.insert(media::EncryptionMode::kCbcs);
-    } else {
-      DLOG(WARNING) << "Unrecognized encryption scheme " << scheme
-                    << " in manifest entry "
-                    << kCdmSupportedEncryptionSchemesName;
-    }
-  }
-
-  // As the manifest entry exists, it must specify at least one valid value.
-  if (result.empty())
-    return false;
-
-  encryption_schemes->swap(result);
-  return true;
-}
-
-// Returns true and updates |cdm_proxy_protocols| if the appropriate manifest
-// entry is valid. Returns false and does not modify |cdm_proxy_protocols| if
-// the manifest entry is incorrectly formatted. Incorrect types in the manifest
-// entry will log the error and fail. Unrecognized values will be reported but
-// otherwise ignored.
-bool GetCdmProxyProtocols(
-    const base::DictionaryValue& manifest,
-    base::flat_set<media::CdmProxy::Protocol>* cdm_proxy_protocols) {
-  const auto* value = manifest.FindKey(kCdmSupportedCdmProxyProtocolsName);
-  if (!value)
-    return true;
-
-  if (!value->is_list()) {
-    DLOG(ERROR) << "Manifest entry " << kCdmSupportedCdmProxyProtocolsName
-                << " is not a list.";
-    return false;
-  }
-
-  base::span<const base::Value> list = value->GetList();
-  base::flat_set<media::CdmProxy::Protocol> result;
-  for (const auto& item : list) {
-    if (!item.is_string()) {
-      DLOG(ERROR) << "Unrecognized item type in manifest entry "
-                  << kCdmSupportedCdmProxyProtocolsName;
-      return false;
-    }
-
-    const std::string& protocol = item.GetString();
-    if (protocol == kCdmSupportedCdmProxyProtocolIntel) {
-      result.insert(media::CdmProxy::Protocol::kIntel);
-    } else {
-      DLOG(WARNING) << "Unrecognized CdmProxy protocol" << protocol
-                    << " in manifest entry "
-                    << kCdmSupportedCdmProxyProtocolsName;
-    }
-  }
-
-  cdm_proxy_protocols->swap(result);
-  return true;
-}
-
-// Returns true if the entries in the manifest can be parsed correctly,
-// false otherwise. Updates |capability|, with the values obtained from the
-// manifest, if they are provided. If this method returns false, |capability|
-// may or may not be updated.
-bool ParseManifest(const base::DictionaryValue& manifest,
-                   content::CdmCapability* capability) {
-  return GetCodecs(manifest, &capability->video_codecs,
-                   &capability->supports_vp9_profile2) &&
-         GetEncryptionSchemes(manifest, &capability->encryption_schemes) &&
-         GetSessionTypes(manifest, &capability->session_types) &&
-         GetCdmProxyProtocols(manifest, &capability->cdm_proxy_protocols);
-}
-
 void RegisterWidevineCdmWithChrome(
     const base::Version& cdm_version,
     const base::FilePath& cdm_install_dir,
@@ -382,13 +93,12 @@
   // avoid the case where the CDM is accepted by the component updater
   // but not registered.
   content::CdmCapability capability;
-  if (!ParseManifest(*manifest, &capability)) {
+  if (!ParseCdmManifest(*manifest, &capability)) {
     VLOG(1) << "Not registering Widevine CDM due to malformed manifest.";
     return;
   }
 
   VLOG(1) << "Register Widevine CDM with Chrome";
-
   const base::FilePath cdm_path =
       GetPlatformDirectory(cdm_install_dir)
           .AppendASCII(base::GetNativeLibraryName(kWidevineCdmLibraryName));
@@ -457,7 +167,7 @@
     const base::Version& version,
     const base::FilePath& path,
     std::unique_ptr<base::DictionaryValue> manifest) {
-  if (!IsCompatibleWithChrome(*manifest)) {
+  if (!IsCdmManifestCompatibleWithChrome(*manifest)) {
     VLOG(1) << "Installed Widevine CDM component is incompatible.";
     return;
   }
@@ -475,12 +185,12 @@
 bool WidevineCdmComponentInstallerPolicy::VerifyInstallation(
     const base::DictionaryValue& manifest,
     const base::FilePath& install_dir) const {
+  const base::FilePath cdm_path =
+      GetPlatformDirectory(install_dir)
+          .AppendASCII(base::GetNativeLibraryName(kWidevineCdmLibraryName));
   content::CdmCapability capability;
-  return IsCompatibleWithChrome(manifest) &&
-         base::PathExists(GetPlatformDirectory(install_dir)
-                              .AppendASCII(base::GetNativeLibraryName(
-                                  kWidevineCdmLibraryName))) &&
-         ParseManifest(manifest, &capability);
+  return IsCdmManifestCompatibleWithChrome(manifest) &&
+         base::PathExists(cdm_path) && ParseCdmManifest(manifest, &capability);
 }
 
 // The base directory on Windows looks like:
diff --git a/chrome/browser/extensions/api/automation/automation_apitest.cc b/chrome/browser/extensions/api/automation/automation_apitest.cc
index bca9fda8..55a10e5e 100644
--- a/chrome/browser/extensions/api/automation/automation_apitest.cc
+++ b/chrome/browser/extensions/api/automation/automation_apitest.cc
@@ -414,6 +414,13 @@
       << message_;
 }
 
+IN_PROC_BROWSER_TEST_F(AutomationApiTest, IgnoredNodesNotReturned) {
+  StartEmbeddedTestServer();
+  ASSERT_TRUE(RunExtensionSubtest("automation/tests/tabs",
+                                  "ignored_nodes_not_returned.html"))
+      << message_;
+}
+
 #if defined(OS_CHROMEOS)
 
 class AutomationApiTestWithDeviceScaleFactor : public AutomationApiTest {
diff --git a/chrome/browser/extensions/extension_browsertest.cc b/chrome/browser/extensions/extension_browsertest.cc
index 924cda0..61bd7e8 100644
--- a/chrome/browser/extensions/extension_browsertest.cc
+++ b/chrome/browser/extensions/extension_browsertest.cc
@@ -75,7 +75,6 @@
 #include "extensions/common/file_util.h"
 #include "extensions/common/switches.h"
 #include "extensions/common/value_builder.h"
-#include "net/url_request/url_request_file_job.h"
 
 #if defined(OS_CHROMEOS)
 #include "chromeos/constants/chromeos_switches.h"
diff --git a/chrome/browser/flag-metadata.json b/chrome/browser/flag-metadata.json
index 51233da0..38b946a 100644
--- a/chrome/browser/flag-metadata.json
+++ b/chrome/browser/flag-metadata.json
@@ -29,6 +29,11 @@
 
 [
   {
+    "name": "accessibility-internals-page-improvements",
+    "owners": [ "abigailbklein" ],
+    "expiry_milestone": 82
+  },
+  {
     "name": "account-consistency",
     "owners": [ "droger", "msarda" ],
     "expiry_milestone": 80
diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc
index 6c18c2e22..a4b730f0 100644
--- a/chrome/browser/flag_descriptions.cc
+++ b/chrome/browser/flag_descriptions.cc
@@ -22,6 +22,11 @@
 const char kAcceleratedVideoEncodeDescription[] =
     "Hardware-accelerated video encode where available.";
 
+const char kAccessibilityInternalsPageImprovementsName[] =
+    "Accessibility internals page improvements";
+const char kAccessibilityInternalsPageImprovementsDescription[] =
+    "Improvements to the chrome://accessibility page.";
+
 const char kAllowInsecureLocalhostName[] =
     "Allow invalid certificates for resources loaded from localhost.";
 const char kAllowInsecureLocalhostDescription[] =
@@ -1628,6 +1633,13 @@
 const char kQuicName[] = "Experimental QUIC protocol";
 const char kQuicDescription[] = "Enable experimental QUIC protocol support.";
 
+const char kQuietNotificationPromptsName[] =
+    "Quieter notification permission prompts";
+const char kQuietNotificationPromptsDescription[] =
+    "Enables quieter permission prompts for notification permission requests. "
+    "When a site wishes to show notifications, the usual modal dialog is "
+    "replaced with a quieter version.";
+
 const char kReducedReferrerGranularityName[] =
     "Reduce default 'referer' header granularity.";
 const char kReducedReferrerGranularityDescription[] =
@@ -2635,13 +2647,6 @@
     "separated like strict site isolation, but process selection puts multiple "
     "site instances in a single process.";
 
-const char kQuietNotificationPromptsName[] =
-    "Quieter notification permission prompts";
-const char kQuietNotificationPromptsDescription[] =
-    "Enables quieter permission prompts for notification permission requests. "
-    "When a site wishes to show notifications, the usual modal dialog is "
-    "replaced with a quieter version.";
-
 const char kReaderModeHeuristicsName[] = "Reader Mode triggering";
 const char kReaderModeHeuristicsDescription[] =
     "Determines what pages the Reader Mode infobar is shown on.";
diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h
index 7a05b15..2729efb6 100644
--- a/chrome/browser/flag_descriptions.h
+++ b/chrome/browser/flag_descriptions.h
@@ -53,6 +53,9 @@
 extern const char kAcceleratedVideoEncodeName[];
 extern const char kAcceleratedVideoEncodeDescription[];
 
+extern const char kAccessibilityInternalsPageImprovementsName[];
+extern const char kAccessibilityInternalsPageImprovementsDescription[];
+
 extern const char kAllowInsecureLocalhostName[];
 extern const char kAllowInsecureLocalhostDescription[];
 
@@ -980,6 +983,9 @@
 extern const char kQuicName[];
 extern const char kQuicDescription[];
 
+extern const char kQuietNotificationPromptsName[];
+extern const char kQuietNotificationPromptsDescription[];
+
 extern const char kReducedReferrerGranularityName[];
 extern const char kReducedReferrerGranularityDescription[];
 
@@ -1553,9 +1559,6 @@
 extern const char kProcessSharingWithStrictSiteInstancesName[];
 extern const char kProcessSharingWithStrictSiteInstancesDescription[];
 
-extern const char kQuietNotificationPromptsName[];
-extern const char kQuietNotificationPromptsDescription[];
-
 extern const char kReaderModeHeuristicsName[];
 extern const char kReaderModeHeuristicsDescription[];
 extern const char kReaderModeHeuristicsMarkup[];
diff --git a/chrome/browser/metrics/chrome_browser_main_extra_parts_metrics.cc b/chrome/browser/metrics/chrome_browser_main_extra_parts_metrics.cc
index ac0ce8f..2854f1f3 100644
--- a/chrome/browser/metrics/chrome_browser_main_extra_parts_metrics.cc
+++ b/chrome/browser/metrics/chrome_browser_main_extra_parts_metrics.cc
@@ -302,18 +302,18 @@
         }
       }
     } else if (distro_tokens[0] == "Fedora") {
-      // Format: Fedora release RR (<codename>)
+      // Format: Fedora RR (<codename>)
       distro_result = UMA_LINUX_DISTRO_FEDORA_OTHER;
-      if (distro_tokens.size() >= 3) {
-        if (distro_tokens[2] == "24") {
+      if (distro_tokens.size() >= 2) {
+        if (distro_tokens[1] == "24") {
           distro_result = UMA_LINUX_DISTRO_FEDORA_24;
-        } else if (distro_tokens[2] == "25") {
+        } else if (distro_tokens[1] == "25") {
           distro_result = UMA_LINUX_DISTRO_FEDORA_25;
-        } else if (distro_tokens[2] == "26") {
+        } else if (distro_tokens[1] == "26") {
           distro_result = UMA_LINUX_DISTRO_FEDORA_26;
-        } else if (distro_tokens[2] == "27") {
+        } else if (distro_tokens[1] == "27") {
           distro_result = UMA_LINUX_DISTRO_FEDORA_27;
-        } else if (distro_tokens[2] == "28") {
+        } else if (distro_tokens[1] == "28") {
           distro_result = UMA_LINUX_DISTRO_FEDORA_28;
         }
       }
@@ -321,23 +321,23 @@
       // Format: Arch Linux
       distro_result = UMA_LINUX_DISTRO_ARCH;
     } else if (distro_tokens[0] == "CentOS") {
-      // Format: CentOS [Linux] release <version> (<codename>)
+      // Format: CentOS [Linux] <version> (<codename>)
       distro_result = UMA_LINUX_DISTRO_CENTOS;
     } else if (distro_tokens[0] == "elementary") {
       // Format: elementary OS <release name>
       distro_result = UMA_LINUX_DISTRO_ELEMENTARY;
     } else if (distro_tokens.size() >= 2 && distro_tokens[1] == "Mint") {
-      // Format: Linux Mint RR <codename>
+      // Format: Linux Mint RR
       distro_result = UMA_LINUX_DISTRO_MINT;
     } else if (distro_tokens.size() >= 4 && distro_tokens[0] == "Red" &&
                distro_tokens[1] == "Hat" && distro_tokens[2] == "Enterprise" &&
                distro_tokens[3] == "Linux") {
-      // Format: Red Hat Enterprise Linux <variant> [release] R.P (<codename>)
+      // Format: Red Hat Enterprise Linux <variant> R.P (<codename>)
       distro_result = UMA_LINUX_DISTRO_RHEL;
     } else if (distro_tokens.size() >= 3 && distro_tokens[0] == "SUSE" &&
                distro_tokens[1] == "Linux" &&
                distro_tokens[2] == "Enterprise") {
-      // Format: SUSE Linux Enterprise <variant> RR (<platform>)
+      // Format: SUSE Linux Enterprise <variant> RR
       distro_result = UMA_LINUX_DISTRO_SUSE_ENTERPRISE;
     }
   }
diff --git a/chrome/browser/notifications/platform_notification_service_interactive_uitest.cc b/chrome/browser/notifications/platform_notification_service_interactive_uitest.cc
index ddbc6865..0b52a37 100644
--- a/chrome/browser/notifications/platform_notification_service_interactive_uitest.cc
+++ b/chrome/browser/notifications/platform_notification_service_interactive_uitest.cc
@@ -904,8 +904,17 @@
   ASSERT_EQ(notification_ids[0], first_id);
 }
 
-IN_PROC_BROWSER_TEST_F(PlatformNotificationServiceBrowserTest,
-                       OrphanedNonPersistentNotificationCreatesForegroundTab) {
+// TODO(crbug.com/1002602): Test is flaky on TSAN.
+#if defined(THREAD_SANITIZER)
+#define MAYBE_OrphanedNonPersistentNotificationCreatesForegroundTab \
+  DISABLED_OrphanedNonPersistentNotificationCreatesForegroundTab
+#else
+#define MAYBE_OrphanedNonPersistentNotificationCreatesForegroundTab \
+  OrphanedNonPersistentNotificationCreatesForegroundTab
+#endif
+IN_PROC_BROWSER_TEST_F(
+    PlatformNotificationServiceBrowserTest,
+    MAYBE_OrphanedNonPersistentNotificationCreatesForegroundTab) {
   // Verifies that activating a non-persistent notification that no longer has
   // any event listeners attached (e.g. because the tab closed) creates a new
   // foreground tab.
diff --git a/chrome/browser/password_manager/password_generation_controller_impl.cc b/chrome/browser/password_manager/password_generation_controller_impl.cc
index 82302cc9..92743ad 100644
--- a/chrome/browser/password_manager/password_generation_controller_impl.cc
+++ b/chrome/browser/password_manager/password_generation_controller_impl.cc
@@ -221,9 +221,6 @@
           generation_element_data_->form_signature,
           generation_element_data_->field_signature,
           generation_element_data_->max_password_length, &spec_priority);
-  active_frame_driver_->GetPasswordManager()
-      ->ReportSpecPriorityForGeneratedPassword(generation_element_data_->form,
-                                               spec_priority);
   dialog_view_->Show(password, active_frame_driver_, type);
 }
 
diff --git a/chrome/browser/performance_manager/decorators/freeze_origin_trial_policy_aggregator_unittest.cc b/chrome/browser/performance_manager/decorators/freeze_origin_trial_policy_aggregator_unittest.cc
index 2c6e9383..925d120d 100644
--- a/chrome/browser/performance_manager/decorators/freeze_origin_trial_policy_aggregator_unittest.cc
+++ b/chrome/browser/performance_manager/decorators/freeze_origin_trial_policy_aggregator_unittest.cc
@@ -6,9 +6,9 @@
 
 #include "chrome/browser/performance_manager/graph/frame_node_impl.h"
 #include "chrome/browser/performance_manager/graph/graph_impl_operations.h"
-#include "chrome/browser/performance_manager/graph/graph_test_harness.h"
 #include "chrome/browser/performance_manager/graph/process_node_impl.h"
 #include "chrome/browser/performance_manager/public/graph/page_node.h"
+#include "chrome/browser/performance_manager/test_support/graph_test_harness.h"
 #include "services/resource_coordinator/public/mojom/coordination_unit.mojom.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
diff --git a/chrome/browser/performance_manager/decorators/frozen_frame_aggregator_unittest.cc b/chrome/browser/performance_manager/decorators/frozen_frame_aggregator_unittest.cc
index d93ef99..a9bc612e 100644
--- a/chrome/browser/performance_manager/decorators/frozen_frame_aggregator_unittest.cc
+++ b/chrome/browser/performance_manager/decorators/frozen_frame_aggregator_unittest.cc
@@ -7,9 +7,9 @@
 #include <memory>
 
 #include "chrome/browser/performance_manager/graph/frame_node_impl.h"
-#include "chrome/browser/performance_manager/graph/graph_test_harness.h"
 #include "chrome/browser/performance_manager/graph/page_node_impl.h"
 #include "chrome/browser/performance_manager/graph/process_node_impl.h"
+#include "chrome/browser/performance_manager/test_support/graph_test_harness.h"
 #include "testing/gmock/include/gmock/gmock.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
diff --git a/chrome/browser/performance_manager/decorators/page_almost_idle_decorator_unittest.cc b/chrome/browser/performance_manager/decorators/page_almost_idle_decorator_unittest.cc
index 2f29ca41..3c1f6f69 100644
--- a/chrome/browser/performance_manager/decorators/page_almost_idle_decorator_unittest.cc
+++ b/chrome/browser/performance_manager/decorators/page_almost_idle_decorator_unittest.cc
@@ -10,10 +10,10 @@
 
 #include "base/time/time.h"
 #include "chrome/browser/performance_manager/graph/frame_node_impl.h"
-#include "chrome/browser/performance_manager/graph/graph_test_harness.h"
-#include "chrome/browser/performance_manager/graph/mock_graphs.h"
 #include "chrome/browser/performance_manager/graph/page_node_impl.h"
 #include "chrome/browser/performance_manager/graph/process_node_impl.h"
+#include "chrome/browser/performance_manager/test_support/graph_test_harness.h"
+#include "chrome/browser/performance_manager/test_support/mock_graphs.h"
 #include "testing/gmock/include/gmock/gmock.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
diff --git a/chrome/browser/performance_manager/decorators/process_metrics_decorator_unittest.cc b/chrome/browser/performance_manager/decorators/process_metrics_decorator_unittest.cc
index aa1db8a7..b6fa075 100644
--- a/chrome/browser/performance_manager/decorators/process_metrics_decorator_unittest.cc
+++ b/chrome/browser/performance_manager/decorators/process_metrics_decorator_unittest.cc
@@ -8,9 +8,9 @@
 
 #include "base/optional.h"
 #include "base/run_loop.h"
-#include "chrome/browser/performance_manager/graph/graph_test_harness.h"
-#include "chrome/browser/performance_manager/graph/mock_graphs.h"
 #include "chrome/browser/performance_manager/graph/process_node_impl.h"
+#include "chrome/browser/performance_manager/test_support/graph_test_harness.h"
+#include "chrome/browser/performance_manager/test_support/mock_graphs.h"
 #include "services/resource_coordinator/public/cpp/memory_instrumentation/global_memory_dump.h"
 #include "testing/gmock/include/gmock/gmock.h"
 #include "testing/gtest/include/gtest/gtest.h"
diff --git a/chrome/browser/performance_manager/graph/frame_node_impl_unittest.cc b/chrome/browser/performance_manager/graph/frame_node_impl_unittest.cc
index fb96598..d5120a2 100644
--- a/chrome/browser/performance_manager/graph/frame_node_impl_unittest.cc
+++ b/chrome/browser/performance_manager/graph/frame_node_impl_unittest.cc
@@ -4,10 +4,10 @@
 
 #include "chrome/browser/performance_manager/graph/frame_node_impl.h"
 
-#include "chrome/browser/performance_manager/graph/graph_test_harness.h"
-#include "chrome/browser/performance_manager/graph/mock_graphs.h"
 #include "chrome/browser/performance_manager/graph/page_node_impl.h"
 #include "chrome/browser/performance_manager/graph/process_node_impl.h"
+#include "chrome/browser/performance_manager/test_support/graph_test_harness.h"
+#include "chrome/browser/performance_manager/test_support/mock_graphs.h"
 #include "testing/gmock/include/gmock/gmock.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
diff --git a/chrome/browser/performance_manager/graph/graph_impl_operations_unittest.cc b/chrome/browser/performance_manager/graph/graph_impl_operations_unittest.cc
index 92bcdf0c..4d09bd2 100644
--- a/chrome/browser/performance_manager/graph/graph_impl_operations_unittest.cc
+++ b/chrome/browser/performance_manager/graph/graph_impl_operations_unittest.cc
@@ -8,7 +8,7 @@
 
 #include "base/bind.h"
 #include "base/stl_util.h"
-#include "chrome/browser/performance_manager/graph/graph_test_harness.h"
+#include "chrome/browser/performance_manager/test_support/graph_test_harness.h"
 #include "testing/gmock/include/gmock/gmock.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
diff --git a/chrome/browser/performance_manager/graph/graph_impl_unittest.cc b/chrome/browser/performance_manager/graph/graph_impl_unittest.cc
index 9dca0b2..87530f1 100644
--- a/chrome/browser/performance_manager/graph/graph_impl_unittest.cc
+++ b/chrome/browser/performance_manager/graph/graph_impl_unittest.cc
@@ -8,10 +8,10 @@
 #include "base/process/process.h"
 #include "base/time/time.h"
 #include "chrome/browser/performance_manager/graph/frame_node_impl.h"
-#include "chrome/browser/performance_manager/graph/graph_test_harness.h"
-#include "chrome/browser/performance_manager/graph/mock_graphs.h"
 #include "chrome/browser/performance_manager/graph/process_node_impl.h"
 #include "chrome/browser/performance_manager/graph/system_node_impl.h"
+#include "chrome/browser/performance_manager/test_support/graph_test_harness.h"
+#include "chrome/browser/performance_manager/test_support/mock_graphs.h"
 #include "testing/gmock/include/gmock/gmock.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
diff --git a/chrome/browser/performance_manager/graph/graph_operations_unittest.cc b/chrome/browser/performance_manager/graph/graph_operations_unittest.cc
index 2c6e9ff..cc85831 100644
--- a/chrome/browser/performance_manager/graph/graph_operations_unittest.cc
+++ b/chrome/browser/performance_manager/graph/graph_operations_unittest.cc
@@ -7,7 +7,7 @@
 #include <algorithm>
 
 #include "base/bind.h"
-#include "chrome/browser/performance_manager/graph/graph_test_harness.h"
+#include "chrome/browser/performance_manager/test_support/graph_test_harness.h"
 #include "testing/gmock/include/gmock/gmock.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
diff --git a/chrome/browser/performance_manager/graph/node_attached_data_unittest.cc b/chrome/browser/performance_manager/graph/node_attached_data_unittest.cc
index 578bc8e..4dd3287 100644
--- a/chrome/browser/performance_manager/graph/node_attached_data_unittest.cc
+++ b/chrome/browser/performance_manager/graph/node_attached_data_unittest.cc
@@ -9,14 +9,14 @@
 #include "base/test/gtest_util.h"
 #include "chrome/browser/performance_manager/graph/frame_node_impl.h"
 #include "chrome/browser/performance_manager/graph/graph_impl.h"
-#include "chrome/browser/performance_manager/graph/graph_test_harness.h"
-#include "chrome/browser/performance_manager/graph/mock_graphs.h"
 #include "chrome/browser/performance_manager/graph/node_attached_data_impl.h"
 #include "chrome/browser/performance_manager/graph/node_base.h"
 #include "chrome/browser/performance_manager/graph/page_node_impl.h"
 #include "chrome/browser/performance_manager/graph/process_node_impl.h"
 #include "chrome/browser/performance_manager/graph/system_node_impl.h"
 #include "chrome/browser/performance_manager/public/graph/node.h"
+#include "chrome/browser/performance_manager/test_support/graph_test_harness.h"
+#include "chrome/browser/performance_manager/test_support/mock_graphs.h"
 #include "testing/gmock/include/gmock/gmock.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
diff --git a/chrome/browser/performance_manager/graph/node_base_unittest.cc b/chrome/browser/performance_manager/graph/node_base_unittest.cc
index be8b08b..f4f39e6a 100644
--- a/chrome/browser/performance_manager/graph/node_base_unittest.cc
+++ b/chrome/browser/performance_manager/graph/node_base_unittest.cc
@@ -4,10 +4,10 @@
 
 #include "chrome/browser/performance_manager/graph/node_base.h"
 #include "chrome/browser/performance_manager/graph/graph_impl_operations.h"
-#include "chrome/browser/performance_manager/graph/graph_test_harness.h"
-#include "chrome/browser/performance_manager/graph/mock_graphs.h"
 #include "chrome/browser/performance_manager/graph/page_node_impl.h"
 #include "chrome/browser/performance_manager/graph/process_node_impl.h"
+#include "chrome/browser/performance_manager/test_support/graph_test_harness.h"
+#include "chrome/browser/performance_manager/test_support/mock_graphs.h"
 #include "services/resource_coordinator/public/mojom/coordination_unit.mojom.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
diff --git a/chrome/browser/performance_manager/graph/page_node_impl_unittest.cc b/chrome/browser/performance_manager/graph/page_node_impl_unittest.cc
index 98c8de8..7e6be0fe 100644
--- a/chrome/browser/performance_manager/graph/page_node_impl_unittest.cc
+++ b/chrome/browser/performance_manager/graph/page_node_impl_unittest.cc
@@ -7,10 +7,10 @@
 #include "base/stl_util.h"
 #include "chrome/browser/performance_manager/graph/frame_node_impl.h"
 #include "chrome/browser/performance_manager/graph/graph_impl_operations.h"
-#include "chrome/browser/performance_manager/graph/graph_test_harness.h"
-#include "chrome/browser/performance_manager/graph/mock_graphs.h"
 #include "chrome/browser/performance_manager/graph/process_node_impl.h"
 #include "chrome/browser/performance_manager/public/graph/page_node.h"
+#include "chrome/browser/performance_manager/test_support/graph_test_harness.h"
+#include "chrome/browser/performance_manager/test_support/mock_graphs.h"
 #include "testing/gmock/include/gmock/gmock.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
diff --git a/chrome/browser/performance_manager/graph/policies/dynamic_tcmalloc_policy_linux_unittest.cc b/chrome/browser/performance_manager/graph/policies/dynamic_tcmalloc_policy_linux_unittest.cc
index 537d077..bf93f11 100644
--- a/chrome/browser/performance_manager/graph/policies/dynamic_tcmalloc_policy_linux_unittest.cc
+++ b/chrome/browser/performance_manager/graph/policies/dynamic_tcmalloc_policy_linux_unittest.cc
@@ -8,12 +8,12 @@
 #include "base/task/post_task.h"
 #include "base/test/scoped_feature_list.h"
 #include "chrome/browser/performance_manager/graph/graph_impl_operations.h"
-#include "chrome/browser/performance_manager/graph/graph_test_harness.h"
-#include "chrome/browser/performance_manager/graph/mock_graphs.h"
 #include "chrome/browser/performance_manager/graph/page_node_impl.h"
 #include "chrome/browser/performance_manager/graph/policies/policy_features.h"
 #include "chrome/browser/performance_manager/graph/process_node_impl.h"
 #include "chrome/browser/performance_manager/performance_manager.h"
+#include "chrome/browser/performance_manager/test_support/graph_test_harness.h"
+#include "chrome/browser/performance_manager/test_support/mock_graphs.h"
 #include "content/public/browser/browser_task_traits.h"
 #include "content/public/browser/browser_thread.h"
 #include "content/public/test/browser_task_environment.h"
diff --git a/chrome/browser/performance_manager/graph/policies/working_set_trimmer_policy_chromeos_unittest.cc b/chrome/browser/performance_manager/graph/policies/working_set_trimmer_policy_chromeos_unittest.cc
index 01622f8..4d9c577 100644
--- a/chrome/browser/performance_manager/graph/policies/working_set_trimmer_policy_chromeos_unittest.cc
+++ b/chrome/browser/performance_manager/graph/policies/working_set_trimmer_policy_chromeos_unittest.cc
@@ -6,11 +6,11 @@
 
 #include "base/memory/memory_pressure_listener.h"
 #include "chrome/browser/performance_manager/graph/graph_impl_operations.h"
-#include "chrome/browser/performance_manager/graph/graph_test_harness.h"
-#include "chrome/browser/performance_manager/graph/mock_graphs.h"
 #include "chrome/browser/performance_manager/graph/page_node_impl.h"
 #include "chrome/browser/performance_manager/graph/process_node_impl.h"
 #include "chrome/browser/performance_manager/performance_manager.h"
+#include "chrome/browser/performance_manager/test_support/graph_test_harness.h"
+#include "chrome/browser/performance_manager/test_support/mock_graphs.h"
 #include "testing/gmock/include/gmock/gmock.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
diff --git a/chrome/browser/performance_manager/graph/policies/working_set_trimmer_policy_unittest.cc b/chrome/browser/performance_manager/graph/policies/working_set_trimmer_policy_unittest.cc
index 406963b..6a6f4da 100644
--- a/chrome/browser/performance_manager/graph/policies/working_set_trimmer_policy_unittest.cc
+++ b/chrome/browser/performance_manager/graph/policies/working_set_trimmer_policy_unittest.cc
@@ -4,8 +4,8 @@
 
 #include "chrome/browser/performance_manager/graph/policies/working_set_trimmer_policy.h"
 
-#include "chrome/browser/performance_manager/graph/graph_test_harness.h"
 #include "chrome/browser/performance_manager/graph/process_node_impl.h"
+#include "chrome/browser/performance_manager/test_support/graph_test_harness.h"
 #include "testing/gmock/include/gmock/gmock.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
diff --git a/chrome/browser/performance_manager/graph/process_node_impl_unittest.cc b/chrome/browser/performance_manager/graph/process_node_impl_unittest.cc
index cd4a425e..a7b28877 100644
--- a/chrome/browser/performance_manager/graph/process_node_impl_unittest.cc
+++ b/chrome/browser/performance_manager/graph/process_node_impl_unittest.cc
@@ -7,8 +7,8 @@
 #include "base/process/process.h"
 #include "base/test/bind_test_util.h"
 #include "chrome/browser/performance_manager/graph/frame_node_impl.h"
-#include "chrome/browser/performance_manager/graph/graph_test_harness.h"
-#include "chrome/browser/performance_manager/graph/mock_graphs.h"
+#include "chrome/browser/performance_manager/test_support/graph_test_harness.h"
+#include "chrome/browser/performance_manager/test_support/mock_graphs.h"
 #include "testing/gmock/include/gmock/gmock.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
diff --git a/chrome/browser/performance_manager/graph/system_node_impl_unittest.cc b/chrome/browser/performance_manager/graph/system_node_impl_unittest.cc
index a03b491..fc1d5d3 100644
--- a/chrome/browser/performance_manager/graph/system_node_impl_unittest.cc
+++ b/chrome/browser/performance_manager/graph/system_node_impl_unittest.cc
@@ -5,11 +5,11 @@
 #include "chrome/browser/performance_manager/graph/system_node_impl.h"
 
 #include "chrome/browser/performance_manager/graph/frame_node_impl.h"
-#include "chrome/browser/performance_manager/graph/graph_test_harness.h"
-#include "chrome/browser/performance_manager/graph/mock_graphs.h"
 #include "chrome/browser/performance_manager/graph/page_node_impl.h"
 #include "chrome/browser/performance_manager/graph/process_node_impl.h"
 #include "chrome/browser/performance_manager/graph/system_node_impl.h"
+#include "chrome/browser/performance_manager/test_support/graph_test_harness.h"
+#include "chrome/browser/performance_manager/test_support/mock_graphs.h"
 #include "testing/gmock/include/gmock/gmock.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
diff --git a/chrome/browser/performance_manager/graph/worker_node_impl_unittest.cc b/chrome/browser/performance_manager/graph/worker_node_impl_unittest.cc
index dcd81b3..8878e5c8 100644
--- a/chrome/browser/performance_manager/graph/worker_node_impl_unittest.cc
+++ b/chrome/browser/performance_manager/graph/worker_node_impl_unittest.cc
@@ -8,9 +8,9 @@
 #include "base/containers/flat_set.h"
 #include "base/macros.h"
 #include "chrome/browser/performance_manager/graph/frame_node_impl.h"
-#include "chrome/browser/performance_manager/graph/graph_test_harness.h"
 #include "chrome/browser/performance_manager/graph/page_node_impl.h"
 #include "chrome/browser/performance_manager/graph/process_node_impl.h"
+#include "chrome/browser/performance_manager/test_support/graph_test_harness.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
 namespace performance_manager {
diff --git a/chrome/browser/performance_manager/mechanisms/working_set_trimmer_win_unittest.cc b/chrome/browser/performance_manager/mechanisms/working_set_trimmer_win_unittest.cc
index 4deb867..448672a 100644
--- a/chrome/browser/performance_manager/mechanisms/working_set_trimmer_win_unittest.cc
+++ b/chrome/browser/performance_manager/mechanisms/working_set_trimmer_win_unittest.cc
@@ -17,8 +17,8 @@
 #include "base/strings/string_number_conversions.h"
 #include "base/synchronization/waitable_event.h"
 #include "base/test/multiprocess_test.h"
-#include "chrome/browser/performance_manager/graph/graph_test_harness.h"
 #include "chrome/browser/performance_manager/graph/process_node_impl.h"
+#include "chrome/browser/performance_manager/test_support/graph_test_harness.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "testing/multiprocess_func_list.h"
 
diff --git a/chrome/browser/performance_manager/observers/isolation_context_metrics_unittest.cc b/chrome/browser/performance_manager/observers/isolation_context_metrics_unittest.cc
index 1f222b1..1ab72f1 100644
--- a/chrome/browser/performance_manager/observers/isolation_context_metrics_unittest.cc
+++ b/chrome/browser/performance_manager/observers/isolation_context_metrics_unittest.cc
@@ -7,9 +7,9 @@
 #include "base/run_loop.h"
 #include "base/test/metrics/histogram_tester.h"
 #include "chrome/browser/performance_manager/graph/frame_node_impl.h"
-#include "chrome/browser/performance_manager/graph/graph_test_harness.h"
 #include "chrome/browser/performance_manager/graph/page_node_impl.h"
 #include "chrome/browser/performance_manager/graph/process_node_impl.h"
+#include "chrome/browser/performance_manager/test_support/graph_test_harness.h"
 
 namespace performance_manager {
 
diff --git a/chrome/browser/performance_manager/observers/metrics_collector_unittest.cc b/chrome/browser/performance_manager/observers/metrics_collector_unittest.cc
index bcfacf0..b9171c0 100644
--- a/chrome/browser/performance_manager/observers/metrics_collector_unittest.cc
+++ b/chrome/browser/performance_manager/observers/metrics_collector_unittest.cc
@@ -7,9 +7,9 @@
 #include "base/test/metrics/histogram_tester.h"
 #include "build/build_config.h"
 #include "chrome/browser/performance_manager/graph/frame_node_impl.h"
-#include "chrome/browser/performance_manager/graph/graph_test_harness.h"
 #include "chrome/browser/performance_manager/graph/page_node_impl.h"
 #include "chrome/browser/performance_manager/graph/process_node_impl.h"
+#include "chrome/browser/performance_manager/test_support/graph_test_harness.h"
 #include "components/ukm/test_ukm_recorder.h"
 #include "url/gurl.h"
 
diff --git a/chrome/browser/performance_manager/test_support/BUILD.gn b/chrome/browser/performance_manager/test_support/BUILD.gn
new file mode 100644
index 0000000..03c495d
--- /dev/null
+++ b/chrome/browser/performance_manager/test_support/BUILD.gn
@@ -0,0 +1,24 @@
+# Copyright 2019 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+import("//chrome/common/features.gni")
+
+# Expose the graph implementation, test fixtures and test support through
+# this test only target.
+source_set("test_support") {
+  testonly = true
+
+  sources = [
+    "graph_impl.h",
+    "graph_test_harness.cc",
+    "graph_test_harness.h",
+    "mock_graphs.cc",
+    "mock_graphs.h",
+  ]
+  deps = [
+    "//chrome/browser",
+    "//testing/gmock",
+    "//testing/gtest",
+  ]
+}
diff --git a/chrome/browser/performance_manager/test_support/graph_impl.h b/chrome/browser/performance_manager/test_support/graph_impl.h
new file mode 100644
index 0000000..ed72561
--- /dev/null
+++ b/chrome/browser/performance_manager/test_support/graph_impl.h
@@ -0,0 +1,21 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CHROME_BROWSER_PERFORMANCE_MANAGER_TEST_SUPPORT_GRAPH_IMPL_H_
+#define CHROME_BROWSER_PERFORMANCE_MANAGER_TEST_SUPPORT_GRAPH_IMPL_H_
+
+#include "chrome/browser/performance_manager/graph/frame_node_impl.h"
+#include "chrome/browser/performance_manager/graph/graph_impl.h"
+#include "chrome/browser/performance_manager/graph/graph_impl_operations.h"
+#include "chrome/browser/performance_manager/graph/node_attached_data.h"
+#include "chrome/browser/performance_manager/graph/node_attached_data_impl.h"
+#include "chrome/browser/performance_manager/graph/node_base.h"
+#include "chrome/browser/performance_manager/graph/node_type.h"
+#include "chrome/browser/performance_manager/graph/page_node_impl.h"
+#include "chrome/browser/performance_manager/graph/process_node_impl.h"
+#include "chrome/browser/performance_manager/graph/properties.h"
+#include "chrome/browser/performance_manager/graph/system_node_impl.h"
+#include "chrome/browser/performance_manager/graph/worker_node_impl.h"
+
+#endif  // CHROME_BROWSER_PERFORMANCE_MANAGER_TEST_SUPPORT_GRAPH_IMPL_H_
diff --git a/chrome/browser/performance_manager/graph/graph_test_harness.cc b/chrome/browser/performance_manager/test_support/graph_test_harness.cc
similarity index 90%
rename from chrome/browser/performance_manager/graph/graph_test_harness.cc
rename to chrome/browser/performance_manager/test_support/graph_test_harness.cc
index b5e1b3a9..a236117 100644
--- a/chrome/browser/performance_manager/graph/graph_test_harness.cc
+++ b/chrome/browser/performance_manager/test_support/graph_test_harness.cc
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "chrome/browser/performance_manager/graph/graph_test_harness.h"
+#include "chrome/browser/performance_manager/test_support/graph_test_harness.h"
 
 #include "base/bind.h"
 #include "base/run_loop.h"
diff --git a/chrome/browser/performance_manager/graph/graph_test_harness.h b/chrome/browser/performance_manager/test_support/graph_test_harness.h
similarity index 96%
rename from chrome/browser/performance_manager/graph/graph_test_harness.h
rename to chrome/browser/performance_manager/test_support/graph_test_harness.h
index 2d844977..0e22103 100644
--- a/chrome/browser/performance_manager/graph/graph_test_harness.h
+++ b/chrome/browser/performance_manager/test_support/graph_test_harness.h
@@ -2,8 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#ifndef CHROME_BROWSER_PERFORMANCE_MANAGER_GRAPH_GRAPH_TEST_HARNESS_H_
-#define CHROME_BROWSER_PERFORMANCE_MANAGER_GRAPH_GRAPH_TEST_HARNESS_H_
+#ifndef CHROME_BROWSER_PERFORMANCE_MANAGER_TEST_SUPPORT_GRAPH_TEST_HARNESS_H_
+#define CHROME_BROWSER_PERFORMANCE_MANAGER_TEST_SUPPORT_GRAPH_TEST_HARNESS_H_
 
 #include <stdint.h>
 #include <memory>
@@ -203,4 +203,4 @@
 
 }  // namespace performance_manager
 
-#endif  // CHROME_BROWSER_PERFORMANCE_MANAGER_GRAPH_GRAPH_TEST_HARNESS_H_
+#endif  // CHROME_BROWSER_PERFORMANCE_MANAGER_TEST_SUPPORT_GRAPH_TEST_HARNESS_H_
diff --git a/chrome/browser/performance_manager/graph/mock_graphs.cc b/chrome/browser/performance_manager/test_support/mock_graphs.cc
similarity index 97%
rename from chrome/browser/performance_manager/graph/mock_graphs.cc
rename to chrome/browser/performance_manager/test_support/mock_graphs.cc
index b739f4f4..395010e 100644
--- a/chrome/browser/performance_manager/graph/mock_graphs.cc
+++ b/chrome/browser/performance_manager/test_support/mock_graphs.cc
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "chrome/browser/performance_manager/graph/mock_graphs.h"
+#include "chrome/browser/performance_manager/test_support/mock_graphs.h"
 
 #include <string>
 
diff --git a/chrome/browser/performance_manager/graph/mock_graphs.h b/chrome/browser/performance_manager/test_support/mock_graphs.h
similarity index 91%
rename from chrome/browser/performance_manager/graph/mock_graphs.h
rename to chrome/browser/performance_manager/test_support/mock_graphs.h
index 5df6575..a24da9a1 100644
--- a/chrome/browser/performance_manager/graph/mock_graphs.h
+++ b/chrome/browser/performance_manager/test_support/mock_graphs.h
@@ -2,11 +2,11 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#ifndef CHROME_BROWSER_PERFORMANCE_MANAGER_GRAPH_MOCK_GRAPHS_H_
-#define CHROME_BROWSER_PERFORMANCE_MANAGER_GRAPH_MOCK_GRAPHS_H_
+#ifndef CHROME_BROWSER_PERFORMANCE_MANAGER_TEST_SUPPORT_MOCK_GRAPHS_H_
+#define CHROME_BROWSER_PERFORMANCE_MANAGER_TEST_SUPPORT_MOCK_GRAPHS_H_
 
-#include "chrome/browser/performance_manager/graph/graph_test_harness.h"
 #include "chrome/browser/performance_manager/graph/process_node_impl.h"
+#include "chrome/browser/performance_manager/test_support/graph_test_harness.h"
 
 namespace performance_manager {
 
@@ -119,4 +119,4 @@
 
 }  // namespace performance_manager
 
-#endif  // CHROME_BROWSER_PERFORMANCE_MANAGER_GRAPH_MOCK_GRAPHS_H_
+#endif  // CHROME_BROWSER_PERFORMANCE_MANAGER_TEST_SUPPORT_MOCK_GRAPHS_H_
diff --git a/chrome/browser/permissions/permission_features.cc b/chrome/browser/permissions/permission_features.cc
index d88715a..7e7816d4 100644
--- a/chrome/browser/permissions/permission_features.cc
+++ b/chrome/browser/permissions/permission_features.cc
@@ -9,29 +9,43 @@
 #include "base/metrics/field_trial_params.h"
 #include "chrome/common/chrome_features.h"
 
-#if defined(OS_ANDROID)
-
 // Keep in sync with "PermissionFieldTrial.java"
 
 const char kQuietNotificationPromptsUIFlavourParameterName[] = "ui_flavour";
+
+#if defined(OS_ANDROID)
 const char kQuietNotificationPromptsHeadsUpNotification[] =
     "heads_up_notification";
 const char kQuietNotificationPromptsMiniInfobar[] = "mini_infobar";
+#else   // OS_ANDROID
+const char kQuietNotificationPromptsStaticIcon[] = "static_icon";
+const char kQuietNotificationPromptsAnimatedIcon[] = "animated_icon";
+#endif  // !OS_ANDROID
 
 QuietNotificationsPromptConfig::UIFlavor
 QuietNotificationsPromptConfig::UIFlavorToUse() {
   if (!base::FeatureList::IsEnabled(features::kQuietNotificationPrompts))
     return UIFlavor::NONE;
+
   std::string ui_flavor = base::GetFieldTrialParamValueByFeature(
       features::kQuietNotificationPrompts,
       kQuietNotificationPromptsUIFlavourParameterName);
+
+#if defined(OS_ANDROID)
   if (ui_flavor == kQuietNotificationPromptsHeadsUpNotification) {
-    return UIFlavor::HEADS_UP_NOITIFCATION;
+    return UIFlavor::HEADS_UP_NOTIFICATION;
   } else if (ui_flavor == kQuietNotificationPromptsMiniInfobar) {
     return UIFlavor::MINI_INFOBAR;
   } else {
     return UIFlavor::QUIET_NOTIFICATION;
   }
+#else   // OS_ANDROID
+  if (ui_flavor == kQuietNotificationPromptsStaticIcon) {
+    return UIFlavor::STATIC_ICON;
+  } else if (ui_flavor == kQuietNotificationPromptsAnimatedIcon) {
+    return UIFlavor::ANIMATED_ICON;
+  } else {
+    return UIFlavor::STATIC_ICON;
+  }
+#endif  // !OS_ANDROID
 }
-
-#endif  // OS_ANDROID
diff --git a/chrome/browser/permissions/permission_features.h b/chrome/browser/permissions/permission_features.h
index a6207b5..0df1d32 100644
--- a/chrome/browser/permissions/permission_features.h
+++ b/chrome/browser/permissions/permission_features.h
@@ -7,24 +7,31 @@
 
 #include "build/build_config.h"
 
-#if defined(OS_ANDROID)
 
 extern const char kQuietNotificationPromptsUIFlavourParameterName[];
+
+#if defined(OS_ANDROID)
 extern const char kQuietNotificationPromptsHeadsUpNotification[];
 extern const char kQuietNotificationPromptsMiniInfobar[];
+#else   // OS_ANDROID
+extern const char kQuietNotificationPromptsStaticIcon[];
+extern const char kQuietNotificationPromptsAnimatedIcon[];
+#endif  // OS_ANDROID
 
 class QuietNotificationsPromptConfig {
  public:
   enum UIFlavor {
     NONE,
+#if defined(OS_ANDROID)
     QUIET_NOTIFICATION,
-    HEADS_UP_NOITIFCATION,
+    HEADS_UP_NOTIFICATION,
     MINI_INFOBAR,
+#else   // OS_ANDROID
+    STATIC_ICON,
+    ANIMATED_ICON,
+#endif  // OS_ANDROID
   };
-
   static UIFlavor UIFlavorToUse();
 };
 
-#endif  // OS_ANDROID
-
 #endif  // CHROME_BROWSER_PERMISSIONS_PERMISSION_FEATURES_H_
diff --git a/chrome/browser/permissions/permission_request_manager.cc b/chrome/browser/permissions/permission_request_manager.cc
index 026ac5f8a..ce6872a1 100644
--- a/chrome/browser/permissions/permission_request_manager.cc
+++ b/chrome/browser/permissions/permission_request_manager.cc
@@ -16,6 +16,7 @@
 #include "base/task/post_task.h"
 #include "build/build_config.h"
 #include "chrome/browser/permissions/permission_decision_auto_blocker.h"
+#include "chrome/browser/permissions/permission_features.h"
 #include "chrome/browser/permissions/permission_request.h"
 #include "chrome/browser/permissions/permission_uma_util.h"
 #include "chrome/browser/profiles/profile.h"
@@ -71,16 +72,6 @@
 
 // PermissionRequestManager ----------------------------------------------------
 
-PermissionRequestManager::PermissionRequestManager(
-    content::WebContents* web_contents)
-    : content::WebContentsObserver(web_contents),
-      view_factory_(base::Bind(&PermissionPrompt::Create)),
-      view_(nullptr),
-      main_frame_has_fully_loaded_(false),
-      tab_is_hidden_(web_contents->GetVisibility() ==
-                     content::Visibility::HIDDEN),
-      auto_response_for_test_(NONE) {}
-
 PermissionRequestManager::~PermissionRequestManager() {
   DCHECK(requests_.empty());
   DCHECK(duplicate_requests_.empty());
@@ -331,6 +322,16 @@
   FinalizeBubble(PermissionAction::DISMISSED);
 }
 
+PermissionRequestManager::PermissionRequestManager(
+    content::WebContents* web_contents)
+    : content::WebContentsObserver(web_contents),
+      view_factory_(base::Bind(&PermissionPrompt::Create)),
+      view_(nullptr),
+      main_frame_has_fully_loaded_(false),
+      tab_is_hidden_(web_contents->GetVisibility() ==
+                     content::Visibility::HIDDEN),
+      auto_response_for_test_(NONE) {}
+
 void PermissionRequestManager::ScheduleShowBubble() {
   // ::ScheduleShowBubble() will be called again when the main frame will be
   // loaded.
@@ -393,9 +394,6 @@
     PermissionAction permission_action) {
   DCHECK(!requests_.empty());
 
-  if (view_)
-    DeleteBubble();
-
   PermissionUmaUtil::PermissionPromptResolved(requests_, web_contents(),
                                               permission_action);
 
@@ -434,6 +432,10 @@
     RequestFinishedIncludingDuplicates(*requests_iter);
   }
   requests_.clear();
+
+  if (view_)
+    DeleteBubble();
+
   if (!queued_requests_.empty())
     DequeueRequestsAndShowBubble();
 }
@@ -515,6 +517,21 @@
   observer_list_.RemoveObserver(observer);
 }
 
+bool PermissionRequestManager::ShouldShowQuietPermissionPrompt() {
+  if (!requests_.size())
+    return false;
+
+#if !defined(OS_ANDROID)
+  const auto ui_flavor = QuietNotificationsPromptConfig::UIFlavorToUse();
+  return (requests_.front()->GetPermissionRequestType() ==
+              PermissionRequestType::PERMISSION_NOTIFICATIONS &&
+          (ui_flavor == QuietNotificationsPromptConfig::STATIC_ICON ||
+           ui_flavor == QuietNotificationsPromptConfig::ANIMATED_ICON));
+#else   // OS_ANDROID
+  return false;
+#endif  // OS_ANDROID
+}
+
 void PermissionRequestManager::NotifyBubbleAdded() {
   for (Observer& observer : observer_list_)
     observer.OnBubbleAdded();
diff --git a/chrome/browser/permissions/permission_request_manager.h b/chrome/browser/permissions/permission_request_manager.h
index c8aca010..4df8797 100644
--- a/chrome/browser/permissions/permission_request_manager.h
+++ b/chrome/browser/permissions/permission_request_manager.h
@@ -80,6 +80,8 @@
   void AddObserver(Observer* observer);
   void RemoveObserver(Observer* observer);
 
+  bool ShouldShowQuietPermissionPrompt();
+
   // Do NOT use this methods in production code. Use this methods in browser
   // tests that need to accept or deny permissions when requested in
   // JavaScript. Your test needs to set this appropriately, and then the bubble
@@ -88,21 +90,6 @@
     auto_response_for_test_ = response;
   }
 
- private:
-  friend class test::PermissionRequestManagerTestApi;
-
-  // TODO(felt): Update testing to use the TestApi so that it doesn't involve a
-  // lot of friends.
-  friend class GeolocationBrowserTest;
-  friend class GeolocationPermissionContextTests;
-  friend class MockPermissionPromptFactory;
-  friend class PermissionContextBaseTests;
-  friend class PermissionRequestManagerTest;
-  friend class content::WebContentsUserData<PermissionRequestManager>;
-  FRIEND_TEST_ALL_PREFIXES(DownloadTest, TestMultipleDownloadsBubble);
-
-  explicit PermissionRequestManager(content::WebContents* web_contents);
-
   // WebContentsObserver:
   void DidStartNavigation(
       content::NavigationHandle* navigation_handle) override;
@@ -121,6 +108,21 @@
   void Deny() override;
   void Closing() override;
 
+ private:
+  friend class test::PermissionRequestManagerTestApi;
+
+  // TODO(felt): Update testing to use the TestApi so that it doesn't involve a
+  // lot of friends.
+  friend class GeolocationBrowserTest;
+  friend class GeolocationPermissionContextTests;
+  friend class MockPermissionPromptFactory;
+  friend class PermissionContextBaseTests;
+  friend class PermissionRequestManagerTest;
+  friend class content::WebContentsUserData<PermissionRequestManager>;
+  FRIEND_TEST_ALL_PREFIXES(DownloadTest, TestMultipleDownloadsBubble);
+
+  explicit PermissionRequestManager(content::WebContents* web_contents);
+
   // Posts a task which will allow the bubble to become visible if it is needed.
   void ScheduleShowBubble();
 
diff --git a/chrome/browser/permissions/permission_request_notification_android.cc b/chrome/browser/permissions/permission_request_notification_android.cc
index 439d58f..76ff836 100644
--- a/chrome/browser/permissions/permission_request_notification_android.cc
+++ b/chrome/browser/permissions/permission_request_notification_android.cc
@@ -62,7 +62,7 @@
   return (ui_flavor ==
               QuietNotificationsPromptConfig::UIFlavor::QUIET_NOTIFICATION ||
           ui_flavor == QuietNotificationsPromptConfig::UIFlavor::
-                           HEADS_UP_NOITIFCATION) &&
+                           HEADS_UP_NOTIFICATION) &&
          type == CONTENT_SETTINGS_TYPE_NOTIFICATIONS;
 }
 
diff --git a/chrome/browser/policy/e2e_test/infra/chrome_ent_test_case.py b/chrome/browser/policy/e2e_test/infra/chrome_ent_test_case.py
index 0e9b37a..27554cb 100644
--- a/chrome/browser/policy/e2e_test/infra/chrome_ent_test_case.py
+++ b/chrome/browser/policy/e2e_test/infra/chrome_ent_test_case.py
@@ -184,7 +184,7 @@
   def EnableUITest(self, instance_name):
     """Configures the instance so that UI tests can be run on it."""
     self.InstallWebDriver(instance_name)
-    self.InstallPackage(instance_name, 'sysinternals', '2019.6.29')
+    self.InstallPackage(instance_name, 'sysinternals', '2019.9.5')
     self.RunCommand(
         instance_name,
         r'c:\Python27\python.exe -m pip install pywinauto requests')
diff --git a/chrome/browser/previews/previews_lite_page_redirect_url_loader.cc b/chrome/browser/previews/previews_lite_page_redirect_url_loader.cc
index a5540d02..35efb3dea 100644
--- a/chrome/browser/previews/previews_lite_page_redirect_url_loader.cc
+++ b/chrome/browser/previews/previews_lite_page_redirect_url_loader.cc
@@ -172,7 +172,6 @@
   redirect_info_ = net::RedirectInfo::ComputeRedirectInfo(
       modified_resource_request_.method, modified_resource_request_.url,
       modified_resource_request_.site_for_cookies,
-      modified_resource_request_.top_frame_origin,
       net::URLRequest::UPDATE_FIRST_PARTY_URL_ON_REDIRECT,
       modified_resource_request_.referrer_policy,
       modified_resource_request_.referrer.spec(), net::HTTP_TEMPORARY_REDIRECT,
@@ -190,8 +189,6 @@
   modified_resource_request_.method = redirect_info_.new_method;
   modified_resource_request_.site_for_cookies =
       redirect_info_.new_site_for_cookies;
-  modified_resource_request_.top_frame_origin =
-      redirect_info_.new_top_frame_origin;
   modified_resource_request_.referrer = GURL(redirect_info_.new_referrer);
   modified_resource_request_.referrer_policy =
       redirect_info_.new_referrer_policy;
diff --git a/chrome/browser/resources/print_preview/polymer3/demo.js b/chrome/browser/resources/print_preview/polymer3/demo.js
index dbf2c955..ed2574a9 100644
--- a/chrome/browser/resources/print_preview/polymer3/demo.js
+++ b/chrome/browser/resources/print_preview/polymer3/demo.js
@@ -15,6 +15,7 @@
 import 'chrome://resources/cr_elements/cr_tabs/cr_tabs.m.js';
 import 'chrome://resources/cr_elements/cr_toast/cr_toast.m.js';
 import 'chrome://resources/cr_elements/cr_toggle/cr_toggle.m.js';
+import 'chrome://resources/cr_elements/cr_toolbar/cr_toolbar.m.js';
 import 'chrome://resources/cr_elements/icons.m.js';
 import 'chrome://resources/cr_elements/md_select_css.m.js';
 import 'chrome://resources/cr_elements/policy/cr_tooltip_icon.m.js';
@@ -30,16 +31,25 @@
           display: inline-block;
         }
 
+        cr-icon-button {
+          --cr-icon-button-color: white;
+        }
+
         .setting {
           align-items: center;
           display: flex;
         }
 
-        div, cr-input, cr-icon-button, select, cr-checkbox {
+        div, cr-input, select, cr-checkbox {
           margin-top: 20px;
         }
       </style>
 
+      <cr-toolbar id="toolbar" page-name="Polymer 3 Demo"
+          search-prompt="Search">
+        <cr-icon-button iron-icon="cr:more-vert"></cr-icon-button>
+      </cr-toolbar>
+
       <cr-checkbox checked="{{checkboxChecked_}}">
         [[checkboxChecked_]]
       </cr-checkbox>
@@ -58,8 +68,6 @@
 
       <cr-input></cr-input>
 
-      <cr-icon-button iron-icon="cr:more-vert"></cr-icon-button>
-
       <div>
         <cr-button on-click="onClick_">Show toast</cr-button>
         <cr-toast><span>I am toasted</span></cr-toast>
diff --git a/chrome/browser/sync/test/integration/single_client_user_events_sync_test.cc b/chrome/browser/sync/test/integration/single_client_user_events_sync_test.cc
index 968b9e9d4..a68f546 100644
--- a/chrome/browser/sync/test/integration/single_client_user_events_sync_test.cc
+++ b/chrome/browser/sync/test/integration/single_client_user_events_sync_test.cc
@@ -126,9 +126,13 @@
 
   event_service->RecordUserEvent(specifics2);
   event_service->RecordUserEvent(specifics1);
-  // The entity that got the transient error is still considered "committed" by
-  // the fake server, so we should see it *and* its retry.
+  // First wait for these two events to arrive on the server - only after this
+  // has happened will |retry_specifics| actually be populated.
+  // Note: The entity that got the transient error is still considered
+  // "committed" by the fake server.
   EXPECT_TRUE(ExpectUserEvents({specifics1, specifics2}));
+  // Now that |retry_specifics| got populated by the lambda above, make sure it
+  // also arrives on the server.
   EXPECT_TRUE(ExpectUserEvents({specifics1, specifics2, retry_specifics}));
 }
 
diff --git a/chrome/browser/sync/test/integration/user_events_helper.cc b/chrome/browser/sync/test/integration/user_events_helper.cc
index cd2e6f66..85e669d 100644
--- a/chrome/browser/sync/test/integration/user_events_helper.cc
+++ b/chrome/browser/sync/test/integration/user_events_helper.cc
@@ -4,9 +4,6 @@
 
 #include "chrome/browser/sync/test/integration/user_events_helper.h"
 
-#include <string>
-#include <vector>
-
 #include "chrome/browser/sync/test/integration/single_client_status_change_checker.h"
 #include "components/sync/test/fake_server/fake_server.h"
 #include "testing/gtest/include/gtest/gtest.h"
@@ -32,11 +29,9 @@
     syncer::ProfileSyncService* service,
     FakeServer* fake_server,
     std::vector<UserEventSpecifics> expected_specifics)
-    : SingleClientStatusChangeChecker(service), fake_server_(fake_server) {
-  for (const UserEventSpecifics& specifics : expected_specifics) {
-    expected_specifics_.emplace(specifics.event_time_usec(), specifics);
-  }
-}
+    : SingleClientStatusChangeChecker(service),
+      fake_server_(fake_server),
+      expected_specifics_(expected_specifics) {}
 
 UserEventEqualityChecker::~UserEventEqualityChecker() = default;
 
@@ -53,24 +48,35 @@
   }
 
   // Number of events on server matches expected, exit condition is satisfied.
-  // Let's verify that content matches as well. It is safe to modify
-  // |expected_specifics_|.
+  // Let's verify that content matches as well.
+
+  // Make a copy of |expected_specifics_| so that we can safely modify it.
+  std::vector<sync_pb::UserEventSpecifics> remaining_expected_specifics =
+      expected_specifics_;
   for (const SyncEntity& entity : entities) {
     UserEventSpecifics server_specifics = entity.specifics().user_event();
-    auto iter = expected_specifics_.find(server_specifics.event_time_usec());
+    // Find a matching event in our expectations. Same event time should mean
+    // identical events, though there can be duplicates in some cases.
+    auto iter = std::find_if(
+        remaining_expected_specifics.begin(),
+        remaining_expected_specifics.end(),
+        [&server_specifics](const sync_pb::UserEventSpecifics& specifics) {
+          return server_specifics.event_time_usec() ==
+                 specifics.event_time_usec();
+        });
     // We don't expect to encounter id matching events with different values,
     // this isn't going to recover so fail the test case now.
-    EXPECT_TRUE(expected_specifics_.end() != iter);
-    if (expected_specifics_.end() == iter) {
+    EXPECT_NE(iter, remaining_expected_specifics.end());
+    if (remaining_expected_specifics.end() == iter) {
       return false;
     }
     // TODO(skym): This may need to change if we start updating navigation_id
     // based on what sessions data is committed, and end up committing the
     // same event multiple times.
-    EXPECT_EQ(iter->second.navigation_id(), server_specifics.navigation_id());
-    EXPECT_EQ(iter->second.event_case(), server_specifics.event_case());
+    EXPECT_EQ(iter->navigation_id(), server_specifics.navigation_id());
+    EXPECT_EQ(iter->event_case(), server_specifics.event_case());
 
-    expected_specifics_.erase(iter);
+    remaining_expected_specifics.erase(iter);
   }
 
   return true;
diff --git a/chrome/browser/sync/test/integration/user_events_helper.h b/chrome/browser/sync/test/integration/user_events_helper.h
index 7d87b49..8ad597b 100644
--- a/chrome/browser/sync/test/integration/user_events_helper.h
+++ b/chrome/browser/sync/test/integration/user_events_helper.h
@@ -6,6 +6,7 @@
 #define CHROME_BROWSER_SYNC_TEST_INTEGRATION_USER_EVENTS_HELPER_H_
 
 #include <string>
+#include <vector>
 
 #include "base/time/time.h"
 #include "chrome/browser/sync/test/integration/single_client_status_change_checker.h"
@@ -36,7 +37,7 @@
 
  private:
   fake_server::FakeServer* fake_server_;
-  std::multimap<int64_t, sync_pb::UserEventSpecifics> expected_specifics_;
+  const std::vector<sync_pb::UserEventSpecifics> expected_specifics_;
 
   DISALLOW_COPY_AND_ASSIGN(UserEventEqualityChecker);
 };
diff --git a/chrome/browser/ui/app_list/search/search_controller_factory.cc b/chrome/browser/ui/app_list/search/search_controller_factory.cc
index 33085eb..902bc34 100644
--- a/chrome/browser/ui/app_list/search/search_controller_factory.cc
+++ b/chrome/browser/ui/app_list/search/search_controller_factory.cc
@@ -6,6 +6,7 @@
 
 #include <stddef.h>
 
+#include "ash/public/cpp/app_list/app_list_config.h"
 #include "ash/public/cpp/app_list/app_list_features.h"
 #include "ash/public/cpp/app_list/app_list_switches.h"
 #include "base/metrics/field_trial_params.h"
@@ -43,7 +44,6 @@
 // in some UI, so we need to allow returning more results than actual maximum
 // number of results to be displayed in UI.
 constexpr size_t kMaxAppsGroupResults = 7;
-constexpr size_t kMaxOmniboxResults = 4;
 constexpr size_t kMaxLauncherSearchResults = 2;
 constexpr size_t kMaxZeroStateFileResults = 6;
 constexpr size_t kMaxDriveQuickAccessResults = 6;
@@ -91,7 +91,8 @@
   size_t answer_card_group_id = controller->AddGroup(1, 1.0, 5.0);
   size_t apps_group_id =
       controller->AddGroup(kMaxAppsGroupResults, 1.0, kBoostOfApps);
-  size_t omnibox_group_id = controller->AddGroup(kMaxOmniboxResults, 1.0, 0.0);
+  size_t omnibox_group_id = controller->AddGroup(
+      AppListConfig::instance().max_search_result_list_items(), 1.0, 0.0);
 
   // Add search providers.
   controller->AddProvider(
diff --git a/chrome/browser/ui/content_settings/content_setting_bubble_model.cc b/chrome/browser/ui/content_settings/content_setting_bubble_model.cc
index 9fa5c4e..e97bcf25 100644
--- a/chrome/browser/ui/content_settings/content_setting_bubble_model.cc
+++ b/chrome/browser/ui/content_settings/content_setting_bubble_model.cc
@@ -29,6 +29,7 @@
 #include "chrome/browser/media/webrtc/media_capture_devices_dispatcher.h"
 #include "chrome/browser/media/webrtc/permission_bubble_media_access_handler.h"
 #include "chrome/browser/media/webrtc/system_media_capture_permissions_mac.h"
+#include "chrome/browser/permissions/permission_request_manager.h"
 #include "chrome/browser/permissions/permission_uma_util.h"
 #include "chrome/browser/permissions/permission_util.h"
 #include "chrome/browser/plugins/chrome_plugin_service_filter.h"
@@ -186,8 +187,6 @@
     ContentSettingsType content_type)
     : ContentSettingBubbleModel(delegate, web_contents),
       content_type_(content_type) {
-  // Notifications do not have a bubble.
-  DCHECK_NE(content_type, CONTENT_SETTINGS_TYPE_NOTIFICATIONS);
   SetTitle();
   SetMessage();
   SetManageText();
@@ -1083,8 +1082,20 @@
   if (!delegate())
     return;
 
-  if (ShouldDoneButtonBehaveAsManageButton()) {
+  if (MicrophoneAccessed() && CameraAccessed()) {
+    delegate()->ShowMediaSettingsPage();
+  } else {
+    delegate()->ShowContentSettingsPage(
+        CameraAccessed() ? CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA
+                         : CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC);
+  }
+}
+
+void ContentSettingMediaStreamBubbleModel::OnDoneButtonClicked() {
+  if (ShouldShowSystemMediaPermissions()) {
 #if defined(OS_MACOSX)
+    DCHECK(CameraAccessed() || MicrophoneAccessed());
+
     base::RecordAction(UserMetricsAction("Media.OpenPreferencesClicked"));
     DCHECK(ShouldShowSystemMediaPermissions());
 
@@ -1098,19 +1109,6 @@
     return;
 #endif  // defined(OS_MACOSX)
   }
-
-  if (MicrophoneAccessed() && CameraAccessed()) {
-    delegate()->ShowMediaSettingsPage();
-  } else {
-    delegate()->ShowContentSettingsPage(
-        CameraAccessed() ? CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA
-                         : CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC);
-  }
-}
-
-bool ContentSettingMediaStreamBubbleModel::
-    ShouldDoneButtonBehaveAsManageButton() {
-  return ShouldShowSystemMediaPermissions();
 }
 
 bool ContentSettingMediaStreamBubbleModel::MicrophoneAccessed() const {
@@ -1443,7 +1441,7 @@
 }
 
 ContentSettingSubresourceFilterBubbleModel::
-    ~ContentSettingSubresourceFilterBubbleModel() {}
+    ~ContentSettingSubresourceFilterBubbleModel() = default;
 
 void ContentSettingSubresourceFilterBubbleModel::SetTitle() {
   set_title(l10n_util::GetStringUTF16(IDS_BLOCKED_ADS_PROMPT_TITLE));
@@ -1618,6 +1616,39 @@
   AddListItem(CreateUrlListItem(0 /* id */, blocked_url));
 }
 
+// ContentSettingNotificationsBubbleModel ----------------------------------
+ContentSettingNotificationsBubbleModel::ContentSettingNotificationsBubbleModel(
+    Delegate* delegate,
+    WebContents* web_contents)
+    : ContentSettingBubbleModel(delegate, web_contents) {
+  set_title(l10n_util::GetStringUTF16(
+      IDS_NOTIFICATIONS_QUIET_PERMISSION_BUBBLE_TITLE));
+  set_message(l10n_util::GetStringUTF16(
+      IDS_NOTIFICATIONS_QUIET_PERMISSION_BUBBLE_DESCRIPTION));
+  set_done_button_text(l10n_util::GetStringUTF16(
+      IDS_NOTIFICATIONS_QUIET_PERMISSION_BUBBLE_ALLOW_BUTTON));
+  set_show_learn_more(false);
+}
+
+ContentSettingNotificationsBubbleModel::
+    ~ContentSettingNotificationsBubbleModel() = default;
+
+ContentSettingNotificationsBubbleModel*
+ContentSettingNotificationsBubbleModel::AsNotificationsBubbleModel() {
+  return this;
+}
+
+void ContentSettingNotificationsBubbleModel::OnManageButtonClicked() {
+  if (delegate())
+    delegate()->ShowContentSettingsPage(CONTENT_SETTINGS_TYPE_NOTIFICATIONS);
+}
+
+void ContentSettingNotificationsBubbleModel::OnDoneButtonClicked() {
+  PermissionRequestManager* manager =
+      PermissionRequestManager::FromWebContents(web_contents());
+  manager->Accept();
+}
+
 // ContentSettingBubbleModel ---------------------------------------------------
 
 // This class must be placed last because it needs the definition of the other
@@ -1724,16 +1755,17 @@
   return nullptr;
 }
 
-bool ContentSettingBubbleModel::ShouldDoneButtonBehaveAsManageButton() {
-  return false;
-}
-
 ContentSettingMediaStreamBubbleModel*
     ContentSettingBubbleModel::AsMediaStreamBubbleModel() {
   // In general, bubble models might not inherit from the media bubble model.
   return nullptr;
 }
 
+ContentSettingNotificationsBubbleModel*
+ContentSettingBubbleModel::AsNotificationsBubbleModel() {
+  return nullptr;
+}
+
 ContentSettingSubresourceFilterBubbleModel*
 ContentSettingBubbleModel::AsSubresourceFilterBubbleModel() {
   return nullptr;
diff --git a/chrome/browser/ui/content_settings/content_setting_bubble_model.h b/chrome/browser/ui/content_settings/content_setting_bubble_model.h
index d9ba274..83f24dfc 100644
--- a/chrome/browser/ui/content_settings/content_setting_bubble_model.h
+++ b/chrome/browser/ui/content_settings/content_setting_bubble_model.h
@@ -22,9 +22,11 @@
 #include "chrome/browser/ui/blocked_content/framebust_block_tab_helper.h"
 #include "chrome/browser/ui/blocked_content/url_list_manager.h"
 #include "chrome/common/custom_handlers/protocol_handler.h"
+#include "chrome/grit/generated_resources.h"
 #include "components/content_settings/core/common/content_settings.h"
 #include "components/content_settings/core/common/content_settings_types.h"
 #include "third_party/blink/public/common/mediastream/media_stream_request.h"
+#include "ui/base/l10n/l10n_util.h"
 #include "ui/gfx/image/image.h"
 #include "url/gurl.h"
 
@@ -56,6 +58,7 @@
 //   ContentSettingMediaStreamBubbleModel        - media (camera and mic)
 //   ContentSettingSubresourceFilterBubbleModel  - filtered subresources
 //   ContentSettingDownloadsBubbleModel          - automatic downloads
+//   ContentSettingNotificationsBubbleModel      - notifications
 
 // Forward declaration necessary for downcasts.
 class ContentSettingSimpleBubbleModel;
@@ -63,6 +66,7 @@
 class ContentSettingSubresourceFilterBubbleModel;
 class ContentSettingDownloadsBubbleModel;
 class ContentSettingFramebustBlockBubbleModel;
+class ContentSettingNotificationsBubbleModel;
 
 // This model provides data for ContentSettingBubble, and also controls
 // the action triggered when the allow / block radio buttons are triggered.
@@ -187,9 +191,7 @@
   virtual void OnLearnMoreClicked() {}
   virtual void OnMediaMenuClicked(blink::mojom::MediaStreamType type,
                                   const std::string& selected_device_id) {}
-  // Whether or not clicking the `Done` button should invoke
-  // OnManageButtonClicked() on the model instead of closing the bubble.
-  virtual bool ShouldDoneButtonBehaveAsManageButton();
+  virtual void OnDoneButtonClicked() {}
   // Called by the view code when the bubble is closed
   virtual void CommitChanges() {}
 
@@ -215,6 +217,9 @@
   virtual ContentSettingFramebustBlockBubbleModel*
   AsFramebustBlockBubbleModel();
 
+  // Cast this bubble into ContentSettingNotificationsBubbleModel if possible.
+  virtual ContentSettingNotificationsBubbleModel* AsNotificationsBubbleModel();
+
   // Sets the Rappor service used for testing.
   void SetRapporServiceImplForTesting(
       rappor::RapporServiceImpl* rappor_service) {
@@ -347,7 +352,7 @@
   ContentSettingMediaStreamBubbleModel* AsMediaStreamBubbleModel() override;
   void CommitChanges() override;
   void OnManageButtonClicked() override;
-  bool ShouldDoneButtonBehaveAsManageButton() override;
+  void OnDoneButtonClicked() override;
 
  private:
   // Helper functions to check if this bubble was invoked for microphone,
@@ -402,6 +407,29 @@
   DISALLOW_COPY_AND_ASSIGN(ContentSettingMediaStreamBubbleModel);
 };
 
+// The model of a bubble that acts as a quiet permission request prompt for
+// notifications. In contrast to other bubbles (which display the current
+// permission state after the user makes the initial decision), this is shown
+// before the user makes the first ever permission decisions.
+class ContentSettingNotificationsBubbleModel
+    : public ContentSettingBubbleModel {
+ public:
+  ContentSettingNotificationsBubbleModel(Delegate* delegate,
+                                         content::WebContents* web_contents);
+
+  ~ContentSettingNotificationsBubbleModel() override;
+
+ private:
+  void SetManageText();
+
+  // ContentSettingBubbleModel:
+  void OnManageButtonClicked() override;
+  void OnDoneButtonClicked() override;
+  ContentSettingNotificationsBubbleModel* AsNotificationsBubbleModel() override;
+
+  DISALLOW_COPY_AND_ASSIGN(ContentSettingNotificationsBubbleModel);
+};
+
 // The model for the deceptive content bubble.
 class ContentSettingSubresourceFilterBubbleModel
     : public ContentSettingBubbleModel {
diff --git a/chrome/browser/ui/content_settings/content_setting_image_model.cc b/chrome/browser/ui/content_settings/content_setting_image_model.cc
index f74f08f..1b84b55 100644
--- a/chrome/browser/ui/content_settings/content_setting_image_model.cc
+++ b/chrome/browser/ui/content_settings/content_setting_image_model.cc
@@ -9,6 +9,7 @@
 
 #include "base/feature_list.h"
 #include "base/macros.h"
+#include "base/metrics/field_trial_params.h"
 #include "base/metrics/histogram_macros.h"
 #include "build/build_config.h"
 #include "chrome/app/vector_icons/vector_icons.h"
@@ -17,6 +18,8 @@
 #include "chrome/browser/content_settings/host_content_settings_map_factory.h"
 #include "chrome/browser/content_settings/tab_specific_content_settings.h"
 #include "chrome/browser/download/download_request_limiter.h"
+#include "chrome/browser/permissions/permission_features.h"
+#include "chrome/browser/permissions/permission_request_manager.h"
 #include "chrome/browser/prerender/prerender_manager.h"
 #include "chrome/browser/profiles/profile.h"
 #include "chrome/browser/ui/blocked_content/framebust_block_tab_helper.h"
@@ -58,6 +61,7 @@
 //     ContentSettingDownloadsImageModel         - automatic downloads
 //     ContentSettingClipboardReadImageModel     - clipboard read
 //     ContentSettingSensorsImageModel           - sensors
+//     ContentSettingNotificationsImageModel     - notifications
 //   ContentSettingMediaImageModel             - media
 //   ContentSettingFramebustBlockImageModel    - blocked framebust
 
@@ -161,6 +165,26 @@
   DISALLOW_COPY_AND_ASSIGN(ContentSettingSensorsImageModel);
 };
 
+// The image model for an icon that acts as a quiet permission request prompt
+// for notifications. In contrast to other icons -- which are either
+// permission-in-use indicators or permission-blocked indicators -- this is
+// shown before the user makes the first permission decision, and in fact,
+// allows the user to make that decision.
+class ContentSettingNotificationsImageModel
+    : public ContentSettingSimpleImageModel {
+ public:
+  ContentSettingNotificationsImageModel();
+
+  // ContentSettingSimpleImageModel:
+  bool UpdateAndGetVisibility(WebContents* web_contents) override;
+  std::unique_ptr<ContentSettingBubbleModel> CreateBubbleModelImpl(
+      ContentSettingBubbleModel::Delegate* delegate,
+      WebContents* web_contents) override;
+
+ private:
+  DISALLOW_COPY_AND_ASSIGN(ContentSettingNotificationsImageModel);
+};
+
 class ContentSettingPopupImageModel : public ContentSettingSimpleImageModel {
  public:
   ContentSettingPopupImageModel();
@@ -282,6 +306,8 @@
       return std::make_unique<ContentSettingClipboardReadImageModel>();
     case ImageType::SENSORS:
       return std::make_unique<ContentSettingSensorsImageModel>();
+    case ImageType::NOTIFICATIONS_QUIET_PROMPT:
+      return std::make_unique<ContentSettingNotificationsImageModel>();
     case ImageType::NUM_IMAGE_TYPES:
       break;
   }
@@ -708,6 +734,35 @@
   return true;
 }
 
+// Notifications --------------------------------------------------------------
+
+ContentSettingNotificationsImageModel::ContentSettingNotificationsImageModel()
+    : ContentSettingSimpleImageModel(ImageType::NOTIFICATIONS_QUIET_PROMPT,
+                                     CONTENT_SETTINGS_TYPE_NOTIFICATIONS) {
+  set_icon(vector_icons::kNotificationsOffIcon, gfx::kNoneIcon);
+  set_tooltip(
+      l10n_util::GetStringUTF16(IDS_NOTIFICATIONS_OFF_EXPLANATORY_TEXT));
+  if (QuietNotificationsPromptConfig::UIFlavorToUse() ==
+      QuietNotificationsPromptConfig::UIFlavor::ANIMATED_ICON) {
+    set_explanatory_string_id(IDS_NOTIFICATIONS_OFF_EXPLANATORY_TEXT);
+  }
+}
+
+bool ContentSettingNotificationsImageModel::UpdateAndGetVisibility(
+    WebContents* web_contents) {
+  auto* manager = PermissionRequestManager::FromWebContents(web_contents);
+  // |manager| may be null in tests.
+  return manager ? manager->ShouldShowQuietPermissionPrompt() : false;
+}
+
+std::unique_ptr<ContentSettingBubbleModel>
+ContentSettingNotificationsImageModel::CreateBubbleModelImpl(
+    ContentSettingBubbleModel::Delegate* delegate,
+    WebContents* web_contents) {
+  return std::make_unique<ContentSettingNotificationsBubbleModel>(delegate,
+                                                                  web_contents);
+}
+
 // Base class ------------------------------------------------------------------
 
 gfx::Image ContentSettingImageModel::GetIcon(SkColor icon_color) const {
@@ -757,6 +812,7 @@
       ImageType::SOUND,
       ImageType::FRAMEBUST,
       ImageType::CLIPBOARD_READ,
+      ImageType::NOTIFICATIONS_QUIET_PROMPT,
   };
 
   std::vector<std::unique_ptr<ContentSettingImageModel>> result;
diff --git a/chrome/browser/ui/content_settings/content_setting_image_model.h b/chrome/browser/ui/content_settings/content_setting_image_model.h
index 35c4c21..43ce88e 100644
--- a/chrome/browser/ui/content_settings/content_setting_image_model.h
+++ b/chrome/browser/ui/content_settings/content_setting_image_model.h
@@ -48,6 +48,7 @@
     FRAMEBUST = 14,
     CLIPBOARD_READ = 15,
     SENSORS = 16,
+    NOTIFICATIONS_QUIET_PROMPT = 17,
 
     NUM_IMAGE_TYPES
   };
diff --git a/chrome/browser/ui/content_settings/content_setting_image_model_unittest.cc b/chrome/browser/ui/content_settings/content_setting_image_model_unittest.cc
index 0c56570..fa9b6f5 100644
--- a/chrome/browser/ui/content_settings/content_setting_image_model_unittest.cc
+++ b/chrome/browser/ui/content_settings/content_setting_image_model_unittest.cc
@@ -4,16 +4,29 @@
 
 #include "chrome/browser/ui/content_settings/content_setting_image_model.h"
 
+#include "base/bind.h"
+#include "base/command_line.h"
 #include "base/macros.h"
 #include "base/optional.h"
+#include "base/run_loop.h"
 #include "base/strings/utf_string_conversions.h"
 #include "base/test/scoped_feature_list.h"
+#include "build/build_config.h"
 #include "chrome/browser/chrome_notification_types.h"
 #include "chrome/browser/content_settings/host_content_settings_map_factory.h"
 #include "chrome/browser/content_settings/tab_specific_content_settings.h"
+#include "chrome/browser/permissions/mock_permission_request.h"
+#include "chrome/browser/permissions/permission_request.h"
+#include "chrome/browser/permissions/permission_request_manager.h"
+#include "chrome/browser/permissions/permission_uma_util.h"
 #include "chrome/browser/prerender/prerender_manager.h"
 #include "chrome/browser/profiles/profile.h"
+#include "chrome/browser/ui/permission_bubble/mock_permission_prompt_factory.h"
+#include "chrome/browser/ui/tabs/tab_strip_model.h"
+#include "chrome/common/chrome_features.h"
+#include "chrome/common/chrome_switches.h"
 #include "chrome/grit/generated_resources.h"
+#include "chrome/test/base/browser_with_test_window_test.h"
 #include "chrome/test/base/chrome_render_view_host_test_harness.h"
 #include "chrome/test/base/testing_profile.h"
 #include "components/content_settings/core/browser/host_content_settings_map.h"
@@ -30,12 +43,45 @@
 
 namespace {
 
+class ContentSettingImageModelTest : public BrowserWithTestWindowTest {
+ public:
+  ContentSettingImageModelTest()
+      : request_("test1",
+                 PermissionRequestType::PERMISSION_NOTIFICATIONS,
+                 PermissionRequestGestureType::GESTURE) {}
+  ~ContentSettingImageModelTest() override {}
+
+  content::WebContents* web_contents() {
+    return browser()->tab_strip_model()->GetActiveWebContents();
+  }
+
+  void SetUp() override {
+    BrowserWithTestWindowTest::SetUp();
+    AddTab(browser(), GURL("http://www.google.com"));
+    controller_ = &web_contents()->GetController();
+    NavigateAndCommit(controller_, GURL("http://www.google.com"));
+    PermissionRequestManager::CreateForWebContents(web_contents());
+    manager_ = PermissionRequestManager::FromWebContents(web_contents());
+  }
+
+  void WaitForBubbleToBeShown() {
+    manager_->DocumentOnLoadCompletedInMainFrame();
+    base::RunLoop().RunUntilIdle();
+  }
+
+ protected:
+  MockPermissionRequest request_;
+  PermissionRequestManager* manager_ = nullptr;
+  content::NavigationController* controller_ = nullptr;
+
+ private:
+  DISALLOW_COPY_AND_ASSIGN(ContentSettingImageModelTest);
+};
+
 bool HasIcon(const ContentSettingImageModel& model) {
   return !model.GetIcon(gfx::kPlaceholderColor).IsEmpty();
 }
 
-using ContentSettingImageModelTest = ChromeRenderViewHostTestHarness;
-
 TEST_F(ContentSettingImageModelTest, Update) {
   TabSpecificContentSettings::CreateForWebContents(web_contents());
   TabSpecificContentSettings* content_settings =
@@ -174,8 +220,7 @@
   feature_list.InitAndEnableFeature(features::kGenericSensorExtraClasses);
 
   TabSpecificContentSettings::CreateForWebContents(web_contents());
-  content::WebContentsTester::For(web_contents())
-      ->NavigateAndCommit(GURL("https://www.example.com"));
+  NavigateAndCommit(controller_, GURL("https://www.example.com"));
   TabSpecificContentSettings* content_settings =
       TabSpecificContentSettings::FromWebContents(web_contents());
   HostContentSettingsMap* settings_map =
@@ -291,6 +336,7 @@
 
 // Regression test for http://crbug.com/161854.
 TEST_F(ContentSettingImageModelTest, NULLTabSpecificContentSettings) {
+  web_contents()->RemoveUserData(TabSpecificContentSettings::UserDataKey());
   EXPECT_EQ(nullptr,
             TabSpecificContentSettings::FromWebContents(web_contents()));
   // Should not crash.
@@ -317,4 +363,47 @@
   EXPECT_FALSE(content_setting_image_model->get_tooltip().empty());
 }
 
+TEST_F(ContentSettingImageModelTest, NotificationsIconVisibility) {
+  TabSpecificContentSettings::CreateForWebContents(web_contents());
+  TabSpecificContentSettings* content_settings =
+      TabSpecificContentSettings::FromWebContents(web_contents());
+  auto content_setting_image_model =
+      ContentSettingImageModel::CreateForContentType(
+          ContentSettingImageModel::ImageType::NOTIFICATIONS_QUIET_PROMPT);
+
+  HostContentSettingsMapFactory::GetForProfile(profile())
+      ->SetDefaultContentSetting(CONTENT_SETTINGS_TYPE_NOTIFICATIONS,
+                                 CONTENT_SETTING_ALLOW);
+  content_settings->OnContentAllowed(CONTENT_SETTINGS_TYPE_NOTIFICATIONS);
+  content_setting_image_model->Update(web_contents());
+  EXPECT_FALSE(content_setting_image_model->is_visible());
+  HostContentSettingsMapFactory::GetForProfile(profile())
+      ->SetDefaultContentSetting(CONTENT_SETTINGS_TYPE_NOTIFICATIONS,
+                                 CONTENT_SETTING_BLOCK);
+  content_settings->OnContentBlocked(CONTENT_SETTINGS_TYPE_NOTIFICATIONS);
+  content_setting_image_model->Update(web_contents());
+  EXPECT_FALSE(content_setting_image_model->is_visible());
+}
+
+TEST_F(ContentSettingImageModelTest, NotificationsPrompt) {
+#if !defined(OS_ANDROID)
+  base::test::ScopedFeatureList feature_list;
+  feature_list.InitAndEnableFeatureWithParameters(
+      features::kQuietNotificationPrompts, {{"animated_icon", "foo"}});
+  auto content_setting_image_model =
+      ContentSettingImageModel::CreateForContentType(
+          ContentSettingImageModel::ImageType::NOTIFICATIONS_QUIET_PROMPT);
+  EXPECT_FALSE(content_setting_image_model->is_visible());
+  manager_->AddRequest(&request_);
+  WaitForBubbleToBeShown();
+  EXPECT_TRUE(manager_->ShouldShowQuietPermissionPrompt());
+  content_setting_image_model->Update(web_contents());
+  EXPECT_TRUE(content_setting_image_model->is_visible());
+  manager_->Accept();
+  EXPECT_FALSE(manager_->ShouldShowQuietPermissionPrompt());
+  content_setting_image_model->Update(web_contents());
+  EXPECT_FALSE(content_setting_image_model->is_visible());
+#endif  // !defined(OS_ANDROID)
+}
+
 }  // namespace
diff --git a/chrome/browser/ui/passwords/password_generation_popup_controller_impl.cc b/chrome/browser/ui/passwords/password_generation_popup_controller_impl.cc
index 4fa9499..1803fd2 100644
--- a/chrome/browser/ui/passwords/password_generation_popup_controller_impl.cc
+++ b/chrome/browser/ui/passwords/password_generation_popup_controller_impl.cc
@@ -212,10 +212,6 @@
         driver_->GetPasswordGenerationHelper()->GeneratePassword(
             web_contents()->GetLastCommittedURL().GetOrigin(), form_signature_,
             field_signature_, max_length_, &spec_priority);
-    if (driver_ && driver_->GetPasswordManager()) {
-      driver_->GetPasswordManager()->ReportSpecPriorityForGeneratedPassword(
-          form_, spec_priority);
-    }
   }
   state_ = state;
 
diff --git a/chrome/browser/ui/tabs/tab_strip_model.cc b/chrome/browser/ui/tabs/tab_strip_model.cc
index 78295bab..402bb91 100644
--- a/chrome/browser/ui/tabs/tab_strip_model.cc
+++ b/chrome/browser/ui/tabs/tab_strip_model.cc
@@ -295,6 +295,7 @@
     visual_data_ = std::move(visual_data);
   }
 
+  int tab_count() const { return tab_count_; }
   bool empty() const { return tab_count_ == 0; }
 
   void TabAdded() { ++tab_count_; }
@@ -618,8 +619,12 @@
                     ? std::min(first_non_pinned_tab - 1, to_position)
                     : std::max(first_non_pinned_tab, to_position);
 
-  if (index != to_position)
-    MoveWebContentsAtImpl(index, to_position, select_after_move);
+  if (index == to_position)
+    return to_position;
+
+  MoveWebContentsAtImpl(index, to_position, select_after_move);
+  EnsureGroupContiguity(to_position);
+
   return to_position;
 }
 
@@ -1980,3 +1985,24 @@
       data->set_opener(contents_data_[index]->opener());
   }
 }
+
+void TabStripModel::EnsureGroupContiguity(int index) {
+  const auto old_group = GetTabGroupForTab(index);
+  const auto new_left_group = GetTabGroupForTab(index - 1);
+  const auto new_right_group = GetTabGroupForTab(index + 1);
+  if (old_group != new_left_group && old_group != new_right_group) {
+    if (new_left_group == new_right_group && new_left_group.has_value()) {
+      // The tab is in the middle of an existing group, so add it to that group.
+      UngroupTab(index);
+      contents_data_[index]->set_group(new_left_group);
+      group_data_.at(new_left_group.value()).TabAdded();
+      NotifyGroupChange(index, old_group, new_left_group);
+    } else if (old_group.has_value() &&
+               group_data_.at(*old_group).tab_count() > 1) {
+      // The tab is between groups and its group is non-contiguous, so clear
+      // this tab's group.
+      UngroupTab(index);
+      NotifyGroupChange(index, old_group, base::nullopt);
+    }
+  }
+}
diff --git a/chrome/browser/ui/tabs/tab_strip_model.h b/chrome/browser/ui/tabs/tab_strip_model.h
index 66b9d22..3bb9e17 100644
--- a/chrome/browser/ui/tabs/tab_strip_model.h
+++ b/chrome/browser/ui/tabs/tab_strip_model.h
@@ -245,6 +245,8 @@
   // Move the WebContents at the specified index to another index. This
   // method does NOT send Detached/Attached notifications, rather it moves the
   // WebContents inline and sends a Moved notification instead.
+  // EnsureGroupContiguity() is called after the move, so this will never result
+  // in non-contiguous group (though the moved tab's group may change).
   // If |select_after_move| is false, whatever tab was selected before the move
   // will still be selected, but its index may have incremented or decremented
   // one slot. It returns the index the web contents is actually moved to.
@@ -683,6 +685,12 @@
   // opener.
   void FixOpeners(int index);
 
+  // Makes sure the tab at |index| is not causing a group contiguity error. Will
+  // make the minimum change to ensure that the tab's group is not non-
+  // contiguous as well as ensuring that it is not breaking up a non-contiguous
+  // group, possibly by setting or clearing its group.
+  void EnsureGroupContiguity(int index);
+
   // The WebContents data currently hosted within this TabStripModel. This must
   // be kept in sync with |selection_model_|.
   std::vector<std::unique_ptr<WebContentsData>> contents_data_;
diff --git a/chrome/browser/ui/tabs/tab_strip_model_unittest.cc b/chrome/browser/ui/tabs/tab_strip_model_unittest.cc
index cc158cc..842cd6e8 100644
--- a/chrome/browser/ui/tabs/tab_strip_model_unittest.cc
+++ b/chrome/browser/ui/tabs/tab_strip_model_unittest.cc
@@ -96,6 +96,32 @@
     base::Optional<TabGroupId> old_group;
     base::Optional<TabGroupId> new_group;
     TabStripModelObserverAction action;
+
+    std::string ToString() const {
+      std::ostringstream oss;
+      oss << "State change: " << kActionNames[int{action}]
+          << "\n  Source index: " << src_index
+          << "\n  Destination index: " << dst_index
+          << "\n  Source contents: " << src_contents
+          << "\n  Destination contents: " << dst_contents
+          << "\n  Change reason: " << change_reason
+          << "\n  Foreground: " << (foreground ? "yes" : "no")
+          << "\n  Old group: " << (old_group ? old_group->ToString() : "none")
+          << "\n  New group: " << (new_group ? new_group->ToString() : "none");
+      return oss.str();
+    }
+
+    bool operator==(const State& state) const {
+      return src_contents == state.src_contents &&
+             dst_contents == state.dst_contents &&
+             src_index == state.src_index && dst_index == state.dst_index &&
+             change_reason == state.change_reason &&
+             foreground == state.foreground && old_group == state.old_group &&
+             new_group == state.new_group && action == state.action;
+    }
+
+   private:
+    static const char* const kActionNames[];
   };
 
   int GetStateCount() const { return static_cast<int>(states_.size()); }
@@ -129,15 +155,10 @@
     return states_[index];
   }
 
-  bool StateEquals(int index, const State& state) {
-    const State& s = GetStateAt(index);
-    return (s.src_contents == state.src_contents &&
-            s.dst_contents == state.dst_contents &&
-            s.src_index == state.src_index && s.dst_index == state.dst_index &&
-            s.change_reason == state.change_reason &&
-            s.foreground == state.foreground &&
-            s.old_group == state.old_group && s.new_group == state.new_group &&
-            s.action == state.action);
+  void ExpectStateEquals(int index, const State& state) {
+    EXPECT_TRUE(GetStateAt(index) == state)
+        << "Got " << GetStateAt(index).ToString() << "\nExpected "
+        << state.ToString();
   }
 
   void PushInsertState(WebContents* contents, int index, bool foreground) {
@@ -310,6 +331,22 @@
   DISALLOW_COPY_AND_ASSIGN(MockTabStripModelObserver);
 };
 
+const char* const MockTabStripModelObserver::State::kActionNames[]{
+    "INSERT",
+    "CLOSE",
+    "DETACH",
+    "ACTIVATE",
+    "DEACTIVATE",
+    "SELECT",
+    "MOVE",
+    "CHANGE",
+    "PINNED",
+    "REPLACED",
+    "CLOSE_ALL",
+    "CLOSE_ALL_CANCELED",
+    "CLOSE_ALL_COMPLETED",
+    "GROUP_CHANGED"};
+
 }  // namespace
 
 class TabStripModelTest : public testing::Test {
@@ -431,12 +468,12 @@
     EXPECT_EQ(3, observer.GetStateCount());
     State s1(raw_contents1, 0, MockTabStripModelObserver::INSERT);
     s1.foreground = true;
-    EXPECT_TRUE(observer.StateEquals(0, s1));
+    observer.ExpectStateEquals(0, s1);
     State s2(raw_contents1, 0, MockTabStripModelObserver::ACTIVATE);
-    EXPECT_TRUE(observer.StateEquals(1, s2));
+    observer.ExpectStateEquals(1, s2);
     State s3(raw_contents1, 0, MockTabStripModelObserver::SELECT);
     s3.src_index = ui::ListSelectionModel::kUnselectedIndex;
-    EXPECT_TRUE(observer.StateEquals(2, s3));
+    observer.ExpectStateEquals(2, s3);
     observer.ClearStates();
   }
   EXPECT_EQ("1", GetTabStripStateString(tabstrip));
@@ -452,15 +489,15 @@
     EXPECT_EQ(4, observer.GetStateCount());
     State s1(raw_contents2, 1, MockTabStripModelObserver::INSERT);
     s1.foreground = true;
-    EXPECT_TRUE(observer.StateEquals(0, s1));
+    observer.ExpectStateEquals(0, s1);
     State s2(raw_contents1, 0, MockTabStripModelObserver::DEACTIVATE);
-    EXPECT_TRUE(observer.StateEquals(1, s2));
+    observer.ExpectStateEquals(1, s2);
     State s3(raw_contents2, 1, MockTabStripModelObserver::ACTIVATE);
     s3.src_contents = raw_contents1;
-    EXPECT_TRUE(observer.StateEquals(2, s3));
+    observer.ExpectStateEquals(2, s3);
     State s4(raw_contents2, 1, MockTabStripModelObserver::SELECT);
     s4.src_index = 0;
-    EXPECT_TRUE(observer.StateEquals(3, s4));
+    observer.ExpectStateEquals(3, s4);
     observer.ClearStates();
   }
   EXPECT_EQ("1 2", GetTabStripStateString(tabstrip));
@@ -476,7 +513,7 @@
     EXPECT_EQ(1, observer.GetStateCount());
     State s1(raw_contents3, 2, MockTabStripModelObserver::INSERT);
     s1.foreground = false;
-    EXPECT_TRUE(observer.StateEquals(0, s1));
+    observer.ExpectStateEquals(0, s1);
     observer.ClearStates();
   }
   EXPECT_EQ("1 2 3", GetTabStripStateString(tabstrip));
@@ -486,14 +523,14 @@
     tabstrip.ActivateTabAt(2, {TabStripModel::GestureType::kOther});
     EXPECT_EQ(3, observer.GetStateCount());
     State s1(raw_contents2, 1, MockTabStripModelObserver::DEACTIVATE);
-    EXPECT_TRUE(observer.StateEquals(0, s1));
+    observer.ExpectStateEquals(0, s1);
     State s2(raw_contents3, 2, MockTabStripModelObserver::ACTIVATE);
     s2.src_contents = raw_contents2;
     s2.change_reason = TabStripModelObserver::CHANGE_REASON_USER_GESTURE;
-    EXPECT_TRUE(observer.StateEquals(1, s2));
+    observer.ExpectStateEquals(1, s2);
     State s3(raw_contents3, 2, MockTabStripModelObserver::SELECT);
     s3.src_index = 1;
-    EXPECT_TRUE(observer.StateEquals(2, s3));
+    observer.ExpectStateEquals(2, s3);
     observer.ClearStates();
   }
   EXPECT_EQ("1 2 3", GetTabStripStateString(tabstrip));
@@ -508,28 +545,28 @@
     tabstrip.AppendWebContents(std::move(detached_with_ownership), true);
     EXPECT_EQ(8, observer.GetStateCount());
     State s1(detached, 2, MockTabStripModelObserver::DETACH);
-    EXPECT_TRUE(observer.StateEquals(0, s1));
+    observer.ExpectStateEquals(0, s1);
     State s2(detached, 2, MockTabStripModelObserver::DEACTIVATE);
-    EXPECT_TRUE(observer.StateEquals(1, s2));
+    observer.ExpectStateEquals(1, s2);
     State s3(raw_contents2, 1, MockTabStripModelObserver::ACTIVATE);
     s3.src_contents = raw_contents3;
     s3.change_reason = TabStripModelObserver::CHANGE_REASON_NONE;
-    EXPECT_TRUE(observer.StateEquals(2, s3));
+    observer.ExpectStateEquals(2, s3);
     State s4(raw_contents2, 1, MockTabStripModelObserver::SELECT);
     s4.src_index = 2;
-    EXPECT_TRUE(observer.StateEquals(3, s4));
+    observer.ExpectStateEquals(3, s4);
     State s5(detached, 2, MockTabStripModelObserver::INSERT);
     s5.foreground = true;
-    EXPECT_TRUE(observer.StateEquals(4, s5));
+    observer.ExpectStateEquals(4, s5);
     State s6(raw_contents2, 1, MockTabStripModelObserver::DEACTIVATE);
-    EXPECT_TRUE(observer.StateEquals(5, s6));
+    observer.ExpectStateEquals(5, s6);
     State s7(detached, 2, MockTabStripModelObserver::ACTIVATE);
     s7.src_contents = raw_contents2;
     s7.change_reason = TabStripModelObserver::CHANGE_REASON_NONE;
-    EXPECT_TRUE(observer.StateEquals(6, s7));
+    observer.ExpectStateEquals(6, s7);
     State s8(detached, 2, MockTabStripModelObserver::SELECT);
     s8.src_index = 1;
-    EXPECT_TRUE(observer.StateEquals(7, s8));
+    observer.ExpectStateEquals(7, s8);
     observer.ClearStates();
   }
   EXPECT_EQ("1 2 3", GetTabStripStateString(tabstrip));
@@ -541,18 +578,18 @@
 
     EXPECT_EQ(5, observer.GetStateCount());
     State s1(raw_contents3, 2, MockTabStripModelObserver::CLOSE);
-    EXPECT_TRUE(observer.StateEquals(0, s1));
+    observer.ExpectStateEquals(0, s1);
     State s2(raw_contents3, 2, MockTabStripModelObserver::DETACH);
-    EXPECT_TRUE(observer.StateEquals(1, s2));
+    observer.ExpectStateEquals(1, s2);
     State s3(raw_contents3, 2, MockTabStripModelObserver::DEACTIVATE);
-    EXPECT_TRUE(observer.StateEquals(2, s3));
+    observer.ExpectStateEquals(2, s3);
     State s4(raw_contents2, 1, MockTabStripModelObserver::ACTIVATE);
     s4.src_contents = raw_contents3;
     s4.change_reason = TabStripModelObserver::CHANGE_REASON_NONE;
-    EXPECT_TRUE(observer.StateEquals(3, s4));
+    observer.ExpectStateEquals(3, s4);
     State s5(raw_contents2, 1, MockTabStripModelObserver::SELECT);
     s5.src_index = 2;
-    EXPECT_TRUE(observer.StateEquals(4, s5));
+    observer.ExpectStateEquals(4, s5);
     observer.ClearStates();
   }
   EXPECT_EQ("1 2", GetTabStripStateString(tabstrip));
@@ -564,7 +601,7 @@
     EXPECT_EQ(2, observer.GetStateCount());
     State s1(raw_contents2, 0, MockTabStripModelObserver::MOVE);
     s1.src_index = 1;
-    EXPECT_TRUE(observer.StateEquals(0, s1));
+    observer.ExpectStateEquals(0, s1);
     EXPECT_EQ(0, tabstrip.active_index());
     observer.ClearStates();
   }
@@ -576,7 +613,7 @@
     EXPECT_EQ(2, observer.GetStateCount());
     State s1(raw_contents1, 0, MockTabStripModelObserver::MOVE);
     s1.src_index = 1;
-    EXPECT_TRUE(observer.StateEquals(0, s1));
+    observer.ExpectStateEquals(0, s1);
     EXPECT_EQ(1, tabstrip.active_index());
 
     tabstrip.MoveWebContentsAt(0, 1, false);
@@ -598,7 +635,7 @@
     tabstrip.UpdateWebContentsStateAt(0, TabChangeType::kAll);
     EXPECT_EQ(1, observer.GetStateCount());
     State s1(raw_contents2, 0, MockTabStripModelObserver::CHANGE);
-    EXPECT_TRUE(observer.StateEquals(0, s1));
+    observer.ExpectStateEquals(0, s1);
     observer.ClearStates();
   }
 
@@ -1904,7 +1941,7 @@
     // As the order didn't change, we should get a pinned notification.
     ASSERT_EQ(1, observer.GetStateCount());
     State state(raw_contents1, 0, MockTabStripModelObserver::PINNED);
-    EXPECT_TRUE(observer.StateEquals(0, state));
+    observer.ExpectStateEquals(0, state);
 
     // And verify the state.
     EXPECT_EQ("1p 2 3", GetTabStripStateString(tabstrip));
@@ -1919,7 +1956,7 @@
     // As the order didn't change, we should get a pinned notification.
     ASSERT_EQ(1, observer.GetStateCount());
     State state(raw_contents1, 0, MockTabStripModelObserver::PINNED);
-    EXPECT_TRUE(observer.StateEquals(0, state));
+    observer.ExpectStateEquals(0, state);
 
     // And verify the state.
     EXPECT_EQ("1 2 3", GetTabStripStateString(tabstrip));
@@ -1935,10 +1972,10 @@
     ASSERT_EQ(3, observer.GetStateCount());
     State state(raw_contents3, 0, MockTabStripModelObserver::MOVE);
     state.src_index = 2;
-    EXPECT_TRUE(observer.StateEquals(0, state));
+    observer.ExpectStateEquals(0, state);
 
     state = State(raw_contents3, 0, MockTabStripModelObserver::PINNED);
-    EXPECT_TRUE(observer.StateEquals(2, state));
+    observer.ExpectStateEquals(2, state);
 
     // And verify the state.
     EXPECT_EQ("3p 1 2", GetTabStripStateString(tabstrip));
@@ -1953,7 +1990,7 @@
     // As the order didn't change, we should get a pinned notification.
     ASSERT_EQ(1, observer.GetStateCount());
     State state(raw_contents1, 1, MockTabStripModelObserver::PINNED);
-    EXPECT_TRUE(observer.StateEquals(0, state));
+    observer.ExpectStateEquals(0, state);
 
     // And verify the state.
     EXPECT_EQ("3p 1p 2", GetTabStripStateString(tabstrip));
@@ -1981,10 +2018,10 @@
     ASSERT_EQ(3, observer.GetStateCount());
     State state(raw_contents3, 1, MockTabStripModelObserver::MOVE);
     state.src_index = 0;
-    EXPECT_TRUE(observer.StateEquals(0, state));
+    observer.ExpectStateEquals(0, state);
 
     state = State(raw_contents3, 1, MockTabStripModelObserver::PINNED);
-    EXPECT_TRUE(observer.StateEquals(2, state));
+    observer.ExpectStateEquals(2, state);
 
     // And verify the state.
     EXPECT_EQ("1p 3 2", GetTabStripStateString(tabstrip));
@@ -2024,7 +2061,7 @@
 
     ASSERT_EQ(1, observer.GetStateCount());
     State state(raw_contents4, 2, MockTabStripModelObserver::INSERT);
-    EXPECT_TRUE(observer.StateEquals(0, state));
+    observer.ExpectStateEquals(0, state);
 
     EXPECT_EQ("1p 3p 4 2", GetTabStripStateString(tabstrip));
   }
@@ -2057,13 +2094,13 @@
   // First event should be for replaced.
   State state(raw_new_contents, 0, MockTabStripModelObserver::REPLACED);
   state.src_contents = raw_first_contents;
-  EXPECT_TRUE(observer.StateEquals(0, state));
+  observer.ExpectStateEquals(0, state);
 
   // And the second for selected.
   state = State(raw_new_contents, 0, MockTabStripModelObserver::ACTIVATE);
   state.src_contents = raw_first_contents;
   state.change_reason = TabStripModelObserver::CHANGE_REASON_REPLACED;
-  EXPECT_TRUE(observer.StateEquals(1, state));
+  observer.ExpectStateEquals(1, state);
 
   // Now add another tab and replace it, making sure we don't get a selected
   // event this time.
@@ -2083,7 +2120,7 @@
 
   state = State(raw_new_contents, 1, MockTabStripModelObserver::REPLACED);
   state.src_contents = raw_third_contents;
-  EXPECT_TRUE(observer.StateEquals(0, state));
+  observer.ExpectStateEquals(0, state);
 
   strip.CloseAllTabs();
 }
@@ -2350,7 +2387,7 @@
   ASSERT_EQ(2, observer.GetStateCount());
   ASSERT_EQ(observer.GetStateAt(0).action, MockTabStripModelObserver::ACTIVATE);
   State s1(raw_contents3, 3, MockTabStripModelObserver::SELECT);
-  EXPECT_TRUE(observer.StateEquals(1, s1));
+  observer.ExpectStateEquals(1, s1);
   observer.ClearStates();
 
   // Adding all tabs to selection, active tab is now at 0.
@@ -2361,7 +2398,7 @@
   ASSERT_EQ(observer.GetStateAt(1).action, MockTabStripModelObserver::ACTIVATE);
   State s2(raw_contents0, 0, MockTabStripModelObserver::SELECT);
   s2.src_index = 3;
-  EXPECT_TRUE(observer.StateEquals(2, s2));
+  observer.ExpectStateEquals(2, s2);
   observer.ClearStates();
 
   // Toggle the active tab, should make the next index active.
@@ -2449,7 +2486,7 @@
   State s(raw_contents2, 1, MockTabStripModelObserver::SELECT);
   s.src_index = 1;
   s.change_reason = TabStripModelObserver::CHANGE_REASON_NONE;
-  EXPECT_TRUE(observer.StateEquals(0, s));
+  observer.ExpectStateEquals(0, s);
   strip.RemoveObserver(&observer);
   strip.CloseAllTabs();
 }
@@ -2694,8 +2731,9 @@
   observer.ClearStates();
   strip.AddToNewGroup({0});
   EXPECT_EQ(1, observer.GetStateCount());
-  observer.StateEquals(0, ExpectedGroupChangeState(strip, 0, base::nullopt,
-                                                   strip.GetTabGroupForTab(0)));
+  observer.ExpectStateEquals(
+      0, ExpectedGroupChangeState(strip, 0, base::nullopt,
+                                  strip.GetTabGroupForTab(0)));
 
   strip.CloseAllTabs();
 }
@@ -2712,10 +2750,11 @@
   base::Optional<TabGroupId> first_group = strip.GetTabGroupForTab(0);
   strip.AddToNewGroup({0});
   EXPECT_EQ(2, observer.GetStateCount());
-  observer.StateEquals(
+  observer.ExpectStateEquals(
       0, ExpectedGroupChangeState(strip, 0, base::nullopt, first_group));
-  observer.StateEquals(1, ExpectedGroupChangeState(strip, 0, first_group,
-                                                   strip.GetTabGroupForTab(0)));
+  observer.ExpectStateEquals(
+      1, ExpectedGroupChangeState(strip, 0, first_group,
+                                  strip.GetTabGroupForTab(0)));
 
   strip.CloseAllTabs();
 }
@@ -2871,7 +2910,7 @@
 
   strip.AddToExistingGroup({1}, group.value());
   EXPECT_EQ(1, observer.GetStateCount());
-  observer.StateEquals(
+  observer.ExpectStateEquals(
       0, ExpectedGroupChangeState(strip, 1, base::nullopt, group));
 
   strip.CloseAllTabs();
@@ -3002,7 +3041,7 @@
 
   strip.RemoveFromGroup({0});
   EXPECT_EQ(1, observer.GetStateCount());
-  observer.StateEquals(
+  observer.ExpectStateEquals(
       0, ExpectedGroupChangeState(strip, 0, group, base::nullopt));
 
   strip.CloseAllTabs();
@@ -3141,15 +3180,18 @@
   base::Optional<TabGroupId> old_group = strip.GetTabGroupForTab(0);
   observer.ClearStates();
 
+  // Need to capture the reference to the web contents before it goes away.
+  const auto expected_state_change =
+      ExpectedGroupChangeState(strip, 0, old_group, base::nullopt);
+
   strip.CloseWebContentsAt(0, TabStripModel::CLOSE_USER_GESTURE);
 
   EXPECT_GT(observer.GetStateCount(), 0);
   int num_group_changed_notifications = 0;
   for (int i = 0; i < observer.GetStateCount(); i++) {
-    if (observer.GetStateAt(i).action ==
-        MockTabStripModelObserver::GROUP_CHANGED) {
-      observer.StateEquals(
-          i, ExpectedGroupChangeState(strip, 0, old_group, base::nullopt));
+    const auto& state = observer.GetStateAt(i);
+    if (state.action == MockTabStripModelObserver::GROUP_CHANGED) {
+      observer.ExpectStateEquals(i, expected_state_change);
       num_group_changed_notifications++;
     }
   }
@@ -3173,8 +3215,8 @@
   EXPECT_EQ(observer.GetStateCount(), 2);
   EXPECT_EQ(MockTabStripModelObserver::GROUP_CHANGED,
             observer.GetStateAt(1).action);
-  EXPECT_TRUE(observer.StateEquals(
-      1, ExpectedGroupChangeState(strip, 1, base::nullopt, group_id)));
+  observer.ExpectStateEquals(
+      1, ExpectedGroupChangeState(strip, 1, base::nullopt, group_id));
 
   strip.CloseAllTabs();
 }
@@ -3356,3 +3398,275 @@
     strip.AddObserver(&observer);
   }
 }
+
+TEST_F(TabStripModelTest, MovingTabToStartOfGroupDoesNotChangeGroup) {
+  TestTabStripModelDelegate delegate;
+  TabStripModel strip(&delegate, profile());
+  PrepareTabs(&strip, 5);
+  const auto group = strip.AddToNewGroup({1, 2, 3});
+
+  strip.MoveWebContentsAt(2, 1, false);
+  EXPECT_EQ("0 2 1 3 4", GetTabStripStateString(strip));
+  EXPECT_EQ(group, strip.GetTabGroupForTab(1));
+  EXPECT_EQ(group, strip.GetTabGroupForTab(2));
+  EXPECT_EQ(group, strip.GetTabGroupForTab(3));
+
+  strip.CloseAllTabs();
+}
+
+TEST_F(TabStripModelTest, MovingTabToMiddleOfGroupDoesNotChangeGroup) {
+  TestTabStripModelDelegate delegate;
+  TabStripModel strip(&delegate, profile());
+  PrepareTabs(&strip, 5);
+  const auto group = strip.AddToNewGroup({1, 2, 3});
+
+  strip.MoveWebContentsAt(1, 2, false);
+  EXPECT_EQ("0 2 1 3 4", GetTabStripStateString(strip));
+  EXPECT_EQ(group, strip.GetTabGroupForTab(1));
+  EXPECT_EQ(group, strip.GetTabGroupForTab(2));
+  EXPECT_EQ(group, strip.GetTabGroupForTab(3));
+
+  strip.CloseAllTabs();
+}
+
+TEST_F(TabStripModelTest, MovingTabToEndOfGroupDoesNotChangeGroup) {
+  TestTabStripModelDelegate delegate;
+  TabStripModel strip(&delegate, profile());
+  PrepareTabs(&strip, 5);
+  const auto group = strip.AddToNewGroup({1, 2, 3});
+
+  strip.MoveWebContentsAt(2, 3, false);
+  EXPECT_EQ("0 1 3 2 4", GetTabStripStateString(strip));
+  EXPECT_EQ(group, strip.GetTabGroupForTab(1));
+  EXPECT_EQ(group, strip.GetTabGroupForTab(2));
+  EXPECT_EQ(group, strip.GetTabGroupForTab(3));
+
+  strip.CloseAllTabs();
+}
+
+TEST_F(TabStripModelTest, MovingTabOutsideOfGroupToStartOfTabstripClearsGroup) {
+  TestTabStripModelDelegate delegate;
+  TabStripModel strip(&delegate, profile());
+  PrepareTabs(&strip, 5);
+  const auto group = strip.AddToNewGroup({1, 2, 3});
+
+  strip.MoveWebContentsAt(1, 0, false);
+  EXPECT_EQ("1 0 2 3 4", GetTabStripStateString(strip));
+  EXPECT_EQ(base::nullopt, strip.GetTabGroupForTab(0));
+  EXPECT_EQ(base::nullopt, strip.GetTabGroupForTab(1));
+  EXPECT_EQ(group, strip.GetTabGroupForTab(2));
+
+  strip.CloseAllTabs();
+}
+
+TEST_F(TabStripModelTest, MovingTabOutsideOfGroupToEndOfTabstripClearsGroup) {
+  TestTabStripModelDelegate delegate;
+  TabStripModel strip(&delegate, profile());
+  PrepareTabs(&strip, 5);
+  const auto group = strip.AddToNewGroup({1, 2, 3});
+
+  strip.MoveWebContentsAt(3, 4, false);
+  EXPECT_EQ("0 1 2 4 3", GetTabStripStateString(strip));
+  EXPECT_EQ(group, strip.GetTabGroupForTab(2));
+  EXPECT_EQ(base::nullopt, strip.GetTabGroupForTab(3));
+  EXPECT_EQ(base::nullopt, strip.GetTabGroupForTab(4));
+
+  strip.CloseAllTabs();
+}
+
+TEST_F(TabStripModelTest, MovingTabBetweenUngroupedTabsClearsGroup) {
+  TestTabStripModelDelegate delegate;
+  TabStripModel strip(&delegate, profile());
+  PrepareTabs(&strip, 5);
+  strip.AddToNewGroup({0, 1, 2});
+
+  strip.MoveWebContentsAt(1, 3, false);
+  EXPECT_EQ("0 2 3 1 4", GetTabStripStateString(strip));
+  EXPECT_EQ(base::nullopt, strip.GetTabGroupForTab(2));
+  EXPECT_EQ(base::nullopt, strip.GetTabGroupForTab(3));
+  EXPECT_EQ(base::nullopt, strip.GetTabGroupForTab(4));
+
+  strip.CloseAllTabs();
+}
+
+TEST_F(TabStripModelTest, MovingUngroupedTabBetweenGroupsDoesNotAssignGroup) {
+  TestTabStripModelDelegate delegate;
+  TabStripModel strip(&delegate, profile());
+  PrepareTabs(&strip, 5);
+  const auto group1 = strip.AddToNewGroup({1, 2});
+  const auto group2 = strip.AddToNewGroup({3, 4});
+
+  strip.MoveWebContentsAt(0, 2, false);
+  EXPECT_EQ("1 2 0 3 4", GetTabStripStateString(strip));
+  EXPECT_EQ(group1, strip.GetTabGroupForTab(1));
+  EXPECT_EQ(base::nullopt, strip.GetTabGroupForTab(2));
+  EXPECT_EQ(group2, strip.GetTabGroupForTab(3));
+
+  strip.CloseAllTabs();
+}
+
+TEST_F(TabStripModelTest,
+       MovingUngroupedTabBetweenGroupAndUngroupedDoesNotAssignGroup) {
+  TestTabStripModelDelegate delegate;
+  TabStripModel strip(&delegate, profile());
+  PrepareTabs(&strip, 4);
+  const auto group = strip.AddToNewGroup({1, 2});
+
+  strip.MoveWebContentsAt(0, 2, false);
+  EXPECT_EQ("1 2 0 3", GetTabStripStateString(strip));
+  EXPECT_EQ(group, strip.GetTabGroupForTab(1));
+  EXPECT_EQ(base::nullopt, strip.GetTabGroupForTab(2));
+  EXPECT_EQ(base::nullopt, strip.GetTabGroupForTab(3));
+
+  strip.CloseAllTabs();
+}
+
+TEST_F(TabStripModelTest,
+       MovingUngroupedTabBetweenUngroupedAndGroupDoesNotAssignGroup) {
+  TestTabStripModelDelegate delegate;
+  TabStripModel strip(&delegate, profile());
+  PrepareTabs(&strip, 4);
+  const auto group = strip.AddToNewGroup({2, 3});
+
+  strip.MoveWebContentsAt(0, 1, false);
+  EXPECT_EQ("1 0 2 3", GetTabStripStateString(strip));
+  EXPECT_EQ(base::nullopt, strip.GetTabGroupForTab(0));
+  EXPECT_EQ(base::nullopt, strip.GetTabGroupForTab(1));
+  EXPECT_EQ(group, strip.GetTabGroupForTab(2));
+
+  strip.CloseAllTabs();
+}
+
+TEST_F(TabStripModelTest,
+       MovingGroupMemberBetweenTwoDifferentGroupsClearsGroup) {
+  TestTabStripModelDelegate delegate;
+  TabStripModel strip(&delegate, profile());
+  PrepareTabs(&strip, 6);
+  const auto group1 = strip.AddToNewGroup({0, 1});
+  const auto group2 = strip.AddToNewGroup({2, 3});
+  const auto group3 = strip.AddToNewGroup({4, 5});
+
+  strip.MoveWebContentsAt(0, 3, false);
+  EXPECT_EQ("1 2 3 0 4 5", GetTabStripStateString(strip));
+  EXPECT_EQ(group1, strip.GetTabGroupForTab(0));
+  EXPECT_EQ(group2, strip.GetTabGroupForTab(2));
+  EXPECT_EQ(base::nullopt, strip.GetTabGroupForTab(3));
+  EXPECT_EQ(group3, strip.GetTabGroupForTab(4));
+
+  strip.CloseAllTabs();
+}
+
+TEST_F(TabStripModelTest,
+       MovingSingleTabGroupBetweenTwoGroupsDoesNotClearGroup) {
+  TestTabStripModelDelegate delegate;
+  TabStripModel strip(&delegate, profile());
+  PrepareTabs(&strip, 5);
+  const auto group1 = strip.AddToNewGroup({0});
+  const auto group2 = strip.AddToNewGroup({1, 2});
+  const auto group3 = strip.AddToNewGroup({3, 4});
+
+  strip.MoveWebContentsAt(0, 2, false);
+  EXPECT_EQ("1 2 0 3 4", GetTabStripStateString(strip));
+  EXPECT_EQ(group2, strip.GetTabGroupForTab(0));
+  EXPECT_EQ(group2, strip.GetTabGroupForTab(1));
+  EXPECT_EQ(group1, strip.GetTabGroupForTab(2));
+  EXPECT_EQ(group3, strip.GetTabGroupForTab(3));
+
+  strip.CloseAllTabs();
+}
+
+TEST_F(TabStripModelTest, MovingUngroupedTabIntoGroupSetsGroup) {
+  TestTabStripModelDelegate delegate;
+  TabStripModel strip(&delegate, profile());
+  PrepareTabs(&strip, 3);
+  const auto group = strip.AddToNewGroup({1, 2});
+
+  strip.MoveWebContentsAt(0, 1, false);
+  EXPECT_EQ("1 0 2", GetTabStripStateString(strip));
+  EXPECT_EQ(group, strip.GetTabGroupForTab(0));
+  EXPECT_EQ(group, strip.GetTabGroupForTab(1));
+  EXPECT_EQ(group, strip.GetTabGroupForTab(2));
+
+  strip.CloseAllTabs();
+}
+
+TEST_F(TabStripModelTest, MovingGroupedTabIntoGroupChangesGroup) {
+  TestTabStripModelDelegate delegate;
+  TabStripModel strip(&delegate, profile());
+  PrepareTabs(&strip, 3);
+  strip.AddToNewGroup({0});
+  const auto group2 = strip.AddToNewGroup({1, 2});
+
+  strip.MoveWebContentsAt(0, 1, false);
+  EXPECT_EQ("1 0 2", GetTabStripStateString(strip));
+  EXPECT_EQ(group2, strip.GetTabGroupForTab(0));
+  EXPECT_EQ(group2, strip.GetTabGroupForTab(1));
+  EXPECT_EQ(group2, strip.GetTabGroupForTab(2));
+
+  strip.CloseAllTabs();
+}
+
+TEST_F(TabStripModelTest, MoveWebContentsAtCorrectlyRemovesGroupEntries) {
+  TestTabStripModelDelegate delegate;
+  TabStripModel strip(&delegate, profile());
+  PrepareTabs(&strip, 3);
+  strip.AddToNewGroup({0});
+  const auto group2 = strip.AddToNewGroup({1, 2});
+
+  strip.MoveWebContentsAt(0, 1, false);
+  EXPECT_EQ("1 0 2", GetTabStripStateString(strip));
+  EXPECT_EQ(group2, strip.GetTabGroupForTab(1));
+  const std::vector<TabGroupId> expected_groups{group2};
+  EXPECT_EQ(expected_groups, strip.ListTabGroups());
+
+  strip.CloseAllTabs();
+}
+
+TEST_F(TabStripModelTest, MoveWebContentsAtCorrectlySendsGroupChangedEvent) {
+  TestTabStripModelDelegate delegate;
+  TabStripModel strip(&delegate, profile());
+  PrepareTabs(&strip, 3);
+  const auto group1 = strip.AddToNewGroup({0});
+  const auto group2 = strip.AddToNewGroup({1, 2});
+
+  MockTabStripModelObserver observer;
+  strip.AddObserver(&observer);
+
+  strip.MoveWebContentsAt(0, 1, false);
+  EXPECT_EQ("1 0 2", GetTabStripStateString(strip));
+  EXPECT_EQ(group2, strip.GetTabGroupForTab(1));
+
+  EXPECT_EQ(2, observer.GetStateCount());
+  observer.ExpectStateEquals(
+      1, ExpectedGroupChangeState(strip, 1, group1, group2));
+
+  strip.CloseAllTabs();
+}
+
+TEST_F(TabStripModelTest, MoveWebContentsAtCorrectlySendsGroupClearedEvent) {
+  TestTabStripModelDelegate delegate;
+  TabStripModel strip(&delegate, profile());
+  PrepareTabs(&strip, 3);
+  const auto group1 = strip.AddToNewGroup({0, 1});
+  strip.AddToNewGroup({2});
+
+  MockTabStripModelObserver observer;
+  strip.AddObserver(&observer);
+
+  strip.MoveWebContentsAt(0, 2, false);
+  EXPECT_EQ("1 2 0", GetTabStripStateString(strip));
+  EXPECT_EQ(base::nullopt, strip.GetTabGroupForTab(2));
+
+  int num_group_changed_notifications = 0;
+  for (int i = 0; i < observer.GetStateCount(); i++) {
+    if (observer.GetStateAt(i).action ==
+        MockTabStripModelObserver::GROUP_CHANGED) {
+      observer.ExpectStateEquals(
+          i, ExpectedGroupChangeState(strip, 2, group1, base::nullopt));
+      ++num_group_changed_notifications;
+    }
+  }
+  EXPECT_EQ(num_group_changed_notifications, 1);
+
+  strip.CloseAllTabs();
+}
diff --git a/chrome/browser/ui/views/content_setting_bubble_contents.cc b/chrome/browser/ui/views/content_setting_bubble_contents.cc
index 37ac787f..b669ec0 100644
--- a/chrome/browser/ui/views/content_setting_bubble_contents.cc
+++ b/chrome/browser/ui/views/content_setting_bubble_contents.cc
@@ -614,8 +614,8 @@
 }
 
 bool ContentSettingBubbleContents::Accept() {
-  if (content_setting_bubble_model_->ShouldDoneButtonBehaveAsManageButton())
-    content_setting_bubble_model_->OnManageButtonClicked();
+  content_setting_bubble_model_->OnDoneButtonClicked();
+
   return true;
 }
 
diff --git a/chrome/browser/ui/views/feature_promos/global_media_controls_promo_controller.cc b/chrome/browser/ui/views/feature_promos/global_media_controls_promo_controller.cc
index a39caa9..fcfc7b7 100644
--- a/chrome/browser/ui/views/feature_promos/global_media_controls_promo_controller.cc
+++ b/chrome/browser/ui/views/feature_promos/global_media_controls_promo_controller.cc
@@ -45,8 +45,6 @@
   DCHECK(owner_->GetEnabled());
 
   // Here, we open the promo bubble.
-  // TODO(https://crbug.com/991585): Also highlight the toolbar button.
-
   std::unique_ptr<FeaturePromoBubbleTimeout> feature_promo_bubble_timeout;
   if (!disable_bubble_timeout_for_test_) {
     feature_promo_bubble_timeout = std::make_unique<FeaturePromoBubbleTimeout>(
@@ -90,6 +88,8 @@
 
   is_showing_ = false;
 
+  owner_->OnPromoEnded();
+
   GlobalMediaControlsInProductHelpFactory::GetForProfile(profile_)
       ->HelpDismissed();
 }
diff --git a/chrome/browser/ui/views/feature_promos/global_media_controls_promo_controller_dialog_browsertest.cc b/chrome/browser/ui/views/feature_promos/global_media_controls_promo_controller_dialog_browsertest.cc
index 6b7bd22..c91ff56 100644
--- a/chrome/browser/ui/views/feature_promos/global_media_controls_promo_controller_dialog_browsertest.cc
+++ b/chrome/browser/ui/views/feature_promos/global_media_controls_promo_controller_dialog_browsertest.cc
@@ -5,12 +5,36 @@
 #include "base/run_loop.h"
 #include "base/test/scoped_feature_list.h"
 #include "base/test/test_mock_time_task_runner.h"
+#include "build/build_config.h"
 #include "chrome/browser/ui/test/test_browser_dialog.h"
 #include "chrome/browser/ui/views/feature_promos/global_media_controls_promo_controller.h"
 #include "chrome/browser/ui/views/frame/browser_view.h"
 #include "chrome/browser/ui/views/global_media_controls/media_toolbar_button_view.h"
 #include "chrome/browser/ui/views/toolbar/toolbar_view.h"
 #include "media/base/media_switches.h"
+#include "ui/events/base_event_utils.h"
+#include "ui/native_theme/test_native_theme.h"
+#include "ui/views/animation/ink_drop.h"
+
+namespace {
+
+constexpr SkColor kTestHighlightColor = SK_ColorBLUE;
+
+class PromoTestNativeTheme : public ui::TestNativeTheme {
+ public:
+  PromoTestNativeTheme() = default;
+  ~PromoTestNativeTheme() override = default;
+
+  // ui::NativeTheme implementation.
+  SkColor GetSystemColor(ColorId color_id,
+                         ColorScheme color_scheme) const override {
+    if (color_id == kColorId_ProminentButtonColor)
+      return kTestHighlightColor;
+    return ui::TestNativeTheme::GetSystemColor(color_id, color_scheme);
+  }
+};
+
+}  // anonymous namespace
 
 class GlobalMediaControlsPromoControllerDialogBrowserTest
     : public DialogBrowserTest {
@@ -25,33 +49,41 @@
   }
 
   void SetUpOnMainThread() override {
-    promo_controller_ = std::make_unique<GlobalMediaControlsPromoController>(
-        GetMediaToolbarButton(), browser()->profile());
+    GetMediaToolbarButton()->SetNativeTheme(&test_theme_);
   }
 
   void ShowUi(const std::string& name) override { ShowPromo(); }
 
   void ShowPromo() {
     ShowMediaToolbarButton();
-    promo_controller_->ShowPromo();
+    GetMediaToolbarButton()->ShowPromo();
   }
 
   void DisableBubbleTimeout() {
-    promo_controller_->disable_bubble_timeout_for_test();
+    promo_controller()->disable_bubble_timeout_for_test();
   }
 
   bool PromoBubbleVisible() {
-    views::View* bubble = promo_controller_->promo_bubble_for_test();
+    views::View* bubble = promo_controller()->promo_bubble_for_test();
     return bubble && bubble->GetVisible();
   }
 
-  // TODO(https://crbug.com/991585): Once we add the proper logic into
-  // MediaToolbarButtonController, call methods on that instead of directly
-  // calling GlobalMediaControlsPromoController methods.
-  void SimulateMediaDialogOpened() { promo_controller_->OnMediaDialogOpened(); }
+  bool PromoHighlightVisible() {
+    return GetMediaToolbarButton()->GetInkDrop()->GetTargetInkDropState() ==
+               views::InkDropState::ACTIVATED &&
+           GetMediaToolbarButton()->GetInkDropBaseColor() ==
+               kTestHighlightColor;
+  }
+
+  void SimulateMediaDialogOpened() {
+    GetMediaToolbarButton()->ButtonPressed(
+        GetMediaToolbarButton(),
+        ui::MouseEvent(ui::ET_MOUSE_PRESSED, gfx::Point(), gfx::Point(),
+                       ui::EventTimeForNow(), 0, 0));
+  }
 
   void SimulateMediaToolbarButtonDisabledOrHidden() {
-    promo_controller_->OnMediaToolbarButtonDisabledOrHidden();
+    GetMediaToolbarButton()->Disable();
   }
 
  private:
@@ -68,7 +100,11 @@
     media_button->Enable();
   }
 
-  std::unique_ptr<GlobalMediaControlsPromoController> promo_controller_;
+  GlobalMediaControlsPromoController* promo_controller() {
+    return GetMediaToolbarButton()->GetPromoControllerForTesting();
+  }
+
+  PromoTestNativeTheme test_theme_;
   base::test::ScopedFeatureList feature_list_;
 };
 
@@ -83,27 +119,44 @@
   auto task_runner = base::MakeRefCounted<base::TestMockTimeTaskRunner>();
   base::TestMockTimeTaskRunner::ScopedContext scoped_context(task_runner);
 
+  EXPECT_FALSE(PromoBubbleVisible());
+  EXPECT_FALSE(PromoHighlightVisible());
+
   ShowPromo();
 
   // The promo should hide after 5 seconds.
   EXPECT_TRUE(PromoBubbleVisible());
+  EXPECT_TRUE(PromoHighlightVisible());
   task_runner->FastForwardBy(base::TimeDelta::FromMilliseconds(4900));
   EXPECT_TRUE(PromoBubbleVisible());
+  EXPECT_TRUE(PromoHighlightVisible());
   task_runner->FastForwardBy(base::TimeDelta::FromMilliseconds(200));
   EXPECT_FALSE(PromoBubbleVisible());
+  EXPECT_FALSE(PromoHighlightVisible());
 }
 
+#if defined(OS_MACOSX)
+// TODO(https://crbug.com/998342): Fix this on Mac along with the
+// MediaDialogView tests.
+#define MAYBE_BubbleHidesIfTheMediaDialogIsOpened \
+  DISABLED_BubbleHidesIfTheMediaDialogIsOpened
+#else
+#define MAYBE_BubbleHidesIfTheMediaDialogIsOpened \
+  BubbleHidesIfTheMediaDialogIsOpened
+#endif
 IN_PROC_BROWSER_TEST_F(GlobalMediaControlsPromoControllerDialogBrowserTest,
-                       BubbleHidesIfTheMediaDialogIsOpened) {
+                       MAYBE_BubbleHidesIfTheMediaDialogIsOpened) {
   DisableBubbleTimeout();
   ShowPromo();
 
   EXPECT_TRUE(PromoBubbleVisible());
+  EXPECT_TRUE(PromoHighlightVisible());
 
   SimulateMediaDialogOpened();
   base::RunLoop().RunUntilIdle();
 
   EXPECT_FALSE(PromoBubbleVisible());
+  EXPECT_FALSE(PromoHighlightVisible());
 }
 
 IN_PROC_BROWSER_TEST_F(GlobalMediaControlsPromoControllerDialogBrowserTest,
@@ -112,9 +165,11 @@
   ShowPromo();
 
   EXPECT_TRUE(PromoBubbleVisible());
+  EXPECT_TRUE(PromoHighlightVisible());
 
   SimulateMediaToolbarButtonDisabledOrHidden();
   base::RunLoop().RunUntilIdle();
 
   EXPECT_FALSE(PromoBubbleVisible());
+  EXPECT_FALSE(PromoHighlightVisible());
 }
diff --git a/chrome/browser/ui/views/global_media_controls/media_toolbar_button_view.cc b/chrome/browser/ui/views/global_media_controls/media_toolbar_button_view.cc
index e5d0974..d0ca3e6 100644
--- a/chrome/browser/ui/views/global_media_controls/media_toolbar_button_view.cc
+++ b/chrome/browser/ui/views/global_media_controls/media_toolbar_button_view.cc
@@ -16,6 +16,7 @@
 #include "ui/base/theme_provider.h"
 #include "ui/gfx/paint_vector_icon.h"
 #include "ui/native_theme/native_theme.h"
+#include "ui/views/animation/ink_drop.h"
 #include "ui/views/controls/button/button_controller.h"
 
 MediaToolbarButtonView::MediaToolbarButtonView(
@@ -73,6 +74,12 @@
   InformIPHOfButtonDisabledorHidden();
 }
 
+SkColor MediaToolbarButtonView::GetInkDropBaseColor() const {
+  return is_promo_showing_ ? GetNativeTheme()->GetSystemColor(
+                                 ui::NativeTheme::kColorId_ProminentButtonColor)
+                           : ToolbarButton::GetInkDropBaseColor();
+}
+
 void MediaToolbarButtonView::UpdateIcon() {
   // TODO(https://crbug.com/973500): Use actual icon instead of this
   // placeholder.
@@ -95,6 +102,13 @@
 
 void MediaToolbarButtonView::ShowPromo() {
   GetPromoController().ShowPromo();
+  is_promo_showing_ = true;
+  GetInkDrop()->AnimateToState(views::InkDropState::ACTIVATED);
+}
+
+void MediaToolbarButtonView::OnPromoEnded() {
+  is_promo_showing_ = false;
+  GetInkDrop()->AnimateToState(views::InkDropState::HIDDEN);
 }
 
 GlobalMediaControlsPromoController&
diff --git a/chrome/browser/ui/views/global_media_controls/media_toolbar_button_view.h b/chrome/browser/ui/views/global_media_controls/media_toolbar_button_view.h
index e1c5cf6c..c847391 100644
--- a/chrome/browser/ui/views/global_media_controls/media_toolbar_button_view.h
+++ b/chrome/browser/ui/views/global_media_controls/media_toolbar_button_view.h
@@ -43,11 +43,21 @@
   // views::ButtonListener implementation.
   void ButtonPressed(views::Button* sender, const ui::Event& event) override;
 
+  // views::InkDropHostView implementation.
+  SkColor GetInkDropBaseColor() const override;
+
   // Updates the icon image.
   void UpdateIcon();
 
   void ShowPromo();
 
+  // Called when the in-product help bubble has gone away.
+  void OnPromoEnded();
+
+  GlobalMediaControlsPromoController* GetPromoControllerForTesting() {
+    return &GetPromoController();
+  }
+
  private:
   // Lazily constructs |promo_controller_| if necessary.
   GlobalMediaControlsPromoController& GetPromoController();
@@ -64,6 +74,9 @@
   // Shows the in-product help bubble.
   std::unique_ptr<GlobalMediaControlsPromoController> promo_controller_;
 
+  // True if the in-product help bubble is currently showing.
+  bool is_promo_showing_ = false;
+
   service_manager::Connector* const connector_;
   MediaToolbarButtonController controller_;
   const Browser* const browser_;
diff --git a/chrome/browser/ui/views/location_bar/content_setting_image_view.cc b/chrome/browser/ui/views/location_bar/content_setting_image_view.cc
index 91c90fd..1229da5 100644
--- a/chrome/browser/ui/views/location_bar/content_setting_image_view.cc
+++ b/chrome/browser/ui/views/location_bar/content_setting_image_view.cc
@@ -51,6 +51,7 @@
     case ImageType::FRAMEBUST:
     case ImageType::CLIPBOARD_READ:
     case ImageType::SENSORS:
+    case ImageType::NOTIFICATIONS_QUIET_PROMPT:
       return base::nullopt;
 
     case ImageType::NUM_IMAGE_TYPES:
diff --git a/chrome/browser/ui/views/permission_bubble/permission_prompt_impl.cc b/chrome/browser/ui/views/permission_bubble/permission_prompt_impl.cc
index b1bdbf0..26822d35 100644
--- a/chrome/browser/ui/views/permission_bubble/permission_prompt_impl.cc
+++ b/chrome/browser/ui/views/permission_bubble/permission_prompt_impl.cc
@@ -10,11 +10,14 @@
 
 #include "base/strings/string16.h"
 #include "build/build_config.h"
+#include "chrome/browser/content_settings/chrome_content_settings_utils.h"
 #include "chrome/browser/permissions/permission_request.h"
+#include "chrome/browser/permissions/permission_request_manager.h"
 #include "chrome/browser/platform_util.h"
 #include "chrome/browser/ui/browser.h"
 #include "chrome/browser/ui/browser_dialogs.h"
 #include "chrome/browser/ui/browser_window.h"
+#include "chrome/browser/ui/tabs/tab_strip_model.h"
 #include "chrome/browser/ui/views/bubble_anchor_util_views.h"
 #include "chrome/browser/ui/views/chrome_layout_provider.h"
 #include "chrome/browser/ui/views/front_eliding_title_label.h"
@@ -229,13 +232,31 @@
 // PermissionPromptImpl
 
 PermissionPromptImpl::PermissionPromptImpl(Browser* browser, Delegate* delegate)
-    : browser_(browser), delegate_(delegate), bubble_delegate_(nullptr) {
-  Show();
+    : browser_(browser),
+      delegate_(delegate),
+      bubble_delegate_(nullptr),
+      web_contents_(browser->tab_strip_model()->GetActiveWebContents()) {
+  PermissionRequestManager* manager =
+      PermissionRequestManager::FromWebContents(web_contents_);
+
+  if (manager->ShouldShowQuietPermissionPrompt()) {
+    show_quiet_permission_prompt_ = true;
+    // Show the prompt as an indicator in the right side of the omnibox.
+    content_settings::UpdateLocationBarUiForWebContents(web_contents_);
+  } else {
+    Show();
+  }
 }
 
 PermissionPromptImpl::~PermissionPromptImpl() {
   if (bubble_delegate_)
     bubble_delegate_->CloseBubble();
+
+  if (show_quiet_permission_prompt_) {
+    // Update location bar to hide the permission prompt if it is shown as a
+    // quiet permission prompt.
+    content_settings::UpdateLocationBarUiForWebContents(web_contents_);
+  }
 }
 
 void PermissionPromptImpl::UpdateAnchorPosition() {
diff --git a/chrome/browser/ui/views/permission_bubble/permission_prompt_impl.h b/chrome/browser/ui/views/permission_bubble/permission_prompt_impl.h
index 6e66fa6..cc7650d 100644
--- a/chrome/browser/ui/views/permission_bubble/permission_prompt_impl.h
+++ b/chrome/browser/ui/views/permission_bubble/permission_prompt_impl.h
@@ -7,10 +7,15 @@
 
 #include "base/macros.h"
 #include "chrome/browser/ui/permission_bubble/permission_prompt.h"
+#include "content/public/browser/web_contents.h"
 
 class Browser;
 class PermissionsBubbleDialogDelegateView;
 
+// This object will create or trigger UI to reflect that a website is requesting
+// a permission. The UI is usually a popup dialog, but may instead be a location
+// bar icon (i.e. "quiet"). The UI lasts for the duration of this object's
+// lifetime.
 class PermissionPromptImpl : public PermissionPrompt {
  public:
   PermissionPromptImpl(Browser* browser, Delegate* delegate);
@@ -33,6 +38,8 @@
   Browser* const browser_;
   Delegate* const delegate_;
   PermissionsBubbleDialogDelegateView* bubble_delegate_;
+  content::WebContents* web_contents_ = nullptr;
+  bool show_quiet_permission_prompt_ = false;
 
   DISALLOW_COPY_AND_ASSIGN(PermissionPromptImpl);
 };
diff --git a/chrome/browser/ui/webui/chromeos/add_supervision/add_supervision_handler.cc b/chrome/browser/ui/webui/chromeos/add_supervision/add_supervision_handler.cc
index 334ce577..1e70235 100644
--- a/chrome/browser/ui/webui/chromeos/add_supervision/add_supervision_handler.cc
+++ b/chrome/browser/ui/webui/chromeos/add_supervision/add_supervision_handler.cc
@@ -19,11 +19,10 @@
 #include "chrome/browser/ui/webui/chromeos/add_supervision/add_supervision_handler_utils.h"
 #include "chrome/browser/ui/webui/chromeos/add_supervision/add_supervision_metrics_recorder.h"
 #include "chrome/services/app_service/public/cpp/app_registry_cache.h"
-#include "components/signin/public/base/signin_metrics.h"
 #include "components/signin/public/identity_manager/access_token_fetcher.h"
 #include "components/signin/public/identity_manager/access_token_info.h"
-#include "components/signin/public/identity_manager/accounts_mutator.h"
 #include "components/signin/public/identity_manager/identity_manager.h"
+#include "components/user_manager/user_manager.h"
 #include "content/public/browser/web_ui.h"
 #include "google_apis/gaia/gaia_constants.h"
 
@@ -94,12 +93,13 @@
 void AddSupervisionHandler::NotifySupervisionEnabled() {
   SupervisedUserService* service =
       SupervisedUserServiceFactory::GetForProfile(Profile::FromWebUI(web_ui_));
-
   service->set_signout_required_after_supervision_enabled();
-  identity_manager_->GetAccountsMutator()
-      ->InvalidateRefreshTokenForPrimaryAccount(
-          signin_metrics::SourceForRefreshTokenOperation::
-              kAddSupervision_SupervisionEnabled);
+
+  // Force full sign-in the next time the user is at the login screen.
+  // Gellerization can only be triggered by the primary user.
+  user_manager::UserManager* manager = user_manager::UserManager::Get();
+  manager->SaveForceOnlineSignin(manager->GetPrimaryUser()->GetAccountId(),
+                                 true /* force signin */);
 
   // Record UMA metric that user has completed Add Supervision process.
   AddSupervisionMetricsRecorder::GetInstance()->RecordAddSupervisionEnrollment(
diff --git a/chrome/browser/ui/webui/chromeos/login/oobe_ui.cc b/chrome/browser/ui/webui/chromeos/login/oobe_ui.cc
index c150c5c..3c7a9e6 100644
--- a/chrome/browser/ui/webui/chromeos/login/oobe_ui.cc
+++ b/chrome/browser/ui/webui/chromeos/login/oobe_ui.cc
@@ -615,7 +615,7 @@
 
   current_screen_ = new_screen;
   for (Observer& observer : observer_list_)
-    observer.OnCurrentScreenChanged(current_screen_, new_screen);
+    observer.OnCurrentScreenChanged(previous_screen_, new_screen);
 }
 
 bool OobeUI::IsScreenInitialized(OobeScreenId screen) {
diff --git a/chrome/browser/ui/webui/discards/DEPS b/chrome/browser/ui/webui/discards/DEPS
index bd0c3962..3e1844b 100644
--- a/chrome/browser/ui/webui/discards/DEPS
+++ b/chrome/browser/ui/webui/discards/DEPS
@@ -1,9 +1,4 @@
 specific_include_rules = {
-  # Tests need to include the graph implementation.
-  "webui_graph_dump_impl_unittest\.cc": [
-    "+chrome/browser/performance_manager/graph",
-    "+chrome/browser/performance_manager/performance_manager_clock.h",
-  ],
   # Until CallOnGraph is in the public interface, the impl needs GraphImpl
   "webui_graph_dump_impl\.cc": [
     "+chrome/browser/performance_manager/graph",
diff --git a/chrome/browser/ui/webui/discards/webui_graph_dump_impl_unittest.cc b/chrome/browser/ui/webui/discards/webui_graph_dump_impl_unittest.cc
index 9b9330f..e524123 100644
--- a/chrome/browser/ui/webui/discards/webui_graph_dump_impl_unittest.cc
+++ b/chrome/browser/ui/webui/discards/webui_graph_dump_impl_unittest.cc
@@ -11,8 +11,8 @@
 #include "base/stl_util.h"
 #include "base/test/bind_test_util.h"
 #include "base/time/time.h"
-#include "chrome/browser/performance_manager/graph/mock_graphs.h"
-#include "chrome/browser/performance_manager/graph/page_node_impl.h"
+#include "chrome/browser/performance_manager/test_support/graph_impl.h"
+#include "chrome/browser/performance_manager/test_support/mock_graphs.h"
 #include "content/public/test/browser_task_environment.h"
 #include "mojo/public/cpp/bindings/interface_request.h"
 #include "testing/gtest/include/gtest/gtest.h"
diff --git a/chrome/browser/vr/testapp/vr_testapp.cc b/chrome/browser/vr/testapp/vr_testapp.cc
index 89bb888..f4929f5 100644
--- a/chrome/browser/vr/testapp/vr_testapp.cc
+++ b/chrome/browser/vr/testapp/vr_testapp.cc
@@ -148,6 +148,7 @@
   }
   void OnAcceleratedWidgetDestroyed() override { NOTREACHED(); }
   void OnActivationChanged(bool active) override {}
+  void OnMouseEnter() override {}
 
  private:
   // Since we pretend to have a GPU process, we should also pretend to
diff --git a/chrome/common/BUILD.gn b/chrome/common/BUILD.gn
index 9d6af9c..594a13bd 100644
--- a/chrome/common/BUILD.gn
+++ b/chrome/common/BUILD.gn
@@ -491,8 +491,15 @@
     ]
   }
 
-  if (enable_widevine && enable_library_cdms) {
-    deps += [ "//third_party/widevine/cdm:headers" ]
+  if (enable_library_cdms) {
+    sources += [
+      "media/cdm_manifest.cc",
+      "media/cdm_manifest.h",
+    ]
+    if (enable_widevine) {
+      # Needed by chrome_content_client.cc.
+      deps += [ "//third_party/widevine/cdm:headers" ]
+    }
   }
 
   if (safe_browsing_mode != 0) {
diff --git a/chrome/common/chrome_features.cc b/chrome/common/chrome_features.cc
index f9c3641..ba64f7d 100644
--- a/chrome/common/chrome_features.cc
+++ b/chrome/common/chrome_features.cc
@@ -581,11 +581,9 @@
 const base::Feature kPushMessagingBackgroundMode{
     "PushMessagingBackgroundMode", base::FEATURE_DISABLED_BY_DEFAULT};
 
-#if defined(OS_ANDROID)
 // Enables using quiet prompts for notification permission requests.
 const base::Feature kQuietNotificationPrompts{
     "QuietNotificationPrompts", base::FEATURE_DISABLED_BY_DEFAULT};
-#endif  // defined(OS_ANDROID)
 
 #if defined(OS_CHROMEOS)
 // Enables permanent removal of Legacy Supervised Users on startup.
@@ -847,4 +845,10 @@
 const base::Feature kWriteBasicSystemProfileToPersistentHistogramsFile{
     "WriteBasicSystemProfileToPersistentHistogramsFile",
     base::FEATURE_ENABLED_BY_DEFAULT};
+
+// Enables improvements to the chrome://accessibility page.
+const base::Feature kAccessibilityInternalsPageImprovements{
+    "AccessibilityInternalsPageImprovements",
+    base::FEATURE_DISABLED_BY_DEFAULT};
+
 }  // namespace features
diff --git a/chrome/common/chrome_features.h b/chrome/common/chrome_features.h
index 9ba711d..97c62fb 100644
--- a/chrome/common/chrome_features.h
+++ b/chrome/common/chrome_features.h
@@ -375,10 +375,8 @@
 COMPONENT_EXPORT(CHROME_FEATURES)
 extern const base::Feature kPushMessagingBackgroundMode;
 
-#if defined(OS_ANDROID)
 COMPONENT_EXPORT(CHROME_FEATURES)
 extern const base::Feature kQuietNotificationPrompts;
-#endif  // defined(OS_ANDROID)
 
 #if defined(OS_CHROMEOS)
 COMPONENT_EXPORT(CHROME_FEATURES)
@@ -528,6 +526,9 @@
 COMPONENT_EXPORT(CHROME_FEATURES)
 extern const base::Feature kWriteBasicSystemProfileToPersistentHistogramsFile;
 
+COMPONENT_EXPORT(CHROME_FEATURES)
+extern const base::Feature kAccessibilityInternalsPageImprovements;
+
 bool PrefServiceEnabled();
 
 // DON'T ADD RANDOM STUFF HERE. Put it in the main section above in
diff --git a/chrome/common/media/cdm_manifest.cc b/chrome/common/media/cdm_manifest.cc
new file mode 100644
index 0000000..0661f16
--- /dev/null
+++ b/chrome/common/media/cdm_manifest.cc
@@ -0,0 +1,329 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/common/media/cdm_manifest.h"
+
+#include <stddef.h>
+#include <string>
+#include <vector>
+
+#include "base/containers/flat_set.h"
+#include "base/containers/span.h"
+#include "base/logging.h"
+#include "base/strings/string_number_conversions.h"
+#include "base/strings/string_piece.h"
+#include "base/strings/string_split.h"
+#include "base/values.h"
+#include "content/public/common/cdm_info.h"
+#include "media/base/content_decryption_module.h"
+#include "media/base/decrypt_config.h"
+#include "media/base/video_codecs.h"
+#include "media/cdm/cdm_proxy.h"
+#include "media/cdm/supported_cdm_versions.h"
+#include "media/media_buildflags.h"
+
+#if !BUILDFLAG(ENABLE_LIBRARY_CDMS)
+#error This file should only be compiled when library CDMs are enabled
+#endif
+
+namespace {
+
+// The CDM manifest includes several custom values, all beginning with "x-cdm-".
+// They are:
+//   x-cdm-module-versions
+//   x-cdm-interface-versions
+//   x-cdm-host-versions
+//   x-cdm-codecs
+//   x-cdm-persistent-license-support
+//   x-cdm-supported-encryption-schemes
+//   x-cdm-supported-cdm-proxy-protocols
+// What they represent is listed below. They should never have non-backwards
+// compatible changes. All values are strings. All values that are lists are
+// delimited by commas. No trailing commas. For example, "1,2,4".
+const char kCdmValueDelimiter[] = ",";
+
+// The following entries are required.
+//  Interface versions are lists of integers (e.g. "1" or "1,2,4").
+//  All match the interface versions from content_decryption_module.h that the
+//  CDM supports.
+//    Matches CDM_MODULE_VERSION.
+const char kCdmModuleVersionsName[] = "x-cdm-module-versions";
+//    Matches supported ContentDecryptionModule_* version(s).
+const char kCdmInterfaceVersionsName[] = "x-cdm-interface-versions";
+//    Matches supported Host_* version(s).
+const char kCdmHostVersionsName[] = "x-cdm-host-versions";
+//  The codecs list is a list of simple codec names (e.g. "vp8,vorbis").
+const char kCdmCodecsListName[] = "x-cdm-codecs";
+//  Whether persistent license is supported by the CDM: "true" or "false".
+const char kCdmPersistentLicenseSupportName[] =
+    "x-cdm-persistent-license-support";
+//  The list of supported encryption schemes (e.g. ["cenc","cbcs"]).
+const char kCdmSupportedEncryptionSchemesName[] =
+    "x-cdm-supported-encryption-schemes";
+//  The list of supported proxy protocols (e.g. ["intel"]).
+const char kCdmSupportedCdmProxyProtocolsName[] =
+    "x-cdm-supported-cdm-proxy-protocols";
+
+// The following strings are used to specify supported codecs in the
+// parameter |kCdmCodecsListName|.
+const char kCdmSupportedCodecVp8[] = "vp8";
+// Legacy VP9, which is equivalent to VP9 profile 0.
+// TODO(xhwang): Newer CDMs should support "vp09" below. Remove this after older
+// CDMs are obsolete.
+const char kCdmSupportedCodecLegacyVp9[] = "vp9.0";
+// Supports at least VP9 profile 0 and profile 2.
+const char kCdmSupportedCodecVp9[] = "vp09";
+const char kCdmSupportedCodecAv1[] = "av01";
+const char kCdmSupportedCodecAvc1[] = "avc1";
+
+// The following strings are used to specify supported encryption schemes in
+// the parameter |kCdmSupportedEncryptionSchemesName|.
+const char kCdmSupportedEncryptionSchemeCenc[] = "cenc";
+const char kCdmSupportedEncryptionSchemeCbcs[] = "cbcs";
+
+// The following string(s) are used to specify supported CdmProxy protocols in
+// the parameter |kCdmSupportedCdmProxyProtocolsName|.
+const char kCdmSupportedCdmProxyProtocolIntel[] = "intel";
+
+typedef bool (*VersionCheckFunc)(int version);
+
+// Returns whether the CDM's API version, as specified in the manifest by
+// |version_name|, is supported in this Chrome binary and not disabled at run
+// time by calling |version_check_func|. If the manifest entry contains multiple
+// values, each one is checked sequentially, and if any one is supported, this
+// function returns true. If all values in the manifest entry are not supported,
+// then return false.
+bool CheckForCompatibleVersion(const base::Value& manifest,
+                               const std::string version_name,
+                               VersionCheckFunc version_check_func) {
+  DCHECK(manifest.is_dict());
+
+  auto* version_string = manifest.FindStringKey(version_name);
+  if (!version_string) {
+    DVLOG(1) << "CDM manifest missing " << version_name;
+    return false;
+  }
+
+  DVLOG_IF(1, version_string->empty())
+      << "CDM manifest has empty " << version_name;
+
+  for (const base::StringPiece& ver_str :
+       base::SplitStringPiece(*version_string, kCdmValueDelimiter,
+                              base::TRIM_WHITESPACE, base::SPLIT_WANT_ALL)) {
+    int version = 0;
+    if (base::StringToInt(ver_str, &version) && version_check_func(version))
+      return true;
+  }
+
+  DVLOG(1) << "CDM manifest has no supported " << version_name << " in '"
+           << *version_string << "'";
+  return false;
+}
+
+// Returns true and updates |video_codecs| if the appropriate manifest entry is
+// valid. When VP9 is supported, sets |supports_vp9_profile2| if profile 2 is
+// supported. Older CDMs may only support profile 0. Returns false and does not
+// modify |video_codecs| if the manifest entry is incorrectly formatted.
+bool GetCodecs(const base::Value& manifest,
+               std::vector<media::VideoCodec>* video_codecs,
+               bool* supports_vp9_profile2) {
+  DCHECK(manifest.is_dict());
+  DCHECK(video_codecs);
+
+  const base::Value* value = manifest.FindKey(kCdmCodecsListName);
+  if (!value) {
+    DLOG(WARNING) << "CDM manifest is missing codecs.";
+    return true;
+  }
+
+  if (!value->is_string()) {
+    DLOG(ERROR) << "CDM manifest entry " << kCdmCodecsListName
+                << " is not a string.";
+    return false;
+  }
+
+  const std::string& codecs = value->GetString();
+  if (codecs.empty()) {
+    DLOG(WARNING) << "CDM manifest has empty codecs list.";
+    return true;
+  }
+
+  std::vector<media::VideoCodec> result;
+  const std::vector<base::StringPiece> supported_codecs =
+      base::SplitStringPiece(codecs, kCdmValueDelimiter, base::TRIM_WHITESPACE,
+                             base::SPLIT_WANT_NONEMPTY);
+
+  // Assuming VP9 profile 2 is not supported by default. Will only be set when
+  // kCdmSupportedCodecVp9 is available below.
+  *supports_vp9_profile2 = false;
+
+  for (const auto& codec : supported_codecs) {
+    if (codec == kCdmSupportedCodecVp8) {
+      result.push_back(media::VideoCodec::kCodecVP8);
+    } else if (codec == kCdmSupportedCodecLegacyVp9) {
+      result.push_back(media::VideoCodec::kCodecVP9);
+    } else if (codec == kCdmSupportedCodecVp9) {
+      result.push_back(media::VideoCodec::kCodecVP9);
+      *supports_vp9_profile2 = true;
+    } else if (codec == kCdmSupportedCodecAv1) {
+      result.push_back(media::VideoCodec::kCodecAV1);
+    } else if (codec == kCdmSupportedCodecAvc1) {
+      result.push_back(media::VideoCodec::kCodecH264);
+    }
+  }
+
+  video_codecs->swap(result);
+  return true;
+}
+
+// Returns true and updates |session_types| if the appropriate manifest entry is
+// valid. Returns false if the manifest entry is incorrectly formatted.
+bool GetSessionTypes(const base::Value& manifest,
+                     base::flat_set<media::CdmSessionType>* session_types) {
+  DCHECK(manifest.is_dict());
+  DCHECK(session_types);
+
+  bool is_persistent_license_supported = false;
+  const base::Value* value = manifest.FindKey(kCdmPersistentLicenseSupportName);
+  if (value) {
+    if (!value->is_bool())
+      return false;
+    is_persistent_license_supported = value->GetBool();
+  }
+
+  // Temporary session is always supported.
+  session_types->insert(media::CdmSessionType::kTemporary);
+
+  if (is_persistent_license_supported)
+    session_types->insert(media::CdmSessionType::kPersistentLicense);
+
+  return true;
+}
+
+// Returns true and updates |encryption_schemes| if the appropriate manifest
+// entry is valid. Returns false and does not modify |encryption_schemes| if the
+// manifest entry is incorrectly formatted. It is assumed that all CDMs support
+// 'cenc', so if the manifest entry is missing, the result will indicate support
+// for 'cenc' only. Incorrect types in the manifest entry will log the error and
+// fail. Unrecognized values will be reported but otherwise ignored.
+bool GetEncryptionSchemes(
+    const base::Value& manifest,
+    base::flat_set<media::EncryptionMode>* encryption_schemes) {
+  DCHECK(manifest.is_dict());
+  DCHECK(encryption_schemes);
+
+  const base::Value* value =
+      manifest.FindKey(kCdmSupportedEncryptionSchemesName);
+  if (!value) {
+    // No manifest entry found, so assume only 'cenc' supported for backwards
+    // compatibility.
+    encryption_schemes->insert(media::EncryptionMode::kCenc);
+    return true;
+  }
+
+  if (!value->is_list()) {
+    DLOG(ERROR) << "CDM manifest entry " << kCdmSupportedEncryptionSchemesName
+                << " is not a list.";
+    return false;
+  }
+
+  base::span<const base::Value> list = value->GetList();
+  base::flat_set<media::EncryptionMode> result;
+  for (const auto& item : list) {
+    if (!item.is_string()) {
+      DLOG(ERROR) << "Unrecognized item type in CDM manifest entry "
+                  << kCdmSupportedEncryptionSchemesName;
+      return false;
+    }
+
+    const std::string& scheme = item.GetString();
+    if (scheme == kCdmSupportedEncryptionSchemeCenc) {
+      result.insert(media::EncryptionMode::kCenc);
+    } else if (scheme == kCdmSupportedEncryptionSchemeCbcs) {
+      result.insert(media::EncryptionMode::kCbcs);
+    } else {
+      DLOG(WARNING) << "Unrecognized encryption scheme '" << scheme
+                    << "' in CDM manifest entry "
+                    << kCdmSupportedEncryptionSchemesName;
+    }
+  }
+
+  // As the manifest entry exists, it must specify at least one valid value.
+  if (result.empty())
+    return false;
+
+  encryption_schemes->swap(result);
+  return true;
+}
+
+// Returns true and updates |cdm_proxy_protocols| if the appropriate manifest
+// entry is valid. Returns false and does not modify |cdm_proxy_protocols| if
+// the manifest entry is incorrectly formatted. Incorrect types in the manifest
+// entry will log the error and fail. Unrecognized values will be reported but
+// otherwise ignored.
+bool GetCdmProxyProtocols(
+    const base::Value& manifest,
+    base::flat_set<media::CdmProxy::Protocol>* cdm_proxy_protocols) {
+  DCHECK(manifest.is_dict());
+  const auto* value = manifest.FindKey(kCdmSupportedCdmProxyProtocolsName);
+  if (!value)
+    return true;
+
+  if (!value->is_list()) {
+    DLOG(ERROR) << "CDM manifest entry " << kCdmSupportedCdmProxyProtocolsName
+                << " is not a list.";
+    return false;
+  }
+
+  base::span<const base::Value> list = value->GetList();
+  base::flat_set<media::CdmProxy::Protocol> result;
+  for (const auto& item : list) {
+    if (!item.is_string()) {
+      DLOG(ERROR) << "Unrecognized item type in CDM manifest entry "
+                  << kCdmSupportedCdmProxyProtocolsName;
+      return false;
+    }
+
+    const std::string& protocol = item.GetString();
+    if (protocol == kCdmSupportedCdmProxyProtocolIntel) {
+      result.insert(media::CdmProxy::Protocol::kIntel);
+    } else {
+      DLOG(WARNING) << "Unrecognized CdmProxy protocol '" << protocol
+                    << "' in CDM manifest entry "
+                    << kCdmSupportedCdmProxyProtocolsName;
+    }
+  }
+
+  cdm_proxy_protocols->swap(result);
+  return true;
+}
+
+}  // namespace
+
+bool IsCdmManifestCompatibleWithChrome(const base::Value& manifest) {
+  DCHECK(manifest.is_dict());
+
+  return CheckForCompatibleVersion(manifest, kCdmModuleVersionsName,
+                                   media::IsSupportedCdmModuleVersion) &&
+         CheckForCompatibleVersion(
+             manifest, kCdmInterfaceVersionsName,
+             media::IsSupportedAndEnabledCdmInterfaceVersion) &&
+         CheckForCompatibleVersion(manifest, kCdmHostVersionsName,
+                                   media::IsSupportedCdmHostVersion);
+}
+
+// Returns true if the entries in the manifest can be parsed correctly,
+// false otherwise. Updates |version| and |capability| with the values obtained
+// from the manifest, if they are provided. If this method returns false,
+// |version| and |capability| may or may not be updated.
+bool ParseCdmManifest(const base::Value& manifest,
+                      content::CdmCapability* capability) {
+  DCHECK(manifest.is_dict());
+
+  return GetCodecs(manifest, &capability->video_codecs,
+                   &capability->supports_vp9_profile2) &&
+         GetEncryptionSchemes(manifest, &capability->encryption_schemes) &&
+         GetSessionTypes(manifest, &capability->session_types) &&
+         GetCdmProxyProtocols(manifest, &capability->cdm_proxy_protocols);
+}
diff --git a/chrome/common/media/cdm_manifest.h b/chrome/common/media/cdm_manifest.h
new file mode 100644
index 0000000..e191d3e4
--- /dev/null
+++ b/chrome/common/media/cdm_manifest.h
@@ -0,0 +1,29 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CHROME_COMMON_MEDIA_CDM_MANIFEST_H_
+#define CHROME_COMMON_MEDIA_CDM_MANIFEST_H_
+
+namespace base {
+class Value;
+}
+
+namespace content {
+struct CdmCapability;
+}
+
+// Returns whether the CDM's API versions, as specified in the manifest, are
+// supported in this Chrome binary and not disabled at run time.
+// Checks the module API, CDM interface API, and Host API.
+// This should never fail except in rare cases where the component has not been
+// updated recently or the user downgrades Chrome.
+bool IsCdmManifestCompatibleWithChrome(const base::Value& manifest);
+
+// Extracts the necessary information from |manifest| and updates |capability|.
+// Returns true on success, false if there are errors in the manifest.
+// If this method returns false, |capability| may or may not be updated.
+bool ParseCdmManifest(const base::Value& manifest,
+                      content::CdmCapability* capability);
+
+#endif  // CHROME_COMMON_MEDIA_CDM_MANIFEST_H_
diff --git a/chrome/common/media/cdm_manifest_unittest.cc b/chrome/common/media/cdm_manifest_unittest.cc
new file mode 100644
index 0000000..24a0df1
--- /dev/null
+++ b/chrome/common/media/cdm_manifest_unittest.cc
@@ -0,0 +1,378 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/common/media/cdm_manifest.h"
+
+#include <stdint.h>
+#include <memory>
+#include <string>
+#include <vector>
+
+#include "base/stl_util.h"
+#include "base/strings/string_number_conversions.h"
+#include "base/strings/string_util.h"
+#include "base/values.h"
+#include "content/public/common/cdm_info.h"
+#include "media/cdm/api/content_decryption_module.h"
+#include "media/cdm/supported_cdm_versions.h"
+#include "testing/gtest/include/gtest/gtest.h"
+
+using content::CdmCapability;
+
+namespace {
+
+// These names must match what is used in cdm_manifest.cc.
+const char kCdmModuleVersionsName[] = "x-cdm-module-versions";
+const char kCdmInterfaceVersionsName[] = "x-cdm-interface-versions";
+const char kCdmHostVersionsName[] = "x-cdm-host-versions";
+const char kCdmCodecsListName[] = "x-cdm-codecs";
+const char kCdmPersistentLicenseSupportName[] =
+    "x-cdm-persistent-license-support";
+const char kCdmSupportedEncryptionSchemesName[] =
+    "x-cdm-supported-encryption-schemes";
+const char kCdmSupportedCdmProxyProtocolsName[] =
+    "x-cdm-supported-cdm-proxy-protocols";
+
+// Version checking does change over time. Deriving these values from constants
+// in the code to ensure they change when the CDM interface changes.
+// |kSupportedCdmInterfaceVersion| and |kSupportedCdmHostVersion| are the
+// minimum versions supported. There may be versions after them that are also
+// supported.
+constexpr int kSupportedCdmModuleVersion = CDM_MODULE_VERSION;
+constexpr int kSupportedCdmInterfaceVersion =
+    media::kSupportedCdmInterfaceVersions[0].version;
+static_assert(media::kSupportedCdmInterfaceVersions[0].enabled,
+              "kSupportedCdmInterfaceVersion is not enabled by default.");
+constexpr int kSupportedCdmHostVersion = media::kMinSupportedCdmHostVersion;
+
+// Make a string of the values from 0 up to and including |item|.
+std::string MakeStringList(int item) {
+  DCHECK_GT(item, 0);
+  std::vector<std::string> parts;
+  for (int i = 0; i <= item; ++i) {
+    parts.push_back(base::NumberToString(i));
+  }
+  return base::JoinString(parts, ",");
+}
+
+base::Value MakeListValue(const std::string& item) {
+  base::Value list(base::Value::Type::LIST);
+  list.GetList().push_back(base::Value(item));
+  return list;
+}
+
+base::Value MakeListValue(const std::string& item1, const std::string& item2) {
+  base::Value list(base::Value::Type::LIST);
+  list.GetList().push_back(base::Value(item1));
+  list.GetList().push_back(base::Value(item2));
+  return list;
+}
+
+// Create a default manifest with valid values for all entries.
+base::Value DefaultManifest() {
+  base::Value dict(base::Value::Type::DICTIONARY);
+  dict.SetStringKey(kCdmCodecsListName, "vp8,vp9.0,avc1");
+  dict.SetBoolKey(kCdmPersistentLicenseSupportName, true);
+  dict.SetKey(kCdmSupportedEncryptionSchemesName,
+              MakeListValue("cenc", "cbcs"));
+  dict.SetKey(kCdmSupportedCdmProxyProtocolsName, MakeListValue("intel"));
+
+  // The following are dependent on what the current code supports.
+  EXPECT_TRUE(media::IsSupportedCdmModuleVersion(kSupportedCdmModuleVersion));
+  EXPECT_TRUE(media::IsSupportedAndEnabledCdmInterfaceVersion(
+      kSupportedCdmInterfaceVersion));
+  EXPECT_TRUE(media::IsSupportedCdmHostVersion(kSupportedCdmHostVersion));
+  dict.SetStringKey(kCdmModuleVersionsName,
+                    base::NumberToString(kSupportedCdmModuleVersion));
+  dict.SetStringKey(kCdmInterfaceVersionsName,
+                    base::NumberToString(kSupportedCdmInterfaceVersion));
+  dict.SetStringKey(kCdmHostVersionsName,
+                    base::NumberToString(kSupportedCdmHostVersion));
+  return dict;
+}
+
+void CheckCodecs(const std::vector<media::VideoCodec>& actual,
+                 const std::vector<media::VideoCodec>& expected) {
+  EXPECT_EQ(expected.size(), actual.size());
+  for (const auto& codec : expected) {
+    EXPECT_TRUE(base::Contains(actual, codec));
+  }
+}
+
+}  // namespace
+
+TEST(CdmManifestTest, IsCompatibleWithChrome) {
+  base::Value manifest(DefaultManifest());
+  EXPECT_TRUE(IsCdmManifestCompatibleWithChrome(manifest));
+}
+
+TEST(CdmManifestTest, InCompatibleModuleVersion) {
+  const int kUnsupportedModuleVersion = 0;
+  EXPECT_FALSE(media::IsSupportedCdmModuleVersion(kUnsupportedModuleVersion));
+
+  auto manifest = DefaultManifest();
+  manifest.SetStringKey(kCdmModuleVersionsName,
+                        base::NumberToString(kUnsupportedModuleVersion));
+  EXPECT_FALSE(IsCdmManifestCompatibleWithChrome(std::move(manifest)));
+}
+
+TEST(CdmManifestTest, InCompatibleInterfaceVersion) {
+  const int kUnsupportedInterfaceVersion = kSupportedCdmInterfaceVersion - 1;
+  EXPECT_FALSE(media::IsSupportedAndEnabledCdmInterfaceVersion(
+      kUnsupportedInterfaceVersion));
+
+  auto manifest = DefaultManifest();
+  manifest.SetStringKey(kCdmInterfaceVersionsName,
+                        base::NumberToString(kUnsupportedInterfaceVersion));
+  EXPECT_FALSE(IsCdmManifestCompatibleWithChrome(std::move(manifest)));
+}
+
+TEST(CdmManifestTest, InCompatibleHostVersion) {
+  const int kUnsupportedHostVersion = kSupportedCdmHostVersion - 1;
+  EXPECT_FALSE(media::IsSupportedCdmHostVersion(kUnsupportedHostVersion));
+
+  auto manifest = DefaultManifest();
+  manifest.SetStringKey(kCdmHostVersionsName,
+                        base::NumberToString(kUnsupportedHostVersion));
+  EXPECT_FALSE(IsCdmManifestCompatibleWithChrome(std::move(manifest)));
+}
+
+TEST(CdmManifestTest, IsCompatibleWithMultipleValues) {
+  auto manifest = DefaultManifest();
+  manifest.SetStringKey(kCdmModuleVersionsName,
+                        MakeStringList(kSupportedCdmModuleVersion));
+  manifest.SetStringKey(kCdmInterfaceVersionsName,
+                        MakeStringList(kSupportedCdmInterfaceVersion));
+  manifest.SetStringKey(kCdmHostVersionsName,
+                        MakeStringList(kSupportedCdmHostVersion));
+  EXPECT_TRUE(IsCdmManifestCompatibleWithChrome(std::move(manifest)));
+}
+
+TEST(CdmManifestTest, ValidManifest) {
+  auto manifest = DefaultManifest();
+  CdmCapability capability;
+  EXPECT_TRUE(ParseCdmManifest(manifest, &capability));
+}
+
+TEST(CdmManifestTest, ManifestCodecs) {
+  auto manifest = DefaultManifest();
+
+  // Try each valid value individually.
+  {
+    CdmCapability capability;
+    manifest.SetStringKey(kCdmCodecsListName, "vp8");
+    EXPECT_TRUE(ParseCdmManifest(manifest, &capability));
+    CheckCodecs(capability.video_codecs, {media::VideoCodec::kCodecVP8});
+  }
+  {
+    CdmCapability capability;
+    manifest.SetStringKey(kCdmCodecsListName, "vp9.0");
+    EXPECT_TRUE(ParseCdmManifest(manifest, &capability));
+    CheckCodecs(capability.video_codecs, {media::VideoCodec::kCodecVP9});
+    EXPECT_FALSE(capability.supports_vp9_profile2);
+  }
+  {
+    CdmCapability capability;
+    manifest.SetStringKey(kCdmCodecsListName, "vp09");
+    EXPECT_TRUE(ParseCdmManifest(manifest, &capability));
+    CheckCodecs(capability.video_codecs, {media::VideoCodec::kCodecVP9});
+    EXPECT_TRUE(capability.supports_vp9_profile2);
+  }
+  {
+    CdmCapability capability;
+    manifest.SetStringKey(kCdmCodecsListName, "av01");
+    EXPECT_TRUE(ParseCdmManifest(manifest, &capability));
+    CheckCodecs(capability.video_codecs, {media::VideoCodec::kCodecAV1});
+  }
+  {
+    CdmCapability capability;
+    manifest.SetStringKey(kCdmCodecsListName, "avc1");
+    EXPECT_TRUE(ParseCdmManifest(manifest, &capability));
+    CheckCodecs(capability.video_codecs, {media::VideoCodec::kCodecH264});
+  }
+  {
+    // Try list of everything.
+    CdmCapability capability;
+    manifest.SetStringKey(kCdmCodecsListName, "vp8,vp9.0,vp09,av01,avc1");
+    EXPECT_TRUE(ParseCdmManifest(manifest, &capability));
+    // Note that kCodecVP9 is returned twice in the list.
+    CheckCodecs(capability.video_codecs,
+                {media::VideoCodec::kCodecVP8, media::VideoCodec::kCodecVP9,
+                 media::VideoCodec::kCodecVP9, media::VideoCodec::kCodecAV1,
+                 media::VideoCodec::kCodecH264});
+    EXPECT_TRUE(capability.supports_vp9_profile2);
+  }
+  {
+    // Note that invalid codec values are simply skipped.
+    CdmCapability capability;
+    manifest.SetStringKey(kCdmCodecsListName, "invalid,avc1");
+    EXPECT_TRUE(ParseCdmManifest(manifest, &capability));
+    CheckCodecs(capability.video_codecs, {media::VideoCodec::kCodecH264});
+  }
+  {
+    // Wrong types are an error.
+    CdmCapability capability;
+    manifest.SetBoolKey(kCdmCodecsListName, true);
+    EXPECT_FALSE(ParseCdmManifest(manifest, &capability));
+  }
+  {
+    // Missing entry is OK, but list is empty.
+    CdmCapability capability;
+    EXPECT_TRUE(manifest.RemoveKey(kCdmCodecsListName));
+    EXPECT_TRUE(ParseCdmManifest(manifest, &capability));
+    CheckCodecs(capability.video_codecs, {});
+  }
+}
+
+TEST(CdmManifestTest, ManifestEncryptionSchemes) {
+  auto manifest = DefaultManifest();
+
+  // Try each valid value individually.
+  {
+    CdmCapability capability;
+    manifest.SetKey(kCdmSupportedEncryptionSchemesName, MakeListValue("cenc"));
+    EXPECT_TRUE(ParseCdmManifest(manifest, &capability));
+    EXPECT_EQ(capability.encryption_schemes.size(), 1u);
+    EXPECT_TRUE(base::Contains(capability.encryption_schemes,
+                               media::EncryptionMode::kCenc));
+    EXPECT_FALSE(base::Contains(capability.encryption_schemes,
+                                media::EncryptionMode::kCbcs));
+  }
+  {
+    CdmCapability capability;
+    manifest.SetKey(kCdmSupportedEncryptionSchemesName, MakeListValue("cbcs"));
+    EXPECT_TRUE(ParseCdmManifest(manifest, &capability));
+    EXPECT_EQ(capability.encryption_schemes.size(), 1u);
+    EXPECT_FALSE(base::Contains(capability.encryption_schemes,
+                                media::EncryptionMode::kCenc));
+    EXPECT_TRUE(base::Contains(capability.encryption_schemes,
+                               media::EncryptionMode::kCbcs));
+  }
+  {
+    // Try multiple valid entries.
+    CdmCapability capability;
+    manifest.SetKey(kCdmSupportedEncryptionSchemesName,
+                    MakeListValue("cenc", "cbcs"));
+    EXPECT_TRUE(ParseCdmManifest(manifest, &capability));
+    EXPECT_EQ(capability.encryption_schemes.size(), 2u);
+    EXPECT_TRUE(base::Contains(capability.encryption_schemes,
+                               media::EncryptionMode::kCenc));
+    EXPECT_TRUE(base::Contains(capability.encryption_schemes,
+                               media::EncryptionMode::kCbcs));
+  }
+  {
+    // Invalid encryption schemes are ignored. However, if value specified then
+    // there must be at least 1 valid value.
+    CdmCapability capability;
+    manifest.SetKey(kCdmSupportedEncryptionSchemesName,
+                    MakeListValue("invalid"));
+    EXPECT_FALSE(ParseCdmManifest(manifest, &capability));
+  }
+  {
+    CdmCapability capability;
+    manifest.SetKey(kCdmSupportedEncryptionSchemesName,
+                    MakeListValue("invalid", "cenc"));
+    EXPECT_TRUE(ParseCdmManifest(manifest, &capability));
+    EXPECT_TRUE(base::Contains(capability.encryption_schemes,
+                               media::EncryptionMode::kCenc));
+    EXPECT_FALSE(base::Contains(capability.encryption_schemes,
+                                media::EncryptionMode::kCbcs));
+  }
+  {
+    // Wrong types are an error.
+    CdmCapability capability;
+    manifest.SetBoolKey(kCdmSupportedEncryptionSchemesName, true);
+    EXPECT_FALSE(ParseCdmManifest(manifest, &capability));
+  }
+  {
+    // Missing values default to "cenc".
+    CdmCapability capability;
+    EXPECT_TRUE(manifest.RemoveKey(kCdmSupportedEncryptionSchemesName));
+    EXPECT_TRUE(ParseCdmManifest(manifest, &capability));
+    EXPECT_TRUE(base::Contains(capability.encryption_schemes,
+                               media::EncryptionMode::kCenc));
+    EXPECT_FALSE(base::Contains(capability.encryption_schemes,
+                                media::EncryptionMode::kCbcs));
+  }
+}
+
+TEST(CdmManifestTest, ManifestSessionTypes) {
+  auto manifest = DefaultManifest();
+
+  {
+    // Try false (persistent license not supported).
+    CdmCapability capability;
+    manifest.SetBoolKey(kCdmPersistentLicenseSupportName, false);
+    EXPECT_TRUE(ParseCdmManifest(manifest, &capability));
+    EXPECT_EQ(capability.session_types.size(), 1u);
+    EXPECT_TRUE(base::Contains(capability.session_types,
+                               media::CdmSessionType::kTemporary));
+    EXPECT_FALSE(base::Contains(capability.session_types,
+                                media::CdmSessionType::kPersistentLicense));
+  }
+  {
+    // Try true (persistent license is supported).
+    CdmCapability capability;
+    manifest.SetBoolKey(kCdmPersistentLicenseSupportName, true);
+    EXPECT_TRUE(ParseCdmManifest(manifest, &capability));
+    EXPECT_EQ(capability.session_types.size(), 2u);
+    EXPECT_TRUE(base::Contains(capability.session_types,
+                               media::CdmSessionType::kTemporary));
+    EXPECT_TRUE(base::Contains(capability.session_types,
+                               media::CdmSessionType::kPersistentLicense));
+  }
+  {
+    // Wrong types are an error.
+    CdmCapability capability;
+    manifest.SetStringKey(kCdmPersistentLicenseSupportName, "true");
+    EXPECT_FALSE(ParseCdmManifest(manifest, &capability));
+  }
+  {
+    // Missing values default to "temporary".
+    CdmCapability capability;
+    EXPECT_TRUE(manifest.RemoveKey(kCdmPersistentLicenseSupportName));
+    EXPECT_TRUE(ParseCdmManifest(manifest, &capability));
+    EXPECT_TRUE(base::Contains(capability.session_types,
+                               media::CdmSessionType::kTemporary));
+    EXPECT_FALSE(base::Contains(capability.session_types,
+                                media::CdmSessionType::kPersistentLicense));
+  }
+}
+
+TEST(CdmManifestTest, ManifestProxyProtocols) {
+  auto manifest = DefaultManifest();
+
+  {
+    // Try only supported value.
+    CdmCapability capability;
+    manifest.SetKey(kCdmSupportedCdmProxyProtocolsName, MakeListValue("intel"));
+    EXPECT_TRUE(ParseCdmManifest(manifest, &capability));
+    EXPECT_EQ(capability.cdm_proxy_protocols.size(), 1u);
+    EXPECT_TRUE(base::Contains(capability.cdm_proxy_protocols,
+                               media::CdmProxy::Protocol::kIntel));
+  }
+  {
+    // Unrecognized values are ignored.
+    CdmCapability capability;
+    manifest.SetKey(kCdmSupportedCdmProxyProtocolsName,
+                    MakeListValue("unknown", "intel"));
+    EXPECT_TRUE(ParseCdmManifest(manifest, &capability));
+    EXPECT_EQ(capability.cdm_proxy_protocols.size(), 1u);
+    EXPECT_TRUE(base::Contains(capability.cdm_proxy_protocols,
+                               media::CdmProxy::Protocol::kIntel));
+  }
+  {
+    // Wrong types are an error.
+    CdmCapability capability;
+    manifest.SetStringKey(kCdmSupportedCdmProxyProtocolsName, "intel");
+    EXPECT_FALSE(ParseCdmManifest(manifest, &capability));
+  }
+  {
+    // Missing values are OK.
+    CdmCapability capability;
+    EXPECT_TRUE(manifest.RemoveKey(kCdmSupportedCdmProxyProtocolsName));
+    EXPECT_TRUE(ParseCdmManifest(manifest, &capability));
+    EXPECT_EQ(capability.cdm_proxy_protocols.size(), 0u);
+  }
+}
diff --git a/chrome/installer/linux/debian/additional_deps b/chrome/installer/linux/debian/additional_deps
index d82cd8ad..cc6bfb3 100644
--- a/chrome/installer/linux/debian/additional_deps
+++ b/chrome/installer/linux/debian/additional_deps
@@ -17,9 +17,6 @@
 # security and stability updates in NSS.
 libnss3 (>= 3.26)
 
-# For lsb_release.
-lsb-release
-
 # For uploading crash reports with Breakpad.
 wget
 
diff --git a/chrome/installer/linux/rpm/additional_deps b/chrome/installer/linux/rpm/additional_deps
index 3211103..39af210 100644
--- a/chrome/installer/linux/rpm/additional_deps
+++ b/chrome/installer/linux/rpm/additional_deps
@@ -4,9 +4,6 @@
 #
 # Additional dependencies not in the rpm find-requires output.
 
-# For lsb_release.
-/usr/bin/lsb_release
-
 # Make sure users have SSL certificates.
 ca-certificates
 
diff --git a/chrome/test/BUILD.gn b/chrome/test/BUILD.gn
index 472cac83c..49bd6ed 100644
--- a/chrome/test/BUILD.gn
+++ b/chrome/test/BUILD.gn
@@ -162,6 +162,7 @@
 
     #"//chrome/app/theme:theme_resources",
     "//chrome/browser:test_support",
+    "//chrome/browser/performance_manager/test_support",
     "//chrome/child",
     "//chrome/common:test_support",
     "//chrome/renderer",
@@ -3057,10 +3058,6 @@
     "../browser/performance_manager/graph/graph_impl_operations_unittest.cc",
     "../browser/performance_manager/graph/graph_impl_unittest.cc",
     "../browser/performance_manager/graph/graph_operations_unittest.cc",
-    "../browser/performance_manager/graph/graph_test_harness.cc",
-    "../browser/performance_manager/graph/graph_test_harness.h",
-    "../browser/performance_manager/graph/mock_graphs.cc",
-    "../browser/performance_manager/graph/mock_graphs.h",
     "../browser/performance_manager/graph/node_attached_data_unittest.cc",
     "../browser/performance_manager/graph/node_base_unittest.cc",
     "../browser/performance_manager/graph/page_node_impl_unittest.cc",
@@ -3336,6 +3333,10 @@
     }
   }
 
+  if (enable_library_cdms) {
+    sources += [ "../common/media/cdm_manifest_unittest.cc" ]
+  }
+
   if (!is_android) {
     sources += [
       # CRLSets are not supported on Android or iOS, but available on all other
diff --git a/chrome/test/chromedriver/test/run_py_tests.py b/chrome/test/chromedriver/test/run_py_tests.py
index 6cee4fa..cb7587f7 100755
--- a/chrome/test/chromedriver/test/run_py_tests.py
+++ b/chrome/test/chromedriver/test/run_py_tests.py
@@ -101,8 +101,6 @@
     'ChromeDownloadDirTest.testFileDownloadWithGetHeadless',
 ]
 _OS_SPECIFIC_FILTER['linux'] = [
-    # https://bugs.chromium.org/p/chromium/issues/detail?id=1000530
-    'ChromeDriverTest.testActionsMouseMove',
 ]
 _OS_SPECIFIC_FILTER['mac'] = [
     # https://bugs.chromium.org/p/chromedriver/issues/detail?id=1927
@@ -112,8 +110,6 @@
     'ChromeDownloadDirTest.testFileDownloadAfterTabHeadless',
     'ChromeDownloadDirTest.testFileDownloadWithClickHeadless',
     'ChromeDownloadDirTest.testFileDownloadWithGetHeadless',
-    # https://bugs.chromium.org/p/chromium/issues/detail?id=1000530
-    'ChromeDriverTest.testActionsMouseMove',
 ]
 
 _DESKTOP_NEGATIVE_FILTER = [
@@ -2963,11 +2959,19 @@
       self._driver.SetTimeouts({'implicit': 2000})
     self._driver.Load(self.GetHttpUrlForFile(
         '/chromedriver/cross_domain_iframe.html'))
+    frame = self._driver.FindElement('tag name', 'iframe')
+    self._driver.SwitchToFrame(frame)
+    self.assertTrue(self.WaitForCondition(
+        lambda: 'outer.html' in
+                self._driver.ExecuteScript('return window.location.href')))
+    self.assertTrue(self.WaitForCondition(
+        lambda: 'complete' ==
+                self._driver.ExecuteScript('return document.readyState')))
+    self._driver.SwitchToMainFrame()
     a_outer = self._driver.FindElement('tag name', 'a')
     a_outer.Click()
     frame_url = self._driver.ExecuteScript('return window.location.href')
     self.assertTrue(frame_url.endswith('#one'))
-    frame = self._driver.FindElement('tag name', 'iframe')
     self._driver.SwitchToFrame(frame)
     a_inner = self._driver.FindElement('tag name', 'a')
     a_inner.Click()
diff --git a/chrome/test/data/extensions/api_test/automation/sites/ignored_nodes_not_returned.html b/chrome/test/data/extensions/api_test/automation/sites/ignored_nodes_not_returned.html
new file mode 100644
index 0000000..cb31653
--- /dev/null
+++ b/chrome/test/data/extensions/api_test/automation/sites/ignored_nodes_not_returned.html
@@ -0,0 +1,12 @@
+<!--
+ * Copyright 2019 The Chromium Authors. All rights reserved.  Use of this
+ * source code is governed by a BSD-style license that can be found in the
+ * LICENSE file.
+-->
+<html>
+  <body>
+    <div role="textbox" contenteditable>
+      This is a test<br role="presentation"> of a content editable.
+    </div>
+  </body>
+</html>
diff --git a/chrome/test/data/extensions/api_test/automation/tests/tabs/ignored_nodes_not_returned.html b/chrome/test/data/extensions/api_test/automation/tests/tabs/ignored_nodes_not_returned.html
new file mode 100644
index 0000000..69ddaad
--- /dev/null
+++ b/chrome/test/data/extensions/api_test/automation/tests/tabs/ignored_nodes_not_returned.html
@@ -0,0 +1,7 @@
+<!--
+ * Copyright 2019 The Chromium Authors. All rights reserved.  Use of this
+ * source code is governed by a BSD-style license that can be found in the
+ * LICENSE file.
+-->
+<script src="common.js"></script>
+<script src="ignored_nodes_not_returned.js"></script>
diff --git a/chrome/test/data/extensions/api_test/automation/tests/tabs/ignored_nodes_not_returned.js b/chrome/test/data/extensions/api_test/automation/tests/tabs/ignored_nodes_not_returned.js
new file mode 100644
index 0000000..2ef34a8d
--- /dev/null
+++ b/chrome/test/data/extensions/api_test/automation/tests/tabs/ignored_nodes_not_returned.js
@@ -0,0 +1,26 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+var allTests = [
+  function testIgnoredNodesNotReturned() {
+    var node = rootNode.find({role: chrome.automation.RoleType.STATIC_TEXT});
+    assertEq('This is a test', node.name);
+    assertEq(1, node.children.length);
+    assertEq(chrome.automation.RoleType.INLINE_TEXT_BOX, node.firstChild.role);
+    assertEq('This is a test', node.firstChild.name);
+
+    // The line break is ignored and should not show up.
+    assertEq(undefined, node.nextOnLine);
+    assertEq(undefined, node.firstChild.nextOnLine);
+
+    node = node.nextSibling;
+    assertEq('of a content editable.', node.name);
+    assertEq(1, node.children.length);
+    assertEq(chrome.automation.RoleType.INLINE_TEXT_BOX, node.firstChild.role);
+    assertEq('of a content editable.', node.firstChild.name);
+    chrome.test.succeed();
+  }
+];
+
+setUpAndRunTests(allTests, 'ignored_nodes_not_returned.html');
diff --git a/chrome/test/data/webui/BUILD.gn b/chrome/test/data/webui/BUILD.gn
index e7aca6a7..f56c620 100644
--- a/chrome/test/data/webui/BUILD.gn
+++ b/chrome/test/data/webui/BUILD.gn
@@ -172,6 +172,7 @@
     "$root_gen_dir/chrome/test/data/webui/cr_elements/cr_radio_group_test.m.js",
     "$root_gen_dir/chrome/test/data/webui/cr_elements/cr_search_field_tests.m.js",
     "$root_gen_dir/chrome/test/data/webui/cr_elements/cr_toast_test.m.js",
+    "$root_gen_dir/chrome/test/data/webui/cr_elements/cr_toolbar_search_field_tests.m.js",
     "$root_gen_dir/chrome/test/data/webui/cr_elements/cr_view_manager_test.m.js",
     "$root_gen_dir/chrome/test/data/webui/mock_timer.m.js",
     "$root_gen_dir/chrome/test/data/webui/test_browser_proxy.m.js",
diff --git a/chrome/test/data/webui/cr_elements/BUILD.gn b/chrome/test/data/webui/cr_elements/BUILD.gn
index 8843f7dd..246e5b6 100644
--- a/chrome/test/data/webui/cr_elements/BUILD.gn
+++ b/chrome/test/data/webui/cr_elements/BUILD.gn
@@ -19,12 +19,14 @@
     "cr_radio_button_test.js",
     "cr_radio_group_test.js",
     "cr_search_field_tests.js",
+    "cr_toolbar_search_field_tests.js",
     "cr_tabs_test.js",
     "cr_toast_test.js",
     "cr_toggle_test.js",
     "cr_view_manager_test.js",
   ]
   namespace_rewrites = [
+    "MockInteractions.blur|blur",
     "MockInteractions.downAndUp|downAndUp",
     "MockInteractions.keyDownOn|keyDownOn",
     "MockInteractions.keyEventOn|keyEventOn",
diff --git a/chrome/test/data/webui/cr_elements/cr_elements_browsertest.js b/chrome/test/data/webui/cr_elements/cr_elements_browsertest.js
index caca528d..35cf1f2 100644
--- a/chrome/test/data/webui/cr_elements/cr_elements_browsertest.js
+++ b/chrome/test/data/webui/cr_elements/cr_elements_browsertest.js
@@ -133,7 +133,6 @@
 };
 
 TEST_F('CrElementsToolbarSearchFieldTest', 'All', function() {
-  cr_toolbar_search_field.registerTests();
   mocha.run();
 });
 
diff --git a/chrome/test/data/webui/cr_elements/cr_elements_v3_browsertest.js b/chrome/test/data/webui/cr_elements/cr_elements_v3_browsertest.js
index 7d3289f..7251e3eb 100644
--- a/chrome/test/data/webui/cr_elements/cr_elements_v3_browsertest.js
+++ b/chrome/test/data/webui/cr_elements/cr_elements_v3_browsertest.js
@@ -164,6 +164,18 @@
 });
 
 // eslint-disable-next-line no-var
+var CrElementsToolbarSearchFieldV3Test = class extends CrElementsV3BrowserTest {
+  /** @override */
+  get browsePreload() {
+    return 'chrome://test?module=cr_elements/cr_toolbar_search_field_tests.m.js';
+  }
+};
+
+TEST_F('CrElementsToolbarSearchFieldV3Test', 'All', function() {
+  mocha.run();
+});
+
+// eslint-disable-next-line no-var
 var CrElementsViewManagerV3Test = class extends CrElementsV3BrowserTest {
   /** @override */
   get browsePreload() {
diff --git a/chrome/test/data/webui/cr_elements/cr_toolbar_search_field_tests.js b/chrome/test/data/webui/cr_elements/cr_toolbar_search_field_tests.js
index 2902dee..2d11201 100644
--- a/chrome/test/data/webui/cr_elements/cr_toolbar_search_field_tests.js
+++ b/chrome/test/data/webui/cr_elements/cr_toolbar_search_field_tests.js
@@ -2,235 +2,233 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+// clang-format off
+// #import 'chrome://resources/cr_elements/cr_toolbar/cr_toolbar_search_field.m.js';
+//
+// #import {flush} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
+// #import {blur, pressAndReleaseKeyOn, tap} from 'chrome://resources/polymer/v3_0/iron-test-helpers/mock-interactions.js';
+// clang-format on
+
 /** @fileoverview Suite of tests for cr-toolbar-search-field. */
-cr.define('cr_toolbar_search_field', function() {
-  function registerTests() {
-    suite('cr-toolbar-search-field', function() {
-      /** @type {?CrToolbarSearchFieldElement} */
-      let field = null;
+suite('cr-toolbar-search-field', function() {
+  /** @type {?CrToolbarSearchFieldElement} */
+  let field = null;
 
-      /** @type {?Array<string>} */
-      let searches = null;
+  /** @type {?Array<string>} */
+  let searches = null;
 
-      /** @param {string} term */
-      function simulateSearch(term) {
-        field.$.searchInput.value = term;
-        field.onSearchTermInput();
-        field.onSearchTermSearch();
-      }
-
-      setup(function() {
-        PolymerTest.clearBody();
-        field = document.createElement('cr-toolbar-search-field');
-        searches = [];
-        field.addEventListener('search-changed', function(event) {
-          searches.push(event.detail);
-        });
-        document.body.appendChild(field);
-      });
-
-      teardown(function() {
-        field.remove();
-        field = null;
-        searches = null;
-      });
-
-      // Test that no initial 'search-changed' event is fired during
-      // construction and initialization of the cr-toolbar-search-field element.
-      test('no initial search-changed event', function() {
-        let didFire = false;
-        const onSearchChanged = function() {
-          didFire = true;
-        };
-
-        // Need to attach listener event before the element is created, to catch
-        // the unnecessary initial event.
-        document.body.addEventListener('search-changed', onSearchChanged);
-        document.body.innerHTML =
-            '<cr-toolbar-search-field></cr-toolbar-search-field>';
-        // Remove event listener on |body| so that other tests are not affected.
-        document.body.removeEventListener('search-changed', onSearchChanged);
-
-        assertFalse(didFire, 'Should not have fired search-changed event');
-      });
-
-      test('opens and closes correctly', function() {
-        assertFalse(field.showingSearch);
-        field.click();
-        assertTrue(field.showingSearch);
-        assertEquals(field.$.searchInput, field.root.activeElement);
-
-        MockInteractions.blur(field.$.searchInput);
-        assertFalse(field.showingSearch);
-
-        field.click();
-        assertEquals(field.$.searchInput, field.root.activeElement);
-
-        MockInteractions.pressAndReleaseKeyOn(
-            field.$.searchInput, 27, '', 'Escape');
-        assertFalse(field.showingSearch, 'Pressing escape closes field.');
-        assertNotEquals(field.$.searchInput, field.root.activeElement);
-      });
-
-      test('clear search button clears and refocuses input', function() {
-        field.click();
-        simulateSearch('query1');
-        Polymer.dom.flush();
-        assertTrue(field.hasSearchText);
-
-        const clearSearch = field.$$('#clearSearch');
-        clearSearch.focus();
-        MockInteractions.tap(clearSearch);
-        assertTrue(field.showingSearch);
-        assertEquals('', field.getValue());
-        assertEquals(field.$.searchInput, field.root.activeElement);
-        assertFalse(field.hasSearchText);
-      });
-
-      test('notifies on new searches', function() {
-        field.click();
-        simulateSearch('query1');
-        Polymer.dom.flush();
-        assertEquals('query1', field.getValue());
-
-        MockInteractions.tap(field.$$('#clearSearch'));
-        assertTrue(field.showingSearch);
-        assertEquals('', field.getValue());
-
-        simulateSearch('query2');
-        // Expecting identical query to be ignored.
-        simulateSearch('query2');
-
-        assertDeepEquals(['query1', '', 'query2'], searches);
-      });
-
-      test('notifies on setValue', function() {
-        field.click();
-        field.setValue('foo');
-        field.setValue('');
-        field.setValue('bar');
-        // Expecting identical query to be ignored.
-        field.setValue('bar');
-        field.setValue('baz');
-        assertDeepEquals(['foo', '', 'bar', 'baz'], searches);
-      });
-
-      test('does not notify on setValue with noEvent=true', function() {
-        field.click();
-        field.setValue('foo', true);
-        field.setValue('bar');
-        field.setValue('baz', true);
-        assertDeepEquals(['bar'], searches);
-      });
-
-      test('treat consecutive whitespace as single space', function() {
-        field.click();
-        const query = 'foo        bar     baz';
-        simulateSearch(query);
-        Polymer.dom.flush();
-        assertEquals(query, field.getValue());
-
-        // Expecting effectively the same query to be ignored.
-        const effectivelySameQuery = 'foo   bar    baz';
-        simulateSearch(effectivelySameQuery);
-        Polymer.dom.flush();
-        assertEquals(effectivelySameQuery, field.getValue());
-
-        assertDeepEquals(['foo bar baz'], searches);
-      });
-
-      test('ignore leading whitespace', () => {
-        field.click();
-        const query = ' foo';
-        simulateSearch(query);
-        Polymer.dom.flush();
-        assertEquals(query, field.getValue());
-
-        // Expecting effectively the same query to be ignored.
-        const effectivelySameQuery = '     foo';
-        simulateSearch(effectivelySameQuery);
-        Polymer.dom.flush();
-        assertEquals(effectivelySameQuery, field.getValue());
-
-        assertDeepEquals(['foo'], searches);
-      });
-
-      test('when there is trailing whitespace, replace with one space', () => {
-        field.click();
-        const query = 'foo  ';
-        simulateSearch(query);
-        Polymer.dom.flush();
-        assertEquals(query, field.getValue());
-
-        // Expecting effectively the same query to be ignored.
-        const effectivelySameQuery = 'foo        ';
-        simulateSearch(effectivelySameQuery);
-        Polymer.dom.flush();
-        assertEquals(effectivelySameQuery, field.getValue());
-
-        assertDeepEquals(['foo '], searches);
-      });
-
-      // Tests that calling setValue() from within a 'search-changed' callback
-      // does not result in an infinite loop.
-      test('no infinite loop', function() {
-        let counter = 0;
-        field.addEventListener('search-changed', function(event) {
-          counter++;
-          // Calling setValue() with the already existing value should not
-          // trigger another 'search-changed' event.
-          field.setValue(event.detail);
-        });
-
-        field.click();
-        field.setValue('bar');
-        assertEquals(1, counter);
-        assertDeepEquals(['bar'], searches);
-      });
-
-      test('blur does not close field when a search is active', function() {
-        field.click();
-        simulateSearch('test');
-        MockInteractions.blur(field.$.searchInput);
-
-        assertTrue(field.showingSearch);
-      });
-
-      test('opens when value is changed', function() {
-        // Change search value without explicity opening the field first.
-        // Similar to what happens when pasting or dragging into the input
-        // field.
-        assertFalse(field.hasSearchText);
-        simulateSearch('test');
-        assertTrue(field.hasSearchText);
-        Polymer.dom.flush();
-
-        const clearSearch = field.$$('#clearSearch');
-        assertFalse(clearSearch.hidden);
-        assertTrue(field.showingSearch);
-      });
-
-      test('closes when value is cleared while unfocused', function() {
-        MockInteractions.focus(field.$.searchInput);
-        simulateSearch('test');
-        Polymer.dom.flush();
-
-        // Does not close the field if it is focused when cleared.
-        assertTrue(field.showingSearch);
-        field.setValue('');
-        assertTrue(field.showingSearch);
-
-        // Does close the field if it is blurred before being cleared.
-        simulateSearch('test');
-        MockInteractions.blur(field.$.searchInput);
-        field.setValue('');
-        assertFalse(field.showingSearch);
-      });
-
-    });
+  /** @param {string} term */
+  function simulateSearch(term) {
+    field.$.searchInput.value = term;
+    field.onSearchTermInput();
+    field.onSearchTermSearch();
   }
 
-  return {
-    registerTests: registerTests,
-  };
+  setup(function() {
+    PolymerTest.clearBody();
+    field = document.createElement('cr-toolbar-search-field');
+    searches = [];
+    field.addEventListener('search-changed', function(event) {
+      searches.push(event.detail);
+    });
+    document.body.appendChild(field);
+  });
+
+  teardown(function() {
+    field.remove();
+    field = null;
+    searches = null;
+  });
+
+  // Test that no initial 'search-changed' event is fired during
+  // construction and initialization of the cr-toolbar-search-field element.
+  test('no initial search-changed event', function() {
+    let didFire = false;
+    const onSearchChanged = function() {
+      didFire = true;
+    };
+
+    // Need to attach listener event before the element is created, to catch
+    // the unnecessary initial event.
+    document.body.addEventListener('search-changed', onSearchChanged);
+    document.body.innerHTML =
+        '<cr-toolbar-search-field></cr-toolbar-search-field>';
+    // Remove event listener on |body| so that other tests are not affected.
+    document.body.removeEventListener('search-changed', onSearchChanged);
+
+    assertFalse(didFire, 'Should not have fired search-changed event');
+  });
+
+  test('opens and closes correctly', function() {
+    assertFalse(field.showingSearch);
+    field.click();
+    assertTrue(field.showingSearch);
+    assertEquals(field.$.searchInput, field.root.activeElement);
+
+    MockInteractions.blur(field.$.searchInput);
+    assertFalse(field.showingSearch);
+
+    field.click();
+    assertEquals(field.$.searchInput, field.root.activeElement);
+
+    MockInteractions.pressAndReleaseKeyOn(
+        field.$.searchInput, 27, '', 'Escape');
+    assertFalse(field.showingSearch, 'Pressing escape closes field.');
+    assertNotEquals(field.$.searchInput, field.root.activeElement);
+  });
+
+  test('clear search button clears and refocuses input', function() {
+    field.click();
+    simulateSearch('query1');
+    Polymer.dom.flush();
+    assertTrue(field.hasSearchText);
+
+    const clearSearch = field.$$('#clearSearch');
+    clearSearch.focus();
+    MockInteractions.tap(clearSearch);
+    assertTrue(field.showingSearch);
+    assertEquals('', field.getValue());
+    assertEquals(field.$.searchInput, field.root.activeElement);
+    assertFalse(field.hasSearchText);
+  });
+
+  test('notifies on new searches', function() {
+    field.click();
+    simulateSearch('query1');
+    Polymer.dom.flush();
+    assertEquals('query1', field.getValue());
+
+    MockInteractions.tap(field.$$('#clearSearch'));
+    assertTrue(field.showingSearch);
+    assertEquals('', field.getValue());
+
+    simulateSearch('query2');
+    // Expecting identical query to be ignored.
+    simulateSearch('query2');
+
+    assertDeepEquals(['query1', '', 'query2'], searches);
+  });
+
+  test('notifies on setValue', function() {
+    field.click();
+    field.setValue('foo');
+    field.setValue('');
+    field.setValue('bar');
+    // Expecting identical query to be ignored.
+    field.setValue('bar');
+    field.setValue('baz');
+    assertDeepEquals(['foo', '', 'bar', 'baz'], searches);
+  });
+
+  test('does not notify on setValue with noEvent=true', function() {
+    field.click();
+    field.setValue('foo', true);
+    field.setValue('bar');
+    field.setValue('baz', true);
+    assertDeepEquals(['bar'], searches);
+  });
+
+  test('treat consecutive whitespace as single space', function() {
+    field.click();
+    const query = 'foo        bar     baz';
+    simulateSearch(query);
+    Polymer.dom.flush();
+    assertEquals(query, field.getValue());
+
+    // Expecting effectively the same query to be ignored.
+    const effectivelySameQuery = 'foo   bar    baz';
+    simulateSearch(effectivelySameQuery);
+    Polymer.dom.flush();
+    assertEquals(effectivelySameQuery, field.getValue());
+
+    assertDeepEquals(['foo bar baz'], searches);
+  });
+
+  test('ignore leading whitespace', () => {
+    field.click();
+    const query = ' foo';
+    simulateSearch(query);
+    Polymer.dom.flush();
+    assertEquals(query, field.getValue());
+
+    // Expecting effectively the same query to be ignored.
+    const effectivelySameQuery = '     foo';
+    simulateSearch(effectivelySameQuery);
+    Polymer.dom.flush();
+    assertEquals(effectivelySameQuery, field.getValue());
+
+    assertDeepEquals(['foo'], searches);
+  });
+
+  test('when there is trailing whitespace, replace with one space', () => {
+    field.click();
+    const query = 'foo  ';
+    simulateSearch(query);
+    Polymer.dom.flush();
+    assertEquals(query, field.getValue());
+
+    // Expecting effectively the same query to be ignored.
+    const effectivelySameQuery = 'foo        ';
+    simulateSearch(effectivelySameQuery);
+    Polymer.dom.flush();
+    assertEquals(effectivelySameQuery, field.getValue());
+
+    assertDeepEquals(['foo '], searches);
+  });
+
+  // Tests that calling setValue() from within a 'search-changed' callback
+  // does not result in an infinite loop.
+  test('no infinite loop', function() {
+    let counter = 0;
+    field.addEventListener('search-changed', function(event) {
+      counter++;
+      // Calling setValue() with the already existing value should not
+      // trigger another 'search-changed' event.
+      field.setValue(event.detail);
+    });
+
+    field.click();
+    field.setValue('bar');
+    assertEquals(1, counter);
+    assertDeepEquals(['bar'], searches);
+  });
+
+  test('blur does not close field when a search is active', function() {
+    field.click();
+    simulateSearch('test');
+    MockInteractions.blur(field.$.searchInput);
+
+    assertTrue(field.showingSearch);
+  });
+
+  test('opens when value is changed', function() {
+    // Change search value without explicitly opening the field first.
+    // Similar to what happens when pasting or dragging into the input
+    // field.
+    assertFalse(field.hasSearchText);
+    simulateSearch('test');
+    assertTrue(field.hasSearchText);
+    Polymer.dom.flush();
+
+    const clearSearch = field.$$('#clearSearch');
+    assertFalse(clearSearch.hidden);
+    assertTrue(field.showingSearch);
+  });
+
+  test('closes when value is cleared while unfocused', function() {
+    MockInteractions.focus(field.$.searchInput);
+    simulateSearch('test');
+    Polymer.dom.flush();
+
+    // Does not close the field if it is focused when cleared.
+    assertTrue(field.showingSearch);
+    field.setValue('');
+    assertTrue(field.showingSearch);
+
+    // Does close the field if it is blurred before being cleared.
+    simulateSearch('test');
+    MockInteractions.blur(field.$.searchInput);
+    field.setValue('');
+    assertFalse(field.showingSearch);
+  });
 });
diff --git a/chromecast/browser/cast_network_delegate.cc b/chromecast/browser/cast_network_delegate.cc
index e5d2cc1..8a66325dd 100644
--- a/chromecast/browser/cast_network_delegate.cc
+++ b/chromecast/browser/cast_network_delegate.cc
@@ -45,20 +45,6 @@
       gurl, session_id, render_process_id, render_frame_id, for_device_auth);
 }
 
-bool CastNetworkDelegate::OnCanAccessFile(
-    const net::URLRequest& request,
-    const base::FilePath& original_path,
-    const base::FilePath& absolute_path) const {
-  if (base::CommandLine::ForCurrentProcess()->
-      HasSwitch(switches::kEnableLocalFileAccesses)) {
-    return true;
-  }
-
-  LOG(WARNING) << "Could not access file " << original_path.value()
-               << ". All file accesses are forbidden.";
-  return false;
-}
-
 int CastNetworkDelegate::OnBeforeURLRequest(
     net::URLRequest* request,
     net::CompletionOnceCallback callback,
diff --git a/chromecast/browser/cast_network_delegate.h b/chromecast/browser/cast_network_delegate.h
index ef21880..094c685 100644
--- a/chromecast/browser/cast_network_delegate.h
+++ b/chromecast/browser/cast_network_delegate.h
@@ -35,9 +35,6 @@
 
  private:
   // net::NetworkDelegate implementation:
-  bool OnCanAccessFile(const net::URLRequest& request,
-                       const base::FilePath& original_path,
-                       const base::FilePath& absolute_path) const override;
   int OnBeforeURLRequest(net::URLRequest* request,
                          net::CompletionOnceCallback callback,
                          GURL* new_url) override;
diff --git a/chromeos/README.md b/chromeos/README.md
new file mode 100644
index 0000000..84816a7
--- /dev/null
+++ b/chromeos/README.md
@@ -0,0 +1,27 @@
+# Chrome OS
+
+This directory contains low-level support for Chrome running on Chrome OS. Many
+subdirectories contain Chrome-style C++ wrappers around operating system
+components.
+
+For example, //chromeos/dbus contains wrappers around the D-Bus interfaces to
+system daemons like the network configuration manager (shill). Most other
+directories contain low-level utility code. For example, //chromeos/disks has
+utilities for mounting and unmounting disk volumes.
+
+There are two exceptions:
+
+- //chromeos/services contains mojo services that were not considered
+  sufficiently general to live in top-level //services. For example
+  //chromeos/services/secure_channel bootstraps a secure communications channel
+  to an Android phone over Bluetooth, enabling multi-device features like
+  instant tethering.
+
+- //chromeos/components contains C++ components that were not considered
+  sufficiently general to live in top-level //components. For example,
+  //chromeos/components/account_manager manages the user's GAIA accounts, but
+  is used as the backend for UI that only exists on Chrome OS devices.
+
+Note, //chromeos does not contain any user-facing UI code, and hence it has
+"-ui" in its DEPS. The contents of //chromeos should also not depend on
+//chrome or //content.
diff --git a/chromeos/services/assistant/assistant_manager_service_impl.cc b/chromeos/services/assistant/assistant_manager_service_impl.cc
index ce4cae28..add6520 100644
--- a/chromeos/services/assistant/assistant_manager_service_impl.cc
+++ b/chromeos/services/assistant/assistant_manager_service_impl.cc
@@ -1045,15 +1045,6 @@
   std::move(post_init_callback).Run();
   assistant_settings_manager_->UpdateServerDeviceSettings();
 
-  if (is_first_init) {
-    is_first_init = false;
-    // Only sync status at the first init to prevent unexpected corner cases.
-    // This still does not handle browser restart.
-    if (service_->assistant_state()->hotword_enabled().value()) {
-      assistant_settings_manager_->SyncSpeakerIdEnrollmentStatus();
-    }
-  }
-
   if (base::FeatureList::IsEnabled(assistant::features::kAssistantAppSupport)) {
     mojom::AppListEventSubscriberPtr subscriber_ptr;
     app_list_subscriber_binding_.Bind(mojo::MakeRequest(&subscriber_ptr));
@@ -1119,6 +1110,13 @@
   // TODO(b/129896357): find a better place for additional setups.
   start_finished_ = true;
 
+  if (is_first_init) {
+    is_first_init = false;
+    // Only sync status at the first init to prevent unexpected corner cases.
+    if (service_->assistant_state()->hotword_enabled().value())
+      assistant_settings_manager_->SyncSpeakerIdEnrollmentStatus();
+  }
+
   RegisterFallbackMediaHandler();
   AddMediaControllerObserver();
 
diff --git a/chromeos/services/assistant/public/features.cc b/chromeos/services/assistant/public/features.cc
index 8f6c7e3..528c2c5d 100644
--- a/chromeos/services/assistant/public/features.cc
+++ b/chromeos/services/assistant/public/features.cc
@@ -32,6 +32,10 @@
 const base::FeatureParam<bool> kAssistantProactiveSuggestionsSuppressDuplicates{
     &kAssistantProactiveSuggestions, "suppress-duplicates", true};
 
+const base::FeatureParam<int>
+    kAssistantProactiveSuggestionsTimeoutThresholdMillis{
+        &kAssistantProactiveSuggestions, "timeout-threshold-millis", 15 * 1000};
+
 const base::Feature kAssistantRoutines{"AssistantRoutines",
                                        base::FEATURE_DISABLED_BY_DEFAULT};
 
@@ -77,6 +81,11 @@
   return kAssistantProactiveSuggestionsServerExperimentIds.Get();
 }
 
+base::TimeDelta GetProactiveSuggestionsTimeoutThreshold() {
+  return base::TimeDelta::FromMilliseconds(
+      kAssistantProactiveSuggestionsTimeoutThresholdMillis.Get());
+}
+
 bool IsAlarmTimerManagerEnabled() {
   return base::FeatureList::IsEnabled(kEnableAssistantAlarmTimerManager);
 }
diff --git a/chromeos/services/assistant/public/features.h b/chromeos/services/assistant/public/features.h
index 2266f4d..8e04c36e 100644
--- a/chromeos/services/assistant/public/features.h
+++ b/chromeos/services/assistant/public/features.h
@@ -10,6 +10,7 @@
 #include "base/component_export.h"
 #include "base/feature_list.h"
 #include "base/metrics/field_trial_params.h"
+#include "base/time/time.h"
 
 namespace chromeos {
 namespace assistant {
@@ -47,6 +48,11 @@
 extern const base::FeatureParam<bool>
     kAssistantProactiveSuggestionsSuppressDuplicates;
 
+// The timeout threshold (in milliseconds) for the proactive suggestions chip.
+COMPONENT_EXPORT(ASSISTANT_SERVICE_PUBLIC)
+extern const base::FeatureParam<int>
+    kAssistantProactiveSuggestionsTimeoutThresholdMillis;
+
 // Enables Assistant routines.
 COMPONENT_EXPORT(ASSISTANT_SERVICE_PUBLIC)
 extern const base::Feature kAssistantRoutines;
@@ -98,6 +104,9 @@
 COMPONENT_EXPORT(ASSISTANT_SERVICE_PUBLIC)
 std::string GetProactiveSuggestionsServerExperimentIds();
 
+COMPONENT_EXPORT(ASSISTANT_SERVICE_PUBLIC)
+base::TimeDelta GetProactiveSuggestionsTimeoutThreshold();
+
 COMPONENT_EXPORT(ASSISTANT_SERVICE_PUBLIC) bool IsAlarmTimerManagerEnabled();
 
 COMPONENT_EXPORT(ASSISTANT_SERVICE_PUBLIC) bool IsAppSupportEnabled();
diff --git a/components/arc/mojom/arc_bridge.mojom b/components/arc/mojom/arc_bridge.mojom
index c0a6a2d..26b97b9c 100644
--- a/components/arc/mojom/arc_bridge.mojom
+++ b/components/arc/mojom/arc_bridge.mojom
@@ -55,9 +55,9 @@
 import "components/arc/mojom/wake_lock.mojom";
 import "components/arc/mojom/wallpaper.mojom";
 
-// Next MinVersion: 48
+// Next MinVersion: 49
 // Deprecated method IDs: 101, 105
-// Next method ID: 153
+// Next method ID: 154
 interface ArcBridgeHost {
   // Keep the entries alphabetical. In order to do so without breaking
   // compatibility with the ARC instance, explicitly assign each interface a
@@ -190,6 +190,10 @@
   // Notifies Chrome that the ScreenCaptureInstance interface is ready.
   [MinVersion=35] OnScreenCaptureInstanceReady@140(ScreenCaptureInstance instance_ptr);
 
+  // Notifies Chrome that the SmartCardManagerInstance interface is ready.
+  [MinVersion=48] OnSmartCardManagerInstanceReady@153(
+      SmartCardManagerInstance instance_ptr);
+
   // Notifies Chrome that the StorageManagerInstance interface is ready.
   [MinVersion=12] OnStorageManagerInstanceReady@118(StorageManagerInstance instance_ptr);
 
diff --git a/components/arc/mojom/cert_store.mojom b/components/arc/mojom/cert_store.mojom
index eabf6b1..90f1d8c3 100644
--- a/components/arc/mojom/cert_store.mojom
+++ b/components/arc/mojom/cert_store.mojom
@@ -124,3 +124,15 @@
   // CertStoreInstance must call ListCertficates to update its database.
   OnCertificatesChanged@2();
 };
+
+// Next method ID: 1
+interface SmartCardManagerHost {
+  // Refreshes smart card certificates available to Android apps.
+  Refresh@0() => (bool result);
+};
+
+// Next method ID: 1
+interface SmartCardManagerInstance {
+  // Establishes full-duplex communication with the host.
+  Init@0(SmartCardManagerHost host_ptr) => ();
+};
diff --git a/components/arc/session/arc_bridge_host_impl.cc b/components/arc/session/arc_bridge_host_impl.cc
index 1dd5de9..5b21d7d0 100644
--- a/components/arc/session/arc_bridge_host_impl.cc
+++ b/components/arc/session/arc_bridge_host_impl.cc
@@ -293,6 +293,12 @@
                   std::move(screen_capture_ptr));
 }
 
+void ArcBridgeHostImpl::OnSmartCardManagerInstanceReady(
+    mojom::SmartCardManagerInstancePtr smart_card_manager_ptr) {
+  OnInstanceReady(arc_bridge_service_->smart_card_manager(),
+                  std::move(smart_card_manager_ptr));
+}
+
 void ArcBridgeHostImpl::OnStorageManagerInstanceReady(
     mojom::StorageManagerInstancePtr storage_manager_ptr) {
   OnInstanceReady(arc_bridge_service_->storage_manager(),
diff --git a/components/arc/session/arc_bridge_host_impl.h b/components/arc/session/arc_bridge_host_impl.h
index 901fb37..f18272b 100644
--- a/components/arc/session/arc_bridge_host_impl.h
+++ b/components/arc/session/arc_bridge_host_impl.h
@@ -99,6 +99,8 @@
       mojom::RotationLockInstancePtr rotation_lock_ptr) override;
   void OnScreenCaptureInstanceReady(
       mojom::ScreenCaptureInstancePtr screen_capture_ptr) override;
+  void OnSmartCardManagerInstanceReady(
+      mojom::SmartCardManagerInstancePtr smart_card_manager_ptr) override;
   void OnStorageManagerInstanceReady(
       mojom::StorageManagerInstancePtr storage_manager_ptr) override;
   void OnTimerInstanceReady(mojom::TimerInstancePtr timer_ptr) override;
diff --git a/components/arc/session/arc_bridge_service.h b/components/arc/session/arc_bridge_service.h
index cc0f132..1f4692840 100644
--- a/components/arc/session/arc_bridge_service.h
+++ b/components/arc/session/arc_bridge_service.h
@@ -82,6 +82,8 @@
 class RotationLockInstance;
 class ScreenCaptureHost;
 class ScreenCaptureInstance;
+class SmartCardManagerHost;
+class SmartCardManagerInstance;
 class StorageManagerInstance;
 class TimerHost;
 class TimerInstance;
@@ -230,6 +232,12 @@
   screen_capture() {
     return &screen_capture_;
   }
+  ConnectionHolder<mojom::SmartCardManagerInstance,
+                   mojom::SmartCardManagerHost>*
+  smart_card_manager() {
+    return &smart_card_manager_;
+  }
+
   ConnectionHolder<mojom::StorageManagerInstance>* storage_manager() {
     return &storage_manager_;
   }
@@ -308,6 +316,8 @@
   ConnectionHolder<mojom::RotationLockInstance> rotation_lock_;
   ConnectionHolder<mojom::ScreenCaptureInstance, mojom::ScreenCaptureHost>
       screen_capture_;
+  ConnectionHolder<mojom::SmartCardManagerInstance, mojom::SmartCardManagerHost>
+      smart_card_manager_;
   ConnectionHolder<mojom::StorageManagerInstance> storage_manager_;
   ConnectionHolder<mojom::TimerInstance, mojom::TimerHost> timer_;
   ConnectionHolder<mojom::TracingInstance> tracing_;
diff --git a/components/arc/test/fake_arc_bridge_host.cc b/components/arc/test/fake_arc_bridge_host.cc
index 034a076..c6fb880 100644
--- a/components/arc/test/fake_arc_bridge_host.cc
+++ b/components/arc/test/fake_arc_bridge_host.cc
@@ -174,6 +174,9 @@
 void FakeArcBridgeHost::OnScreenCaptureInstanceReady(
     mojom::ScreenCaptureInstancePtr screen_capture_ptr) {}
 
+void FakeArcBridgeHost::OnSmartCardManagerInstanceReady(
+    mojom::SmartCardManagerInstancePtr smart_cardManager_ptr) {}
+
 void FakeArcBridgeHost::OnStorageManagerInstanceReady(
     mojom::StorageManagerInstancePtr storage_manager_ptr) {}
 
diff --git a/components/arc/test/fake_arc_bridge_host.h b/components/arc/test/fake_arc_bridge_host.h
index 3e0fb49..e16087c 100644
--- a/components/arc/test/fake_arc_bridge_host.h
+++ b/components/arc/test/fake_arc_bridge_host.h
@@ -79,6 +79,8 @@
       mojom::RotationLockInstancePtr rotation_lock_ptr) override;
   void OnScreenCaptureInstanceReady(
       mojom::ScreenCaptureInstancePtr screen_capture_ptr) override;
+  void OnSmartCardManagerInstanceReady(
+      mojom::SmartCardManagerInstancePtr smart_card_manager_ptr) override;
   void OnStorageManagerInstanceReady(
       mojom::StorageManagerInstancePtr storage_manager_ptr) override;
   void OnTimerInstanceReady(mojom::TimerInstancePtr timer_ptr) override;
diff --git a/components/autofill/core/browser/autofill_download_manager.cc b/components/autofill/core/browser/autofill_download_manager.cc
index 45138300..aa462f2 100644
--- a/components/autofill/core/browser/autofill_download_manager.cc
+++ b/components/autofill/core/browser/autofill_download_manager.cc
@@ -16,6 +16,7 @@
 #include "base/metrics/field_trial_params.h"
 #include "base/metrics/histogram_functions.h"
 #include "base/metrics/histogram_macros.h"
+#include "base/numerics/ranges.h"
 #include "base/numerics/safe_conversions.h"
 #include "base/rand_util.h"
 #include "base/strings/strcat.h"
@@ -966,9 +967,9 @@
 int AutofillDownloadManager::GetMaxServerAttempts() {
   // This value is constant for the life of the browser, so we cache it
   // statically on first use to avoid re-parsing the param on each retry
-  // opportunity. The range is forced to be within [1, 20].
-  static int max_attempts =
-      std::max(1, std::min(20, kAutofillMaxServerAttempts.Get()));
+  // opportunity.
+  static const int max_attempts =
+      base::ClampToRange(kAutofillMaxServerAttempts.Get(), 1, 20);
   return max_attempts;
 }
 
diff --git a/components/autofill/ios/browser/autofill_driver_ios_webframe.h b/components/autofill/ios/browser/autofill_driver_ios_webframe.h
index 6e1c543..99e6f83f 100644
--- a/components/autofill/ios/browser/autofill_driver_ios_webframe.h
+++ b/components/autofill/ios/browser/autofill_driver_ios_webframe.h
@@ -7,7 +7,7 @@
 
 #include "components/autofill/ios/browser/autofill_driver_ios.h"
 #include "ios/web/public/js_messaging/web_frame_user_data.h"
-#include "ios/web/public/web_state/web_state_user_data.h"
+#import "ios/web/public/web_state_user_data.h"
 
 namespace web {
 class WebFrame;
diff --git a/components/autofill/ios/form_util/form_activity_tab_helper.h b/components/autofill/ios/form_util/form_activity_tab_helper.h
index dc40fa6..976a4634 100644
--- a/components/autofill/ios/form_util/form_activity_tab_helper.h
+++ b/components/autofill/ios/form_util/form_activity_tab_helper.h
@@ -8,8 +8,8 @@
 #include "base/macros.h"
 #include "base/observer_list.h"
 #include "base/values.h"
-#include "ios/web/public/web_state/web_state_observer.h"
-#import "ios/web/public/web_state/web_state_user_data.h"
+#include "ios/web/public/web_state_observer.h"
+#import "ios/web/public/web_state_user_data.h"
 
 namespace autofill {
 
diff --git a/components/autofill_assistant/browser/actions/show_progress_bar_action.cc b/components/autofill_assistant/browser/actions/show_progress_bar_action.cc
index 5a0ec99..45e05cf 100644
--- a/components/autofill_assistant/browser/actions/show_progress_bar_action.cc
+++ b/components/autofill_assistant/browser/actions/show_progress_bar_action.cc
@@ -4,12 +4,12 @@
 
 #include "components/autofill_assistant/browser/actions/show_progress_bar_action.h"
 
-#include <algorithm>
 #include <memory>
 #include <utility>
 
 #include "base/bind.h"
 #include "base/callback.h"
+#include "base/numerics/ranges.h"
 #include "components/autofill_assistant/browser/actions/action_delegate.h"
 
 namespace autofill_assistant {
@@ -28,7 +28,7 @@
     delegate_->SetStatusMessage(proto_.show_progress_bar().message());
   }
   int progress =
-      std::min(100, std::max(0, proto_.show_progress_bar().progress()));
+      base::ClampToRange(proto_.show_progress_bar().progress(), 0, 100);
   delegate_->SetProgress(progress);
   if (proto_.show_progress_bar().has_hide()) {
     delegate_->SetProgressVisible(!proto_.show_progress_bar().hide());
diff --git a/components/cronet/cronet_url_request_context.cc b/components/cronet/cronet_url_request_context.cc
index 280e35d..dc9ac638 100644
--- a/components/cronet/cronet_url_request_context.cc
+++ b/components/cronet/cronet_url_request_context.cc
@@ -124,12 +124,6 @@
     return false;
   }
 
-  bool OnCanAccessFile(const net::URLRequest& request,
-                       const base::FilePath& original_path,
-                       const base::FilePath& absolute_path) const override {
-    return false;
-  }
-
   DISALLOW_COPY_AND_ASSIGN(BasicNetworkDelegate);
 };
 
diff --git a/components/dom_distiller/ios/distiller_page_ios.h b/components/dom_distiller/ios/distiller_page_ios.h
index 74f5323..c7cfa77 100644
--- a/components/dom_distiller/ios/distiller_page_ios.h
+++ b/components/dom_distiller/ios/distiller_page_ios.h
@@ -5,14 +5,14 @@
 #ifndef COMPONENTS_DOM_DISTILLER_IOS_DISTILLER_PAGE_IOS_H_
 #define COMPONENTS_DOM_DISTILLER_IOS_DISTILLER_PAGE_IOS_H_
 
-#include <memory>
 #include <objc/objc.h>
+#include <memory>
 #include <string>
 
 #include "base/macros.h"
 #include "base/memory/weak_ptr.h"
 #include "components/dom_distiller/core/distiller_page.h"
-#include "ios/web/public/web_state/web_state_observer.h"
+#include "ios/web/public/web_state_observer.h"
 #include "url/gurl.h"
 
 namespace web {
diff --git a/components/dom_distiller/ios/distiller_page_ios.mm b/components/dom_distiller/ios/distiller_page_ios.mm
index 9f26183..1bc378f 100644
--- a/components/dom_distiller/ios/distiller_page_ios.mm
+++ b/components/dom_distiller/ios/distiller_page_ios.mm
@@ -22,7 +22,7 @@
 #import "ios/web/public/navigation/navigation_manager.h"
 #import "ios/web/public/navigation/web_state_policy_decider.h"
 #import "ios/web/public/web_state.h"
-#include "ios/web/public/web_state/web_state_observer.h"
+#include "ios/web/public/web_state_observer.h"
 
 #if !defined(__has_feature) || !__has_feature(objc_arc)
 #error "This file requires ARC support."
diff --git a/components/favicon/ios/web_favicon_driver.h b/components/favicon/ios/web_favicon_driver.h
index 8126752..9a06a975 100644
--- a/components/favicon/ios/web_favicon_driver.h
+++ b/components/favicon/ios/web_favicon_driver.h
@@ -8,8 +8,8 @@
 #include "base/macros.h"
 #include "components/favicon/core/favicon_driver_impl.h"
 #import "components/image_fetcher/ios/ios_image_data_fetcher_wrapper.h"
-#include "ios/web/public/web_state/web_state_observer.h"
-#include "ios/web/public/web_state/web_state_user_data.h"
+#include "ios/web/public/web_state_observer.h"
+#import "ios/web/public/web_state_user_data.h"
 
 namespace web {
 class WebState;
diff --git a/components/feed/core/user_classifier.cc b/components/feed/core/user_classifier.cc
index a8b3cdf..c306132 100644
--- a/components/feed/core/user_classifier.cc
+++ b/components/feed/core/user_classifier.cc
@@ -9,6 +9,7 @@
 #include <string>
 
 #include "base/metrics/histogram_macros.h"
+#include "base/numerics/ranges.h"
 #include "base/stl_util.h"
 #include "base/strings/string_number_conversions.h"
 #include "base/time/clock.h"
@@ -155,7 +156,7 @@
   //   discount_rate * estimate_hours = log(rate / (rate - 1)),
   //   estimate_hours = log(rate / (rate - 1)) / discount_rate.
   double estimate_hours = std::log(rate / (rate - 1)) / discount_rate_per_hour;
-  return std::max(min_hours, std::min(max_hours, estimate_hours));
+  return base::ClampToRange(estimate_hours, min_hours, max_hours);
 }
 
 // The inverse of GetEstimateHoursBetweenEvents().
@@ -164,7 +165,7 @@
                                             double min_hours,
                                             double max_hours) {
   // Keep the input value within [min_hours, max_hours].
-  estimate_hours = std::max(min_hours, std::min(max_hours, estimate_hours));
+  estimate_hours = base::ClampToRange(estimate_hours, min_hours, max_hours);
   // Return |rate| such that GetEstimateHoursBetweenEvents for |rate| returns
   // |estimate_hours|. Thus, solve |rate| in
   //   rate = 1 + e^{-discount_rate * estimate_hours} * rate,
diff --git a/components/history/ios/browser/web_state_top_sites_observer.h b/components/history/ios/browser/web_state_top_sites_observer.h
index a55f68a..743a8a60 100644
--- a/components/history/ios/browser/web_state_top_sites_observer.h
+++ b/components/history/ios/browser/web_state_top_sites_observer.h
@@ -6,8 +6,8 @@
 #define COMPONENTS_HISTORY_IOS_BROWSER_WEB_STATE_TOP_SITES_OBSERVER_H_
 
 #include "base/macros.h"
-#include "ios/web/public/web_state/web_state_observer.h"
-#include "ios/web/public/web_state/web_state_user_data.h"
+#include "ios/web/public/web_state_observer.h"
+#import "ios/web/public/web_state_user_data.h"
 
 namespace history {
 
diff --git a/components/language/ios/browser/ios_language_detection_tab_helper.h b/components/language/ios/browser/ios_language_detection_tab_helper.h
index e5653aab0..d9c82e2 100644
--- a/components/language/ios/browser/ios_language_detection_tab_helper.h
+++ b/components/language/ios/browser/ios_language_detection_tab_helper.h
@@ -8,7 +8,7 @@
 #include "base/callback.h"
 #include "base/macros.h"
 #include "base/observer_list.h"
-#include "ios/web/public/web_state/web_state_user_data.h"
+#import "ios/web/public/web_state_user_data.h"
 
 namespace translate {
 struct LanguageDetectionDetails;
diff --git a/components/module_installer/android/BUILD.gn b/components/module_installer/android/BUILD.gn
index a4654a4..e69502f 100644
--- a/components/module_installer/android/BUILD.gn
+++ b/components/module_installer/android/BUILD.gn
@@ -70,7 +70,6 @@
     "//third_party/android_deps:com_squareup_javapoet_java",
     "//third_party/auto:auto_service_java",
   ]
-  jacoco_never_instrument = true
 }
 
 # Use this one if your target needs to depend on ModuleInstallerConfig. The
diff --git a/components/nacl/browser/pnacl_host.cc b/components/nacl/browser/pnacl_host.cc
index 79f3615..344709b 100644
--- a/components/nacl/browser/pnacl_host.cc
+++ b/components/nacl/browser/pnacl_host.cc
@@ -158,9 +158,13 @@
 }
 
 // Initialize for testing, optionally using the in-memory backend, and manually
-// setting the temporary file directory instead of using the system directory.
+// setting the temporary file directory instead of using the system directory,
+// and re-initializing file task runner.
 void PnaclHost::InitForTest(base::FilePath temp_dir, bool in_memory) {
   DCHECK(thread_checker_.CalledOnValidThread());
+  file_task_runner_ =
+      base::CreateSequencedTaskRunner({base::ThreadPool(), base::MayBlock(),
+                                       base::TaskPriority::USER_VISIBLE});
   disk_cache_.reset(new PnaclTranslationCache());
   cache_state_ = CacheInitializing;
   temp_dir_ = temp_dir;
diff --git a/components/nacl/renderer/plugin/pnacl_coordinator.cc b/components/nacl/renderer/plugin/pnacl_coordinator.cc
index 6f16fff..17b93b1 100644
--- a/components/nacl/renderer/plugin/pnacl_coordinator.cc
+++ b/components/nacl/renderer/plugin/pnacl_coordinator.cc
@@ -9,6 +9,7 @@
 #include <utility>
 
 #include "base/logging.h"
+#include "base/numerics/ranges.h"
 #include "components/nacl/renderer/plugin/plugin.h"
 #include "components/nacl/renderer/plugin/plugin_error.h"
 #include "components/nacl/renderer/plugin/pnacl_translate_thread.h"
@@ -65,7 +66,7 @@
 
   nacl::PPBNaClPrivate::SetPNaClStartTime(plugin->pp_instance());
   int cpus = nacl::PPBNaClPrivate::GetNumberOfProcessors();
-  coordinator->num_threads_ = std::min(4, std::max(1, cpus));
+  coordinator->num_threads_ = base::ClampToRange(cpus, 1, 4);
   if (pnacl_options.use_subzero) {
     coordinator->split_module_count_ = 1;
   } else {
diff --git a/components/ntp_snippets/user_classifier.cc b/components/ntp_snippets/user_classifier.cc
index 873cb8f8..3a0e8f12 100644
--- a/components/ntp_snippets/user_classifier.cc
+++ b/components/ntp_snippets/user_classifier.cc
@@ -9,6 +9,7 @@
 #include <string>
 
 #include "base/metrics/histogram_macros.h"
+#include "base/numerics/ranges.h"
 #include "base/stl_util.h"
 #include "base/strings/string_number_conversions.h"
 #include "base/time/clock.h"
@@ -163,7 +164,7 @@
   //   estimate_hours = log(metric_value / (metric_value - 1)) / discount_rate.
   double estimate_hours =
       std::log(metric_value / (metric_value - 1)) / discount_rate_per_hour;
-  return std::max(min_hours, std::min(max_hours, estimate_hours));
+  return base::ClampToRange(estimate_hours, min_hours, max_hours);
 }
 
 // The inverse of GetEstimateHoursBetweenEvents().
@@ -172,8 +173,7 @@
     double discount_rate_per_hour,
     double min_hours,
     double max_hours) {
-  // Keep the input value within [min_hours, max_hours].
-  estimate_hours = std::max(min_hours, std::min(max_hours, estimate_hours));
+  estimate_hours = base::ClampToRange(estimate_hours, min_hours, max_hours);
   // Return |metric_value| such that GetEstimateHoursBetweenEvents for
   // |metric_value| returns |estimate_hours|. Thus, solve |metric_value| in
   //   metric_value = 1 + e^{-discount_rate * estimate_hours} * metric_value,
diff --git a/components/password_manager/core/browser/password_form_manager.cc b/components/password_manager/core/browser/password_form_manager.cc
index d7a846e..5cdc2e35 100644
--- a/components/password_manager/core/browser/password_form_manager.cc
+++ b/components/password_manager/core/browser/password_form_manager.cc
@@ -716,8 +716,6 @@
   if (!observed_password_form)
     return;
 
-  RecordMetricOnCompareParsingResult(*observed_password_form);
-
   if (observed_password_form->is_new_password_reliable && !IsBlacklisted()) {
 #if defined(OS_IOS)
     driver_->FormEligibleForGenerationFound(
@@ -811,44 +809,6 @@
   }
 }
 
-void PasswordFormManager::RecordMetricOnCompareParsingResult(
-    const PasswordForm& parsed_form) {
-  bool same =
-      parsed_form.username_element == old_parsing_result_.username_element &&
-      parsed_form.password_element == old_parsing_result_.password_element &&
-      parsed_form.new_password_element ==
-          old_parsing_result_.new_password_element &&
-      parsed_form.confirmation_password_element ==
-          old_parsing_result_.confirmation_password_element;
-  if (same) {
-    metrics_recorder_->RecordParsingsComparisonResult(
-        PasswordFormMetricsRecorder::ParsingComparisonResult::kSame);
-    return;
-  }
-
-  // In the old parsing for fields with empty name, placeholders are used. The
-  // reason for this is that an empty "..._element" attribute in a PasswordForm
-  // means that no corresponding input element exists. The new form parsing sets
-  // empty string in that case because renderer ids are used instead of element
-  // names for fields identification. Hence in case of anonymous fields, the
-  // results will be different for sure. Compare to placeholders and record this
-  // case.
-  if (old_parsing_result_.username_element ==
-          base::ASCIIToUTF16("anonymous_username") ||
-      old_parsing_result_.password_element ==
-          base::ASCIIToUTF16("anonymous_password") ||
-      old_parsing_result_.new_password_element ==
-          base::ASCIIToUTF16("anonymous_new_password") ||
-      old_parsing_result_.confirmation_password_element ==
-          base::ASCIIToUTF16("anonymous_confirmation_password")) {
-    metrics_recorder_->RecordParsingsComparisonResult(
-        PasswordFormMetricsRecorder::ParsingComparisonResult::kAnonymousFields);
-  } else {
-    metrics_recorder_->RecordParsingsComparisonResult(
-        PasswordFormMetricsRecorder::ParsingComparisonResult::kDifferent);
-  }
-}
-
 void PasswordFormManager::RecordMetricOnReadonly(
     FormDataParser::ReadonlyPasswordFields readonly_status,
     bool parsing_successful,
diff --git a/components/password_manager/core/browser/password_form_manager.h b/components/password_manager/core/browser/password_form_manager.h
index abe45b3..0451bcc 100644
--- a/components/password_manager/core/browser/password_form_manager.h
+++ b/components/password_manager/core/browser/password_form_manager.h
@@ -204,12 +204,6 @@
   FormSaver* form_saver() { return form_saver_.get(); }
 #endif
 
-  // TODO(https://crbug.com/831123): Remove it when the old form parsing is
-  // removed.
-  scoped_refptr<PasswordFormMetricsRecorder> metrics_recorder() {
-    return metrics_recorder_;
-  }
-
  protected:
   // Constructor for Credentials API.
   PasswordFormManager(PasswordManagerClient* client,
@@ -233,12 +227,6 @@
       scoped_refptr<PasswordFormMetricsRecorder> metrics_recorder,
       PasswordStore::FormDigest form_digest);
 
-  // Compares |parsed_form| with |old_parsing_result_| and records UKM metric.
-  // TODO(https://crbug.com/831123): Remove it when the old form parsing is
-  // removed.
-  void RecordMetricOnCompareParsingResult(
-      const autofill::PasswordForm& parsed_form);
-
   // Records the status of readonly fields during parsing, combined with the
   // overall success of the parsing. It reports through two different metrics,
   // depending on whether |mode| indicates parsing for saving or filling.
diff --git a/components/password_manager/core/browser/password_form_manager_unittest.cc b/components/password_manager/core/browser/password_form_manager_unittest.cc
index 50da5d4..3c017d7 100644
--- a/components/password_manager/core/browser/password_form_manager_unittest.cc
+++ b/components/password_manager/core/browser/password_form_manager_unittest.cc
@@ -1231,9 +1231,6 @@
   // Check that |form_fetcher| was cloned.
   EXPECT_NE(form_manager_->GetFormFetcher(), cloned_manager->GetFormFetcher());
 
-  EXPECT_EQ(form_manager_->metrics_recorder(),
-            cloned_manager->metrics_recorder());
-
   EXPECT_EQ(form_manager_->GetPendingCredentials(),
             cloned_manager->GetPendingCredentials());
   ASSERT_TRUE(cloned_manager->GetSubmittedForm());
diff --git a/components/password_manager/core/browser/password_form_metrics_recorder.cc b/components/password_manager/core/browser/password_form_metrics_recorder.cc
index a40e214..72d6018 100644
--- a/components/password_manager/core/browser/password_form_metrics_recorder.cc
+++ b/components/password_manager/core/browser/password_form_metrics_recorder.cc
@@ -448,17 +448,6 @@
       HashFormSignature(form_signature));
 }
 
-void PasswordFormMetricsRecorder::RecordParsingsComparisonResult(
-    ParsingComparisonResult comparison_result) {
-  ukm_entry_builder_.SetParsingComparison(
-      static_cast<uint64_t>(comparison_result));
-}
-
-void PasswordFormMetricsRecorder::RecordParsingOnSavingDifference(
-    uint64_t comparison_result) {
-  ukm_entry_builder_.SetParsingOnSavingDifference(comparison_result);
-}
-
 void PasswordFormMetricsRecorder::RecordReadonlyWhenFilling(uint64_t value) {
   ukm_entry_builder_.SetReadonlyWhenFilling(value);
 }
diff --git a/components/password_manager/core/browser/password_form_metrics_recorder.h b/components/password_manager/core/browser/password_form_metrics_recorder.h
index 4608e74..0e5498c 100644
--- a/components/password_manager/core/browser/password_form_metrics_recorder.h
+++ b/components/password_manager/core/browser/password_form_metrics_recorder.h
@@ -353,14 +353,6 @@
   // distinguish two forms on the same site.
   void RecordFormSignature(autofill::FormSignature form_signature);
 
-  // Records old and new form parsings comparison result.
-  void RecordParsingsComparisonResult(
-      ParsingComparisonResult comparison_result);
-
-  // Records the comparison of the old and new password form parsing for saving.
-  // |comparison_result| is a bitmask of values from ParsingOnSavingDifference.
-  void RecordParsingOnSavingDifference(uint64_t comparison_result);
-
   // Records the readonly status encoded with parsing success after parsing for
   // filling. The |value| is constructed as follows: The least significant bit
   // says whether parsing succeeded (1) or not (0). The rest, shifted by one
diff --git a/components/password_manager/core/browser/password_manager.cc b/components/password_manager/core/browser/password_manager.cc
index e392082..c2c9de7 100644
--- a/components/password_manager/core/browser/password_manager.cc
+++ b/components/password_manager/core/browser/password_manager.cc
@@ -643,12 +643,6 @@
   return matched_manager;
 }
 
-void PasswordManager::ReportSpecPriorityForGeneratedPassword(
-    const PasswordForm& password_form,
-    uint32_t spec_priority) {
-  // TODO(https://crbug.com/949519): remove Generation.SpecPriority metric.
-}
-
 void PasswordManager::LogFirstFillingResult(PasswordManagerDriver* driver,
                                             uint32_t form_renderer_id,
                                             int32_t result) {
@@ -1045,14 +1039,6 @@
   }
 }
 
-scoped_refptr<PasswordFormMetricsRecorder>
-PasswordManager::GetMetricRecorderFromPasswordFormManager(
-    const FormData& form,
-    const PasswordManagerDriver* driver) {
-  PasswordFormManager* matched_manager = GetMatchedManager(driver, form);
-  return matched_manager ? matched_manager->metrics_recorder() : nullptr;
-}
-
 // TODO(https://crbug.com/831123): Implement creating missing
 // PasswordFormManager when PasswordFormManager is gone.
 PasswordFormManagerInterface* PasswordManager::GetMatchedManager(
diff --git a/components/password_manager/core/browser/password_manager.h b/components/password_manager/core/browser/password_manager.h
index 882d9c6..28dbf3f 100644
--- a/components/password_manager/core/browser/password_manager.h
+++ b/components/password_manager/core/browser/password_manager.h
@@ -43,14 +43,12 @@
 class PasswordManagerDriver;
 class PasswordFormManagerForUI;
 class PasswordFormManagerInterface;
-class PasswordFormMetricsRecorder;
 class PasswordManagerMetricsRecorder;
 class PasswordFormManager;
 
 // Per-tab password manager. Handles creation and management of UI elements,
 // receiving password form data from the renderer and managing the password
-// database through the PasswordStore. The PasswordManager is a LoginModel
-// for purposes of supporting HTTP authentication dialogs.
+// database through the PasswordStore.
 class PasswordManager : public FormSubmissionObserver {
  public:
   static void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry);
@@ -87,16 +85,6 @@
       const base::string16& generation_element,
       bool is_manually_triggered);
 
-  // TODO(isherman): This should not be public, but is currently being used by
-  // the LoginPrompt code.
-  // When a form is submitted, we prepare to save the password but wait
-  // until we decide the user has successfully logged in. This is step 1
-  // of 2 (see SavePassword).
-  // |driver| is optional and if it's given it should be a driver that
-  // corresponds to a frame from which |form| comes from.
-  void ProvisionallySavePassword(const autofill::PasswordForm& form,
-                                 const PasswordManagerDriver* driver);
-
   // FormSubmissionObserver:
   void DidNavigateMainFrame(bool form_may_be_submitted) override;
 
@@ -173,13 +161,6 @@
 
 #endif  // defined(UNIT_TEST)
 
-  // Reports the priority of a PasswordGenerationRequirementsSpec for a
-  // generated password. See
-  // PasswordFormMetricsRecorder::ReportSpecPriorityForGeneratedPassword.
-  void ReportSpecPriorityForGeneratedPassword(
-      const autofill::PasswordForm& password_form,
-      uint32_t spec_priority);
-
   // Reports the success from the renderer's PasswordAutofillAgent to fill
   // credentials into a site. This may be called multiple times, but only
   // the first result will be recorded for each PasswordFormManager.
@@ -272,10 +253,6 @@
   // and the matched form manager has not recieved yet response from the
   // password store, then nullptr is returned. Returns manager which manages
   // |form|.
-  // |is_gaia_with_skip_save_password_form| is true iff this is Gaia form which
-  // should be skipped on saving.
-  // TODO(https://crbug.com/949519): move |is_gaia_with_skip_save_password_form|
-  // from PasswordForm to FormData, and remove it from arguments.
   PasswordFormManager* ProvisionallySaveForm(const autofill::FormData& form,
                                              PasswordManagerDriver* driver,
                                              bool is_manual_fallback);
@@ -299,10 +276,6 @@
       const GURL& form_origin,
       BrowserSavePasswordProgressLogger* logger);
 
-  scoped_refptr<PasswordFormMetricsRecorder>
-  GetMetricRecorderFromPasswordFormManager(const autofill::FormData& form,
-                                           const PasswordManagerDriver* driver);
-
   // Returns the manager which manages |form|. |driver| is needed to determine
   // the match. Returns nullptr when no matched manager is found.
   PasswordFormManagerInterface* GetMatchedManager(
diff --git a/components/policy/core/browser/configuration_policy_handler.cc b/components/policy/core/browser/configuration_policy_handler.cc
index 24e68a1..08923ed 100644
--- a/components/policy/core/browser/configuration_policy_handler.cc
+++ b/components/policy/core/browser/configuration_policy_handler.cc
@@ -16,6 +16,7 @@
 #include "base/macros.h"
 #include "base/metrics/histogram.h"
 #include "base/metrics/histogram_functions.h"
+#include "base/numerics/ranges.h"
 #include "base/strings/string16.h"
 #include "base/strings/string_number_conversions.h"
 #include "base/strings/string_util.h"
@@ -185,7 +186,7 @@
     if (!clamp_)
       return false;
 
-    value = std::min(std::max(value, min_), max_);
+    value = base::ClampToRange(value, min_, max_);
   }
 
   if (output)
diff --git a/components/policy/core/common/cloud/cloud_policy_client_unittest.cc b/components/policy/core/common/cloud/cloud_policy_client_unittest.cc
index cab3409..5ed845e 100644
--- a/components/policy/core/common/cloud/cloud_policy_client_unittest.cc
+++ b/components/policy/core/common/cloud/cloud_policy_client_unittest.cc
@@ -351,7 +351,7 @@
         .WillOnce(DoAll(service_.CaptureJobType(&job_type_),
                         service_.CaptureQueryParams(&query_params_),
                         service_.CaptureRequest(&job_request_),
-                        service_.StartJobOKSync(registration_response_)));
+                        service_.StartJobOKAsync(registration_response_)));
   }
 
   void ExpectReregistration(const std::string& oauth_token) {
@@ -359,7 +359,7 @@
         .WillOnce(DoAll(service_.CaptureJobType(&job_type_),
                         service_.CaptureQueryParams(&query_params_),
                         service_.CaptureRequest(&job_request_),
-                        service_.StartJobOKSync(registration_response_)));
+                        service_.StartJobOKAsync(registration_response_)));
   }
 
   void ExpectFailedReregistration(const std::string& oauth_token) {
@@ -368,7 +368,7 @@
             DoAll(service_.CaptureJobType(&job_type_),
                   service_.CaptureQueryParams(&query_params_),
                   service_.CaptureRequest(&job_request_),
-                  service_.StartJobSync(
+                  service_.StartJobAsync(
                       net::OK,
                       DeviceManagementService::kInvalidAuthCookieOrDMToken)));
   }
@@ -380,7 +380,7 @@
         .WillOnce(DoAll(service_.CaptureJobType(&job_type_),
                         service_.CaptureQueryParams(&query_params_),
                         service_.CaptureRequest(&job_request_),
-                        service_.StartJobOKSync(registration_response_)));
+                        service_.StartJobOKAsync(registration_response_)));
   }
 
   void ExpectEnrollmentTokenBasedRegistration() {
@@ -388,7 +388,7 @@
         .WillOnce(DoAll(service_.CaptureJobType(&job_type_),
                         service_.CaptureQueryParams(&query_params_),
                         service_.CaptureRequest(&job_request_),
-                        service_.StartJobOKSync(registration_response_)));
+                        service_.StartJobOKAsync(registration_response_)));
   }
 
   void ExpectPolicyFetch(const std::string& dm_token) {
@@ -396,7 +396,7 @@
         .WillOnce(DoAll(service_.CaptureJobType(&job_type_),
                         service_.CaptureQueryParams(&query_params_),
                         service_.CaptureRequest(&job_request_),
-                        service_.StartJobOKSync(policy_response_)));
+                        service_.StartJobOKAsync(policy_response_)));
   }
 
   void ExpectPolicyFetchWithAdditionalAuth(const std::string& dm_token,
@@ -405,7 +405,7 @@
         .WillOnce(DoAll(service_.CaptureJobType(&job_type_),
                         service_.CaptureQueryParams(&query_params_),
                         service_.CaptureRequest(&job_request_),
-                        service_.StartJobOKSync(policy_response_)));
+                        service_.StartJobOKAsync(policy_response_)));
   }
 
   void ExpectUnregistration(const std::string& dm_token) {
@@ -413,7 +413,7 @@
         .WillOnce(DoAll(service_.CaptureJobType(&job_type_),
                         service_.CaptureQueryParams(&query_params_),
                         service_.CaptureRequest(&job_request_),
-                        service_.StartJobOKSync(unregistration_response_)));
+                        service_.StartJobOKAsync(unregistration_response_)));
   }
 
   void ExpectUploadCertificate(const em::DeviceManagementRequest& request) {
@@ -627,6 +627,7 @@
   ExpectPolicyFetch(kDMToken);
   EXPECT_CALL(observer_, OnPolicyFetched(_));
   client_->FetchPolicy();
+  base::RunLoop().RunUntilIdle();
   EXPECT_EQ(DeviceManagementService::JobConfiguration::TYPE_POLICY_FETCH,
             job_type_);
   EXPECT_EQ(job_request_.SerializePartialAsString(),
@@ -648,6 +649,7 @@
   ExpectPolicyFetchWithAdditionalAuth(kDMToken, kOAuthToken);
   EXPECT_CALL(observer_, OnPolicyFetched(_));
   client_->FetchPolicy();
+  base::RunLoop().RunUntilIdle();
   EXPECT_EQ(DeviceManagementService::JobConfiguration::TYPE_POLICY_FETCH,
             job_type_);
   EXPECT_EQ(job_request_.SerializePartialAsString(),
@@ -664,6 +666,7 @@
   EXPECT_CALL(device_dmtoken_callback_observer_, OnDeviceDMTokenRequested(_))
       .WillOnce(Return(kDeviceDMToken));
   client_->RegisterWithToken(kEnrollmentToken, "device_id");
+  base::RunLoop().RunUntilIdle();
   EXPECT_EQ(DeviceManagementService::JobConfiguration::TYPE_TOKEN_ENROLLMENT,
             job_type_);
   EXPECT_EQ(job_request_.SerializePartialAsString(),
@@ -675,6 +678,7 @@
   ExpectPolicyFetch(kDMToken);
   EXPECT_CALL(observer_, OnPolicyFetched(_));
   client_->FetchPolicy();
+  base::RunLoop().RunUntilIdle();
   EXPECT_EQ(DeviceManagementService::JobConfiguration::TYPE_POLICY_FETCH,
             job_type_);
   EXPECT_EQ(job_request_.SerializePartialAsString(),
@@ -694,6 +698,7 @@
       em::DeviceRegisterRequest::FLAVOR_USER_REGISTRATION);
   client_->Register(register_user, std::string() /* no client_id*/,
                     kOAuthToken);
+  base::RunLoop().RunUntilIdle();
   EXPECT_EQ(DeviceManagementService::JobConfiguration::TYPE_REGISTRATION,
             job_type_);
   EXPECT_EQ(job_request_.SerializePartialAsString(),
@@ -705,6 +710,7 @@
   ExpectPolicyFetch(kDMToken);
   EXPECT_CALL(observer_, OnPolicyFetched(_));
   client_->FetchPolicy();
+  base::RunLoop().RunUntilIdle();
   EXPECT_EQ(DeviceManagementService::JobConfiguration::TYPE_POLICY_FETCH,
             job_type_);
   EXPECT_EQ(job_request_.SerializePartialAsString(),
@@ -724,6 +730,7 @@
   client_->Register(register_user, std::string() /* no client_id*/,
                     kOAuthToken);
   client_->SetOAuthTokenAsAdditionalAuth(kOAuthToken);
+  base::RunLoop().RunUntilIdle();
   EXPECT_EQ(DeviceManagementService::JobConfiguration::TYPE_REGISTRATION,
             job_type_);
   EXPECT_EQ(job_request_.SerializePartialAsString(),
@@ -735,6 +742,7 @@
   ExpectPolicyFetchWithAdditionalAuth(kDMToken, kOAuthToken);
   EXPECT_CALL(observer_, OnPolicyFetched(_));
   client_->FetchPolicy();
+  base::RunLoop().RunUntilIdle();
   EXPECT_EQ(DeviceManagementService::JobConfiguration::TYPE_POLICY_FETCH,
             job_type_);
   EXPECT_EQ(job_request_.SerializePartialAsString(),
@@ -753,6 +761,7 @@
   client_->RegisterWithCertificate(
       device_attestation, std::string() /* client_id */, DMAuth::NoAuth(),
       kEnrollmentCertificate, std::string() /* sub_organization */);
+  base::RunLoop().RunUntilIdle();
   EXPECT_EQ(
       DeviceManagementService::JobConfiguration::TYPE_CERT_BASED_REGISTRATION,
       job_type_);
@@ -765,6 +774,7 @@
   ExpectPolicyFetch(kDMToken);
   EXPECT_CALL(observer_, OnPolicyFetched(_));
   client_->FetchPolicy();
+  base::RunLoop().RunUntilIdle();
   EXPECT_EQ(DeviceManagementService::JobConfiguration::TYPE_POLICY_FETCH,
             job_type_);
   EXPECT_EQ(job_request_.SerializePartialAsString(),
@@ -807,6 +817,7 @@
 
   client_->Register(register_parameters, kClientID, kOAuthToken);
 
+  base::RunLoop().RunUntilIdle();
   EXPECT_EQ(DeviceManagementService::JobConfiguration::TYPE_REGISTRATION,
             job_type_);
   EXPECT_EQ(job_request_.SerializePartialAsString(),
@@ -824,6 +835,7 @@
       em::DeviceRegisterRequest::FLAVOR_USER_REGISTRATION);
   client_->Register(register_user, std::string() /* no client_id*/,
                     kOAuthToken);
+  base::RunLoop().RunUntilIdle();
   EXPECT_EQ(DeviceManagementService::JobConfiguration::TYPE_REGISTRATION,
             job_type_);
   EXPECT_EQ(job_request_.SerializePartialAsString(),
@@ -838,14 +850,15 @@
   EXPECT_CALL(service_, StartJob(_))
       .WillOnce(DoAll(
           service_.CaptureJobType(&job_type),
-          service_.StartJobSync(net::ERR_FAILED,
-                                DeviceManagementService::kInvalidArgument)));
+          service_.StartJobAsync(net::ERR_FAILED,
+                                 DeviceManagementService::kInvalidArgument)));
   EXPECT_CALL(observer_, OnClientError(_));
   CloudPolicyClient::RegistrationParameters register_user(
       em::DeviceRegisterRequest::USER,
       em::DeviceRegisterRequest::FLAVOR_USER_REGISTRATION);
   client_->Register(register_user, std::string() /* no client_id*/,
                     kOAuthToken);
+  base::RunLoop().RunUntilIdle();
   EXPECT_EQ(DeviceManagementService::JobConfiguration::TYPE_REGISTRATION,
             job_type);
   EXPECT_FALSE(client_->is_registered());
@@ -904,6 +917,7 @@
   ExpectPolicyFetch(kDMToken);
   EXPECT_CALL(observer_, OnPolicyFetched(_));
   client_->FetchPolicy();
+  base::RunLoop().RunUntilIdle();
   EXPECT_EQ(DeviceManagementService::JobConfiguration::TYPE_POLICY_FETCH,
             job_type_);
   EXPECT_EQ(job_request_.SerializePartialAsString(),
@@ -916,6 +930,7 @@
   ExpectPolicyFetch(kDMToken);
   EXPECT_CALL(observer_, OnPolicyFetched(_));
   client_->FetchPolicy();
+  base::RunLoop().RunUntilIdle();
   EXPECT_EQ(DeviceManagementService::JobConfiguration::TYPE_POLICY_FETCH,
             job_type_);
   EXPECT_EQ(job_request_.SerializePartialAsString(),
@@ -939,6 +954,7 @@
   ExpectPolicyFetch(kDMToken);
   EXPECT_CALL(observer_, OnPolicyFetched(_));
   client_->FetchPolicy();
+  base::RunLoop().RunUntilIdle();
   EXPECT_EQ(DeviceManagementService::JobConfiguration::TYPE_POLICY_FETCH,
             job_type_);
   EXPECT_EQ(job_request_.SerializePartialAsString(),
@@ -960,6 +976,7 @@
   ExpectPolicyFetch(kDMToken);
   EXPECT_CALL(observer_, OnPolicyFetched(_));
   client_->FetchPolicy();
+  base::RunLoop().RunUntilIdle();
   EXPECT_EQ(DeviceManagementService::JobConfiguration::TYPE_POLICY_FETCH,
             job_type_);
   EXPECT_EQ(job_request_.SerializePartialAsString(),
@@ -978,6 +995,7 @@
   ExpectPolicyFetch(kDMToken);
   EXPECT_CALL(observer_, OnPolicyFetched(_));
   client_->FetchPolicy();
+  base::RunLoop().RunUntilIdle();
   EXPECT_EQ(DeviceManagementService::JobConfiguration::TYPE_POLICY_FETCH,
             job_type_);
   EXPECT_EQ(job_request_.SerializePartialAsString(),
@@ -995,6 +1013,7 @@
   EXPECT_CALL(observer_, OnPolicyFetched(_));
   client_->SetOAuthTokenAsAdditionalAuth(kOAuthToken);
   client_->FetchPolicy();
+  base::RunLoop().RunUntilIdle();
   EXPECT_EQ(DeviceManagementService::JobConfiguration::TYPE_POLICY_FETCH,
             job_type_);
   EXPECT_EQ(job_request_.SerializePartialAsString(),
@@ -1005,6 +1024,7 @@
   EXPECT_CALL(observer_, OnPolicyFetched(_));
   client_->SetOAuthTokenAsAdditionalAuth("");
   client_->FetchPolicy();
+  base::RunLoop().RunUntilIdle();
   EXPECT_EQ(DeviceManagementService::JobConfiguration::TYPE_POLICY_FETCH,
             job_type_);
   EXPECT_EQ(job_request_.SerializePartialAsString(),
@@ -1019,6 +1039,7 @@
   ExpectPolicyFetch(kDMToken);
   EXPECT_CALL(observer_, OnClientError(_));
   client_->FetchPolicy();
+  base::RunLoop().RunUntilIdle();
   EXPECT_EQ(DeviceManagementService::JobConfiguration::TYPE_POLICY_FETCH,
             job_type_);
   EXPECT_EQ(job_request_.SerializePartialAsString(),
@@ -1033,6 +1054,7 @@
   ExpectPolicyFetch(kDMToken);
   EXPECT_CALL(observer_, OnPolicyFetched(_));
   client_->FetchPolicy();
+  base::RunLoop().RunUntilIdle();
   EXPECT_EQ(DeviceManagementService::JobConfiguration::TYPE_POLICY_FETCH,
             job_type_);
   EXPECT_EQ(job_request_.SerializePartialAsString(),
@@ -1048,10 +1070,11 @@
   EXPECT_CALL(service_, StartJob(_))
       .WillOnce(DoAll(
           service_.CaptureJobType(&job_type),
-          service_.StartJobSync(net::ERR_FAILED,
-                                DeviceManagementService::kInvalidArgument)));
+          service_.StartJobAsync(net::ERR_FAILED,
+                                 DeviceManagementService::kInvalidArgument)));
   EXPECT_CALL(observer_, OnClientError(_));
   client_->FetchPolicy();
+  base::RunLoop().RunUntilIdle();
   EXPECT_EQ(DeviceManagementService::JobConfiguration::TYPE_POLICY_FETCH,
             job_type);
   EXPECT_EQ(DM_STATUS_REQUEST_FAILED, client_->status());
@@ -1064,6 +1087,7 @@
   ExpectUnregistration(kDMToken);
   EXPECT_CALL(observer_, OnRegistrationStateChanged(_));
   client_->Unregister();
+  base::RunLoop().RunUntilIdle();
   EXPECT_EQ(DeviceManagementService::JobConfiguration::TYPE_UNREGISTRATION,
             job_type_);
   EXPECT_EQ(job_request_.SerializePartialAsString(),
@@ -1079,9 +1103,10 @@
   unregistration_response_.clear_unregister_response();
   EXPECT_CALL(service_, StartJob(_))
       .WillOnce(DoAll(service_.CaptureJobType(&job_type),
-                      service_.StartJobOKSync(unregistration_response_)));
+                      service_.StartJobOKAsync(unregistration_response_)));
   EXPECT_CALL(observer_, OnRegistrationStateChanged(_));
   client_->Unregister();
+  base::RunLoop().RunUntilIdle();
   EXPECT_EQ(DeviceManagementService::JobConfiguration::TYPE_UNREGISTRATION,
             job_type);
   EXPECT_FALSE(client_->is_registered());
@@ -1095,10 +1120,11 @@
   EXPECT_CALL(service_, StartJob(_))
       .WillOnce(DoAll(
           service_.CaptureJobType(&job_type),
-          service_.StartJobSync(net::ERR_FAILED,
-                                DeviceManagementService::kInvalidArgument)));
+          service_.StartJobAsync(net::ERR_FAILED,
+                                 DeviceManagementService::kInvalidArgument)));
   EXPECT_CALL(observer_, OnClientError(_));
   client_->Unregister();
+  base::RunLoop().RunUntilIdle();
   EXPECT_EQ(DeviceManagementService::JobConfiguration::TYPE_UNREGISTRATION,
             job_type);
   EXPECT_TRUE(client_->is_registered());
@@ -1568,11 +1594,10 @@
 
   // Set up pending upload status job.
   DeviceManagementService::JobConfiguration::JobType upload_type;
+  DeviceManagementService::JobControl* job_control = nullptr;
   EXPECT_CALL(service_, StartJob(_))
-      .WillOnce(DoAll(
-          service_.CaptureJobType(&upload_type),
-          service_.StartJobAsync(net::OK, DeviceManagementService::kSuccess,
-                                 upload_status_response_)));
+      .WillOnce(DoAll(service_.CaptureJobType(&upload_type),
+                      service_.StartJobFullControl(&job_control)));
   CloudPolicyClient::StatusCallback callback = base::Bind(
       &MockStatusCallbackObserver::OnCallbackComplete,
       base::Unretained(&callback_observer_));
@@ -1581,6 +1606,7 @@
   em::ChildStatusReportRequest child_status;
   client_->UploadDeviceStatus(&device_status, &session_status, &child_status,
                               callback);
+  base::RunLoop().RunUntilIdle();
   EXPECT_EQ(1, client_->GetActiveRequestCountForTest());
   EXPECT_CALL(observer_, OnRegistrationStateChanged(_));
   ExpectUnregistration(kDMToken);
@@ -1812,11 +1838,12 @@
   DeviceManagementService::JobConfiguration::JobType upload_type;
   EXPECT_CALL(service_, StartJob(_))
       .WillOnce(DoAll(service_.CaptureJobType(&upload_type),
-                      service_.StartJobSync(
+                      service_.StartJobAsync(
                           net::OK, DeviceManagementService::kDeviceNotFound)));
   EXPECT_CALL(observer_, OnRegistrationStateChanged(_));
   EXPECT_CALL(observer_, OnClientError(_));
   client_->FetchPolicy();
+  base::RunLoop().RunUntilIdle();
   EXPECT_EQ(DM_STATUS_SERVICE_DEVICE_NOT_FOUND, client_->status());
   EXPECT_FALSE(client_->GetPolicyFor(policy_type_, std::string()));
   EXPECT_FALSE(client_->is_registered());
@@ -1831,6 +1858,7 @@
       em::DeviceRegisterRequest::USER,
       em::DeviceRegisterRequest::FLAVOR_ENROLLMENT_RECOVERY);
   client_->Register(user_recovery, client_id_, kOAuthToken);
+  base::RunLoop().RunUntilIdle();
   EXPECT_EQ(DeviceManagementService::JobConfiguration::TYPE_POLICY_FETCH,
             upload_type);
   EXPECT_EQ(DeviceManagementService::JobConfiguration::TYPE_REGISTRATION,
@@ -1852,11 +1880,12 @@
   DeviceManagementService::JobConfiguration::JobType upload_type;
   EXPECT_CALL(service_, StartJob(_))
       .WillOnce(DoAll(service_.CaptureJobType(&upload_type),
-                      service_.StartJobSync(
+                      service_.StartJobAsync(
                           net::OK, DeviceManagementService::kDeviceNotFound)));
   EXPECT_CALL(observer_, OnRegistrationStateChanged(_));
   EXPECT_CALL(observer_, OnClientError(_));
   client_->FetchPolicy();
+  base::RunLoop().RunUntilIdle();
   EXPECT_EQ(DM_STATUS_SERVICE_DEVICE_NOT_FOUND, client_->status());
   EXPECT_FALSE(client_->GetPolicyFor(policy_type_, std::string()));
   EXPECT_FALSE(client_->is_registered());
@@ -1869,6 +1898,7 @@
       em::DeviceRegisterRequest::USER,
       em::DeviceRegisterRequest::FLAVOR_ENROLLMENT_RECOVERY);
   client_->Register(user_recovery, client_id_, kOAuthToken);
+  base::RunLoop().RunUntilIdle();
   EXPECT_EQ(DeviceManagementService::JobConfiguration::TYPE_POLICY_FETCH,
             upload_type);
   EXPECT_EQ(DeviceManagementService::JobConfiguration::TYPE_REGISTRATION,
diff --git a/components/policy/core/common/cloud/mock_device_management_service.cc b/components/policy/core/common/cloud/mock_device_management_service.cc
index 06f34bb..96b5a18b 100644
--- a/components/policy/core/common/cloud/mock_device_management_service.cc
+++ b/components/policy/core/common/cloud/mock_device_management_service.cc
@@ -37,12 +37,6 @@
 
 }  // namespace
 
-ACTION_P4(CreateSyncAction, service, net_error, response_code, payload) {
-  // Just respond to the job immediately.
-  DoURLCompletion(service->GetWeakPtr(), arg0->GetWeakPtr(), net_error,
-                  response_code, payload);
-}
-
 ACTION_P5(CreateAsyncAction,
           service,
           task_runner,
@@ -114,7 +108,7 @@
 MockDeviceManagementService::~MockDeviceManagementService() {}
 
 testing::Action<MockDeviceManagementService::StartJobFunction>
-MockDeviceManagementService::StartJobOKSync(
+MockDeviceManagementService::StartJobOKAsync(
     const enterprise_management::DeviceManagementResponse& response) {
   // SerializeToString() may fail, that's OK.  Some tests explicitly use
   // malformed responses.
@@ -122,21 +116,7 @@
   if (response.IsInitialized())
     response.SerializeToString(&payload);
 
-  return CreateSyncAction(this, net::OK, kSuccess, payload);
-}
-
-testing::Action<MockDeviceManagementService::StartJobFunction>
-MockDeviceManagementService::StartJobSync(
-    int net_error,
-    int response_code,
-    const enterprise_management::DeviceManagementResponse& response) {
-  // SerializeToString() may fail, that's OK.  Some tests explicitly use
-  // malformed responses.
-  std::string payload;
-  if (response.IsInitialized())
-    response.SerializeToString(&payload);
-
-  return CreateSyncAction(this, net_error, response_code, payload);
+  return StartJobAsync(net::OK, kSuccess, payload);
 }
 
 testing::Action<MockDeviceManagementService::StartJobFunction>
diff --git a/components/policy/core/common/cloud/mock_device_management_service.h b/components/policy/core/common/cloud/mock_device_management_service.h
index 37ee882..39c7c42 100644
--- a/components/policy/core/common/cloud/mock_device_management_service.h
+++ b/components/policy/core/common/cloud/mock_device_management_service.h
@@ -52,30 +52,21 @@
 
   MOCK_METHOD1(StartJob, StartJobFunction);
 
-  // Can be used as an action when mocking the StartJob method.
-  // Will respond with the given data to the network request immediately.
-  // This call behaves the same as calling StartJobSync() with the first
+  // Can be used as an action when mocking the StartJob method. Will respond
+  // with the given data to the network request during the next idle run loop.
+  // This call behaves the same as calling StartJobAsync() with the first
   // arguments set to net::OK and DeviceManagement::kSuccess.
-  // This makes CreateJob() complete the network request before it returns.
-  testing::Action<StartJobFunction> StartJobOKSync(
+  testing::Action<StartJobFunction> StartJobOKAsync(
       const enterprise_management::DeviceManagementResponse& response);
 
   // Can be used as an action when mocking the StartJob method.
-  // Will respond with the given data to the network request immediately.
-  // This makes CreateJob() complete the network request before it returns.
-  testing::Action<StartJobFunction> StartJobSync(
-      int net_error,
-      int response_code,
-      const enterprise_management::DeviceManagementResponse& response =
-          enterprise_management::DeviceManagementResponse());
-
-  // Can be used as an action when mocking the StartJob method.
   // Will respond with the given data to the network request during the next
   // idle run loop.
   testing::Action<StartJobFunction> StartJobAsync(
       int net_error,
       int response_code,
-      const enterprise_management::DeviceManagementResponse& response);
+      const enterprise_management::DeviceManagementResponse& response =
+          enterprise_management::DeviceManagementResponse());
 
   // Can be used as an action when mocking the StartJob method.
   // Will respond with the given data to the network request during the next
diff --git a/components/rlz/rlz_tracker.cc b/components/rlz/rlz_tracker.cc
index 100c292..e166e85 100644
--- a/components/rlz/rlz_tracker.cc
+++ b/components/rlz/rlz_tracker.cc
@@ -12,6 +12,7 @@
 #include <utility>
 
 #include "base/bind.h"
+#include "base/numerics/ranges.h"
 #include "base/sequenced_task_runner.h"
 #include "base/strings/string_util.h"
 #include "base/strings/stringprintf.h"
@@ -278,7 +279,7 @@
   if (delegate_->ShouldEnableZeroDelayForTesting())
     EnableZeroDelayForTesting();
 
-  delay = std::min(kMaxInitDelay, std::max(min_init_delay_, delay));
+  delay = base::ClampToRange(delay, min_init_delay_, kMaxInitDelay);
 
   if (delegate_->GetBrand(&brand_) && !delegate_->IsBrandOrganic(brand_)) {
     // Register for notifications from the omnibox so that we can record when
diff --git a/components/safe_browsing/android/java/src/org/chromium/components/safe_browsing/SafeBrowsingApiBridge.java b/components/safe_browsing/android/java/src/org/chromium/components/safe_browsing/SafeBrowsingApiBridge.java
index 20abd0e..b5526c9 100644
--- a/components/safe_browsing/android/java/src/org/chromium/components/safe_browsing/SafeBrowsingApiBridge.java
+++ b/components/safe_browsing/android/java/src/org/chromium/components/safe_browsing/SafeBrowsingApiBridge.java
@@ -89,8 +89,8 @@
      */
     @CalledByNative
     private static boolean startAllowlistLookup(
-            SafeBrowsingApiHandler handler, String uri, int[] threatsOfInterest) {
-        return handler.startAllowlistLookup(uri, threatsOfInterest);
+            SafeBrowsingApiHandler handler, String uri, int threatType) {
+        return handler.startAllowlistLookup(uri, threatType);
     }
 
     private static native boolean nativeAreLocalBlacklistsEnabled();
diff --git a/components/safe_browsing/android/java/src/org/chromium/components/safe_browsing/SafeBrowsingApiHandler.java b/components/safe_browsing/android/java/src/org/chromium/components/safe_browsing/SafeBrowsingApiHandler.java
index 850f379b..c0b418c8 100644
--- a/components/safe_browsing/android/java/src/org/chromium/components/safe_browsing/SafeBrowsingApiHandler.java
+++ b/components/safe_browsing/android/java/src/org/chromium/components/safe_browsing/SafeBrowsingApiHandler.java
@@ -73,18 +73,17 @@
     public void startUriLookup(long callbackId, String uri, int[] threatsOfInterest);
 
     /**
-     * Start a check to determine if a uri is in a set of allowlists. If true, password protection
-     * service will assume the url to be safe and skip it. This feature is not applicable to Android
-     * Webview, because there is no saved password or GAIA password in AW.
+     * Start a check to determine if a uri is in an allowlist. If true, password protection
+     * service will consider the uri to be safe.
      *
      * @param uri The uri from a password protection event(user focuses on password form
      *      * or user reuses their password)
-     * @param threatsOfInterest determines the type of allowlists that the uri will be matched to.
+     * @param threatType determines the type of the allowlist that the uri will be matched to.
      *
-     * @return true if the uri is found in the set of allowlists. Otherwise, false.
+     * @return true if the uri is found in the corresponding allowlist. Otherwise, false.
      */
     // TODO(xinghuilu@): remove default once downstream implementation is patched
-    default boolean startAllowlistLookup(String uri, int[] threatsOfInterest) {
+    default boolean startAllowlistLookup(String uri, int threatType) {
         return false;
     }
 }
diff --git a/components/safe_browsing/android/safe_browsing_api_handler_bridge.cc b/components/safe_browsing/android/safe_browsing_api_handler_bridge.cc
index 2e5fc4ad..fb27908 100644
--- a/components/safe_browsing/android/safe_browsing_api_handler_bridge.cc
+++ b/components/safe_browsing/android/safe_browsing_api_handler_bridge.cc
@@ -266,16 +266,13 @@
     return false;
   }
 
-  SBThreatTypeSet threat_types(
-      CreateSBThreatTypeSet({safe_browsing::SB_THREAT_TYPE_CSD_WHITELIST}));
-
   // TODO(crbug.com/999344): Add UMA metrics
   JNIEnv* env = AttachCurrentThread();
   ScopedJavaLocalRef<jstring> j_url = ConvertUTF8ToJavaString(env, url.spec());
-  ScopedJavaLocalRef<jintArray> j_threat_types =
-      SBThreatTypeSetToJavaArray(env, threat_types);
+  int j_threat_type =
+      SBThreatTypeToJavaThreatType(safe_browsing::SB_THREAT_TYPE_CSD_WHITELIST);
   return Java_SafeBrowsingApiBridge_startAllowlistLookup(env, j_api_handler_,
-                                                         j_url, j_threat_types);
+                                                         j_url, j_threat_type);
 }
 
 }  // namespace safe_browsing
diff --git a/components/signin/internal/identity_manager/profile_oauth2_token_service.cc b/components/signin/internal/identity_manager/profile_oauth2_token_service.cc
index 167c66bb..dad5268 100644
--- a/components/signin/internal/identity_manager/profile_oauth2_token_service.cc
+++ b/components/signin/internal/identity_manager/profile_oauth2_token_service.cc
@@ -65,8 +65,6 @@
     case SourceForRefreshTokenOperation::
         kAccountReconcilor_RevokeTokensNotInCookies:
       return "AccountReconcilor::RevokeTokensNotInCookies";
-    case SourceForRefreshTokenOperation::kAddSupervision_SupervisionEnabled:
-      return "AddSupervision::SupervisionEnabled";
   }
 }
 }  // namespace
diff --git a/components/signin/public/base/signin_metrics.h b/components/signin/public/base/signin_metrics.h
index ebd3c74..7d2ada0 100644
--- a/components/signin/public/base/signin_metrics.h
+++ b/components/signin/public/base/signin_metrics.h
@@ -314,9 +314,8 @@
   kMachineLogon_CredentialProvider,
   kTokenService_ExtractCredentials,
   kAccountReconcilor_RevokeTokensNotInCookies,
-  kAddSupervision_SupervisionEnabled,
 
-  kMaxValue = kAddSupervision_SupervisionEnabled
+  kMaxValue = kAccountReconcilor_RevokeTokensNotInCookies
 };
 
 // Different types of reporting. This is used as a histogram suffix.
diff --git a/components/translate/ios/browser/ios_translate_driver.h b/components/translate/ios/browser/ios_translate_driver.h
index 79e2a48..bc551c0 100644
--- a/components/translate/ios/browser/ios_translate_driver.h
+++ b/components/translate/ios/browser/ios_translate_driver.h
@@ -14,7 +14,7 @@
 #include "components/translate/core/common/translate_errors.h"
 #include "components/translate/ios/browser/language_detection_controller.h"
 #include "components/translate/ios/browser/translate_controller.h"
-#include "ios/web/public/web_state/web_state_observer.h"
+#include "ios/web/public/web_state_observer.h"
 
 @class CRWJSInjectionReceiver;
 
diff --git a/components/translate/ios/browser/language_detection_controller.h b/components/translate/ios/browser/language_detection_controller.h
index b018dc5..e03fb40 100644
--- a/components/translate/ios/browser/language_detection_controller.h
+++ b/components/translate/ios/browser/language_detection_controller.h
@@ -15,7 +15,7 @@
 #include "base/strings/string16.h"
 #include "components/prefs/pref_member.h"
 #import "ios/web/public/web_state.h"
-#include "ios/web/public/web_state/web_state_observer.h"
+#include "ios/web/public/web_state_observer.h"
 
 class GURL;
 @class JsLanguageDetectionManager;
diff --git a/components/translate/ios/browser/translate_controller.h b/components/translate/ios/browser/translate_controller.h
index 6ec169c..8283bb9 100644
--- a/components/translate/ios/browser/translate_controller.h
+++ b/components/translate/ios/browser/translate_controller.h
@@ -16,7 +16,7 @@
 #include "base/memory/weak_ptr.h"
 #include "components/translate/core/common/translate_errors.h"
 #import "ios/web/public/web_state.h"
-#include "ios/web/public/web_state/web_state_observer.h"
+#include "ios/web/public/web_state_observer.h"
 #include "services/network/public/cpp/simple_url_loader.h"
 
 @class JsTranslateManager;
diff --git a/components/vector_icons/BUILD.gn b/components/vector_icons/BUILD.gn
index 5c8701f..26e19318c 100644
--- a/components/vector_icons/BUILD.gn
+++ b/components/vector_icons/BUILD.gn
@@ -45,6 +45,7 @@
     "mic.icon",
     "midi.icon",
     "notifications.icon",
+    "notifications_off.icon",
     "open_in_new.icon",
     "pause.icon",
     "play_arrow.icon",
diff --git a/components/vector_icons/notifications_off.icon b/components/vector_icons/notifications_off.icon
new file mode 100644
index 0000000..8b9654e
--- /dev/null
+++ b/components/vector_icons/notifications_off.icon
@@ -0,0 +1,38 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+MOVE_TO, 40, 37.39f,
+LINE_TO, 15.68f, 12.3f,
+R_LINE_TO, -5.13f, -5.29f,
+LINE_TO, 8, 9.55f,
+R_LINE_TO, 5.6f, 5.6f,
+R_LINE_TO, 0.01f, 0.01f,
+CUBIC_TO, 12.56f, 17.14f, 12, 19.48f, 12, 22,
+R_V_LINE_TO, 10,
+R_LINE_TO, -4, 4,
+R_V_LINE_TO, 2,
+R_H_LINE_TO, 27.46f,
+R_LINE_TO, 4, 4,
+LINE_TO, 42, 39.45f,
+R_LINE_TO, -2, -2.06f,
+CLOSE,
+MOVE_TO, 24, 44,
+R_CUBIC_TO, 2.21f, 0, 4, -1.79f, 4, -4,
+R_H_LINE_TO, -8,
+R_CUBIC_TO, 0, 2.21f, 1.79f, 4, 4, 4,
+CLOSE,
+R_MOVE_TO, 12, -14.64f,
+V_LINE_TO, 22,
+R_CUBIC_TO, 0, -6.15f, -3.27f, -11.28f, -9, -12.64f,
+V_LINE_TO, 8,
+R_CUBIC_TO, 0, -1.66f, -1.34f, -3, -3, -3,
+R_CUBIC_TO, -1.66f, 0, -3, 1.34f, -3, 3,
+R_V_LINE_TO, 1.36f,
+R_ARC_TO, 10.95f, 10.95f, 0, 0, 0, -1.46f, 0.46f,
+R_CUBIC_TO, 0, 0, -0.01f, 0, -0.01f, 0.01f,
+R_CUBIC_TO, -0.01f, 0, -0.02f, 0.01f, -0.03f, 0.01f,
+R_CUBIC_TO, -0.46f, 0.18f, -0.91f, 0.39f, -1.35f, 0.62f,
+R_CUBIC_TO, -0.01f, 0, -0.02f, 0.01f, -0.03f, 0.01f,
+LINE_TO, 36, 29.36f,
+CLOSE
diff --git a/components/viz/common/gl_helper_unittest.cc b/components/viz/common/gl_helper_unittest.cc
index 450f72c1f..31a99741 100644
--- a/components/viz/common/gl_helper_unittest.cc
+++ b/components/viz/common/gl_helper_unittest.cc
@@ -17,6 +17,7 @@
 
 #include "base/bind.h"
 #include "base/memory/ref_counted_memory.h"
+#include "base/numerics/ranges.h"
 #include "base/run_loop.h"
 #include "base/stl_util.h"
 #include "base/strings/stringprintf.h"
@@ -104,14 +105,14 @@
   int Channel(SkBitmap* pixels, int x, int y, int c) {
     if (pixels->bytesPerPixel() == 4) {
       uint32_t* data =
-          pixels->getAddr32(std::max(0, std::min(x, pixels->width() - 1)),
-                            std::max(0, std::min(y, pixels->height() - 1)));
+          pixels->getAddr32(base::ClampToRange(x, 0, pixels->width() - 1),
+                            base::ClampToRange(y, 0, pixels->height() - 1));
       return (*data) >> (c * 8) & 0xff;
     } else {
       DCHECK_EQ(pixels->bytesPerPixel(), 1);
       DCHECK_EQ(c, 0);
-      return *pixels->getAddr8(std::max(0, std::min(x, pixels->width() - 1)),
-                               std::max(0, std::min(y, pixels->height() - 1)));
+      return *pixels->getAddr8(base::ClampToRange(x, 0, pixels->width() - 1),
+                               base::ClampToRange(y, 0, pixels->height() - 1));
     }
   }
 
@@ -124,13 +125,13 @@
     DCHECK_LT(y, pixels->height());
     if (pixels->bytesPerPixel() == 4) {
       uint32_t* data = pixels->getAddr32(x, y);
-      v = std::max(0, std::min(v, 255));
+      v = base::ClampToRange(v, 0, 255);
       *data = (*data & ~(0xffu << (c * 8))) | (v << (c * 8));
     } else {
       DCHECK_EQ(pixels->bytesPerPixel(), 1);
       DCHECK_EQ(c, 0);
       uint8_t* data = pixels->getAddr8(x, y);
-      v = std::max(0, std::min(v, 255));
+      v = base::ClampToRange(v, 0, 255);
       *data = v;
     }
   }
diff --git a/components/viz/common/yuv_readback_unittest.cc b/components/viz/common/yuv_readback_unittest.cc
index 0e3116e..598f73b4 100644
--- a/components/viz/common/yuv_readback_unittest.cc
+++ b/components/viz/common/yuv_readback_unittest.cc
@@ -7,6 +7,7 @@
 #include "base/bind.h"
 #include "base/json/json_reader.h"
 #include "base/memory/ref_counted_memory.h"
+#include "base/numerics/ranges.h"
 #include "base/run_loop.h"
 #include "base/stl_util.h"
 #include "base/strings/stringprintf.h"
@@ -133,14 +134,14 @@
   int Channel(SkBitmap* pixels, int x, int y, int c) {
     if (pixels->bytesPerPixel() == 4) {
       uint32_t* data =
-          pixels->getAddr32(std::max(0, std::min(x, pixels->width() - 1)),
-                            std::max(0, std::min(y, pixels->height() - 1)));
+          pixels->getAddr32(base::ClampToRange(x, 0, pixels->width() - 1),
+                            base::ClampToRange(y, 0, pixels->height() - 1));
       return (*data) >> (c * 8) & 0xff;
     } else {
       DCHECK_EQ(pixels->bytesPerPixel(), 1);
       DCHECK_EQ(c, 0);
-      return *pixels->getAddr8(std::max(0, std::min(x, pixels->width() - 1)),
-                               std::max(0, std::min(y, pixels->height() - 1)));
+      return *pixels->getAddr8(base::ClampToRange(x, 0, pixels->width() - 1),
+                               base::ClampToRange(y, 0, pixels->height() - 1));
     }
   }
 
@@ -153,13 +154,13 @@
     DCHECK_LT(y, pixels->height());
     if (pixels->bytesPerPixel() == 4) {
       uint32_t* data = pixels->getAddr32(x, y);
-      v = std::max(0, std::min(v, 255));
+      v = base::ClampToRange(v, 0, 255);
       *data = (*data & ~(0xffu << (c * 8))) | (v << (c * 8));
     } else {
       DCHECK_EQ(pixels->bytesPerPixel(), 1);
       DCHECK_EQ(c, 0);
       uint8_t* data = pixels->getAddr8(x, y);
-      v = std::max(0, std::min(v, 255));
+      v = base::ClampToRange(v, 0, 255);
       *data = v;
     }
   }
diff --git a/components/viz/demo/demo_main.cc b/components/viz/demo/demo_main.cc
index efe75036..d4ab1be 100644
--- a/components/viz/demo/demo_main.cc
+++ b/components/viz/demo/demo_main.cc
@@ -173,6 +173,7 @@
   void OnLostCapture() override {}
   void OnAcceleratedWidgetDestroyed() override {}
   void OnActivationChanged(bool active) override {}
+  void OnMouseEnter() override {}
 
   std::unique_ptr<demo::DemoHost> host_;
   std::unique_ptr<demo::DemoService> service_;
diff --git a/components/viz/service/display/renderer_pixeltest.cc b/components/viz/service/display/renderer_pixeltest.cc
index d69d7213..e86e5ea 100644
--- a/components/viz/service/display/renderer_pixeltest.cc
+++ b/components/viz/service/display/renderer_pixeltest.cc
@@ -13,6 +13,7 @@
 #include "base/memory/aligned_memory.h"
 #include "base/memory/read_only_shared_memory_region.h"
 #include "base/memory/shared_memory_mapping.h"
+#include "base/numerics/ranges.h"
 #include "build/build_config.h"
 #include "cc/base/math_util.h"
 #include "cc/paint/paint_flags.h"
@@ -4852,9 +4853,9 @@
       }
       transform->Transform(&color, 1);
       color.Scale(alpha);
-      color.set_x(std::min(std::max(0.f, color.x()), 1.f));
-      color.set_y(std::min(std::max(0.f, color.y()), 1.f));
-      color.set_z(std::min(std::max(0.f, color.z()), 1.f));
+      color.set_x(base::ClampToRange(color.x(), 0.0f, 1.0f));
+      color.set_y(base::ClampToRange(color.y(), 0.0f, 1.0f));
+      color.set_z(base::ClampToRange(color.z(), 0.0f, 1.0f));
       expected_output_colors[i] =
           SkColorSetARGB(255, static_cast<size_t>(255.f * color.x() + 0.5f),
                          static_cast<size_t>(255.f * color.y() + 0.5f),
diff --git a/components/viz/service/display_embedder/software_output_device_ozone_unittest.cc b/components/viz/service/display_embedder/software_output_device_ozone_unittest.cc
index fbd3fa7c..9e7620b 100644
--- a/components/viz/service/display_embedder/software_output_device_ozone_unittest.cc
+++ b/components/viz/service/display_embedder/software_output_device_ozone_unittest.cc
@@ -49,6 +49,7 @@
   }
   void OnAcceleratedWidgetDestroyed() override {}
   void OnActivationChanged(bool active) override {}
+  void OnMouseEnter() override {}
 
  private:
   gfx::AcceleratedWidget widget_;
diff --git a/content/app/android/content_child_process_service_delegate.cc b/content/app/android/content_child_process_service_delegate.cc
index ac1c9661..4d5c0d3 100644
--- a/content/app/android/content_child_process_service_delegate.cc
+++ b/content/app/android/content_child_process_service_delegate.cc
@@ -18,8 +18,8 @@
 #include "content/public/android/content_jni_headers/ContentChildProcessServiceDelegate_jni.h"
 #include "content/public/common/content_descriptors.h"
 #include "content/public/common/content_switches.h"
+#include "gpu/command_buffer/service/texture_owner.h"
 #include "gpu/ipc/common/android/scoped_surface_request_conduit.h"
-#include "gpu/ipc/common/android/texture_owner.h"
 #include "gpu/ipc/common/gpu_surface_lookup.h"
 #include "services/service_manager/embedder/shared_file_util.h"
 #include "services/service_manager/embedder/switches.h"
diff --git a/content/browser/BUILD.gn b/content/browser/BUILD.gn
index 7ce756e..4581ce6e 100644
--- a/content/browser/BUILD.gn
+++ b/content/browser/BUILD.gn
@@ -2415,7 +2415,7 @@
       "//build/config/freetype",
       "//content/public/android:jni",
       "//device/gamepad/public/mojom",
-      "//gpu/ipc/common:android_texture_owner",
+      "//gpu/command_buffer/service:gles2",
       "//media",
       "//media/capture/content/android",
       "//media/capture/video/android",
diff --git a/content/browser/android/scoped_surface_request_manager.cc b/content/browser/android/scoped_surface_request_manager.cc
index 8faf9be..adc362d 100644
--- a/content/browser/android/scoped_surface_request_manager.cc
+++ b/content/browser/android/scoped_surface_request_manager.cc
@@ -8,7 +8,7 @@
 #include "base/task/post_task.h"
 #include "content/public/browser/browser_task_traits.h"
 #include "content/public/browser/browser_thread.h"
-#include "gpu/ipc/common/android/texture_owner.h"
+#include "gpu/command_buffer/service/texture_owner.h"
 
 namespace content {
 
diff --git a/content/browser/android/scoped_surface_request_manager_unittest.cc b/content/browser/android/scoped_surface_request_manager_unittest.cc
index e2230a0..5084844 100644
--- a/content/browser/android/scoped_surface_request_manager_unittest.cc
+++ b/content/browser/android/scoped_surface_request_manager_unittest.cc
@@ -8,7 +8,7 @@
 #include "base/callback_forward.h"
 #include "base/run_loop.h"
 #include "content/public/test/browser_task_environment.h"
-#include "gpu/ipc/common/android/mock_texture_owner.h"
+#include "gpu/command_buffer/service/mock_texture_owner.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "ui/gl/android/scoped_java_surface.h"
 #include "ui/gl/android/surface_texture.h"
diff --git a/content/browser/devtools/devtools_url_loader_interceptor.cc b/content/browser/devtools/devtools_url_loader_interceptor.cc
index be645e1..701378d 100644
--- a/content/browser/devtools/devtools_url_loader_interceptor.cc
+++ b/content/browser/devtools/devtools_url_loader_interceptor.cc
@@ -1070,9 +1070,8 @@
   response_metadata_->redirect_info = std::make_unique<net::RedirectInfo>(
       net::RedirectInfo::ComputeRedirectInfo(
           request.method, request.url, request.site_for_cookies,
-          request.top_frame_origin, first_party_url_policy,
-          request.referrer_policy, request.referrer.spec(),
-          headers.response_code(), redirect_url,
+          first_party_url_policy, request.referrer_policy,
+          request.referrer.spec(), headers.response_code(), redirect_url,
           net::RedirectUtil::GetReferrerPolicyHeader(&headers),
           false /* insecure_scheme_was_upgraded */, true /* copy_fragment */));
 
diff --git a/content/browser/devtools/devtools_video_consumer_unittest.cc b/content/browser/devtools/devtools_video_consumer_unittest.cc
index add8fa6..e248e2a 100644
--- a/content/browser/devtools/devtools_video_consumer_unittest.cc
+++ b/content/browser/devtools/devtools_video_consumer_unittest.cc
@@ -234,7 +234,7 @@
             weak_factory_.GetWeakPtr()));
   }
 
-  base::test::TaskEnvironment task_environment_;
+  base::test::SingleThreadTaskEnvironment task_environment_;
   base::WeakPtrFactory<DevToolsVideoConsumerTest> weak_factory_{this};
 };
 
diff --git a/content/browser/loader/prefetch_url_loader.cc b/content/browser/loader/prefetch_url_loader.cc
index 1cb9e3c..8bbcf569 100644
--- a/content/browser/loader/prefetch_url_loader.cc
+++ b/content/browser/loader/prefetch_url_loader.cc
@@ -202,7 +202,6 @@
 
   resource_request_.url = redirect_info.new_url;
   resource_request_.site_for_cookies = redirect_info.new_site_for_cookies;
-  resource_request_.top_frame_origin = redirect_info.new_top_frame_origin;
   resource_request_.referrer = GURL(redirect_info.new_referrer);
   resource_request_.referrer_policy = redirect_info.new_referrer_policy;
   forwarding_client_->OnReceiveRedirect(redirect_info, std::move(head));
diff --git a/content/browser/web_package/bundled_exchanges_handle.cc b/content/browser/web_package/bundled_exchanges_handle.cc
index a4f5b14..0dd7b0a 100644
--- a/content/browser/web_package/bundled_exchanges_handle.cc
+++ b/content/browser/web_package/bundled_exchanges_handle.cc
@@ -74,7 +74,6 @@
 
     net::RedirectInfo redirect_info = net::RedirectInfo::ComputeRedirectInfo(
         "GET", resource_request.url, resource_request.site_for_cookies,
-        resource_request.top_frame_origin,
         resource_request.update_first_party_url_on_redirect
             ? net::URLRequest::FirstPartyURLPolicy::
                   UPDATE_FIRST_PARTY_URL_ON_REDIRECT
diff --git a/content/browser/web_package/signed_exchange_utils.cc b/content/browser/web_package/signed_exchange_utils.cc
index eee8906..153d2a7 100644
--- a/content/browser/web_package/signed_exchange_utils.cc
+++ b/content/browser/web_package/signed_exchange_utils.cc
@@ -208,7 +208,6 @@
   // Step 3. Set actualResponse's status to 303. [spec text]
   return net::RedirectInfo::ComputeRedirectInfo(
       "GET", outer_request.url, outer_request.site_for_cookies,
-      outer_request.top_frame_origin,
       outer_request.update_first_party_url_on_redirect
           ? net::URLRequest::FirstPartyURLPolicy::
                 UPDATE_FIRST_PARTY_URL_ON_REDIRECT
diff --git a/content/common/service_worker/service_worker_loader_helpers.cc b/content/common/service_worker/service_worker_loader_helpers.cc
index 3928679..43fe683 100644
--- a/content/common/service_worker/service_worker_loader_helpers.cc
+++ b/content/common/service_worker/service_worker_loader_helpers.cc
@@ -128,8 +128,8 @@
           : net::URLRequest::NEVER_CHANGE_FIRST_PARTY_URL;
   return net::RedirectInfo::ComputeRedirectInfo(
       original_request.method, original_request.url,
-      original_request.site_for_cookies, original_request.top_frame_origin,
-      first_party_url_policy, original_request.referrer_policy,
+      original_request.site_for_cookies, first_party_url_policy,
+      original_request.referrer_policy,
       network::ComputeReferrer(original_request.referrer),
       response_head.headers->response_code(),
       original_request.url.Resolve(new_location),
diff --git a/content/common/throttling_url_loader.cc b/content/common/throttling_url_loader.cc
index 4c40464..41f1ab32c 100644
--- a/content/common/throttling_url_loader.cc
+++ b/content/common/throttling_url_loader.cc
@@ -392,8 +392,7 @@
 
     net::RedirectInfo redirect_info = net::RedirectInfo::ComputeRedirectInfo(
         start_info_->url_request.method, start_info_->url_request.url,
-        start_info_->url_request.site_for_cookies,
-        start_info_->url_request.top_frame_origin, first_party_url_policy,
+        start_info_->url_request.site_for_cookies, first_party_url_policy,
         start_info_->url_request.referrer_policy,
         start_info_->url_request.referrer.spec(),
         // Use status code 307 to preserve the method, so POST requests work.
@@ -626,7 +625,6 @@
   request.url = redirect_info.new_url;
   request.method = redirect_info.new_method;
   request.site_for_cookies = redirect_info.new_site_for_cookies;
-  request.top_frame_origin = redirect_info.new_top_frame_origin;
   request.referrer = GURL(redirect_info.new_referrer);
   request.referrer_policy = redirect_info.new_referrer_policy;
 
diff --git a/content/renderer/loader/web_url_loader_impl.cc b/content/renderer/loader/web_url_loader_impl.cc
index cd1cb06..bd968f10 100644
--- a/content/renderer/loader/web_url_loader_impl.cc
+++ b/content/renderer/loader/web_url_loader_impl.cc
@@ -873,7 +873,6 @@
   url_ = WebURL(redirect_info.new_url);
   return client_->WillFollowRedirect(
       url_, redirect_info.new_site_for_cookies,
-      redirect_info.new_top_frame_origin,
       WebString::FromUTF8(redirect_info.new_referrer),
       Referrer::NetReferrerPolicyToBlinkReferrerPolicy(
           redirect_info.new_referrer_policy),
diff --git a/content/renderer/loader/web_url_loader_impl_unittest.cc b/content/renderer/loader/web_url_loader_impl_unittest.cc
index ebbf71b..96cfcc43 100644
--- a/content/renderer/loader/web_url_loader_impl_unittest.cc
+++ b/content/renderer/loader/web_url_loader_impl_unittest.cc
@@ -187,7 +187,6 @@
   bool WillFollowRedirect(
       const blink::WebURL& new_url,
       const blink::WebURL& new_site_for_cookies,
-      const base::Optional<blink::WebSecurityOrigin>& new_top_frame_origin,
       const blink::WebString& new_referrer,
       network::mojom::ReferrerPolicy new_referrer_policy,
       const blink::WebString& new_method,
diff --git a/content/test/BUILD.gn b/content/test/BUILD.gn
index 4d80608b..cff4f23 100644
--- a/content/test/BUILD.gn
+++ b/content/test/BUILD.gn
@@ -2271,7 +2271,7 @@
       "//build/config/freetype",
       "//components/download/internal/common:internal_java",
       "//content/public/android:content_java",
-      "//gpu/ipc/common:android_texture_owner_test_support",
+      "//gpu/command_buffer/service:android_texture_owner_test_support",
       "//media/capture/content/android",
       "//media/capture/content/android:screen_capture_java",
       "//third_party/blink/public/common",
diff --git a/device/vr/public/mojom/vr_service.mojom b/device/vr/public/mojom/vr_service.mojom
index fb00428..bffd3ac 100644
--- a/device/vr/public/mojom/vr_service.mojom
+++ b/device/vr/public/mojom/vr_service.mojom
@@ -454,9 +454,17 @@
   OnDeviceChanged();
 };
 
+enum CreateAnchorResult {
+  SUCCESS = 0,
+  FAILURE = 1,
+};
+
 // Provides functionality for integrating environment information into an
 // XRSession. For example, some AR sessions would implement hit test to allow
 // developers to get the information about the world that its sensors supply.
+// On XRSession end, the message pipe will be destroyed - we need to clean up
+// all outstanding JavaScript promises at that time. The XRsession might end for
+// example due to a call to XRSession::end() method (exposed to JavaScript).
 interface XREnvironmentIntegrationProvider {
   // Performs a raycast into the scene and returns a list of XRHitResults sorted
   // from closest to furthest hit from the ray. Each hit result contains a
@@ -465,6 +473,27 @@
   // An empty result list means there were no hits. If a nullopt is returned,
   // there was an error.
   RequestHitTest(XRRay ray) => (array<XRHitResult>? results);
+
+  // Issues a request to create an anchor attached to a session.
+  // |result| will contain status code of the request. |anchor_id| will be valid
+  // only if the |result| is SUCCESS.
+  CreateAnchor(VRPose anchor_pose) => (CreateAnchorResult result,
+                                       int32 anchor_id);
+  // TODO(https://crbug.com/657632): Switch anchor_id to nullable integer once
+  // that's available. This will allow us to remove CreateAnchorResult if we're
+  // not interested in obtaining detailed error information from the device.
+
+  // Issues a request to create an anchor attached to a plane.
+  // |result| will contain status code of the request. |anchor_id| will be valid
+  // only if the |result| is SUCCESS.
+  CreatePlaneAnchor(VRPose anchor_pose, int32 plane_id) =>
+    (CreateAnchorResult result, int32 anchor_id);
+  // TODO(https://crbug.com/657632): Ditto - make anchor_id a nullable integer..
+
+  // Detaches an existing anchor. The |anchor_id| must be a valid id of an
+  // anchor created by one of the CreateAnchor calls, otherwise the call will be
+  // ignored.
+  DetachAnchor(int32 anchor_id);
 };
 
 // Provides a mechanism for a channel to plumb up any button click events
diff --git a/docs/workflow/debugging-with-swarming.md b/docs/workflow/debugging-with-swarming.md
index f316308..2de606e2 100644
--- a/docs/workflow/debugging-with-swarming.md
+++ b/docs/workflow/debugging-with-swarming.md
@@ -64,7 +64,12 @@
 ```
 
 This will produce some files in $outdir. The most pertinent two are
-`$outdir/$target.isolate` and $outdir/target.isolated`.
+`$outdir/$target.isolate` and `$outdir/target.isolated`. If you've already built
+$target, you can save some CPU time and run `tools/mb/mb.py` with `--no-build`:
+
+```
+$ tools/mb/mb.py isolate --no-build //$outdir $target
+```
 
 Support for building an isolate using swarming, which would allow you to build
 for a platform you can't build for locally, does not yet exist.
diff --git a/fuchsia/engine/BUILD.gn b/fuchsia/engine/BUILD.gn
index 633bdea..7a14b538 100644
--- a/fuchsia/engine/BUILD.gn
+++ b/fuchsia/engine/BUILD.gn
@@ -64,6 +64,7 @@
 component("web_engine_core") {
   deps = [
     ":mojom",
+    ":switches",
     ":web_engine_pak",
     "//base",
     "//base:base_static",
@@ -152,8 +153,6 @@
     "renderer/on_load_script_injector.h",
     "renderer/web_engine_content_renderer_client.cc",
     "renderer/web_engine_content_renderer_client.h",
-    "switches.cc",
-    "switches.h",
     "web_engine_content_client.cc",
     "web_engine_content_client.h",
     "web_engine_export.h",
@@ -166,6 +165,13 @@
   ]
 }
 
+source_set("switches") {
+  sources = [
+    "switches.cc",
+    "switches.h",
+  ]
+}
+
 executable("web_engine_exe") {
   deps = [
     ":web_engine_core",
@@ -221,6 +227,7 @@
     "browser/content_directory_browsertest.cc",
     "browser/context_impl_browsertest.cc",
     "browser/frame_impl_browsertest.cc",
+    "browser/media_browsertest.cc",
   ]
   defines = [ "HAS_OUT_OF_PROC_TEST_RUNNER" ]
   data = [
@@ -228,6 +235,7 @@
   ]
   deps = [
     ":browsertest_core",
+    ":switches",
     ":web_engine_core",
     "//base/test:test_support",
     "//content/public/browser",
diff --git a/fuchsia/engine/browser/media_browsertest.cc b/fuchsia/engine/browser/media_browsertest.cc
new file mode 100644
index 0000000..f8d00c5
--- /dev/null
+++ b/fuchsia/engine/browser/media_browsertest.cc
@@ -0,0 +1,125 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "fuchsia/engine/test/web_engine_browser_test.h"
+
+#include "base/files/file_path.h"
+#include "base/test/bind_test_util.h"
+#include "base/test/test_timeouts.h"
+#include "fuchsia/base/frame_test_util.h"
+#include "fuchsia/base/test_navigation_listener.h"
+#include "fuchsia/engine/common.h"
+#include "fuchsia/engine/switches.h"
+#include "testing/gtest/include/gtest/gtest.h"
+
+namespace {
+const char kTestServerRoot[] = FILE_PATH_LITERAL("fuchsia/engine/test/data");
+
+class MediaTest : public cr_fuchsia::WebEngineBrowserTest {
+ public:
+  MediaTest()
+      : run_timeout_(TestTimeouts::action_timeout(),
+                     base::MakeExpectedNotRunClosure(FROM_HERE)) {
+    set_test_server_root(base::FilePath(kTestServerRoot));
+  }
+  ~MediaTest() override = default;
+
+  void SetUpOnMainThread() override {
+    CHECK(embedded_test_server()->Start());
+    cr_fuchsia::WebEngineBrowserTest::SetUpOnMainThread();
+  }
+
+ protected:
+  // Creates a Frame with |navigation_listener_| attached.
+  fuchsia::web::FramePtr CreateFrame() {
+    return WebEngineBrowserTest::CreateFrame(&navigation_listener_);
+  }
+
+  cr_fuchsia::TestNavigationListener navigation_listener_;
+
+ private:
+  const base::RunLoop::ScopedRunTimeoutForTest run_timeout_;
+
+  DISALLOW_COPY_AND_ASSIGN(MediaTest);
+};
+
+// VP8 can presently only be decoded in software.
+// Verify that the --disable-software-video-decoders flag results in VP8
+// media being reported as unplayable.
+class SoftwareDecoderDisabledTest : public MediaTest {
+ public:
+  SoftwareDecoderDisabledTest() = default;
+  ~SoftwareDecoderDisabledTest() override = default;
+
+  void SetUp() override {
+    base::CommandLine::ForCurrentProcess()->AppendSwitch(
+        switches::kDisableSoftwareVideoDecoders);
+    cr_fuchsia::WebEngineBrowserTest::SetUp();
+  }
+
+ private:
+  DISALLOW_COPY_AND_ASSIGN(SoftwareDecoderDisabledTest);
+};
+
+IN_PROC_BROWSER_TEST_F(SoftwareDecoderDisabledTest, VP8IsTypeSupported) {
+  const GURL kUrl(embedded_test_server()->GetURL("/can_play_vp8.html"));
+
+  fuchsia::web::FramePtr frame = CreateFrame();
+
+  fuchsia::web::NavigationControllerPtr controller;
+  frame->GetNavigationController(controller.NewRequest());
+
+  EXPECT_TRUE(cr_fuchsia::LoadUrlAndExpectResponse(
+      controller.get(), fuchsia::web::LoadUrlParams(), kUrl.spec()));
+  navigation_listener_.RunUntilUrlAndTitleEquals(kUrl, "can play vp8: false");
+}
+
+using SoftwareDecoderEnabledTest = MediaTest;
+
+// Verify that VP8 is reported as playable if --disable-software-video-decoders
+// is unset.
+IN_PROC_BROWSER_TEST_F(SoftwareDecoderEnabledTest, VP8IsTypeSupported) {
+  const GURL kUrl(embedded_test_server()->GetURL("/can_play_vp8.html"));
+
+  fuchsia::web::FramePtr frame = CreateFrame();
+
+  fuchsia::web::NavigationControllerPtr controller;
+  frame->GetNavigationController(controller.NewRequest());
+
+  EXPECT_TRUE(cr_fuchsia::LoadUrlAndExpectResponse(
+      controller.get(), fuchsia::web::LoadUrlParams(), kUrl.spec()));
+  navigation_listener_.RunUntilUrlAndTitleEquals(kUrl, "can play vp8: true");
+}
+
+// Verify that a VP8 video is loaded if --disable-software-video-decoders is
+// unset.
+IN_PROC_BROWSER_TEST_F(SoftwareDecoderEnabledTest, PlayVP8) {
+  const GURL kUrl(embedded_test_server()->GetURL("/play_vp8.html"));
+
+  fuchsia::web::FramePtr frame = CreateFrame();
+
+  fuchsia::web::NavigationControllerPtr controller;
+  frame->GetNavigationController(controller.NewRequest());
+
+  EXPECT_TRUE(cr_fuchsia::LoadUrlAndExpectResponse(
+      controller.get(), fuchsia::web::LoadUrlParams(), kUrl.spec()));
+  navigation_listener_.RunUntilUrlAndTitleEquals(kUrl, "loaded");
+}
+
+// Verifies that VP8 videos won't play if --disable-software-video-decoders is
+// set.
+IN_PROC_BROWSER_TEST_F(SoftwareDecoderDisabledTest, PlayVP8Disabled) {
+  const GURL kUrl(embedded_test_server()->GetURL("/play_vp8.html"));
+
+  fuchsia::web::FramePtr frame = CreateFrame();
+
+  fuchsia::web::NavigationControllerPtr controller;
+  frame->GetNavigationController(controller.NewRequest());
+
+  EXPECT_TRUE(cr_fuchsia::LoadUrlAndExpectResponse(
+      controller.get(), fuchsia::web::LoadUrlParams(), kUrl.spec()));
+  navigation_listener_.RunUntilUrlAndTitleEquals(kUrl, "error");
+}
+
+}  // namespace
diff --git a/fuchsia/engine/browser/web_engine_content_browser_client.cc b/fuchsia/engine/browser/web_engine_content_browser_client.cc
index a16f17dd..08453ea5 100644
--- a/fuchsia/engine/browser/web_engine_content_browser_client.cc
+++ b/fuchsia/engine/browser/web_engine_content_browser_client.cc
@@ -15,6 +15,7 @@
 #include "fuchsia/engine/browser/web_engine_browser_main_parts.h"
 #include "fuchsia/engine/browser/web_engine_devtools_manager_delegate.h"
 #include "fuchsia/engine/common.h"
+#include "fuchsia/engine/switches.h"
 
 WebEngineContentBrowserClient::WebEngineContentBrowserClient(
     fidl::InterfaceRequest<fuchsia::web::Context> request)
@@ -97,4 +98,9 @@
     int child_process_id) {
   if (base::CommandLine::ForCurrentProcess()->HasSwitch(kContentDirectories))
     command_line->AppendSwitch(kContentDirectories);
+
+  if (base::CommandLine::ForCurrentProcess()->HasSwitch(
+          switches::kDisableSoftwareVideoDecoders)) {
+    command_line->AppendSwitch(switches::kDisableSoftwareVideoDecoders);
+  }
 }
diff --git a/fuchsia/engine/context_provider_impl.cc b/fuchsia/engine/context_provider_impl.cc
index b537c57..a992551 100644
--- a/fuchsia/engine/context_provider_impl.cc
+++ b/fuchsia/engine/context_provider_impl.cc
@@ -248,6 +248,24 @@
                                       key_system);
   }
 
+  bool disable_software_video_decoder =
+      (features &
+       fuchsia::web::ContextFeatureFlags::HARDWARE_VIDEO_DECODER_ONLY) ==
+      fuchsia::web::ContextFeatureFlags::HARDWARE_VIDEO_DECODER_ONLY;
+  bool enable_hardware_video_decoder =
+      (features & fuchsia::web::ContextFeatureFlags::HARDWARE_VIDEO_DECODER) ==
+      fuchsia::web::ContextFeatureFlags::HARDWARE_VIDEO_DECODER;
+  if (disable_software_video_decoder) {
+    if (!enable_hardware_video_decoder) {
+      LOG(ERROR) << "Software video decoding may only be disabled if hardware "
+                    "video decoding is enabled.";
+      context_request.Close(ZX_ERR_INVALID_ARGS);
+      return;
+    }
+
+    launch_command.AppendSwitch(switches::kDisableSoftwareVideoDecoders);
+  }
+
   // Validate embedder-supplied product, and optional version, and pass it to
   // the Context to include in the UserAgent.
   if (params.has_user_agent_product()) {
diff --git a/fuchsia/engine/renderer/web_engine_content_renderer_client.cc b/fuchsia/engine/renderer/web_engine_content_renderer_client.cc
index ee766c27..6ef7367f 100644
--- a/fuchsia/engine/renderer/web_engine_content_renderer_client.cc
+++ b/fuchsia/engine/renderer/web_engine_content_renderer_client.cc
@@ -8,7 +8,9 @@
 #include "components/cdm/renderer/widevine_key_system_properties.h"
 #include "content/public/renderer/render_frame.h"
 #include "fuchsia/engine/renderer/on_load_script_injector.h"
+#include "fuchsia/engine/switches.h"
 #include "media/base/eme_constants.h"
+#include "media/base/video_codecs.h"
 #include "services/service_manager/public/cpp/binder_registry.h"
 #include "third_party/blink/public/common/associated_interfaces/associated_interface_registry.h"
 #include "third_party/widevine/cdm/widevine_cdm_common.h"
@@ -51,3 +53,23 @@
       media::EmeFeatureSupport::ALWAYS_ENABLED,     // persistent state
       media::EmeFeatureSupport::ALWAYS_ENABLED));   // distinctive identifier
 }
+
+bool WebEngineContentRendererClient::IsSupportedVideoType(
+    const media::VideoType& type) {
+  // Fall back to default codec querying logic if software codecs aren't
+  // disabled.
+  if (!base::CommandLine::ForCurrentProcess()->HasSwitch(
+          switches::kDisableSoftwareVideoDecoders)) {
+    return ContentRendererClient::IsSupportedVideoType(type);
+  }
+
+  // TODO(fxb/36000): Replace these hardcoded checks with a query to the
+  // fuchsia.mediacodec FIDL service.
+  if (type.codec == media::kCodecH264 && type.level <= 41)
+    return true;
+
+  if (type.codec == media::kCodecVP9 && type.level <= 40)
+    return true;
+
+  return false;
+}
diff --git a/fuchsia/engine/renderer/web_engine_content_renderer_client.h b/fuchsia/engine/renderer/web_engine_content_renderer_client.h
index 6d0bab09..0e196cc5 100644
--- a/fuchsia/engine/renderer/web_engine_content_renderer_client.h
+++ b/fuchsia/engine/renderer/web_engine_content_renderer_client.h
@@ -18,6 +18,7 @@
   void AddSupportedKeySystems(
       std::vector<std::unique_ptr<media::KeySystemProperties>>* key_systems)
       override;
+  bool IsSupportedVideoType(const media::VideoType& type) override;
 
  private:
   DISALLOW_COPY_AND_ASSIGN(WebEngineContentRendererClient);
diff --git a/fuchsia/engine/switches.cc b/fuchsia/engine/switches.cc
index 17e3801..6eb893b 100644
--- a/fuchsia/engine/switches.cc
+++ b/fuchsia/engine/switches.cc
@@ -8,5 +8,6 @@
 
 const char kEnableWidevine[] = "enable-widevine";
 const char kPlayreadyKeySystem[] = "playready-key-system";
+const char kDisableSoftwareVideoDecoders[] = "disable-software-video-decoders";
 
 }  // namespace switches
diff --git a/fuchsia/engine/switches.h b/fuchsia/engine/switches.h
index b149541c..2fb6157 100644
--- a/fuchsia/engine/switches.h
+++ b/fuchsia/engine/switches.h
@@ -13,6 +13,10 @@
 // Enables PlayReady CDM and specifies the corresponding key system string.
 extern const char kPlayreadyKeySystem[];
 
+// Prevents the use of video codecs that are not hardware-accelerated.
+extern const char
+    kDisableSoftwareVideoDecoders[];  // "disable-software-video-decoders"
+
 }  // namespace switches
 
-#endif  // FUCHSIA_ENGINE_SWITCHES_H_
\ No newline at end of file
+#endif  // FUCHSIA_ENGINE_SWITCHES_H_
diff --git a/fuchsia/engine/test/data/bear-vp8a.webm b/fuchsia/engine/test/data/bear-vp8a.webm
new file mode 100644
index 0000000..7d06257
--- /dev/null
+++ b/fuchsia/engine/test/data/bear-vp8a.webm
Binary files differ
diff --git a/fuchsia/engine/test/data/can_play_vp8.html b/fuchsia/engine/test/data/can_play_vp8.html
new file mode 100644
index 0000000..e8f3f58
--- /dev/null
+++ b/fuchsia/engine/test/data/can_play_vp8.html
@@ -0,0 +1,9 @@
+<html>
+  <head></head>
+  <body>
+    <script>
+      document.title = 'can play vp8: ' +
+          MediaSource.isTypeSupported('video/webm;codecs="vp8"');
+    </script>
+  </body>
+</html>
diff --git a/fuchsia/engine/test/data/play_vp8.html b/fuchsia/engine/test/data/play_vp8.html
new file mode 100644
index 0000000..6519d89
--- /dev/null
+++ b/fuchsia/engine/test/data/play_vp8.html
@@ -0,0 +1,10 @@
+<html>
+  <body>
+    <script>
+      var bear = document.createElement('video');
+      bear.onerror = function() { document.title = 'error'; }
+      bear.onloadeddata = function() { document.title = 'loaded'; }
+      bear.src = 'bear-vp8a.webm';
+    </script>
+  </body>
+</html>
diff --git a/fuchsia/runners/BUILD.gn b/fuchsia/runners/BUILD.gn
index ed8fb9e..7164540 100644
--- a/fuchsia/runners/BUILD.gn
+++ b/fuchsia/runners/BUILD.gn
@@ -13,11 +13,19 @@
   # Enable remote debugging for WebContentRunner instances on this port.
   # Set to 0 to disable.
   enable_remote_debugging_on_port = 0
+
+  # Allow the Cast Runner to use software decoders for rendering video.
+  # TODO(crbug.com/1000858): Revisit this value once hardware playback is fixed
+  #                          (fxb/13659).
+  enable_software_video_decoders = true
 }
 
 buildflag_header("buildflags") {
   header = "buildflags.h"
-  flags = [ "ENABLE_REMOTE_DEBUGGING_ON_PORT=$enable_remote_debugging_on_port" ]
+  flags = [
+    "ENABLE_REMOTE_DEBUGGING_ON_PORT=$enable_remote_debugging_on_port",
+    "ENABLE_SOFTWARE_VIDEO_DECODERS=$enable_software_video_decoders",
+  ]
   visibility = [ ":*" ]
 }
 
@@ -89,6 +97,7 @@
     "cast/main.cc",
   ]
   deps = [
+    ":buildflags",
     ":cast_runner_core",
     ":common",
     "//base",
diff --git a/fuchsia/runners/cast/main.cc b/fuchsia/runners/cast/main.cc
index 65c55dd..4ce8915 100644
--- a/fuchsia/runners/cast/main.cc
+++ b/fuchsia/runners/cast/main.cc
@@ -4,25 +4,31 @@
 
 #include <lib/sys/cpp/component_context.h>
 
+#include "base/command_line.h"
 #include "base/fuchsia/default_context.h"
 #include "base/message_loop/message_pump_type.h"
 #include "base/run_loop.h"
 #include "base/task/single_thread_task_executor.h"
+#include "build/buildflag.h"
+#include "fuchsia/runners/buildflags.h"
 #include "fuchsia/runners/cast/cast_runner.h"
 
 int main(int argc, char** argv) {
   base::SingleThreadTaskExecutor io_task_executor(base::MessagePumpType::IO);
   base::RunLoop run_loop;
 
-  constexpr fuchsia::web::ContextFeatureFlags kCastRunnerFeatures =
+  fuchsia::web::ContextFeatureFlags features =
       fuchsia::web::ContextFeatureFlags::NETWORK |
       fuchsia::web::ContextFeatureFlags::AUDIO |
       fuchsia::web::ContextFeatureFlags::VULKAN |
       fuchsia::web::ContextFeatureFlags::HARDWARE_VIDEO_DECODER;
 
+  if (!BUILDFLAG(ENABLE_SOFTWARE_VIDEO_DECODERS))
+    features |= fuchsia::web::ContextFeatureFlags::HARDWARE_VIDEO_DECODER_ONLY;
+
   CastRunner runner(
       base::fuchsia::ComponentContextForCurrentProcess()->outgoing().get(),
-      WebContentRunner::CreateIncognitoWebContext(kCastRunnerFeatures));
+      WebContentRunner::CreateIncognitoWebContext(features));
 
   base::fuchsia::ComponentContextForCurrentProcess()
       ->outgoing()
diff --git a/gpu/command_buffer/service/BUILD.gn b/gpu/command_buffer/service/BUILD.gn
index 93410f3b..d379352 100644
--- a/gpu/command_buffer/service/BUILD.gn
+++ b/gpu/command_buffer/service/BUILD.gn
@@ -382,9 +382,17 @@
     sources += [
       "ahardwarebuffer_utils.cc",
       "ahardwarebuffer_utils.h",
+      "image_reader_gl_owner.cc",
+      "image_reader_gl_owner.h",
       "shared_image_backing_factory_ahardwarebuffer.cc",
       "shared_image_backing_factory_ahardwarebuffer.h",
+      "shared_image_video.cc",
+      "shared_image_video.h",
       "stream_texture_shared_image_interface.h",
+      "surface_texture_gl_owner.cc",
+      "surface_texture_gl_owner.h",
+      "texture_owner.cc",
+      "texture_owner.h",
     ]
 
     # TODO(cblume): http://crbug.com/911313
@@ -409,36 +417,51 @@
   }
 }
 
-if (is_android) {
-  component("shared_image_video") {
-    sources = [
-      "shared_image_video.cc",
-      "shared_image_video.h",
-    ]
-    configs += [ "//gpu:gpu_gles2_implementation" ]
-    deps = [
-      "//base",
-      "//components/viz/common:resource_format_utils",
-      "//components/viz/common:vulkan_context_provider",
-      "//gpu/command_buffer/service:gles2_sources",
-      "//gpu/command_buffer/service:service_sources",
-      "//gpu/ipc/common:android_texture_owner",
-      "//gpu/ipc/common:common",
-      "//ui/gl",
-    ]
-    if (enable_vulkan) {
-      deps += [ "//gpu/vulkan:vulkan" ]
-    }
-
-    visibility = [
-      "//gpu/*",
-      "//media/gpu:gpu",
-    ]
-  }
-}
-
 proto_library("disk_cache_proto") {
   sources = [
     "disk_cache_proto.proto",
   ]
 }
+
+if (is_android) {
+  jumbo_static_library("android_texture_owner_test_support") {
+    testonly = true
+    sources = [
+      "mock_abstract_texture.cc",
+      "mock_abstract_texture.h",
+      "mock_texture_owner.cc",
+      "mock_texture_owner.h",
+    ]
+    deps = [
+      ":gles2",
+      "//base/test:test_support",
+      "//gpu:test_support",
+      "//testing/gmock",
+      "//testing/gtest",
+      "//ui/gl",
+      "//ui/gl/init",
+    ]
+  }
+}
+
+if (is_android) {
+  source_set("android_texture_owner_unittests") {
+    testonly = true
+    sources = [
+      "image_reader_gl_owner_unittest.cc",
+      "surface_texture_gl_owner_unittest.cc",
+    ]
+
+    deps = [
+      ":android_texture_owner_test_support",
+      ":gles2",
+      "//base/test:test_support",
+      "//gpu:test_support",
+      "//media/base:base",
+      "//testing/gmock",
+      "//testing/gtest",
+      "//ui/gl",
+      "//ui/gl/init",
+    ]
+  }
+}
diff --git a/gpu/command_buffer/service/DEPS b/gpu/command_buffer/service/DEPS
index ee6d2c14..1eed74d 100644
--- a/gpu/command_buffer/service/DEPS
+++ b/gpu/command_buffer/service/DEPS
@@ -8,3 +8,9 @@
   "+components/viz/common/resources/resource_format_utils.h",
   "+components/viz/common/resources/resource_sizes.h",
 ]
+
+specific_include_rules = {
+  "image_reader_gl_owner_unittest.cc": [
+    "+media/base/media_switches.h",
+  ],
+}
diff --git a/gpu/command_buffer/service/context_state.cc b/gpu/command_buffer/service/context_state.cc
index 9a6661e21..166fc02 100644
--- a/gpu/command_buffer/service/context_state.cc
+++ b/gpu/command_buffer/service/context_state.cc
@@ -8,6 +8,7 @@
 
 #include <cmath>
 
+#include "base/numerics/ranges.h"
 #include "gpu/command_buffer/common/gles2_cmd_utils.h"
 #include "gpu/command_buffer/service/buffer_manager.h"
 #include "gpu/command_buffer/service/framebuffer_manager.h"
@@ -371,7 +372,7 @@
 
 void ContextState::DoLineWidth(GLfloat width) const {
   api()->glLineWidthFn(
-      std::min(std::max(width, line_width_min_), line_width_max_));
+      base::ClampToRange(width, line_width_min_, line_width_max_));
 }
 
 void ContextState::RestoreBufferBindings() const {
diff --git a/gpu/command_buffer/service/gles2_cmd_decoder.cc b/gpu/command_buffer/service/gles2_cmd_decoder.cc
index 1381e62..c4da18d 100644
--- a/gpu/command_buffer/service/gles2_cmd_decoder.cc
+++ b/gpu/command_buffer/service/gles2_cmd_decoder.cc
@@ -5804,8 +5804,8 @@
   static_assert(sizeof(GLuint) >= sizeof(int), "Unexpected GLuint size.");
   static const GLuint kMaxDimension =
       static_cast<GLuint>(std::numeric_limits<int>::max());
-  width = std::min(std::max(1U, width), kMaxDimension);
-  height = std::min(std::max(1U, height), kMaxDimension);
+  width = base::ClampToRange(width, 1U, kMaxDimension);
+  height = base::ClampToRange(height, 1U, kMaxDimension);
 
   gl::GLSurface::ColorSpace surface_color_space =
       gl::GLSurface::ColorSpace::UNSPECIFIED;
@@ -8353,13 +8353,13 @@
 }
 
 void GLES2DecoderImpl::DoDepthRangef(GLclampf znear, GLclampf zfar) {
-  state_.z_near = std::min(1.0f, std::max(0.0f, znear));
-  state_.z_far = std::min(1.0f, std::max(0.0f, zfar));
+  state_.z_near = base::ClampToRange(znear, 0.0f, 1.0f);
+  state_.z_far = base::ClampToRange(zfar, 0.0f, 1.0f);
   api()->glDepthRangeFn(znear, zfar);
 }
 
 void GLES2DecoderImpl::DoSampleCoverage(GLclampf value, GLboolean invert) {
-  state_.sample_coverage_value = std::min(1.0f, std::max(0.0f, value));
+  state_.sample_coverage_value = base::ClampToRange(value, 0.0f, 1.0f);
   state_.sample_coverage_invert = (invert != 0);
   api()->glSampleCoverageFn(state_.sample_coverage_value, invert);
 }
@@ -9699,7 +9699,7 @@
 
 void GLES2DecoderImpl::DoLineWidth(GLfloat width) {
   api()->glLineWidthFn(
-      std::min(std::max(width, line_width_range_[0]), line_width_range_[1]));
+      base::ClampToRange(width, line_width_range_[0], line_width_range_[1]));
 }
 
 void GLES2DecoderImpl::DoLinkProgram(GLuint program_id) {
@@ -19921,7 +19921,7 @@
       hasValueError = std::isnan(value) || !std::isfinite(value) || value < 0;
       break;
     case GL_PATH_STROKE_BOUND_CHROMIUM:
-      value = std::max(std::min(1.0f, value), 0.0f);
+      value = base::ClampToRange(value, 0.0f, 1.0f);
       break;
     case GL_PATH_END_CAPS_CHROMIUM:
       hasValueError = !validators_->path_parameter_cap_values.IsValid(
@@ -19974,7 +19974,7 @@
       hasValueError = value < 0;
       break;
     case GL_PATH_STROKE_BOUND_CHROMIUM:
-      value = std::max(std::min(1, value), 0);
+      value = base::ClampToRange(value, 0, 1);
       break;
     case GL_PATH_END_CAPS_CHROMIUM:
       hasValueError = !validators_->path_parameter_cap_values.IsValid(value);
diff --git a/gpu/command_buffer/service/gles2_cmd_decoder_passthrough_doers.cc b/gpu/command_buffer/service/gles2_cmd_decoder_passthrough_doers.cc
index fac3406..a995422 100644
--- a/gpu/command_buffer/service/gles2_cmd_decoder_passthrough_doers.cc
+++ b/gpu/command_buffer/service/gles2_cmd_decoder_passthrough_doers.cc
@@ -6,6 +6,7 @@
 
 #include "base/bind_helpers.h"
 #include "base/metrics/histogram_macros.h"
+#include "base/numerics/ranges.h"
 #include "base/strings/string_number_conversions.h"
 #include "gpu/command_buffer/common/discardable_handle.h"
 #include "gpu/command_buffer/service/decoder_client.h"
@@ -3808,8 +3809,8 @@
   static_assert(sizeof(GLuint) >= sizeof(int), "Unexpected GLuint size.");
   static const GLuint kMaxDimension =
       static_cast<GLuint>(std::numeric_limits<int>::max());
-  gfx::Size safe_size(std::min(std::max(1U, width), kMaxDimension),
-                      std::min(std::max(1U, height), kMaxDimension));
+  gfx::Size safe_size(base::ClampToRange(width, 1U, kMaxDimension),
+                      base::ClampToRange(height, 1U, kMaxDimension));
   if (offscreen_) {
     if (!ResizeOffscreenFramebuffer(safe_size)) {
       LOG(ERROR) << "GLES2DecoderPassthroughImpl: Context lost because "
diff --git a/gpu/command_buffer/service/gles2_cmd_decoder_unittest_framebuffers.cc b/gpu/command_buffer/service/gles2_cmd_decoder_unittest_framebuffers.cc
index f9dcad3..349cacb 100644
--- a/gpu/command_buffer/service/gles2_cmd_decoder_unittest_framebuffers.cc
+++ b/gpu/command_buffer/service/gles2_cmd_decoder_unittest_framebuffers.cc
@@ -11,6 +11,7 @@
 #include <memory>
 
 #include "base/command_line.h"
+#include "base/numerics/ranges.h"
 #include "base/stl_util.h"
 #include "base/strings/string_number_conversions.h"
 #include "gpu/command_buffer/common/gles2_cmd_format.h"
@@ -626,8 +627,8 @@
   // is requesting a larger size.
   GLint read_x = std::max(0, in_read_x);
   GLint read_y = std::max(0, in_read_y);
-  GLint read_end_x = std::max(0, std::min(kWidth, in_read_x + in_read_width));
-  GLint read_end_y = std::max(0, std::min(kHeight, in_read_y + in_read_height));
+  GLint read_end_x = base::ClampToRange(in_read_x + in_read_width, 0, kWidth);
+  GLint read_end_y = base::ClampToRange(in_read_y + in_read_height, 0, kHeight);
   GLint read_width = read_end_x - read_x;
   GLint read_height = read_end_y - read_y;
   if (read_width > 0 && read_height > 0) {
diff --git a/gpu/ipc/common/android/image_reader_gl_owner.cc b/gpu/command_buffer/service/image_reader_gl_owner.cc
similarity index 99%
rename from gpu/ipc/common/android/image_reader_gl_owner.cc
rename to gpu/command_buffer/service/image_reader_gl_owner.cc
index 56014b15..9d1e717 100644
--- a/gpu/ipc/common/android/image_reader_gl_owner.cc
+++ b/gpu/command_buffer/service/image_reader_gl_owner.cc
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "gpu/ipc/common/android/image_reader_gl_owner.h"
+#include "gpu/command_buffer/service/image_reader_gl_owner.h"
 
 #include <android/native_window_jni.h>
 #include <jni.h>
diff --git a/gpu/ipc/common/android/image_reader_gl_owner.h b/gpu/command_buffer/service/image_reader_gl_owner.h
similarity index 92%
rename from gpu/ipc/common/android/image_reader_gl_owner.h
rename to gpu/command_buffer/service/image_reader_gl_owner.h
index bc661310..64db379 100644
--- a/gpu/ipc/common/android/image_reader_gl_owner.h
+++ b/gpu/command_buffer/service/image_reader_gl_owner.h
@@ -2,14 +2,15 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#ifndef GPU_IPC_COMMON_ANDROID_IMAGE_READER_GL_OWNER_H_
-#define GPU_IPC_COMMON_ANDROID_IMAGE_READER_GL_OWNER_H_
+#ifndef GPU_COMMAND_BUFFER_SERVICE_IMAGE_READER_GL_OWNER_H_
+#define GPU_COMMAND_BUFFER_SERVICE_IMAGE_READER_GL_OWNER_H_
 
 #include <memory>
 
 #include "base/android/android_image_reader_compat.h"
 #include "base/containers/flat_map.h"
-#include "gpu/ipc/common/android/texture_owner.h"
+#include "gpu/command_buffer/service/texture_owner.h"
+#include "gpu/gpu_gles2_export.h"
 #include "ui/gl/gl_fence_egl.h"
 #include "ui/gl/gl_image_ahardwarebuffer.h"
 
@@ -27,7 +28,7 @@
 // decoded media frames. Media frames can update the attached surface handle
 // with image data and this class helps to create an eglImage using that image
 // data present in the surface.
-class GPU_EXPORT ImageReaderGLOwner : public TextureOwner {
+class GPU_GLES2_EXPORT ImageReaderGLOwner : public TextureOwner {
  public:
   gl::GLContext* GetContext() const override;
   gl::GLSurface* GetSurface() const override;
@@ -132,4 +133,4 @@
 
 }  // namespace gpu
 
-#endif  // GPU_IPC_COMMON_ANDROID_IMAGE_READER_GL_OWNER_H_
+#endif  // GPU_COMMAND_BUFFER_SERVICE_IMAGE_READER_GL_OWNER_H_
diff --git a/gpu/ipc/common/android/image_reader_gl_owner_unittest.cc b/gpu/command_buffer/service/image_reader_gl_owner_unittest.cc
similarity index 96%
rename from gpu/ipc/common/android/image_reader_gl_owner_unittest.cc
rename to gpu/command_buffer/service/image_reader_gl_owner_unittest.cc
index dfe4d15..963be9c 100644
--- a/gpu/ipc/common/android/image_reader_gl_owner_unittest.cc
+++ b/gpu/command_buffer/service/image_reader_gl_owner_unittest.cc
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "gpu/ipc/common/android/texture_owner.h"
+#include "gpu/command_buffer/service/texture_owner.h"
 
 #include <stdint.h>
 #include <memory>
@@ -11,8 +11,8 @@
 #include "base/test/scoped_feature_list.h"
 #include "base/test/task_environment.h"
 #include "gpu/command_buffer/service/abstract_texture.h"
-#include "gpu/ipc/common/android/image_reader_gl_owner.h"
-#include "gpu/ipc/common/android/mock_abstract_texture.h"
+#include "gpu/command_buffer/service/image_reader_gl_owner.h"
+#include "gpu/command_buffer/service/mock_abstract_texture.h"
 #include "media/base/media_switches.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "ui/gl/gl_bindings.h"
diff --git a/gpu/ipc/common/android/mock_abstract_texture.cc b/gpu/command_buffer/service/mock_abstract_texture.cc
similarity index 89%
rename from gpu/ipc/common/android/mock_abstract_texture.cc
rename to gpu/command_buffer/service/mock_abstract_texture.cc
index f8cfe4c..58086e2 100644
--- a/gpu/ipc/common/android/mock_abstract_texture.cc
+++ b/gpu/command_buffer/service/mock_abstract_texture.cc
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "gpu/ipc/common/android/mock_abstract_texture.h"
+#include "gpu/command_buffer/service/mock_abstract_texture.h"
 
 namespace gpu {
 
diff --git a/gpu/ipc/common/android/mock_abstract_texture.h b/gpu/command_buffer/service/mock_abstract_texture.h
similarity index 88%
rename from gpu/ipc/common/android/mock_abstract_texture.h
rename to gpu/command_buffer/service/mock_abstract_texture.h
index 4419c7c9f..f4d903e 100644
--- a/gpu/ipc/common/android/mock_abstract_texture.h
+++ b/gpu/command_buffer/service/mock_abstract_texture.h
@@ -2,8 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#ifndef GPU_IPC_COMMON_ANDROID_MOCK_ABSTRACT_TEXTURE_H_
-#define GPU_IPC_COMMON_ANDROID_MOCK_ABSTRACT_TEXTURE_H_
+#ifndef GPU_COMMAND_BUFFER_SERVICE_MOCK_ABSTRACT_TEXTURE_H_
+#define GPU_COMMAND_BUFFER_SERVICE_MOCK_ABSTRACT_TEXTURE_H_
 
 #include "base/memory/weak_ptr.h"
 #include "gpu/command_buffer/service/abstract_texture.h"
@@ -42,4 +42,4 @@
 
 }  // namespace gpu
 
-#endif  // GPU_IPC_COMMON_ANDROID_MOCK_ABSTRACT_TEXTURE_H_
+#endif  // GPU_COMMAND_BUFFER_SERVICE_MOCK_ABSTRACT_TEXTURE_H_
diff --git a/gpu/ipc/common/android/mock_texture_owner.cc b/gpu/command_buffer/service/mock_texture_owner.cc
similarity index 90%
rename from gpu/ipc/common/android/mock_texture_owner.cc
rename to gpu/command_buffer/service/mock_texture_owner.cc
index 428b8ef..9b6bb6e 100644
--- a/gpu/ipc/common/android/mock_texture_owner.cc
+++ b/gpu/command_buffer/service/mock_texture_owner.cc
@@ -2,9 +2,9 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "gpu/ipc/common/android/mock_texture_owner.h"
+#include "gpu/command_buffer/service/mock_texture_owner.h"
 
-#include "gpu/ipc/common/android/mock_abstract_texture.h"
+#include "gpu/command_buffer/service/mock_abstract_texture.h"
 
 namespace gpu {
 
diff --git a/gpu/ipc/common/android/mock_texture_owner.h b/gpu/command_buffer/service/mock_texture_owner.h
similarity index 87%
rename from gpu/ipc/common/android/mock_texture_owner.h
rename to gpu/command_buffer/service/mock_texture_owner.h
index 595c2138..85714dc7 100644
--- a/gpu/ipc/common/android/mock_texture_owner.h
+++ b/gpu/command_buffer/service/mock_texture_owner.h
@@ -2,13 +2,13 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#ifndef GPU_IPC_COMMON_ANDROID_MOCK_TEXTURE_OWNER_H_
-#define GPU_IPC_COMMON_ANDROID_MOCK_TEXTURE_OWNER_H_
+#ifndef GPU_COMMAND_BUFFER_SERVICE_MOCK_TEXTURE_OWNER_H_
+#define GPU_COMMAND_BUFFER_SERVICE_MOCK_TEXTURE_OWNER_H_
 
 #include <memory>
 
 #include "base/android/scoped_hardware_buffer_fence_sync.h"
-#include "gpu/ipc/common/android/texture_owner.h"
+#include "gpu/command_buffer/service/texture_owner.h"
 #include "testing/gmock/include/gmock/gmock.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "ui/gl/gl_bindings.h"
@@ -55,4 +55,4 @@
 
 }  // namespace gpu
 
-#endif  // GPU_IPC_COMMON_ANDROID_MOCK_TEXTURE_OWNER_H_
+#endif  // GPU_COMMAND_BUFFER_SERVICE_MOCK_TEXTURE_OWNER_H_
diff --git a/gpu/command_buffer/service/shared_image_backing_factory_ahardwarebuffer.cc b/gpu/command_buffer/service/shared_image_backing_factory_ahardwarebuffer.cc
index 2035b4a..eb448c9 100644
--- a/gpu/command_buffer/service/shared_image_backing_factory_ahardwarebuffer.cc
+++ b/gpu/command_buffer/service/shared_image_backing_factory_ahardwarebuffer.cc
@@ -54,7 +54,7 @@
 namespace gpu {
 namespace {
 
-sk_sp<SkPromiseImageTexture> CreatePromiseTexture(
+sk_sp<SkPromiseImageTexture> CreatePromiseTextureAHB(
     viz::VulkanContextProvider* context_provider,
     base::android::ScopedHardwareBufferHandle ahb_handle,
     gfx::Size size,
@@ -98,8 +98,8 @@
   return promise_texture;
 }
 
-void DestroyVkPromiseTexture(viz::VulkanContextProvider* context_provider,
-                             sk_sp<SkPromiseImageTexture> promise_texture) {
+void DestroyVkPromiseTextureAHB(viz::VulkanContextProvider* context_provider,
+                                sk_sp<SkPromiseImageTexture> promise_texture) {
   DCHECK(promise_texture);
   DCHECK(promise_texture->unique());
 
@@ -268,8 +268,8 @@
   }
 
   ~SharedImageRepresentationSkiaVkAHB() override {
-    DestroyVkPromiseTexture(context_state_->vk_context_provider(),
-                            std::move(promise_texture_));
+    DestroyVkPromiseTextureAHB(context_state_->vk_context_provider(),
+                               std::move(promise_texture_));
     DCHECK_EQ(mode_, RepresentationAccessMode::kNone);
     DCHECK(!surface_);
   }
@@ -530,7 +530,7 @@
   // Check whether we are in Vulkan mode OR GL mode and accordingly create
   // Skia representation.
   if (context_state->GrContextIsVulkan()) {
-    sk_sp<SkPromiseImageTexture> promise_texture = CreatePromiseTexture(
+    sk_sp<SkPromiseImageTexture> promise_texture = CreatePromiseTextureAHB(
         context_state->vk_context_provider(), GetAhbHandle(), size(), format());
     if (!promise_texture)
       return nullptr;
diff --git a/gpu/command_buffer/service/shared_image_video.cc b/gpu/command_buffer/service/shared_image_video.cc
index 28c7c9e..83b9739 100644
--- a/gpu/command_buffer/service/shared_image_video.cc
+++ b/gpu/command_buffer/service/shared_image_video.cc
@@ -20,7 +20,7 @@
 #include "gpu/command_buffer/service/shared_image_representation_skia_gl.h"
 #include "gpu/command_buffer/service/skia_utils.h"
 #include "gpu/command_buffer/service/texture_manager.h"
-#include "gpu/ipc/common/android/texture_owner.h"
+#include "gpu/command_buffer/service/texture_owner.h"
 #include "gpu/vulkan/vulkan_device_queue.h"
 #include "gpu/vulkan/vulkan_fence_helper.h"
 #include "gpu/vulkan/vulkan_function_pointers.h"
@@ -33,7 +33,7 @@
 namespace gpu {
 
 namespace {
-sk_sp<SkPromiseImageTexture> CreatePromiseTexture(
+sk_sp<SkPromiseImageTexture> CreatePromiseTextureVideo(
     viz::VulkanContextProvider* context_provider,
     base::android::ScopedHardwareBufferHandle ahb_handle,
     gfx::Size size,
@@ -93,8 +93,9 @@
   return promise_texture;
 }
 
-void DestroyVkPromiseTexture(viz::VulkanContextProvider* context_provider,
-                             sk_sp<SkPromiseImageTexture> promise_texture) {
+void DestroyVkPromiseTextureVideo(
+    viz::VulkanContextProvider* context_provider,
+    sk_sp<SkPromiseImageTexture> promise_texture) {
   DCHECK(promise_texture);
   DCHECK(promise_texture->unique());
 
@@ -295,8 +296,8 @@
     // |promise_texture_| could be null if we never being read.
     if (!promise_texture_)
       return;
-    DestroyVkPromiseTexture(context_state_->vk_context_provider(),
-                            std::move(promise_texture_));
+    DestroyVkPromiseTextureVideo(context_state_->vk_context_provider(),
+                                 std::move(promise_texture_));
   }
 
   sk_sp<SkSurface> BeginWriteAccess(
@@ -339,7 +340,7 @@
 
     if (!promise_texture_) {
       // Create the promise texture.
-      promise_texture_ = CreatePromiseTexture(
+      promise_texture_ = CreatePromiseTextureVideo(
           context_state_->vk_context_provider(),
           scoped_hardware_buffer_->TakeBuffer(), size(), format());
     }
diff --git a/gpu/ipc/common/android/surface_texture_gl_owner.cc b/gpu/command_buffer/service/surface_texture_gl_owner.cc
similarity index 97%
rename from gpu/ipc/common/android/surface_texture_gl_owner.cc
rename to gpu/command_buffer/service/surface_texture_gl_owner.cc
index 5d9e154..ccf5754 100644
--- a/gpu/ipc/common/android/surface_texture_gl_owner.cc
+++ b/gpu/command_buffer/service/surface_texture_gl_owner.cc
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "gpu/ipc/common/android/surface_texture_gl_owner.h"
+#include "gpu/command_buffer/service/surface_texture_gl_owner.h"
 
 #include <memory>
 
diff --git a/gpu/ipc/common/android/surface_texture_gl_owner.h b/gpu/command_buffer/service/surface_texture_gl_owner.h
similarity index 89%
rename from gpu/ipc/common/android/surface_texture_gl_owner.h
rename to gpu/command_buffer/service/surface_texture_gl_owner.h
index 1b5b5fb2..495d143 100644
--- a/gpu/ipc/common/android/surface_texture_gl_owner.h
+++ b/gpu/command_buffer/service/surface_texture_gl_owner.h
@@ -2,12 +2,12 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#ifndef GPU_IPC_COMMON_ANDROID_SURFACE_TEXTURE_GL_OWNER_H_
-#define GPU_IPC_COMMON_ANDROID_SURFACE_TEXTURE_GL_OWNER_H_
+#ifndef GPU_COMMAND_BUFFER_SERVICE_SURFACE_TEXTURE_GL_OWNER_H_
+#define GPU_COMMAND_BUFFER_SERVICE_SURFACE_TEXTURE_GL_OWNER_H_
 
 #include "base/threading/thread_checker.h"
+#include "gpu/command_buffer/service/texture_owner.h"
 #include "gpu/gpu_export.h"
-#include "gpu/ipc/common/android/texture_owner.h"
 #include "ui/gl/android/surface_texture.h"
 
 namespace base {
@@ -62,4 +62,4 @@
 
 }  // namespace gpu
 
-#endif  // GPU_IPC_COMMON_ANDROID_SURFACE_TEXTURE_GL_OWNER_H_
+#endif  // GPU_COMMAND_BUFFER_SERVICE_SURFACE_TEXTURE_GL_OWNER_H_
diff --git a/gpu/ipc/common/android/surface_texture_gl_owner_unittest.cc b/gpu/command_buffer/service/surface_texture_gl_owner_unittest.cc
similarity index 96%
rename from gpu/ipc/common/android/surface_texture_gl_owner_unittest.cc
rename to gpu/command_buffer/service/surface_texture_gl_owner_unittest.cc
index ca0b8f4..01d3ece 100644
--- a/gpu/ipc/common/android/surface_texture_gl_owner_unittest.cc
+++ b/gpu/command_buffer/service/surface_texture_gl_owner_unittest.cc
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "gpu/ipc/common/android/surface_texture_gl_owner.h"
+#include "gpu/command_buffer/service/surface_texture_gl_owner.h"
 
 #include <stdint.h>
 
@@ -11,7 +11,7 @@
 #include "base/bind.h"
 #include "base/logging.h"
 #include "base/test/task_environment.h"
-#include "gpu/ipc/common/android/mock_abstract_texture.h"
+#include "gpu/command_buffer/service/mock_abstract_texture.h"
 #include "testing/gmock/include/gmock/gmock.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "ui/gl/gl_bindings.h"
diff --git a/gpu/ipc/common/android/texture_owner.cc b/gpu/command_buffer/service/texture_owner.cc
similarity index 93%
rename from gpu/ipc/common/android/texture_owner.cc
rename to gpu/command_buffer/service/texture_owner.cc
index 6bb9428998..309b5b9 100644
--- a/gpu/ipc/common/android/texture_owner.cc
+++ b/gpu/command_buffer/service/texture_owner.cc
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "gpu/ipc/common/android/texture_owner.h"
+#include "gpu/command_buffer/service/texture_owner.h"
 
 #include <memory>
 
@@ -13,9 +13,9 @@
 #include "gpu/command_buffer/service/abstract_texture_impl_shared_context_state.h"
 #include "gpu/command_buffer/service/decoder_context.h"
 #include "gpu/command_buffer/service/feature_info.h"
+#include "gpu/command_buffer/service/image_reader_gl_owner.h"
+#include "gpu/command_buffer/service/surface_texture_gl_owner.h"
 #include "gpu/command_buffer/service/texture_base.h"
-#include "gpu/ipc/common/android/image_reader_gl_owner.h"
-#include "gpu/ipc/common/android/surface_texture_gl_owner.h"
 #include "ui/gl/scoped_binders.h"
 
 namespace gpu {
diff --git a/gpu/ipc/common/android/texture_owner.h b/gpu/command_buffer/service/texture_owner.h
similarity index 95%
rename from gpu/ipc/common/android/texture_owner.h
rename to gpu/command_buffer/service/texture_owner.h
index b4746cf..8711d79 100644
--- a/gpu/ipc/common/android/texture_owner.h
+++ b/gpu/command_buffer/service/texture_owner.h
@@ -2,15 +2,15 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#ifndef GPU_IPC_COMMON_ANDROID_TEXTURE_OWNER_H_
-#define GPU_IPC_COMMON_ANDROID_TEXTURE_OWNER_H_
+#ifndef GPU_COMMAND_BUFFER_SERVICE_TEXTURE_OWNER_H_
+#define GPU_COMMAND_BUFFER_SERVICE_TEXTURE_OWNER_H_
 
 #include <android/hardware_buffer.h>
 
 #include "base/memory/ref_counted.h"
 #include "base/memory/ref_counted_delete_on_sequence.h"
 #include "base/single_thread_task_runner.h"
-#include "gpu/gpu_export.h"
+#include "gpu/gpu_gles2_export.h"
 #include "ui/gl/android/scoped_java_surface.h"
 #include "ui/gl/gl_bindings.h"
 #include "ui/gl/gl_context.h"
@@ -37,7 +37,7 @@
 // be called on any thread. It's safe to keep and drop refptrs to it on any
 // thread; it will be automatically destructed on the thread it was constructed
 // on.
-class GPU_EXPORT TextureOwner
+class GPU_GLES2_EXPORT TextureOwner
     : public base::RefCountedDeleteOnSequence<TextureOwner> {
  public:
   // Creates a GL texture using the current platform GL context and returns a
@@ -136,4 +136,4 @@
 
 }  // namespace gpu
 
-#endif  // GPU_IPC_COMMON_ANDROID_TEXTURE_OWNER_H_
+#endif  // GPU_COMMAND_BUFFER_SERVICE_TEXTURE_OWNER_H_
diff --git a/gpu/command_buffer/tests/gl_ext_blend_func_extended_unittest.cc b/gpu/command_buffer/tests/gl_ext_blend_func_extended_unittest.cc
index be7548a0..5e4a7b1 100644
--- a/gpu/command_buffer/tests/gl_ext_blend_func_extended_unittest.cc
+++ b/gpu/command_buffer/tests/gl_ext_blend_func_extended_unittest.cc
@@ -8,6 +8,7 @@
 #include <GLES3/gl3.h>
 #include <stdint.h>
 
+#include "base/numerics/ranges.h"
 #include "gpu/command_buffer/tests/gl_manager.h"
 #include "gpu/command_buffer/tests/gl_test_utils.h"
 #include "gpu/config/gpu_test_config.h"
@@ -54,7 +55,7 @@
          dst[3] * Weight<Ad, 3>(dst, src, src1);
   for (int i = 0; i < 4; ++i) {
     result[i] = static_cast<uint8_t>(
-        std::floor(std::max(0.0f, std::min(1.0f, r[i])) * 255.0f));
+        std::floor(base::ClampToRange(r[i], 0.0f, 1.0f) * 255.0f));
   }
 }
 
diff --git a/gpu/ipc/common/BUILD.gn b/gpu/ipc/common/BUILD.gn
index 49c798f..60eefa0 100644
--- a/gpu/ipc/common/BUILD.gn
+++ b/gpu/ipc/common/BUILD.gn
@@ -142,6 +142,8 @@
 
   if (is_android) {
     sources += [
+      "android/scoped_surface_request_conduit.cc",
+      "android/scoped_surface_request_conduit.h",
       "gpu_surface_lookup.cc",
       "gpu_surface_lookup.h",
       "gpu_surface_tracker.cc",
@@ -173,78 +175,6 @@
   }
 }
 
-if (is_android) {
-  component("android_texture_owner") {
-    sources = [
-      "android/image_reader_gl_owner.cc",
-      "android/image_reader_gl_owner.h",
-      "android/scoped_surface_request_conduit.cc",
-      "android/scoped_surface_request_conduit.h",
-      "android/surface_texture_gl_owner.cc",
-      "android/surface_texture_gl_owner.h",
-      "android/texture_owner.cc",
-      "android/texture_owner.h",
-    ]
-    configs += [ "//gpu:gpu_implementation" ]
-    deps = [
-      ":android_image_reader_utils",
-      "//base",
-      "//gpu/command_buffer/service:gles2_sources",
-      "//gpu/command_buffer/service:service_sources",
-      "//ui/gl",
-    ]
-    libs = [ "android" ]
-    visibility = [
-      "//gpu/*",
-      "//media/gpu:gpu",
-      "//content/browser:browser",
-    ]
-  }
-}
-
-if (is_android) {
-  jumbo_static_library("android_texture_owner_test_support") {
-    testonly = true
-    sources = [
-      "android/mock_abstract_texture.cc",
-      "android/mock_abstract_texture.h",
-      "android/mock_texture_owner.cc",
-      "android/mock_texture_owner.h",
-    ]
-    deps = [
-      ":android_texture_owner",
-      "//base/test:test_support",
-      "//gpu:test_support",
-      "//testing/gmock",
-      "//testing/gtest",
-      "//ui/gl",
-      "//ui/gl/init",
-    ]
-  }
-}
-
-if (is_android) {
-  source_set("android_texture_owner_unittests") {
-    testonly = true
-    sources = [
-      "android/image_reader_gl_owner_unittest.cc",
-      "android/surface_texture_gl_owner_unittest.cc",
-    ]
-
-    deps = [
-      ":android_texture_owner",
-      ":android_texture_owner_test_support",
-      "//base/test:test_support",
-      "//gpu:test_support",
-      "//media/base:base",
-      "//testing/gmock",
-      "//testing/gtest",
-      "//ui/gl",
-      "//ui/gl/init",
-    ]
-  }
-}
-
 # Depend on this to use surface_handle.h without pulling in all of gpu ipc.
 source_set("surface_handle_type") {
   public = [
diff --git a/gpu/ipc/common/DEPS b/gpu/ipc/common/DEPS
index 418e224..3725d16 100644
--- a/gpu/ipc/common/DEPS
+++ b/gpu/ipc/common/DEPS
@@ -5,5 +5,4 @@
   "+mojo",
   "+ui/base",
   "+ui/latency",
-  "+media/base/media_switches.h",
 ]
diff --git a/gpu/ipc/service/BUILD.gn b/gpu/ipc/service/BUILD.gn
index 69386b2..96851a363 100644
--- a/gpu/ipc/service/BUILD.gn
+++ b/gpu/ipc/service/BUILD.gn
@@ -115,10 +115,6 @@
       "stream_texture_android.h",
     ]
     libs += [ "android" ]
-    deps += [
-      "//gpu/command_buffer/service:shared_image_video",
-      "//gpu/ipc/common:android_texture_owner",
-    ]
   }
   if (is_linux) {
     sources += [ "image_transport_surface_linux.cc" ]
diff --git a/gpu/ipc/service/shared_image_stub.cc b/gpu/ipc/service/shared_image_stub.cc
index 04a1c83..15fccd35 100644
--- a/gpu/ipc/service/shared_image_stub.cc
+++ b/gpu/ipc/service/shared_image_stub.cc
@@ -89,6 +89,61 @@
   return handled;
 }
 
+bool SharedImageStub::CreateSharedImage(const Mailbox& mailbox,
+                                        int client_id,
+                                        gfx::GpuMemoryBufferHandle handle,
+                                        gfx::BufferFormat format,
+                                        SurfaceHandle surface_handle,
+                                        const gfx::Size& size,
+                                        const gfx::ColorSpace& color_space,
+                                        uint32_t usage) {
+  TRACE_EVENT2("gpu", "SharedImageStub::CreateSharedImage", "width",
+               size.width(), "height", size.height());
+  if (!mailbox.IsSharedImage()) {
+    LOG(ERROR) << "SharedImageStub: Trying to create a SharedImage with a "
+                  "non-SharedImage mailbox.";
+    OnError();
+    return false;
+  }
+  if (!MakeContextCurrent()) {
+    OnError();
+    return false;
+  }
+  if (!factory_->CreateSharedImage(mailbox, client_id, std::move(handle),
+                                   format, surface_handle, size, color_space,
+                                   usage)) {
+    LOG(ERROR) << "SharedImageStub: Unable to create shared image";
+    OnError();
+    return false;
+  }
+  return true;
+}
+
+bool SharedImageStub::UpdateSharedImage(
+    const Mailbox& mailbox,
+    const gfx::GpuFenceHandle& in_fence_handle) {
+  TRACE_EVENT0("gpu", "SharedImageStub::UpdateSharedImage");
+  std::unique_ptr<gfx::GpuFence> in_fence;
+  if (!in_fence_handle.is_null())
+    in_fence.reset(new gfx::GpuFence(in_fence_handle));
+  if (!mailbox.IsSharedImage()) {
+    LOG(ERROR) << "SharedImageStub: Trying to access a SharedImage with a "
+                  "non-SharedImage mailbox.";
+    OnError();
+    return false;
+  }
+  if (!MakeContextCurrent()) {
+    OnError();
+    return false;
+  }
+  if (!factory_->UpdateSharedImage(mailbox, std::move(in_fence))) {
+    LOG(ERROR) << "SharedImageStub: Unable to update shared image";
+    OnError();
+    return false;
+  }
+  return true;
+}
+
 void SharedImageStub::OnCreateSharedImage(
     const GpuChannelMsg_CreateSharedImage_Params& params) {
   TRACE_EVENT2("gpu", "SharedImageStub::OnCreateSharedImage", "width",
@@ -182,26 +237,12 @@
     GpuChannelMsg_CreateGMBSharedImage_Params params) {
   TRACE_EVENT2("gpu", "SharedImageStub::OnCreateGMBSharedImage", "width",
                params.size.width(), "height", params.size.height());
-  if (!params.mailbox.IsSharedImage()) {
-    LOG(ERROR) << "SharedImageStub: Trying to create a SharedImage with a "
-                  "non-SharedImage mailbox.";
-    OnError();
-    return;
-  }
-
-  if (!MakeContextCurrent()) {
-    OnError();
-    return;
-  }
-
   // TODO(piman): add support for SurfaceHandle (for backbuffers for ozone/drm).
-  SurfaceHandle surface_handle = kNullSurfaceHandle;
-  if (!factory_->CreateSharedImage(params.mailbox, channel_->client_id(),
-                                   std::move(params.handle), params.format,
-                                   surface_handle, params.size,
-                                   params.color_space, params.usage)) {
-    LOG(ERROR) << "SharedImageStub: Unable to create shared image";
-    OnError();
+  constexpr SurfaceHandle surface_handle = kNullSurfaceHandle;
+  if (!CreateSharedImage(params.mailbox, channel_->client_id(),
+                         std::move(params.handle), params.format,
+                         surface_handle, params.size, params.color_space,
+                         params.usage)) {
     return;
   }
 
@@ -218,26 +259,9 @@
     uint32_t release_id,
     const gfx::GpuFenceHandle& in_fence_handle) {
   TRACE_EVENT0("gpu", "SharedImageStub::OnUpdateSharedImage");
-  std::unique_ptr<gfx::GpuFence> in_fence;
-  if (!in_fence_handle.is_null())
-    in_fence.reset(new gfx::GpuFence(in_fence_handle));
-  if (!mailbox.IsSharedImage()) {
-    LOG(ERROR) << "SharedImageStub: Trying to access a SharedImage with a "
-                  "non-SharedImage mailbox.";
-    OnError();
-    return;
-  }
 
-  if (!MakeContextCurrent()) {
-    OnError();
+  if (!UpdateSharedImage(mailbox, in_fence_handle))
     return;
-  }
-
-  if (!factory_->UpdateSharedImage(mailbox, std::move(in_fence))) {
-    LOG(ERROR) << "SharedImageStub: Unable to update shared image";
-    OnError();
-    return;
-  }
 
   SyncToken sync_token(sync_point_client_state_->namespace_id(),
                        sync_point_client_state_->command_buffer_id(),
@@ -373,13 +397,12 @@
   // improve performance. https://crbug.com/457431
   auto* context = context_state_->real_context();
   if (context->IsCurrent(nullptr) ||
-      context_state_->real_context()->MakeCurrent(context_state_->surface())) {
+      context->MakeCurrent(context_state_->surface())) {
     return true;
-  } else {
-    context_state_->MarkContextLost();
-    LOG(ERROR) << "SharedImageStub: MakeCurrent failed";
-    return false;
   }
+  context_state_->MarkContextLost();
+  LOG(ERROR) << "SharedImageStub: MakeCurrent failed";
+  return false;
 }
 
 ContextResult SharedImageStub::MakeContextCurrentAndCreateFactory() {
diff --git a/gpu/ipc/service/shared_image_stub.h b/gpu/ipc/service/shared_image_stub.h
index 7799029a..f719135 100644
--- a/gpu/ipc/service/shared_image_stub.h
+++ b/gpu/ipc/service/shared_image_stub.h
@@ -56,6 +56,17 @@
   SharedImageDestructionCallback GetSharedImageDestructionCallback(
       const Mailbox& mailbox);
 
+  bool CreateSharedImage(const Mailbox& mailbox,
+                         int client_id,
+                         gfx::GpuMemoryBufferHandle handle,
+                         gfx::BufferFormat format,
+                         SurfaceHandle surface_handle,
+                         const gfx::Size& size,
+                         const gfx::ColorSpace& color_space,
+                         uint32_t usage);
+  bool UpdateSharedImage(const Mailbox& mailbox,
+                         const gfx::GpuFenceHandle& in_fence_handle);
+
  private:
   SharedImageStub(GpuChannel* channel, int32_t route_id);
 
diff --git a/gpu/ipc/service/stream_texture_android.h b/gpu/ipc/service/stream_texture_android.h
index 8acc081..7249ba4 100644
--- a/gpu/ipc/service/stream_texture_android.h
+++ b/gpu/ipc/service/stream_texture_android.h
@@ -16,7 +16,7 @@
 #include "gpu/command_buffer/service/gl_stream_texture_image.h"
 #include "gpu/command_buffer/service/shared_context_state.h"
 #include "gpu/command_buffer/service/stream_texture_shared_image_interface.h"
-#include "gpu/ipc/common/android/texture_owner.h"
+#include "gpu/command_buffer/service/texture_owner.h"
 #include "gpu/ipc/service/command_buffer_stub.h"
 #include "ipc/ipc_listener.h"
 #include "ui/gl/android/surface_texture.h"
diff --git a/gpu/vulkan/demo/vulkan_demo.h b/gpu/vulkan/demo/vulkan_demo.h
index 577f8fc..2f665be 100644
--- a/gpu/vulkan/demo/vulkan_demo.h
+++ b/gpu/vulkan/demo/vulkan_demo.h
@@ -56,6 +56,7 @@
   void OnAcceleratedWidgetAvailable(gfx::AcceleratedWidget widget) override;
   void OnAcceleratedWidgetDestroyed() override {}
   void OnActivationChanged(bool active) override {}
+  void OnMouseEnter() override {}
 
   void CreateSkSurface();
   void Draw(SkCanvas* canvas, float fraction);
diff --git a/headless/test/test_network_interceptor.cc b/headless/test/test_network_interceptor.cc
index 31ddded..30f5df5 100644
--- a/headless/test/test_network_interceptor.cc
+++ b/headless/test/test_network_interceptor.cc
@@ -50,7 +50,6 @@
   void NotifyRedirect(const std::string& location) {
     auto redirect_info = net::RedirectInfo::ComputeRedirectInfo(
         url_request_.method, url_request_.url, url_request_.site_for_cookies,
-        url_request_.top_frame_origin,
         net::URLRequest::FirstPartyURLPolicy::
             UPDATE_FIRST_PARTY_URL_ON_REDIRECT,
         url_request_.referrer_policy, url_request_.referrer.spec(),
diff --git a/infra/config/luci-milo.cfg b/infra/config/luci-milo.cfg
index c213a6a3..b9b1a25d 100644
--- a/infra/config/luci-milo.cfg
+++ b/infra/config/luci-milo.cfg
@@ -4426,15 +4426,15 @@
     name: "buildbucket/luci.chromium.try/gpu-fyi-try-android-l-nexus-6-32"
   }
   builders {
-    name: "buildbucket/luci.chromium.try/gpu-fyi-try-android-m-nexus-5x-skgl-64"
-  }
-  builders {
     name: "buildbucket/luci.chromium.try/gpu-fyi-try-android-m-nexus-5x-64"
   }
   builders {
     name: "buildbucket/luci.chromium.try/gpu-fyi-try-android-m-nexus-5x-deqp-64"
   }
   builders {
+    name: "buildbucket/luci.chromium.try/gpu-fyi-try-android-m-nexus-5x-skgl-64"
+  }
+  builders {
     name: "buildbucket/luci.chromium.try/gpu-fyi-try-android-m-nexus-6p-64"
   }
   builders {
diff --git a/ios/chrome/browser/app_launcher/app_launcher_tab_helper.h b/ios/chrome/browser/app_launcher/app_launcher_tab_helper.h
index 667e67b..7c8643f7 100644
--- a/ios/chrome/browser/app_launcher/app_launcher_tab_helper.h
+++ b/ios/chrome/browser/app_launcher/app_launcher_tab_helper.h
@@ -7,7 +7,7 @@
 
 #include "base/macros.h"
 #import "ios/web/public/navigation/web_state_policy_decider.h"
-#import "ios/web/public/web_state/web_state_user_data.h"
+#import "ios/web/public/web_state_user_data.h"
 
 @protocol AppLauncherTabHelperDelegate;
 @class AppLauncherAbuseDetector;
diff --git a/ios/chrome/browser/autofill/autofill_tab_helper.h b/ios/chrome/browser/autofill/autofill_tab_helper.h
index 70499011..f9ae9fd8 100644
--- a/ios/chrome/browser/autofill/autofill_tab_helper.h
+++ b/ios/chrome/browser/autofill/autofill_tab_helper.h
@@ -8,8 +8,8 @@
 #include <memory>
 
 #include "base/macros.h"
-#import "ios/web/public/web_state/web_state_observer.h"
-#import "ios/web/public/web_state/web_state_user_data.h"
+#include "ios/web/public/web_state_observer.h"
+#import "ios/web/public/web_state_user_data.h"
 
 @class AutofillAgent;
 @protocol FormSuggestionProvider;
diff --git a/ios/chrome/browser/autofill/form_suggestion_tab_helper.h b/ios/chrome/browser/autofill/form_suggestion_tab_helper.h
index 870d7529..55c1b31 100644
--- a/ios/chrome/browser/autofill/form_suggestion_tab_helper.h
+++ b/ios/chrome/browser/autofill/form_suggestion_tab_helper.h
@@ -8,8 +8,8 @@
 #import <Foundation/Foundation.h>
 
 #include "base/macros.h"
-#import "ios/web/public/web_state/web_state_observer.h"
-#import "ios/web/public/web_state/web_state_user_data.h"
+#include "ios/web/public/web_state_observer.h"
+#import "ios/web/public/web_state_user_data.h"
 
 @protocol FormInputSuggestionsProvider;
 @protocol FormSuggestionProvider;
diff --git a/ios/chrome/browser/complex_tasks/ios_task_tab_helper.h b/ios/chrome/browser/complex_tasks/ios_task_tab_helper.h
index 6c86bb46..4401f8d7 100644
--- a/ios/chrome/browser/complex_tasks/ios_task_tab_helper.h
+++ b/ios/chrome/browser/complex_tasks/ios_task_tab_helper.h
@@ -8,8 +8,8 @@
 #include <map>
 
 #import "ios/chrome/browser/complex_tasks/ios_content_record_task_id.h"
-#include "ios/web/public/web_state/web_state_observer.h"
-#import "ios/web/public/web_state/web_state_user_data.h"
+#include "ios/web/public/web_state_observer.h"
+#import "ios/web/public/web_state_user_data.h"
 
 #if !defined(__has_feature) || !__has_feature(objc_arc)
 #error "This file requires ARC support."
diff --git a/ios/chrome/browser/download/ar_quick_look_tab_helper.h b/ios/chrome/browser/download/ar_quick_look_tab_helper.h
index 83f06212..ef61b2bc 100644
--- a/ios/chrome/browser/download/ar_quick_look_tab_helper.h
+++ b/ios/chrome/browser/download/ar_quick_look_tab_helper.h
@@ -10,7 +10,7 @@
 #include "base/macros.h"
 #include "base/memory/weak_ptr.h"
 #include "ios/web/public/download/download_task_observer.h"
-#import "ios/web/public/web_state/web_state_user_data.h"
+#import "ios/web/public/web_state_user_data.h"
 
 @protocol ARQuickLookTabHelperDelegate;
 
diff --git a/ios/chrome/browser/download/download_manager_tab_helper.h b/ios/chrome/browser/download/download_manager_tab_helper.h
index 46963df..43e09898 100644
--- a/ios/chrome/browser/download/download_manager_tab_helper.h
+++ b/ios/chrome/browser/download/download_manager_tab_helper.h
@@ -11,8 +11,8 @@
 
 #include "base/macros.h"
 #include "ios/web/public/download/download_task_observer.h"
-#import "ios/web/public/web_state/web_state_observer.h"
-#import "ios/web/public/web_state/web_state_user_data.h"
+#include "ios/web/public/web_state_observer.h"
+#import "ios/web/public/web_state_user_data.h"
 
 @protocol DownloadManagerTabHelperDelegate;
 namespace web {
diff --git a/ios/chrome/browser/download/pass_kit_tab_helper.h b/ios/chrome/browser/download/pass_kit_tab_helper.h
index ca143bd..846c6bc5 100644
--- a/ios/chrome/browser/download/pass_kit_tab_helper.h
+++ b/ios/chrome/browser/download/pass_kit_tab_helper.h
@@ -11,7 +11,7 @@
 #include "base/containers/unique_ptr_adapters.h"
 #include "base/macros.h"
 #include "ios/web/public/download/download_task_observer.h"
-#import "ios/web/public/web_state/web_state_user_data.h"
+#import "ios/web/public/web_state_user_data.h"
 
 @protocol PassKitTabHelperDelegate;
 namespace web {
diff --git a/ios/chrome/browser/find_in_page/find_tab_helper.h b/ios/chrome/browser/find_in_page/find_tab_helper.h
index ac697f0b..430f639 100644
--- a/ios/chrome/browser/find_in_page/find_tab_helper.h
+++ b/ios/chrome/browser/find_in_page/find_tab_helper.h
@@ -9,8 +9,8 @@
 
 #include "base/ios/block_types.h"
 #include "base/macros.h"
-#include "ios/web/public/web_state/web_state_observer.h"
-#import "ios/web/public/web_state/web_state_user_data.h"
+#include "ios/web/public/web_state_observer.h"
+#import "ios/web/public/web_state_user_data.h"
 
 @class FindInPageController;
 @class FindInPageModel;
diff --git a/ios/chrome/browser/history/history_tab_helper.h b/ios/chrome/browser/history/history_tab_helper.h
index 6643ab4..d8beb4c 100644
--- a/ios/chrome/browser/history/history_tab_helper.h
+++ b/ios/chrome/browser/history/history_tab_helper.h
@@ -11,8 +11,8 @@
 #include "base/time/time.h"
 #include "components/history/core/browser/history_context.h"
 #include "components/history/core/browser/history_types.h"
-#include "ios/web/public/web_state/web_state_observer.h"
-#import "ios/web/public/web_state/web_state_user_data.h"
+#include "ios/web/public/web_state_observer.h"
+#import "ios/web/public/web_state_user_data.h"
 
 namespace history {
 class HistoryService;
diff --git a/ios/chrome/browser/infobars/infobar_badge_tab_helper.h b/ios/chrome/browser/infobars/infobar_badge_tab_helper.h
index f3183181..4238aba6 100644
--- a/ios/chrome/browser/infobars/infobar_badge_tab_helper.h
+++ b/ios/chrome/browser/infobars/infobar_badge_tab_helper.h
@@ -8,11 +8,10 @@
 #include <unordered_map>
 
 #include "base/scoped_observer.h"
-#import "ios/web/public/web_state/web_state_user_data.h"
-
 #include "components/infobars/core/infobar_manager.h"
 #import "ios/chrome/browser/infobars/infobar_type.h"
 #import "ios/chrome/browser/ui/badges/badge_item.h"
+#import "ios/web/public/web_state_user_data.h"
 
 namespace web {
 class WebState;
diff --git a/ios/chrome/browser/infobars/infobar_manager_impl.h b/ios/chrome/browser/infobars/infobar_manager_impl.h
index 16ccd74f..4255e40 100644
--- a/ios/chrome/browser/infobars/infobar_manager_impl.h
+++ b/ios/chrome/browser/infobars/infobar_manager_impl.h
@@ -9,8 +9,8 @@
 
 #include "base/macros.h"
 #include "components/infobars/core/infobar_manager.h"
-#include "ios/web/public/web_state/web_state_observer.h"
-#import "ios/web/public/web_state/web_state_user_data.h"
+#include "ios/web/public/web_state_observer.h"
+#import "ios/web/public/web_state_user_data.h"
 
 namespace infobars {
 class InfoBar;
diff --git a/ios/chrome/browser/itunes_urls/itunes_urls_handler_tab_helper.h b/ios/chrome/browser/itunes_urls/itunes_urls_handler_tab_helper.h
index ab69771..6fb2726 100644
--- a/ios/chrome/browser/itunes_urls/itunes_urls_handler_tab_helper.h
+++ b/ios/chrome/browser/itunes_urls/itunes_urls_handler_tab_helper.h
@@ -7,7 +7,7 @@
 
 #include "base/macros.h"
 #import "ios/web/public/navigation/web_state_policy_decider.h"
-#import "ios/web/public/web_state/web_state_user_data.h"
+#import "ios/web/public/web_state_user_data.h"
 
 // Enum for the IOS.StoreKit.ITunesURLsHandlingResult UMA histogram to report
 // the results of the StoreKit handling.
diff --git a/ios/chrome/browser/metrics/tab_usage_recorder.h b/ios/chrome/browser/metrics/tab_usage_recorder.h
index 77f9a568..c2adc29 100644
--- a/ios/chrome/browser/metrics/tab_usage_recorder.h
+++ b/ios/chrome/browser/metrics/tab_usage_recorder.h
@@ -13,7 +13,7 @@
 #include "base/macros.h"
 #include "base/time/time.h"
 #import "ios/chrome/browser/web_state_list/web_state_list_observer.h"
-#import "ios/web/public/web_state/web_state_observer.h"
+#include "ios/web/public/web_state_observer.h"
 
 class PrerenderService;
 class WebStateList;
diff --git a/ios/chrome/browser/metrics/ukm_egtest.mm b/ios/chrome/browser/metrics/ukm_egtest.mm
index d8237c3..6ad1ae6 100644
--- a/ios/chrome/browser/metrics/ukm_egtest.mm
+++ b/ios/chrome/browser/metrics/ukm_egtest.mm
@@ -37,12 +37,10 @@
 using chrome_test_util::AccountsSyncButton;
 using chrome_test_util::ButtonWithAccessibilityLabel;
 using chrome_test_util::ButtonWithAccessibilityLabelId;
-using chrome_test_util::ClearBrowsingDataView;
 using chrome_test_util::GoogleServicesSettingsButton;
 using chrome_test_util::SettingsAccountButton;
 using chrome_test_util::SettingsDoneButton;
 using chrome_test_util::SettingsMenuPrivacyButton;
-using chrome_test_util::SignOutAccountsButton;
 using chrome_test_util::SyncSwitchCell;
 using chrome_test_util::TurnSyncSwitchOn;
 
diff --git a/ios/chrome/browser/metrics/ukm_url_recorder.mm b/ios/chrome/browser/metrics/ukm_url_recorder.mm
index 61c4ee4..a12a541 100644
--- a/ios/chrome/browser/metrics/ukm_url_recorder.mm
+++ b/ios/chrome/browser/metrics/ukm_url_recorder.mm
@@ -10,8 +10,8 @@
 #include "base/macros.h"
 #import "ios/web/public/navigation/navigation_context.h"
 #import "ios/web/public/web_state.h"
-#include "ios/web/public/web_state/web_state_observer.h"
-#import "ios/web/public/web_state/web_state_user_data.h"
+#include "ios/web/public/web_state_observer.h"
+#import "ios/web/public/web_state_user_data.h"
 #include "services/metrics/public/cpp/delegating_ukm_recorder.h"
 #include "services/metrics/public/cpp/ukm_source_id.h"
 #include "url/gurl.h"
diff --git a/ios/chrome/browser/net/ios_chrome_network_delegate.cc b/ios/chrome/browser/net/ios_chrome_network_delegate.cc
index 27961ce..c8de74bd 100644
--- a/ios/chrome/browser/net/ios_chrome_network_delegate.cc
+++ b/ios/chrome/browser/net/ios_chrome_network_delegate.cc
@@ -115,13 +115,6 @@
                                     request.url(), request.site_for_cookies());
 }
 
-bool IOSChromeNetworkDelegate::OnCanAccessFile(
-    const net::URLRequest& request,
-    const base::FilePath& original_path,
-    const base::FilePath& absolute_path) const {
-  return true;
-}
-
 bool IOSChromeNetworkDelegate::OnForcePrivacyMode(
     const GURL& url,
     const GURL& site_for_cookies,
diff --git a/ios/chrome/browser/net/ios_chrome_network_delegate.h b/ios/chrome/browser/net/ios_chrome_network_delegate.h
index 90632ea..6f19043 100644
--- a/ios/chrome/browser/net/ios_chrome_network_delegate.h
+++ b/ios/chrome/browser/net/ios_chrome_network_delegate.h
@@ -60,9 +60,6 @@
                       const net::CanonicalCookie& cookie,
                       net::CookieOptions* options,
                       bool allowed_from_caller) override;
-  bool OnCanAccessFile(const net::URLRequest& request,
-                       const base::FilePath& original_path,
-                       const base::FilePath& absolute_path) const override;
   bool OnForcePrivacyMode(
       const GURL& url,
       const GURL& site_for_cookies,
diff --git a/ios/chrome/browser/network_activity/network_activity_indicator_tab_helper.h b/ios/chrome/browser/network_activity/network_activity_indicator_tab_helper.h
index 282d034f..45cdd324 100644
--- a/ios/chrome/browser/network_activity/network_activity_indicator_tab_helper.h
+++ b/ios/chrome/browser/network_activity/network_activity_indicator_tab_helper.h
@@ -8,8 +8,8 @@
 #import <Foundation/Foundation.h>
 
 #include "base/macros.h"
-#include "ios/web/public/web_state/web_state_observer.h"
-#import "ios/web/public/web_state/web_state_user_data.h"
+#include "ios/web/public/web_state_observer.h"
+#import "ios/web/public/web_state_user_data.h"
 
 // Handles listening to WebState network activity to control network activity
 // indicator.
diff --git a/ios/chrome/browser/ntp/new_tab_page_tab_helper.h b/ios/chrome/browser/ntp/new_tab_page_tab_helper.h
index 64190844..e46457c0 100644
--- a/ios/chrome/browser/ntp/new_tab_page_tab_helper.h
+++ b/ios/chrome/browser/ntp/new_tab_page_tab_helper.h
@@ -10,8 +10,8 @@
 
 #include "base/macros.h"
 #include "base/timer/timer.h"
-#include "ios/web/public/web_state/web_state_observer.h"
-#import "ios/web/public/web_state/web_state_user_data.h"
+#include "ios/web/public/web_state_observer.h"
+#import "ios/web/public/web_state_user_data.h"
 
 @protocol NewTabPageTabHelperDelegate;
 
diff --git a/ios/chrome/browser/open_in/open_in_tab_helper.h b/ios/chrome/browser/open_in/open_in_tab_helper.h
index b58b6ce..f03b98a 100644
--- a/ios/chrome/browser/open_in/open_in_tab_helper.h
+++ b/ios/chrome/browser/open_in/open_in_tab_helper.h
@@ -7,8 +7,8 @@
 
 #include "base/macros.h"
 #import "ios/chrome/browser/open_in/open_in_tab_helper_delegate.h"
-#include "ios/web/public/web_state/web_state_observer.h"
-#import "ios/web/public/web_state/web_state_user_data.h"
+#include "ios/web/public/web_state_observer.h"
+#import "ios/web/public/web_state_user_data.h"
 
 namespace net {
 class HttpResponseHeaders;
diff --git a/ios/chrome/browser/overlays/overlay_request_queue_impl.h b/ios/chrome/browser/overlays/overlay_request_queue_impl.h
index daa55fc..33ac1d95 100644
--- a/ios/chrome/browser/overlays/overlay_request_queue_impl.h
+++ b/ios/chrome/browser/overlays/overlay_request_queue_impl.h
@@ -14,8 +14,8 @@
 #include "base/observer_list_types.h"
 #include "ios/chrome/browser/overlays/public/overlay_modality.h"
 #import "ios/chrome/browser/overlays/public/overlay_request_queue.h"
-#import "ios/web/public/web_state/web_state_observer.h"
-#import "ios/web/public/web_state/web_state_user_data.h"
+#include "ios/web/public/web_state_observer.h"
+#import "ios/web/public/web_state_user_data.h"
 
 // Mutable implementation of OverlayRequestQueue.
 class OverlayRequestQueueImpl : public OverlayRequestQueue {
diff --git a/ios/chrome/browser/overlays/public/web_content_area/java_script_dialog_source.h b/ios/chrome/browser/overlays/public/web_content_area/java_script_dialog_source.h
index 95f50e2..86aaaa9 100644
--- a/ios/chrome/browser/overlays/public/web_content_area/java_script_dialog_source.h
+++ b/ios/chrome/browser/overlays/public/web_content_area/java_script_dialog_source.h
@@ -5,7 +5,7 @@
 #ifndef IOS_CHROME_BROWSER_OVERLAYS_PUBLIC_WEB_CONTENT_AREA_JAVA_SCRIPT_DIALOG_SOURCE_H_
 #define IOS_CHROME_BROWSER_OVERLAYS_PUBLIC_WEB_CONTENT_AREA_JAVA_SCRIPT_DIALOG_SOURCE_H_
 
-#import "ios/web/public/web_state/web_state_observer.h"
+#include "ios/web/public/web_state_observer.h"
 #include "url/gurl.h"
 
 namespace web {
diff --git a/ios/chrome/browser/overscroll_actions/overscroll_actions_tab_helper.h b/ios/chrome/browser/overscroll_actions/overscroll_actions_tab_helper.h
index d100b59a..b2b29dc0 100644
--- a/ios/chrome/browser/overscroll_actions/overscroll_actions_tab_helper.h
+++ b/ios/chrome/browser/overscroll_actions/overscroll_actions_tab_helper.h
@@ -7,8 +7,8 @@
 
 #include "base/macros.h"
 #import "ios/chrome/browser/ui/overscroll_actions/overscroll_actions_controller.h"
-#include "ios/web/public/web_state/web_state_observer.h"
-#import "ios/web/public/web_state/web_state_user_data.h"
+#include "ios/web/public/web_state_observer.h"
+#import "ios/web/public/web_state_user_data.h"
 
 @protocol OverscrollActionsControllerDelegate;
 
diff --git a/ios/chrome/browser/passwords/password_tab_helper.h b/ios/chrome/browser/passwords/password_tab_helper.h
index 33d92f8..2d8937c 100644
--- a/ios/chrome/browser/passwords/password_tab_helper.h
+++ b/ios/chrome/browser/passwords/password_tab_helper.h
@@ -6,8 +6,8 @@
 #define IOS_CHROME_BROWSER_PASSWORDS_PASSWORD_TAB_HELPER_H_
 
 #include "base/macros.h"
-#import "ios/web/public/web_state/web_state_observer.h"
-#import "ios/web/public/web_state/web_state_user_data.h"
+#include "ios/web/public/web_state_observer.h"
+#import "ios/web/public/web_state_user_data.h"
 
 @protocol ApplicationCommands;
 @protocol FormSuggestionProvider;
diff --git a/ios/chrome/browser/reading_list/favicon_web_state_dispatcher_impl_unittest.mm b/ios/chrome/browser/reading_list/favicon_web_state_dispatcher_impl_unittest.mm
index acd437a..c2a6639 100644
--- a/ios/chrome/browser/reading_list/favicon_web_state_dispatcher_impl_unittest.mm
+++ b/ios/chrome/browser/reading_list/favicon_web_state_dispatcher_impl_unittest.mm
@@ -9,7 +9,7 @@
 #include "components/favicon/ios/web_favicon_driver.h"
 #include "ios/chrome/browser/browser_state/test_chrome_browser_state.h"
 #include "ios/web/public/test/web_task_environment.h"
-#include "ios/web/public/web_state/web_state_observer.h"
+#include "ios/web/public/web_state_observer.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "testing/platform_test.h"
 
diff --git a/ios/chrome/browser/reading_list/offline_page_tab_helper.h b/ios/chrome/browser/reading_list/offline_page_tab_helper.h
index e2bef78e..5aeecde 100644
--- a/ios/chrome/browser/reading_list/offline_page_tab_helper.h
+++ b/ios/chrome/browser/reading_list/offline_page_tab_helper.h
@@ -9,8 +9,8 @@
 #include <string>
 
 #include "components/reading_list/core/reading_list_model_observer.h"
-#include "ios/web/public/web_state/web_state_observer.h"
-#import "ios/web/public/web_state/web_state_user_data.h"
+#include "ios/web/public/web_state_observer.h"
+#import "ios/web/public/web_state_user_data.h"
 
 namespace base {
 class RepeatingTimer;
diff --git a/ios/chrome/browser/reading_list/reading_list_web_state_observer.h b/ios/chrome/browser/reading_list/reading_list_web_state_observer.h
index 3a6a4bd..a34b377 100644
--- a/ios/chrome/browser/reading_list/reading_list_web_state_observer.h
+++ b/ios/chrome/browser/reading_list/reading_list_web_state_observer.h
@@ -8,8 +8,8 @@
 #include "base/macros.h"
 #include "base/timer/timer.h"
 #include "components/reading_list/core/reading_list_model_observer.h"
-#include "ios/web/public/web_state/web_state_observer.h"
-#import "ios/web/public/web_state/web_state_user_data.h"
+#include "ios/web/public/web_state_observer.h"
+#import "ios/web/public/web_state_user_data.h"
 #include "url/gurl.h"
 
 class ReadingListModel;
diff --git a/ios/chrome/browser/reading_list/reading_list_web_state_observer.mm b/ios/chrome/browser/reading_list/reading_list_web_state_observer.mm
index d831227..67e08a2 100644
--- a/ios/chrome/browser/reading_list/reading_list_web_state_observer.mm
+++ b/ios/chrome/browser/reading_list/reading_list_web_state_observer.mm
@@ -17,7 +17,7 @@
 #include "ios/web/public/navigation/navigation_item.h"
 #include "ios/web/public/navigation/navigation_manager.h"
 #include "ios/web/public/navigation/reload_type.h"
-#import "ios/web/public/web_state/web_state_user_data.h"
+#import "ios/web/public/web_state_user_data.h"
 
 #if !defined(__has_feature) || !__has_feature(objc_arc)
 #error "This file requires ARC support."
diff --git a/ios/chrome/browser/search_engines/search_engine_tab_helper.h b/ios/chrome/browser/search_engines/search_engine_tab_helper.h
index f279c18..f6d9804b 100644
--- a/ios/chrome/browser/search_engines/search_engine_tab_helper.h
+++ b/ios/chrome/browser/search_engines/search_engine_tab_helper.h
@@ -8,8 +8,8 @@
 #include "base/macros.h"
 #include "base/scoped_observer.h"
 #include "components/favicon/ios/web_favicon_driver.h"
-#import "ios/web/public/web_state/web_state_observer.h"
-#import "ios/web/public/web_state/web_state_user_data.h"
+#include "ios/web/public/web_state_observer.h"
+#import "ios/web/public/web_state_user_data.h"
 
 namespace web {
 class WebState;
diff --git a/ios/chrome/browser/send_tab_to_self/send_tab_to_self_client_service_ios.h b/ios/chrome/browser/send_tab_to_self/send_tab_to_self_client_service_ios.h
index 1a59d5d..668c75c7 100644
--- a/ios/chrome/browser/send_tab_to_self/send_tab_to_self_client_service_ios.h
+++ b/ios/chrome/browser/send_tab_to_self/send_tab_to_self_client_service_ios.h
@@ -12,7 +12,7 @@
 #include "components/keyed_service/core/keyed_service.h"
 #include "components/send_tab_to_self/send_tab_to_self_model_observer.h"
 #import "ios/chrome/browser/web_state_list/web_state_list_observer.h"
-#import "ios/web/public/web_state/web_state_observer.h"
+#include "ios/web/public/web_state_observer.h"
 
 namespace ios {
 class ChromeBrowserState;
diff --git a/ios/chrome/browser/sessions/ios_chrome_session_tab_helper.h b/ios/chrome/browser/sessions/ios_chrome_session_tab_helper.h
index 9e90bb6..a3bb23a9 100644
--- a/ios/chrome/browser/sessions/ios_chrome_session_tab_helper.h
+++ b/ios/chrome/browser/sessions/ios_chrome_session_tab_helper.h
@@ -7,7 +7,7 @@
 
 #include "base/macros.h"
 #include "components/sessions/core/session_id.h"
-#import "ios/web/public/web_state/web_state_user_data.h"
+#import "ios/web/public/web_state_user_data.h"
 
 class IOSChromeSessionTabHelper
     : public web::WebStateUserData<IOSChromeSessionTabHelper> {
diff --git a/ios/chrome/browser/snapshots/snapshot_tab_helper.h b/ios/chrome/browser/snapshots/snapshot_tab_helper.h
index f76db803..d74a745 100644
--- a/ios/chrome/browser/snapshots/snapshot_tab_helper.h
+++ b/ios/chrome/browser/snapshots/snapshot_tab_helper.h
@@ -11,8 +11,8 @@
 #include "base/memory/weak_ptr.h"
 #include "base/scoped_observer.h"
 #include "components/infobars/core/infobar_manager.h"
-#include "ios/web/public/web_state/web_state_observer.h"
-#import "ios/web/public/web_state/web_state_user_data.h"
+#include "ios/web/public/web_state_observer.h"
+#import "ios/web/public/web_state_user_data.h"
 
 @class SnapshotGenerator;
 @protocol SnapshotGeneratorDelegate;
diff --git a/ios/chrome/browser/ssl/captive_portal_detector_tab_helper.h b/ios/chrome/browser/ssl/captive_portal_detector_tab_helper.h
index 07028c6..1668b27 100644
--- a/ios/chrome/browser/ssl/captive_portal_detector_tab_helper.h
+++ b/ios/chrome/browser/ssl/captive_portal_detector_tab_helper.h
@@ -5,7 +5,7 @@
 #ifndef IOS_CHROME_BROWSER_SSL_CAPTIVE_PORTAL_DETECTOR_TAB_HELPER_H_
 #define IOS_CHROME_BROWSER_SSL_CAPTIVE_PORTAL_DETECTOR_TAB_HELPER_H_
 
-#import "ios/web/public/web_state/web_state_user_data.h"
+#import "ios/web/public/web_state_user_data.h"
 
 @protocol CaptivePortalDetectorTabHelperDelegate;
 
diff --git a/ios/chrome/browser/ssl/captive_portal_metrics_tab_helper.h b/ios/chrome/browser/ssl/captive_portal_metrics_tab_helper.h
index 43a7d43..ee4caea 100644
--- a/ios/chrome/browser/ssl/captive_portal_metrics_tab_helper.h
+++ b/ios/chrome/browser/ssl/captive_portal_metrics_tab_helper.h
@@ -9,8 +9,8 @@
 #include "base/timer/timer.h"
 #include "components/captive_portal/captive_portal_detector.h"
 #include "ios/chrome/browser/ssl/captive_portal_metrics.h"
-#include "ios/web/public/web_state/web_state_observer.h"
-#import "ios/web/public/web_state/web_state_user_data.h"
+#include "ios/web/public/web_state_observer.h"
+#import "ios/web/public/web_state_user_data.h"
 
 namespace web {
 class WebState;
diff --git a/ios/chrome/browser/ssl/insecure_input_tab_helper.h b/ios/chrome/browser/ssl/insecure_input_tab_helper.h
index dca1c1d6..83828ad 100644
--- a/ios/chrome/browser/ssl/insecure_input_tab_helper.h
+++ b/ios/chrome/browser/ssl/insecure_input_tab_helper.h
@@ -9,8 +9,8 @@
 
 #include "base/macros.h"
 #include "components/autofill/ios/form_util/form_activity_observer.h"
-#include "ios/web/public/web_state/web_state_observer.h"
-#import "ios/web/public/web_state/web_state_user_data.h"
+#include "ios/web/public/web_state_observer.h"
+#import "ios/web/public/web_state_user_data.h"
 
 // Observes user activity on forms and receives notifications about page content
 // from autofill and updates the page's |SSLStatusUserData| to track insecure
diff --git a/ios/chrome/browser/ssl/insecure_input_tab_helper.mm b/ios/chrome/browser/ssl/insecure_input_tab_helper.mm
index 1042e81..fd740bcb 100644
--- a/ios/chrome/browser/ssl/insecure_input_tab_helper.mm
+++ b/ios/chrome/browser/ssl/insecure_input_tab_helper.mm
@@ -17,7 +17,7 @@
 #import "ios/web/public/navigation/navigation_item.h"
 #import "ios/web/public/navigation/navigation_manager.h"
 #import "ios/web/public/web_state.h"
-#import "ios/web/public/web_state/web_state_user_data.h"
+#import "ios/web/public/web_state_user_data.h"
 #include "ui/base/page_transition_types.h"
 
 #if !defined(__has_feature) || !__has_feature(objc_arc)
diff --git a/ios/chrome/browser/ssl/ios_security_state_tab_helper.h b/ios/chrome/browser/ssl/ios_security_state_tab_helper.h
index ca82c54..cd518d8 100644
--- a/ios/chrome/browser/ssl/ios_security_state_tab_helper.h
+++ b/ios/chrome/browser/ssl/ios_security_state_tab_helper.h
@@ -9,7 +9,7 @@
 
 #include "base/macros.h"
 #include "components/security_state/core/security_state.h"
-#import "ios/web/public/web_state/web_state_user_data.h"
+#import "ios/web/public/web_state_user_data.h"
 
 namespace web {
 class WebState;
diff --git a/ios/chrome/browser/ssl/ios_ssl_error_handler.h b/ios/chrome/browser/ssl/ios_ssl_error_handler.h
index bffc9b9..14c66b6 100644
--- a/ios/chrome/browser/ssl/ios_ssl_error_handler.h
+++ b/ios/chrome/browser/ssl/ios_ssl_error_handler.h
@@ -11,7 +11,7 @@
 #include "components/captive_portal/captive_portal_detector.h"
 #include "components/captive_portal/captive_portal_types.h"
 #include "ios/chrome/browser/interstitials/ios_security_interstitial_page.h"
-#import "ios/web/public/web_state/web_state_user_data.h"
+#import "ios/web/public/web_state_user_data.h"
 #include "url/gurl.h"
 
 namespace net {
diff --git a/ios/chrome/browser/ssl/ios_ssl_error_tab_helper.h b/ios/chrome/browser/ssl/ios_ssl_error_tab_helper.h
index fd6e655..a98e227 100644
--- a/ios/chrome/browser/ssl/ios_ssl_error_tab_helper.h
+++ b/ios/chrome/browser/ssl/ios_ssl_error_tab_helper.h
@@ -6,8 +6,8 @@
 #define IOS_CHROME_BROWSER_SSL_IOS_SSL_ERROR_TAB_HELPER_H_
 
 #include "ios/chrome/browser/interstitials/ios_security_interstitial_page.h"
-#include "ios/web/public/web_state/web_state_observer.h"
-#import "ios/web/public/web_state/web_state_user_data.h"
+#include "ios/web/public/web_state_observer.h"
+#import "ios/web/public/web_state_user_data.h"
 
 namespace web {
 class WebState;
diff --git a/ios/chrome/browser/ssl/ios_ssl_error_tab_helper.mm b/ios/chrome/browser/ssl/ios_ssl_error_tab_helper.mm
index 5e53054..6ea2150 100644
--- a/ios/chrome/browser/ssl/ios_ssl_error_tab_helper.mm
+++ b/ios/chrome/browser/ssl/ios_ssl_error_tab_helper.mm
@@ -7,7 +7,7 @@
 #include "ios/chrome/browser/interstitials/ios_security_interstitial_page.h"
 #import "ios/web/public/navigation/navigation_context.h"
 #import "ios/web/public/web_state.h"
-#import "ios/web/public/web_state/web_state_user_data.h"
+#import "ios/web/public/web_state_user_data.h"
 
 #if !defined(__has_feature) || !__has_feature(objc_arc)
 #error "This file requires ARC support."
diff --git a/ios/chrome/browser/store_kit/store_kit_tab_helper.h b/ios/chrome/browser/store_kit/store_kit_tab_helper.h
index ff093e4..f17863b2f 100644
--- a/ios/chrome/browser/store_kit/store_kit_tab_helper.h
+++ b/ios/chrome/browser/store_kit/store_kit_tab_helper.h
@@ -7,7 +7,7 @@
 
 #include "base/macros.h"
 #import "ios/chrome/browser/store_kit/store_kit_launcher.h"
-#import "ios/web/public/web_state/web_state_user_data.h"
+#import "ios/web/public/web_state_user_data.h"
 
 // A Tab Helper object that can open to a page on iOS App Store for a given
 // app product ID.
diff --git a/ios/chrome/browser/sync/ios_chrome_synced_tab_delegate.h b/ios/chrome/browser/sync/ios_chrome_synced_tab_delegate.h
index 0715913f..4ab66c9 100644
--- a/ios/chrome/browser/sync/ios_chrome_synced_tab_delegate.h
+++ b/ios/chrome/browser/sync/ios_chrome_synced_tab_delegate.h
@@ -13,7 +13,7 @@
 #include "base/macros.h"
 #include "components/sessions/core/session_id.h"
 #include "components/sync_sessions/synced_tab_delegate.h"
-#import "ios/web/public/web_state/web_state_user_data.h"
+#import "ios/web/public/web_state_user_data.h"
 
 class IOSTaskTabHelper;
 
diff --git a/ios/chrome/browser/sync/sessions/ios_chrome_local_session_event_router.h b/ios/chrome/browser/sync/sessions/ios_chrome_local_session_event_router.h
index 82ac6ec..ab95f47 100644
--- a/ios/chrome/browser/sync/sessions/ios_chrome_local_session_event_router.h
+++ b/ios/chrome/browser/sync/sessions/ios_chrome_local_session_event_router.h
@@ -16,7 +16,7 @@
 #include "components/sync_sessions/local_session_event_router.h"
 #import "ios/chrome/browser/tabs/tab_model_list_observer.h"
 #include "ios/chrome/browser/web_state_list/web_state_list_observer.h"
-#include "ios/web/public/web_state/web_state_observer.h"
+#include "ios/web/public/web_state_observer.h"
 
 class GURL;
 
diff --git a/ios/chrome/browser/translate/chrome_ios_translate_client.h b/ios/chrome/browser/translate/chrome_ios_translate_client.h
index 32f49441..7d248b5 100644
--- a/ios/chrome/browser/translate/chrome_ios_translate_client.h
+++ b/ios/chrome/browser/translate/chrome_ios_translate_client.h
@@ -15,8 +15,8 @@
 #include "components/translate/core/browser/translate_step.h"
 #include "components/translate/core/common/translate_errors.h"
 #include "components/translate/ios/browser/ios_translate_driver.h"
-#include "ios/web/public/web_state/web_state_observer.h"
-#import "ios/web/public/web_state/web_state_user_data.h"
+#include "ios/web/public/web_state_observer.h"
+#import "ios/web/public/web_state_user_data.h"
 
 class PrefService;
 
diff --git a/ios/chrome/browser/u2f/u2f_tab_helper.h b/ios/chrome/browser/u2f/u2f_tab_helper.h
index 984cbd1..8268ba14 100644
--- a/ios/chrome/browser/u2f/u2f_tab_helper.h
+++ b/ios/chrome/browser/u2f/u2f_tab_helper.h
@@ -6,7 +6,7 @@
 #define IOS_CHROME_BROWSER_U2F_U2F_TAB_HELPER_H_
 
 #include "base/macros.h"
-#import "ios/web/public/web_state/web_state_user_data.h"
+#import "ios/web/public/web_state_user_data.h"
 #include "url/gurl.h"
 
 @class U2FController;
diff --git a/ios/chrome/browser/ui/activity_services/chrome_activity_item_thumbnail_generator.mm b/ios/chrome/browser/ui/activity_services/chrome_activity_item_thumbnail_generator.mm
index 0030c74..614a3c3b 100644
--- a/ios/chrome/browser/ui/activity_services/chrome_activity_item_thumbnail_generator.mm
+++ b/ios/chrome/browser/ui/activity_services/chrome_activity_item_thumbnail_generator.mm
@@ -8,8 +8,8 @@
 #import "ios/chrome/browser/snapshots/snapshot_tab_helper.h"
 #import "ios/chrome/browser/ui/util/uikit_ui_util.h"
 #import "ios/web/public/web_state.h"
-#include "ios/web/public/web_state/web_state_observer.h"
 #import "ios/web/public/web_state/web_state_observer_bridge.h"
+#include "ios/web/public/web_state_observer.h"
 
 #if !defined(__has_feature) || !__has_feature(objc_arc)
 #error "This file requires ARC support."
diff --git a/ios/chrome/browser/ui/authentication/signin_earl_grey_ui.h b/ios/chrome/browser/ui/authentication/signin_earl_grey_ui.h
index b0080bf..9b6d3c9 100644
--- a/ios/chrome/browser/ui/authentication/signin_earl_grey_ui.h
+++ b/ios/chrome/browser/ui/authentication/signin_earl_grey_ui.h
@@ -47,6 +47,10 @@
 // Checks that the sign-in promo view is not visible.
 + (void)checkSigninPromoNotVisible;
 
+// Signs out from the current identity. if |isManagedAccount| is true, the
+// confirmed managed dialog is confirmed while signing out.
++ (void)signOutWithManagedAccount:(BOOL)isManagedAccount;
+
 @end
 
 #endif  // IOS_CHROME_BROWSER_UI_AUTHENTICATION_SIGNIN_EARL_GREY_UI_H_
diff --git a/ios/chrome/browser/ui/authentication/signin_earl_grey_ui.mm b/ios/chrome/browser/ui/authentication/signin_earl_grey_ui.mm
index 4c776006..00b312f 100644
--- a/ios/chrome/browser/ui/authentication/signin_earl_grey_ui.mm
+++ b/ios/chrome/browser/ui/authentication/signin_earl_grey_ui.mm
@@ -15,6 +15,7 @@
 #include "ios/chrome/grit/ios_strings.h"
 #import "ios/chrome/test/earl_grey/chrome_earl_grey_ui.h"
 #import "ios/chrome/test/earl_grey/chrome_matchers.h"
+#import "ios/chrome/test/earl_grey/chrome_matchers_app_interface.h"
 #import "ios/public/provider/chrome/browser/signin/chrome_identity.h"
 #import "ios/public/provider/chrome/browser/signin/fake_chrome_identity_service.h"
 
@@ -47,7 +48,9 @@
 using chrome_test_util::ButtonWithAccessibilityLabel;
 using chrome_test_util::PrimarySignInButton;
 using chrome_test_util::SecondarySignInButton;
+using chrome_test_util::SettingsAccountButton;
 using chrome_test_util::SettingsDoneButton;
+using chrome_test_util::SignOutAccountsButton;
 using chrome_test_util::UnifiedConsentAddAccountButton;
 
 @implementation SigninEarlGreyUI
@@ -197,4 +200,25 @@
       assertWithMatcher:grey_nil()];
 }
 
++ (void)signOutWithManagedAccount:(BOOL)isManagedAccount {
+  [ChromeEarlGreyUI openSettingsMenu];
+  [ChromeEarlGreyUI tapSettingsMenuButton:SettingsAccountButton()];
+  [ChromeEarlGreyUI tapAccountsMenuButton:SignOutAccountsButton()];
+  int confirmationLabelID = 0;
+  if (isManagedAccount) {
+    confirmationLabelID = IDS_IOS_MANAGED_DISCONNECT_DIALOG_ACCEPT_UNITY;
+  } else {
+    confirmationLabelID = IDS_IOS_DISCONNECT_DIALOG_CONTINUE_BUTTON_MOBILE;
+  }
+  id<GREYMatcher> confirmationButtonMatcher = [ChromeMatchersAppInterface
+      buttonWithAccessibilityLabelID:confirmationLabelID];
+  [[EarlGrey selectElementWithMatcher:confirmationButtonMatcher]
+      performAction:grey_tap()];
+  // Wait until the user is signed out.
+  [[GREYUIThreadExecutor sharedInstance] drainUntilIdle];
+  [[EarlGrey selectElementWithMatcher:SettingsDoneButton()]
+      performAction:grey_tap()];
+  [SigninEarlGreyUtils checkSignedOut];
+}
+
 @end
diff --git a/ios/chrome/browser/ui/badges/badge_mediator_unittest.mm b/ios/chrome/browser/ui/badges/badge_mediator_unittest.mm
index 860b0ef..57014df 100644
--- a/ios/chrome/browser/ui/badges/badge_mediator_unittest.mm
+++ b/ios/chrome/browser/ui/badges/badge_mediator_unittest.mm
@@ -17,7 +17,7 @@
 #import "ios/chrome/browser/web_state_list/web_state_list.h"
 #import "ios/chrome/browser/web_state_list/web_state_opener.h"
 #import "ios/web/public/test/fakes/test_web_state.h"
-#import "ios/web/public/web_state/web_state_user_data.h"
+#import "ios/web/public/web_state_user_data.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "testing/platform_test.h"
 
diff --git a/ios/chrome/browser/ui/dialogs/dialog_presenter_unittest.mm b/ios/chrome/browser/ui/dialogs/dialog_presenter_unittest.mm
index 58b9492..65ba192 100644
--- a/ios/chrome/browser/ui/dialogs/dialog_presenter_unittest.mm
+++ b/ios/chrome/browser/ui/dialogs/dialog_presenter_unittest.mm
@@ -14,7 +14,7 @@
 #import "ios/web/public/test/fakes/fake_navigation_context.h"
 #import "ios/web/public/test/fakes/test_navigation_manager.h"
 #import "ios/web/public/test/fakes/test_web_state.h"
-#include "ios/web/public/web_state/web_state_observer.h"
+#include "ios/web/public/web_state_observer.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "testing/gtest_mac.h"
 #include "testing/platform_test.h"
diff --git a/ios/chrome/browser/ui/dialogs/java_script_dialog_blocking_state.h b/ios/chrome/browser/ui/dialogs/java_script_dialog_blocking_state.h
index 3854a75..bc2a1ba 100644
--- a/ios/chrome/browser/ui/dialogs/java_script_dialog_blocking_state.h
+++ b/ios/chrome/browser/ui/dialogs/java_script_dialog_blocking_state.h
@@ -7,8 +7,8 @@
 
 #import <Foundation/Foundation.h>
 
-#import "ios/web/public/web_state/web_state_observer.h"
-#import "ios/web/public/web_state/web_state_user_data.h"
+#include "ios/web/public/web_state_observer.h"
+#import "ios/web/public/web_state_user_data.h"
 
 namespace web {
 class NavigationItem;
diff --git a/ios/chrome/browser/ui/dialogs/java_script_dialog_blocking_state_unittest.mm b/ios/chrome/browser/ui/dialogs/java_script_dialog_blocking_state_unittest.mm
index 93d86bc9..3e2d9d5 100644
--- a/ios/chrome/browser/ui/dialogs/java_script_dialog_blocking_state_unittest.mm
+++ b/ios/chrome/browser/ui/dialogs/java_script_dialog_blocking_state_unittest.mm
@@ -10,7 +10,7 @@
 #import "ios/web/public/test/fakes/fake_navigation_context.h"
 #import "ios/web/public/test/fakes/test_navigation_manager.h"
 #import "ios/web/public/test/fakes/test_web_state.h"
-#include "ios/web/public/web_state/web_state_observer.h"
+#include "ios/web/public/web_state_observer.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "testing/platform_test.h"
 
diff --git a/ios/chrome/browser/ui/fullscreen/fullscreen_web_state_list_observer.h b/ios/chrome/browser/ui/fullscreen/fullscreen_web_state_list_observer.h
index b10a070..c6913893 100644
--- a/ios/chrome/browser/ui/fullscreen/fullscreen_web_state_list_observer.h
+++ b/ios/chrome/browser/ui/fullscreen/fullscreen_web_state_list_observer.h
@@ -9,7 +9,7 @@
 
 #import "ios/chrome/browser/ui/fullscreen/fullscreen_web_state_observer.h"
 #import "ios/chrome/browser/web_state_list/web_state_list_observer.h"
-#include "ios/web/public/web_state/web_state_observer.h"
+#include "ios/web/public/web_state_observer.h"
 
 class FullscreenController;
 class FullscreenMediator;
diff --git a/ios/chrome/browser/ui/fullscreen/fullscreen_web_state_observer.h b/ios/chrome/browser/ui/fullscreen/fullscreen_web_state_observer.h
index 76721764..597b3ff5 100644
--- a/ios/chrome/browser/ui/fullscreen/fullscreen_web_state_observer.h
+++ b/ios/chrome/browser/ui/fullscreen/fullscreen_web_state_observer.h
@@ -5,7 +5,7 @@
 #ifndef IOS_CLEAN_CHROME_BROWSER_UI_FULLSCREEN_FULLSCREEN_WEB_STATE_OBSERVER_H_
 #define IOS_CLEAN_CHROME_BROWSER_UI_FULLSCREEN_FULLSCREEN_WEB_STATE_OBSERVER_H_
 
-#include "ios/web/public/web_state/web_state_observer.h"
+#include "ios/web/public/web_state_observer.h"
 #include "url/gurl.h"
 
 class FullscreenController;
diff --git a/ios/chrome/browser/ui/signin_interaction/BUILD.gn b/ios/chrome/browser/ui/signin_interaction/BUILD.gn
index 6b7ab43..edc23dc 100644
--- a/ios/chrome/browser/ui/signin_interaction/BUILD.gn
+++ b/ios/chrome/browser/ui/signin_interaction/BUILD.gn
@@ -41,7 +41,6 @@
     "//base/test:test_support",
     "//components/unified_consent",
     "//ios/chrome/app/strings",
-    "//ios/chrome/browser/ui/authentication:eg_test_support",
     "//ios/chrome/test/app:test_support",
     "//ios/chrome/test/earl_grey:test_support",
     "//ios/public/provider/chrome/browser/signin:test_support",
diff --git a/ios/chrome/browser/ui/signin_interaction/signin_interaction_controller_egtest.mm b/ios/chrome/browser/ui/signin_interaction/signin_interaction_controller_egtest.mm
index 9c431800..9a4a9a57 100644
--- a/ios/chrome/browser/ui/signin_interaction/signin_interaction_controller_egtest.mm
+++ b/ios/chrome/browser/ui/signin_interaction/signin_interaction_controller_egtest.mm
@@ -130,27 +130,9 @@
 
   // Sign in to |identity|.
   [SigninEarlGreyUI signinWithIdentity:identity];
-  [ChromeEarlGreyUI openSettingsMenu];
 
-  // Go to Accounts Settings and tap the sign out button.
-  [[EarlGrey selectElementWithMatcher:chrome_test_util::SettingsAccountButton()]
-      performAction:grey_tap()];
-
-  const CGFloat scroll_displacement = 100.0;
-  [[[EarlGrey
-      selectElementWithMatcher:grey_allOf(
-                                   chrome_test_util::SignOutAccountsButton(),
-                                   grey_interactable(), nil)]
-         usingSearchAction:grey_scrollInDirection(kGREYDirectionDown,
-                                                  scroll_displacement)
-      onElementWithMatcher:chrome_test_util::SettingsAccountsCollectionView()]
-      performAction:grey_tap()];
-  TapButtonWithLabelId(IDS_IOS_DISCONNECT_DIALOG_CONTINUE_BUTTON_MOBILE);
-  [[EarlGrey selectElementWithMatcher:SettingsDoneButton()]
-      performAction:grey_tap()];
-
-  // Check that there is no signed in user.
-  [SigninEarlGreyUtils checkSignedOut];
+  // Sign out.
+  [SigninEarlGreyUI signOutWithManagedAccount:NO];
 }
 
 // Tests that signing out of a managed account from the Settings works
@@ -176,22 +158,8 @@
   [SigninEarlGreyUI confirmSigninConfirmationDialog];
   [SigninEarlGreyUtils checkSignedInWithIdentity:identity];
 
-  // Go to Accounts Settings and tap the sign out button.
-  [[EarlGrey selectElementWithMatcher:chrome_test_util::SettingsAccountButton()]
-      performAction:grey_tap()];
-
-  const CGFloat scroll_displacement = 100.0;
-  [[[EarlGrey
-      selectElementWithMatcher:grey_allOf(
-                                   chrome_test_util::SignOutAccountsButton(),
-                                   grey_interactable(), nil)]
-         usingSearchAction:grey_scrollInDirection(kGREYDirectionDown,
-                                                  scroll_displacement)
-      onElementWithMatcher:chrome_test_util::SettingsAccountsCollectionView()]
-      performAction:grey_tap()];
-  TapButtonWithLabelId(IDS_IOS_MANAGED_DISCONNECT_DIALOG_ACCEPT);
-  [[EarlGrey selectElementWithMatcher:SettingsDoneButton()]
-      performAction:grey_tap()];
+  // Sign out.
+  [SigninEarlGreyUI signOutWithManagedAccount:YES];
 
   // Check that there is no signed in user.
   [SigninEarlGreyUtils checkSignedOut];
@@ -281,25 +249,12 @@
   // effectively block the authentication flow, ensuring that the authentication
   // flow is always still running when the sign-in is being cancelled.
   [SigninEarlGreyUI signinWithIdentity:identity2];
-  [ChromeEarlGreyUI openSettingsMenu];
 
-  // Go to Accounts Settings and tap the sign out button.
-  [[EarlGrey selectElementWithMatcher:chrome_test_util::SettingsAccountButton()]
-      performAction:grey_tap()];
-
-  const CGFloat scroll_displacement = 100.0;
-  [[[EarlGrey
-      selectElementWithMatcher:grey_allOf(
-                                   chrome_test_util::SignOutAccountsButton(),
-                                   grey_interactable(), nil)]
-         usingSearchAction:grey_scrollInDirection(kGREYDirectionDown,
-                                                  scroll_displacement)
-      onElementWithMatcher:chrome_test_util::SettingsAccountsCollectionView()]
-      performAction:grey_tap()];
-  TapButtonWithLabelId(IDS_IOS_DISCONNECT_DIALOG_CONTINUE_BUTTON_MOBILE);
-  [SigninEarlGreyUtils checkSignedOut];
+  // Sign out.
+  [SigninEarlGreyUI signOutWithManagedAccount:NO];
 
   // Sign in with |identity1|.
+  [ChromeEarlGreyUI openSettingsMenu];
   [[EarlGrey selectElementWithMatcher:SecondarySignInButton()]
       performAction:grey_tap()];
   [SigninEarlGreyUI selectIdentityWithEmail:identity1.userEmail];
diff --git a/ios/chrome/browser/ui/signin_interaction/signin_interaction_controller_egtest_util.mm b/ios/chrome/browser/ui/signin_interaction/signin_interaction_controller_egtest_util.mm
index c7902f1..e4b36e4 100644
--- a/ios/chrome/browser/ui/signin_interaction/signin_interaction_controller_egtest_util.mm
+++ b/ios/chrome/browser/ui/signin_interaction/signin_interaction_controller_egtest_util.mm
@@ -6,7 +6,6 @@
 
 #import "base/test/ios/wait_util.h"
 #include "components/unified_consent/feature.h"
-#import "ios/chrome/browser/ui/authentication/signin_earlgrey_utils.h"
 #include "ios/chrome/grit/ios_strings.h"
 #import "ios/chrome/test/earl_grey/chrome_earl_grey_ui.h"
 #import "ios/chrome/test/earl_grey/chrome_matchers.h"
diff --git a/ios/chrome/browser/ui/signin_interaction/signin_interaction_controller_unity_egtest.mm b/ios/chrome/browser/ui/signin_interaction/signin_interaction_controller_unity_egtest.mm
index 89a5318a..23ac30bc8 100644
--- a/ios/chrome/browser/ui/signin_interaction/signin_interaction_controller_unity_egtest.mm
+++ b/ios/chrome/browser/ui/signin_interaction/signin_interaction_controller_unity_egtest.mm
@@ -45,25 +45,6 @@
                     grey_sufficientlyVisible(), nil);
 }
 
-// Opens Accounts Settings and tap the sign out button. Assumes that the main
-// settings page is visible.
-void SignOutFromSettings() {
-  [[EarlGrey selectElementWithMatcher:chrome_test_util::SettingsAccountButton()]
-      performAction:grey_tap()];
-
-  const CGFloat scroll_displacement = 100.0;
-  [[[EarlGrey
-      selectElementWithMatcher:grey_allOf(
-                                   chrome_test_util::SignOutAccountsButton(),
-                                   grey_interactable(), nil)]
-         usingSearchAction:grey_scrollInDirection(kGREYDirectionDown,
-                                                  scroll_displacement)
-      onElementWithMatcher:chrome_test_util::SettingsAccountsCollectionView()]
-      performAction:grey_tap()];
-  TapButtonWithLabelId(IDS_IOS_DISCONNECT_DIALOG_CONTINUE_BUTTON_MOBILE);
-  [SigninEarlGreyUtils checkSignedOut];
-}
-
 }  // namespace
 
 // Sign-in interactions tests that require Unified Consent to be enabled.
@@ -140,10 +121,10 @@
   identity_service->AddIdentity(identity2);
 
   [SigninEarlGreyUI signinWithIdentity:identity1];
-  [ChromeEarlGreyUI openSettingsMenu];
-  SignOutFromSettings();
+  [SigninEarlGreyUI signOutWithManagedAccount:NO];
 
   // Sign in with |identity2|.
+  [ChromeEarlGreyUI openSettingsMenu];
   [[EarlGrey selectElementWithMatcher:SecondarySignInButton()]
       performAction:grey_tap()];
   [SigninEarlGreyUI selectIdentityWithEmail:identity2.userEmail];
@@ -185,10 +166,10 @@
 
   // Sign in to |identity1|.
   [SigninEarlGreyUI signinWithIdentity:identity1];
-  [ChromeEarlGreyUI openSettingsMenu];
-  SignOutFromSettings();
+  [SigninEarlGreyUI signOutWithManagedAccount:NO];
 
   // Sign in with |identity2|.
+  [ChromeEarlGreyUI openSettingsMenu];
   [[EarlGrey selectElementWithMatcher:SecondarySignInButton()]
       performAction:grey_tap()];
   [SigninEarlGreyUI selectIdentityWithEmail:identity2.userEmail];
diff --git a/ios/chrome/browser/ui/voice/text_to_speech_playback_controller.h b/ios/chrome/browser/ui/voice/text_to_speech_playback_controller.h
index 28cd217..e9fde6c0 100644
--- a/ios/chrome/browser/ui/voice/text_to_speech_playback_controller.h
+++ b/ios/chrome/browser/ui/voice/text_to_speech_playback_controller.h
@@ -10,7 +10,7 @@
 #include "base/macros.h"
 #include "components/keyed_service/core/keyed_service.h"
 #import "ios/chrome/browser/web_state_list/web_state_list_observer.h"
-#import "ios/web/public/web_state/web_state_observer.h"
+#include "ios/web/public/web_state_observer.h"
 
 @class TextToSpeechNotificationHandler;
 class WebStateList;
diff --git a/ios/chrome/browser/ui/webui/password_manager_internals_ui_ios.h b/ios/chrome/browser/ui/webui/password_manager_internals_ui_ios.h
index 7257e250..519922f79 100644
--- a/ios/chrome/browser/ui/webui/password_manager_internals_ui_ios.h
+++ b/ios/chrome/browser/ui/webui/password_manager_internals_ui_ios.h
@@ -8,7 +8,7 @@
 #include "base/macros.h"
 #include "base/values.h"
 #include "components/autofill/core/browser/logging/log_receiver.h"
-#include "ios/web/public/web_state/web_state_observer.h"
+#include "ios/web/public/web_state_observer.h"
 #include "ios/web/public/webui/web_ui_ios_controller.h"
 
 // The implementation for the chrome://password-manager-internals page.
diff --git a/ios/chrome/browser/voice/text_to_speech_listener.mm b/ios/chrome/browser/voice/text_to_speech_listener.mm
index 47ad552..1b2ac1d 100644
--- a/ios/chrome/browser/voice/text_to_speech_listener.mm
+++ b/ios/chrome/browser/voice/text_to_speech_listener.mm
@@ -11,8 +11,8 @@
 #import "ios/chrome/browser/voice/voice_search_url_rewriter.h"
 #include "ios/web/public/navigation/navigation_manager.h"
 #import "ios/web/public/web_state.h"
-#include "ios/web/public/web_state/web_state_observer.h"
 #import "ios/web/public/web_state/web_state_observer_bridge.h"
+#include "ios/web/public/web_state_observer.h"
 #include "url/gurl.h"
 
 #if !defined(__has_feature) || !__has_feature(objc_arc)
diff --git a/ios/chrome/browser/voice/voice_search_navigations_tab_helper.h b/ios/chrome/browser/voice/voice_search_navigations_tab_helper.h
index eb60cc4..90560c0 100644
--- a/ios/chrome/browser/voice/voice_search_navigations_tab_helper.h
+++ b/ios/chrome/browser/voice/voice_search_navigations_tab_helper.h
@@ -5,8 +5,8 @@
 #ifndef IOS_CHROME_BROWSER_VOICE_VOICE_SEARCH_NAVIGATIONS_TAB_HELPER_H_
 #define IOS_CHROME_BROWSER_VOICE_VOICE_SEARCH_NAVIGATIONS_TAB_HELPER_H_
 
-#import "ios/web/public/web_state/web_state_observer.h"
-#import "ios/web/public/web_state/web_state_user_data.h"
+#include "ios/web/public/web_state_observer.h"
+#import "ios/web/public/web_state_user_data.h"
 
 // A helper object that tracks which NavigationItems were created because of
 // voice search queries.
diff --git a/ios/chrome/browser/web/blocked_popup_tab_helper.h b/ios/chrome/browser/web/blocked_popup_tab_helper.h
index 0782e5f..715daa3 100644
--- a/ios/chrome/browser/web/blocked_popup_tab_helper.h
+++ b/ios/chrome/browser/web/blocked_popup_tab_helper.h
@@ -11,7 +11,7 @@
 #include "base/scoped_observer.h"
 #include "components/infobars/core/infobar_manager.h"
 #include "ios/web/public/navigation/referrer.h"
-#import "ios/web/public/web_state/web_state_user_data.h"
+#import "ios/web/public/web_state_user_data.h"
 #include "url/gurl.h"
 
 namespace infobars {
diff --git a/ios/chrome/browser/web/dom_altering_lock.h b/ios/chrome/browser/web/dom_altering_lock.h
index 9656f20..bef0dc94 100644
--- a/ios/chrome/browser/web/dom_altering_lock.h
+++ b/ios/chrome/browser/web/dom_altering_lock.h
@@ -6,7 +6,7 @@
 #define IOS_CHROME_BROWSER_WEB_DOM_ALTERING_LOCK_H_
 
 #include "base/ios/block_types.h"
-#import "ios/web/public/web_state/web_state_user_data.h"
+#import "ios/web/public/web_state_user_data.h"
 
 namespace web {
 class WebState;
diff --git a/ios/chrome/browser/web/font_size_tab_helper.h b/ios/chrome/browser/web/font_size_tab_helper.h
index 4f3dc13b..b66c9f1 100644
--- a/ios/chrome/browser/web/font_size_tab_helper.h
+++ b/ios/chrome/browser/web/font_size_tab_helper.h
@@ -6,8 +6,8 @@
 #define IOS_CHROME_BROWSER_WEB_FONT_SIZE_TAB_HELPER_H_
 
 #include "base/macros.h"
-#import "ios/web/public/web_state/web_state_observer.h"
-#import "ios/web/public/web_state/web_state_user_data.h"
+#include "ios/web/public/web_state_observer.h"
+#import "ios/web/public/web_state_user_data.h"
 
 namespace web {
 class WebState;
diff --git a/ios/chrome/browser/web/image_fetch_tab_helper.h b/ios/chrome/browser/web/image_fetch_tab_helper.h
index dd08784..260350f 100644
--- a/ios/chrome/browser/web/image_fetch_tab_helper.h
+++ b/ios/chrome/browser/web/image_fetch_tab_helper.h
@@ -9,8 +9,8 @@
 
 #include "base/macros.h"
 #include "base/memory/weak_ptr.h"
-#include "ios/web/public/web_state/web_state_observer.h"
-#import "ios/web/public/web_state/web_state_user_data.h"
+#include "ios/web/public/web_state_observer.h"
+#import "ios/web/public/web_state_user_data.h"
 
 // Key of the UMA ContextMenu.iOS.GetImageDataByJsResult histogram.
 extern const char kUmaGetImageDataByJsResult[];
diff --git a/ios/chrome/browser/web/java_script_console/java_script_console_tab_helper.h b/ios/chrome/browser/web/java_script_console/java_script_console_tab_helper.h
index 26663b2..ce49235 100644
--- a/ios/chrome/browser/web/java_script_console/java_script_console_tab_helper.h
+++ b/ios/chrome/browser/web/java_script_console/java_script_console_tab_helper.h
@@ -7,8 +7,8 @@
 
 #include "base/values.h"
 #include "ios/chrome/browser/web/java_script_console/java_script_console_tab_helper_delegate.h"
-#include "ios/web/public/web_state/web_state_observer.h"
-#import "ios/web/public/web_state/web_state_user_data.h"
+#include "ios/web/public/web_state_observer.h"
+#import "ios/web/public/web_state_user_data.h"
 
 namespace web {
 class WebFrame;
diff --git a/ios/chrome/browser/web/load_timing_tab_helper.h b/ios/chrome/browser/web/load_timing_tab_helper.h
index 36b84ebd..5343d49c 100644
--- a/ios/chrome/browser/web/load_timing_tab_helper.h
+++ b/ios/chrome/browser/web/load_timing_tab_helper.h
@@ -7,8 +7,8 @@
 
 #include "base/macros.h"
 #include "base/time/time.h"
-#include "ios/web/public/web_state/web_state_observer.h"
-#import "ios/web/public/web_state/web_state_user_data.h"
+#include "ios/web/public/web_state_observer.h"
+#import "ios/web/public/web_state_user_data.h"
 
 namespace web {
 class WebState;
diff --git a/ios/chrome/browser/web/page_placeholder_tab_helper.h b/ios/chrome/browser/web/page_placeholder_tab_helper.h
index 574d41df..9bfebde9 100644
--- a/ios/chrome/browser/web/page_placeholder_tab_helper.h
+++ b/ios/chrome/browser/web/page_placeholder_tab_helper.h
@@ -9,8 +9,8 @@
 
 #include "base/macros.h"
 #import "ios/chrome/browser/ui/elements/top_aligned_image_view.h"
-#include "ios/web/public/web_state/web_state_observer.h"
-#import "ios/web/public/web_state/web_state_user_data.h"
+#include "ios/web/public/web_state_observer.h"
+#import "ios/web/public/web_state_user_data.h"
 
 // Displays placeholder to cover what WebState is actually displaying. Can be
 // used to display the cached image of the web page during the Tab restoration.
diff --git a/ios/chrome/browser/web/print_tab_helper.h b/ios/chrome/browser/web/print_tab_helper.h
index 3ba9138..91e8ba4 100644
--- a/ios/chrome/browser/web/print_tab_helper.h
+++ b/ios/chrome/browser/web/print_tab_helper.h
@@ -6,8 +6,8 @@
 #define IOS_CHROME_BROWSER_WEB_PRINT_TAB_HELPER_H_
 
 #include "base/macros.h"
-#include "ios/web/public/web_state/web_state_observer.h"
-#import "ios/web/public/web_state/web_state_user_data.h"
+#include "ios/web/public/web_state_observer.h"
+#import "ios/web/public/web_state_user_data.h"
 
 @protocol WebStatePrinter;
 class GURL;
diff --git a/ios/chrome/browser/web/repost_form_tab_helper.h b/ios/chrome/browser/web/repost_form_tab_helper.h
index c91584b..0e807035 100644
--- a/ios/chrome/browser/web/repost_form_tab_helper.h
+++ b/ios/chrome/browser/web/repost_form_tab_helper.h
@@ -9,8 +9,8 @@
 
 #include "base/callback.h"
 #include "base/macros.h"
-#include "ios/web/public/web_state/web_state_observer.h"
-#import "ios/web/public/web_state/web_state_user_data.h"
+#include "ios/web/public/web_state_observer.h"
+#import "ios/web/public/web_state_user_data.h"
 
 @protocol RepostFormTabHelperDelegate;
 
diff --git a/ios/chrome/browser/web/sad_tab_tab_helper.h b/ios/chrome/browser/web/sad_tab_tab_helper.h
index 6aa6147..2994225f 100644
--- a/ios/chrome/browser/web/sad_tab_tab_helper.h
+++ b/ios/chrome/browser/web/sad_tab_tab_helper.h
@@ -9,8 +9,8 @@
 
 #include "base/macros.h"
 #include "base/timer/elapsed_timer.h"
-#import "ios/web/public/web_state/web_state_observer.h"
-#import "ios/web/public/web_state/web_state_user_data.h"
+#include "ios/web/public/web_state_observer.h"
+#import "ios/web/public/web_state_user_data.h"
 
 @protocol SadTabTabHelperDelegate;
 class ScopedFullscreenDisabler;
diff --git a/ios/chrome/browser/web/tab_id_tab_helper.h b/ios/chrome/browser/web/tab_id_tab_helper.h
index 276de5a..dfda32e 100644
--- a/ios/chrome/browser/web/tab_id_tab_helper.h
+++ b/ios/chrome/browser/web/tab_id_tab_helper.h
@@ -6,7 +6,7 @@
 #define IOS_CHROME_BROWSER_WEB_TAB_ID_TAB_HELPER_H_
 
 #include "base/macros.h"
-#import "ios/web/public/web_state/web_state_user_data.h"
+#import "ios/web/public/web_state_user_data.h"
 
 // Handles creating a unique identifier, which is stable across cold starts.
 class TabIdTabHelper : public web::WebStateUserData<TabIdTabHelper> {
diff --git a/ios/chrome/browser/web/web_state_delegate_tab_helper.h b/ios/chrome/browser/web/web_state_delegate_tab_helper.h
index 016b086..31abfa9e 100644
--- a/ios/chrome/browser/web/web_state_delegate_tab_helper.h
+++ b/ios/chrome/browser/web/web_state_delegate_tab_helper.h
@@ -8,8 +8,8 @@
 #include "base/memory/weak_ptr.h"
 #import "ios/chrome/browser/ui/dialogs/overlay_java_script_dialog_presenter.h"
 #import "ios/web/public/web_state/web_state_delegate.h"
-#include "ios/web/public/web_state/web_state_observer.h"
-#include "ios/web/public/web_state/web_state_user_data.h"
+#include "ios/web/public/web_state_observer.h"
+#import "ios/web/public/web_state_user_data.h"
 
 class OverlayResponse;
 
diff --git a/ios/chrome/browser/web_state_list/active_web_state_observation_forwarder_unittest.mm b/ios/chrome/browser/web_state_list/active_web_state_observation_forwarder_unittest.mm
index 41e809f6..34c746f 100644
--- a/ios/chrome/browser/web_state_list/active_web_state_observation_forwarder_unittest.mm
+++ b/ios/chrome/browser/web_state_list/active_web_state_observation_forwarder_unittest.mm
@@ -12,7 +12,7 @@
 #include "ios/chrome/browser/web_state_list/web_state_list_delegate.h"
 #include "ios/chrome/browser/web_state_list/web_state_opener.h"
 #include "ios/web/public/test/fakes/test_web_state.h"
-#include "ios/web/public/web_state/web_state_observer.h"
+#include "ios/web/public/web_state_observer.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "testing/gtest_mac.h"
 #include "testing/platform_test.h"
diff --git a/ios/chrome/browser/web_state_list/all_web_state_observation_forwarder_unittest.mm b/ios/chrome/browser/web_state_list/all_web_state_observation_forwarder_unittest.mm
index 5bd7002d..dab8ff7 100644
--- a/ios/chrome/browser/web_state_list/all_web_state_observation_forwarder_unittest.mm
+++ b/ios/chrome/browser/web_state_list/all_web_state_observation_forwarder_unittest.mm
@@ -12,7 +12,7 @@
 #include "ios/chrome/browser/web_state_list/web_state_list_delegate.h"
 #include "ios/chrome/browser/web_state_list/web_state_opener.h"
 #include "ios/web/public/test/fakes/test_web_state.h"
-#include "ios/web/public/web_state/web_state_observer.h"
+#include "ios/web/public/web_state_observer.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "testing/gtest_mac.h"
 #include "testing/platform_test.h"
diff --git a/ios/chrome/browser/webui/net_export_tab_helper.h b/ios/chrome/browser/webui/net_export_tab_helper.h
index 99b7e45a..7c9e176 100644
--- a/ios/chrome/browser/webui/net_export_tab_helper.h
+++ b/ios/chrome/browser/webui/net_export_tab_helper.h
@@ -5,7 +5,7 @@
 #ifndef IOS_CHROME_BROWSER_WEBUI_NET_EXPORT_TAB_HELPER_H_
 #define IOS_CHROME_BROWSER_WEBUI_NET_EXPORT_TAB_HELPER_H_
 
-#import "ios/web/public/web_state/web_state_user_data.h"
+#import "ios/web/public/web_state_user_data.h"
 
 @protocol NetExportTabHelperDelegate;
 @class ShowMailComposerContext;
diff --git a/ios/components/io_thread/ios_io_thread.mm b/ios/components/io_thread/ios_io_thread.mm
index a866c95a..3d73a607 100644
--- a/ios/components/io_thread/ios_io_thread.mm
+++ b/ios/components/io_thread/ios_io_thread.mm
@@ -61,7 +61,6 @@
 #include "net/spdy/spdy_session.h"
 #include "net/ssl/ssl_config_service_defaults.h"
 #include "net/url_request/data_protocol_handler.h"
-#include "net/url_request/file_protocol_handler.h"
 #include "net/url_request/static_http_user_agent_settings.h"
 #include "net/url_request/url_request_context.h"
 #include "net/url_request/url_request_context_builder.h"
diff --git a/ios/web/favicon/favicon_callbacks_inttest.mm b/ios/web/favicon/favicon_callbacks_inttest.mm
index 54e8d97..7711f44 100644
--- a/ios/web/favicon/favicon_callbacks_inttest.mm
+++ b/ios/web/favicon/favicon_callbacks_inttest.mm
@@ -8,7 +8,7 @@
 #include "ios/web/public/favicon/favicon_url.h"
 #import "ios/web/public/test/web_test_with_web_state.h"
 #import "ios/web/public/web_state.h"
-#import "ios/web/public/web_state/web_state_observer.h"
+#include "ios/web/public/web_state_observer.h"
 
 #if !defined(__has_feature) || !__has_feature(objc_arc)
 #error "This file requires ARC support."
diff --git a/ios/web/find_in_page/find_in_page_manager_impl.h b/ios/web/find_in_page/find_in_page_manager_impl.h
index ac5e357..1a3e5a87 100644
--- a/ios/web/find_in_page/find_in_page_manager_impl.h
+++ b/ios/web/find_in_page/find_in_page_manager_impl.h
@@ -10,7 +10,7 @@
 #include "base/memory/weak_ptr.h"
 #import "ios/web/find_in_page/find_in_page_request.h"
 #import "ios/web/public/find_in_page/find_in_page_manager.h"
-#include "ios/web/public/web_state/web_state_observer.h"
+#include "ios/web/public/web_state_observer.h"
 
 @class NSString;
 
diff --git a/ios/web/js_messaging/web_frame_impl.h b/ios/web/js_messaging/web_frame_impl.h
index df3ee98d..3d4626a 100644
--- a/ios/web/js_messaging/web_frame_impl.h
+++ b/ios/web/js_messaging/web_frame_impl.h
@@ -16,7 +16,7 @@
 #include "base/values.h"
 #include "crypto/symmetric_key.h"
 #import "ios/web/public/web_state.h"
-#include "ios/web/public/web_state/web_state_observer.h"
+#include "ios/web/public/web_state_observer.h"
 #include "url/gurl.h"
 
 namespace web {
diff --git a/ios/web/js_messaging/web_frame_web_state_observer_inttest.mm b/ios/web/js_messaging/web_frame_web_state_observer_inttest.mm
index 08be370..0e9835594 100644
--- a/ios/web/js_messaging/web_frame_web_state_observer_inttest.mm
+++ b/ios/web/js_messaging/web_frame_web_state_observer_inttest.mm
@@ -10,7 +10,7 @@
 #import "ios/web/public/js_messaging/web_frame.h"
 #import "ios/web/public/js_messaging/web_frames_manager.h"
 #import "ios/web/public/web_state.h"
-#import "ios/web/public/web_state/web_state_observer.h"
+#include "ios/web/public/web_state_observer.h"
 #include "testing/gmock/include/gmock/gmock.h"
 
 #if !defined(__has_feature) || !__has_feature(objc_arc)
diff --git a/ios/web/navigation/window_location_inttest.mm b/ios/web/navigation/window_location_inttest.mm
index 4238ea4..dd953c5 100644
--- a/ios/web/navigation/window_location_inttest.mm
+++ b/ios/web/navigation/window_location_inttest.mm
@@ -12,7 +12,7 @@
 #include "ios/web/public/test/http_server/http_server_util.h"
 #import "ios/web/public/test/web_view_interaction_test_util.h"
 #import "ios/web/public/web_state.h"
-#include "ios/web/public/web_state/web_state_observer.h"
+#include "ios/web/public/web_state_observer.h"
 #import "ios/web/test/web_int_test.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "testing/gtest_mac.h"
diff --git a/ios/web/public/BUILD.gn b/ios/web/public/BUILD.gn
index 784ee6cc..f1f759f 100644
--- a/ios/web/public/BUILD.gn
+++ b/ios/web/public/BUILD.gn
@@ -29,7 +29,7 @@
     "web_state/web_state_delegate.h",
     "web_state/web_state_delegate_bridge.h",
     "web_state/web_state_observer_bridge.h",
-    "web_state/web_state_user_data.h",
+    "web_state_user_data.h",
   ]
 
   libs = [ "WebKit.framework" ]
@@ -46,7 +46,7 @@
     "//url",
   ]
   sources = [
-    "web_state/web_state_observer.h",
+    "web_state_observer.h",
   ]
 
   configs += [ "//build/config/compiler:enable_arc" ]
diff --git a/ios/web/public/deprecated/global_web_state_observer.h b/ios/web/public/deprecated/global_web_state_observer.h
index 1e234601..7ede2b8 100644
--- a/ios/web/public/deprecated/global_web_state_observer.h
+++ b/ios/web/public/deprecated/global_web_state_observer.h
@@ -8,7 +8,7 @@
 #include <stddef.h>
 
 #include "base/macros.h"
-#include "ios/web/public/web_state/web_state_observer.h"
+#include "ios/web/public/web_state_observer.h"
 
 namespace web {
 
diff --git a/ios/web/public/find_in_page/find_in_page_manager.h b/ios/web/public/find_in_page/find_in_page_manager.h
index 1bd01d0..2340f61 100644
--- a/ios/web/public/find_in_page/find_in_page_manager.h
+++ b/ios/web/public/find_in_page/find_in_page_manager.h
@@ -6,7 +6,7 @@
 #define IOS_WEB_PUBLIC_FIND_IN_PAGE_FIND_IN_PAGE_MANAGER_H_
 
 #include "base/macros.h"
-#import "ios/web/public/web_state/web_state_user_data.h"
+#import "ios/web/public/web_state_user_data.h"
 
 @class NSString;
 
diff --git a/ios/web/public/test/fakes/test_web_state.h b/ios/web/public/test/fakes/test_web_state.h
index 0e4e5ca..a96805d 100644
--- a/ios/web/public/test/fakes/test_web_state.h
+++ b/ios/web/public/test/fakes/test_web_state.h
@@ -16,7 +16,7 @@
 #import "ios/web/public/navigation/navigation_manager.h"
 #import "ios/web/public/navigation/web_state_policy_decider.h"
 #import "ios/web/public/web_state.h"
-#include "ios/web/public/web_state/web_state_observer.h"
+#include "ios/web/public/web_state_observer.h"
 #include "url/gurl.h"
 
 @class NSURLRequest;
diff --git a/ios/web/public/test/fakes/test_web_state_observer.h b/ios/web/public/test/fakes/test_web_state_observer.h
index afd1dd3..b127bb7 100644
--- a/ios/web/public/test/fakes/test_web_state_observer.h
+++ b/ios/web/public/test/fakes/test_web_state_observer.h
@@ -6,7 +6,7 @@
 #define IOS_WEB_PUBLIC_TEST_FAKES_TEST_WEB_STATE_OBSERVER_H_
 
 #include "ios/web/public/test/fakes/test_web_state_observer_util.h"
-#include "ios/web/public/web_state/web_state_observer.h"
+#include "ios/web/public/web_state_observer.h"
 
 namespace web {
 
diff --git a/ios/web/public/test/test_redirect_observer.h b/ios/web/public/test/test_redirect_observer.h
index 212d4572..1e249e7f 100644
--- a/ios/web/public/test/test_redirect_observer.h
+++ b/ios/web/public/test/test_redirect_observer.h
@@ -9,8 +9,8 @@
 #include <set>
 
 #include "base/macros.h"
-#include "ios/web/public/web_state/web_state_observer.h"
-#import "ios/web/public/web_state/web_state_user_data.h"
+#include "ios/web/public/web_state_observer.h"
+#import "ios/web/public/web_state_user_data.h"
 #include "url/gurl.h"
 
 namespace web {
diff --git a/ios/web/public/test/web_test_with_web_state.mm b/ios/web/public/test/web_test_with_web_state.mm
index a6787404..12a3de1 100644
--- a/ios/web/public/test/web_test_with_web_state.mm
+++ b/ios/web/public/test/web_test_with_web_state.mm
@@ -16,7 +16,7 @@
 #import "ios/web/navigation/wk_navigation_util.h"
 #include "ios/web/public/deprecated/url_verification_constants.h"
 #import "ios/web/public/web_client.h"
-#include "ios/web/public/web_state/web_state_observer.h"
+#include "ios/web/public/web_state_observer.h"
 #import "ios/web/web_state/ui/crw_web_controller.h"
 #import "ios/web/web_state/ui/wk_web_view_configuration_provider.h"
 #import "ios/web/web_state/web_state_impl.h"
diff --git a/ios/web/public/web_state/web_state_observer.h b/ios/web/public/web_state/web_state_observer.h
index 718d4bc..7e200daa 100644
--- a/ios/web/public/web_state/web_state_observer.h
+++ b/ios/web/public/web_state/web_state_observer.h
@@ -5,154 +5,9 @@
 #ifndef IOS_WEB_PUBLIC_WEB_STATE_WEB_STATE_OBSERVER_H_
 #define IOS_WEB_PUBLIC_WEB_STATE_WEB_STATE_OBSERVER_H_
 
-#include <stddef.h>
+// TODO(crbug.com/942244): Remove this header after downstream code
+// stopped including ios/web/public/web_state/web_state.h
 
-#include <string>
-#include <vector>
-
-#include "base/macros.h"
-
-namespace web {
-
-struct FaviconURL;
-class NavigationContext;
-class WebFrame;
-class WebState;
-
-enum class PageLoadCompletionStatus : bool { SUCCESS = 0, FAILURE = 1 };
-
-// An observer API implemented by classes which are interested in various page
-// load events from WebState.
-class WebStateObserver {
- public:
-  virtual ~WebStateObserver();
-
-  // These methods are invoked every time the WebState changes visibility.
-  virtual void WasShown(WebState* web_state) {}
-  virtual void WasHidden(WebState* web_state) {}
-
-  // This method is invoked when committed navigation items have been pruned.
-  // DEPRECATED. DidChangeBackForwardState is a superset of this callback and
-  // should be used instead of NavigationItemsPruned in the future.
-  // NavigationItemsPruned is not called when slim-navigation-manager is enabled
-  // and DidChangeBackForwardState is not called when slim-navigation-manager is
-  // disabled. So for now the clients should implement both callbacks.
-  // TODO(crbug.com/910894): Remove this method.
-  virtual void NavigationItemsPruned(WebState* web_state,
-                                     size_t pruned_item_count) {}
-
-  // Called when a navigation started in the WebState for the main frame.
-  // |navigation_context| is unique to a specific navigation. The same
-  // NavigationContext will be provided on subsequent call to
-  // DidFinishNavigation() when related to this navigation. Observers should
-  // clear any references to |navigation_context| in DidFinishNavigation(), just
-  // before it is destroyed.
-  //
-  // This is also fired by same-document navigations, such as fragment
-  // navigations or pushState/replaceState, which will not result in a document
-  // change. To filter these out, use NavigationContext::IsSameDocument().
-  //
-  // More than one navigation can be ongoing in the same frame at the same
-  // time. Each will get its own NavigationContext.
-  //
-  // There is no guarantee that DidFinishNavigation() will be called for any
-  // particular navigation before DidStartNavigation is called on the next.
-  virtual void DidStartNavigation(WebState* web_state,
-                                  NavigationContext* navigation_context) {}
-
-  // Called when a navigation finished in the WebState for the main frame. This
-  // happens when a navigation is committed, aborted or replaced by a new one.
-  // To know if the navigation has resulted in an error page, use
-  // NavigationContext::GetError().
-  //
-  // If this is called because the navigation committed, then the document load
-  // will still be ongoing in the WebState returned by |navigation_context|.
-  // Use the document loads events such as DidStopLoading
-  // and related methods to listen for continued events from this
-  // WebState.
-  //
-  // This is also fired by same-document navigations, such as fragment
-  // navigations or pushState/replaceState, which will not result in a document
-  // change. To filter these out, use NavigationContext::IsSameDocument().
-  //
-  // |navigation_context| will be destroyed at the end of this call, so do not
-  // keep a reference to it afterward.
-  virtual void DidFinishNavigation(WebState* web_state,
-                                   NavigationContext* navigation_context) {}
-
-  // Called when the current WebState has started or stopped loading. This is
-  // not correlated with the document load phase of the main frame, but rather
-  // represents the load of the web page as a whole. Clients should present
-  // network activity indicator UI to the user when DidStartLoading is called
-  // and UI when DidStopLoading is called. DidStartLoading is a different event
-  // than DidStartNavigation and clients shold not assume that these two
-  // callbacks always called in pair or in a specific order (same true for
-  // DidFinishNavigation/DidFinishLoading). "Navigation" is about fetching the
-  // new document content and committing it as a new document, and "Loading"
-  // continues well after that. "Loading" callbacks are not called for fragment
-  // change navigations, but called for other same-document navigations
-  // (crbug.com/767092).
-  virtual void DidStartLoading(WebState* web_state) {}
-  virtual void DidStopLoading(WebState* web_state) {}
-
-  // Called when the current page has finished the loading of the main frame
-  // document (including same-document navigations). DidStopLoading relates to
-  // the general loading state of the WebState, but PageLoaded is correlated
-  // with the main frame document load phase. Unlike DidStopLoading, this
-  // callback is not called when the load is aborted (WebState::Stop is called
-  // or the load is rejected via WebStatePolicyDecider (both ShouldAllowRequest
-  // or ShouldAllowResponse). If PageLoaded is called it is always called after
-  // DidFinishNavigation.
-  virtual void PageLoaded(WebState* web_state,
-                          PageLoadCompletionStatus load_completion_status) {}
-
-  // Notifies the observer that the page has made some progress loading.
-  // |progress| is a value between 0.0 (nothing loaded) to 1.0 (page fully
-  // loaded).
-  virtual void LoadProgressChanged(WebState* web_state, double progress) {}
-
-  // Called when the canGoBack / canGoForward state of the window was changed.
-  virtual void DidChangeBackForwardState(WebState* web_state) {}
-
-  // Called when the title of the WebState is set.
-  virtual void TitleWasSet(WebState* web_state) {}
-
-  // Called when the visible security state of the page changes.
-  virtual void DidChangeVisibleSecurityState(WebState* web_state) {}
-
-  // Invoked when new favicon URL candidates are received.
-  virtual void FaviconUrlUpdated(WebState* web_state,
-                                 const std::vector<FaviconURL>& candidates) {}
-
-  // Called when a frame was created or navigated to a new document.
-  // Receivers can keep references to |web_frame| until
-  // |WebFrameWillBecomeUnavailable| is called but must not assume that the
-  // web Frame described by |web_frame| still exist.
-  virtual void WebFrameDidBecomeAvailable(WebState* web_state,
-                                          WebFrame* web_frame) {}
-
-  // Called when a frame was deleted or navigated away from the document and
-  // will be removed from the WebFramesManager.
-  // Receivers of this callback should clear all references to
-  // |web_frame|.
-  virtual void WebFrameWillBecomeUnavailable(WebState* web_state,
-                                             WebFrame* web_frame) {}
-
-  // Called when the web process is terminated (usually by crashing, though
-  // possibly by other means).
-  virtual void RenderProcessGone(WebState* web_state) {}
-
-  // Invoked when the WebState is being destroyed. Gives subclasses a chance
-  // to cleanup.
-  virtual void WebStateDestroyed(WebState* web_state) {}
-
- protected:
-  WebStateObserver();
-
- private:
-  DISALLOW_COPY_AND_ASSIGN(WebStateObserver);
-};
-
-}  // namespace web
+#include "ios/web/public/web_state_observer.h"
 
 #endif  // IOS_WEB_PUBLIC_WEB_STATE_WEB_STATE_OBSERVER_H_
diff --git a/ios/web/public/web_state/web_state_observer_bridge.h b/ios/web/public/web_state/web_state_observer_bridge.h
index ea99f7d7..e96e685 100644
--- a/ios/web/public/web_state/web_state_observer_bridge.h
+++ b/ios/web/public/web_state/web_state_observer_bridge.h
@@ -10,7 +10,7 @@
 #include <string>
 
 #include "base/macros.h"
-#include "ios/web/public/web_state/web_state_observer.h"
+#include "ios/web/public/web_state_observer.h"
 
 // Observes page lifecyle events from Objective-C. To use as a
 // web::WebStateObserver, wrap in a web::WebStateObserverBridge.
diff --git a/ios/web/public/web_state_observer.h b/ios/web/public/web_state_observer.h
new file mode 100644
index 0000000..c6a8059
--- /dev/null
+++ b/ios/web/public/web_state_observer.h
@@ -0,0 +1,158 @@
+// Copyright 2014 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef IOS_WEB_PUBLIC_WEB_STATE_OBSERVER_H_
+#define IOS_WEB_PUBLIC_WEB_STATE_OBSERVER_H_
+
+#include <stddef.h>
+
+#include <string>
+#include <vector>
+
+#include "base/macros.h"
+
+namespace web {
+
+struct FaviconURL;
+class NavigationContext;
+class WebFrame;
+class WebState;
+
+enum class PageLoadCompletionStatus : bool { SUCCESS = 0, FAILURE = 1 };
+
+// An observer API implemented by classes which are interested in various page
+// load events from WebState.
+class WebStateObserver {
+ public:
+  virtual ~WebStateObserver();
+
+  // These methods are invoked every time the WebState changes visibility.
+  virtual void WasShown(WebState* web_state) {}
+  virtual void WasHidden(WebState* web_state) {}
+
+  // This method is invoked when committed navigation items have been pruned.
+  // DEPRECATED. DidChangeBackForwardState is a superset of this callback and
+  // should be used instead of NavigationItemsPruned in the future.
+  // NavigationItemsPruned is not called when slim-navigation-manager is enabled
+  // and DidChangeBackForwardState is not called when slim-navigation-manager is
+  // disabled. So for now the clients should implement both callbacks.
+  // TODO(crbug.com/910894): Remove this method.
+  virtual void NavigationItemsPruned(WebState* web_state,
+                                     size_t pruned_item_count) {}
+
+  // Called when a navigation started in the WebState for the main frame.
+  // |navigation_context| is unique to a specific navigation. The same
+  // NavigationContext will be provided on subsequent call to
+  // DidFinishNavigation() when related to this navigation. Observers should
+  // clear any references to |navigation_context| in DidFinishNavigation(), just
+  // before it is destroyed.
+  //
+  // This is also fired by same-document navigations, such as fragment
+  // navigations or pushState/replaceState, which will not result in a document
+  // change. To filter these out, use NavigationContext::IsSameDocument().
+  //
+  // More than one navigation can be ongoing in the same frame at the same
+  // time. Each will get its own NavigationContext.
+  //
+  // There is no guarantee that DidFinishNavigation() will be called for any
+  // particular navigation before DidStartNavigation is called on the next.
+  virtual void DidStartNavigation(WebState* web_state,
+                                  NavigationContext* navigation_context) {}
+
+  // Called when a navigation finished in the WebState for the main frame. This
+  // happens when a navigation is committed, aborted or replaced by a new one.
+  // To know if the navigation has resulted in an error page, use
+  // NavigationContext::GetError().
+  //
+  // If this is called because the navigation committed, then the document load
+  // will still be ongoing in the WebState returned by |navigation_context|.
+  // Use the document loads events such as DidStopLoading
+  // and related methods to listen for continued events from this
+  // WebState.
+  //
+  // This is also fired by same-document navigations, such as fragment
+  // navigations or pushState/replaceState, which will not result in a document
+  // change. To filter these out, use NavigationContext::IsSameDocument().
+  //
+  // |navigation_context| will be destroyed at the end of this call, so do not
+  // keep a reference to it afterward.
+  virtual void DidFinishNavigation(WebState* web_state,
+                                   NavigationContext* navigation_context) {}
+
+  // Called when the current WebState has started or stopped loading. This is
+  // not correlated with the document load phase of the main frame, but rather
+  // represents the load of the web page as a whole. Clients should present
+  // network activity indicator UI to the user when DidStartLoading is called
+  // and UI when DidStopLoading is called. DidStartLoading is a different event
+  // than DidStartNavigation and clients should not assume that these two
+  // callbacks always called in pair or in a specific order (same true for
+  // DidFinishNavigation/DidFinishLoading). "Navigation" is about fetching the
+  // new document content and committing it as a new document, and "Loading"
+  // continues well after that. "Loading" callbacks are not called for fragment
+  // change navigations, but called for other same-document navigations
+  // (crbug.com/767092).
+  virtual void DidStartLoading(WebState* web_state) {}
+  virtual void DidStopLoading(WebState* web_state) {}
+
+  // Called when the current page has finished the loading of the main frame
+  // document (including same-document navigations). DidStopLoading relates to
+  // the general loading state of the WebState, but PageLoaded is correlated
+  // with the main frame document load phase. Unlike DidStopLoading, this
+  // callback is not called when the load is aborted (WebState::Stop is called
+  // or the load is rejected via WebStatePolicyDecider (both ShouldAllowRequest
+  // or ShouldAllowResponse). If PageLoaded is called it is always called after
+  // DidFinishNavigation.
+  virtual void PageLoaded(WebState* web_state,
+                          PageLoadCompletionStatus load_completion_status) {}
+
+  // Notifies the observer that the page has made some progress loading.
+  // |progress| is a value between 0.0 (nothing loaded) to 1.0 (page fully
+  // loaded).
+  virtual void LoadProgressChanged(WebState* web_state, double progress) {}
+
+  // Called when the canGoBack / canGoForward state of the window was changed.
+  virtual void DidChangeBackForwardState(WebState* web_state) {}
+
+  // Called when the title of the WebState is set.
+  virtual void TitleWasSet(WebState* web_state) {}
+
+  // Called when the visible security state of the page changes.
+  virtual void DidChangeVisibleSecurityState(WebState* web_state) {}
+
+  // Invoked when new favicon URL candidates are received.
+  virtual void FaviconUrlUpdated(WebState* web_state,
+                                 const std::vector<FaviconURL>& candidates) {}
+
+  // Called when a frame was created or navigated to a new document.
+  // Receivers can keep references to |web_frame| until
+  // |WebFrameWillBecomeUnavailable| is called but must not assume that the
+  // web Frame described by |web_frame| still exist.
+  virtual void WebFrameDidBecomeAvailable(WebState* web_state,
+                                          WebFrame* web_frame) {}
+
+  // Called when a frame was deleted or navigated away from the document and
+  // will be removed from the WebFramesManager.
+  // Receivers of this callback should clear all references to
+  // |web_frame|.
+  virtual void WebFrameWillBecomeUnavailable(WebState* web_state,
+                                             WebFrame* web_frame) {}
+
+  // Called when the web process is terminated (usually by crashing, though
+  // possibly by other means).
+  virtual void RenderProcessGone(WebState* web_state) {}
+
+  // Invoked when the WebState is being destroyed. Gives subclasses a chance
+  // to cleanup.
+  virtual void WebStateDestroyed(WebState* web_state) {}
+
+ protected:
+  WebStateObserver();
+
+ private:
+  DISALLOW_COPY_AND_ASSIGN(WebStateObserver);
+};
+
+}  // namespace web
+
+#endif  // IOS_WEB_PUBLIC_WEB_STATE_OBSERVER_H_
diff --git a/ios/web/public/web_state/web_state_user_data.h b/ios/web/public/web_state_user_data.h
similarity index 93%
rename from ios/web/public/web_state/web_state_user_data.h
rename to ios/web/public/web_state_user_data.h
index 0cc31e0..de1a7ee 100644
--- a/ios/web/public/web_state/web_state_user_data.h
+++ b/ios/web/public/web_state_user_data.h
@@ -2,8 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#ifndef IOS_WEB_PUBLIC_WEB_STATE_WEB_STATE_USER_DATA_H_
-#define IOS_WEB_PUBLIC_WEB_STATE_WEB_STATE_USER_DATA_H_
+#ifndef IOS_WEB_PUBLIC_WEB_STATE_USER_DATA_H_
+#define IOS_WEB_PUBLIC_WEB_STATE_USER_DATA_H_
 
 #include "base/logging.h"
 #include "base/memory/ptr_util.h"
@@ -69,4 +69,4 @@
 
 }  // namespace web
 
-#endif  // IOS_WEB_PUBLIC_WEB_STATE_WEB_STATE_USER_DATA_H_
+#endif  // IOS_WEB_PUBLIC_WEB_STATE_USER_DATA_H_
diff --git a/ios/web/security/web_interstitial_impl.h b/ios/web/security/web_interstitial_impl.h
index 0900130..5639d3c7 100644
--- a/ios/web/security/web_interstitial_impl.h
+++ b/ios/web/security/web_interstitial_impl.h
@@ -10,7 +10,7 @@
 #import "ios/web/common/crw_content_view.h"
 #import "ios/web/js_messaging/web_view_js_utils.h"
 #include "ios/web/public/security/web_interstitial.h"
-#include "ios/web/public/web_state/web_state_observer.h"
+#include "ios/web/public/web_state_observer.h"
 #include "url/gurl.h"
 
 @protocol WKNavigationDelegate;
diff --git a/ios/web/shell/BUILD.gn b/ios/web/shell/BUILD.gn
index 71d8c41..431f28f5 100644
--- a/ios/web/shell/BUILD.gn
+++ b/ios/web/shell/BUILD.gn
@@ -47,8 +47,6 @@
     "shell_browser_state.mm",
     "shell_main_delegate.h",
     "shell_main_delegate.mm",
-    "shell_network_delegate.cc",
-    "shell_network_delegate.h",
     "shell_url_request_context_getter.h",
     "shell_url_request_context_getter.mm",
     "shell_web_client.h",
diff --git a/ios/web/shell/shell_network_delegate.cc b/ios/web/shell/shell_network_delegate.cc
deleted file mode 100644
index ea72ac5..0000000
--- a/ios/web/shell/shell_network_delegate.cc
+++ /dev/null
@@ -1,24 +0,0 @@
-// Copyright 2014 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "ios/web/shell/shell_network_delegate.h"
-
-#include "net/base/net_errors.h"
-
-namespace web {
-
-ShellNetworkDelegate::ShellNetworkDelegate() {
-}
-
-ShellNetworkDelegate::~ShellNetworkDelegate() {
-}
-
-bool ShellNetworkDelegate::OnCanAccessFile(
-    const net::URLRequest& request,
-    const base::FilePath& original_path,
-    const base::FilePath& absolute_path) const {
-  return true;
-}
-
-}  // namespace web
diff --git a/ios/web/shell/shell_network_delegate.h b/ios/web/shell/shell_network_delegate.h
deleted file mode 100644
index fc671a1..0000000
--- a/ios/web/shell/shell_network_delegate.h
+++ /dev/null
@@ -1,30 +0,0 @@
-// Copyright 2014 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef IOS_WEB_SHELL_SHELL_NETWORK_DELEGATE_H_
-#define IOS_WEB_SHELL_SHELL_NETWORK_DELEGATE_H_
-
-#include "base/compiler_specific.h"
-#include "base/macros.h"
-#include "net/base/network_delegate_impl.h"
-
-namespace web {
-
-class ShellNetworkDelegate : public net::NetworkDelegateImpl {
- public:
-  ShellNetworkDelegate();
-  ~ShellNetworkDelegate() override;
-
- private:
-  // net::NetworkDelegate implementation.
-  bool OnCanAccessFile(const net::URLRequest& request,
-                       const base::FilePath& original_path,
-                       const base::FilePath& absolute_path) const override;
-
-  DISALLOW_COPY_AND_ASSIGN(ShellNetworkDelegate);
-};
-
-}  // namespace web
-
-#endif  // IOS_WEB_SHELL_SHELL_NETWORK_DELEGATE_H_
diff --git a/ios/web/shell/shell_url_request_context_getter.mm b/ios/web/shell/shell_url_request_context_getter.mm
index 485ffd67..e58b304 100644
--- a/ios/web/shell/shell_url_request_context_getter.mm
+++ b/ios/web/shell/shell_url_request_context_getter.mm
@@ -15,8 +15,8 @@
 #include "base/task/post_task.h"
 #import "ios/net/cookies/cookie_store_ios_persistent.h"
 #import "ios/web/public/web_client.h"
-#include "ios/web/shell/shell_network_delegate.h"
 #include "net/base/cache_type.h"
+#include "net/base/network_delegate_impl.h"
 #include "net/cert/cert_verifier.h"
 #include "net/cert/ct_policy_enforcer.h"
 #include "net/cert/multi_log_ct_verifier.h"
@@ -63,7 +63,7 @@
     url_request_context_.reset(new net::URLRequestContext());
     url_request_context_->set_net_log(net_log_.get());
     DCHECK(!network_delegate_.get());
-    network_delegate_.reset(new ShellNetworkDelegate);
+    network_delegate_ = std::make_unique<net::NetworkDelegateImpl>();
     url_request_context_->set_network_delegate(network_delegate_.get());
 
     storage_.reset(
diff --git a/ios/web/test/web_int_test.mm b/ios/web/test/web_int_test.mm
index dfe8c29..b975880 100644
--- a/ios/web/test/web_int_test.mm
+++ b/ios/web/test/web_int_test.mm
@@ -13,7 +13,7 @@
 #import "ios/web/common/web_view_creation_util.h"
 #import "ios/web/public/test/http_server/http_server.h"
 #import "ios/web/public/test/js_test_util.h"
-#include "ios/web/public/web_state/web_state_observer.h"
+#include "ios/web/public/web_state_observer.h"
 
 #if !defined(__has_feature) || !__has_feature(objc_arc)
 #error "This file requires ARC support."
diff --git a/ios/web/web_state/global_web_state_event_tracker.h b/ios/web/web_state/global_web_state_event_tracker.h
index 001ef85..e8c7c8f 100644
--- a/ios/web/web_state/global_web_state_event_tracker.h
+++ b/ios/web/web_state/global_web_state_event_tracker.h
@@ -12,7 +12,7 @@
 #include "base/observer_list.h"
 #include "base/scoped_observer.h"
 #include "ios/web/public/deprecated/global_web_state_observer.h"
-#include "ios/web/public/web_state/web_state_observer.h"
+#include "ios/web/public/web_state_observer.h"
 
 namespace web {
 
diff --git a/ios/web/web_state/global_web_state_event_tracker.mm b/ios/web/web_state/global_web_state_event_tracker.mm
index 64f9c4f..4b756a9 100644
--- a/ios/web/web_state/global_web_state_event_tracker.mm
+++ b/ios/web/web_state/global_web_state_event_tracker.mm
@@ -8,7 +8,7 @@
 
 #include "base/macros.h"
 #include "base/no_destructor.h"
-#import "ios/web/public/web_state/web_state_user_data.h"
+#import "ios/web/public/web_state_user_data.h"
 
 #if !defined(__has_feature) || !__has_feature(objc_arc)
 #error "This file requires ARC support."
diff --git a/ios/web/web_state/ui/crw_web_controller_unittest.mm b/ios/web/web_state/ui/crw_web_controller_unittest.mm
index c119210..7b472ed4 100644
--- a/ios/web/web_state/ui/crw_web_controller_unittest.mm
+++ b/ios/web/web_state/ui/crw_web_controller_unittest.mm
@@ -46,7 +46,7 @@
 #include "ios/web/public/test/fakes/test_web_state_observer.h"
 #import "ios/web/public/test/fakes/test_web_view_content_view.h"
 #import "ios/web/public/test/web_view_content_test_util.h"
-#include "ios/web/public/web_state/web_state_observer.h"
+#include "ios/web/public/web_state_observer.h"
 #import "ios/web/security/wk_web_view_security_util.h"
 #import "ios/web/test/fakes/crw_fake_back_forward_list.h"
 #import "ios/web/test/fakes/crw_fake_wk_frame_info.h"
diff --git a/ios/web/web_state/web_state_impl.mm b/ios/web/web_state/web_state_impl.mm
index dc22e13..ee5f8e05 100644
--- a/ios/web/web_state/web_state_impl.mm
+++ b/ios/web/web_state/web_state_impl.mm
@@ -37,7 +37,7 @@
 #import "ios/web/public/ui/java_script_dialog_presenter.h"
 #import "ios/web/public/web_client.h"
 #import "ios/web/public/web_state/web_state_delegate.h"
-#include "ios/web/public/web_state/web_state_observer.h"
+#include "ios/web/public/web_state_observer.h"
 #include "ios/web/public/webui/web_ui_ios_controller.h"
 #import "ios/web/security/web_interstitial_impl.h"
 #import "ios/web/session/session_certificate_policy_cache_impl.h"
diff --git a/ios/web/web_state/web_state_impl_unittest.mm b/ios/web/web_state/web_state_impl_unittest.mm
index 5c4dd8f5..a8a38ca 100644
--- a/ios/web/web_state/web_state_impl_unittest.mm
+++ b/ios/web/web_state/web_state_impl_unittest.mm
@@ -37,7 +37,7 @@
 #import "ios/web/public/ui/context_menu_params.h"
 #import "ios/web/public/ui/java_script_dialog_presenter.h"
 #import "ios/web/public/web_state/web_state_delegate.h"
-#include "ios/web/public/web_state/web_state_observer.h"
+#include "ios/web/public/web_state_observer.h"
 #import "ios/web/security/web_interstitial_impl.h"
 #import "ios/web/test/fakes/mock_interstitial_delegate.h"
 #include "ios/web/web_state/global_web_state_event_tracker.h"
diff --git a/ios/web/web_state/web_state_observer.mm b/ios/web/web_state/web_state_observer.mm
index 423a38d..daae1a3 100644
--- a/ios/web/web_state/web_state_observer.mm
+++ b/ios/web/web_state/web_state_observer.mm
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "ios/web/public/web_state/web_state_observer.h"
+#include "ios/web/public/web_state_observer.h"
 
 #if !defined(__has_feature) || !__has_feature(objc_arc)
 #error "This file requires ARC support."
diff --git a/ios/web/web_state/web_state_observer_inttest.mm b/ios/web/web_state/web_state_observer_inttest.mm
index c547752..0a42c55 100644
--- a/ios/web/web_state/web_state_observer_inttest.mm
+++ b/ios/web/web_state/web_state_observer_inttest.mm
@@ -34,7 +34,7 @@
 #import "ios/web/public/test/web_view_content_test_util.h"
 #import "ios/web/public/test/web_view_interaction_test_util.h"
 #import "ios/web/public/web_client.h"
-#include "ios/web/public/web_state/web_state_observer.h"
+#include "ios/web/public/web_state_observer.h"
 #include "ios/web/test/test_url_constants.h"
 #import "ios/web/test/web_int_test.h"
 #import "ios/web/web_state/ui/crw_web_controller.h"
diff --git a/ios/web/web_state/web_state_unittest.mm b/ios/web/web_state/web_state_unittest.mm
index f91c6ea4..71e5df1 100644
--- a/ios/web/web_state/web_state_unittest.mm
+++ b/ios/web/web_state/web_state_unittest.mm
@@ -29,7 +29,7 @@
 #import "ios/web/public/test/web_test_with_web_state.h"
 #import "ios/web/public/test/web_view_content_test_util.h"
 #import "ios/web/public/web_client.h"
-#import "ios/web/public/web_state/web_state_observer.h"
+#include "ios/web/public/web_state_observer.h"
 #include "ios/web/test/test_url_constants.h"
 #include "net/test/embedded_test_server/default_handlers.h"
 #include "net/test/embedded_test_server/embedded_test_server.h"
diff --git a/ios/web_view/BUILD.gn b/ios/web_view/BUILD.gn
index 9a2aeee..c346f78 100644
--- a/ios/web_view/BUILD.gn
+++ b/ios/web_view/BUILD.gn
@@ -206,8 +206,6 @@
   "internal/web_view_global_state_util.mm",
   "internal/web_view_java_script_dialog_presenter.h",
   "internal/web_view_java_script_dialog_presenter.mm",
-  "internal/web_view_network_delegate.h",
-  "internal/web_view_network_delegate.mm",
   "internal/web_view_url_request_context_getter.h",
   "internal/web_view_url_request_context_getter.mm",
   "internal/web_view_web_client.h",
diff --git a/ios/web_view/internal/app/web_view_io_thread.mm b/ios/web_view/internal/app/web_view_io_thread.mm
index 0ff7b29c..cc659e85 100644
--- a/ios/web_view/internal/app/web_view_io_thread.mm
+++ b/ios/web_view/internal/app/web_view_io_thread.mm
@@ -4,7 +4,7 @@
 
 #include "ios/web_view/internal/app/web_view_io_thread.h"
 
-#include "ios/web_view/internal/web_view_network_delegate.h"
+#include "net/base/network_delegate_impl.h"
 
 #if !defined(__has_feature) || !__has_feature(objc_arc)
 #error "This file requires ARC support."
@@ -19,7 +19,7 @@
 
 std::unique_ptr<net::NetworkDelegate>
 WebViewIOThread::CreateSystemNetworkDelegate() {
-  return std::make_unique<ios_web_view::WebViewNetworkDelegate>();
+  return std::make_unique<net::NetworkDelegateImpl>();
 }
 
 std::string WebViewIOThread::GetChannelString() const {
diff --git a/ios/web_view/internal/translate/web_view_translate_client.h b/ios/web_view/internal/translate/web_view_translate_client.h
index 8b7692b..d747900 100644
--- a/ios/web_view/internal/translate/web_view_translate_client.h
+++ b/ios/web_view/internal/translate/web_view_translate_client.h
@@ -12,8 +12,8 @@
 #include "components/translate/core/browser/translate_step.h"
 #include "components/translate/core/common/translate_errors.h"
 #import "components/translate/ios/browser/ios_translate_driver.h"
-#include "ios/web/public/web_state/web_state_observer.h"
-#import "ios/web/public/web_state/web_state_user_data.h"
+#include "ios/web/public/web_state_observer.h"
+#import "ios/web/public/web_state_user_data.h"
 
 @class CWVTranslationController;
 
diff --git a/ios/web_view/internal/web_view_network_delegate.h b/ios/web_view/internal/web_view_network_delegate.h
deleted file mode 100644
index 9434302..0000000
--- a/ios/web_view/internal/web_view_network_delegate.h
+++ /dev/null
@@ -1,30 +0,0 @@
-// Copyright 2014 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef IOS_WEB_VIEW_INTERNAL_WEB_VIEW_NETWORK_DELEGATE_H_
-#define IOS_WEB_VIEW_INTERNAL_WEB_VIEW_NETWORK_DELEGATE_H_
-
-#include "base/macros.h"
-#include "net/base/network_delegate_impl.h"
-
-namespace ios_web_view {
-
-// WebView implementation of NetworkDelegate.
-class WebViewNetworkDelegate : public net::NetworkDelegateImpl {
- public:
-  WebViewNetworkDelegate();
-  ~WebViewNetworkDelegate() override;
-
- private:
-  // net::NetworkDelegate implementation.
-  bool OnCanAccessFile(const net::URLRequest& request,
-                       const base::FilePath& original_path,
-                       const base::FilePath& absolute_path) const override;
-
-  DISALLOW_COPY_AND_ASSIGN(WebViewNetworkDelegate);
-};
-
-}  // namespace ios_web_view
-
-#endif  // IOS_WEB_VIEW_INTERNAL_WEB_VIEW_NETWORK_DELEGATE_H_
diff --git a/ios/web_view/internal/web_view_network_delegate.mm b/ios/web_view/internal/web_view_network_delegate.mm
deleted file mode 100644
index 4078c1d..0000000
--- a/ios/web_view/internal/web_view_network_delegate.mm
+++ /dev/null
@@ -1,26 +0,0 @@
-// Copyright 2014 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "ios/web_view/internal/web_view_network_delegate.h"
-
-#include "net/base/net_errors.h"
-
-#if !defined(__has_feature) || !__has_feature(objc_arc)
-#error "This file requires ARC support."
-#endif
-
-namespace ios_web_view {
-
-WebViewNetworkDelegate::WebViewNetworkDelegate() {}
-
-WebViewNetworkDelegate::~WebViewNetworkDelegate() = default;
-
-bool WebViewNetworkDelegate::OnCanAccessFile(
-    const net::URLRequest& request,
-    const base::FilePath& original_path,
-    const base::FilePath& absolute_path) const {
-  return true;
-}
-
-}  // namespace ios_web_view
diff --git a/ios/web_view/internal/web_view_url_request_context_getter.mm b/ios/web_view/internal/web_view_url_request_context_getter.mm
index b11f4ae..cfe40f9 100644
--- a/ios/web_view/internal/web_view_url_request_context_getter.mm
+++ b/ios/web_view/internal/web_view_url_request_context_getter.mm
@@ -14,8 +14,8 @@
 #include "base/task/post_task.h"
 #import "ios/net/cookies/cookie_store_ios_persistent.h"
 #import "ios/web/public/web_client.h"
-#include "ios/web_view/internal/web_view_network_delegate.h"
 #include "net/base/cache_type.h"
+#include "net/base/network_delegate_impl.h"
 #include "net/cert/cert_verifier.h"
 #include "net/cert/ct_policy_enforcer.h"
 #include "net/cert/multi_log_ct_verifier.h"
@@ -68,7 +68,7 @@
     url_request_context_.reset(new net::URLRequestContext());
     url_request_context_->set_net_log(net_log_);
     DCHECK(!network_delegate_.get());
-    network_delegate_ = std::make_unique<WebViewNetworkDelegate>();
+    network_delegate_ = std::make_unique<net::NetworkDelegateImpl>();
     url_request_context_->set_network_delegate(network_delegate_.get());
 
     storage_.reset(
diff --git a/media/BUILD.gn b/media/BUILD.gn
index d88a4887..db86a997 100644
--- a/media/BUILD.gn
+++ b/media/BUILD.gn
@@ -172,7 +172,7 @@
     deps += [
       # The test needs the java dependencies to add the java classes for their
       # native counterparts to the test apk.
-      "//gpu/ipc/common:android_texture_owner_unittests",
+      "//gpu/command_buffer/service:android_texture_owner_unittests",
       "//media/base/android:media_java",
       "//media/base/android:unit_tests",
       "//media/gpu:android_video_decode_accelerator_unittests",
diff --git a/media/base/BUILD.gn b/media/base/BUILD.gn
index fbda386..7d2cb05 100644
--- a/media/base/BUILD.gn
+++ b/media/base/BUILD.gn
@@ -29,7 +29,8 @@
   }
 
   if (is_android) {
-    visibility += [ "//gpu/ipc/common:android_texture_owner_unittests" ]
+    visibility +=
+        [ "//gpu/command_buffer/service:android_texture_owner_unittests" ]
   }
 
   sources = [
diff --git a/media/cdm/supported_cdm_versions.h b/media/cdm/supported_cdm_versions.h
index 3f220da..dbe59ba 100644
--- a/media/cdm/supported_cdm_versions.h
+++ b/media/cdm/supported_cdm_versions.h
@@ -32,7 +32,7 @@
   bool enabled;
 };
 
-constexpr std::array<SupportedVersion, 3> kSupportedCdmInterfaceVersions = {{
+constexpr std::array<SupportedVersion, 2> kSupportedCdmInterfaceVersions = {{
     {10, true},
     {11, false},
 }};
diff --git a/media/gpu/BUILD.gn b/media/gpu/BUILD.gn
index 000732d3..da2e0b11 100644
--- a/media/gpu/BUILD.gn
+++ b/media/gpu/BUILD.gn
@@ -136,9 +136,7 @@
     ]
     libs += [ "android" ]
     deps += [
-      "//gpu/command_buffer/service:shared_image_video",
       "//gpu/ipc/common:android_image_reader_utils",
-      "//gpu/ipc/common:android_texture_owner",
 
       # TODO(crbug.com/789435): This can be removed once CdmManager is removed.
       "//gpu/ipc/common:ipc_common_sources",
@@ -425,7 +423,7 @@
     if (is_android) {
       deps += [
         ":android_video_decode_accelerator_unittests",
-        "//gpu/ipc/common:android_texture_owner_unittests",
+        "//gpu/command_buffer/service:android_texture_owner_unittests",
         "//media/base/android:media_java",
         "//media/test:run_all_unittests",
         "//ui/android:ui_java",
@@ -484,7 +482,7 @@
       ":gpu",
       "//base/test:test_support",
       "//gpu:test_support",
-      "//gpu/ipc/common:android_texture_owner_test_support",
+      "//gpu/command_buffer/service:android_texture_owner_test_support",
       "//media",
       "//media:test_support",
       "//testing/gmock",
diff --git a/media/gpu/android/codec_buffer_wait_coordinator.h b/media/gpu/android/codec_buffer_wait_coordinator.h
index e6523b23..c9aa22da 100644
--- a/media/gpu/android/codec_buffer_wait_coordinator.h
+++ b/media/gpu/android/codec_buffer_wait_coordinator.h
@@ -9,7 +9,7 @@
 #include "base/synchronization/waitable_event.h"
 #include "base/threading/thread_checker.h"
 #include "base/time/time.h"
-#include "gpu/ipc/common/android/texture_owner.h"
+#include "gpu/command_buffer/service/texture_owner.h"
 #include "media/gpu/media_gpu_export.h"
 
 namespace media {
diff --git a/media/gpu/android/codec_image_unittest.cc b/media/gpu/android/codec_image_unittest.cc
index 3bf7bcd..5dbba26 100644
--- a/media/gpu/android/codec_image_unittest.cc
+++ b/media/gpu/android/codec_image_unittest.cc
@@ -10,9 +10,9 @@
 #include "base/test/mock_callback.h"
 #include "base/test/task_environment.h"
 #include "base/threading/sequenced_task_runner_handle.h"
+#include "gpu/command_buffer/service/mock_abstract_texture.h"
+#include "gpu/command_buffer/service/mock_texture_owner.h"
 #include "gpu/command_buffer/service/texture_manager.h"
-#include "gpu/ipc/common/android/mock_abstract_texture.h"
-#include "gpu/ipc/common/android/mock_texture_owner.h"
 #include "media/base/android/media_codec_bridge.h"
 #include "media/base/android/mock_media_codec_bridge.h"
 #include "media/gpu/android/codec_image.h"
diff --git a/media/gpu/android/codec_surface_bundle.h b/media/gpu/android/codec_surface_bundle.h
index 86a3ad0e..512a290 100644
--- a/media/gpu/android/codec_surface_bundle.h
+++ b/media/gpu/android/codec_surface_bundle.h
@@ -6,7 +6,7 @@
 #define MEDIA_GPU_ANDROID_CODEC_SURFACE_BUNDLE_H_
 
 #include "base/memory/ref_counted_delete_on_sequence.h"
-#include "gpu/ipc/common/android/texture_owner.h"
+#include "gpu/command_buffer/service/texture_owner.h"
 #include "media/base/android/android_overlay.h"
 #include "media/gpu/android/codec_buffer_wait_coordinator.h"
 #include "media/gpu/media_gpu_export.h"
diff --git a/media/gpu/android/direct_shared_image_video_provider.h b/media/gpu/android/direct_shared_image_video_provider.h
index 7225062b..b860ad1 100644
--- a/media/gpu/android/direct_shared_image_video_provider.h
+++ b/media/gpu/android/direct_shared_image_video_provider.h
@@ -14,7 +14,7 @@
 #include "gpu/command_buffer/service/gles2_cmd_decoder.h"
 #include "gpu/command_buffer/service/shared_image_representation.h"
 #include "gpu/command_buffer/service/texture_manager.h"
-#include "gpu/ipc/common/android/texture_owner.h"
+#include "gpu/command_buffer/service/texture_owner.h"
 #include "gpu/ipc/common/vulkan_ycbcr_info.h"
 #include "gpu/ipc/service/command_buffer_stub.h"
 #include "media/base/video_frame.h"
diff --git a/media/gpu/android/media_codec_video_decoder_unittest.cc b/media/gpu/android/media_codec_video_decoder_unittest.cc
index 0e7db6f..1161ab9 100644
--- a/media/gpu/android/media_codec_video_decoder_unittest.cc
+++ b/media/gpu/android/media_codec_video_decoder_unittest.cc
@@ -12,8 +12,8 @@
 #include "base/test/mock_callback.h"
 #include "base/test/task_environment.h"
 #include "base/threading/thread_task_runner_handle.h"
+#include "gpu/command_buffer/service/mock_texture_owner.h"
 #include "gpu/config/gpu_preferences.h"
-#include "gpu/ipc/common/android/mock_texture_owner.h"
 #include "media/base/android/media_codec_util.h"
 #include "media/base/android/mock_android_overlay.h"
 #include "media/base/android/mock_media_crypto_context.h"
diff --git a/media/gpu/android/mock_codec_buffer_wait_coordinator.h b/media/gpu/android/mock_codec_buffer_wait_coordinator.h
index 14fe033b..08f69bb 100644
--- a/media/gpu/android/mock_codec_buffer_wait_coordinator.h
+++ b/media/gpu/android/mock_codec_buffer_wait_coordinator.h
@@ -5,7 +5,7 @@
 #ifndef MEDIA_GPU_ANDROID_MOCK_CODEC_BUFFER_WAIT_COORDINATOR_H_
 #define MEDIA_GPU_ANDROID_MOCK_CODEC_BUFFER_WAIT_COORDINATOR_H_
 
-#include "gpu/ipc/common/android/mock_texture_owner.h"
+#include "gpu/command_buffer/service/mock_texture_owner.h"
 #include "media/gpu/android/codec_buffer_wait_coordinator.h"
 
 namespace media {
diff --git a/media/gpu/android/video_frame_factory_impl.cc b/media/gpu/android/video_frame_factory_impl.cc
index 1b02953..6571f2c 100644
--- a/media/gpu/android/video_frame_factory_impl.cc
+++ b/media/gpu/android/video_frame_factory_impl.cc
@@ -18,7 +18,7 @@
 #include "base/trace_event/trace_event.h"
 #include "gpu/command_buffer/service/abstract_texture.h"
 #include "gpu/command_buffer/service/shared_context_state.h"
-#include "gpu/ipc/common/android/texture_owner.h"
+#include "gpu/command_buffer/service/texture_owner.h"
 #include "media/base/bind_to_current_loop.h"
 #include "media/base/media_switches.h"
 #include "media/base/video_frame.h"
diff --git a/media/gpu/android/video_frame_factory_impl_unittest.cc b/media/gpu/android/video_frame_factory_impl_unittest.cc
index 5296e54..a4129ae 100644
--- a/media/gpu/android/video_frame_factory_impl_unittest.cc
+++ b/media/gpu/android/video_frame_factory_impl_unittest.cc
@@ -10,9 +10,9 @@
 #include "base/test/mock_callback.h"
 #include "base/test/task_environment.h"
 #include "base/threading/thread_task_runner_handle.h"
+#include "gpu/command_buffer/service/mock_texture_owner.h"
 #include "gpu/command_buffer/service/shared_context_state.h"
 #include "gpu/config/gpu_preferences.h"
-#include "gpu/ipc/common/android/mock_texture_owner.h"
 #include "media/base/limits.h"
 #include "media/gpu/android/codec_buffer_wait_coordinator.h"
 #include "media/gpu/android/maybe_render_early_manager.h"
diff --git a/media/renderers/BUILD.gn b/media/renderers/BUILD.gn
index 65f56784..5582f684 100644
--- a/media/renderers/BUILD.gn
+++ b/media/renderers/BUILD.gn
@@ -55,6 +55,10 @@
     "//ui/gl",
   ]
 
+  if (is_fuchsia) {
+    deps += [ "//fuchsia/engine:switches" ]
+  }
+
   configs += [
     "//media:subcomponent_config",
 
diff --git a/media/renderers/DEPS b/media/renderers/DEPS
index 596d1fe..10f26ffc 100644
--- a/media/renderers/DEPS
+++ b/media/renderers/DEPS
@@ -2,6 +2,7 @@
 include_rules = [
   "+components/viz/client",
   "+components/viz/common",
+  "+fuchsia/engine/switches.h",
   "+third_party/khronos/GLES2",
   "+ul/gl/gl_enums.h",
 ]
diff --git a/media/renderers/audio_renderer_impl.cc b/media/renderers/audio_renderer_impl.cc
index a469a2ae..859fed0 100644
--- a/media/renderers/audio_renderer_impl.cc
+++ b/media/renderers/audio_renderer_impl.cc
@@ -406,11 +406,11 @@
                             output_device_info.device_status(),
                             OUTPUT_DEVICE_STATUS_MAX + 1);
   if (output_device_info.device_status() != OUTPUT_DEVICE_STATUS_OK) {
-    sink_ = new NullAudioSink(task_runner_);
-    output_device_info = sink_->GetOutputDeviceInfo();
     MEDIA_LOG(ERROR, media_log_)
         << "Output device error, falling back to null sink. device_status="
         << output_device_info.device_status();
+    sink_ = new NullAudioSink(task_runner_);
+    output_device_info = sink_->GetOutputDeviceInfo();
   }
 
   current_decoder_config_ = stream->audio_decoder_config();
diff --git a/media/renderers/default_decoder_factory.cc b/media/renderers/default_decoder_factory.cc
index 2a605c1..647b285 100644
--- a/media/renderers/default_decoder_factory.cc
+++ b/media/renderers/default_decoder_factory.cc
@@ -6,6 +6,7 @@
 
 #include <memory>
 
+#include "base/command_line.h"
 #include "base/feature_list.h"
 #include "base/single_thread_task_runner.h"
 #include "build/build_config.h"
@@ -23,6 +24,7 @@
 #endif
 
 #if defined(OS_FUCHSIA)
+#include "fuchsia/engine/switches.h"
 #include "media/filters/fuchsia/fuchsia_video_decoder.h"
 #endif
 
@@ -110,6 +112,12 @@
         gpu_factories->SharedImageInterface(),
         gpu_factories->GetMediaContextProvider()->ContextSupport()));
   }
+
+  if (base::CommandLine::ForCurrentProcess()->HasSwitch(
+          switches::kDisableSoftwareVideoDecoders)) {
+    // Bypass software codec registration.
+    return;
+  }
 #endif
 
 #if BUILDFLAG(ENABLE_LIBVPX)
diff --git a/net/BUILD.gn b/net/BUILD.gn
index c7c692bc..0cf712e 100644
--- a/net/BUILD.gn
+++ b/net/BUILD.gn
@@ -2152,12 +2152,6 @@
         "base/directory_lister.h",
         "base/directory_listing.cc",
         "base/directory_listing.h",
-        "url_request/file_protocol_handler.cc",
-        "url_request/file_protocol_handler.h",
-        "url_request/url_request_file_dir_job.cc",
-        "url_request/url_request_file_dir_job.h",
-        "url_request/url_request_file_job.cc",
-        "url_request/url_request_file_job.h",
       ]
     }
 
@@ -2939,6 +2933,8 @@
     sources += [
       "test/url_request/url_request_mock_http_job.cc",
       "test/url_request/url_request_mock_http_job.h",
+      "test/url_request/url_request_test_job_backed_by_file.cc",
+      "test/url_request/url_request_test_job_backed_by_file.h",
       "url_request/test_url_request_interceptor.cc",
       "url_request/test_url_request_interceptor.h",
     ]
@@ -4063,7 +4059,6 @@
     "data/url_request_unittest/expect-ct-header-preload.html.mock-http-headers",
     "data/url_request_unittest/expect-ct-header.html",
     "data/url_request_unittest/expect-ct-header.html.mock-http-headers",
-    "data/url_request_unittest/filedir-sentinel",
     "data/url_request_unittest/gzip-encoded",
     "data/url_request_unittest/gzip-encoded.mock-http-headers",
     "data/url_request_unittest/hsts-headers.html",
@@ -5063,8 +5058,6 @@
     "base/chunked_upload_data_stream_unittest.cc",
     "base/data_url_unittest.cc",
     "base/datagram_buffer_unittest.cc",
-    "base/directory_lister_unittest.cc",
-    "base/directory_listing_unittest.cc",
     "base/elements_upload_data_stream_unittest.cc",
     "base/escape_unittest.cc",
     "base/expiring_cache_unittest.cc",
@@ -5677,8 +5670,6 @@
     "url_request/url_request_context_builder_unittest.cc",
     "url_request/url_request_context_unittest.cc",
     "url_request/url_request_data_job_unittest.cc",
-    "url_request/url_request_file_dir_job_unittest.cc",
-    "url_request/url_request_file_job_unittest.cc",
     "url_request/url_request_filter_unittest.cc",
     "url_request/url_request_ftp_job_unittest.cc",
     "url_request/url_request_http_job_unittest.cc",
@@ -5975,12 +5966,11 @@
     ]
   }
 
-  if (disable_file_support) {
-    sources -= [
+  if (!disable_file_support) {
+    sources += [
       "base/directory_lister_unittest.cc",
       "base/directory_listing_unittest.cc",
-      "url_request/url_request_file_dir_job_unittest.cc",
-      "url_request/url_request_file_job_unittest.cc",
+      "test/url_request/url_request_test_job_backed_by_file_unittest.cc",
     ]
   }
 
diff --git a/net/base/layered_network_delegate.cc b/net/base/layered_network_delegate.cc
index f901dccc..2db2d4f 100644
--- a/net/base/layered_network_delegate.cc
+++ b/net/base/layered_network_delegate.cc
@@ -213,20 +213,6 @@
   return allowed_from_caller;
 }
 
-bool LayeredNetworkDelegate::OnCanAccessFile(
-    const URLRequest& request,
-    const base::FilePath& original_path,
-    const base::FilePath& absolute_path) const {
-  OnCanAccessFileInternal(request, original_path, absolute_path);
-  return nested_network_delegate_->CanAccessFile(request, original_path,
-                                                 absolute_path);
-}
-
-void LayeredNetworkDelegate::OnCanAccessFileInternal(
-    const URLRequest& request,
-    const base::FilePath& original_path,
-    const base::FilePath& absolute_path) const {}
-
 bool LayeredNetworkDelegate::OnForcePrivacyMode(
     const GURL& url,
     const GURL& site_for_cookies,
diff --git a/net/base/layered_network_delegate.h b/net/base/layered_network_delegate.h
index e8c855c..00a24dd8 100644
--- a/net/base/layered_network_delegate.h
+++ b/net/base/layered_network_delegate.h
@@ -19,10 +19,6 @@
 
 class GURL;
 
-namespace base {
-class FilePath;
-}
-
 namespace net {
 
 class CookieOptions;
@@ -86,9 +82,6 @@
                       const net::CanonicalCookie& cookie,
                       CookieOptions* options,
                       bool allowed_from_caller) final;
-  bool OnCanAccessFile(const URLRequest& request,
-                       const base::FilePath& original_path,
-                       const base::FilePath& absolute_path) const final;
   bool OnForcePrivacyMode(
       const GURL& url,
       const GURL& site_for_cookies,
@@ -165,11 +158,6 @@
                                       const AuthChallengeInfo& auth_info,
                                       AuthCredentials* credentials);
 
-  virtual void OnCanAccessFileInternal(
-      const URLRequest& request,
-      const base::FilePath& original_path,
-      const base::FilePath& absolute_path) const;
-
   // If this returns false, it short circuits the corresponding call in any
   // nested NetworkDelegates.
   virtual bool OnForcePrivacyModeInternal(
diff --git a/net/base/layered_network_delegate_unittest.cc b/net/base/layered_network_delegate_unittest.cc
index c48eba61..1e63bf4 100644
--- a/net/base/layered_network_delegate_unittest.cc
+++ b/net/base/layered_network_delegate_unittest.cc
@@ -131,13 +131,6 @@
     return false;
   }
 
-  bool OnCanAccessFile(const URLRequest& request,
-                       const base::FilePath& original_path,
-                       const base::FilePath& absolute_path) const override {
-    IncrementAndCompareCounter("on_can_access_file_count");
-    return false;
-  }
-
   bool OnForcePrivacyMode(
       const GURL& url,
       const GURL& site_for_cookies,
@@ -213,15 +206,13 @@
     EXPECT_FALSE(OnCanGetCookies(*request, CookieList(), true));
     EXPECT_FALSE(
         OnCanSetCookie(*request, net::CanonicalCookie(), nullptr, true));
-    EXPECT_FALSE(OnCanAccessFile(*request, base::FilePath(), base::FilePath()));
     EXPECT_FALSE(OnForcePrivacyMode(GURL(), GURL(), base::nullopt));
     EXPECT_FALSE(OnCancelURLRequestWithPolicyViolatingReferrerHeader(
         *request, GURL(), GURL()));
   }
 
  protected:
-  void OnBeforeURLRequestInternal(URLRequest* request,
-                                  GURL* new_url) override {
+  void OnBeforeURLRequestInternal(URLRequest* request, GURL* new_url) override {
     ++(*counters_)["on_before_url_request_count"];
     EXPECT_EQ(1, (*counters_)["on_before_url_request_count"]);
   }
@@ -320,14 +311,6 @@
     return allowed_from_caller;
   }
 
-  void OnCanAccessFileInternal(
-      const URLRequest& request,
-      const base::FilePath& original_path,
-      const base::FilePath& absolute_path) const override {
-    ++(*counters_)["on_can_access_file_count"];
-    EXPECT_EQ(1, (*counters_)["on_can_access_file_count"]);
-  }
-
   bool OnForcePrivacyModeInternal(
       const GURL& url,
       const GURL& site_for_cookies,
diff --git a/net/base/network_delegate.cc b/net/base/network_delegate.cc
index dae5c827..41dadd5 100644
--- a/net/base/network_delegate.cc
+++ b/net/base/network_delegate.cc
@@ -158,13 +158,6 @@
   return OnCanSetCookie(request, cookie, options, allowed_from_caller);
 }
 
-bool NetworkDelegate::CanAccessFile(const URLRequest& request,
-                                    const base::FilePath& original_path,
-                                    const base::FilePath& absolute_path) const {
-  DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
-  return OnCanAccessFile(request, original_path, absolute_path);
-}
-
 bool NetworkDelegate::ForcePrivacyMode(
     const GURL& url,
     const GURL& site_for_cookies,
diff --git a/net/base/network_delegate.h b/net/base/network_delegate.h
index e511559b..b7c3dec 100644
--- a/net/base/network_delegate.h
+++ b/net/base/network_delegate.h
@@ -21,10 +21,6 @@
 
 class GURL;
 
-namespace base {
-class FilePath;
-}
-
 namespace url {
 class Origin;
 }
@@ -103,9 +99,6 @@
                     const net::CanonicalCookie& cookie,
                     CookieOptions* options,
                     bool allowed_from_caller);
-  bool CanAccessFile(const URLRequest& request,
-                     const base::FilePath& original_path,
-                     const base::FilePath& absolute_path) const;
   bool ForcePrivacyMode(
       const GURL& url,
       const GURL& site_for_cookies,
@@ -307,15 +300,6 @@
                               CookieOptions* options,
                               bool allowed_from_caller) = 0;
 
-  // Called when a file access is attempted to allow the network delegate to
-  // allow or block access to the given file path, provided in the original
-  // and absolute forms (i.e. symbolic link is resolved). It's up to
-  // subclasses of NetworkDelegate to decide which path to use for
-  // checking. Returns true if access is allowed.
-  virtual bool OnCanAccessFile(const URLRequest& request,
-                               const base::FilePath& original_path,
-                               const base::FilePath& absolute_path) const = 0;
-
   // Returns true if the given |url| has to be requested over connection that
   // is not tracked by the server. Usually is false, unless user privacy
   // settings block cookies from being get or set.
diff --git a/net/base/network_delegate_impl.cc b/net/base/network_delegate_impl.cc
index 088e5eb..6b9b3f68 100644
--- a/net/base/network_delegate_impl.cc
+++ b/net/base/network_delegate_impl.cc
@@ -84,13 +84,6 @@
   return allowed_from_caller;
 }
 
-bool NetworkDelegateImpl::OnCanAccessFile(
-    const URLRequest& request,
-    const base::FilePath& original_path,
-    const base::FilePath& absolute_path) const {
-  return false;
-}
-
 bool NetworkDelegateImpl::OnForcePrivacyMode(
     const GURL& url,
     const GURL& site_for_cookies,
diff --git a/net/base/network_delegate_impl.h b/net/base/network_delegate_impl.h
index bde4910..4b0338f 100644
--- a/net/base/network_delegate_impl.h
+++ b/net/base/network_delegate_impl.h
@@ -18,10 +18,6 @@
 
 class GURL;
 
-namespace base {
-class FilePath;
-}
-
 namespace url {
 class Origin;
 }
@@ -91,10 +87,6 @@
                       CookieOptions* options,
                       bool allowed_from_caller) override;
 
-  bool OnCanAccessFile(const URLRequest& request,
-                       const base::FilePath& original_path,
-                       const base::FilePath& absolute_path) const override;
-
   bool OnForcePrivacyMode(
       const GURL& url,
       const GURL& site_for_cookies,
diff --git a/net/data/url_request_unittest/filedir-sentinel b/net/data/url_request_unittest/filedir-sentinel
deleted file mode 100644
index 408adea..0000000
--- a/net/data/url_request_unittest/filedir-sentinel
+++ /dev/null
@@ -1 +0,0 @@
-This is the file that the URLRequestTest.FileDirOutputSanity test looks for.
diff --git a/net/http/alternative_service.h b/net/http/alternative_service.h
index 5e2374c0..01cf43f1 100644
--- a/net/http/alternative_service.h
+++ b/net/http/alternative_service.h
@@ -113,12 +113,6 @@
     std::ostream& os,
     const AlternativeService& alternative_service);
 
-struct AlternativeServiceHash {
-  size_t operator()(const net::AlternativeService& entry) const {
-    return entry.protocol ^ std::hash<std::string>()(entry.host) ^ entry.port;
-  }
-};
-
 class NET_EXPORT_PRIVATE AlternativeServiceInfo {
  public:
   static AlternativeServiceInfo CreateHttp2AlternativeServiceInfo(
diff --git a/net/http/broken_alternative_services.cc b/net/http/broken_alternative_services.cc
index bacfc3d8..05258d6 100644
--- a/net/http/broken_alternative_services.cc
+++ b/net/http/broken_alternative_services.cc
@@ -31,6 +31,23 @@
 
 }  // namespace
 
+BrokenAlternativeService::BrokenAlternativeService(
+    const AlternativeService& alternative_service,
+    const NetworkIsolationKey& network_isolation_key,
+    bool use_network_isolation_key)
+    : alternative_service(alternative_service),
+      network_isolation_key(use_network_isolation_key ? network_isolation_key
+                                                      : NetworkIsolationKey()) {
+}
+
+BrokenAlternativeService::~BrokenAlternativeService() = default;
+
+bool BrokenAlternativeService::operator<(
+    const BrokenAlternativeService& other) const {
+  return std::tie(alternative_service, network_isolation_key) <
+         std::tie(other.alternative_service, other.network_isolation_key);
+}
+
 BrokenAlternativeServices::BrokenAlternativeServices(
     int max_recently_broken_alternative_service_entries,
     Delegate* delegate,
@@ -53,34 +70,39 @@
 }
 
 void BrokenAlternativeServices::MarkBrokenUntilDefaultNetworkChanges(
-    const AlternativeService& alternative_service) {
-  DCHECK(!alternative_service.host.empty());
-  DCHECK_NE(kProtoUnknown, alternative_service.protocol);
+    const BrokenAlternativeService& broken_alternative_service) {
+  DCHECK(!broken_alternative_service.alternative_service.host.empty());
+  DCHECK_NE(kProtoUnknown,
+            broken_alternative_service.alternative_service.protocol);
 
   // The brokenness will expire on the default network change or based on
   // timer.
-  broken_alternative_services_on_default_network_.insert(alternative_service);
-  MarkBrokenImpl(alternative_service);
+  broken_alternative_services_on_default_network_.insert(
+      broken_alternative_service);
+  MarkBrokenImpl(broken_alternative_service);
 }
 
 void BrokenAlternativeServices::MarkBroken(
-    const AlternativeService& alternative_service) {
+    const BrokenAlternativeService& broken_alternative_service) {
   // The brokenness expires based only on the timer, not on the default network
   // change.
-  broken_alternative_services_on_default_network_.erase(alternative_service);
-  MarkBrokenImpl(alternative_service);
+  broken_alternative_services_on_default_network_.erase(
+      broken_alternative_service);
+  MarkBrokenImpl(broken_alternative_service);
 }
 
 void BrokenAlternativeServices::MarkBrokenImpl(
-    const AlternativeService& alternative_service) {
+    const BrokenAlternativeService& broken_alternative_service) {
   // Empty host means use host of origin, callers are supposed to substitute.
-  DCHECK(!alternative_service.host.empty());
-  DCHECK_NE(kProtoUnknown, alternative_service.protocol);
+  DCHECK(!broken_alternative_service.alternative_service.host.empty());
+  DCHECK_NE(kProtoUnknown,
+            broken_alternative_service.alternative_service.protocol);
 
-  auto it = recently_broken_alternative_services_.Get(alternative_service);
+  auto it =
+      recently_broken_alternative_services_.Get(broken_alternative_service);
   int broken_count = 0;
   if (it == recently_broken_alternative_services_.end()) {
-    recently_broken_alternative_services_.Put(alternative_service, 1);
+    recently_broken_alternative_services_.Put(broken_alternative_service, 1);
   } else {
     broken_count = it->second++;
   }
@@ -89,41 +111,45 @@
       ComputeBrokenAlternativeServiceExpirationDelay(broken_count);
   // Return if alternative service is already in expiration queue.
   BrokenAlternativeServiceList::iterator list_it;
-  if (!AddToBrokenListAndMap(alternative_service, expiration, &list_it)) {
+  if (!AddToBrokenListAndMap(broken_alternative_service, expiration,
+                             &list_it)) {
     return;
   }
 
-  // If this is now the first entry in the list (i.e. |alternative_service| is
-  // the next alt svc to expire), schedule an expiration task for it.
+  // If this is now the first entry in the list (i.e.
+  // |broken_alternative_service| is the next alt svc to expire), schedule
+  // an expiration task for it.
   if (list_it == broken_alternative_service_list_.begin()) {
     ScheduleBrokenAlternateProtocolMappingsExpiration();
   }
 }
 
 void BrokenAlternativeServices::MarkRecentlyBroken(
-    const AlternativeService& alternative_service) {
-  DCHECK_NE(kProtoUnknown, alternative_service.protocol);
-  if (recently_broken_alternative_services_.Get(alternative_service) ==
+    const BrokenAlternativeService& broken_alternative_service) {
+  DCHECK_NE(kProtoUnknown,
+            broken_alternative_service.alternative_service.protocol);
+  if (recently_broken_alternative_services_.Get(broken_alternative_service) ==
       recently_broken_alternative_services_.end()) {
-    recently_broken_alternative_services_.Put(alternative_service, 1);
+    recently_broken_alternative_services_.Put(broken_alternative_service, 1);
   }
 }
 
 bool BrokenAlternativeServices::IsBroken(
-    const AlternativeService& alternative_service) const {
+    const BrokenAlternativeService& broken_alternative_service) const {
   // Empty host means use host of origin, callers are supposed to substitute.
-  DCHECK(!alternative_service.host.empty());
-  return broken_alternative_service_map_.find(alternative_service) !=
+  DCHECK(!broken_alternative_service.alternative_service.host.empty());
+  return broken_alternative_service_map_.find(broken_alternative_service) !=
          broken_alternative_service_map_.end();
 }
 
 bool BrokenAlternativeServices::IsBroken(
-    const AlternativeService& alternative_service,
+    const BrokenAlternativeService& broken_alternative_service,
     base::TimeTicks* brokenness_expiration) const {
   DCHECK(brokenness_expiration != nullptr);
   // Empty host means use host of origin, callers are supposed to substitute.
-  DCHECK(!alternative_service.host.empty());
-  auto map_it = broken_alternative_service_map_.find(alternative_service);
+  DCHECK(!broken_alternative_service.alternative_service.host.empty());
+  auto map_it =
+      broken_alternative_service_map_.find(broken_alternative_service);
   if (map_it == broken_alternative_service_map_.end()) {
     return false;
   }
@@ -133,33 +159,38 @@
 }
 
 bool BrokenAlternativeServices::WasRecentlyBroken(
-    const AlternativeService& alternative_service) {
-  DCHECK(!alternative_service.host.empty());
-  return recently_broken_alternative_services_.Get(alternative_service) !=
+    const BrokenAlternativeService& broken_alternative_service) {
+  DCHECK(!broken_alternative_service.alternative_service.host.empty());
+  return recently_broken_alternative_services_.Get(
+             broken_alternative_service) !=
              recently_broken_alternative_services_.end() ||
-         broken_alternative_service_map_.find(alternative_service) !=
+         broken_alternative_service_map_.find(broken_alternative_service) !=
              broken_alternative_service_map_.end();
 }
 
 void BrokenAlternativeServices::Confirm(
-    const AlternativeService& alternative_service) {
-  DCHECK_NE(kProtoUnknown, alternative_service.protocol);
+    const BrokenAlternativeService& broken_alternative_service) {
+  DCHECK_NE(kProtoUnknown,
+            broken_alternative_service.alternative_service.protocol);
 
-  // Remove |alternative_service| from |broken_alternative_service_list_|,
-  // |broken_alternative_service_map_| and
+  // Remove |broken_alternative_service| from
+  // |broken_alternative_service_list_|, |broken_alternative_service_map_| and
   // |broken_alternative_services_on_default_network_|.
-  auto map_it = broken_alternative_service_map_.find(alternative_service);
+  auto map_it =
+      broken_alternative_service_map_.find(broken_alternative_service);
   if (map_it != broken_alternative_service_map_.end()) {
     broken_alternative_service_list_.erase(map_it->second);
     broken_alternative_service_map_.erase(map_it);
   }
 
-  auto it = recently_broken_alternative_services_.Get(alternative_service);
+  auto it =
+      recently_broken_alternative_services_.Get(broken_alternative_service);
   if (it != recently_broken_alternative_services_.end()) {
     recently_broken_alternative_services_.Erase(it);
   }
 
-  broken_alternative_services_on_default_network_.erase(alternative_service);
+  broken_alternative_services_on_default_network_.erase(
+      broken_alternative_service);
 }
 
 bool BrokenAlternativeServices::OnDefaultNetworkChanged() {
@@ -212,8 +243,9 @@
   // |recently_broken_alternative_services_| if one doesn't exist.
   auto list_it = broken_alternative_service_list_.begin();
   for (size_t i = 0; i < num_broken_alt_svcs_added; ++i) {
-    const AlternativeService& alternative_service = list_it->first;
-    auto map_it = broken_alternative_service_map_.find(alternative_service);
+    const BrokenAlternativeService& broken_alternative_service = list_it->first;
+    auto map_it =
+        broken_alternative_service_map_.find(broken_alternative_service);
     if (map_it != broken_alternative_service_map_.end()) {
       // Implies this entry already exists somewhere else in
       // |broken_alternative_service_list_|. Remove the existing entry from
@@ -225,12 +257,13 @@
       map_it->second = list_it;
     } else {
       broken_alternative_service_map_.insert(
-          std::make_pair(alternative_service, list_it));
+          std::make_pair(broken_alternative_service, list_it));
     }
 
-    if (recently_broken_alternative_services_.Peek(alternative_service) ==
+    if (recently_broken_alternative_services_.Peek(
+            broken_alternative_service) ==
         recently_broken_alternative_services_.end()) {
-      recently_broken_alternative_services_.Put(alternative_service, 1);
+      recently_broken_alternative_services_.Put(broken_alternative_service, 1);
     }
 
     ++list_it;
@@ -240,10 +273,9 @@
   // does not invalidate list iterators, so |broken_alternative_service_map_|
   // does not need to be updated.
   broken_alternative_service_list_.sort(
-      [](const std::pair<AlternativeService, base::TimeTicks>& lhs,
-         const std::pair<AlternativeService, base::TimeTicks>& rhs) -> bool {
-        return lhs.second < rhs.second;
-      });
+      [](const std::pair<BrokenAlternativeService, base::TimeTicks>& lhs,
+         const std::pair<BrokenAlternativeService, base::TimeTicks>& rhs)
+          -> bool { return lhs.second < rhs.second; });
 
   base::TimeTicks new_next_expiration =
       broken_alternative_service_list_.empty()
@@ -265,12 +297,13 @@
 }
 
 bool BrokenAlternativeServices::AddToBrokenListAndMap(
-    const AlternativeService& alternative_service,
+    const BrokenAlternativeService& broken_alternative_service,
     base::TimeTicks expiration,
     BrokenAlternativeServiceList::iterator* it) {
   DCHECK(it);
 
-  auto map_it = broken_alternative_service_map_.find(alternative_service);
+  auto map_it =
+      broken_alternative_service_map_.find(broken_alternative_service);
   if (map_it != broken_alternative_service_map_.end())
     return false;
 
@@ -285,11 +318,11 @@
     }
   }
 
-  // Insert |alternative_service| into the list and the map
+  // Insert |broken_alternative_service| into the list and the map.
   list_it = broken_alternative_service_list_.insert(
-      list_it, std::make_pair(alternative_service, expiration));
+      list_it, std::make_pair(broken_alternative_service, expiration));
   broken_alternative_service_map_.insert(
-      std::make_pair(alternative_service, list_it));
+      std::make_pair(broken_alternative_service, list_it));
 
   *it = list_it;
   return true;
@@ -304,7 +337,8 @@
       break;
     }
 
-    delegate_->OnExpireBrokenAlternativeService(it->first);
+    delegate_->OnExpireBrokenAlternativeService(
+        it->first.alternative_service, it->first.network_isolation_key);
 
     broken_alternative_service_map_.erase(it->first);
     broken_alternative_service_list_.erase(it);
diff --git a/net/http/broken_alternative_services.h b/net/http/broken_alternative_services.h
index 776c0f2..b41ac587 100644
--- a/net/http/broken_alternative_services.h
+++ b/net/http/broken_alternative_services.h
@@ -7,12 +7,12 @@
 
 #include <list>
 #include <set>
-#include <unordered_map>
 
 #include "base/containers/mru_cache.h"
 #include "base/memory/weak_ptr.h"
 #include "base/time/time.h"
 #include "base/timer/timer.h"
+#include "net/base/network_isolation_key.h"
 #include "net/http/alternative_service.h"
 
 namespace base {
@@ -21,17 +21,37 @@
 
 namespace net {
 
+// Contains information about a broken alternative service, and the context in
+// which it's known to be broken.
+struct NET_EXPORT_PRIVATE BrokenAlternativeService {
+  // If |use_network_isolation_key| is false, |network_isolation_key| is
+  // ignored, and an empty NetworkIsolationKey is used instead.
+  BrokenAlternativeService(const AlternativeService& alternative_service,
+                           const NetworkIsolationKey& network_isolation_key,
+                           bool use_network_isolation_key);
+
+  ~BrokenAlternativeService();
+
+  bool operator<(const BrokenAlternativeService& other) const;
+
+  AlternativeService alternative_service;
+
+  // The context in which the alternative service is known to be broken in. Used
+  // to avoid cross-NetworkIsolationKey communication.
+  NetworkIsolationKey network_isolation_key;
+};
+
 // Stores broken alternative services and when their brokenness expires.
-typedef std::list<std::pair<AlternativeService, base::TimeTicks>>
+typedef std::list<std::pair<BrokenAlternativeService, base::TimeTicks>>
     BrokenAlternativeServiceList;
 
 // Stores how many times an alternative service has been marked broken.
 class RecentlyBrokenAlternativeServices
-    : public base::MRUCache<AlternativeService, int> {
+    : public base::MRUCache<BrokenAlternativeService, int> {
  public:
   RecentlyBrokenAlternativeServices(
       int max_recently_broken_alternative_service_entries)
-      : base::MRUCache<AlternativeService, int>(
+      : base::MRUCache<BrokenAlternativeService, int>(
             max_recently_broken_alternative_service_entries) {}
 };
 
@@ -51,7 +71,8 @@
    public:
     // Called when a broken alternative service's expiration time is reached.
     virtual void OnExpireBrokenAlternativeService(
-        const AlternativeService& expired_alternative_service) = 0;
+        const AlternativeService& expired_alternative_service,
+        const NetworkIsolationKey& network_isolation_key) = 0;
     virtual ~Delegate() {}
   };
 
@@ -73,41 +94,46 @@
   // as not broken nor recently-broken).
   void Clear();
 
-  // Marks |alternative_service| as broken until an expiration delay (determined
-  // by how many consecutive times it's been marked broken before). After the
-  // delay, it will be in the recently broken state. However, when the default
-  // network changes, the service will immediately be in the working state.
+  // Marks |broken_alternative_service| as broken until an expiration delay
+  // (determined by how many consecutive times it's been marked broken before).
+  // After the delay, it will be in the recently broken state. However, when the
+  // default network changes, the service will immediately be in the working
+  // state.
   void MarkBrokenUntilDefaultNetworkChanges(
-      const AlternativeService& alternative_service);
+      const BrokenAlternativeService& broken_alternative_service);
 
-  // Marks |alternative_service| as broken until an expiration delay (determined
-  // by how many consecutive times it's been marked broken before). After the
-  // delay, it will be in the recently broken state. When the default network
-  // changes, the brokenness state of this service remains unchanged.
-  void MarkBroken(const AlternativeService& alternative_service);
+  // Marks |broken_alternative_service| as broken until an expiration delay
+  // (determined by how many consecutive times it's been marked broken before).
+  // After the delay, it will be in the recently broken state. When the default
+  // network changes, the brokenness state of this service remains unchanged.
+  void MarkBroken(const BrokenAlternativeService& broken_alternative_service);
 
-  // Marks |alternative_service| as recently broken. Being recently broken will
-  // cause WasAlternativeServiceRecentlyBroken(alternative_service) to return
-  // true until Confirm(alternative_service) is called.
-  void MarkRecentlyBroken(const AlternativeService& alternative_service);
+  // Marks |broken_alternative_service| as recently broken. Being recently
+  // broken will cause WasAlternativeServiceRecentlyBroken(alternative_service,
+  // network_isolation_key) to return true until Confirm(alternative_service,
+  // network_isolation_key) is called.
+  void MarkRecentlyBroken(
+      const BrokenAlternativeService& broken_alternative_service);
 
   // Returns true if the alternative service is considered broken.
-  bool IsBroken(const AlternativeService& alternative_service) const;
+  bool IsBroken(
+      const BrokenAlternativeService& broken_alternative_service) const;
 
   // If the alternative service is considered broken, returns true and sets
   // |brokenness_expiration| to the expiration time for that service.
   // Returns false otherwise.
-  bool IsBroken(const AlternativeService& alternative_service,
+  bool IsBroken(const BrokenAlternativeService& broken_alternative_service,
                 base::TimeTicks* brokenness_expiration) const;
 
   // Returns true if MarkRecentlyBroken(alternative_service)
   // or MarkBroken(alternative_service) has been called and
   // Confirm(alternative_service) has not been called
   // afterwards (even if brokenness of |alternative_service| has expired).
-  bool WasRecentlyBroken(const AlternativeService& alternative_service);
+  bool WasRecentlyBroken(
+      const BrokenAlternativeService& broken_alternative_service);
 
   // Changes the alternative service to be considered as working.
-  void Confirm(const AlternativeService& alternative_service);
+  void Confirm(const BrokenAlternativeService& broken_alternative_service);
 
   // Clears all alternative services which were marked as broken until the
   // default network changed, those services will now be considered working.
@@ -144,23 +170,25 @@
     }
   };
 
-  typedef std::unordered_map<AlternativeService,
-                             BrokenAlternativeServiceList::iterator,
-                             AlternativeServiceHash>
+  typedef std::map<BrokenAlternativeService,
+                   BrokenAlternativeServiceList::iterator>
       BrokenMap;
 
-  // Helper method that marks |alternative_service| as broken until an
-  // expiration delay (determined by how many consecutive times it's been marked
-  // broken before). After the delay, it will be in the recently broken state.
-  void MarkBrokenImpl(const AlternativeService& alternative_service);
+  // Helper method that marks |broken_alternative_service| as broken until
+  // an expiration delay (determined by how many consecutive times it's been
+  // marked broken before). After the delay, it will be in the recently broken
+  // state.
+  void MarkBrokenImpl(
+      const BrokenAlternativeService& broken_alternative_service);
 
-  // Inserts |alternative_service| and its |expiration| time into
+  // Inserts |broken_alternative_service| and its |expiration| time into
   // |broken_alternative_service_list_| and |broken_alternative_service_map_|.
   // |it| is the position in |broken_alternative_service_list_| where it was
   // inserted.
-  bool AddToBrokenListAndMap(const AlternativeService& alternative_service,
-                             base::TimeTicks expiration,
-                             BrokenAlternativeServiceList::iterator* it);
+  bool AddToBrokenListAndMap(
+      const BrokenAlternativeService& broken_alternative_service,
+      base::TimeTicks expiration,
+      BrokenAlternativeServiceList::iterator* it);
 
   void ExpireBrokenAlternateProtocolMappings();
   void ScheduleBrokenAlternateProtocolMappingsExpiration();
@@ -175,7 +203,8 @@
   BrokenMap broken_alternative_service_map_;
   // A set of broken alternative services on the current default
   // network. This will be cleared every time the default network changes.
-  std::set<AlternativeService> broken_alternative_services_on_default_network_;
+  std::set<BrokenAlternativeService>
+      broken_alternative_services_on_default_network_;
 
   // Maps broken alternative services to how many times they've been marked
   // broken.
diff --git a/net/http/broken_alternative_services_unittest.cc b/net/http/broken_alternative_services_unittest.cc
index bff1d195..7ef8ba7f 100644
--- a/net/http/broken_alternative_services_unittest.cc
+++ b/net/http/broken_alternative_services_unittest.cc
@@ -9,7 +9,10 @@
 
 #include "base/test/test_mock_time_task_runner.h"
 #include "base/time/tick_clock.h"
+#include "net/base/network_isolation_key.h"
 #include "testing/gtest/include/gtest/gtest.h"
+#include "url/gurl.h"
+#include "url/origin.h"
 
 namespace net {
 
@@ -26,12 +29,20 @@
       : test_task_runner_(new base::TestMockTimeTaskRunner()),
         test_task_runner_context_(test_task_runner_),
         broken_services_clock_(test_task_runner_->GetMockTickClock()),
-        broken_services_(50, this, broken_services_clock_) {}
+        broken_services_(50, this, broken_services_clock_) {
+    auto origin1 = url::Origin::Create(GURL("http://foo.test"));
+    auto origin2 = url::Origin::Create(GURL("http://bar.test"));
+    network_isolation_key1_ = NetworkIsolationKey(origin1, origin1);
+    network_isolation_key2_ = NetworkIsolationKey(origin2, origin2);
+  }
 
   // BrokenAlternativeServices::Delegate implementation
   void OnExpireBrokenAlternativeService(
-      const AlternativeService& expired_alternative_service) override {
-    expired_alt_svcs_.push_back(expired_alternative_service);
+      const AlternativeService& expired_alternative_service,
+      const NetworkIsolationKey& network_isolation_key) override {
+    expired_alt_svcs_.push_back(BrokenAlternativeService(
+        expired_alternative_service, network_isolation_key,
+        true /* use_network_isolation_key */));
   }
 
   // All tests will run inside the scope of |test_task_runner_context_|, which
@@ -43,93 +54,183 @@
   const base::TickClock* broken_services_clock_;
   BrokenAlternativeServices broken_services_;
 
-  std::vector<AlternativeService> expired_alt_svcs_;
+  std::vector<BrokenAlternativeService> expired_alt_svcs_;
+
+  NetworkIsolationKey network_isolation_key1_;
+  NetworkIsolationKey network_isolation_key2_;
 };
 
 TEST_F(BrokenAlternativeServicesTest, MarkBroken) {
-  const AlternativeService alternative_service1(kProtoHTTP2, "foo", 443);
-  const AlternativeService alternative_service2(kProtoHTTP2, "foo", 1234);
+  const BrokenAlternativeService alternative_service1(
+      AlternativeService(kProtoHTTP2, "foo", 443), network_isolation_key1_,
+      true /* use_network_isolation_key */);
+  const BrokenAlternativeService alternative_service2(
+      AlternativeService(kProtoHTTP2, "foo", 1234), network_isolation_key1_,
+      true /* use_network_isolation_key */);
+  const BrokenAlternativeService alternative_service3(
+      AlternativeService(kProtoHTTP2, "foo", 443), network_isolation_key2_,
+      true /* use_network_isolation_key */);
 
   EXPECT_FALSE(broken_services_.IsBroken(alternative_service1));
   EXPECT_FALSE(broken_services_.IsBroken(alternative_service2));
+  EXPECT_FALSE(broken_services_.IsBroken(alternative_service3));
 
   broken_services_.MarkBroken(alternative_service1);
 
   EXPECT_TRUE(broken_services_.IsBroken(alternative_service1));
   EXPECT_FALSE(broken_services_.IsBroken(alternative_service2));
+  EXPECT_FALSE(broken_services_.IsBroken(alternative_service3));
 
   broken_services_.MarkBroken(alternative_service2);
 
   EXPECT_TRUE(broken_services_.IsBroken(alternative_service1));
   EXPECT_TRUE(broken_services_.IsBroken(alternative_service2));
+  EXPECT_FALSE(broken_services_.IsBroken(alternative_service3));
+
+  broken_services_.MarkBroken(alternative_service3);
+
+  EXPECT_TRUE(broken_services_.IsBroken(alternative_service1));
+  EXPECT_TRUE(broken_services_.IsBroken(alternative_service2));
+  EXPECT_TRUE(broken_services_.IsBroken(alternative_service3));
 
   broken_services_.Confirm(alternative_service1);
 
   EXPECT_FALSE(broken_services_.IsBroken(alternative_service1));
   EXPECT_TRUE(broken_services_.IsBroken(alternative_service2));
+  EXPECT_TRUE(broken_services_.IsBroken(alternative_service3));
 
   broken_services_.Confirm(alternative_service2);
 
   EXPECT_FALSE(broken_services_.IsBroken(alternative_service1));
   EXPECT_FALSE(broken_services_.IsBroken(alternative_service2));
+  EXPECT_TRUE(broken_services_.IsBroken(alternative_service3));
+
+  broken_services_.Confirm(alternative_service3);
+
+  EXPECT_FALSE(broken_services_.IsBroken(alternative_service1));
+  EXPECT_FALSE(broken_services_.IsBroken(alternative_service2));
+  EXPECT_FALSE(broken_services_.IsBroken(alternative_service3));
 
   EXPECT_EQ(0u, expired_alt_svcs_.size());
 }
 
 TEST_F(BrokenAlternativeServicesTest, MarkBrokenUntilDefaultNetworkChanges) {
-  const AlternativeService alternative_service1(kProtoHTTP2, "foo", 443);
-  const AlternativeService alternative_service2(kProtoHTTP2, "foo", 1234);
+  const BrokenAlternativeService alternative_service1(
+      AlternativeService(kProtoHTTP2, "foo", 443), network_isolation_key1_,
+      true /* use_network_isolation_key */);
+  const BrokenAlternativeService alternative_service2(
+      AlternativeService(kProtoHTTP2, "foo", 1234), network_isolation_key1_,
+      true /* use_network_isolation_key */);
+  const BrokenAlternativeService alternative_service3(
+      AlternativeService(kProtoHTTP2, "foo", 443), network_isolation_key2_,
+      true /* use_network_isolation_key */);
   EXPECT_FALSE(broken_services_.IsBroken(alternative_service1));
   EXPECT_FALSE(broken_services_.WasRecentlyBroken(alternative_service1));
   EXPECT_FALSE(broken_services_.IsBroken(alternative_service2));
   EXPECT_FALSE(broken_services_.WasRecentlyBroken(alternative_service2));
+  EXPECT_FALSE(broken_services_.IsBroken(alternative_service3));
+  EXPECT_FALSE(broken_services_.WasRecentlyBroken(alternative_service3));
 
   broken_services_.MarkBrokenUntilDefaultNetworkChanges(alternative_service1);
   EXPECT_TRUE(broken_services_.IsBroken(alternative_service1));
   EXPECT_TRUE(broken_services_.WasRecentlyBroken(alternative_service1));
   EXPECT_FALSE(broken_services_.IsBroken(alternative_service2));
   EXPECT_FALSE(broken_services_.WasRecentlyBroken(alternative_service2));
+  EXPECT_FALSE(broken_services_.IsBroken(alternative_service3));
+  EXPECT_FALSE(broken_services_.WasRecentlyBroken(alternative_service3));
 
   broken_services_.MarkBrokenUntilDefaultNetworkChanges(alternative_service2);
   EXPECT_TRUE(broken_services_.IsBroken(alternative_service1));
   EXPECT_TRUE(broken_services_.WasRecentlyBroken(alternative_service1));
   EXPECT_TRUE(broken_services_.IsBroken(alternative_service2));
   EXPECT_TRUE(broken_services_.WasRecentlyBroken(alternative_service2));
+  EXPECT_FALSE(broken_services_.IsBroken(alternative_service3));
+  EXPECT_FALSE(broken_services_.WasRecentlyBroken(alternative_service3));
+
+  broken_services_.MarkBrokenUntilDefaultNetworkChanges(alternative_service3);
+  EXPECT_TRUE(broken_services_.IsBroken(alternative_service1));
+  EXPECT_TRUE(broken_services_.WasRecentlyBroken(alternative_service1));
+  EXPECT_TRUE(broken_services_.IsBroken(alternative_service2));
+  EXPECT_TRUE(broken_services_.WasRecentlyBroken(alternative_service2));
+  EXPECT_TRUE(broken_services_.IsBroken(alternative_service3));
+  EXPECT_TRUE(broken_services_.WasRecentlyBroken(alternative_service3));
 
   broken_services_.Confirm(alternative_service1);
   EXPECT_FALSE(broken_services_.IsBroken(alternative_service1));
   EXPECT_FALSE(broken_services_.WasRecentlyBroken(alternative_service1));
   EXPECT_TRUE(broken_services_.IsBroken(alternative_service2));
   EXPECT_TRUE(broken_services_.WasRecentlyBroken(alternative_service2));
+  EXPECT_TRUE(broken_services_.IsBroken(alternative_service3));
+  EXPECT_TRUE(broken_services_.WasRecentlyBroken(alternative_service3));
+
+  broken_services_.Confirm(alternative_service2);
+  EXPECT_FALSE(broken_services_.IsBroken(alternative_service1));
+  EXPECT_FALSE(broken_services_.WasRecentlyBroken(alternative_service1));
+  EXPECT_FALSE(broken_services_.IsBroken(alternative_service2));
+  EXPECT_FALSE(broken_services_.WasRecentlyBroken(alternative_service2));
+  EXPECT_TRUE(broken_services_.IsBroken(alternative_service3));
+  EXPECT_TRUE(broken_services_.WasRecentlyBroken(alternative_service3));
+
+  broken_services_.Confirm(alternative_service3);
+  EXPECT_FALSE(broken_services_.IsBroken(alternative_service1));
+  EXPECT_FALSE(broken_services_.WasRecentlyBroken(alternative_service1));
+  EXPECT_FALSE(broken_services_.IsBroken(alternative_service2));
+  EXPECT_FALSE(broken_services_.WasRecentlyBroken(alternative_service2));
+  EXPECT_FALSE(broken_services_.IsBroken(alternative_service3));
+  EXPECT_FALSE(broken_services_.WasRecentlyBroken(alternative_service3));
+
+  EXPECT_EQ(0u, expired_alt_svcs_.size());
+}
+
+TEST_F(BrokenAlternativeServicesTest, MarkRecentlyBroken) {
+  const BrokenAlternativeService alternative_service1(
+      AlternativeService(kProtoHTTP2, "foo", 443), network_isolation_key1_,
+      true /* use_network_isolation_key */);
+  const BrokenAlternativeService alternative_service2(
+      AlternativeService(kProtoHTTP2, "foo", 443), network_isolation_key2_,
+      true /* use_network_isolation_key */);
+
+  EXPECT_FALSE(broken_services_.IsBroken(alternative_service1));
+  EXPECT_FALSE(broken_services_.WasRecentlyBroken(alternative_service1));
+  EXPECT_FALSE(broken_services_.IsBroken(alternative_service2));
+  EXPECT_FALSE(broken_services_.WasRecentlyBroken(alternative_service2));
+
+  broken_services_.MarkRecentlyBroken(alternative_service1);
+  EXPECT_FALSE(broken_services_.IsBroken(alternative_service1));
+  EXPECT_TRUE(broken_services_.WasRecentlyBroken(alternative_service1));
+  EXPECT_FALSE(broken_services_.IsBroken(alternative_service2));
+  EXPECT_FALSE(broken_services_.WasRecentlyBroken(alternative_service2));
+
+  broken_services_.MarkRecentlyBroken(alternative_service2);
+  EXPECT_FALSE(broken_services_.IsBroken(alternative_service1));
+  EXPECT_TRUE(broken_services_.WasRecentlyBroken(alternative_service1));
+  EXPECT_FALSE(broken_services_.IsBroken(alternative_service2));
+  EXPECT_TRUE(broken_services_.WasRecentlyBroken(alternative_service2));
+
+  broken_services_.Confirm(alternative_service1);
+  EXPECT_FALSE(broken_services_.IsBroken(alternative_service1));
+  EXPECT_FALSE(broken_services_.WasRecentlyBroken(alternative_service1));
+  EXPECT_FALSE(broken_services_.IsBroken(alternative_service2));
+  EXPECT_TRUE(broken_services_.WasRecentlyBroken(alternative_service2));
 
   broken_services_.Confirm(alternative_service2);
   EXPECT_FALSE(broken_services_.IsBroken(alternative_service1));
   EXPECT_FALSE(broken_services_.WasRecentlyBroken(alternative_service1));
   EXPECT_FALSE(broken_services_.IsBroken(alternative_service2));
   EXPECT_FALSE(broken_services_.WasRecentlyBroken(alternative_service2));
-
-  EXPECT_EQ(0u, expired_alt_svcs_.size());
-}
-
-TEST_F(BrokenAlternativeServicesTest, MarkRecentlyBroken) {
-  const AlternativeService alternative_service(kProtoHTTP2, "foo", 443);
-
-  EXPECT_FALSE(broken_services_.IsBroken(alternative_service));
-  EXPECT_FALSE(broken_services_.WasRecentlyBroken(alternative_service));
-
-  broken_services_.MarkRecentlyBroken(alternative_service);
-  EXPECT_FALSE(broken_services_.IsBroken(alternative_service));
-  EXPECT_TRUE(broken_services_.WasRecentlyBroken(alternative_service));
-
-  broken_services_.Confirm(alternative_service);
-  EXPECT_FALSE(broken_services_.IsBroken(alternative_service));
-  EXPECT_FALSE(broken_services_.WasRecentlyBroken(alternative_service));
 }
 
 TEST_F(BrokenAlternativeServicesTest, OnDefaultNetworkChanged) {
-  AlternativeService alternative_service1(kProtoQUIC, "foo", 443);
-  AlternativeService alternative_service2(kProtoQUIC, "bar", 443);
-  AlternativeService alternative_service3(kProtoQUIC, "baz", 443);
+  BrokenAlternativeService alternative_service1(
+      AlternativeService(kProtoQUIC, "foo", 443), network_isolation_key1_,
+      true /* use_network_isolation_key */);
+  BrokenAlternativeService alternative_service2(
+      AlternativeService(kProtoQUIC, "bar", 443), network_isolation_key1_,
+      true /* use_network_isolation_key */);
+  BrokenAlternativeService alternative_service3(
+      AlternativeService(kProtoQUIC, "foo", 443), network_isolation_key2_,
+      true /* use_network_isolation_key */);
+
   EXPECT_FALSE(broken_services_.IsBroken(alternative_service1));
   EXPECT_FALSE(broken_services_.WasRecentlyBroken(alternative_service1));
   EXPECT_FALSE(broken_services_.IsBroken(alternative_service2));
@@ -204,7 +305,9 @@
 
 TEST_F(BrokenAlternativeServicesTest,
        ExpireBrokenAlternativeServiceOnDefaultNetwork) {
-  AlternativeService alternative_service(kProtoQUIC, "foo", 443);
+  BrokenAlternativeService alternative_service(
+      AlternativeService(kProtoQUIC, "foo", 443), network_isolation_key1_,
+      true /* use_network_isolation_key */);
 
   broken_services_.MarkBrokenUntilDefaultNetworkChanges(alternative_service);
 
@@ -230,12 +333,17 @@
   EXPECT_FALSE(broken_services_.IsBroken(alternative_service));
   EXPECT_FALSE(test_task_runner_->HasPendingTask());
   EXPECT_EQ(1u, expired_alt_svcs_.size());
-  EXPECT_EQ(alternative_service, expired_alt_svcs_[0]);
+  EXPECT_EQ(alternative_service.alternative_service,
+            expired_alt_svcs_[0].alternative_service);
+  EXPECT_EQ(alternative_service.network_isolation_key,
+            expired_alt_svcs_[0].network_isolation_key);
   EXPECT_TRUE(broken_services_.WasRecentlyBroken(alternative_service));
 }
 
 TEST_F(BrokenAlternativeServicesTest, ExpireBrokenAlternateProtocolMappings) {
-  AlternativeService alternative_service(kProtoQUIC, "foo", 443);
+  BrokenAlternativeService alternative_service(
+      AlternativeService(kProtoQUIC, "foo", 443), network_isolation_key1_,
+      true /* use_network_isolation_key */);
 
   broken_services_.MarkBroken(alternative_service);
 
@@ -261,13 +369,18 @@
   EXPECT_FALSE(broken_services_.IsBroken(alternative_service));
   EXPECT_FALSE(test_task_runner_->HasPendingTask());
   EXPECT_EQ(1u, expired_alt_svcs_.size());
-  EXPECT_EQ(alternative_service, expired_alt_svcs_[0]);
+  EXPECT_EQ(alternative_service.alternative_service,
+            expired_alt_svcs_[0].alternative_service);
+  EXPECT_EQ(alternative_service.network_isolation_key,
+            expired_alt_svcs_[0].network_isolation_key);
   EXPECT_TRUE(broken_services_.WasRecentlyBroken(alternative_service));
 }
 
 TEST_F(BrokenAlternativeServicesTest, IsBroken) {
   // Tests the IsBroken() methods.
-  AlternativeService alternative_service(kProtoQUIC, "foo", 443);
+  BrokenAlternativeService alternative_service(
+      AlternativeService(kProtoQUIC, "foo", 443), NetworkIsolationKey(),
+      true /* use_network_isolation_key */);
   base::TimeTicks brokenness_expiration;
 
   EXPECT_FALSE(broken_services_.IsBroken(alternative_service));
@@ -311,7 +424,9 @@
 // - (signal received that default network changes);
 // - brokenness expires after two intervals.
 TEST_F(BrokenAlternativeServicesTest, BrokenAfterBrokenOnDefaultNetwork) {
-  AlternativeService alternative_service(kProtoQUIC, "foo", 443);
+  BrokenAlternativeService alternative_service(
+      AlternativeService(kProtoQUIC, "foo", 443), NetworkIsolationKey(),
+      true /* use_network_isolation_key */);
 
   // Mark the alternative service broken on the default network.
   broken_services_.MarkBrokenUntilDefaultNetworkChanges(alternative_service);
@@ -360,7 +475,9 @@
 // - broknenss expires after two intervals;
 // - (signal received that default network changes);
 TEST_F(BrokenAlternativeServicesTest, BrokenOnDefaultNetworkAfterBroken) {
-  AlternativeService alternative_service(kProtoQUIC, "foo", 443);
+  BrokenAlternativeService alternative_service(
+      AlternativeService(kProtoQUIC, "foo", 443), NetworkIsolationKey(),
+      true /* use_network_isolation_key */);
 
   // Mark the alternative service broken.
   broken_services_.MarkBroken(alternative_service);
@@ -402,7 +519,9 @@
 // network changes, the exponential backoff is cleared.
 TEST_F(BrokenAlternativeServicesTest,
        BrokenUntilDefaultNetworkChangeWithExponentialBackoff) {
-  AlternativeService alternative_service(kProtoQUIC, "foo", 443);
+  BrokenAlternativeService alternative_service(
+      AlternativeService(kProtoQUIC, "foo", 443), NetworkIsolationKey(),
+      true /* use_network_isolation_key */);
 
   // Mark the alternative service broken on the default network.
   broken_services_.MarkBrokenUntilDefaultNetworkChanges(alternative_service);
@@ -462,7 +581,9 @@
   // expiration delay will have been reached and exponential backoff will no
   // longer apply.
 
-  AlternativeService alternative_service(kProtoQUIC, "foo", 443);
+  BrokenAlternativeService alternative_service(
+      AlternativeService(kProtoQUIC, "foo", 443), NetworkIsolationKey(),
+      true /* use_network_isolation_key */);
 
   broken_services_.MarkBroken(alternative_service);
   test_task_runner_->FastForwardBy(base::TimeDelta::FromMinutes(5) -
@@ -553,8 +674,12 @@
   // sure that even though A was marked broken before B, B's brokenness should
   // expire before A.
 
-  AlternativeService alternative_service1(kProtoQUIC, "foo", 443);
-  AlternativeService alternative_service2(kProtoQUIC, "bar", 443);
+  BrokenAlternativeService alternative_service1(
+      AlternativeService(kProtoQUIC, "foo", 443), network_isolation_key1_,
+      true /* use_network_isolation_key */);
+  BrokenAlternativeService alternative_service2(
+      AlternativeService(kProtoQUIC, "bar", 443), network_isolation_key2_,
+      true /* use_network_isolation_key */);
 
   // Repeately mark |alternative_service1| broken and let brokenness expire.
   // Do this a few times.
@@ -563,19 +688,28 @@
   EXPECT_EQ(1u, test_task_runner_->GetPendingTaskCount());
   test_task_runner_->FastForwardBy(base::TimeDelta::FromMinutes(5));
   EXPECT_EQ(1u, expired_alt_svcs_.size());
-  EXPECT_EQ(alternative_service1, expired_alt_svcs_.back());
+  EXPECT_EQ(alternative_service1.alternative_service,
+            expired_alt_svcs_.back().alternative_service);
+  EXPECT_EQ(alternative_service1.network_isolation_key,
+            expired_alt_svcs_.back().network_isolation_key);
 
   broken_services_.MarkBroken(alternative_service1);
   EXPECT_EQ(1u, test_task_runner_->GetPendingTaskCount());
   test_task_runner_->FastForwardBy(base::TimeDelta::FromMinutes(10));
   EXPECT_EQ(2u, expired_alt_svcs_.size());
-  EXPECT_EQ(alternative_service1, expired_alt_svcs_.back());
+  EXPECT_EQ(alternative_service1.alternative_service,
+            expired_alt_svcs_.back().alternative_service);
+  EXPECT_EQ(alternative_service1.network_isolation_key,
+            expired_alt_svcs_.back().network_isolation_key);
 
   broken_services_.MarkBroken(alternative_service1);
   EXPECT_EQ(1u, test_task_runner_->GetPendingTaskCount());
   test_task_runner_->FastForwardBy(base::TimeDelta::FromMinutes(20));
   EXPECT_EQ(3u, expired_alt_svcs_.size());
-  EXPECT_EQ(alternative_service1, expired_alt_svcs_.back());
+  EXPECT_EQ(alternative_service1.alternative_service,
+            expired_alt_svcs_.back().alternative_service);
+  EXPECT_EQ(alternative_service1.network_isolation_key,
+            expired_alt_svcs_.back().network_isolation_key);
 
   expired_alt_svcs_.clear();
 
@@ -604,7 +738,10 @@
   EXPECT_TRUE(broken_services_.IsBroken(alternative_service1));
   EXPECT_FALSE(broken_services_.IsBroken(alternative_service2));
   EXPECT_EQ(1u, expired_alt_svcs_.size());
-  EXPECT_EQ(alternative_service2, expired_alt_svcs_[0]);
+  EXPECT_EQ(alternative_service2.alternative_service,
+            expired_alt_svcs_[0].alternative_service);
+  EXPECT_EQ(alternative_service2.network_isolation_key,
+            expired_alt_svcs_[0].network_isolation_key);
 
   // Advance time until one time quantum before |alternative_service1|'s
   // brokenness expires
@@ -615,7 +752,10 @@
   EXPECT_TRUE(broken_services_.IsBroken(alternative_service1));
   EXPECT_FALSE(broken_services_.IsBroken(alternative_service2));
   EXPECT_EQ(1u, expired_alt_svcs_.size());
-  EXPECT_EQ(alternative_service2, expired_alt_svcs_[0]);
+  EXPECT_EQ(alternative_service2.alternative_service,
+            expired_alt_svcs_[0].alternative_service);
+  EXPECT_EQ(alternative_service2.network_isolation_key,
+            expired_alt_svcs_[0].network_isolation_key);
 
   // Advance time by one time quantum.  |alternative_service1| should no longer
   // be broken.
@@ -624,13 +764,127 @@
   EXPECT_FALSE(broken_services_.IsBroken(alternative_service1));
   EXPECT_FALSE(broken_services_.IsBroken(alternative_service2));
   EXPECT_EQ(2u, expired_alt_svcs_.size());
-  EXPECT_EQ(alternative_service2, expired_alt_svcs_[0]);
-  EXPECT_EQ(alternative_service1, expired_alt_svcs_[1]);
+  EXPECT_EQ(alternative_service2.alternative_service,
+            expired_alt_svcs_[0].alternative_service);
+  EXPECT_EQ(alternative_service2.network_isolation_key,
+            expired_alt_svcs_[0].network_isolation_key);
+  EXPECT_EQ(alternative_service1.alternative_service,
+            expired_alt_svcs_[1].alternative_service);
+  EXPECT_EQ(alternative_service1.network_isolation_key,
+            expired_alt_svcs_[1].network_isolation_key);
+}
+
+// Same as above, but checks a single alternative service with two different
+// NetworkIsolationKeys.
+TEST_F(BrokenAlternativeServicesTest,
+       RemoveExpiredBrokenAltSvcWithNetworkIsolationKey) {
+  BrokenAlternativeService alternative_service1(
+      AlternativeService(kProtoQUIC, "foo", 443), network_isolation_key1_,
+      true /* use_network_isolation_key */);
+  BrokenAlternativeService alternative_service2(
+      AlternativeService(kProtoQUIC, "foo", 443), network_isolation_key2_,
+      true /* use_network_isolation_key */);
+
+  // Repeately mark |alternative_service1| broken and let brokenness expire.
+  // Do this a few times.
+
+  broken_services_.MarkBroken(alternative_service1);
+  EXPECT_EQ(1u, test_task_runner_->GetPendingTaskCount());
+  test_task_runner_->FastForwardBy(base::TimeDelta::FromMinutes(5));
+  EXPECT_EQ(1u, expired_alt_svcs_.size());
+  EXPECT_EQ(alternative_service1.alternative_service,
+            expired_alt_svcs_.back().alternative_service);
+  EXPECT_EQ(alternative_service1.network_isolation_key,
+            expired_alt_svcs_.back().network_isolation_key);
+
+  broken_services_.MarkBroken(alternative_service1);
+  EXPECT_EQ(1u, test_task_runner_->GetPendingTaskCount());
+  test_task_runner_->FastForwardBy(base::TimeDelta::FromMinutes(10));
+  EXPECT_EQ(2u, expired_alt_svcs_.size());
+  EXPECT_EQ(alternative_service1.alternative_service,
+            expired_alt_svcs_.back().alternative_service);
+  EXPECT_EQ(alternative_service1.network_isolation_key,
+            expired_alt_svcs_.back().network_isolation_key);
+
+  broken_services_.MarkBroken(alternative_service1);
+  EXPECT_EQ(1u, test_task_runner_->GetPendingTaskCount());
+  test_task_runner_->FastForwardBy(base::TimeDelta::FromMinutes(20));
+  EXPECT_EQ(3u, expired_alt_svcs_.size());
+  EXPECT_EQ(alternative_service1.alternative_service,
+            expired_alt_svcs_.back().alternative_service);
+  EXPECT_EQ(alternative_service1.network_isolation_key,
+            expired_alt_svcs_.back().network_isolation_key);
+
+  expired_alt_svcs_.clear();
+
+  // Mark |alternative_service1| broken (will be given longer expiration delay),
+  // then mark |alternative_service2| broken (will be given shorter expiration
+  // delay).
+  broken_services_.MarkBroken(alternative_service1);
+  broken_services_.MarkBroken(alternative_service2);
+
+  EXPECT_TRUE(broken_services_.IsBroken(alternative_service1));
+  EXPECT_TRUE(broken_services_.IsBroken(alternative_service2));
+
+  // Advance time until one time quantum before |alternative_service2|'s
+  // brokenness expires.
+  test_task_runner_->FastForwardBy(base::TimeDelta::FromMinutes(5) -
+                                   base::TimeDelta::FromSeconds(1));
+
+  EXPECT_TRUE(broken_services_.IsBroken(alternative_service1));
+  EXPECT_TRUE(broken_services_.IsBroken(alternative_service2));
+  EXPECT_EQ(0u, expired_alt_svcs_.size());
+
+  // Advance time by one time quantum. |alternative_service2| should no longer
+  // be broken.
+  test_task_runner_->FastForwardBy(base::TimeDelta::FromSeconds(1));
+
+  EXPECT_TRUE(broken_services_.IsBroken(alternative_service1));
+  EXPECT_FALSE(broken_services_.IsBroken(alternative_service2));
+  EXPECT_EQ(1u, expired_alt_svcs_.size());
+  EXPECT_EQ(alternative_service2.alternative_service,
+            expired_alt_svcs_[0].alternative_service);
+  EXPECT_EQ(alternative_service2.network_isolation_key,
+            expired_alt_svcs_[0].network_isolation_key);
+
+  // Advance time until one time quantum before |alternative_service1|'s
+  // brokenness expires
+  test_task_runner_->FastForwardBy(base::TimeDelta::FromMinutes(40) -
+                                   base::TimeDelta::FromMinutes(5) -
+                                   base::TimeDelta::FromSeconds(1));
+
+  EXPECT_TRUE(broken_services_.IsBroken(alternative_service1));
+  EXPECT_FALSE(broken_services_.IsBroken(alternative_service2));
+  EXPECT_EQ(1u, expired_alt_svcs_.size());
+  EXPECT_EQ(alternative_service2.alternative_service,
+            expired_alt_svcs_[0].alternative_service);
+  EXPECT_EQ(alternative_service2.network_isolation_key,
+            expired_alt_svcs_[0].network_isolation_key);
+
+  // Advance time by one time quantum.  |alternative_service1| should no longer
+  // be broken.
+  test_task_runner_->FastForwardBy(base::TimeDelta::FromSeconds(1));
+
+  EXPECT_FALSE(broken_services_.IsBroken(alternative_service1));
+  EXPECT_FALSE(broken_services_.IsBroken(alternative_service2));
+  EXPECT_EQ(2u, expired_alt_svcs_.size());
+  EXPECT_EQ(alternative_service2.alternative_service,
+            expired_alt_svcs_[0].alternative_service);
+  EXPECT_EQ(alternative_service2.network_isolation_key,
+            expired_alt_svcs_[0].network_isolation_key);
+  EXPECT_EQ(alternative_service1.alternative_service,
+            expired_alt_svcs_[1].alternative_service);
+  EXPECT_EQ(alternative_service1.network_isolation_key,
+            expired_alt_svcs_[1].network_isolation_key);
 }
 
 TEST_F(BrokenAlternativeServicesTest, SetBrokenAlternativeServices) {
-  AlternativeService alternative_service1(kProtoQUIC, "foo1", 443);
-  AlternativeService alternative_service2(kProtoQUIC, "foo2", 443);
+  BrokenAlternativeService alternative_service1(
+      AlternativeService(kProtoQUIC, "foo1", 443), NetworkIsolationKey(),
+      true /* use_network_isolation_key */);
+  BrokenAlternativeService alternative_service2(
+      AlternativeService(kProtoQUIC, "foo2", 443), NetworkIsolationKey(),
+      true /* use_network_isolation_key */);
 
   base::TimeDelta delay1 = base::TimeDelta::FromMinutes(1);
 
@@ -687,9 +941,15 @@
 
 TEST_F(BrokenAlternativeServicesTest,
        SetBrokenAlternativeServicesWithExisting) {
-  AlternativeService alternative_service1(kProtoQUIC, "foo1", 443);
-  AlternativeService alternative_service2(kProtoQUIC, "foo2", 443);
-  AlternativeService alternative_service3(kProtoQUIC, "foo3", 443);
+  BrokenAlternativeService alternative_service1(
+      AlternativeService(kProtoQUIC, "foo1", 443), NetworkIsolationKey(),
+      true /* use_network_isolation_key */);
+  BrokenAlternativeService alternative_service2(
+      AlternativeService(kProtoQUIC, "foo2", 443), network_isolation_key1_,
+      true /* use_network_isolation_key */);
+  BrokenAlternativeService alternative_service3(
+      AlternativeService(kProtoQUIC, "foo3", 443), network_isolation_key2_,
+      true /* use_network_isolation_key */);
 
   std::unique_ptr<BrokenAlternativeServiceList> broken_list =
       std::make_unique<BrokenAlternativeServiceList>();
@@ -763,19 +1023,32 @@
   // recency list; in this case, only |alternative_service3| is added as
   // recently broken.
   auto it = broken_services_.recently_broken_alternative_services().begin();
-  EXPECT_EQ(alternative_service2, it->first);
+  EXPECT_EQ(alternative_service2.alternative_service,
+            it->first.alternative_service);
+  EXPECT_EQ(alternative_service2.network_isolation_key,
+            it->first.network_isolation_key);
   ++it;
-  EXPECT_EQ(alternative_service1, it->first);
+  EXPECT_EQ(alternative_service1.alternative_service,
+            it->first.alternative_service);
+  EXPECT_EQ(alternative_service1.network_isolation_key,
+            it->first.network_isolation_key);
   ++it;
-  EXPECT_EQ(alternative_service3, it->first);
+  EXPECT_EQ(alternative_service3.alternative_service,
+            it->first.alternative_service);
+  EXPECT_EQ(alternative_service3.network_isolation_key,
+            it->first.network_isolation_key);
 }
 
 TEST_F(BrokenAlternativeServicesTest, ScheduleExpireTaskAfterExpire) {
   // This test will check that when a broken alt svc expires, an expiration task
   // is scheduled for the next broken alt svc in the expiration queue.
 
-  AlternativeService alternative_service1(kProtoQUIC, "foo", 443);
-  AlternativeService alternative_service2(kProtoQUIC, "bar", 443);
+  BrokenAlternativeService alternative_service1(
+      AlternativeService(kProtoQUIC, "foo", 443), NetworkIsolationKey(),
+      true /* use_network_isolation_key */);
+  BrokenAlternativeService alternative_service2(
+      AlternativeService(kProtoQUIC, "bar", 443), NetworkIsolationKey(),
+      true /* use_network_isolation_key */);
 
   // Mark |alternative_service1| broken and let brokenness expire. This will
   // increase its expiration delay the next time it's marked broken.
@@ -799,8 +1072,12 @@
 }
 
 TEST_F(BrokenAlternativeServicesTest, Clear) {
-  AlternativeService alternative_service1(kProtoQUIC, "foo", 443);
-  AlternativeService alternative_service2(kProtoQUIC, "bar", 443);
+  BrokenAlternativeService alternative_service1(
+      AlternativeService(kProtoQUIC, "foo", 443), NetworkIsolationKey(),
+      true /* use_network_isolation_key */);
+  BrokenAlternativeService alternative_service2(
+      AlternativeService(kProtoQUIC, "bar", 443), NetworkIsolationKey(),
+      true /* use_network_isolation_key */);
 
   broken_services_.MarkBroken(alternative_service1);
   broken_services_.MarkRecentlyBroken(alternative_service2);
diff --git a/net/http/http_network_transaction.cc b/net/http/http_network_transaction.cc
index 149fdf6..4290dc6 100644
--- a/net/http/http_network_transaction.cc
+++ b/net/http/http_network_transaction.cc
@@ -172,6 +172,7 @@
   net_log_ = net_log;
   request_ = request_info;
   url_ = request_->url;
+  network_isolation_key_ = request_->network_isolation_key;
 #if BUILDFLAG(ENABLE_REPORTING)
   // Store values for later use in NEL report generation.
   request_method_ = request_->method;
@@ -326,7 +327,7 @@
       auth_controllers_[target]->NeedsHTTP11()) {
     session_->http_server_properties()->SetHTTP11Required(
         HttpServerProperties::GetNormalizedSchemeHostPort(request_->url),
-        request_->network_isolation_key);
+        network_isolation_key_);
   }
 
   bool keep_alive = false;
@@ -1163,7 +1164,7 @@
     if (response_.ssl_info.is_valid() &&
         !IsCertStatusError(response_.ssl_info.cert_status)) {
       session_->http_stream_factory()->ProcessAlternativeServices(
-          session_, request_->network_isolation_key, response_.headers.get(),
+          session_, network_isolation_key_, response_.headers.get(),
           url::SchemeHostPort(request_->url));
     }
   }
@@ -1256,7 +1257,7 @@
       HistogramBrokenAlternateProtocolLocation(
           BROKEN_ALTERNATE_PROTOCOL_LOCATION_HTTP_NETWORK_TRANSACTION);
       session_->http_server_properties()->MarkAlternativeServiceBroken(
-          retried_alternative_service_);
+          retried_alternative_service_, network_isolation_key_);
     }
 
 #if BUILDFLAG(ENABLE_REPORTING)
@@ -1577,7 +1578,7 @@
       if (HasExceededMaxRetries())
         break;
       if (session_->http_server_properties()->IsAlternativeServiceBroken(
-              retried_alternative_service_)) {
+              retried_alternative_service_, network_isolation_key_)) {
         // If the alternative service was marked as broken while the request
         // was in flight, retry the request which will not use the broken
         // alternative service.
diff --git a/net/http/http_network_transaction.h b/net/http/http_network_transaction.h
index 3fb09d2..c7dbfaa2 100644
--- a/net/http/http_network_transaction.h
+++ b/net/http/http_network_transaction.h
@@ -20,6 +20,7 @@
 #include "net/base/completion_repeating_callback.h"
 #include "net/base/net_error_details.h"
 #include "net/base/net_export.h"
+#include "net/base/network_isolation_key.h"
 #include "net/base/request_priority.h"
 #include "net/http/http_auth.h"
 #include "net/http/http_request_headers.h"
@@ -323,6 +324,10 @@
   RequestPriority priority_;
   HttpResponseInfo response_;
 
+  // Copied from |request_|, as it's needed after the response body has been
+  // read.
+  NetworkIsolationKey network_isolation_key_;
+
   // |proxy_info_| is the ProxyInfo used by the HttpStreamRequest.
   ProxyInfo proxy_info_;
 
diff --git a/net/http/http_network_transaction_unittest.cc b/net/http/http_network_transaction_unittest.cc
index 34169b5..d394d417 100644
--- a/net/http/http_network_transaction_unittest.cc
+++ b/net/http/http_network_transaction_unittest.cc
@@ -12637,7 +12637,8 @@
       server, NetworkIsolationKey(), alternative_service, expiration,
       HttpNetworkSession::Params().quic_params.supported_versions);
   // Mark the QUIC alternative service as broken.
-  http_server_properties->MarkAlternativeServiceBroken(alternative_service);
+  http_server_properties->MarkAlternativeServiceBroken(alternative_service,
+                                                       NetworkIsolationKey());
 
   HttpRequestInfo request;
   HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get());
@@ -12711,7 +12712,8 @@
       server, NetworkIsolationKey(), alternative_service_info_vector);
 
   // Mark one of the QUIC alternative service as broken.
-  http_server_properties->MarkAlternativeServiceBroken(alternative_service1);
+  http_server_properties->MarkAlternativeServiceBroken(alternative_service1,
+                                                       NetworkIsolationKey());
   EXPECT_EQ(2u, http_server_properties
                     ->GetAlternativeServiceInfos(server, NetworkIsolationKey())
                     .size());
@@ -12791,8 +12793,8 @@
   ASSERT_EQ(1u, alternative_service_info_vector.size());
   EXPECT_EQ(alternative_service,
             alternative_service_info_vector[0].alternative_service());
-  EXPECT_TRUE(
-      http_server_properties->IsAlternativeServiceBroken(alternative_service));
+  EXPECT_TRUE(http_server_properties->IsAlternativeServiceBroken(
+      alternative_service, NetworkIsolationKey()));
 }
 
 // Ensure that we are not allowed to redirect traffic via an alternate protocol
@@ -16526,8 +16528,8 @@
 
   // Alternative should be marked as broken, because HTTP/1.1 is not sufficient
   // for alternative service.
-  EXPECT_TRUE(
-      http_server_properties->IsAlternativeServiceBroken(alternative_service));
+  EXPECT_TRUE(http_server_properties->IsAlternativeServiceBroken(
+      alternative_service, NetworkIsolationKey()));
 
   // Since |alternative_service| is broken, a second transaction to server
   // should not start an alternate Job.  It should pool to existing connection
diff --git a/net/http/http_server_properties.cc b/net/http/http_server_properties.cc
index e83e286..9dff090 100644
--- a/net/http/http_server_properties.cc
+++ b/net/http/http_server_properties.cc
@@ -340,12 +340,14 @@
     AlternativeService alternative_service(it->alternative_service());
     if (alternative_service.host.empty()) {
       alternative_service.host = canonical->second.host();
-      if (IsAlternativeServiceBroken(alternative_service)) {
+      if (IsAlternativeServiceBroken(alternative_service,
+                                     network_isolation_key)) {
         ++it;
         continue;
       }
       alternative_service.host = origin.host();
-    } else if (IsAlternativeServiceBroken(alternative_service)) {
+    } else if (IsAlternativeServiceBroken(alternative_service,
+                                          network_isolation_key)) {
       ++it;
       continue;
     }
@@ -487,40 +489,55 @@
 }
 
 void HttpServerProperties::MarkAlternativeServiceBroken(
-    const AlternativeService& alternative_service) {
-  broken_alternative_services_.MarkBroken(alternative_service);
+    const AlternativeService& alternative_service,
+    const net::NetworkIsolationKey& network_isolation_key) {
+  broken_alternative_services_.MarkBroken(BrokenAlternativeService(
+      alternative_service, network_isolation_key, use_network_isolation_key_));
   MaybeQueueWriteProperties();
 }
 
 void HttpServerProperties::
     MarkAlternativeServiceBrokenUntilDefaultNetworkChanges(
-        const AlternativeService& alternative_service) {
+        const AlternativeService& alternative_service,
+        const net::NetworkIsolationKey& network_isolation_key) {
   broken_alternative_services_.MarkBrokenUntilDefaultNetworkChanges(
-      alternative_service);
+      BrokenAlternativeService(alternative_service, network_isolation_key,
+                               use_network_isolation_key_));
   MaybeQueueWriteProperties();
 }
 
 void HttpServerProperties::MarkAlternativeServiceRecentlyBroken(
-    const AlternativeService& alternative_service) {
-  broken_alternative_services_.MarkRecentlyBroken(alternative_service);
+    const AlternativeService& alternative_service,
+    const net::NetworkIsolationKey& network_isolation_key) {
+  broken_alternative_services_.MarkRecentlyBroken(BrokenAlternativeService(
+      alternative_service, network_isolation_key, use_network_isolation_key_));
   MaybeQueueWriteProperties();
 }
 
 bool HttpServerProperties::IsAlternativeServiceBroken(
-    const AlternativeService& alternative_service) const {
-  return broken_alternative_services_.IsBroken(alternative_service);
+    const AlternativeService& alternative_service,
+    const net::NetworkIsolationKey& network_isolation_key) const {
+  return broken_alternative_services_.IsBroken(BrokenAlternativeService(
+      alternative_service, network_isolation_key, use_network_isolation_key_));
 }
 
 bool HttpServerProperties::WasAlternativeServiceRecentlyBroken(
-    const AlternativeService& alternative_service) {
-  return broken_alternative_services_.WasRecentlyBroken(alternative_service);
+    const AlternativeService& alternative_service,
+    const net::NetworkIsolationKey& network_isolation_key) {
+  return broken_alternative_services_.WasRecentlyBroken(
+      BrokenAlternativeService(alternative_service, network_isolation_key,
+                               use_network_isolation_key_));
 }
 
 void HttpServerProperties::ConfirmAlternativeService(
-    const AlternativeService& alternative_service) {
-  bool old_value = IsAlternativeServiceBroken(alternative_service);
-  broken_alternative_services_.Confirm(alternative_service);
-  bool new_value = IsAlternativeServiceBroken(alternative_service);
+    const AlternativeService& alternative_service,
+    const net::NetworkIsolationKey& network_isolation_key) {
+  bool old_value =
+      IsAlternativeServiceBroken(alternative_service, network_isolation_key);
+  broken_alternative_services_.Confirm(BrokenAlternativeService(
+      alternative_service, network_isolation_key, use_network_isolation_key_));
+  bool new_value =
+      IsAlternativeServiceBroken(alternative_service, network_isolation_key);
 
   // For persisting, we only care about the value returned by
   // IsAlternativeServiceBroken. If that value changes, then call persist.
@@ -555,8 +572,11 @@
         alternative_service.host = key.server.host();
       }
       base::TimeTicks brokenness_expiration_ticks;
-      if (broken_alternative_services_.IsBroken(alternative_service,
-                                                &brokenness_expiration_ticks)) {
+      if (broken_alternative_services_.IsBroken(
+              BrokenAlternativeService(alternative_service,
+                                       server_info.first.network_isolation_key,
+                                       use_network_isolation_key_),
+              &brokenness_expiration_ticks)) {
         // Convert |brokenness_expiration| from TimeTicks to Time
         base::Time brokenness_expiration =
             now + (brokenness_expiration_ticks - now_ticks);
@@ -735,12 +755,14 @@
 }
 
 void HttpServerProperties::OnExpireBrokenAlternativeService(
-    const AlternativeService& expired_alternative_service) {
+    const AlternativeService& expired_alternative_service,
+    const NetworkIsolationKey& network_isolation_key) {
   // Remove every occurrence of |expired_alternative_service| from
   // |alternative_service_map_|.
   for (auto map_it = server_info_map_.begin();
        map_it != server_info_map_.end();) {
-    if (!map_it->second.alternative_services.has_value()) {
+    if (!map_it->second.alternative_services.has_value() ||
+        map_it->first.network_isolation_key != network_isolation_key) {
       ++map_it;
       continue;
     }
@@ -763,8 +785,7 @@
     // from both |canonical_alt_svc_map_| and
     // |alternative_service_map_|.
     if (service_info->empty()) {
-      // TODO(mmenke): Take a NetworkIsolationKey as input and use it here.
-      RemoveAltSvcCanonicalHost(map_it->first.server, NetworkIsolationKey());
+      RemoveAltSvcCanonicalHost(map_it->first.server, network_isolation_key);
       map_it->second.alternative_services.reset();
       map_it = server_info_map_.EraseIfEmpty(map_it);
       continue;
@@ -812,7 +833,8 @@
     if (alternative_service.host.empty()) {
       alternative_service.host = canonical_server.host();
     }
-    if (!IsAlternativeServiceBroken(alternative_service)) {
+    if (!IsAlternativeServiceBroken(alternative_service,
+                                    network_isolation_key)) {
       return it;
     }
   }
diff --git a/net/http/http_server_properties.h b/net/http/http_server_properties.h
index 8ef3bd6..78aab4cf 100644
--- a/net/http/http_server_properties.h
+++ b/net/http/http_server_properties.h
@@ -297,34 +297,42 @@
       const net::NetworkIsolationKey& network_isolation_key,
       const AlternativeServiceInfoVector& alternative_service_info_vector);
 
-  // Marks |alternative_service| as broken.
-  // |alternative_service.host| must not be empty.
+  // Marks |alternative_service| as broken in the context of
+  // |network_isolation_key|. |alternative_service.host| must not be empty.
   void MarkAlternativeServiceBroken(
-      const AlternativeService& alternative_service);
+      const AlternativeService& alternative_service,
+      const net::NetworkIsolationKey& network_isolation_key);
 
-  // Marks |alternative_service| as broken until the default network changes.
+  // Marks |alternative_service| as broken in the context of
+  // |network_isolation_key| until the default network changes.
   // |alternative_service.host| must not be empty.
   void MarkAlternativeServiceBrokenUntilDefaultNetworkChanges(
-      const AlternativeService& alternative_service);
+      const AlternativeService& alternative_service,
+      const net::NetworkIsolationKey& network_isolation_key);
 
-  // Marks |alternative_service| as recently broken.
-  // |alternative_service.host| must not be empty.
+  // Marks |alternative_service| as recently broken in the context of
+  // |network_isolation_key|. |alternative_service.host| must not be empty.
   void MarkAlternativeServiceRecentlyBroken(
-      const AlternativeService& alternative_service);
+      const AlternativeService& alternative_service,
+      const net::NetworkIsolationKey& network_isolation_key);
 
-  // Returns true iff |alternative_service| is currently broken.
-  // |alternative_service.host| must not be empty.
+  // Returns true iff |alternative_service| is currently broken in the context
+  // of |network_isolation_key|. |alternative_service.host| must not be empty.
   bool IsAlternativeServiceBroken(
-      const AlternativeService& alternative_service) const;
+      const AlternativeService& alternative_service,
+      const net::NetworkIsolationKey& network_isolation_key) const;
 
-  // Returns true iff |alternative_service| was recently broken.
-  // |alternative_service.host| must not be empty.
+  // Returns true iff |alternative_service| was recently broken in the context
+  // of |network_isolation_key|. |alternative_service.host| must not be empty.
   bool WasAlternativeServiceRecentlyBroken(
-      const AlternativeService& alternative_service);
+      const AlternativeService& alternative_service,
+      const net::NetworkIsolationKey& network_isolation_key);
 
-  // Confirms that |alternative_service| is working.
-  // |alternative_service.host| must not be empty.
-  void ConfirmAlternativeService(const AlternativeService& alternative_service);
+  // Confirms that |alternative_service| is working in the context of
+  // |network_isolation_key|. |alternative_service.host| must not be empty.
+  void ConfirmAlternativeService(
+      const AlternativeService& alternative_service,
+      const net::NetworkIsolationKey& network_isolation_key);
 
   // Called when the default network changes.
   // Clears all the alternative services that were marked broken until the
@@ -376,7 +384,8 @@
 
   // BrokenAlternativeServices::Delegate method.
   void OnExpireBrokenAlternativeService(
-      const AlternativeService& expired_alternative_service) override;
+      const AlternativeService& expired_alternative_service,
+      const NetworkIsolationKey& network_isolation_key) override;
 
   static base::TimeDelta GetUpdatePrefsDelayForTesting();
 
diff --git a/net/http/http_server_properties_manager.cc b/net/http/http_server_properties_manager.cc
index 33c8e5ae..48be2950 100644
--- a/net/http/http_server_properties_manager.cc
+++ b/net/http/http_server_properties_manager.cc
@@ -113,6 +113,23 @@
                   NextProtoToString(alternative_service.protocol));
 }
 
+// Fails in the case of NetworkIsolationKeys that can't be persisted to disk,
+// like unique origins.
+bool TryAddBrokenAlternativeServiceFieldsToDictionaryValue(
+    const BrokenAlternativeService& broken_alt_service,
+    base::DictionaryValue* dict) {
+  base::Value network_isolation_key_value;
+  if (!broken_alt_service.network_isolation_key.ToValue(
+          &network_isolation_key_value)) {
+    return false;
+  }
+
+  dict->SetKey(kNetworkIsolationKey, std::move(network_isolation_key_value));
+  AddAlternativeServiceFieldsToDictionaryValue(
+      broken_alt_service.alternative_service, dict);
+  return true;
+}
+
 quic::QuicServerId QuicServerIdFromString(const std::string& str) {
   GURL url(str);
   if (!url.is_valid()) {
@@ -261,7 +278,8 @@
         continue;
       }
       AddToBrokenAlternativeServices(
-          *entry_dict, broken_alternative_service_list->get(),
+          *entry_dict, use_network_isolation_key,
+          broken_alternative_service_list->get(),
           recently_broken_alternative_services->get());
     }
   }
@@ -287,6 +305,7 @@
 
 void HttpServerPropertiesManager::AddToBrokenAlternativeServices(
     const base::DictionaryValue& broken_alt_svc_entry_dict,
+    bool use_network_isolation_key,
     BrokenAlternativeServiceList* broken_alternative_service_list,
     RecentlyBrokenAlternativeServices* recently_broken_alternative_services) {
   AlternativeService alt_service;
@@ -296,6 +315,20 @@
     return;
   }
 
+  const base::Value* network_isolation_key_value =
+      broken_alt_svc_entry_dict.FindKey(kNetworkIsolationKey);
+  NetworkIsolationKey network_isolation_key;
+  if (!network_isolation_key_value ||
+      !NetworkIsolationKey::FromValue(*network_isolation_key_value,
+                                      &network_isolation_key)) {
+    return;
+  }
+
+  // Fail if NetworkIsolationKeys are disabled, but the entry has a non-empty
+  // NetworkIsolationKey.
+  if (!use_network_isolation_key && !network_isolation_key.IsEmpty())
+    return;
+
   // Each entry must contain either broken-count and/or broken-until fields.
   bool contains_broken_count_or_broken_until = false;
 
@@ -313,7 +346,10 @@
       DVLOG(1) << "Broken alternative service has negative broken-count.";
       return;
     }
-    recently_broken_alternative_services->Put(alt_service, broken_count);
+    recently_broken_alternative_services->Put(
+        BrokenAlternativeService(alt_service, network_isolation_key,
+                                 use_network_isolation_key),
+        broken_count);
     contains_broken_count_or_broken_until = true;
   }
 
@@ -335,8 +371,10 @@
     base::TimeTicks expiration_time_ticks =
         clock_->NowTicks() +
         (base::Time::FromTimeT(expiration_time_t) - base::Time::Now());
-    broken_alternative_service_list->push_back(
-        std::make_pair(alt_service, expiration_time_ticks));
+    broken_alternative_service_list->push_back(std::make_pair(
+        BrokenAlternativeService(alt_service, network_isolation_key,
+                                 use_network_isolation_key),
+        expiration_time_ticks));
     contains_broken_count_or_broken_until = true;
   }
 
@@ -797,8 +835,9 @@
         recently_broken_alternative_services,
     base::DictionaryValue* http_server_properties_dict) {
   if (broken_alternative_service_list.empty() &&
-      recently_broken_alternative_services.empty())
+      recently_broken_alternative_services.empty()) {
     return;
+  }
 
   // JSON list will be in MRU order according to
   // |recently_broken_alternative_services|.
@@ -807,18 +846,21 @@
 
   // Maps recently-broken alternative services to the index where it's stored
   // in |json_list|.
-  std::unordered_map<AlternativeService, size_t, AlternativeServiceHash>
-      json_list_index_map;
+  std::map<BrokenAlternativeService, size_t> json_list_index_map;
 
   if (!recently_broken_alternative_services.empty()) {
     for (auto it = recently_broken_alternative_services.rbegin();
          it != recently_broken_alternative_services.rend(); ++it) {
-      const AlternativeService& alt_service = it->first;
+      const BrokenAlternativeService& broken_alt_service = it->first;
       int broken_count = it->second;
+
       base::DictionaryValue entry_dict;
-      AddAlternativeServiceFieldsToDictionaryValue(alt_service, &entry_dict);
+      if (!TryAddBrokenAlternativeServiceFieldsToDictionaryValue(
+              broken_alt_service, &entry_dict)) {
+        continue;
+      }
       entry_dict.SetKey(kBrokenCountKey, base::Value(broken_count));
-      json_list_index_map[alt_service] = json_list->GetList().size();
+      json_list_index_map[broken_alt_service] = json_list->GetList().size();
       json_list->GetList().push_back(std::move(entry_dict));
     }
   }
@@ -831,7 +873,7 @@
          it != broken_alternative_service_list.end() &&
          count < max_broken_alternative_services;
          ++it, ++count) {
-      const AlternativeService& alt_service = it->first;
+      const BrokenAlternativeService& broken_alt_service = it->first;
       base::TimeTicks expiration_time_ticks = it->second;
       // Convert expiration from TimeTicks to Time to time_t
       time_t expiration_time_t =
@@ -839,7 +881,7 @@
               .ToTimeT();
       int64_t expiration_int64 = static_cast<int64_t>(expiration_time_t);
 
-      auto index_map_it = json_list_index_map.find(alt_service);
+      auto index_map_it = json_list_index_map.find(broken_alt_service);
       if (index_map_it != json_list_index_map.end()) {
         size_t json_list_index = index_map_it->second;
         base::DictionaryValue* entry_dict = nullptr;
@@ -850,7 +892,10 @@
                            base::Value(base::NumberToString(expiration_int64)));
       } else {
         base::DictionaryValue entry_dict;
-        AddAlternativeServiceFieldsToDictionaryValue(alt_service, &entry_dict);
+        if (!TryAddBrokenAlternativeServiceFieldsToDictionaryValue(
+                broken_alt_service, &entry_dict)) {
+          continue;
+        }
         entry_dict.SetKey(kBrokenUntilKey,
                           base::Value(base::NumberToString(expiration_int64)));
         json_list->GetList().push_back(std::move(entry_dict));
@@ -858,7 +903,11 @@
     }
   }
 
-  DCHECK(!json_list->empty());
+  // This can happen if all the entries are for NetworkIsolationKeys for opaque
+  // origins, which isn't exactly common, but can theoretically happen.
+  if (json_list->empty())
+    return;
+
   http_server_properties_dict->SetWithoutPathExpansion(
       kBrokenAlternativeServicesKey, std::move(json_list));
 }
diff --git a/net/http/http_server_properties_manager.h b/net/http/http_server_properties_manager.h
index 73a31236..4b656fb6 100644
--- a/net/http/http_server_properties_manager.h
+++ b/net/http/http_server_properties_manager.h
@@ -166,6 +166,7 @@
                               QuicServerInfoMap* quic_server_info_map);
   void AddToBrokenAlternativeServices(
       const base::DictionaryValue& broken_alt_svc_entry_dict,
+      bool use_network_isolation_key,
       BrokenAlternativeServiceList* broken_alternative_service_list,
       RecentlyBrokenAlternativeServices* recently_broken_alternative_services);
 
diff --git a/net/http/http_server_properties_manager_unittest.cc b/net/http/http_server_properties_manager_unittest.cc
index 26dc69c..061825f950 100644
--- a/net/http/http_server_properties_manager_unittest.cc
+++ b/net/http/http_server_properties_manager_unittest.cc
@@ -563,28 +563,30 @@
   http_server_props_->SetHttp2AlternativeService(
       spdy_server_mail, NetworkIsolationKey(), alternative_service,
       one_day_from_now_);
-  EXPECT_FALSE(
-      http_server_props_->IsAlternativeServiceBroken(alternative_service));
+  EXPECT_FALSE(http_server_props_->IsAlternativeServiceBroken(
+      alternative_service, NetworkIsolationKey()));
   EXPECT_FALSE(http_server_props_->WasAlternativeServiceRecentlyBroken(
-      alternative_service));
+      alternative_service, NetworkIsolationKey()));
 
   EXPECT_EQ(1u, GetPendingMainThreadTaskCount());
 
-  http_server_props_->MarkAlternativeServiceBroken(alternative_service);
-  EXPECT_TRUE(
-      http_server_props_->IsAlternativeServiceBroken(alternative_service));
+  http_server_props_->MarkAlternativeServiceBroken(alternative_service,
+                                                   NetworkIsolationKey());
+  EXPECT_TRUE(http_server_props_->IsAlternativeServiceBroken(
+      alternative_service, NetworkIsolationKey()));
   EXPECT_TRUE(http_server_props_->WasAlternativeServiceRecentlyBroken(
-      alternative_service));
+      alternative_service, NetworkIsolationKey()));
 
   // In addition to the pref update task, there's now a task to mark the
   // alternative service as no longer broken.
   EXPECT_EQ(2u, GetPendingMainThreadTaskCount());
 
-  http_server_props_->ConfirmAlternativeService(alternative_service);
-  EXPECT_FALSE(
-      http_server_props_->IsAlternativeServiceBroken(alternative_service));
+  http_server_props_->ConfirmAlternativeService(alternative_service,
+                                                NetworkIsolationKey());
+  EXPECT_FALSE(http_server_props_->IsAlternativeServiceBroken(
+      alternative_service, NetworkIsolationKey()));
   EXPECT_FALSE(http_server_props_->WasAlternativeServiceRecentlyBroken(
-      alternative_service));
+      alternative_service, NetworkIsolationKey()));
 
   EXPECT_EQ(2u, GetPendingMainThreadTaskCount());
 
@@ -593,10 +595,10 @@
   FastForwardUntilNoTasksRemain();
   EXPECT_EQ(1, pref_delegate_->GetAndClearNumPrefUpdates());
 
-  EXPECT_FALSE(
-      http_server_props_->IsAlternativeServiceBroken(alternative_service));
+  EXPECT_FALSE(http_server_props_->IsAlternativeServiceBroken(
+      alternative_service, NetworkIsolationKey()));
   EXPECT_FALSE(http_server_props_->WasAlternativeServiceRecentlyBroken(
-      alternative_service));
+      alternative_service, NetworkIsolationKey()));
 }
 
 // Check the case that prefs are loaded only after setting alternative service
@@ -712,29 +714,30 @@
   http_server_props_->SetHttp2AlternativeService(
       spdy_server_mail, NetworkIsolationKey(), alternative_service,
       one_day_from_now_);
-  EXPECT_FALSE(
-      http_server_props_->IsAlternativeServiceBroken(alternative_service));
+  EXPECT_FALSE(http_server_props_->IsAlternativeServiceBroken(
+      alternative_service, NetworkIsolationKey()));
   EXPECT_FALSE(http_server_props_->WasAlternativeServiceRecentlyBroken(
-      alternative_service));
+      alternative_service, NetworkIsolationKey()));
 
   EXPECT_EQ(1u, GetPendingMainThreadTaskCount());
 
   http_server_props_->MarkAlternativeServiceBrokenUntilDefaultNetworkChanges(
-      alternative_service);
-  EXPECT_TRUE(
-      http_server_props_->IsAlternativeServiceBroken(alternative_service));
+      alternative_service, NetworkIsolationKey());
+  EXPECT_TRUE(http_server_props_->IsAlternativeServiceBroken(
+      alternative_service, NetworkIsolationKey()));
   EXPECT_TRUE(http_server_props_->WasAlternativeServiceRecentlyBroken(
-      alternative_service));
+      alternative_service, NetworkIsolationKey()));
 
   // In addition to the pref update task, there's now a task to mark the
   // alternative service as no longer broken.
   EXPECT_EQ(2u, GetPendingMainThreadTaskCount());
 
-  http_server_props_->ConfirmAlternativeService(alternative_service);
-  EXPECT_FALSE(
-      http_server_props_->IsAlternativeServiceBroken(alternative_service));
+  http_server_props_->ConfirmAlternativeService(alternative_service,
+                                                NetworkIsolationKey());
+  EXPECT_FALSE(http_server_props_->IsAlternativeServiceBroken(
+      alternative_service, NetworkIsolationKey()));
   EXPECT_FALSE(http_server_props_->WasAlternativeServiceRecentlyBroken(
-      alternative_service));
+      alternative_service, NetworkIsolationKey()));
 
   EXPECT_EQ(2u, GetPendingMainThreadTaskCount());
 
@@ -743,10 +746,10 @@
   FastForwardUntilNoTasksRemain();
   EXPECT_EQ(1, pref_delegate_->GetAndClearNumPrefUpdates());
 
-  EXPECT_FALSE(
-      http_server_props_->IsAlternativeServiceBroken(alternative_service));
+  EXPECT_FALSE(http_server_props_->IsAlternativeServiceBroken(
+      alternative_service, NetworkIsolationKey()));
   EXPECT_FALSE(http_server_props_->WasAlternativeServiceRecentlyBroken(
-      alternative_service));
+      alternative_service, NetworkIsolationKey()));
 }
 
 TEST_F(HttpServerPropertiesManagerTest,
@@ -763,29 +766,29 @@
   http_server_props_->SetHttp2AlternativeService(
       spdy_server_mail, NetworkIsolationKey(), alternative_service,
       one_day_from_now_);
-  EXPECT_FALSE(
-      http_server_props_->IsAlternativeServiceBroken(alternative_service));
+  EXPECT_FALSE(http_server_props_->IsAlternativeServiceBroken(
+      alternative_service, NetworkIsolationKey()));
   EXPECT_FALSE(http_server_props_->WasAlternativeServiceRecentlyBroken(
-      alternative_service));
+      alternative_service, NetworkIsolationKey()));
 
   EXPECT_EQ(1u, GetPendingMainThreadTaskCount());
 
   http_server_props_->MarkAlternativeServiceBrokenUntilDefaultNetworkChanges(
-      alternative_service);
-  EXPECT_TRUE(
-      http_server_props_->IsAlternativeServiceBroken(alternative_service));
+      alternative_service, NetworkIsolationKey());
+  EXPECT_TRUE(http_server_props_->IsAlternativeServiceBroken(
+      alternative_service, NetworkIsolationKey()));
   EXPECT_TRUE(http_server_props_->WasAlternativeServiceRecentlyBroken(
-      alternative_service));
+      alternative_service, NetworkIsolationKey()));
 
   // In addition to the pref update task, there's now a task to mark the
   // alternative service as no longer broken.
   EXPECT_EQ(2u, GetPendingMainThreadTaskCount());
 
   http_server_props_->OnDefaultNetworkChanged();
-  EXPECT_FALSE(
-      http_server_props_->IsAlternativeServiceBroken(alternative_service));
+  EXPECT_FALSE(http_server_props_->IsAlternativeServiceBroken(
+      alternative_service, NetworkIsolationKey()));
   EXPECT_FALSE(http_server_props_->WasAlternativeServiceRecentlyBroken(
-      alternative_service));
+      alternative_service, NetworkIsolationKey()));
 
   EXPECT_EQ(2u, GetPendingMainThreadTaskCount());
 
@@ -794,10 +797,10 @@
   FastForwardUntilNoTasksRemain();
   EXPECT_EQ(1, pref_delegate_->GetAndClearNumPrefUpdates());
 
-  EXPECT_FALSE(
-      http_server_props_->IsAlternativeServiceBroken(alternative_service));
+  EXPECT_FALSE(http_server_props_->IsAlternativeServiceBroken(
+      alternative_service, NetworkIsolationKey()));
   EXPECT_FALSE(http_server_props_->WasAlternativeServiceRecentlyBroken(
-      alternative_service));
+      alternative_service, NetworkIsolationKey()));
 }
 
 TEST_F(HttpServerPropertiesManagerTest, OnDefaultNetworkChangedWithBrokenOnly) {
@@ -813,28 +816,29 @@
   http_server_props_->SetHttp2AlternativeService(
       spdy_server_mail, NetworkIsolationKey(), alternative_service,
       one_day_from_now_);
-  EXPECT_FALSE(
-      http_server_props_->IsAlternativeServiceBroken(alternative_service));
+  EXPECT_FALSE(http_server_props_->IsAlternativeServiceBroken(
+      alternative_service, NetworkIsolationKey()));
   EXPECT_FALSE(http_server_props_->WasAlternativeServiceRecentlyBroken(
-      alternative_service));
+      alternative_service, NetworkIsolationKey()));
 
   EXPECT_EQ(1u, GetPendingMainThreadTaskCount());
 
-  http_server_props_->MarkAlternativeServiceBroken(alternative_service);
-  EXPECT_TRUE(
-      http_server_props_->IsAlternativeServiceBroken(alternative_service));
+  http_server_props_->MarkAlternativeServiceBroken(alternative_service,
+                                                   NetworkIsolationKey());
+  EXPECT_TRUE(http_server_props_->IsAlternativeServiceBroken(
+      alternative_service, NetworkIsolationKey()));
   EXPECT_TRUE(http_server_props_->WasAlternativeServiceRecentlyBroken(
-      alternative_service));
+      alternative_service, NetworkIsolationKey()));
 
   // In addition to the pref update task, there's now a task to mark the
   // alternative service as no longer broken.
   EXPECT_EQ(2u, GetPendingMainThreadTaskCount());
 
   http_server_props_->OnDefaultNetworkChanged();
-  EXPECT_TRUE(
-      http_server_props_->IsAlternativeServiceBroken(alternative_service));
+  EXPECT_TRUE(http_server_props_->IsAlternativeServiceBroken(
+      alternative_service, NetworkIsolationKey()));
   EXPECT_TRUE(http_server_props_->WasAlternativeServiceRecentlyBroken(
-      alternative_service));
+      alternative_service, NetworkIsolationKey()));
 
   EXPECT_EQ(2u, GetPendingMainThreadTaskCount());
 
@@ -843,10 +847,10 @@
   FastForwardUntilNoTasksRemain();
   EXPECT_EQ(1, pref_delegate_->GetAndClearNumPrefUpdates());
 
-  EXPECT_FALSE(
-      http_server_props_->IsAlternativeServiceBroken(alternative_service));
+  EXPECT_FALSE(http_server_props_->IsAlternativeServiceBroken(
+      alternative_service, NetworkIsolationKey()));
   EXPECT_TRUE(http_server_props_->WasAlternativeServiceRecentlyBroken(
-      alternative_service));
+      alternative_service, NetworkIsolationKey()));
 }
 
 TEST_F(HttpServerPropertiesManagerTest, SupportsQuic) {
@@ -967,7 +971,8 @@
   http_server_props_->SetAlternativeServices(spdy_server, NetworkIsolationKey(),
                                              alt_svc_info_vector);
 
-  http_server_props_->MarkAlternativeServiceBroken(broken_alternative_service);
+  http_server_props_->MarkAlternativeServiceBroken(broken_alternative_service,
+                                                   NetworkIsolationKey());
   http_server_props_->SetSupportsSpdy(spdy_server, NetworkIsolationKey(), true);
   http_server_props_->SetSupportsQuic(true, actual_address);
   ServerNetworkStats stats;
@@ -984,7 +989,7 @@
   EXPECT_EQ(1, pref_delegate_->GetAndClearNumPrefUpdates());
 
   EXPECT_TRUE(http_server_props_->IsAlternativeServiceBroken(
-      broken_alternative_service));
+      broken_alternative_service, NetworkIsolationKey()));
   EXPECT_TRUE(http_server_props_->SupportsRequestPriority(
       spdy_server, NetworkIsolationKey()));
   EXPECT_TRUE(HasAlternativeService(spdy_server, NetworkIsolationKey()));
@@ -1012,7 +1017,7 @@
   EXPECT_TRUE(callback_invoked_);
 
   EXPECT_FALSE(http_server_props_->IsAlternativeServiceBroken(
-      broken_alternative_service));
+      broken_alternative_service, NetworkIsolationKey()));
   EXPECT_FALSE(http_server_props_->SupportsRequestPriority(
       spdy_server, NetworkIsolationKey()));
   EXPECT_FALSE(HasAlternativeService(spdy_server, NetworkIsolationKey()));
@@ -1120,9 +1125,10 @@
       server_mail, NetworkIsolationKey(), mail_alternative_service,
       expiration3);
 
-  http_server_props_->MarkAlternativeServiceBroken(www_alternative_service2);
+  http_server_props_->MarkAlternativeServiceBroken(www_alternative_service2,
+                                                   NetworkIsolationKey());
   http_server_props_->MarkAlternativeServiceRecentlyBroken(
-      mail_alternative_service);
+      mail_alternative_service, NetworkIsolationKey());
 
   // #3: Set SPDY server map
   http_server_props_->SetSupportsSpdy(server_www, NetworkIsolationKey(), false);
@@ -1209,10 +1215,10 @@
   const char expected_json[] =
       "{"
       "\"broken_alternative_services\":"
-      "[{\"broken_count\":1,\"host\":\"www.google.com\",\"port\":1234,"
-      "\"protocol_str\":\"h2\"},"
-      "{\"broken_count\":1,\"host\":\"foo.google.com\",\"port\":444,"
-      "\"protocol_str\":\"h2\"}],"
+      "[{\"broken_count\":1,\"host\":\"www.google.com\",\"isolation\":[],"
+      "\"port\":1234,\"protocol_str\":\"h2\"},"
+      "{\"broken_count\":1,\"host\":\"foo.google.com\",\"isolation\":[],"
+      "\"port\":444,\"protocol_str\":\"h2\"}],"
       "\"quic_servers\":"
       "{\"https://mail.google.com:80\":"
       "{\"server_info\":\"quic_server_info1\"}},"
@@ -1328,7 +1334,8 @@
       AlternativeServiceInfo::CreateHttp2AlternativeServiceInfo(
           broken_alternative_service, time_one_day_later));
   // #1: MarkAlternativeServiceBroken().
-  http_server_props_->MarkAlternativeServiceBroken(broken_alternative_service);
+  http_server_props_->MarkAlternativeServiceBroken(broken_alternative_service,
+                                                   NetworkIsolationKey());
 
   const AlternativeService expired_alternative_service(
       kProtoHTTP2, "expired.example.com", 443);
@@ -1713,10 +1720,12 @@
   AlternativeService cached_recently_broken_service(kProtoQUIC,
                                                     "cached_rbroken", 443);
 
-  http_server_props_->MarkAlternativeServiceBroken(cached_broken_service);
-  http_server_props_->MarkAlternativeServiceBroken(cached_broken_service2);
+  http_server_props_->MarkAlternativeServiceBroken(cached_broken_service,
+                                                   NetworkIsolationKey());
+  http_server_props_->MarkAlternativeServiceBroken(cached_broken_service2,
+                                                   NetworkIsolationKey());
   http_server_props_->MarkAlternativeServiceRecentlyBroken(
-      cached_recently_broken_service);
+      cached_recently_broken_service, NetworkIsolationKey());
 
   EXPECT_EQ(0, pref_delegate_->GetAndClearNumPrefUpdates());
   // There should be a task to remove remove alt services from the cache of
@@ -1737,13 +1746,16 @@
       "{\"broken_until\":\"" +
       expiration_str +
       "\","
-      "\"host\":\"www.google.com\",\"port\":1234,\"protocol_str\":\"h2\"},"
+      "\"host\":\"www.google.com\",\"isolation\":[],"
+      "\"port\":1234,\"protocol_str\":\"h2\"},"
       "{\"broken_count\":2,\"broken_until\":\"" +
       expiration_str +
       "\","
-      "\"host\":\"cached_broken\",\"port\":443,\"protocol_str\":\"quic\"},"
+      "\"host\":\"cached_broken\",\"isolation\":[],"
+      "\"port\":443,\"protocol_str\":\"quic\"},"
       "{\"broken_count\":3,"
-      "\"host\":\"cached_rbroken\",\"port\":443,\"protocol_str\":\"quic\"}],"
+      "\"host\":\"cached_rbroken\",\"isolation\":[],"
+      "\"port\":443,\"protocol_str\":\"quic\"}],"
       "\"quic_servers\":{"
       "\"https://mail.google.com:80\":{"
       "\"server_info\":\"quic_server_info1\"}"
@@ -1840,12 +1852,12 @@
   // Verify broken alternative services.
   //
   AlternativeService prefs_broken_service(kProtoHTTP2, "www.google.com", 1234);
-  EXPECT_TRUE(
-      http_server_props_->IsAlternativeServiceBroken(cached_broken_service));
-  EXPECT_TRUE(
-      http_server_props_->IsAlternativeServiceBroken(cached_broken_service2));
-  EXPECT_TRUE(
-      http_server_props_->IsAlternativeServiceBroken(prefs_broken_service));
+  EXPECT_TRUE(http_server_props_->IsAlternativeServiceBroken(
+      cached_broken_service, NetworkIsolationKey()));
+  EXPECT_TRUE(http_server_props_->IsAlternativeServiceBroken(
+      cached_broken_service2, NetworkIsolationKey()));
+  EXPECT_TRUE(http_server_props_->IsAlternativeServiceBroken(
+      prefs_broken_service, NetworkIsolationKey()));
 
   // Verify brokenness expiration times.
   // |cached_broken_service|'s expiration time should've been overwritten by the
@@ -1855,19 +1867,19 @@
   // now which comes from the prefs.
   FastForwardBy(base::TimeDelta::FromMinutes(5) -
                 HttpServerProperties::GetUpdatePrefsDelayForTesting());
-  EXPECT_TRUE(
-      http_server_props_->IsAlternativeServiceBroken(cached_broken_service));
-  EXPECT_FALSE(
-      http_server_props_->IsAlternativeServiceBroken(cached_broken_service2));
-  EXPECT_TRUE(
-      http_server_props_->IsAlternativeServiceBroken(prefs_broken_service));
+  EXPECT_TRUE(http_server_props_->IsAlternativeServiceBroken(
+      cached_broken_service, NetworkIsolationKey()));
+  EXPECT_FALSE(http_server_props_->IsAlternativeServiceBroken(
+      cached_broken_service2, NetworkIsolationKey()));
+  EXPECT_TRUE(http_server_props_->IsAlternativeServiceBroken(
+      prefs_broken_service, NetworkIsolationKey()));
   FastForwardBy(base::TimeDelta::FromDays(1));
-  EXPECT_FALSE(
-      http_server_props_->IsAlternativeServiceBroken(cached_broken_service));
-  EXPECT_FALSE(
-      http_server_props_->IsAlternativeServiceBroken(cached_broken_service2));
-  EXPECT_FALSE(
-      http_server_props_->IsAlternativeServiceBroken(prefs_broken_service));
+  EXPECT_FALSE(http_server_props_->IsAlternativeServiceBroken(
+      cached_broken_service, NetworkIsolationKey()));
+  EXPECT_FALSE(http_server_props_->IsAlternativeServiceBroken(
+      cached_broken_service2, NetworkIsolationKey()));
+  EXPECT_FALSE(http_server_props_->IsAlternativeServiceBroken(
+      prefs_broken_service, NetworkIsolationKey()));
 
   // Now that |prefs_broken_service|'s brokenness has expired, it should've
   // been removed from the alternative services info vectors of all servers.
@@ -1890,61 +1902,64 @@
   // broken.
 
   EXPECT_TRUE(http_server_props_->WasAlternativeServiceRecentlyBroken(
-      prefs_broken_service));
+      prefs_broken_service, NetworkIsolationKey()));
   EXPECT_TRUE(http_server_props_->WasAlternativeServiceRecentlyBroken(
-      cached_recently_broken_service));
+      cached_recently_broken_service, NetworkIsolationKey()));
   EXPECT_TRUE(http_server_props_->WasAlternativeServiceRecentlyBroken(
-      cached_broken_service));
+      cached_broken_service, NetworkIsolationKey()));
   EXPECT_TRUE(http_server_props_->WasAlternativeServiceRecentlyBroken(
-      cached_broken_service2));
+      cached_broken_service2, NetworkIsolationKey()));
   // Make sure |prefs_broken_service| has the right expiration delay when marked
   // broken. Since |prefs_broken_service| had no broken_count specified in the
   // prefs, a broken_count value of 1 should have been assumed by
   // |http_server_props_|.
-  http_server_props_->MarkAlternativeServiceBroken(prefs_broken_service);
+  http_server_props_->MarkAlternativeServiceBroken(prefs_broken_service,
+                                                   NetworkIsolationKey());
   EXPECT_EQ(0, pref_delegate_->GetAndClearNumPrefUpdates());
   EXPECT_NE(0u, GetPendingMainThreadTaskCount());
   FastForwardBy(base::TimeDelta::FromMinutes(10) -
                 base::TimeDelta::FromInternalValue(1));
-  EXPECT_TRUE(
-      http_server_props_->IsAlternativeServiceBroken(prefs_broken_service));
+  EXPECT_TRUE(http_server_props_->IsAlternativeServiceBroken(
+      prefs_broken_service, NetworkIsolationKey()));
   FastForwardBy(base::TimeDelta::FromInternalValue(1));
-  EXPECT_FALSE(
-      http_server_props_->IsAlternativeServiceBroken(prefs_broken_service));
+  EXPECT_FALSE(http_server_props_->IsAlternativeServiceBroken(
+      prefs_broken_service, NetworkIsolationKey()));
   // Make sure |cached_recently_broken_service| has the right expiration delay
   // when marked broken.
   http_server_props_->MarkAlternativeServiceBroken(
-      cached_recently_broken_service);
+      cached_recently_broken_service, NetworkIsolationKey());
   EXPECT_NE(0u, GetPendingMainThreadTaskCount());
   FastForwardBy(base::TimeDelta::FromMinutes(40) -
                 base::TimeDelta::FromInternalValue(1));
   EXPECT_TRUE(http_server_props_->IsAlternativeServiceBroken(
-      cached_recently_broken_service));
+      cached_recently_broken_service, NetworkIsolationKey()));
   FastForwardBy(base::TimeDelta::FromInternalValue(1));
   EXPECT_FALSE(http_server_props_->IsAlternativeServiceBroken(
-      cached_recently_broken_service));
+      cached_recently_broken_service, NetworkIsolationKey()));
   // Make sure |cached_broken_service| has the right expiration delay when
   // marked broken.
-  http_server_props_->MarkAlternativeServiceBroken(cached_broken_service);
+  http_server_props_->MarkAlternativeServiceBroken(cached_broken_service,
+                                                   NetworkIsolationKey());
   EXPECT_NE(0u, GetPendingMainThreadTaskCount());
   FastForwardBy(base::TimeDelta::FromMinutes(20) -
                 base::TimeDelta::FromInternalValue(1));
-  EXPECT_TRUE(
-      http_server_props_->IsAlternativeServiceBroken(cached_broken_service));
+  EXPECT_TRUE(http_server_props_->IsAlternativeServiceBroken(
+      cached_broken_service, NetworkIsolationKey()));
   FastForwardBy(base::TimeDelta::FromInternalValue(1));
-  EXPECT_FALSE(
-      http_server_props_->IsAlternativeServiceBroken(cached_broken_service));
+  EXPECT_FALSE(http_server_props_->IsAlternativeServiceBroken(
+      cached_broken_service, NetworkIsolationKey()));
   // Make sure |cached_broken_service2| has the right expiration delay when
   // marked broken.
-  http_server_props_->MarkAlternativeServiceBroken(cached_broken_service2);
+  http_server_props_->MarkAlternativeServiceBroken(cached_broken_service2,
+                                                   NetworkIsolationKey());
   EXPECT_NE(0u, GetPendingMainThreadTaskCount());
   FastForwardBy(base::TimeDelta::FromMinutes(10) -
                 base::TimeDelta::FromInternalValue(1));
-  EXPECT_TRUE(
-      http_server_props_->IsAlternativeServiceBroken(cached_broken_service2));
+  EXPECT_TRUE(http_server_props_->IsAlternativeServiceBroken(
+      cached_broken_service2, NetworkIsolationKey()));
   FastForwardBy(base::TimeDelta::FromInternalValue(1));
-  EXPECT_FALSE(
-      http_server_props_->IsAlternativeServiceBroken(cached_broken_service2));
+  EXPECT_FALSE(http_server_props_->IsAlternativeServiceBroken(
+      cached_broken_service2, NetworkIsolationKey()));
 
   //
   // Verify ServerNetworkStats.
@@ -2389,4 +2404,258 @@
           .size());
 }
 
+// Tests a full round trip with a NetworkIsolationKey, using the
+// HttpServerProperties interface and setting alternative services as broken.
+TEST_F(HttpServerPropertiesManagerTest,
+       NetworkIsolationKeyBrokenAltServiceRoundTrip) {
+  const url::Origin kOrigin1 = url::Origin::Create(GURL("https://foo1.test/"));
+  const url::Origin kOrigin2 = url::Origin::Create(GURL("https://foo2.test/"));
+
+  const AlternativeService kAlternativeService1(kProtoHTTP2,
+                                                "alt.service1.test", 443);
+  const AlternativeService kAlternativeService2(kProtoHTTP2,
+                                                "alt.service2.test", 443);
+
+  for (auto save_network_isolation_key_mode : kNetworkIsolationKeyModes) {
+    SCOPED_TRACE(static_cast<int>(save_network_isolation_key_mode));
+
+    // Save prefs using |save_network_isolation_key_mode|.
+    std::unique_ptr<base::DictionaryValue> saved_value;
+    {
+      // Configure the the feature.
+      std::unique_ptr<base::test::ScopedFeatureList> feature_list =
+          SetNetworkIsolationKeyMode(save_network_isolation_key_mode);
+
+      // The NetworkIsolationKey constructor checks the field trial state, so
+      // need to create the keys only after setting up the field trials.
+      const NetworkIsolationKey kNetworkIsolationKey1(kOrigin1, kOrigin1);
+      const NetworkIsolationKey kNetworkIsolationKey2(kOrigin2, kOrigin2);
+
+      // Create and initialize an HttpServerProperties, must be done after
+      // setting the feature.
+      std::unique_ptr<MockPrefDelegate> pref_delegate =
+          std::make_unique<MockPrefDelegate>();
+      MockPrefDelegate* unowned_pref_delegate = pref_delegate.get();
+      std::unique_ptr<HttpServerProperties> properties =
+          std::make_unique<HttpServerProperties>(std::move(pref_delegate),
+                                                 /*net_log=*/nullptr,
+                                                 GetMockTickClock());
+      unowned_pref_delegate->InitializePrefs(base::DictionaryValue());
+
+      // Set kAlternativeService1 as broken in the context of
+      // kNetworkIsolationKey1, and kAlternativeService2 as broken in the
+      // context of the empty NetworkIsolationKey2, and recently broken in the
+      // context of the empty NetworkIsolationKey.
+      properties->MarkAlternativeServiceBroken(kAlternativeService1,
+                                               kNetworkIsolationKey1);
+      properties->MarkAlternativeServiceRecentlyBroken(kAlternativeService2,
+                                                       NetworkIsolationKey());
+      properties->MarkAlternativeServiceBroken(kAlternativeService2,
+                                               kNetworkIsolationKey2);
+
+      // Verify values were set.
+      EXPECT_TRUE(properties->IsAlternativeServiceBroken(
+          kAlternativeService1, kNetworkIsolationKey1));
+      EXPECT_TRUE(properties->WasAlternativeServiceRecentlyBroken(
+          kAlternativeService1, kNetworkIsolationKey1));
+      // When NetworkIsolationKeys are disabled, kAlternativeService2 is marked
+      // as broken regardless of the values passed to NetworkIsolationKey's
+      // constructor.
+      EXPECT_EQ(
+          save_network_isolation_key_mode == NetworkIsolationKeyMode::kDisabled,
+          properties->IsAlternativeServiceBroken(kAlternativeService2,
+                                                 NetworkIsolationKey()));
+      EXPECT_TRUE(properties->WasAlternativeServiceRecentlyBroken(
+          kAlternativeService2, NetworkIsolationKey()));
+      EXPECT_TRUE(properties->IsAlternativeServiceBroken(
+          kAlternativeService2, kNetworkIsolationKey2));
+      EXPECT_TRUE(properties->WasAlternativeServiceRecentlyBroken(
+          kAlternativeService2, kNetworkIsolationKey2));
+
+      // If NetworkIsolationKeys are enabled, there should be no
+      // cross-contamination of the NetworkIsolationKeys.
+      if (save_network_isolation_key_mode !=
+          NetworkIsolationKeyMode::kDisabled) {
+        EXPECT_FALSE(properties->IsAlternativeServiceBroken(
+            kAlternativeService2, kNetworkIsolationKey1));
+        EXPECT_FALSE(properties->WasAlternativeServiceRecentlyBroken(
+            kAlternativeService2, kNetworkIsolationKey1));
+        EXPECT_FALSE(properties->IsAlternativeServiceBroken(
+            kAlternativeService1, NetworkIsolationKey()));
+        EXPECT_FALSE(properties->WasAlternativeServiceRecentlyBroken(
+            kAlternativeService1, NetworkIsolationKey()));
+        EXPECT_FALSE(properties->IsAlternativeServiceBroken(
+            kAlternativeService1, kNetworkIsolationKey2));
+        EXPECT_FALSE(properties->WasAlternativeServiceRecentlyBroken(
+            kAlternativeService1, kNetworkIsolationKey2));
+      }
+
+      // Wait until the data's been written to prefs, and then create a copy of
+      // the prefs data.
+      FastForwardBy(HttpServerProperties::GetUpdatePrefsDelayForTesting());
+      saved_value =
+          unowned_pref_delegate->GetServerProperties()->CreateDeepCopy();
+    }
+
+    // Now try and load the data in each of the feature modes.
+    for (auto load_network_isolation_key_mode : kNetworkIsolationKeyModes) {
+      SCOPED_TRACE(static_cast<int>(load_network_isolation_key_mode));
+
+      std::unique_ptr<base::test::ScopedFeatureList> feature_list =
+          SetNetworkIsolationKeyMode(load_network_isolation_key_mode);
+
+      // The NetworkIsolationKey constructor checks the field trial state, so
+      // need to create the keys only after setting up the field trials.
+      const NetworkIsolationKey kNetworkIsolationKey1(kOrigin1, kOrigin1);
+      const NetworkIsolationKey kNetworkIsolationKey2(kOrigin2, kOrigin2);
+
+      // Create a new HttpServerProperties, loading the data from before.
+      std::unique_ptr<MockPrefDelegate> pref_delegate =
+          std::make_unique<MockPrefDelegate>();
+      MockPrefDelegate* unowned_pref_delegate = pref_delegate.get();
+      std::unique_ptr<HttpServerProperties> properties =
+          std::make_unique<HttpServerProperties>(std::move(pref_delegate),
+                                                 /*net_log=*/nullptr,
+                                                 GetMockTickClock());
+      unowned_pref_delegate->InitializePrefs(*saved_value);
+
+      if (save_network_isolation_key_mode ==
+          NetworkIsolationKeyMode::kDisabled) {
+        // If NetworkIsolationKey was disabled when saving, it was saved with an
+        // empty NetworkIsolationKey, which should always be loaded
+        // successfully. This is needed to continue to support consumers that
+        // don't use NetworkIsolationKeys.
+        EXPECT_TRUE(properties->IsAlternativeServiceBroken(
+            kAlternativeService1, NetworkIsolationKey()));
+        EXPECT_TRUE(properties->WasAlternativeServiceRecentlyBroken(
+            kAlternativeService1, NetworkIsolationKey()));
+        EXPECT_TRUE(properties->IsAlternativeServiceBroken(
+            kAlternativeService2, NetworkIsolationKey()));
+        EXPECT_TRUE(properties->WasAlternativeServiceRecentlyBroken(
+            kAlternativeService2, NetworkIsolationKey()));
+      } else if (save_network_isolation_key_mode ==
+                 load_network_isolation_key_mode) {
+        // If the save and load modes are the same, the load should succeed, and
+        // the network isolation keys should match.
+        EXPECT_TRUE(properties->IsAlternativeServiceBroken(
+            kAlternativeService1, kNetworkIsolationKey1));
+        EXPECT_TRUE(properties->WasAlternativeServiceRecentlyBroken(
+            kAlternativeService1, kNetworkIsolationKey1));
+        // When NetworkIsolationKeys are disabled, kAlternativeService2 is
+        // marked as broken regardless of the values passed to
+        // NetworkIsolationKey's constructor.
+        EXPECT_EQ(save_network_isolation_key_mode ==
+                      NetworkIsolationKeyMode::kDisabled,
+                  properties->IsAlternativeServiceBroken(
+                      kAlternativeService2, NetworkIsolationKey()));
+        EXPECT_TRUE(properties->WasAlternativeServiceRecentlyBroken(
+            kAlternativeService2, NetworkIsolationKey()));
+        EXPECT_TRUE(properties->IsAlternativeServiceBroken(
+            kAlternativeService2, kNetworkIsolationKey2));
+        EXPECT_TRUE(properties->WasAlternativeServiceRecentlyBroken(
+            kAlternativeService2, kNetworkIsolationKey2));
+
+        // If NetworkIsolationKeys are enabled, there should be no
+        // cross-contamination of the NetworkIsolationKeys.
+        if (save_network_isolation_key_mode !=
+            NetworkIsolationKeyMode::kDisabled) {
+          EXPECT_FALSE(properties->IsAlternativeServiceBroken(
+              kAlternativeService2, kNetworkIsolationKey1));
+          EXPECT_FALSE(properties->WasAlternativeServiceRecentlyBroken(
+              kAlternativeService2, kNetworkIsolationKey1));
+          EXPECT_FALSE(properties->IsAlternativeServiceBroken(
+              kAlternativeService1, NetworkIsolationKey()));
+          EXPECT_FALSE(properties->WasAlternativeServiceRecentlyBroken(
+              kAlternativeService1, NetworkIsolationKey()));
+          EXPECT_FALSE(properties->IsAlternativeServiceBroken(
+              kAlternativeService1, kNetworkIsolationKey2));
+          EXPECT_FALSE(properties->WasAlternativeServiceRecentlyBroken(
+              kAlternativeService1, kNetworkIsolationKey2));
+        }
+      } else {
+        // Otherwise, only the values set with an empty NetworkIsolationKey
+        // should have been loaded successfully.
+        EXPECT_FALSE(properties->IsAlternativeServiceBroken(
+            kAlternativeService1, kNetworkIsolationKey1));
+        EXPECT_FALSE(properties->WasAlternativeServiceRecentlyBroken(
+            kAlternativeService1, kNetworkIsolationKey1));
+        EXPECT_FALSE(properties->IsAlternativeServiceBroken(
+            kAlternativeService2, NetworkIsolationKey()));
+        EXPECT_TRUE(properties->WasAlternativeServiceRecentlyBroken(
+            kAlternativeService2, NetworkIsolationKey()));
+        EXPECT_FALSE(properties->IsAlternativeServiceBroken(
+            kAlternativeService2, kNetworkIsolationKey2));
+        // If the load mode is NetworkIsolationKeyMode::kDisabled,
+        // kNetworkIsolationKey2 is NetworkIsolationKey().
+        EXPECT_EQ(load_network_isolation_key_mode ==
+                      NetworkIsolationKeyMode::kDisabled,
+                  properties->WasAlternativeServiceRecentlyBroken(
+                      kAlternativeService2, kNetworkIsolationKey2));
+
+        // There should be no cross-contamination of NetworkIsolationKeys, if
+        // NetworkIsolationKeys are enabled.
+        if (load_network_isolation_key_mode !=
+            NetworkIsolationKeyMode::kDisabled) {
+          EXPECT_FALSE(properties->IsAlternativeServiceBroken(
+              kAlternativeService2, kNetworkIsolationKey1));
+          EXPECT_FALSE(properties->WasAlternativeServiceRecentlyBroken(
+              kAlternativeService2, kNetworkIsolationKey1));
+          EXPECT_FALSE(properties->IsAlternativeServiceBroken(
+              kAlternativeService1, NetworkIsolationKey()));
+          EXPECT_FALSE(properties->WasAlternativeServiceRecentlyBroken(
+              kAlternativeService1, NetworkIsolationKey()));
+          EXPECT_FALSE(properties->IsAlternativeServiceBroken(
+              kAlternativeService1, kNetworkIsolationKey2));
+          EXPECT_FALSE(properties->WasAlternativeServiceRecentlyBroken(
+              kAlternativeService1, kNetworkIsolationKey2));
+        }
+      }
+    }
+  }
+}
+
+// Make sure broken alt services with opaque origins aren't saved.
+TEST_F(HttpServerPropertiesManagerTest,
+       NetworkIsolationKeyBrokenAltServiceOpaqueOrigin) {
+  const url::Origin kOpaqueOrigin =
+      url::Origin::Create(GURL("data:text/plain,Hello World"));
+  const NetworkIsolationKey kNetworkIsolationKey(kOpaqueOrigin, kOpaqueOrigin);
+  const AlternativeService kAlternativeService(kProtoHTTP2, "alt.service1.test",
+                                               443);
+
+  base::test::ScopedFeatureList feature_list;
+  feature_list.InitAndEnableFeature(
+      features::kPartitionHttpServerPropertiesByNetworkIsolationKey);
+
+  // Create and initialize an HttpServerProperties, must be done after
+  // setting the feature.
+  std::unique_ptr<MockPrefDelegate> pref_delegate =
+      std::make_unique<MockPrefDelegate>();
+  MockPrefDelegate* unowned_pref_delegate = pref_delegate.get();
+  std::unique_ptr<HttpServerProperties> properties =
+      std::make_unique<HttpServerProperties>(std::move(pref_delegate),
+                                             /*net_log=*/nullptr,
+                                             GetMockTickClock());
+  unowned_pref_delegate->InitializePrefs(base::DictionaryValue());
+
+  properties->MarkAlternativeServiceBroken(kAlternativeService,
+                                           kNetworkIsolationKey);
+
+  // Verify values were set.
+  EXPECT_TRUE(properties->IsAlternativeServiceBroken(kAlternativeService,
+                                                     kNetworkIsolationKey));
+  EXPECT_TRUE(properties->WasAlternativeServiceRecentlyBroken(
+      kAlternativeService, kNetworkIsolationKey));
+
+  // Wait until the data's been written to prefs, and then create a copy of
+  // the prefs data.
+  FastForwardBy(HttpServerProperties::GetUpdatePrefsDelayForTesting());
+
+  // No information should have been saved to prefs.
+  std::string preferences_json;
+  base::JSONWriter::Write(*unowned_pref_delegate->GetServerProperties(),
+                          &preferences_json);
+  EXPECT_EQ("{\"servers\":[],\"version\":5}", preferences_json);
+}
+
 }  // namespace net
diff --git a/net/http/http_server_properties_unittest.cc b/net/http/http_server_properties_unittest.cc
index 2eca2e4..8b58814 100644
--- a/net/http/http_server_properties_unittest.cc
+++ b/net/http/http_server_properties_unittest.cc
@@ -44,17 +44,21 @@
   static void AddBrokenAlternativeServiceWithExpirationTime(
       HttpServerProperties* impl,
       const AlternativeService& alternative_service,
-      base::TimeTicks when) {
+      base::TimeTicks when,
+      const NetworkIsolationKey network_isolation_key = NetworkIsolationKey()) {
+    BrokenAlternativeService broken_alternative_service(
+        alternative_service, network_isolation_key,
+        true /* use_network_isolation_key */);
     BrokenAlternativeServiceList::iterator unused_it;
     impl->broken_alternative_services_.AddToBrokenListAndMap(
-        alternative_service, when, &unused_it);
+        broken_alternative_service, when, &unused_it);
     auto it =
         impl->broken_alternative_services_.recently_broken_alternative_services_
-            .Get(alternative_service);
+            .Get(broken_alternative_service);
     if (it == impl->broken_alternative_services_
                   .recently_broken_alternative_services_.end()) {
       impl->broken_alternative_services_.recently_broken_alternative_services_
-          .Put(alternative_service, 1);
+          .Put(broken_alternative_service, 1);
     } else {
       it->second++;
     }
@@ -88,6 +92,11 @@
               &test_clock_) {
     // Set |test_clock_| to some random time.
     test_clock_.Advance(base::TimeDelta::FromSeconds(12345));
+
+    url::Origin origin1 = url::Origin::Create(GURL("https://foo.test/"));
+    network_isolation_key1_ = NetworkIsolationKey(origin1, origin1);
+    url::Origin origin2 = url::Origin::Create(GURL("https://bar.test/"));
+    network_isolation_key2_ = NetworkIsolationKey(origin2, origin2);
   }
 
   bool HasAlternativeService(const url::SchemeHostPort& origin,
@@ -118,6 +127,11 @@
   const base::TickClock* test_tick_clock_;
   base::SimpleTestClock test_clock_;
 
+  // Two different non-empty network isolation keys for use in tests that need
+  // them.
+  NetworkIsolationKey network_isolation_key1_;
+  NetworkIsolationKey network_isolation_key2_;
+
   HttpServerProperties impl_;
 };
 
@@ -218,27 +232,27 @@
 
 TEST_F(HttpServerPropertiesTest, SetSupportsSpdyWithNetworkIsolationKey) {
   const url::SchemeHostPort kServer("https", "foo.test", 443);
-  const url::Origin kOrigin = url::Origin::Create(GURL("https://foo.test/"));
-  const NetworkIsolationKey kNetworkIsolationKey(kOrigin, kOrigin);
 
-  EXPECT_FALSE(impl_.GetSupportsSpdy(kServer, kNetworkIsolationKey));
-  EXPECT_FALSE(impl_.SupportsRequestPriority(kServer, kNetworkIsolationKey));
+  EXPECT_FALSE(impl_.GetSupportsSpdy(kServer, network_isolation_key1_));
+  EXPECT_FALSE(impl_.SupportsRequestPriority(kServer, network_isolation_key1_));
   EXPECT_FALSE(impl_.GetSupportsSpdy(kServer, NetworkIsolationKey()));
   EXPECT_FALSE(impl_.SupportsRequestPriority(kServer, NetworkIsolationKey()));
 
   // Without network isolation keys enabled for HttpServerProperties, passing in
   // a NetworkIsolationKey should have no effect on behavior.
   for (const auto network_isolation_key_to_set :
-       {NetworkIsolationKey(), kNetworkIsolationKey}) {
+       {NetworkIsolationKey(), network_isolation_key1_}) {
     impl_.SetSupportsSpdy(kServer, network_isolation_key_to_set, true);
-    EXPECT_TRUE(impl_.GetSupportsSpdy(kServer, kNetworkIsolationKey));
-    EXPECT_TRUE(impl_.SupportsRequestPriority(kServer, kNetworkIsolationKey));
+    EXPECT_TRUE(impl_.GetSupportsSpdy(kServer, network_isolation_key1_));
+    EXPECT_TRUE(
+        impl_.SupportsRequestPriority(kServer, network_isolation_key1_));
     EXPECT_TRUE(impl_.GetSupportsSpdy(kServer, NetworkIsolationKey()));
     EXPECT_TRUE(impl_.SupportsRequestPriority(kServer, NetworkIsolationKey()));
 
     impl_.SetSupportsSpdy(kServer, network_isolation_key_to_set, false);
-    EXPECT_FALSE(impl_.GetSupportsSpdy(kServer, kNetworkIsolationKey));
-    EXPECT_FALSE(impl_.SupportsRequestPriority(kServer, kNetworkIsolationKey));
+    EXPECT_FALSE(impl_.GetSupportsSpdy(kServer, network_isolation_key1_));
+    EXPECT_FALSE(
+        impl_.SupportsRequestPriority(kServer, network_isolation_key1_));
     EXPECT_FALSE(impl_.GetSupportsSpdy(kServer, NetworkIsolationKey()));
     EXPECT_FALSE(impl_.SupportsRequestPriority(kServer, NetworkIsolationKey()));
   }
@@ -255,41 +269,41 @@
                                   nullptr /* net_log */, test_tick_clock_,
                                   &test_clock_);
 
-  EXPECT_FALSE(properties.GetSupportsSpdy(kServer, kNetworkIsolationKey));
+  EXPECT_FALSE(properties.GetSupportsSpdy(kServer, network_isolation_key1_));
   EXPECT_FALSE(
-      properties.SupportsRequestPriority(kServer, kNetworkIsolationKey));
+      properties.SupportsRequestPriority(kServer, network_isolation_key1_));
   EXPECT_FALSE(properties.GetSupportsSpdy(kServer, NetworkIsolationKey()));
   EXPECT_FALSE(
       properties.SupportsRequestPriority(kServer, NetworkIsolationKey()));
 
-  properties.SetSupportsSpdy(kServer, kNetworkIsolationKey, true);
-  EXPECT_TRUE(properties.GetSupportsSpdy(kServer, kNetworkIsolationKey));
+  properties.SetSupportsSpdy(kServer, network_isolation_key1_, true);
+  EXPECT_TRUE(properties.GetSupportsSpdy(kServer, network_isolation_key1_));
   EXPECT_TRUE(
-      properties.SupportsRequestPriority(kServer, kNetworkIsolationKey));
+      properties.SupportsRequestPriority(kServer, network_isolation_key1_));
   EXPECT_FALSE(properties.GetSupportsSpdy(kServer, NetworkIsolationKey()));
   EXPECT_FALSE(
       properties.SupportsRequestPriority(kServer, NetworkIsolationKey()));
 
   properties.SetSupportsSpdy(kServer, NetworkIsolationKey(), true);
-  EXPECT_TRUE(properties.GetSupportsSpdy(kServer, kNetworkIsolationKey));
+  EXPECT_TRUE(properties.GetSupportsSpdy(kServer, network_isolation_key1_));
   EXPECT_TRUE(
-      properties.SupportsRequestPriority(kServer, kNetworkIsolationKey));
+      properties.SupportsRequestPriority(kServer, network_isolation_key1_));
   EXPECT_TRUE(properties.GetSupportsSpdy(kServer, NetworkIsolationKey()));
   EXPECT_TRUE(
       properties.SupportsRequestPriority(kServer, NetworkIsolationKey()));
 
-  properties.SetSupportsSpdy(kServer, kNetworkIsolationKey, false);
-  EXPECT_FALSE(properties.GetSupportsSpdy(kServer, kNetworkIsolationKey));
+  properties.SetSupportsSpdy(kServer, network_isolation_key1_, false);
+  EXPECT_FALSE(properties.GetSupportsSpdy(kServer, network_isolation_key1_));
   EXPECT_FALSE(
-      properties.SupportsRequestPriority(kServer, kNetworkIsolationKey));
+      properties.SupportsRequestPriority(kServer, network_isolation_key1_));
   EXPECT_TRUE(properties.GetSupportsSpdy(kServer, NetworkIsolationKey()));
   EXPECT_TRUE(
       properties.SupportsRequestPriority(kServer, NetworkIsolationKey()));
 
   properties.SetSupportsSpdy(kServer, NetworkIsolationKey(), false);
-  EXPECT_FALSE(properties.GetSupportsSpdy(kServer, kNetworkIsolationKey));
+  EXPECT_FALSE(properties.GetSupportsSpdy(kServer, network_isolation_key1_));
   EXPECT_FALSE(
-      properties.SupportsRequestPriority(kServer, kNetworkIsolationKey));
+      properties.SupportsRequestPriority(kServer, network_isolation_key1_));
   EXPECT_FALSE(properties.GetSupportsSpdy(kServer, NetworkIsolationKey()));
   EXPECT_FALSE(
       properties.SupportsRequestPriority(kServer, NetworkIsolationKey()));
@@ -677,29 +691,28 @@
       {AlternativeServiceInfo::CreateHttp2AlternativeServiceInfo(
           AlternativeService(kProtoHTTP2, "foo", 443),
           base::Time::Now() + base::TimeDelta::FromDays(1) /* expiration */)});
-  const url::Origin kOrigin = url::Origin::Create(GURL("https://foo.test/"));
-  const NetworkIsolationKey kNetworkIsolationKey(kOrigin, kOrigin);
 
-  EXPECT_TRUE(
-      impl_.GetAlternativeServiceInfos(kServer, kNetworkIsolationKey).empty());
+  EXPECT_TRUE(impl_.GetAlternativeServiceInfos(kServer, network_isolation_key1_)
+                  .empty());
   EXPECT_TRUE(
       impl_.GetAlternativeServiceInfos(kServer, NetworkIsolationKey()).empty());
 
   // Without network isolation keys enabled for HttpServerProperties, passing in
   // a NetworkIsolationKey should have no effect on behavior.
   for (const auto network_isolation_key_to_set :
-       {NetworkIsolationKey(), kNetworkIsolationKey}) {
+       {NetworkIsolationKey(), network_isolation_key1_}) {
     impl_.SetAlternativeServices(kServer, network_isolation_key_to_set,
                                  kAlternativeServices);
-    EXPECT_EQ(kAlternativeServices,
-              impl_.GetAlternativeServiceInfos(kServer, kNetworkIsolationKey));
+    EXPECT_EQ(kAlternativeServices, impl_.GetAlternativeServiceInfos(
+                                        kServer, network_isolation_key1_));
     EXPECT_EQ(kAlternativeServices,
               impl_.GetAlternativeServiceInfos(kServer, NetworkIsolationKey()));
 
     impl_.SetAlternativeServices(kServer, network_isolation_key_to_set,
                                  AlternativeServiceInfoVector());
-    EXPECT_TRUE(impl_.GetAlternativeServiceInfos(kServer, kNetworkIsolationKey)
-                    .empty());
+    EXPECT_TRUE(
+        impl_.GetAlternativeServiceInfos(kServer, network_isolation_key1_)
+            .empty());
     EXPECT_TRUE(impl_.GetAlternativeServiceInfos(kServer, NetworkIsolationKey())
                     .empty());
   }
@@ -716,10 +729,10 @@
                                   nullptr /* net_log */, test_tick_clock_,
                                   &test_clock_);
 
-  properties.SetAlternativeServices(kServer, kNetworkIsolationKey,
+  properties.SetAlternativeServices(kServer, network_isolation_key1_,
                                     kAlternativeServices);
   EXPECT_EQ(kAlternativeServices, properties.GetAlternativeServiceInfos(
-                                      kServer, kNetworkIsolationKey));
+                                      kServer, network_isolation_key1_));
   EXPECT_TRUE(
       properties.GetAlternativeServiceInfos(kServer, NetworkIsolationKey())
           .empty());
@@ -727,14 +740,14 @@
   properties.SetAlternativeServices(kServer, NetworkIsolationKey(),
                                     kAlternativeServices);
   EXPECT_EQ(kAlternativeServices, properties.GetAlternativeServiceInfos(
-                                      kServer, kNetworkIsolationKey));
+                                      kServer, network_isolation_key1_));
   EXPECT_EQ(kAlternativeServices, properties.GetAlternativeServiceInfos(
                                       kServer, NetworkIsolationKey()));
 
-  properties.SetAlternativeServices(kServer, kNetworkIsolationKey,
+  properties.SetAlternativeServices(kServer, network_isolation_key1_,
                                     AlternativeServiceInfoVector());
   EXPECT_TRUE(
-      properties.GetAlternativeServiceInfos(kServer, kNetworkIsolationKey)
+      properties.GetAlternativeServiceInfos(kServer, network_isolation_key1_)
           .empty());
   EXPECT_EQ(kAlternativeServices, properties.GetAlternativeServiceInfos(
                                       kServer, NetworkIsolationKey()));
@@ -742,7 +755,7 @@
   properties.SetAlternativeServices(kServer, NetworkIsolationKey(),
                                     AlternativeServiceInfoVector());
   EXPECT_TRUE(
-      properties.GetAlternativeServiceInfos(kServer, kNetworkIsolationKey)
+      properties.GetAlternativeServiceInfos(kServer, network_isolation_key1_)
           .empty());
   EXPECT_TRUE(
       properties.GetAlternativeServiceInfos(kServer, NetworkIsolationKey())
@@ -759,14 +772,15 @@
   const AlternativeService alternative_service_with_foo_hostname(kProtoHTTP2,
                                                                  "foo", 1234);
   SetAlternativeService(server, alternative_service_with_empty_hostname);
-  impl_.MarkAlternativeServiceBroken(alternative_service_with_foo_hostname);
+  impl_.MarkAlternativeServiceBroken(alternative_service_with_foo_hostname,
+                                     NetworkIsolationKey());
 
   std::unique_ptr<HttpServerProperties::ServerInfoMap> server_info_map =
       std::make_unique<HttpServerProperties::ServerInfoMap>();
   impl_.OnServerInfoLoadedForTesting(std::move(server_info_map));
 
-  EXPECT_TRUE(
-      impl_.IsAlternativeServiceBroken(alternative_service_with_foo_hostname));
+  EXPECT_TRUE(impl_.IsAlternativeServiceBroken(
+      alternative_service_with_foo_hostname, NetworkIsolationKey()));
   const AlternativeServiceInfoVector alternative_service_info_vector =
       impl_.GetAlternativeServiceInfos(server, NetworkIsolationKey());
   ASSERT_EQ(1u, alternative_service_info_vector.size());
@@ -926,16 +940,19 @@
   ASSERT_EQ(1u, alternative_service_info_vector.size());
   EXPECT_EQ(alternative_service1,
             alternative_service_info_vector[0].alternative_service());
-  EXPECT_FALSE(impl_.IsAlternativeServiceBroken(alternative_service1));
+  EXPECT_FALSE(impl_.IsAlternativeServiceBroken(alternative_service1,
+                                                NetworkIsolationKey()));
 
   // GetAlternativeServiceInfos should return the broken alternative service.
-  impl_.MarkAlternativeServiceBroken(alternative_service1);
+  impl_.MarkAlternativeServiceBroken(alternative_service1,
+                                     NetworkIsolationKey());
   alternative_service_info_vector =
       impl_.GetAlternativeServiceInfos(test_server, NetworkIsolationKey());
   ASSERT_EQ(1u, alternative_service_info_vector.size());
   EXPECT_EQ(alternative_service1,
             alternative_service_info_vector[0].alternative_service());
-  EXPECT_TRUE(impl_.IsAlternativeServiceBroken(alternative_service1));
+  EXPECT_TRUE(impl_.IsAlternativeServiceBroken(alternative_service1,
+                                               NetworkIsolationKey()));
 
   // SetAlternativeServices should add a broken alternative service to the map.
   AlternativeServiceInfoVector alternative_service_info_vector2;
@@ -956,8 +973,10 @@
             alternative_service_info_vector[0].alternative_service());
   EXPECT_EQ(alternative_service2,
             alternative_service_info_vector[1].alternative_service());
-  EXPECT_TRUE(impl_.IsAlternativeServiceBroken(alternative_service1));
-  EXPECT_FALSE(impl_.IsAlternativeServiceBroken(alternative_service2));
+  EXPECT_TRUE(impl_.IsAlternativeServiceBroken(alternative_service1,
+                                               NetworkIsolationKey()));
+  EXPECT_FALSE(impl_.IsAlternativeServiceBroken(alternative_service2,
+                                                NetworkIsolationKey()));
 
   // SetAlternativeService should add a broken alternative service to the map.
   SetAlternativeService(test_server, alternative_service1);
@@ -966,7 +985,8 @@
   ASSERT_EQ(1u, alternative_service_info_vector.size());
   EXPECT_EQ(alternative_service1,
             alternative_service_info_vector[0].alternative_service());
-  EXPECT_TRUE(impl_.IsAlternativeServiceBroken(alternative_service1));
+  EXPECT_TRUE(impl_.IsAlternativeServiceBroken(alternative_service1,
+                                               NetworkIsolationKey()));
 }
 
 TEST_F(AlternateProtocolServerPropertiesTest,
@@ -979,18 +999,20 @@
   ASSERT_EQ(1u, alternative_service_info_vector.size());
   EXPECT_EQ(alternative_service1,
             alternative_service_info_vector[0].alternative_service());
-  EXPECT_FALSE(impl_.IsAlternativeServiceBroken(alternative_service1));
+  EXPECT_FALSE(impl_.IsAlternativeServiceBroken(alternative_service1,
+                                                NetworkIsolationKey()));
 
   // Mark the alternative service as broken until the default network changes.
   impl_.MarkAlternativeServiceBrokenUntilDefaultNetworkChanges(
-      alternative_service1);
+      alternative_service1, NetworkIsolationKey());
   // The alternative service should be persisted and marked as broken.
   alternative_service_info_vector =
       impl_.GetAlternativeServiceInfos(test_server, NetworkIsolationKey());
   ASSERT_EQ(1u, alternative_service_info_vector.size());
   EXPECT_EQ(alternative_service1,
             alternative_service_info_vector[0].alternative_service());
-  EXPECT_TRUE(impl_.IsAlternativeServiceBroken(alternative_service1));
+  EXPECT_TRUE(impl_.IsAlternativeServiceBroken(alternative_service1,
+                                               NetworkIsolationKey()));
 
   // SetAlternativeServices should add a broken alternative service to the map.
   AlternativeServiceInfoVector alternative_service_info_vector2;
@@ -1011,8 +1033,10 @@
             alternative_service_info_vector[0].alternative_service());
   EXPECT_EQ(alternative_service2,
             alternative_service_info_vector[1].alternative_service());
-  EXPECT_TRUE(impl_.IsAlternativeServiceBroken(alternative_service1));
-  EXPECT_FALSE(impl_.IsAlternativeServiceBroken(alternative_service2));
+  EXPECT_TRUE(impl_.IsAlternativeServiceBroken(alternative_service1,
+                                               NetworkIsolationKey()));
+  EXPECT_FALSE(impl_.IsAlternativeServiceBroken(alternative_service2,
+                                                NetworkIsolationKey()));
 
   // SetAlternativeService should add a broken alternative service to the map.
   SetAlternativeService(test_server, alternative_service1);
@@ -1021,7 +1045,8 @@
   ASSERT_EQ(1u, alternative_service_info_vector.size());
   EXPECT_EQ(alternative_service1,
             alternative_service_info_vector[0].alternative_service());
-  EXPECT_TRUE(impl_.IsAlternativeServiceBroken(alternative_service1));
+  EXPECT_TRUE(impl_.IsAlternativeServiceBroken(alternative_service1,
+                                               NetworkIsolationKey()));
 }
 
 TEST_F(AlternateProtocolServerPropertiesTest, MaxAge) {
@@ -1190,8 +1215,10 @@
             alternative_service_info_vector[0].alternative_service());
 
   const AlternativeService broken_alternative_service(kProtoHTTP2, "foo", 443);
-  impl_.MarkAlternativeServiceBroken(broken_alternative_service);
-  EXPECT_TRUE(impl_.IsAlternativeServiceBroken(broken_alternative_service));
+  impl_.MarkAlternativeServiceBroken(broken_alternative_service,
+                                     NetworkIsolationKey());
+  EXPECT_TRUE(impl_.IsAlternativeServiceBroken(broken_alternative_service,
+                                               NetworkIsolationKey()));
 
   SetAlternativeService(test_server, broken_alternative_service);
   alternative_service_info_vector =
@@ -1199,21 +1226,134 @@
   ASSERT_EQ(1u, alternative_service_info_vector.size());
   EXPECT_EQ(broken_alternative_service,
             alternative_service_info_vector[0].alternative_service());
-  EXPECT_TRUE(impl_.IsAlternativeServiceBroken(broken_alternative_service));
+  EXPECT_TRUE(impl_.IsAlternativeServiceBroken(broken_alternative_service,
+                                               NetworkIsolationKey()));
 }
 
 TEST_F(AlternateProtocolServerPropertiesTest, ClearBroken) {
   url::SchemeHostPort test_server("http", "foo", 80);
   const AlternativeService alternative_service(kProtoHTTP2, "foo", 443);
   SetAlternativeService(test_server, alternative_service);
-  impl_.MarkAlternativeServiceBroken(alternative_service);
+  impl_.MarkAlternativeServiceBroken(alternative_service,
+                                     NetworkIsolationKey());
   ASSERT_TRUE(HasAlternativeService(test_server, NetworkIsolationKey()));
-  EXPECT_TRUE(impl_.IsAlternativeServiceBroken(alternative_service));
+  EXPECT_TRUE(impl_.IsAlternativeServiceBroken(alternative_service,
+                                               NetworkIsolationKey()));
   // SetAlternativeServices should leave a broken alternative service marked
   // as such.
   impl_.SetAlternativeServices(test_server, NetworkIsolationKey(),
                                AlternativeServiceInfoVector());
-  EXPECT_TRUE(impl_.IsAlternativeServiceBroken(alternative_service));
+  EXPECT_TRUE(impl_.IsAlternativeServiceBroken(alternative_service,
+                                               NetworkIsolationKey()));
+}
+
+TEST_F(AlternateProtocolServerPropertiesTest,
+       MarkBrokenWithNetworkIsolationKey) {
+  url::SchemeHostPort server("http", "foo", 80);
+  const AlternativeService alternative_service(kProtoHTTP2, "foo", 443);
+  const base::Time expiration =
+      test_clock_.Now() + base::TimeDelta::FromDays(1);
+
+  // Without NetworkIsolationKeys enabled, the NetworkIsolationKey parameter
+  // should be ignored.
+  impl_.SetHttp2AlternativeService(server, network_isolation_key1_,
+                                   alternative_service, expiration);
+  EXPECT_FALSE(impl_.IsAlternativeServiceBroken(alternative_service,
+                                                network_isolation_key1_));
+  EXPECT_FALSE(impl_.WasAlternativeServiceRecentlyBroken(
+      alternative_service, network_isolation_key1_));
+  EXPECT_FALSE(impl_.IsAlternativeServiceBroken(alternative_service,
+                                                network_isolation_key2_));
+  EXPECT_FALSE(impl_.WasAlternativeServiceRecentlyBroken(
+      alternative_service, network_isolation_key2_));
+
+  impl_.MarkAlternativeServiceBroken(alternative_service,
+                                     network_isolation_key1_);
+  EXPECT_TRUE(impl_.IsAlternativeServiceBroken(alternative_service,
+                                               network_isolation_key1_));
+  EXPECT_TRUE(impl_.WasAlternativeServiceRecentlyBroken(
+      alternative_service, network_isolation_key1_));
+  EXPECT_TRUE(impl_.IsAlternativeServiceBroken(alternative_service,
+                                               network_isolation_key2_));
+  EXPECT_TRUE(impl_.WasAlternativeServiceRecentlyBroken(
+      alternative_service, network_isolation_key2_));
+
+  impl_.ConfirmAlternativeService(alternative_service, network_isolation_key2_);
+  EXPECT_FALSE(impl_.IsAlternativeServiceBroken(alternative_service,
+                                                network_isolation_key1_));
+  EXPECT_FALSE(impl_.WasAlternativeServiceRecentlyBroken(
+      alternative_service, network_isolation_key1_));
+  EXPECT_FALSE(impl_.IsAlternativeServiceBroken(alternative_service,
+                                                network_isolation_key2_));
+  EXPECT_FALSE(impl_.WasAlternativeServiceRecentlyBroken(
+      alternative_service, network_isolation_key2_));
+
+  base::test::ScopedFeatureList feature_list;
+  feature_list.InitAndEnableFeature(
+      features::kPartitionHttpServerPropertiesByNetworkIsolationKey);
+  // Since HttpServerProperties caches the feature value, have to create a new
+  // one.
+  HttpServerProperties properties(nullptr /* pref_delegate */,
+                                  nullptr /* net_log */, test_tick_clock_,
+                                  &test_clock_);
+
+  properties.SetHttp2AlternativeService(server, network_isolation_key1_,
+                                        alternative_service, expiration);
+  properties.SetHttp2AlternativeService(server, network_isolation_key2_,
+                                        alternative_service, expiration);
+
+  EXPECT_FALSE(properties.IsAlternativeServiceBroken(alternative_service,
+                                                     network_isolation_key1_));
+  EXPECT_FALSE(properties.WasAlternativeServiceRecentlyBroken(
+      alternative_service, network_isolation_key1_));
+  EXPECT_FALSE(properties.IsAlternativeServiceBroken(alternative_service,
+                                                     network_isolation_key2_));
+  EXPECT_FALSE(properties.WasAlternativeServiceRecentlyBroken(
+      alternative_service, network_isolation_key2_));
+
+  properties.MarkAlternativeServiceBroken(alternative_service,
+                                          network_isolation_key1_);
+  EXPECT_TRUE(properties.IsAlternativeServiceBroken(alternative_service,
+                                                    network_isolation_key1_));
+  EXPECT_TRUE(properties.WasAlternativeServiceRecentlyBroken(
+      alternative_service, network_isolation_key1_));
+  EXPECT_FALSE(properties.IsAlternativeServiceBroken(alternative_service,
+                                                     network_isolation_key2_));
+  EXPECT_FALSE(properties.WasAlternativeServiceRecentlyBroken(
+      alternative_service, network_isolation_key2_));
+
+  properties.MarkAlternativeServiceBroken(alternative_service,
+                                          network_isolation_key2_);
+  EXPECT_TRUE(properties.IsAlternativeServiceBroken(alternative_service,
+                                                    network_isolation_key1_));
+  EXPECT_TRUE(properties.WasAlternativeServiceRecentlyBroken(
+      alternative_service, network_isolation_key1_));
+  EXPECT_TRUE(properties.IsAlternativeServiceBroken(alternative_service,
+                                                    network_isolation_key2_));
+  EXPECT_TRUE(properties.WasAlternativeServiceRecentlyBroken(
+      alternative_service, network_isolation_key2_));
+
+  properties.ConfirmAlternativeService(alternative_service,
+                                       network_isolation_key1_);
+  EXPECT_FALSE(properties.IsAlternativeServiceBroken(alternative_service,
+                                                     network_isolation_key1_));
+  EXPECT_FALSE(properties.WasAlternativeServiceRecentlyBroken(
+      alternative_service, network_isolation_key1_));
+  EXPECT_TRUE(properties.IsAlternativeServiceBroken(alternative_service,
+                                                    network_isolation_key2_));
+  EXPECT_TRUE(properties.WasAlternativeServiceRecentlyBroken(
+      alternative_service, network_isolation_key2_));
+
+  properties.ConfirmAlternativeService(alternative_service,
+                                       network_isolation_key2_);
+  EXPECT_FALSE(properties.IsAlternativeServiceBroken(alternative_service,
+                                                     network_isolation_key1_));
+  EXPECT_FALSE(properties.WasAlternativeServiceRecentlyBroken(
+      alternative_service, network_isolation_key1_));
+  EXPECT_FALSE(properties.IsAlternativeServiceBroken(alternative_service,
+                                                     network_isolation_key2_));
+  EXPECT_FALSE(properties.WasAlternativeServiceRecentlyBroken(
+      alternative_service, network_isolation_key2_));
 }
 
 TEST_F(AlternateProtocolServerPropertiesTest, MarkRecentlyBroken) {
@@ -1221,16 +1361,131 @@
   const AlternativeService alternative_service(kProtoHTTP2, "foo", 443);
   SetAlternativeService(server, alternative_service);
 
-  EXPECT_FALSE(impl_.IsAlternativeServiceBroken(alternative_service));
-  EXPECT_FALSE(impl_.WasAlternativeServiceRecentlyBroken(alternative_service));
+  EXPECT_FALSE(impl_.IsAlternativeServiceBroken(alternative_service,
+                                                NetworkIsolationKey()));
+  EXPECT_FALSE(impl_.WasAlternativeServiceRecentlyBroken(
+      alternative_service, NetworkIsolationKey()));
 
-  impl_.MarkAlternativeServiceRecentlyBroken(alternative_service);
-  EXPECT_FALSE(impl_.IsAlternativeServiceBroken(alternative_service));
-  EXPECT_TRUE(impl_.WasAlternativeServiceRecentlyBroken(alternative_service));
+  impl_.MarkAlternativeServiceRecentlyBroken(alternative_service,
+                                             NetworkIsolationKey());
+  EXPECT_FALSE(impl_.IsAlternativeServiceBroken(alternative_service,
+                                                NetworkIsolationKey()));
+  EXPECT_TRUE(impl_.WasAlternativeServiceRecentlyBroken(alternative_service,
+                                                        NetworkIsolationKey()));
 
-  impl_.ConfirmAlternativeService(alternative_service);
-  EXPECT_FALSE(impl_.IsAlternativeServiceBroken(alternative_service));
-  EXPECT_FALSE(impl_.WasAlternativeServiceRecentlyBroken(alternative_service));
+  impl_.ConfirmAlternativeService(alternative_service, NetworkIsolationKey());
+  EXPECT_FALSE(impl_.IsAlternativeServiceBroken(alternative_service,
+                                                NetworkIsolationKey()));
+  EXPECT_FALSE(impl_.WasAlternativeServiceRecentlyBroken(
+      alternative_service, NetworkIsolationKey()));
+}
+
+TEST_F(AlternateProtocolServerPropertiesTest,
+       MarkRecentlyBrokenWithNetworkIsolationKey) {
+  url::SchemeHostPort server("http", "foo", 80);
+  const AlternativeService alternative_service(kProtoHTTP2, "foo", 443);
+  const base::Time expiration =
+      test_clock_.Now() + base::TimeDelta::FromDays(1);
+
+  // Without NetworkIsolationKeys enabled, the NetworkIsolationKey parameter
+  // should be ignored.
+  impl_.SetHttp2AlternativeService(server, network_isolation_key1_,
+                                   alternative_service, expiration);
+  EXPECT_FALSE(impl_.IsAlternativeServiceBroken(alternative_service,
+                                                network_isolation_key1_));
+  EXPECT_FALSE(impl_.WasAlternativeServiceRecentlyBroken(
+      alternative_service, network_isolation_key1_));
+  EXPECT_FALSE(impl_.IsAlternativeServiceBroken(alternative_service,
+                                                network_isolation_key2_));
+  EXPECT_FALSE(impl_.WasAlternativeServiceRecentlyBroken(
+      alternative_service, network_isolation_key2_));
+
+  impl_.MarkAlternativeServiceRecentlyBroken(alternative_service,
+                                             network_isolation_key1_);
+  EXPECT_FALSE(impl_.IsAlternativeServiceBroken(alternative_service,
+                                                network_isolation_key1_));
+  EXPECT_TRUE(impl_.WasAlternativeServiceRecentlyBroken(
+      alternative_service, network_isolation_key1_));
+  EXPECT_FALSE(impl_.IsAlternativeServiceBroken(alternative_service,
+                                                network_isolation_key2_));
+  EXPECT_TRUE(impl_.WasAlternativeServiceRecentlyBroken(
+      alternative_service, network_isolation_key2_));
+
+  impl_.ConfirmAlternativeService(alternative_service, network_isolation_key2_);
+  EXPECT_FALSE(impl_.IsAlternativeServiceBroken(alternative_service,
+                                                network_isolation_key1_));
+  EXPECT_FALSE(impl_.WasAlternativeServiceRecentlyBroken(
+      alternative_service, network_isolation_key1_));
+  EXPECT_FALSE(impl_.IsAlternativeServiceBroken(alternative_service,
+                                                network_isolation_key2_));
+  EXPECT_FALSE(impl_.WasAlternativeServiceRecentlyBroken(
+      alternative_service, network_isolation_key2_));
+
+  base::test::ScopedFeatureList feature_list;
+  feature_list.InitAndEnableFeature(
+      features::kPartitionHttpServerPropertiesByNetworkIsolationKey);
+  // Since HttpServerProperties caches the feature value, have to create a new
+  // one.
+  HttpServerProperties properties(nullptr /* pref_delegate */,
+                                  nullptr /* net_log */, test_tick_clock_,
+                                  &test_clock_);
+
+  properties.SetHttp2AlternativeService(server, network_isolation_key1_,
+                                        alternative_service, expiration);
+  properties.SetHttp2AlternativeService(server, network_isolation_key2_,
+                                        alternative_service, expiration);
+  EXPECT_FALSE(properties.IsAlternativeServiceBroken(alternative_service,
+                                                     network_isolation_key1_));
+  EXPECT_FALSE(properties.WasAlternativeServiceRecentlyBroken(
+      alternative_service, network_isolation_key1_));
+  EXPECT_FALSE(properties.IsAlternativeServiceBroken(alternative_service,
+                                                     network_isolation_key2_));
+  EXPECT_FALSE(properties.WasAlternativeServiceRecentlyBroken(
+      alternative_service, network_isolation_key2_));
+
+  properties.MarkAlternativeServiceRecentlyBroken(alternative_service,
+                                                  network_isolation_key1_);
+  EXPECT_FALSE(properties.IsAlternativeServiceBroken(alternative_service,
+                                                     network_isolation_key1_));
+  EXPECT_TRUE(properties.WasAlternativeServiceRecentlyBroken(
+      alternative_service, network_isolation_key1_));
+  EXPECT_FALSE(properties.IsAlternativeServiceBroken(alternative_service,
+                                                     network_isolation_key2_));
+  EXPECT_FALSE(properties.WasAlternativeServiceRecentlyBroken(
+      alternative_service, network_isolation_key2_));
+
+  properties.MarkAlternativeServiceRecentlyBroken(alternative_service,
+                                                  network_isolation_key2_);
+  EXPECT_FALSE(properties.IsAlternativeServiceBroken(alternative_service,
+                                                     network_isolation_key1_));
+  EXPECT_TRUE(properties.WasAlternativeServiceRecentlyBroken(
+      alternative_service, network_isolation_key1_));
+  EXPECT_FALSE(properties.IsAlternativeServiceBroken(alternative_service,
+                                                     network_isolation_key2_));
+  EXPECT_TRUE(properties.WasAlternativeServiceRecentlyBroken(
+      alternative_service, network_isolation_key2_));
+
+  properties.ConfirmAlternativeService(alternative_service,
+                                       network_isolation_key1_);
+  EXPECT_FALSE(properties.IsAlternativeServiceBroken(alternative_service,
+                                                     network_isolation_key1_));
+  EXPECT_FALSE(properties.WasAlternativeServiceRecentlyBroken(
+      alternative_service, network_isolation_key1_));
+  EXPECT_FALSE(properties.IsAlternativeServiceBroken(alternative_service,
+                                                     network_isolation_key2_));
+  EXPECT_TRUE(properties.WasAlternativeServiceRecentlyBroken(
+      alternative_service, network_isolation_key2_));
+
+  properties.ConfirmAlternativeService(alternative_service,
+                                       network_isolation_key2_);
+  EXPECT_FALSE(properties.IsAlternativeServiceBroken(alternative_service,
+                                                     network_isolation_key1_));
+  EXPECT_FALSE(properties.WasAlternativeServiceRecentlyBroken(
+      alternative_service, network_isolation_key1_));
+  EXPECT_FALSE(properties.IsAlternativeServiceBroken(alternative_service,
+                                                     network_isolation_key2_));
+  EXPECT_FALSE(properties.WasAlternativeServiceRecentlyBroken(
+      alternative_service, network_isolation_key2_));
 }
 
 TEST_F(AlternateProtocolServerPropertiesTest,
@@ -1239,17 +1494,133 @@
   const AlternativeService alternative_service(kProtoHTTP2, "foo", 443);
   SetAlternativeService(server, alternative_service);
 
-  EXPECT_FALSE(impl_.IsAlternativeServiceBroken(alternative_service));
-  EXPECT_FALSE(impl_.WasAlternativeServiceRecentlyBroken(alternative_service));
+  EXPECT_FALSE(impl_.IsAlternativeServiceBroken(alternative_service,
+                                                NetworkIsolationKey()));
+  EXPECT_FALSE(impl_.WasAlternativeServiceRecentlyBroken(
+      alternative_service, NetworkIsolationKey()));
 
   impl_.MarkAlternativeServiceBrokenUntilDefaultNetworkChanges(
-      alternative_service);
-  EXPECT_TRUE(impl_.IsAlternativeServiceBroken(alternative_service));
-  EXPECT_TRUE(impl_.WasAlternativeServiceRecentlyBroken(alternative_service));
+      alternative_service, NetworkIsolationKey());
+  EXPECT_TRUE(impl_.IsAlternativeServiceBroken(alternative_service,
+                                               NetworkIsolationKey()));
+  EXPECT_TRUE(impl_.WasAlternativeServiceRecentlyBroken(alternative_service,
+                                                        NetworkIsolationKey()));
 
-  impl_.ConfirmAlternativeService(alternative_service);
-  EXPECT_FALSE(impl_.IsAlternativeServiceBroken(alternative_service));
-  EXPECT_FALSE(impl_.WasAlternativeServiceRecentlyBroken(alternative_service));
+  impl_.ConfirmAlternativeService(alternative_service, NetworkIsolationKey());
+  EXPECT_FALSE(impl_.IsAlternativeServiceBroken(alternative_service,
+                                                NetworkIsolationKey()));
+  EXPECT_FALSE(impl_.WasAlternativeServiceRecentlyBroken(
+      alternative_service, NetworkIsolationKey()));
+}
+
+TEST_F(AlternateProtocolServerPropertiesTest,
+       MarkBrokenUntilDefaultNetworkChangesWithNetworkIsolationKey) {
+  url::SchemeHostPort server("http", "foo", 80);
+  const AlternativeService alternative_service(kProtoHTTP2, "foo", 443);
+  const base::Time expiration =
+      test_clock_.Now() + base::TimeDelta::FromDays(1);
+
+  // Without NetworkIsolationKeys enabled, the NetworkIsolationKey parameter
+  // should be ignored.
+  impl_.SetHttp2AlternativeService(server, network_isolation_key1_,
+                                   alternative_service, expiration);
+
+  EXPECT_FALSE(impl_.IsAlternativeServiceBroken(alternative_service,
+                                                network_isolation_key1_));
+  EXPECT_FALSE(impl_.WasAlternativeServiceRecentlyBroken(
+      alternative_service, network_isolation_key1_));
+  EXPECT_FALSE(impl_.IsAlternativeServiceBroken(alternative_service,
+                                                network_isolation_key2_));
+  EXPECT_FALSE(impl_.WasAlternativeServiceRecentlyBroken(
+      alternative_service, network_isolation_key2_));
+
+  impl_.MarkAlternativeServiceBrokenUntilDefaultNetworkChanges(
+      alternative_service, network_isolation_key1_);
+  EXPECT_TRUE(impl_.IsAlternativeServiceBroken(alternative_service,
+                                               network_isolation_key1_));
+  EXPECT_TRUE(impl_.WasAlternativeServiceRecentlyBroken(
+      alternative_service, network_isolation_key1_));
+  EXPECT_TRUE(impl_.IsAlternativeServiceBroken(alternative_service,
+                                               network_isolation_key2_));
+  EXPECT_TRUE(impl_.WasAlternativeServiceRecentlyBroken(
+      alternative_service, network_isolation_key2_));
+
+  impl_.ConfirmAlternativeService(alternative_service, network_isolation_key2_);
+  EXPECT_FALSE(impl_.IsAlternativeServiceBroken(alternative_service,
+                                                network_isolation_key1_));
+  EXPECT_FALSE(impl_.WasAlternativeServiceRecentlyBroken(
+      alternative_service, network_isolation_key1_));
+  EXPECT_FALSE(impl_.IsAlternativeServiceBroken(alternative_service,
+                                                network_isolation_key2_));
+  EXPECT_FALSE(impl_.WasAlternativeServiceRecentlyBroken(
+      alternative_service, network_isolation_key2_));
+
+  base::test::ScopedFeatureList feature_list;
+  feature_list.InitAndEnableFeature(
+      features::kPartitionHttpServerPropertiesByNetworkIsolationKey);
+  // Since HttpServerProperties caches the feature value, have to create a new
+  // one.
+  HttpServerProperties properties(nullptr /* pref_delegate */,
+                                  nullptr /* net_log */, test_tick_clock_,
+                                  &test_clock_);
+
+  properties.SetHttp2AlternativeService(server, network_isolation_key1_,
+                                        alternative_service, expiration);
+  properties.SetHttp2AlternativeService(server, network_isolation_key2_,
+                                        alternative_service, expiration);
+
+  EXPECT_FALSE(properties.IsAlternativeServiceBroken(alternative_service,
+                                                     network_isolation_key1_));
+  EXPECT_FALSE(properties.WasAlternativeServiceRecentlyBroken(
+      alternative_service, network_isolation_key1_));
+  EXPECT_FALSE(properties.IsAlternativeServiceBroken(alternative_service,
+                                                     network_isolation_key2_));
+  EXPECT_FALSE(properties.WasAlternativeServiceRecentlyBroken(
+      alternative_service, network_isolation_key2_));
+
+  properties.MarkAlternativeServiceBrokenUntilDefaultNetworkChanges(
+      alternative_service, network_isolation_key1_);
+  EXPECT_TRUE(properties.IsAlternativeServiceBroken(alternative_service,
+                                                    network_isolation_key1_));
+  EXPECT_TRUE(properties.WasAlternativeServiceRecentlyBroken(
+      alternative_service, network_isolation_key1_));
+  EXPECT_FALSE(properties.IsAlternativeServiceBroken(alternative_service,
+                                                     network_isolation_key2_));
+  EXPECT_FALSE(properties.WasAlternativeServiceRecentlyBroken(
+      alternative_service, network_isolation_key2_));
+
+  properties.MarkAlternativeServiceBrokenUntilDefaultNetworkChanges(
+      alternative_service, network_isolation_key2_);
+  EXPECT_TRUE(properties.IsAlternativeServiceBroken(alternative_service,
+                                                    network_isolation_key1_));
+  EXPECT_TRUE(properties.WasAlternativeServiceRecentlyBroken(
+      alternative_service, network_isolation_key1_));
+  EXPECT_TRUE(properties.IsAlternativeServiceBroken(alternative_service,
+                                                    network_isolation_key2_));
+  EXPECT_TRUE(properties.WasAlternativeServiceRecentlyBroken(
+      alternative_service, network_isolation_key2_));
+
+  properties.ConfirmAlternativeService(alternative_service,
+                                       network_isolation_key1_);
+  EXPECT_FALSE(properties.IsAlternativeServiceBroken(alternative_service,
+                                                     network_isolation_key1_));
+  EXPECT_FALSE(properties.WasAlternativeServiceRecentlyBroken(
+      alternative_service, network_isolation_key1_));
+  EXPECT_TRUE(properties.IsAlternativeServiceBroken(alternative_service,
+                                                    network_isolation_key2_));
+  EXPECT_TRUE(properties.WasAlternativeServiceRecentlyBroken(
+      alternative_service, network_isolation_key2_));
+
+  properties.ConfirmAlternativeService(alternative_service,
+                                       network_isolation_key2_);
+  EXPECT_FALSE(properties.IsAlternativeServiceBroken(alternative_service,
+                                                     network_isolation_key1_));
+  EXPECT_FALSE(properties.WasAlternativeServiceRecentlyBroken(
+      alternative_service, network_isolation_key1_));
+  EXPECT_FALSE(properties.IsAlternativeServiceBroken(alternative_service,
+                                                     network_isolation_key2_));
+  EXPECT_FALSE(properties.WasAlternativeServiceRecentlyBroken(
+      alternative_service, network_isolation_key2_));
 }
 
 TEST_F(AlternateProtocolServerPropertiesTest, OnDefaultNetworkChanged) {
@@ -1257,45 +1628,117 @@
   const AlternativeService alternative_service(kProtoHTTP2, "foo", 443);
 
   SetAlternativeService(server, alternative_service);
-  EXPECT_FALSE(impl_.IsAlternativeServiceBroken(alternative_service));
-  EXPECT_FALSE(impl_.WasAlternativeServiceRecentlyBroken(alternative_service));
+  EXPECT_FALSE(impl_.IsAlternativeServiceBroken(alternative_service,
+                                                NetworkIsolationKey()));
+  EXPECT_FALSE(impl_.WasAlternativeServiceRecentlyBroken(
+      alternative_service, NetworkIsolationKey()));
 
   impl_.MarkAlternativeServiceBrokenUntilDefaultNetworkChanges(
-      alternative_service);
-  EXPECT_TRUE(impl_.IsAlternativeServiceBroken(alternative_service));
-  EXPECT_TRUE(impl_.WasAlternativeServiceRecentlyBroken(alternative_service));
+      alternative_service, NetworkIsolationKey());
+  EXPECT_TRUE(impl_.IsAlternativeServiceBroken(alternative_service,
+                                               NetworkIsolationKey()));
+  EXPECT_TRUE(impl_.WasAlternativeServiceRecentlyBroken(alternative_service,
+                                                        NetworkIsolationKey()));
 
   // Default network change clears alt svc broken until default network changes.
   impl_.OnDefaultNetworkChanged();
-  EXPECT_FALSE(impl_.IsAlternativeServiceBroken(alternative_service));
-  EXPECT_FALSE(impl_.WasAlternativeServiceRecentlyBroken(alternative_service));
+  EXPECT_FALSE(impl_.IsAlternativeServiceBroken(alternative_service,
+                                                NetworkIsolationKey()));
+  EXPECT_FALSE(impl_.WasAlternativeServiceRecentlyBroken(
+      alternative_service, NetworkIsolationKey()));
 
   impl_.MarkAlternativeServiceBrokenUntilDefaultNetworkChanges(
-      alternative_service);
-  EXPECT_TRUE(impl_.IsAlternativeServiceBroken(alternative_service));
-  EXPECT_TRUE(impl_.WasAlternativeServiceRecentlyBroken(alternative_service));
+      alternative_service, NetworkIsolationKey());
+  EXPECT_TRUE(impl_.IsAlternativeServiceBroken(alternative_service,
+                                               NetworkIsolationKey()));
+  EXPECT_TRUE(impl_.WasAlternativeServiceRecentlyBroken(alternative_service,
+                                                        NetworkIsolationKey()));
 
-  impl_.MarkAlternativeServiceBroken(alternative_service);
-  EXPECT_TRUE(impl_.IsAlternativeServiceBroken(alternative_service));
-  EXPECT_TRUE(impl_.WasAlternativeServiceRecentlyBroken(alternative_service));
+  impl_.MarkAlternativeServiceBroken(alternative_service,
+                                     NetworkIsolationKey());
+  EXPECT_TRUE(impl_.IsAlternativeServiceBroken(alternative_service,
+                                               NetworkIsolationKey()));
+  EXPECT_TRUE(impl_.WasAlternativeServiceRecentlyBroken(alternative_service,
+                                                        NetworkIsolationKey()));
 
   // Default network change doesn't affect alt svc that was simply marked broken
   // most recently.
   impl_.OnDefaultNetworkChanged();
-  EXPECT_TRUE(impl_.IsAlternativeServiceBroken(alternative_service));
-  EXPECT_TRUE(impl_.WasAlternativeServiceRecentlyBroken(alternative_service));
+  EXPECT_TRUE(impl_.IsAlternativeServiceBroken(alternative_service,
+                                               NetworkIsolationKey()));
+  EXPECT_TRUE(impl_.WasAlternativeServiceRecentlyBroken(alternative_service,
+                                                        NetworkIsolationKey()));
 
   impl_.MarkAlternativeServiceBrokenUntilDefaultNetworkChanges(
-      alternative_service);
-  EXPECT_TRUE(impl_.IsAlternativeServiceBroken(alternative_service));
-  EXPECT_TRUE(impl_.WasAlternativeServiceRecentlyBroken(alternative_service));
+      alternative_service, NetworkIsolationKey());
+  EXPECT_TRUE(impl_.IsAlternativeServiceBroken(alternative_service,
+                                               NetworkIsolationKey()));
+  EXPECT_TRUE(impl_.WasAlternativeServiceRecentlyBroken(alternative_service,
+                                                        NetworkIsolationKey()));
 
   // Default network change clears alt svc that was marked broken until default
   // network change most recently even if the alt svc was initially marked
   // broken.
   impl_.OnDefaultNetworkChanged();
-  EXPECT_FALSE(impl_.IsAlternativeServiceBroken(alternative_service));
-  EXPECT_FALSE(impl_.WasAlternativeServiceRecentlyBroken(alternative_service));
+  EXPECT_FALSE(impl_.IsAlternativeServiceBroken(alternative_service,
+                                                NetworkIsolationKey()));
+  EXPECT_FALSE(impl_.WasAlternativeServiceRecentlyBroken(
+      alternative_service, NetworkIsolationKey()));
+}
+
+TEST_F(AlternateProtocolServerPropertiesTest,
+       OnDefaultNetworkChangedWithNetworkIsolationKey) {
+  url::SchemeHostPort server("http", "foo", 80);
+  const AlternativeService alternative_service(kProtoHTTP2, "foo", 443);
+
+  base::test::ScopedFeatureList feature_list;
+  feature_list.InitAndEnableFeature(
+      features::kPartitionHttpServerPropertiesByNetworkIsolationKey);
+  // Since HttpServerProperties caches the feature value, have to create a new
+  // one.
+  HttpServerProperties properties(nullptr /* pref_delegate */,
+                                  nullptr /* net_log */, test_tick_clock_,
+                                  &test_clock_);
+
+  const base::Time expiration =
+      test_clock_.Now() + base::TimeDelta::FromDays(1);
+  properties.SetHttp2AlternativeService(server, network_isolation_key1_,
+                                        alternative_service, expiration);
+  properties.SetHttp2AlternativeService(server, network_isolation_key2_,
+                                        alternative_service, expiration);
+
+  EXPECT_FALSE(properties.IsAlternativeServiceBroken(alternative_service,
+                                                     network_isolation_key1_));
+  EXPECT_FALSE(properties.WasAlternativeServiceRecentlyBroken(
+      alternative_service, network_isolation_key1_));
+  EXPECT_FALSE(properties.IsAlternativeServiceBroken(alternative_service,
+                                                     network_isolation_key2_));
+  EXPECT_FALSE(properties.WasAlternativeServiceRecentlyBroken(
+      alternative_service, network_isolation_key2_));
+
+  properties.MarkAlternativeServiceBrokenUntilDefaultNetworkChanges(
+      alternative_service, network_isolation_key1_);
+  properties.MarkAlternativeServiceBrokenUntilDefaultNetworkChanges(
+      alternative_service, network_isolation_key2_);
+  EXPECT_TRUE(properties.IsAlternativeServiceBroken(alternative_service,
+                                                    network_isolation_key1_));
+  EXPECT_TRUE(properties.WasAlternativeServiceRecentlyBroken(
+      alternative_service, network_isolation_key1_));
+  EXPECT_TRUE(properties.IsAlternativeServiceBroken(alternative_service,
+                                                    network_isolation_key2_));
+  EXPECT_TRUE(properties.WasAlternativeServiceRecentlyBroken(
+      alternative_service, network_isolation_key2_));
+
+  // Default network change clears alt svc broken until default network changes.
+  properties.OnDefaultNetworkChanged();
+  EXPECT_FALSE(properties.IsAlternativeServiceBroken(alternative_service,
+                                                     network_isolation_key1_));
+  EXPECT_FALSE(properties.WasAlternativeServiceRecentlyBroken(
+      alternative_service, network_isolation_key1_));
+  EXPECT_FALSE(properties.IsAlternativeServiceBroken(alternative_service,
+                                                     network_isolation_key2_));
+  EXPECT_FALSE(properties.WasAlternativeServiceRecentlyBroken(
+      alternative_service, network_isolation_key2_));
 }
 
 TEST_F(AlternateProtocolServerPropertiesTest, Canonical) {
@@ -1359,11 +1802,6 @@
 
 TEST_F(AlternateProtocolServerPropertiesTest,
        CanonicalWithNetworkIsolationKey) {
-  const url::Origin kOrigin1 = url::Origin::Create(GURL("https://foo.test/"));
-  const NetworkIsolationKey kNetworkIsolationKey1(kOrigin1, kOrigin1);
-  const url::Origin kOrigin2 = url::Origin::Create(GURL("https://bar.test/"));
-  const NetworkIsolationKey kNetworkIsolationKey2(kOrigin2, kOrigin2);
-
   base::test::ScopedFeatureList feature_list;
   feature_list.InitAndEnableFeature(
       features::kPartitionHttpServerPropertiesByNetworkIsolationKey);
@@ -1374,10 +1812,11 @@
                                   &test_clock_);
 
   url::SchemeHostPort test_server("https", "foo.c.youtube.com", 443);
-  EXPECT_FALSE(HasAlternativeService(test_server, kNetworkIsolationKey1));
+  EXPECT_FALSE(HasAlternativeService(test_server, network_isolation_key1_));
 
   url::SchemeHostPort canonical_server1("https", "bar.c.youtube.com", 443);
-  EXPECT_FALSE(HasAlternativeService(canonical_server1, kNetworkIsolationKey1));
+  EXPECT_FALSE(
+      HasAlternativeService(canonical_server1, network_isolation_key1_));
 
   AlternativeServiceInfoVector alternative_service_info_vector;
   const AlternativeService canonical_alternative_service1(
@@ -1391,56 +1830,59 @@
   alternative_service_info_vector.push_back(
       AlternativeServiceInfo::CreateHttp2AlternativeServiceInfo(
           canonical_alternative_service2, expiration));
-  properties.SetAlternativeServices(canonical_server1, kNetworkIsolationKey1,
+  properties.SetAlternativeServices(canonical_server1, network_isolation_key1_,
                                     alternative_service_info_vector);
 
   // Since |test_server| does not have an alternative service itself,
   // GetAlternativeServiceInfos should return those of |canonical_server|.
   AlternativeServiceInfoVector alternative_service_info_vector2 =
-      properties.GetAlternativeServiceInfos(test_server, kNetworkIsolationKey1);
+      properties.GetAlternativeServiceInfos(test_server,
+                                            network_isolation_key1_);
   ASSERT_EQ(2u, alternative_service_info_vector2.size());
   EXPECT_EQ(canonical_alternative_service1,
             alternative_service_info_vector2[0].alternative_service());
 
   // Canonical information should not be visible for other NetworkIsolationKeys.
   EXPECT_TRUE(
-      properties.GetAlternativeServiceInfos(test_server, kNetworkIsolationKey2)
+      properties
+          .GetAlternativeServiceInfos(test_server, network_isolation_key2_)
           .empty());
   EXPECT_TRUE(
       properties.GetAlternativeServiceInfos(test_server, NetworkIsolationKey())
           .empty());
 
-  // Now add an alternative service entry for kNetworkIsolationKey2 for a
+  // Now add an alternative service entry for network_isolation_key2_ for a
   // different server and different NetworkIsolationKey, but with the same
   // canonical suffix.
   url::SchemeHostPort canonical_server2("https", "shrimp.c.youtube.com", 443);
-  properties.SetAlternativeServices(canonical_server2, kNetworkIsolationKey2,
+  properties.SetAlternativeServices(canonical_server2, network_isolation_key2_,
                                     {alternative_service_info_vector[0]});
 
   // The canonical server information should reachable, and different, for both
   // NetworkIsolationKeys.
   EXPECT_EQ(
-      1u,
-      properties.GetAlternativeServiceInfos(test_server, kNetworkIsolationKey2)
-          .size());
+      1u, properties
+              .GetAlternativeServiceInfos(test_server, network_isolation_key2_)
+              .size());
   EXPECT_EQ(
-      2u,
-      properties.GetAlternativeServiceInfos(test_server, kNetworkIsolationKey1)
-          .size());
+      2u, properties
+              .GetAlternativeServiceInfos(test_server, network_isolation_key1_)
+              .size());
   EXPECT_TRUE(
       properties.GetAlternativeServiceInfos(test_server, NetworkIsolationKey())
           .empty());
 
-  // Clearing the alternate service state of kNetworkIsolationKey1's canonical
-  // server should only affect kNetworkIsolationKey1.
-  properties.SetAlternativeServices(canonical_server1, kNetworkIsolationKey1,
+  // Clearing the alternate service state of network_isolation_key1_'s canonical
+  // server should only affect network_isolation_key1_.
+  properties.SetAlternativeServices(canonical_server1, network_isolation_key1_,
                                     {});
   EXPECT_EQ(
-      1u,
-      properties.GetAlternativeServiceInfos(test_server, kNetworkIsolationKey2)
-          .size());
+      1u, properties
+              .GetAlternativeServiceInfos(test_server, network_isolation_key2_)
+              .size());
   EXPECT_TRUE(
-      properties.GetAlternativeServiceInfos(test_server, kNetworkIsolationKey1)
+      properties
+          .GetAlternativeServiceInfos(test_server, network_isolation_key1_)
           .empty());
   EXPECT_TRUE(
       properties.GetAlternativeServiceInfos(test_server, NetworkIsolationKey())
@@ -1455,7 +1897,8 @@
 
   SetAlternativeService(canonical_server, canonical_alternative_service);
   EXPECT_TRUE(HasAlternativeService(test_server, NetworkIsolationKey()));
-  impl_.MarkAlternativeServiceBroken(canonical_alternative_service);
+  impl_.MarkAlternativeServiceBroken(canonical_alternative_service,
+                                     NetworkIsolationKey());
   EXPECT_FALSE(HasAlternativeService(test_server, NetworkIsolationKey()));
 }
 
@@ -1469,7 +1912,7 @@
   SetAlternativeService(canonical_server, canonical_alternative_service);
   EXPECT_TRUE(HasAlternativeService(test_server, NetworkIsolationKey()));
   impl_.MarkAlternativeServiceBrokenUntilDefaultNetworkChanges(
-      canonical_alternative_service);
+      canonical_alternative_service, NetworkIsolationKey());
   EXPECT_FALSE(HasAlternativeService(test_server, NetworkIsolationKey()));
 }
 
@@ -1514,19 +1957,112 @@
   AlternativeService alternative_service(kProtoQUIC, "foo", 443);
   SetAlternativeService(server, alternative_service);
   EXPECT_TRUE(HasAlternativeService(server, NetworkIsolationKey()));
-  EXPECT_FALSE(impl_.IsAlternativeServiceBroken(alternative_service));
-  EXPECT_FALSE(impl_.WasAlternativeServiceRecentlyBroken(alternative_service));
+  EXPECT_FALSE(impl_.IsAlternativeServiceBroken(alternative_service,
+                                                NetworkIsolationKey()));
+  EXPECT_FALSE(impl_.WasAlternativeServiceRecentlyBroken(
+      alternative_service, NetworkIsolationKey()));
 
   base::TimeTicks past =
       test_tick_clock_->NowTicks() - base::TimeDelta::FromSeconds(42);
   HttpServerPropertiesPeer::AddBrokenAlternativeServiceWithExpirationTime(
       &impl_, alternative_service, past);
-  EXPECT_TRUE(impl_.IsAlternativeServiceBroken(alternative_service));
-  EXPECT_TRUE(impl_.WasAlternativeServiceRecentlyBroken(alternative_service));
+  EXPECT_TRUE(impl_.IsAlternativeServiceBroken(alternative_service,
+                                               NetworkIsolationKey()));
+  EXPECT_TRUE(impl_.WasAlternativeServiceRecentlyBroken(alternative_service,
+                                                        NetworkIsolationKey()));
 
   HttpServerPropertiesPeer::ExpireBrokenAlternateProtocolMappings(&impl_);
-  EXPECT_FALSE(impl_.IsAlternativeServiceBroken(alternative_service));
-  EXPECT_TRUE(impl_.WasAlternativeServiceRecentlyBroken(alternative_service));
+  EXPECT_FALSE(HasAlternativeService(server, NetworkIsolationKey()));
+  EXPECT_FALSE(impl_.IsAlternativeServiceBroken(alternative_service,
+                                                NetworkIsolationKey()));
+  EXPECT_TRUE(impl_.WasAlternativeServiceRecentlyBroken(alternative_service,
+                                                        NetworkIsolationKey()));
+}
+
+TEST_F(AlternateProtocolServerPropertiesTest,
+       ExpireBrokenAlternateProtocolMappingsWithNetworkIsolationKey) {
+  url::SchemeHostPort server("https", "foo", 443);
+  AlternativeService alternative_service(kProtoHTTP2, "foo", 444);
+  base::TimeTicks past =
+      test_tick_clock_->NowTicks() - base::TimeDelta::FromSeconds(42);
+  base::TimeTicks future =
+      test_tick_clock_->NowTicks() + base::TimeDelta::FromSeconds(42);
+  const base::Time alt_service_expiration =
+      test_clock_.Now() + base::TimeDelta::FromDays(1);
+
+  base::test::ScopedFeatureList feature_list;
+  feature_list.InitAndEnableFeature(
+      features::kPartitionHttpServerPropertiesByNetworkIsolationKey);
+  // Since HttpServerProperties caches the feature value, have to create a new
+  // one.
+  HttpServerProperties properties(nullptr /* pref_delegate */,
+                                  nullptr /* net_log */, test_tick_clock_,
+                                  &test_clock_);
+
+  properties.SetHttp2AlternativeService(server, network_isolation_key1_,
+                                        alternative_service,
+                                        alt_service_expiration);
+  properties.SetHttp2AlternativeService(server, network_isolation_key2_,
+                                        alternative_service,
+                                        alt_service_expiration);
+
+  EXPECT_FALSE(
+      properties.GetAlternativeServiceInfos(server, network_isolation_key1_)
+          .empty());
+  EXPECT_FALSE(properties.IsAlternativeServiceBroken(alternative_service,
+                                                     network_isolation_key1_));
+  EXPECT_FALSE(properties.WasAlternativeServiceRecentlyBroken(
+      alternative_service, network_isolation_key1_));
+  EXPECT_FALSE(
+      properties.GetAlternativeServiceInfos(server, network_isolation_key2_)
+          .empty());
+  EXPECT_FALSE(properties.IsAlternativeServiceBroken(alternative_service,
+                                                     network_isolation_key2_));
+  EXPECT_FALSE(properties.WasAlternativeServiceRecentlyBroken(
+      alternative_service, network_isolation_key2_));
+
+  // Set broken alternative service with expiration date in the past for
+  // |network_isolation_key1_|.
+  HttpServerPropertiesPeer::AddBrokenAlternativeServiceWithExpirationTime(
+      &properties, alternative_service, past, network_isolation_key1_);
+  EXPECT_TRUE(properties.IsAlternativeServiceBroken(alternative_service,
+                                                    network_isolation_key1_));
+  EXPECT_TRUE(properties.WasAlternativeServiceRecentlyBroken(
+      alternative_service, network_isolation_key1_));
+  EXPECT_FALSE(properties.IsAlternativeServiceBroken(alternative_service,
+                                                     network_isolation_key2_));
+  EXPECT_FALSE(properties.WasAlternativeServiceRecentlyBroken(
+      alternative_service, network_isolation_key2_));
+
+  // Set broken alternative service with expiration date in the future for
+  // |network_isolation_key1_|.
+  HttpServerPropertiesPeer::AddBrokenAlternativeServiceWithExpirationTime(
+      &properties, alternative_service, future, network_isolation_key2_);
+  EXPECT_TRUE(properties.IsAlternativeServiceBroken(alternative_service,
+                                                    network_isolation_key1_));
+  EXPECT_TRUE(properties.WasAlternativeServiceRecentlyBroken(
+      alternative_service, network_isolation_key1_));
+  EXPECT_TRUE(properties.IsAlternativeServiceBroken(alternative_service,
+                                                    network_isolation_key2_));
+  EXPECT_TRUE(properties.WasAlternativeServiceRecentlyBroken(
+      alternative_service, network_isolation_key2_));
+
+  // Only the broken entry for |network_isolation_key1_| should be expired.
+  HttpServerPropertiesPeer::ExpireBrokenAlternateProtocolMappings(&properties);
+  EXPECT_TRUE(
+      properties.GetAlternativeServiceInfos(server, network_isolation_key1_)
+          .empty());
+  EXPECT_FALSE(properties.IsAlternativeServiceBroken(alternative_service,
+                                                     network_isolation_key1_));
+  EXPECT_TRUE(properties.WasAlternativeServiceRecentlyBroken(
+      alternative_service, network_isolation_key1_));
+  EXPECT_FALSE(
+      properties.GetAlternativeServiceInfos(server, network_isolation_key2_)
+          .empty());
+  EXPECT_TRUE(properties.IsAlternativeServiceBroken(alternative_service,
+                                                    network_isolation_key2_));
+  EXPECT_TRUE(properties.WasAlternativeServiceRecentlyBroken(
+      alternative_service, network_isolation_key2_));
 }
 
 // Regression test for https://crbug.com/505413.
@@ -1562,10 +2098,10 @@
   // The alternative service of "bar:443" should be unaffected.
   EXPECT_TRUE(HasAlternativeService(bar_server2, NetworkIsolationKey()));
 
-  EXPECT_TRUE(
-      impl_.WasAlternativeServiceRecentlyBroken(bar_alternative_service));
-  EXPECT_FALSE(
-      impl_.WasAlternativeServiceRecentlyBroken(baz_alternative_service));
+  EXPECT_TRUE(impl_.WasAlternativeServiceRecentlyBroken(bar_alternative_service,
+                                                        NetworkIsolationKey()));
+  EXPECT_FALSE(impl_.WasAlternativeServiceRecentlyBroken(
+      baz_alternative_service, NetworkIsolationKey()));
 }
 
 // Regression test for https://crbug.com/724302
@@ -1589,12 +2125,14 @@
   // Repeatedly mark alt svc 1 broken and wait for its brokenness to expire.
   // This will increase its time until expiration.
   for (int i = 0; i < 3; ++i) {
-    impl_.MarkAlternativeServiceBroken(alternative_service1);
+    impl_.MarkAlternativeServiceBroken(alternative_service1,
+                                       NetworkIsolationKey());
 
     // |impl_| should have posted task to expire the brokenness of
     // |alternative_service1|
     EXPECT_EQ(1u, GetPendingMainThreadTaskCount());
-    EXPECT_TRUE(impl_.IsAlternativeServiceBroken(alternative_service1));
+    EXPECT_TRUE(impl_.IsAlternativeServiceBroken(alternative_service1,
+                                                 NetworkIsolationKey()));
 
     // Advance time by just enough so that |alternative_service1|'s brokenness
     // expires.
@@ -1602,27 +2140,35 @@
 
     // Ensure brokenness of |alternative_service1| has expired.
     EXPECT_EQ(0u, GetPendingMainThreadTaskCount());
-    EXPECT_FALSE(impl_.IsAlternativeServiceBroken(alternative_service1));
+    EXPECT_FALSE(impl_.IsAlternativeServiceBroken(alternative_service1,
+                                                  NetworkIsolationKey()));
   }
 
-  impl_.MarkAlternativeServiceBroken(alternative_service1);
-  impl_.MarkAlternativeServiceBroken(alternative_service2);
+  impl_.MarkAlternativeServiceBroken(alternative_service1,
+                                     NetworkIsolationKey());
+  impl_.MarkAlternativeServiceBroken(alternative_service2,
+                                     NetworkIsolationKey());
 
-  EXPECT_TRUE(impl_.IsAlternativeServiceBroken(alternative_service2));
+  EXPECT_TRUE(impl_.IsAlternativeServiceBroken(alternative_service2,
+                                               NetworkIsolationKey()));
 
   // Advance time by just enough so that |alternative_service2|'s brokennness
   // expires.
   FastForwardBy(BROKEN_ALT_SVC_EXPIRE_DELAYS[0]);
 
-  EXPECT_TRUE(impl_.IsAlternativeServiceBroken(alternative_service1));
-  EXPECT_FALSE(impl_.IsAlternativeServiceBroken(alternative_service2));
+  EXPECT_TRUE(impl_.IsAlternativeServiceBroken(alternative_service1,
+                                               NetworkIsolationKey()));
+  EXPECT_FALSE(impl_.IsAlternativeServiceBroken(alternative_service2,
+                                                NetworkIsolationKey()));
 
   // Advance time by enough so that |alternative_service1|'s brokenness expires.
   FastForwardBy(BROKEN_ALT_SVC_EXPIRE_DELAYS[3] -
                 BROKEN_ALT_SVC_EXPIRE_DELAYS[0]);
 
-  EXPECT_FALSE(impl_.IsAlternativeServiceBroken(alternative_service1));
-  EXPECT_FALSE(impl_.IsAlternativeServiceBroken(alternative_service2));
+  EXPECT_FALSE(impl_.IsAlternativeServiceBroken(alternative_service1,
+                                                NetworkIsolationKey()));
+  EXPECT_FALSE(impl_.IsAlternativeServiceBroken(alternative_service2,
+                                                NetworkIsolationKey()));
 }
 
 // Regression test for https://crbug.com/994537. Having a ServerInfo entry
@@ -1688,11 +2234,11 @@
                                NetworkIsolationKey(),
                                alternative_service_info_vector);
 
-  impl_.MarkAlternativeServiceBroken(
-      AlternativeService(kProtoQUIC, "bar", 443));
+  impl_.MarkAlternativeServiceBroken(AlternativeService(kProtoQUIC, "bar", 443),
+                                     NetworkIsolationKey());
 
   impl_.MarkAlternativeServiceBrokenUntilDefaultNetworkChanges(
-      AlternativeService(kProtoQUIC, "baz", 443));
+      AlternativeService(kProtoQUIC, "baz", 443), NetworkIsolationKey());
 
   alternative_service_info_vector.clear();
   alternative_service_info_vector.push_back(
diff --git a/net/http/http_stream_factory_job_controller.cc b/net/http/http_stream_factory_job_controller.cc
index 0d0665b..028e652 100644
--- a/net/http/http_stream_factory_job_controller.cc
+++ b/net/http/http_stream_factory_job_controller.cc
@@ -886,7 +886,8 @@
     // network changes.
     session_->http_server_properties()
         ->MarkAlternativeServiceBrokenUntilDefaultNetworkChanges(
-            alternative_service_info_.alternative_service());
+            alternative_service_info_.alternative_service(),
+            request_info_.network_isolation_key);
     // Reset error status for Jobs after reporting brokenness.
     ResetErrorStatusForJobs();
     return;
@@ -907,7 +908,8 @@
   HistogramBrokenAlternateProtocolLocation(
       BROKEN_ALTERNATE_PROTOCOL_LOCATION_HTTP_STREAM_FACTORY_JOB_ALT);
   session_->http_server_properties()->MarkAlternativeServiceBroken(
-      alternative_service_info_.alternative_service());
+      alternative_service_info_.alternative_service(),
+      request_info_.network_isolation_key);
   // Reset error status for Jobs after reporting brokenness.
   ResetErrorStatusForJobs();
 }
@@ -1010,7 +1012,8 @@
     if (!quic_advertised && alternative_service_info.protocol() == kProtoQUIC)
       quic_advertised = true;
     const bool is_broken = http_server_properties.IsAlternativeServiceBroken(
-        alternative_service_info.alternative_service());
+        alternative_service_info.alternative_service(),
+        request_info.network_isolation_key);
     net_log_.AddEvent(
         NetLogEventType::HTTP_STREAM_JOB_CONTROLLER_ALT_SVC_FOUND, [&] {
           return NetLogAltSvcParams(&alternative_service_info, is_broken);
diff --git a/net/http/http_stream_factory_job_controller_unittest.cc b/net/http/http_stream_factory_job_controller_unittest.cc
index 9d3c052..e03077f 100644
--- a/net/http/http_stream_factory_job_controller_unittest.cc
+++ b/net/http/http_stream_factory_job_controller_unittest.cc
@@ -303,7 +303,8 @@
     EXPECT_EQ(1u, alternative_service_info_vector.size());
     EXPECT_EQ(should_mark_broken,
               session_->http_server_properties()->IsAlternativeServiceBroken(
-                  alternative_service_info_vector[0].alternative_service()));
+                  alternative_service_info_vector[0].alternative_service(),
+                  NetworkIsolationKey()));
   }
 
   void TestAltJobSucceedsAfterMainJobFailed(
@@ -1891,7 +1892,7 @@
   // Now the alt service is marked as broken (e.g. through a different request),
   // so only non-alt job is restarted.
   session_->http_server_properties()->MarkAlternativeServiceBroken(
-      alternative_service);
+      alternative_service, NetworkIsolationKey());
 
   job_controller_->OnStreamFailed(job_factory_.main_job(), ERR_FAILED,
                                   SSLConfig());
diff --git a/net/nqe/throughput_analyzer_unittest.cc b/net/nqe/throughput_analyzer_unittest.cc
index 384b206..0e8d54d 100644
--- a/net/nqe/throughput_analyzer_unittest.cc
+++ b/net/nqe/throughput_analyzer_unittest.cc
@@ -20,8 +20,10 @@
 #include "base/run_loop.h"
 #include "base/single_thread_task_runner.h"
 #include "base/strings/string_number_conversions.h"
+#include "base/test/bind_test_util.h"
 #include "base/test/metrics/histogram_tester.h"
 #include "base/test/simple_test_tick_clock.h"
+#include "base/test/test_timeouts.h"
 #include "base/threading/platform_thread.h"
 #include "base/threading/thread_task_runner_handle.h"
 #include "base/time/default_tick_clock.h"
@@ -704,6 +706,10 @@
 // of network requests overlap, and the minimum number of in flight requests
 // when taking an observation is more than 1.
 TEST_F(ThroughputAnalyzerTest, TestThroughputWithMultipleNetworkRequests) {
+  const base::RunLoop::ScopedRunTimeoutForTest increased_run_timeout(
+      TestTimeouts::action_max_timeout(),
+      base::MakeExpectedNotRunClosure(FROM_HERE, "RunLoop::Run() timed out."));
+
   const base::TickClock* tick_clock = base::DefaultTickClock::GetInstance();
   TestNetworkQualityEstimator network_quality_estimator;
   std::map<std::string, std::string> variation_params;
diff --git a/net/proxy_resolution/network_delegate_error_observer_unittest.cc b/net/proxy_resolution/network_delegate_error_observer_unittest.cc
index 7e970ea..e21b35c 100644
--- a/net/proxy_resolution/network_delegate_error_observer_unittest.cc
+++ b/net/proxy_resolution/network_delegate_error_observer_unittest.cc
@@ -75,11 +75,6 @@
                       bool allowed_from_caller) override {
     return allowed_from_caller;
   }
-  bool OnCanAccessFile(const URLRequest& request,
-                       const base::FilePath& original_path,
-                       const base::FilePath& absolute_path) const override {
-    return true;
-  }
 
   bool got_pac_error_;
 };
diff --git a/net/proxy_resolution/pac_file_fetcher_impl.cc b/net/proxy_resolution/pac_file_fetcher_impl.cc
index 697cfe3..3e038d2 100644
--- a/net/proxy_resolution/pac_file_fetcher_impl.cc
+++ b/net/proxy_resolution/pac_file_fetcher_impl.cc
@@ -105,13 +105,7 @@
 
 std::unique_ptr<PacFileFetcherImpl> PacFileFetcherImpl::Create(
     URLRequestContext* url_request_context) {
-  return base::WrapUnique(new PacFileFetcherImpl(url_request_context, false));
-}
-
-std::unique_ptr<PacFileFetcherImpl>
-PacFileFetcherImpl::CreateWithFileUrlSupport(
-    URLRequestContext* url_request_context) {
-  return base::WrapUnique(new PacFileFetcherImpl(url_request_context, true));
+  return base::WrapUnique(new PacFileFetcherImpl(url_request_context));
 }
 
 PacFileFetcherImpl::~PacFileFetcherImpl() {
@@ -320,8 +314,7 @@
   }
 }
 
-PacFileFetcherImpl::PacFileFetcherImpl(URLRequestContext* url_request_context,
-                                       bool allow_file_url)
+PacFileFetcherImpl::PacFileFetcherImpl(URLRequestContext* url_request_context)
     : url_request_context_(url_request_context),
       buf_(base::MakeRefCounted<IOBuffer>(kBufSize)),
       next_id_(0),
@@ -329,8 +322,7 @@
       result_code_(OK),
       result_text_(nullptr),
       max_response_bytes_(kDefaultMaxResponseBytes),
-      max_duration_(kDefaultMaxDuration),
-      allow_file_url_(allow_file_url) {
+      max_duration_(kDefaultMaxDuration) {
   DCHECK(url_request_context);
 }
 
@@ -339,12 +331,6 @@
   if (url.SchemeIsHTTPOrHTTPS() || url.SchemeIs("ftp") || url.SchemeIs("data"))
     return true;
 
-  // Only permit file:// if |allow_file_url_| was set. file:// should not be
-  // allowed for URLs that were auto-detected, or as the result of a server-side
-  // redirect.
-  if (url.SchemeIsFile())
-    return allow_file_url_;
-
   // Disallow any other URL scheme.
   return false;
 }
diff --git a/net/proxy_resolution/pac_file_fetcher_impl.h b/net/proxy_resolution/pac_file_fetcher_impl.h
index 397bf228..efbba73 100644
--- a/net/proxy_resolution/pac_file_fetcher_impl.h
+++ b/net/proxy_resolution/pac_file_fetcher_impl.h
@@ -50,13 +50,6 @@
   static std::unique_ptr<PacFileFetcherImpl> Create(
       URLRequestContext* url_request_context);
 
-  // Same as Create(), but additionally allows fetching PAC URLs from file://
-  // URLs (provided the URLRequestContext supports it).
-  //
-  // This should not be used in new code (see https://crbug.com/839566).
-  static std::unique_ptr<PacFileFetcherImpl> CreateWithFileUrlSupport(
-      URLRequestContext* url_request_context);
-
   ~PacFileFetcherImpl() override;
 
   // Used by unit-tests to modify the default limits.
@@ -90,8 +83,7 @@
  private:
   enum { kBufSize = 4096 };
 
-  PacFileFetcherImpl(URLRequestContext* url_request_context,
-                     bool allow_file_url);
+  explicit PacFileFetcherImpl(URLRequestContext* url_request_context);
 
   // Returns true if |url| has an acceptable URL scheme (i.e. http://, https://,
   // etc).
@@ -157,8 +149,6 @@
   // The time that the first byte was received.
   base::TimeTicks fetch_time_to_first_byte_;
 
-  const bool allow_file_url_;
-
   // Factory for creating the time-out task. This takes care of revoking
   // outstanding tasks when |this| is deleted.
   base::WeakPtrFactory<PacFileFetcherImpl> weak_factory_{this};
diff --git a/net/proxy_resolution/pac_file_fetcher_impl_unittest.cc b/net/proxy_resolution/pac_file_fetcher_impl_unittest.cc
index 03b9800..89014ef5 100644
--- a/net/proxy_resolution/pac_file_fetcher_impl_unittest.cc
+++ b/net/proxy_resolution/pac_file_fetcher_impl_unittest.cc
@@ -43,17 +43,12 @@
 #include "net/test/test_with_task_environment.h"
 #include "net/traffic_annotation/network_traffic_annotation_test_helper.h"
 #include "net/url_request/url_request_context_storage.h"
-#include "net/url_request/url_request_file_job.h"
 #include "net/url_request/url_request_job_factory_impl.h"
 #include "net/url_request/url_request_test_util.h"
 #include "testing/gmock/include/gmock/gmock.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "testing/platform_test.h"
 
-#if !BUILDFLAG(DISABLE_FILE_SUPPORT)
-#include "net/url_request/file_protocol_handler.h"
-#endif
-
 using net::test::IsError;
 using net::test::IsOk;
 
@@ -112,11 +107,6 @@
         false));
     std::unique_ptr<URLRequestJobFactoryImpl> job_factory =
         std::make_unique<URLRequestJobFactoryImpl>();
-#if !BUILDFLAG(DISABLE_FILE_SUPPORT)
-    job_factory->SetProtocolHandler("file",
-                                    std::make_unique<FileProtocolHandler>(
-                                        base::ThreadTaskRunnerHandle::Get()));
-#endif
     storage_.set_job_factory(std::move(job_factory));
   }
 
@@ -128,10 +118,6 @@
 
 // Get a file:// url relative to net/data/proxy/pac_file_fetcher_unittest.
 GURL GetTestFileUrl(const std::string& relpath) {
-#if BUILDFLAG(DISABLE_FILE_SUPPORT)
-  LOG(WARNING)
-      << "Built a file:// URL to test data, however file support is disabled.";
-#endif  // BUILDFLAG(DISABLE_FILE_SUPPORT)
   base::FilePath path;
   base::PathService::Get(base::DIR_SOURCE_ROOT, &path);
   path = path.AppendASCII("net");
@@ -209,12 +195,6 @@
     return allowed_from_caller;
   }
 
-  bool OnCanAccessFile(const URLRequest& request,
-                       const base::FilePath& original_path,
-                       const base::FilePath& absolute_path) const override {
-    return true;
-  }
-
   DISALLOW_COPY_AND_ASSIGN(BasicNetworkDelegate);
 };
 
@@ -231,45 +211,6 @@
   RequestContext context_;
 };
 
-// Try fetching a non-existent PAC file via file://.
-TEST_F(PacFileFetcherImplTest, FileUrlDoesNotExist) {
-  auto pac_fetcher = PacFileFetcherImpl::CreateWithFileUrlSupport(&context_);
-
-  base::string16 text;
-  TestCompletionCallback callback;
-  int result =
-      pac_fetcher->Fetch(GetTestFileUrl("does-not-exist"), &text,
-                         callback.callback(), TRAFFIC_ANNOTATION_FOR_TESTS);
-
-  EXPECT_THAT(result, IsError(ERR_IO_PENDING));
-  EXPECT_TRUE(text.empty());
-
-#if !BUILDFLAG(DISABLE_FILE_SUPPORT)
-  EXPECT_THAT(callback.WaitForResult(), IsError(ERR_FILE_NOT_FOUND));
-#else
-  EXPECT_THAT(callback.WaitForResult(), IsError(ERR_UNKNOWN_URL_SCHEME));
-#endif  // !BUILDFLAG(DISABLE_FILE_SUPPORT)
-}
-
-TEST_F(PacFileFetcherImplTest, FileUrlExists) {
-  auto pac_fetcher = PacFileFetcherImpl::CreateWithFileUrlSupport(&context_);
-
-  base::string16 text;
-  TestCompletionCallback callback;
-  int result =
-      pac_fetcher->Fetch(GetTestFileUrl("pac.txt"), &text, callback.callback(),
-                         TRAFFIC_ANNOTATION_FOR_TESTS);
-
-  EXPECT_THAT(result, IsError(ERR_IO_PENDING));
-
-#if !BUILDFLAG(DISABLE_FILE_SUPPORT)
-  EXPECT_THAT(callback.WaitForResult(), IsOk());
-  EXPECT_EQ(ASCIIToUTF16("-pac.txt-\n"), text);
-#else
-  EXPECT_THAT(callback.WaitForResult(), IsError(ERR_UNKNOWN_URL_SCHEME));
-#endif  // !BUILDFLAG(DISABLE_FILE_SUPPORT)
-}
-
 TEST_F(PacFileFetcherImplTest, FileUrlNotAllowed) {
   auto pac_fetcher = PacFileFetcherImpl::Create(&context_);
 
@@ -283,15 +224,11 @@
   EXPECT_THAT(result, IsError(ERR_DISALLOWED_URL_SCHEME));
 }
 
-// Even if the fetcher allows file://, a server-side redirect from http -->
-// file:// should not work.
-//
-// It is currently disallowed lower in the stack and results in an
-// ERR_UNSAFE_REDIRECT.
+// Redirect to file URLs are not allowed.
 TEST_F(PacFileFetcherImplTest, RedirectToFileUrl) {
   ASSERT_TRUE(test_server_.Start());
 
-  auto pac_fetcher = PacFileFetcherImpl::CreateWithFileUrlSupport(&context_);
+  auto pac_fetcher = PacFileFetcherImpl::Create(&context_);
 
   GURL url(test_server_.GetURL("/redirect-to-file"));
 
@@ -427,31 +364,21 @@
 TEST_F(PacFileFetcherImplTest, TooLarge) {
   ASSERT_TRUE(test_server_.Start());
 
-  auto pac_fetcher = PacFileFetcherImpl::CreateWithFileUrlSupport(&context_);
+  auto pac_fetcher = PacFileFetcherImpl::Create(&context_);
 
   // Set the maximum response size to 50 bytes.
   int prev_size = pac_fetcher->SetSizeConstraint(50);
 
-  // These two URLs are the same file, but are http:// vs file://
-  GURL urls[] = {
-    test_server_.GetURL("/large-pac.nsproxy"),
-#if !BUILDFLAG(DISABLE_FILE_SUPPORT)
-    GetTestFileUrl("large-pac.nsproxy")
-#endif
-  };
-
-  // Try fetching URLs that are 101 bytes large. We should abort the request
+  // Try fetching URL that is 101 bytes large. We should abort the request
   // after 50 bytes have been read, and fail with a too large error.
-  for (size_t i = 0; i < base::size(urls); ++i) {
-    const GURL& url = urls[i];
-    base::string16 text;
-    TestCompletionCallback callback;
-    int result = pac_fetcher->Fetch(url, &text, callback.callback(),
-                                    TRAFFIC_ANNOTATION_FOR_TESTS);
-    EXPECT_THAT(result, IsError(ERR_IO_PENDING));
-    EXPECT_THAT(callback.WaitForResult(), IsError(ERR_FILE_TOO_BIG));
-    EXPECT_TRUE(text.empty());
-  }
+  GURL url = test_server_.GetURL("/large-pac.nsproxy");
+  base::string16 text;
+  TestCompletionCallback callback;
+  int result = pac_fetcher->Fetch(url, &text, callback.callback(),
+                                  TRAFFIC_ANNOTATION_FOR_TESTS);
+  EXPECT_THAT(result, IsError(ERR_IO_PENDING));
+  EXPECT_THAT(callback.WaitForResult(), IsError(ERR_FILE_TOO_BIG));
+  EXPECT_TRUE(text.empty());
 
   // Restore the original size bound.
   pac_fetcher->SetSizeConstraint(prev_size);
diff --git a/net/quic/quic_network_transaction_unittest.cc b/net/quic/quic_network_transaction_unittest.cc
index 6cc402d4..c435912 100644
--- a/net/quic/quic_network_transaction_unittest.cc
+++ b/net/quic/quic_network_transaction_unittest.cc
@@ -770,13 +770,15 @@
   }
 
   void AddQuicAlternateProtocolMapping(
-      MockCryptoClientStream::HandshakeMode handshake_mode) {
+      MockCryptoClientStream::HandshakeMode handshake_mode,
+      const NetworkIsolationKey& network_isolation_key =
+          NetworkIsolationKey()) {
     crypto_client_stream_factory_.set_handshake_mode(handshake_mode);
     url::SchemeHostPort server(request_.url);
     AlternativeService alternative_service(kProtoQUIC, server.host(), 443);
     base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1);
     http_server_properties_->SetQuicAlternativeService(
-        server, NetworkIsolationKey(), alternative_service, expiration,
+        server, network_isolation_key, alternative_service, expiration,
         supported_versions_);
   }
 
@@ -793,27 +795,33 @@
         supported_versions_);
   }
 
-  void ExpectBrokenAlternateProtocolMapping() {
+  void ExpectBrokenAlternateProtocolMapping(
+      const NetworkIsolationKey& network_isolation_key =
+          NetworkIsolationKey()) {
     const url::SchemeHostPort server(request_.url);
     const AlternativeServiceInfoVector alternative_service_info_vector =
         http_server_properties_->GetAlternativeServiceInfos(
-            server, NetworkIsolationKey());
+            server, network_isolation_key);
     EXPECT_EQ(1u, alternative_service_info_vector.size());
     EXPECT_TRUE(http_server_properties_->IsAlternativeServiceBroken(
-        alternative_service_info_vector[0].alternative_service()));
+        alternative_service_info_vector[0].alternative_service(),
+        network_isolation_key));
   }
 
-  void ExpectQuicAlternateProtocolMapping() {
+  void ExpectQuicAlternateProtocolMapping(
+      const NetworkIsolationKey& network_isolation_key =
+          NetworkIsolationKey()) {
     const url::SchemeHostPort server(request_.url);
     const AlternativeServiceInfoVector alternative_service_info_vector =
         http_server_properties_->GetAlternativeServiceInfos(
-            server, NetworkIsolationKey());
+            server, network_isolation_key);
     EXPECT_EQ(1u, alternative_service_info_vector.size());
     EXPECT_EQ(
         kProtoQUIC,
         alternative_service_info_vector[0].alternative_service().protocol);
     EXPECT_FALSE(http_server_properties_->IsAlternativeServiceBroken(
-        alternative_service_info_vector[0].alternative_service()));
+        alternative_service_info_vector[0].alternative_service(),
+        network_isolation_key));
   }
 
   void AddHangingNonAlternateProtocolSocketData() {
@@ -900,6 +908,67 @@
     SendRequestAndExpectHttpResponseFromProxy("hello from http", true, 443);
   }
 
+  // Adds a new socket data provider for an HTTP request, and runs a request,
+  // expecting it to be used.
+  void AddHttpDataAndRunRequest() {
+    MockWrite http_writes[] = {
+        MockWrite(SYNCHRONOUS, 0, "GET / HTTP/1.1\r\n"),
+        MockWrite(SYNCHRONOUS, 1, "Host: mail.example.org\r\n"),
+        MockWrite(SYNCHRONOUS, 2, "Connection: keep-alive\r\n\r\n")};
+
+    MockRead http_reads[] = {
+        MockRead(SYNCHRONOUS, 3, "HTTP/1.1 200 OK\r\n"),
+        MockRead(SYNCHRONOUS, 4, kQuicAlternativeServiceHeader),
+        MockRead(SYNCHRONOUS, 5, "http used"),
+        // Connection closed.
+        MockRead(SYNCHRONOUS, OK, 6)};
+    SequencedSocketData http_data(http_reads, http_writes);
+    socket_factory_.AddSocketDataProvider(&http_data);
+    SSLSocketDataProvider ssl_data(ASYNC, OK);
+    socket_factory_.AddSSLSocketDataProvider(&ssl_data);
+    SendRequestAndExpectHttpResponse("http used");
+    EXPECT_TRUE(http_data.AllWriteDataConsumed());
+    EXPECT_TRUE(http_data.AllReadDataConsumed());
+  }
+
+  // Adds a new socket data provider for a QUIC request, and runs a request,
+  // expecting it to be used. The new QUIC session is not closed.
+  void AddQuicDataAndRunRequest() {
+    QuicTestPacketMaker client_maker(
+        version_, quic::QuicUtils::CreateRandomConnectionId(&random_generator_),
+        &clock_, kDefaultServerHostName, quic::Perspective::IS_CLIENT,
+        client_headers_include_h2_stream_dependency_);
+    QuicTestPacketMaker server_maker(
+        version_, quic::QuicUtils::CreateRandomConnectionId(&random_generator_),
+        &clock_, kDefaultServerHostName, quic::Perspective::IS_SERVER, false);
+    MockQuicData quic_data(version_);
+    client_maker.SetEncryptionLevel(quic::ENCRYPTION_ZERO_RTT);
+    quic_data.AddWrite(
+        SYNCHRONOUS,
+        client_maker.MakeRequestHeadersPacket(
+            1, GetNthClientInitiatedBidirectionalStreamId(0), true, true,
+            ConvertRequestPriorityToQuicPriority(DEFAULT_PRIORITY),
+            GetRequestHeaders("GET", "https", "/", &client_maker), 0, nullptr));
+    client_maker.SetEncryptionLevel(quic::ENCRYPTION_FORWARD_SECURE);
+    quic_data.AddRead(
+        ASYNC, server_maker.MakeResponseHeadersPacket(
+                   1, GetNthClientInitiatedBidirectionalStreamId(0), false,
+                   false, server_maker.GetResponseHeaders("200 OK"), nullptr));
+    std::string header = ConstructDataHeader(9);
+    quic_data.AddRead(
+        ASYNC, server_maker.MakeDataPacket(
+                   2, GetNthClientInitiatedBidirectionalStreamId(0), false,
+                   true, header + "quic used"));
+    // Don't care about the final ack.
+    quic_data.AddWrite(SYNCHRONOUS, ERR_IO_PENDING);
+    // No more data to read.
+    quic_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
+    quic_data.AddSocketDataToFactory(&socket_factory_);
+    SendRequestAndExpectQuicResponse("quic used");
+
+    EXPECT_TRUE(quic_data.AllReadDataConsumed());
+  }
+
   quic::QuicStreamId GetNthClientInitiatedBidirectionalStreamId(int n) {
     return quic::test::GetNthClientInitiatedBidirectionalStreamId(
         version_.transport_version, n);
@@ -1918,8 +1987,12 @@
 TEST_P(QuicNetworkTransactionTest,
        UseAlternativeServiceForQuicWithNetworkIsolationKey) {
   base::test::ScopedFeatureList feature_list;
-  feature_list.InitAndEnableFeature(
-      features::kPartitionHttpServerPropertiesByNetworkIsolationKey);
+  feature_list.InitWithFeatures(
+      // enabled_features
+      {features::kPartitionHttpServerPropertiesByNetworkIsolationKey,
+       features::kPartitionConnectionsByNetworkIsolationKey},
+      // disabled_features
+      {});
   // Since HttpServerProperties caches the feature value, have to create a new
   // one.
   http_server_properties_ = std::make_unique<HttpServerProperties>();
@@ -2695,6 +2768,149 @@
   ASSERT_TRUE(quic_data2.AllWriteDataConsumed());
 }
 
+// Much like above test, but verifies NetworkIsolationKeys are respected.
+TEST_P(QuicNetworkTransactionTest,
+       RetryOnAlternateNetworkWhileTCPSucceedsWithNetworkIsolationKey) {
+  const url::Origin kOrigin1 = url::Origin::Create(GURL("https://foo.test/"));
+  const net::NetworkIsolationKey kNetworkIsolationKey1(kOrigin1, kOrigin1);
+  const url::Origin kOrigin2 = url::Origin::Create(GURL("https://bar.test/"));
+  const net::NetworkIsolationKey kNetworkIsolationKey2(kOrigin2, kOrigin2);
+
+  base::test::ScopedFeatureList feature_list;
+  feature_list.InitWithFeatures(
+      // enabled_features
+      {features::kPartitionHttpServerPropertiesByNetworkIsolationKey,
+       // Need to partition connections by NetworkIsolationKey for
+       // QuicSessionAliasKey to include NetworkIsolationKeys.
+       features::kPartitionConnectionsByNetworkIsolationKey},
+      // disabled_features
+      {});
+  // Since HttpServerProperties caches the feature value, have to create a new
+  // one.
+  http_server_properties_ = std::make_unique<HttpServerProperties>();
+
+  SetUpTestForRetryConnectionOnAlternateNetwork();
+
+  client_maker_.SetEncryptionLevel(quic::ENCRYPTION_ZERO_RTT);
+
+  // The request will initially go out over QUIC.
+  MockQuicData quic_data(version_);
+  quic_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING);  // Hanging read
+  int packet_num = 1;
+  quic_data.AddWrite(SYNCHRONOUS,
+                     client_maker_.MakeDummyCHLOPacket(packet_num++));  // CHLO
+  // Retranmit the handshake messages.
+  quic_data.AddWrite(SYNCHRONOUS,
+                     client_maker_.MakeDummyCHLOPacket(packet_num++));
+  quic_data.AddWrite(SYNCHRONOUS,
+                     client_maker_.MakeDummyCHLOPacket(packet_num++));
+  quic_data.AddWrite(SYNCHRONOUS,
+                     client_maker_.MakeDummyCHLOPacket(packet_num++));
+  quic_data.AddWrite(SYNCHRONOUS,
+                     client_maker_.MakeDummyCHLOPacket(packet_num++));
+  // TODO(zhongyi): remove condition check once b/115926584 is fixed.
+  if (version_.transport_version <= quic::QUIC_VERSION_39) {
+    quic_data.AddWrite(SYNCHRONOUS,
+                       client_maker_.MakeDummyCHLOPacket(packet_num++));
+  }
+  // After timeout, connection will be closed with QUIC_NETWORK_IDLE_TIMEOUT.
+  quic_data.AddWrite(SYNCHRONOUS,
+                     client_maker_.MakeConnectionClosePacket(
+                         packet_num++, true, quic::QUIC_NETWORK_IDLE_TIMEOUT,
+                         "No recent network activity."));
+  quic_data.AddSocketDataToFactory(&socket_factory_);
+
+  // Add successful TCP data so that TCP job will succeed.
+  MockWrite http_writes[] = {
+      MockWrite(SYNCHRONOUS, 0, "GET / HTTP/1.1\r\n"),
+      MockWrite(SYNCHRONOUS, 1, "Host: mail.example.org\r\n"),
+      MockWrite(SYNCHRONOUS, 2, "Connection: keep-alive\r\n\r\n")};
+
+  MockRead http_reads[] = {
+      MockRead(SYNCHRONOUS, 3, "HTTP/1.1 200 OK\r\n"),
+      MockRead(SYNCHRONOUS, 4, kQuicAlternativeServiceHeader),
+      MockRead(SYNCHRONOUS, 5, "TCP succeeds"), MockRead(SYNCHRONOUS, OK, 6)};
+  SequencedSocketData http_data(http_reads, http_writes);
+  socket_factory_.AddSocketDataProvider(&http_data);
+  socket_factory_.AddSSLSocketDataProvider(&ssl_data_);
+
+  // Quic connection will be retried on the alternate network after the initial
+  // one fails on the default network.
+  MockQuicData quic_data2(version_);
+  quic_data2.AddRead(SYNCHRONOUS, ERR_IO_PENDING);  // Handing read.
+  quic_data2.AddWrite(SYNCHRONOUS,
+                      client_maker_.MakeDummyCHLOPacket(1));  // CHLO
+
+  client_maker_.SetEncryptionLevel(quic::ENCRYPTION_FORWARD_SECURE);
+  if (VersionUsesQpack(version_.transport_version))
+    quic_data2.AddWrite(SYNCHRONOUS, ConstructInitialSettingsPacket(2));
+  quic_data2.AddSocketDataToFactory(&socket_factory_);
+
+  // Resolve the host resolution synchronously.
+  host_resolver_.set_synchronous_mode(true);
+  host_resolver_.rules()->AddIPLiteralRule("mail.example.org", "192.168.0.1",
+                                           "");
+
+  CreateSession();
+  session_->quic_stream_factory()->set_require_confirmation(true);
+  // Use a TestTaskRunner to avoid waiting in real time for timeouts.
+  QuicStreamFactoryPeer::SetAlarmFactory(
+      session_->quic_stream_factory(),
+      std::make_unique<QuicChromiumAlarmFactory>(quic_task_runner_.get(),
+                                                 &clock_));
+  // Add alternate protocol mapping to race QUIC and TCP.
+  // QUIC connection requires handshake to be confirmed and sends CHLO to the
+  // peer.
+  AddQuicAlternateProtocolMapping(
+      MockCryptoClientStream::COLD_START_WITH_CHLO_SENT, kNetworkIsolationKey1);
+  AddQuicAlternateProtocolMapping(
+      MockCryptoClientStream::COLD_START_WITH_CHLO_SENT, kNetworkIsolationKey2);
+
+  request_.network_isolation_key = kNetworkIsolationKey1;
+  HttpNetworkTransaction trans(DEFAULT_PRIORITY, session_.get());
+  TestCompletionCallback callback;
+  int rv = trans.Start(&request_, callback.callback(), net_log_.bound());
+  EXPECT_THAT(rv, IsError(ERR_IO_PENDING));
+
+  // Pump the message loop to get the request started.
+  // Request will be served with TCP job.
+  base::RunLoop().RunUntilIdle();
+  EXPECT_THAT(callback.WaitForResult(), IsOk());
+  CheckResponseData(&trans, "TCP succeeds");
+
+  // Fast forward to idle timeout the original connection. A new connection will
+  // be kicked off on the alternate network.
+  quic_task_runner_->FastForwardBy(quic::QuicTime::Delta::FromSeconds(4));
+  ASSERT_TRUE(quic_data.AllReadDataConsumed());
+  ASSERT_TRUE(quic_data.AllWriteDataConsumed());
+
+  // The second connection hasn't finish handshake, verify that QUIC is not
+  // marked as broken.
+  ExpectQuicAlternateProtocolMapping(kNetworkIsolationKey1);
+  ExpectQuicAlternateProtocolMapping(kNetworkIsolationKey2);
+  // Explicitly confirm the handshake on the second connection.
+  crypto_client_stream_factory_.last_stream()->SendOnCryptoHandshakeEvent(
+      quic::QuicSession::HANDSHAKE_CONFIRMED);
+  // Run message loop to execute posted tasks, which will notify JoController
+  // about the orphaned job status.
+  base::RunLoop().RunUntilIdle();
+
+  // Verify that QUIC is marked as broken for kNetworkIsolationKey1 only.
+  ExpectBrokenAlternateProtocolMapping(kNetworkIsolationKey1);
+  ExpectQuicAlternateProtocolMapping(kNetworkIsolationKey2);
+
+  // Deliver a message to notify the new network becomes default, the previous
+  // brokenness will be clear as the brokenness is bond with old default
+  // network.
+  scoped_mock_change_notifier_->mock_network_change_notifier()
+      ->NotifyNetworkMadeDefault(kNewNetworkForTests);
+  ExpectQuicAlternateProtocolMapping(kNetworkIsolationKey1);
+  ExpectQuicAlternateProtocolMapping(kNetworkIsolationKey2);
+
+  ASSERT_TRUE(quic_data2.AllReadDataConsumed());
+  ASSERT_TRUE(quic_data2.AllWriteDataConsumed());
+}
+
 // This test verifies that a new QUIC connection will be attempted on the
 // alternate network if the original QUIC connection fails with idle timeout
 // before handshake is confirmed. If TCP doesn't succeed but QUIC on the
@@ -3354,6 +3570,128 @@
   ASSERT_TRUE(http_data.AllReadDataConsumed());
 }
 
+// Much like above test, but verifies that NetworkIsolationKey is respected.
+TEST_P(QuicNetworkTransactionTest,
+       ProtocolErrorAfterHandshakeConfirmedThenBrokenWithNetworkIsolationKey) {
+  const url::Origin kOrigin1 = url::Origin::Create(GURL("https://foo.test/"));
+  const net::NetworkIsolationKey kNetworkIsolationKey1(kOrigin1, kOrigin1);
+  const url::Origin kOrigin2 = url::Origin::Create(GURL("https://bar.test/"));
+  const net::NetworkIsolationKey kNetworkIsolationKey2(kOrigin2, kOrigin2);
+
+  base::test::ScopedFeatureList feature_list;
+  feature_list.InitWithFeatures(
+      // enabled_features
+      {features::kPartitionHttpServerPropertiesByNetworkIsolationKey,
+       features::kPartitionConnectionsByNetworkIsolationKey},
+      // disabled_features
+      {});
+  // Since HttpServerProperties caches the feature value, have to create a new
+  // one.
+  http_server_properties_ = std::make_unique<HttpServerProperties>();
+
+  session_params_.quic_params.idle_connection_timeout =
+      base::TimeDelta::FromSeconds(5);
+
+  // The request will initially go out over QUIC.
+  MockQuicData quic_data(version_);
+  client_maker_.SetEncryptionLevel(quic::ENCRYPTION_ZERO_RTT);
+  quic_data.AddWrite(SYNCHRONOUS,
+                     ConstructClientRequestHeadersPacket(
+                         1, GetNthClientInitiatedBidirectionalStreamId(0), true,
+                         true, GetRequestHeaders("GET", "https", "/")));
+  client_maker_.SetEncryptionLevel(quic::ENCRYPTION_FORWARD_SECURE);
+  uint64_t packet_number = 2;
+  quic_data.AddRead(ASYNC, ERR_IO_PENDING);  // Pause
+
+  // Peer sending data from an non-existing stream causes this end to raise
+  // error and close connection.
+  quic_data.AddRead(
+      ASYNC, ConstructServerRstPacket(
+                 1, false, GetNthClientInitiatedBidirectionalStreamId(47),
+                 quic::QUIC_STREAM_LAST_ERROR));
+  std::string quic_error_details = "Data for nonexistent stream";
+  quic_data.AddWrite(
+      SYNCHRONOUS, ConstructClientAckAndConnectionClosePacket(
+                       packet_number++, quic::QuicTime::Delta::Zero(), 1, 1, 1,
+                       quic::QUIC_INVALID_STREAM_ID, quic_error_details,
+                       quic::IETF_RST_STREAM));
+  quic_data.AddSocketDataToFactory(&socket_factory_);
+
+  // After that fails, it will be resent via TCP.
+  MockWrite http_writes[] = {
+      MockWrite(SYNCHRONOUS, 0, "GET / HTTP/1.1\r\n"),
+      MockWrite(SYNCHRONOUS, 1, "Host: mail.example.org\r\n"),
+      MockWrite(SYNCHRONOUS, 2, "Connection: keep-alive\r\n\r\n")};
+
+  MockRead http_reads[] = {
+      MockRead(SYNCHRONOUS, 3, "HTTP/1.1 200 OK\r\n"),
+      MockRead(SYNCHRONOUS, 4, kQuicAlternativeServiceHeader),
+      MockRead(SYNCHRONOUS, 5, "hello world"), MockRead(SYNCHRONOUS, OK, 6)};
+  SequencedSocketData http_data(http_reads, http_writes);
+  socket_factory_.AddSocketDataProvider(&http_data);
+  socket_factory_.AddSSLSocketDataProvider(&ssl_data_);
+
+  // In order for a new QUIC session to be established via alternate-protocol
+  // without racing an HTTP connection, we need the host resolution to happen
+  // synchronously.  Of course, even though QUIC *could* perform a 0-RTT
+  // connection to the the server, in this test we require confirmation
+  // before encrypting so the HTTP job will still start.
+  host_resolver_.set_synchronous_mode(true);
+  host_resolver_.rules()->AddIPLiteralRule("mail.example.org", "192.168.0.1",
+                                           "");
+
+  CreateSession();
+
+  AddQuicAlternateProtocolMapping(MockCryptoClientStream::ZERO_RTT,
+                                  kNetworkIsolationKey1);
+  AddQuicAlternateProtocolMapping(MockCryptoClientStream::ZERO_RTT,
+                                  kNetworkIsolationKey2);
+
+  HttpNetworkTransaction trans(DEFAULT_PRIORITY, session_.get());
+  TestCompletionCallback callback;
+  request_.network_isolation_key = kNetworkIsolationKey1;
+  int rv = trans.Start(&request_, callback.callback(), net_log_.bound());
+  EXPECT_THAT(rv, IsError(ERR_IO_PENDING));
+
+  // Pump the message loop to get the request started.
+  base::RunLoop().RunUntilIdle();
+  // Explicitly confirm the handshake.
+  crypto_client_stream_factory_.last_stream()->SendOnCryptoHandshakeEvent(
+      quic::QuicSession::HANDSHAKE_CONFIRMED);
+  quic_data.Resume();
+
+  // Run the QUIC session to completion.
+  base::RunLoop().RunUntilIdle();
+  ASSERT_TRUE(quic_data.AllWriteDataConsumed());
+
+  // Let the transaction proceed which will result in QUIC being marked
+  // as broken and the request falling back to TCP.
+  EXPECT_THAT(callback.WaitForResult(), IsOk());
+  ASSERT_TRUE(quic_data.AllWriteDataConsumed());
+  ASSERT_FALSE(http_data.AllReadDataConsumed());
+
+  // Read the response body over TCP.
+  CheckResponseData(&trans, "hello world");
+  ASSERT_TRUE(http_data.AllWriteDataConsumed());
+  ASSERT_TRUE(http_data.AllReadDataConsumed());
+
+  // The alternative service shouldhave been marked as broken under
+  // kNetworkIsolationKey1 but not kNetworkIsolationKey2.
+  ExpectBrokenAlternateProtocolMapping(kNetworkIsolationKey1);
+  ExpectQuicAlternateProtocolMapping(kNetworkIsolationKey2);
+
+  // Subsequent requests using kNetworkIsolationKey1 should not use QUIC.
+  AddHttpDataAndRunRequest();
+  // Requests using other NetworkIsolationKeys can still use QUIC.
+  request_.network_isolation_key = kNetworkIsolationKey2;
+  AddQuicDataAndRunRequest();
+
+  // The last two requests should not have changed the alternative service
+  // mappings.
+  ExpectBrokenAlternateProtocolMapping(kNetworkIsolationKey1);
+  ExpectQuicAlternateProtocolMapping(kNetworkIsolationKey2);
+}
+
 // Verify that with retry_without_alt_svc_on_quic_errors enabled, if a QUIC
 // request is reset from, then QUIC will be marked as broken and the request
 // retried over TCP.
@@ -3509,14 +3847,15 @@
                                                   NetworkIsolationKey(),
                                                   alternative_services);
 
-  http_server_properties_->MarkAlternativeServiceBroken(local_alternative);
+  http_server_properties_->MarkAlternativeServiceBroken(local_alternative,
+                                                        NetworkIsolationKey());
 
   SendRequestAndExpectQuicResponse("hello!");
 }
 
 // Verify that with retry_without_alt_svc_on_quic_errors enabled, if a QUIC
 // request is reset from, then QUIC will be marked as broken and the request
-// retried over TCP. Then, subsequent requests will go over a new QUIC
+// retried over TCP. Then, subsequent requests will go over a new TCP
 // connection instead of going back to the broken QUIC connection.
 // This is a regression tests for crbug/731303.
 TEST_P(QuicNetworkTransactionTest,
@@ -3629,16 +3968,17 @@
 
   // Second request pools to existing connection with same destination,
   // because certificate matches, even though quic::QuicServerId is different.
-  // After it is reset, it will fail back to QUIC and mark QUIC as broken.
+  // After it is reset, it will fail back to TCP and mark QUIC as broken.
   request_.url = origin2;
   SendRequestAndExpectHttpResponse("hello world");
-  EXPECT_FALSE(
-      http_server_properties_->IsAlternativeServiceBroken(alternative1))
+  EXPECT_FALSE(http_server_properties_->IsAlternativeServiceBroken(
+      alternative1, NetworkIsolationKey()))
       << alternative1.ToString();
-  EXPECT_TRUE(http_server_properties_->IsAlternativeServiceBroken(alternative2))
+  EXPECT_TRUE(http_server_properties_->IsAlternativeServiceBroken(
+      alternative2, NetworkIsolationKey()))
       << alternative2.ToString();
 
-  // The third request should use a new QUIC connection, not the broken
+  // The third request should use a new TCP connection, not the broken
   // QUIC connection.
   SendRequestAndExpectHttpResponse("hello world");
 }
@@ -4222,9 +4562,9 @@
   AlternativeService alternative_service(kProtoQUIC,
                                          HostPortPair::FromURL(request_.url));
   http_server_properties_->MarkAlternativeServiceRecentlyBroken(
-      alternative_service);
+      alternative_service, NetworkIsolationKey());
   EXPECT_TRUE(http_server_properties_->WasAlternativeServiceRecentlyBroken(
-      alternative_service));
+      alternative_service, NetworkIsolationKey()));
 
   SendRequestAndExpectHttpResponse("hello world");
   SendRequestAndExpectQuicResponse("hello!");
@@ -4232,12 +4572,99 @@
   mock_quic_data.Resume();
 
   EXPECT_FALSE(http_server_properties_->WasAlternativeServiceRecentlyBroken(
-      alternative_service));
+      alternative_service, NetworkIsolationKey()));
   EXPECT_NE(nullptr, http_server_properties_->GetServerNetworkStats(
                          url::SchemeHostPort("https", request_.url.host(), 443),
                          NetworkIsolationKey()));
 }
 
+TEST_P(QuicNetworkTransactionTest,
+       ConfirmAlternativeServiceWithNetworkIsolationKey) {
+  const url::Origin kOrigin1 = url::Origin::Create(GURL("https://foo.test/"));
+  const net::NetworkIsolationKey kNetworkIsolationKey1(kOrigin1, kOrigin1);
+  const url::Origin kOrigin2 = url::Origin::Create(GURL("https://bar.test/"));
+  const net::NetworkIsolationKey kNetworkIsolationKey2(kOrigin2, kOrigin2);
+
+  base::test::ScopedFeatureList feature_list;
+  feature_list.InitWithFeatures(
+      // enabled_features
+      {features::kPartitionHttpServerPropertiesByNetworkIsolationKey,
+       features::kPartitionConnectionsByNetworkIsolationKey},
+      // disabled_features
+      {});
+  // Since HttpServerProperties caches the feature value, have to create a new
+  // one.
+  http_server_properties_ = std::make_unique<HttpServerProperties>();
+
+  MockRead http_reads[] = {
+      MockRead("HTTP/1.1 200 OK\r\n"), MockRead(kQuicAlternativeServiceHeader),
+      MockRead("hello world"),
+      MockRead(SYNCHRONOUS, ERR_TEST_PEER_CLOSE_AFTER_NEXT_MOCK_READ),
+      MockRead(ASYNC, OK)};
+
+  StaticSocketDataProvider http_data(http_reads, base::span<MockWrite>());
+  socket_factory_.AddSocketDataProvider(&http_data);
+  AddCertificate(&ssl_data_);
+  socket_factory_.AddSSLSocketDataProvider(&ssl_data_);
+
+  MockQuicData mock_quic_data(version_);
+  int packet_num = 1;
+  if (VersionUsesQpack(version_.transport_version)) {
+    mock_quic_data.AddWrite(SYNCHRONOUS,
+                            ConstructInitialSettingsPacket(packet_num++));
+  }
+  mock_quic_data.AddWrite(
+      SYNCHRONOUS,
+      ConstructClientRequestHeadersPacket(
+          packet_num++, GetNthClientInitiatedBidirectionalStreamId(0), true,
+          true, GetRequestHeaders("GET", "https", "/")));
+  mock_quic_data.AddRead(
+      ASYNC, ConstructServerResponseHeadersPacket(
+                 1, GetNthClientInitiatedBidirectionalStreamId(0), false, false,
+                 GetResponseHeaders("200 OK")));
+  std::string header = ConstructDataHeader(6);
+  mock_quic_data.AddRead(
+      ASYNC, ConstructServerDataPacket(
+                 2, GetNthClientInitiatedBidirectionalStreamId(0), false, true,
+                 header + "hello!"));
+  mock_quic_data.AddWrite(SYNCHRONOUS,
+                          ConstructClientAckPacket(packet_num++, 2, 1, 1));
+  mock_quic_data.AddRead(ASYNC, ERR_IO_PENDING);  // No more data to read
+  mock_quic_data.AddRead(ASYNC, 0);               // EOF
+
+  mock_quic_data.AddSocketDataToFactory(&socket_factory_);
+
+  CreateSession();
+
+  AlternativeService alternative_service(kProtoQUIC,
+                                         HostPortPair::FromURL(request_.url));
+  http_server_properties_->MarkAlternativeServiceRecentlyBroken(
+      alternative_service, kNetworkIsolationKey1);
+  http_server_properties_->MarkAlternativeServiceRecentlyBroken(
+      alternative_service, kNetworkIsolationKey2);
+  EXPECT_TRUE(http_server_properties_->WasAlternativeServiceRecentlyBroken(
+      alternative_service, kNetworkIsolationKey1));
+  EXPECT_TRUE(http_server_properties_->WasAlternativeServiceRecentlyBroken(
+      alternative_service, kNetworkIsolationKey2));
+
+  request_.network_isolation_key = kNetworkIsolationKey1;
+  SendRequestAndExpectHttpResponse("hello world");
+  SendRequestAndExpectQuicResponse("hello!");
+
+  mock_quic_data.Resume();
+
+  EXPECT_FALSE(http_server_properties_->WasAlternativeServiceRecentlyBroken(
+      alternative_service, kNetworkIsolationKey1));
+  EXPECT_NE(nullptr, http_server_properties_->GetServerNetworkStats(
+                         url::SchemeHostPort("https", request_.url.host(), 443),
+                         kNetworkIsolationKey1));
+  EXPECT_TRUE(http_server_properties_->WasAlternativeServiceRecentlyBroken(
+      alternative_service, kNetworkIsolationKey2));
+  EXPECT_EQ(nullptr, http_server_properties_->GetServerNetworkStats(
+                         url::SchemeHostPort("https", request_.url.host(), 443),
+                         kNetworkIsolationKey2));
+}
+
 TEST_P(QuicNetworkTransactionTest, UseAlternativeServiceForQuicForHttps) {
   MockRead http_reads[] = {
       MockRead("HTTP/1.1 200 OK\r\n"), MockRead(kQuicAlternativeServiceHeader),
@@ -4970,6 +5397,57 @@
   ExpectBrokenAlternateProtocolMapping();
 }
 
+TEST_P(QuicNetworkTransactionTest,
+       BrokenAlternateProtocolWithNetworkIsolationKey) {
+  const url::Origin kOrigin1 = url::Origin::Create(GURL("https://foo.test/"));
+  const net::NetworkIsolationKey kNetworkIsolationKey1(kOrigin1, kOrigin1);
+  const url::Origin kOrigin2 = url::Origin::Create(GURL("https://bar.test/"));
+  const net::NetworkIsolationKey kNetworkIsolationKey2(kOrigin2, kOrigin2);
+
+  base::test::ScopedFeatureList feature_list;
+  feature_list.InitWithFeatures(
+      // enabled_features
+      {features::kPartitionHttpServerPropertiesByNetworkIsolationKey,
+       features::kPartitionConnectionsByNetworkIsolationKey},
+      // disabled_features
+      {});
+  // Since HttpServerProperties caches the feature value, have to create a new
+  // one.
+  http_server_properties_ = std::make_unique<HttpServerProperties>();
+
+  // Alternate-protocol job
+  std::unique_ptr<quic::QuicEncryptedPacket> close(
+      ConstructServerConnectionClosePacket(1));
+  MockRead quic_reads[] = {
+      MockRead(ASYNC, close->data(), close->length()),
+      MockRead(ASYNC, ERR_IO_PENDING),  // No more data to read
+      MockRead(ASYNC, OK),              // EOF
+  };
+  StaticSocketDataProvider quic_data(quic_reads, base::span<MockWrite>());
+  socket_factory_.AddSocketDataProvider(&quic_data);
+
+  // Main job which will succeed even though the alternate job fails.
+  MockRead http_reads[] = {
+      MockRead("HTTP/1.1 200 OK\r\n\r\n"), MockRead("hello from http"),
+      MockRead(SYNCHRONOUS, ERR_TEST_PEER_CLOSE_AFTER_NEXT_MOCK_READ),
+      MockRead(ASYNC, OK)};
+
+  StaticSocketDataProvider http_data(http_reads, base::span<MockWrite>());
+  socket_factory_.AddSocketDataProvider(&http_data);
+  socket_factory_.AddSSLSocketDataProvider(&ssl_data_);
+
+  CreateSession();
+  AddQuicAlternateProtocolMapping(
+      MockCryptoClientStream::COLD_START_WITH_CHLO_SENT, kNetworkIsolationKey1);
+  AddQuicAlternateProtocolMapping(
+      MockCryptoClientStream::COLD_START_WITH_CHLO_SENT, kNetworkIsolationKey2);
+  request_.network_isolation_key = kNetworkIsolationKey1;
+  SendRequestAndExpectHttpResponse("hello from http");
+
+  ExpectBrokenAlternateProtocolMapping(kNetworkIsolationKey1);
+  ExpectQuicAlternateProtocolMapping(kNetworkIsolationKey2);
+}
+
 TEST_P(QuicNetworkTransactionTest, BrokenAlternateProtocolReadError) {
   // Alternate-protocol job
   MockRead quic_reads[] = {
@@ -5209,7 +5687,6 @@
   socket_factory_.AddSocketDataProvider(&http_data);
   socket_factory_.AddSSLSocketDataProvider(&ssl_data_);
 
-  AddHangingNonAlternateProtocolSocketData();
   CreateSession();
 
   AddQuicAlternateProtocolMapping(MockCryptoClientStream::ZERO_RTT);
@@ -5222,6 +5699,72 @@
   EXPECT_TRUE(quic_data.AllWriteDataConsumed());
 }
 
+TEST_P(QuicNetworkTransactionTest,
+       FailedZeroRttBrokenAlternateProtocolWithNetworkIsolationKey) {
+  base::test::ScopedFeatureList feature_list;
+  feature_list.InitWithFeatures(
+      // enabled_features
+      {features::kPartitionHttpServerPropertiesByNetworkIsolationKey,
+       features::kPartitionConnectionsByNetworkIsolationKey},
+      // disabled_features
+      {});
+  // Since HttpServerProperties caches the feature value, have to create a new
+  // one.
+  http_server_properties_ = std::make_unique<HttpServerProperties>();
+
+  const url::Origin kOrigin1 = url::Origin::Create(GURL("https://foo.test/"));
+  const net::NetworkIsolationKey kNetworkIsolationKey1(kOrigin1, kOrigin1);
+  const url::Origin kOrigin2 = url::Origin::Create(GURL("https://bar.test/"));
+  const net::NetworkIsolationKey kNetworkIsolationKey2(kOrigin2, kOrigin2);
+
+  // Alternate-protocol job
+  MockRead quic_reads[] = {
+      MockRead(ASYNC, ERR_SOCKET_NOT_CONNECTED),
+  };
+  StaticSocketDataProvider quic_data(quic_reads, base::span<MockWrite>());
+  socket_factory_.AddSocketDataProvider(&quic_data);
+
+  // Second Alternate-protocol job which will race with the TCP job.
+  StaticSocketDataProvider quic_data2(quic_reads, base::span<MockWrite>());
+  socket_factory_.AddSocketDataProvider(&quic_data2);
+
+  // Final job that will proceed when the QUIC job fails.
+  MockRead http_reads[] = {
+      MockRead("HTTP/1.1 200 OK\r\n\r\n"), MockRead("hello from http"),
+      MockRead(SYNCHRONOUS, ERR_TEST_PEER_CLOSE_AFTER_NEXT_MOCK_READ),
+      MockRead(ASYNC, OK)};
+
+  StaticSocketDataProvider http_data(http_reads, base::span<MockWrite>());
+  socket_factory_.AddSocketDataProvider(&http_data);
+  socket_factory_.AddSSLSocketDataProvider(&ssl_data_);
+
+  CreateSession();
+
+  AddQuicAlternateProtocolMapping(MockCryptoClientStream::ZERO_RTT,
+                                  kNetworkIsolationKey1);
+  AddQuicAlternateProtocolMapping(MockCryptoClientStream::ZERO_RTT,
+                                  kNetworkIsolationKey2);
+
+  request_.network_isolation_key = kNetworkIsolationKey1;
+  SendRequestAndExpectHttpResponse("hello from http");
+  EXPECT_TRUE(quic_data.AllReadDataConsumed());
+  EXPECT_TRUE(quic_data.AllWriteDataConsumed());
+
+  ExpectBrokenAlternateProtocolMapping(kNetworkIsolationKey1);
+  ExpectQuicAlternateProtocolMapping(kNetworkIsolationKey2);
+
+  // Subsequent requests using kNetworkIsolationKey1 should not use QUIC.
+  AddHttpDataAndRunRequest();
+  // Requests using other NetworkIsolationKeys can still use QUIC.
+  request_.network_isolation_key = kNetworkIsolationKey2;
+  AddQuicDataAndRunRequest();
+
+  // The last two requests should not have changed the alternative service
+  // mappings.
+  ExpectBrokenAlternateProtocolMapping(kNetworkIsolationKey1);
+  ExpectQuicAlternateProtocolMapping(kNetworkIsolationKey2);
+}
+
 TEST_P(QuicNetworkTransactionTest, DISABLED_HangingZeroRttFallback) {
   // Alternate-protocol job
   MockRead quic_reads[] = {
diff --git a/net/quic/quic_stream_factory.cc b/net/quic/quic_stream_factory.cc
index adf37e73..96ee77d 100644
--- a/net/quic/quic_stream_factory.cc
+++ b/net/quic/quic_stream_factory.cc
@@ -1415,7 +1415,7 @@
   QuicSessionAliasKey key(destination, session_key);
   std::unique_ptr<Job> job =
       std::make_unique<Job>(this, quic_version, host_resolver_, key,
-                            WasQuicRecentlyBroken(session_key.server_id()),
+                            WasQuicRecentlyBroken(session_key),
                             params_.retry_on_alternate_network_before_handshake,
                             params_.race_stale_dns_on_connection, priority,
                             cert_verify_flags, net_log);
@@ -2028,11 +2028,12 @@
 }
 
 bool QuicStreamFactory::WasQuicRecentlyBroken(
-    const quic::QuicServerId& server_id) const {
+    const QuicSessionKey& session_key) const {
   const AlternativeService alternative_service(
-      kProtoQUIC, HostPortPair(server_id.host(), server_id.port()));
+      kProtoQUIC, HostPortPair(session_key.server_id().host(),
+                               session_key.server_id().port()));
   return http_server_properties_->WasAlternativeServiceRecentlyBroken(
-      alternative_service);
+      alternative_service, session_key.network_isolation_key());
 }
 
 bool QuicStreamFactory::CryptoConfigCacheIsEmpty(
@@ -2103,11 +2104,16 @@
 
   url::SchemeHostPort server("https", server_id.host(), server_id.port());
   // Do nothing if QUIC is currently marked as broken.
-  if (http_server_properties_->IsAlternativeServiceBroken(alternative_service))
+  if (http_server_properties_->IsAlternativeServiceBroken(
+          alternative_service,
+          session->quic_session_key().network_isolation_key())) {
     return;
+  }
 
   if (session->IsCryptoHandshakeConfirmed()) {
-    http_server_properties_->ConfirmAlternativeService(alternative_service);
+    http_server_properties_->ConfirmAlternativeService(
+        alternative_service,
+        session->quic_session_key().network_isolation_key());
     ServerNetworkStats network_stats;
     network_stats.srtt = base::TimeDelta::FromMicroseconds(stats.srtt_us);
     network_stats.bandwidth_estimate = stats.estimated_bandwidth;
@@ -2138,7 +2144,7 @@
   // avoid not using QUIC when we otherwise could, we mark it as recently
   // broken, which means that 0-RTT will be disabled but we'll still race.
   http_server_properties_->MarkAlternativeServiceRecentlyBroken(
-      alternative_service);
+      alternative_service, session->quic_session_key().network_isolation_key());
 }
 
 }  // namespace net
diff --git a/net/quic/quic_stream_factory.h b/net/quic/quic_stream_factory.h
index e1b2adb..f46d1673 100644
--- a/net/quic/quic_stream_factory.h
+++ b/net/quic/quic_stream_factory.h
@@ -544,7 +544,7 @@
       const NetworkIsolationKey& network_isolation_key) const;
 
   // Helper methods.
-  bool WasQuicRecentlyBroken(const quic::QuicServerId& server_id) const;
+  bool WasQuicRecentlyBroken(const QuicSessionKey& session_key) const;
 
   bool CryptoConfigCacheIsEmpty(const quic::QuicServerId& server_id);
 
diff --git a/net/test/url_request/url_request_mock_http_job.cc b/net/test/url_request/url_request_mock_http_job.cc
index 97063f31..1473b31 100644
--- a/net/test/url_request/url_request_mock_http_job.cc
+++ b/net/test/url_request/url_request_mock_http_job.cc
@@ -127,7 +127,7 @@
 URLRequestMockHTTPJob::URLRequestMockHTTPJob(URLRequest* request,
                                              NetworkDelegate* network_delegate,
                                              const base::FilePath& file_path)
-    : URLRequestFileJob(
+    : URLRequestTestJobBackedByFile(
           request,
           network_delegate,
           file_path,
@@ -145,8 +145,8 @@
     GURL* location,
     int* http_status_code,
     bool* insecure_scheme_was_upgraded) {
-  // Override the URLRequestFileJob implementation to invoke the default
-  // one based on HttpResponseInfo.
+  // Override the URLRequestTestJobBackedByFile implementation to invoke the
+  // default one based on HttpResponseInfo.
   return URLRequestJob::IsRedirectResponse(location, http_status_code,
                                            insecure_scheme_was_upgraded);
 }
@@ -173,7 +173,7 @@
   base::ReplaceSubstringsAfterOffset(
       &raw_headers_, 0, "\n", base::StringPiece("\0", 1));
   total_received_bytes_ += raw_headers_.size();
-  URLRequestFileJob::Start();
+  URLRequestTestJobBackedByFile::Start();
 }
 
 // Private const version.
diff --git a/net/test/url_request/url_request_mock_http_job.h b/net/test/url_request/url_request_mock_http_job.h
index 9c35bf95..905cfc71 100644
--- a/net/test/url_request/url_request_mock_http_job.h
+++ b/net/test/url_request/url_request_mock_http_job.h
@@ -13,7 +13,7 @@
 #include <string>
 
 #include "base/macros.h"
-#include "net/url_request/url_request_file_job.h"
+#include "net/test/url_request/url_request_test_job_backed_by_file.h"
 #include "url/gurl.h"
 
 namespace base {
@@ -26,7 +26,7 @@
 
 namespace net {
 
-class URLRequestMockHTTPJob : public URLRequestFileJob {
+class URLRequestMockHTTPJob : public URLRequestTestJobBackedByFile {
  public:
   // Note that all file I/O is done using ThreadPool.
   URLRequestMockHTTPJob(URLRequest* request,
diff --git a/net/test/url_request/url_request_test_job_backed_by_file.cc b/net/test/url_request/url_request_test_job_backed_by_file.cc
new file mode 100644
index 0000000..68edacec
--- /dev/null
+++ b/net/test/url_request/url_request_test_job_backed_by_file.cc
@@ -0,0 +1,270 @@
+// Copyright (c) 2012 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// For loading files, we make use of overlapped i/o to ensure that reading from
+// the filesystem (e.g., a network filesystem) does not block the calling
+// thread.  An alternative approach would be to use a background thread or pool
+// of threads, but it seems better to leverage the operating system's ability
+// to do background file reads for us.
+//
+// Since overlapped reads require a 'static' buffer for the duration of the
+// asynchronous read, the URLRequestTestJobBackedByFile keeps a buffer as a
+// member var.  In URLRequestTestJobBackedByFile::Read, data is simply copied
+// from the object's buffer into the given buffer.  If there is no data to copy,
+// the URLRequestTestJobBackedByFile attempts to read more from the file to fill
+// its buffer.  If reading from the file does not complete synchronously, then
+// the URLRequestTestJobBackedByFile waits for a signal from the OS that the
+// overlapped read has completed.  It does so by leveraging the
+// MessageLoop::WatchObject API.
+
+#include "net/test/url_request/url_request_test_job_backed_by_file.h"
+
+#include "base/bind.h"
+#include "base/compiler_specific.h"
+#include "base/files/file_util.h"
+#include "base/metrics/histogram_macros.h"
+#include "base/strings/string_util.h"
+#include "base/strings/stringprintf.h"
+#include "base/synchronization/lock.h"
+#include "base/task_runner.h"
+#include "base/threading/thread_restrictions.h"
+#include "build/build_config.h"
+#include "net/base/file_stream.h"
+#include "net/base/filename_util.h"
+#include "net/base/io_buffer.h"
+#include "net/base/load_flags.h"
+#include "net/base/mime_util.h"
+#include "net/filter/gzip_source_stream.h"
+#include "net/filter/source_stream.h"
+#include "net/http/http_util.h"
+#include "net/url_request/url_request_error_job.h"
+#include "url/gurl.h"
+
+#if defined(OS_WIN)
+#include "base/win/shortcut.h"
+#endif
+
+namespace net {
+
+URLRequestTestJobBackedByFile::FileMetaInfo::FileMetaInfo()
+    : file_size(0),
+      mime_type_result(false),
+      file_exists(false),
+      is_directory(false) {}
+
+URLRequestTestJobBackedByFile::URLRequestTestJobBackedByFile(
+    URLRequest* request,
+    NetworkDelegate* network_delegate,
+    const base::FilePath& file_path,
+    const scoped_refptr<base::TaskRunner>& file_task_runner)
+    : URLRequestJob(request, network_delegate),
+      file_path_(file_path),
+      stream_(new FileStream(file_task_runner)),
+      file_task_runner_(file_task_runner),
+      remaining_bytes_(0),
+      range_parse_result_(OK) {}
+
+void URLRequestTestJobBackedByFile::Start() {
+  FileMetaInfo* meta_info = new FileMetaInfo();
+  file_task_runner_->PostTaskAndReply(
+      FROM_HERE,
+      base::BindOnce(&URLRequestTestJobBackedByFile::FetchMetaInfo, file_path_,
+                     base::Unretained(meta_info)),
+      base::BindOnce(&URLRequestTestJobBackedByFile::DidFetchMetaInfo,
+                     weak_ptr_factory_.GetWeakPtr(), base::Owned(meta_info)));
+}
+
+void URLRequestTestJobBackedByFile::Kill() {
+  stream_.reset();
+  weak_ptr_factory_.InvalidateWeakPtrs();
+
+  URLRequestJob::Kill();
+}
+
+int URLRequestTestJobBackedByFile::ReadRawData(IOBuffer* dest, int dest_size) {
+  DCHECK_NE(dest_size, 0);
+  DCHECK_GE(remaining_bytes_, 0);
+
+  if (remaining_bytes_ < dest_size)
+    dest_size = remaining_bytes_;
+
+  // If we should copy zero bytes because |remaining_bytes_| is zero, short
+  // circuit here.
+  if (!dest_size)
+    return 0;
+
+  int rv = stream_->Read(dest, dest_size,
+                         base::BindOnce(&URLRequestTestJobBackedByFile::DidRead,
+                                        weak_ptr_factory_.GetWeakPtr(),
+                                        base::WrapRefCounted(dest)));
+  if (rv >= 0) {
+    remaining_bytes_ -= rv;
+    DCHECK_GE(remaining_bytes_, 0);
+  }
+
+  return rv;
+}
+
+bool URLRequestTestJobBackedByFile::GetMimeType(std::string* mime_type) const {
+  DCHECK(request_);
+  if (meta_info_.mime_type_result) {
+    *mime_type = meta_info_.mime_type;
+    return true;
+  }
+  return false;
+}
+
+void URLRequestTestJobBackedByFile::SetExtraRequestHeaders(
+    const HttpRequestHeaders& headers) {
+  std::string range_header;
+  if (headers.GetHeader(HttpRequestHeaders::kRange, &range_header)) {
+    // This job only cares about the Range header. This method stashes the value
+    // for later use in DidOpen(), which is responsible for some of the range
+    // validation as well. NotifyStartError is not legal to call here since
+    // the job has not started.
+    std::vector<HttpByteRange> ranges;
+    if (HttpUtil::ParseRangeHeader(range_header, &ranges)) {
+      if (ranges.size() == 1) {
+        byte_range_ = ranges[0];
+      } else {
+        // We don't support multiple range requests in one single URL request,
+        // because we need to do multipart encoding here.
+        // TODO(hclam): decide whether we want to support multiple range
+        // requests.
+        range_parse_result_ = ERR_REQUEST_RANGE_NOT_SATISFIABLE;
+      }
+    }
+  }
+}
+
+void URLRequestTestJobBackedByFile::GetResponseInfo(HttpResponseInfo* info) {
+  if (!serve_mime_type_as_content_type_ || !meta_info_.mime_type_result)
+    return;
+  auto headers =
+      base::MakeRefCounted<net::HttpResponseHeaders>("HTTP/1.1 200 OK");
+  headers->AddHeader(base::StringPrintf("%s: %s",
+                                        net::HttpRequestHeaders::kContentType,
+                                        meta_info_.mime_type.c_str()));
+  info->headers = headers;
+}
+
+void URLRequestTestJobBackedByFile::OnOpenComplete(int result) {}
+
+void URLRequestTestJobBackedByFile::OnSeekComplete(int64_t result) {}
+
+void URLRequestTestJobBackedByFile::OnReadComplete(IOBuffer* buf, int result) {}
+
+URLRequestTestJobBackedByFile::~URLRequestTestJobBackedByFile() = default;
+
+std::unique_ptr<SourceStream>
+URLRequestTestJobBackedByFile::SetUpSourceStream() {
+  std::unique_ptr<SourceStream> source = URLRequestJob::SetUpSourceStream();
+  if (!base::LowerCaseEqualsASCII(file_path_.Extension(), ".svgz"))
+    return source;
+
+  UMA_HISTOGRAM_BOOLEAN("Net.FileSVGZLoadCount", true);
+  return GzipSourceStream::Create(std::move(source), SourceStream::TYPE_GZIP);
+}
+
+void URLRequestTestJobBackedByFile::FetchMetaInfo(
+    const base::FilePath& file_path,
+    FileMetaInfo* meta_info) {
+  base::File::Info file_info;
+  meta_info->file_exists = base::GetFileInfo(file_path, &file_info);
+  if (meta_info->file_exists) {
+    meta_info->file_size = file_info.size;
+    meta_info->is_directory = file_info.is_directory;
+  }
+  // On Windows GetMimeTypeFromFile() goes to the registry. Thus it should be
+  // done in WorkerPool.
+  meta_info->mime_type_result =
+      GetMimeTypeFromFile(file_path, &meta_info->mime_type);
+  meta_info->absolute_path = base::MakeAbsoluteFilePath(file_path);
+}
+
+void URLRequestTestJobBackedByFile::DidFetchMetaInfo(
+    const FileMetaInfo* meta_info) {
+  meta_info_ = *meta_info;
+
+  if (!meta_info_.file_exists) {
+    DidOpen(ERR_FILE_NOT_FOUND);
+    return;
+  }
+
+  // This class is only used for mocking out network requests in test by using a
+  // file as a response body. It doesn't need to support directory listings.
+  if (meta_info_.is_directory) {
+    DidOpen(ERR_INVALID_ARGUMENT);
+    return;
+  }
+
+  int flags =
+      base::File::FLAG_OPEN | base::File::FLAG_READ | base::File::FLAG_ASYNC;
+  int rv = stream_->Open(file_path_, flags,
+                         base::BindOnce(&URLRequestTestJobBackedByFile::DidOpen,
+                                        weak_ptr_factory_.GetWeakPtr()));
+  if (rv != ERR_IO_PENDING)
+    DidOpen(rv);
+}
+
+void URLRequestTestJobBackedByFile::DidOpen(int result) {
+  OnOpenComplete(result);
+  if (result != OK) {
+    NotifyStartError(URLRequestStatus(URLRequestStatus::FAILED, result));
+    return;
+  }
+
+  if (range_parse_result_ != OK ||
+      !byte_range_.ComputeBounds(meta_info_.file_size)) {
+    DidSeek(ERR_REQUEST_RANGE_NOT_SATISFIABLE);
+    return;
+  }
+
+  remaining_bytes_ =
+      byte_range_.last_byte_position() - byte_range_.first_byte_position() + 1;
+  DCHECK_GE(remaining_bytes_, 0);
+
+  if (remaining_bytes_ > 0 && byte_range_.first_byte_position() != 0) {
+    int rv =
+        stream_->Seek(byte_range_.first_byte_position(),
+                      base::BindOnce(&URLRequestTestJobBackedByFile::DidSeek,
+                                     weak_ptr_factory_.GetWeakPtr()));
+    if (rv != ERR_IO_PENDING)
+      DidSeek(ERR_REQUEST_RANGE_NOT_SATISFIABLE);
+  } else {
+    // We didn't need to call stream_->Seek() at all, so we pass to DidSeek()
+    // the value that would mean seek success. This way we skip the code
+    // handling seek failure.
+    DidSeek(byte_range_.first_byte_position());
+  }
+}
+
+void URLRequestTestJobBackedByFile::DidSeek(int64_t result) {
+  DCHECK(result < 0 || result == byte_range_.first_byte_position());
+
+  OnSeekComplete(result);
+  if (result < 0) {
+    NotifyStartError(URLRequestStatus(URLRequestStatus::FAILED,
+                                      ERR_REQUEST_RANGE_NOT_SATISFIABLE));
+    return;
+  }
+
+  set_expected_content_size(remaining_bytes_);
+  NotifyHeadersComplete();
+}
+
+void URLRequestTestJobBackedByFile::DidRead(scoped_refptr<IOBuffer> buf,
+                                            int result) {
+  if (result >= 0) {
+    remaining_bytes_ -= result;
+    DCHECK_GE(remaining_bytes_, 0);
+  }
+
+  OnReadComplete(buf.get(), result);
+  buf = nullptr;
+
+  ReadRawDataComplete(result);
+}
+
+}  // namespace net
diff --git a/net/url_request/url_request_file_job.h b/net/test/url_request/url_request_test_job_backed_by_file.h
similarity index 75%
rename from net/url_request/url_request_file_job.h
rename to net/test/url_request/url_request_test_job_backed_by_file.h
index b41eda0..cea7d39 100644
--- a/net/url_request/url_request_file_job.h
+++ b/net/test/url_request/url_request_test_job_backed_by_file.h
@@ -2,8 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#ifndef NET_URL_REQUEST_URL_REQUEST_FILE_JOB_H_
-#define NET_URL_REQUEST_URL_REQUEST_FILE_JOB_H_
+#ifndef NET_TEST_URL_REQUEST_URL_REQUEST_TEST_JOB_BACKED_BY_FILE_H_
+#define NET_TEST_URL_REQUEST_URL_REQUEST_TEST_JOB_BACKED_BY_FILE_H_
 
 #include <stdint.h>
 
@@ -16,7 +16,6 @@
 #include "base/memory/ref_counted.h"
 #include "base/memory/weak_ptr.h"
 #include "net/base/net_errors.h"
-#include "net/base/net_export.h"
 #include "net/http/http_byte_range.h"
 #include "net/url_request/url_request.h"
 #include "net/url_request/url_request_job.h"
@@ -29,21 +28,24 @@
 
 class FileStream;
 
-// A request job that handles reading file URLs
-class NET_EXPORT URLRequestFileJob : public URLRequestJob {
+// A request job for testing that reads the response body from a file. Used to
+// be used in production for file URLs, but not only used in tests, as the
+// parent class of URLRequestMockHttpJob and TestURLRequestJob.
+//
+// TODO(mmenke): Consider merging those classes with this one. Could also
+// simplify the logic a bit.
+class URLRequestTestJobBackedByFile : public URLRequestJob {
  public:
-  URLRequestFileJob(URLRequest* request,
-                    NetworkDelegate* network_delegate,
-                    const base::FilePath& file_path,
-                    const scoped_refptr<base::TaskRunner>& file_task_runner);
+  URLRequestTestJobBackedByFile(
+      URLRequest* request,
+      NetworkDelegate* network_delegate,
+      const base::FilePath& file_path,
+      const scoped_refptr<base::TaskRunner>& file_task_runner);
 
   // URLRequestJob:
   void Start() override;
   void Kill() override;
   int ReadRawData(IOBuffer* buf, int buf_size) override;
-  bool IsRedirectResponse(GURL* location,
-                          int* http_status_code,
-                          bool* insecure_scheme_was_upgraded) override;
   bool GetMimeType(std::string* mime_type) const override;
   void SetExtraRequestHeaders(const HttpRequestHeaders& headers) override;
   void ShouldServeMimeTypeAsContentTypeHeader() {
@@ -67,7 +69,7 @@
   virtual void OnReadComplete(IOBuffer* buf, int result);
 
  protected:
-  ~URLRequestFileJob() override;
+  ~URLRequestTestJobBackedByFile() override;
 
   // URLRequestJob implementation.
   std::unique_ptr<SourceStream> SetUpSourceStream() override;
@@ -78,14 +80,9 @@
   base::FilePath file_path_;
 
  private:
-  // This class checks if a path is accessible via file: scheme, with
-  // NetworkDelegate. Subclasses can disable the check if needed.
-  virtual bool CanAccessFile(const base::FilePath& original_path,
-                             const base::FilePath& absolute_path);
-
   // Meta information about the file. It's used as a member in the
-  // URLRequestFileJob and also passed between threads because disk access is
-  // necessary to obtain it.
+  // URLRequestTestJobBackedByFile and also passed between threads because disk
+  // access is necessary to obtain it.
   struct FileMetaInfo {
     FileMetaInfo();
 
@@ -132,11 +129,11 @@
 
   Error range_parse_result_;
 
-  base::WeakPtrFactory<URLRequestFileJob> weak_ptr_factory_{this};
+  base::WeakPtrFactory<URLRequestTestJobBackedByFile> weak_ptr_factory_{this};
 
-  DISALLOW_COPY_AND_ASSIGN(URLRequestFileJob);
+  DISALLOW_COPY_AND_ASSIGN(URLRequestTestJobBackedByFile);
 };
 
 }  // namespace net
 
-#endif  // NET_URL_REQUEST_URL_REQUEST_FILE_JOB_H_
+#endif  // NET_TEST_URL_REQUEST_URL_REQUEST_TEST_JOB_BACKED_BY_FILE_H_
diff --git a/net/url_request/url_request_file_job_unittest.cc b/net/test/url_request/url_request_test_job_backed_by_file_unittest.cc
similarity index 82%
rename from net/url_request/url_request_file_job_unittest.cc
rename to net/test/url_request/url_request_test_job_backed_by_file_unittest.cc
index d83772dd..56a8079 100644
--- a/net/url_request/url_request_file_job_unittest.cc
+++ b/net/test/url_request/url_request_test_job_backed_by_file_unittest.cc
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "net/url_request/url_request_file_job.h"
+#include "net/test/url_request/url_request_test_job_backed_by_file.h"
 
 #include <memory>
 
@@ -25,25 +25,26 @@
 
 namespace {
 
-// A URLRequestFileJob for testing values passed to OnSeekComplete and
-// OnReadComplete.
-class TestURLRequestFileJob : public URLRequestFileJob {
+// A URLRequestTestJobBackedByFile for testing values passed to OnSeekComplete
+// and OnReadComplete.
+class TestURLRequestTestJobBackedByFile : public URLRequestTestJobBackedByFile {
  public:
   // |seek_position| will be set to the value passed in to OnSeekComplete.
   // |observed_content| will be set to the concatenated data from all calls to
   // OnReadComplete.
-  TestURLRequestFileJob(URLRequest* request,
-                        NetworkDelegate* network_delegate,
-                        const base::FilePath& file_path,
-                        const scoped_refptr<base::TaskRunner>& file_task_runner,
-                        int* open_result,
-                        int64_t* seek_position,
-                        bool* done_reading,
-                        std::string* observed_content)
-      : URLRequestFileJob(request,
-                          network_delegate,
-                          file_path,
-                          file_task_runner),
+  TestURLRequestTestJobBackedByFile(
+      URLRequest* request,
+      NetworkDelegate* network_delegate,
+      const base::FilePath& file_path,
+      const scoped_refptr<base::TaskRunner>& file_task_runner,
+      int* open_result,
+      int64_t* seek_position,
+      bool* done_reading,
+      std::string* observed_content)
+      : URLRequestTestJobBackedByFile(request,
+                                      network_delegate,
+                                      file_path,
+                                      file_task_runner),
         open_result_(open_result),
         seek_position_(seek_position),
         done_reading_(done_reading),
@@ -54,7 +55,7 @@
     observed_content_->clear();
   }
 
-  ~TestURLRequestFileJob() override = default;
+  ~TestURLRequestTestJobBackedByFile() override = default;
 
  protected:
   void OnOpenComplete(int result) override {
@@ -85,8 +86,8 @@
   std::string* const observed_content_;
 };
 
-// A URLRequestJobFactory that will return TestURLRequestFileJob instances for
-// file:// scheme URLs.  Can only be used to create a single job.
+// A URLRequestJobFactory that will return TestURLRequestTestJobBackedByFile
+// instances for file:// scheme URLs.  Can only be used to create a single job.
 class TestJobFactory : public URLRequestJobFactory {
  public:
   TestJobFactory(const base::FilePath& path,
@@ -115,7 +116,7 @@
     CHECK(seek_position_);
     CHECK(done_reading_);
     CHECK(observed_content_);
-    URLRequestJob* job = new TestURLRequestFileJob(
+    URLRequestJob* job = new TestURLRequestTestJobBackedByFile(
         request, network_delegate, path_, base::ThreadTaskRunnerHandle::Get(),
         open_result_, seek_position_, done_reading_, observed_content_);
     open_result_ = nullptr;
@@ -179,16 +180,16 @@
 };
 
 // A superclass for tests of the OnReadComplete / OnSeekComplete /
-// OnReadComplete functions of URLRequestFileJob.
-class URLRequestFileJobEventsTest : public TestWithTaskEnvironment {
+// OnReadComplete functions of URLRequestTestJobBackedByFile.
+class URLRequestTestJobBackedByFileEventsTest : public TestWithTaskEnvironment {
  public:
-  URLRequestFileJobEventsTest();
+  URLRequestTestJobBackedByFileEventsTest();
 
  protected:
   void TearDown() override;
 
   // This creates a file with |content| as the contents, and then creates and
-  // runs a TestURLRequestFileJob job to get the contents out of it,
+  // runs a TestURLRequestTestJobBackedByFile job to get the contents out of it,
   // and makes sure that the callbacks observed the correct bytes. If a Range
   // is provided, this function will add the appropriate Range http header to
   // the request and verify that only the bytes in that range (inclusive) were
@@ -205,9 +206,9 @@
       const base::FilePath::StringPieceType& file_extension,
       const Range* range);
 
-  // Creates and runs a TestURLRequestFileJob job to read from file provided by
-  // |path|. If |range| value is provided, it will be passed in the range
-  // header.
+  // Creates and runs a TestURLRequestTestJobBackedByFile job to read from file
+  // provided by |path|. If |range| value is provided, it will be passed in the
+  // range header.
   void RunRequestWithPath(const base::FilePath& path,
                           const std::string& range,
                           int* open_result,
@@ -219,21 +220,22 @@
   TestDelegate delegate_;
 };
 
-URLRequestFileJobEventsTest::URLRequestFileJobEventsTest() = default;
+URLRequestTestJobBackedByFileEventsTest::
+    URLRequestTestJobBackedByFileEventsTest() = default;
 
-void URLRequestFileJobEventsTest::TearDown() {
+void URLRequestTestJobBackedByFileEventsTest::TearDown() {
   // Gives a chance to close the opening file.
   base::RunLoop().RunUntilIdle();
 }
 
-void URLRequestFileJobEventsTest::RunSuccessfulRequestWithString(
+void URLRequestTestJobBackedByFileEventsTest::RunSuccessfulRequestWithString(
     const std::string& content,
     const Range* range) {
   RunSuccessfulRequestWithString(content, content, FILE_PATH_LITERAL(""),
                                  range);
 }
 
-void URLRequestFileJobEventsTest::RunSuccessfulRequestWithString(
+void URLRequestTestJobBackedByFileEventsTest::RunSuccessfulRequestWithString(
     const std::string& raw_content,
     const std::string& expected_content,
     const base::FilePath::StringPieceType& file_extension,
@@ -284,7 +286,7 @@
   }
 }
 
-void URLRequestFileJobEventsTest::RunRequestWithPath(
+void URLRequestTestJobBackedByFileEventsTest::RunRequestWithPath(
     const base::FilePath& path,
     const std::string& range,
     int* open_result,
@@ -319,23 +321,23 @@
   return result;
 }
 
-TEST_F(URLRequestFileJobEventsTest, ZeroByteFile) {
+TEST_F(URLRequestTestJobBackedByFileEventsTest, ZeroByteFile) {
   RunSuccessfulRequestWithString(std::string(""), nullptr);
 }
 
-TEST_F(URLRequestFileJobEventsTest, TinyFile) {
+TEST_F(URLRequestTestJobBackedByFileEventsTest, TinyFile) {
   RunSuccessfulRequestWithString(std::string("hello world"), nullptr);
 }
 
-TEST_F(URLRequestFileJobEventsTest, SmallFile) {
+TEST_F(URLRequestTestJobBackedByFileEventsTest, SmallFile) {
   RunSuccessfulRequestWithString(MakeContentOfSize(17 * 1024), nullptr);
 }
 
-TEST_F(URLRequestFileJobEventsTest, BigFile) {
+TEST_F(URLRequestTestJobBackedByFileEventsTest, BigFile) {
   RunSuccessfulRequestWithString(MakeContentOfSize(3 * 1024 * 1024), nullptr);
 }
 
-TEST_F(URLRequestFileJobEventsTest, Range) {
+TEST_F(URLRequestTestJobBackedByFileEventsTest, Range) {
   // Use a 15KB content file and read a range chosen somewhat arbitrarily but
   // not aligned on any likely page boundaries.
   int size = 15 * 1024;
@@ -343,7 +345,7 @@
   RunSuccessfulRequestWithString(MakeContentOfSize(size), &range);
 }
 
-TEST_F(URLRequestFileJobEventsTest, DecodeSvgzFile) {
+TEST_F(URLRequestTestJobBackedByFileEventsTest, DecodeSvgzFile) {
   std::string expected_content("Hello, World!");
   unsigned char gzip_data[] = {
       // From:
@@ -356,7 +358,7 @@
       expected_content, FILE_PATH_LITERAL("svgz"), nullptr);
 }
 
-TEST_F(URLRequestFileJobEventsTest, OpenNonExistentFile) {
+TEST_F(URLRequestTestJobBackedByFileEventsTest, OpenNonExistentFile) {
   base::FilePath path;
   base::PathService::Get(base::DIR_SOURCE_ROOT, &path);
   path = path.Append(
@@ -374,7 +376,7 @@
   EXPECT_TRUE(delegate_.request_failed());
 }
 
-TEST_F(URLRequestFileJobEventsTest, MultiRangeRequestNotSupported) {
+TEST_F(URLRequestTestJobBackedByFileEventsTest, MultiRangeRequestNotSupported) {
   base::FilePath path;
   base::PathService::Get(base::DIR_SOURCE_ROOT, &path);
   path = path.Append(
@@ -393,7 +395,7 @@
   EXPECT_TRUE(delegate_.request_failed());
 }
 
-TEST_F(URLRequestFileJobEventsTest, RangeExceedingFileSize) {
+TEST_F(URLRequestTestJobBackedByFileEventsTest, RangeExceedingFileSize) {
   base::FilePath path;
   base::PathService::Get(base::DIR_SOURCE_ROOT, &path);
   path = path.Append(
@@ -412,7 +414,7 @@
   EXPECT_TRUE(delegate_.request_failed());
 }
 
-TEST_F(URLRequestFileJobEventsTest, IgnoreRangeParsingError) {
+TEST_F(URLRequestTestJobBackedByFileEventsTest, IgnoreRangeParsingError) {
   base::FilePath path;
   base::PathService::Get(base::DIR_SOURCE_ROOT, &path);
   path = path.Append(
diff --git a/net/url_request/file_protocol_handler.cc b/net/url_request/file_protocol_handler.cc
deleted file mode 100644
index eb15fa2..0000000
--- a/net/url_request/file_protocol_handler.cc
+++ /dev/null
@@ -1,51 +0,0 @@
-// Copyright (c) 2012 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "net/url_request/file_protocol_handler.h"
-
-#include "base/logging.h"
-#include "base/task_runner.h"
-#include "net/base/filename_util.h"
-#include "net/base/net_errors.h"
-#include "net/url_request/url_request.h"
-#include "net/url_request/url_request_error_job.h"
-#include "net/url_request/url_request_file_dir_job.h"
-#include "net/url_request/url_request_file_job.h"
-
-namespace net {
-
-FileProtocolHandler::FileProtocolHandler(
-    const scoped_refptr<base::TaskRunner>& file_task_runner)
-    : file_task_runner_(file_task_runner) {}
-
-FileProtocolHandler::~FileProtocolHandler() = default;
-
-URLRequestJob* FileProtocolHandler::MaybeCreateJob(
-    URLRequest* request, NetworkDelegate* network_delegate) const {
-  base::FilePath file_path;
-  const bool is_file = FileURLToFilePath(request->url(), &file_path);
-
-  // We need to decide whether to create URLRequestFileJob for file access or
-  // URLRequestFileDirJob for directory access. To avoid accessing the
-  // filesystem, we only look at the path string here.
-  // The code in the URLRequestFileJob::Start() method discovers that a path,
-  // which doesn't end with a slash, should really be treated as a directory,
-  // and it then redirects to the URLRequestFileDirJob.
-  if (is_file &&
-      file_path.EndsWithSeparator() &&
-      file_path.IsAbsolute()) {
-    return new URLRequestFileDirJob(request, network_delegate, file_path);
-  }
-
-  // Use a regular file request job for all non-directories (including invalid
-  // file names).
-  return new URLRequestFileJob(request, network_delegate, file_path,
-                               file_task_runner_);
-}
-
-bool FileProtocolHandler::IsSafeRedirectTarget(const GURL& location) const {
-  return false;
-}
-
-}  // namespace net
diff --git a/net/url_request/file_protocol_handler.h b/net/url_request/file_protocol_handler.h
deleted file mode 100644
index 954d016..0000000
--- a/net/url_request/file_protocol_handler.h
+++ /dev/null
@@ -1,45 +0,0 @@
-// Copyright (c) 2012 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef NET_URL_REQUEST_FILE_PROTOCOL_HANDLER_H_
-#define NET_URL_REQUEST_FILE_PROTOCOL_HANDLER_H_
-
-#include "base/compiler_specific.h"
-#include "base/macros.h"
-#include "base/memory/ref_counted.h"
-#include "net/base/net_export.h"
-#include "net/url_request/url_request_job_factory.h"
-
-class GURL;
-
-namespace base {
-class TaskRunner;
-}
-
-namespace net {
-
-class NetworkDelegate;
-class URLRequestJob;
-
-// Implements a ProtocolHandler for File jobs. If |network_delegate_| is NULL,
-// then all file requests will fail with ERR_ACCESS_DENIED.
-class NET_EXPORT FileProtocolHandler :
-    public URLRequestJobFactory::ProtocolHandler {
- public:
-  explicit FileProtocolHandler(
-      const scoped_refptr<base::TaskRunner>& file_task_runner);
-  ~FileProtocolHandler() override;
-  URLRequestJob* MaybeCreateJob(
-      URLRequest* request,
-      NetworkDelegate* network_delegate) const override;
-  bool IsSafeRedirectTarget(const GURL& location) const override;
-
- private:
-  const scoped_refptr<base::TaskRunner> file_task_runner_;
-  DISALLOW_COPY_AND_ASSIGN(FileProtocolHandler);
-};
-
-}  // namespace net
-
-#endif  // NET_URL_REQUEST_FILE_PROTOCOL_HANDLER_H_
diff --git a/net/url_request/redirect_info.cc b/net/url_request/redirect_info.cc
index 1ee9ee5..d716a0c1 100644
--- a/net/url_request/redirect_info.cc
+++ b/net/url_request/redirect_info.cc
@@ -118,7 +118,6 @@
     const std::string& original_method,
     const GURL& original_url,
     const GURL& original_site_for_cookies,
-    const base::Optional<url::Origin>& original_top_frame_origin,
     URLRequest::FirstPartyURLPolicy original_first_party_url_policy,
     URLRequest::ReferrerPolicy original_referrer_policy,
     const std::string& original_referrer,
@@ -158,13 +157,8 @@
   if (original_first_party_url_policy ==
       URLRequest::UPDATE_FIRST_PARTY_URL_ON_REDIRECT) {
     redirect_info.new_site_for_cookies = redirect_info.new_url;
-    if (original_top_frame_origin) {
-      redirect_info.new_top_frame_origin =
-          url::Origin::Create(redirect_info.new_url);
-    }
   } else {
     redirect_info.new_site_for_cookies = original_site_for_cookies;
-    redirect_info.new_top_frame_origin = original_top_frame_origin;
   }
 
   redirect_info.new_referrer_policy = ProcessReferrerPolicyHeaderOnRedirect(
diff --git a/net/url_request/redirect_info.h b/net/url_request/redirect_info.h
index 0984bd0..3e4699fc 100644
--- a/net/url_request/redirect_info.h
+++ b/net/url_request/redirect_info.h
@@ -28,7 +28,6 @@
       const std::string& original_method,
       const GURL& original_url,
       const GURL& original_site_for_cookies,
-      const base::Optional<url::Origin>& original_top_frame_origin,
       URLRequest::FirstPartyURLPolicy original_first_party_url_policy,
       URLRequest::ReferrerPolicy original_referrer_policy,
       const std::string& original_referrer,
@@ -63,10 +62,6 @@
   // The new first-party URL for cookies.
   GURL new_site_for_cookies;
 
-  // DEPRECATED TODO: Remove this as it was introduced for the cache key and can
-  // be removed now that |network_isolation_key| is set for the redirect cases.
-  base::Optional<url::Origin> new_top_frame_origin;
-
   // The new HTTP referrer header.
   std::string new_referrer;
 
diff --git a/net/url_request/redirect_info_unittest.cc b/net/url_request/redirect_info_unittest.cc
index 2a4876d..d92e688 100644
--- a/net/url_request/redirect_info_unittest.cc
+++ b/net/url_request/redirect_info_unittest.cc
@@ -48,10 +48,10 @@
 
     RedirectInfo redirect_info = RedirectInfo::ComputeRedirectInfo(
         test.original_method, kOriginalUrl, kOriginalSiteForCookies,
-        kOriginalTopFrameOrigin, kOriginalFirstPartyUrlPolicy,
-        kOriginalReferrerPolicy, kOriginalReferrer, test.http_status_code,
-        kNewLocation, base::nullopt /* referrer_policy_header */,
-        kInsecureSchemeWasUpgraded, kCopyFragment);
+        kOriginalFirstPartyUrlPolicy, kOriginalReferrerPolicy,
+        kOriginalReferrer, test.http_status_code, kNewLocation,
+        base::nullopt /* referrer_policy_header */, kInsecureSchemeWasUpgraded,
+        kCopyFragment);
 
     EXPECT_EQ(test.expected_new_method, redirect_info.new_method);
     EXPECT_EQ(test.http_status_code, redirect_info.status_code);
@@ -99,15 +99,12 @@
 
     RedirectInfo redirect_info = RedirectInfo::ComputeRedirectInfo(
         KOriginalMethod, GURL(test.original_url), kOriginalSiteForCookies,
-        url::Origin::Create(GURL(test.original_url)),
         kOriginalFirstPartyUrlPolicy, kOriginalReferrerPolicy,
         kOriginalReferrer, kHttpStatusCode, GURL(test.new_location),
         base::nullopt /* referrer_policy_header */, kInsecureSchemeWasUpgraded,
         test.copy_fragment);
 
     EXPECT_EQ(GURL(test.expected_new_url), redirect_info.new_url);
-    EXPECT_EQ(url::Origin::Create(GURL(test.original_url)),
-              redirect_info.new_top_frame_origin);
   }
 }
 
@@ -140,19 +137,13 @@
 
     RedirectInfo redirect_info = RedirectInfo::ComputeRedirectInfo(
         KOriginalMethod, kOriginalUrl, kOriginalSiteForCookies,
-        url::Origin::Create(kOriginalUrl), test.original_first_party_url_policy,
-        kOriginalReferrerPolicy, kOriginalReferrer, kHttpStatusCode,
-        kNewLocation, base::nullopt /* referrer_policy_header */,
-        kInsecureSchemeWasUpgraded, kCopyFragment);
+        test.original_first_party_url_policy, kOriginalReferrerPolicy,
+        kOriginalReferrer, kHttpStatusCode, kNewLocation,
+        base::nullopt /* referrer_policy_header */, kInsecureSchemeWasUpgraded,
+        kCopyFragment);
 
     EXPECT_EQ(GURL(test.expected_new_site_for_cookies),
               redirect_info.new_site_for_cookies);
-    url::Origin expected_top_frame_origin =
-        test.original_first_party_url_policy ==
-                URLRequest::UPDATE_FIRST_PARTY_URL_ON_REDIRECT
-            ? url::Origin::Create(GURL(test.expected_new_site_for_cookies))
-            : url::Origin::Create(kOriginalUrl);
-    EXPECT_EQ(expected_top_frame_origin, redirect_info.new_top_frame_origin);
   }
 }
 
@@ -459,9 +450,8 @@
 
     RedirectInfo redirect_info = RedirectInfo::ComputeRedirectInfo(
         KOriginalMethod, original_url, kOriginalSiteForCookies,
-        url::Origin::Create(original_url), kOriginalFirstPartyUrlPolicy,
-        test.original_referrer_policy, test.original_referrer,
-        response_headers->response_code(), new_location,
+        kOriginalFirstPartyUrlPolicy, test.original_referrer_policy,
+        test.original_referrer, response_headers->response_code(), new_location,
         RedirectUtil::GetReferrerPolicyHeader(response_headers.get()),
         kInsecureSchemeWasUpgraded, kCopyFragment);
 
diff --git a/net/url_request/test_url_request_interceptor.cc b/net/url_request/test_url_request_interceptor.cc
index 333e5ba..32adb31 100644
--- a/net/url_request/test_url_request_interceptor.cc
+++ b/net/url_request/test_url_request_interceptor.cc
@@ -11,8 +11,8 @@
 #include "base/threading/thread_restrictions.h"
 #include "net/http/http_response_headers.h"
 #include "net/http/http_response_info.h"
+#include "net/test/url_request/url_request_test_job_backed_by_file.h"
 #include "net/url_request/url_request.h"
-#include "net/url_request/url_request_file_job.h"
 #include "net/url_request/url_request_filter.h"
 #include "net/url_request/url_request_interceptor.h"
 #include "testing/gtest/include/gtest/gtest.h"
@@ -21,18 +21,18 @@
 
 namespace {
 
-// This class is needed because URLRequestFileJob always returns a -1
-// HTTP response status code.
-class TestURLRequestJob : public URLRequestFileJob {
+// This class is needed because URLRequestTestJobBackedByFile always returns a
+// -1 HTTP response status code.
+class TestURLRequestJob : public URLRequestTestJobBackedByFile {
  public:
   TestURLRequestJob(URLRequest* request,
                     NetworkDelegate* network_delegate,
                     const base::FilePath& file_path,
                     const scoped_refptr<base::TaskRunner>& worker_task_runner)
-      : URLRequestFileJob(request,
-                          network_delegate,
-                          file_path,
-                          worker_task_runner) {}
+      : URLRequestTestJobBackedByFile(request,
+                                      network_delegate,
+                                      file_path,
+                                      worker_task_runner) {}
 
   void GetResponseInfo(HttpResponseInfo* info) override {
     info->headers = new net::HttpResponseHeaders("HTTP/1.1 200 OK");
diff --git a/net/url_request/url_request.cc b/net/url_request/url_request.cc
index 9840b2b..c31d4c30 100644
--- a/net/url_request/url_request.cc
+++ b/net/url_request/url_request.cc
@@ -993,7 +993,6 @@
   referrer_ = redirect_info.new_referrer;
   referrer_policy_ = redirect_info.new_referrer_policy;
   site_for_cookies_ = redirect_info.new_site_for_cookies;
-  top_frame_origin_ = redirect_info.new_top_frame_origin;
 
   url_chain_.push_back(redirect_info.new_url);
   --redirect_limit_;
diff --git a/net/url_request/url_request_context_builder.cc b/net/url_request/url_request_context_builder.cc
index 9c533b42..373ea09 100644
--- a/net/url_request/url_request_context_builder.cc
+++ b/net/url_request/url_request_context_builder.cc
@@ -48,10 +48,6 @@
 #include "net/url_request/url_request_throttler_manager.h"
 #include "url/url_constants.h"
 
-#if !BUILDFLAG(DISABLE_FILE_SUPPORT)
-#include "net/url_request/file_protocol_handler.h"  // nogncheck
-#endif
-
 #if !BUILDFLAG(DISABLE_FTP_SUPPORT)
 #include "net/ftp/ftp_auth_cache.h"                // nogncheck
 #include "net/ftp/ftp_network_layer.h"             // nogncheck
@@ -132,12 +128,6 @@
     return allowed_from_caller;
   }
 
-  bool OnCanAccessFile(const URLRequest& request,
-                       const base::FilePath& original_path,
-                       const base::FilePath& absolute_path) const override {
-    return true;
-  }
-
   DISALLOW_COPY_AND_ASSIGN(BasicNetworkDelegate);
 };
 
@@ -641,17 +631,6 @@
     job_factory->SetProtocolHandler(url::kDataScheme,
                                     std::make_unique<DataProtocolHandler>());
 
-#if !BUILDFLAG(DISABLE_FILE_SUPPORT)
-  if (file_enabled_) {
-    job_factory->SetProtocolHandler(
-        url::kFileScheme,
-        std::make_unique<FileProtocolHandler>(base::CreateTaskRunner(
-            {base::ThreadPool(), base::MayBlock(),
-             base::TaskPriority::USER_BLOCKING,
-             base::TaskShutdownBehavior::SKIP_ON_SHUTDOWN})));
-  }
-#endif  // !BUILDFLAG(DISABLE_FILE_SUPPORT)
-
 #if !BUILDFLAG(DISABLE_FTP_SUPPORT)
   if (ftp_enabled_) {
     storage->set_ftp_auth_cache(std::make_unique<FtpAuthCache>());
diff --git a/net/url_request/url_request_context_builder.h b/net/url_request/url_request_context_builder.h
index ccfa80f..f01c9acc 100644
--- a/net/url_request/url_request_context_builder.h
+++ b/net/url_request/url_request_context_builder.h
@@ -204,13 +204,6 @@
     data_enabled_ = enable;
   }
 
-#if !BUILDFLAG(DISABLE_FILE_SUPPORT)
-  // Control support for file:// requests. By default it's disabled.
-  void set_file_enabled(bool enable) {
-    file_enabled_ = enable;
-  }
-#endif
-
 #if !BUILDFLAG(DISABLE_FTP_SUPPORT)
   // Control support for ftp:// requests. By default it's disabled.
   void set_ftp_enabled(bool enable) {
@@ -377,10 +370,6 @@
 
   // Include support for data:// requests.
   bool data_enabled_ = false;
-#if !BUILDFLAG(DISABLE_FILE_SUPPORT)
-  // Include support for file:// requests.
-  bool file_enabled_ = false;
-#endif
 #if !BUILDFLAG(DISABLE_FTP_SUPPORT)
   // Include support for ftp:// requests.
   bool ftp_enabled_ = false;
diff --git a/net/url_request/url_request_file_dir_job.cc b/net/url_request/url_request_file_dir_job.cc
deleted file mode 100644
index 9f90a5b..0000000
--- a/net/url_request/url_request_file_dir_job.cc
+++ /dev/null
@@ -1,211 +0,0 @@
-// Copyright (c) 2012 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "net/url_request/url_request_file_dir_job.h"
-
-#include "base/bind.h"
-#include "base/compiler_specific.h"
-#include "base/files/file_util.h"
-#include "base/location.h"
-#include "base/single_thread_task_runner.h"
-#include "base/strings/sys_string_conversions.h"
-#include "base/strings/utf_string_conversions.h"
-#include "base/task/post_task.h"
-#include "base/threading/thread_task_runner_handle.h"
-#include "base/time/time.h"
-#include "build/build_config.h"
-#include "net/base/directory_listing.h"
-#include "net/base/io_buffer.h"
-#include "net/url_request/url_request_status.h"
-#include "url/gurl.h"
-
-#if defined(OS_POSIX) || defined(OS_FUCHSIA)
-#include <sys/stat.h>
-#endif
-
-namespace net {
-
-URLRequestFileDirJob::URLRequestFileDirJob(URLRequest* request,
-                                           NetworkDelegate* network_delegate,
-                                           const base::FilePath& dir_path)
-    : URLRequestJob(request, network_delegate),
-      lister_(dir_path, this),
-      dir_path_(dir_path),
-      canceled_(false),
-      list_complete_(false),
-      wrote_header_(false),
-      read_pending_(false),
-      read_buffer_length_(0) {}
-
-void URLRequestFileDirJob::StartAsync() {
-  base::PostTaskAndReplyWithResult(
-      FROM_HERE,
-      {base::ThreadPool(), base::MayBlock(),
-       base::TaskShutdownBehavior::CONTINUE_ON_SHUTDOWN},
-      base::Bind(&base::MakeAbsoluteFilePath, dir_path_),
-      base::Bind(&URLRequestFileDirJob::DidMakeAbsolutePath,
-                 weak_factory_.GetWeakPtr()));
-}
-
-void URLRequestFileDirJob::Start() {
-  // Start reading asynchronously so that all error reporting and data
-  // callbacks happen as they would for network requests.
-  base::ThreadTaskRunnerHandle::Get()->PostTask(
-      FROM_HERE, base::BindOnce(&URLRequestFileDirJob::StartAsync,
-                                weak_factory_.GetWeakPtr()));
-}
-
-void URLRequestFileDirJob::Kill() {
-  if (canceled_)
-    return;
-
-  canceled_ = true;
-
-  if (!list_complete_)
-    lister_.Cancel();
-
-  URLRequestJob::Kill();
-
-  weak_factory_.InvalidateWeakPtrs();
-}
-
-int URLRequestFileDirJob::ReadRawData(IOBuffer* buf, int buf_size) {
-  int result = ReadBuffer(buf->data(), buf_size);
-  if (result == ERR_IO_PENDING) {
-    // We are waiting for more data
-    read_pending_ = true;
-    read_buffer_ = buf;
-    read_buffer_length_ = buf_size;
-    return ERR_IO_PENDING;
-  }
-
-  return result;
-}
-
-bool URLRequestFileDirJob::GetMimeType(std::string* mime_type) const {
-  *mime_type = "text/html";
-  return true;
-}
-
-bool URLRequestFileDirJob::GetCharset(std::string* charset) {
-  // All the filenames are converted to UTF-8 before being added.
-  *charset = "utf-8";
-  return true;
-}
-
-void URLRequestFileDirJob::OnListFile(
-    const DirectoryLister::DirectoryListerData& data) {
-  // We wait to write out the header until we get the first file, so that we
-  // can catch errors from DirectoryLister and show an error page.
-  if (!wrote_header_) {
-    wrote_header_ = true;
-
-#if defined(OS_WIN)
-    const base::string16& title = dir_path_.value();
-#elif defined(OS_POSIX) || defined(OS_FUCHSIA)
-    // TODO(jungshik): Add SysNativeMBToUTF16 to sys_string_conversions.
-    // On Mac, need to add NFKC->NFC conversion either here or in file_path.
-    // On Linux, the file system encoding is not defined, but we assume that
-    // SysNativeMBToWide takes care of it at least for now. We can try something
-    // more sophisticated if necessary later.
-    const base::string16& title = base::WideToUTF16(
-        base::SysNativeMBToWide(dir_path_.value()));
-#endif
-    data_.append(GetDirectoryListingHeader(title));
-
-    // If this isn't top level directory, add a link to the parent directory.
-    // To figure this out, first normalize |dir_path_| by stripping it of
-    // trailing separators. Then compare the resulting |stripped_dir_path| to
-    // its DirName(). For the top level directory, e.g. "/" or "c:\\", the
-    // normalized path is equal to its DirName().
-    base::FilePath stripped_dir_path = dir_path_.StripTrailingSeparators();
-    if (stripped_dir_path != stripped_dir_path.DirName()) {
-      data_.append(GetParentDirectoryLink());
-    }
-  }
-
-  // Skip the current and parent directory entries in the listing.
-  // GetParentDirectoryLink() takes care of them.
-  base::FilePath filename = data.info.GetName();
-  if (filename.value() != base::FilePath::kCurrentDirectory &&
-      filename.value() != base::FilePath::kParentDirectory) {
-#if defined(OS_WIN)
-    std::string raw_bytes;  // Empty on Windows means UTF-8 encoded name.
-#elif defined(OS_POSIX) || defined(OS_FUCHSIA)
-    // TODO(jungshik): The same issue as for the directory name.
-    const std::string& raw_bytes = filename.value();
-#endif
-    data_.append(GetDirectoryListingEntry(
-        filename.LossyDisplayName(), raw_bytes, data.info.IsDirectory(),
-        data.info.GetSize(), data.info.GetLastModifiedTime()));
-  }
-
-  // TODO(darin): coalesce more?
-  CompleteRead(OK);
-}
-
-void URLRequestFileDirJob::OnListDone(int error) {
-  DCHECK(!canceled_);
-  DCHECK_LE(error, OK);
-
-  list_complete_ = true;
-  list_complete_result_ = static_cast<Error>(error);
-  CompleteRead(list_complete_result_);
-}
-
-URLRequestFileDirJob::~URLRequestFileDirJob() = default;
-
-void URLRequestFileDirJob::DidMakeAbsolutePath(
-    const base::FilePath& absolute_path) {
-  if (network_delegate() && !network_delegate()->CanAccessFile(
-                                *request(), dir_path_, absolute_path)) {
-    NotifyStartError(URLRequestStatus::FromError(ERR_ACCESS_DENIED));
-    return;
-  }
-
-  lister_.Start();
-  NotifyHeadersComplete();
-}
-
-void URLRequestFileDirJob::CompleteRead(Error error) {
-  DCHECK_LE(error, OK);
-  DCHECK_NE(error, ERR_IO_PENDING);
-
-  // Do nothing if there is no read pending.
-  if (!read_pending_)
-    return;
-
-  int result = error;
-  if (error == OK) {
-    result = ReadBuffer(read_buffer_->data(), read_buffer_length_);
-    if (result >= 0) {
-      // We completed the read, so reset the read buffer.
-      read_buffer_ = nullptr;
-      read_buffer_length_ = 0;
-    } else {
-      NOTREACHED();
-      // TODO: Better error code.
-      result = ERR_FAILED;
-    }
-  }
-
-  read_pending_ = false;
-  ReadRawDataComplete(result);
-}
-
-int URLRequestFileDirJob::ReadBuffer(char* buf, int buf_size) {
-  int count = std::min(buf_size, static_cast<int>(data_.size()));
-  if (count) {
-    memcpy(buf, &data_[0], count);
-    data_.erase(0, count);
-    return count;
-  }
-  if (list_complete_) {
-    // EOF
-    return list_complete_result_;
-  }
-  return ERR_IO_PENDING;
-}
-
-}  // namespace net
diff --git a/net/url_request/url_request_file_dir_job.h b/net/url_request/url_request_file_dir_job.h
deleted file mode 100644
index 4184f3c..0000000
--- a/net/url_request/url_request_file_dir_job.h
+++ /dev/null
@@ -1,85 +0,0 @@
-// Copyright (c) 2011 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef NET_URL_REQUEST_URL_REQUEST_FILE_DIR_JOB_H_
-#define NET_URL_REQUEST_URL_REQUEST_FILE_DIR_JOB_H_
-
-#include <string>
-
-#include "base/compiler_specific.h"
-#include "base/files/file_path.h"
-#include "base/macros.h"
-#include "base/memory/weak_ptr.h"
-#include "net/base/directory_lister.h"
-#include "net/base/net_errors.h"
-#include "net/base/net_export.h"
-#include "net/url_request/url_request_job.h"
-
-namespace net {
-
-class NET_EXPORT_PRIVATE URLRequestFileDirJob
-    : public URLRequestJob,
-      public DirectoryLister::DirectoryListerDelegate {
- public:
-  URLRequestFileDirJob(URLRequest* request,
-                       NetworkDelegate* network_delegate,
-                       const base::FilePath& dir_path);
-
-  void StartAsync();
-
-  // Overridden from URLRequestJob:
-  void Start() override;
-  void Kill() override;
-  int ReadRawData(IOBuffer* buf, int buf_size) override;
-  bool GetMimeType(std::string* mime_type) const override;
-  bool GetCharset(std::string* charset) override;
-
-  // Overridden from DirectoryLister::DirectoryListerDelegate:
-  void OnListFile(const DirectoryLister::DirectoryListerData& data) override;
-  void OnListDone(int error) override;
-
- protected:
-  ~URLRequestFileDirJob() override;
-
- private:
-  // Called after the target directory path is resolved to an absolute path.
-  void DidMakeAbsolutePath(const base::FilePath& absolute_path);
-
-  // When we have data and a read has been pending, this function
-  // will fill the response buffer and notify the request
-  // appropriately.
-  void CompleteRead(Error error);
-
-  int ReadBuffer(char* buf, int buf_size);
-
-  DirectoryLister lister_;
-  const base::FilePath dir_path_;
-
-  std::string data_;
-  bool canceled_;
-
-  // Indicates whether we have the complete list of the dir
-  bool list_complete_;
-
-  // Indicates the status of the list
-  Error list_complete_result_;
-
-  // Indicates whether we have written the HTML header
-  bool wrote_header_;
-
-  // To simulate Async IO, we hold onto the Reader's buffer while
-  // we wait for IO to complete.  When done, we fill the buffer
-  // manually.
-  bool read_pending_;
-  scoped_refptr<IOBuffer> read_buffer_;
-  int read_buffer_length_;
-
-  base::WeakPtrFactory<URLRequestFileDirJob> weak_factory_{this};
-
-  DISALLOW_COPY_AND_ASSIGN(URLRequestFileDirJob);
-};
-
-}  // namespace net
-
-#endif  // NET_URL_REQUEST_URL_REQUEST_FILE_DIR_JOB_H_
diff --git a/net/url_request/url_request_file_dir_job_unittest.cc b/net/url_request/url_request_file_dir_job_unittest.cc
deleted file mode 100644
index 10cb5751..0000000
--- a/net/url_request/url_request_file_dir_job_unittest.cc
+++ /dev/null
@@ -1,339 +0,0 @@
-// Copyright 2016 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "net/url_request/url_request_file_dir_job.h"
-
-#include <memory>
-#include <string>
-#include <vector>
-
-#include "base/files/file_path.h"
-#include "base/files/file_util.h"
-#include "base/files/scoped_temp_dir.h"
-#include "base/macros.h"
-#include "base/memory/ref_counted.h"
-#include "base/run_loop.h"
-#include "base/strings/string_split.h"
-#include "base/strings/string_util.h"
-#include "build/build_config.h"
-#include "net/base/filename_util.h"
-#include "net/base/io_buffer.h"
-#include "net/base/net_errors.h"
-#include "net/test/gtest_util.h"
-#include "net/test/test_with_task_environment.h"
-#include "net/traffic_annotation/network_traffic_annotation_test_helper.h"
-#include "net/url_request/url_request.h"
-#include "net/url_request/url_request_test_util.h"
-#include "testing/gmock/include/gmock/gmock.h"
-#include "testing/gtest/include/gtest/gtest.h"
-
-using base::StartsWith;
-using net::test::IsError;
-using net::test::IsOk;
-
-namespace net {
-
-namespace {
-
-const int kBufferSize = 4096;
-
-// Snippets of JS code from net/base/dir_header.html.
-const char kHeaderStart[] = "<script>start(\"";
-const char kEntryStart[] = "<script>addRow(\"";
-const char kParentDirLink[] = "<script>onHasParentDirectory();";
-
-bool HasHeader(const std::string& response_body, const base::FilePath& dir) {
-  std::vector<std::string> lines = base::SplitString(
-      response_body, "\n", base::KEEP_WHITESPACE, base::SPLIT_WANT_ALL);
-  for (const std::string& line : lines) {
-    if (StartsWith(line, kHeaderStart, base::CompareCase::INSENSITIVE_ASCII))
-      return line.find(dir.BaseName().MaybeAsASCII()) != std::string::npos;
-  }
-  return false;
-}
-
-bool HasParentDirLink(const std::string& response_body) {
-  return response_body.find(kParentDirLink) != std::string::npos;
-}
-
-// There should not be any entries for the parent dir, so this should always
-// return false.
-bool HasParentDirEntry(const std::string& response_body) {
-  std::string needle = kEntryStart;
-  needle += "..\"";
-  return response_body.find(needle) != std::string::npos;
-}
-
-bool HasEntry(const std::string& response_body, const base::FilePath& entry) {
-  std::string needle = kEntryStart + entry.BaseName().MaybeAsASCII();
-  return response_body.find(needle) != std::string::npos;
-}
-
-int GetEntryCount(const std::string& response_body) {
-  int count = 0;
-  std::vector<std::string> lines = base::SplitString(
-      response_body, "\n", base::KEEP_WHITESPACE, base::SPLIT_WANT_ALL);
-  for (const std::string& line : lines) {
-    if (StartsWith(line, kEntryStart, base::CompareCase::INSENSITIVE_ASCII))
-      ++count;
-  }
-  return count;
-}
-
-class TestJobFactory : public URLRequestJobFactory {
- public:
-  explicit TestJobFactory(const base::FilePath& path) : path_(path) {}
-  ~TestJobFactory() override = default;
-
-  URLRequestJob* MaybeCreateJobWithProtocolHandler(
-      const std::string& scheme,
-      URLRequest* request,
-      NetworkDelegate* network_delegate) const override {
-    URLRequestJob* job =
-        new URLRequestFileDirJob(request, network_delegate, path_);
-
-    return job;
-  }
-
-  URLRequestJob* MaybeInterceptRedirect(URLRequest* request,
-                                        NetworkDelegate* network_delegate,
-                                        const GURL& location) const override {
-    return nullptr;
-  }
-
-  URLRequestJob* MaybeInterceptResponse(
-      URLRequest* request,
-      NetworkDelegate* network_delegate) const override {
-    return nullptr;
-  }
-
-  bool IsHandledProtocol(const std::string& scheme) const override {
-    return scheme == "file";
-  }
-
-  bool IsSafeRedirectTarget(const GURL& location) const override {
-    return false;
-  }
-
- private:
-  const base::FilePath path_;
-
-  DISALLOW_COPY_AND_ASSIGN(TestJobFactory);
-};
-
-class TestDirectoryURLRequestDelegate : public TestDelegate {
- public:
-  TestDirectoryURLRequestDelegate() = default;
-
-  ~TestDirectoryURLRequestDelegate() override = default;
-
-  void OnResponseStarted(URLRequest* request, int net_error) override {
-    got_response_started_ = true;
-  }
-
-  bool got_response_started() const { return got_response_started_; }
-
- private:
-  bool got_response_started_ = false;
-
-  DISALLOW_COPY_AND_ASSIGN(TestDirectoryURLRequestDelegate);
-};
-
-class URLRequestFileDirTest : public TestWithTaskEnvironment {
- public:
-  URLRequestFileDirTest()
-      : buffer_(base::MakeRefCounted<IOBuffer>(kBufferSize)) {}
-
- protected:
-  TestURLRequestContext context_;
-  TestDirectoryURLRequestDelegate delegate_;
-  scoped_refptr<IOBuffer> buffer_;
-};
-
-TEST_F(URLRequestFileDirTest, ListCompletionOnNoPending) {
-  base::ScopedTempDir directory;
-  // It is necessary to pass an existing directory to UrlRequest object,
-  // but it will be deleted for testing purpose after request is started.
-  ASSERT_TRUE(directory.CreateUniqueTempDir());
-  TestJobFactory factory(directory.GetPath());
-  context_.set_job_factory(&factory);
-  std::unique_ptr<URLRequest> request(context_.CreateRequest(
-      FilePathToFileURL(
-          directory.GetPath().AppendASCII("this_path_does_not_exist")),
-      DEFAULT_PRIORITY, &delegate_, TRAFFIC_ANNOTATION_FOR_TESTS));
-
-  request->Start();
-  ASSERT_TRUE(directory.Delete());
-
-  // Since the DirectoryLister is running on the network thread, this
-  // will spin the message loop until the read error is returned to the
-  // URLRequestFileDirJob.
-  RunUntilIdle();
-  ASSERT_TRUE(delegate_.got_response_started());
-
-  int bytes_read = request->Read(buffer_.get(), kBufferSize);
-
-  // The URLRequestFileDirJobShould return the cached read error synchronously.
-  // If it's not returned synchronously, the code path this is intended to test
-  // was not executed.
-  EXPECT_THAT(bytes_read, IsError(ERR_FILE_NOT_FOUND));
-}
-
-// Test the case where reading the response completes synchronously.
-TEST_F(URLRequestFileDirTest, DirectoryWithASingleFileSync) {
-  base::ScopedTempDir directory;
-  ASSERT_TRUE(directory.CreateUniqueTempDir());
-  base::FilePath path;
-  base::CreateTemporaryFileInDir(directory.GetPath(), &path);
-
-  TestJobFactory factory(directory.GetPath());
-  context_.set_job_factory(&factory);
-
-  std::unique_ptr<URLRequest> request(
-      context_.CreateRequest(FilePathToFileURL(path), DEFAULT_PRIORITY,
-                             &delegate_, TRAFFIC_ANNOTATION_FOR_TESTS));
-  request->Start();
-  EXPECT_TRUE(request->is_pending());
-
-  // Since the DirectoryLister is running on the network thread, this will spin
-  // the message loop until the URLRequetsFileDirJob has received the
-  // entire directory listing and cached it.
-  RunUntilIdle();
-
-  // This will complete synchronously, since the URLRequetsFileDirJob had
-  // directory listing cached in memory.
-  int bytes_read = request->Read(buffer_.get(), kBufferSize);
-
-  ASSERT_GT(bytes_read, 0);
-  ASSERT_LE(bytes_read, kBufferSize);
-  std::string data(buffer_->data(), bytes_read);
-  EXPECT_TRUE(HasHeader(data, directory.GetPath()));
-  EXPECT_TRUE(HasParentDirLink(data));
-  ASSERT_EQ(1, GetEntryCount(data));
-  EXPECT_TRUE(HasEntry(data, path));
-  EXPECT_FALSE(HasParentDirEntry(data));
-}
-
-// Test the case where reading the response completes asynchronously.
-TEST_F(URLRequestFileDirTest, DirectoryWithASingleFileAsync) {
-  base::ScopedTempDir directory;
-  ASSERT_TRUE(directory.CreateUniqueTempDir());
-  base::FilePath path;
-  base::CreateTemporaryFileInDir(directory.GetPath(), &path);
-
-  TestJobFactory factory(directory.GetPath());
-  context_.set_job_factory(&factory);
-
-  TestDelegate delegate;
-  std::unique_ptr<URLRequest> request(
-      context_.CreateRequest(FilePathToFileURL(path), DEFAULT_PRIORITY,
-                             &delegate, TRAFFIC_ANNOTATION_FOR_TESTS));
-  request->Start();
-  EXPECT_TRUE(request->is_pending());
-
-  base::RunLoop().Run();
-
-  ASSERT_GT(delegate.bytes_received(), 0);
-  ASSERT_LE(delegate.bytes_received(), kBufferSize);
-  EXPECT_TRUE(HasHeader(delegate.data_received(), directory.GetPath()));
-  EXPECT_TRUE(HasParentDirLink(delegate.data_received()));
-  ASSERT_EQ(1, GetEntryCount(delegate.data_received()));
-  EXPECT_TRUE(HasEntry(delegate.data_received(), path));
-  EXPECT_FALSE(HasParentDirEntry(delegate.data_received()));
-}
-
-TEST_F(URLRequestFileDirTest, DirectoryWithAFileAndSubdirectory) {
-  base::ScopedTempDir directory;
-  ASSERT_TRUE(directory.CreateUniqueTempDir());
-
-  base::FilePath sub_dir;
-  CreateTemporaryDirInDir(directory.GetPath(),
-                          FILE_PATH_LITERAL("CreateNewSubDirectoryInDirectory"),
-                          &sub_dir);
-
-  base::FilePath path;
-  base::CreateTemporaryFileInDir(directory.GetPath(), &path);
-
-  TestJobFactory factory(directory.GetPath());
-  context_.set_job_factory(&factory);
-
-  TestDelegate delegate;
-  std::unique_ptr<URLRequest> request(
-      context_.CreateRequest(FilePathToFileURL(path), DEFAULT_PRIORITY,
-                             &delegate, TRAFFIC_ANNOTATION_FOR_TESTS));
-  request->Start();
-  EXPECT_TRUE(request->is_pending());
-
-  base::RunLoop().Run();
-
-  ASSERT_GT(delegate.bytes_received(), 0);
-  ASSERT_LE(delegate.bytes_received(), kBufferSize);
-  EXPECT_TRUE(HasHeader(delegate.data_received(), directory.GetPath()));
-  EXPECT_TRUE(HasParentDirLink(delegate.data_received()));
-  ASSERT_EQ(2, GetEntryCount(delegate.data_received()));
-  EXPECT_TRUE(HasEntry(delegate.data_received(), sub_dir));
-  EXPECT_TRUE(HasEntry(delegate.data_received(), path));
-  EXPECT_FALSE(HasParentDirEntry(delegate.data_received()));
-}
-
-TEST_F(URLRequestFileDirTest, EmptyDirectory) {
-  base::ScopedTempDir directory;
-  ASSERT_TRUE(directory.CreateUniqueTempDir());
-
-  TestJobFactory factory(directory.GetPath());
-  context_.set_job_factory(&factory);
-
-  TestDelegate delegate;
-  std::unique_ptr<URLRequest> request(context_.CreateRequest(
-      FilePathToFileURL(directory.GetPath()), DEFAULT_PRIORITY, &delegate,
-      TRAFFIC_ANNOTATION_FOR_TESTS));
-  request->Start();
-  EXPECT_TRUE(request->is_pending());
-
-  base::RunLoop().Run();
-
-  ASSERT_GT(delegate.bytes_received(), 0);
-  ASSERT_LE(delegate.bytes_received(), kBufferSize);
-  EXPECT_TRUE(HasHeader(delegate.data_received(), directory.GetPath()));
-  EXPECT_TRUE(HasParentDirLink(delegate.data_received()));
-  ASSERT_EQ(0, GetEntryCount(delegate.data_received()));
-  EXPECT_FALSE(HasParentDirEntry(delegate.data_received()));
-}
-
-// Android security policies prevent access to the root directory, so skip this
-// test there.
-#if !defined(OS_ANDROID)
-TEST_F(URLRequestFileDirTest, RootDirectory) {
-  for (int slashes_to_test = 1; slashes_to_test < 4; ++slashes_to_test) {
-    base::FilePath::StringType root_dir_string;
-#if defined(OS_WIN)
-    root_dir_string = FILE_PATH_LITERAL("C:");
-#endif
-    root_dir_string.append(slashes_to_test, base::FilePath::kSeparators[0]);
-    base::FilePath root_dir(root_dir_string);
-    TestJobFactory factory(root_dir);
-    context_.set_job_factory(&factory);
-
-    TestDelegate delegate;
-    std::unique_ptr<URLRequest> request(
-        context_.CreateRequest(FilePathToFileURL(root_dir), DEFAULT_PRIORITY,
-                               &delegate, TRAFFIC_ANNOTATION_FOR_TESTS));
-    request->Start();
-    EXPECT_TRUE(request->is_pending());
-
-    base::RunLoop().Run();
-
-    ASSERT_GT(delegate.bytes_received(), 0);
-    ASSERT_LE(delegate.bytes_received(), kBufferSize);
-    EXPECT_TRUE(HasHeader(delegate.data_received(), root_dir));
-    EXPECT_FALSE(HasParentDirLink(delegate.data_received()));
-    EXPECT_GT(GetEntryCount(delegate.data_received()), 0);
-    EXPECT_FALSE(HasParentDirEntry(delegate.data_received()));
-  }
-}
-#endif  // !defined(OS_ANDROID)
-
-}  // namespace
-
-}  // namespace net
diff --git a/net/url_request/url_request_file_job.cc b/net/url_request/url_request_file_job.cc
deleted file mode 100644
index 0dc3d76..0000000
--- a/net/url_request/url_request_file_job.cc
+++ /dev/null
@@ -1,323 +0,0 @@
-// Copyright (c) 2012 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// For loading files, we make use of overlapped i/o to ensure that reading from
-// the filesystem (e.g., a network filesystem) does not block the calling
-// thread.  An alternative approach would be to use a background thread or pool
-// of threads, but it seems better to leverage the operating system's ability
-// to do background file reads for us.
-//
-// Since overlapped reads require a 'static' buffer for the duration of the
-// asynchronous read, the URLRequestFileJob keeps a buffer as a member var.  In
-// URLRequestFileJob::Read, data is simply copied from the object's buffer into
-// the given buffer.  If there is no data to copy, the URLRequestFileJob
-// attempts to read more from the file to fill its buffer.  If reading from the
-// file does not complete synchronously, then the URLRequestFileJob waits for a
-// signal from the OS that the overlapped read has completed.  It does so by
-// leveraging the MessageLoop::WatchObject API.
-
-#include "net/url_request/url_request_file_job.h"
-
-#include "base/bind.h"
-#include "base/compiler_specific.h"
-#include "base/files/file_util.h"
-#include "base/metrics/histogram_macros.h"
-#include "base/strings/string_util.h"
-#include "base/strings/stringprintf.h"
-#include "base/synchronization/lock.h"
-#include "base/task_runner.h"
-#include "base/threading/thread_restrictions.h"
-#include "build/build_config.h"
-#include "net/base/file_stream.h"
-#include "net/base/filename_util.h"
-#include "net/base/io_buffer.h"
-#include "net/base/load_flags.h"
-#include "net/base/mime_util.h"
-#include "net/filter/gzip_source_stream.h"
-#include "net/filter/source_stream.h"
-#include "net/http/http_util.h"
-#include "net/url_request/url_request_error_job.h"
-#include "net/url_request/url_request_file_dir_job.h"
-#include "url/gurl.h"
-
-#if defined(OS_WIN)
-#include "base/win/shortcut.h"
-#endif
-
-namespace net {
-
-URLRequestFileJob::FileMetaInfo::FileMetaInfo()
-    : file_size(0),
-      mime_type_result(false),
-      file_exists(false),
-      is_directory(false) {
-}
-
-URLRequestFileJob::URLRequestFileJob(
-    URLRequest* request,
-    NetworkDelegate* network_delegate,
-    const base::FilePath& file_path,
-    const scoped_refptr<base::TaskRunner>& file_task_runner)
-    : URLRequestJob(request, network_delegate),
-      file_path_(file_path),
-      stream_(new FileStream(file_task_runner)),
-      file_task_runner_(file_task_runner),
-      remaining_bytes_(0),
-      range_parse_result_(OK) {}
-
-void URLRequestFileJob::Start() {
-  FileMetaInfo* meta_info = new FileMetaInfo();
-  file_task_runner_->PostTaskAndReply(
-      FROM_HERE,
-      base::BindOnce(&URLRequestFileJob::FetchMetaInfo, file_path_,
-                     base::Unretained(meta_info)),
-      base::BindOnce(&URLRequestFileJob::DidFetchMetaInfo,
-                     weak_ptr_factory_.GetWeakPtr(), base::Owned(meta_info)));
-}
-
-void URLRequestFileJob::Kill() {
-  stream_.reset();
-  weak_ptr_factory_.InvalidateWeakPtrs();
-
-  URLRequestJob::Kill();
-}
-
-int URLRequestFileJob::ReadRawData(IOBuffer* dest, int dest_size) {
-  DCHECK_NE(dest_size, 0);
-  DCHECK_GE(remaining_bytes_, 0);
-
-  if (remaining_bytes_ < dest_size)
-    dest_size = remaining_bytes_;
-
-  // If we should copy zero bytes because |remaining_bytes_| is zero, short
-  // circuit here.
-  if (!dest_size)
-    return 0;
-
-  int rv = stream_->Read(dest, dest_size,
-                         base::BindOnce(&URLRequestFileJob::DidRead,
-                                        weak_ptr_factory_.GetWeakPtr(),
-                                        base::WrapRefCounted(dest)));
-  if (rv >= 0) {
-    remaining_bytes_ -= rv;
-    DCHECK_GE(remaining_bytes_, 0);
-  }
-
-  return rv;
-}
-
-bool URLRequestFileJob::IsRedirectResponse(GURL* location,
-                                           int* http_status_code,
-                                           bool* insecure_scheme_was_upgraded) {
-  if (meta_info_.is_directory) {
-    // This happens when we discovered the file is a directory, so needs a
-    // slash at the end of the path.
-    std::string new_path = request_->url().path();
-    new_path.push_back('/');
-    GURL::Replacements replacements;
-    replacements.SetPathStr(new_path);
-
-    *insecure_scheme_was_upgraded = false;
-    *location = request_->url().ReplaceComponents(replacements);
-    *http_status_code = 301;  // simulate a permanent redirect
-    return true;
-  }
-
-#if defined(OS_WIN)
-  // Follow a Windows shortcut.
-  // We just resolve .lnk file, ignore others.
-  if (!base::LowerCaseEqualsASCII(file_path_.Extension(), ".lnk"))
-    return false;
-
-  base::FilePath new_path = file_path_;
-  bool resolved;
-  resolved = base::win::ResolveShortcut(new_path, &new_path, nullptr);
-
-  // If shortcut is not resolved successfully, do not redirect.
-  if (!resolved)
-    return false;
-
-  *location = FilePathToFileURL(new_path);
-  *http_status_code = 301;
-  return true;
-#else
-  return false;
-#endif
-}
-
-bool URLRequestFileJob::GetMimeType(std::string* mime_type) const {
-  DCHECK(request_);
-  if (meta_info_.mime_type_result) {
-    *mime_type = meta_info_.mime_type;
-    return true;
-  }
-  return false;
-}
-
-void URLRequestFileJob::SetExtraRequestHeaders(
-    const HttpRequestHeaders& headers) {
-  std::string range_header;
-  if (headers.GetHeader(HttpRequestHeaders::kRange, &range_header)) {
-    // This job only cares about the Range header. This method stashes the value
-    // for later use in DidOpen(), which is responsible for some of the range
-    // validation as well. NotifyStartError is not legal to call here since
-    // the job has not started.
-    std::vector<HttpByteRange> ranges;
-    if (HttpUtil::ParseRangeHeader(range_header, &ranges)) {
-      if (ranges.size() == 1) {
-        byte_range_ = ranges[0];
-      } else {
-        // We don't support multiple range requests in one single URL request,
-        // because we need to do multipart encoding here.
-        // TODO(hclam): decide whether we want to support multiple range
-        // requests.
-        range_parse_result_ = ERR_REQUEST_RANGE_NOT_SATISFIABLE;
-      }
-    }
-  }
-}
-
-void URLRequestFileJob::GetResponseInfo(HttpResponseInfo* info) {
-  if (!serve_mime_type_as_content_type_ || !meta_info_.mime_type_result)
-    return;
-  auto headers =
-      base::MakeRefCounted<net::HttpResponseHeaders>("HTTP/1.1 200 OK");
-  headers->AddHeader(base::StringPrintf("%s: %s",
-                                        net::HttpRequestHeaders::kContentType,
-                                        meta_info_.mime_type.c_str()));
-  info->headers = headers;
-}
-
-void URLRequestFileJob::OnOpenComplete(int result) {}
-
-void URLRequestFileJob::OnSeekComplete(int64_t result) {}
-
-void URLRequestFileJob::OnReadComplete(IOBuffer* buf, int result) {
-}
-
-URLRequestFileJob::~URLRequestFileJob() = default;
-
-std::unique_ptr<SourceStream> URLRequestFileJob::SetUpSourceStream() {
-  std::unique_ptr<SourceStream> source = URLRequestJob::SetUpSourceStream();
-  if (!base::LowerCaseEqualsASCII(file_path_.Extension(), ".svgz"))
-    return source;
-
-  UMA_HISTOGRAM_BOOLEAN("Net.FileSVGZLoadCount", true);
-  return GzipSourceStream::Create(std::move(source), SourceStream::TYPE_GZIP);
-}
-
-bool URLRequestFileJob::CanAccessFile(const base::FilePath& original_path,
-                                      const base::FilePath& absolute_path) {
-  return !network_delegate() || network_delegate()->CanAccessFile(
-                                    *request(), original_path, absolute_path);
-}
-
-void URLRequestFileJob::FetchMetaInfo(const base::FilePath& file_path,
-                                      FileMetaInfo* meta_info) {
-  base::File::Info file_info;
-  meta_info->file_exists = base::GetFileInfo(file_path, &file_info);
-  if (meta_info->file_exists) {
-    meta_info->file_size = file_info.size;
-    meta_info->is_directory = file_info.is_directory;
-  }
-  // On Windows GetMimeTypeFromFile() goes to the registry. Thus it should be
-  // done in WorkerPool.
-  meta_info->mime_type_result = GetMimeTypeFromFile(file_path,
-                                                    &meta_info->mime_type);
-  meta_info->absolute_path = base::MakeAbsoluteFilePath(file_path);
-}
-
-void URLRequestFileJob::DidFetchMetaInfo(const FileMetaInfo* meta_info) {
-  meta_info_ = *meta_info;
-
-  // We use URLRequestFileJob to handle files as well as directories without
-  // trailing slash.
-  // If a directory does not exist, we return ERR_FILE_NOT_FOUND. Otherwise,
-  // we will append trailing slash and redirect to FileDirJob.
-  // A special case is "\" on Windows. We should resolve as invalid.
-  // However, Windows resolves "\" to "C:\", thus reports it as existent.
-  // So what happens is we append it with trailing slash and redirect it to
-  // FileDirJob where it is resolved as invalid.
-  if (!meta_info_.file_exists) {
-    DidOpen(ERR_FILE_NOT_FOUND);
-    return;
-  }
-  if (meta_info_.is_directory) {
-    DidOpen(OK);
-    return;
-  }
-
-  if (!CanAccessFile(file_path_, meta_info->absolute_path)) {
-    DidOpen(ERR_ACCESS_DENIED);
-    return;
-  }
-
-  int flags = base::File::FLAG_OPEN |
-              base::File::FLAG_READ |
-              base::File::FLAG_ASYNC;
-  int rv = stream_->Open(file_path_, flags,
-                         base::BindOnce(&URLRequestFileJob::DidOpen,
-                                        weak_ptr_factory_.GetWeakPtr()));
-  if (rv != ERR_IO_PENDING)
-    DidOpen(rv);
-}
-
-void URLRequestFileJob::DidOpen(int result) {
-  OnOpenComplete(result);
-  if (result != OK) {
-    NotifyStartError(URLRequestStatus(URLRequestStatus::FAILED, result));
-    return;
-  }
-
-  if (range_parse_result_ != OK ||
-      !byte_range_.ComputeBounds(meta_info_.file_size)) {
-    DidSeek(ERR_REQUEST_RANGE_NOT_SATISFIABLE);
-    return;
-  }
-
-  remaining_bytes_ = byte_range_.last_byte_position() -
-                     byte_range_.first_byte_position() + 1;
-  DCHECK_GE(remaining_bytes_, 0);
-
-  if (remaining_bytes_ > 0 && byte_range_.first_byte_position() != 0) {
-    int rv = stream_->Seek(byte_range_.first_byte_position(),
-                           base::BindOnce(&URLRequestFileJob::DidSeek,
-                                          weak_ptr_factory_.GetWeakPtr()));
-    if (rv != ERR_IO_PENDING)
-      DidSeek(ERR_REQUEST_RANGE_NOT_SATISFIABLE);
-  } else {
-    // We didn't need to call stream_->Seek() at all, so we pass to DidSeek()
-    // the value that would mean seek success. This way we skip the code
-    // handling seek failure.
-    DidSeek(byte_range_.first_byte_position());
-  }
-}
-
-void URLRequestFileJob::DidSeek(int64_t result) {
-  DCHECK(result < 0 || result == byte_range_.first_byte_position());
-
-  OnSeekComplete(result);
-  if (result < 0) {
-    NotifyStartError(URLRequestStatus(URLRequestStatus::FAILED,
-                                      ERR_REQUEST_RANGE_NOT_SATISFIABLE));
-    return;
-  }
-
-  set_expected_content_size(remaining_bytes_);
-  NotifyHeadersComplete();
-}
-
-void URLRequestFileJob::DidRead(scoped_refptr<IOBuffer> buf, int result) {
-  if (result >= 0) {
-    remaining_bytes_ -= result;
-    DCHECK_GE(remaining_bytes_, 0);
-  }
-
-  OnReadComplete(buf.get(), result);
-  buf = nullptr;
-
-  ReadRawDataComplete(result);
-}
-
-}  // namespace net
diff --git a/net/url_request/url_request_job.cc b/net/url_request/url_request_job.cc
index d556c56..a285061 100644
--- a/net/url_request/url_request_job.cc
+++ b/net/url_request/url_request_job.cc
@@ -392,9 +392,8 @@
 
     RedirectInfo redirect_info = RedirectInfo::ComputeRedirectInfo(
         request_->method(), request_->url(), request_->site_for_cookies(),
-        request_->top_frame_origin(), request_->first_party_url_policy(),
-        request_->referrer_policy(), request_->referrer(), http_status_code,
-        new_location,
+        request_->first_party_url_policy(), request_->referrer_policy(),
+        request_->referrer(), http_status_code, new_location,
         net::RedirectUtil::GetReferrerPolicyHeader(
             request_->response_headers()),
         insecure_scheme_was_upgraded, CopyFragmentOnRedirect(new_location));
diff --git a/net/url_request/url_request_test_util.cc b/net/url_request/url_request_test_util.cc
index 2fa80cd..86d64c3 100644
--- a/net/url_request/url_request_test_util.cc
+++ b/net/url_request/url_request_test_util.cc
@@ -365,7 +365,6 @@
       total_network_bytes_sent_(0),
       has_load_timing_info_before_redirect_(false),
       has_load_timing_info_before_auth_(false),
-      can_access_files_(true),
       experimental_cookie_features_enabled_(false),
       cancel_request_with_policy_violating_referrer_(false),
       will_be_intercepted_on_next_error_(false),
@@ -675,13 +674,6 @@
   return allow;
 }
 
-bool TestNetworkDelegate::OnCanAccessFile(
-    const URLRequest& request,
-    const base::FilePath& original_path,
-    const base::FilePath& absolute_path) const {
-  return can_access_files_;
-}
-
 bool TestNetworkDelegate::OnCancelURLRequestWithPolicyViolatingReferrerHeader(
     const URLRequest& request,
     const GURL& target_url,
diff --git a/net/url_request/url_request_test_util.h b/net/url_request/url_request_test_util.h
index 8b91842..31702e9e 100644
--- a/net/url_request/url_request_test_util.h
+++ b/net/url_request/url_request_test_util.h
@@ -303,9 +303,6 @@
   int blocked_set_cookie_count() const { return blocked_set_cookie_count_; }
   int set_cookie_count() const { return set_cookie_count_; }
 
-  void set_can_access_files(bool val) { can_access_files_ = val; }
-  bool can_access_files() const { return can_access_files_; }
-
   void set_experimental_cookie_features_enabled(bool val) {
     experimental_cookie_features_enabled_ = val;
   }
@@ -380,9 +377,6 @@
                       const net::CanonicalCookie& cookie,
                       CookieOptions* options,
                       bool allowed_from_caller) override;
-  bool OnCanAccessFile(const URLRequest& request,
-                       const base::FilePath& original_path,
-                       const base::FilePath& absolute_path) const override;
   bool OnCancelURLRequestWithPolicyViolatingReferrerHeader(
       const URLRequest& request,
       const GURL& target_url,
@@ -428,7 +422,6 @@
   LoadTimingInfo load_timing_info_before_auth_;
   bool has_load_timing_info_before_auth_;
 
-  bool can_access_files_;  // true by default
   bool experimental_cookie_features_enabled_;           // false by default
   bool cancel_request_with_policy_violating_referrer_;  // false by default
   bool will_be_intercepted_on_next_error_;
diff --git a/net/url_request/url_request_unittest.cc b/net/url_request/url_request_unittest.cc
index cb008715..ecf3eb8 100644
--- a/net/url_request/url_request_unittest.cc
+++ b/net/url_request/url_request_unittest.cc
@@ -133,12 +133,6 @@
 #include "testing/gtest/include/gtest/gtest.h"
 #include "testing/platform_test.h"
 
-#if !BUILDFLAG(DISABLE_FILE_SUPPORT)
-#include "net/base/filename_util.h"
-#include "net/url_request/file_protocol_handler.h"
-#include "net/url_request/url_request_file_dir_job.h"
-#endif
-
 #if !BUILDFLAG(DISABLE_FTP_SUPPORT) && !defined(OS_ANDROID)
 #include "net/ftp/ftp_auth_cache.h"
 #include "net/ftp/ftp_network_layer.h"
@@ -265,29 +259,6 @@
             load_timing_info.receive_headers_end);
 }
 
-#if !BUILDFLAG(DISABLE_FILE_SUPPORT)
-// Tests load timing information in the case of a cache hit, when no cache
-// validation request was sent over the wire.
-base::StringPiece TestNetResourceProvider(int key) {
-  return "header";
-}
-
-void FillBuffer(char* buffer, size_t len) {
-  static bool called = false;
-  if (!called) {
-    called = true;
-    int seed = static_cast<int>(Time::Now().ToInternalValue());
-    srand(seed);
-  }
-
-  for (size_t i = 0; i < len; i++) {
-    buffer[i] = static_cast<char>(rand());
-    if (!buffer[i])
-      buffer[i] = 'g';
-  }
-}
-#endif
-
 CookieList GetAllCookies(URLRequestContext* request_context) {
   CookieList cookie_list;
   base::RunLoop run_loop;
@@ -823,11 +794,6 @@
   virtual void SetUpFactory() {
     job_factory_impl_->SetProtocolHandler(
         "data", std::make_unique<DataProtocolHandler>());
-#if !BUILDFLAG(DISABLE_FILE_SUPPORT)
-    job_factory_impl_->SetProtocolHandler(
-        "file", std::make_unique<FileProtocolHandler>(
-                    base::ThreadTaskRunnerHandle::Get()));
-#endif
   }
 
   TestNetworkDelegate* default_network_delegate() {
@@ -870,41 +836,6 @@
   base::ScopedTempDir temp_dir_;
 };
 
-// This NetworkDelegate is picky about what files are accessible. Only
-// allowlisted files are allowed.
-class CookieBlockingNetworkDelegate : public TestNetworkDelegate {
- public:
-  CookieBlockingNetworkDelegate() = default;
-
-  // Adds |directory| to the access allow list.
-  void AddToAllowlist(const base::FilePath& directory) {
-    allowlist_.insert(directory);
-  }
-
- private:
-  // Returns true if |path| matches the allow list.
-  bool OnCanAccessFileInternal(const base::FilePath& path) const {
-    for (const auto& directory : allowlist_) {
-      if (directory == path || directory.IsParent(path))
-        return true;
-    }
-    return false;
-  }
-
-  // Returns true only if both |original_path| and |absolute_path| match the
-  // allow list.
-  bool OnCanAccessFile(const URLRequest& request,
-                       const base::FilePath& original_path,
-                       const base::FilePath& absolute_path) const override {
-    return (OnCanAccessFileInternal(original_path) &&
-            OnCanAccessFileInternal(absolute_path));
-  }
-
-  std::set<base::FilePath> allowlist_;
-
-  DISALLOW_COPY_AND_ASSIGN(CookieBlockingNetworkDelegate);
-};
-
 TEST_F(URLRequestTest, AboutBlankTest) {
   TestDelegate d;
   {
@@ -965,429 +896,6 @@
   }
 }
 
-#if !BUILDFLAG(DISABLE_FILE_SUPPORT)
-TEST_F(URLRequestTest, FileTest) {
-  const char kTestFileContent[] = "Hello";
-  base::FilePath test_file;
-  ASSERT_NO_FATAL_FAILURE(
-      CreateTestFile(kTestFileContent, sizeof(kTestFileContent), &test_file));
-
-  GURL test_url = FilePathToFileURL(test_file);
-
-  TestDelegate d;
-  {
-    std::unique_ptr<URLRequest> r(default_context().CreateRequest(
-        test_url, DEFAULT_PRIORITY, &d, TRAFFIC_ANNOTATION_FOR_TESTS));
-
-    r->Start();
-    EXPECT_TRUE(r->is_pending());
-
-    d.RunUntilComplete();
-
-    EXPECT_TRUE(!r->is_pending());
-    EXPECT_EQ(1, d.response_started_count());
-    EXPECT_FALSE(d.received_data_before_response());
-    EXPECT_EQ(d.bytes_received(), static_cast<int>(sizeof(kTestFileContent)));
-    EXPECT_TRUE(r->GetResponseRemoteEndpoint().address().empty());
-    EXPECT_EQ(0, r->GetResponseRemoteEndpoint().port());
-  }
-}
-
-TEST_F(URLRequestTest, FileTestCancel) {
-  const char kTestFileContent[] = "Hello";
-  base::FilePath test_file;
-  ASSERT_NO_FATAL_FAILURE(
-      CreateTestFile(kTestFileContent, sizeof(kTestFileContent), &test_file));
-
-  GURL test_url = FilePathToFileURL(test_file);
-
-  TestDelegate d;
-  {
-    std::unique_ptr<URLRequest> r(default_context().CreateRequest(
-        test_url, DEFAULT_PRIORITY, &d, TRAFFIC_ANNOTATION_FOR_TESTS));
-
-    r->Start();
-    EXPECT_TRUE(r->is_pending());
-    r->Cancel();
-  }
-  // Async cancellation should be safe even when URLRequest has been already
-  // destroyed.
-  base::RunLoop().RunUntilIdle();
-}
-
-TEST_F(URLRequestTest, FileTestFullSpecifiedRange) {
-  const size_t buffer_size = 4000;
-  std::unique_ptr<char[]> buffer(new char[buffer_size]);
-  FillBuffer(buffer.get(), buffer_size);
-
-  base::FilePath test_file;
-  ASSERT_NO_FATAL_FAILURE(
-      CreateTestFile(buffer.get(), buffer_size, &test_file));
-  GURL temp_url = FilePathToFileURL(test_file);
-
-  const size_t first_byte_position = 500;
-  const size_t last_byte_position = buffer_size - first_byte_position;
-  const size_t content_length = last_byte_position - first_byte_position + 1;
-  std::string partial_buffer_string(buffer.get() + first_byte_position,
-                                    buffer.get() + last_byte_position + 1);
-
-  TestDelegate d;
-  {
-    std::unique_ptr<URLRequest> r(default_context().CreateRequest(
-        temp_url, DEFAULT_PRIORITY, &d, TRAFFIC_ANNOTATION_FOR_TESTS));
-
-    HttpRequestHeaders headers;
-    headers.SetHeader(
-        HttpRequestHeaders::kRange,
-        HttpByteRange::Bounded(
-            first_byte_position, last_byte_position).GetHeaderValue());
-    r->SetExtraRequestHeaders(headers);
-    r->Start();
-    EXPECT_TRUE(r->is_pending());
-
-    d.RunUntilComplete();
-
-    EXPECT_TRUE(!r->is_pending());
-    EXPECT_EQ(1, d.response_started_count());
-    EXPECT_FALSE(d.received_data_before_response());
-    EXPECT_EQ(static_cast<int>(content_length), d.bytes_received());
-    // Don't use EXPECT_EQ, it will print out a lot of garbage if check failed.
-    EXPECT_TRUE(partial_buffer_string == d.data_received());
-  }
-}
-
-TEST_F(URLRequestTest, FileTestHalfSpecifiedRange) {
-  const size_t buffer_size = 4000;
-  std::unique_ptr<char[]> buffer(new char[buffer_size]);
-  FillBuffer(buffer.get(), buffer_size);
-
-  base::FilePath test_file;
-  ASSERT_NO_FATAL_FAILURE(
-      CreateTestFile(buffer.get(), buffer_size, &test_file));
-  GURL temp_url = FilePathToFileURL(test_file);
-
-  const size_t first_byte_position = 500;
-  const size_t last_byte_position = buffer_size - 1;
-  const size_t content_length = last_byte_position - first_byte_position + 1;
-  std::string partial_buffer_string(buffer.get() + first_byte_position,
-                                    buffer.get() + last_byte_position + 1);
-
-  TestDelegate d;
-  {
-    std::unique_ptr<URLRequest> r(default_context().CreateRequest(
-        temp_url, DEFAULT_PRIORITY, &d, TRAFFIC_ANNOTATION_FOR_TESTS));
-
-    HttpRequestHeaders headers;
-    headers.SetHeader(HttpRequestHeaders::kRange,
-                      HttpByteRange::RightUnbounded(
-                          first_byte_position).GetHeaderValue());
-    r->SetExtraRequestHeaders(headers);
-    r->Start();
-    EXPECT_TRUE(r->is_pending());
-
-    base::RunLoop().Run();
-    EXPECT_TRUE(!r->is_pending());
-    EXPECT_EQ(1, d.response_started_count());
-    EXPECT_FALSE(d.received_data_before_response());
-    EXPECT_EQ(static_cast<int>(content_length), d.bytes_received());
-    // Don't use EXPECT_EQ, it will print out a lot of garbage if check failed.
-    EXPECT_TRUE(partial_buffer_string == d.data_received());
-  }
-}
-
-TEST_F(URLRequestTest, FileTestMultipleRanges) {
-  const size_t buffer_size = 400000;
-  std::unique_ptr<char[]> buffer(new char[buffer_size]);
-  FillBuffer(buffer.get(), buffer_size);
-
-  base::FilePath test_file;
-  ASSERT_NO_FATAL_FAILURE(
-      CreateTestFile(buffer.get(), buffer_size, &test_file));
-  GURL temp_url = FilePathToFileURL(test_file);
-
-  TestDelegate d;
-  {
-    std::unique_ptr<URLRequest> r(default_context().CreateRequest(
-        temp_url, DEFAULT_PRIORITY, &d, TRAFFIC_ANNOTATION_FOR_TESTS));
-
-    HttpRequestHeaders headers;
-    headers.SetHeader(HttpRequestHeaders::kRange, "bytes=0-0,10-200,200-300");
-    r->SetExtraRequestHeaders(headers);
-    r->Start();
-    EXPECT_TRUE(r->is_pending());
-
-    d.RunUntilComplete();
-
-    EXPECT_TRUE(d.request_failed());
-  }
-}
-
-TEST_F(URLRequestTest, AllowFileURLs) {
-  std::string test_data("monkey");
-  base::FilePath test_file;
-  ASSERT_NO_FATAL_FAILURE(
-      CreateTestFile(test_data.data(), test_data.size(), &test_file));
-
-  // The directory part of the path returned from CreateTemporaryFileInDir()
-  // can be slightly different from |absolute_temp_dir| on Windows.
-  // Example: C:\\Users\\CHROME~2 -> C:\\Users\\chrome-bot
-  // Hence the test should use the directory name of |test_file|, rather than
-  // |absolute_temp_dir|, for allowlisting.
-  base::FilePath real_temp_dir = test_file.DirName();
-  GURL test_file_url = FilePathToFileURL(test_file);
-  {
-    TestDelegate d;
-    CookieBlockingNetworkDelegate network_delegate;
-    network_delegate.AddToAllowlist(real_temp_dir);
-    default_context().set_network_delegate(&network_delegate);
-    std::unique_ptr<URLRequest> r(default_context().CreateRequest(
-        test_file_url, DEFAULT_PRIORITY, &d, TRAFFIC_ANNOTATION_FOR_TESTS));
-    r->Start();
-    d.RunUntilComplete();
-    // This should be allowed as the file path is allowlisted.
-    EXPECT_FALSE(d.request_failed());
-    EXPECT_EQ(test_data, d.data_received());
-  }
-
-  {
-    TestDelegate d;
-    CookieBlockingNetworkDelegate network_delegate;
-    default_context().set_network_delegate(&network_delegate);
-    std::unique_ptr<URLRequest> r(default_context().CreateRequest(
-        test_file_url, DEFAULT_PRIORITY, &d, TRAFFIC_ANNOTATION_FOR_TESTS));
-    r->Start();
-    d.RunUntilComplete();
-    // This should be rejected as the file path is not allowlisted.
-    EXPECT_TRUE(d.request_failed());
-    EXPECT_EQ("", d.data_received());
-    EXPECT_EQ(ERR_ACCESS_DENIED, d.request_status());
-  }
-}
-
-#if defined(OS_POSIX)  // Because of symbolic links.
-
-TEST_F(URLRequestTest, SymlinksToFiles) {
-  ASSERT_TRUE(temp_dir_.CreateUniqueTempDir());
-  // Get an absolute path since temp_dir can contain a symbolic link.
-  base::FilePath absolute_temp_dir =
-      base::MakeAbsoluteFilePath(temp_dir_.GetPath());
-
-  // Create a good directory (will be allowlisted) and a good file.
-  base::FilePath good_dir = absolute_temp_dir.AppendASCII("good");
-  ASSERT_TRUE(base::CreateDirectory(good_dir));
-  base::FilePath good_file;
-  ASSERT_TRUE(base::CreateTemporaryFileInDir(good_dir, &good_file));
-  std::string good_data("good");
-  base::WriteFile(good_file, good_data.data(), good_data.size());
-  // See the comment in AllowFileURLs() for why this is done.
-  base::FilePath real_good_dir = good_file.DirName();
-
-  // Create a bad directory (will not be allowlisted) and a bad file.
-  base::FilePath bad_dir = absolute_temp_dir.AppendASCII("bad");
-  ASSERT_TRUE(base::CreateDirectory(bad_dir));
-  base::FilePath bad_file;
-  ASSERT_TRUE(base::CreateTemporaryFileInDir(bad_dir, &bad_file));
-  std::string bad_data("bad");
-  base::WriteFile(bad_file, bad_data.data(), bad_data.size());
-
-  // This symlink will point to the good file. Access to the symlink will be
-  // allowed as both the symlink and the destination file are in the same
-  // good directory.
-  base::FilePath good_symlink = good_dir.AppendASCII("good_symlink");
-  ASSERT_TRUE(base::CreateSymbolicLink(good_file, good_symlink));
-  GURL good_file_url = FilePathToFileURL(good_symlink);
-  // This symlink will point to the bad file. Even though the symlink is in
-  // the good directory, access to the symlink will be rejected since it
-  // points to the bad file.
-  base::FilePath bad_symlink = good_dir.AppendASCII("bad_symlink");
-  ASSERT_TRUE(base::CreateSymbolicLink(bad_file, bad_symlink));
-  GURL bad_file_url = FilePathToFileURL(bad_symlink);
-
-  CookieBlockingNetworkDelegate network_delegate;
-  network_delegate.AddToAllowlist(real_good_dir);
-  {
-    TestDelegate d;
-    default_context().set_network_delegate(&network_delegate);
-    std::unique_ptr<URLRequest> r(default_context().CreateRequest(
-        good_file_url, DEFAULT_PRIORITY, &d, TRAFFIC_ANNOTATION_FOR_TESTS));
-    r->Start();
-    d.RunUntilComplete();
-    // good_file_url should be allowed.
-    EXPECT_FALSE(d.request_failed());
-    EXPECT_EQ(good_data, d.data_received());
-  }
-
-  {
-    TestDelegate d;
-    default_context().set_network_delegate(&network_delegate);
-    std::unique_ptr<URLRequest> r(default_context().CreateRequest(
-        bad_file_url, DEFAULT_PRIORITY, &d, TRAFFIC_ANNOTATION_FOR_TESTS));
-    r->Start();
-    d.RunUntilComplete();
-    // bad_file_url should be rejected.
-    EXPECT_TRUE(d.request_failed());
-    EXPECT_EQ("", d.data_received());
-    EXPECT_EQ(ERR_ACCESS_DENIED, d.request_status());
-  }
-}
-
-TEST_F(URLRequestTest, SymlinksToDirs) {
-  ASSERT_TRUE(temp_dir_.CreateUniqueTempDir());
-  // Get an absolute path since temp_dir can contain a symbolic link.
-  base::FilePath absolute_temp_dir =
-      base::MakeAbsoluteFilePath(temp_dir_.GetPath());
-
-  // Create a good directory (will be allowlisted).
-  base::FilePath good_dir = absolute_temp_dir.AppendASCII("good");
-  ASSERT_TRUE(base::CreateDirectory(good_dir));
-
-  // Create a bad directory (will not be allowlisted).
-  base::FilePath bad_dir = absolute_temp_dir.AppendASCII("bad");
-  ASSERT_TRUE(base::CreateDirectory(bad_dir));
-
-  // This symlink will point to the good directory. Access to the symlink
-  // will be allowed as the symlink is in the good dir that'll be white
-  // listed.
-  base::FilePath good_symlink = good_dir.AppendASCII("good_symlink");
-  ASSERT_TRUE(base::CreateSymbolicLink(good_dir, good_symlink));
-  GURL good_file_url = FilePathToFileURL(good_symlink);
-  // This symlink will point to the bad directory. Even though the symlink is
-  // in the good directory, access to the symlink will be rejected since it
-  // points to the bad directory.
-  base::FilePath bad_symlink = good_dir.AppendASCII("bad_symlink");
-  ASSERT_TRUE(base::CreateSymbolicLink(bad_dir, bad_symlink));
-  GURL bad_file_url = FilePathToFileURL(bad_symlink);
-
-  CookieBlockingNetworkDelegate network_delegate;
-  network_delegate.AddToAllowlist(good_dir);
-  {
-    TestDelegate d;
-    default_context().set_network_delegate(&network_delegate);
-    std::unique_ptr<URLRequest> r(default_context().CreateRequest(
-        good_file_url, DEFAULT_PRIORITY, &d, TRAFFIC_ANNOTATION_FOR_TESTS));
-    r->Start();
-    d.RunUntilComplete();
-    // good_file_url should be allowed.
-    EXPECT_FALSE(d.request_failed());
-    ASSERT_NE(d.data_received().find("good_symlink"), std::string::npos);
-  }
-
-  {
-    TestDelegate d;
-    default_context().set_network_delegate(&network_delegate);
-    std::unique_ptr<URLRequest> r(default_context().CreateRequest(
-        bad_file_url, DEFAULT_PRIORITY, &d, TRAFFIC_ANNOTATION_FOR_TESTS));
-    r->Start();
-    d.RunUntilComplete();
-    // bad_file_url should be rejected.
-    EXPECT_TRUE(d.request_failed());
-    EXPECT_EQ("", d.data_received());
-    EXPECT_EQ(ERR_ACCESS_DENIED, d.request_status());
-  }
-}
-
-#endif  // defined(OS_POSIX)
-
-TEST_F(URLRequestTest, FileDirCancelTest) {
-  // Put in mock resource provider.
-  NetModule::SetResourceProvider(TestNetResourceProvider);
-
-  TestDelegate d;
-  {
-    base::FilePath file_path;
-    base::PathService::Get(base::DIR_SOURCE_ROOT, &file_path);
-    file_path = file_path.Append(FILE_PATH_LITERAL("net"));
-    file_path = file_path.Append(FILE_PATH_LITERAL("data"));
-
-    std::unique_ptr<URLRequest> req(default_context().CreateRequest(
-        FilePathToFileURL(file_path), DEFAULT_PRIORITY, &d,
-        TRAFFIC_ANNOTATION_FOR_TESTS));
-    req->Start();
-    EXPECT_TRUE(req->is_pending());
-
-    d.set_cancel_in_received_data_pending(true);
-
-    d.RunUntilComplete();
-  }
-
-  // Take out mock resource provider.
-  NetModule::SetResourceProvider(nullptr);
-}
-
-TEST_F(URLRequestTest, FileDirOutputSanity) {
-  // Verify the general sanity of the the output of the file:
-  // directory lister by checking for the output of a known existing
-  // file.
-  const char sentinel_name[] = "filedir-sentinel";
-
-  base::FilePath path;
-  base::PathService::Get(base::DIR_SOURCE_ROOT, &path);
-  path = path.Append(kTestFilePath);
-
-  TestDelegate d;
-  std::unique_ptr<URLRequest> req(
-      default_context().CreateRequest(FilePathToFileURL(path), DEFAULT_PRIORITY,
-                                      &d, TRAFFIC_ANNOTATION_FOR_TESTS));
-  req->Start();
-  d.RunUntilComplete();
-
-  // Generate entry for the sentinel file.
-  base::FilePath sentinel_path = path.AppendASCII(sentinel_name);
-  base::File::Info info;
-  EXPECT_TRUE(base::GetFileInfo(sentinel_path, &info));
-  EXPECT_GT(info.size, 0);
-  std::string sentinel_output = GetDirectoryListingEntry(
-      base::string16(sentinel_name, sentinel_name + strlen(sentinel_name)),
-      std::string(sentinel_name), false /* is_dir */, info.size,
-
-      info.last_modified);
-
-  ASSERT_LT(0, d.bytes_received());
-  ASSERT_FALSE(d.request_failed());
-  EXPECT_EQ(OK, d.request_status());
-  // Check for the entry generated for the "sentinel" file.
-  const std::string& data = d.data_received();
-  ASSERT_NE(data.find(sentinel_output), std::string::npos);
-}
-
-TEST_F(URLRequestTest, FileDirRedirectNoCrash) {
-  // There is an implicit redirect when loading a file path that matches a
-  // directory and does not end with a slash.  Ensure that following such
-  // redirects does not crash.  See http://crbug.com/18686.
-
-  base::FilePath path;
-  base::PathService::Get(base::DIR_SOURCE_ROOT, &path);
-  path = path.Append(kTestFilePath);
-
-  TestDelegate d;
-  std::unique_ptr<URLRequest> req(
-      default_context().CreateRequest(FilePathToFileURL(path), DEFAULT_PRIORITY,
-                                      &d, TRAFFIC_ANNOTATION_FOR_TESTS));
-  req->Start();
-  d.RunUntilComplete();
-
-  ASSERT_EQ(1, d.received_redirect_count());
-  ASSERT_LT(0, d.bytes_received());
-  ASSERT_FALSE(d.request_failed());
-  EXPECT_EQ(OK, d.request_status());
-}
-
-#if defined(OS_WIN)
-// Don't accept the url "file:///" on windows. See http://crbug.com/1474.
-TEST_F(URLRequestTest, FileDirRedirectSingleSlash) {
-  TestDelegate d;
-  std::unique_ptr<URLRequest> req(default_context().CreateRequest(
-      GURL("file:///"), DEFAULT_PRIORITY, &d, TRAFFIC_ANNOTATION_FOR_TESTS));
-  req->Start();
-  d.RunUntilComplete();
-
-  ASSERT_EQ(1, d.received_redirect_count());
-  EXPECT_NE(OK, d.request_status());
-}
-#endif  // defined(OS_WIN)
-
-#endif  // !BUILDFLAG(DISABLE_FILE_SUPPORT)
-
 TEST_F(URLRequestTest, InvalidUrlTest) {
   TestDelegate d;
   {
@@ -1419,65 +927,6 @@
   EXPECT_TRUE(d.request_failed());
 }
 
-#if defined(OS_WIN)
-TEST_F(URLRequestTest, ResolveShortcutTest) {
-  base::FilePath app_path;
-  base::PathService::Get(base::DIR_SOURCE_ROOT, &app_path);
-  app_path = app_path.Append(kTestFilePath);
-  app_path = app_path.AppendASCII("with-headers.html");
-
-  base::string16 lnk_path = app_path.value() + FILE_PATH_LITERAL(".lnk");
-
-  base::win::ScopedCOMInitializer com_initializer;
-
-  // Temporarily create a shortcut for test
-  {
-    Microsoft::WRL::ComPtr<IShellLink> shell;
-    ASSERT_TRUE(SUCCEEDED(::CoCreateInstance(
-        CLSID_ShellLink, nullptr, CLSCTX_INPROC_SERVER, IID_PPV_ARGS(&shell))));
-    Microsoft::WRL::ComPtr<IPersistFile> persist;
-    ASSERT_TRUE(SUCCEEDED(shell.CopyTo(persist.GetAddressOf())));
-    EXPECT_TRUE(SUCCEEDED(shell->SetPath(base::as_wcstr(app_path.value()))));
-    EXPECT_TRUE(SUCCEEDED(shell->SetDescription(L"ResolveShortcutTest")));
-    EXPECT_TRUE(SUCCEEDED(persist->Save(base::as_wcstr(lnk_path), TRUE)));
-  }
-
-  TestDelegate d;
-  {
-    std::unique_ptr<URLRequest> r(default_context().CreateRequest(
-        FilePathToFileURL(base::FilePath(lnk_path)), DEFAULT_PRIORITY, &d,
-        TRAFFIC_ANNOTATION_FOR_TESTS));
-
-    r->Start();
-    EXPECT_TRUE(r->is_pending());
-
-    d.RunUntilComplete();
-
-    WIN32_FILE_ATTRIBUTE_DATA data;
-    GetFileAttributesEx(base::as_wcstr(app_path.value()), GetFileExInfoStandard,
-                        &data);
-    HANDLE file = CreateFile(base::as_wcstr(app_path.value()), GENERIC_READ,
-                             FILE_SHARE_READ, nullptr, OPEN_EXISTING,
-                             FILE_ATTRIBUTE_NORMAL, nullptr);
-    EXPECT_NE(INVALID_HANDLE_VALUE, file);
-    std::unique_ptr<char[]> buffer(new char[data.nFileSizeLow]);
-    DWORD read_size;
-    BOOL result;
-    result =
-        ReadFile(file, buffer.get(), data.nFileSizeLow, &read_size, nullptr);
-    std::string content(buffer.get(), read_size);
-    CloseHandle(file);
-
-    EXPECT_TRUE(!r->is_pending());
-    EXPECT_EQ(1, d.received_redirect_count());
-    EXPECT_EQ(content, d.data_received());
-  }
-
-  // Clean the shortcut
-  DeleteFile(base::as_wcstr(lnk_path));
-}
-#endif  // defined(OS_WIN)
-
 // Custom URLRequestJobs for use with interceptor tests
 class RestartTestJob : public URLRequestTestJob {
  public:
@@ -7544,18 +6993,6 @@
   EXPECT_FALSE(job_factory_->IsSafeRedirectTarget(data_url));
 }
 
-#if !BUILDFLAG(DISABLE_FILE_SUPPORT)
-TEST_F(URLRequestTestHTTP, ProtocolHandlerAndFactoryRestrictFileRedirects) {
-  // Test URLRequestJobFactory::ProtocolHandler::IsSafeRedirectTarget().
-  GURL file_url("file:///foo.txt");
-  FileProtocolHandler file_protocol_handler(
-      base::ThreadTaskRunnerHandle::Get());
-  EXPECT_FALSE(file_protocol_handler.IsSafeRedirectTarget(file_url));
-
-  // Test URLRequestJobFactoryImpl::IsSafeRedirectTarget().
-  EXPECT_FALSE(job_factory_->IsSafeRedirectTarget(file_url));
-}
-
 TEST_F(URLRequestTestHTTP, RestrictFileRedirects) {
   ASSERT_TRUE(http_test_server()->Start());
 
@@ -7566,12 +7003,9 @@
   req->Start();
   d.RunUntilComplete();
 
-  EXPECT_EQ(ERR_UNSAFE_REDIRECT, d.request_status());
-
-  // The redirect should have been rejected before reporting it to the caller.
-  EXPECT_EQ(0, d.received_redirect_count());
+  EXPECT_EQ(ERR_UNKNOWN_URL_SCHEME, d.request_status());
+  EXPECT_EQ(1, d.received_redirect_count());
 }
-#endif  // !BUILDFLAG(DISABLE_FILE_SUPPORT)
 
 TEST_F(URLRequestTestHTTP, RestrictDataRedirects) {
   ASSERT_TRUE(http_test_server()->Start());
@@ -9156,30 +8590,6 @@
     EXPECT_EQ(expected_first_party_url, r->site_for_cookies());
 }
 
-TEST_F(URLRequestTestHTTP, RedirectUpdateTopFrameOrigin) {
-  ASSERT_TRUE(http_test_server()->Start());
-
-  GURL url(http_test_server()->GetURL("/redirect302-to-echo"));
-  url::Origin original_top_frame_origin =
-      url::Origin::Create(GURL("http://example.com"));
-  url::Origin expected_top_frame_origin =
-      url::Origin::Create(GURL(http_test_server()->GetURL("/echo")));
-
-  TestDelegate d;
-
-  std::unique_ptr<URLRequest> r(default_context().CreateRequest(
-      url, DEFAULT_PRIORITY, &d, TRAFFIC_ANNOTATION_FOR_TESTS));
-  r->set_top_frame_origin(original_top_frame_origin);
-  r->set_first_party_url_policy(URLRequest::UPDATE_FIRST_PARTY_URL_ON_REDIRECT);
-
-  r->Start();
-  d.RunUntilComplete();
-
-  EXPECT_EQ(2U, r->url_chain().size());
-  EXPECT_EQ(OK, d.request_status());
-  EXPECT_EQ(expected_top_frame_origin, *r->top_frame_origin());
-}
-
 TEST_F(URLRequestTestHTTP, RedirectIgnoreUnsetTopFrameOrigin) {
   ASSERT_TRUE(http_test_server()->Start());
 
diff --git a/pdf/pdfium/pdfium_page.cc b/pdf/pdfium/pdfium_page.cc
index db070ad..9ba35beb 100644
--- a/pdf/pdfium/pdfium_page.cc
+++ b/pdf/pdfium/pdfium_page.cc
@@ -439,7 +439,7 @@
   CalculateLinks();
   if (link_index >= static_cast<int>(links_.size()))
     return NONSELECTABLE_AREA;
-  target->url = links_[link_index].url;
+  target->url = links_[link_index].target.url;
   DCHECK(!target->url.empty());
   return WEBLINK_AREA;
 }
@@ -647,7 +647,7 @@
     for (const auto& rect : links_[i].bounding_rects) {
       if (rect.Contains(origin)) {
         if (target)
-          target->url = links_[i].url;
+          target->url = links_[i].target.url;
         return i;
       }
     }
@@ -660,6 +660,11 @@
     return;
 
   calculated_links_ = true;
+  PopulateWebLinks();
+  PopulateAnnotationLinks();
+}
+
+void PDFiumPage::PopulateWebLinks() {
   ScopedFPDFPageLink links(FPDFLink_LoadWebLinks(GetTextPage()));
   int count = FPDFLink_CountWebLinks(links.get());
   for (int i = 0; i < count; ++i) {
@@ -674,23 +679,23 @@
       api_string_adapter.Close(actual_length);
     }
     Link link;
-    link.url = base::UTF16ToUTF8(url);
+    link.target.url = base::UTF16ToUTF8(url);
 
     IsValidLinkFunction is_valid_link_func =
         g_is_valid_link_func_for_testing ? g_is_valid_link_func_for_testing
                                          : &IsValidLink;
-    if (!is_valid_link_func(link.url))
+    if (!is_valid_link_func(link.target.url))
       continue;
 
     // Make sure all the characters in the URL are valid per RFC 1738.
     // http://crbug.com/340326 has a sample bad PDF.
     // GURL does not work correctly, e.g. it just strips \t \r \n.
     bool is_invalid_url = false;
-    for (size_t j = 0; j < link.url.length(); ++j) {
+    for (size_t j = 0; j < link.target.url.length(); ++j) {
       // Control characters are not allowed.
       // 0x7F is also a control character.
       // 0x80 and above are not in US-ASCII.
-      if (link.url[j] < ' ' || link.url[j] >= '\x7F') {
+      if (link.target.url[j] < ' ' || link.target.url[j] >= '\x7F') {
         is_invalid_url = true;
         break;
       }
@@ -718,6 +723,58 @@
   }
 }
 
+void PDFiumPage::PopulateAnnotationLinks() {
+  int start_pos = 0;
+  FPDF_LINK link_annot;
+  FPDF_PAGE page = GetPage();
+  while (FPDFLink_Enumerate(page, &start_pos, &link_annot)) {
+    Link link;
+    Area area = GetLinkTarget(link_annot, &link.target);
+    if (area == NONSELECTABLE_AREA)
+      continue;
+
+    FS_RECTF link_rect;
+    if (!FPDFLink_GetAnnotRect(link_annot, &link_rect))
+      continue;
+
+    // The horizontal/vertical coordinates in PDF Links could be
+    // flipped. Swap the coordinates before further processing.
+    if (link_rect.right < link_rect.left)
+      std::swap(link_rect.right, link_rect.left);
+    if (link_rect.bottom > link_rect.top)
+      std::swap(link_rect.bottom, link_rect.top);
+
+    int quad_point_count = FPDFLink_CountQuadPoints(link_annot);
+    // Calculate the bounds of link using the quad points data.
+    // If quad points for link is not present then use
+    // |link_rect| to calculate the bounds instead.
+    if (quad_point_count > 0) {
+      for (int i = 0; i < quad_point_count; ++i) {
+        FS_QUADPOINTSF point;
+        if (FPDFLink_GetQuadPoints(link_annot, i, &point)) {
+          // PDF Specifications: Quadpoints start from bottom left (x1, y1) and
+          // runs counter clockwise.
+          link.bounding_rects.push_back(
+              PageToScreen(pp::Point(), 1.0, point.x4, point.y4, point.x2,
+                           point.y2, PageOrientation::kOriginal));
+        }
+      }
+    } else {
+      link.bounding_rects.push_back(PageToScreen(
+          pp::Point(), 1.0, link_rect.left, link_rect.top, link_rect.right,
+          link_rect.bottom, PageOrientation::kOriginal));
+    }
+
+    // Calculate underlying text range of link.
+    GetUnderlyingTextRangeForRect(
+        pp::FloatRect(link_rect.left, link_rect.bottom,
+                      std::abs(link_rect.right - link_rect.left),
+                      std::abs(link_rect.bottom - link_rect.top)),
+        &link.start_char_index, &link.char_count);
+    links_.emplace_back(link);
+  }
+}
+
 void PDFiumPage::CalculateImages() {
   if (calculated_images_)
     return;
diff --git a/pdf/pdfium/pdfium_page.h b/pdf/pdfium/pdfium_page.h
index 0696925..cd6a0a0 100644
--- a/pdf/pdfium/pdfium_page.h
+++ b/pdf/pdfium/pdfium_page.h
@@ -149,6 +149,7 @@
   friend class PDFiumTestBase;
 
   FRIEND_TEST_ALL_PREFIXES(PDFiumPageImageTest, TestCalculateImages);
+  FRIEND_TEST_ALL_PREFIXES(PDFiumPageLinkTest, TestAnnotLinkGeneration);
   FRIEND_TEST_ALL_PREFIXES(PDFiumPageLinkTest, TestLinkGeneration);
 
   // Returns a link index if the given character index is over a link, or -1
@@ -156,6 +157,10 @@
   int GetLink(int char_index, LinkTarget* target);
   // Calculate the locations of any links on the page.
   void CalculateLinks();
+  // Populates weblinks on the page.
+  void PopulateWebLinks();
+  // Populates annotation links on the page.
+  void PopulateAnnotationLinks();
   // Calculate the locations of images on the page.
   void CalculateImages();
   // Returns link type and fills target associated with a link. Returns
@@ -209,9 +214,7 @@
     // Represents the number of characters that the link overlaps with.
     int32_t char_count = 0;
     std::vector<pp::Rect> bounding_rects;
-
-    // Valid for links with external urls only.
-    std::string url;
+    LinkTarget target;
   };
 
   // Represents an Image inside the page.
diff --git a/pdf/pdfium/pdfium_page_unittest.cc b/pdf/pdfium/pdfium_page_unittest.cc
index e41cee2f..52f0f39 100644
--- a/pdf/pdfium/pdfium_page_unittest.cc
+++ b/pdf/pdfium/pdfium_page_unittest.cc
@@ -73,7 +73,7 @@
   ASSERT_EQ(3u, links.size());
 
   const PDFiumPage::Link& link = links[0];
-  EXPECT_EQ("http://yahoo.com", link.url);
+  EXPECT_EQ("http://yahoo.com", link.target.url);
   EXPECT_EQ(7, link.start_char_index);
   EXPECT_EQ(16, link.char_count);
   ASSERT_EQ(1u, link.bounding_rects.size());
@@ -84,7 +84,7 @@
   }
 
   const PDFiumPage::Link& second_link = links[1];
-  EXPECT_EQ("http://bing.com", second_link.url);
+  EXPECT_EQ("http://bing.com", second_link.target.url);
   EXPECT_EQ(52, second_link.start_char_index);
   EXPECT_EQ(15, second_link.char_count);
   ASSERT_EQ(1u, second_link.bounding_rects.size());
@@ -95,13 +95,67 @@
   }
 
   const PDFiumPage::Link& third_link = links[2];
-  EXPECT_EQ("http://google.com", third_link.url);
+  EXPECT_EQ("http://google.com", third_link.target.url);
   EXPECT_EQ(92, third_link.start_char_index);
   EXPECT_EQ(17, third_link.char_count);
   ASSERT_EQ(1u, third_link.bounding_rects.size());
   CompareRect({82, 67, 161, 21}, third_link.bounding_rects[0]);
 }
 
+TEST_F(PDFiumPageLinkTest, TestAnnotLinkGeneration) {
+  struct ExpectedLink {
+    int32_t start_char_index;
+    int32_t char_count;
+    std::vector<pp::Rect> bounding_rects;
+    std::string url;
+    int page;
+    float y_in_pixels;
+  };
+  static ExpectedLink expected_links[] = {
+      {144, 38, {{99, 436, 236, 13}}, "https://pdfium.googlesource.com/pdfium"},
+      {27, 38, {{112, 215, 617, 28}}, "", 1, 89.333336},
+      {65, 27, {{93, 334, 174, 21}}, "https://www.adobe.com"},
+      {253,
+       18,
+       {{242, 455, 1, 18}, {242, 472, 1, 15}},
+       "https://cs.chromium.org"},
+      {-1, 0, {{58, 926, 28, 27}}, "https://www.google.com"}};
+  if (IsRunningOnChromeOS()) {
+    expected_links[0].bounding_rects[0] = {99, 436, 236, 14};
+  }
+  static constexpr size_t kExpectedLinkCount = base::size(expected_links);
+
+  TestClient client;
+  std::unique_ptr<PDFiumEngine> engine =
+      InitializeEngine(&client, FILE_PATH_LITERAL("link_annots.pdf"));
+  ASSERT_TRUE(engine);
+  ASSERT_EQ(2, engine->GetNumberOfPages());
+
+  const std::vector<PDFiumPage::Link>& links = GetLinks(engine.get(), 0);
+  ASSERT_EQ(kExpectedLinkCount, links.size());
+
+  for (size_t i = 0; i < kExpectedLinkCount; ++i) {
+    const PDFiumPage::Link& actual_current_link = links[i];
+    const ExpectedLink& expected_current_link = expected_links[i];
+    EXPECT_EQ(expected_current_link.start_char_index,
+              actual_current_link.start_char_index);
+    EXPECT_EQ(expected_current_link.char_count, actual_current_link.char_count);
+    size_t bounds_size = actual_current_link.bounding_rects.size();
+    ASSERT_EQ(expected_current_link.bounding_rects.size(), bounds_size);
+    for (size_t bounds_index = 0; bounds_index < bounds_size; ++bounds_index) {
+      CompareRect(expected_current_link.bounding_rects[bounds_index],
+                  actual_current_link.bounding_rects[bounds_index]);
+    }
+    EXPECT_EQ(expected_current_link.url, actual_current_link.target.url);
+    if (actual_current_link.target.url.empty()) {
+      EXPECT_EQ(expected_current_link.page, actual_current_link.target.page);
+      ASSERT_TRUE(actual_current_link.target.y_in_pixels.has_value());
+      EXPECT_FLOAT_EQ(expected_current_link.y_in_pixels,
+                      actual_current_link.target.y_in_pixels.value());
+    }
+  }
+}
+
 using PDFiumPageImageTest = PDFiumTestBase;
 
 TEST_F(PDFiumPageImageTest, TestCalculateImages) {
diff --git a/pdf/test/data/link_annots.in b/pdf/test/data/link_annots.in
new file mode 100644
index 0000000..e348388
--- /dev/null
+++ b/pdf/test/data/link_annots.in
@@ -0,0 +1,140 @@
+{{header}}
+{{object 1 0}} <<
+  /Type /Catalog
+  /Pages 2 0 R
+>>
+endobj
+{{object 2 0}} <<
+  /Type /Pages
+  /MediaBox [0 0 612 792]
+  /CropBox [0 0 612 792]
+  /Resources <<
+    /Font <<
+      /F1 5 0 R
+      /F2 6 0 R
+    >>
+  >>
+  /Count 2
+  /Kids [3 0 R 4 0 R]
+>>
+endobj
+{{object 3 0}} <<
+  /Type /Page
+  /Parent 2 0 R
+  /Contents 7 0 R
+  /Annots [9 0 R 10 0 R 11 0 R 12 0 R]
+>>
+endobj
+{{object 4 0}} <<
+  /Type /Page
+  /Parent 2 0 R
+  /Contents 8 0 R
+>>
+endobj
+{{object 5 0}} <<
+  /Type /Font
+  /Subtype /Type1
+  /BaseFont /Times-Roman
+>>
+endobj
+{{object 6 0}} <<
+  /Type /Font
+  /Subtype /Type1
+  /BaseFont /Helvetica
+>>
+endobj
+{{object 7 0}} <<
+  {{streamlen}}
+>>
+stream
+BT
+70 700 Td
+/F1 18 Tf
+(Link Annotations - Page 1) Tj
+10 -85 Td
+/F2 14 Tf
+(Link with destination to second page) Tj
+-12 -84 Td
+/F2 10 Tf
+(PDF Reference, Version 1.7, Section 8.4.5 defines Annotations) Tj
+2 -53 Td
+(3. Hello World) Tj
+0 -18 Td
+(https://pdfium.googlesource.com/pdfium is link in plain text, not link annotation. These are referred to) Tj
+0 -17 Td
+(as WebLinks in PDFium.)Tj
+ET
+endstream
+endobj
+{{object 8 0}} <<
+  {{streamlen}}
+>>
+stream
+BT
+70 700 Td
+/F1 18 Tf
+(Second Page) Tj
+ET
+endstream
+endobj
+{{object 9 0}} <<
+  /Type /Annot
+  /Subtype /Link
+  /BS <<
+    /W 0
+  >>
+  /Rect [80 613 542 633]
+  /Dest [4 0 R /XYZ 200 725 0]
+  /F 4
+>>
+endobj
+{{object 10 0}} <<
+  /Type /Annot
+  /Subtype /Link
+  /BS <<
+    /W 0
+  >>
+  /Rect [196 544 66 529]
+  /A <<
+    /Type /Action
+    /S /URI
+    /URI (https://www.adobe.com)
+  >>
+  /F 4
+>>
+endobj
+{{object 11 0}} <<
+  /Type /Annot
+  /Subtype /Link
+  /BS <<
+    /W 0
+  >>
+  /Rect [83 430 178 453]
+  /QuadPoints [83 453 178 453 83 440 178 440 83 440 178 440 83 430 178 430]
+  /A <<
+    /Type /Action
+    /S /URI
+    /URI (https://cs.chromium.org)
+  >>
+  /F 4
+>>
+endobj
+{{object 12 0}} <<
+  /Type /Annot
+  /Subtype /Link
+  /BS <<
+    /W 0
+  >>
+  /Rect [40 80 60 100]
+  /A <<
+    /Type /Action
+    /S /URI
+    /URI (https://www.google.com)
+  >>
+  /F 4
+>>
+endobj
+{{xref}}
+{{trailer}}
+{{startxref}}
+%%EOF
diff --git a/pdf/test/data/link_annots.pdf b/pdf/test/data/link_annots.pdf
new file mode 100644
index 0000000..339840a
--- /dev/null
+++ b/pdf/test/data/link_annots.pdf
@@ -0,0 +1,159 @@
+%PDF-1.7
+% ò¤ô
+1 0 obj <<
+  /Type /Catalog
+  /Pages 2 0 R
+>>
+endobj
+2 0 obj <<
+  /Type /Pages
+  /MediaBox [0 0 612 792]
+  /CropBox [0 0 612 792]
+  /Resources <<
+    /Font <<
+      /F1 5 0 R
+      /F2 6 0 R
+    >>
+  >>
+  /Count 2
+  /Kids [3 0 R 4 0 R]
+>>
+endobj
+3 0 obj <<
+  /Type /Page
+  /Parent 2 0 R
+  /Contents 7 0 R
+  /Annots [9 0 R 10 0 R 11 0 R 12 0 R]
+>>
+endobj
+4 0 obj <<
+  /Type /Page
+  /Parent 2 0 R
+  /Contents 8 0 R
+>>
+endobj
+5 0 obj <<
+  /Type /Font
+  /Subtype /Type1
+  /BaseFont /Times-Roman
+>>
+endobj
+6 0 obj <<
+  /Type /Font
+  /Subtype /Type1
+  /BaseFont /Helvetica
+>>
+endobj
+7 0 obj <<
+  /Length 391
+>>
+stream
+BT
+70 700 Td
+/F1 18 Tf
+(Link Annotations - Page 1) Tj
+10 -85 Td
+/F2 14 Tf
+(Link with destination to second page) Tj
+-12 -84 Td
+/F2 10 Tf
+(PDF Reference, Version 1.7, Section 8.4.5 defines Annotations) Tj
+2 -53 Td
+(3. Hello World) Tj
+0 -18 Td
+(https://pdfium.googlesource.com/pdfium is link in plain text, not link annotation. These are referred to) Tj
+0 -17 Td
+(as WebLinks in PDFium.)Tj
+ET
+endstream
+endobj
+8 0 obj <<
+  /Length 43
+>>
+stream
+BT
+70 700 Td
+/F1 18 Tf
+(Second Page) Tj
+ET
+endstream
+endobj
+9 0 obj <<
+  /Type /Annot
+  /Subtype /Link
+  /BS <<
+    /W 0
+  >>
+  /Rect [80 613 542 633]
+  /Dest [4 0 R /XYZ 200 725 0]
+  /F 4
+>>
+endobj
+10 0 obj <<
+  /Type /Annot
+  /Subtype /Link
+  /BS <<
+    /W 0
+  >>
+  /Rect [196 544 66 529]
+  /A <<
+    /Type /Action
+    /S /URI
+    /URI (https://www.adobe.com)
+  >>
+  /F 4
+>>
+endobj
+11 0 obj <<
+  /Type /Annot
+  /Subtype /Link
+  /BS <<
+    /W 0
+  >>
+  /Rect [83 430 178 453]
+  /QuadPoints [83 453 178 453 83 440 178 440 83 440 178 440 83 430 178 430]
+  /A <<
+    /Type /Action
+    /S /URI
+    /URI (https://cs.chromium.org)
+  >>
+  /F 4
+>>
+endobj
+12 0 obj <<
+  /Type /Annot
+  /Subtype /Link
+  /BS <<
+    /W 0
+  >>
+  /Rect [40 80 60 100]
+  /A <<
+    /Type /Action
+    /S /URI
+    /URI (https://www.google.com)
+  >>
+  /F 4
+>>
+endobj
+xref
+0 13
+0000000000 65535 f 
+0000000015 00000 n 
+0000000068 00000 n 
+0000000261 00000 n 
+0000000369 00000 n 
+0000000438 00000 n 
+0000000516 00000 n 
+0000000592 00000 n 
+0000001035 00000 n 
+0000001129 00000 n 
+0000001268 00000 n 
+0000001453 00000 n 
+0000001716 00000 n 
+trailer <<
+  /Root 1 0 R
+  /Size 13
+>>
+startxref
+1900
+%%EOF
diff --git a/services/device/public/cpp/power_monitor/power_monitor_broadcast_source_unittest.cc b/services/device/public/cpp/power_monitor/power_monitor_broadcast_source_unittest.cc
index 48b17fb..68b72e03 100644
--- a/services/device/public/cpp/power_monitor/power_monitor_broadcast_source_unittest.cc
+++ b/services/device/public/cpp/power_monitor/power_monitor_broadcast_source_unittest.cc
@@ -35,7 +35,7 @@
     return power_monitor_source_ptr_->client_for_testing();
   }
 
-  base::test::TaskEnvironment task_environment_;
+  base::test::SingleThreadTaskEnvironment task_environment_;
 
  private:
   PowerMonitorBroadcastSource* power_monitor_source_ptr_;
diff --git a/services/network/network_service_network_delegate.cc b/services/network/network_service_network_delegate.cc
index a1665ba..815d0f7 100644
--- a/services/network/network_service_network_delegate.cc
+++ b/services/network/network_service_network_delegate.cc
@@ -128,15 +128,6 @@
   return allowed_from_caller;
 }
 
-bool NetworkServiceNetworkDelegate::OnCanAccessFile(
-    const net::URLRequest& request,
-    const base::FilePath& original_path,
-    const base::FilePath& absolute_path) const {
-  // Match the default implementation (BasicNetworkDelegate)'s behavior for
-  // now.
-  return true;
-}
-
 bool NetworkServiceNetworkDelegate::OnCanQueueReportingReport(
     const url::Origin& origin) const {
   return network_context_->cookie_manager()
diff --git a/services/network/network_service_network_delegate.h b/services/network/network_service_network_delegate.h
index d7eb0d13..6e9532b 100644
--- a/services/network/network_service_network_delegate.h
+++ b/services/network/network_service_network_delegate.h
@@ -42,10 +42,6 @@
                       const net::CanonicalCookie& cookie,
                       net::CookieOptions* options,
                       bool allowed_from_caller) override;
-  bool OnCanAccessFile(const net::URLRequest& request,
-                       const base::FilePath& original_path,
-                       const base::FilePath& absolute_path) const override;
-
   bool OnCanQueueReportingReport(const url::Origin& origin) const override;
   void OnCanSendReportingReports(std::set<url::Origin> origins,
                                  base::OnceCallback<void(std::set<url::Origin>)>
diff --git a/services/network/public/cpp/net_ipc_param_traits.h b/services/network/public/cpp/net_ipc_param_traits.h
index 04121b94..651960d5 100644
--- a/services/network/public/cpp/net_ipc_param_traits.h
+++ b/services/network/public/cpp/net_ipc_param_traits.h
@@ -274,7 +274,6 @@
   IPC_STRUCT_TRAITS_MEMBER(new_method)
   IPC_STRUCT_TRAITS_MEMBER(new_url)
   IPC_STRUCT_TRAITS_MEMBER(new_site_for_cookies)
-  IPC_STRUCT_TRAITS_MEMBER(new_top_frame_origin)
   IPC_STRUCT_TRAITS_MEMBER(new_referrer)
   IPC_STRUCT_TRAITS_MEMBER(insecure_scheme_was_upgraded)
   IPC_STRUCT_TRAITS_MEMBER(is_signed_exchange_fallback_redirect)
diff --git a/services/network/public/cpp/simple_url_loader_unittest.cc b/services/network/public/cpp/simple_url_loader_unittest.cc
index 9a5b9b2..ec596df 100644
--- a/services/network/public/cpp/simple_url_loader_unittest.cc
+++ b/services/network/public/cpp/simple_url_loader_unittest.cc
@@ -736,6 +736,29 @@
   }
 }
 
+// Redirect to a file:// URL.
+TEST_P(SimpleURLLoaderTest, RedirectFile) {
+  std::unique_ptr<SimpleLoaderTestHelper> test_helper = CreateHelperForURL(
+      test_server_.GetURL("/server-redirect?file:///etc/passwd"));
+  test_helper->StartSimpleLoaderAndWait(url_loader_factory_.get());
+
+  EXPECT_EQ(net::ERR_UNKNOWN_URL_SCHEME,
+            test_helper->simple_url_loader()->NetError());
+  EXPECT_FALSE(test_helper->simple_url_loader()->ResponseInfo());
+}
+
+// Redirect to a data:// URL.
+TEST_P(SimpleURLLoaderTest, RedirectData) {
+  std::unique_ptr<SimpleLoaderTestHelper> test_helper =
+      CreateHelperForURL(test_server_.GetURL(
+          "/server-redirect?data:text/plain;charset=utf-8;base64,Zm9v"));
+  test_helper->StartSimpleLoaderAndWait(url_loader_factory_.get());
+
+  EXPECT_EQ(net::ERR_UNKNOWN_URL_SCHEME,
+            test_helper->simple_url_loader()->NetError());
+  EXPECT_FALSE(test_helper->simple_url_loader()->ResponseInfo());
+}
+
 // Make sure OnRedirectCallback is invoked on a redirect.
 TEST_P(SimpleURLLoaderTest, OnRedirectCallback) {
   std::unique_ptr<SimpleLoaderTestHelper> test_helper =
diff --git a/testing/buildbot/chromium.clang.json b/testing/buildbot/chromium.clang.json
index ec4ab2f72..d2d4f0f2 100644
--- a/testing/buildbot/chromium.clang.json
+++ b/testing/buildbot/chromium.clang.json
@@ -1592,6 +1592,22 @@
               "cpu": "x86-64",
               "os": "Windows-10-15063"
             }
+          ]
+        },
+        "test": "browser_switcher_bho_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Windows-10-15063"
+            }
           ],
           "shards": 10
         },
@@ -3239,6 +3255,22 @@
             }
           ]
         },
+        "test": "browser_switcher_bho_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Windows-10-15063"
+            }
+          ]
+        },
         "test": "cacheinvalidation_unittests"
       },
       {
@@ -23939,6 +23971,16 @@
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
         "swarming": {
+          "can_use_on_swarming_builders": true
+        },
+        "test": "browser_switcher_bho_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
           "can_use_on_swarming_builders": true,
           "shards": 10
         },
@@ -24980,6 +25022,16 @@
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
         "swarming": {
+          "can_use_on_swarming_builders": true
+        },
+        "test": "browser_switcher_bho_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
           "can_use_on_swarming_builders": true,
           "shards": 20
         },
@@ -26021,6 +26073,16 @@
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
         "swarming": {
+          "can_use_on_swarming_builders": true
+        },
+        "test": "browser_switcher_bho_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
           "can_use_on_swarming_builders": true,
           "shards": 10
         },
@@ -27146,6 +27208,22 @@
               "cpu": "x86-64",
               "os": "Windows-10-15063"
             }
+          ]
+        },
+        "test": "browser_switcher_bho_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Windows-10-15063"
+            }
           ],
           "shards": 10
         },
@@ -28775,6 +28853,22 @@
               "cpu": "x86-64",
               "os": "Windows-10-15063"
             }
+          ]
+        },
+        "test": "browser_switcher_bho_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Windows-10-15063"
+            }
           ],
           "shards": 20
         },
@@ -30404,6 +30498,22 @@
               "cpu": "x86-64",
               "os": "Windows-10-15063"
             }
+          ]
+        },
+        "test": "browser_switcher_bho_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Windows-10-15063"
+            }
           ],
           "shards": 10
         },
@@ -31949,6 +32059,16 @@
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
         "swarming": {
+          "can_use_on_swarming_builders": true
+        },
+        "test": "browser_switcher_bho_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
           "can_use_on_swarming_builders": true,
           "shards": 10
         },
@@ -32990,6 +33110,16 @@
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
         "swarming": {
+          "can_use_on_swarming_builders": true
+        },
+        "test": "browser_switcher_bho_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
           "can_use_on_swarming_builders": true,
           "shards": 10
         },
@@ -34031,6 +34161,16 @@
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
         "swarming": {
+          "can_use_on_swarming_builders": true
+        },
+        "test": "browser_switcher_bho_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
           "can_use_on_swarming_builders": true,
           "shards": 10
         },
@@ -35072,6 +35212,16 @@
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
         "swarming": {
+          "can_use_on_swarming_builders": true
+        },
+        "test": "browser_switcher_bho_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
           "can_use_on_swarming_builders": true,
           "shards": 10
         },
@@ -36113,6 +36263,16 @@
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
         "swarming": {
+          "can_use_on_swarming_builders": true
+        },
+        "test": "browser_switcher_bho_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
           "can_use_on_swarming_builders": true,
           "shards": 10
         },
@@ -38611,6 +38771,21 @@
         "test": "boringssl_ssl_tests"
       },
       {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "os": "Windows-10-15063"
+            }
+          ]
+        },
+        "test": "browser_switcher_bho_unittests"
+      },
+      {
         "args": [
           "--disable-blink-features=HTMLImports,ShadowDOMV0,CustomElementsV0",
           "--test-launcher-filter-file=../../testing/buildbot/filters/webui_html_imports_polyfill_browser_tests.filter"
diff --git a/testing/buildbot/chromium.fyi.json b/testing/buildbot/chromium.fyi.json
index e48dd795..9e1cf1d 100644
--- a/testing/buildbot/chromium.fyi.json
+++ b/testing/buildbot/chromium.fyi.json
@@ -1211,6 +1211,16 @@
         "swarming": {
           "can_use_on_swarming_builders": false
         },
+        "test": "browser_switcher_bho_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": false
+        },
         "test": "browser_tests"
       },
       {
@@ -2391,6 +2401,22 @@
               "cpu": "x86-64",
               "os": "Windows-10-17134"
             }
+          ]
+        },
+        "test": "browser_switcher_bho_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Windows-10-17134"
+            }
           ],
           "shards": 10
         },
diff --git a/testing/buildbot/chromium.gpu.fyi.json b/testing/buildbot/chromium.gpu.fyi.json
index acb6316..b3920f1 100644
--- a/testing/buildbot/chromium.gpu.fyi.json
+++ b/testing/buildbot/chromium.gpu.fyi.json
@@ -6911,8 +6911,7 @@
               "device_os": "MMB29Q",
               "device_os_type": "userdebug",
               "device_type": "bullhead",
-              "os": "Android",
-              "pool": "Chrome-GPU"
+              "os": "Android"
             }
           ],
           "idempotent": false
@@ -6942,8 +6941,7 @@
               "device_os": "MMB29Q",
               "device_os_type": "userdebug",
               "device_type": "bullhead",
-              "os": "Android",
-              "pool": "Chrome-GPU"
+              "os": "Android"
             }
           ],
           "idempotent": false
@@ -6973,8 +6971,7 @@
               "device_os": "MMB29Q",
               "device_os_type": "userdebug",
               "device_type": "bullhead",
-              "os": "Android",
-              "pool": "Chrome-GPU"
+              "os": "Android"
             }
           ],
           "idempotent": false
@@ -7004,8 +7001,7 @@
               "device_os": "MMB29Q",
               "device_os_type": "userdebug",
               "device_type": "bullhead",
-              "os": "Android",
-              "pool": "Chrome-GPU"
+              "os": "Android"
             }
           ],
           "idempotent": false
@@ -7042,8 +7038,7 @@
               "device_os": "MMB29Q",
               "device_os_type": "userdebug",
               "device_type": "bullhead",
-              "os": "Android",
-              "pool": "Chrome-GPU"
+              "os": "Android"
             }
           ],
           "idempotent": false
@@ -7074,8 +7069,7 @@
               "device_os": "MMB29Q",
               "device_os_type": "userdebug",
               "device_type": "bullhead",
-              "os": "Android",
-              "pool": "Chrome-GPU"
+              "os": "Android"
             }
           ],
           "idempotent": false
@@ -7121,8 +7115,7 @@
               "device_os": "MMB29Q",
               "device_os_type": "userdebug",
               "device_type": "bullhead",
-              "os": "Android",
-              "pool": "Chrome-GPU"
+              "os": "Android"
             }
           ],
           "idempotent": false,
diff --git a/testing/buildbot/chromium.memory.json b/testing/buildbot/chromium.memory.json
index ce82193..af3c7d8 100644
--- a/testing/buildbot/chromium.memory.json
+++ b/testing/buildbot/chromium.memory.json
@@ -17133,6 +17133,21 @@
             {
               "os": "Windows-10-15063"
             }
+          ]
+        },
+        "test": "browser_switcher_bho_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "os": "Windows-10-15063"
+            }
           ],
           "shards": 10
         },
diff --git a/testing/buildbot/chromium.win.json b/testing/buildbot/chromium.win.json
index 254e09f..c508882 100644
--- a/testing/buildbot/chromium.win.json
+++ b/testing/buildbot/chromium.win.json
@@ -156,6 +156,16 @@
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
         "swarming": {
+          "can_use_on_swarming_builders": true
+        },
+        "test": "browser_switcher_bho_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
           "can_use_on_swarming_builders": true,
           "shards": 10
         },
@@ -1476,6 +1486,22 @@
         "test": "boringssl_ssl_tests"
       },
       {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Windows-10-15063"
+            }
+          ]
+        },
+        "test": "browser_switcher_bho_unittests"
+      },
+      {
         "args": [
           "--disable-features=WebRTC-H264WithOpenH264FFmpeg"
         ],
@@ -3359,6 +3385,22 @@
             }
           ]
         },
+        "test": "browser_switcher_bho_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Windows-10-15063"
+            }
+          ]
+        },
         "test": "cacheinvalidation_unittests"
       },
       {
@@ -5180,6 +5222,16 @@
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
         "swarming": {
+          "can_use_on_swarming_builders": true
+        },
+        "test": "browser_switcher_bho_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
           "can_use_on_swarming_builders": true,
           "shards": 15
         },
@@ -6429,6 +6481,16 @@
           "script": "//testing/merge_scripts/standard_gtest_merge.py"
         },
         "swarming": {
+          "can_use_on_swarming_builders": true
+        },
+        "test": "browser_switcher_bho_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
           "can_use_on_swarming_builders": true,
           "shards": 20
         },
diff --git a/testing/buildbot/gn_isolate_map.pyl b/testing/buildbot/gn_isolate_map.pyl
index 2f961f3..de737a7 100644
--- a/testing/buildbot/gn_isolate_map.pyl
+++ b/testing/buildbot/gn_isolate_map.pyl
@@ -467,6 +467,10 @@
     "label": "//third_party/brotli:brotli_fuzzer",
     "type": "fuzzer",
   },
+  "browser_switcher_bho_unittests": {
+    "label": "//chrome/browser/browser_switcher/bho:browser_switcher_bho_unittests",
+    "type": "console_test_launcher",
+  },
   "browser_tests": {
     "label": "//chrome/test:browser_tests",
     "type": "windowed_test_launcher",
diff --git a/testing/buildbot/test_suite_exceptions.pyl b/testing/buildbot/test_suite_exceptions.pyl
index e4325697..95e21ed 100644
--- a/testing/buildbot/test_suite_exceptions.pyl
+++ b/testing/buildbot/test_suite_exceptions.pyl
@@ -1653,8 +1653,6 @@
   },
   'vulkan_content_browsertests' : {
     'remove_from': [
-      # Flaky hangs crbug.com/940723
-      'Linux FYI GPU TSAN Release',
       # Vulkan Driver needs updating crbug.com/953535
       'Linux FYI Release (AMD R7 240)',
       'Linux FYI Release (Intel HD 630)',
diff --git a/testing/buildbot/test_suites.pyl b/testing/buildbot/test_suites.pyl
index 68507ef..d08544f 100644
--- a/testing/buildbot/test_suites.pyl
+++ b/testing/buildbot/test_suites.pyl
@@ -5001,6 +5001,7 @@
     },
 
     'win_specific_chromium_gtests': {
+      'browser_switcher_bho_unittests': {},
       'chrome_cleaner_unittests': {},
       'chrome_elf_unittests': {},
       'courgette_unittests': {},
diff --git a/testing/buildbot/waterfalls.pyl b/testing/buildbot/waterfalls.pyl
index e9c0f41..75c5146 100644
--- a/testing/buildbot/waterfalls.pyl
+++ b/testing/buildbot/waterfalls.pyl
@@ -2571,7 +2571,6 @@
         'browser_config': 'android-chromium',
         'skip_merge_script': True,
         'mixins': [
-          'gpu_pool',
           'marshmallow',
           'bullhead',
        ],
diff --git a/testing/variations/fieldtrial_testing_config.json b/testing/variations/fieldtrial_testing_config.json
index d655ac6..c70deec 100644
--- a/testing/variations/fieldtrial_testing_config.json
+++ b/testing/variations/fieldtrial_testing_config.json
@@ -501,6 +501,22 @@
             ]
         }
     ],
+    "AndroidSystemTracing": [
+        {
+            "platforms": [
+                "android",
+                "android_webview"
+            ],
+            "experiments": [
+                {
+                    "name": "EnablePerfettoSystemTracing",
+                    "enable_features": [
+                        "EnablePerfettoSystemTracing"
+                    ]
+                }
+            ]
+        }
+    ],
     "AppLauncherRefresh": [
         {
             "platforms": [
@@ -6872,8 +6888,8 @@
                 "mac",
                 "chromeos",
                 "linux",
-                "ios",
-                "android"
+                "android",
+                "android_webview"
             ],
             "experiments": [
                 {
diff --git a/third_party/android_deps/BUILD.gn b/third_party/android_deps/BUILD.gn
index 0cad478..5efcc81 100644
--- a/third_party/android_deps/BUILD.gn
+++ b/third_party/android_deps/BUILD.gn
@@ -870,7 +870,8 @@
   ]
 
   # Removing all resources from cast framework as they are unused bloat.
-  strip_resources = true
+  # Can only safely remove them when R8 will strip the path that accesses them.
+  strip_resources = !is_java_debug
 }
 
 # This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
diff --git a/third_party/blink/public/platform/web_url_loader_client.h b/third_party/blink/public/platform/web_url_loader_client.h
index b055afd..db68c8a 100644
--- a/third_party/blink/public/platform/web_url_loader_client.h
+++ b/third_party/blink/public/platform/web_url_loader_client.h
@@ -59,7 +59,6 @@
   virtual bool WillFollowRedirect(
       const WebURL& new_url,
       const WebURL& new_site_for_cookies,
-      const base::Optional<WebSecurityOrigin>& new_top_frame_origin,
       const WebString& new_referrer,
       network::mojom::ReferrerPolicy new_referrer_policy,
       const WebString& new_method,
diff --git a/third_party/blink/renderer/core/html/canvas/canvas_rendering_context.cc b/third_party/blink/renderer/core/html/canvas/canvas_rendering_context.cc
index df0f5e49..b2421bc 100644
--- a/third_party/blink/renderer/core/html/canvas/canvas_rendering_context.cc
+++ b/third_party/blink/renderer/core/html/canvas/canvas_rendering_context.cc
@@ -116,17 +116,10 @@
   StartListeningForDidProcessTask();
 }
 
-void CanvasRenderingContext::NeedsFinalizeFrame() {
-  StartListeningForDidProcessTask();
-}
-
 void CanvasRenderingContext::DidProcessTask(
     const base::PendingTask& /* pending_task */) {
   StopListeningForDidProcessTask();
 
-  // Call FinalizeFrame() on self first before informing host so that we can
-  // present swap chain before exporting it.
-  FinalizeFrame();
   // The end of a script task that drew content to the canvas is the point
   // at which the current frame may be considered complete.
   if (Host())
diff --git a/third_party/blink/renderer/core/html/canvas/canvas_rendering_context.h b/third_party/blink/renderer/core/html/canvas/canvas_rendering_context.h
index 35c2af8..8c34334 100644
--- a/third_party/blink/renderer/core/html/canvas/canvas_rendering_context.h
+++ b/third_party/blink/renderer/core/html/canvas/canvas_rendering_context.h
@@ -134,8 +134,6 @@
   // of a presentable frame.
   virtual void FinalizeFrame() {}
 
-  void NeedsFinalizeFrame();
-
   // Thread::TaskObserver implementation
   void DidProcessTask(const base::PendingTask&) override;
   void WillProcessTask(const base::PendingTask&) final {}
diff --git a/third_party/blink/renderer/core/html/canvas/canvas_rendering_context_host.cc b/third_party/blink/renderer/core/html/canvas/canvas_rendering_context_host.cc
index 7d2d37f..30fdf67f 100644
--- a/third_party/blink/renderer/core/html/canvas/canvas_rendering_context_host.cc
+++ b/third_party/blink/renderer/core/html/canvas/canvas_rendering_context_host.cc
@@ -203,7 +203,7 @@
 ScriptPromise CanvasRenderingContextHost::convertToBlob(
     ScriptState* script_state,
     const ImageEncodeOptions* options,
-    ExceptionState& exception_state) const {
+    ExceptionState& exception_state) {
   WTF::String object_name = "Canvas";
   if (this->IsOffscreenCanvas())
     object_name = "OffscreenCanvas";
@@ -235,6 +235,8 @@
     return ScriptPromise();
   }
 
+  // It's possible that there are recorded commands that have not been resolved
+  RenderingContext()->FinalizeFrame();
   base::TimeTicks start_time = base::TimeTicks::Now();
   scoped_refptr<StaticBitmapImage> image_bitmap =
       RenderingContext()->GetImage(kPreferNoAcceleration);
diff --git a/third_party/blink/renderer/core/html/canvas/canvas_rendering_context_host.h b/third_party/blink/renderer/core/html/canvas/canvas_rendering_context_host.h
index d90f197..74282e90 100644
--- a/third_party/blink/renderer/core/html/canvas/canvas_rendering_context_host.h
+++ b/third_party/blink/renderer/core/html/canvas/canvas_rendering_context_host.h
@@ -95,9 +95,11 @@
   bool Is2d() const;
   CanvasColorParams ColorParams() const;
 
+  // For deferred canvases this will have the side effect of drawing recorded
+  // commands in order to finalize the frame
   ScriptPromise convertToBlob(ScriptState*,
                               const ImageEncodeOptions*,
-                              ExceptionState&) const;
+                              ExceptionState&);
 
   // blink::CanvasImageSource
   bool IsOffscreenCanvas() const override;
diff --git a/third_party/blink/renderer/core/html/canvas/html_canvas_element.cc b/third_party/blink/renderer/core/html/canvas/html_canvas_element.cc
index 54e3515..999a61a1 100644
--- a/third_party/blink/renderer/core/html/canvas/html_canvas_element.cc
+++ b/third_party/blink/renderer/core/html/canvas/html_canvas_element.cc
@@ -396,10 +396,10 @@
   if (resource_provider)
     resource_provider->ReleaseLockedImages();
 
-  if (canvas2d_bridge_) {
-    if (!LowLatencyEnabled())
-      canvas2d_bridge_->FinalizeFrame();
-  }
+  // Low-latency 2d canvases will produce their frames after the resource gets
+  // single buffered
+  if (context_ && !(Is2d() && LowLatencyEnabled()))
+    context_->FinalizeFrame();
 
   if (LowLatencyEnabled() && !dirty_rect_.IsEmpty()) {
     if (GetOrCreateCanvasResourceProvider(kPreferAcceleration)) {
@@ -413,8 +413,8 @@
           context_->ProvideBackBufferToResourceProvider();
       }
 
-      if (canvas2d_bridge_) {
-        canvas2d_bridge_->FlushRecording();
+      if (Is2d()) {
+        context_->FinalizeFrame();
       } else {
         DCHECK(Is3d());
         if (!webgl_overlay_enabled)
diff --git a/third_party/blink/renderer/core/html/forms/resources/color_picker.css b/third_party/blink/renderer/core/html/forms/resources/color_picker.css
index 4ebf8a0..5526796 100644
--- a/third_party/blink/renderer/core/html/forms/resources/color_picker.css
+++ b/third_party/blink/renderer/core/html/forms/resources/color_picker.css
@@ -4,7 +4,7 @@
  */
 
 body {
-  font-family: "Segoe UI", system-ui, Roboto, Ubuntu, sans-serif;
+  font-family: sans-serif;
 }
 
 color-picker {
diff --git a/third_party/blink/renderer/core/html/resources/html.css b/third_party/blink/renderer/core/html/resources/html.css
index b01dc36..300a7edc 100644
--- a/third_party/blink/renderer/core/html/resources/html.css
+++ b/third_party/blink/renderer/core/html/resources/html.css
@@ -407,7 +407,7 @@
     margin: 0__qem;
     font: -webkit-small-control;
     text-rendering: auto; /* FIXME: Remove when tabs work with optimizeLegibility. */
-    color: initial;
+    color: -internal-light-dark-color(black, white);
     letter-spacing: normal;
     word-spacing: normal;
     line-height: normal;
@@ -425,7 +425,7 @@
 input {
     -webkit-appearance: textfield; /* AutoAppearanceFor() should match to this. */
     padding: 1px;
-    background-color: white;
+    background-color: -internal-light-dark-color(white, black);
     border: 2px inset;
     -webkit-rtl-ordering: logical;
     cursor: text;
@@ -498,7 +498,7 @@
 
 textarea {
     -webkit-appearance: textarea; /* AutoAppearanceFor() should match to this. */
-    background-color: white;
+    background-color: -internal-light-dark-color(white, black);
     border: 1px solid;
     -webkit-rtl-ordering: logical;
     flex-direction: column;
@@ -511,7 +511,7 @@
 
 ::-webkit-input-placeholder {
     -webkit-text-security: none;
-    color: rgba(0, 0, 0, 0.54);
+    color: -internal-light-dark-color(rgba(0, 0, 0, 0.54), rgba(255, 255, 255, 0.54));
     pointer-events: none !important;
 }
 
@@ -568,7 +568,7 @@
 select:-internal-autofill-previewed {
   background-color: #E8F0FE !important;
   background-image:none !important;
-  color: #000000 !important;
+  color: -internal-light-dark-color(black, white) !important;
 }
 
 input:-internal-autofill-selected,
@@ -576,7 +576,7 @@
 select:-internal-autofill-selected {
   background-color: #E8F0FE !important;
   background-image:none !important;
-  color: #000000 !important;
+  color: -internal-light-dark-color(black, white) !important;
 }
 
 input[type="radio" i], input[type="checkbox" i] {
@@ -790,8 +790,8 @@
     border: 1px solid;
     white-space: pre;
     -webkit-rtl-ordering: logical;
-    color: black;
-    background-color: white;
+    color: -internal-light-dark-color(black, white);
+    background-color: -internal-light-dark-color(white, black);
     cursor: default;
 }
 
@@ -1146,8 +1146,8 @@
     margin: auto;
     border: solid;
     padding: 1em;
-    background: white;
-    color: black
+    background: -internal-light-dark-color(white, black);
+    color: -internal-light-dark-color(black, white);
 }
 
 /* TODO(foolip): In the Fullscreen spec, there's a ::backdrop block with the
diff --git a/third_party/blink/renderer/core/layout/ng/inline/ng_inline_box_state.cc b/third_party/blink/renderer/core/layout/ng/inline/ng_inline_box_state.cc
index c09acfa..09d86e4 100644
--- a/third_party/blink/renderer/core/layout/ng/inline/ng_inline_box_state.cc
+++ b/third_party/blink/renderer/core/layout/ng/inline/ng_inline_box_state.cc
@@ -673,7 +673,7 @@
   // |pending_descendants|.
   LayoutUnit baseline_shift;
   if (!box->pending_descendants.IsEmpty()) {
-    NGLineHeightMetrics max = MetricsForTopAndBottomAlign(*box, *line_box);
+    bool has_top_or_bottom = false;
     for (NGPendingPositions& child : box->pending_descendants) {
       // In quirks mode, metrics is empty if no content.
       if (child.metrics.IsEmpty())
@@ -682,9 +682,6 @@
         case EVerticalAlign::kTextTop:
           baseline_shift = child.metrics.ascent + box->TextTop(baseline_type);
           break;
-        case EVerticalAlign::kTop:
-          baseline_shift = child.metrics.ascent - max.ascent;
-          break;
         case EVerticalAlign::kTextBottom:
           if (const SimpleFontData* font_data =
                   box->style->GetFont().PrimaryFont()) {
@@ -694,10 +691,11 @@
             break;
           }
           NOTREACHED();
-          FALLTHROUGH;
-        case EVerticalAlign::kBottom:
-          baseline_shift = max.descent - child.metrics.descent;
           break;
+        case EVerticalAlign::kTop:
+        case EVerticalAlign::kBottom:
+          has_top_or_bottom = true;
+          continue;
         default:
           NOTREACHED();
           continue;
@@ -707,6 +705,32 @@
       line_box->MoveInBlockDirection(baseline_shift, child.fragment_start,
                                      child.fragment_end);
     }
+    // `top` and `bottom` need to be applied after all other values are applied,
+    // because they align to the maximum metrics, but the maximum metrics may
+    // depend on other pending descendants for this box.
+    if (has_top_or_bottom) {
+      NGLineHeightMetrics max = MetricsForTopAndBottomAlign(*box, *line_box);
+      for (NGPendingPositions& child : box->pending_descendants) {
+        switch (child.vertical_align) {
+          case EVerticalAlign::kTop:
+            baseline_shift = child.metrics.ascent - max.ascent;
+            break;
+          case EVerticalAlign::kBottom:
+            baseline_shift = max.descent - child.metrics.descent;
+            break;
+          case EVerticalAlign::kTextTop:
+          case EVerticalAlign::kTextBottom:
+            continue;
+          default:
+            NOTREACHED();
+            continue;
+        }
+        child.metrics.Move(baseline_shift);
+        box->metrics.Unite(child.metrics);
+        line_box->MoveInBlockDirection(baseline_shift, child.fragment_start,
+                                       child.fragment_end);
+      }
+    }
     box->pending_descendants.clear();
   }
 
diff --git a/third_party/blink/renderer/devtools/BUILD.gn b/third_party/blink/renderer/devtools/BUILD.gn
index b4108ca..9c41a56c 100644
--- a/third_party/blink/renderer/devtools/BUILD.gn
+++ b/third_party/blink/renderer/devtools/BUILD.gn
@@ -905,6 +905,59 @@
   "front_end/workspace_diff/module.json",
 ]
 
+lighthouse_locale_files = [
+  "front_end/audits_worker/lighthouse/locales/ar-XB.json",
+  "front_end/audits_worker/lighthouse/locales/ar.json",
+  "front_end/audits_worker/lighthouse/locales/bg.json",
+  "front_end/audits_worker/lighthouse/locales/ca.json",
+  "front_end/audits_worker/lighthouse/locales/cs.json",
+  "front_end/audits_worker/lighthouse/locales/da.json",
+  "front_end/audits_worker/lighthouse/locales/de.json",
+  "front_end/audits_worker/lighthouse/locales/el.json",
+  "front_end/audits_worker/lighthouse/locales/en-GB.json",
+  "front_end/audits_worker/lighthouse/locales/en-US.json",
+  "front_end/audits_worker/lighthouse/locales/en-XA.json",
+  "front_end/audits_worker/lighthouse/locales/en-XL.json",
+  "front_end/audits_worker/lighthouse/locales/es-419.json",
+  "front_end/audits_worker/lighthouse/locales/es.json",
+  "front_end/audits_worker/lighthouse/locales/fi.json",
+  "front_end/audits_worker/lighthouse/locales/fil.json",
+  "front_end/audits_worker/lighthouse/locales/fr.json",
+  "front_end/audits_worker/lighthouse/locales/he.json",
+  "front_end/audits_worker/lighthouse/locales/hi.json",
+  "front_end/audits_worker/lighthouse/locales/hr.json",
+  "front_end/audits_worker/lighthouse/locales/hu.json",
+  "front_end/audits_worker/lighthouse/locales/id.json",
+  "front_end/audits_worker/lighthouse/locales/it.json",
+  "front_end/audits_worker/lighthouse/locales/ja.json",
+  "front_end/audits_worker/lighthouse/locales/ko.json",
+  "front_end/audits_worker/lighthouse/locales/lt.json",
+  "front_end/audits_worker/lighthouse/locales/lv.json",
+  "front_end/audits_worker/lighthouse/locales/nl.json",
+  "front_end/audits_worker/lighthouse/locales/no.json",
+  "front_end/audits_worker/lighthouse/locales/pl.json",
+  "front_end/audits_worker/lighthouse/locales/pt-PT.json",
+  "front_end/audits_worker/lighthouse/locales/pt.json",
+  "front_end/audits_worker/lighthouse/locales/ro.json",
+  "front_end/audits_worker/lighthouse/locales/ru.json",
+  "front_end/audits_worker/lighthouse/locales/sk.json",
+  "front_end/audits_worker/lighthouse/locales/sl.json",
+  "front_end/audits_worker/lighthouse/locales/sr-Latn.json",
+  "front_end/audits_worker/lighthouse/locales/sr.json",
+  "front_end/audits_worker/lighthouse/locales/sv.json",
+  "front_end/audits_worker/lighthouse/locales/ta.json",
+  "front_end/audits_worker/lighthouse/locales/te.json",
+  "front_end/audits_worker/lighthouse/locales/th.json",
+  "front_end/audits_worker/lighthouse/locales/tr.json",
+  "front_end/audits_worker/lighthouse/locales/uk.json",
+  "front_end/audits_worker/lighthouse/locales/vi.json",
+  "front_end/audits_worker/lighthouse/locales/zh-HK.json",
+  "front_end/audits_worker/lighthouse/locales/zh-TW.json",
+  "front_end/audits_worker/lighthouse/locales/zh.json",
+]
+
+all_devtools_files += lighthouse_locale_files
+
 devtools_test_files = [
   "front_end/accessibility_test_runner/AccessibilityPaneTestRunner.js",
   "front_end/accessibility_test_runner/module.json",
@@ -1226,6 +1279,7 @@
   ":copy_emulated_devices_images",
   ":copy_htaccess",
   ":copy_inspector_images",
+  ":copy_lighthouse_locale_files",
   ":devtools_extension_api",
   ":frontend_protocol_sources",
   ":supported_css_properties",
@@ -1278,6 +1332,13 @@
   ]
 }
 
+copy("copy_lighthouse_locale_files") {
+  sources = lighthouse_locale_files
+  outputs = [
+    "$resources_out_dir/audits_worker/lighthouse/locales/{{source_file_part}}",
+  ]
+}
+
 action("generate_devtools_grd") {
   script = "scripts/build/generate_devtools_grd.py"
 
@@ -1292,7 +1353,8 @@
 
   # Bundle remote modules in ChromeOS.
   if (is_chromeos) {
-    grd_files += generated_remote_modules + devtools_emulated_devices_images
+    grd_files += generated_remote_modules + devtools_emulated_devices_images +
+                 lighthouse_locale_files
   }
 
   inputs = grd_files + devtools_image_files
diff --git a/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/README.chromium b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/README.chromium
index 1b58f4c..accd67d7 100644
--- a/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/README.chromium
+++ b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/README.chromium
@@ -6,3 +6,7 @@
 
 This directory contains Chromium's version of lighthouse with tests, demo and sources removed.
 
+The locales/ folder is not bundled with audits_worker_module.js. Instead, the files are hosted separately
+on the remote server. The appropriate locale file will be fetched and its content registered with lighthouse
+before running audits.
+More info on the lighthouse localization process: https://docs.google.com/document/d/1jnt3BqKB-4q3AE94UWFA0Gqspx8Sd_jivlB7gQMlmfk/edit
\ No newline at end of file
diff --git a/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/ar-XB.json b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/ar-XB.json
new file mode 100644
index 0000000..cd3adda
--- /dev/null
+++ b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/ar-XB.json
@@ -0,0 +1,1541 @@
+{
+  "lighthouse-core/audits/accessibility/accesskeys.js | description": {
+    "message": "‏‮Access‬‏ ‏‮keys‬‏ ‏‮let‬‏ ‏‮users‬‏ ‏‮quickly‬‏ ‏‮focus‬‏ ‏‮a‬‏ ‏‮part‬‏ ‏‮of‬‏ ‏‮the‬‏ ‏‮page‬‏. ‏‮For‬‏ ‏‮proper‬‏ ‏‮navigation‬‏, ‏‮each‬‏ ‏‮access‬‏ ‏‮key‬‏ ‏‮must‬‏ ‏‮be‬‏ ‏‮unique‬‏. [‏‮Learn‬‏ ‏‮more‬‏](https://web.dev/accesskeys/)."
+  },
+  "lighthouse-core/audits/accessibility/accesskeys.js | failureTitle": {
+    "message": "`[accesskey]` ‏‮values‬‏ ‏‮are‬‏ ‏‮not‬‏ ‏‮unique‬‏"
+  },
+  "lighthouse-core/audits/accessibility/accesskeys.js | title": {
+    "message": "`[accesskey]` ‏‮values‬‏ ‏‮are‬‏ ‏‮unique‬‏"
+  },
+  "lighthouse-core/audits/accessibility/aria-allowed-attr.js | description": {
+    "message": "‏‮Each‬‏ ‏‮ARIA‬‏ `role` ‏‮supports‬‏ ‏‮a‬‏ ‏‮specific‬‏ ‏‮subset‬‏ ‏‮of‬‏ `aria-*` ‏‮attributes‬‏. ‏‮Mismatching‬‏ ‏‮these‬‏ ‏‮invalidates‬‏ ‏‮the‬‏ `aria-*` ‏‮attributes‬‏. [‏‮Learn‬‏ ‏‮more‬‏](https://web.dev/aria-allowed-attr/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-allowed-attr.js | failureTitle": {
+    "message": "`[aria-*]` ‏‮attributes‬‏ ‏‮do‬‏ ‏‮not‬‏ ‏‮match‬‏ ‏‮their‬‏ ‏‮roles‬‏"
+  },
+  "lighthouse-core/audits/accessibility/aria-allowed-attr.js | title": {
+    "message": "`[aria-*]` ‏‮attributes‬‏ ‏‮match‬‏ ‏‮their‬‏ ‏‮roles‬‏"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-attr.js | description": {
+    "message": "‏‮Some‬‏ ‏‮ARIA‬‏ ‏‮roles‬‏ ‏‮have‬‏ ‏‮required‬‏ ‏‮attributes‬‏ ‏‮that‬‏ ‏‮describe‬‏ ‏‮the‬‏ ‏‮state‬‏ ‏‮of‬‏ ‏‮the‬‏ ‏‮element‬‏ ‏‮to‬‏ ‏‮screen‬‏ ‏‮readers‬‏. [‏‮Learn‬‏ ‏‮more‬‏](https://web.dev/aria-required-attr/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-required-attr.js | failureTitle": {
+    "message": "`[role]`‏‮s‬‏ ‏‮do‬‏ ‏‮not‬‏ ‏‮have‬‏ ‏‮all‬‏ ‏‮required‬‏ `[aria-*]` ‏‮attributes‬‏"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-attr.js | title": {
+    "message": "`[role]`‏‮s‬‏ ‏‮have‬‏ ‏‮all‬‏ ‏‮required‬‏ `[aria-*]` ‏‮attributes‬‏"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-children.js | description": {
+    "message": "‏‮Some‬‏ ‏‮ARIA‬‏ ‏‮parent‬‏ ‏‮roles‬‏ ‏‮must‬‏ ‏‮contain‬‏ ‏‮specific‬‏ ‏‮child‬‏ ‏‮roles‬‏ ‏‮to‬‏ ‏‮perform‬‏ ‏‮their‬‏ ‏‮intended‬‏ ‏‮accessibility‬‏ ‏‮functions‬‏. [‏‮Learn‬‏ ‏‮more‬‏](https://web.dev/aria-required-children/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-required-children.js | failureTitle": {
+    "message": "‏‮Elements‬‏ ‏‮with‬‏ `[role]` ‏‮that‬‏ ‏‮require‬‏ ‏‮specific‬‏ ‏‮children‬‏ `[role]`‏‮s‬‏, ‏‮are‬‏ ‏‮missing‬‏."
+  },
+  "lighthouse-core/audits/accessibility/aria-required-children.js | title": {
+    "message": "‏‮Elements‬‏ ‏‮with‬‏ `[role]` ‏‮that‬‏ ‏‮require‬‏ ‏‮specific‬‏ ‏‮children‬‏ `[role]`‏‮s‬‏, ‏‮are‬‏ ‏‮present‬‏"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-parent.js | description": {
+    "message": "‏‮Some‬‏ ‏‮ARIA‬‏ ‏‮child‬‏ ‏‮roles‬‏ ‏‮must‬‏ ‏‮be‬‏ ‏‮contained‬‏ ‏‮by‬‏ ‏‮specific‬‏ ‏‮parent‬‏ ‏‮roles‬‏ ‏‮to‬‏ ‏‮properly‬‏ ‏‮perform‬‏ ‏‮their‬‏ ‏‮intended‬‏ ‏‮accessibility‬‏ ‏‮functions‬‏. [‏‮Learn‬‏ ‏‮more‬‏](https://web.dev/aria-required-parent/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-required-parent.js | failureTitle": {
+    "message": "`[role]`‏‮s‬‏ ‏‮are‬‏ ‏‮not‬‏ ‏‮contained‬‏ ‏‮by‬‏ ‏‮their‬‏ ‏‮required‬‏ ‏‮parent‬‏ ‏‮element‬‏"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-parent.js | title": {
+    "message": "`[role]`‏‮s‬‏ ‏‮are‬‏ ‏‮contained‬‏ ‏‮by‬‏ ‏‮their‬‏ ‏‮required‬‏ ‏‮parent‬‏ ‏‮element‬‏"
+  },
+  "lighthouse-core/audits/accessibility/aria-roles.js | description": {
+    "message": "‏‮ARIA‬‏ ‏‮roles‬‏ ‏‮must‬‏ ‏‮have‬‏ ‏‮valid‬‏ ‏‮values‬‏ ‏‮in‬‏ ‏‮order‬‏ ‏‮to‬‏ ‏‮perform‬‏ ‏‮their‬‏ ‏‮intended‬‏ ‏‮accessibility‬‏ ‏‮functions‬‏. [‏‮Learn‬‏ ‏‮more‬‏](https://web.dev/aria-roles/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-roles.js | failureTitle": {
+    "message": "`[role]` ‏‮values‬‏ ‏‮are‬‏ ‏‮not‬‏ ‏‮valid‬‏"
+  },
+  "lighthouse-core/audits/accessibility/aria-roles.js | title": {
+    "message": "`[role]` ‏‮values‬‏ ‏‮are‬‏ ‏‮valid‬‏"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr-value.js | description": {
+    "message": "‏‮Assistive‬‏ ‏‮technologies‬‏, ‏‮like‬‏ ‏‮screen‬‏ ‏‮readers‬‏, ‏‮can‬‏'‏‮t‬‏ ‏‮interpret‬‏ ‏‮ARIA‬‏ ‏‮attributes‬‏ ‏‮with‬‏ ‏‮invalid‬‏ ‏‮values‬‏. [‏‮Learn‬‏ ‏‮more‬‏](https://web.dev/aria-valid-attr-value/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr-value.js | failureTitle": {
+    "message": "`[aria-*]` ‏‮attributes‬‏ ‏‮do‬‏ ‏‮not‬‏ ‏‮have‬‏ ‏‮valid‬‏ ‏‮values‬‏"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr-value.js | title": {
+    "message": "`[aria-*]` ‏‮attributes‬‏ ‏‮have‬‏ ‏‮valid‬‏ ‏‮values‬‏"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr.js | description": {
+    "message": "‏‮Assistive‬‏ ‏‮technologies‬‏, ‏‮like‬‏ ‏‮screen‬‏ ‏‮readers‬‏, ‏‮can‬‏'‏‮t‬‏ ‏‮interpret‬‏ ‏‮ARIA‬‏ ‏‮attributes‬‏ ‏‮with‬‏ ‏‮invalid‬‏ ‏‮names‬‏. [‏‮Learn‬‏ ‏‮more‬‏](https://web.dev/aria-valid-attr/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr.js | failureTitle": {
+    "message": "`[aria-*]` ‏‮attributes‬‏ ‏‮are‬‏ ‏‮not‬‏ ‏‮valid‬‏ ‏‮or‬‏ ‏‮misspelled‬‏"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr.js | title": {
+    "message": "`[aria-*]` ‏‮attributes‬‏ ‏‮are‬‏ ‏‮valid‬‏ ‏‮and‬‏ ‏‮not‬‏ ‏‮misspelled‬‏"
+  },
+  "lighthouse-core/audits/accessibility/audio-caption.js | description": {
+    "message": "‏‮Captions‬‏ ‏‮make‬‏ ‏‮audio‬‏ ‏‮elements‬‏ ‏‮usable‬‏ ‏‮for‬‏ ‏‮deaf‬‏ ‏‮or‬‏ ‏‮hearing‬‏-‏‮impaired‬‏ ‏‮users‬‏, ‏‮providing‬‏ ‏‮critical‬‏ ‏‮information‬‏ ‏‮such‬‏ ‏‮as‬‏ ‏‮who‬‏ ‏‮is‬‏ ‏‮talking‬‏, ‏‮what‬‏ ‏‮they‬‏'‏‮re‬‏ ‏‮saying‬‏, ‏‮and‬‏ ‏‮other‬‏ ‏‮non‬‏-‏‮speech‬‏ ‏‮information‬‏. [‏‮Learn‬‏ ‏‮more‬‏](https://web.dev/audio-caption/)."
+  },
+  "lighthouse-core/audits/accessibility/audio-caption.js | failureTitle": {
+    "message": "`<audio>` ‏‮elements‬‏ ‏‮are‬‏ ‏‮missing‬‏ ‏‮a‬‏ `<track>` ‏‮element‬‏ ‏‮with‬‏ `[kind=\"captions\"]`."
+  },
+  "lighthouse-core/audits/accessibility/audio-caption.js | title": {
+    "message": "`<audio>` ‏‮elements‬‏ ‏‮contain‬‏ ‏‮a‬‏ `<track>` ‏‮element‬‏ ‏‮with‬‏ `[kind=\"captions\"]`"
+  },
+  "lighthouse-core/audits/accessibility/axe-audit.js | failingElementsHeader": {
+    "message": "‏‮Failing‬‏ ‏‮Elements‬‏"
+  },
+  "lighthouse-core/audits/accessibility/button-name.js | description": {
+    "message": "‏‮When‬‏ ‏‮a‬‏ ‏‮button‬‏ ‏‮doesn‬‏'‏‮t‬‏ ‏‮have‬‏ ‏‮an‬‏ ‏‮accessible‬‏ ‏‮name‬‏, ‏‮screen‬‏ ‏‮readers‬‏ ‏‮announce‬‏ ‏‮it‬‏ ‏‮as‬‏ \"‏‮button‬‏\", ‏‮making‬‏ ‏‮it‬‏ ‏‮unusable‬‏ ‏‮for‬‏ ‏‮users‬‏ ‏‮who‬‏ ‏‮rely‬‏ ‏‮on‬‏ ‏‮screen‬‏ ‏‮readers‬‏. [‏‮Learn‬‏ ‏‮more‬‏](https://web.dev/button-name/)."
+  },
+  "lighthouse-core/audits/accessibility/button-name.js | failureTitle": {
+    "message": "‏‮Buttons‬‏ ‏‮do‬‏ ‏‮not‬‏ ‏‮have‬‏ ‏‮an‬‏ ‏‮accessible‬‏ ‏‮name‬‏"
+  },
+  "lighthouse-core/audits/accessibility/button-name.js | title": {
+    "message": "‏‮Buttons‬‏ ‏‮have‬‏ ‏‮an‬‏ ‏‮accessible‬‏ ‏‮name‬‏"
+  },
+  "lighthouse-core/audits/accessibility/bypass.js | description": {
+    "message": "‏‮Adding‬‏ ‏‮ways‬‏ ‏‮to‬‏ ‏‮bypass‬‏ ‏‮repetitive‬‏ ‏‮content‬‏ ‏‮lets‬‏ ‏‮keyboard‬‏ ‏‮users‬‏ ‏‮navigate‬‏ ‏‮the‬‏ ‏‮page‬‏ ‏‮more‬‏ ‏‮efficiently‬‏. [‏‮Learn‬‏ ‏‮more‬‏](https://web.dev/bypass/)."
+  },
+  "lighthouse-core/audits/accessibility/bypass.js | failureTitle": {
+    "message": "‏‮The‬‏ ‏‮page‬‏ ‏‮does‬‏ ‏‮not‬‏ ‏‮contain‬‏ ‏‮a‬‏ ‏‮heading‬‏, ‏‮skip‬‏ ‏‮link‬‏, ‏‮or‬‏ ‏‮landmark‬‏ ‏‮region‬‏"
+  },
+  "lighthouse-core/audits/accessibility/bypass.js | title": {
+    "message": "‏‮The‬‏ ‏‮page‬‏ ‏‮contains‬‏ ‏‮a‬‏ ‏‮heading‬‏, ‏‮skip‬‏ ‏‮link‬‏, ‏‮or‬‏ ‏‮landmark‬‏ ‏‮region‬‏"
+  },
+  "lighthouse-core/audits/accessibility/color-contrast.js | description": {
+    "message": "‏‮Low‬‏-‏‮contrast‬‏ ‏‮text‬‏ ‏‮is‬‏ ‏‮difficult‬‏ ‏‮or‬‏ ‏‮impossible‬‏ ‏‮for‬‏ ‏‮many‬‏ ‏‮users‬‏ ‏‮to‬‏ ‏‮read‬‏. [‏‮Learn‬‏ ‏‮more‬‏](https://web.dev/color-contrast/)."
+  },
+  "lighthouse-core/audits/accessibility/color-contrast.js | failureTitle": {
+    "message": "‏‮Background‬‏ ‏‮and‬‏ ‏‮foreground‬‏ ‏‮colors‬‏ ‏‮do‬‏ ‏‮not‬‏ ‏‮have‬‏ ‏‮a‬‏ ‏‮sufficient‬‏ ‏‮contrast‬‏ ‏‮ratio‬‏."
+  },
+  "lighthouse-core/audits/accessibility/color-contrast.js | title": {
+    "message": "‏‮Background‬‏ ‏‮and‬‏ ‏‮foreground‬‏ ‏‮colors‬‏ ‏‮have‬‏ ‏‮a‬‏ ‏‮sufficient‬‏ ‏‮contrast‬‏ ‏‮ratio‬‏"
+  },
+  "lighthouse-core/audits/accessibility/definition-list.js | description": {
+    "message": "‏‮When‬‏ ‏‮definition‬‏ ‏‮lists‬‏ ‏‮are‬‏ ‏‮not‬‏ ‏‮properly‬‏ ‏‮marked‬‏ ‏‮up‬‏, ‏‮screen‬‏ ‏‮readers‬‏ ‏‮may‬‏ ‏‮produce‬‏ ‏‮confusing‬‏ ‏‮or‬‏ ‏‮inaccurate‬‏ ‏‮output‬‏. [‏‮Learn‬‏ ‏‮more‬‏](https://web.dev/definition-list/)."
+  },
+  "lighthouse-core/audits/accessibility/definition-list.js | failureTitle": {
+    "message": "`<dl>`'‏‮s‬‏ ‏‮do‬‏ ‏‮not‬‏ ‏‮contain‬‏ ‏‮only‬‏ ‏‮properly‬‏-‏‮ordered‬‏ `<dt>` ‏‮and‬‏ `<dd>` ‏‮groups‬‏, `<script>` ‏‮or‬‏ `<template>` ‏‮elements‬‏."
+  },
+  "lighthouse-core/audits/accessibility/definition-list.js | title": {
+    "message": "`<dl>`'‏‮s‬‏ ‏‮contain‬‏ ‏‮only‬‏ ‏‮properly‬‏-‏‮ordered‬‏ `<dt>` ‏‮and‬‏ `<dd>` ‏‮groups‬‏, `<script>` ‏‮or‬‏ `<template>` ‏‮elements‬‏."
+  },
+  "lighthouse-core/audits/accessibility/dlitem.js | description": {
+    "message": "‏‮Definition‬‏ ‏‮list‬‏ ‏‮items‬‏ (`<dt>` ‏‮and‬‏ `<dd>`) ‏‮must‬‏ ‏‮be‬‏ ‏‮wrapped‬‏ ‏‮in‬‏ ‏‮a‬‏ ‏‮parent‬‏ `<dl>` ‏‮element‬‏ ‏‮to‬‏ ‏‮ensure‬‏ ‏‮that‬‏ ‏‮screen‬‏ ‏‮readers‬‏ ‏‮can‬‏ ‏‮properly‬‏ ‏‮announce‬‏ ‏‮them‬‏. [‏‮Learn‬‏ ‏‮more‬‏](https://web.dev/dlitem/)."
+  },
+  "lighthouse-core/audits/accessibility/dlitem.js | failureTitle": {
+    "message": "‏‮Definition‬‏ ‏‮list‬‏ ‏‮items‬‏ ‏‮are‬‏ ‏‮not‬‏ ‏‮wrapped‬‏ ‏‮in‬‏ `<dl>` ‏‮elements‬‏"
+  },
+  "lighthouse-core/audits/accessibility/dlitem.js | title": {
+    "message": "‏‮Definition‬‏ ‏‮list‬‏ ‏‮items‬‏ ‏‮are‬‏ ‏‮wrapped‬‏ ‏‮in‬‏ `<dl>` ‏‮elements‬‏"
+  },
+  "lighthouse-core/audits/accessibility/document-title.js | description": {
+    "message": "‏‮The‬‏ ‏‮title‬‏ ‏‮gives‬‏ ‏‮screen‬‏ ‏‮reader‬‏ ‏‮users‬‏ ‏‮an‬‏ ‏‮overview‬‏ ‏‮of‬‏ ‏‮the‬‏ ‏‮page‬‏, ‏‮and‬‏ ‏‮search‬‏ ‏‮engine‬‏ ‏‮users‬‏ ‏‮rely‬‏ ‏‮on‬‏ ‏‮it‬‏ ‏‮heavily‬‏ ‏‮to‬‏ ‏‮determine‬‏ ‏‮if‬‏ ‏‮a‬‏ ‏‮page‬‏ ‏‮is‬‏ ‏‮relevant‬‏ ‏‮to‬‏ ‏‮their‬‏ ‏‮search‬‏. [‏‮Learn‬‏ ‏‮more‬‏](https://web.dev/document-title/)."
+  },
+  "lighthouse-core/audits/accessibility/document-title.js | failureTitle": {
+    "message": "‏‮Document‬‏ ‏‮doesn‬‏'‏‮t‬‏ ‏‮have‬‏ ‏‮a‬‏ `<title>` ‏‮element‬‏"
+  },
+  "lighthouse-core/audits/accessibility/document-title.js | title": {
+    "message": "‏‮Document‬‏ ‏‮has‬‏ ‏‮a‬‏ `<title>` ‏‮element‬‏"
+  },
+  "lighthouse-core/audits/accessibility/duplicate-id.js | description": {
+    "message": "‏‮The‬‏ ‏‮value‬‏ ‏‮of‬‏ ‏‮an‬‏ ‏‮id‬‏ ‏‮attribute‬‏ ‏‮must‬‏ ‏‮be‬‏ ‏‮unique‬‏ ‏‮to‬‏ ‏‮prevent‬‏ ‏‮other‬‏ ‏‮instances‬‏ ‏‮from‬‏ ‏‮being‬‏ ‏‮overlooked‬‏ ‏‮by‬‏ ‏‮assistive‬‏ ‏‮technologies‬‏. [‏‮Learn‬‏ ‏‮more‬‏](https://web.dev/duplicate-id/)."
+  },
+  "lighthouse-core/audits/accessibility/duplicate-id.js | failureTitle": {
+    "message": "`[id]` ‏‮attributes‬‏ ‏‮on‬‏ ‏‮the‬‏ ‏‮page‬‏ ‏‮are‬‏ ‏‮not‬‏ ‏‮unique‬‏"
+  },
+  "lighthouse-core/audits/accessibility/duplicate-id.js | title": {
+    "message": "`[id]` ‏‮attributes‬‏ ‏‮on‬‏ ‏‮the‬‏ ‏‮page‬‏ ‏‮are‬‏ ‏‮unique‬‏"
+  },
+  "lighthouse-core/audits/accessibility/frame-title.js | description": {
+    "message": "‏‮Screen‬‏ ‏‮reader‬‏ ‏‮users‬‏ ‏‮rely‬‏ ‏‮on‬‏ ‏‮frame‬‏ ‏‮titles‬‏ ‏‮to‬‏ ‏‮describe‬‏ ‏‮the‬‏ ‏‮contents‬‏ ‏‮of‬‏ ‏‮frames‬‏. [‏‮Learn‬‏ ‏‮more‬‏](https://web.dev/frame-title/)."
+  },
+  "lighthouse-core/audits/accessibility/frame-title.js | failureTitle": {
+    "message": "`<frame>` ‏‮or‬‏ `<iframe>` ‏‮elements‬‏ ‏‮do‬‏ ‏‮not‬‏ ‏‮have‬‏ ‏‮a‬‏ ‏‮title‬‏"
+  },
+  "lighthouse-core/audits/accessibility/frame-title.js | title": {
+    "message": "`<frame>` ‏‮or‬‏ `<iframe>` ‏‮elements‬‏ ‏‮have‬‏ ‏‮a‬‏ ‏‮title‬‏"
+  },
+  "lighthouse-core/audits/accessibility/html-has-lang.js | description": {
+    "message": "‏‮If‬‏ ‏‮a‬‏ ‏‮page‬‏ ‏‮doesn‬‏'‏‮t‬‏ ‏‮specify‬‏ ‏‮a‬‏ ‏‮lang‬‏ ‏‮attribute‬‏, ‏‮a‬‏ ‏‮screen‬‏ ‏‮reader‬‏ ‏‮assumes‬‏ ‏‮that‬‏ ‏‮the‬‏ ‏‮page‬‏ ‏‮is‬‏ ‏‮in‬‏ ‏‮the‬‏ ‏‮default‬‏ ‏‮language‬‏ ‏‮that‬‏ ‏‮the‬‏ ‏‮user‬‏ ‏‮chose‬‏ ‏‮when‬‏ ‏‮setting‬‏ ‏‮up‬‏ ‏‮the‬‏ ‏‮screen‬‏ ‏‮reader‬‏. ‏‮If‬‏ ‏‮the‬‏ ‏‮page‬‏ ‏‮isn‬‏'‏‮t‬‏ ‏‮actually‬‏ ‏‮in‬‏ ‏‮the‬‏ ‏‮default‬‏ ‏‮language‬‏, ‏‮then‬‏ ‏‮the‬‏ ‏‮screen‬‏ ‏‮reader‬‏ ‏‮might‬‏ ‏‮not‬‏ ‏‮announce‬‏ ‏‮the‬‏ ‏‮page‬‏'‏‮s‬‏ ‏‮text‬‏ ‏‮correctly‬‏. [‏‮Learn‬‏ ‏‮more‬‏](https://web.dev/html-has-lang/)."
+  },
+  "lighthouse-core/audits/accessibility/html-has-lang.js | failureTitle": {
+    "message": "`<html>` ‏‮element‬‏ ‏‮does‬‏ ‏‮not‬‏ ‏‮have‬‏ ‏‮a‬‏ `[lang]` ‏‮attribute‬‏"
+  },
+  "lighthouse-core/audits/accessibility/html-has-lang.js | title": {
+    "message": "`<html>` ‏‮element‬‏ ‏‮has‬‏ ‏‮a‬‏ `[lang]` ‏‮attribute‬‏"
+  },
+  "lighthouse-core/audits/accessibility/html-lang-valid.js | description": {
+    "message": "‏‮Specifying‬‏ ‏‮a‬‏ ‏‮valid‬‏ [‏‮BCP‬‏ 47 ‏‮language‬‏](https://www.w3.org/International/questions/qa-choosing-language-tags#question) ‏‮helps‬‏ ‏‮screen‬‏ ‏‮readers‬‏ ‏‮announce‬‏ ‏‮text‬‏ ‏‮properly‬‏. [‏‮Learn‬‏ ‏‮more‬‏](https://web.dev/html-lang-valid/)."
+  },
+  "lighthouse-core/audits/accessibility/html-lang-valid.js | failureTitle": {
+    "message": "`<html>` ‏‮element‬‏ ‏‮does‬‏ ‏‮not‬‏ ‏‮have‬‏ ‏‮a‬‏ ‏‮valid‬‏ ‏‮value‬‏ ‏‮for‬‏ ‏‮its‬‏ `[lang]` ‏‮attribute‬‏."
+  },
+  "lighthouse-core/audits/accessibility/html-lang-valid.js | title": {
+    "message": "`<html>` ‏‮element‬‏ ‏‮has‬‏ ‏‮a‬‏ ‏‮valid‬‏ ‏‮value‬‏ ‏‮for‬‏ ‏‮its‬‏ `[lang]` ‏‮attribute‬‏"
+  },
+  "lighthouse-core/audits/accessibility/image-alt.js | description": {
+    "message": "‏‮Informative‬‏ ‏‮elements‬‏ ‏‮should‬‏ ‏‮aim‬‏ ‏‮for‬‏ ‏‮short‬‏, ‏‮descriptive‬‏ ‏‮alternate‬‏ ‏‮text‬‏. ‏‮Decorative‬‏ ‏‮elements‬‏ ‏‮can‬‏ ‏‮be‬‏ ‏‮ignored‬‏ ‏‮with‬‏ ‏‮an‬‏ ‏‮empty‬‏ ‏‮alt‬‏ ‏‮attribute‬‏. [‏‮Learn‬‏ ‏‮more‬‏](https://web.dev/image-alt/)."
+  },
+  "lighthouse-core/audits/accessibility/image-alt.js | failureTitle": {
+    "message": "‏‮Image‬‏ ‏‮elements‬‏ ‏‮do‬‏ ‏‮not‬‏ ‏‮have‬‏ `[alt]` ‏‮attributes‬‏"
+  },
+  "lighthouse-core/audits/accessibility/image-alt.js | title": {
+    "message": "‏‮Image‬‏ ‏‮elements‬‏ ‏‮have‬‏ `[alt]` ‏‮attributes‬‏"
+  },
+  "lighthouse-core/audits/accessibility/input-image-alt.js | description": {
+    "message": "‏‮When‬‏ ‏‮an‬‏ ‏‮image‬‏ ‏‮is‬‏ ‏‮being‬‏ ‏‮used‬‏ ‏‮as‬‏ ‏‮an‬‏ `<input>` ‏‮button‬‏, ‏‮providing‬‏ ‏‮alternative‬‏ ‏‮text‬‏ ‏‮can‬‏ ‏‮help‬‏ ‏‮screen‬‏ ‏‮reader‬‏ ‏‮users‬‏ ‏‮understand‬‏ ‏‮the‬‏ ‏‮purpose‬‏ ‏‮of‬‏ ‏‮the‬‏ ‏‮button‬‏. [‏‮Learn‬‏ ‏‮more‬‏](https://web.dev/input-image-alt/)."
+  },
+  "lighthouse-core/audits/accessibility/input-image-alt.js | failureTitle": {
+    "message": "`<input type=\"image\">` ‏‮elements‬‏ ‏‮do‬‏ ‏‮not‬‏ ‏‮have‬‏ `[alt]` ‏‮text‬‏"
+  },
+  "lighthouse-core/audits/accessibility/input-image-alt.js | title": {
+    "message": "`<input type=\"image\">` ‏‮elements‬‏ ‏‮have‬‏ `[alt]` ‏‮text‬‏"
+  },
+  "lighthouse-core/audits/accessibility/label.js | description": {
+    "message": "‏‮Labels‬‏ ‏‮ensure‬‏ ‏‮that‬‏ ‏‮form‬‏ ‏‮controls‬‏ ‏‮are‬‏ ‏‮announced‬‏ ‏‮properly‬‏ ‏‮by‬‏ ‏‮assistive‬‏ ‏‮technologies‬‏, ‏‮like‬‏ ‏‮screen‬‏ ‏‮readers‬‏. [‏‮Learn‬‏ ‏‮more‬‏](https://web.dev/label/)."
+  },
+  "lighthouse-core/audits/accessibility/label.js | failureTitle": {
+    "message": "‏‮Form‬‏ ‏‮elements‬‏ ‏‮do‬‏ ‏‮not‬‏ ‏‮have‬‏ ‏‮associated‬‏ ‏‮labels‬‏"
+  },
+  "lighthouse-core/audits/accessibility/label.js | title": {
+    "message": "‏‮Form‬‏ ‏‮elements‬‏ ‏‮have‬‏ ‏‮associated‬‏ ‏‮labels‬‏"
+  },
+  "lighthouse-core/audits/accessibility/layout-table.js | description": {
+    "message": "‏‮A‬‏ ‏‮table‬‏ ‏‮being‬‏ ‏‮used‬‏ ‏‮for‬‏ ‏‮layout‬‏ ‏‮purposes‬‏ ‏‮should‬‏ ‏‮not‬‏ ‏‮include‬‏ ‏‮data‬‏ ‏‮elements‬‏, ‏‮such‬‏ ‏‮as‬‏ ‏‮the‬‏ ‏‮th‬‏ ‏‮or‬‏ ‏‮caption‬‏ ‏‮elements‬‏ ‏‮or‬‏ ‏‮the‬‏ ‏‮summary‬‏ ‏‮attribute‬‏, ‏‮because‬‏ ‏‮this‬‏ ‏‮can‬‏ ‏‮create‬‏ ‏‮a‬‏ ‏‮confusing‬‏ ‏‮experience‬‏ ‏‮for‬‏ ‏‮screen‬‏ ‏‮reader‬‏ ‏‮users‬‏. [‏‮Learn‬‏ ‏‮more‬‏](https://web.dev/layout-table/)."
+  },
+  "lighthouse-core/audits/accessibility/layout-table.js | failureTitle": {
+    "message": "‏‮Presentational‬‏ `<table>` ‏‮elements‬‏ ‏‮do‬‏ ‏‮not‬‏ ‏‮avoid‬‏ ‏‮using‬‏ `<th>`, `<caption>` ‏‮or‬‏ ‏‮the‬‏ `[summary]` ‏‮attribute‬‏."
+  },
+  "lighthouse-core/audits/accessibility/layout-table.js | title": {
+    "message": "‏‮Presentational‬‏ `<table>` ‏‮elements‬‏ ‏‮avoid‬‏ ‏‮using‬‏ `<th>`, `<caption>` ‏‮or‬‏ ‏‮the‬‏ `[summary]` ‏‮attribute‬‏."
+  },
+  "lighthouse-core/audits/accessibility/link-name.js | description": {
+    "message": "‏‮Link‬‏ ‏‮text‬‏ (‏‮and‬‏ ‏‮alternate‬‏ ‏‮text‬‏ ‏‮for‬‏ ‏‮images‬‏, ‏‮when‬‏ ‏‮used‬‏ ‏‮as‬‏ ‏‮links‬‏) ‏‮that‬‏ ‏‮is‬‏ ‏‮discernible‬‏, ‏‮unique‬‏, ‏‮and‬‏ ‏‮focusable‬‏ ‏‮improves‬‏ ‏‮the‬‏ ‏‮navigation‬‏ ‏‮experience‬‏ ‏‮for‬‏ ‏‮screen‬‏ ‏‮reader‬‏ ‏‮users‬‏. [‏‮Learn‬‏ ‏‮more‬‏](https://web.dev/link-name/)."
+  },
+  "lighthouse-core/audits/accessibility/link-name.js | failureTitle": {
+    "message": "‏‮Links‬‏ ‏‮do‬‏ ‏‮not‬‏ ‏‮have‬‏ ‏‮a‬‏ ‏‮discernible‬‏ ‏‮name‬‏"
+  },
+  "lighthouse-core/audits/accessibility/link-name.js | title": {
+    "message": "‏‮Links‬‏ ‏‮have‬‏ ‏‮a‬‏ ‏‮discernible‬‏ ‏‮name‬‏"
+  },
+  "lighthouse-core/audits/accessibility/list.js | description": {
+    "message": "‏‮Screen‬‏ ‏‮readers‬‏ ‏‮have‬‏ ‏‮a‬‏ ‏‮specific‬‏ ‏‮way‬‏ ‏‮of‬‏ ‏‮announcing‬‏ ‏‮lists‬‏. ‏‮Ensuring‬‏ ‏‮proper‬‏ ‏‮list‬‏ ‏‮structure‬‏ ‏‮aids‬‏ ‏‮screen‬‏ ‏‮reader‬‏ ‏‮output‬‏. [‏‮Learn‬‏ ‏‮more‬‏](https://web.dev/list/)."
+  },
+  "lighthouse-core/audits/accessibility/list.js | failureTitle": {
+    "message": "‏‮Lists‬‏ ‏‮do‬‏ ‏‮not‬‏ ‏‮contain‬‏ ‏‮only‬‏ `<li>` ‏‮elements‬‏ ‏‮and‬‏ ‏‮script‬‏ ‏‮supporting‬‏ ‏‮elements‬‏ (`<script>` ‏‮and‬‏ `<template>`)."
+  },
+  "lighthouse-core/audits/accessibility/list.js | title": {
+    "message": "‏‮Lists‬‏ ‏‮contain‬‏ ‏‮only‬‏ `<li>` ‏‮elements‬‏ ‏‮and‬‏ ‏‮script‬‏ ‏‮supporting‬‏ ‏‮elements‬‏ (`<script>` ‏‮and‬‏ `<template>`)."
+  },
+  "lighthouse-core/audits/accessibility/listitem.js | description": {
+    "message": "‏‮Screen‬‏ ‏‮readers‬‏ ‏‮require‬‏ ‏‮list‬‏ ‏‮items‬‏ (`<li>`) ‏‮to‬‏ ‏‮be‬‏ ‏‮contained‬‏ ‏‮within‬‏ ‏‮a‬‏ ‏‮parent‬‏ `<ul>` ‏‮or‬‏ `<ol>` ‏‮to‬‏ ‏‮be‬‏ ‏‮announced‬‏ ‏‮properly‬‏. [‏‮Learn‬‏ ‏‮more‬‏](https://web.dev/listitem/)."
+  },
+  "lighthouse-core/audits/accessibility/listitem.js | failureTitle": {
+    "message": "‏‮List‬‏ ‏‮items‬‏ (`<li>`) ‏‮are‬‏ ‏‮not‬‏ ‏‮contained‬‏ ‏‮within‬‏ `<ul>` ‏‮or‬‏ `<ol>` ‏‮parent‬‏ ‏‮elements‬‏."
+  },
+  "lighthouse-core/audits/accessibility/listitem.js | title": {
+    "message": "‏‮List‬‏ ‏‮items‬‏ (`<li>`) ‏‮are‬‏ ‏‮contained‬‏ ‏‮within‬‏ `<ul>` ‏‮or‬‏ `<ol>` ‏‮parent‬‏ ‏‮elements‬‏"
+  },
+  "lighthouse-core/audits/accessibility/meta-refresh.js | description": {
+    "message": "‏‮Users‬‏ ‏‮do‬‏ ‏‮not‬‏ ‏‮expect‬‏ ‏‮a‬‏ ‏‮page‬‏ ‏‮to‬‏ ‏‮refresh‬‏ ‏‮automatically‬‏, ‏‮and‬‏ ‏‮doing‬‏ ‏‮so‬‏ ‏‮will‬‏ ‏‮move‬‏ ‏‮focus‬‏ ‏‮back‬‏ ‏‮to‬‏ ‏‮the‬‏ ‏‮top‬‏ ‏‮of‬‏ ‏‮the‬‏ ‏‮page‬‏. ‏‮This‬‏ ‏‮may‬‏ ‏‮create‬‏ ‏‮a‬‏ ‏‮frustrating‬‏ ‏‮or‬‏ ‏‮confusing‬‏ ‏‮experience‬‏. [‏‮Learn‬‏ ‏‮more‬‏](https://web.dev/meta-refresh/)."
+  },
+  "lighthouse-core/audits/accessibility/meta-refresh.js | failureTitle": {
+    "message": "‏‮The‬‏ ‏‮document‬‏ ‏‮uses‬‏ `<meta http-equiv=\"refresh\">`"
+  },
+  "lighthouse-core/audits/accessibility/meta-refresh.js | title": {
+    "message": "‏‮The‬‏ ‏‮document‬‏ ‏‮does‬‏ ‏‮not‬‏ ‏‮use‬‏ `<meta http-equiv=\"refresh\">`"
+  },
+  "lighthouse-core/audits/accessibility/meta-viewport.js | description": {
+    "message": "‏‮Disabling‬‏ ‏‮zooming‬‏ ‏‮is‬‏ ‏‮problematic‬‏ ‏‮for‬‏ ‏‮users‬‏ ‏‮with‬‏ ‏‮low‬‏ ‏‮vision‬‏ ‏‮who‬‏ ‏‮rely‬‏ ‏‮on‬‏ ‏‮screen‬‏ ‏‮magnification‬‏ ‏‮to‬‏ ‏‮properly‬‏ ‏‮see‬‏ ‏‮the‬‏ ‏‮contents‬‏ ‏‮of‬‏ ‏‮a‬‏ ‏‮web‬‏ ‏‮page‬‏. [‏‮Learn‬‏ ‏‮more‬‏](https://web.dev/meta-viewport/)."
+  },
+  "lighthouse-core/audits/accessibility/meta-viewport.js | failureTitle": {
+    "message": "`[user-scalable=\"no\"]` ‏‮is‬‏ ‏‮used‬‏ ‏‮in‬‏ ‏‮the‬‏ `<meta name=\"viewport\">` ‏‮element‬‏ ‏‮or‬‏ ‏‮the‬‏ `[maximum-scale]` ‏‮attribute‬‏ ‏‮is‬‏ ‏‮less‬‏ ‏‮than‬‏ 5."
+  },
+  "lighthouse-core/audits/accessibility/meta-viewport.js | title": {
+    "message": "`[user-scalable=\"no\"]` ‏‮is‬‏ ‏‮not‬‏ ‏‮used‬‏ ‏‮in‬‏ ‏‮the‬‏ `<meta name=\"viewport\">` ‏‮element‬‏ ‏‮and‬‏ ‏‮the‬‏ `[maximum-scale]` ‏‮attribute‬‏ ‏‮is‬‏ ‏‮not‬‏ ‏‮less‬‏ ‏‮than‬‏ 5."
+  },
+  "lighthouse-core/audits/accessibility/object-alt.js | description": {
+    "message": "‏‮Screen‬‏ ‏‮readers‬‏ ‏‮cannot‬‏ ‏‮translate‬‏ ‏‮non‬‏-‏‮text‬‏ ‏‮content‬‏. ‏‮Adding‬‏ ‏‮alt‬‏ ‏‮text‬‏ ‏‮to‬‏ `<object>` ‏‮elements‬‏ ‏‮helps‬‏ ‏‮screen‬‏ ‏‮readers‬‏ ‏‮convey‬‏ ‏‮meaning‬‏ ‏‮to‬‏ ‏‮users‬‏. [‏‮Learn‬‏ ‏‮more‬‏](https://web.dev/object-alt/)."
+  },
+  "lighthouse-core/audits/accessibility/object-alt.js | failureTitle": {
+    "message": "`<object>` ‏‮elements‬‏ ‏‮do‬‏ ‏‮not‬‏ ‏‮have‬‏ `[alt]` ‏‮text‬‏"
+  },
+  "lighthouse-core/audits/accessibility/object-alt.js | title": {
+    "message": "`<object>` ‏‮elements‬‏ ‏‮have‬‏ `[alt]` ‏‮text‬‏"
+  },
+  "lighthouse-core/audits/accessibility/tabindex.js | description": {
+    "message": "‏‮A‬‏ ‏‮value‬‏ ‏‮greater‬‏ ‏‮than‬‏ 0 ‏‮implies‬‏ ‏‮an‬‏ ‏‮explicit‬‏ ‏‮navigation‬‏ ‏‮ordering‬‏. ‏‮Although‬‏ ‏‮technically‬‏ ‏‮valid‬‏, ‏‮this‬‏ ‏‮often‬‏ ‏‮creates‬‏ ‏‮frustrating‬‏ ‏‮experiences‬‏ ‏‮for‬‏ ‏‮users‬‏ ‏‮who‬‏ ‏‮rely‬‏ ‏‮on‬‏ ‏‮assistive‬‏ ‏‮technologies‬‏. [‏‮Learn‬‏ ‏‮more‬‏](https://web.dev/tabindex/)."
+  },
+  "lighthouse-core/audits/accessibility/tabindex.js | failureTitle": {
+    "message": "‏‮Some‬‏ ‏‮elements‬‏ ‏‮have‬‏ ‏‮a‬‏ `[tabindex]` ‏‮value‬‏ ‏‮greater‬‏ ‏‮than‬‏ 0"
+  },
+  "lighthouse-core/audits/accessibility/tabindex.js | title": {
+    "message": "‏‮No‬‏ ‏‮element‬‏ ‏‮has‬‏ ‏‮a‬‏ `[tabindex]` ‏‮value‬‏ ‏‮greater‬‏ ‏‮than‬‏ 0"
+  },
+  "lighthouse-core/audits/accessibility/td-headers-attr.js | description": {
+    "message": "‏‮Screen‬‏ ‏‮readers‬‏ ‏‮have‬‏ ‏‮features‬‏ ‏‮to‬‏ ‏‮make‬‏ ‏‮navigating‬‏ ‏‮tables‬‏ ‏‮easier‬‏. ‏‮Ensuring‬‏ `<td>` ‏‮cells‬‏ ‏‮using‬‏ ‏‮the‬‏ `[headers]` ‏‮attribute‬‏ ‏‮only‬‏ ‏‮refer‬‏ ‏‮to‬‏ ‏‮other‬‏ ‏‮cells‬‏ ‏‮in‬‏ ‏‮the‬‏ ‏‮same‬‏ ‏‮table‬‏ ‏‮may‬‏ ‏‮improve‬‏ ‏‮the‬‏ ‏‮experience‬‏ ‏‮for‬‏ ‏‮screen‬‏ ‏‮reader‬‏ ‏‮users‬‏. [‏‮Learn‬‏ ‏‮more‬‏](https://web.dev/td-headers-attr/)."
+  },
+  "lighthouse-core/audits/accessibility/td-headers-attr.js | failureTitle": {
+    "message": "‏‮Cells‬‏ ‏‮in‬‏ ‏‮a‬‏ `<table>` ‏‮element‬‏ ‏‮that‬‏ ‏‮use‬‏ ‏‮the‬‏ `[headers]` ‏‮attribute‬‏ ‏‮refers‬‏ ‏‮to‬‏ ‏‮other‬‏ ‏‮cells‬‏ ‏‮of‬‏ ‏‮that‬‏ ‏‮same‬‏ ‏‮table‬‏."
+  },
+  "lighthouse-core/audits/accessibility/td-headers-attr.js | title": {
+    "message": "‏‮Cells‬‏ ‏‮in‬‏ ‏‮a‬‏ `<table>` ‏‮element‬‏ ‏‮that‬‏ ‏‮use‬‏ ‏‮the‬‏ `[headers]` ‏‮attribute‬‏ ‏‮only‬‏ ‏‮refer‬‏ ‏‮to‬‏ ‏‮other‬‏ ‏‮cells‬‏ ‏‮of‬‏ ‏‮that‬‏ ‏‮same‬‏ ‏‮table‬‏."
+  },
+  "lighthouse-core/audits/accessibility/th-has-data-cells.js | description": {
+    "message": "‏‮Screen‬‏ ‏‮readers‬‏ ‏‮have‬‏ ‏‮features‬‏ ‏‮to‬‏ ‏‮make‬‏ ‏‮navigating‬‏ ‏‮tables‬‏ ‏‮easier‬‏. ‏‮Ensuring‬‏ ‏‮table‬‏ ‏‮headers‬‏ ‏‮always‬‏ ‏‮refer‬‏ ‏‮to‬‏ ‏‮some‬‏ ‏‮set‬‏ ‏‮of‬‏ ‏‮cells‬‏ ‏‮may‬‏ ‏‮improve‬‏ ‏‮the‬‏ ‏‮experience‬‏ ‏‮for‬‏ ‏‮screen‬‏ ‏‮reader‬‏ ‏‮users‬‏. [‏‮Learn‬‏ ‏‮more‬‏](https://web.dev/th-has-data-cells/)."
+  },
+  "lighthouse-core/audits/accessibility/th-has-data-cells.js | failureTitle": {
+    "message": "`<th>` ‏‮elements‬‏ ‏‮and‬‏ ‏‮elements‬‏ ‏‮with‬‏ `[role=\"columnheader\"/\"rowheader\"]` ‏‮do‬‏ ‏‮not‬‏ ‏‮have‬‏ ‏‮data‬‏ ‏‮cells‬‏ ‏‮they‬‏ ‏‮describe‬‏."
+  },
+  "lighthouse-core/audits/accessibility/th-has-data-cells.js | title": {
+    "message": "`<th>` ‏‮elements‬‏ ‏‮and‬‏ ‏‮elements‬‏ ‏‮with‬‏ `[role=\"columnheader\"/\"rowheader\"]` ‏‮have‬‏ ‏‮data‬‏ ‏‮cells‬‏ ‏‮they‬‏ ‏‮describe‬‏."
+  },
+  "lighthouse-core/audits/accessibility/valid-lang.js | description": {
+    "message": "‏‮Specifying‬‏ ‏‮a‬‏ ‏‮valid‬‏ [‏‮BCP‬‏ 47 ‏‮language‬‏](https://www.w3.org/International/questions/qa-choosing-language-tags#question) ‏‮on‬‏ ‏‮elements‬‏ ‏‮helps‬‏ ‏‮ensure‬‏ ‏‮that‬‏ ‏‮text‬‏ ‏‮is‬‏ ‏‮pronounced‬‏ ‏‮correctly‬‏ ‏‮by‬‏ ‏‮a‬‏ ‏‮screen‬‏ ‏‮reader‬‏. [‏‮Learn‬‏ ‏‮more‬‏](https://web.dev/valid-lang/)."
+  },
+  "lighthouse-core/audits/accessibility/valid-lang.js | failureTitle": {
+    "message": "`[lang]` ‏‮attributes‬‏ ‏‮do‬‏ ‏‮not‬‏ ‏‮have‬‏ ‏‮a‬‏ ‏‮valid‬‏ ‏‮value‬‏"
+  },
+  "lighthouse-core/audits/accessibility/valid-lang.js | title": {
+    "message": "`[lang]` ‏‮attributes‬‏ ‏‮have‬‏ ‏‮a‬‏ ‏‮valid‬‏ ‏‮value‬‏"
+  },
+  "lighthouse-core/audits/accessibility/video-caption.js | description": {
+    "message": "‏‮When‬‏ ‏‮a‬‏ ‏‮video‬‏ ‏‮provides‬‏ ‏‮a‬‏ ‏‮caption‬‏ ‏‮it‬‏ ‏‮is‬‏ ‏‮easier‬‏ ‏‮for‬‏ ‏‮deaf‬‏ ‏‮and‬‏ ‏‮hearing‬‏ ‏‮impaired‬‏ ‏‮users‬‏ ‏‮to‬‏ ‏‮access‬‏ ‏‮its‬‏ ‏‮information‬‏. [‏‮Learn‬‏ ‏‮more‬‏](https://web.dev/video-caption/)."
+  },
+  "lighthouse-core/audits/accessibility/video-caption.js | failureTitle": {
+    "message": "`<video>` ‏‮elements‬‏ ‏‮do‬‏ ‏‮not‬‏ ‏‮contain‬‏ ‏‮a‬‏ `<track>` ‏‮element‬‏ ‏‮with‬‏ `[kind=\"captions\"]`."
+  },
+  "lighthouse-core/audits/accessibility/video-caption.js | title": {
+    "message": "`<video>` ‏‮elements‬‏ ‏‮contain‬‏ ‏‮a‬‏ `<track>` ‏‮element‬‏ ‏‮with‬‏ `[kind=\"captions\"]`"
+  },
+  "lighthouse-core/audits/accessibility/video-description.js | description": {
+    "message": "‏‮Audio‬‏ ‏‮descriptions‬‏ ‏‮provide‬‏ ‏‮relevant‬‏ ‏‮information‬‏ ‏‮for‬‏ ‏‮videos‬‏ ‏‮that‬‏ ‏‮dialogue‬‏ ‏‮cannot‬‏, ‏‮such‬‏ ‏‮as‬‏ ‏‮facial‬‏ ‏‮expressions‬‏ ‏‮and‬‏ ‏‮scenes‬‏. [‏‮Learn‬‏ ‏‮more‬‏](https://web.dev/video-description/)."
+  },
+  "lighthouse-core/audits/accessibility/video-description.js | failureTitle": {
+    "message": "`<video>` ‏‮elements‬‏ ‏‮do‬‏ ‏‮not‬‏ ‏‮contain‬‏ ‏‮a‬‏ `<track>` ‏‮element‬‏ ‏‮with‬‏ `[kind=\"description\"]`."
+  },
+  "lighthouse-core/audits/accessibility/video-description.js | title": {
+    "message": "`<video>` ‏‮elements‬‏ ‏‮contain‬‏ ‏‮a‬‏ `<track>` ‏‮element‬‏ ‏‮with‬‏ `[kind=\"description\"]`"
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | description": {
+    "message": "‏‮For‬‏ ‏‮ideal‬‏ ‏‮appearance‬‏ ‏‮on‬‏ ‏‮iOS‬‏ ‏‮when‬‏ ‏‮users‬‏ ‏‮add‬‏ ‏‮a‬‏ ‏‮progressive‬‏ ‏‮web‬‏ ‏‮app‬‏ ‏‮to‬‏ ‏‮the‬‏ ‏‮home‬‏ ‏‮screen‬‏, ‏‮define‬‏ ‏‮an‬‏ `apple-touch-icon`. ‏‮It‬‏ ‏‮must‬‏ ‏‮point‬‏ ‏‮to‬‏ ‏‮a‬‏ ‏‮non‬‏-‏‮transparent‬‏ 192‏‮px‬‏ (‏‮or‬‏ 180‏‮px‬‏) ‏‮square‬‏ ‏‮PNG‬‏. [‏‮Learn‬‏ ‏‮More‬‏](https://developers.google.com/web/fundamentals/design-and-ux/browser-customization/)."
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | failureTitle": {
+    "message": "‏‮Does‬‏ ‏‮not‬‏ ‏‮provide‬‏ ‏‮a‬‏ ‏‮valid‬‏ `apple-touch-icon`"
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | precomposedWarning": {
+    "message": "`apple-touch-icon-precomposed` ‏‮is‬‏ ‏‮out‬‏ ‏‮of‬‏ ‏‮date‬‏; `apple-touch-icon` ‏‮is‬‏ ‏‮preferred‬‏."
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | title": {
+    "message": "‏‮Provides‬‏ ‏‮a‬‏ ‏‮valid‬‏ `apple-touch-icon`"
+  },
+  "lighthouse-core/audits/bootup-time.js | chromeExtensionsWarning": {
+    "message": "‏‮Chrome‬‏ ‏‮extensions‬‏ ‏‮negatively‬‏ ‏‮affected‬‏ ‏‮this‬‏ ‏‮page‬‏'‏‮s‬‏ ‏‮load‬‏ ‏‮performance‬‏. ‏‮Try‬‏ ‏‮auditing‬‏ ‏‮the‬‏ ‏‮page‬‏ ‏‮in‬‏ ‏‮incognito‬‏ ‏‮mode‬‏ ‏‮or‬‏ ‏‮from‬‏ ‏‮a‬‏ ‏‮Chrome‬‏ ‏‮profile‬‏ ‏‮without‬‏ ‏‮extensions‬‏."
+  },
+  "lighthouse-core/audits/bootup-time.js | columnScriptEval": {
+    "message": "‏‮Script‬‏ ‏‮Evaluation‬‏"
+  },
+  "lighthouse-core/audits/bootup-time.js | columnScriptParse": {
+    "message": "‏‮Script‬‏ ‏‮Parse‬‏"
+  },
+  "lighthouse-core/audits/bootup-time.js | columnTotal": {
+    "message": "‏‮Total‬‏ ‏‮CPU‬‏ ‏‮Time‬‏"
+  },
+  "lighthouse-core/audits/bootup-time.js | description": {
+    "message": "‏‮Consider‬‏ ‏‮reducing‬‏ ‏‮the‬‏ ‏‮time‬‏ ‏‮spent‬‏ ‏‮parsing‬‏, ‏‮compiling‬‏, ‏‮and‬‏ ‏‮executing‬‏ ‏‮JS‬‏. ‏‮You‬‏ ‏‮may‬‏ ‏‮find‬‏ ‏‮delivering‬‏ ‏‮smaller‬‏ ‏‮JS‬‏ ‏‮payloads‬‏ ‏‮helps‬‏ ‏‮with‬‏ ‏‮this‬‏. [‏‮Learn‬‏ ‏‮more‬‏](https://developers.google.com/web/tools/lighthouse/audits/bootup)."
+  },
+  "lighthouse-core/audits/bootup-time.js | failureTitle": {
+    "message": "‏‮Reduce‬‏ ‏‮JavaScript‬‏ ‏‮execution‬‏ ‏‮time‬‏"
+  },
+  "lighthouse-core/audits/bootup-time.js | title": {
+    "message": "‏‮JavaScript‬‏ ‏‮execution‬‏ ‏‮time‬‏"
+  },
+  "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | description": {
+    "message": "‏‮Large‬‏ ‏‮GIFs‬‏ ‏‮are‬‏ ‏‮inefficient‬‏ ‏‮for‬‏ ‏‮delivering‬‏ ‏‮animated‬‏ ‏‮content‬‏. ‏‮Consider‬‏ ‏‮using‬‏ ‏‮MPEG‬‏4/‏‮WebM‬‏ ‏‮videos‬‏ ‏‮for‬‏ ‏‮animations‬‏ ‏‮and‬‏ ‏‮PNG‬‏/‏‮WebP‬‏ ‏‮for‬‏ ‏‮static‬‏ ‏‮images‬‏ ‏‮instead‬‏ ‏‮of‬‏ ‏‮GIF‬‏ ‏‮to‬‏ ‏‮save‬‏ ‏‮network‬‏ ‏‮bytes‬‏. [‏‮Learn‬‏ ‏‮more‬‏](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/replace-animated-gifs-with-video/)"
+  },
+  "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | title": {
+    "message": "‏‮Use‬‏ ‏‮video‬‏ ‏‮formats‬‏ ‏‮for‬‏ ‏‮animated‬‏ ‏‮content‬‏"
+  },
+  "lighthouse-core/audits/byte-efficiency/offscreen-images.js | description": {
+    "message": "‏‮Consider‬‏ ‏‮lazy‬‏-‏‮loading‬‏ ‏‮offscreen‬‏ ‏‮and‬‏ ‏‮hidden‬‏ ‏‮images‬‏ ‏‮after‬‏ ‏‮all‬‏ ‏‮critical‬‏ ‏‮resources‬‏ ‏‮have‬‏ ‏‮finished‬‏ ‏‮loading‬‏ ‏‮to‬‏ ‏‮lower‬‏ ‏‮time‬‏ ‏‮to‬‏ ‏‮interactive‬‏. [‏‮Learn‬‏ ‏‮more‬‏](https://developers.google.com/web/tools/lighthouse/audits/offscreen-images)."
+  },
+  "lighthouse-core/audits/byte-efficiency/offscreen-images.js | title": {
+    "message": "‏‮Defer‬‏ ‏‮offscreen‬‏ ‏‮images‬‏"
+  },
+  "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | description": {
+    "message": "‏‮Resources‬‏ ‏‮are‬‏ ‏‮blocking‬‏ ‏‮the‬‏ ‏‮first‬‏ ‏‮paint‬‏ ‏‮of‬‏ ‏‮your‬‏ ‏‮page‬‏. ‏‮Consider‬‏ ‏‮delivering‬‏ ‏‮critical‬‏ ‏‮JS‬‏/‏‮CSS‬‏ ‏‮inline‬‏ ‏‮and‬‏ ‏‮deferring‬‏ ‏‮all‬‏ ‏‮non‬‏-‏‮critical‬‏ ‏‮JS‬‏/‏‮styles‬‏. [‏‮Learn‬‏ ‏‮more‬‏](https://developers.google.com/web/tools/lighthouse/audits/blocking-resources)."
+  },
+  "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | title": {
+    "message": "‏‮Eliminate‬‏ ‏‮render‬‏-‏‮blocking‬‏ ‏‮resources‬‏"
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | description": {
+    "message": "‏‮Large‬‏ ‏‮network‬‏ ‏‮payloads‬‏ ‏‮cost‬‏ ‏‮users‬‏ ‏‮real‬‏ ‏‮money‬‏ ‏‮and‬‏ ‏‮are‬‏ ‏‮highly‬‏ ‏‮correlated‬‏ ‏‮with‬‏ ‏‮long‬‏ ‏‮load‬‏ ‏‮times‬‏. [‏‮Learn‬‏ ‏‮more‬‏](https://developers.google.com/web/tools/lighthouse/audits/network-payloads)."
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | displayValue": {
+    "message": "‏‮Total‬‏ ‏‮size‬‏ ‏‮was‬‏ {totalBytes, number, bytes} ‏‮KB‬‏"
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | failureTitle": {
+    "message": "‏‮Avoid‬‏ ‏‮enormous‬‏ ‏‮network‬‏ ‏‮payloads‬‏"
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | title": {
+    "message": "‏‮Avoids‬‏ ‏‮enormous‬‏ ‏‮network‬‏ ‏‮payloads‬‏"
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-css.js | description": {
+    "message": "‏‮Minifying‬‏ ‏‮CSS‬‏ ‏‮files‬‏ ‏‮can‬‏ ‏‮reduce‬‏ ‏‮network‬‏ ‏‮payload‬‏ ‏‮sizes‬‏. [‏‮Learn‬‏ ‏‮more‬‏](https://developers.google.com/web/tools/lighthouse/audits/minify-css)."
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-css.js | title": {
+    "message": "‏‮Minify‬‏ ‏‮CSS‬‏"
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | description": {
+    "message": "‏‮Minifying‬‏ ‏‮JavaScript‬‏ ‏‮files‬‏ ‏‮can‬‏ ‏‮reduce‬‏ ‏‮payload‬‏ ‏‮sizes‬‏ ‏‮and‬‏ ‏‮script‬‏ ‏‮parse‬‏ ‏‮time‬‏. [‏‮Learn‬‏ ‏‮more‬‏](https://developers.google.com/speed/docs/insights/MinifyResources)."
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | title": {
+    "message": "‏‮Minify‬‏ ‏‮JavaScript‬‏"
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | description": {
+    "message": "‏‮Remove‬‏ ‏‮dead‬‏ ‏‮rules‬‏ ‏‮from‬‏ ‏‮stylesheets‬‏ ‏‮and‬‏ ‏‮defer‬‏ ‏‮the‬‏ ‏‮loading‬‏ ‏‮of‬‏ ‏‮CSS‬‏ ‏‮not‬‏ ‏‮used‬‏ ‏‮for‬‏ ‏‮above‬‏-‏‮the‬‏-‏‮fold‬‏ ‏‮content‬‏ ‏‮to‬‏ ‏‮reduce‬‏ ‏‮unnecessary‬‏ ‏‮bytes‬‏ ‏‮consumed‬‏ ‏‮by‬‏ ‏‮network‬‏ ‏‮activity‬‏. [‏‮Learn‬‏ ‏‮more‬‏](https://developers.google.com/web/tools/lighthouse/audits/unused-css)."
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | title": {
+    "message": "‏‮Remove‬‏ ‏‮unused‬‏ ‏‮CSS‬‏"
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-javascript.js | description": {
+    "message": "‏‮Remove‬‏ ‏‮unused‬‏ ‏‮JavaScript‬‏ ‏‮to‬‏ ‏‮reduce‬‏ ‏‮bytes‬‏ ‏‮consumed‬‏ ‏‮by‬‏ ‏‮network‬‏ ‏‮activity‬‏."
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-javascript.js | title": {
+    "message": "‏‮Remove‬‏ ‏‮unused‬‏ ‏‮JavaScript‬‏"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | description": {
+    "message": "‏‮A‬‏ ‏‮long‬‏ ‏‮cache‬‏ ‏‮lifetime‬‏ ‏‮can‬‏ ‏‮speed‬‏ ‏‮up‬‏ ‏‮repeat‬‏ ‏‮visits‬‏ ‏‮to‬‏ ‏‮your‬‏ ‏‮page‬‏. [‏‮Learn‬‏ ‏‮more‬‏](https://developers.google.com/web/tools/lighthouse/audits/cache-policy)."
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 ‏‮resource‬‏ ‏‮found‬‏}zero{# ‏‮resources‬‏ ‏‮found‬‏}two{# ‏‮resources‬‏ ‏‮found‬‏}few{# ‏‮resources‬‏ ‏‮found‬‏}many{# ‏‮resources‬‏ ‏‮found‬‏}other{# ‏‮resources‬‏ ‏‮found‬‏}}"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | failureTitle": {
+    "message": "‏‮Serve‬‏ ‏‮static‬‏ ‏‮assets‬‏ ‏‮with‬‏ ‏‮an‬‏ ‏‮efficient‬‏ ‏‮cache‬‏ ‏‮policy‬‏"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | title": {
+    "message": "‏‮Uses‬‏ ‏‮efficient‬‏ ‏‮cache‬‏ ‏‮policy‬‏ ‏‮on‬‏ ‏‮static‬‏ ‏‮assets‬‏"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | description": {
+    "message": "‏‮Optimized‬‏ ‏‮images‬‏ ‏‮load‬‏ ‏‮faster‬‏ ‏‮and‬‏ ‏‮consume‬‏ ‏‮less‬‏ ‏‮cellular‬‏ ‏‮data‬‏. [‏‮Learn‬‏ ‏‮more‬‏](https://developers.google.com/web/tools/lighthouse/audits/optimize-images)."
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | title": {
+    "message": "‏‮Efficiently‬‏ ‏‮encode‬‏ ‏‮images‬‏"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | description": {
+    "message": "‏‮Serve‬‏ ‏‮images‬‏ ‏‮that‬‏ ‏‮are‬‏ ‏‮appropriately‬‏-‏‮sized‬‏ ‏‮to‬‏ ‏‮save‬‏ ‏‮cellular‬‏ ‏‮data‬‏ ‏‮and‬‏ ‏‮improve‬‏ ‏‮load‬‏ ‏‮time‬‏. [‏‮Learn‬‏ ‏‮more‬‏](https://developers.google.com/web/tools/lighthouse/audits/oversized-images)."
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | title": {
+    "message": "‏‮Properly‬‏ ‏‮size‬‏ ‏‮images‬‏"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | description": {
+    "message": "‏‮Text‬‏-‏‮based‬‏ ‏‮resources‬‏ ‏‮should‬‏ ‏‮be‬‏ ‏‮served‬‏ ‏‮with‬‏ ‏‮compression‬‏ (‏‮gzip‬‏, ‏‮deflate‬‏ ‏‮or‬‏ ‏‮brotli‬‏) ‏‮to‬‏ ‏‮minimize‬‏ ‏‮total‬‏ ‏‮network‬‏ ‏‮bytes‬‏. [‏‮Learn‬‏ ‏‮more‬‏](https://developers.google.com/web/tools/lighthouse/audits/text-compression)."
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | title": {
+    "message": "‏‮Enable‬‏ ‏‮text‬‏ ‏‮compression‬‏"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | description": {
+    "message": "‏‮Image‬‏ ‏‮formats‬‏ ‏‮like‬‏ ‏‮JPEG‬‏ 2000, ‏‮JPEG‬‏ ‏‮XR‬‏, ‏‮and‬‏ ‏‮WebP‬‏ ‏‮often‬‏ ‏‮provide‬‏ ‏‮better‬‏ ‏‮compression‬‏ ‏‮than‬‏ ‏‮PNG‬‏ ‏‮or‬‏ ‏‮JPEG‬‏, ‏‮which‬‏ ‏‮means‬‏ ‏‮faster‬‏ ‏‮downloads‬‏ ‏‮and‬‏ ‏‮less‬‏ ‏‮data‬‏ ‏‮consumption‬‏. [‏‮Learn‬‏ ‏‮more‬‏](https://developers.google.com/web/tools/lighthouse/audits/webp)."
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | title": {
+    "message": "‏‮Serve‬‏ ‏‮images‬‏ ‏‮in‬‏ ‏‮next‬‏-‏‮gen‬‏ ‏‮formats‬‏"
+  },
+  "lighthouse-core/audits/content-width.js | description": {
+    "message": "‏‮If‬‏ ‏‮the‬‏ ‏‮width‬‏ ‏‮of‬‏ ‏‮your‬‏ ‏‮app‬‏'‏‮s‬‏ ‏‮content‬‏ ‏‮doesn‬‏'‏‮t‬‏ ‏‮match‬‏ ‏‮the‬‏ ‏‮width‬‏ ‏‮of‬‏ ‏‮the‬‏ ‏‮viewport‬‏, ‏‮your‬‏ ‏‮app‬‏ ‏‮might‬‏ ‏‮not‬‏ ‏‮be‬‏ ‏‮optimized‬‏ ‏‮for‬‏ ‏‮mobile‬‏ ‏‮screens‬‏. [‏‮Learn‬‏ ‏‮more‬‏](https://developers.google.com/web/tools/lighthouse/audits/content-sized-correctly-for-viewport)."
+  },
+  "lighthouse-core/audits/content-width.js | explanation": {
+    "message": "‏‮The‬‏ ‏‮viewport‬‏ ‏‮size‬‏ ‏‮of‬‏ {innerWidth}‏‮px‬‏ ‏‮does‬‏ ‏‮not‬‏ ‏‮match‬‏ ‏‮the‬‏ ‏‮window‬‏ ‏‮size‬‏ ‏‮of‬‏ {outerWidth}‏‮px‬‏."
+  },
+  "lighthouse-core/audits/content-width.js | failureTitle": {
+    "message": "‏‮Content‬‏ ‏‮is‬‏ ‏‮not‬‏ ‏‮sized‬‏ ‏‮correctly‬‏ ‏‮for‬‏ ‏‮the‬‏ ‏‮viewport‬‏"
+  },
+  "lighthouse-core/audits/content-width.js | title": {
+    "message": "‏‮Content‬‏ ‏‮is‬‏ ‏‮sized‬‏ ‏‮correctly‬‏ ‏‮for‬‏ ‏‮the‬‏ ‏‮viewport‬‏"
+  },
+  "lighthouse-core/audits/critical-request-chains.js | description": {
+    "message": "‏‮The‬‏ ‏‮Critical‬‏ ‏‮Request‬‏ ‏‮Chains‬‏ ‏‮below‬‏ ‏‮show‬‏ ‏‮you‬‏ ‏‮what‬‏ ‏‮resources‬‏ ‏‮are‬‏ ‏‮loaded‬‏ ‏‮with‬‏ ‏‮a‬‏ ‏‮high‬‏ ‏‮priority‬‏. ‏‮Consider‬‏ ‏‮reducing‬‏ ‏‮the‬‏ ‏‮length‬‏ ‏‮of‬‏ ‏‮chains‬‏, ‏‮reducing‬‏ ‏‮the‬‏ ‏‮download‬‏ ‏‮size‬‏ ‏‮of‬‏ ‏‮resources‬‏, ‏‮or‬‏ ‏‮deferring‬‏ ‏‮the‬‏ ‏‮download‬‏ ‏‮of‬‏ ‏‮unnecessary‬‏ ‏‮resources‬‏ ‏‮to‬‏ ‏‮improve‬‏ ‏‮page‬‏ ‏‮load‬‏. [‏‮Learn‬‏ ‏‮more‬‏](https://developers.google.com/web/tools/lighthouse/audits/critical-request-chains)."
+  },
+  "lighthouse-core/audits/critical-request-chains.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 ‏‮chain‬‏ ‏‮found‬‏}zero{# ‏‮chains‬‏ ‏‮found‬‏}two{# ‏‮chains‬‏ ‏‮found‬‏}few{# ‏‮chains‬‏ ‏‮found‬‏}many{# ‏‮chains‬‏ ‏‮found‬‏}other{# ‏‮chains‬‏ ‏‮found‬‏}}"
+  },
+  "lighthouse-core/audits/critical-request-chains.js | title": {
+    "message": "‏‮Minimize‬‏ ‏‮Critical‬‏ ‏‮Requests‬‏ ‏‮Depth‬‏"
+  },
+  "lighthouse-core/audits/deprecations.js | columnDeprecate": {
+    "message": "‏‮Deprecation‬‏ / ‏‮Warning‬‏"
+  },
+  "lighthouse-core/audits/deprecations.js | columnLine": {
+    "message": "‏‮Line‬‏"
+  },
+  "lighthouse-core/audits/deprecations.js | description": {
+    "message": "‏‮Deprecated‬‏ ‏‮APIs‬‏ ‏‮will‬‏ ‏‮eventually‬‏ ‏‮be‬‏ ‏‮removed‬‏ ‏‮from‬‏ ‏‮the‬‏ ‏‮browser‬‏. [‏‮Learn‬‏ ‏‮more‬‏](https://web.dev/deprecations)."
+  },
+  "lighthouse-core/audits/deprecations.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 ‏‮warning‬‏ ‏‮found‬‏}zero{# ‏‮warnings‬‏ ‏‮found‬‏}two{# ‏‮warnings‬‏ ‏‮found‬‏}few{# ‏‮warnings‬‏ ‏‮found‬‏}many{# ‏‮warnings‬‏ ‏‮found‬‏}other{# ‏‮warnings‬‏ ‏‮found‬‏}}"
+  },
+  "lighthouse-core/audits/deprecations.js | failureTitle": {
+    "message": "‏‮Uses‬‏ ‏‮deprecated‬‏ ‏‮APIs‬‏"
+  },
+  "lighthouse-core/audits/deprecations.js | title": {
+    "message": "‏‮Avoids‬‏ ‏‮deprecated‬‏ ‏‮APIs‬‏"
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | description": {
+    "message": "‏‮Application‬‏ ‏‮Cache‬‏ ‏‮is‬‏ ‏‮deprecated‬‏. [‏‮Learn‬‏ ‏‮more‬‏](https://web.dev/appcache-manifest)."
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | displayValue": {
+    "message": "‏‮Found‬‏ \"{AppCacheManifest}\""
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | failureTitle": {
+    "message": "‏‮Uses‬‏ ‏‮Application‬‏ ‏‮Cache‬‏"
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | title": {
+    "message": "‏‮Avoids‬‏ ‏‮Application‬‏ ‏‮Cache‬‏"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | description": {
+    "message": "‏‮Specifying‬‏ ‏‮a‬‏ ‏‮doctype‬‏ ‏‮prevents‬‏ ‏‮the‬‏ ‏‮browser‬‏ ‏‮from‬‏ ‏‮switching‬‏ ‏‮to‬‏ ‏‮quirks‬‏-‏‮mode‬‏. [‏‮Learn‬‏ ‏‮more‬‏](https://web.dev/doctype)."
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationBadDoctype": {
+    "message": "‏‮Doctype‬‏ ‏‮name‬‏ ‏‮must‬‏ ‏‮be‬‏ ‏‮the‬‏ ‏‮lowercase‬‏ ‏‮string‬‏ `html`"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationNoDoctype": {
+    "message": "‏‮Document‬‏ ‏‮must‬‏ ‏‮contain‬‏ ‏‮a‬‏ ‏‮doctype‬‏"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationPublicId": {
+    "message": "‏‮Expected‬‏ ‏‮publicId‬‏ ‏‮to‬‏ ‏‮be‬‏ ‏‮an‬‏ ‏‮empty‬‏ ‏‮string‬‏"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationSystemId": {
+    "message": "‏‮Expected‬‏ ‏‮systemId‬‏ ‏‮to‬‏ ‏‮be‬‏ ‏‮an‬‏ ‏‮empty‬‏ ‏‮string‬‏"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | failureTitle": {
+    "message": "‏‮Page‬‏ ‏‮lacks‬‏ ‏‮the‬‏ ‏‮HTML‬‏ ‏‮doctype‬‏, ‏‮thus‬‏ ‏‮triggering‬‏ ‏‮quirks‬‏-‏‮mode‬‏"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | title": {
+    "message": "‏‮Page‬‏ ‏‮has‬‏ ‏‮the‬‏ ‏‮HTML‬‏ ‏‮doctype‬‏"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | columnElement": {
+    "message": "‏‮Element‬‏"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | columnStatistic": {
+    "message": "‏‮Statistic‬‏"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | columnValue": {
+    "message": "‏‮Value‬‏"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | description": {
+    "message": "‏‮Browser‬‏ ‏‮engineers‬‏ ‏‮recommend‬‏ ‏‮pages‬‏ ‏‮contain‬‏ ‏‮fewer‬‏ ‏‮than‬‏ ~1,500 ‏‮DOM‬‏ ‏‮elements‬‏. ‏‮The‬‏ ‏‮sweet‬‏ ‏‮spot‬‏ ‏‮is‬‏ ‏‮a‬‏ ‏‮tree‬‏ ‏‮depth‬‏ < 32 ‏‮elements‬‏ ‏‮and‬‏ ‏‮fewer‬‏ ‏‮than‬‏ 60 ‏‮children‬‏/‏‮parent‬‏ ‏‮element‬‏. ‏‮A‬‏ ‏‮large‬‏ ‏‮DOM‬‏ ‏‮can‬‏ ‏‮increase‬‏ ‏‮memory‬‏ ‏‮usage‬‏, ‏‮cause‬‏ ‏‮longer‬‏ [‏‮style‬‏ ‏‮calculations‬‏](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), ‏‮and‬‏ ‏‮produce‬‏ ‏‮costly‬‏ [‏‮layout‬‏ ‏‮reflows‬‏](https://developers.google.com/speed/articles/reflow). [‏‮Learn‬‏ ‏‮more‬‏](https://web.dev/dom-size)."
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 ‏‮element‬‏}zero{# ‏‮elements‬‏}two{# ‏‮elements‬‏}few{# ‏‮elements‬‏}many{# ‏‮elements‬‏}other{# ‏‮elements‬‏}}"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | failureTitle": {
+    "message": "‏‮Avoid‬‏ ‏‮an‬‏ ‏‮excessive‬‏ ‏‮DOM‬‏ ‏‮size‬‏"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | statisticDOMDepth": {
+    "message": "‏‮Maximum‬‏ ‏‮DOM‬‏ ‏‮Depth‬‏"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | statisticDOMElements": {
+    "message": "‏‮Total‬‏ ‏‮DOM‬‏ ‏‮Elements‬‏"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | statisticDOMWidth": {
+    "message": "‏‮Maximum‬‏ ‏‮Child‬‏ ‏‮Elements‬‏"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | title": {
+    "message": "‏‮Avoids‬‏ ‏‮an‬‏ ‏‮excessive‬‏ ‏‮DOM‬‏ ‏‮size‬‏"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | columnRel": {
+    "message": "‏‮Rel‬‏"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | columnTarget": {
+    "message": "‏‮Target‬‏"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | description": {
+    "message": "‏‮Add‬‏ `rel=\"noopener\"` ‏‮or‬‏ `rel=\"noreferrer\"` ‏‮to‬‏ ‏‮any‬‏ ‏‮external‬‏ ‏‮links‬‏ ‏‮to‬‏ ‏‮improve‬‏ ‏‮performance‬‏ ‏‮and‬‏ ‏‮prevent‬‏ ‏‮security‬‏ ‏‮vulnerabilities‬‏. [‏‮Learn‬‏ ‏‮more‬‏](https://web.dev/external-anchors-use-rel-noopener)."
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | failureTitle": {
+    "message": "‏‮Links‬‏ ‏‮to‬‏ ‏‮cross‬‏-‏‮origin‬‏ ‏‮destinations‬‏ ‏‮are‬‏ ‏‮unsafe‬‏"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | title": {
+    "message": "‏‮Links‬‏ ‏‮to‬‏ ‏‮cross‬‏-‏‮origin‬‏ ‏‮destinations‬‏ ‏‮are‬‏ ‏‮safe‬‏"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | warning": {
+    "message": "‏‮Unable‬‏ ‏‮to‬‏ ‏‮determine‬‏ ‏‮the‬‏ ‏‮destination‬‏ ‏‮for‬‏ ‏‮anchor‬‏ ({anchorHTML}). ‏‮If‬‏ ‏‮not‬‏ ‏‮used‬‏ ‏‮as‬‏ ‏‮a‬‏ ‏‮hyperlink‬‏, ‏‮consider‬‏ ‏‮removing‬‏ ‏‮target‬‏=_‏‮blank‬‏."
+  },
+  "lighthouse-core/audits/dobetterweb/geolocation-on-start.js | description": {
+    "message": "‏‮Users‬‏ ‏‮are‬‏ ‏‮mistrustful‬‏ ‏‮of‬‏ ‏‮or‬‏ ‏‮confused‬‏ ‏‮by‬‏ ‏‮sites‬‏ ‏‮that‬‏ ‏‮request‬‏ ‏‮their‬‏ ‏‮location‬‏ ‏‮without‬‏ ‏‮context‬‏. ‏‮Consider‬‏ ‏‮tying‬‏ ‏‮the‬‏ ‏‮request‬‏ ‏‮to‬‏ ‏‮a‬‏ ‏‮user‬‏ ‏‮action‬‏ ‏‮instead‬‏. [‏‮Learn‬‏ ‏‮more‬‏](https://web.dev/geolocation-on-start)."
+  },
+  "lighthouse-core/audits/dobetterweb/geolocation-on-start.js | failureTitle": {
+    "message": "‏‮Requests‬‏ ‏‮the‬‏ ‏‮geolocation‬‏ ‏‮permission‬‏ ‏‮on‬‏ ‏‮page‬‏ ‏‮load‬‏"
+  },
+  "lighthouse-core/audits/dobetterweb/geolocation-on-start.js | title": {
+    "message": "‏‮Avoids‬‏ ‏‮requesting‬‏ ‏‮the‬‏ ‏‮geolocation‬‏ ‏‮permission‬‏ ‏‮on‬‏ ‏‮page‬‏ ‏‮load‬‏"
+  },
+  "lighthouse-core/audits/dobetterweb/js-libraries.js | columnVersion": {
+    "message": "‏‮Version‬‏"
+  },
+  "lighthouse-core/audits/dobetterweb/js-libraries.js | description": {
+    "message": "‏‮All‬‏ ‏‮front‬‏-‏‮end‬‏ ‏‮JavaScript‬‏ ‏‮libraries‬‏ ‏‮detected‬‏ ‏‮on‬‏ ‏‮the‬‏ ‏‮page‬‏. [‏‮Learn‬‏ ‏‮more‬‏](https://web.dev/js-libraries)."
+  },
+  "lighthouse-core/audits/dobetterweb/js-libraries.js | title": {
+    "message": "‏‮Detected‬‏ ‏‮JavaScript‬‏ ‏‮libraries‬‏"
+  },
+  "lighthouse-core/audits/dobetterweb/no-document-write.js | description": {
+    "message": "‏‮For‬‏ ‏‮users‬‏ ‏‮on‬‏ ‏‮slow‬‏ ‏‮connections‬‏, ‏‮external‬‏ ‏‮scripts‬‏ ‏‮dynamically‬‏ ‏‮injected‬‏ ‏‮via‬‏ `document.write()` ‏‮can‬‏ ‏‮delay‬‏ ‏‮page‬‏ ‏‮load‬‏ ‏‮by‬‏ ‏‮tens‬‏ ‏‮of‬‏ ‏‮seconds‬‏. [‏‮Learn‬‏ ‏‮more‬‏](https://web.dev/no-document-write)."
+  },
+  "lighthouse-core/audits/dobetterweb/no-document-write.js | failureTitle": {
+    "message": "‏‮Uses‬‏ `document.write()`"
+  },
+  "lighthouse-core/audits/dobetterweb/no-document-write.js | title": {
+    "message": "‏‮Avoids‬‏ `document.write()`"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | columnSeverity": {
+    "message": "‏‮Highest‬‏ ‏‮Severity‬‏"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | columnVersion": {
+    "message": "‏‮Library‬‏ ‏‮Version‬‏"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | columnVuln": {
+    "message": "‏‮Vulnerability‬‏ ‏‮Count‬‏"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | description": {
+    "message": "‏‮Some‬‏ ‏‮third‬‏-‏‮party‬‏ ‏‮scripts‬‏ ‏‮may‬‏ ‏‮contain‬‏ ‏‮known‬‏ ‏‮security‬‏ ‏‮vulnerabilities‬‏ ‏‮that‬‏ ‏‮are‬‏ ‏‮easily‬‏ ‏‮identified‬‏ ‏‮and‬‏ ‏‮exploited‬‏ ‏‮by‬‏ ‏‮attackers‬‏. [‏‮Learn‬‏ ‏‮more‬‏](https://web.dev/no-vulnerable-libraries)."
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 ‏‮vulnerability‬‏ ‏‮detected‬‏}zero{# ‏‮vulnerabilities‬‏ ‏‮detected‬‏}two{# ‏‮vulnerabilities‬‏ ‏‮detected‬‏}few{# ‏‮vulnerabilities‬‏ ‏‮detected‬‏}many{# ‏‮vulnerabilities‬‏ ‏‮detected‬‏}other{# ‏‮vulnerabilities‬‏ ‏‮detected‬‏}}"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | failureTitle": {
+    "message": "‏‮Includes‬‏ ‏‮front‬‏-‏‮end‬‏ ‏‮JavaScript‬‏ ‏‮libraries‬‏ ‏‮with‬‏ ‏‮known‬‏ ‏‮security‬‏ ‏‮vulnerabilities‬‏"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | rowSeverityHigh": {
+    "message": "‏‮High‬‏"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | rowSeverityLow": {
+    "message": "‏‮Low‬‏"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | rowSeverityMedium": {
+    "message": "‏‮Medium‬‏"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | title": {
+    "message": "‏‮Avoids‬‏ ‏‮front‬‏-‏‮end‬‏ ‏‮JavaScript‬‏ ‏‮libraries‬‏ ‏‮with‬‏ ‏‮known‬‏ ‏‮security‬‏ ‏‮vulnerabilities‬‏"
+  },
+  "lighthouse-core/audits/dobetterweb/notification-on-start.js | description": {
+    "message": "‏‮Users‬‏ ‏‮are‬‏ ‏‮mistrustful‬‏ ‏‮of‬‏ ‏‮or‬‏ ‏‮confused‬‏ ‏‮by‬‏ ‏‮sites‬‏ ‏‮that‬‏ ‏‮request‬‏ ‏‮to‬‏ ‏‮send‬‏ ‏‮notifications‬‏ ‏‮without‬‏ ‏‮context‬‏. ‏‮Consider‬‏ ‏‮tying‬‏ ‏‮the‬‏ ‏‮request‬‏ ‏‮to‬‏ ‏‮user‬‏ ‏‮gestures‬‏ ‏‮instead‬‏. [‏‮Learn‬‏ ‏‮more‬‏](https://web.dev/notification-on-start)."
+  },
+  "lighthouse-core/audits/dobetterweb/notification-on-start.js | failureTitle": {
+    "message": "‏‮Requests‬‏ ‏‮the‬‏ ‏‮notification‬‏ ‏‮permission‬‏ ‏‮on‬‏ ‏‮page‬‏ ‏‮load‬‏"
+  },
+  "lighthouse-core/audits/dobetterweb/notification-on-start.js | title": {
+    "message": "‏‮Avoids‬‏ ‏‮requesting‬‏ ‏‮the‬‏ ‏‮notification‬‏ ‏‮permission‬‏ ‏‮on‬‏ ‏‮page‬‏ ‏‮load‬‏"
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | columnFailingElem": {
+    "message": "‏‮Failing‬‏ ‏‮Elements‬‏"
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | description": {
+    "message": "‏‮Preventing‬‏ ‏‮password‬‏ ‏‮pasting‬‏ ‏‮undermines‬‏ ‏‮good‬‏ ‏‮security‬‏ ‏‮policy‬‏. [‏‮Learn‬‏ ‏‮more‬‏](https://web.dev/password-inputs-can-be-pasted-into)."
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | failureTitle": {
+    "message": "‏‮Prevents‬‏ ‏‮users‬‏ ‏‮to‬‏ ‏‮paste‬‏ ‏‮into‬‏ ‏‮password‬‏ ‏‮fields‬‏"
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | title": {
+    "message": "‏‮Allows‬‏ ‏‮users‬‏ ‏‮to‬‏ ‏‮paste‬‏ ‏‮into‬‏ ‏‮password‬‏ ‏‮fields‬‏"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | columnProtocol": {
+    "message": "‏‮Protocol‬‏"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | description": {
+    "message": "‏‮HTTP‬‏/2 ‏‮offers‬‏ ‏‮many‬‏ ‏‮benefits‬‏ ‏‮over‬‏ ‏‮HTTP‬‏/1.1, ‏‮including‬‏ ‏‮binary‬‏ ‏‮headers‬‏, ‏‮multiplexing‬‏, ‏‮and‬‏ ‏‮server‬‏ ‏‮push‬‏. [‏‮Learn‬‏ ‏‮more‬‏](https://web.dev/uses-http2)."
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 ‏‮request‬‏ ‏‮not‬‏ ‏‮served‬‏ ‏‮via‬‏ ‏‮HTTP‬‏/2}zero{# ‏‮requests‬‏ ‏‮not‬‏ ‏‮served‬‏ ‏‮via‬‏ ‏‮HTTP‬‏/2}two{# ‏‮requests‬‏ ‏‮not‬‏ ‏‮served‬‏ ‏‮via‬‏ ‏‮HTTP‬‏/2}few{# ‏‮requests‬‏ ‏‮not‬‏ ‏‮served‬‏ ‏‮via‬‏ ‏‮HTTP‬‏/2}many{# ‏‮requests‬‏ ‏‮not‬‏ ‏‮served‬‏ ‏‮via‬‏ ‏‮HTTP‬‏/2}other{# ‏‮requests‬‏ ‏‮not‬‏ ‏‮served‬‏ ‏‮via‬‏ ‏‮HTTP‬‏/2}}"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | failureTitle": {
+    "message": "‏‮Does‬‏ ‏‮not‬‏ ‏‮use‬‏ ‏‮HTTP‬‏/2 ‏‮for‬‏ ‏‮all‬‏ ‏‮of‬‏ ‏‮its‬‏ ‏‮resources‬‏"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | title": {
+    "message": "‏‮Uses‬‏ ‏‮HTTP‬‏/2 ‏‮for‬‏ ‏‮its‬‏ ‏‮own‬‏ ‏‮resources‬‏"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-passive-event-listeners.js | description": {
+    "message": "‏‮Consider‬‏ ‏‮marking‬‏ ‏‮your‬‏ ‏‮touch‬‏ ‏‮and‬‏ ‏‮wheel‬‏ ‏‮event‬‏ ‏‮listeners‬‏ ‏‮as‬‏ `passive` ‏‮to‬‏ ‏‮improve‬‏ ‏‮your‬‏ ‏‮page‬‏'‏‮s‬‏ ‏‮scroll‬‏ ‏‮performance‬‏. [‏‮Learn‬‏ ‏‮more‬‏](https://web.dev/uses-passive-event-listeners)."
+  },
+  "lighthouse-core/audits/dobetterweb/uses-passive-event-listeners.js | failureTitle": {
+    "message": "‏‮Does‬‏ ‏‮not‬‏ ‏‮use‬‏ ‏‮passive‬‏ ‏‮listeners‬‏ ‏‮to‬‏ ‏‮improve‬‏ ‏‮scrolling‬‏ ‏‮performance‬‏"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-passive-event-listeners.js | title": {
+    "message": "‏‮Uses‬‏ ‏‮passive‬‏ ‏‮listeners‬‏ ‏‮to‬‏ ‏‮improve‬‏ ‏‮scrolling‬‏ ‏‮performance‬‏"
+  },
+  "lighthouse-core/audits/errors-in-console.js | columnDesc": {
+    "message": "‏‮Description‬‏"
+  },
+  "lighthouse-core/audits/errors-in-console.js | description": {
+    "message": "‏‮Errors‬‏ ‏‮logged‬‏ ‏‮to‬‏ ‏‮the‬‏ ‏‮console‬‏ ‏‮indicate‬‏ ‏‮unresolved‬‏ ‏‮problems‬‏. ‏‮They‬‏ ‏‮can‬‏ ‏‮come‬‏ ‏‮from‬‏ ‏‮network‬‏ ‏‮request‬‏ ‏‮failures‬‏ ‏‮and‬‏ ‏‮other‬‏ ‏‮browser‬‏ ‏‮concerns‬‏. [‏‮Learn‬‏ ‏‮more‬‏](https://web.dev/errors-in-console)"
+  },
+  "lighthouse-core/audits/errors-in-console.js | failureTitle": {
+    "message": "‏‮Browser‬‏ ‏‮errors‬‏ ‏‮were‬‏ ‏‮logged‬‏ ‏‮to‬‏ ‏‮the‬‏ ‏‮console‬‏"
+  },
+  "lighthouse-core/audits/errors-in-console.js | title": {
+    "message": "‏‮No‬‏ ‏‮browser‬‏ ‏‮errors‬‏ ‏‮logged‬‏ ‏‮to‬‏ ‏‮the‬‏ ‏‮console‬‏"
+  },
+  "lighthouse-core/audits/font-display.js | description": {
+    "message": "‏‮Leverage‬‏ ‏‮the‬‏ ‏‮font‬‏-‏‮display‬‏ ‏‮CSS‬‏ ‏‮feature‬‏ ‏‮to‬‏ ‏‮ensure‬‏ ‏‮text‬‏ ‏‮is‬‏ ‏‮user‬‏-‏‮visible‬‏ ‏‮while‬‏ ‏‮webfonts‬‏ ‏‮are‬‏ ‏‮loading‬‏. [‏‮Learn‬‏ ‏‮more‬‏](https://developers.google.com/web/updates/2016/02/font-display)."
+  },
+  "lighthouse-core/audits/font-display.js | failureTitle": {
+    "message": "‏‮Ensure‬‏ ‏‮text‬‏ ‏‮remains‬‏ ‏‮visible‬‏ ‏‮during‬‏ ‏‮webfont‬‏ ‏‮load‬‏"
+  },
+  "lighthouse-core/audits/font-display.js | title": {
+    "message": "‏‮All‬‏ ‏‮text‬‏ ‏‮remains‬‏ ‏‮visible‬‏ ‏‮during‬‏ ‏‮webfont‬‏ ‏‮loads‬‏"
+  },
+  "lighthouse-core/audits/font-display.js | undeclaredFontURLWarning": {
+    "message": "‏‮Lighthouse‬‏ ‏‮was‬‏ ‏‮unable‬‏ ‏‮to‬‏ ‏‮automatically‬‏ ‏‮check‬‏ ‏‮the‬‏ ‏‮font‬‏-‏‮display‬‏ ‏‮value‬‏ ‏‮for‬‏ ‏‮the‬‏ ‏‮following‬‏ ‏‮URL‬‏: {fontURL}."
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | columnActual": {
+    "message": "‏‮Aspect‬‏ ‏‮Ratio‬‏ (‏‮Actual‬‏)"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | columnDisplayed": {
+    "message": "‏‮Aspect‬‏ ‏‮Ratio‬‏ (‏‮Displayed‬‏)"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | description": {
+    "message": "‏‮Image‬‏ ‏‮display‬‏ ‏‮dimensions‬‏ ‏‮should‬‏ ‏‮match‬‏ ‏‮natural‬‏ ‏‮aspect‬‏ ‏‮ratio‬‏. [‏‮Learn‬‏ ‏‮more‬‏](https://web.dev/image-aspect-ratio)."
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | failureTitle": {
+    "message": "‏‮Displays‬‏ ‏‮images‬‏ ‏‮with‬‏ ‏‮incorrect‬‏ ‏‮aspect‬‏ ‏‮ratio‬‏"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | title": {
+    "message": "‏‮Displays‬‏ ‏‮images‬‏ ‏‮with‬‏ ‏‮correct‬‏ ‏‮aspect‬‏ ‏‮ratio‬‏"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | warningCompute": {
+    "message": "‏‮Invalid‬‏ ‏‮image‬‏ ‏‮sizing‬‏ ‏‮information‬‏ {url}"
+  },
+  "lighthouse-core/audits/installable-manifest.js | description": {
+    "message": "‏‮Browsers‬‏ ‏‮can‬‏ ‏‮proactively‬‏ ‏‮prompt‬‏ ‏‮users‬‏ ‏‮to‬‏ ‏‮add‬‏ ‏‮your‬‏ ‏‮app‬‏ ‏‮to‬‏ ‏‮their‬‏ ‏‮homescreen‬‏, ‏‮which‬‏ ‏‮can‬‏ ‏‮lead‬‏ ‏‮to‬‏ ‏‮higher‬‏ ‏‮engagement‬‏. [‏‮Learn‬‏ ‏‮more‬‏](https://developers.google.com/web/tools/lighthouse/audits/install-prompt)."
+  },
+  "lighthouse-core/audits/installable-manifest.js | failureTitle": {
+    "message": "‏‮Web‬‏ ‏‮app‬‏ ‏‮manifest‬‏ ‏‮does‬‏ ‏‮not‬‏ ‏‮meet‬‏ ‏‮the‬‏ ‏‮installability‬‏ ‏‮requirements‬‏"
+  },
+  "lighthouse-core/audits/installable-manifest.js | title": {
+    "message": "‏‮Web‬‏ ‏‮app‬‏ ‏‮manifest‬‏ ‏‮meets‬‏ ‏‮the‬‏ ‏‮installability‬‏ ‏‮requirements‬‏"
+  },
+  "lighthouse-core/audits/is-on-https.js | columnInsecureURL": {
+    "message": "‏‮Insecure‬‏ ‏‮URL‬‏"
+  },
+  "lighthouse-core/audits/is-on-https.js | description": {
+    "message": "‏‮All‬‏ ‏‮sites‬‏ ‏‮should‬‏ ‏‮be‬‏ ‏‮protected‬‏ ‏‮with‬‏ ‏‮HTTPS‬‏, ‏‮even‬‏ ‏‮ones‬‏ ‏‮that‬‏ ‏‮don‬‏'‏‮t‬‏ ‏‮handle‬‏ ‏‮sensitive‬‏ ‏‮data‬‏. ‏‮HTTPS‬‏ ‏‮prevents‬‏ ‏‮intruders‬‏ ‏‮from‬‏ ‏‮tampering‬‏ ‏‮with‬‏ ‏‮or‬‏ ‏‮passively‬‏ ‏‮listening‬‏ ‏‮in‬‏ ‏‮on‬‏ ‏‮the‬‏ ‏‮communications‬‏ ‏‮between‬‏ ‏‮your‬‏ ‏‮app‬‏ ‏‮and‬‏ ‏‮your‬‏ ‏‮users‬‏, ‏‮and‬‏ ‏‮is‬‏ ‏‮a‬‏ ‏‮prerequisite‬‏ ‏‮for‬‏ ‏‮HTTP‬‏/2 ‏‮and‬‏ ‏‮many‬‏ ‏‮new‬‏ ‏‮web‬‏ ‏‮platform‬‏ ‏‮APIs‬‏. [‏‮Learn‬‏ ‏‮more‬‏](https://web.dev/is-on-https)."
+  },
+  "lighthouse-core/audits/is-on-https.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 ‏‮insecure‬‏ ‏‮request‬‏ ‏‮found‬‏}zero{# ‏‮insecure‬‏ ‏‮requests‬‏ ‏‮found‬‏}two{# ‏‮insecure‬‏ ‏‮requests‬‏ ‏‮found‬‏}few{# ‏‮insecure‬‏ ‏‮requests‬‏ ‏‮found‬‏}many{# ‏‮insecure‬‏ ‏‮requests‬‏ ‏‮found‬‏}other{# ‏‮insecure‬‏ ‏‮requests‬‏ ‏‮found‬‏}}"
+  },
+  "lighthouse-core/audits/is-on-https.js | failureTitle": {
+    "message": "‏‮Does‬‏ ‏‮not‬‏ ‏‮use‬‏ ‏‮HTTPS‬‏"
+  },
+  "lighthouse-core/audits/is-on-https.js | title": {
+    "message": "‏‮Uses‬‏ ‏‮HTTPS‬‏"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | description": {
+    "message": "‏‮A‬‏ ‏‮fast‬‏ ‏‮page‬‏ ‏‮load‬‏ ‏‮over‬‏ ‏‮a‬‏ ‏‮cellular‬‏ ‏‮network‬‏ ‏‮ensures‬‏ ‏‮a‬‏ ‏‮good‬‏ ‏‮mobile‬‏ ‏‮user‬‏ ‏‮experience‬‏. [‏‮Learn‬‏ ‏‮more‬‏](https://developers.google.com/web/tools/lighthouse/audits/fast-3g)."
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | displayValueText": {
+    "message": "‏‮Interactive‬‏ ‏‮at‬‏ {timeInMs, number, seconds} ‏‮s‬‏"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | displayValueTextWithOverride": {
+    "message": "‏‮Interactive‬‏ ‏‮on‬‏ ‏‮simulated‬‏ ‏‮mobile‬‏ ‏‮network‬‏ ‏‮at‬‏ {timeInMs, number, seconds} ‏‮s‬‏"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | explanationLoadSlow": {
+    "message": "‏‮Your‬‏ ‏‮page‬‏ ‏‮loads‬‏ ‏‮too‬‏ ‏‮slowly‬‏ ‏‮and‬‏ ‏‮is‬‏ ‏‮not‬‏ ‏‮interactive‬‏ ‏‮within‬‏ 10 ‏‮seconds‬‏. ‏‮Look‬‏ ‏‮at‬‏ ‏‮the‬‏ ‏‮opportunities‬‏ ‏‮and‬‏ ‏‮diagnostics‬‏ ‏‮in‬‏ ‏‮the‬‏ \"‏‮Performance‬‏\" ‏‮section‬‏ ‏‮to‬‏ ‏‮learn‬‏ ‏‮how‬‏ ‏‮to‬‏ ‏‮improve‬‏."
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | failureTitle": {
+    "message": "‏‮Page‬‏ ‏‮load‬‏ ‏‮is‬‏ ‏‮not‬‏ ‏‮fast‬‏ ‏‮enough‬‏ ‏‮on‬‏ ‏‮mobile‬‏ ‏‮networks‬‏"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | title": {
+    "message": "‏‮Page‬‏ ‏‮load‬‏ ‏‮is‬‏ ‏‮fast‬‏ ‏‮enough‬‏ ‏‮on‬‏ ‏‮mobile‬‏ ‏‮networks‬‏"
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | columnCategory": {
+    "message": "‏‮Category‬‏"
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | description": {
+    "message": "‏‮Consider‬‏ ‏‮reducing‬‏ ‏‮the‬‏ ‏‮time‬‏ ‏‮spent‬‏ ‏‮parsing‬‏, ‏‮compiling‬‏ ‏‮and‬‏ ‏‮executing‬‏ ‏‮JS‬‏. ‏‮You‬‏ ‏‮may‬‏ ‏‮find‬‏ ‏‮delivering‬‏ ‏‮smaller‬‏ ‏‮JS‬‏ ‏‮payloads‬‏ ‏‮helps‬‏ ‏‮with‬‏ ‏‮this‬‏."
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | failureTitle": {
+    "message": "‏‮Minimize‬‏ ‏‮main‬‏-‏‮thread‬‏ ‏‮work‬‏"
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | title": {
+    "message": "‏‮Minimizes‬‏ ‏‮main‬‏-‏‮thread‬‏ ‏‮work‬‏"
+  },
+  "lighthouse-core/audits/manual/pwa-cross-browser.js | description": {
+    "message": "‏‮To‬‏ ‏‮reach‬‏ ‏‮the‬‏ ‏‮most‬‏ ‏‮number‬‏ ‏‮of‬‏ ‏‮users‬‏, ‏‮sites‬‏ ‏‮should‬‏ ‏‮work‬‏ ‏‮across‬‏ ‏‮every‬‏ ‏‮major‬‏ ‏‮browser‬‏. [‏‮Learn‬‏ ‏‮more‬‏](https://developers.google.com/web/progressive-web-apps/checklist#site-works-cross-browser)."
+  },
+  "lighthouse-core/audits/manual/pwa-cross-browser.js | title": {
+    "message": "‏‮Site‬‏ ‏‮works‬‏ ‏‮cross‬‏-‏‮browser‬‏"
+  },
+  "lighthouse-core/audits/manual/pwa-each-page-has-url.js | description": {
+    "message": "‏‮Ensure‬‏ ‏‮individual‬‏ ‏‮pages‬‏ ‏‮are‬‏ ‏‮deep‬‏ ‏‮linkable‬‏ ‏‮via‬‏ ‏‮URL‬‏ ‏‮and‬‏ ‏‮that‬‏ ‏‮URLs‬‏ ‏‮are‬‏ ‏‮unique‬‏ ‏‮for‬‏ ‏‮the‬‏ ‏‮purpose‬‏ ‏‮of‬‏ ‏‮shareability‬‏ ‏‮on‬‏ ‏‮social‬‏ ‏‮media‬‏. [‏‮Learn‬‏ ‏‮more‬‏](https://developers.google.com/web/progressive-web-apps/checklist#each-page-has-a-url)."
+  },
+  "lighthouse-core/audits/manual/pwa-each-page-has-url.js | title": {
+    "message": "‏‮Each‬‏ ‏‮page‬‏ ‏‮has‬‏ ‏‮a‬‏ ‏‮URL‬‏"
+  },
+  "lighthouse-core/audits/manual/pwa-page-transitions.js | description": {
+    "message": "‏‮Transitions‬‏ ‏‮should‬‏ ‏‮feel‬‏ ‏‮snappy‬‏ ‏‮as‬‏ ‏‮you‬‏ ‏‮tap‬‏ ‏‮around‬‏, ‏‮even‬‏ ‏‮on‬‏ ‏‮a‬‏ ‏‮slow‬‏ ‏‮network‬‏, ‏‮a‬‏ ‏‮key‬‏ ‏‮to‬‏ ‏‮perceived‬‏ ‏‮performance‬‏. [‏‮Learn‬‏ ‏‮more‬‏](https://developers.google.com/web/progressive-web-apps/checklist#page-transitions-dont-feel-like-they-block-on-the-network)."
+  },
+  "lighthouse-core/audits/manual/pwa-page-transitions.js | title": {
+    "message": "‏‮Page‬‏ ‏‮transitions‬‏ ‏‮don‬‏'‏‮t‬‏ ‏‮feel‬‏ ‏‮like‬‏ ‏‮they‬‏ ‏‮block‬‏ ‏‮on‬‏ ‏‮the‬‏ ‏‮network‬‏"
+  },
+  "lighthouse-core/audits/metrics/estimated-input-latency.js | description": {
+    "message": "‏‮Estimated‬‏ ‏‮Input‬‏ ‏‮Latency‬‏ ‏‮is‬‏ ‏‮an‬‏ ‏‮estimate‬‏ ‏‮of‬‏ ‏‮how‬‏ ‏‮long‬‏ ‏‮your‬‏ ‏‮app‬‏ ‏‮takes‬‏ ‏‮to‬‏ ‏‮respond‬‏ ‏‮to‬‏ ‏‮user‬‏ ‏‮input‬‏, ‏‮in‬‏ ‏‮milliseconds‬‏, ‏‮during‬‏ ‏‮the‬‏ ‏‮busiest‬‏ 5‏‮s‬‏ ‏‮window‬‏ ‏‮of‬‏ ‏‮page‬‏ ‏‮load‬‏. ‏‮If‬‏ ‏‮your‬‏ ‏‮latency‬‏ ‏‮is‬‏ ‏‮higher‬‏ ‏‮than‬‏ 50 ‏‮ms‬‏, ‏‮users‬‏ ‏‮may‬‏ ‏‮perceive‬‏ ‏‮your‬‏ ‏‮app‬‏ ‏‮as‬‏ ‏‮laggy‬‏. [‏‮Learn‬‏ ‏‮more‬‏](https://developers.google.com/web/tools/lighthouse/audits/estimated-input-latency)."
+  },
+  "lighthouse-core/audits/metrics/estimated-input-latency.js | title": {
+    "message": "‏‮Estimated‬‏ ‏‮Input‬‏ ‏‮Latency‬‏"
+  },
+  "lighthouse-core/audits/metrics/first-contentful-paint.js | description": {
+    "message": "‏‮First‬‏ ‏‮Contentful‬‏ ‏‮Paint‬‏ ‏‮marks‬‏ ‏‮the‬‏ ‏‮time‬‏ ‏‮at‬‏ ‏‮which‬‏ ‏‮the‬‏ ‏‮first‬‏ ‏‮text‬‏ ‏‮or‬‏ ‏‮image‬‏ ‏‮is‬‏ ‏‮painted‬‏. [‏‮Learn‬‏ ‏‮more‬‏](https://developers.google.com/web/tools/lighthouse/audits/first-contentful-paint)."
+  },
+  "lighthouse-core/audits/metrics/first-contentful-paint.js | title": {
+    "message": "‏‮First‬‏ ‏‮Contentful‬‏ ‏‮Paint‬‏"
+  },
+  "lighthouse-core/audits/metrics/first-cpu-idle.js | description": {
+    "message": "‏‮First‬‏ ‏‮CPU‬‏ ‏‮Idle‬‏ ‏‮marks‬‏ ‏‮the‬‏ ‏‮first‬‏ ‏‮time‬‏ ‏‮at‬‏ ‏‮which‬‏ ‏‮the‬‏ ‏‮page‬‏'‏‮s‬‏ ‏‮main‬‏ ‏‮thread‬‏ ‏‮is‬‏ ‏‮quiet‬‏ ‏‮enough‬‏ ‏‮to‬‏ ‏‮handle‬‏ ‏‮input‬‏. [‏‮Learn‬‏ ‏‮more‬‏](https://developers.google.com/web/tools/lighthouse/audits/first-interactive)."
+  },
+  "lighthouse-core/audits/metrics/first-cpu-idle.js | title": {
+    "message": "‏‮First‬‏ ‏‮CPU‬‏ ‏‮Idle‬‏"
+  },
+  "lighthouse-core/audits/metrics/first-meaningful-paint.js | description": {
+    "message": "‏‮First‬‏ ‏‮Meaningful‬‏ ‏‮Paint‬‏ ‏‮measures‬‏ ‏‮when‬‏ ‏‮the‬‏ ‏‮primary‬‏ ‏‮content‬‏ ‏‮of‬‏ ‏‮a‬‏ ‏‮page‬‏ ‏‮is‬‏ ‏‮visible‬‏. [‏‮Learn‬‏ ‏‮more‬‏](https://developers.google.com/web/tools/lighthouse/audits/first-meaningful-paint)."
+  },
+  "lighthouse-core/audits/metrics/first-meaningful-paint.js | title": {
+    "message": "‏‮First‬‏ ‏‮Meaningful‬‏ ‏‮Paint‬‏"
+  },
+  "lighthouse-core/audits/metrics/interactive.js | description": {
+    "message": "‏‮Time‬‏ ‏‮to‬‏ ‏‮interactive‬‏ ‏‮is‬‏ ‏‮the‬‏ ‏‮amount‬‏ ‏‮of‬‏ ‏‮time‬‏ ‏‮it‬‏ ‏‮takes‬‏ ‏‮for‬‏ ‏‮the‬‏ ‏‮page‬‏ ‏‮to‬‏ ‏‮become‬‏ ‏‮fully‬‏ ‏‮interactive‬‏. [‏‮Learn‬‏ ‏‮more‬‏](https://developers.google.com/web/tools/lighthouse/audits/consistently-interactive)."
+  },
+  "lighthouse-core/audits/metrics/interactive.js | title": {
+    "message": "‏‮Time‬‏ ‏‮to‬‏ ‏‮Interactive‬‏"
+  },
+  "lighthouse-core/audits/metrics/max-potential-fid.js | description": {
+    "message": "‏‮The‬‏ ‏‮maximum‬‏ ‏‮potential‬‏ ‏‮First‬‏ ‏‮Input‬‏ ‏‮Delay‬‏ ‏‮that‬‏ ‏‮your‬‏ ‏‮users‬‏ ‏‮could‬‏ ‏‮experience‬‏ ‏‮is‬‏ ‏‮the‬‏ ‏‮duration‬‏, ‏‮in‬‏ ‏‮milliseconds‬‏, ‏‮of‬‏ ‏‮the‬‏ ‏‮longest‬‏ ‏‮task‬‏. [‏‮Learn‬‏ ‏‮more‬‏](https://developers.google.com/web/updates/2018/05/first-input-delay)."
+  },
+  "lighthouse-core/audits/metrics/max-potential-fid.js | title": {
+    "message": "‏‮Max‬‏ ‏‮Potential‬‏ ‏‮First‬‏ ‏‮Input‬‏ ‏‮Delay‬‏"
+  },
+  "lighthouse-core/audits/metrics/speed-index.js | description": {
+    "message": "‏‮Speed‬‏ ‏‮Index‬‏ ‏‮shows‬‏ ‏‮how‬‏ ‏‮quickly‬‏ ‏‮the‬‏ ‏‮contents‬‏ ‏‮of‬‏ ‏‮a‬‏ ‏‮page‬‏ ‏‮are‬‏ ‏‮visibly‬‏ ‏‮populated‬‏. [‏‮Learn‬‏ ‏‮more‬‏](https://developers.google.com/web/tools/lighthouse/audits/speed-index)."
+  },
+  "lighthouse-core/audits/metrics/speed-index.js | title": {
+    "message": "‏‮Speed‬‏ ‏‮Index‬‏"
+  },
+  "lighthouse-core/audits/metrics/total-blocking-time.js | description": {
+    "message": "‏‮Sum‬‏ ‏‮of‬‏ ‏‮all‬‏ ‏‮time‬‏ ‏‮periods‬‏ ‏‮between‬‏ ‏‮FCP‬‏ ‏‮and‬‏ ‏‮Time‬‏ ‏‮to‬‏ ‏‮Interactive‬‏, ‏‮when‬‏ ‏‮task‬‏ ‏‮length‬‏ ‏‮exceeded‬‏ 50‏‮ms‬‏, ‏‮expressed‬‏ ‏‮in‬‏ ‏‮milliseconds‬‏."
+  },
+  "lighthouse-core/audits/metrics/total-blocking-time.js | title": {
+    "message": "‏‮Total‬‏ ‏‮Blocking‬‏ ‏‮Time‬‏"
+  },
+  "lighthouse-core/audits/network-rtt.js | description": {
+    "message": "‏‮Network‬‏ ‏‮round‬‏ ‏‮trip‬‏ ‏‮times‬‏ (‏‮RTT‬‏) ‏‮have‬‏ ‏‮a‬‏ ‏‮large‬‏ ‏‮impact‬‏ ‏‮on‬‏ ‏‮performance‬‏. ‏‮If‬‏ ‏‮the‬‏ ‏‮RTT‬‏ ‏‮to‬‏ ‏‮an‬‏ ‏‮origin‬‏ ‏‮is‬‏ ‏‮high‬‏, ‏‮it‬‏'‏‮s‬‏ ‏‮an‬‏ ‏‮indication‬‏ ‏‮that‬‏ ‏‮servers‬‏ ‏‮closer‬‏ ‏‮to‬‏ ‏‮the‬‏ ‏‮user‬‏ ‏‮could‬‏ ‏‮improve‬‏ ‏‮performance‬‏. [‏‮Learn‬‏ ‏‮more‬‏](https://hpbn.co/primer-on-latency-and-bandwidth/)."
+  },
+  "lighthouse-core/audits/network-rtt.js | title": {
+    "message": "‏‮Network‬‏ ‏‮Round‬‏ ‏‮Trip‬‏ ‏‮Times‬‏"
+  },
+  "lighthouse-core/audits/network-server-latency.js | description": {
+    "message": "‏‮Server‬‏ ‏‮latencies‬‏ ‏‮can‬‏ ‏‮impact‬‏ ‏‮web‬‏ ‏‮performance‬‏. ‏‮If‬‏ ‏‮the‬‏ ‏‮server‬‏ ‏‮latency‬‏ ‏‮of‬‏ ‏‮an‬‏ ‏‮origin‬‏ ‏‮is‬‏ ‏‮high‬‏, ‏‮it‬‏'‏‮s‬‏ ‏‮an‬‏ ‏‮indication‬‏ ‏‮the‬‏ ‏‮server‬‏ ‏‮is‬‏ ‏‮overloaded‬‏ ‏‮or‬‏ ‏‮has‬‏ ‏‮poor‬‏ ‏‮backend‬‏ ‏‮performance‬‏. [‏‮Learn‬‏ ‏‮more‬‏](https://hpbn.co/primer-on-web-performance/#analyzing-the-resource-waterfall)."
+  },
+  "lighthouse-core/audits/network-server-latency.js | title": {
+    "message": "‏‮Server‬‏ ‏‮Backend‬‏ ‏‮Latencies‬‏"
+  },
+  "lighthouse-core/audits/offline-start-url.js | description": {
+    "message": "‏‮A‬‏ ‏‮service‬‏ ‏‮worker‬‏ ‏‮enables‬‏ ‏‮your‬‏ ‏‮web‬‏ ‏‮app‬‏ ‏‮to‬‏ ‏‮be‬‏ ‏‮reliable‬‏ ‏‮in‬‏ ‏‮unpredictable‬‏ ‏‮network‬‏ ‏‮conditions‬‏. [‏‮Learn‬‏ ‏‮more‬‏](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)."
+  },
+  "lighthouse-core/audits/offline-start-url.js | failureTitle": {
+    "message": "`start_url` ‏‮does‬‏ ‏‮not‬‏ ‏‮respond‬‏ ‏‮with‬‏ ‏‮a‬‏ 200 ‏‮when‬‏ ‏‮offline‬‏"
+  },
+  "lighthouse-core/audits/offline-start-url.js | title": {
+    "message": "`start_url` ‏‮responds‬‏ ‏‮with‬‏ ‏‮a‬‏ 200 ‏‮when‬‏ ‏‮offline‬‏"
+  },
+  "lighthouse-core/audits/offline-start-url.js | warningCantStart": {
+    "message": "‏‮Lighthouse‬‏ ‏‮couldn‬‏'‏‮t‬‏ ‏‮read‬‏ ‏‮the‬‏ `start_url` ‏‮from‬‏ ‏‮the‬‏ ‏‮manifest‬‏. ‏‮As‬‏ ‏‮a‬‏ ‏‮result‬‏, ‏‮the‬‏ `start_url` ‏‮was‬‏ ‏‮assumed‬‏ ‏‮to‬‏ ‏‮be‬‏ ‏‮the‬‏ ‏‮document‬‏'‏‮s‬‏ ‏‮URL‬‏. ‏‮Error‬‏ ‏‮message‬‏: '{manifestWarning}'."
+  },
+  "lighthouse-core/audits/performance-budget.js | columnOverBudget": {
+    "message": "‏‮Over‬‏ ‏‮Budget‬‏"
+  },
+  "lighthouse-core/audits/performance-budget.js | description": {
+    "message": "‏‮Keep‬‏ ‏‮the‬‏ ‏‮quantity‬‏ ‏‮and‬‏ ‏‮size‬‏ ‏‮of‬‏ ‏‮network‬‏ ‏‮requests‬‏ ‏‮under‬‏ ‏‮the‬‏ ‏‮targets‬‏ ‏‮set‬‏ ‏‮by‬‏ ‏‮the‬‏ ‏‮provided‬‏ ‏‮performance‬‏ ‏‮budget‬‏. [‏‮Learn‬‏ ‏‮more‬‏](https://developers.google.com/web/tools/lighthouse/audits/budgets)."
+  },
+  "lighthouse-core/audits/performance-budget.js | requestCountOverBudget": {
+    "message": "{count,plural, =1{1 ‏‮request‬‏}zero{# ‏‮requests‬‏}two{# ‏‮requests‬‏}few{# ‏‮requests‬‏}many{# ‏‮requests‬‏}other{# ‏‮requests‬‏}}"
+  },
+  "lighthouse-core/audits/performance-budget.js | title": {
+    "message": "‏‮Performance‬‏ ‏‮budget‬‏"
+  },
+  "lighthouse-core/audits/redirects-http.js | description": {
+    "message": "‏‮If‬‏ ‏‮you‬‏'‏‮ve‬‏ ‏‮already‬‏ ‏‮set‬‏ ‏‮up‬‏ ‏‮HTTPS‬‏, ‏‮make‬‏ ‏‮sure‬‏ ‏‮that‬‏ ‏‮you‬‏ ‏‮redirect‬‏ ‏‮all‬‏ ‏‮HTTP‬‏ ‏‮traffic‬‏ ‏‮to‬‏ ‏‮HTTPS‬‏ ‏‮in‬‏ ‏‮order‬‏ ‏‮to‬‏ ‏‮enable‬‏ ‏‮secure‬‏ ‏‮web‬‏ ‏‮features‬‏ ‏‮for‬‏ ‏‮all‬‏ ‏‮your‬‏ ‏‮users‬‏. [‏‮Learn‬‏ ‏‮more‬‏](https://developers.google.com/web/tools/lighthouse/audits/http-redirects-to-https)."
+  },
+  "lighthouse-core/audits/redirects-http.js | failureTitle": {
+    "message": "‏‮Does‬‏ ‏‮not‬‏ ‏‮redirect‬‏ ‏‮HTTP‬‏ ‏‮traffic‬‏ ‏‮to‬‏ ‏‮HTTPS‬‏"
+  },
+  "lighthouse-core/audits/redirects-http.js | title": {
+    "message": "‏‮Redirects‬‏ ‏‮HTTP‬‏ ‏‮traffic‬‏ ‏‮to‬‏ ‏‮HTTPS‬‏"
+  },
+  "lighthouse-core/audits/redirects.js | description": {
+    "message": "‏‮Redirects‬‏ ‏‮introduce‬‏ ‏‮additional‬‏ ‏‮delays‬‏ ‏‮before‬‏ ‏‮the‬‏ ‏‮page‬‏ ‏‮can‬‏ ‏‮be‬‏ ‏‮loaded‬‏. [‏‮Learn‬‏ ‏‮more‬‏](https://developers.google.com/web/tools/lighthouse/audits/redirects)."
+  },
+  "lighthouse-core/audits/redirects.js | title": {
+    "message": "‏‮Avoid‬‏ ‏‮multiple‬‏ ‏‮page‬‏ ‏‮redirects‬‏"
+  },
+  "lighthouse-core/audits/resource-summary.js | description": {
+    "message": "‏‮To‬‏ ‏‮set‬‏ ‏‮budgets‬‏ ‏‮for‬‏ ‏‮the‬‏ ‏‮quantity‬‏ ‏‮and‬‏ ‏‮size‬‏ ‏‮of‬‏ ‏‮page‬‏ ‏‮resources‬‏, ‏‮add‬‏ ‏‮a‬‏ ‏‮budget‬‏.‏‮json‬‏ ‏‮file‬‏. [‏‮Learn‬‏ ‏‮more‬‏](https://developers.google.com/web/tools/lighthouse/audits/budgets)."
+  },
+  "lighthouse-core/audits/resource-summary.js | displayValue": {
+    "message": "{requestCount,plural, =1{1 ‏‮request‬‏ • {byteCount, number, bytes} ‏‮KB‬‏}zero{# ‏‮requests‬‏ • {byteCount, number, bytes} ‏‮KB‬‏}two{# ‏‮requests‬‏ • {byteCount, number, bytes} ‏‮KB‬‏}few{# ‏‮requests‬‏ • {byteCount, number, bytes} ‏‮KB‬‏}many{# ‏‮requests‬‏ • {byteCount, number, bytes} ‏‮KB‬‏}other{# ‏‮requests‬‏ • {byteCount, number, bytes} ‏‮KB‬‏}}"
+  },
+  "lighthouse-core/audits/resource-summary.js | title": {
+    "message": "‏‮Keep‬‏ ‏‮request‬‏ ‏‮counts‬‏ ‏‮low‬‏ ‏‮and‬‏ ‏‮transfer‬‏ ‏‮sizes‬‏ ‏‮small‬‏"
+  },
+  "lighthouse-core/audits/seo/canonical.js | description": {
+    "message": "‏‮Canonical‬‏ ‏‮links‬‏ ‏‮suggest‬‏ ‏‮which‬‏ ‏‮URL‬‏ ‏‮to‬‏ ‏‮show‬‏ ‏‮in‬‏ ‏‮search‬‏ ‏‮results‬‏. [‏‮Learn‬‏ ‏‮more‬‏](https://web.dev/canonical)."
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationConflict": {
+    "message": "‏‮Multiple‬‏ ‏‮conflicting‬‏ ‏‮URLs‬‏ ({urlList})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationDifferentDomain": {
+    "message": "‏‮Points‬‏ ‏‮to‬‏ ‏‮a‬‏ ‏‮different‬‏ ‏‮domain‬‏ ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationInvalid": {
+    "message": "‏‮Invalid‬‏ ‏‮URL‬‏ ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationPointsElsewhere": {
+    "message": "‏‮Points‬‏ ‏‮to‬‏ ‏‮another‬‏ `hreflang` ‏‮location‬‏ ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationRelative": {
+    "message": "‏‮Relative‬‏ ‏‮URL‬‏ ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationRoot": {
+    "message": "‏‮Points‬‏ ‏‮to‬‏ ‏‮the‬‏ ‏‮domain‬‏'‏‮s‬‏ ‏‮root‬‏ ‏‮URL‬‏ (‏‮the‬‏ ‏‮homepage‬‏), ‏‮instead‬‏ ‏‮of‬‏ ‏‮an‬‏ ‏‮equivalent‬‏ ‏‮page‬‏ ‏‮of‬‏ ‏‮content‬‏"
+  },
+  "lighthouse-core/audits/seo/canonical.js | failureTitle": {
+    "message": "‏‮Document‬‏ ‏‮does‬‏ ‏‮not‬‏ ‏‮have‬‏ ‏‮a‬‏ ‏‮valid‬‏ `rel=canonical`"
+  },
+  "lighthouse-core/audits/seo/canonical.js | title": {
+    "message": "‏‮Document‬‏ ‏‮has‬‏ ‏‮a‬‏ ‏‮valid‬‏ `rel=canonical`"
+  },
+  "lighthouse-core/audits/seo/font-size.js | description": {
+    "message": "‏‮Font‬‏ ‏‮sizes‬‏ ‏‮less‬‏ ‏‮than‬‏ 12‏‮px‬‏ ‏‮are‬‏ ‏‮too‬‏ ‏‮small‬‏ ‏‮to‬‏ ‏‮be‬‏ ‏‮legible‬‏ ‏‮and‬‏ ‏‮require‬‏ ‏‮mobile‬‏ ‏‮visitors‬‏ ‏‮to‬‏ “‏‮pinch‬‏ ‏‮to‬‏ ‏‮zoom‬‏” ‏‮in‬‏ ‏‮order‬‏ ‏‮to‬‏ ‏‮read‬‏. ‏‮Strive‬‏ ‏‮to‬‏ ‏‮have‬‏ >60% ‏‮of‬‏ ‏‮page‬‏ ‏‮text‬‏ ≥12‏‮px‬‏. [‏‮Learn‬‏ ‏‮more‬‏](https://web.dev/font-size)."
+  },
+  "lighthouse-core/audits/seo/font-size.js | displayValue": {
+    "message": "{decimalProportion, number, extendedPercent} ‏‮legible‬‏ ‏‮text‬‏"
+  },
+  "lighthouse-core/audits/seo/font-size.js | explanationViewport": {
+    "message": "‏‮Text‬‏ ‏‮is‬‏ ‏‮illegible‬‏ ‏‮because‬‏ ‏‮there‬‏'‏‮s‬‏ ‏‮no‬‏ ‏‮viewport‬‏ ‏‮meta‬‏ ‏‮tag‬‏ ‏‮optimized‬‏ ‏‮for‬‏ ‏‮mobile‬‏ ‏‮screens‬‏."
+  },
+  "lighthouse-core/audits/seo/font-size.js | explanationWithDisclaimer": {
+    "message": "{decimalProportion, number, extendedPercent} ‏‮of‬‏ ‏‮text‬‏ ‏‮is‬‏ ‏‮too‬‏ ‏‮small‬‏ (‏‮based‬‏ ‏‮on‬‏ {decimalProportionVisited, number, extendedPercent} ‏‮sample‬‏)."
+  },
+  "lighthouse-core/audits/seo/font-size.js | failureTitle": {
+    "message": "‏‮Document‬‏ ‏‮doesn‬‏'‏‮t‬‏ ‏‮use‬‏ ‏‮legible‬‏ ‏‮font‬‏ ‏‮sizes‬‏"
+  },
+  "lighthouse-core/audits/seo/font-size.js | title": {
+    "message": "‏‮Document‬‏ ‏‮uses‬‏ ‏‮legible‬‏ ‏‮font‬‏ ‏‮sizes‬‏"
+  },
+  "lighthouse-core/audits/seo/hreflang.js | description": {
+    "message": "‏‮hreflang‬‏ ‏‮links‬‏ ‏‮tell‬‏ ‏‮search‬‏ ‏‮engines‬‏ ‏‮what‬‏ ‏‮version‬‏ ‏‮of‬‏ ‏‮a‬‏ ‏‮page‬‏ ‏‮they‬‏ ‏‮should‬‏ ‏‮list‬‏ ‏‮in‬‏ ‏‮search‬‏ ‏‮results‬‏ ‏‮for‬‏ ‏‮a‬‏ ‏‮given‬‏ ‏‮language‬‏ ‏‮or‬‏ ‏‮region‬‏. [‏‮Learn‬‏ ‏‮more‬‏](https://web.dev/hreflang)."
+  },
+  "lighthouse-core/audits/seo/hreflang.js | failureTitle": {
+    "message": "‏‮Document‬‏ ‏‮doesn‬‏'‏‮t‬‏ ‏‮have‬‏ ‏‮a‬‏ ‏‮valid‬‏ `hreflang`"
+  },
+  "lighthouse-core/audits/seo/hreflang.js | title": {
+    "message": "‏‮Document‬‏ ‏‮has‬‏ ‏‮a‬‏ ‏‮valid‬‏ `hreflang`"
+  },
+  "lighthouse-core/audits/seo/http-status-code.js | description": {
+    "message": "‏‮Pages‬‏ ‏‮with‬‏ ‏‮unsuccessful‬‏ ‏‮HTTP‬‏ ‏‮status‬‏ ‏‮codes‬‏ ‏‮may‬‏ ‏‮not‬‏ ‏‮be‬‏ ‏‮indexed‬‏ ‏‮properly‬‏. [‏‮Learn‬‏ ‏‮more‬‏](https://web.dev/http-status-code)."
+  },
+  "lighthouse-core/audits/seo/http-status-code.js | failureTitle": {
+    "message": "‏‮Page‬‏ ‏‮has‬‏ ‏‮unsuccessful‬‏ ‏‮HTTP‬‏ ‏‮status‬‏ ‏‮code‬‏"
+  },
+  "lighthouse-core/audits/seo/http-status-code.js | title": {
+    "message": "‏‮Page‬‏ ‏‮has‬‏ ‏‮successful‬‏ ‏‮HTTP‬‏ ‏‮status‬‏ ‏‮code‬‏"
+  },
+  "lighthouse-core/audits/seo/is-crawlable.js | description": {
+    "message": "‏‮Search‬‏ ‏‮engines‬‏ ‏‮are‬‏ ‏‮unable‬‏ ‏‮to‬‏ ‏‮include‬‏ ‏‮your‬‏ ‏‮pages‬‏ ‏‮in‬‏ ‏‮search‬‏ ‏‮results‬‏ ‏‮if‬‏ ‏‮they‬‏ ‏‮don‬‏'‏‮t‬‏ ‏‮have‬‏ ‏‮permission‬‏ ‏‮to‬‏ ‏‮crawl‬‏ ‏‮them‬‏. [‏‮Learn‬‏ ‏‮more‬‏](https://web.dev/is-crawable)."
+  },
+  "lighthouse-core/audits/seo/is-crawlable.js | failureTitle": {
+    "message": "‏‮Page‬‏ ‏‮is‬‏ ‏‮blocked‬‏ ‏‮from‬‏ ‏‮indexing‬‏"
+  },
+  "lighthouse-core/audits/seo/is-crawlable.js | title": {
+    "message": "‏‮Page‬‏ ‏‮isn‬‏’‏‮t‬‏ ‏‮blocked‬‏ ‏‮from‬‏ ‏‮indexing‬‏"
+  },
+  "lighthouse-core/audits/seo/link-text.js | description": {
+    "message": "‏‮Descriptive‬‏ ‏‮link‬‏ ‏‮text‬‏ ‏‮helps‬‏ ‏‮search‬‏ ‏‮engines‬‏ ‏‮understand‬‏ ‏‮your‬‏ ‏‮content‬‏. [‏‮Learn‬‏ ‏‮more‬‏](https://web.dev/link-text)."
+  },
+  "lighthouse-core/audits/seo/link-text.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 ‏‮link‬‏ ‏‮found‬‏}zero{# ‏‮links‬‏ ‏‮found‬‏}two{# ‏‮links‬‏ ‏‮found‬‏}few{# ‏‮links‬‏ ‏‮found‬‏}many{# ‏‮links‬‏ ‏‮found‬‏}other{# ‏‮links‬‏ ‏‮found‬‏}}"
+  },
+  "lighthouse-core/audits/seo/link-text.js | failureTitle": {
+    "message": "‏‮Links‬‏ ‏‮do‬‏ ‏‮not‬‏ ‏‮have‬‏ ‏‮descriptive‬‏ ‏‮text‬‏"
+  },
+  "lighthouse-core/audits/seo/link-text.js | title": {
+    "message": "‏‮Links‬‏ ‏‮have‬‏ ‏‮descriptive‬‏ ‏‮text‬‏"
+  },
+  "lighthouse-core/audits/seo/manual/structured-data.js | description": {
+    "message": "‏‮Run‬‏ ‏‮the‬‏ [‏‮Structured‬‏ ‏‮Data‬‏ ‏‮Testing‬‏ ‏‮Tool‬‏](https://search.google.com/structured-data/testing-tool/) ‏‮and‬‏ ‏‮the‬‏ [‏‮Structured‬‏ ‏‮Data‬‏ ‏‮Linter‬‏](http://linter.structured-data.org/) ‏‮to‬‏ ‏‮validate‬‏ ‏‮structured‬‏ ‏‮data‬‏. [‏‮Learn‬‏ ‏‮more‬‏](https://web.dev/structured-data)."
+  },
+  "lighthouse-core/audits/seo/manual/structured-data.js | title": {
+    "message": "‏‮Structured‬‏ ‏‮data‬‏ ‏‮is‬‏ ‏‮valid‬‏"
+  },
+  "lighthouse-core/audits/seo/meta-description.js | description": {
+    "message": "‏‮Meta‬‏ ‏‮descriptions‬‏ ‏‮may‬‏ ‏‮be‬‏ ‏‮included‬‏ ‏‮in‬‏ ‏‮search‬‏ ‏‮results‬‏ ‏‮to‬‏ ‏‮concisely‬‏ ‏‮summarize‬‏ ‏‮page‬‏ ‏‮content‬‏. [‏‮Learn‬‏ ‏‮more‬‏](https://web.dev/meta-description)."
+  },
+  "lighthouse-core/audits/seo/meta-description.js | explanation": {
+    "message": "‏‮Description‬‏ ‏‮text‬‏ ‏‮is‬‏ ‏‮empty‬‏."
+  },
+  "lighthouse-core/audits/seo/meta-description.js | failureTitle": {
+    "message": "‏‮Document‬‏ ‏‮does‬‏ ‏‮not‬‏ ‏‮have‬‏ ‏‮a‬‏ ‏‮meta‬‏ ‏‮description‬‏"
+  },
+  "lighthouse-core/audits/seo/meta-description.js | title": {
+    "message": "‏‮Document‬‏ ‏‮has‬‏ ‏‮a‬‏ ‏‮meta‬‏ ‏‮description‬‏"
+  },
+  "lighthouse-core/audits/seo/plugins.js | description": {
+    "message": "‏‮Search‬‏ ‏‮engines‬‏ ‏‮can‬‏'‏‮t‬‏ ‏‮index‬‏ ‏‮plugin‬‏ ‏‮content‬‏, ‏‮and‬‏ ‏‮many‬‏ ‏‮devices‬‏ ‏‮restrict‬‏ ‏‮plugins‬‏ ‏‮or‬‏ ‏‮don‬‏'‏‮t‬‏ ‏‮support‬‏ ‏‮them‬‏. [‏‮Learn‬‏ ‏‮more‬‏](https://web.dev/plugins)."
+  },
+  "lighthouse-core/audits/seo/plugins.js | failureTitle": {
+    "message": "‏‮Document‬‏ ‏‮uses‬‏ ‏‮plugins‬‏"
+  },
+  "lighthouse-core/audits/seo/plugins.js | title": {
+    "message": "‏‮Document‬‏ ‏‮avoids‬‏ ‏‮plugins‬‏"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | description": {
+    "message": "‏‮If‬‏ ‏‮your‬‏ ‏‮robots‬‏.‏‮txt‬‏ ‏‮file‬‏ ‏‮is‬‏ ‏‮malformed‬‏, ‏‮crawlers‬‏ ‏‮may‬‏ ‏‮not‬‏ ‏‮be‬‏ ‏‮able‬‏ ‏‮to‬‏ ‏‮understand‬‏ ‏‮how‬‏ ‏‮you‬‏ ‏‮want‬‏ ‏‮your‬‏ ‏‮website‬‏ ‏‮to‬‏ ‏‮be‬‏ ‏‮crawled‬‏ ‏‮or‬‏ ‏‮indexed‬‏. [‏‮Learn‬‏ ‏‮more‬‏](https://web.dev/robots-txt)."
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | displayValueHttpBadCode": {
+    "message": "‏‮Request‬‏ ‏‮for‬‏ ‏‮robots‬‏.‏‮txt‬‏ ‏‮returned‬‏ ‏‮HTTP‬‏ ‏‮status‬‏: {statusCode}"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | displayValueValidationError": {
+    "message": "{itemCount,plural, =1{1 ‏‮error‬‏ ‏‮found‬‏}zero{# ‏‮errors‬‏ ‏‮found‬‏}two{# ‏‮errors‬‏ ‏‮found‬‏}few{# ‏‮errors‬‏ ‏‮found‬‏}many{# ‏‮errors‬‏ ‏‮found‬‏}other{# ‏‮errors‬‏ ‏‮found‬‏}}"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | explanation": {
+    "message": "‏‮Lighthouse‬‏ ‏‮was‬‏ ‏‮unable‬‏ ‏‮to‬‏ ‏‮download‬‏ ‏‮a‬‏ ‏‮robots‬‏.‏‮txt‬‏ ‏‮file‬‏"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | failureTitle": {
+    "message": "‏‮robots‬‏.‏‮txt‬‏ ‏‮is‬‏ ‏‮not‬‏ ‏‮valid‬‏"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | title": {
+    "message": "‏‮robots‬‏.‏‮txt‬‏ ‏‮is‬‏ ‏‮valid‬‏"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | description": {
+    "message": "‏‮Interactive‬‏ ‏‮elements‬‏ ‏‮like‬‏ ‏‮buttons‬‏ ‏‮and‬‏ ‏‮links‬‏ ‏‮should‬‏ ‏‮be‬‏ ‏‮large‬‏ ‏‮enough‬‏ (48‏‮x‬‏48‏‮px‬‏), ‏‮and‬‏ ‏‮have‬‏ ‏‮enough‬‏ ‏‮space‬‏ ‏‮around‬‏ ‏‮them‬‏, ‏‮to‬‏ ‏‮be‬‏ ‏‮easy‬‏ ‏‮enough‬‏ ‏‮to‬‏ ‏‮tap‬‏ ‏‮without‬‏ ‏‮overlapping‬‏ ‏‮onto‬‏ ‏‮other‬‏ ‏‮elements‬‏. [‏‮Learn‬‏ ‏‮more‬‏](https://web.dev/tap-targets)."
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | displayValue": {
+    "message": "{decimalProportion, number, percent} ‏‮appropriately‬‏ ‏‮sized‬‏ ‏‮tap‬‏ ‏‮targets‬‏"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | explanationViewportMetaNotOptimized": {
+    "message": "‏‮Tap‬‏ ‏‮targets‬‏ ‏‮are‬‏ ‏‮too‬‏ ‏‮small‬‏ ‏‮because‬‏ ‏‮there‬‏'‏‮s‬‏ ‏‮no‬‏ ‏‮viewport‬‏ ‏‮meta‬‏ ‏‮tag‬‏ ‏‮optimized‬‏ ‏‮for‬‏ ‏‮mobile‬‏ ‏‮screens‬‏"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | failureTitle": {
+    "message": "‏‮Tap‬‏ ‏‮targets‬‏ ‏‮are‬‏ ‏‮not‬‏ ‏‮sized‬‏ ‏‮appropriately‬‏"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | overlappingTargetHeader": {
+    "message": "‏‮Overlapping‬‏ ‏‮Target‬‏"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | tapTargetHeader": {
+    "message": "‏‮Tap‬‏ ‏‮Target‬‏"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | title": {
+    "message": "‏‮Tap‬‏ ‏‮targets‬‏ ‏‮are‬‏ ‏‮sized‬‏ ‏‮appropriately‬‏"
+  },
+  "lighthouse-core/audits/service-worker.js | description": {
+    "message": "‏‮The‬‏ ‏‮service‬‏ ‏‮worker‬‏ ‏‮is‬‏ ‏‮the‬‏ ‏‮technology‬‏ ‏‮that‬‏ ‏‮enables‬‏ ‏‮your‬‏ ‏‮app‬‏ ‏‮to‬‏ ‏‮use‬‏ ‏‮many‬‏ ‏‮Progressive‬‏ ‏‮Web‬‏ ‏‮App‬‏ ‏‮features‬‏, ‏‮such‬‏ ‏‮as‬‏ ‏‮offline‬‏, ‏‮add‬‏ ‏‮to‬‏ ‏‮homescreen‬‏, ‏‮and‬‏ ‏‮push‬‏ ‏‮notifications‬‏. [‏‮Learn‬‏ ‏‮more‬‏](https://developers.google.com/web/tools/lighthouse/audits/registered-service-worker)."
+  },
+  "lighthouse-core/audits/service-worker.js | explanationBadManifest": {
+    "message": "‏‮This‬‏ ‏‮page‬‏ ‏‮is‬‏ ‏‮controlled‬‏ ‏‮by‬‏ ‏‮a‬‏ ‏‮service‬‏ ‏‮worker‬‏, ‏‮however‬‏ ‏‮no‬‏ `start_url` ‏‮was‬‏ ‏‮found‬‏ ‏‮because‬‏ ‏‮manifest‬‏ ‏‮failed‬‏ ‏‮to‬‏ ‏‮parse‬‏ ‏‮as‬‏ ‏‮valid‬‏ ‏‮JSON‬‏"
+  },
+  "lighthouse-core/audits/service-worker.js | explanationBadStartUrl": {
+    "message": "‏‮This‬‏ ‏‮page‬‏ ‏‮is‬‏ ‏‮controlled‬‏ ‏‮by‬‏ ‏‮a‬‏ ‏‮service‬‏ ‏‮worker‬‏, ‏‮however‬‏ ‏‮the‬‏ `start_url` ({startUrl}) ‏‮is‬‏ ‏‮not‬‏ ‏‮in‬‏ ‏‮the‬‏ ‏‮service‬‏ ‏‮worker‬‏'‏‮s‬‏ ‏‮scope‬‏ ({scopeUrl})"
+  },
+  "lighthouse-core/audits/service-worker.js | explanationNoManifest": {
+    "message": "‏‮This‬‏ ‏‮page‬‏ ‏‮is‬‏ ‏‮controlled‬‏ ‏‮by‬‏ ‏‮a‬‏ ‏‮service‬‏ ‏‮worker‬‏, ‏‮however‬‏ ‏‮no‬‏ `start_url` ‏‮was‬‏ ‏‮found‬‏ ‏‮because‬‏ ‏‮no‬‏ ‏‮manifest‬‏ ‏‮was‬‏ ‏‮fetched‬‏."
+  },
+  "lighthouse-core/audits/service-worker.js | explanationOutOfScope": {
+    "message": "‏‮This‬‏ ‏‮origin‬‏ ‏‮has‬‏ ‏‮one‬‏ ‏‮or‬‏ ‏‮more‬‏ ‏‮service‬‏ ‏‮workers‬‏, ‏‮however‬‏ ‏‮the‬‏ ‏‮page‬‏ ({pageUrl}) ‏‮is‬‏ ‏‮not‬‏ ‏‮in‬‏ ‏‮scope‬‏."
+  },
+  "lighthouse-core/audits/service-worker.js | failureTitle": {
+    "message": "‏‮Does‬‏ ‏‮not‬‏ ‏‮register‬‏ ‏‮a‬‏ ‏‮service‬‏ ‏‮worker‬‏ ‏‮that‬‏ ‏‮controls‬‏ ‏‮page‬‏ ‏‮and‬‏ `start_url`"
+  },
+  "lighthouse-core/audits/service-worker.js | title": {
+    "message": "‏‮Registers‬‏ ‏‮a‬‏ ‏‮service‬‏ ‏‮worker‬‏ ‏‮that‬‏ ‏‮controls‬‏ ‏‮page‬‏ ‏‮and‬‏ `start_url`"
+  },
+  "lighthouse-core/audits/splash-screen.js | description": {
+    "message": "‏‮A‬‏ ‏‮themed‬‏ ‏‮splash‬‏ ‏‮screen‬‏ ‏‮ensures‬‏ ‏‮a‬‏ ‏‮high‬‏-‏‮quality‬‏ ‏‮experience‬‏ ‏‮when‬‏ ‏‮users‬‏ ‏‮launch‬‏ ‏‮your‬‏ ‏‮app‬‏ ‏‮from‬‏ ‏‮their‬‏ ‏‮homescreens‬‏. [‏‮Learn‬‏ ‏‮more‬‏](https://developers.google.com/web/tools/lighthouse/audits/custom-splash-screen)."
+  },
+  "lighthouse-core/audits/splash-screen.js | failureTitle": {
+    "message": "‏‮Is‬‏ ‏‮not‬‏ ‏‮configured‬‏ ‏‮for‬‏ ‏‮a‬‏ ‏‮custom‬‏ ‏‮splash‬‏ ‏‮screen‬‏"
+  },
+  "lighthouse-core/audits/splash-screen.js | title": {
+    "message": "‏‮Configured‬‏ ‏‮for‬‏ ‏‮a‬‏ ‏‮custom‬‏ ‏‮splash‬‏ ‏‮screen‬‏"
+  },
+  "lighthouse-core/audits/themed-omnibox.js | description": {
+    "message": "‏‮The‬‏ ‏‮browser‬‏ ‏‮address‬‏ ‏‮bar‬‏ ‏‮can‬‏ ‏‮be‬‏ ‏‮themed‬‏ ‏‮to‬‏ ‏‮match‬‏ ‏‮your‬‏ ‏‮site‬‏. [‏‮Learn‬‏ ‏‮more‬‏](https://developers.google.com/web/tools/lighthouse/audits/address-bar)."
+  },
+  "lighthouse-core/audits/themed-omnibox.js | failureTitle": {
+    "message": "‏‮Does‬‏ ‏‮not‬‏ ‏‮set‬‏ ‏‮a‬‏ ‏‮theme‬‏ ‏‮color‬‏ ‏‮for‬‏ ‏‮the‬‏ ‏‮address‬‏ ‏‮bar‬‏."
+  },
+  "lighthouse-core/audits/themed-omnibox.js | title": {
+    "message": "‏‮Sets‬‏ ‏‮a‬‏ ‏‮theme‬‏ ‏‮color‬‏ ‏‮for‬‏ ‏‮the‬‏ ‏‮address‬‏ ‏‮bar‬‏."
+  },
+  "lighthouse-core/audits/third-party-summary.js | columnBlockingTime": {
+    "message": "‏‮Main‬‏-‏‮Thread‬‏ ‏‮Blocking‬‏ ‏‮Time‬‏"
+  },
+  "lighthouse-core/audits/third-party-summary.js | columnThirdParty": {
+    "message": "‏‮Third‬‏-‏‮Party‬‏"
+  },
+  "lighthouse-core/audits/third-party-summary.js | description": {
+    "message": "‏‮Third‬‏-‏‮party‬‏ ‏‮code‬‏ ‏‮can‬‏ ‏‮significantly‬‏ ‏‮impact‬‏ ‏‮load‬‏ ‏‮performance‬‏. ‏‮Limit‬‏ ‏‮the‬‏ ‏‮number‬‏ ‏‮of‬‏ ‏‮redundant‬‏ ‏‮third‬‏-‏‮party‬‏ ‏‮providers‬‏ ‏‮and‬‏ ‏‮try‬‏ ‏‮to‬‏ ‏‮load‬‏ ‏‮third‬‏-‏‮party‬‏ ‏‮code‬‏ ‏‮after‬‏ ‏‮your‬‏ ‏‮page‬‏ ‏‮has‬‏ ‏‮primarily‬‏ ‏‮finished‬‏ ‏‮loading‬‏. [‏‮Learn‬‏ ‏‮more‬‏](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/loading-third-party-javascript/)."
+  },
+  "lighthouse-core/audits/third-party-summary.js | displayValue": {
+    "message": "‏‮Third‬‏-‏‮party‬‏ ‏‮code‬‏ ‏‮blocked‬‏ ‏‮the‬‏ ‏‮main‬‏ ‏‮thread‬‏ ‏‮for‬‏ {timeInMs, number, milliseconds} ‏‮ms‬‏"
+  },
+  "lighthouse-core/audits/third-party-summary.js | failureTitle": {
+    "message": "‏‮Reduce‬‏ ‏‮the‬‏ ‏‮impact‬‏ ‏‮of‬‏ ‏‮third‬‏-‏‮party‬‏ ‏‮code‬‏"
+  },
+  "lighthouse-core/audits/third-party-summary.js | title": {
+    "message": "‏‮Third‬‏-‏‮Party‬‏ ‏‮usage‬‏"
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | description": {
+    "message": "‏‮Time‬‏ ‏‮To‬‏ ‏‮First‬‏ ‏‮Byte‬‏ ‏‮identifies‬‏ ‏‮the‬‏ ‏‮time‬‏ ‏‮at‬‏ ‏‮which‬‏ ‏‮your‬‏ ‏‮server‬‏ ‏‮sends‬‏ ‏‮a‬‏ ‏‮response‬‏. [‏‮Learn‬‏ ‏‮more‬‏](https://developers.google.com/web/tools/lighthouse/audits/ttfb)."
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | displayValue": {
+    "message": "‏‮Root‬‏ ‏‮document‬‏ ‏‮took‬‏ {timeInMs, number, milliseconds} ‏‮ms‬‏"
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | failureTitle": {
+    "message": "‏‮Reduce‬‏ ‏‮server‬‏ ‏‮response‬‏ ‏‮times‬‏ (‏‮TTFB‬‏)"
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | title": {
+    "message": "‏‮Server‬‏ ‏‮response‬‏ ‏‮times‬‏ ‏‮are‬‏ ‏‮low‬‏ (‏‮TTFB‬‏)"
+  },
+  "lighthouse-core/audits/user-timings.js | columnDuration": {
+    "message": "‏‮Duration‬‏"
+  },
+  "lighthouse-core/audits/user-timings.js | columnStartTime": {
+    "message": "‏‮Start‬‏ ‏‮Time‬‏"
+  },
+  "lighthouse-core/audits/user-timings.js | columnType": {
+    "message": "‏‮Type‬‏"
+  },
+  "lighthouse-core/audits/user-timings.js | description": {
+    "message": "‏‮Consider‬‏ ‏‮instrumenting‬‏ ‏‮your‬‏ ‏‮app‬‏ ‏‮with‬‏ ‏‮the‬‏ ‏‮User‬‏ ‏‮Timing‬‏ ‏‮API‬‏ ‏‮to‬‏ ‏‮measure‬‏ ‏‮your‬‏ ‏‮app‬‏'‏‮s‬‏ ‏‮real‬‏-‏‮world‬‏ ‏‮performance‬‏ ‏‮during‬‏ ‏‮key‬‏ ‏‮user‬‏ ‏‮experiences‬‏. [‏‮Learn‬‏ ‏‮more‬‏](https://developers.google.com/web/tools/lighthouse/audits/user-timing)."
+  },
+  "lighthouse-core/audits/user-timings.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 ‏‮user‬‏ ‏‮timing‬‏}zero{# ‏‮user‬‏ ‏‮timings‬‏}two{# ‏‮user‬‏ ‏‮timings‬‏}few{# ‏‮user‬‏ ‏‮timings‬‏}many{# ‏‮user‬‏ ‏‮timings‬‏}other{# ‏‮user‬‏ ‏‮timings‬‏}}"
+  },
+  "lighthouse-core/audits/user-timings.js | title": {
+    "message": "‏‮User‬‏ ‏‮Timing‬‏ ‏‮marks‬‏ ‏‮and‬‏ ‏‮measures‬‏"
+  },
+  "lighthouse-core/audits/uses-rel-preconnect.js | crossoriginWarning": {
+    "message": "‏‮A‬‏ ‏‮preconnect‬‏ <link> ‏‮was‬‏ ‏‮found‬‏ ‏‮for‬‏ \"{securityOrigin}\" ‏‮but‬‏ ‏‮was‬‏ ‏‮not‬‏ ‏‮used‬‏ ‏‮by‬‏ ‏‮the‬‏ ‏‮browser‬‏. ‏‮Check‬‏ ‏‮that‬‏ ‏‮you‬‏ ‏‮are‬‏ ‏‮using‬‏ ‏‮the‬‏ `crossorigin` ‏‮attribute‬‏ ‏‮properly‬‏."
+  },
+  "lighthouse-core/audits/uses-rel-preconnect.js | description": {
+    "message": "‏‮Consider‬‏ ‏‮adding‬‏ `preconnect` ‏‮or‬‏ `dns-prefetch` ‏‮resource‬‏ ‏‮hints‬‏ ‏‮to‬‏ ‏‮establish‬‏ ‏‮early‬‏ ‏‮connections‬‏ ‏‮to‬‏ ‏‮important‬‏ ‏‮third‬‏-‏‮party‬‏ ‏‮origins‬‏. [‏‮Learn‬‏ ‏‮more‬‏](https://developers.google.com/web/fundamentals/performance/resource-prioritization#preconnect)."
+  },
+  "lighthouse-core/audits/uses-rel-preconnect.js | title": {
+    "message": "‏‮Preconnect‬‏ ‏‮to‬‏ ‏‮required‬‏ ‏‮origins‬‏"
+  },
+  "lighthouse-core/audits/uses-rel-preload.js | crossoriginWarning": {
+    "message": "‏‮A‬‏ ‏‮preload‬‏ <link> ‏‮was‬‏ ‏‮found‬‏ ‏‮for‬‏ \"{preloadURL}\" ‏‮but‬‏ ‏‮was‬‏ ‏‮not‬‏ ‏‮used‬‏ ‏‮by‬‏ ‏‮the‬‏ ‏‮browser‬‏. ‏‮Check‬‏ ‏‮that‬‏ ‏‮you‬‏ ‏‮are‬‏ ‏‮using‬‏ ‏‮the‬‏ `crossorigin` ‏‮attribute‬‏ ‏‮properly‬‏."
+  },
+  "lighthouse-core/audits/uses-rel-preload.js | description": {
+    "message": "‏‮Consider‬‏ ‏‮using‬‏ `<link rel=preload>` ‏‮to‬‏ ‏‮prioritize‬‏ ‏‮fetching‬‏ ‏‮resources‬‏ ‏‮that‬‏ ‏‮are‬‏ ‏‮currently‬‏ ‏‮requested‬‏ ‏‮later‬‏ ‏‮in‬‏ ‏‮page‬‏ ‏‮load‬‏. [‏‮Learn‬‏ ‏‮more‬‏](https://developers.google.com/web/tools/lighthouse/audits/preload)."
+  },
+  "lighthouse-core/audits/uses-rel-preload.js | title": {
+    "message": "‏‮Preload‬‏ ‏‮key‬‏ ‏‮requests‬‏"
+  },
+  "lighthouse-core/audits/viewport.js | description": {
+    "message": "‏‮Add‬‏ ‏‮a‬‏ `<meta name=\"viewport\">` ‏‮tag‬‏ ‏‮to‬‏ ‏‮optimize‬‏ ‏‮your‬‏ ‏‮app‬‏ ‏‮for‬‏ ‏‮mobile‬‏ ‏‮screens‬‏. [‏‮Learn‬‏ ‏‮more‬‏](https://developers.google.com/web/tools/lighthouse/audits/has-viewport-meta-tag)."
+  },
+  "lighthouse-core/audits/viewport.js | explanationNoTag": {
+    "message": "‏‮No‬‏ `<meta name=\"viewport\">` ‏‮tag‬‏ ‏‮found‬‏"
+  },
+  "lighthouse-core/audits/viewport.js | failureTitle": {
+    "message": "‏‮Does‬‏ ‏‮not‬‏ ‏‮have‬‏ ‏‮a‬‏ `<meta name=\"viewport\">` ‏‮tag‬‏ ‏‮with‬‏ `width` ‏‮or‬‏ `initial-scale`"
+  },
+  "lighthouse-core/audits/viewport.js | title": {
+    "message": "‏‮Has‬‏ ‏‮a‬‏ `<meta name=\"viewport\">` ‏‮tag‬‏ ‏‮with‬‏ `width` ‏‮or‬‏ `initial-scale`"
+  },
+  "lighthouse-core/audits/without-javascript.js | description": {
+    "message": "‏‮Your‬‏ ‏‮app‬‏ ‏‮should‬‏ ‏‮display‬‏ ‏‮some‬‏ ‏‮content‬‏ ‏‮when‬‏ ‏‮JavaScript‬‏ ‏‮is‬‏ ‏‮disabled‬‏, ‏‮even‬‏ ‏‮if‬‏ ‏‮it‬‏'‏‮s‬‏ ‏‮just‬‏ ‏‮a‬‏ ‏‮warning‬‏ ‏‮to‬‏ ‏‮the‬‏ ‏‮user‬‏ ‏‮that‬‏ ‏‮JavaScript‬‏ ‏‮is‬‏ ‏‮required‬‏ ‏‮to‬‏ ‏‮use‬‏ ‏‮the‬‏ ‏‮app‬‏. [‏‮Learn‬‏ ‏‮more‬‏](https://developers.google.com/web/tools/lighthouse/audits/no-js)."
+  },
+  "lighthouse-core/audits/without-javascript.js | explanation": {
+    "message": "‏‮The‬‏ ‏‮page‬‏ ‏‮body‬‏ ‏‮should‬‏ ‏‮render‬‏ ‏‮some‬‏ ‏‮content‬‏ ‏‮if‬‏ ‏‮its‬‏ ‏‮scripts‬‏ ‏‮are‬‏ ‏‮not‬‏ ‏‮available‬‏."
+  },
+  "lighthouse-core/audits/without-javascript.js | failureTitle": {
+    "message": "‏‮Does‬‏ ‏‮not‬‏ ‏‮provide‬‏ ‏‮fallback‬‏ ‏‮content‬‏ ‏‮when‬‏ ‏‮JavaScript‬‏ ‏‮is‬‏ ‏‮not‬‏ ‏‮available‬‏"
+  },
+  "lighthouse-core/audits/without-javascript.js | title": {
+    "message": "‏‮Contains‬‏ ‏‮some‬‏ ‏‮content‬‏ ‏‮when‬‏ ‏‮JavaScript‬‏ ‏‮is‬‏ ‏‮not‬‏ ‏‮available‬‏"
+  },
+  "lighthouse-core/audits/works-offline.js | description": {
+    "message": "‏‮If‬‏ ‏‮you‬‏'‏‮re‬‏ ‏‮building‬‏ ‏‮a‬‏ ‏‮Progressive‬‏ ‏‮Web‬‏ ‏‮App‬‏, ‏‮consider‬‏ ‏‮using‬‏ ‏‮a‬‏ ‏‮service‬‏ ‏‮worker‬‏ ‏‮so‬‏ ‏‮that‬‏ ‏‮your‬‏ ‏‮app‬‏ ‏‮can‬‏ ‏‮work‬‏ ‏‮offline‬‏. [‏‮Learn‬‏ ‏‮more‬‏](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)."
+  },
+  "lighthouse-core/audits/works-offline.js | failureTitle": {
+    "message": "‏‮Current‬‏ ‏‮page‬‏ ‏‮does‬‏ ‏‮not‬‏ ‏‮respond‬‏ ‏‮with‬‏ ‏‮a‬‏ 200 ‏‮when‬‏ ‏‮offline‬‏"
+  },
+  "lighthouse-core/audits/works-offline.js | title": {
+    "message": "‏‮Current‬‏ ‏‮page‬‏ ‏‮responds‬‏ ‏‮with‬‏ ‏‮a‬‏ 200 ‏‮when‬‏ ‏‮offline‬‏"
+  },
+  "lighthouse-core/audits/works-offline.js | warningNoLoad": {
+    "message": "‏‮The‬‏ ‏‮page‬‏ ‏‮may‬‏ ‏‮not‬‏ ‏‮be‬‏ ‏‮loading‬‏ ‏‮offline‬‏ ‏‮because‬‏ ‏‮your‬‏ ‏‮test‬‏ ‏‮URL‬‏ ({requested}) ‏‮was‬‏ ‏‮redirected‬‏ ‏‮to‬‏ \"{final}\". ‏‮Try‬‏ ‏‮testing‬‏ ‏‮the‬‏ ‏‮second‬‏ ‏‮URL‬‏ ‏‮directly‬‏."
+  },
+  "lighthouse-core/config/default-config.js | a11yAriaGroupDescription": {
+    "message": "‏‮These‬‏ ‏‮are‬‏ ‏‮opportunities‬‏ ‏‮to‬‏ ‏‮improve‬‏ ‏‮the‬‏ ‏‮usage‬‏ ‏‮of‬‏ ‏‮ARIA‬‏ ‏‮in‬‏ ‏‮your‬‏ ‏‮application‬‏ ‏‮which‬‏ ‏‮may‬‏ ‏‮enhance‬‏ ‏‮the‬‏ ‏‮experience‬‏ ‏‮for‬‏ ‏‮users‬‏ ‏‮of‬‏ ‏‮assistive‬‏ ‏‮technology‬‏, ‏‮like‬‏ ‏‮a‬‏ ‏‮screen‬‏ ‏‮reader‬‏."
+  },
+  "lighthouse-core/config/default-config.js | a11yAriaGroupTitle": {
+    "message": "‏‮ARIA‬‏"
+  },
+  "lighthouse-core/config/default-config.js | a11yAudioVideoGroupDescription": {
+    "message": "‏‮These‬‏ ‏‮are‬‏ ‏‮opportunities‬‏ ‏‮to‬‏ ‏‮provide‬‏ ‏‮alternative‬‏ ‏‮content‬‏ ‏‮for‬‏ ‏‮audio‬‏ ‏‮and‬‏ ‏‮video‬‏. ‏‮This‬‏ ‏‮may‬‏ ‏‮improve‬‏ ‏‮the‬‏ ‏‮experience‬‏ ‏‮for‬‏ ‏‮users‬‏ ‏‮with‬‏ ‏‮hearing‬‏ ‏‮or‬‏ ‏‮vision‬‏ ‏‮impairments‬‏."
+  },
+  "lighthouse-core/config/default-config.js | a11yAudioVideoGroupTitle": {
+    "message": "‏‮Audio‬‏ ‏‮and‬‏ ‏‮video‬‏"
+  },
+  "lighthouse-core/config/default-config.js | a11yBestPracticesGroupDescription": {
+    "message": "‏‮These‬‏ ‏‮items‬‏ ‏‮highlight‬‏ ‏‮common‬‏ ‏‮accessibility‬‏ ‏‮best‬‏ ‏‮practices‬‏."
+  },
+  "lighthouse-core/config/default-config.js | a11yBestPracticesGroupTitle": {
+    "message": "‏‮Best‬‏ ‏‮practices‬‏"
+  },
+  "lighthouse-core/config/default-config.js | a11yCategoryDescription": {
+    "message": "‏‮These‬‏ ‏‮checks‬‏ ‏‮highlight‬‏ ‏‮opportunities‬‏ ‏‮to‬‏ [‏‮improve‬‏ ‏‮the‬‏ ‏‮accessibility‬‏ ‏‮of‬‏ ‏‮your‬‏ ‏‮web‬‏ ‏‮app‬‏](https://developers.google.com/web/fundamentals/accessibility). ‏‮Only‬‏ ‏‮a‬‏ ‏‮subset‬‏ ‏‮of‬‏ ‏‮accessibility‬‏ ‏‮issues‬‏ ‏‮can‬‏ ‏‮be‬‏ ‏‮automatically‬‏ ‏‮detected‬‏ ‏‮so‬‏ ‏‮manual‬‏ ‏‮testing‬‏ ‏‮is‬‏ ‏‮also‬‏ ‏‮encouraged‬‏."
+  },
+  "lighthouse-core/config/default-config.js | a11yCategoryManualDescription": {
+    "message": "‏‮These‬‏ ‏‮items‬‏ ‏‮address‬‏ ‏‮areas‬‏ ‏‮which‬‏ ‏‮an‬‏ ‏‮automated‬‏ ‏‮testing‬‏ ‏‮tool‬‏ ‏‮cannot‬‏ ‏‮cover‬‏. ‏‮Learn‬‏ ‏‮more‬‏ ‏‮in‬‏ ‏‮our‬‏ ‏‮guide‬‏ ‏‮on‬‏ [‏‮conducting‬‏ ‏‮an‬‏ ‏‮accessibility‬‏ ‏‮review‬‏](https://developers.google.com/web/fundamentals/accessibility/how-to-review)."
+  },
+  "lighthouse-core/config/default-config.js | a11yCategoryTitle": {
+    "message": "‏‮Accessibility‬‏"
+  },
+  "lighthouse-core/config/default-config.js | a11yColorContrastGroupDescription": {
+    "message": "‏‮These‬‏ ‏‮are‬‏ ‏‮opportunities‬‏ ‏‮to‬‏ ‏‮improve‬‏ ‏‮the‬‏ ‏‮legibility‬‏ ‏‮of‬‏ ‏‮your‬‏ ‏‮content‬‏."
+  },
+  "lighthouse-core/config/default-config.js | a11yColorContrastGroupTitle": {
+    "message": "‏‮Contrast‬‏"
+  },
+  "lighthouse-core/config/default-config.js | a11yLanguageGroupDescription": {
+    "message": "‏‮These‬‏ ‏‮are‬‏ ‏‮opportunities‬‏ ‏‮to‬‏ ‏‮improve‬‏ ‏‮the‬‏ ‏‮interpretation‬‏ ‏‮of‬‏ ‏‮your‬‏ ‏‮content‬‏ ‏‮by‬‏ ‏‮users‬‏ ‏‮in‬‏ ‏‮different‬‏ ‏‮locales‬‏."
+  },
+  "lighthouse-core/config/default-config.js | a11yLanguageGroupTitle": {
+    "message": "‏‮Internationalization‬‏ ‏‮and‬‏ ‏‮localization‬‏"
+  },
+  "lighthouse-core/config/default-config.js | a11yNamesLabelsGroupDescription": {
+    "message": "‏‮These‬‏ ‏‮are‬‏ ‏‮opportunities‬‏ ‏‮to‬‏ ‏‮improve‬‏ ‏‮the‬‏ ‏‮semantics‬‏ ‏‮of‬‏ ‏‮the‬‏ ‏‮controls‬‏ ‏‮in‬‏ ‏‮your‬‏ ‏‮application‬‏. ‏‮This‬‏ ‏‮may‬‏ ‏‮enhance‬‏ ‏‮the‬‏ ‏‮experience‬‏ ‏‮for‬‏ ‏‮users‬‏ ‏‮of‬‏ ‏‮assistive‬‏ ‏‮technology‬‏, ‏‮like‬‏ ‏‮a‬‏ ‏‮screen‬‏ ‏‮reader‬‏."
+  },
+  "lighthouse-core/config/default-config.js | a11yNamesLabelsGroupTitle": {
+    "message": "‏‮Names‬‏ ‏‮and‬‏ ‏‮labels‬‏"
+  },
+  "lighthouse-core/config/default-config.js | a11yNavigationGroupDescription": {
+    "message": "‏‮These‬‏ ‏‮are‬‏ ‏‮opportunities‬‏ ‏‮to‬‏ ‏‮improve‬‏ ‏‮keyboard‬‏ ‏‮navigation‬‏ ‏‮in‬‏ ‏‮your‬‏ ‏‮application‬‏."
+  },
+  "lighthouse-core/config/default-config.js | a11yNavigationGroupTitle": {
+    "message": "‏‮Navigation‬‏"
+  },
+  "lighthouse-core/config/default-config.js | a11yTablesListsVideoGroupDescription": {
+    "message": "‏‮These‬‏ ‏‮are‬‏ ‏‮opportunities‬‏ ‏‮to‬‏ ‏‮to‬‏ ‏‮improve‬‏ ‏‮the‬‏ ‏‮experience‬‏ ‏‮of‬‏ ‏‮reading‬‏ ‏‮tabular‬‏ ‏‮or‬‏ ‏‮list‬‏ ‏‮data‬‏ ‏‮using‬‏ ‏‮assistive‬‏ ‏‮technology‬‏, ‏‮like‬‏ ‏‮a‬‏ ‏‮screen‬‏ ‏‮reader‬‏."
+  },
+  "lighthouse-core/config/default-config.js | a11yTablesListsVideoGroupTitle": {
+    "message": "‏‮Tables‬‏ ‏‮and‬‏ ‏‮lists‬‏"
+  },
+  "lighthouse-core/config/default-config.js | bestPracticesCategoryTitle": {
+    "message": "‏‮Best‬‏ ‏‮Practices‬‏"
+  },
+  "lighthouse-core/config/default-config.js | budgetsGroupDescription": {
+    "message": "‏‮Performance‬‏ ‏‮budgets‬‏ ‏‮set‬‏ ‏‮standards‬‏ ‏‮for‬‏ ‏‮the‬‏ ‏‮performance‬‏ ‏‮of‬‏ ‏‮your‬‏ ‏‮site‬‏."
+  },
+  "lighthouse-core/config/default-config.js | budgetsGroupTitle": {
+    "message": "‏‮Budgets‬‏"
+  },
+  "lighthouse-core/config/default-config.js | diagnosticsGroupDescription": {
+    "message": "‏‮More‬‏ ‏‮information‬‏ ‏‮about‬‏ ‏‮the‬‏ ‏‮performance‬‏ ‏‮of‬‏ ‏‮your‬‏ ‏‮application‬‏. ‏‮These‬‏ ‏‮numbers‬‏ ‏‮don‬‏'‏‮t‬‏ [‏‮directly‬‏ ‏‮affect‬‏](https://github.com/GoogleChrome/lighthouse/blob/d2ec9ffbb21de9ad1a0f86ed24575eda32c796f0/docs/scoring.md#how-are-the-scores-weighted) ‏‮the‬‏ ‏‮Performance‬‏ ‏‮score‬‏."
+  },
+  "lighthouse-core/config/default-config.js | diagnosticsGroupTitle": {
+    "message": "‏‮Diagnostics‬‏"
+  },
+  "lighthouse-core/config/default-config.js | firstPaintImprovementsGroupDescription": {
+    "message": "‏‮The‬‏ ‏‮most‬‏ ‏‮critical‬‏ ‏‮aspect‬‏ ‏‮of‬‏ ‏‮performance‬‏ ‏‮is‬‏ ‏‮how‬‏ ‏‮quickly‬‏ ‏‮pixels‬‏ ‏‮are‬‏ ‏‮rendered‬‏ ‏‮onscreen‬‏. ‏‮Key‬‏ ‏‮metrics‬‏: ‏‮First‬‏ ‏‮Contentful‬‏ ‏‮Paint‬‏, ‏‮First‬‏ ‏‮Meaningful‬‏ ‏‮Paint‬‏"
+  },
+  "lighthouse-core/config/default-config.js | firstPaintImprovementsGroupTitle": {
+    "message": "‏‮First‬‏ ‏‮Paint‬‏ ‏‮Improvements‬‏"
+  },
+  "lighthouse-core/config/default-config.js | loadOpportunitiesGroupDescription": {
+    "message": "‏‮These‬‏ ‏‮suggestions‬‏ ‏‮can‬‏ ‏‮help‬‏ ‏‮your‬‏ ‏‮page‬‏ ‏‮load‬‏ ‏‮faster‬‏. ‏‮They‬‏ ‏‮don‬‏'‏‮t‬‏ [‏‮directly‬‏ ‏‮affect‬‏](https://github.com/GoogleChrome/lighthouse/blob/d2ec9ffbb21de9ad1a0f86ed24575eda32c796f0/docs/scoring.md#how-are-the-scores-weighted) ‏‮the‬‏ ‏‮Performance‬‏ ‏‮score‬‏."
+  },
+  "lighthouse-core/config/default-config.js | loadOpportunitiesGroupTitle": {
+    "message": "‏‮Opportunities‬‏"
+  },
+  "lighthouse-core/config/default-config.js | metricGroupTitle": {
+    "message": "‏‮Metrics‬‏"
+  },
+  "lighthouse-core/config/default-config.js | overallImprovementsGroupDescription": {
+    "message": "‏‮Enhance‬‏ ‏‮the‬‏ ‏‮overall‬‏ ‏‮loading‬‏ ‏‮experience‬‏, ‏‮so‬‏ ‏‮the‬‏ ‏‮page‬‏ ‏‮is‬‏ ‏‮responsive‬‏ ‏‮and‬‏ ‏‮ready‬‏ ‏‮to‬‏ ‏‮use‬‏ ‏‮as‬‏ ‏‮soon‬‏ ‏‮as‬‏ ‏‮possible‬‏. ‏‮Key‬‏ ‏‮metrics‬‏: ‏‮Time‬‏ ‏‮to‬‏ ‏‮Interactive‬‏, ‏‮Speed‬‏ ‏‮Index‬‏"
+  },
+  "lighthouse-core/config/default-config.js | overallImprovementsGroupTitle": {
+    "message": "‏‮Overall‬‏ ‏‮Improvements‬‏"
+  },
+  "lighthouse-core/config/default-config.js | performanceCategoryTitle": {
+    "message": "‏‮Performance‬‏"
+  },
+  "lighthouse-core/config/default-config.js | pwaCategoryDescription": {
+    "message": "‏‮These‬‏ ‏‮checks‬‏ ‏‮validate‬‏ ‏‮the‬‏ ‏‮aspects‬‏ ‏‮of‬‏ ‏‮a‬‏ ‏‮Progressive‬‏ ‏‮Web‬‏ ‏‮App‬‏. [‏‮Learn‬‏ ‏‮more‬‏](https://developers.google.com/web/progressive-web-apps/checklist)."
+  },
+  "lighthouse-core/config/default-config.js | pwaCategoryManualDescription": {
+    "message": "‏‮These‬‏ ‏‮checks‬‏ ‏‮are‬‏ ‏‮required‬‏ ‏‮by‬‏ ‏‮the‬‏ ‏‮baseline‬‏ [‏‮PWA‬‏ ‏‮Checklist‬‏](https://developers.google.com/web/progressive-web-apps/checklist) ‏‮but‬‏ ‏‮are‬‏ ‏‮not‬‏ ‏‮automatically‬‏ ‏‮checked‬‏ ‏‮by‬‏ ‏‮Lighthouse‬‏. ‏‮They‬‏ ‏‮do‬‏ ‏‮not‬‏ ‏‮affect‬‏ ‏‮your‬‏ ‏‮score‬‏ ‏‮but‬‏ ‏‮it‬‏'‏‮s‬‏ ‏‮important‬‏ ‏‮that‬‏ ‏‮you‬‏ ‏‮verify‬‏ ‏‮them‬‏ ‏‮manually‬‏."
+  },
+  "lighthouse-core/config/default-config.js | pwaCategoryTitle": {
+    "message": "‏‮Progressive‬‏ ‏‮Web‬‏ ‏‮App‬‏"
+  },
+  "lighthouse-core/config/default-config.js | pwaFastReliableGroupTitle": {
+    "message": "‏‮Fast‬‏ ‏‮and‬‏ ‏‮reliable‬‏"
+  },
+  "lighthouse-core/config/default-config.js | pwaInstallableGroupTitle": {
+    "message": "‏‮Installable‬‏"
+  },
+  "lighthouse-core/config/default-config.js | pwaOptimizedGroupTitle": {
+    "message": "‏‮PWA‬‏ ‏‮Optimized‬‏"
+  },
+  "lighthouse-core/config/default-config.js | seoCategoryDescription": {
+    "message": "‏‮These‬‏ ‏‮checks‬‏ ‏‮ensure‬‏ ‏‮that‬‏ ‏‮your‬‏ ‏‮page‬‏ ‏‮is‬‏ ‏‮optimized‬‏ ‏‮for‬‏ ‏‮search‬‏ ‏‮engine‬‏ ‏‮results‬‏ ‏‮ranking‬‏. ‏‮There‬‏ ‏‮are‬‏ ‏‮additional‬‏ ‏‮factors‬‏ ‏‮Lighthouse‬‏ ‏‮does‬‏ ‏‮not‬‏ ‏‮check‬‏ ‏‮that‬‏ ‏‮may‬‏ ‏‮affect‬‏ ‏‮your‬‏ ‏‮search‬‏ ‏‮ranking‬‏. [‏‮Learn‬‏ ‏‮more‬‏](https://support.google.com/webmasters/answer/35769)."
+  },
+  "lighthouse-core/config/default-config.js | seoCategoryManualDescription": {
+    "message": "‏‮Run‬‏ ‏‮these‬‏ ‏‮additional‬‏ ‏‮validators‬‏ ‏‮on‬‏ ‏‮your‬‏ ‏‮site‬‏ ‏‮to‬‏ ‏‮check‬‏ ‏‮additional‬‏ ‏‮SEO‬‏ ‏‮best‬‏ ‏‮practices‬‏."
+  },
+  "lighthouse-core/config/default-config.js | seoCategoryTitle": {
+    "message": "‏‮SEO‬‏"
+  },
+  "lighthouse-core/config/default-config.js | seoContentGroupDescription": {
+    "message": "‏‮Format‬‏ ‏‮your‬‏ ‏‮HTML‬‏ ‏‮in‬‏ ‏‮a‬‏ ‏‮way‬‏ ‏‮that‬‏ ‏‮enables‬‏ ‏‮crawlers‬‏ ‏‮to‬‏ ‏‮better‬‏ ‏‮understand‬‏ ‏‮your‬‏ ‏‮app‬‏’‏‮s‬‏ ‏‮content‬‏."
+  },
+  "lighthouse-core/config/default-config.js | seoContentGroupTitle": {
+    "message": "‏‮Content‬‏ ‏‮Best‬‏ ‏‮Practices‬‏"
+  },
+  "lighthouse-core/config/default-config.js | seoCrawlingGroupDescription": {
+    "message": "‏‮To‬‏ ‏‮appear‬‏ ‏‮in‬‏ ‏‮search‬‏ ‏‮results‬‏, ‏‮crawlers‬‏ ‏‮need‬‏ ‏‮access‬‏ ‏‮to‬‏ ‏‮your‬‏ ‏‮app‬‏."
+  },
+  "lighthouse-core/config/default-config.js | seoCrawlingGroupTitle": {
+    "message": "‏‮Crawling‬‏ ‏‮and‬‏ ‏‮Indexing‬‏"
+  },
+  "lighthouse-core/config/default-config.js | seoMobileGroupDescription": {
+    "message": "‏‮Make‬‏ ‏‮sure‬‏ ‏‮your‬‏ ‏‮pages‬‏ ‏‮are‬‏ ‏‮mobile‬‏ ‏‮friendly‬‏ ‏‮so‬‏ ‏‮users‬‏ ‏‮don‬‏’‏‮t‬‏ ‏‮have‬‏ ‏‮to‬‏ ‏‮pinch‬‏ ‏‮or‬‏ ‏‮zoom‬‏ ‏‮in‬‏ ‏‮order‬‏ ‏‮to‬‏ ‏‮read‬‏ ‏‮the‬‏ ‏‮content‬‏ ‏‮pages‬‏. [‏‮Learn‬‏ ‏‮more‬‏](https://developers.google.com/search/mobile-sites/)."
+  },
+  "lighthouse-core/config/default-config.js | seoMobileGroupTitle": {
+    "message": "‏‮Mobile‬‏ ‏‮Friendly‬‏"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnCacheTTL": {
+    "message": "‏‮Cache‬‏ ‏‮TTL‬‏"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnLocation": {
+    "message": "‏‮Location‬‏"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnName": {
+    "message": "‏‮Name‬‏"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnRequests": {
+    "message": "‏‮Requests‬‏"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnResourceType": {
+    "message": "‏‮Resource‬‏ ‏‮Type‬‏"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnSize": {
+    "message": "‏‮Size‬‏"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnTimeSpent": {
+    "message": "‏‮Time‬‏ ‏‮Spent‬‏"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnTransferSize": {
+    "message": "‏‮Transfer‬‏ ‏‮Size‬‏"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnURL": {
+    "message": "‏‮URL‬‏"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnWastedBytes": {
+    "message": "‏‮Potential‬‏ ‏‮Savings‬‏"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnWastedMs": {
+    "message": "‏‮Potential‬‏ ‏‮Savings‬‏"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | displayValueByteSavings": {
+    "message": "‏‮Potential‬‏ ‏‮savings‬‏ ‏‮of‬‏ {wastedBytes, number, bytes} ‏‮KB‬‏"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | displayValueMsSavings": {
+    "message": "‏‮Potential‬‏ ‏‮savings‬‏ ‏‮of‬‏ {wastedMs, number, milliseconds} ‏‮ms‬‏"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | documentResourceType": {
+    "message": "‏‮Document‬‏"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | fontResourceType": {
+    "message": "‏‮Font‬‏"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | imageResourceType": {
+    "message": "‏‮Image‬‏"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | mediaResourceType": {
+    "message": "‏‮Media‬‏"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | ms": {
+    "message": "{timeInMs, number, milliseconds} ‏‮ms‬‏"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | otherResourceType": {
+    "message": "‏‮Other‬‏"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | scriptResourceType": {
+    "message": "‏‮Script‬‏"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | seconds": {
+    "message": "{timeInMs, number, seconds} ‏‮s‬‏"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | stylesheetResourceType": {
+    "message": "‏‮Stylesheet‬‏"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | thirdPartyResourceType": {
+    "message": "‏‮Third‬‏-‏‮party‬‏"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | totalResourceType": {
+    "message": "‏‮Total‬‏"
+  },
+  "lighthouse-core/lib/lh-error.js | badTraceRecording": {
+    "message": "‏‮Something‬‏ ‏‮went‬‏ ‏‮wrong‬‏ ‏‮with‬‏ ‏‮recording‬‏ ‏‮the‬‏ ‏‮trace‬‏ ‏‮over‬‏ ‏‮your‬‏ ‏‮page‬‏ ‏‮load‬‏. ‏‮Please‬‏ ‏‮run‬‏ ‏‮Lighthouse‬‏ ‏‮again‬‏. ({errorCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | criTimeout": {
+    "message": "‏‮Timeout‬‏ ‏‮waiting‬‏ ‏‮for‬‏ ‏‮initial‬‏ ‏‮Debugger‬‏ ‏‮Protocol‬‏ ‏‮connection‬‏."
+  },
+  "lighthouse-core/lib/lh-error.js | didntCollectScreenshots": {
+    "message": "‏‮Chrome‬‏ ‏‮didn‬‏'‏‮t‬‏ ‏‮collect‬‏ ‏‮any‬‏ ‏‮screenshots‬‏ ‏‮during‬‏ ‏‮the‬‏ ‏‮page‬‏ ‏‮load‬‏. ‏‮Please‬‏ ‏‮make‬‏ ‏‮sure‬‏ ‏‮there‬‏ ‏‮is‬‏ ‏‮content‬‏ ‏‮visible‬‏ ‏‮on‬‏ ‏‮the‬‏ ‏‮page‬‏, ‏‮and‬‏ ‏‮then‬‏ ‏‮try‬‏ ‏‮re‬‏-‏‮running‬‏ ‏‮Lighthouse‬‏. ({errorCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | dnsFailure": {
+    "message": "‏‮DNS‬‏ ‏‮servers‬‏ ‏‮could‬‏ ‏‮not‬‏ ‏‮resolve‬‏ ‏‮the‬‏ ‏‮provided‬‏ ‏‮domain‬‏."
+  },
+  "lighthouse-core/lib/lh-error.js | erroredRequiredArtifact": {
+    "message": "‏‮Required‬‏ {artifactName} ‏‮gatherer‬‏ ‏‮encountered‬‏ ‏‮an‬‏ ‏‮error‬‏: {errorMessage}"
+  },
+  "lighthouse-core/lib/lh-error.js | internalChromeError": {
+    "message": "‏‮An‬‏ ‏‮internal‬‏ ‏‮Chrome‬‏ ‏‮error‬‏ ‏‮occurred‬‏. ‏‮Please‬‏ ‏‮restart‬‏ ‏‮Chrome‬‏ ‏‮and‬‏ ‏‮try‬‏ ‏‮re‬‏-‏‮running‬‏ ‏‮Lighthouse‬‏."
+  },
+  "lighthouse-core/lib/lh-error.js | missingRequiredArtifact": {
+    "message": "‏‮Required‬‏ {artifactName} ‏‮gatherer‬‏ ‏‮did‬‏ ‏‮not‬‏ ‏‮run‬‏."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailed": {
+    "message": "‏‮Lighthouse‬‏ ‏‮was‬‏ ‏‮unable‬‏ ‏‮to‬‏ ‏‮reliably‬‏ ‏‮load‬‏ ‏‮the‬‏ ‏‮page‬‏ ‏‮you‬‏ ‏‮requested‬‏. ‏‮Make‬‏ ‏‮sure‬‏ ‏‮you‬‏ ‏‮are‬‏ ‏‮testing‬‏ ‏‮the‬‏ ‏‮correct‬‏ ‏‮URL‬‏ ‏‮and‬‏ ‏‮that‬‏ ‏‮the‬‏ ‏‮server‬‏ ‏‮is‬‏ ‏‮properly‬‏ ‏‮responding‬‏ ‏‮to‬‏ ‏‮all‬‏ ‏‮requests‬‏."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedHung": {
+    "message": "‏‮Lighthouse‬‏ ‏‮was‬‏ ‏‮unable‬‏ ‏‮to‬‏ ‏‮reliably‬‏ ‏‮load‬‏ ‏‮the‬‏ ‏‮URL‬‏ ‏‮you‬‏ ‏‮requested‬‏ ‏‮because‬‏ ‏‮the‬‏ ‏‮page‬‏ ‏‮stopped‬‏ ‏‮responding‬‏."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedInsecure": {
+    "message": "‏‮The‬‏ ‏‮URL‬‏ ‏‮you‬‏ ‏‮have‬‏ ‏‮provided‬‏ ‏‮does‬‏ ‏‮not‬‏ ‏‮have‬‏ ‏‮a‬‏ ‏‮valid‬‏ ‏‮security‬‏ ‏‮certificate‬‏. {securityMessages}"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedInterstitial": {
+    "message": "‏‮Chrome‬‏ ‏‮prevented‬‏ ‏‮page‬‏ ‏‮load‬‏ ‏‮with‬‏ ‏‮an‬‏ ‏‮interstitial‬‏. ‏‮Make‬‏ ‏‮sure‬‏ ‏‮you‬‏ ‏‮are‬‏ ‏‮testing‬‏ ‏‮the‬‏ ‏‮correct‬‏ ‏‮URL‬‏ ‏‮and‬‏ ‏‮that‬‏ ‏‮the‬‏ ‏‮server‬‏ ‏‮is‬‏ ‏‮properly‬‏ ‏‮responding‬‏ ‏‮to‬‏ ‏‮all‬‏ ‏‮requests‬‏."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedWithDetails": {
+    "message": "‏‮Lighthouse‬‏ ‏‮was‬‏ ‏‮unable‬‏ ‏‮to‬‏ ‏‮reliably‬‏ ‏‮load‬‏ ‏‮the‬‏ ‏‮page‬‏ ‏‮you‬‏ ‏‮requested‬‏. ‏‮Make‬‏ ‏‮sure‬‏ ‏‮you‬‏ ‏‮are‬‏ ‏‮testing‬‏ ‏‮the‬‏ ‏‮correct‬‏ ‏‮URL‬‏ ‏‮and‬‏ ‏‮that‬‏ ‏‮the‬‏ ‏‮server‬‏ ‏‮is‬‏ ‏‮properly‬‏ ‏‮responding‬‏ ‏‮to‬‏ ‏‮all‬‏ ‏‮requests‬‏. (‏‮Details‬‏: {errorDetails})"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedWithStatusCode": {
+    "message": "‏‮Lighthouse‬‏ ‏‮was‬‏ ‏‮unable‬‏ ‏‮to‬‏ ‏‮reliably‬‏ ‏‮load‬‏ ‏‮the‬‏ ‏‮page‬‏ ‏‮you‬‏ ‏‮requested‬‏. ‏‮Make‬‏ ‏‮sure‬‏ ‏‮you‬‏ ‏‮are‬‏ ‏‮testing‬‏ ‏‮the‬‏ ‏‮correct‬‏ ‏‮URL‬‏ ‏‮and‬‏ ‏‮that‬‏ ‏‮the‬‏ ‏‮server‬‏ ‏‮is‬‏ ‏‮properly‬‏ ‏‮responding‬‏ ‏‮to‬‏ ‏‮all‬‏ ‏‮requests‬‏. (‏‮Status‬‏ ‏‮code‬‏: {statusCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadTookTooLong": {
+    "message": "‏‮Your‬‏ ‏‮page‬‏ ‏‮took‬‏ ‏‮too‬‏ ‏‮long‬‏ ‏‮to‬‏ ‏‮load‬‏. ‏‮Please‬‏ ‏‮follow‬‏ ‏‮the‬‏ ‏‮opportunities‬‏ ‏‮in‬‏ ‏‮the‬‏ ‏‮report‬‏ ‏‮to‬‏ ‏‮reduce‬‏ ‏‮your‬‏ ‏‮page‬‏ ‏‮load‬‏ ‏‮time‬‏, ‏‮and‬‏ ‏‮then‬‏ ‏‮try‬‏ ‏‮re‬‏-‏‮running‬‏ ‏‮Lighthouse‬‏. ({errorCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | protocolTimeout": {
+    "message": "‏‮Waiting‬‏ ‏‮for‬‏ ‏‮DevTools‬‏ ‏‮protocol‬‏ ‏‮response‬‏ ‏‮has‬‏ ‏‮exceeded‬‏ ‏‮the‬‏ ‏‮allotted‬‏ ‏‮time‬‏. (‏‮Method‬‏: {protocolMethod})"
+  },
+  "lighthouse-core/lib/lh-error.js | requestContentTimeout": {
+    "message": "‏‮Fetching‬‏ ‏‮resource‬‏ ‏‮content‬‏ ‏‮has‬‏ ‏‮exceeded‬‏ ‏‮the‬‏ ‏‮allotted‬‏ ‏‮time‬‏"
+  },
+  "lighthouse-core/lib/lh-error.js | urlInvalid": {
+    "message": "‏‮The‬‏ ‏‮URL‬‏ ‏‮you‬‏ ‏‮have‬‏ ‏‮provided‬‏ ‏‮appears‬‏ ‏‮to‬‏ ‏‮be‬‏ ‏‮invalid‬‏."
+  },
+  "lighthouse-core/report/html/renderer/util.js | auditGroupExpandTooltip": {
+    "message": "‏‮Show‬‏ ‏‮audits‬‏"
+  },
+  "lighthouse-core/report/html/renderer/util.js | crcInitialNavigation": {
+    "message": "‏‮Initial‬‏ ‏‮Navigation‬‏"
+  },
+  "lighthouse-core/report/html/renderer/util.js | crcLongestDurationLabel": {
+    "message": "‏‮Maximum‬‏ ‏‮critical‬‏ ‏‮path‬‏ ‏‮latency‬‏:"
+  },
+  "lighthouse-core/report/html/renderer/util.js | errorLabel": {
+    "message": "‏‮Error‬‏!"
+  },
+  "lighthouse-core/report/html/renderer/util.js | errorMissingAuditInfo": {
+    "message": "‏‮Report‬‏ ‏‮error‬‏: ‏‮no‬‏ ‏‮audit‬‏ ‏‮information‬‏"
+  },
+  "lighthouse-core/report/html/renderer/util.js | labDataTitle": {
+    "message": "‏‮Lab‬‏ ‏‮Data‬‏"
+  },
+  "lighthouse-core/report/html/renderer/util.js | lsPerformanceCategoryDescription": {
+    "message": "[‏‮Lighthouse‬‏](https://developers.google.com/web/tools/lighthouse/) ‏‮analysis‬‏ ‏‮of‬‏ ‏‮the‬‏ ‏‮current‬‏ ‏‮page‬‏ ‏‮on‬‏ ‏‮an‬‏ ‏‮emulated‬‏ ‏‮mobile‬‏ ‏‮network‬‏. ‏‮Values‬‏ ‏‮are‬‏ ‏‮estimated‬‏ ‏‮and‬‏ ‏‮may‬‏ ‏‮vary‬‏."
+  },
+  "lighthouse-core/report/html/renderer/util.js | manualAuditsGroupTitle": {
+    "message": "‏‮Additional‬‏ ‏‮items‬‏ ‏‮to‬‏ ‏‮manually‬‏ ‏‮check‬‏"
+  },
+  "lighthouse-core/report/html/renderer/util.js | notApplicableAuditsGroupTitle": {
+    "message": "‏‮Not‬‏ ‏‮applicable‬‏"
+  },
+  "lighthouse-core/report/html/renderer/util.js | opportunityResourceColumnLabel": {
+    "message": "‏‮Opportunity‬‏"
+  },
+  "lighthouse-core/report/html/renderer/util.js | opportunitySavingsColumnLabel": {
+    "message": "‏‮Estimated‬‏ ‏‮Savings‬‏"
+  },
+  "lighthouse-core/report/html/renderer/util.js | passedAuditsGroupTitle": {
+    "message": "‏‮Passed‬‏ ‏‮audits‬‏"
+  },
+  "lighthouse-core/report/html/renderer/util.js | snippetCollapseButtonLabel": {
+    "message": "‏‮Collapse‬‏ ‏‮snippet‬‏"
+  },
+  "lighthouse-core/report/html/renderer/util.js | snippetExpandButtonLabel": {
+    "message": "‏‮Expand‬‏ ‏‮snippet‬‏"
+  },
+  "lighthouse-core/report/html/renderer/util.js | thirdPartyResourcesLabel": {
+    "message": "‏‮Show‬‏ 3‏‮rd‬‏-‏‮party‬‏ ‏‮resources‬‏"
+  },
+  "lighthouse-core/report/html/renderer/util.js | toplevelWarningsMessage": {
+    "message": "‏‮There‬‏ ‏‮were‬‏ ‏‮issues‬‏ ‏‮affecting‬‏ ‏‮this‬‏ ‏‮run‬‏ ‏‮of‬‏ ‏‮Lighthouse‬‏:"
+  },
+  "lighthouse-core/report/html/renderer/util.js | varianceDisclaimer": {
+    "message": "‏‮Values‬‏ ‏‮are‬‏ ‏‮estimated‬‏ ‏‮and‬‏ ‏‮may‬‏ ‏‮vary‬‏. ‏‮The‬‏ ‏‮performance‬‏ ‏‮score‬‏ ‏‮is‬‏ [‏‮based‬‏ ‏‮only‬‏ ‏‮on‬‏ ‏‮these‬‏ ‏‮metrics‬‏](https://github.com/GoogleChrome/lighthouse/blob/d2ec9ffbb21de9ad1a0f86ed24575eda32c796f0/docs/scoring.md#how-are-the-scores-weighted)."
+  },
+  "lighthouse-core/report/html/renderer/util.js | warningAuditsGroupTitle": {
+    "message": "‏‮Passed‬‏ ‏‮audits‬‏ ‏‮but‬‏ ‏‮with‬‏ ‏‮warnings‬‏"
+  },
+  "lighthouse-core/report/html/renderer/util.js | warningHeader": {
+    "message": "‏‮Warnings‬‏: "
+  },
+  "stack-packs/packs/wordpress.js | efficient_animated_content": {
+    "message": "‏‮Consider‬‏ ‏‮uploading‬‏ ‏‮your‬‏ ‏‮GIF‬‏ ‏‮to‬‏ ‏‮a‬‏ ‏‮service‬‏ ‏‮which‬‏ ‏‮will‬‏ ‏‮make‬‏ ‏‮it‬‏ ‏‮available‬‏ ‏‮to‬‏ ‏‮embed‬‏ ‏‮as‬‏ ‏‮an‬‏ ‏‮HTML‬‏5 ‏‮video‬‏."
+  },
+  "stack-packs/packs/wordpress.js | offscreen_images": {
+    "message": "‏‮Install‬‏ ‏‮a‬‏ [‏‮lazy‬‏-‏‮load‬‏ ‏‮WordPress‬‏ ‏‮plugin‬‏](https://wordpress.org/plugins/search/lazy+load/) ‏‮that‬‏ ‏‮provides‬‏ ‏‮the‬‏ ‏‮ability‬‏ ‏‮to‬‏ ‏‮defer‬‏ ‏‮any‬‏ ‏‮offscreen‬‏ ‏‮images‬‏, ‏‮or‬‏ ‏‮switch‬‏ ‏‮to‬‏ ‏‮a‬‏ ‏‮theme‬‏ ‏‮that‬‏ ‏‮provides‬‏ ‏‮that‬‏ ‏‮functionality‬‏. ‏‮Also‬‏ ‏‮consider‬‏ ‏‮using‬‏ [‏‮the‬‏ ‏‮AMP‬‏ ‏‮plugin‬‏](https://wordpress.org/plugins/amp/)."
+  },
+  "stack-packs/packs/wordpress.js | render_blocking_resources": {
+    "message": "‏‮There‬‏ ‏‮are‬‏ ‏‮a‬‏ ‏‮number‬‏ ‏‮of‬‏ ‏‮WordPress‬‏ ‏‮plugins‬‏ ‏‮that‬‏ ‏‮can‬‏ ‏‮help‬‏ ‏‮you‬‏ [‏‮inline‬‏ ‏‮critical‬‏ ‏‮assets‬‏](https://wordpress.org/plugins/search/critical+css/) ‏‮or‬‏ [‏‮defer‬‏ ‏‮less‬‏ ‏‮important‬‏ ‏‮resources‬‏](https://wordpress.org/plugins/search/defer+css+javascript/). ‏‮Beware‬‏ ‏‮that‬‏ ‏‮optimizations‬‏ ‏‮provided‬‏ ‏‮by‬‏ ‏‮these‬‏ ‏‮plugins‬‏ ‏‮may‬‏ ‏‮break‬‏ ‏‮features‬‏ ‏‮of‬‏ ‏‮your‬‏ ‏‮theme‬‏ ‏‮or‬‏ ‏‮plugins‬‏, ‏‮so‬‏ ‏‮you‬‏ ‏‮will‬‏ ‏‮likely‬‏ ‏‮need‬‏ ‏‮to‬‏ ‏‮make‬‏ ‏‮code‬‏ ‏‮changes‬‏."
+  },
+  "stack-packs/packs/wordpress.js | time_to_first_byte": {
+    "message": "‏‮Themes‬‏, ‏‮plugins‬‏, ‏‮and‬‏ ‏‮server‬‏ ‏‮specifications‬‏ ‏‮all‬‏ ‏‮contribute‬‏ ‏‮to‬‏ ‏‮server‬‏ ‏‮response‬‏ ‏‮time‬‏. ‏‮Consider‬‏ ‏‮finding‬‏ ‏‮a‬‏ ‏‮more‬‏ ‏‮optimized‬‏ ‏‮theme‬‏, ‏‮carefully‬‏ ‏‮selecting‬‏ ‏‮an‬‏ ‏‮optimization‬‏ ‏‮plugin‬‏, ‏‮and‬‏/‏‮or‬‏ ‏‮upgrading‬‏ ‏‮your‬‏ ‏‮server‬‏."
+  },
+  "stack-packs/packs/wordpress.js | total_byte_weight": {
+    "message": "‏‮Consider‬‏ ‏‮showing‬‏ ‏‮excerpts‬‏ ‏‮in‬‏ ‏‮your‬‏ ‏‮post‬‏ ‏‮lists‬‏ (‏‮e‬‏.‏‮g‬‏. ‏‮via‬‏ ‏‮the‬‏ ‏‮more‬‏ ‏‮tag‬‏), ‏‮reducing‬‏ ‏‮the‬‏ ‏‮number‬‏ ‏‮of‬‏ ‏‮posts‬‏ ‏‮shown‬‏ ‏‮on‬‏ ‏‮a‬‏ ‏‮given‬‏ ‏‮page‬‏, ‏‮breaking‬‏ ‏‮your‬‏ ‏‮long‬‏ ‏‮posts‬‏ ‏‮into‬‏ ‏‮multiple‬‏ ‏‮pages‬‏, ‏‮or‬‏ ‏‮using‬‏ ‏‮a‬‏ ‏‮plugin‬‏ ‏‮to‬‏ ‏‮lazy‬‏-‏‮load‬‏ ‏‮comments‬‏."
+  },
+  "stack-packs/packs/wordpress.js | unminified_css": {
+    "message": "‏‮A‬‏ ‏‮number‬‏ ‏‮of‬‏ [‏‮WordPress‬‏ ‏‮plugins‬‏](https://wordpress.org/plugins/search/minify+css/) ‏‮can‬‏ ‏‮speed‬‏ ‏‮up‬‏ ‏‮your‬‏ ‏‮site‬‏ ‏‮by‬‏ ‏‮concatenating‬‏, ‏‮minifying‬‏, ‏‮and‬‏ ‏‮compressing‬‏ ‏‮your‬‏ ‏‮styles‬‏. ‏‮You‬‏ ‏‮may‬‏ ‏‮also‬‏ ‏‮want‬‏ ‏‮to‬‏ ‏‮use‬‏ ‏‮a‬‏ ‏‮build‬‏ ‏‮process‬‏ ‏‮to‬‏ ‏‮do‬‏ ‏‮this‬‏ ‏‮minification‬‏ ‏‮up‬‏-‏‮front‬‏ ‏‮if‬‏ ‏‮possible‬‏."
+  },
+  "stack-packs/packs/wordpress.js | unminified_javascript": {
+    "message": "‏‮A‬‏ ‏‮number‬‏ ‏‮of‬‏ [‏‮WordPress‬‏ ‏‮plugins‬‏](https://wordpress.org/plugins/search/minify+javascript/) ‏‮can‬‏ ‏‮speed‬‏ ‏‮up‬‏ ‏‮your‬‏ ‏‮site‬‏ ‏‮by‬‏ ‏‮concatenating‬‏, ‏‮minifying‬‏, ‏‮and‬‏ ‏‮compressing‬‏ ‏‮your‬‏ ‏‮scripts‬‏. ‏‮You‬‏ ‏‮may‬‏ ‏‮also‬‏ ‏‮want‬‏ ‏‮to‬‏ ‏‮use‬‏ ‏‮a‬‏ ‏‮build‬‏ ‏‮process‬‏ ‏‮to‬‏ ‏‮do‬‏ ‏‮this‬‏ ‏‮minification‬‏ ‏‮up‬‏ ‏‮front‬‏ ‏‮if‬‏ ‏‮possible‬‏."
+  },
+  "stack-packs/packs/wordpress.js | unused_css_rules": {
+    "message": "‏‮Consider‬‏ ‏‮reducing‬‏, ‏‮or‬‏ ‏‮switching‬‏, ‏‮the‬‏ ‏‮number‬‏ ‏‮of‬‏ [‏‮WordPress‬‏ ‏‮plugins‬‏](https://wordpress.org/plugins/) ‏‮loading‬‏ ‏‮unused‬‏ ‏‮CSS‬‏ ‏‮in‬‏ ‏‮your‬‏ ‏‮page‬‏. ‏‮To‬‏ ‏‮identify‬‏ ‏‮plugins‬‏ ‏‮that‬‏ ‏‮are‬‏ ‏‮adding‬‏ ‏‮extraneous‬‏ ‏‮CSS‬‏, ‏‮try‬‏ ‏‮running‬‏ [‏‮code‬‏ ‏‮coverage‬‏](https://developers.google.com/web/updates/2017/04/devtools-release-notes#coverage) ‏‮in‬‏ ‏‮Chrome‬‏ ‏‮DevTools‬‏. ‏‮You‬‏ ‏‮can‬‏ ‏‮identify‬‏ ‏‮the‬‏ ‏‮theme‬‏/‏‮plugin‬‏ ‏‮responsible‬‏ ‏‮from‬‏ ‏‮the‬‏ ‏‮URL‬‏ ‏‮of‬‏ ‏‮the‬‏ ‏‮stylesheet‬‏. ‏‮Look‬‏ ‏‮out‬‏ ‏‮for‬‏ ‏‮plugins‬‏ ‏‮that‬‏ ‏‮have‬‏ ‏‮many‬‏ ‏‮stylesheets‬‏ ‏‮in‬‏ ‏‮the‬‏ ‏‮list‬‏ ‏‮which‬‏ ‏‮have‬‏ ‏‮a‬‏ ‏‮lot‬‏ ‏‮of‬‏ ‏‮red‬‏ ‏‮in‬‏ ‏‮code‬‏ ‏‮coverage‬‏. ‏‮A‬‏ ‏‮plugin‬‏ ‏‮should‬‏ ‏‮only‬‏ ‏‮enqueue‬‏ ‏‮a‬‏ ‏‮stylesheet‬‏ ‏‮if‬‏ ‏‮it‬‏ ‏‮is‬‏ ‏‮actually‬‏ ‏‮used‬‏ ‏‮on‬‏ ‏‮the‬‏ ‏‮page‬‏."
+  },
+  "stack-packs/packs/wordpress.js | unused_javascript": {
+    "message": "‏‮Consider‬‏ ‏‮reducing‬‏, ‏‮or‬‏ ‏‮switching‬‏, ‏‮the‬‏ ‏‮number‬‏ ‏‮of‬‏ [‏‮WordPress‬‏ ‏‮plugins‬‏](https://wordpress.org/plugins/) ‏‮loading‬‏ ‏‮unused‬‏ ‏‮JavaScript‬‏ ‏‮in‬‏ ‏‮your‬‏ ‏‮page‬‏. ‏‮To‬‏ ‏‮identify‬‏ ‏‮plugins‬‏ ‏‮that‬‏ ‏‮are‬‏ ‏‮adding‬‏ ‏‮extraneous‬‏ ‏‮JS‬‏, ‏‮try‬‏ ‏‮running‬‏ [‏‮code‬‏ ‏‮coverage‬‏](https://developers.google.com/web/updates/2017/04/devtools-release-notes#coverage) ‏‮in‬‏ ‏‮Chrome‬‏ ‏‮DevTools‬‏. ‏‮You‬‏ ‏‮can‬‏ ‏‮identify‬‏ ‏‮the‬‏ ‏‮theme‬‏/‏‮plugin‬‏ ‏‮responsible‬‏ ‏‮from‬‏ ‏‮the‬‏ ‏‮URL‬‏ ‏‮of‬‏ ‏‮the‬‏ ‏‮script‬‏. ‏‮Look‬‏ ‏‮out‬‏ ‏‮for‬‏ ‏‮plugins‬‏ ‏‮that‬‏ ‏‮have‬‏ ‏‮many‬‏ ‏‮scripts‬‏ ‏‮in‬‏ ‏‮the‬‏ ‏‮list‬‏ ‏‮which‬‏ ‏‮have‬‏ ‏‮a‬‏ ‏‮lot‬‏ ‏‮of‬‏ ‏‮red‬‏ ‏‮in‬‏ ‏‮code‬‏ ‏‮coverage‬‏. ‏‮A‬‏ ‏‮plugin‬‏ ‏‮should‬‏ ‏‮only‬‏ ‏‮enqueue‬‏ ‏‮a‬‏ ‏‮script‬‏ ‏‮if‬‏ ‏‮it‬‏ ‏‮is‬‏ ‏‮actually‬‏ ‏‮used‬‏ ‏‮on‬‏ ‏‮the‬‏ ‏‮page‬‏."
+  },
+  "stack-packs/packs/wordpress.js | uses_long_cache_ttl": {
+    "message": "‏‮Read‬‏ ‏‮about‬‏ [‏‮Browser‬‏ ‏‮Caching‬‏ ‏‮in‬‏ ‏‮WordPress‬‏](https://codex.wordpress.org/WordPress_Optimization#Browser_Caching)."
+  },
+  "stack-packs/packs/wordpress.js | uses_optimized_images": {
+    "message": "‏‮Consider‬‏ ‏‮using‬‏ ‏‮an‬‏ [‏‮image‬‏ ‏‮optimization‬‏ ‏‮WordPress‬‏ ‏‮plugin‬‏](https://wordpress.org/plugins/search/optimize+images/) ‏‮that‬‏ ‏‮compresses‬‏ ‏‮your‬‏ ‏‮images‬‏ ‏‮while‬‏ ‏‮retaining‬‏ ‏‮quality‬‏."
+  },
+  "stack-packs/packs/wordpress.js | uses_responsive_images": {
+    "message": "‏‮Upload‬‏ ‏‮images‬‏ ‏‮directly‬‏ ‏‮through‬‏ ‏‮the‬‏ [‏‮media‬‏ ‏‮library‬‏](https://codex.wordpress.org/Media_Library_Screen) ‏‮to‬‏ ‏‮ensure‬‏ ‏‮that‬‏ ‏‮the‬‏ ‏‮required‬‏ ‏‮image‬‏ ‏‮sizes‬‏ ‏‮are‬‏ ‏‮available‬‏, ‏‮and‬‏ ‏‮then‬‏ ‏‮insert‬‏ ‏‮them‬‏ ‏‮from‬‏ ‏‮the‬‏ ‏‮media‬‏ ‏‮library‬‏ ‏‮or‬‏ ‏‮use‬‏ ‏‮the‬‏ ‏‮image‬‏ ‏‮widget‬‏ ‏‮to‬‏ ‏‮ensure‬‏ ‏‮the‬‏ ‏‮optimal‬‏ ‏‮image‬‏ ‏‮sizes‬‏ ‏‮are‬‏ ‏‮used‬‏ (‏‮including‬‏ ‏‮those‬‏ ‏‮for‬‏ ‏‮the‬‏ ‏‮responsive‬‏ ‏‮breakpoints‬‏). ‏‮Avoid‬‏ ‏‮using‬‏ `Full Size` ‏‮images‬‏ ‏‮unless‬‏ ‏‮the‬‏ ‏‮dimensions‬‏ ‏‮are‬‏ ‏‮adequate‬‏ ‏‮for‬‏ ‏‮their‬‏ ‏‮usage‬‏. [‏‮Learn‬‏ ‏‮More‬‏](https://codex.wordpress.org/Inserting_Images_into_Posts_and_Pages#Image_Size)."
+  },
+  "stack-packs/packs/wordpress.js | uses_text_compression": {
+    "message": "‏‮You‬‏ ‏‮can‬‏ ‏‮enable‬‏ ‏‮text‬‏ ‏‮compression‬‏ ‏‮in‬‏ ‏‮your‬‏ ‏‮web‬‏ ‏‮server‬‏ ‏‮configuration‬‏."
+  },
+  "stack-packs/packs/wordpress.js | uses_webp_images": {
+    "message": "‏‮Consider‬‏ ‏‮using‬‏ ‏‮a‬‏ [‏‮plugin‬‏](https://wordpress.org/plugins/search/convert+webp/) ‏‮or‬‏ ‏‮service‬‏ ‏‮that‬‏ ‏‮will‬‏ ‏‮automatically‬‏ ‏‮convert‬‏ ‏‮your‬‏ ‏‮uploaded‬‏ ‏‮images‬‏ ‏‮to‬‏ ‏‮the‬‏ ‏‮optimal‬‏ ‏‮formats‬‏."
+  }
+}
diff --git a/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/ar.json b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/ar.json
new file mode 100644
index 0000000..d3b9bd6
--- /dev/null
+++ b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/ar.json
@@ -0,0 +1,1541 @@
+{
+  "lighthouse-core/audits/accessibility/accesskeys.js | description": {
+    "message": "تتيح مفاتيح الوصول للمستخدمين التركيز بسرعة على جزء من الصفحة. للانتقال إلى الموضع الصحيح من الصفحة، يجب أن يكون كل مفتاح وصول فريدًا. [مزيد من المعلومات](https://web.dev/accesskeys/)"
+  },
+  "lighthouse-core/audits/accessibility/accesskeys.js | failureTitle": {
+    "message": "قيم `[accesskey]` هي غير فريدة"
+  },
+  "lighthouse-core/audits/accessibility/accesskeys.js | title": {
+    "message": "قيم `[accesskey]` فريدة"
+  },
+  "lighthouse-core/audits/accessibility/aria-allowed-attr.js | description": {
+    "message": "يوفّر كل دور ARIA `role` مجموعة فرعية محددة من سمات `aria-*`. يؤدي عدم تطابق هذه الأدوار إلى إبطال السمات `aria-*`. [مزيد من المعلومات](https://web.dev/aria-allowed-attr/)"
+  },
+  "lighthouse-core/audits/accessibility/aria-allowed-attr.js | failureTitle": {
+    "message": "سمات `[aria-*]` لا تتطابق مع أدوارها"
+  },
+  "lighthouse-core/audits/accessibility/aria-allowed-attr.js | title": {
+    "message": "سمات `[aria-*]` هي مطابقة لأدوارها"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-attr.js | description": {
+    "message": "تتطلّب بعض أدوار ARIA تزويد برامج قراءة الشاشة بسمات تصف حالة العنصر. [مزيد من المعلومات](https://web.dev/aria-required-attr/)"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-attr.js | failureTitle": {
+    "message": "`[role]` لا تحتوي على جميع سمات`[aria-*]` المطلوبة"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-attr.js | title": {
+    "message": "`[role]` تحتوي على جميع سمات `[aria-*]` المطلوبة"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-children.js | description": {
+    "message": "يجب أن تحتوي بعض أدوار ARIA الرئيسية على أدوار ثانوية محدّدة لأداء وظائف إمكانية الوصول المقصودة. [مزيد من المعلومات](https://web.dev/aria-required-children/)"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-children.js | failureTitle": {
+    "message": "العناصر التي تتضمّن `[role]` والتي تتطلب `[role]`محدّدة للأطفال مفقودة."
+  },
+  "lighthouse-core/audits/accessibility/aria-required-children.js | title": {
+    "message": "العناصر التي تتضمن `[role]` والتي تتطلب `[role]` محدّدة للأطفال متوفّرة"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-parent.js | description": {
+    "message": "يجب أن يتم تضمين بعض أدوار ثانوية ARIA ضمن أدوار رئيسية محدّدة لتنفيذ وظائف إمكانية الوصول المقصودة بشكل صحيح. [مزيد من المعلومات](https://web.dev/aria-required-parent/)"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-parent.js | failureTitle": {
+    "message": "`[role]` غير مضمّنة في العنصر الرئيسي المطلوب"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-parent.js | title": {
+    "message": "`[role]` مضمّنة في العنصر الرئيسي المطلوب"
+  },
+  "lighthouse-core/audits/accessibility/aria-roles.js | description": {
+    "message": "يجب أن تحتوي أدوار ARIA على قيم صالحة لتنفيذ وظائف إمكانية الوصول المقصودة. [مزيد من المعلومات](https://web.dev/aria-roles/)"
+  },
+  "lighthouse-core/audits/accessibility/aria-roles.js | failureTitle": {
+    "message": "قيم `[role]` هي غير صالحة"
+  },
+  "lighthouse-core/audits/accessibility/aria-roles.js | title": {
+    "message": "قيم `[role]` هي صالحة"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr-value.js | description": {
+    "message": "لا يمكن لتقنيات المساعدة، مثل برامج قراءة الشاشة، تفسير سمات ARIA باستخدام قيم غير صحيحة. [مزيد من المعلومات](https://web.dev/aria-valid-attr-value/)"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr-value.js | failureTitle": {
+    "message": "سمات `[aria-*]` لا تحتوي على قيم صحيحة"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr-value.js | title": {
+    "message": "سمات `[aria-*]` تحتوي على قيم صالحة"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr.js | description": {
+    "message": "لا يمكن لتقنيات المساعدة، مثل برامج قراءة الشاشة، تفسير سمات ARIA بأسماء غير صحيحة. [مزيد من المعلومات](https://web.dev/aria-valid-attr/)"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr.js | failureTitle": {
+    "message": "سمات `[aria-*]` هي غير صالحة أو بها أخطاء إملائية"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr.js | title": {
+    "message": "سمات `[aria-*]` هي صالحة وليس بها أخطاء إملائية"
+  },
+  "lighthouse-core/audits/accessibility/audio-caption.js | description": {
+    "message": "تجعل مقاطع الشرح العناصر الصوتية قابلة للاستخدام للمستخدمين الصُم أو الذين يعانون من إعاقة سمعية، ما يوفّر معلومات مهمة، مثل الشخص المتحدث والحوار الذي يدور ومعلومات أخرى بخلاف الكلام. [مزيد من المعلومات](https://web.dev/audio-caption/)"
+  },
+  "lighthouse-core/audits/accessibility/audio-caption.js | failureTitle": {
+    "message": "عناصر `<audio>` لا تتضمّن عنصر `<track>` مع `[kind=\"captions\"]`"
+  },
+  "lighthouse-core/audits/accessibility/audio-caption.js | title": {
+    "message": "العناصر `<audio>` تحتوي على عنصر `<track>` مع `[kind=\"captions\"]`"
+  },
+  "lighthouse-core/audits/accessibility/axe-audit.js | failingElementsHeader": {
+    "message": "العناصر التي رسبت في عملية التدقيق"
+  },
+  "lighthouse-core/audits/accessibility/button-name.js | description": {
+    "message": "عند عدم احتواء زر على اسم يمكن الوصول إليه، تعلن برامج قراءة الشاشة بأنه \"زر\"، ما يجعله غير قابل للاستخدام بالنسبة إلى المستخدمين الذين يعتمدون على برامج قراءة الشاشة. [مزيد من المعلومات](https://web.dev/button-name/)"
+  },
+  "lighthouse-core/audits/accessibility/button-name.js | failureTitle": {
+    "message": "عدم احتواء الأزرار على اسم يمكن الوصول إليه"
+  },
+  "lighthouse-core/audits/accessibility/button-name.js | title": {
+    "message": "احتواء الأزرار على اسم الوصول"
+  },
+  "lighthouse-core/audits/accessibility/bypass.js | description": {
+    "message": "تؤدي إضافة طرق لتخطي المحتوى المكرّر إلى السماح لمستخدمي لوحة المفاتيح بالتنقل في الصفحة بكفاءة أكبر. [مزيد من المعلومات](https://web.dev/bypass/)"
+  },
+  "lighthouse-core/audits/accessibility/bypass.js | failureTitle": {
+    "message": "عدم احتواء الصفحة على عنوان أو رابط تخطٍ أو منطقة معالم"
+  },
+  "lighthouse-core/audits/accessibility/bypass.js | title": {
+    "message": "احتواء الصفحة على عنوان أو رابط تخطٍ أو منطقة معالم"
+  },
+  "lighthouse-core/audits/accessibility/color-contrast.js | description": {
+    "message": "إنّ عملية قراءة النص المنخفض التباين تُعتبر صعبة أو مستحيلة بالنسبة إلى العديد من المستخدمين. [مزيد من المعلومات](https://web.dev/color-contrast/)"
+  },
+  "lighthouse-core/audits/accessibility/color-contrast.js | failureTitle": {
+    "message": "عدم احتواء الخلفية وألوان الخلفية على نسبة تباين كافية"
+  },
+  "lighthouse-core/audits/accessibility/color-contrast.js | title": {
+    "message": "تمييز الخلفية والألوان الخلفية بنسبة تباين كافية"
+  },
+  "lighthouse-core/audits/accessibility/definition-list.js | description": {
+    "message": "عندما لا يتم ترميز قوائم التعريفات بشكل صحيح، قد تقدم برامج قراءة الشاشة نتائج غير واضحة أو غير دقيقة. [مزيد من المعلومات](https://web.dev/definition-list/)"
+  },
+  "lighthouse-core/audits/accessibility/definition-list.js | failureTitle": {
+    "message": "`<dl>` لا تحتوي على مجموعات `<dt>` و`<dd>` المرتبة بشكلٍ صحيح فقط، أو العناصر `<script>` أو `<template>`"
+  },
+  "lighthouse-core/audits/accessibility/definition-list.js | title": {
+    "message": "`<dl>` تحتوي على مجموعات `<dt>` و`<dd>` المرتبة بشكلٍ صحيح فقط، أو العناصر `<script>` أو `<template>`."
+  },
+  "lighthouse-core/audits/accessibility/dlitem.js | description": {
+    "message": "يجب إدراج عناصر قائمة التعريفات (`<dt>` و`<dd>`) في عنصر رئيسي `<dl>` وذلك لضمان إعلان برامج قراءة الشاشة عنها بشكل صحيح. [مزيد من المعلومات](https://web.dev/dlitem/)"
+  },
+  "lighthouse-core/audits/accessibility/dlitem.js | failureTitle": {
+    "message": "عناصر قائمة التعريفات غير مضّمنة في عناصر `<dl>`"
+  },
+  "lighthouse-core/audits/accessibility/dlitem.js | title": {
+    "message": "عناصر قائمة التعريفات مضمّنة في عناصر `<dl>`"
+  },
+  "lighthouse-core/audits/accessibility/document-title.js | description": {
+    "message": "يمنح العنوان مستخدمي برامج قراءة الشاشة نظرة عامة حول الصفحة، ويعتمد مستخدمو محرك البحث على هذا بشكل كبير لتحديد ما إذا كانت الصفحة ذات صلة ببحثهم أو لا. [مزيد من المعلومات](https://web.dev/document-title/)"
+  },
+  "lighthouse-core/audits/accessibility/document-title.js | failureTitle": {
+    "message": "المستند لا يحتوي على عنصر `<title>`"
+  },
+  "lighthouse-core/audits/accessibility/document-title.js | title": {
+    "message": "المستند يحتوي على عنصر `<title>`"
+  },
+  "lighthouse-core/audits/accessibility/duplicate-id.js | description": {
+    "message": "يجب أن تكون قيمة سمة رقم التعريف فريدة لكي لا تتغاضى تقنيات المساعدة عن الأمثلة الأخرى. [مزيد من المعلومات](https://web.dev/duplicate-id/)"
+  },
+  "lighthouse-core/audits/accessibility/duplicate-id.js | failureTitle": {
+    "message": "سمات `[id]` في الصفحة هي غير فريدة"
+  },
+  "lighthouse-core/audits/accessibility/duplicate-id.js | title": {
+    "message": "سمات `[id]` في الصفحة هي فريدة"
+  },
+  "lighthouse-core/audits/accessibility/frame-title.js | description": {
+    "message": "يعتمد مستخدمو برامج قراءة الشاشة على عناوين الإطارات لوصف محتوى الإطارات. [مزيد من المعلومات](https://web.dev/frame-title/)"
+  },
+  "lighthouse-core/audits/accessibility/frame-title.js | failureTitle": {
+    "message": "عناصر `<frame>` أو `<iframe>` لا تحتوي على عنوان"
+  },
+  "lighthouse-core/audits/accessibility/frame-title.js | title": {
+    "message": "عناصر `<frame>` أو `<iframe>` تحتوي على عنوان"
+  },
+  "lighthouse-core/audits/accessibility/html-has-lang.js | description": {
+    "message": "في حال لم تحدّد الصفحة سمة اللغة، يفترض قارئ الشاشة أن تكون الصفحة باللغة التلقائية التي اختارها المستخدم عند إعداد قارئ الشاشة. في حال لم تكن الصفحة باللغة التلقائية، قد لا يُعلِن قارئ الشاشة عن نص الصفحة بشكل صحيح. [مزيد من المعلومات](https://web.dev/html-has-lang/)"
+  },
+  "lighthouse-core/audits/accessibility/html-has-lang.js | failureTitle": {
+    "message": "العنصر `<html>` لا يحتوي على سمة `[lang]`"
+  },
+  "lighthouse-core/audits/accessibility/html-has-lang.js | title": {
+    "message": "عنصر `<html>` يحتوي على سمة `[lang]`"
+  },
+  "lighthouse-core/audits/accessibility/html-lang-valid.js | description": {
+    "message": "يؤدي تحديد [لغة BCP 47 ](https://www.w3.org/International/questions/qa-choosing-language-tags#question) صحيحة إلى مساعدة برامج قراءة الشاشة على الإعلان عن النص بشكلٍ صحيح. [مزيد من المعلومات](https://web.dev/html-lang-valid/)"
+  },
+  "lighthouse-core/audits/accessibility/html-lang-valid.js | failureTitle": {
+    "message": "العنصر `<html>` لا يحتوي على قيمة صالحة للسمة `[lang]`"
+  },
+  "lighthouse-core/audits/accessibility/html-lang-valid.js | title": {
+    "message": "عنصر `<html>` يحتوي على قيمة صحيحة لسمة `[lang]`"
+  },
+  "lighthouse-core/audits/accessibility/image-alt.js | description": {
+    "message": "يجب أن تهدف العناصر الإعلامية إلى نص وصفي بديل وقصير. يمكن تجاهل العناصر الزخرفية بسمة النص البديل الفارغة. [مزيد من المعلومات](https://web.dev/image-alt/)"
+  },
+  "lighthouse-core/audits/accessibility/image-alt.js | failureTitle": {
+    "message": "عناصر الصور لا تحتوي على سمات `[alt]`"
+  },
+  "lighthouse-core/audits/accessibility/image-alt.js | title": {
+    "message": "عناصر الصور تحتوي على سمات `[alt]`"
+  },
+  "lighthouse-core/audits/accessibility/input-image-alt.js | description": {
+    "message": "عند استخدام صورة كزر `<input>`، يمكن أن يساعد توفير نص بديل مستخدمي قارئ الشاشة على فهم الغرض من الزر. [مزيد من المعلومات](https://web.dev/input-image-alt/)"
+  },
+  "lighthouse-core/audits/accessibility/input-image-alt.js | failureTitle": {
+    "message": "عناصر `<input type=\"image\">` لا تحتوي على نص `[alt]`"
+  },
+  "lighthouse-core/audits/accessibility/input-image-alt.js | title": {
+    "message": "عناصر `<input type=\"image\">` تحتوي على نص `[alt]`"
+  },
+  "lighthouse-core/audits/accessibility/label.js | description": {
+    "message": "تضمن التصنيفات الإعلان عن عناصر التحكّم بالنموذج بشكل صحيح من خلال التقنيات المساعدة، مثل برامج قراءة الشاشة. [مزيد من المعلومات](https://web.dev/label/)"
+  },
+  "lighthouse-core/audits/accessibility/label.js | failureTitle": {
+    "message": "عدم احتواء عناصر النموذج على تصنيفات مرتبطة"
+  },
+  "lighthouse-core/audits/accessibility/label.js | title": {
+    "message": "احتواء عناصر النموذج على التصنيفات المرتبطة"
+  },
+  "lighthouse-core/audits/accessibility/layout-table.js | description": {
+    "message": "يجب ألا يشتمل الجدول المُستخدم لأغراض التنسيق على عناصر البيانات، مثل عناصر الشرح أو سمة الملخّص، لأن ذلك يمكن أن ينشئ تجربة محيرة لمستخدمي برامج قراءة الشاشة. [مزيد من المعلومات](https://web.dev/layout-table/)."
+  },
+  "lighthouse-core/audits/accessibility/layout-table.js | failureTitle": {
+    "message": "لا تتجنّب عناصر `<table>` للعرض التقديمي استخدام `<th>` أو `<caption>` أو السمة `[summary]`."
+  },
+  "lighthouse-core/audits/accessibility/layout-table.js | title": {
+    "message": "تتجنّب عناصر `<table>` للعرض التقديمي استخدام `<th>` أو `<caption>` أو السمة `[summary]`."
+  },
+  "lighthouse-core/audits/accessibility/link-name.js | description": {
+    "message": "إنّ نص الرابط (والنص البديل للصور، عند استخدامه كروابط) الذي يُعد مميّزًا وفريدًا وقابلاً للتركيز يحسّن تجربة التنقل لمستخدمي برامج قراءة الشاشة. [مزيد من المعلومات](https://web.dev/link-name/)"
+  },
+  "lighthouse-core/audits/accessibility/link-name.js | failureTitle": {
+    "message": "عدم احتواء الروابط على اسم مميّز"
+  },
+  "lighthouse-core/audits/accessibility/link-name.js | title": {
+    "message": "احتواء الروابط على اسم مميز"
+  },
+  "lighthouse-core/audits/accessibility/list.js | description": {
+    "message": "تعتمد برامج قراءة الشاشة على طريقة محدّدة للإعلان عن القوائم. يؤدي ضمان بنية القائمة المناسبة إلى المساعدة على الاستماع إلى قارئ الشاشة. [مزيد من المعلومات](https://web.dev/list/)"
+  },
+  "lighthouse-core/audits/accessibility/list.js | failureTitle": {
+    "message": "القوائم لا تحتوي على عناصر `<li>` وعناصر دعم النص البرمجي (`<script>` و`<template>`) فقط."
+  },
+  "lighthouse-core/audits/accessibility/list.js | title": {
+    "message": "القوائم تحتوي على عناصر `<li>` وعناصر دعم النص البرمجي (`<script>` و`<template>`) فقط."
+  },
+  "lighthouse-core/audits/accessibility/listitem.js | description": {
+    "message": "تتطلّب برامج قراءة الشاشة عناصر قائمة (`<li>`) يجب تضمينها في عنصر رئيسي `<ul>` أو `<ol>` حتى يتم الإعلان عنها بشكلٍ صحيح. [مزيد من المعلومات](https://web.dev/listitem/)"
+  },
+  "lighthouse-core/audits/accessibility/listitem.js | failureTitle": {
+    "message": "عناصر القائمة (`<li>`) غير مضمّنة في العناصر الرئيسية `<ul>` أو `<ol>`"
+  },
+  "lighthouse-core/audits/accessibility/listitem.js | title": {
+    "message": "عناصر القائمة (`<li>`) مُضمَّنة في العناصر الرئيسية `<ul>` أو `<ol>`"
+  },
+  "lighthouse-core/audits/accessibility/meta-refresh.js | description": {
+    "message": "لا يتوقع المستخدمون إعادة تحميل الصفحة تلقائيًا. وإذا تمت إعادة التحميل التلقائية، سيتحوّل تركيز المستخدمين إلى أعلى الصفحة. وقد ينشأ عن ذلك تجربة محبطة ومربكة. [مزيد من المعلومات](https://web.dev/meta-refresh/)."
+  },
+  "lighthouse-core/audits/accessibility/meta-refresh.js | failureTitle": {
+    "message": "المستند يستخدم `<meta http-equiv=\"refresh\">`"
+  },
+  "lighthouse-core/audits/accessibility/meta-refresh.js | title": {
+    "message": "المستند لا يستخدم `<meta http-equiv=\"refresh\">`"
+  },
+  "lighthouse-core/audits/accessibility/meta-viewport.js | description": {
+    "message": "يسبب إيقاف ميزة التكبير/التصغير مشكلة بالنسبة إلى المستخدمين ضعاف البصر الذين يعتمدون على ميزة تكبير الشاشة لرؤية محتوى صفحة الويب بشكل صحيح. [مزيد من المعلومات](https://web.dev/meta-viewport/)"
+  },
+  "lighthouse-core/audits/accessibility/meta-viewport.js | failureTitle": {
+    "message": "يتم استخدام `[user-scalable=\"no\"]` في العنصر `<meta name=\"viewport\">` أو السمة `[maximum-scale]` هي أقل من 5."
+  },
+  "lighthouse-core/audits/accessibility/meta-viewport.js | title": {
+    "message": "`[user-scalable=\"no\"]` غير مستخدم في العنصر `<meta name=\"viewport\">` والسمة `[maximum-scale]` لا تقلّ عن 5."
+  },
+  "lighthouse-core/audits/accessibility/object-alt.js | description": {
+    "message": "لا يمكن لبرامج قراءة الشاشة ترجمة المحتوى غير النصي. تؤدي إضافة نص بديل إلى عناصر `<object>` إلى مساعدة برامج قراءة الشاشة على نقل المعنى إلى المستخدمين. [مزيد من المعلومات](https://web.dev/object-alt/)"
+  },
+  "lighthouse-core/audits/accessibility/object-alt.js | failureTitle": {
+    "message": "عناصر `<object>` لا تحتوي على نص `[alt]`"
+  },
+  "lighthouse-core/audits/accessibility/object-alt.js | title": {
+    "message": "عناصر `<object>` تحتوي على نص `[alt]`"
+  },
+  "lighthouse-core/audits/accessibility/tabindex.js | description": {
+    "message": "تشير القيمة الأكبر من 0 إلى وجود طلب تنقل صريح. على الرغم من أن ذلك صحيح تقنيًّا، غالبًا ما يؤدي ذلك إلى إنشاء تجارب محبطة للمستخدمين الذين يعتمدون على التقنيات المساعدة. [مزيد من المعلومات](https://web.dev/tabindex/)"
+  },
+  "lighthouse-core/audits/accessibility/tabindex.js | failureTitle": {
+    "message": "بعض العناصر تحتوي على قيمة `[tabindex]` أكبر من 0"
+  },
+  "lighthouse-core/audits/accessibility/tabindex.js | title": {
+    "message": "لا يتوفّر عنصر له قيمة `[tabindex]` أكبر من 0"
+  },
+  "lighthouse-core/audits/accessibility/td-headers-attr.js | description": {
+    "message": "تحتوي برامج قراءة الشاشة على ميزات لتسهيل التنقل بين الجداول. يمكن تحسين تجربة استخدام برامج قراءة الشاشة من خلال ضمان إشارة الخلايا `<td>` التي تستخدم السمة `[headers]` إلى خلايا أخرى في الجدول نفسه فقط. [مزيد من المعلومات](https://web.dev/td-headers-attr/)"
+  },
+  "lighthouse-core/audits/accessibility/td-headers-attr.js | failureTitle": {
+    "message": "الخلايا الواردة في عنصر `<table>` التي تستخدم السمة `[headers]` تشير فقط إلى خلايا أخرى في الجدول نفسه."
+  },
+  "lighthouse-core/audits/accessibility/td-headers-attr.js | title": {
+    "message": "الخلايا الموجودة في عنصر `<table>` والتي تستخدم السمة `[headers]` تشير فقط إلى خلايا أخرى في الجدول نفسه."
+  },
+  "lighthouse-core/audits/accessibility/th-has-data-cells.js | description": {
+    "message": "تحتوي برامج قراءة الشاشة على ميزات لتسهيل التنقل بين الجداول. قد يؤدي ضمان أن عناوين الجداول تشير دائمًا إلى بعض مجموعات الخلايا إلى تحسين تجربة مستخدمي برامج قراءة الشاشة. [مزيد من المعلومات](https://web.dev/th-has-data-cells/)"
+  },
+  "lighthouse-core/audits/accessibility/th-has-data-cells.js | failureTitle": {
+    "message": "عناصر `<th>` وعناصر `[role=\"columnheader\"/\"rowheader\"]` لا تحتوي على خلايا البيانات التي يتم وصفها."
+  },
+  "lighthouse-core/audits/accessibility/th-has-data-cells.js | title": {
+    "message": "عناصر `<th>` وعناصر `[role=\"columnheader\"/\"rowheader\"]` تحتوي على خلايا البيانات التي يتم وصفها"
+  },
+  "lighthouse-core/audits/accessibility/valid-lang.js | description": {
+    "message": "يؤدي تحديد [BCP 47 language](https://www.w3.org/International/questions/qa-choosing-language-tags#question) صحيحة على العناصر إلى مساعدة قارئ الشاشة على نطق النص بشكلٍ صحيح. [مزيد من المعلومات](https://web.dev/valid-lang/)"
+  },
+  "lighthouse-core/audits/accessibility/valid-lang.js | failureTitle": {
+    "message": "سمات `[lang]` لا تحتوي على قيمة صالحة"
+  },
+  "lighthouse-core/audits/accessibility/valid-lang.js | title": {
+    "message": "سمات `[lang]` تحتوي على قيمة صالحة"
+  },
+  "lighthouse-core/audits/accessibility/video-caption.js | description": {
+    "message": "عندما يقدم الفيديو شرحًا، يَسهُل على المستخدمين الصُم والذين يعانون من إعاقة سمعية فهم مضمونه. [مزيد من المعلومات](https://web.dev/video-caption/)"
+  },
+  "lighthouse-core/audits/accessibility/video-caption.js | failureTitle": {
+    "message": "عناصر `<video>` لا تحتوي على عنصر `<track>` مع `[kind=\"captions\"]`."
+  },
+  "lighthouse-core/audits/accessibility/video-caption.js | title": {
+    "message": "العناصر `<video>` تحتوي على عنصر `<track>` مع `[kind=\"captions\"]`"
+  },
+  "lighthouse-core/audits/accessibility/video-description.js | description": {
+    "message": "توفّر الأوصاف الصوتية معلومات ذات صلة للفيديوهات التي لا يمكن إجراء الحوار بها، مثل تعبيرات الوجه وأجواء الإضاءة. [مزيد من المعلومات](https://web.dev/video-description/)"
+  },
+  "lighthouse-core/audits/accessibility/video-description.js | failureTitle": {
+    "message": "عناصر `<video>` لا تحتوي على عنصر `<track>` مع `[kind=\"description\"]`."
+  },
+  "lighthouse-core/audits/accessibility/video-description.js | title": {
+    "message": "العناصر `<video>` تحتوي على عنصر `<track>` مع `[kind=\"description\"]`"
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | description": {
+    "message": "للحصول على المظهر المثالي على نظام التشغيل iOS عند إضافة المستخدمين تطبيق ويب تقدّمي إلى الشاشة الرئيسية، يمكنك تحديد `apple-touch-icon`. يجب أن تشير هذه السمة إلى مربع غير شفاف بتنسيق PNG مقاسه 192 بكسل (أو 180 بكسل). [مزيد من المعلومات](https://developers.google.com/web/fundamentals/design-and-ux/browser-customization/)"
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | failureTitle": {
+    "message": "لا يتم تقديم رمز `apple-touch-icon` صالح"
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | precomposedWarning": {
+    "message": "سمة `apple-touch-icon-precomposed` هي قديمة، ويُفضّل استخدام سمة `apple-touch-icon`"
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | title": {
+    "message": "يتم تقديم رمز `apple-touch-icon` صالح"
+  },
+  "lighthouse-core/audits/bootup-time.js | chromeExtensionsWarning": {
+    "message": "أثّرت \"إضافات Chrome\" بشكلٍ سلبي في أداء التحميل لهذه الصفحة. ويمكنك تجربة تدقيق الصفحة في وضع التصفُّح المُتخفّي أو من ملف شخصي على Chrome بدون الإضافات."
+  },
+  "lighthouse-core/audits/bootup-time.js | columnScriptEval": {
+    "message": "تقييم النص البرمجي"
+  },
+  "lighthouse-core/audits/bootup-time.js | columnScriptParse": {
+    "message": "تحليل النص البرمجي"
+  },
+  "lighthouse-core/audits/bootup-time.js | columnTotal": {
+    "message": "الوقت الإجمالي لوحدة المعالجة المركزية"
+  },
+  "lighthouse-core/audits/bootup-time.js | description": {
+    "message": "يمكنك تقليل الوقت المستغرق في تحليل جافا سكريبت وإنشائها وتنفيذها. قد يتبين لك أن تسليم أحمال جافا سكريبت بحجم أصغر يساعد على ذلك. [مزيد من المعلومات](https://developers.google.com/web/tools/lighthouse/audits/bootup)"
+  },
+  "lighthouse-core/audits/bootup-time.js | failureTitle": {
+    "message": "تقليل وقت تنفيذ جافا سكريبت"
+  },
+  "lighthouse-core/audits/bootup-time.js | title": {
+    "message": "وقت تنفيذ جافا سكريبت"
+  },
+  "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | description": {
+    "message": "ملفات GIF الكبيرة غير كافية لعرض محتوى صور متحركة. يمكنك استخدام فيديوهات MPEG4/WebM للصور المتحركة وملفات PNG/WebP للصور الثابتة بدلاً من ملف GIF لحفظ وحدات البايت للشبكة. [مزيد من المعلومات](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/replace-animated-gifs-with-video/)"
+  },
+  "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | title": {
+    "message": "استخدام تنسيقات الفيديو لمحتوى الصور المتحركة"
+  },
+  "lighthouse-core/audits/byte-efficiency/offscreen-images.js | description": {
+    "message": "يمكنك إجراء تحميل بطيء للصور الموجودة خارج الشاشة والصور المخفية بعد الانتهاء من تحميل جميع الموارد المهمة من أجل تقليص وقت التفاعل. [مزيد من المعلومات](https://developers.google.com/web/tools/lighthouse/audits/offscreen-images)"
+  },
+  "lighthouse-core/audits/byte-efficiency/offscreen-images.js | title": {
+    "message": "تأجيل الصور خارج الشاشة"
+  },
+  "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | description": {
+    "message": "تحظر الموارد سرعة عرض الصفحة لصفحتك. ويمكنك تضمين عناصر جافا سكريبت/CSS المهمة وتأجيل جميع الأنماط/عناصر جافا سكريبت غير المهمة. [مزيد من المعلومات](https://developers.google.com/web/tools/lighthouse/audits/blocking-resources)"
+  },
+  "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | title": {
+    "message": "استبعاد موارد حظر العرض"
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | description": {
+    "message": "تُكلِّف أحمال الشبكة الكبيرة المستخدمين الكثير من الأموال وترتبط مباشرةً بأوقات التحميل الطويلة. [مزيد من المعلومات](https://developers.google.com/web/tools/lighthouse/audits/network-payloads)"
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | displayValue": {
+    "message": "كان إجمالي الحجم {totalBytes, number, bytes} كيلوبايت."
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | failureTitle": {
+    "message": "تجنُّب الأحمال الضخمة للشبكة"
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | title": {
+    "message": "تجنُّب الأحمال الضخمة للشبكة"
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-css.js | description": {
+    "message": "يمكن أن يؤدي تصغير ملفات CSS إلى تقليل أحجام حمولة الشبكة. [مزيد من المعلومات](https://developers.google.com/web/tools/lighthouse/audits/minify-css)"
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-css.js | title": {
+    "message": "تصغير CSS"
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | description": {
+    "message": "يمكن أن يؤدي تصغير ملفات جافا سكريبت إلى تقليل أحجام الأحمال ووقت تحليل النص البرمجي. [مزيد من المعلومات](https://developers.google.com/speed/docs/insights/MinifyResources)"
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | title": {
+    "message": "تصغير جافا سكريبت"
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | description": {
+    "message": "يمكنك إزالة القواعد الضارة من أوراق الأنماط وتأجيل تحميل خدمة CSS غير المستخدمة في محتوى الجزء المرئي من الصفحة للحد من وحدات البايت غير الضرورية المستهلكة من خلال نشاط الشبكة. [مزيد من المعلومات](https://developers.google.com/web/tools/lighthouse/audits/unused-css)"
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | title": {
+    "message": "إزالة خدمة CSS غير المُستخدَمة"
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-javascript.js | description": {
+    "message": "يمكنك إزالة جافا سكريبت غير المُستخدَم لتقليل وحدات البايت التي يستهلكها نشاط الشبكة."
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-javascript.js | title": {
+    "message": "إزالة جافا سكريبت غير المستخدم"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | description": {
+    "message": "يمكن لفترة التخزين المؤقت الطويلة تسريع عملية تكرار الزيارات إلى صفحتك. [مزيد من المعلومات](https://developers.google.com/web/tools/lighthouse/audits/cache-policy)"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | displayValue": {
+    "message": "{itemCount,plural, =1{تم العثور على مورد واحد}zero{تم العثور على # مورد}two{تم العثور على مورديْنِ (#)}few{تم العثور على # موارد}many{تم العثور على # موردًا}other{تم العثور على # مورد}}"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | failureTitle": {
+    "message": "عرض الأصول الثابتة من خلال سياسة ذاكرة التخزين المؤقت الفعالة"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | title": {
+    "message": "استخدام سياسة ذاكرة التخزين المؤقت الفعالة على الأصول الثابتة"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | description": {
+    "message": "يتم تحميل الصور المحسَّنة بشكلٍ أسرع وتستهلك بيانات أقل لشبكة الجوّال. [مزيد من المعلومات](https://developers.google.com/web/tools/lighthouse/audits/optimize-images)"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | title": {
+    "message": "تشفير الصور بكفاءة"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | description": {
+    "message": "يمكنك عرض صور بحجم مناسب لحفظ بيانات شبكة الجوّال وتحسين وقت التحميل. [مزيد من المعلومات](https://developers.google.com/web/tools/lighthouse/audits/oversized-images)"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | title": {
+    "message": "الصور ذات الحجم المناسب"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | description": {
+    "message": "يجب عرض الموارد المستندة إلى النص باستخدام الضغط (gzip أو الانكماش أو brotli) لتقليل إجمالي وحدات البايت للشبكة. [مزيد من المعلومات](https://developers.google.com/web/tools/lighthouse/audits/text-compression)"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | title": {
+    "message": "تفعيل ضغط النص"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | description": {
+    "message": "غالبًا ما توفِّر تنسيقات الصور، مثل JPEG 2000 وJPEG XR وWebP، ضغطًا أفضل من تنسيق PNG أو JPEG، وهذا يعني تنزيلاً أسرع واستهلاكًا أقل للبيانات. [مزيد من المعلومات](https://developers.google.com/web/tools/lighthouse/audits/webp)"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | title": {
+    "message": "عرض الصور بتنسيقات الجيل القادم"
+  },
+  "lighthouse-core/audits/content-width.js | description": {
+    "message": "في حال كان عرض محتوى التطبيق لا يتطابق مع عرض إطار العرض، قد لا يتم تحسين تطبيقك لشاشات الجوّال. [مزيد من المعلومات](https://developers.google.com/web/tools/lighthouse/audits/content-sized-correctly-for-viewport)"
+  },
+  "lighthouse-core/audits/content-width.js | explanation": {
+    "message": "لا يتطابق حجم إطار العرض {innerWidth} بكسل مع حجم النافذة {outerWidth} بكسل."
+  },
+  "lighthouse-core/audits/content-width.js | failureTitle": {
+    "message": "عدم تحديد حجم المحتوى بشكلٍ صحيح لإطار العرض"
+  },
+  "lighthouse-core/audits/content-width.js | title": {
+    "message": "تحديد حجم المحتوى بشكلٍ صحيح لإطار العرض"
+  },
+  "lighthouse-core/audits/critical-request-chains.js | description": {
+    "message": "توضح لك \"سلاسل الطلبات المهمة\" أدناه الموارد التي تم تحميلها بأولوية عالية. ويمكنك تقليل طول السلاسل أو تقليل حجم تنزيل الموارد أو تأجيل تنزيل الموارد غير الضرورية لتحسين تحميل الصفحة. [مزيد من المعلومات](https://developers.google.com/web/tools/lighthouse/audits/critical-request-chains)"
+  },
+  "lighthouse-core/audits/critical-request-chains.js | displayValue": {
+    "message": "{itemCount,plural, =1{تم العثور على سلسلة واحدة}zero{تم العثور على # سلسلة}two{تم العثور على سلسلتيْنِ (#)}few{تم العثور على # سلاسل}many{تم العثور على # سلسلةً}other{تم العثور على # سلسلة}}"
+  },
+  "lighthouse-core/audits/critical-request-chains.js | title": {
+    "message": "تقليل عمق الطلبات المهمة"
+  },
+  "lighthouse-core/audits/deprecations.js | columnDeprecate": {
+    "message": "إيقاف / تحذير"
+  },
+  "lighthouse-core/audits/deprecations.js | columnLine": {
+    "message": "السطر"
+  },
+  "lighthouse-core/audits/deprecations.js | description": {
+    "message": "ستتم في النهاية إزالة واجهات برمجة التطبيقات المتوقفة من المتصفح. [مزيد من المعلومات](https://web.dev/deprecations)"
+  },
+  "lighthouse-core/audits/deprecations.js | displayValue": {
+    "message": "{itemCount,plural, =1{تم العثور على تحذير واحد}zero{تم العثور على # تحذير}two{تم العثور على تحذيرين (#)}few{تم العثور على # تحذيرات}many{تم العثور على # تحذيرًا}other{تم العثور على # تحذير}}"
+  },
+  "lighthouse-core/audits/deprecations.js | failureTitle": {
+    "message": "يتم استخدام واجهات برمجة التطبيقات المتوقفة"
+  },
+  "lighthouse-core/audits/deprecations.js | title": {
+    "message": "يتم تجنّب واجهات برمجة التطبيقات المتوقفة"
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | description": {
+    "message": "تم إيقاف ذاكرة التخزين المؤقت للتطبيق. [مزيد من المعلومات](https://web.dev/appcache-manifest)"
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | displayValue": {
+    "message": "تم العثور على \"{AppCacheManifest}\""
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | failureTitle": {
+    "message": "يتم استخدام ذاكرة التخزين المؤقت للتطبيق"
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | title": {
+    "message": "يتم تجنُب ذاكرة التخزين المؤقت للتطبيق"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | description": {
+    "message": "يؤدي تحديد doctype إلى منع المتصفح من التبديل إلى وضع Quirks. [مزيد من المعلومات](https://web.dev/doctype)"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationBadDoctype": {
+    "message": "يجب أن يكون اسم DOCTYPE هو سلسلة الأحرف الصغيرة `html`"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationNoDoctype": {
+    "message": "يجب أن يحتوي المستند على DOCTYPE"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationPublicId": {
+    "message": "من الممكن أن تكون publicId المتوقعة سلسلة فارغة"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationSystemId": {
+    "message": "من الممكن أن تكون systemId المتوقعة سلسلة فارغة"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | failureTitle": {
+    "message": "تفتقر الصفحة إلى HTML DOCTYPE، مما يؤدي إلى تشغيل وضع Quirks"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | title": {
+    "message": "الصفحة تحتوي على HTML DOCTYPE"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | columnElement": {
+    "message": "العنصر"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | columnStatistic": {
+    "message": "الإحصائية"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | columnValue": {
+    "message": "القيمة"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | description": {
+    "message": "ينصح مهندسو المتصفّح بأن تحتوي الصفحات على أقل من 1500 عنصر DOM تقريبًا. من المفضّل أن يقلّ عمق الشجرة عن 32 عنصرًا وألّا يزيد عن 60 عنصرًا فرعيًا/رئيسيًا. يمكن أن يزيد حجم DOM الكبير من استخدام الذاكرة، ويتسبب في إجراء [حسابات نمطية](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations) أطول، وينتج عنه [عمليات مُكلفة لإعادة عرض التنسيق](https://developers.google.com/speed/articles/reflow). [مزيد من المعلومات](https://web.dev/dom-size)"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | displayValue": {
+    "message": "{itemCount,plural, =1{عنصر واحد}zero{# عنصر}two{عنصرين (#)}few{# عناصر}many{# عنصرًا}other{# عنصر}}"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | failureTitle": {
+    "message": "تجنُب حجم DOM الزائد"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | statisticDOMDepth": {
+    "message": "الحد الأقصى لعمق DOM"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | statisticDOMElements": {
+    "message": "إجمالي عدد عناصر DOM"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | statisticDOMWidth": {
+    "message": "الحد الأقصى من عناصر الأطفال"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | title": {
+    "message": "تجنُب حجم DOM الزائد"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | columnRel": {
+    "message": "Rel"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | columnTarget": {
+    "message": "السمة المُستهدَفة"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | description": {
+    "message": "يمكنك إضافة `rel=\"noopener\"` أو `rel=\"noreferrer\"` إلى أي روابط خارجية لتحسين الأداء ومنع الثغرات الأمنية. [مزيد من المعلومات](https://web.dev/external-anchors-use-rel-noopener)"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | failureTitle": {
+    "message": "الروابط إلى وجهات مشتركة المصدر هي غير آمنة"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | title": {
+    "message": "الروابط إلى وجهات مشتركة المصدر هي آمنة"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | warning": {
+    "message": "يتعذّر تحديد الوجهة لإعلان ثابت {anchorHTML}). في حال عدم استخدامه كرابط تشعبي، يمكنك إزالة target=_blank."
+  },
+  "lighthouse-core/audits/dobetterweb/geolocation-on-start.js | description": {
+    "message": "لا يثق المستخدمون في المواقع الإلكترونية التي تطلب مواقعهم الجغرافية بدون سياق أو قد يؤدي ذلك إلى إرباكهم. يمكنك ربط الطلب بإجراء المستخدم بدلاً من ذلك. [مزيد من المعلومات](https://web.dev/geolocation-on-start)"
+  },
+  "lighthouse-core/audits/dobetterweb/geolocation-on-start.js | failureTitle": {
+    "message": "يتم طلب إذن رصد الموقع الجغرافي عند تحميل الصفحة"
+  },
+  "lighthouse-core/audits/dobetterweb/geolocation-on-start.js | title": {
+    "message": "يتم تجنُب طلب إذن رصد الموقع الجغرافي عند تحميل الصفحة"
+  },
+  "lighthouse-core/audits/dobetterweb/js-libraries.js | columnVersion": {
+    "message": "الإصدار"
+  },
+  "lighthouse-core/audits/dobetterweb/js-libraries.js | description": {
+    "message": "تم رصد جميع مكتبات الواجهة الأمامية جافا سكريبت في الصفحة. [مزيد من المعلومات](https://web.dev/js-libraries)"
+  },
+  "lighthouse-core/audits/dobetterweb/js-libraries.js | title": {
+    "message": "مكتبات جافا سكريبت التي تم رصدها"
+  },
+  "lighthouse-core/audits/dobetterweb/no-document-write.js | description": {
+    "message": "بالنسبة إلى المستخدمين الذين لديهم اتصالات بطيئة، يمكن للبرامج النصية الخارجية التي يتم إدخالها ديناميكيًا عبر `document.write()` تأخير تحميل الصفحة لمدة ثوانٍ متعددة. [مزيد من المعلومات](https://web.dev/no-document-write)"
+  },
+  "lighthouse-core/audits/dobetterweb/no-document-write.js | failureTitle": {
+    "message": "يتم استخدام `document.write()`"
+  },
+  "lighthouse-core/audits/dobetterweb/no-document-write.js | title": {
+    "message": "يتم تجنُب `document.write()`"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | columnSeverity": {
+    "message": "أعلى نسبة خطورة"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | columnVersion": {
+    "message": "إصدار المكتبة"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | columnVuln": {
+    "message": "عدد الثغرات"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | description": {
+    "message": "قد تحتوي بعض البرامج النصية للجهات الخارجية على ثغرات أمنية معروفة يمكن للمهاجمين تحديدها واستغلالها بسهولة. [مزيد من المعلومات](https://web.dev/no-vulnerable-libraries)"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | displayValue": {
+    "message": "{itemCount,plural, =1{تم رصد ثغرة واحدة}zero{تم رصد # ثغرة}two{تم رصد ثغرتين (#)}few{تم رصد # ثغرات}many{تم رصد # ثغرةً}other{تم رصد # ثغرة}}"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | failureTitle": {
+    "message": "يتم تضمين مكتبات الواجهة الأمامية جافا سكريبت ذات الثغرات الأمنية المعروفة"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | rowSeverityHigh": {
+    "message": "مرتفع"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | rowSeverityLow": {
+    "message": "منخفض"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | rowSeverityMedium": {
+    "message": "متوسط"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | title": {
+    "message": "يتم تجنُب مكتبات الواجهة الأمامية جافا سكريبت ذات الثغرات الأمنية المعروفة"
+  },
+  "lighthouse-core/audits/dobetterweb/notification-on-start.js | description": {
+    "message": "لا يثق المستخدمون في المواقع الإلكترونية التي تطلب إرسال الإشعارات بدون سياق أو قد يؤدي ذلك إلى إرباكهم. يمكنك ربط الطلب بإيماءات المستخدم بدلاً من ذلك. [مزيد من المعلومات](https://web.dev/notification-on-start)"
+  },
+  "lighthouse-core/audits/dobetterweb/notification-on-start.js | failureTitle": {
+    "message": "يتم طلب إذن الإشعار عند تحميل الصفحة"
+  },
+  "lighthouse-core/audits/dobetterweb/notification-on-start.js | title": {
+    "message": "يتم تجنُّب طلب إذن الإشعار عند تحميل الصفحة"
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | columnFailingElem": {
+    "message": "العناصر التي لا تسمح بلصق المحتوى"
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | description": {
+    "message": "يؤدي منع لصق كلمة المرور إلى تقويض سياسة الأمان الجيدة. [مزيد من المعلومات](https://web.dev/password-inputs-can-be-pasted-into)"
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | failureTitle": {
+    "message": "يتم منع المستخدمين من اللصق في حقول كلمات المرور"
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | title": {
+    "message": "يتم السماح للمستخدمين باللصق في حقول كلمات المرور"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | columnProtocol": {
+    "message": "البروتوكول"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | description": {
+    "message": "يوفّر HTTP/2 العديد من المزايا على HTTP/1.1، بما في ذلك عناوين البرامج الثنائية وعملية مضاعفة توجيه الإشارات ودفع الخادم. [مزيد من المعلومات](https://web.dev/uses-http2)"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | displayValue": {
+    "message": "{itemCount,plural, =1{لم يتم عرض طلب واحد عبر HTTP/2}zero{لم يتم عرض # طلب عبر HTTP/2}two{لم يتم عرض طلبين (#) عبر HTTP/2}few{لم يتم عرض # طلبات عبر HTTP/2}many{لم يتم عرض # طلبًا عبر HTTP/2}other{لم يتم عرض # طلب عبر HTTP/2}}"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | failureTitle": {
+    "message": "لا تستخدم صفحة الويب HTTP/2 لجميع مواردها"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | title": {
+    "message": "تستخدم صفحة الويب HTTP/2 لمواردها الخاصة"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-passive-event-listeners.js | description": {
+    "message": "يمكنك وضع علامة على \"أدوات معالجة أحداث لمس الشاشة وتحريك الماوس\" بصفتها `passive` لتحسين عملية التنقل في صفحتك. [مزيد من المعلومات](https://web.dev/uses-passive-event-listeners)"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-passive-event-listeners.js | failureTitle": {
+    "message": "لا يتم استخدام أدوات معالجة الحدث السلبية لتحسين عملية التنقل في الصفحة"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-passive-event-listeners.js | title": {
+    "message": "يتم استخدام أدوات معالجة الحدث السلبية لتحسين أداء التمرير"
+  },
+  "lighthouse-core/audits/errors-in-console.js | columnDesc": {
+    "message": "الوصف"
+  },
+  "lighthouse-core/audits/errors-in-console.js | description": {
+    "message": "تشير الأخطاء التي تم تسجيلها في وحدة التحكّم إلى مشاكل لم يتم حلها. قد تنتج هذه المشاكل من إخفاقات طلب الشبكة ومشاكل أخرى تتعلق بالمتصفّح. [مزيد من المعلومات](https://web.dev/errors-in-console)"
+  },
+  "lighthouse-core/audits/errors-in-console.js | failureTitle": {
+    "message": "تم تسجيل أخطاء المتصفح في وحدة التحكّم"
+  },
+  "lighthouse-core/audits/errors-in-console.js | title": {
+    "message": "لم يتم تسجيل أخطاء المتصفح في وحدة التحكّم"
+  },
+  "lighthouse-core/audits/font-display.js | description": {
+    "message": "يمكنك الاستفادة من ميزة CSS لعرض الخطوط لضمان أن يكون النص مرئيًا للمستخدم أثناء تحميل خطوط موقع ويب. [مزيد من المعلومات](https://developers.google.com/web/updates/2016/02/font-display)"
+  },
+  "lighthouse-core/audits/font-display.js | failureTitle": {
+    "message": "التأكد من بقاء النص مرئيًا أثناء تحميل خط موقع ويب"
+  },
+  "lighthouse-core/audits/font-display.js | title": {
+    "message": "تظل جميع النصوص مرئية أثناء تحميل خط موقع ويب"
+  },
+  "lighthouse-core/audits/font-display.js | undeclaredFontURLWarning": {
+    "message": "لم يتمكّن Lighthouse من التحقّق تلقائيًا من قيمة عرض الخط لعنوان URL التالي: {fontURL}"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | columnActual": {
+    "message": "نسبة العرض إلى الارتفاع (الفعلية)"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | columnDisplayed": {
+    "message": "نسبة العرض إلى الارتفاع (معروضة)"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | description": {
+    "message": "يجب أن تتوافق أبعاد عرض الصورة مع نسبة العرض إلى الارتفاع الطبيعية. [مزيد من المعلومات](https://web.dev/image-aspect-ratio)"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | failureTitle": {
+    "message": "يتم عرض الصور مع نسبة عرض إلى ارتفاع غير صحيحة"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | title": {
+    "message": "يتم عرض الصور مع نسبة العرض إلى الارتفاع الصحيحة"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | warningCompute": {
+    "message": "معلومات تغيير حجم الصورة غير صالحة {url}"
+  },
+  "lighthouse-core/audits/installable-manifest.js | description": {
+    "message": "يمكن للمتصفحات أن تطلب من المستخدمين بشكل مسبق إضافة تطبيقك إلى الشاشة الرئيسية، ويمكن بذلك زيادة التفاعل. [مزيد من المعلومات](https://developers.google.com/web/tools/lighthouse/audits/install-prompt)"
+  },
+  "lighthouse-core/audits/installable-manifest.js | failureTitle": {
+    "message": "عدم استيفاء بيان تطبيق الويب متطلبات التثبيت"
+  },
+  "lighthouse-core/audits/installable-manifest.js | title": {
+    "message": "استيفاء بيان تطبيق الويب متطلبات التثبيت"
+  },
+  "lighthouse-core/audits/is-on-https.js | columnInsecureURL": {
+    "message": "عنوان URL غير آمن"
+  },
+  "lighthouse-core/audits/is-on-https.js | description": {
+    "message": "يجب حماية جميع المواقع الإلكترونية باستخدام HTTPS، حتى تلك المواقع التي لا تتعامل مع البيانات الحساسة. يمنع HTTPS الدخلاء من العبث بالاتصالات بين تطبيقك والمستخدمين أو الاستماع إليها بشكل سلبي، وهو شرط مسبق لـ HTTP/2 والعديد من واجهات برمجة تطبيقات الأنظمة الأساسية للويب الجديدة. [مزيد من المعلومات](https://web.dev/is-on-https)"
+  },
+  "lighthouse-core/audits/is-on-https.js | displayValue": {
+    "message": "{itemCount,plural, =1{تم العثور على طلب غير آمن واحد}zero{تم العثور على # طلب غير آمن}two{تم العثور على طلبين غير آمنين (#)}few{تم العثور على # طلبات غير آمنة}many{تم العثور على # طلبًا غير آمن}other{تم العثور على # طلب غير آمن}}"
+  },
+  "lighthouse-core/audits/is-on-https.js | failureTitle": {
+    "message": "لا يتم استخدام HTTPS"
+  },
+  "lighthouse-core/audits/is-on-https.js | title": {
+    "message": "يتم استخدام HTTPS"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | description": {
+    "message": "إنّ تحميل الصفحات بشكل سريع عبر شبكة الجوّال يضمن توفير تجربة استخدام عالية الجودة. [مزيد من المعلومات](https://developers.google.com/web/tools/lighthouse/audits/fast-3g)"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | displayValueText": {
+    "message": "الوقت التفاعلي {timeInMs, number, seconds} ثانية"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | displayValueTextWithOverride": {
+    "message": "الوقت التفاعلي على شبكة الجوّال التي تمت محاكاتها لمدة {timeInMs, number, seconds}  ثانية"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | explanationLoadSlow": {
+    "message": "تحميل الصفحة بطيء جدًا وليس تفاعليًا خلال 10 ثوانٍ. يُرجى الاطّلاع على الفرص وبيانات التشخيص في قسم \"الأداء\" للتعرُّف على طريقة التحسين."
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | failureTitle": {
+    "message": "تحميل الصفحة على شبكات الجوّال ليس سريعًا بشكلٍ كافٍ"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | title": {
+    "message": "تحميل الصفحة سريع بشكلٍ كافٍ في شبكات الجوّال"
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | columnCategory": {
+    "message": "الفئة"
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | description": {
+    "message": "يمكنك تقليل الوقت المستغرق في تحليل جافا سكريبت وإنشائه وتنفيذه. قد يتبين لك أن تسليم أحمال جافا سكريبت بحجم أصغر يساعد في ذلك."
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | failureTitle": {
+    "message": "تقليل سلسلة العمل الرئيسية"
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | title": {
+    "message": "تقليل سلسلة العمل الرئيسية"
+  },
+  "lighthouse-core/audits/manual/pwa-cross-browser.js | description": {
+    "message": "للوصول إلى أكبر عدد من المستخدمين، يجب استخدام المواقع الإلكترونية على كل متصفح رئيسي. [مزيد من المعلومات](https://developers.google.com/web/progressive-web-apps/checklist#site-works-cross-browser)"
+  },
+  "lighthouse-core/audits/manual/pwa-cross-browser.js | title": {
+    "message": "الموقع الإلكتروني يعمل عبر المتصفح"
+  },
+  "lighthouse-core/audits/manual/pwa-each-page-has-url.js | description": {
+    "message": "يُرجى التأكّد من أن الصفحات الفردية قابلة للربط بشكلٍ كبير عبر عنوان URL وأن عناوين URL فريدة لغرض إمكانية المشاركة على وسائل التواصل الاجتماعي. [مزيد من المعلومات](https://developers.google.com/web/progressive-web-apps/checklist#each-page-has-a-url)"
+  },
+  "lighthouse-core/audits/manual/pwa-each-page-has-url.js | title": {
+    "message": "كل صفحة تحتوي على عنوان URL"
+  },
+  "lighthouse-core/audits/manual/pwa-page-transitions.js | description": {
+    "message": "من المفترض إجراء عمليات النقل بسرعة عند النقر حولها، حتى على شبكة بطيئة، وهو مفتاح للأداء المُلاحظ. [مزيد من المعلومات](https://developers.google.com/web/progressive-web-apps/checklist#page-transitions-dont-feel-like-they-block-on-the-network)"
+  },
+  "lighthouse-core/audits/manual/pwa-page-transitions.js | title": {
+    "message": "عمليات نقل الصفحة لا تبدو أنها محظورة على الشبكة"
+  },
+  "lighthouse-core/audits/metrics/estimated-input-latency.js | description": {
+    "message": "إن \"وقت الاستجابة المقدر للإدخال\" هو تقدير لطول المدة التي يستغرقها تطبيقك للاستجابة لإدخال المستخدم بالمللي ثانية، وذلك أثناء الثواني الخمس الأكثر انشغالاً في فترة تحميل الصفحة. وفي حال كان وقت الاستجابة أكثر من 50 مللي ثانية، يمكن للمستخدمين اعتبار تطبيقك بأنه بطيء في التفاعل. [مزيد من المعلومات](https://developers.google.com/web/tools/lighthouse/audits/estimated-input-latency)"
+  },
+  "lighthouse-core/audits/metrics/estimated-input-latency.js | title": {
+    "message": "وقت الاستجابة المُقدّر للإدخال"
+  },
+  "lighthouse-core/audits/metrics/first-contentful-paint.js | description": {
+    "message": "تحدد \"سرعة عرض المحتوى على الصفحة\" الوقت الذي يُعرَض فيه أول صورة أو نص. [مزيد من المعلومات](https://developers.google.com/web/tools/lighthouse/audits/first-contentful-paint)"
+  },
+  "lighthouse-core/audits/metrics/first-contentful-paint.js | title": {
+    "message": "First Contentful Paint"
+  },
+  "lighthouse-core/audits/metrics/first-cpu-idle.js | description": {
+    "message": "تشير \"وحدة المعالجة المركزية الأولى الخاملة\" إلى المرة الأولى التي يتوفر فيها وقت كافٍ للعملية الرئيسية للصفحة حتى تعالج إدخالات المستخدم. [مزيد من المعلومات](https://developers.google.com/web/tools/lighthouse/audits/first-interactive)"
+  },
+  "lighthouse-core/audits/metrics/first-cpu-idle.js | title": {
+    "message": "وحدة المعالجة المركزية الأولى الخاملة"
+  },
+  "lighthouse-core/audits/metrics/first-meaningful-paint.js | description": {
+    "message": "تقيس \"سرعة عرض أوّل محتوى مفيد على الصفحة\" الوقت الذي يكون فيه المحتوى الأساسي لصفحة مرئيًا. [مزيد من المعلومات](https://developers.google.com/web/tools/lighthouse/audits/first-meaningful-paint)"
+  },
+  "lighthouse-core/audits/metrics/first-meaningful-paint.js | title": {
+    "message": "First Meaningful Paint"
+  },
+  "lighthouse-core/audits/metrics/interactive.js | description": {
+    "message": "وقت التفاعل هو مقدار الوقت المستغرق حتى تصبح الصفحة تفاعلية بالكامل. [مزيد من المعلومات](https://developers.google.com/web/tools/lighthouse/audits/consistently-interactive)"
+  },
+  "lighthouse-core/audits/metrics/interactive.js | title": {
+    "message": "وقت التفاعل"
+  },
+  "lighthouse-core/audits/metrics/max-potential-fid.js | description": {
+    "message": "الحد الأقصى المحتمل من \"مهلة الاستجابة لأوّل إدخال\" الذي قد يواجهه المستخدمون هو المدة بالمللي ثانية لأطول مهمة. [مزيد من المعلومات](https://developers.google.com/web/updates/2018/05/first-input-delay)"
+  },
+  "lighthouse-core/audits/metrics/max-potential-fid.js | title": {
+    "message": "الحد الأقصى المحتمل من مهلة الاستجابة لأوّل إدخال"
+  },
+  "lighthouse-core/audits/metrics/speed-index.js | description": {
+    "message": "يوضح مؤشر السرعة وتيرة تعبئة محتوى الصفحة على شاشة المستخدم. [مزيد من المعلومات](https://developers.google.com/web/tools/lighthouse/audits/speed-index)"
+  },
+  "lighthouse-core/audits/metrics/speed-index.js | title": {
+    "message": "مؤشر السرعة"
+  },
+  "lighthouse-core/audits/metrics/total-blocking-time.js | description": {
+    "message": "مجموع جميع الفترات الزمنية بين \"سرعة عرض المحتوى على الصفحة\" و\"وقت التفاعل\"، عندما تتجاوز مدة المهمة 50 مللي ثانية، معبرًا عنها بالمللي ثانية."
+  },
+  "lighthouse-core/audits/metrics/total-blocking-time.js | title": {
+    "message": "إجمالي حظر الوقت"
+  },
+  "lighthouse-core/audits/network-rtt.js | description": {
+    "message": "تؤثر مُدد الإرسال والاستقبال للشبكة تأثيرًا كبيرًا في مستوى الأداء. في حال كانت مدة الإرسال والاستقبال كبيرة، يشير ذلك إلى احتمال تحسّن أداء الخوادم الأقرب إلى المستخدم. [مزيد من المعلومات](https://hpbn.co/primer-on-latency-and-bandwidth/)"
+  },
+  "lighthouse-core/audits/network-rtt.js | title": {
+    "message": "أوقات إرسال واستقبال الشبكة"
+  },
+  "lighthouse-core/audits/network-server-latency.js | description": {
+    "message": "قد تؤثر أوقات استجابة الخادم في أداء الويب. في حال كان وقت استجابة الخادم للأصل طويلاً، هذه إشارة إلى أنه تم تحميل الخادم بشكلٍ زائد أو مستوى أدائه ضعيف في الخلفية. [مزيد من المعلومات](https://hpbn.co/primer-on-web-performance/#analyzing-the-resource-waterfall)"
+  },
+  "lighthouse-core/audits/network-server-latency.js | title": {
+    "message": "أوقات الاستجابة لواجهة الخادم الخلفية"
+  },
+  "lighthouse-core/audits/offline-start-url.js | description": {
+    "message": "يمكّن مشغّل الخدمات تطبيق الويب من أن يصبح موثوقًا به في ظروف الشبكة التي لا يمكن التنبؤ بها. [مزيد من المعلومات](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)"
+  },
+  "lighthouse-core/audits/offline-start-url.js | failureTitle": {
+    "message": "`start_url` لا تستجيب باستخدام رمز 200 عند عدم الاتصال بالإنترنت"
+  },
+  "lighthouse-core/audits/offline-start-url.js | title": {
+    "message": "`start_url` يستجيب باستخدام رمز 200 عند عدم الاتصال بالإنترنت"
+  },
+  "lighthouse-core/audits/offline-start-url.js | warningCantStart": {
+    "message": "تعذّر على Lighthouse قراءة `start_url` من البيان. ونتيجة لذلك، كان من المفترض أن يكون `start_url` هو عنوان URL للمستند. رسالة خطأ: '{manifestWarning}'."
+  },
+  "lighthouse-core/audits/performance-budget.js | columnOverBudget": {
+    "message": "تجاوز الميزانية"
+  },
+  "lighthouse-core/audits/performance-budget.js | description": {
+    "message": "يمكنك الحفاظ على كمية طلبات الشبكة وحجمها ضمن الاستهدافات المحدّدة في ميزانية الأداء المقدّمة. [مزيد من المعلومات](https://developers.google.com/web/tools/lighthouse/audits/budgets)"
+  },
+  "lighthouse-core/audits/performance-budget.js | requestCountOverBudget": {
+    "message": "{count,plural, =1{طلب واحد}zero{# طلب}two{طلبان (#)}few{# طلبات}many{# طلبًا}other{# طلب}}"
+  },
+  "lighthouse-core/audits/performance-budget.js | title": {
+    "message": "ميزانية الأداء"
+  },
+  "lighthouse-core/audits/redirects-http.js | description": {
+    "message": "في حال أعددت HTTPS مسبقًا، تأكّد من إعادة توجيه جميع زيارات HTTP إلى HTTPS من أجل تفعيل ميزات الويب الآمنة لجميع المستخدمين. [مزيد من المعلومات](https://developers.google.com/web/tools/lighthouse/audits/http-redirects-to-https)"
+  },
+  "lighthouse-core/audits/redirects-http.js | failureTitle": {
+    "message": "عدم إعادة توجيه زيارات HTTP إلى HTTPS"
+  },
+  "lighthouse-core/audits/redirects-http.js | title": {
+    "message": "إعادة توجيه زيارات HTTP إلى HTTPS"
+  },
+  "lighthouse-core/audits/redirects.js | description": {
+    "message": "تؤدي عمليات إعادة التوجيه إلى حدوث تأخيرات إضافية قبل أن يتم تحميل الصفحة. [مزيد من المعلومات](https://developers.google.com/web/tools/lighthouse/audits/redirects)"
+  },
+  "lighthouse-core/audits/redirects.js | title": {
+    "message": "تجنُب عمليات إعادة توجيه الصفحات المتعددة"
+  },
+  "lighthouse-core/audits/resource-summary.js | description": {
+    "message": "لضبط ميزانيات لكمية موارد الصفحة وحجمها، يمكنك إضافة ملف budget.json. [مزيد من المعلومات](https://developers.google.com/web/tools/lighthouse/audits/budgets)"
+  },
+  "lighthouse-core/audits/resource-summary.js | displayValue": {
+    "message": "{requestCount,plural, =1{طلب واحد • {byteCount, number, bytes} كيلوبايت}zero{# طلب • {byteCount, number, bytes} كيلوبايت}two{طلبان (#) • {byteCount, number, bytes} كيلوبايت}few{# طلبات • {byteCount, number, bytes} كيلوبايت}many{# طلبًا • {byteCount, number, bytes} كيلوبايت}other{# طلب • {byteCount, number, bytes} كيلوبايت}}"
+  },
+  "lighthouse-core/audits/resource-summary.js | title": {
+    "message": "الحفاظ على انخفاض عدد الطلبات ونقل الأحجام الصغيرة"
+  },
+  "lighthouse-core/audits/seo/canonical.js | description": {
+    "message": "تقترح الروابط الأساسية عنوان URL للعرض في نتائج البحث. [مزيد من المعلومات](https://web.dev/canonical)"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationConflict": {
+    "message": "تتعدّد عناوين URL المتضاربة ({urlList})."
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationDifferentDomain": {
+    "message": "يشير عنوان URL إلى نطاق مختلف ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationInvalid": {
+    "message": "عنوان URL غير صالح ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationPointsElsewhere": {
+    "message": "يشير عنوان URL إلى موقع جغرافي `hreflang` آخر ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationRelative": {
+    "message": "عنوان URL هو نسبي ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationRoot": {
+    "message": "يشير إلى عنوان URL الجذر للنطاق (الصفحة الرئيسية)، بدلاً من صفحة مكافئة للمحتوى"
+  },
+  "lighthouse-core/audits/seo/canonical.js | failureTitle": {
+    "message": "المستند لا يحتوي على سمة `rel=canonical` صالحة"
+  },
+  "lighthouse-core/audits/seo/canonical.js | title": {
+    "message": "المستند يحتوي على سمة `rel=canonical` صالحة"
+  },
+  "lighthouse-core/audits/seo/font-size.js | description": {
+    "message": "أحجام الخطوط الأقل من 12 بكسل صغيرة جدًا بحيث لا يمكن قراءتها بسهولة وتتطلب من مستخدمي الجوّال \"تحريك الإصبعين للتكبير أو التصغير\" من أجل قراءتها. يمكنك بذل قصارى جهدك للحصول على نسبة أكبر من 60% من نص الصفحة بمقدار أكبر من أو يساوي 12 بكسل. [مزيد من المعلومات](https://web.dev/font-size)"
+  },
+  "lighthouse-core/audits/seo/font-size.js | displayValue": {
+    "message": "نص {decimalProportion, number, extendedPercent} قابل للقراءة"
+  },
+  "lighthouse-core/audits/seo/font-size.js | explanationViewport": {
+    "message": "النص غير مقروء لأنه لا تتوفّر علامة وصفية لإطار العرض محسنة لشاشات الجوّال."
+  },
+  "lighthouse-core/audits/seo/font-size.js | explanationWithDisclaimer": {
+    "message": "نسبة {decimalProportion, number, extendedPercent} من النص هي صغيرة جدًا (استنادًا إلى نموذج {decimalProportionVisited, number, extendedPercent})."
+  },
+  "lighthouse-core/audits/seo/font-size.js | failureTitle": {
+    "message": "لا يستخدم المستند أحجام الخطوط القابلة للقراءة"
+  },
+  "lighthouse-core/audits/seo/font-size.js | title": {
+    "message": "يستخدم المستند أحجام الخط القابلة للقراءة"
+  },
+  "lighthouse-core/audits/seo/hreflang.js | description": {
+    "message": "تخبر روابط hreflang محركات البحث عن إصدار الصفحة الذي يجب إدراجه في نتائج البحث للغة أو منطقة معيّنة. [مزيد من المعلومات](https://web.dev/hreflang)"
+  },
+  "lighthouse-core/audits/seo/hreflang.js | failureTitle": {
+    "message": "المستند لا يحتوي على سمة `hreflang` صالحة"
+  },
+  "lighthouse-core/audits/seo/hreflang.js | title": {
+    "message": "المستند يحتوي على سمة `hreflang` صالحة"
+  },
+  "lighthouse-core/audits/seo/http-status-code.js | description": {
+    "message": "قد لا تتم فهرسة الصفحات التي تتضمّن رموز حالة HTTP غير صالحة بشكلٍ صحيح. [مزيد من المعلومات](https://web.dev/http-status-code)"
+  },
+  "lighthouse-core/audits/seo/http-status-code.js | failureTitle": {
+    "message": "تحتوي الصفحة على رمز حالة HTTP غير صالح"
+  },
+  "lighthouse-core/audits/seo/http-status-code.js | title": {
+    "message": "تحتوي الصفحة على رمز حالة HTTP صالح"
+  },
+  "lighthouse-core/audits/seo/is-crawlable.js | description": {
+    "message": "يتعذّر على محركات البحث تضمين صفحاتك في نتائج البحث في حال عدم حصولها على إذن للزحف إلى هذه الصفحات. [مزيد من المعلومات](https://web.dev/is-crawable)"
+  },
+  "lighthouse-core/audits/seo/is-crawlable.js | failureTitle": {
+    "message": "يتم حظر الصفحة من الفهرسة"
+  },
+  "lighthouse-core/audits/seo/is-crawlable.js | title": {
+    "message": "الصفحة ليست محظورة من الفهرسة"
+  },
+  "lighthouse-core/audits/seo/link-text.js | description": {
+    "message": "يساعد نص الرابط الوصفي محركات البحث على فهم المحتوى. [مزيد من المعلومات](https://web.dev/link-text)"
+  },
+  "lighthouse-core/audits/seo/link-text.js | displayValue": {
+    "message": "{itemCount,plural, =1{تم العثور على رابط واحد}zero{تم العثور على # رابط}two{تم العثور على رابطين (#)}few{تم العثور على # روابط}many{تم العثور على # رابطًا}other{تم العثور على # رابط}}"
+  },
+  "lighthouse-core/audits/seo/link-text.js | failureTitle": {
+    "message": "عدم احتواء الروابط على نص وصفي"
+  },
+  "lighthouse-core/audits/seo/link-text.js | title": {
+    "message": "تحتوي الروابط على نص وصفي"
+  },
+  "lighthouse-core/audits/seo/manual/structured-data.js | description": {
+    "message": "يمكنك تشغيل [أداة اختبار البيانات المنظَّمة](https://search.google.com/structured-data/testing-tool/) و[Linter للبيانات المنظَّمة](http://linter.structured-data.org/) للتحقّق من البيانات المنظَّمة. [مزيد من المعلومات](https://web.dev/structured-data)"
+  },
+  "lighthouse-core/audits/seo/manual/structured-data.js | title": {
+    "message": "البيانات المنظَّمة صالحة"
+  },
+  "lighthouse-core/audits/seo/meta-description.js | description": {
+    "message": "قد يتم تضمين الأوصاف التعريفية في نتائج البحث لتلخيص محتوى الصفحة بإيجاز. [مزيد من المعلومات](https://web.dev/meta-description)"
+  },
+  "lighthouse-core/audits/seo/meta-description.js | explanation": {
+    "message": "نص الوصف فارغ."
+  },
+  "lighthouse-core/audits/seo/meta-description.js | failureTitle": {
+    "message": "لا يحتوي المستند على وصف تعريفي"
+  },
+  "lighthouse-core/audits/seo/meta-description.js | title": {
+    "message": "يحتوي المستند على وصف تعريفي"
+  },
+  "lighthouse-core/audits/seo/plugins.js | description": {
+    "message": "لا يمكن لمحركات البحث فهرسة محتوى مكون إضافي وتحظر العديد من الأجهزة استخدام المكونات الإضافية أو لا توفّرها. [مزيد من المعلومات](https://web.dev/plugins)"
+  },
+  "lighthouse-core/audits/seo/plugins.js | failureTitle": {
+    "message": "يستخدم المستند مكونات إضافية"
+  },
+  "lighthouse-core/audits/seo/plugins.js | title": {
+    "message": "يتجنّب المستند المكونات الإضافية"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | description": {
+    "message": "في حال كان ملف robots.txt مكتوبًا بصيغة غير صحيحة، يمكن ألا تفهم برامج الزحف كيف تريد أن يتم الزحف إلى موقعك الإلكتروني أو أن تتم فهرسته. [مزيد من المعلومات](https://web.dev/robots-txt)"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | displayValueHttpBadCode": {
+    "message": "الطلب لملف robots.txt عرض حالة HTTP: {statusCode}"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | displayValueValidationError": {
+    "message": "{itemCount,plural, =1{تم العثور على خطأ واحد}zero{تم العثور على # خطأ}two{تم العثور على خطأين (#)}few{تم العثور على # أخطاء}many{تم العثور على # خطأً}other{تم العثور على # خطأ}}"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | explanation": {
+    "message": "تعذّر على Lighthouse تنزيل ملف robots.txt"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | failureTitle": {
+    "message": "ملف \"robots.txt\" غير صالح"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | title": {
+    "message": "ملف \"robots.txt\" صالح"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | description": {
+    "message": "يجب أن تكون العناصر التفاعلية، مثل الأزرار والروابط، كبيرة بشكلٍ كافٍ (48 × 48 بكسل) وأن تحيط بها مساحة كافية ليكون من السهل النقر عليها بدون النقر على أي عناصر أخرى. [مزيد من المعلومات](https://web.dev/tap-targets)"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | displayValue": {
+    "message": "تم تحديد حجم {decimalProportion, number, percent} لأهداف النقر بشكلٍ مناسب"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | explanationViewportMetaNotOptimized": {
+    "message": "أهداف النقر صغيرة جدًا لأنه لا تتوفّر علامة وصفية لإطار العرض محسنة لشاشات الجوّال."
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | failureTitle": {
+    "message": "لم يتم تحديد حجم أهداف النقر بشكل مناسب"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | overlappingTargetHeader": {
+    "message": "استهداف متداخِل"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | tapTargetHeader": {
+    "message": "هدف النقر"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | title": {
+    "message": "يتم تحديد حجم أهداف النقر بشكل مناسب"
+  },
+  "lighthouse-core/audits/service-worker.js | description": {
+    "message": "مشغّل الخدمات هو التكنولوجيا التي تمكّن تطبيقك من استخدام ميزات عديدة من \"تطبيق الويب التقدّمي\"، مثل الاستجابة عند عدم الاتصال بالإنترنت والإضافة إلى الشاشة الرئيسية والإشعارات الفورية. [مزيد من المعلومات](https://developers.google.com/web/tools/lighthouse/audits/registered-service-worker)"
+  },
+  "lighthouse-core/audits/service-worker.js | explanationBadManifest": {
+    "message": "يتحكم مشغّل الخدمات في هذه الصفحة، ومع ذلك لم يتم العثور على `start_url` بسبب تعذّر تحليل البيان كملف JSON صالح"
+  },
+  "lighthouse-core/audits/service-worker.js | explanationBadStartUrl": {
+    "message": "يتحكم مشغّل الخدمات في هذه الصفحة، ومع ذلك لا يتوفر `start_url` ({startUrl}) في نطاق مشغّل الخدمات ({scopeUrl})"
+  },
+  "lighthouse-core/audits/service-worker.js | explanationNoManifest": {
+    "message": "يتحكم مشغّل الخدمات في هذه الصفحة، ومع ذلك لم يتم العثور على `start_url` لأنه لم يتم جلب أي بيان."
+  },
+  "lighthouse-core/audits/service-worker.js | explanationOutOfScope": {
+    "message": "تحتوي نقطة الانطلاق هذه على مشغّل خدمات واحد أو أكثر، ولكن لا يوجد مشغّل يتحكم في الصفحة ({pageUrl})."
+  },
+  "lighthouse-core/audits/service-worker.js | failureTitle": {
+    "message": "عدم تسجيل مشغّل الخدمات الذي يتحكّم في صفحة و`start_url`"
+  },
+  "lighthouse-core/audits/service-worker.js | title": {
+    "message": "تسجيل مشغّل الخدمات الذي يتحكّم في صفحة و`start_url`"
+  },
+  "lighthouse-core/audits/splash-screen.js | description": {
+    "message": "تضمن شاشة البداية المميزة توفير تجربة عالية الجودة عند إطلاق المستخدمين تطبيقك من الشاشات الرئيسية. [مزيد من المعلومات](https://developers.google.com/web/tools/lighthouse/audits/custom-splash-screen)"
+  },
+  "lighthouse-core/audits/splash-screen.js | failureTitle": {
+    "message": "عدم الضبط لشاشة بداية مخصّصة"
+  },
+  "lighthouse-core/audits/splash-screen.js | title": {
+    "message": "تم الضبط لشاشة البداية المخصّصة"
+  },
+  "lighthouse-core/audits/themed-omnibox.js | description": {
+    "message": "يمكن تصميم شريط العناوين للمتصفح لمطابقة موقعك الإلكتروني. [مزيد من المعلومات](https://developers.google.com/web/tools/lighthouse/audits/address-bar)"
+  },
+  "lighthouse-core/audits/themed-omnibox.js | failureTitle": {
+    "message": "عدم ضبط لون تصميم لشريط العناوين"
+  },
+  "lighthouse-core/audits/themed-omnibox.js | title": {
+    "message": "ضبط لون تصميم لشريط العناوين"
+  },
+  "lighthouse-core/audits/third-party-summary.js | columnBlockingTime": {
+    "message": "وقت حظر سلسلة المحادثات الأساسية"
+  },
+  "lighthouse-core/audits/third-party-summary.js | columnThirdParty": {
+    "message": "الجهة الخارجية"
+  },
+  "lighthouse-core/audits/third-party-summary.js | description": {
+    "message": "يمكن أن يؤثر الرمز البرمجي الخاصّ بالجهة الخارجية بشكل كبير في أداء التحميل. يمكنك تحديد عدد مقدِّمي الخدمة للجهات الخارجية المتكرّرين ومحاولة تحميل الرمز البرمجي الخاص بالجهة الخارجية بعد انتهاء تحميل صفحتك بشكل أساسي. [مزيد من المعلومات](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/loading-third-party-javascript/)"
+  },
+  "lighthouse-core/audits/third-party-summary.js | displayValue": {
+    "message": "لقد حظر رمز الجهة الخارجية سلسلة المحادثات الرئيسية لمدة {timeInMs, number, milliseconds} مللي ثانية"
+  },
+  "lighthouse-core/audits/third-party-summary.js | failureTitle": {
+    "message": "تقليل تأثير رمز الجهة الخارجية"
+  },
+  "lighthouse-core/audits/third-party-summary.js | title": {
+    "message": "استخدام جهة خارجية"
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | description": {
+    "message": "يحدّد \"وقت وصول أول بايت\" الوقت الذي يُرسل فيه الخادم استجابة. [مزيد من المعلومات](https://developers.google.com/web/tools/lighthouse/audits/ttfb)"
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | displayValue": {
+    "message": "استغرق مستند الجذر {timeInMs, number, milliseconds} مللي ثانية"
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | failureTitle": {
+    "message": "تقليل أوقات استجابة الخادم (TTFB)"
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | title": {
+    "message": "أوقات استجابة الخادم منخفضة (TTFB)"
+  },
+  "lighthouse-core/audits/user-timings.js | columnDuration": {
+    "message": "المدة"
+  },
+  "lighthouse-core/audits/user-timings.js | columnStartTime": {
+    "message": "وقت البدء"
+  },
+  "lighthouse-core/audits/user-timings.js | columnType": {
+    "message": "النوع"
+  },
+  "lighthouse-core/audits/user-timings.js | description": {
+    "message": "يمكنك توجيه تطبيقك باستخدام \"واجهة برمجة التطبيقات لأوقات المستخدم\" لقياس الأداء الفعلي العالمي لتطبيقك أثناء التجارب الأساسية للمستخدمين. [مزيد من المعلومات](https://developers.google.com/web/tools/lighthouse/audits/user-timing)"
+  },
+  "lighthouse-core/audits/user-timings.js | displayValue": {
+    "message": "{itemCount,plural, =1{وقت واحد للمستخدم}zero{# وقت للمستخدم}two{وقتا (#) المستخدم}few{# أوقات للمستخدم}many{# وقتًا للمستخدم}other{# وقت للمستخدم}}"
+  },
+  "lighthouse-core/audits/user-timings.js | title": {
+    "message": "علامات أوقات المستخدم وقياساتها"
+  },
+  "lighthouse-core/audits/uses-rel-preconnect.js | crossoriginWarning": {
+    "message": "تم العثور على <link> للربط المسبق لـ \"{securityOrigin}\"، ولكن لم يتم استخدامه من خلال المتصفح. يُرجى التحقّق من استخدام السمة `crossorigin` بشكل صحيح."
+  },
+  "lighthouse-core/audits/uses-rel-preconnect.js | description": {
+    "message": "يمكنك إضافة تعديلات المورد `preconnect` أو `dns-prefetch` لإنشاء اتصالات مبكرة بأصول مهمة تابعة لجهة خارجية. [مزيد من المعلومات](https://developers.google.com/web/fundamentals/performance/resource-prioritization#preconnect)"
+  },
+  "lighthouse-core/audits/uses-rel-preconnect.js | title": {
+    "message": "الاتصال المسبق للأصول المطلوبة"
+  },
+  "lighthouse-core/audits/uses-rel-preload.js | crossoriginWarning": {
+    "message": "تم العثور على <link> للتحميل المسبق لـ \"{preloadURL}\"، ولكن لم يتم استخدامه من خلال المتصفح. يُرجى التحقّق من استخدام السمة `crossorigin` بشكل صحيح."
+  },
+  "lighthouse-core/audits/uses-rel-preload.js | description": {
+    "message": "يمكنك استخدام `<link rel=preload>` لتحديد أولويات جلب الموارد المطلوبة حاليًا في وقتٍ لاحق في تحميل الصفحة. [مزيد من المعلومات](https://developers.google.com/web/tools/lighthouse/audits/preload)"
+  },
+  "lighthouse-core/audits/uses-rel-preload.js | title": {
+    "message": "التحميل المسبق للطلبات الأساسية"
+  },
+  "lighthouse-core/audits/viewport.js | description": {
+    "message": "يُرجى إضافة علامة `<meta name=\"viewport\">` لتحسين تطبيقك لشاشات الجوّال. [مزيد من المعلومات](https://developers.google.com/web/tools/lighthouse/audits/has-viewport-meta-tag)"
+  },
+  "lighthouse-core/audits/viewport.js | explanationNoTag": {
+    "message": "لم يتم العثور على علامة `<meta name=\"viewport\">`"
+  },
+  "lighthouse-core/audits/viewport.js | failureTitle": {
+    "message": "عدم الاحتواء على علامة `<meta name=\"viewport\">` مع `width` أو `initial-scale`"
+  },
+  "lighthouse-core/audits/viewport.js | title": {
+    "message": "تضمين علامة `<meta name=\"viewport\">` مع `width` أو `initial-scale`"
+  },
+  "lighthouse-core/audits/without-javascript.js | description": {
+    "message": "يجب أن يعرض تطبيقك بعض المحتوى عند إيقاف جافا سكريبت، حتى في حال كان مجرد تحذير للمستخدم يشير إلى ضرورة وجود جافا سكريبت لاستخدام التطبيق. [مزيد من المعلومات](https://developers.google.com/web/tools/lighthouse/audits/no-js)"
+  },
+  "lighthouse-core/audits/without-javascript.js | explanation": {
+    "message": "يجب أن يعرض نص الصفحة بعض المحتوى في حالة عدم توفر النصوص البرمجية."
+  },
+  "lighthouse-core/audits/without-javascript.js | failureTitle": {
+    "message": "عدم تقديم المحتوى الاحتياطي عند عدم توفر جافا سكريبت"
+  },
+  "lighthouse-core/audits/without-javascript.js | title": {
+    "message": "تضمين بعض المحتوى عند عدم توفّر جافا سكريبت"
+  },
+  "lighthouse-core/audits/works-offline.js | description": {
+    "message": "في حال كنت تنشئ \"تطبيق ويب تقدّمي\"، يمكنك استخدام مشغّل الخدمات حتى يتمكّن التطبيق من العمل بلا اتصال بالإنترنت. [مزيد من المعلومات](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)"
+  },
+  "lighthouse-core/audits/works-offline.js | failureTitle": {
+    "message": "الصفحة الحالية لا تستجيب باستخدام رمز 200 عند عدم الاتصال بالإنترنت"
+  },
+  "lighthouse-core/audits/works-offline.js | title": {
+    "message": "الصفحة الحالية تستجيب باستخدام رمز 200 عند عدم الاتصال بالإنترنت"
+  },
+  "lighthouse-core/audits/works-offline.js | warningNoLoad": {
+    "message": "قد لا يتم تحميل الصفحة بلا اتصال بالإنترنت لأنه تمت إعادة توجيه عنوان URL للاختبار ({requested}) إلى \"{final}\". ويمكنك محاولة اختبار عنوان URL الثاني مباشرة."
+  },
+  "lighthouse-core/config/default-config.js | a11yAriaGroupDescription": {
+    "message": "هذه هي فرص لتحسين استخدام ARIA في تطبيقك، ما قد يحسّن تجربة مستخدمي التكنولوجيا المساعدة، مثل قارئ الشاشة."
+  },
+  "lighthouse-core/config/default-config.js | a11yAriaGroupTitle": {
+    "message": "ARIA"
+  },
+  "lighthouse-core/config/default-config.js | a11yAudioVideoGroupDescription": {
+    "message": "هذه الفرص تتيح توفير محتوى بديل للصوت والفيديو. قد يحسّن ذلك التجربة للمستخدمين الذين يعانون من إعاقات سمعية أو بصرية."
+  },
+  "lighthouse-core/config/default-config.js | a11yAudioVideoGroupTitle": {
+    "message": "الصوت والفيديو"
+  },
+  "lighthouse-core/config/default-config.js | a11yBestPracticesGroupDescription": {
+    "message": "تحدّد هذه العناصر أفضل الممارسات الشائعة المتعلقة بإمكانية الوصول."
+  },
+  "lighthouse-core/config/default-config.js | a11yBestPracticesGroupTitle": {
+    "message": "أفضل الممارسات"
+  },
+  "lighthouse-core/config/default-config.js | a11yCategoryDescription": {
+    "message": "تحدّد عمليات التحقق هذه الفرص التي تتيح [تحسين إمكانية الوصول إلى تطبيق الويب](https://developers.google.com/web/fundamentals/accessibility). ولا يمكن إجراء رصد تلقائي إلّا لمجموعة فرعية من مشاكل إمكانية الوصول، لذلك يُنصح أيضًا باستخدام الاختبار اليدوي."
+  },
+  "lighthouse-core/config/default-config.js | a11yCategoryManualDescription": {
+    "message": "تعالج هذه العناصر المناطق التي يتعذر على أداة الاختبار التلقائية تغطيتها. تعرّف على مزيد من المعلومات في دليلنا حول [مراجعة إمكانية الوصول](https://developers.google.com/web/fundamentals/accessibility/how-to-review)."
+  },
+  "lighthouse-core/config/default-config.js | a11yCategoryTitle": {
+    "message": "إمكانية الوصول"
+  },
+  "lighthouse-core/config/default-config.js | a11yColorContrastGroupDescription": {
+    "message": "هذه هي فرص لتحسين سهولة قراءة المحتوى."
+  },
+  "lighthouse-core/config/default-config.js | a11yColorContrastGroupTitle": {
+    "message": "التباين"
+  },
+  "lighthouse-core/config/default-config.js | a11yLanguageGroupDescription": {
+    "message": "هذه هي فرص لتحسين تفسير المحتوى من خلال المستخدمين بلغات مختلفة."
+  },
+  "lighthouse-core/config/default-config.js | a11yLanguageGroupTitle": {
+    "message": "التدويل والأقلمة"
+  },
+  "lighthouse-core/config/default-config.js | a11yNamesLabelsGroupDescription": {
+    "message": "هذه هي فرص لتحسين دلالات عناصر التحكُّم في التطبيق. قد يحسّن ذلك من تجربة مستخدمي التكنولوجيا المساعدة، مثل قارئ الشاشة."
+  },
+  "lighthouse-core/config/default-config.js | a11yNamesLabelsGroupTitle": {
+    "message": "الأسماء والتصنيفات"
+  },
+  "lighthouse-core/config/default-config.js | a11yNavigationGroupDescription": {
+    "message": "هذه الفرص تتيح لك تحسين التنقل باستخدام لوحة المفاتيح في تطبيقك."
+  },
+  "lighthouse-core/config/default-config.js | a11yNavigationGroupTitle": {
+    "message": "التنقل"
+  },
+  "lighthouse-core/config/default-config.js | a11yTablesListsVideoGroupDescription": {
+    "message": "هذه الفرص تتسح تحسين تجربة قراءة بيانات القائمة أو الجدول باستخدام التكنولوجيا المساعدة، مثل قارئ الشاشة."
+  },
+  "lighthouse-core/config/default-config.js | a11yTablesListsVideoGroupTitle": {
+    "message": "الجداول والقوائم"
+  },
+  "lighthouse-core/config/default-config.js | bestPracticesCategoryTitle": {
+    "message": "أفضل الممارسات"
+  },
+  "lighthouse-core/config/default-config.js | budgetsGroupDescription": {
+    "message": "تضبط ميزانيات الأداء معايير لأداء موقعك الإلكتروني."
+  },
+  "lighthouse-core/config/default-config.js | budgetsGroupTitle": {
+    "message": "الميزانيات"
+  },
+  "lighthouse-core/config/default-config.js | diagnosticsGroupDescription": {
+    "message": "مزيد من المعلومات حول أداء تطبيقك لا تؤثر هذه الأرقام [ بشكل مباشر في ](https://github.com/GoogleChrome/lighthouse/blob/d2ec9ffbb21de9ad1a0f86ed24575eda32c796f0/docs/scoring.md#how-are-the-scores-weighted) نتيجة الأداء."
+  },
+  "lighthouse-core/config/default-config.js | diagnosticsGroupTitle": {
+    "message": "بيانات التشخيص"
+  },
+  "lighthouse-core/config/default-config.js | firstPaintImprovementsGroupDescription": {
+    "message": "يمثل الجانب الأكثر أهمية للأداء مدى السرعة التي يتم بها عرض وحدات البكسل على الشاشة. المقاييس الرئيسية: First Contentful Paint وFirst Meaningful Paint"
+  },
+  "lighthouse-core/config/default-config.js | firstPaintImprovementsGroupTitle": {
+    "message": "تحسينات العرض الأول"
+  },
+  "lighthouse-core/config/default-config.js | loadOpportunitiesGroupDescription": {
+    "message": "يمكن أن تساعد هذه الاقتراحات على تحميل صفحتك بشكل أسرع. لا تؤثر هذه الاقتراحات [بشكل مباشر](https://github.com/GoogleChrome/lighthouse/blob/d2ec9ffbb21de9ad1a0f86ed24575eda32c796f0/docs/scoring.md#how-are-the-scores-weighted) في نتيجة الأداء."
+  },
+  "lighthouse-core/config/default-config.js | loadOpportunitiesGroupTitle": {
+    "message": "فرص تحسين الأداء"
+  },
+  "lighthouse-core/config/default-config.js | metricGroupTitle": {
+    "message": "المقاييس"
+  },
+  "lighthouse-core/config/default-config.js | overallImprovementsGroupDescription": {
+    "message": "يمكنك تحسين تجربة التحميل العامة لتصبح هذه الصفحة سريعة الاستجابة وجاهزة للاستخدام في أقرب وقت ممكن. المقاييس الأساسية: وقت التفاعل ومؤشر السرعة."
+  },
+  "lighthouse-core/config/default-config.js | overallImprovementsGroupTitle": {
+    "message": "التحسينات العامة"
+  },
+  "lighthouse-core/config/default-config.js | performanceCategoryTitle": {
+    "message": "الأداء"
+  },
+  "lighthouse-core/config/default-config.js | pwaCategoryDescription": {
+    "message": "تعمل هذه العمليات على التحقق من جوانب \"تطبيق الويب التقدّمي\". [مزيد من المعلومات](https://developers.google.com/web/progressive-web-apps/checklist)"
+  },
+  "lighthouse-core/config/default-config.js | pwaCategoryManualDescription": {
+    "message": "يُطلب إجراء عمليات التحقّق هذه من خلال المرجع [قائمة التحقق PWA](https://developers.google.com/web/progressive-web-apps/checklist)، ولكن لم يتم التحقُّق منها تلقائيًا من خلال Lighthouse. لا تؤثر عمليات التحقق هذه في نتيجتك، ولكن من المهم أنك تتحقق منها يدويًا."
+  },
+  "lighthouse-core/config/default-config.js | pwaCategoryTitle": {
+    "message": "تطبيق الويب التقدّمي"
+  },
+  "lighthouse-core/config/default-config.js | pwaFastReliableGroupTitle": {
+    "message": "سريع وموثوق"
+  },
+  "lighthouse-core/config/default-config.js | pwaInstallableGroupTitle": {
+    "message": "القسم القابل للتثبيت"
+  },
+  "lighthouse-core/config/default-config.js | pwaOptimizedGroupTitle": {
+    "message": "تحسين PWA"
+  },
+  "lighthouse-core/config/default-config.js | seoCategoryDescription": {
+    "message": "تضمن عمليات التحقّق هذه تحسين أداء صفحتك لتظهر في ترتيب نتائج محرّك البحث. هناك عوامل إضافية لا يتحقّق منها Lighthouse قد تؤثر في ترتيب نتائج البحث. [مزيد من المعلومات](https://support.google.com/webmasters/answer/35769)"
+  },
+  "lighthouse-core/config/default-config.js | seoCategoryManualDescription": {
+    "message": "تشغيل أدوات التحقُّق الإضافية هذه على موقعك الإلكتروني للتحقُّق من أفضل ممارسات تحسين محركات البحث الإضافية."
+  },
+  "lighthouse-core/config/default-config.js | seoCategoryTitle": {
+    "message": "تحسين محركات البحث"
+  },
+  "lighthouse-core/config/default-config.js | seoContentGroupDescription": {
+    "message": "يمكنك تنسيق HTML بطريقة تتيح لبرامج الزحف فهم محتوى تطبيقك بشكلٍ أفضل."
+  },
+  "lighthouse-core/config/default-config.js | seoContentGroupTitle": {
+    "message": "أفضل ممارسات المحتوى"
+  },
+  "lighthouse-core/config/default-config.js | seoCrawlingGroupDescription": {
+    "message": "للظهور في نتائج البحث، تحتاج برامج الزحف إلى الوصول إلى تطبيقك."
+  },
+  "lighthouse-core/config/default-config.js | seoCrawlingGroupTitle": {
+    "message": "الزحف والفهرسة"
+  },
+  "lighthouse-core/config/default-config.js | seoMobileGroupDescription": {
+    "message": "يُرجى التأكّد من أن صفحاتك متوافقة مع الجوّال، حتى لا يحتاج المستخدمون إلى التصغير أو التكبير من أجل الاطّلاع على صفحات المحتوى. [مزيد من المعلومات](https://developers.google.com/search/mobile-sites/)"
+  },
+  "lighthouse-core/config/default-config.js | seoMobileGroupTitle": {
+    "message": "متوافق مع الجوّال"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnCacheTTL": {
+    "message": "ذاكرة التخزين المؤقت TTL"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnLocation": {
+    "message": "الموقع الجغرافي"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnName": {
+    "message": "الاسم"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnRequests": {
+    "message": "الطلبات"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnResourceType": {
+    "message": "نوع المورد"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnSize": {
+    "message": "الحجم"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnTimeSpent": {
+    "message": "الوقت المستغرَق"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnTransferSize": {
+    "message": "حجم النقل"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnURL": {
+    "message": "عنوان URL"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnWastedBytes": {
+    "message": "التوفيرات المحتملة"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnWastedMs": {
+    "message": "التوفيرات المحتملة"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | displayValueByteSavings": {
+    "message": "التوفيرات المحتملة من {wastedBytes, number, bytes}  كيلوبايت"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | displayValueMsSavings": {
+    "message": "التوفيرات المحتملة من {wastedMs, number, milliseconds} مللي ثانية"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | documentResourceType": {
+    "message": "المستند"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | fontResourceType": {
+    "message": "الخط"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | imageResourceType": {
+    "message": "الصورة"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | mediaResourceType": {
+    "message": "الوسائط"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | ms": {
+    "message": "{timeInMs, number, milliseconds} مللي ثانية"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | otherResourceType": {
+    "message": "غير ذلك"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | scriptResourceType": {
+    "message": "النص البرمجي"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | seconds": {
+    "message": "{timeInMs, number, seconds} ثانية"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | stylesheetResourceType": {
+    "message": "ورقة الأنماط"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | thirdPartyResourceType": {
+    "message": "الجهة الخارجية"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | totalResourceType": {
+    "message": "الإجمالي"
+  },
+  "lighthouse-core/lib/lh-error.js | badTraceRecording": {
+    "message": "حدث خطأ أثناء تسجيل التتبع عند تحميل صفحتك. يُرجى تشغيل Lighthouse مرة أخرى. ({errorCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | criTimeout": {
+    "message": "مهلة انتظار ربط بروتوكول برنامج تصحيح الخلل الأول."
+  },
+  "lighthouse-core/lib/lh-error.js | didntCollectScreenshots": {
+    "message": "لم يجمع Chrome أي لقطات شاشة خلال عملية تحميل الصفحة. يُرجى التأكّد من توفّر محتوى مرئي على الصفحة، ثم محاولة إعادة تشغيل Lighthouse. ({errorCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | dnsFailure": {
+    "message": "تعذّر على خوادم نظام أسماء النطاقات حل مشكلة النطاق المُقدّم."
+  },
+  "lighthouse-core/lib/lh-error.js | erroredRequiredArtifact": {
+    "message": "واجهت عملية التجميع {artifactName} المطلوبة خطأً: {errorMessage}"
+  },
+  "lighthouse-core/lib/lh-error.js | internalChromeError": {
+    "message": "حدث خطأ في متصفّح Chrome الداخلي. يُرجى إعادة تشغيل Chrome ومحاولة إعادة تشغيل Lighthouse."
+  },
+  "lighthouse-core/lib/lh-error.js | missingRequiredArtifact": {
+    "message": "كان من المطلوب تجميع {artifactName} ولكن لم يتم تنفيذ ذلك."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailed": {
+    "message": "لم يتمكّن Lighthouse من تحميل الصفحة المطلوبة بشكل موثوق. يمكنك التأكُّد من اختبار عنوان URL الصحيح وأن الخادم يستجيب بشكل صحيح لجميع الطلبات."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedHung": {
+    "message": "لم يتمكّن Lighthouse من تحميل عنوان URL الذي طلبته بشكل موثوق لأن الصفحة توقفت عن الاستجابة."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedInsecure": {
+    "message": "لا يحتوي عنوان URL الذي قدمته على شهادة أمان صالحة. {securityMessages}"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedInterstitial": {
+    "message": "منَع Chrome تحميل صفحة مع محتوى بيني. عليك التأكّد من اختبار عنوان URL الصحيح وأن الخادم يستجيب بشكل صحيح لجميع الطلبات."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedWithDetails": {
+    "message": "لم يتمكّن Lighthouse من تحميل الصفحة المطلوبة بشكل موثوق. عليك التأكّد من اختبار عنوان URL الصحيح وأن الخادم يستجيب بشكل صحيح لجميع الطلبات. (التفاصيل: {errorDetails})"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedWithStatusCode": {
+    "message": "لم يتمكّن Lighthouse من تحميل الصفحة المطلوبة بشكل موثوق. عليك التأكّد من اختبار عنوان URL الصحيح وأن الخادم يستجيب بشكل صحيح لجميع الطلبات. (رمز الحالة: {statusCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadTookTooLong": {
+    "message": "استغرق تحميل الصفحة وقتًا طويلاً. يُرجى اتّباع الفرص الواردة في التقرير لتقليل وقت تحميل الصفحة، ثم محاولة إعادة تشغيل Lighthouse. ({errorCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | protocolTimeout": {
+    "message": "لقد تجاوز وقت انتظار استجابة بروتوكول DevTools الوقت المخصص. (الطريقة: {protocolMethod})"
+  },
+  "lighthouse-core/lib/lh-error.js | requestContentTimeout": {
+    "message": "تجاوز جلب محتوى المورد الوقت المخصّص"
+  },
+  "lighthouse-core/lib/lh-error.js | urlInvalid": {
+    "message": "يبدو أن عنوان URL الذي قدمته غير صحيح."
+  },
+  "lighthouse-core/report/html/renderer/util.js | auditGroupExpandTooltip": {
+    "message": "عرض عمليات التدقيق"
+  },
+  "lighthouse-core/report/html/renderer/util.js | crcInitialNavigation": {
+    "message": "التنقل الأوّلي"
+  },
+  "lighthouse-core/report/html/renderer/util.js | crcLongestDurationLabel": {
+    "message": "الحد الأقصى لوقت استجابة المسار المهم:"
+  },
+  "lighthouse-core/report/html/renderer/util.js | errorLabel": {
+    "message": "خطأ!"
+  },
+  "lighthouse-core/report/html/renderer/util.js | errorMissingAuditInfo": {
+    "message": "الإبلاغ عن خطأ: لا تتوفَّر معلومات تدقيق"
+  },
+  "lighthouse-core/report/html/renderer/util.js | labDataTitle": {
+    "message": "بيانات المختبَر"
+  },
+  "lighthouse-core/report/html/renderer/util.js | lsPerformanceCategoryDescription": {
+    "message": "أجرت أداة [Lighthouse](https://developers.google.com/web/tools/lighthouse/) تحليلًا للصفحة الحالية على شبكة الجوّال في وضع المحاكاة. القيم تقديرية وقابلة للتغيير."
+  },
+  "lighthouse-core/report/html/renderer/util.js | manualAuditsGroupTitle": {
+    "message": "عناصر إضافية للتحقُّق يدويًا"
+  },
+  "lighthouse-core/report/html/renderer/util.js | notApplicableAuditsGroupTitle": {
+    "message": "غير سارٍ"
+  },
+  "lighthouse-core/report/html/renderer/util.js | opportunityResourceColumnLabel": {
+    "message": "فرصة تحسين الأداء"
+  },
+  "lighthouse-core/report/html/renderer/util.js | opportunitySavingsColumnLabel": {
+    "message": "التوفيرات المُقدرة"
+  },
+  "lighthouse-core/report/html/renderer/util.js | passedAuditsGroupTitle": {
+    "message": "اجتياز عمليات التدقيق بنجاح"
+  },
+  "lighthouse-core/report/html/renderer/util.js | snippetCollapseButtonLabel": {
+    "message": "تصغير المقتطف"
+  },
+  "lighthouse-core/report/html/renderer/util.js | snippetExpandButtonLabel": {
+    "message": "توسيع المقتطف"
+  },
+  "lighthouse-core/report/html/renderer/util.js | thirdPartyResourcesLabel": {
+    "message": "عرض موارد الجهات الخارجية"
+  },
+  "lighthouse-core/report/html/renderer/util.js | toplevelWarningsMessage": {
+    "message": "حدثت مشاكل تؤثر في تشغيل Lighthouse:"
+  },
+  "lighthouse-core/report/html/renderer/util.js | varianceDisclaimer": {
+    "message": "القيم تقديرية وقابلة للتغيير. نتيجة الأداء [مستندة إلى هذه المقاييس فقط](https://github.com/GoogleChrome/lighthouse/blob/d2ec9ffbb21de9ad1a0f86ed24575eda32c796f0/docs/scoring.md#how-are-the-scores-weighted)."
+  },
+  "lighthouse-core/report/html/renderer/util.js | warningAuditsGroupTitle": {
+    "message": "عمليات التدقيق التي تم اجتيازها، ولكن تتضمّن التحذيرات"
+  },
+  "lighthouse-core/report/html/renderer/util.js | warningHeader": {
+    "message": "التحذيرات: "
+  },
+  "stack-packs/packs/wordpress.js | efficient_animated_content": {
+    "message": "يمكنك تحميل ملف GIF إلى خدمة ستتيح تضمينه باعتباره فيديو HTML5."
+  },
+  "stack-packs/packs/wordpress.js | offscreen_images": {
+    "message": "يمكنك تثبيت [مكون WordPress الإضافي للتحميل الكسول](https://wordpress.org/plugins/search/lazy+load/) الذي يوفر القدرة على تأجيل أي صور خارج الشاشة، أو التبديل إلى تصميم يوفِّر هذه القدرة الوظيفية. يمكنك أيضًا استخدام [مكون AMP الإضافي](https://wordpress.org/plugins/amp/)."
+  },
+  "stack-packs/packs/wordpress.js | render_blocking_resources": {
+    "message": "هناك عدد من مكونات WordPress الإضافية التي يمكنها مساعدتك على [تضمين مواد العرض المهمة](https://wordpress.org/plugins/search/critical+css/) أو [تأجيل موارد أقل أهمية](https://wordpress.org/plugins/search/defer+css+javascript/). عليك توخي الحذر من أن التحسينات التي توفرها هذه الإضافات قد توقف ميزات التصميم أو المكونات الإضافية، لذلك ستحتاج على الأرجح إلى إجراء تغييرات في الرمز البرمجي."
+  },
+  "stack-packs/packs/wordpress.js | time_to_first_byte": {
+    "message": "تساهم التصاميم والمكونات الإضافية ومواصفات الخادم في تحسين وقت استجابة الخادم. يمكنك البحث عن تصميم مُحسّن أكثر و/أو اختيار مكون إضافي للتحسين و/أو ترقية الخادم."
+  },
+  "stack-packs/packs/wordpress.js | total_byte_weight": {
+    "message": "يمكنك عرض مقتطفات في قوائم مشاركاتك (مثلاً عبر العلامة \"المزيد\")، أو تقليل عدد المشاركات المعروضة في صفحة معينة، أو تقسيم مشاركاتك الطويلة إلى صفحات متعددة، أو استخدام مكون إضافي لتحميل التعليقات ذات التحميل الكسول."
+  },
+  "stack-packs/packs/wordpress.js | unminified_css": {
+    "message": "يمكن لعدد من [مكونات WordPress الإضافية](https://wordpress.org/plugins/search/minify+css/) زيادة سرعة موقعك الإلكتروني من خلال ربط الأنماط وتصغيرها وضغطها. يمكنك أيضًا استخدام عملية إنشاء الموقع الإلكتروني لإزالة البيانات غير الضرورية بشكل مسبق إذا أمكن ذلك."
+  },
+  "stack-packs/packs/wordpress.js | unminified_javascript": {
+    "message": "يمكن لعدد من [مكونات WordPress الإضافية ](https://wordpress.org/plugins/search/minify+javascript/) زيادة سرعة موقعك الإلكتروني من خلال ربط النصوص البرمجية وتصغيرها وضغطها. يمكنك أيضًا استخدام عملية إنشاء الموقع الإلكتروني لإزالة البيانات غير الضرورية بشكل مسبق إذا أمكن ذلك."
+  },
+  "stack-packs/packs/wordpress.js | unused_css_rules": {
+    "message": "يمكنك تقليل عدد [مكونات WordPress الإضافية](https://wordpress.org/plugins/) التي تُحمِّل خدمة CSS غير المُستخدَمة في صفحتك أو تبديلها. لتحديد المكونات الإضافية التي تضيف CSS دخيلة، يمكنك محاولة تشغيل [تغطية الرمز البرمجي](https://developers.google.com/web/updates/2017/04/devtools-release-notes#coverage) في Chrome DevTools. يمكنك تحديد التصميم/المكون الإضافي المسؤول عن عنوان URL لورقة الأنماط. يمكنك البحث عن المكونات الإضافية التي تحتوي على العديد من أوراق الأنماط في القائمة والتي تحتوي على الكثير من اللون الأحمر في تغطية الرمز البرمجي. يجب أن يدرِج المكون الإضافي ورقة أنماط فقط في حال تم استخدامه في الصفحة فعليًا."
+  },
+  "stack-packs/packs/wordpress.js | unused_javascript": {
+    "message": "يمكنك تقليل عدد [مكونات WordPress الإضافية](https://wordpress.org/plugins/) التي تُحمِّل لغة جافا سكريبت غير المُستخدَمة في صفحتك أو تبديلها. لتحديد المكونات الإضافية التي تضيف لغة جافا سكريبت دخيلة، يمكنك محاولة تشغيل [تغطية الرمز البرمجي](https://developers.google.com/web/updates/2017/04/devtools-release-notes#coverage) في Chrome DevTools. يمكنك تحديد التصميم/المكون الإضافي المسؤول عن عنوان URL للنص البرمجي. يمكنك البحث عن المكونات الإضافية التي تحتوي على العديد من النصوص البرمجية في القائمة والتي تحتوي على الكثير من اللون الأحمر في تغطية الرمز البرمجي. يجب أن يدرِج المكون الإضافي نصًا برمجيًا فقط في حال تم استخدامه في الصفحة فعليًا."
+  },
+  "stack-packs/packs/wordpress.js | uses_long_cache_ttl": {
+    "message": "يمكنك الاطّلاع على [ذاكرة التخزين المؤقت للمتصفّح في WordPress](https://codex.wordpress.org/WordPress_Optimization#Browser_Caching)."
+  },
+  "stack-packs/packs/wordpress.js | uses_optimized_images": {
+    "message": "يمكنك استخدام [مكون WordPress الإضافي لتحسين الصورة](https://wordpress.org/plugins/search/optimize+images/) الذي يضغط صورك مع المحافظة على الجودة."
+  },
+  "stack-packs/packs/wordpress.js | uses_responsive_images": {
+    "message": "يمكنك تحميل الصور مباشرةً من خلال [مكتبة الوسائط](https://codex.wordpress.org/Media_Library_Screen) للتأكّد من توفّر أحجام الصور المطلوبة، ثم إدراجها من مكتبة الوسائط أو استخدام أداة الصورة لضمان استخدام أفضل حجم للصورة (بما في ذلك تلك الخاصة بنقاط فاصلة متجاوبة). يمكنك تجنب استخدام صور `Full Size` إلا إذا كانت الأبعاد كافية لاستخدامها. [مزيد من المعلومات](https://codex.wordpress.org/Inserting_Images_into_Posts_and_Pages#Image_Size)"
+  },
+  "stack-packs/packs/wordpress.js | uses_text_compression": {
+    "message": "يمكنك تفعيل ضغط النص في إعداد خادم الويب."
+  },
+  "stack-packs/packs/wordpress.js | uses_webp_images": {
+    "message": "يمكنك استخدام [مكون إضافي](https://wordpress.org/plugins/search/convert+webp/) أو خدمة تتيح لك تحويل صورك المحمَّلة إلى أفضل التنسيقات تلقائيًا."
+  }
+}
diff --git a/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/bg.json b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/bg.json
new file mode 100644
index 0000000..494aa16b
--- /dev/null
+++ b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/bg.json
@@ -0,0 +1,1541 @@
+{
+  "lighthouse-core/audits/accessibility/accesskeys.js | description": {
+    "message": "Клавишите за достъп дават възможност на потребителите бързо да преместят фокуса към определена част от страницата. За правилно навигиране всеки клавиш за достъп трябва да е уникален. [Научете повече](https://web.dev/accesskeys/)"
+  },
+  "lighthouse-core/audits/accessibility/accesskeys.js | failureTitle": {
+    "message": "Някои стойности на `[accesskey]` не са уникални"
+  },
+  "lighthouse-core/audits/accessibility/accesskeys.js | title": {
+    "message": "Стойностите за `[accesskey]` са уникални"
+  },
+  "lighthouse-core/audits/accessibility/aria-allowed-attr.js | description": {
+    "message": "Всеки елемент ARIA `role` поддържа конкретен поднабор от атрибути `aria-*`. При несъответствие атрибутите `aria-*` ще станат невалидни. [Научете повече](https://web.dev/aria-allowed-attr/)"
+  },
+  "lighthouse-core/audits/accessibility/aria-allowed-attr.js | failureTitle": {
+    "message": "Някои атрибути `[aria-*]` не съответстват на ролите си"
+  },
+  "lighthouse-core/audits/accessibility/aria-allowed-attr.js | title": {
+    "message": "Атрибутите `[aria-*]` съответстват на ролите си"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-attr.js | description": {
+    "message": "Някои роли на ARIA имат задължителни атрибути, от които екранните четци получават описание на състоянието на съответния елемент. [Научете повече](https://web.dev/aria-required-attr/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-required-attr.js | failureTitle": {
+    "message": "Някои елементи `[role]` нямат всички задължителни атрибути `[aria-*]`"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-attr.js | title": {
+    "message": "Елементите `[role]` имат всички задължителни атрибути `[aria-*]`"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-children.js | description": {
+    "message": "Някои родителски роли на ARIA трябва да съдържат конкретни дъщерни роли, за да изпълняват функциите за достъпност, за които са предназначени. [Научете повече](https://web.dev/aria-required-children/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-required-children.js | failureTitle": {
+    "message": "Липсват задължителни дъщерни атрибути `[role]` за елементи с атрибут `[role]`."
+  },
+  "lighthouse-core/audits/accessibility/aria-required-children.js | title": {
+    "message": "Елементите с атрибут `[role]`, за които са задължителни конкретни дъщерни елементи `[role]`, са налице"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-parent.js | description": {
+    "message": "Някои дъщерни роли на ARIA трябва да се съдържат в конкретни родителски роли, за да изпълняват правилно функциите за достъпност, за които са предназначени. [Научете повече](https://web.dev/aria-required-parent/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-required-parent.js | failureTitle": {
+    "message": "Някои елементи `[role]` не се съдържат в задължителния за тях родителски елемент"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-parent.js | title": {
+    "message": "Елементите `[role]` се съдържат в задължителния за тях родителски елемент"
+  },
+  "lighthouse-core/audits/accessibility/aria-roles.js | description": {
+    "message": "Ролите на ARIA трябва да имат валидни стойности, за да изпълняват функциите за достъпност, за които са предназначени. [Научете повече](https://web.dev/aria-roles/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-roles.js | failureTitle": {
+    "message": "Някои стойности на `[role]` не са валидни"
+  },
+  "lighthouse-core/audits/accessibility/aria-roles.js | title": {
+    "message": "Стойностите на `[role]` са валидни"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr-value.js | description": {
+    "message": "Помощните технологии, като например екранни четци, не могат да интерпретират атрибути на ARIA с невалидни стойности. [Научете повече](https://web.dev/aria-valid-attr-value/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr-value.js | failureTitle": {
+    "message": "Някои атрибути `[aria-*]` нямат валидни стойности"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr-value.js | title": {
+    "message": "Атрибутите `[aria-*]` имат валидни стойности"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr.js | description": {
+    "message": "Помощните технологии, като например екранни четци, не могат да интерпретират атрибути на ARIA с невалидни имена. [Научете повече](https://web.dev/aria-valid-attr/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr.js | failureTitle": {
+    "message": "Някои атрибути `[aria-*]` не са валидни или са изписани неправилно"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr.js | title": {
+    "message": "Атрибутите `[aria-*]` са валидни и са изписани правилно"
+  },
+  "lighthouse-core/audits/accessibility/audio-caption.js | description": {
+    "message": "Надписите правят аудиоелементите използваеми за потребителите със слухови увреждания, като предоставят важна информация, например кой говори и какво казва, както и друга информация, несвързана с речта. [Научете повече](https://web.dev/audio-caption/)."
+  },
+  "lighthouse-core/audits/accessibility/audio-caption.js | failureTitle": {
+    "message": "За някои елементи `<audio>` липсва елемент `<track>` с `[kind=\"captions\"]`."
+  },
+  "lighthouse-core/audits/accessibility/audio-caption.js | title": {
+    "message": "Елементите `<audio>` съдържат елемент `<track>` с `[kind=\"captions\"]`"
+  },
+  "lighthouse-core/audits/accessibility/axe-audit.js | failingElementsHeader": {
+    "message": "Елементи с грешки"
+  },
+  "lighthouse-core/audits/accessibility/button-name.js | description": {
+    "message": "Когато даден бутон няма достъпно име, той ще бъде прочитан като „бутон“ от екранните четци и съответно ще бъде неизползваем за потребителите им. [Научете повече](https://web.dev/button-name/)."
+  },
+  "lighthouse-core/audits/accessibility/button-name.js | failureTitle": {
+    "message": "Бутоните нямат достъпни имена"
+  },
+  "lighthouse-core/audits/accessibility/button-name.js | title": {
+    "message": "Бутоните имат достъпни имена"
+  },
+  "lighthouse-core/audits/accessibility/bypass.js | description": {
+    "message": "Добавянето на начини за заобикаляне на повтарящото се съдържание дава възможност на потребителите, използващи клавиатура, да навигират по-ефективно в страницата. [Научете повече](https://web.dev/bypass/)."
+  },
+  "lighthouse-core/audits/accessibility/bypass.js | failureTitle": {
+    "message": "Страницата не съдържа заглавие, връзка за пропускане или участък с ориентир"
+  },
+  "lighthouse-core/audits/accessibility/bypass.js | title": {
+    "message": "Страницата съдържа заглавие, връзка за пропускане или участък с ориентир"
+  },
+  "lighthouse-core/audits/accessibility/color-contrast.js | description": {
+    "message": "Четенето на текст с нисък контраст е трудно или невъзможно за много потребители. [Научете повече](https://web.dev/color-contrast/)."
+  },
+  "lighthouse-core/audits/accessibility/color-contrast.js | failureTitle": {
+    "message": "Коефициентът на контрастност между цветовете на заден и преден план не е достатъчно голям."
+  },
+  "lighthouse-core/audits/accessibility/color-contrast.js | title": {
+    "message": "Коефициентът на контрастност между цветовете на заден и преден план е достатъчно голям"
+  },
+  "lighthouse-core/audits/accessibility/definition-list.js | description": {
+    "message": "Когато списъците с определения не са маркирани правилно, екранните четци може да предоставят объркваща или неточна информация. [Научете повече](https://web.dev/definition-list/)."
+  },
+  "lighthouse-core/audits/accessibility/definition-list.js | failureTitle": {
+    "message": "Елементите `<dl>` не съдържат само правилно подредени групи `<dt>` и `<dd>` и елементи `<script>` или `<template>`."
+  },
+  "lighthouse-core/audits/accessibility/definition-list.js | title": {
+    "message": "Елементите `<dl>` съдържат само правилно подредени групи `<dt>` и `<dd>` и елементи `<script>` или `<template>`."
+  },
+  "lighthouse-core/audits/accessibility/dlitem.js | description": {
+    "message": "Списъчните елементи за определение (`<dt>` и `<dd>`) трябва да бъдат обвити в родителски елемент `<dl>`, за да бъдат прочетени правилно от екранните четци. [Научете повече](https://web.dev/dlitem/)."
+  },
+  "lighthouse-core/audits/accessibility/dlitem.js | failureTitle": {
+    "message": "Някои списъчни елементи за определение не са обвити в елементи `<dl>`"
+  },
+  "lighthouse-core/audits/accessibility/dlitem.js | title": {
+    "message": "Списъчните елементи за определение са обвити в елементи `<dl>`"
+  },
+  "lighthouse-core/audits/accessibility/document-title.js | description": {
+    "message": "Заглавието дава възможност на потребителите на екранни четци да добият обща представа за страницата, а потребителите на търсещи машини разчитат на него в голяма степен, за да определят дали страницата е подходяща за търсенето им. [Научете повече](https://web.dev/document-title/)."
+  },
+  "lighthouse-core/audits/accessibility/document-title.js | failureTitle": {
+    "message": "Документът няма елемент `<title>`"
+  },
+  "lighthouse-core/audits/accessibility/document-title.js | title": {
+    "message": "Документът има елемент `<title>`"
+  },
+  "lighthouse-core/audits/accessibility/duplicate-id.js | description": {
+    "message": "Стойността на всеки атрибут id трябва да е уникална, за да се предотврати пропускането на други екземпляри от страна на помощните технологии. [Научете повече](https://web.dev/duplicate-id/)."
+  },
+  "lighthouse-core/audits/accessibility/duplicate-id.js | failureTitle": {
+    "message": "Някои атрибути `[id]` на страницата не са уникални"
+  },
+  "lighthouse-core/audits/accessibility/duplicate-id.js | title": {
+    "message": "Атрибутите `[id]` на страницата са уникални"
+  },
+  "lighthouse-core/audits/accessibility/frame-title.js | description": {
+    "message": "Потребителите на екранни четци очакват заглавието на рамката да описва съдържанието й. [Научете повече](https://web.dev/frame-title/)."
+  },
+  "lighthouse-core/audits/accessibility/frame-title.js | failureTitle": {
+    "message": "Някои елементи `<frame>` или `<iframe>` нямат заглавие"
+  },
+  "lighthouse-core/audits/accessibility/frame-title.js | title": {
+    "message": "Елементите `<frame>` или `<iframe>` имат заглавие"
+  },
+  "lighthouse-core/audits/accessibility/html-has-lang.js | description": {
+    "message": "Ако за дадена страница не е посочен атрибут lang, екранният четец приема, че тя е написана на стандартния език, който потребителят е избрал при настройването му. Ако страницата всъщност не е на стандартния език, екранният четец може да не прочете текста й правилно. [Научете повече](https://web.dev/html-has-lang/)."
+  },
+  "lighthouse-core/audits/accessibility/html-has-lang.js | failureTitle": {
+    "message": "Елементът `<html>` няма атрибут `[lang]`"
+  },
+  "lighthouse-core/audits/accessibility/html-has-lang.js | title": {
+    "message": "Елементът `<html>` има атрибут `[lang]`"
+  },
+  "lighthouse-core/audits/accessibility/html-lang-valid.js | description": {
+    "message": "Посочването на валиден [език по BCP 47](https://www.w3.org/International/questions/qa-choosing-language-tags#question) помага на екранните четци да четат текста правилно. [Научете повече](https://web.dev/html-lang-valid/)."
+  },
+  "lighthouse-core/audits/accessibility/html-lang-valid.js | failureTitle": {
+    "message": "Елементът `<html>` няма валидна стойност за атрибута `[lang]`."
+  },
+  "lighthouse-core/audits/accessibility/html-lang-valid.js | title": {
+    "message": "Елементът `<html>` има валидна стойност за атрибута `[lang]`"
+  },
+  "lighthouse-core/audits/accessibility/image-alt.js | description": {
+    "message": "Информативните елементи трябва да имат кратък, описателен алтернативен текст. При декоративните елементи атрибутът alt може да бъде оставен без стойност. [Научете повече](https://web.dev/image-alt/)."
+  },
+  "lighthouse-core/audits/accessibility/image-alt.js | failureTitle": {
+    "message": "Някои графични елементи нямат атрибути `[alt]`"
+  },
+  "lighthouse-core/audits/accessibility/image-alt.js | title": {
+    "message": "Графичните елементи имат атрибути `[alt]`"
+  },
+  "lighthouse-core/audits/accessibility/input-image-alt.js | description": {
+    "message": "Когато за бутон от тип `<input>` се използва изображение, предоставянето на алтернативен текст помага на потребителите на екранни четци да разберат за какво служи бутонът. [Научете повече](https://web.dev/input-image-alt/)."
+  },
+  "lighthouse-core/audits/accessibility/input-image-alt.js | failureTitle": {
+    "message": "Някои елементи `<input type=\"image\">` нямат алтернативен текст `[alt]`"
+  },
+  "lighthouse-core/audits/accessibility/input-image-alt.js | title": {
+    "message": "Елементите `<input type=\"image\">` имат алтернативен текст (`[alt]`)"
+  },
+  "lighthouse-core/audits/accessibility/label.js | description": {
+    "message": "Етикетите дават възможност на помощните технологии, като например екранни четци, да четат правилно контролите във формуляри. [Научете повече](https://web.dev/label/)."
+  },
+  "lighthouse-core/audits/accessibility/label.js | failureTitle": {
+    "message": "Някои елементи на формуляра нямат свързани етикети"
+  },
+  "lighthouse-core/audits/accessibility/label.js | title": {
+    "message": "Елементите на формуляра имат свързани етикети"
+  },
+  "lighthouse-core/audits/accessibility/layout-table.js | description": {
+    "message": "Ако дадена таблица се използва само за оформление, тя не трябва да съдържа елементи с данни, като например елементите th или caption или атрибута summary, тъй като това може да създаде объркване за потребителите на екранни четци. [Научете повече](https://web.dev/layout-table/)."
+  },
+  "lighthouse-core/audits/accessibility/layout-table.js | failureTitle": {
+    "message": "Презентационните елементи `<table>` използват `<th>`, `<caption>` или атрибута `[summary]`."
+  },
+  "lighthouse-core/audits/accessibility/layout-table.js | title": {
+    "message": "Презентационните елементи `<table>` не използват `<th>`, `<caption>` или атрибута `[summary]`."
+  },
+  "lighthouse-core/audits/accessibility/link-name.js | description": {
+    "message": "Текстът на връзките (и алтернативният текст за изображения, когато се използват за връзки), който е различим, уникален и дава възможност фокусът да бъде поставен върху него, подобрява навигирането за потребителите на екранни четци. [Научете повече](https://web.dev/link-name/)."
+  },
+  "lighthouse-core/audits/accessibility/link-name.js | failureTitle": {
+    "message": "Някои връзки нямат отличително име"
+  },
+  "lighthouse-core/audits/accessibility/link-name.js | title": {
+    "message": "Връзките имат отличителни имена"
+  },
+  "lighthouse-core/audits/accessibility/list.js | description": {
+    "message": "Екранните четци съобщават съдържанието на списъците по специфичен начин. Правилното структуриране на списъците улеснява четенето им от екранните четци. [Научете повече](https://web.dev/list/)."
+  },
+  "lighthouse-core/audits/accessibility/list.js | failureTitle": {
+    "message": "Някои списъци не съдържат само елементи `<li>` и елементи за поддръжка на скриптове (`<script>` и `<template>`)."
+  },
+  "lighthouse-core/audits/accessibility/list.js | title": {
+    "message": "Списъците съдържат само елементи `<li>` и елементи за поддръжка на скриптове (`<script>` и `<template>`)."
+  },
+  "lighthouse-core/audits/accessibility/listitem.js | description": {
+    "message": "Екранните четци изискват списъчните елементи (`<li>`) да се съдържат в родителски елемент `<ul>` или `<ol>`, за да бъдат прочетени правилно. [Научете повече](https://web.dev/listitem/)."
+  },
+  "lighthouse-core/audits/accessibility/listitem.js | failureTitle": {
+    "message": "Някои списъчни елементи (`<li>`) не се съдържат в родителски елементи `<ul>` или `<ol>`."
+  },
+  "lighthouse-core/audits/accessibility/listitem.js | title": {
+    "message": "Списъчните елементи (`<li>`) се съдържат в родителски елементи `<ul>` или `<ol>`"
+  },
+  "lighthouse-core/audits/accessibility/meta-refresh.js | description": {
+    "message": "Потребителите не очакват страницата да се опресни автоматично и ако това се случи, фокусът ще бъде върнат в горната й част. Това може да бъде дразнещо или объркващо за потребителите. [Научете повече](https://web.dev/meta-refresh/)."
+  },
+  "lighthouse-core/audits/accessibility/meta-refresh.js | failureTitle": {
+    "message": "Документът използва `<meta http-equiv=\"refresh\">`"
+  },
+  "lighthouse-core/audits/accessibility/meta-refresh.js | title": {
+    "message": "Документът не използва `<meta http-equiv=\"refresh\">`"
+  },
+  "lighthouse-core/audits/accessibility/meta-viewport.js | description": {
+    "message": "Невъзможността за промяна на мащаба създава проблем за потребителите със слабо зрение, които разчитат на увеличението на екрана, за да виждат добре съдържанието на уеб страниците. [Научете повече](https://web.dev/meta-viewport/)."
+  },
+  "lighthouse-core/audits/accessibility/meta-viewport.js | failureTitle": {
+    "message": "`[user-scalable=\"no\"]` се използва в елемента `<meta name=\"viewport\">` или стойността на атрибута `[maximum-scale]` е по-малка от 5."
+  },
+  "lighthouse-core/audits/accessibility/meta-viewport.js | title": {
+    "message": "`[user-scalable=\"no\"]` не се използва в елемента `<meta name=\"viewport\">` и стойността на атрибута `[maximum-scale]` не е по-малка от 5."
+  },
+  "lighthouse-core/audits/accessibility/object-alt.js | description": {
+    "message": "Екранните четци не могат да интерпретират нетекстово съдържание. Добавянето на алтернативен текст към елементите `<object>` помага на екранните четци да предават смисъла им на потребителите. [Научете повече](https://web.dev/object-alt/)."
+  },
+  "lighthouse-core/audits/accessibility/object-alt.js | failureTitle": {
+    "message": "Някои елементи `<object>` нямат алтернативен текст `[alt]`"
+  },
+  "lighthouse-core/audits/accessibility/object-alt.js | title": {
+    "message": "Елементите `<object>` имат алтернативен текст (`[alt]`)"
+  },
+  "lighthouse-core/audits/accessibility/tabindex.js | description": {
+    "message": "Ако стойността е по-голяма от 0, значи се използва изричен ред на навигиране. Въпреки че е технически валидно, това често създава неудобства за потребителите, които разчитат на помощни технологии. [Научете повече](https://web.dev/tabindex/)."
+  },
+  "lighthouse-core/audits/accessibility/tabindex.js | failureTitle": {
+    "message": "Някои елементи имат атрибут `[tabindex]` със стойност, по-голяма от 0"
+  },
+  "lighthouse-core/audits/accessibility/tabindex.js | title": {
+    "message": "Никой от елементите няма атрибут `[tabindex]` със стойност, по-голяма от 0"
+  },
+  "lighthouse-core/audits/accessibility/td-headers-attr.js | description": {
+    "message": "Екранните четци имат функции за улесняване на навигирането в таблици. Когато клетките от типа `<td>`, използващи атрибута `[headers]`, сочат само към други клетки от същата таблица, това може да подобри практическата работа за потребителите на екранни четци. [Научете повече](https://web.dev/td-headers-attr/)."
+  },
+  "lighthouse-core/audits/accessibility/td-headers-attr.js | failureTitle": {
+    "message": "Някои клетки в елемент `<table>`, които използват атрибута `[headers]`, не сочат към други клетки от същата таблица."
+  },
+  "lighthouse-core/audits/accessibility/td-headers-attr.js | title": {
+    "message": "Клетките в елемент `<table>`, които използват атрибута `[headers]`, сочат само към други клетки от същата таблица."
+  },
+  "lighthouse-core/audits/accessibility/th-has-data-cells.js | description": {
+    "message": "Екранните четци имат функции за улесняване на навигирането в таблици. Когато всички заглавки в таблицата сочат към някакъв набор от клетки, това може да подобри практическата работа за потребителите на екранни четци. [Научете повече](https://web.dev/th-has-data-cells/)."
+  },
+  "lighthouse-core/audits/accessibility/th-has-data-cells.js | failureTitle": {
+    "message": "Някои елементи `<th>` и елементи с `[role=\"columnheader\"/\"rowheader\"]` нямат клетки с данни, за които служат като описание."
+  },
+  "lighthouse-core/audits/accessibility/th-has-data-cells.js | title": {
+    "message": "Елементите `<th>` и тези с `[role=\"columnheader\"/\"rowheader\"]` имат клетки с данни, за които служат като описание."
+  },
+  "lighthouse-core/audits/accessibility/valid-lang.js | description": {
+    "message": "Посочването на валиден [език по BCP 47](https://www.w3.org/International/questions/qa-choosing-language-tags#question) за елементите дава възможност на екранните четци да произнасят текста правилно. [Научете повече](https://web.dev/valid-lang/)."
+  },
+  "lighthouse-core/audits/accessibility/valid-lang.js | failureTitle": {
+    "message": "Някои атрибути `[lang]` нямат валидна стойност"
+  },
+  "lighthouse-core/audits/accessibility/valid-lang.js | title": {
+    "message": "Атрибутите `[lang]` имат валидна стойност"
+  },
+  "lighthouse-core/audits/accessibility/video-caption.js | description": {
+    "message": "Наличието на надпис за даден видеоклип улеснява достъпа до съответната информация за потребителите със слухови увреждания. [Научете повече](https://web.dev/video-caption/)."
+  },
+  "lighthouse-core/audits/accessibility/video-caption.js | failureTitle": {
+    "message": "Някои елементи `<video>` не съдържат елемент `<track>` с `[kind=\"captions\"]`."
+  },
+  "lighthouse-core/audits/accessibility/video-caption.js | title": {
+    "message": "Елементите `<video>` съдържат елемент `<track>` с `[kind=\"captions\"]`"
+  },
+  "lighthouse-core/audits/accessibility/video-description.js | description": {
+    "message": "Аудиоописанията предоставят полезна информация за видеоклиповете (например за обстановката и изражението на лицата на героите), която потребителите не биха могли да разберат от диалога. [Научете повече](https://web.dev/video-description/)."
+  },
+  "lighthouse-core/audits/accessibility/video-description.js | failureTitle": {
+    "message": "Някои елементи `<video>` не съдържат елемент `<track>` с `[kind=\"description\"]`."
+  },
+  "lighthouse-core/audits/accessibility/video-description.js | title": {
+    "message": "Елементите `<video>` съдържат елемент `<track>` с `[kind=\"description\"]`"
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | description": {
+    "message": "За най-добро изобразяване под iOS, когато потребителите добавят прогресивно уеб приложение (PWA) към началния екран, дефинирайте атрибут `apple-touch-icon`. Той трябва да сочи към непрозрачен квадратен PNG файл със страна от 192 (или 180) пиксела. [Научете повече](https://developers.google.com/web/fundamentals/design-and-ux/browser-customization/)."
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | failureTitle": {
+    "message": "Не осигурява валиден атрибут `apple-touch-icon`"
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | precomposedWarning": {
+    "message": "Атрибутът `apple-touch-icon-precomposed` не е актуален, препоръчва се `apple-touch-icon`."
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | title": {
+    "message": "Съдържа валиден атрибут `apple-touch-icon`"
+  },
+  "lighthouse-core/audits/bootup-time.js | chromeExtensionsWarning": {
+    "message": "Зареждането на тази страница се забавя от разширения за Chrome. Опитайте да я проверите в режим „инкогнито“ или от потребителски профил в Chrome без инсталирани разширения."
+  },
+  "lighthouse-core/audits/bootup-time.js | columnScriptEval": {
+    "message": "Проверка на скрипта"
+  },
+  "lighthouse-core/audits/bootup-time.js | columnScriptParse": {
+    "message": "Синтактичен анализ на скрипта"
+  },
+  "lighthouse-core/audits/bootup-time.js | columnTotal": {
+    "message": "Общо процесорно време"
+  },
+  "lighthouse-core/audits/bootup-time.js | description": {
+    "message": "Препоръчваме да намалите времето, прекарвано в синтактичен анализ, компилиране и изпълнение на JS. Използването на JS ресурси с по-малък размер може да помогне за това. [Научете повече](https://developers.google.com/web/tools/lighthouse/audits/bootup)."
+  },
+  "lighthouse-core/audits/bootup-time.js | failureTitle": {
+    "message": "Намалете времето за изпълнение на JavaScript"
+  },
+  "lighthouse-core/audits/bootup-time.js | title": {
+    "message": "Време за изпълнение на JavaScript"
+  },
+  "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | description": {
+    "message": "Големите GIF файлове не са ефективни за показване на анимирано съдържание. Вместо това препоръчваме да използвате видеоклипове във формат MPEG4/WebM за анимации и PNG/WebP за статични изображения, за да намалите преноса на данни. [Научете повече](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/replace-animated-gifs-with-video/)"
+  },
+  "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | title": {
+    "message": "Използвайте видеоформати за анимираното съдържание"
+  },
+  "lighthouse-core/audits/byte-efficiency/offscreen-images.js | description": {
+    "message": "За да намалите времето до интерактивност, препоръчваме скритите изображения и тези извън видимата част на екрана да се зареждат след всички критични ресурси. [Научете повече](https://developers.google.com/web/tools/lighthouse/audits/offscreen-images)."
+  },
+  "lighthouse-core/audits/byte-efficiency/offscreen-images.js | title": {
+    "message": "Отложете зареждането на изображенията извън видимата част на екрана"
+  },
+  "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | description": {
+    "message": "Ресурси блокират първото изобразяване на страницата ви. Препоръчваме да вградите критичните JS/CSS елементи и да отложите зареждането на всички некритични стилове или JS код. [Научете повече](https://developers.google.com/web/tools/lighthouse/audits/blocking-resources)."
+  },
+  "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | title": {
+    "message": "Елиминирайте ресурсите, които блокират изобразяването"
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | description": {
+    "message": "Мрежовите ресурси с голям размер струват пари на потребителите и са тясно свързани с бавното зареждане. [Научете повече](https://developers.google.com/web/tools/lighthouse/audits/network-payloads)."
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | displayValue": {
+    "message": "Общият размер бе {totalBytes, number, bytes} КБ"
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | failureTitle": {
+    "message": "Не използвайте мрежови ресурси с голям размер"
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | title": {
+    "message": "Не се използват мрежови ресурси с голям размер"
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-css.js | description": {
+    "message": "Минимизирането на файловете със CSS може да намали размера на мрежовите ресурси. [Научете повече](https://developers.google.com/web/tools/lighthouse/audits/minify-css)."
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-css.js | title": {
+    "message": "Минимизирайте CSS"
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | description": {
+    "message": "Минимизирането на файловете с JavaScript може да намали размера на ресурсите и времето за синтактичен анализ на скрипта. [Научете повече](https://developers.google.com/speed/docs/insights/MinifyResources)."
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | title": {
+    "message": "Минимизирайте JavaScript"
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | description": {
+    "message": "Премахнете ненужните правила от стиловите листове и отложете зареждането на CSS кода, който не се използва за съдържанието на видимата на екрана част от страницата, за да намалите ненужния пренос на данни в мрежата. [Научете повече](https://developers.google.com/web/tools/lighthouse/audits/unused-css)."
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | title": {
+    "message": "Премахнете неизползвания CSS код"
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-javascript.js | description": {
+    "message": "Премахнете неизползвания JavaScript, за да намалите преноса на данни при мрежовата активност."
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-javascript.js | title": {
+    "message": "Премахнете неизползвания JavaScript"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | description": {
+    "message": "Продължителното съхраняване в кеша може да ускори повторните посещения на страницата ви. [Научете повече](https://developers.google.com/web/tools/lighthouse/audits/cache-policy)."
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | displayValue": {
+    "message": "{itemCount,plural, =1{Намерен е 1 ресурс}other{Намерени са # ресурса}}"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | failureTitle": {
+    "message": "Използвайте ефективни правила за кеша, за да улесните показването на статичните активи"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | title": {
+    "message": "Използват се ефективни правила за кеширане на статичните активи"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | description": {
+    "message": "Оптимизираните изображения се зареждат по-бързо и използват по-малко мобилни данни. [Научете повече](https://developers.google.com/web/tools/lighthouse/audits/optimize-images)."
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | title": {
+    "message": "Кодирайте изображенията ефективно"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | description": {
+    "message": "Показвайте правилно оразмерени изображения, за да пестите мобилни данни и да ускорите зареждането. [Научете повече](https://developers.google.com/web/tools/lighthouse/audits/oversized-images)."
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | title": {
+    "message": "Оразмерете изображенията правилно"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | description": {
+    "message": "При показването на текстови ресурси трябва да се използва компресиране (gzip, deflate или brotli), за да се намали общият пренос на данни. [Научете повече](https://developers.google.com/web/tools/lighthouse/audits/text-compression)."
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | title": {
+    "message": "Активирайте компресирането на текста"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | description": {
+    "message": "Графични формати, като JPEG 2000, JPEG XR и WebP, често осигуряват по-ефективно компресиране от PNG или JPEG. Това означава по-бързо изтегляне и използване на по-малко данни. [Научете повече](https://developers.google.com/web/tools/lighthouse/audits/webp)."
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | title": {
+    "message": "Използвайте съвременни формати за показване на изображения"
+  },
+  "lighthouse-core/audits/content-width.js | description": {
+    "message": "Ако ширината на съдържанието на приложението ви не съответства на тази на прозоречния изглед, приложението ви може да не е оптимизирано за мобилни екрани. [Научете повече](https://developers.google.com/web/tools/lighthouse/audits/content-sized-correctly-for-viewport)."
+  },
+  "lighthouse-core/audits/content-width.js | explanation": {
+    "message": "Размерът на прозоречния изглед ({innerWidth} пкс) не съответства на размера на прозореца ({outerWidth} пкс)."
+  },
+  "lighthouse-core/audits/content-width.js | failureTitle": {
+    "message": "Съдържанието не е оразмерено правилно за прозоречния изглед"
+  },
+  "lighthouse-core/audits/content-width.js | title": {
+    "message": "Съдържанието е оразмерено правилно за прозоречния изглед"
+  },
+  "lighthouse-core/audits/critical-request-chains.js | description": {
+    "message": "Веригите от критични заявки по-долу ви показват кои ресурси се зареждат с висок приоритет. За да ускорите зареждането на страницата, препоръчваме да скъсите веригите, да намалите размера за изтегляне на ресурсите или да отложите изтеглянето на ненужните от тях. [Научете повече](https://developers.google.com/web/tools/lighthouse/audits/critical-request-chains)."
+  },
+  "lighthouse-core/audits/critical-request-chains.js | displayValue": {
+    "message": "{itemCount,plural, =1{Намерена е 1 верига}other{Намерени са # вериги}}"
+  },
+  "lighthouse-core/audits/critical-request-chains.js | title": {
+    "message": "Намалете дълбочината на критичните заявки"
+  },
+  "lighthouse-core/audits/deprecations.js | columnDeprecate": {
+    "message": "Оттегляне/предупреждение"
+  },
+  "lighthouse-core/audits/deprecations.js | columnLine": {
+    "message": "Ред"
+  },
+  "lighthouse-core/audits/deprecations.js | description": {
+    "message": "Оттеглените приложни програмни интерфейси (API) след време ще бъдат премахнати от браузъра. [Научете повече](https://web.dev/deprecations)."
+  },
+  "lighthouse-core/audits/deprecations.js | displayValue": {
+    "message": "{itemCount,plural, =1{Открито бе 1 предупреждение}other{Открити бяха # предупреждения}}"
+  },
+  "lighthouse-core/audits/deprecations.js | failureTitle": {
+    "message": "Използва оттеглени приложни програмни интерфейси (API)"
+  },
+  "lighthouse-core/audits/deprecations.js | title": {
+    "message": "Избягва оттеглени API"
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | description": {
+    "message": "Кешът на приложенията е оттеглен. [Научете повече](https://web.dev/appcache-manifest)."
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | displayValue": {
+    "message": "Намерихме {AppCacheManifest}"
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | failureTitle": {
+    "message": "Използва кеша на приложенията"
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | title": {
+    "message": "Избягва кеша на приложенията"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | description": {
+    "message": "Посочването на doctype не позволява на браузъра да премине в режим на обратна съвместимост. [Научете повече](https://web.dev/doctype)."
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationBadDoctype": {
+    "message": "Името за doctype трябва да е низът `html` с малки букви"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationNoDoctype": {
+    "message": "Документът трябва да съдържа doctype"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationPublicId": {
+    "message": "За полето publicId се очакваше да бъде празен низ"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationSystemId": {
+    "message": "За полето systemId се очакваше да бъде празен низ"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | failureTitle": {
+    "message": "На страницата липсва doctype на HTML, което задейства режим на обратна съвместимост"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | title": {
+    "message": "Страницата съдържа doctype на HTML"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | columnElement": {
+    "message": "Елемент"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | columnStatistic": {
+    "message": "Статистически данни"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | columnValue": {
+    "message": "Стойност"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | description": {
+    "message": "Браузърните инженери препоръчват страниците да съдържат под 1500 елемента в DOM. Най-добре е йерархичната структура да не е по-дълбока от 32 нива и всеки родителски елемент да има по-малко от 60 дъщерни. Големият размер на DOM може да доведе до използване на повече памет, удължаване на [стиловите изчисления](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations) и забавяне поради [преоформяне](https://developers.google.com/speed/articles/reflow). [Научете повече](https://web.dev/dom-size)."
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 елемент}other{# елемента}}"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | failureTitle": {
+    "message": "Не използвайте DOM с твърде голям размер"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | statisticDOMDepth": {
+    "message": "Максимална дълбочина на DOM"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | statisticDOMElements": {
+    "message": "Общ брой елементи в DOM"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | statisticDOMWidth": {
+    "message": "Максимален брой дъщерни елементи"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | title": {
+    "message": "Не се използва DOM с твърде голям размер"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | columnRel": {
+    "message": "Rel"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | columnTarget": {
+    "message": "Target"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | description": {
+    "message": "Добавете `rel=\"noopener\"` или `rel=\"noreferrer\"` към връзките към външни сайтове, за да подобрите ефективността и да избегнете уязвимости в сигурността. [Научете повече](https://web.dev/external-anchors-use-rel-noopener)."
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | failureTitle": {
+    "message": "Връзките към външни дестинации не са безопасни"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | title": {
+    "message": "Връзките към външни дестинации са безопасни"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | warning": {
+    "message": "Не можахме да определим дестинацията за котвата ({anchorHTML}). Ако не се използва като хипервръзка, бихте могли да премахнете target=_blank."
+  },
+  "lighthouse-core/audits/dobetterweb/geolocation-on-start.js | description": {
+    "message": "Потребителите се объркват или нямат доверие на сайтове, които искат да узнаят местоположението им без контекст. Вместо това бихте могли да обвържете заявката към действие на потребителя. [Научете повече](https://web.dev/geolocation-on-start)."
+  },
+  "lighthouse-core/audits/dobetterweb/geolocation-on-start.js | failureTitle": {
+    "message": "Иска разрешение за геолокация при зареждането на страницата"
+  },
+  "lighthouse-core/audits/dobetterweb/geolocation-on-start.js | title": {
+    "message": "Избягва да иска разрешение за геолокация при зареждането на страницата"
+  },
+  "lighthouse-core/audits/dobetterweb/js-libraries.js | columnVersion": {
+    "message": "Версия"
+  },
+  "lighthouse-core/audits/dobetterweb/js-libraries.js | description": {
+    "message": "Всички библиотеки на JavaScript за предния слой, открити на страницата. [Научете повече](https://web.dev/js-libraries)."
+  },
+  "lighthouse-core/audits/dobetterweb/js-libraries.js | title": {
+    "message": "Открити библиотеки на JavaScript"
+  },
+  "lighthouse-core/audits/dobetterweb/no-document-write.js | description": {
+    "message": "За потребителите с бавни връзки външните скриптове, вмъквани динамично чрез `document.write()`, могат да забавят зареждането на страницата с десетки секунди. [Научете повече](https://web.dev/no-document-write)."
+  },
+  "lighthouse-core/audits/dobetterweb/no-document-write.js | failureTitle": {
+    "message": "Използва `document.write()`"
+  },
+  "lighthouse-core/audits/dobetterweb/no-document-write.js | title": {
+    "message": "Избягва `document.write()`"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | columnSeverity": {
+    "message": "Най-високо ниво на сериозност"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | columnVersion": {
+    "message": "Версия на библиотеката"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | columnVuln": {
+    "message": "Брой уязвимости"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | description": {
+    "message": "Някои скриптове на трети страни може да съдържат известни уязвимости в сигурността, които лесно се откриват и използват от атакуващите. [Научете повече](https://web.dev/no-vulnerable-libraries)."
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | displayValue": {
+    "message": "{itemCount,plural, =1{Открита е 1 уязвимост}other{Открити са # уязвимости}}"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | failureTitle": {
+    "message": "Включва библиотеки на JavaScript за предния слой, съдържащи известни уязвимости в сигурността"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | rowSeverityHigh": {
+    "message": "Високо"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | rowSeverityLow": {
+    "message": "Ниско"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | rowSeverityMedium": {
+    "message": "Средно"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | title": {
+    "message": "Избягва библиотеки на JavaScript за предния слой, съдържащи известни уязвимости в сигурността"
+  },
+  "lighthouse-core/audits/dobetterweb/notification-on-start.js | description": {
+    "message": "Потребителите се объркват или нямат доверие на сайтове, които искат да изпращат известия без контекст. Вместо това бихте могли да обвържете заявката към жестове на потребителя. [Научете повече](https://web.dev/notification-on-start)."
+  },
+  "lighthouse-core/audits/dobetterweb/notification-on-start.js | failureTitle": {
+    "message": "Иска разрешение за известяване при зареждането на страницата"
+  },
+  "lighthouse-core/audits/dobetterweb/notification-on-start.js | title": {
+    "message": "Избягва да иска разрешение за известяване при зареждането на страницата"
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | columnFailingElem": {
+    "message": "Елементи с грешки"
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | description": {
+    "message": "Забраната на поставянето на пароли неутрализира добра практика за сигурност. [Научете повече](https://web.dev/password-inputs-can-be-pasted-into)."
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | failureTitle": {
+    "message": "Не позволява на потребителите да поставят в полетата за парола"
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | title": {
+    "message": "Разрешава на потребителите да поставят в полетата за парола"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | columnProtocol": {
+    "message": "Протокол"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | description": {
+    "message": "HTTP/2 предлага много предимства спрямо HTTP/1.1, включително заглавки в двоичен формат, мултиплексиране и самостоятелно изпращане на информация от сървъра. [Научете повече](https://web.dev/uses-http2)."
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 заявка не е обслужена през HTTP/2}other{# заявки не са обслужени през HTTP/2}}"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | failureTitle": {
+    "message": "Не използва HTTP/2 за всичките си ресурси"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | title": {
+    "message": "Използва HTTP/2 за собствените си ресурси"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-passive-event-listeners.js | description": {
+    "message": "За да подобрите ефективността на страницата си при превъртане, бихте могли да означите като `passive` приемателите си на събития, свързани с докосване и с колелцето на мишката. [Научете повече](https://web.dev/uses-passive-event-listeners)."
+  },
+  "lighthouse-core/audits/dobetterweb/uses-passive-event-listeners.js | failureTitle": {
+    "message": "Не използва пасивни приематели на събития за подобряване на ефективността при превъртане"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-passive-event-listeners.js | title": {
+    "message": "Използва пасивни приематели на събития за подобряване на ефективността при превъртане"
+  },
+  "lighthouse-core/audits/errors-in-console.js | columnDesc": {
+    "message": "Описание"
+  },
+  "lighthouse-core/audits/errors-in-console.js | description": {
+    "message": "Грешките, записани в конзолата, показват нерешени проблеми. Те може да се дължат на неуспешни заявки за мрежата и други проблеми в браузъра. [Научете повече](https://web.dev/errors-in-console)"
+  },
+  "lighthouse-core/audits/errors-in-console.js | failureTitle": {
+    "message": "В конзолата бяха записани грешки в браузъра"
+  },
+  "lighthouse-core/audits/errors-in-console.js | title": {
+    "message": "В конзолата не бяха записани грешки в браузъра"
+  },
+  "lighthouse-core/audits/font-display.js | description": {
+    "message": "Използвайте функцията font-display на CSS, така че текстът да е видим за потребителите, докато уеб шрифтовете се зареждат. [Научете повече](https://developers.google.com/web/updates/2016/02/font-display)."
+  },
+  "lighthouse-core/audits/font-display.js | failureTitle": {
+    "message": "Уверете се, че текстът остава видим при зареждането на уеб шрифтовете"
+  },
+  "lighthouse-core/audits/font-display.js | title": {
+    "message": "Целият текст остава видим при зареждането на уеб шрифтовете"
+  },
+  "lighthouse-core/audits/font-display.js | undeclaredFontURLWarning": {
+    "message": "Lighthouse не успя да провери автоматично стойността на font-display за следния URL адрес: {fontURL}."
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | columnActual": {
+    "message": "Съотношение (действително)"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | columnDisplayed": {
+    "message": "Съотношение (показвано)"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | description": {
+    "message": "Размерите за показване на изображението трябва да съответстват на естественото съотношение. [Научете повече](https://web.dev/image-aspect-ratio)."
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | failureTitle": {
+    "message": "Показва изображения с неправилно съотношение"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | title": {
+    "message": "Показва изображенията с правилно съотношение"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | warningCompute": {
+    "message": "Информацията за размера на изображението е невалидна: {url}"
+  },
+  "lighthouse-core/audits/installable-manifest.js | description": {
+    "message": "Браузърите могат проактивно да подканват потребителите да добавят приложението ви към началния екран, което може да повиши ангажираността. [Научете повече](https://developers.google.com/web/tools/lighthouse/audits/install-prompt)."
+  },
+  "lighthouse-core/audits/installable-manifest.js | failureTitle": {
+    "message": "Манифестът на уеб приложението не отговаря на изискванията за възможност за инсталиране"
+  },
+  "lighthouse-core/audits/installable-manifest.js | title": {
+    "message": "Манифестът на уеб приложението отговаря на изискванията за възможност за инсталиране"
+  },
+  "lighthouse-core/audits/is-on-https.js | columnInsecureURL": {
+    "message": "Несигурен URL адрес"
+  },
+  "lighthouse-core/audits/is-on-https.js | description": {
+    "message": "Всички сайтове трябва да бъдат защитени с HTTPS, дори онези, които не работят с поверителни данни. HTTPS не позволява на външни лица да променят или подслушват комуникацията между приложението ви и потребителите и е задължително условие за HTTP/2 и множество нови приложни програмни интерфейси (API) за платформи в мрежата. [Научете повече](https://web.dev/is-on-https)."
+  },
+  "lighthouse-core/audits/is-on-https.js | displayValue": {
+    "message": "{itemCount,plural, =1{Установена е 1 незащитена заявка}other{Установени са # незащитени заявки}}"
+  },
+  "lighthouse-core/audits/is-on-https.js | failureTitle": {
+    "message": "Не използва HTTPS"
+  },
+  "lighthouse-core/audits/is-on-https.js | title": {
+    "message": "Използва HTTPS"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | description": {
+    "message": "Бързото зареждане на страниците през мобилни мрежи осигурява добра практическа работа за потребителите на мобилни устройства. [Научете повече](https://developers.google.com/web/tools/lighthouse/audits/fast-3g)."
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | displayValueText": {
+    "message": "Интерактивна след {timeInMs, number, seconds} сек"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | displayValueTextWithOverride": {
+    "message": "Интерактивност при симулирана мобилна мрежа след {timeInMs, number, seconds} сек"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | explanationLoadSlow": {
+    "message": "Страницата се зарежда прекалено бавно и не е интерактивна в рамките на 10 секунди. За да научите как да я подобрите, разгледайте възможностите и диагностичните данни в секцията „Ефективност“."
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | failureTitle": {
+    "message": "Страницата не се зарежда достатъчно бързо през мобилни мрежи"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | title": {
+    "message": "Страницата се зарежда достатъчно бързо през мобилни мрежи"
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | columnCategory": {
+    "message": "Категория"
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | description": {
+    "message": "Препоръчваме да намалите времето, прекарвано в синтактичен анализ, компилиране и изпълнение на JS. Използването на JS ресурси с по-малък размер може да помогне за това."
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | failureTitle": {
+    "message": "Сведете до минимум работата по основната нишка"
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | title": {
+    "message": "Работата по основната нишка е сведена до минимум"
+  },
+  "lighthouse-core/audits/manual/pwa-cross-browser.js | description": {
+    "message": "За да достигнат до възможно най-много потребители, сайтовете трябва да работят във всички основни браузъри. [Научете повече](https://developers.google.com/web/progressive-web-apps/checklist#site-works-cross-browser)."
+  },
+  "lighthouse-core/audits/manual/pwa-cross-browser.js | title": {
+    "message": "Сайтът работи в различни браузъри"
+  },
+  "lighthouse-core/audits/manual/pwa-each-page-has-url.js | description": {
+    "message": "Oтделните страници трябва да могат да се свързват пряко чрез URL адрес, а URL адресите трябва да са уникални, за да се даде възможност за споделянето им в социалните медии. [Научете повече](https://developers.google.com/web/progressive-web-apps/checklist#each-page-has-a-url)."
+  },
+  "lighthouse-core/audits/manual/pwa-each-page-has-url.js | title": {
+    "message": "Всяка страница има URL адрес"
+  },
+  "lighthouse-core/audits/manual/pwa-page-transitions.js | description": {
+    "message": "Дори когато мрежата е бавна, преходите при докосване на различни елементи трябва да са бързи – така се създава усещане за добра ефективност. [Научете повече](https://developers.google.com/web/progressive-web-apps/checklist#page-transitions-dont-feel-like-they-block-on-the-network)."
+  },
+  "lighthouse-core/audits/manual/pwa-page-transitions.js | title": {
+    "message": "Преходите между страниците не създават усещане за забавяне на мрежата"
+  },
+  "lighthouse-core/audits/metrics/estimated-input-latency.js | description": {
+    "message": "Приблизителното забавяне при входящо действие показва приблизително колко време (в милисекунди) е необходимо на приложението ви, за да реагира на входящо потребителско действие по време на най-натоварения 5-секунден период от зареждането на страницата. Ако забавянето е над 50 милисекунди, приложението ви може да се стори бавно на потребителите. [Научете повече](https://developers.google.com/web/tools/lighthouse/audits/estimated-input-latency)."
+  },
+  "lighthouse-core/audits/metrics/estimated-input-latency.js | title": {
+    "message": "Прогнозно забавяне при входящо действие"
+  },
+  "lighthouse-core/audits/metrics/first-contentful-paint.js | description": {
+    "message": "Показателят „Първо изобразяване на съдържание (FCP)“ указва след колко време се изобразява първият текстов или графичен елемент. [Научете повече](https://developers.google.com/web/tools/lighthouse/audits/first-contentful-paint)."
+  },
+  "lighthouse-core/audits/metrics/first-contentful-paint.js | title": {
+    "message": "Първо изобразяване на съдържание"
+  },
+  "lighthouse-core/audits/metrics/first-cpu-idle.js | description": {
+    "message": "Показателят „Първи момент на неактивност на процесора“ указва първия момент, в който основната нишка на страницата е достатъчно свободна, за да обработва входящи действия. [Научете повече](https://developers.google.com/web/tools/lighthouse/audits/first-interactive)."
+  },
+  "lighthouse-core/audits/metrics/first-cpu-idle.js | title": {
+    "message": "Първи момент на неактивност на процесора"
+  },
+  "lighthouse-core/audits/metrics/first-meaningful-paint.js | description": {
+    "message": "Показателят „Първо значимо изобразяване“ измерва времето, за което основното съдържание на страницата става видимо. [Научете повече](https://developers.google.com/web/tools/lighthouse/audits/first-meaningful-paint)."
+  },
+  "lighthouse-core/audits/metrics/first-meaningful-paint.js | title": {
+    "message": "Първо значимо изобразяване"
+  },
+  "lighthouse-core/audits/metrics/interactive.js | description": {
+    "message": "Времето до интерактивност показва след колко време страницата става напълно интерактивна. [Научете повече](https://developers.google.com/web/tools/lighthouse/audits/consistently-interactive)."
+  },
+  "lighthouse-core/audits/metrics/interactive.js | title": {
+    "message": "Време до интерактивност"
+  },
+  "lighthouse-core/audits/metrics/max-potential-fid.js | description": {
+    "message": "Максималното потенциално забавяне при първото взаимодействие на потребителите е продължителността в милисекунди на най-времеемката задача. [Научете повече](https://developers.google.com/web/updates/2018/05/first-input-delay)."
+  },
+  "lighthouse-core/audits/metrics/max-potential-fid.js | title": {
+    "message": "Макс. потенц. забавяне при 1. взаимодействие"
+  },
+  "lighthouse-core/audits/metrics/speed-index.js | description": {
+    "message": "Индексът на скоростта показва колко бързо се постига визуална завършеност на страницата. [Научете повече](https://developers.google.com/web/tools/lighthouse/audits/speed-index)."
+  },
+  "lighthouse-core/audits/metrics/speed-index.js | title": {
+    "message": "Индекс на скоростта"
+  },
+  "lighthouse-core/audits/metrics/total-blocking-time.js | description": {
+    "message": "Сумата от всички интервали от време между FCP и „Време до интерактивност“, когато задачата е траела над 50 мсек, изразена в милисекунди."
+  },
+  "lighthouse-core/audits/metrics/total-blocking-time.js | title": {
+    "message": "Общо време на блокиране"
+  },
+  "lighthouse-core/audits/network-rtt.js | description": {
+    "message": "Времето за осъществяване на двупосочна комуникация в мрежата оказва голямо влияние върху ефективността. Ако двупосочната комуникация с източника отнема дълго време, това означава, че разположени по-близо до потребителя сървъри биха подобрили ефективността. [Научете повече](https://hpbn.co/primer-on-latency-and-bandwidth/)."
+  },
+  "lighthouse-core/audits/network-rtt.js | title": {
+    "message": "Време за двупосочна комуникация в мрежата"
+  },
+  "lighthouse-core/audits/network-server-latency.js | description": {
+    "message": "Забавянията на сървъра могат да повлияят на ефективността на уебсайта. Голямото забавяне при източника указва, че сървърът е претоварен или задният слой не работи достатъчно ефективно. [Научете повече](https://hpbn.co/primer-on-web-performance/#analyzing-the-resource-waterfall)."
+  },
+  "lighthouse-core/audits/network-server-latency.js | title": {
+    "message": "Забавяния в задния слой на сървъра"
+  },
+  "lighthouse-core/audits/offline-start-url.js | description": {
+    "message": "Файлът service worker дава възможност на уеб приложението ви да работи надеждно при непредсказуеми условия в мрежата. [Научете повече](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)."
+  },
+  "lighthouse-core/audits/offline-start-url.js | failureTitle": {
+    "message": "`start_url` не отговаря с код 200, когато е офлайн"
+  },
+  "lighthouse-core/audits/offline-start-url.js | title": {
+    "message": "`start_url` отговаря с код 200, когато е офлайн"
+  },
+  "lighthouse-core/audits/offline-start-url.js | warningCantStart": {
+    "message": "Lighthouse не можа да прочете `start_url` от манифеста. В резултат на това бе предположено, че URL адресът на документа изпълнява функцията на `start_url`. Съобщение за грешка: „{manifestWarning}“."
+  },
+  "lighthouse-core/audits/performance-budget.js | columnOverBudget": {
+    "message": "Надхвърля бюджета"
+  },
+  "lighthouse-core/audits/performance-budget.js | description": {
+    "message": "Поддържайте количеството и обема на мрежовите заявки под целевите стойности в посочения бюджет за ефективността. [Научете повече](https://developers.google.com/web/tools/lighthouse/audits/budgets)."
+  },
+  "lighthouse-core/audits/performance-budget.js | requestCountOverBudget": {
+    "message": "{count,plural, =1{1 заявка}other{# заявки}}"
+  },
+  "lighthouse-core/audits/performance-budget.js | title": {
+    "message": "Бюджет за ефективността"
+  },
+  "lighthouse-core/audits/redirects-http.js | description": {
+    "message": "Ако вече сте настроили HTTPS, целият HTTP трафик трябва да се пренасочва към HTTPS, така че функциите за сигурност в мрежата да са активирани за всичките ви потребители. [Научете повече](https://developers.google.com/web/tools/lighthouse/audits/http-redirects-to-https)."
+  },
+  "lighthouse-core/audits/redirects-http.js | failureTitle": {
+    "message": "HTTP трафикът не се пренасочва към HTTPS"
+  },
+  "lighthouse-core/audits/redirects-http.js | title": {
+    "message": "HTTP трафикът се пренасочва към HTTPS"
+  },
+  "lighthouse-core/audits/redirects.js | description": {
+    "message": "Пренасочванията водят до допълнително забавяне на зареждането на страницата. [Научете повече](https://developers.google.com/web/tools/lighthouse/audits/redirects)."
+  },
+  "lighthouse-core/audits/redirects.js | title": {
+    "message": "Не използвайте пренасочвания през няколко страници"
+  },
+  "lighthouse-core/audits/resource-summary.js | description": {
+    "message": "За да определите бюджети за количеството и размера на ресурсите на страницата, добавете файл budget.json. [Научете повече](https://developers.google.com/web/tools/lighthouse/audits/budgets)."
+  },
+  "lighthouse-core/audits/resource-summary.js | displayValue": {
+    "message": "{requestCount,plural, =1{1 заявка • {byteCount, number, bytes} КБ}other{# заявки • {byteCount, number, bytes} КБ}}"
+  },
+  "lighthouse-core/audits/resource-summary.js | title": {
+    "message": "Поддържайте малък брой заявки и неголям обем на прехвърляните данни"
+  },
+  "lighthouse-core/audits/seo/canonical.js | description": {
+    "message": "Каноничните връзки указват кой URL адрес да се показва в резултатите от търсенето. [Научете повече](https://web.dev/canonical)."
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationConflict": {
+    "message": "Множество несъвместими URL адреси ({urlList})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationDifferentDomain": {
+    "message": "Сочи към друг домейн ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationInvalid": {
+    "message": "Невалиден URL адрес ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationPointsElsewhere": {
+    "message": "Сочи към местоположение с друг атрибут `hreflang` ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationRelative": {
+    "message": "Относителен URL адрес ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationRoot": {
+    "message": "Води до основния URL адрес (началната страница) на домейна вместо до еквивалентна страница със съдържание"
+  },
+  "lighthouse-core/audits/seo/canonical.js | failureTitle": {
+    "message": "Документът няма валидна връзка от тип `rel=canonical`"
+  },
+  "lighthouse-core/audits/seo/canonical.js | title": {
+    "message": "Документът има валиден атрибут `rel=canonical`"
+  },
+  "lighthouse-core/audits/seo/font-size.js | description": {
+    "message": "Шрифтовете с размер под 12 пиксела са твърде малки и се налага посетителите от мобилни устройства да увеличат мащаба с разтваряне на пръсти, за да прочетат текста. Старайте се над 60% от текста на страницата да е с размер поне 12 пиксела. [Научете повече](https://web.dev/font-size)."
+  },
+  "lighthouse-core/audits/seo/font-size.js | displayValue": {
+    "message": "{decimalProportion, number, extendedPercent} от текста е четлив"
+  },
+  "lighthouse-core/audits/seo/font-size.js | explanationViewport": {
+    "message": "Текстът не е четлив, тъй като няма мета маркер viewport, оптимизиран за мобилни екрани."
+  },
+  "lighthouse-core/audits/seo/font-size.js | explanationWithDisclaimer": {
+    "message": "{decimalProportion, number, extendedPercent} от текста е твърде малък (въз основа на извадка от {decimalProportionVisited, number, extendedPercent})."
+  },
+  "lighthouse-core/audits/seo/font-size.js | failureTitle": {
+    "message": "В документа не се използва шрифт с четлив размер"
+  },
+  "lighthouse-core/audits/seo/font-size.js | title": {
+    "message": "В документа се използва шрифт с четлив размер"
+  },
+  "lighthouse-core/audits/seo/hreflang.js | description": {
+    "message": "Връзките от типа hreflang указват на търсещите машини коя версия на страницата да бъде включена в резултатите от търсенето за даден език или регион. [Научете повече](https://web.dev/hreflang)."
+  },
+  "lighthouse-core/audits/seo/hreflang.js | failureTitle": {
+    "message": "Документът няма валиден атрибут `hreflang`"
+  },
+  "lighthouse-core/audits/seo/hreflang.js | title": {
+    "message": "Документът има валиден атрибут `hreflang`"
+  },
+  "lighthouse-core/audits/seo/http-status-code.js | description": {
+    "message": "Страниците с невалиден HTTP код на състоянието може да не бъдат индексирани правилно. [Научете повече](https://web.dev/http-status-code)."
+  },
+  "lighthouse-core/audits/seo/http-status-code.js | failureTitle": {
+    "message": "Страницата има невалиден HTTP код на състоянието"
+  },
+  "lighthouse-core/audits/seo/http-status-code.js | title": {
+    "message": "Страницата има валиден HTTP код на състоянието"
+  },
+  "lighthouse-core/audits/seo/is-crawlable.js | description": {
+    "message": "Търсещите машини не могат да включат страниците ви в резултатите от търсенето, ако нямат разрешение за обхождането им. [Научете повече](https://web.dev/is-crawable)."
+  },
+  "lighthouse-core/audits/seo/is-crawlable.js | failureTitle": {
+    "message": "Индексирането на страницата е блокирано"
+  },
+  "lighthouse-core/audits/seo/is-crawlable.js | title": {
+    "message": "Индексирането на страницата не е блокирано"
+  },
+  "lighthouse-core/audits/seo/link-text.js | description": {
+    "message": "Описателният текст на връзките помага на търсещите машини да разберат съдържанието ви. [Научете повече](https://web.dev/link-text)."
+  },
+  "lighthouse-core/audits/seo/link-text.js | displayValue": {
+    "message": "{itemCount,plural, =1{Открита е 1 връзка}other{Открити са # връзки}}"
+  },
+  "lighthouse-core/audits/seo/link-text.js | failureTitle": {
+    "message": "Текстът на връзките не е описателен"
+  },
+  "lighthouse-core/audits/seo/link-text.js | title": {
+    "message": "Текстът на връзките е описателен"
+  },
+  "lighthouse-core/audits/seo/manual/structured-data.js | description": {
+    "message": "Стартирайте [инструмента за тестване на структурирани данни](https://search.google.com/structured-data/testing-tool/) и [анализатора на структурирани данни](http://linter.structured-data.org/), за да проверите структурираните данни. [Научете повече](https://web.dev/structured-data)."
+  },
+  "lighthouse-core/audits/seo/manual/structured-data.js | title": {
+    "message": "Структурираните данни са валидни"
+  },
+  "lighthouse-core/audits/seo/meta-description.js | description": {
+    "message": "Мета описанията може да бъдат включени в резултатите от търсенето, за да се предостави сбито обобщение на съдържанието на страницата. [Научете повече](https://web.dev/meta-description)."
+  },
+  "lighthouse-core/audits/seo/meta-description.js | explanation": {
+    "message": "Липсва текст на описанието."
+  },
+  "lighthouse-core/audits/seo/meta-description.js | failureTitle": {
+    "message": "Документът няма мета описание"
+  },
+  "lighthouse-core/audits/seo/meta-description.js | title": {
+    "message": "Документът има мета описание"
+  },
+  "lighthouse-core/audits/seo/plugins.js | description": {
+    "message": "Търсещите машини не могат да индексират съдържание с приставки. Много устройства ограничават приставките или не ги поддържат. [Научете повече](https://web.dev/plugins)."
+  },
+  "lighthouse-core/audits/seo/plugins.js | failureTitle": {
+    "message": "В документа се използват приставки"
+  },
+  "lighthouse-core/audits/seo/plugins.js | title": {
+    "message": "Използването на приставки се избягва в документа"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | description": {
+    "message": "Ако файлът ви robots.txt не е форматиран правилно, роботите може да не могат да разберат как искате да бъде обходен или индексиран уебсайтът ви. [Научете повече](https://web.dev/robots-txt)."
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | displayValueHttpBadCode": {
+    "message": "При заявката за robots.txt бе върнат следният HTTP код на състоянието: {statusCode}"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | displayValueValidationError": {
+    "message": "{itemCount,plural, =1{Открита е 1 грешка}other{Открити са # грешки}}"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | explanation": {
+    "message": "Lighthouse не успя да изтегли файла robots.txt"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | failureTitle": {
+    "message": "Файлът robots.txt не е валиден"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | title": {
+    "message": "Файлът robots.txt е валиден"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | description": {
+    "message": "Интерактивните елементи, като бутони и връзки, трябва да са достатъчно големи (48 x 48 пиксела) и с достатъчно пространство около тях, за да се докосват лесно, без да се застъпват с други елементи. [Научете повече](https://web.dev/tap-targets)."
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | displayValue": {
+    "message": "{decimalProportion, number, percent} от целевите зони за докосване са оразмерени правилно"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | explanationViewportMetaNotOptimized": {
+    "message": "Целевите зони за докосване са твърде малки, тъй като няма мета маркер viewport, оптимизиран за мобилни екрани"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | failureTitle": {
+    "message": "Целевите зони за докосване не са оразмерени правилно"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | overlappingTargetHeader": {
+    "message": "Припокриваща се целева зона"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | tapTargetHeader": {
+    "message": "Целева зона за докосване"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | title": {
+    "message": "Целевите зони за докосване са оразмерени правилно"
+  },
+  "lighthouse-core/audits/service-worker.js | description": {
+    "message": "Service worker е технологията, която дава възможност на приложението ви да използва много от функциите на прогресивните уеб приложения (PWA), като например работа офлайн, добавяне към началния екран и насочени известия. [Научете повече](https://developers.google.com/web/tools/lighthouse/audits/registered-service-worker)."
+  },
+  "lighthouse-core/audits/service-worker.js | explanationBadManifest": {
+    "message": "Тази страница е контролирана от service worker, но не бе намерен параметър `start_url`, тъй като при синтактичния анализ бе установено, че манифестът не е във валиден формат JSON"
+  },
+  "lighthouse-core/audits/service-worker.js | explanationBadStartUrl": {
+    "message": "Тази страница се контролира от файл service worker, но `start_url` ({startUrl}) не е в обхвата му ({scopeUrl})"
+  },
+  "lighthouse-core/audits/service-worker.js | explanationNoManifest": {
+    "message": "Тази страница се контролира от service worker, но не бе намерен параметър `start_url`, тъй като не бе извлечен манифест."
+  },
+  "lighthouse-core/audits/service-worker.js | explanationOutOfScope": {
+    "message": "Този източник има един или повече файлове service worker, но страницата ({pageUrl}) не е в обхвата им."
+  },
+  "lighthouse-core/audits/service-worker.js | failureTitle": {
+    "message": "Няма регистриран service worker, който контролира страницата и `start_url`"
+  },
+  "lighthouse-core/audits/service-worker.js | title": {
+    "message": "Регистриран е service worker, който контролира страницата и `start_url`"
+  },
+  "lighthouse-core/audits/splash-screen.js | description": {
+    "message": "Тематичният първоначален екран гарантира висококачествена практическа работа, когато потребителите стартират приложението ви от началния екран. [Научете повече](https://developers.google.com/web/tools/lighthouse/audits/custom-splash-screen)."
+  },
+  "lighthouse-core/audits/splash-screen.js | failureTitle": {
+    "message": "Няма персонализиран първоначален екран"
+  },
+  "lighthouse-core/audits/splash-screen.js | title": {
+    "message": "Има персонализиран първоначален екран"
+  },
+  "lighthouse-core/audits/themed-omnibox.js | description": {
+    "message": "Адресната лента на браузъра може да бъде тематична, за да съответства на сайта ви. [Научете повече](https://developers.google.com/web/tools/lighthouse/audits/address-bar)."
+  },
+  "lighthouse-core/audits/themed-omnibox.js | failureTitle": {
+    "message": "Не е зададен тематичен цвят за адресната лента."
+  },
+  "lighthouse-core/audits/themed-omnibox.js | title": {
+    "message": "Зададен е тематичен цвят за адресната лента."
+  },
+  "lighthouse-core/audits/third-party-summary.js | columnBlockingTime": {
+    "message": "Време на блокиране на основната нишка"
+  },
+  "lighthouse-core/audits/third-party-summary.js | columnThirdParty": {
+    "message": "Трета страна"
+  },
+  "lighthouse-core/audits/third-party-summary.js | description": {
+    "message": "Кодът от трети страни може сериозно да повлияе върху скоростта на зареждане. Ограничете броя на излишните доставчици трети страни и опитайте да зареждате кода от трети страни, след като основното зареждане на страницата ви е приключило. [Научете повече](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/loading-third-party-javascript/)."
+  },
+  "lighthouse-core/audits/third-party-summary.js | displayValue": {
+    "message": "Код от трети страни блокира основната нишка за {timeInMs, number, milliseconds} мсек"
+  },
+  "lighthouse-core/audits/third-party-summary.js | failureTitle": {
+    "message": "Намалете влиянието на кода от трети страни"
+  },
+  "lighthouse-core/audits/third-party-summary.js | title": {
+    "message": "Използване на код от трети страни"
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | description": {
+    "message": "Показателят „Време до първия байт“ указва след колко време сървърът изпраща отговор. [Научете повече](https://developers.google.com/web/tools/lighthouse/audits/ttfb)."
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | displayValue": {
+    "message": "За основния документ бяха необходими {timeInMs, number, milliseconds} мсек"
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | failureTitle": {
+    "message": "Намалете времето за отговор от сървъра (време до първия байт)"
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | title": {
+    "message": "Сървърът отговаря бързо (време до първия байт)"
+  },
+  "lighthouse-core/audits/user-timings.js | columnDuration": {
+    "message": "Продължителност"
+  },
+  "lighthouse-core/audits/user-timings.js | columnStartTime": {
+    "message": "Начален час"
+  },
+  "lighthouse-core/audits/user-timings.js | columnType": {
+    "message": "Тип"
+  },
+  "lighthouse-core/audits/user-timings.js | description": {
+    "message": "Препоръчваме да използвате API за разбивка на потребителските времена за приложението си, за да измервате действителната му ефективност по време на ключови аспекти от практическата работа на потребителите. [Научете повече](https://developers.google.com/web/tools/lighthouse/audits/user-timing)."
+  },
+  "lighthouse-core/audits/user-timings.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 потребителско време}other{# потребителски времена}}"
+  },
+  "lighthouse-core/audits/user-timings.js | title": {
+    "message": "Точки и измервания в разбивката на потребителските времена"
+  },
+  "lighthouse-core/audits/uses-rel-preconnect.js | crossoriginWarning": {
+    "message": "Намерен бе елемент <link> за предварително свързване за {securityOrigin}, който обаче не бе използван от браузъра. Проверете дали използвате правилно атрибута `crossorigin`."
+  },
+  "lighthouse-core/audits/uses-rel-preconnect.js | description": {
+    "message": "Препоръчваме да добавите подсказки `preconnect` или `dns-prefetch` за ресурсите с цел ранно установяване на връзка с важни източници от трети страни. [Научете повече](https://developers.google.com/web/fundamentals/performance/resource-prioritization#preconnect)."
+  },
+  "lighthouse-core/audits/uses-rel-preconnect.js | title": {
+    "message": "Осигурете предварително свързване с необходимите източници"
+  },
+  "lighthouse-core/audits/uses-rel-preload.js | crossoriginWarning": {
+    "message": "Намерен бе елемент <link> за предварително зареждане за {preloadURL}, който обаче не бе използван от браузъра. Проверете дали използвате правилно атрибута `crossorigin`."
+  },
+  "lighthouse-core/audits/uses-rel-preload.js | description": {
+    "message": "Препоръчваме да използвате `<link rel=preload>`, за да укажете по-ранно извличане на ресурсите, които понастоящем се заявяват на по-късен етап от зареждането на страницата. [Научете повече](https://developers.google.com/web/tools/lighthouse/audits/preload)."
+  },
+  "lighthouse-core/audits/uses-rel-preload.js | title": {
+    "message": "Задайте ключовите заявки да се зареждат предварително"
+  },
+  "lighthouse-core/audits/viewport.js | description": {
+    "message": "Добавете маркер `<meta name=\"viewport\">`, за да оптимизирате приложението си за мобилни екрани. [Научете повече](https://developers.google.com/web/tools/lighthouse/audits/has-viewport-meta-tag)."
+  },
+  "lighthouse-core/audits/viewport.js | explanationNoTag": {
+    "message": "Не бе намерен маркер `<meta name=\"viewport\">`"
+  },
+  "lighthouse-core/audits/viewport.js | failureTitle": {
+    "message": "Няма маркер `<meta name=\"viewport\">` с атрибут `width` или `initial-scale`"
+  },
+  "lighthouse-core/audits/viewport.js | title": {
+    "message": "Има маркер `<meta name=\"viewport\">` с атрибут `width` или `initial-scale`"
+  },
+  "lighthouse-core/audits/without-javascript.js | description": {
+    "message": "Когато JavaScript е деактивиран, в приложението ви трябва да се показва някакво съдържание, дори да е само предупреждение към потребителя, че за използване на приложението се изисква JavaScript. [Научете повече](https://developers.google.com/web/tools/lighthouse/audits/no-js)."
+  },
+  "lighthouse-core/audits/without-javascript.js | explanation": {
+    "message": "В основната част на страницата трябва да се изобразява съдържание, ако скриптовете ѝ не могат да бъдат заредени."
+  },
+  "lighthouse-core/audits/without-javascript.js | failureTitle": {
+    "message": "Не предоставя резервно съдържание, когато JavaScript не е налице"
+  },
+  "lighthouse-core/audits/without-javascript.js | title": {
+    "message": "Показва се част от съдържанието, когато JavaScript не е налице"
+  },
+  "lighthouse-core/audits/works-offline.js | description": {
+    "message": "Ако създавате прогресивно уеб приложение (PWA), добре е да използвате service worker, за да може то да работи офлайн. [Научете повече](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)."
+  },
+  "lighthouse-core/audits/works-offline.js | failureTitle": {
+    "message": "Текущата страница не отговаря с код 200, когато е офлайн"
+  },
+  "lighthouse-core/audits/works-offline.js | title": {
+    "message": "Текущата страница отговаря с код 200, когато е офлайн"
+  },
+  "lighthouse-core/audits/works-offline.js | warningNoLoad": {
+    "message": "Страницата може да не се зарежда офлайн, тъй като тестовият ви URL адрес ({requested}) бе пренасочен към {final}. Опитайте се да тествате втория URL адрес директно."
+  },
+  "lighthouse-core/config/default-config.js | a11yAriaGroupDescription": {
+    "message": "Това са възможности за подобряване на използването на ARIA в приложението ви. Така може да подобрите практическата работа за потребителите на помощни технологии, като например екранни четци."
+  },
+  "lighthouse-core/config/default-config.js | a11yAriaGroupTitle": {
+    "message": "ARIA"
+  },
+  "lighthouse-core/config/default-config.js | a11yAudioVideoGroupDescription": {
+    "message": "Това са възможности да предоставите алтернативно съдържание за аудио- и видеоелементите. Така може да подобрите практическата работа за потребители със слухови или зрителни нарушения."
+  },
+  "lighthouse-core/config/default-config.js | a11yAudioVideoGroupTitle": {
+    "message": "Аудио и видео"
+  },
+  "lighthouse-core/config/default-config.js | a11yBestPracticesGroupDescription": {
+    "message": "Тези елементи открояват често използвани най-добри практики за достъпност."
+  },
+  "lighthouse-core/config/default-config.js | a11yBestPracticesGroupTitle": {
+    "message": "Най-добри практики"
+  },
+  "lighthouse-core/config/default-config.js | a11yCategoryDescription": {
+    "message": "Тези проверки открояват възможности за [подобряване на достъпността на уеб приложението ви](https://developers.google.com/web/fundamentals/accessibility). Само определени проблеми с достъпността могат да бъдат открити автоматично. Затова ръчното тестване също е препоръчително."
+  },
+  "lighthouse-core/config/default-config.js | a11yCategoryManualDescription": {
+    "message": "Тези проверки покриват области, които са извън обхвата на автоматичните инструменти за тестване. Научете повече в ръководството ни за [извършване на преглед на достъпността](https://developers.google.com/web/fundamentals/accessibility/how-to-review)."
+  },
+  "lighthouse-core/config/default-config.js | a11yCategoryTitle": {
+    "message": "Достъпност"
+  },
+  "lighthouse-core/config/default-config.js | a11yColorContrastGroupDescription": {
+    "message": "Това са възможности за подобряване на четливостта на съдържанието ви."
+  },
+  "lighthouse-core/config/default-config.js | a11yColorContrastGroupTitle": {
+    "message": "Контраст"
+  },
+  "lighthouse-core/config/default-config.js | a11yLanguageGroupDescription": {
+    "message": "Това са възможности да направите съдържанието си по-разбираемо за потребителите, използващи други езици."
+  },
+  "lighthouse-core/config/default-config.js | a11yLanguageGroupTitle": {
+    "message": "Интернационализация и локализация"
+  },
+  "lighthouse-core/config/default-config.js | a11yNamesLabelsGroupDescription": {
+    "message": "Това са възможности за подобряване на семантиката на контролите в приложението ви. Така може да подобрите практическата работа за потребителите на помощни технологии, като например екранни четци."
+  },
+  "lighthouse-core/config/default-config.js | a11yNamesLabelsGroupTitle": {
+    "message": "Имена и етикети"
+  },
+  "lighthouse-core/config/default-config.js | a11yNavigationGroupDescription": {
+    "message": "Това са възможности за подобряване на навигирането с клавиатура в приложението ви."
+  },
+  "lighthouse-core/config/default-config.js | a11yNavigationGroupTitle": {
+    "message": "Навигация"
+  },
+  "lighthouse-core/config/default-config.js | a11yTablesListsVideoGroupDescription": {
+    "message": "Това са възможности да улесните четенето на данни в таблици или списъци посредством помощни технологии, като например екранни четци."
+  },
+  "lighthouse-core/config/default-config.js | a11yTablesListsVideoGroupTitle": {
+    "message": "Таблици и списъци"
+  },
+  "lighthouse-core/config/default-config.js | bestPracticesCategoryTitle": {
+    "message": "Най-добри практики"
+  },
+  "lighthouse-core/config/default-config.js | budgetsGroupDescription": {
+    "message": "Бюджетите за ефективността задават стандарти за ефективността на сайта ви."
+  },
+  "lighthouse-core/config/default-config.js | budgetsGroupTitle": {
+    "message": "Бюджети"
+  },
+  "lighthouse-core/config/default-config.js | diagnosticsGroupDescription": {
+    "message": "Повече информация за ефективността на приложението ви. Тези стойности не се [отразяват директно](https://github.com/GoogleChrome/lighthouse/blob/d2ec9ffbb21de9ad1a0f86ed24575eda32c796f0/docs/scoring.md#how-are-the-scores-weighted) върху рейтинга за ефективността."
+  },
+  "lighthouse-core/config/default-config.js | diagnosticsGroupTitle": {
+    "message": "Диагностика"
+  },
+  "lighthouse-core/config/default-config.js | firstPaintImprovementsGroupDescription": {
+    "message": "Най-критичният аспект на ефективността е времето, за което пикселите се изобразяват на екрана. Ключови показатели: първо изобразяване на съдържание, първо значимо изобразяване"
+  },
+  "lighthouse-core/config/default-config.js | firstPaintImprovementsGroupTitle": {
+    "message": "Подобрения, свързани с първото изобразяване"
+  },
+  "lighthouse-core/config/default-config.js | loadOpportunitiesGroupDescription": {
+    "message": "Тези предложения може да ускорят зареждането на страницата ви. Те не се [отразяват директно](https://github.com/GoogleChrome/lighthouse/blob/d2ec9ffbb21de9ad1a0f86ed24575eda32c796f0/docs/scoring.md#how-are-the-scores-weighted) върху рейтинга за ефективността."
+  },
+  "lighthouse-core/config/default-config.js | loadOpportunitiesGroupTitle": {
+    "message": "Възможности"
+  },
+  "lighthouse-core/config/default-config.js | metricGroupTitle": {
+    "message": "Показатели"
+  },
+  "lighthouse-core/config/default-config.js | overallImprovementsGroupDescription": {
+    "message": "Подобрете зареждането като цяло, така че страницата да реагира бързо и да е готова за използване възможно най-скоро. Ключови показатели: време до интерактивност, индекс на скоростта"
+  },
+  "lighthouse-core/config/default-config.js | overallImprovementsGroupTitle": {
+    "message": "Цялостни подобрения"
+  },
+  "lighthouse-core/config/default-config.js | performanceCategoryTitle": {
+    "message": "Ефективност"
+  },
+  "lighthouse-core/config/default-config.js | pwaCategoryDescription": {
+    "message": "Тези проверки са свързани с аспектите на прогресивните уеб приложения (PWA). [Научете повече](https://developers.google.com/web/progressive-web-apps/checklist)."
+  },
+  "lighthouse-core/config/default-config.js | pwaCategoryManualDescription": {
+    "message": "Тези проверки са задължителни според отправния [контролен списък за PWA](https://developers.google.com/web/progressive-web-apps/checklist), но не се извършват автоматично от Lighthouse. Те не се отразяват на резултата ви, но е важно да ги потвърдите ръчно."
+  },
+  "lighthouse-core/config/default-config.js | pwaCategoryTitle": {
+    "message": "Прогресивно уеб приложение (PWA)"
+  },
+  "lighthouse-core/config/default-config.js | pwaFastReliableGroupTitle": {
+    "message": "Бързина и надеждност"
+  },
+  "lighthouse-core/config/default-config.js | pwaInstallableGroupTitle": {
+    "message": "Възможност за инсталиране"
+  },
+  "lighthouse-core/config/default-config.js | pwaOptimizedGroupTitle": {
+    "message": "Оптимизиране за PWA"
+  },
+  "lighthouse-core/config/default-config.js | seoCategoryDescription": {
+    "message": "Тези проверки показват дали страницата ви е оптимизирана така, че да се класира в резултатите от търсещите машини. Lighthouse не проверява някои допълнителни фактори, които може да повлияят на класирането в резултатите от търсенето. [Научете повече](https://support.google.com/webmasters/answer/35769)."
+  },
+  "lighthouse-core/config/default-config.js | seoCategoryManualDescription": {
+    "message": "Стартирайте тези допълнителни инструменти на сайта си, за да проверите дали е съобразен с други най-добри практики за SEO."
+  },
+  "lighthouse-core/config/default-config.js | seoCategoryTitle": {
+    "message": "SEO"
+  },
+  "lighthouse-core/config/default-config.js | seoContentGroupDescription": {
+    "message": "Форматирайте HTML кода си по начин, който дава възможност на роботите да разберат по-добре съдържанието на приложението ви."
+  },
+  "lighthouse-core/config/default-config.js | seoContentGroupTitle": {
+    "message": "Най-добри практики за съдържанието"
+  },
+  "lighthouse-core/config/default-config.js | seoCrawlingGroupDescription": {
+    "message": "За да се показва приложението ви в резултатите от търсенето, роботите се нуждаят от достъп до него."
+  },
+  "lighthouse-core/config/default-config.js | seoCrawlingGroupTitle": {
+    "message": "Обхождане и индексиране"
+  },
+  "lighthouse-core/config/default-config.js | seoMobileGroupDescription": {
+    "message": "Уверете се, че страниците ви са удобни за мобилни устройства, така че да не е необходимо потребителите да събират пръсти или да увеличават мащаба, за да прочетат съдържанието. [Научете повече](https://developers.google.com/search/mobile-sites/)."
+  },
+  "lighthouse-core/config/default-config.js | seoMobileGroupTitle": {
+    "message": "Удобство за мобилни устройства"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnCacheTTL": {
+    "message": "Време на валидност на кеша"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnLocation": {
+    "message": "Местоположение"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnName": {
+    "message": "Име"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnRequests": {
+    "message": "Заявки"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnResourceType": {
+    "message": "Тип ресурс"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnSize": {
+    "message": "Размер"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnTimeSpent": {
+    "message": "Прекарано време"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnTransferSize": {
+    "message": "Размер на прехвърлянето"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnURL": {
+    "message": "URL адрес"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnWastedBytes": {
+    "message": "Потенциална икономия"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnWastedMs": {
+    "message": "Потенциална икономия"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | displayValueByteSavings": {
+    "message": "Потенциално спестяване на {wastedBytes, number, bytes} КБ"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | displayValueMsSavings": {
+    "message": "Потенциално спестяване на {wastedMs, number, milliseconds} мсек"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | documentResourceType": {
+    "message": "Документ"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | fontResourceType": {
+    "message": "Шрифт"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | imageResourceType": {
+    "message": "Изображение"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | mediaResourceType": {
+    "message": "Мултимедия"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | ms": {
+    "message": "{timeInMs, number, milliseconds} мсек"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | otherResourceType": {
+    "message": "Друго"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | scriptResourceType": {
+    "message": "Скрипт"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | seconds": {
+    "message": "{timeInMs, number, seconds} сек"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | stylesheetResourceType": {
+    "message": "Стилов лист"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | thirdPartyResourceType": {
+    "message": "Трети страни"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | totalResourceType": {
+    "message": "Общо"
+  },
+  "lighthouse-core/lib/lh-error.js | badTraceRecording": {
+    "message": "Нещо се обърка при записването на трасирането за зареждането на страницата ви. Моля, стартирайте отново Lighthouse. ({errorCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | criTimeout": {
+    "message": "Времето за изчакване изтече при първоначалното свързване с протокола за инструмента за откриване и отстраняване на грешки."
+  },
+  "lighthouse-core/lib/lh-error.js | didntCollectScreenshots": {
+    "message": "Chrome не събра екранни снимки при зареждането на страницата. Моля, уверете се, че на нея има видимо съдържание, и опитайте отново да стартирате Lighthouse. ({errorCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | dnsFailure": {
+    "message": "DNS сървърите не можаха да преобразуват предоставения домейн."
+  },
+  "lighthouse-core/lib/lh-error.js | erroredRequiredArtifact": {
+    "message": "В задължителния механизъм за събиране на {artifactName} възникна грешка: {errorMessage}"
+  },
+  "lighthouse-core/lib/lh-error.js | internalChromeError": {
+    "message": "Възникна вътрешна грешка в Chrome. Моля, рестартирайте браузъра и опитайте отново да стартирате Lighthouse."
+  },
+  "lighthouse-core/lib/lh-error.js | missingRequiredArtifact": {
+    "message": "Задължителният механизъм за събиране на {artifactName} не се изпълни."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailed": {
+    "message": "Lighthouse не успя надеждно да зареди заявената от вас страница. Уверете се, че тествате точния URL адрес и че сървърът отговаря правилно на всички заявки."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedHung": {
+    "message": "Lighthouse не успя надеждно да зареди заявения от вас URL адрес, тъй като страницата спря да реагира."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedInsecure": {
+    "message": "Посоченият от вас URL адрес няма валиден сертификат за сигурност. {securityMessages}"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedInterstitial": {
+    "message": "Chrome не допусна зареждане на страница със заставка. Уверете се, че тествате точния URL адрес и че сървърът отговаря правилно на всички заявки."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedWithDetails": {
+    "message": "Lighthouse не успя надеждно да зареди заявената от вас страница. Уверете се, че тествате точния URL адрес и че сървърът отговаря правилно на всички заявки. (Подробности: {errorDetails})"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedWithStatusCode": {
+    "message": "Lighthouse не успя надеждно да зареди заявената от вас страница. Уверете се, че тествате точния URL адрес и че сървърът отговаря правилно на всички заявки. (Код на състоянието: {statusCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadTookTooLong": {
+    "message": "Зареждането на страницата бе твърде бавно. Моля, използвайте посочените в отчета възможности за ускоряване на зареждането ѝ, след което опитайте отново да стартирате Lighthouse. ({errorCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | protocolTimeout": {
+    "message": "Предвиденото време за изчакване на отговор от протокола DevTools бе превишено. (Метод: {protocolMethod})"
+  },
+  "lighthouse-core/lib/lh-error.js | requestContentTimeout": {
+    "message": "Предвиденото време за извличане на съдържанието на ресурсите бе превишено"
+  },
+  "lighthouse-core/lib/lh-error.js | urlInvalid": {
+    "message": "Предоставеният от вас URL адрес изглежда невалиден."
+  },
+  "lighthouse-core/report/html/renderer/util.js | auditGroupExpandTooltip": {
+    "message": "Показване на проверките"
+  },
+  "lighthouse-core/report/html/renderer/util.js | crcInitialNavigation": {
+    "message": "Първоначална навигация"
+  },
+  "lighthouse-core/report/html/renderer/util.js | crcLongestDurationLabel": {
+    "message": "Максимално забавяне в критичния път:"
+  },
+  "lighthouse-core/report/html/renderer/util.js | errorLabel": {
+    "message": "Грешка!"
+  },
+  "lighthouse-core/report/html/renderer/util.js | errorMissingAuditInfo": {
+    "message": "Грешка в отчета: няма информация за проверката"
+  },
+  "lighthouse-core/report/html/renderer/util.js | labDataTitle": {
+    "message": "Данни от контролиран тест"
+  },
+  "lighthouse-core/report/html/renderer/util.js | lsPerformanceCategoryDescription": {
+    "message": "Анализът с [Lighthouse](https://developers.google.com/web/tools/lighthouse/) на текущата страница бе извършен през емулирана мобилна мрежа. Стойностите са приблизителни и може да варират."
+  },
+  "lighthouse-core/report/html/renderer/util.js | manualAuditsGroupTitle": {
+    "message": "Допълнителни елементи, които да проверите ръчно"
+  },
+  "lighthouse-core/report/html/renderer/util.js | notApplicableAuditsGroupTitle": {
+    "message": "Не е приложимо"
+  },
+  "lighthouse-core/report/html/renderer/util.js | opportunityResourceColumnLabel": {
+    "message": "Възможност"
+  },
+  "lighthouse-core/report/html/renderer/util.js | opportunitySavingsColumnLabel": {
+    "message": "Прогнозна икономия"
+  },
+  "lighthouse-core/report/html/renderer/util.js | passedAuditsGroupTitle": {
+    "message": "Успешно преминати проверки"
+  },
+  "lighthouse-core/report/html/renderer/util.js | snippetCollapseButtonLabel": {
+    "message": "Свиване на фрагмента"
+  },
+  "lighthouse-core/report/html/renderer/util.js | snippetExpandButtonLabel": {
+    "message": "Разгъване на фрагмента"
+  },
+  "lighthouse-core/report/html/renderer/util.js | thirdPartyResourcesLabel": {
+    "message": "Показване на ресурсите от трети страни"
+  },
+  "lighthouse-core/report/html/renderer/util.js | toplevelWarningsMessage": {
+    "message": "Възникнаха проблеми при изготвянето на този отчет от Lighthouse:"
+  },
+  "lighthouse-core/report/html/renderer/util.js | varianceDisclaimer": {
+    "message": "Стойностите са приблизителни и може да варират. Рейтингът за ефективността [се базира само на тези показатели](https://github.com/GoogleChrome/lighthouse/blob/d2ec9ffbb21de9ad1a0f86ed24575eda32c796f0/docs/scoring.md#how-are-the-scores-weighted)."
+  },
+  "lighthouse-core/report/html/renderer/util.js | warningAuditsGroupTitle": {
+    "message": "Проверките бяха преминати успешно, но има предупреждения"
+  },
+  "lighthouse-core/report/html/renderer/util.js | warningHeader": {
+    "message": "Предупреждения: "
+  },
+  "stack-packs/packs/wordpress.js | efficient_animated_content": {
+    "message": "Добре е да качите GIF файла си в услуга, която ще даде възможност да бъде вграден като видеоклип с HTML5."
+  },
+  "stack-packs/packs/wordpress.js | offscreen_images": {
+    "message": "Инсталирайте [приставка за WordPress за забавено зареждане](https://wordpress.org/plugins/search/lazy+load/), която дава възможност за отлагане на зареждането на изображенията извън видимата част на екрана, или преминете към тема с такава функционалност. Можете също да използвате [приставката за AMP](https://wordpress.org/plugins/amp/)."
+  },
+  "stack-packs/packs/wordpress.js | render_blocking_resources": {
+    "message": "Има различни приставки за WordPress, с чиято помощ можете [да вградите важни активи](https://wordpress.org/plugins/search/critical+css/) или [да отложите зареждането на не толкова важни ресурси](https://wordpress.org/plugins/search/defer+css+javascript/). Имайте предвид, че оптимизациите, извършвани чрез тези приставки, може да възпрепятстват работата на функциите на темата ви или други приставки, така че вероятно ще се наложи да промените кода."
+  },
+  "stack-packs/packs/wordpress.js | time_to_first_byte": {
+    "message": "Времето за реакция на сървъра зависи от спецификациите му, темите и приставките. Добре е да намерите по-оптимизирана тема, внимателно да изберете приставка за оптимизиране и/или да надстроите сървъра си."
+  },
+  "stack-packs/packs/wordpress.js | total_byte_weight": {
+    "message": "Обмислете възможността да показвате извадки в списъците си с публикации (напр. чрез маркера more), да намалите броя на публикациите, извеждани на дадена страница, да разделите дългите публикации на няколко страници или да използвате приставка, която да забави зареждането на коментарите."
+  },
+  "stack-packs/packs/wordpress.js | unminified_css": {
+    "message": "Има различни [приставки за WordPress](https://wordpress.org/plugins/search/minify+css/), които могат да подобрят скоростта на сайта ви чрез обединяване, минимизиране и компресиране на стиловете. Добре е също при възможност да използвате компилиране, за да извършите това минимизиране предварително."
+  },
+  "stack-packs/packs/wordpress.js | unminified_javascript": {
+    "message": "Има различни [приставки за WordPress](https://wordpress.org/plugins/search/minify+javascript/), които могат да подобрят скоростта на сайта ви чрез обединяване, минимизиране и компресиране на скриптовете. Добре е също при възможност да използвате компилиране, за да извършите това минимизиране предварително."
+  },
+  "stack-packs/packs/wordpress.js | unused_css_rules": {
+    "message": "Добре е да намалите броя на [приставките за WordPress](https://wordpress.org/plugins/), които зареждат неизползван CSS код в страницата ви, или да ги замените с други. За да откриете приставките, които добавят ненужен CSS код, стартирайте инструмента за [покритие на кода](https://developers.google.com/web/updates/2017/04/devtools-release-notes#coverage) в Chrome DevTools. Можете да намерите проблемната тема/приставка в URL адреса на листа със стилове. Търсете приставки с много листове със стилове в списъка, за които преобладава червеният цвят в диаграмата на инструмента. Даден лист със стилове трябва да бъде поставен в опашката на приставка само ако действително се използва в страницата."
+  },
+  "stack-packs/packs/wordpress.js | unused_javascript": {
+    "message": "Добре е да намалите броя на [приставките за WordPress](https://wordpress.org/plugins/), които зареждат неизползван JavaScript код в страницата ви, или да ги замените с други. За да откриете приставките, които добавят ненужен JS код, стартирайте инструмента за [покритие на кода](https://developers.google.com/web/updates/2017/04/devtools-release-notes#coverage) в Chrome DevTools. Можете да намерите проблемната тема/приставка в URL адреса на скрипта. Търсете приставки с много скриптове в списъка, за които преобладава червеният цвят в диаграмата на инструмента. Даден скрипт трябва да бъде поставен в опашката на приставка само ако действително се използва в страницата."
+  },
+  "stack-packs/packs/wordpress.js | uses_long_cache_ttl": {
+    "message": "Прочетете за [кеширането в браузъра при WordPress](https://codex.wordpress.org/WordPress_Optimization#Browser_Caching)."
+  },
+  "stack-packs/packs/wordpress.js | uses_optimized_images": {
+    "message": "Добре е да използвате [приставка за WordPress за оптимизиране на изображенията](https://wordpress.org/plugins/search/optimize+images/), която компресира графичните ви файлове, като същевременно запазва качеството им."
+  },
+  "stack-packs/packs/wordpress.js | uses_responsive_images": {
+    "message": "Качвайте изображенията директно чрез [мултимедийната библиотека](https://codex.wordpress.org/Media_Library_Screen), за да разполагате с графични файлове с необходимите размери, и след това ги вмъквайте от библиотеката или използвайте приспособлението за изображения, така че да се използват файловете с оптимални размери (включително за адаптивните гранични точки). Избягвайте използването на пълноразмерни изображения (`Full Size`), освен ако размерите са подходящи за съответното предназначение. [Научете повече](https://codex.wordpress.org/Inserting_Images_into_Posts_and_Pages#Image_Size)."
+  },
+  "stack-packs/packs/wordpress.js | uses_text_compression": {
+    "message": "Можете да активирате компресирането на текста в конфигурацията на уеб сървъра си."
+  },
+  "stack-packs/packs/wordpress.js | uses_webp_images": {
+    "message": "Добре е да използвате [приставка](https://wordpress.org/plugins/search/convert+webp/) или услуга за автоматично преобразуване на качените изображения в оптималния формат."
+  }
+}
diff --git a/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/ca.json b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/ca.json
new file mode 100644
index 0000000..da2b75cbe
--- /dev/null
+++ b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/ca.json
@@ -0,0 +1,1541 @@
+{
+  "lighthouse-core/audits/accessibility/accesskeys.js | description": {
+    "message": "Les tecles d'accés permeten als usuaris posar el focus ràpidament en una part de la pàgina. Perquè es puguin desplaçar correctament, cada tecla d'accés ha de ser única. [Obtén més informació](https://web.dev/accesskeys/)."
+  },
+  "lighthouse-core/audits/accessibility/accesskeys.js | failureTitle": {
+    "message": "Els valors de l'atribut `[accesskey]` no són únics"
+  },
+  "lighthouse-core/audits/accessibility/accesskeys.js | title": {
+    "message": "Els valors de l'atribut `[accesskey]` són únics"
+  },
+  "lighthouse-core/audits/accessibility/aria-allowed-attr.js | description": {
+    "message": "Cada element `role` d'ARIA admet un subconjunt específic d'atributs `aria-*`. Si no coincideixen, els atributs `aria-*` queden invalidats. [Obtén més informació](https://web.dev/aria-allowed-attr/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-allowed-attr.js | failureTitle": {
+    "message": "Els atributs `[aria-*]` no coincideixen amb les seves funcions"
+  },
+  "lighthouse-core/audits/accessibility/aria-allowed-attr.js | title": {
+    "message": "Els atributs `[aria-*]` coincideixen amb les seves funcions"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-attr.js | description": {
+    "message": "Algunes funcions d'ARIA tenen atributs obligatoris que descriuen l'estat de l'element als lectors de pantalla. [Obtén més informació](https://web.dev/aria-required-attr/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-required-attr.js | failureTitle": {
+    "message": "Els atributs `[role]` no tenen tots els atributs `[aria-*]` obligatoris"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-attr.js | title": {
+    "message": "Els elements amb l'atribut `[role]` tenen tots els atributs `[aria-*]` obligatoris"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-children.js | description": {
+    "message": "Algunes funcions dels elements ARIA superiors han d'incloure funcions concretes dels elements secundaris perquè puguin dur a terme les funcions d'accessibilitat per a les quals s'han dissenyat. [Obtén més informació](https://web.dev/aria-required-children/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-required-children.js | failureTitle": {
+    "message": "Falten elements amb l'atribut `[role]` que requereixen determinats atributs `[role]` secundaris."
+  },
+  "lighthouse-core/audits/accessibility/aria-required-children.js | title": {
+    "message": "Hi ha elements amb l'atribut `[role]` que requereixen determinats atributs `[role]` secundaris"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-parent.js | description": {
+    "message": "Les funcions de determinats elements superiors han d'incloure algunes funcions dels elements ARIA secundaris perquè puguin dur a terme les funcions d'accessibilitat per a les quals s'han dissenyat. [Obtén més informació](https://web.dev/aria-required-parent/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-required-parent.js | failureTitle": {
+    "message": "Els atributs `[role]` no s'inclouen a l'element superior obligatori"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-parent.js | title": {
+    "message": "Els atributs `[role]` s'inclouen a l'element superior obligatori"
+  },
+  "lighthouse-core/audits/accessibility/aria-roles.js | description": {
+    "message": "Les funcions dels elements ARIA han de tenir valors vàlids perquè puguin dur a terme les funcions d'accessibilitat per a les quals s'han dissenyat. [Obtén més informació](https://web.dev/aria-roles/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-roles.js | failureTitle": {
+    "message": "Els valors de l'atribut `[role]` no són vàlids"
+  },
+  "lighthouse-core/audits/accessibility/aria-roles.js | title": {
+    "message": "Els valors de l'atribut `[role]` són vàlids"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr-value.js | description": {
+    "message": "Les tecnologies d'assistència, com ara els lectors de pantalla, no poden interpretar els atributs ARIA que tenen valors que no són vàlids. [Obtén més informació](https://web.dev/aria-valid-attr-value/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr-value.js | failureTitle": {
+    "message": "Els atributs `[aria-*]` no tenen valors vàlids"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr-value.js | title": {
+    "message": "Els atributs `[aria-*]` tenen valors vàlids"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr.js | description": {
+    "message": "Les tecnologies d'assistència, com ara els lectors de pantalla, no poden interpretar els atributs ARIA que tenen noms que no són vàlids. [Obtén més informació](https://web.dev/aria-valid-attr/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr.js | failureTitle": {
+    "message": "Els atributs `[aria-*]` no són vàlids o estan mal escrits"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr.js | title": {
+    "message": "Els atributs `[aria-*]` són vàlids i estan ben escrits"
+  },
+  "lighthouse-core/audits/accessibility/audio-caption.js | description": {
+    "message": "Els subtítols permeten que els usuaris sords o amb discapacitat auditiva utilitzin els elements d'àudio. Així obtenen informació essencial, com ara qui parla, què diu i altres dades no verbals. [Obtén més informació](https://web.dev/audio-caption/)."
+  },
+  "lighthouse-core/audits/accessibility/audio-caption.js | failureTitle": {
+    "message": "Als elements `<audio>` els falta un element `<track>` amb `[kind=\"captions\"]`."
+  },
+  "lighthouse-core/audits/accessibility/audio-caption.js | title": {
+    "message": "Els elements `<audio>` contenen un element `<track>` amb `[kind=\"captions\"]`"
+  },
+  "lighthouse-core/audits/accessibility/axe-audit.js | failingElementsHeader": {
+    "message": "Elements amb errors"
+  },
+  "lighthouse-core/audits/accessibility/button-name.js | description": {
+    "message": "Si un botó no té un nom accessible, els lectors de pantalla el llegeixen com a \"botó\", de manera que queda inservible per als usuaris que depenen d'aquesta tecnologia. [Obtén més informació](https://web.dev/button-name/)."
+  },
+  "lighthouse-core/audits/accessibility/button-name.js | failureTitle": {
+    "message": "Els botons no tenen un nom accessible"
+  },
+  "lighthouse-core/audits/accessibility/button-name.js | title": {
+    "message": "Els botons tenen noms accessibles"
+  },
+  "lighthouse-core/audits/accessibility/bypass.js | description": {
+    "message": "Si s'afegeixen maneres d'evitar el contingut repetitiu, els usuaris del teclat poden navegar per la pàgina de manera més eficaç. [Obtén més informació](https://web.dev/bypass/)."
+  },
+  "lighthouse-core/audits/accessibility/bypass.js | failureTitle": {
+    "message": "La pàgina no conté un encapçalament, un enllaç d'omissió o una regió de referència"
+  },
+  "lighthouse-core/audits/accessibility/bypass.js | title": {
+    "message": "La pàgina conté un encapçalament, un enllaç d'omissió o una regió de referència"
+  },
+  "lighthouse-core/audits/accessibility/color-contrast.js | description": {
+    "message": "El text amb contrast baix resulta difícil o impossible de llegir per a molts usuaris. [Obtén més informació](https://web.dev/color-contrast/)."
+  },
+  "lighthouse-core/audits/accessibility/color-contrast.js | failureTitle": {
+    "message": "La relació de contrast dels colors de primer i de segon pla no és suficient."
+  },
+  "lighthouse-core/audits/accessibility/color-contrast.js | title": {
+    "message": "La relació de contrast dels colors de primer i de segon pla és suficient"
+  },
+  "lighthouse-core/audits/accessibility/definition-list.js | description": {
+    "message": "Si el marcatge de les llistes de definició no és correcte, és possible que els lectors de pantalla sonin de manera confusa o inexacta. [Obtén més informació](https://web.dev/definition-list/)."
+  },
+  "lighthouse-core/audits/accessibility/definition-list.js | failureTitle": {
+    "message": "Els elements `<dl>` no contenen només grups de `<dt>` i `<dd>` ordenats correctament, o bé elements `<script>` o `<template>`."
+  },
+  "lighthouse-core/audits/accessibility/definition-list.js | title": {
+    "message": "Els elements `<dl>` contenen només grups de `<dt>` i `<dd>` ordenats correctament, o bé elements `<script>` o `<template>`."
+  },
+  "lighthouse-core/audits/accessibility/dlitem.js | description": {
+    "message": "Els elements de la llista de definicions (`<dt>` i `<dd>`) han d'estar tancats dins d'un element `<dl>` superior per garantir que els lectors de pantalla els puguin pronunciar correctament. [Obtén més informació](https://web.dev/dlitem/)."
+  },
+  "lighthouse-core/audits/accessibility/dlitem.js | failureTitle": {
+    "message": "Els elements de la llista de definicions estan tancats entre elements `<dl>`"
+  },
+  "lighthouse-core/audits/accessibility/dlitem.js | title": {
+    "message": "Els elements de la llista de definicions estan tancats entre elements `<dl>`"
+  },
+  "lighthouse-core/audits/accessibility/document-title.js | description": {
+    "message": "El títol proporciona als usuaris de lectors de pantalla un resum de la pàgina. A més, els usuaris de motors de cerca depenen en gran mesura d'aquest títol per determinar si una pàgina és rellevant per a la seva cerca. [Obtén més informació](https://web.dev/document-title/)."
+  },
+  "lighthouse-core/audits/accessibility/document-title.js | failureTitle": {
+    "message": "El document no té cap element `<title>`"
+  },
+  "lighthouse-core/audits/accessibility/document-title.js | title": {
+    "message": "El document té un element `<title>`"
+  },
+  "lighthouse-core/audits/accessibility/duplicate-id.js | description": {
+    "message": "El valor d'un atribut d'identificador ha de ser únic per impedir que les tecnologies d'assistència no passin per alt altres instàncies. [Obtén més informació](https://web.dev/duplicate-id/)."
+  },
+  "lighthouse-core/audits/accessibility/duplicate-id.js | failureTitle": {
+    "message": "Els atributs `[id]` de la pàgina no són únics"
+  },
+  "lighthouse-core/audits/accessibility/duplicate-id.js | title": {
+    "message": "Els atributs `[id]` de la pàgina són únics"
+  },
+  "lighthouse-core/audits/accessibility/frame-title.js | description": {
+    "message": "Els usuaris de lectors de pantalla depenen dels títols dels marcs perquè en descriguin el contingut. [Obtén més informació](https://web.dev/frame-title/)."
+  },
+  "lighthouse-core/audits/accessibility/frame-title.js | failureTitle": {
+    "message": "Els elements `<frame>` o `<iframe>` no tenen títol"
+  },
+  "lighthouse-core/audits/accessibility/frame-title.js | title": {
+    "message": "Els elements `<frame>` o `<iframe>` tenen un títol"
+  },
+  "lighthouse-core/audits/accessibility/html-has-lang.js | description": {
+    "message": "Si en una pàgina no s'especifica un atribut d'idioma, els lectors de pantalla suposen que la pàgina està escrita en l'idioma predeterminat que l'usuari ha triat en configurar el lector de pantalla. Si està escrita en un altre idioma, és possible que el lector de pantalla no en llegeixi el text correctament. [Obtén més informació](https://web.dev/html-has-lang/)."
+  },
+  "lighthouse-core/audits/accessibility/html-has-lang.js | failureTitle": {
+    "message": "L'element `<html>` no té un atribut `[lang]`"
+  },
+  "lighthouse-core/audits/accessibility/html-has-lang.js | title": {
+    "message": "L'element `<html>` té un atribut `[lang]`"
+  },
+  "lighthouse-core/audits/accessibility/html-lang-valid.js | description": {
+    "message": "Si especifiques un [idioma vàlid d'acord amb l'estàndard BCP 47](https://www.w3.org/International/questions/qa-choosing-language-tags#question), ajudes a fer que els lectors de pantalla pronunciïn el text correctament. [Obtén més informació](https://web.dev/html-lang-valid/)."
+  },
+  "lighthouse-core/audits/accessibility/html-lang-valid.js | failureTitle": {
+    "message": "L'element `<html>` no té un valor vàlid per a l'atribut `[lang]` corresponent."
+  },
+  "lighthouse-core/audits/accessibility/html-lang-valid.js | title": {
+    "message": "L'element `<html>` té un valor vàlid per a l'atribut `[lang]` corresponent"
+  },
+  "lighthouse-core/audits/accessibility/image-alt.js | description": {
+    "message": "Els elements informatius han d'utilitzar text alternatiu que sigui breu i descriptiu. Els elements decoratius es poden ignorar amb un atribut alt buit. [Obtén més informació](https://web.dev/image-alt/)."
+  },
+  "lighthouse-core/audits/accessibility/image-alt.js | failureTitle": {
+    "message": "Els elements d'imatge no tenen atributs `[alt]`"
+  },
+  "lighthouse-core/audits/accessibility/image-alt.js | title": {
+    "message": "Els elements d'imatge tenen atributs `[alt]`"
+  },
+  "lighthouse-core/audits/accessibility/input-image-alt.js | description": {
+    "message": "Si s'utilitza una imatge per al botó `<input>`, el text alternatiu pot ajudar els usuaris dels lectors de pantalla a entendre la funció del botó. [Obtén més informació](https://web.dev/input-image-alt/)."
+  },
+  "lighthouse-core/audits/accessibility/input-image-alt.js | failureTitle": {
+    "message": "Els elements `<input type=\"image\">` no tenen text `[alt]`"
+  },
+  "lighthouse-core/audits/accessibility/input-image-alt.js | title": {
+    "message": "Els elements `<input type=\"image\">` tenen text `[alt]`"
+  },
+  "lighthouse-core/audits/accessibility/label.js | description": {
+    "message": "Les etiquetes garanteixen que les tecnologies d'assistència, com ara els lectors de pantalla, puguin llegir correctament els controls dels formularis. [Obtén més informació](https://web.dev/label/)."
+  },
+  "lighthouse-core/audits/accessibility/label.js | failureTitle": {
+    "message": "Els elements de formulari no tenen etiquetes associades"
+  },
+  "lighthouse-core/audits/accessibility/label.js | title": {
+    "message": "Els elements de formulari tenen etiquetes associades"
+  },
+  "lighthouse-core/audits/accessibility/layout-table.js | description": {
+    "message": "Una taula que s'utilitza per al disseny no pot incloure elements de dades, com ara un superíndex, elements de subtítols o l'atribut de resum, ja que es pot crear una experiència confusa per als usuaris de lectors de pantalla. [Obtén més informació](https://web.dev/layout-table/)."
+  },
+  "lighthouse-core/audits/accessibility/layout-table.js | failureTitle": {
+    "message": "Els elements `<table>` per a presentacions no eviten utilitzar `<th>`, `<caption>` ni l'atribut `[summary]`."
+  },
+  "lighthouse-core/audits/accessibility/layout-table.js | title": {
+    "message": "Els elements `<table>` per a presentacions eviten utilitzar `<th>`, `<caption>` o l'atribut `[summary]`."
+  },
+  "lighthouse-core/audits/accessibility/link-name.js | description": {
+    "message": "Si el text dels enllaços (així com el text alternatiu per a les imatges, quan s'utilitzen com a enllaços) és discernible, únic i permet que s'hi posi el focus, millora l'experiència de navegació dels usuaris de lectors de pantalla. [Obtén més informació](https://web.dev/link-name/)."
+  },
+  "lighthouse-core/audits/accessibility/link-name.js | failureTitle": {
+    "message": "Els enllaços no tenen noms que es puguin distingir"
+  },
+  "lighthouse-core/audits/accessibility/link-name.js | title": {
+    "message": "Els enllaços tenen noms que es poden distingir"
+  },
+  "lighthouse-core/audits/accessibility/list.js | description": {
+    "message": "Els lectors de pantalla tenen una manera específica de llegir les llistes. Estructurar-les correctament millora la manera com els lectors de pantalla sonen. [Obtén més informació](https://web.dev/list/)."
+  },
+  "lighthouse-core/audits/accessibility/list.js | failureTitle": {
+    "message": "Les llistes no contenen només elements`<li>` i elements que admeten scripts (`<script>` i `<template>`)."
+  },
+  "lighthouse-core/audits/accessibility/list.js | title": {
+    "message": "Les llistes contenen només elements `<li>` i elements que admeten scripts (`<script>` i `<template>`)."
+  },
+  "lighthouse-core/audits/accessibility/listitem.js | description": {
+    "message": "Els lectors de pantalla requereixen que els elements de llista (`<li>`) estiguin inclosos dins d'un element `<ul>` o `<ol>` superior per poder llegir-los correctament. [Obtén més informació](https://web.dev/listitem/)."
+  },
+  "lighthouse-core/audits/accessibility/listitem.js | failureTitle": {
+    "message": "Alguns elements de llista (`<li>`) no estan inclosos entre elements `<ul>` o `<ol>` superiors."
+  },
+  "lighthouse-core/audits/accessibility/listitem.js | title": {
+    "message": "Alguns elements de llista (`<li>`) estan inclosos entre elements `<ul>` o `<ol>` superiors"
+  },
+  "lighthouse-core/audits/accessibility/meta-refresh.js | description": {
+    "message": "Els usuaris no esperen que una pàgina s'actualitzi automàticament. En fer-ho, el focus torna a la part superior de la pàgina i els usuaris es poden sentir frustrats i confosos. [Obtén més informació](https://web.dev/meta-refresh/)."
+  },
+  "lighthouse-core/audits/accessibility/meta-refresh.js | failureTitle": {
+    "message": "El document utilitza la metaetiqueta `<meta http-equiv=\"refresh\">`"
+  },
+  "lighthouse-core/audits/accessibility/meta-refresh.js | title": {
+    "message": "El document no utilitza `<meta http-equiv=\"refresh\">`"
+  },
+  "lighthouse-core/audits/accessibility/meta-viewport.js | description": {
+    "message": "Desactivar el zoom pot ser un problema per als usuaris amb visió reduïda que necessiten ampliar la pantalla per veure correctament el contingut d'una pàgina web. [Obtén més informació](https://web.dev/meta-viewport/)."
+  },
+  "lighthouse-core/audits/accessibility/meta-viewport.js | failureTitle": {
+    "message": "L'atribut `[user-scalable=\"no\"]` s'utilitza a l'element `<meta name=\"viewport\">` o l'atribut `[maximum-scale]` és inferior a 5."
+  },
+  "lighthouse-core/audits/accessibility/meta-viewport.js | title": {
+    "message": "L'atribut `[user-scalable=\"no\"]` no s'utilitza a l'element `<meta name=\"viewport\">` i l'atribut `[maximum-scale]` no és inferior a 5."
+  },
+  "lighthouse-core/audits/accessibility/object-alt.js | description": {
+    "message": "Els lectors de pantalla no poden traduir contingut que no sigui text. Si afegeixes text alternatiu als elements `<object>`, ajudes els lectors de pantalla a transmetre el significat als usuaris. [Obtén més informació](https://web.dev/object-alt/)."
+  },
+  "lighthouse-core/audits/accessibility/object-alt.js | failureTitle": {
+    "message": "Els elements `<object>` no tenen text `[alt]`"
+  },
+  "lighthouse-core/audits/accessibility/object-alt.js | title": {
+    "message": "Els elements `<object>` tenen text `[alt]`"
+  },
+  "lighthouse-core/audits/accessibility/tabindex.js | description": {
+    "message": "Un valor superior a 0 implica una ordenació explícita de navegació. Tècnicament és vàlid, però sol suposar experiències frustrants per als usuaris que depenen de les tecnologies d'assistència. [Obtén més informació](https://web.dev/tabindex/)."
+  },
+  "lighthouse-core/audits/accessibility/tabindex.js | failureTitle": {
+    "message": "Alguns elements tenen un valor `[tabindex]` superior a 0"
+  },
+  "lighthouse-core/audits/accessibility/tabindex.js | title": {
+    "message": "Cap element no té un valor `[tabindex]` superior a 0"
+  },
+  "lighthouse-core/audits/accessibility/td-headers-attr.js | description": {
+    "message": "Els lectors de pantalla inclouen funcions perquè sigui més fàcil navegar per les taules. Assegura't que les cel·les `<td>` que fan servir l'atribut `[headers]` només facin referència a altres cel·les de la mateixa taula. Això pot millorar l'experiència dels usuaris de lectors de pantalla. [Obtén més informació](https://web.dev/td-headers-attr/)."
+  },
+  "lighthouse-core/audits/accessibility/td-headers-attr.js | failureTitle": {
+    "message": "Algunes cel·les d'un element `<table>` que fan servir l'atribut `[headers]` fan referència a altres cel·les de la mateixa taula."
+  },
+  "lighthouse-core/audits/accessibility/td-headers-attr.js | title": {
+    "message": "Algunes cel·les d'un element `<table>` que fan servir l'atribut `[headers]` només fan referència a altres cel·les de la mateixa taula."
+  },
+  "lighthouse-core/audits/accessibility/th-has-data-cells.js | description": {
+    "message": "Els lectors de pantalla inclouen funcions perquè sigui més fàcil navegar per les taules. Assegura't que els encapçalaments de les taules facin sempre referència a un conjunt de cel·les. Això pot millorar l'experiència dels usuaris de lectors de pantalla. [Obtén més informació](https://web.dev/th-has-data-cells/)."
+  },
+  "lighthouse-core/audits/accessibility/th-has-data-cells.js | failureTitle": {
+    "message": "Els elements `<th>` i els que inclouen l'atribut `[role=\"columnheader\"/\"rowheader\"]` no tenen les cel·les de dades que descriuen."
+  },
+  "lighthouse-core/audits/accessibility/th-has-data-cells.js | title": {
+    "message": "Els elements `<th>` i els que inclouen l'atribut `[role=\"columnheader\"/\"rowheader\"]` tenen les cel·les de dades que descriuen."
+  },
+  "lighthouse-core/audits/accessibility/valid-lang.js | description": {
+    "message": "Si especifiques un [idioma vàlid d'acord amb l'estàndard BCP 47](https://www.w3.org/International/questions/qa-choosing-language-tags#question) als elements, permets que els lectors de pantalla pronunciïn el text correctament. [Obtén més informació](https://web.dev/valid-lang/)."
+  },
+  "lighthouse-core/audits/accessibility/valid-lang.js | failureTitle": {
+    "message": "Els atributs `[lang]` no tenen un valor vàlid"
+  },
+  "lighthouse-core/audits/accessibility/valid-lang.js | title": {
+    "message": "Els atributs `[lang]` tenen un valor vàlid"
+  },
+  "lighthouse-core/audits/accessibility/video-caption.js | description": {
+    "message": "Si un vídeo ofereix subtítols, permet que els usuaris sords o amb discapacitat auditiva accedeixin a la informació més fàcilment. [Obtén més informació](https://web.dev/video-caption/)."
+  },
+  "lighthouse-core/audits/accessibility/video-caption.js | failureTitle": {
+    "message": "Els elements `<video>` no contenen cap element `<track>` amb `[kind=\"captions\"]`."
+  },
+  "lighthouse-core/audits/accessibility/video-caption.js | title": {
+    "message": "Els elements `<video>` contenen un element `<track>` amb `[kind=\"captions\"]`"
+  },
+  "lighthouse-core/audits/accessibility/video-description.js | description": {
+    "message": "Les audiodescripcions proporcionen informació rellevant dels vídeos que els diàlegs no poden oferir, com ara les expressions facials i les escenes. [Obtén més informació](https://web.dev/video-description/)."
+  },
+  "lighthouse-core/audits/accessibility/video-description.js | failureTitle": {
+    "message": "Els elements `<video>` no contenen cap element `<track>` amb `[kind=\"description\"]`."
+  },
+  "lighthouse-core/audits/accessibility/video-description.js | title": {
+    "message": "Els elements `<video>` contenen un element `<track>` amb `[kind=\"description\"]`"
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | description": {
+    "message": "Perquè l'aspecte a iOS sigui l'ideal quan els usuaris afegeixin una aplicació web progressiva a la pantalla d'inici, defineix un atribut `apple-touch-icon`. Ha de dirigir a una imatge PNG quadrada de 192 píxels o de 180 píxels que no sigui transparent. [Obtén més informació](https://developers.google.com/web/fundamentals/design-and-ux/browser-customization/)."
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | failureTitle": {
+    "message": "No conté un atribut `apple-touch-icon` vàlid"
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | precomposedWarning": {
+    "message": "L'atribut `apple-touch-icon-precomposed` no està actualitzat. És preferible l'atribut `apple-touch-icon`."
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | title": {
+    "message": "Proporciona una `apple-touch-icon` vàlida"
+  },
+  "lighthouse-core/audits/bootup-time.js | chromeExtensionsWarning": {
+    "message": "Les extensions de Chrome han afectat negativament el rendiment de càrrega de la pàgina. Audita la pàgina en mode d'incògnit o des d'un perfil de Chrome sense extensions."
+  },
+  "lighthouse-core/audits/bootup-time.js | columnScriptEval": {
+    "message": "Avaluació de scripts"
+  },
+  "lighthouse-core/audits/bootup-time.js | columnScriptParse": {
+    "message": "Anàlisi de scripts"
+  },
+  "lighthouse-core/audits/bootup-time.js | columnTotal": {
+    "message": "Temps total de la CPU"
+  },
+  "lighthouse-core/audits/bootup-time.js | description": {
+    "message": "Et recomanem que redueixis el temps dedicat a analitzar, compilar i executar JavaScript. Et pot ajudar utilitzar càrregues útils de JavaScript més petites. [Obtén més informació](https://developers.google.com/web/tools/lighthouse/audits/bootup)."
+  },
+  "lighthouse-core/audits/bootup-time.js | failureTitle": {
+    "message": "Redueix el temps d'execució de JavaScript"
+  },
+  "lighthouse-core/audits/bootup-time.js | title": {
+    "message": "Temps d'execució de JavaScript"
+  },
+  "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | description": {
+    "message": "Els GIF grans no són eficients per publicar contingut animat. A fi d'estalviar bytes a la xarxa, pots substituir els GIF per vídeos MPEG4/WebM en el cas de les animacions i per PNG/WebP en el cas de les imatges estàtiques. [Més informació](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/replace-animated-gifs-with-video/)"
+  },
+  "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | title": {
+    "message": "Utilitza formats de vídeo per al contingut animat"
+  },
+  "lighthouse-core/audits/byte-efficiency/offscreen-images.js | description": {
+    "message": "Et recomanem que utilitzis la càrrega diferida de les imatges amagades i que no es mostren a la pantalla un cop s'acabin de carregar tots els recursos essencials a fi de reduir el temps necessari perquè la pàgina sigui interactiva. [Obtén més informació](https://developers.google.com/web/tools/lighthouse/audits/offscreen-images)."
+  },
+  "lighthouse-core/audits/byte-efficiency/offscreen-images.js | title": {
+    "message": "Ajorna les imatges fora de pantalla"
+  },
+  "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | description": {
+    "message": "Els recursos estan bloquejant la primera renderització de la pàgina. Et recomanem que publiquis els fitxers JavaScript o CSS inserits que siguin essencials i ajornis tots els estils i els fitxers JavaScript que no ho siguin. [Obtén més informació](https://developers.google.com/web/tools/lighthouse/audits/blocking-resources)."
+  },
+  "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | title": {
+    "message": "Elimina els recursos que bloquegen la renderització"
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | description": {
+    "message": "Si la càrrega útil de la xarxa és molt gran, els usuaris consumeixen més dades mòbils i els temps de càrrega són més llargs. [Obtén més informació](https://developers.google.com/web/tools/lighthouse/audits/network-payloads)."
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | displayValue": {
+    "message": "Mida total: {totalBytes, number, bytes} kB"
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | failureTitle": {
+    "message": "Evita càrregues útils de xarxa enormes"
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | title": {
+    "message": "Evita càrregues útils de xarxa enormes"
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-css.js | description": {
+    "message": "Reduir els fitxers CSS pot disminuir les mides de càrrega útil a la xarxa. [Obtén més informació](https://developers.google.com/web/tools/lighthouse/audits/minify-css)."
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-css.js | title": {
+    "message": "Redueix els CSS"
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | description": {
+    "message": "Reduir els fitxers JavaScript pot disminuir les mides de càrrega i els temps d'anàlisi de scripts. [Obtén més informació](https://developers.google.com/speed/docs/insights/MinifyResources)."
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | title": {
+    "message": "Redueix els fitxers JavaScript"
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | description": {
+    "message": "Per reduir els bytes que es consumeixen de manera innecessària durant l'activitat de la xarxa, suprimeix dels fulls d'estil les regles que no s'utilitzin i ajorna la càrrega dels CSS que no es facin servir per al contingut de la part superior visible. [Obtén més informació](https://developers.google.com/web/tools/lighthouse/audits/unused-css)."
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | title": {
+    "message": "Suprimeix els CSS no utilitzats"
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-javascript.js | description": {
+    "message": "Suprimeix els fitxers JavaScript que no s'utilitzen per reduir els bytes que es consumeixen durant l'activitat de la xarxa."
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-javascript.js | title": {
+    "message": "Suprimeix els fitxers JavaScript no utilitzats"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | description": {
+    "message": "Si la memòria cau té una vida llarga, es poden accelerar les visites repetides a la teva pàgina. [Obtén més informació](https://developers.google.com/web/tools/lighthouse/audits/cache-policy)."
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | displayValue": {
+    "message": "{itemCount,plural, =1{S'ha trobat 1 recurs}other{S'han trobat # recursos}}"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | failureTitle": {
+    "message": "Publica recursos estàtics amb una política de memòria cau eficient"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | title": {
+    "message": "Utilitza una política de memòria cau eficient per als recursos estàtics"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | description": {
+    "message": "Les imatges optimitzades es carreguen més ràpidament i utilitzen menys dades mòbils. [Obtén més informació](https://developers.google.com/web/tools/lighthouse/audits/optimize-images)."
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | title": {
+    "message": "Codifica les imatges amb eficiència"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | description": {
+    "message": "Publica imatges amb la mida correcta per estalviar dades mòbils i millorar el temps de càrrega. [Obtén més informació](https://developers.google.com/web/tools/lighthouse/audits/oversized-images)."
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | title": {
+    "message": "Adapta la mida de les imatges"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | description": {
+    "message": "Els recursos basats en text s'han de publicar comprimits (gzip, deflate o brotli) per minimitzar el total de bytes a la xarxa. [Obtén més informació](https://developers.google.com/web/tools/lighthouse/audits/text-compression)."
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | title": {
+    "message": "Activa la compressió de text"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | description": {
+    "message": "Els formats d'imatge com JPEG 2000, JPEG XR i WebP solen oferir millors resultats de compressió que PNG o JPEG. Això implica baixades més ràpides i menys consum de dades. [Obtén més informació](https://developers.google.com/web/tools/lighthouse/audits/webp)."
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | title": {
+    "message": "Publica imatges en format d'última generació"
+  },
+  "lighthouse-core/audits/content-width.js | description": {
+    "message": "Si l'amplada del contingut de l'aplicació no coincideix amb l'amplada de la finestra gràfica, és possible que l'aplicació no s'optimitzi per a pantalles de dispositius mòbils. [Obtén més informació](https://developers.google.com/web/tools/lighthouse/audits/content-sized-correctly-for-viewport)."
+  },
+  "lighthouse-core/audits/content-width.js | explanation": {
+    "message": "La mida de la finestra gràfica ({innerWidth} píxels) no coincideix amb la mida de la finestra ({outerWidth} píxels)."
+  },
+  "lighthouse-core/audits/content-width.js | failureTitle": {
+    "message": "El contingut no té la mida correcta per a la finestra gràfica"
+  },
+  "lighthouse-core/audits/content-width.js | title": {
+    "message": "El contingut té la mida correcta per a la finestra gràfica"
+  },
+  "lighthouse-core/audits/critical-request-chains.js | description": {
+    "message": "Les cadenes de sol·licituds essencials de sota et mostren quins recursos es carreguen amb prioritat alta. Et recomanem que escurcis les cadenes, redueixis la mida de baixada dels recursos o ajornis la baixada de recursos innecessaris per millorar la càrrega de pàgines. [Obtén més informació](https://developers.google.com/web/tools/lighthouse/audits/critical-request-chains)."
+  },
+  "lighthouse-core/audits/critical-request-chains.js | displayValue": {
+    "message": "{itemCount,plural, =1{S'ha trobat 1 cadena}other{S'han trobat # cadenes}}"
+  },
+  "lighthouse-core/audits/critical-request-chains.js | title": {
+    "message": "Minimitza la profunditat de les sol·licituds crítiques"
+  },
+  "lighthouse-core/audits/deprecations.js | columnDeprecate": {
+    "message": "Desactivació/advertiment"
+  },
+  "lighthouse-core/audits/deprecations.js | columnLine": {
+    "message": "Línia"
+  },
+  "lighthouse-core/audits/deprecations.js | description": {
+    "message": "Les API obsoletes s'acabaran suprimint del navegador. [Obtén més informació](https://web.dev/deprecations)."
+  },
+  "lighthouse-core/audits/deprecations.js | displayValue": {
+    "message": "{itemCount,plural, =1{S'ha trobat 1 advertiment}other{S'han trobat # advertiments}}"
+  },
+  "lighthouse-core/audits/deprecations.js | failureTitle": {
+    "message": "Utilitza API obsoletes"
+  },
+  "lighthouse-core/audits/deprecations.js | title": {
+    "message": "Evita les API obsoletes"
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | description": {
+    "message": "La memòria cau de l'aplicació està obsoleta. [Obtén més informació](https://web.dev/appcache-manifest)."
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | displayValue": {
+    "message": "S'ha trobat \"{AppCacheManifest}\""
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | failureTitle": {
+    "message": "Utilitza la memòria cau de l'aplicació"
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | title": {
+    "message": "Evita la memòria cau de l'aplicació"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | description": {
+    "message": "Especificar un tipus de document impedeix que el navegador canviï a mode Quirks. [Obtén més informació](https://web.dev/doctype)."
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationBadDoctype": {
+    "message": "El nom del tipus de document ha de ser la cadena en minúscules `html`"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationNoDoctype": {
+    "message": "El document ha de contenir un tipus de document"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationPublicId": {
+    "message": "Està previst que el camp publicId sigui una cadena buida"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationSystemId": {
+    "message": "Està previst que el camp systemId sigui una cadena buida"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | failureTitle": {
+    "message": "La pàgina no té el tipus de document HTML i, per tant, activa el mode Quirks"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | title": {
+    "message": "La pàgina té el tipus de document HTML"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | columnElement": {
+    "message": "Element"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | columnStatistic": {
+    "message": "Estadística"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | columnValue": {
+    "message": "Valor"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | description": {
+    "message": "Els enginyers de navegadors recomanen que les pàgines continguin menys d'uns 1.500 elements DOM. La situació ideal és una profunditat d'arbre de menys de 32 elements i de menys de 60 elements superiors o secundaris. Un DOM gran pot augmentar l'ús de la memòria, provocar [càlculs d'estil](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations) més llargs i produir [reinicis de reflux del disseny](https://developers.google.com/speed/articles/reflow) costosos. [Obtén més informació](https://web.dev/dom-size)."
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | displayValue": {
+    "message": "{itemCount,plural, =1{Un element}other{# elements}}"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | failureTitle": {
+    "message": "Evita una mida de DOM excessiva"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | statisticDOMDepth": {
+    "message": "Profunditat màxima de DOM"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | statisticDOMElements": {
+    "message": "Total d'elements de DOM"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | statisticDOMWidth": {
+    "message": "Nombre màxim d'elements secundaris"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | title": {
+    "message": "Evita una mida excessiva de DOM"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | columnRel": {
+    "message": "Rel"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | columnTarget": {
+    "message": "Objectiu"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | description": {
+    "message": "Afegeix `rel=\"noopener\"` o `rel=\"noreferrer\"` a qualsevol enllaç extern per millorar-ne el rendiment i evitar vulnerabilitats de seguretat. [Obtén més informació](https://web.dev/external-anchors-use-rel-noopener)."
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | failureTitle": {
+    "message": "Els enllaços a destinacions de diversos orígens no són segurs"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | title": {
+    "message": "Els enllaços a destinacions de diversos orígens són segurs"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | warning": {
+    "message": "No es pot determinar la destinació de l'ancoratge ({anchorHTML}). Si no s'utilitza com a enllaç, et recomanem que suprimeixis target=_blank."
+  },
+  "lighthouse-core/audits/dobetterweb/geolocation-on-start.js | description": {
+    "message": "Els usuaris reaccionen amb desconfiança i desconcert davant dels llocs web que els sol·liciten la ubicació sense context. Et recomanem que vinculis la sol·licitud a una acció de l'usuari. [Obtén més informació](https://web.dev/geolocation-on-start)."
+  },
+  "lighthouse-core/audits/dobetterweb/geolocation-on-start.js | failureTitle": {
+    "message": "Sol·licita el permís de geolocalització en carregar la pàgina"
+  },
+  "lighthouse-core/audits/dobetterweb/geolocation-on-start.js | title": {
+    "message": "Evita sol·licitar el permís de geolocalització en carregar la pàgina"
+  },
+  "lighthouse-core/audits/dobetterweb/js-libraries.js | columnVersion": {
+    "message": "Versió"
+  },
+  "lighthouse-core/audits/dobetterweb/js-libraries.js | description": {
+    "message": "Totes les biblioteques de JavaScript d'interfície detectades a la pàgina. [Obtén més informació](https://web.dev/js-libraries)."
+  },
+  "lighthouse-core/audits/dobetterweb/js-libraries.js | title": {
+    "message": "Biblioteques de JavaScript detectades"
+  },
+  "lighthouse-core/audits/dobetterweb/no-document-write.js | description": {
+    "message": "Per als usuaris amb connexions lentes, els scripts externs inserits dinàmicament mitjançant `document.write()` poden retardar la càrrega de la pàgina unes dècimes de segon. [Obtén més informació](https://web.dev/no-document-write)."
+  },
+  "lighthouse-core/audits/dobetterweb/no-document-write.js | failureTitle": {
+    "message": "Utilitza `document.write()`"
+  },
+  "lighthouse-core/audits/dobetterweb/no-document-write.js | title": {
+    "message": "Evita `document.write()`"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | columnSeverity": {
+    "message": "Gravetat més alta"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | columnVersion": {
+    "message": "Versió de la biblioteca"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | columnVuln": {
+    "message": "Recompte de vulnerabilitats"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | description": {
+    "message": "Alguns scripts de tercers poden contenir vulnerabilitats de seguretat que els atacants identifiquen i exploten fàcilment. [Obtén més informació](https://web.dev/no-vulnerable-libraries)."
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | displayValue": {
+    "message": "{itemCount,plural, =1{S'ha detectat 1 vulnerabilitat}other{S'han detectat # vulnerabilitats}}"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | failureTitle": {
+    "message": "Inclou biblioteques de JavaScript d'interfície amb vulnerabilitats de seguretat conegudes"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | rowSeverityHigh": {
+    "message": "Alta"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | rowSeverityLow": {
+    "message": "Baixa"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | rowSeverityMedium": {
+    "message": "Mitjana"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | title": {
+    "message": "Evita les biblioteques de JavaScript d'interfície amb vulnerabilitats de seguretat conegudes"
+  },
+  "lighthouse-core/audits/dobetterweb/notification-on-start.js | description": {
+    "message": "Els usuaris reaccionen amb desconfiança i desconcert davant dels llocs web que sol·liciten enviar notificacions sense context. Et recomanem que vinculis la sol·licitud als gestos de l'usuari. [Obtén més informació](https://web.dev/notification-on-start)."
+  },
+  "lighthouse-core/audits/dobetterweb/notification-on-start.js | failureTitle": {
+    "message": "Sol·licita el permís de notificació en carregar la pàgina"
+  },
+  "lighthouse-core/audits/dobetterweb/notification-on-start.js | title": {
+    "message": "Evita sol·licitar el permís de notificació en carregar la pàgina"
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | columnFailingElem": {
+    "message": "Elements amb errors"
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | description": {
+    "message": "Impedir enganxar la contrasenya va en detriment d'una bona política de seguretat. [Obtén més informació](https://web.dev/password-inputs-can-be-pasted-into)."
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | failureTitle": {
+    "message": "Evita que els usuaris enganxin contingut als camps de contrasenya"
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | title": {
+    "message": "Permet que els usuaris enganxin contingut als camps de contrasenya"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | columnProtocol": {
+    "message": "Protocol"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | description": {
+    "message": "HTTP/2 ofereix molts avantatges respecte a HTTP/1.1, com ara capçaleres binàries, multiplexatge i tramesa automàtica de servidor. [Obtén més informació](https://web.dev/uses-http2)."
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | displayValue": {
+    "message": "{itemCount,plural, =1{No s'ha atès 1 sol·licitud mitjançant HTTP/2}other{No s'han atès # sol·licituds mitjançant HTTP/2}}"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | failureTitle": {
+    "message": "No utilitza HTTP/2 per a tots els recursos"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | title": {
+    "message": "Utilitza HTTP/2 per als recursos propis"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-passive-event-listeners.js | description": {
+    "message": "Per millorar el rendiment del desplaçament de la pàgina, et recomanem que defineixis els detectors d'esdeveniments de roda de desplaçament com a `passive`. [Obtén més informació](https://web.dev/uses-passive-event-listeners)."
+  },
+  "lighthouse-core/audits/dobetterweb/uses-passive-event-listeners.js | failureTitle": {
+    "message": "No utilitza detectors passius per millorar el rendiment del desplaçament"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-passive-event-listeners.js | title": {
+    "message": "Utilitza detectors passius per millorar el rendiment del desplaçament"
+  },
+  "lighthouse-core/audits/errors-in-console.js | columnDesc": {
+    "message": "Descripció"
+  },
+  "lighthouse-core/audits/errors-in-console.js | description": {
+    "message": "Els errors registrats a la consola indiquen problemes pendents de resoldre. Poden provenir d'errors de sol·licitud de la xarxa i d'altres problemes del navegador. [Més informació](https://web.dev/errors-in-console)"
+  },
+  "lighthouse-core/audits/errors-in-console.js | failureTitle": {
+    "message": "Els errors del navegador s'han registrat a la consola"
+  },
+  "lighthouse-core/audits/errors-in-console.js | title": {
+    "message": "No s'ha registrat cap error del navegador a la consola"
+  },
+  "lighthouse-core/audits/font-display.js | description": {
+    "message": "Aprofita la funció CSS que permet mostrar els tipus de lletra per assegurar-te que els usuaris puguin veure el text mentre es carreguen els tipus de lletra per a llocs web. [Obtén més informació](https://developers.google.com/web/updates/2016/02/font-display)."
+  },
+  "lighthouse-core/audits/font-display.js | failureTitle": {
+    "message": "Assegura't que el text continuï visible durant la càrrega dels tipus de lletra per a llocs web"
+  },
+  "lighthouse-core/audits/font-display.js | title": {
+    "message": "Tot el text continua visible durant les càrregues dels tipus de lletra per a llocs web"
+  },
+  "lighthouse-core/audits/font-display.js | undeclaredFontURLWarning": {
+    "message": "Lighthouse no ha pogut comprovar automàticament el valor que permet mostrar els tipus de lletra de l'URL següent: {fontURL}."
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | columnActual": {
+    "message": "Relació d'aspecte (real)"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | columnDisplayed": {
+    "message": "Relació d'aspecte (mostrada)"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | description": {
+    "message": "Les dimensions de visualització de la imatge han de coincidir amb la relació d'aspecte natural. [Obtén més informació](https://web.dev/image-aspect-ratio)."
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | failureTitle": {
+    "message": "Mostra les imatges amb una relació d'aspecte incorrecta"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | title": {
+    "message": "Mostra les imatges amb una relació d'aspecte correcta"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | warningCompute": {
+    "message": "La informació sobre la mida de la imatge no és vàlida: {url}"
+  },
+  "lighthouse-core/audits/installable-manifest.js | description": {
+    "message": "Els navegadors poden demanar de manera proactiva als usuaris que afegeixin la teva aplicació a la pantalla d'inici, cosa que permet que hi interaccionin més. [Obtén més informació](https://developers.google.com/web/tools/lighthouse/audits/install-prompt)."
+  },
+  "lighthouse-core/audits/installable-manifest.js | failureTitle": {
+    "message": "El fitxer de manifest de l'aplicació web no compleix els requisits d'instal·lació"
+  },
+  "lighthouse-core/audits/installable-manifest.js | title": {
+    "message": "El fitxer de manifest de l'aplicació web compleix els requisits d'instal·lació"
+  },
+  "lighthouse-core/audits/is-on-https.js | columnInsecureURL": {
+    "message": "URL no segur"
+  },
+  "lighthouse-core/audits/is-on-https.js | description": {
+    "message": "Tots els llocs web haurien d'estar protegits amb HTTPS, fins i tot els que no gestionen dades sensibles. L'HTTPS evita que intrusos manipulin o escoltin passivament les comunicacions entre la teva aplicació i els usuaris, i és un requisit previ per a HTTP/2 i per a moltes API de plataforma web noves. [Obtén més informació](https://web.dev/is-on-https)."
+  },
+  "lighthouse-core/audits/is-on-https.js | displayValue": {
+    "message": "{itemCount,plural, =1{S'ha trobat 1 sol·licitud no segura}other{S'han trobat # sol·licituds no segures}}"
+  },
+  "lighthouse-core/audits/is-on-https.js | failureTitle": {
+    "message": "No utilitza HTTPS"
+  },
+  "lighthouse-core/audits/is-on-https.js | title": {
+    "message": "Utilitza HTTPS"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | description": {
+    "message": "Carregar les pàgines ràpidament mitjançant una xarxa mòbil garanteix una experiència satisfactòria per als usuaris de mòbils. [Obtén més informació](https://developers.google.com/web/tools/lighthouse/audits/fast-3g)."
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | displayValueText": {
+    "message": "Ha tardat {timeInMs, number, seconds} segons a fer-se interactiva"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | displayValueTextWithOverride": {
+    "message": "Ha tardat {timeInMs, number, seconds} segons a fer-se interactiva a la xarxa mòbil"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | explanationLoadSlow": {
+    "message": "La pàgina es carrega massa lentament i no es torna interactiva al cap de 10 segons. Consulta les seccions Oportunitats i Diagnòstic de la categoria Rendiment per obtenir informació sobre com es pot millorar."
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | failureTitle": {
+    "message": "La pàgina no es carrega amb prou rapidesa a les xarxes mòbils"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | title": {
+    "message": "La pàgina es carrega amb prou rapidesa a les xarxes mòbils"
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | columnCategory": {
+    "message": "Categoria"
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | description": {
+    "message": "Et recomanem que redueixis el temps dedicat a analitzar, compilar i executar JavaScript. Et pot ajudar utilitzar càrregues útils de JavaScript més petites."
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | failureTitle": {
+    "message": "Minimitza el treball al fil principal"
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | title": {
+    "message": "Minimitza el treball al fil principal"
+  },
+  "lighthouse-core/audits/manual/pwa-cross-browser.js | description": {
+    "message": "Per arribar al major nombre d'usuaris possible, els llocs web han de funcionar en tots els navegadors principals. [Obtén més informació](https://developers.google.com/web/progressive-web-apps/checklist#site-works-cross-browser)."
+  },
+  "lighthouse-core/audits/manual/pwa-cross-browser.js | title": {
+    "message": "El lloc web funciona en diversos navegadors"
+  },
+  "lighthouse-core/audits/manual/pwa-each-page-has-url.js | description": {
+    "message": "Comprova que l'URL de cada pàgina sigui un enllaç profund i únic per poder compartir-lo als mitjans socials. [Obtén més informació](https://developers.google.com/web/progressive-web-apps/checklist#each-page-has-a-url)."
+  },
+  "lighthouse-core/audits/manual/pwa-each-page-has-url.js | title": {
+    "message": "Cada pàgina té un URL"
+  },
+  "lighthouse-core/audits/manual/pwa-page-transitions.js | description": {
+    "message": "Les transicions en navegar per l'aplicació han de ser àgils, fins i tot en xarxes lentes. És una qüestió clau en la percepció del rendiment. [Obtén més informació](https://developers.google.com/web/progressive-web-apps/checklist#page-transitions-dont-feel-like-they-block-on-the-network)."
+  },
+  "lighthouse-core/audits/manual/pwa-page-transitions.js | title": {
+    "message": "No sembla que les transicions entre pàgines es bloquegin a la xarxa"
+  },
+  "lighthouse-core/audits/metrics/estimated-input-latency.js | description": {
+    "message": "La latència estimada d'una acció és un càlcul de quant tarda en mil·lisegons la teva aplicació a respondre a una acció de l'usuari durant el període de 5 segons amb més càrregues de pàgines. Si la latència és superior a 50 ms, és possible que els usuaris considerin que l'aplicació és lenta. [Obtén més informació](https://developers.google.com/web/tools/lighthouse/audits/estimated-input-latency)."
+  },
+  "lighthouse-core/audits/metrics/estimated-input-latency.js | title": {
+    "message": "Latència estimada de les accions"
+  },
+  "lighthouse-core/audits/metrics/first-contentful-paint.js | description": {
+    "message": "La mètrica Primera renderització de contingut marca el moment en què es renderitza el primer text o la primera imatge. [Obtén més informació](https://developers.google.com/web/tools/lighthouse/audits/first-contentful-paint)."
+  },
+  "lighthouse-core/audits/metrics/first-contentful-paint.js | title": {
+    "message": "Primera renderització de contingut"
+  },
+  "lighthouse-core/audits/metrics/first-cpu-idle.js | description": {
+    "message": "La mètrica Primera inactivitat de la CPU marca el primer moment en què el fil principal de la pàgina està suficientment inactiu per gestionar accions. [Obtén més informació](https://developers.google.com/web/tools/lighthouse/audits/first-interactive)."
+  },
+  "lighthouse-core/audits/metrics/first-cpu-idle.js | title": {
+    "message": "Primera inactivitat de la CPU"
+  },
+  "lighthouse-core/audits/metrics/first-meaningful-paint.js | description": {
+    "message": "La mètrica Primera renderització significativa mesura el moment en què el contingut principal d'una pàgina és visible. [Obtén més informació](https://developers.google.com/web/tools/lighthouse/audits/first-meaningful-paint)."
+  },
+  "lighthouse-core/audits/metrics/first-meaningful-paint.js | title": {
+    "message": "Primera renderització significativa"
+  },
+  "lighthouse-core/audits/metrics/interactive.js | description": {
+    "message": "La mètrica Temps fins que és interactiva és el que tarda la pàgina a fer-se completament interactiva. [Obtén més informació](https://developers.google.com/web/tools/lighthouse/audits/consistently-interactive)."
+  },
+  "lighthouse-core/audits/metrics/interactive.js | title": {
+    "message": "Temps fins que és interactiva"
+  },
+  "lighthouse-core/audits/metrics/max-potential-fid.js | description": {
+    "message": "El retard potencial màxim respecte a la primera interacció que els usuaris es poden trobar és la durada, en mil·lisegons, de la tasca més llarga. [Obtén més informació](https://developers.google.com/web/updates/2018/05/first-input-delay)."
+  },
+  "lighthouse-core/audits/metrics/max-potential-fid.js | title": {
+    "message": "Retard potencial màxim respecte a la primera interacció"
+  },
+  "lighthouse-core/audits/metrics/speed-index.js | description": {
+    "message": "L'índex de velocitat mostra la rapidesa amb què s'emplena el contingut d'una pàgina. [Obtén més informació](https://developers.google.com/web/tools/lighthouse/audits/speed-index)."
+  },
+  "lighthouse-core/audits/metrics/speed-index.js | title": {
+    "message": "Índex de velocitat"
+  },
+  "lighthouse-core/audits/metrics/total-blocking-time.js | description": {
+    "message": "La suma de tots els períodes de temps entre l'FCP i el Temps fins que és interactiva, quan la llargada de la tasca ha superat els 50 ms, expressada en mil·lisegons."
+  },
+  "lighthouse-core/audits/metrics/total-blocking-time.js | title": {
+    "message": "Durada total del bloqueig"
+  },
+  "lighthouse-core/audits/network-rtt.js | description": {
+    "message": "Els temps d'anada i tornada a la xarxa afecten considerablement el rendiment. Si el temps d'anada i tornada a un origen és llarg, indica que els servidors de més a prop de l'usuari podrien millorar el rendiment. [Obtén més informació](https://hpbn.co/primer-on-latency-and-bandwidth/)."
+  },
+  "lighthouse-core/audits/network-rtt.js | title": {
+    "message": "Temps d'anada i tornada a la xarxa"
+  },
+  "lighthouse-core/audits/network-server-latency.js | description": {
+    "message": "Les latències del servidor poden afectar el rendiment web. Si són llargues en un origen, indiquen que el servidor està sobrecarregat o que té un rendiment dorsal deficient. [Obtén més informació](https://hpbn.co/primer-on-web-performance/#analyzing-the-resource-waterfall)."
+  },
+  "lighthouse-core/audits/network-server-latency.js | title": {
+    "message": "Latències dorsals del servidor"
+  },
+  "lighthouse-core/audits/offline-start-url.js | description": {
+    "message": "Els Service Workers permeten que la teva aplicació sigui fiable en condicions imprevisibles de la xarxa. [Obtén més informació](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)."
+  },
+  "lighthouse-core/audits/offline-start-url.js | failureTitle": {
+    "message": "`start_url` no respon amb un codi 200 quan no hi ha connexió"
+  },
+  "lighthouse-core/audits/offline-start-url.js | title": {
+    "message": "`start_url` respon amb un codi 200 quan no hi ha connexió"
+  },
+  "lighthouse-core/audits/offline-start-url.js | warningCantStart": {
+    "message": "Lighthouse no ha pogut llegir l'atribut `start_url` del fitxer de manifest, de manera que s'ha donat per fet que `start_url` era l'URL del document. Missatge d'error: \"{manifestWarning}\"."
+  },
+  "lighthouse-core/audits/performance-budget.js | columnOverBudget": {
+    "message": "Per sobre del pressupost"
+  },
+  "lighthouse-core/audits/performance-budget.js | description": {
+    "message": "Manté la quantitat i la mida de les sol·licituds de xarxa ajustades als objectius establerts al pressupost de rendiment que s'ha proporcionat. [Obtén més informació](https://developers.google.com/web/tools/lighthouse/audits/budgets)."
+  },
+  "lighthouse-core/audits/performance-budget.js | requestCountOverBudget": {
+    "message": "{count,plural, =1{1 sol·licitud}other{# sol·licituds}}"
+  },
+  "lighthouse-core/audits/performance-budget.js | title": {
+    "message": "Pressupost de rendiment"
+  },
+  "lighthouse-core/audits/redirects-http.js | description": {
+    "message": "Si ja has configurat el format HTTPS, assegura't de redirigir tot el trànsit HTTP cap a HTTPS per activar funcions web segures per a tots els usuaris. [Obtén més informació](https://developers.google.com/web/tools/lighthouse/audits/http-redirects-to-https)."
+  },
+  "lighthouse-core/audits/redirects-http.js | failureTitle": {
+    "message": "No redirigeix el trànsit HTTP cap a HTTPS"
+  },
+  "lighthouse-core/audits/redirects-http.js | title": {
+    "message": "Redirigeix el trànsit HTTP cap a HTTPS"
+  },
+  "lighthouse-core/audits/redirects.js | description": {
+    "message": "La mètrica Redireccions introdueix retards addicionals abans de poder carregar la pàgina. [Obtén més informació](https://developers.google.com/web/tools/lighthouse/audits/redirects)."
+  },
+  "lighthouse-core/audits/redirects.js | title": {
+    "message": "Evita les redireccions múltiples a pàgines"
+  },
+  "lighthouse-core/audits/resource-summary.js | description": {
+    "message": "Per definir els pressupostos de la quantitat i la mida dels recursos de la pàgina, afegeix un fitxer budget.json. [Obtén més informació](https://developers.google.com/web/tools/lighthouse/audits/budgets)."
+  },
+  "lighthouse-core/audits/resource-summary.js | displayValue": {
+    "message": "{requestCount,plural, =1{1 sol·licitud • {byteCount, number, bytes} kB}other{# sol·licituds • {byteCount, number, bytes} kB}}"
+  },
+  "lighthouse-core/audits/resource-summary.js | title": {
+    "message": "Mantén els recomptes de les sol·licituds baixos i les mides de les transferències petites"
+  },
+  "lighthouse-core/audits/seo/canonical.js | description": {
+    "message": "Els enllaços canònics suggereixen quins URL s'han de mostrar als resultats de cerca. [Obtén més informació](https://web.dev/canonical)."
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationConflict": {
+    "message": "Hi ha diversos URL en conflicte ({urlList})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationDifferentDomain": {
+    "message": "Dirigeix a un altre domini ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationInvalid": {
+    "message": "URL no vàlid ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationPointsElsewhere": {
+    "message": "Dirigeix a una altra ubicació de tipus \"`hreflang`\" ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationRelative": {
+    "message": "URL relatiu ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationRoot": {
+    "message": "Apunta a l'URL arrel (la pàgina d'inici) del domini en lloc d'apuntar a una pàgina equivalent de contingut"
+  },
+  "lighthouse-core/audits/seo/canonical.js | failureTitle": {
+    "message": "El document no té un valor `rel=canonical` vàlid"
+  },
+  "lighthouse-core/audits/seo/canonical.js | title": {
+    "message": "El document té un valor `rel=canonical` vàlid"
+  },
+  "lighthouse-core/audits/seo/font-size.js | description": {
+    "message": "Les lletres amb una mida inferior als 12 píxels són massa petites i obliguen els usuaris de mòbils a \"pinçar per fer zoom\" a fi d'ampliar el text i poder llegir-lo. Intenta que la mida de més del 60% del text de la pàgina sigui igual o superior a 12 píxels. [Obtén més informació](https://web.dev/font-size)."
+  },
+  "lighthouse-core/audits/seo/font-size.js | displayValue": {
+    "message": "El {decimalProportion, number, extendedPercent} del text és llegible"
+  },
+  "lighthouse-core/audits/seo/font-size.js | explanationViewport": {
+    "message": "El text és il·legible perquè no hi ha cap metaetiqueta de finestra gràfica optimitzada per a pantalles de mòbil."
+  },
+  "lighthouse-core/audits/seo/font-size.js | explanationWithDisclaimer": {
+    "message": "El {decimalProportion, number, extendedPercent} del text és massa petit (d'acord amb una mostra del {decimalProportionVisited, number, extendedPercent})."
+  },
+  "lighthouse-core/audits/seo/font-size.js | failureTitle": {
+    "message": "El document no utilitza lletres amb mides llegibles"
+  },
+  "lighthouse-core/audits/seo/font-size.js | title": {
+    "message": "El document utilitza lletres amb mides llegibles"
+  },
+  "lighthouse-core/audits/seo/hreflang.js | description": {
+    "message": "Els enllaços de tipus \"hreflang\" informen els motors de cerca de quina versió d'una pàgina han d'incloure als resultats de cerca per a una regió o un idioma concrets. [Obtén més informació](https://web.dev/hreflang)."
+  },
+  "lighthouse-core/audits/seo/hreflang.js | failureTitle": {
+    "message": "El document no té un valor `hreflang` vàlid"
+  },
+  "lighthouse-core/audits/seo/hreflang.js | title": {
+    "message": "El document té un valor `hreflang` vàlid"
+  },
+  "lighthouse-core/audits/seo/http-status-code.js | description": {
+    "message": "És possible que les pàgines amb codi d'estat HTTP incorrecte no s'indexin correctament. [Obtén més informació](https://web.dev/http-status-code)."
+  },
+  "lighthouse-core/audits/seo/http-status-code.js | failureTitle": {
+    "message": "El codi d'estat HTTP de la pàgina no és correcte"
+  },
+  "lighthouse-core/audits/seo/http-status-code.js | title": {
+    "message": "El codi d'estat HTTP de la pàgina és correcte"
+  },
+  "lighthouse-core/audits/seo/is-crawlable.js | description": {
+    "message": "Si els motors de cerca no tenen permís per rastrejar les teves pàgines, no les poden incloure als resultats de cerca. [Obtén més informació](https://web.dev/is-crawable)."
+  },
+  "lighthouse-core/audits/seo/is-crawlable.js | failureTitle": {
+    "message": "La pàgina està configurada per bloquejar la indexació"
+  },
+  "lighthouse-core/audits/seo/is-crawlable.js | title": {
+    "message": "La indexació no està bloquejada en aquesta pàgina"
+  },
+  "lighthouse-core/audits/seo/link-text.js | description": {
+    "message": "El text descriptiu dels enllaços ajuda els motors de cerca a entendre el contingut. [Obtén més informació](https://web.dev/link-text)."
+  },
+  "lighthouse-core/audits/seo/link-text.js | displayValue": {
+    "message": "{itemCount,plural, =1{S'ha trobat 1 enllaç}other{S'han trobat # enllaços}}"
+  },
+  "lighthouse-core/audits/seo/link-text.js | failureTitle": {
+    "message": "Els enllaços no tenen text descriptiu"
+  },
+  "lighthouse-core/audits/seo/link-text.js | title": {
+    "message": "Els enllaços tenen text descriptiu"
+  },
+  "lighthouse-core/audits/seo/manual/structured-data.js | description": {
+    "message": "Executa l'[eina de proves de dades estructurades](https://search.google.com/structured-data/testing-tool/) i l'[eina Structured Data Linter](http://linter.structured-data.org/) per validar aquest tipus de dades. [Obtén més informació](https://web.dev/structured-data)."
+  },
+  "lighthouse-core/audits/seo/manual/structured-data.js | title": {
+    "message": "Les dades estructurades són vàlides"
+  },
+  "lighthouse-core/audits/seo/meta-description.js | description": {
+    "message": "És possible que s'incloguin metadescripcions als resultats de cerca per resumir breument el contingut de la pàgina. [Obtén més informació](https://web.dev/meta-description)."
+  },
+  "lighthouse-core/audits/seo/meta-description.js | explanation": {
+    "message": "El text de la descripció és buit."
+  },
+  "lighthouse-core/audits/seo/meta-description.js | failureTitle": {
+    "message": "El document no té cap metadescripció"
+  },
+  "lighthouse-core/audits/seo/meta-description.js | title": {
+    "message": "El document té una metadescripció"
+  },
+  "lighthouse-core/audits/seo/plugins.js | description": {
+    "message": "Els motors de cerca no poden indexar el contingut dels connectors. A més, molts dispositius restringeixen els correctors o no els admeten. [Obtén més informació](https://web.dev/plugins)."
+  },
+  "lighthouse-core/audits/seo/plugins.js | failureTitle": {
+    "message": "El document utilitza connectors"
+  },
+  "lighthouse-core/audits/seo/plugins.js | title": {
+    "message": "El document evita els connectors"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | description": {
+    "message": "Si el format del fitxer robots.txt no és correcte, és possible que els rastrejadors no puguin entendre com vols que rastregin o indexin el lloc web. [Obtén més informació](https://web.dev/robots-txt)."
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | displayValueHttpBadCode": {
+    "message": "La sol·licitud del fitxer robots.txt ha tornat l'estat HTTP: {statusCode}"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | displayValueValidationError": {
+    "message": "{itemCount,plural, =1{S'ha trobat 1 error}other{S'han trobat # errors}}"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | explanation": {
+    "message": "Lighthouse no ha pogut baixar el fitxer robots.txt"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | failureTitle": {
+    "message": "El fitxer robots.txt no és vàlid"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | title": {
+    "message": "El fitxer robots.txt és vàlid"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | description": {
+    "message": "Els elements interactius, com ara els botons i els enllaços, han de ser prou grans (48 x 48 píxels) i han de tenir prou espai al voltant perquè els usuaris els puguin tocar sense que se superposin a altres elements. [Obtén més informació](https://web.dev/tap-targets)."
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | displayValue": {
+    "message": "El {decimalProportion, number, percent} de les mides dels objectius tàctils és correcte"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | explanationViewportMetaNotOptimized": {
+    "message": "Els elements tàctils són massa petits perquè no hi ha cap metaetiqueta de finestra gràfica optimitzada per a pantalles de mòbil"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | failureTitle": {
+    "message": "La mida dels elements tàctils no és correcta"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | overlappingTargetHeader": {
+    "message": "Objectiu superposat"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | tapTargetHeader": {
+    "message": "Element tàctil"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | title": {
+    "message": "La mida dels elements tàctils és correcta"
+  },
+  "lighthouse-core/audits/service-worker.js | description": {
+    "message": "El Service Worker és la tecnologia que fa possible que la teva aplicació utilitzi moltes funcions d'aplicació web progressiva, com ara funcionar sense connexió, poder afegir-se a la pàgina d'inici i mostrar notificacions automàtiques. [Obtén més informació](https://developers.google.com/web/tools/lighthouse/audits/registered-service-worker)."
+  },
+  "lighthouse-core/audits/service-worker.js | explanationBadManifest": {
+    "message": "Tot i que un Service Worker controla aquesta pàgina, no s'ha trobat cap atribut `start_url` perquè el fitxer de manifest no s'ha pogut analitzar com a format JSON vàlid"
+  },
+  "lighthouse-core/audits/service-worker.js | explanationBadStartUrl": {
+    "message": "Tot i que un Service Worker controla aquesta pàgina, l'atribut `start_url` ({startUrl}) no és a l'abast del Service Worker ({scopeUrl})"
+  },
+  "lighthouse-core/audits/service-worker.js | explanationNoManifest": {
+    "message": "Tot i que un Service Worker controla aquesta pàgina, no s'ha trobat cap `start_url` perquè no s'ha obtingut cap fitxer de manifest."
+  },
+  "lighthouse-core/audits/service-worker.js | explanationOutOfScope": {
+    "message": "Aquest origen té un Service Worker o més, però la pàgina ({pageUrl}) està fora de l'abast."
+  },
+  "lighthouse-core/audits/service-worker.js | failureTitle": {
+    "message": "No registra cap Service Worker que controli la pàgina i l'atribut `start_url`"
+  },
+  "lighthouse-core/audits/service-worker.js | title": {
+    "message": "Registra un Service Worker que controla la pàgina i l'atribut `start_url`"
+  },
+  "lighthouse-core/audits/splash-screen.js | description": {
+    "message": "Utilitzar una pantalla inicial temàtica garanteix una experiència d'alta qualitat quan els usuaris inicien l'aplicació des de la pantalla d'inici. [Obtén més informació](https://developers.google.com/web/tools/lighthouse/audits/custom-splash-screen)."
+  },
+  "lighthouse-core/audits/splash-screen.js | failureTitle": {
+    "message": "No està configurat per a una pantalla inicial personalitzada"
+  },
+  "lighthouse-core/audits/splash-screen.js | title": {
+    "message": "Està configurat per a una pantalla inicial personalitzada"
+  },
+  "lighthouse-core/audits/themed-omnibox.js | description": {
+    "message": "Es pot aplicar un tema a la barra d'adreces del navegador perquè faci joc amb el teu lloc web. [Obtén més informació](https://developers.google.com/web/tools/lighthouse/audits/address-bar)."
+  },
+  "lighthouse-core/audits/themed-omnibox.js | failureTitle": {
+    "message": "No estableix un color temàtic per a la barra d'adreces."
+  },
+  "lighthouse-core/audits/themed-omnibox.js | title": {
+    "message": "Estableix un color temàtic per a la barra d'adreces."
+  },
+  "lighthouse-core/audits/third-party-summary.js | columnBlockingTime": {
+    "message": "Temps de bloqueig del fil principal"
+  },
+  "lighthouse-core/audits/third-party-summary.js | columnThirdParty": {
+    "message": "Tercers"
+  },
+  "lighthouse-core/audits/third-party-summary.js | description": {
+    "message": "El codi de tercers pot afectar significativament el rendiment de la càrrega. Limita el nombre de proveïdors externs redundants i prova de carregar codi de tercers quan la càrrega principal de la pàgina ha finalitzat. [Obtén més informació](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/loading-third-party-javascript/)."
+  },
+  "lighthouse-core/audits/third-party-summary.js | displayValue": {
+    "message": "El codi de tercers ha bloquejat el fil principal durant {timeInMs, number, milliseconds} ms"
+  },
+  "lighthouse-core/audits/third-party-summary.js | failureTitle": {
+    "message": "Redueix l'impacte del codi de tercers"
+  },
+  "lighthouse-core/audits/third-party-summary.js | title": {
+    "message": "Ús de tercers"
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | description": {
+    "message": "La mètrica Temps fins al primer byte identifica el moment en què el teu servidor envia una resposta. [Obtén més informació](https://developers.google.com/web/tools/lighthouse/audits/ttfb)."
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | displayValue": {
+    "message": "El document arrel ha tardat {timeInMs, number, milliseconds} ms"
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | failureTitle": {
+    "message": "Redueix els temps de resposta del servidor (TTFB)"
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | title": {
+    "message": "Els temps de resposta del servidor són baixos (TTFB)"
+  },
+  "lighthouse-core/audits/user-timings.js | columnDuration": {
+    "message": "Durada"
+  },
+  "lighthouse-core/audits/user-timings.js | columnStartTime": {
+    "message": "Hora d'inici"
+  },
+  "lighthouse-core/audits/user-timings.js | columnType": {
+    "message": "Tipus"
+  },
+  "lighthouse-core/audits/user-timings.js | description": {
+    "message": "Et recomanem que utilitzis l'API Temps d'usuari amb la teva aplicació per mesurar-ne el rendiment al món real durant experiències clau dels usuaris. [Obtén més informació](https://developers.google.com/web/tools/lighthouse/audits/user-timing)."
+  },
+  "lighthouse-core/audits/user-timings.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 temps d'usuari}other{# temps d'usuari}}"
+  },
+  "lighthouse-core/audits/user-timings.js | title": {
+    "message": "Marques i mesures de Temps d'usuari"
+  },
+  "lighthouse-core/audits/uses-rel-preconnect.js | crossoriginWarning": {
+    "message": "S'ha trobat un element <link> de connexió prèvia per a \"{securityOrigin}\", però el navegador no l'ha utilitzat. Comprova que estiguis utilitzant correctament l'atribut `crossorigin`."
+  },
+  "lighthouse-core/audits/uses-rel-preconnect.js | description": {
+    "message": "Et recomanem que afegeixis suggeriments de recursos `preconnect` o `dns-prefetch` per establir connexions anticipades a orígens importants de tercers. [Obtén més informació](https://developers.google.com/web/fundamentals/performance/resource-prioritization#preconnect)."
+  },
+  "lighthouse-core/audits/uses-rel-preconnect.js | title": {
+    "message": "Connecta't prèviament als orígens necessaris"
+  },
+  "lighthouse-core/audits/uses-rel-preload.js | crossoriginWarning": {
+    "message": "S'ha trobat un element <link> de càrrega prèvia per a \"{preloadURL}\", però el navegador no l'ha utilitzat. Comprova que estiguis utilitzant correctament l'atribut `crossorigin`."
+  },
+  "lighthouse-core/audits/uses-rel-preload.js | description": {
+    "message": "Et recomanem que utilitzis `<link rel=preload>` per prioritzar l'obtenció de recursos que en aquests moments se sol·liciten en un moment posterior de la càrrega de pàgines. [Obtén més informació](https://developers.google.com/web/tools/lighthouse/audits/preload)."
+  },
+  "lighthouse-core/audits/uses-rel-preload.js | title": {
+    "message": "Carrega prèviament les sol·licituds de clau"
+  },
+  "lighthouse-core/audits/viewport.js | description": {
+    "message": "Afegeix una etiqueta `<meta name=\"viewport\">` a fi d'optimitzar l'aplicació per a pantalles de dispositius mòbils. [Obtén més informació](https://developers.google.com/web/tools/lighthouse/audits/has-viewport-meta-tag)."
+  },
+  "lighthouse-core/audits/viewport.js | explanationNoTag": {
+    "message": "No s'ha trobat cap etiqueta `<meta name=\"viewport\">`"
+  },
+  "lighthouse-core/audits/viewport.js | failureTitle": {
+    "message": "No té una etiqueta `<meta name=\"viewport\">` amb l'atribut `width` o `initial-scale`"
+  },
+  "lighthouse-core/audits/viewport.js | title": {
+    "message": "Té una etiqueta `<meta name=\"viewport\">` amb l'atribut `width` o `initial-scale`"
+  },
+  "lighthouse-core/audits/without-javascript.js | description": {
+    "message": "L'aplicació ha de mostrar algun tipus de contingut quan JavaScript estigui desactivat, encara que només sigui per avisar l'usuari que es requereix JavaScript per utilitzar l'aplicació. [Obtén més informació](https://developers.google.com/web/tools/lighthouse/audits/no-js)."
+  },
+  "lighthouse-core/audits/without-javascript.js | explanation": {
+    "message": "El cos de la pàgina ha de renderitzar algun tipus de contingut si els scripts no estan disponibles."
+  },
+  "lighthouse-core/audits/without-javascript.js | failureTitle": {
+    "message": "No proporciona contingut alternatiu quan JavaScript no està disponible"
+  },
+  "lighthouse-core/audits/without-javascript.js | title": {
+    "message": "Inclou algun tipus de contingut quan JavaScript no està disponible"
+  },
+  "lighthouse-core/audits/works-offline.js | description": {
+    "message": "Si vols crear una aplicació web progressiva, considera la possibilitat d'utilitzar un Service Worker perquè l'aplicació funcioni sense connexió. [Obtén més informació](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)."
+  },
+  "lighthouse-core/audits/works-offline.js | failureTitle": {
+    "message": "La pàgina actual no respon amb un codi 200 quan no hi ha connexió"
+  },
+  "lighthouse-core/audits/works-offline.js | title": {
+    "message": "La pàgina actual respon amb un codi 200 quan no hi ha connexió"
+  },
+  "lighthouse-core/audits/works-offline.js | warningNoLoad": {
+    "message": "És possible que la pàgina no es carregui sense connexió perquè l'URL de prova ({requested}) s'ha redirigit cap a \"{final}\". Prova el segon URL directament."
+  },
+  "lighthouse-core/config/default-config.js | a11yAriaGroupDescription": {
+    "message": "Aquí tens recomanacions per millorar l'ús dels elements d'ARIA a l'aplicació. També poden millorar l'experiència dels usuaris de tecnologia d'assistència (per exemple, de lectors de pantalla)."
+  },
+  "lighthouse-core/config/default-config.js | a11yAriaGroupTitle": {
+    "message": "ARIA"
+  },
+  "lighthouse-core/config/default-config.js | a11yAudioVideoGroupDescription": {
+    "message": "Aquí tens recomanacions per proporcionar contingut alternatiu d'àudio i vídeo. També poden millorar l'experiència dels usuaris amb discapacitat auditiva o visual."
+  },
+  "lighthouse-core/config/default-config.js | a11yAudioVideoGroupTitle": {
+    "message": "Àudio i vídeo"
+  },
+  "lighthouse-core/config/default-config.js | a11yBestPracticesGroupDescription": {
+    "message": "Aquests elements destaquen les pràctiques recomanades més habituals pel que fa a l'accessibilitat."
+  },
+  "lighthouse-core/config/default-config.js | a11yBestPracticesGroupTitle": {
+    "message": "Pràctiques recomanades"
+  },
+  "lighthouse-core/config/default-config.js | a11yCategoryDescription": {
+    "message": "Aquestes comprovacions destaquen les oportunitats per [millorar l'accessibilitat de l'aplicació web](https://developers.google.com/web/fundamentals/accessibility). Només poden detectar un subconjunt de problemes d'accessibilitat automàticament, de manera que et recomanem que també hi facis proves manuals."
+  },
+  "lighthouse-core/config/default-config.js | a11yCategoryManualDescription": {
+    "message": "Aquests elements tracten àrees que les eines de proves automatitzades no poden cobrir. Obtén més informació a la nostra guia sobre [com es duen a terme ressenyes d'accessibilitat](https://developers.google.com/web/fundamentals/accessibility/how-to-review)."
+  },
+  "lighthouse-core/config/default-config.js | a11yCategoryTitle": {
+    "message": "Accessibilitat"
+  },
+  "lighthouse-core/config/default-config.js | a11yColorContrastGroupDescription": {
+    "message": "Aquí tens idees per millorar la llegibilitat del contingut."
+  },
+  "lighthouse-core/config/default-config.js | a11yColorContrastGroupTitle": {
+    "message": "Contrast"
+  },
+  "lighthouse-core/config/default-config.js | a11yLanguageGroupDescription": {
+    "message": "Aquí tens recomanacions per millorar la interpretació del contingut per part dels usuaris de diferents configuracions regionals."
+  },
+  "lighthouse-core/config/default-config.js | a11yLanguageGroupTitle": {
+    "message": "Internacionalització i localització"
+  },
+  "lighthouse-core/config/default-config.js | a11yNamesLabelsGroupDescription": {
+    "message": "Aquí tens recomanacions per millorar la semàntica dels controls a l'aplicació. També poden millorar l'experiència dels usuaris de tecnologia d'assistència (per exemple, de lectors de pantalla)."
+  },
+  "lighthouse-core/config/default-config.js | a11yNamesLabelsGroupTitle": {
+    "message": "Noms i etiquetes"
+  },
+  "lighthouse-core/config/default-config.js | a11yNavigationGroupDescription": {
+    "message": "Aquí tens recomanacions per millorar la navegació amb el teclat a l'aplicació."
+  },
+  "lighthouse-core/config/default-config.js | a11yNavigationGroupTitle": {
+    "message": "Navegació"
+  },
+  "lighthouse-core/config/default-config.js | a11yTablesListsVideoGroupDescription": {
+    "message": "Aquí tens recomanacions per millorar la lectura de dades de taules o llistes utilitzant la tecnologia d'assistència (per exemple, lectors de pantalla)."
+  },
+  "lighthouse-core/config/default-config.js | a11yTablesListsVideoGroupTitle": {
+    "message": "Taules i llistes"
+  },
+  "lighthouse-core/config/default-config.js | bestPracticesCategoryTitle": {
+    "message": "Pràctiques recomanades"
+  },
+  "lighthouse-core/config/default-config.js | budgetsGroupDescription": {
+    "message": "Els pressupostos de rendiment estableixen uns estàndards per al rendiment del teu lloc web."
+  },
+  "lighthouse-core/config/default-config.js | budgetsGroupTitle": {
+    "message": "Pressupostos"
+  },
+  "lighthouse-core/config/default-config.js | diagnosticsGroupDescription": {
+    "message": "Més informació sobre el rendiment de la teva aplicació. Aquests números no [afecten directament](https://github.com/GoogleChrome/lighthouse/blob/d2ec9ffbb21de9ad1a0f86ed24575eda32c796f0/docs/scoring.md#how-are-the-scores-weighted) el resultat del rendiment."
+  },
+  "lighthouse-core/config/default-config.js | diagnosticsGroupTitle": {
+    "message": "Diagnòstic"
+  },
+  "lighthouse-core/config/default-config.js | firstPaintImprovementsGroupDescription": {
+    "message": "L'aspecte més crític del rendiment és la velocitat amb què es renderitzen els píxels en pantalla. Mètriques clau: Primera renderització de contigut, Primera renderització significativa"
+  },
+  "lighthouse-core/config/default-config.js | firstPaintImprovementsGroupTitle": {
+    "message": "Millores de la primera renderització"
+  },
+  "lighthouse-core/config/default-config.js | loadOpportunitiesGroupDescription": {
+    "message": "Aquests suggeriments poden ajudar la pàgina a carregar-se més de pressa. No [afecten directament](https://github.com/GoogleChrome/lighthouse/blob/d2ec9ffbb21de9ad1a0f86ed24575eda32c796f0/docs/scoring.md#how-are-the-scores-weighted) el resultat del rendiment."
+  },
+  "lighthouse-core/config/default-config.js | loadOpportunitiesGroupTitle": {
+    "message": "Oportunitats"
+  },
+  "lighthouse-core/config/default-config.js | metricGroupTitle": {
+    "message": "Mètriques"
+  },
+  "lighthouse-core/config/default-config.js | overallImprovementsGroupDescription": {
+    "message": "Millora l'experiència general de càrrega, de manera que la pàgina respongui i estigui preparada per utilitzar-se al més aviat possible. Mètriques clau: Temps fins que és interactiva, Índex de velocitat"
+  },
+  "lighthouse-core/config/default-config.js | overallImprovementsGroupTitle": {
+    "message": "Millores generals"
+  },
+  "lighthouse-core/config/default-config.js | performanceCategoryTitle": {
+    "message": "Rendiment"
+  },
+  "lighthouse-core/config/default-config.js | pwaCategoryDescription": {
+    "message": "Aquestes validacions verifiquen els aspectes de les aplicacions web progressives. [Obtén més informació](https://developers.google.com/web/progressive-web-apps/checklist)."
+  },
+  "lighthouse-core/config/default-config.js | pwaCategoryManualDescription": {
+    "message": "La [llista de comprovació de referència per a aplicacions web progressives](https://developers.google.com/web/progressive-web-apps/checklist) requereix aquestes validacions, però Lighthouse no les verifica automàticament. Tot i que no afecten la teva puntuació, és important que les verifiquis manualment."
+  },
+  "lighthouse-core/config/default-config.js | pwaCategoryTitle": {
+    "message": "Aplicació web progressiva"
+  },
+  "lighthouse-core/config/default-config.js | pwaFastReliableGroupTitle": {
+    "message": "Ràpid i fiable"
+  },
+  "lighthouse-core/config/default-config.js | pwaInstallableGroupTitle": {
+    "message": "Es pot instal·lar"
+  },
+  "lighthouse-core/config/default-config.js | pwaOptimizedGroupTitle": {
+    "message": "Optimitzat per a PWA"
+  },
+  "lighthouse-core/config/default-config.js | seoCategoryDescription": {
+    "message": "Aquestes comprovacions garanteixen que la pàgina estigui optimitzada per classificar els resultats del motor de cerca. Hi ha factors addicionals que Lighthouse no comprova i que és possible que afectin la teva classificació a les cerques. [Obtén més informació](https://support.google.com/webmasters/answer/35769)."
+  },
+  "lighthouse-core/config/default-config.js | seoCategoryManualDescription": {
+    "message": "Executa aquestes validacions addicionals al lloc web per comprovar les pràctiques addicionals recomanades per a SEO."
+  },
+  "lighthouse-core/config/default-config.js | seoCategoryTitle": {
+    "message": "SEO"
+  },
+  "lighthouse-core/config/default-config.js | seoContentGroupDescription": {
+    "message": "Dona a l'HTML un format que permeti als rastrejadors entendre millor el contingut de l'aplicació."
+  },
+  "lighthouse-core/config/default-config.js | seoContentGroupTitle": {
+    "message": "Pràctiques recomanades pel que fa al contingut"
+  },
+  "lighthouse-core/config/default-config.js | seoCrawlingGroupDescription": {
+    "message": "Perquè l'aplicació es mostri als resultats de cerca, els rastrejadors necessiten tenir-hi accés."
+  },
+  "lighthouse-core/config/default-config.js | seoCrawlingGroupTitle": {
+    "message": "Rastreig i indexació"
+  },
+  "lighthouse-core/config/default-config.js | seoMobileGroupDescription": {
+    "message": "Comprova que les pàgines estiguin adaptades per a mòbils, de manera que els usuaris no hagin de pinçar o ampliar les pàgines de contingut per poder llegir-les. [Obtén més informació](https://developers.google.com/search/mobile-sites/)."
+  },
+  "lighthouse-core/config/default-config.js | seoMobileGroupTitle": {
+    "message": "Adaptació per a mòbils"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnCacheTTL": {
+    "message": "TTL de la memòria cau"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnLocation": {
+    "message": "Ubicació"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnName": {
+    "message": "Nom"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnRequests": {
+    "message": "Sol·licituds"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnResourceType": {
+    "message": "Tipus de recurs"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnSize": {
+    "message": "Mida"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnTimeSpent": {
+    "message": "Temps invertit"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnTransferSize": {
+    "message": "Mida de la transferència"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnURL": {
+    "message": "URL"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnWastedBytes": {
+    "message": "Possible estalvi"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnWastedMs": {
+    "message": "Possible estalvi"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | displayValueByteSavings": {
+    "message": "Possible estalvi de {wastedBytes, number, bytes} kB"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | displayValueMsSavings": {
+    "message": "Possible estalvi de {wastedMs, number, milliseconds} ms"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | documentResourceType": {
+    "message": "Document"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | fontResourceType": {
+    "message": "Tipus de lletra"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | imageResourceType": {
+    "message": "Imatge"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | mediaResourceType": {
+    "message": "Multimèdia"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | ms": {
+    "message": "{timeInMs, number, milliseconds} ms"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | otherResourceType": {
+    "message": "Altres"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | scriptResourceType": {
+    "message": "Script"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | seconds": {
+    "message": "{timeInMs, number, seconds} s"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | stylesheetResourceType": {
+    "message": "Full d'estil"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | thirdPartyResourceType": {
+    "message": "Tercers"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | totalResourceType": {
+    "message": "Total"
+  },
+  "lighthouse-core/lib/lh-error.js | badTraceRecording": {
+    "message": "Hi ha hagut un problema en gravar la traça sobre la càrrega de la pàgina. Torna a executar Lighthouse. ({errorCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | criTimeout": {
+    "message": "S'ha esgotat el temps d'espera de la connexió inicial del protocol de depuració."
+  },
+  "lighthouse-core/lib/lh-error.js | didntCollectScreenshots": {
+    "message": "Chrome no ha recollit cap captura de pantalla mentre es carregava la pàgina. Comprova que hi hagi contingut visible a la pàgina i, a continuació, prova d'executar Lighthouse de nou. ({errorCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | dnsFailure": {
+    "message": "Els servidors DNS no han pogut resoldre el domini proporcionat."
+  },
+  "lighthouse-core/lib/lh-error.js | erroredRequiredArtifact": {
+    "message": "El recopilador del recurs {artifactName} requerit ha detectat un error: {errorMessage}"
+  },
+  "lighthouse-core/lib/lh-error.js | internalChromeError": {
+    "message": "S'ha produït un error intern de Chrome. Reinicia el navegador i prova d'executar Lighthouse de nou."
+  },
+  "lighthouse-core/lib/lh-error.js | missingRequiredArtifact": {
+    "message": "El recopilador obligatori {artifactName} no s'ha executat."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailed": {
+    "message": "Lighthouse no ha pogut carregar de manera fiable la pàgina que has sol·licitat. Assegura't que estiguis fent la prova de l'URL correcte i que el servidor estigui responent correctament a totes les sol·licituds."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedHung": {
+    "message": "Com que la pàgina ha deixat de respondre, Lighthouse no ha pogut carregar de manera fiable l'URL que has sol·licitat."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedInsecure": {
+    "message": "L'URL que has proporcionat no té un certificat de seguretat vàlid. {securityMessages}"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedInterstitial": {
+    "message": "Chrome ha evitat la càrrega de la pàgina amb una pantalla intersticial. Assegura't que estiguis fent la prova de l'URL correcte i que el servidor estigui responent correctament a totes les sol·licituds."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedWithDetails": {
+    "message": "Lighthouse no ha pogut carregar de manera fiable la pàgina que has sol·licitat. Assegura't que estiguis fent la prova de l'URL correcte i que el servidor estigui responent correctament a totes les sol·licituds. (Detalls: {errorDetails})"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedWithStatusCode": {
+    "message": "Lighthouse no ha pogut carregar de manera fiable la pàgina que has sol·licitat. Assegura't que estiguis fent la prova de l'URL correcte i que el servidor estigui responent correctament a totes les sol·licituds. (Codi d'estat: {statusCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadTookTooLong": {
+    "message": "La pàgina ha tardat massa temps a carregar-se. Segueix les opcions indicades a l'informe per reduir el temps de càrrega de la pàgina i, a continuació, prova d'executar Lighthouse de nou. ({errorCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | protocolTimeout": {
+    "message": "S'ha superat el temps assignat per rebre una resposta del protocol de DevTools. (Mètode: {protocolMethod})"
+  },
+  "lighthouse-core/lib/lh-error.js | requestContentTimeout": {
+    "message": "S'ha superat el temps assignat per obtenir el contingut dels recursos"
+  },
+  "lighthouse-core/lib/lh-error.js | urlInvalid": {
+    "message": "Sembla que l'URL que has proporcionat no és vàlid."
+  },
+  "lighthouse-core/report/html/renderer/util.js | auditGroupExpandTooltip": {
+    "message": "Mostra les auditories"
+  },
+  "lighthouse-core/report/html/renderer/util.js | crcInitialNavigation": {
+    "message": "Navegació inicial"
+  },
+  "lighthouse-core/report/html/renderer/util.js | crcLongestDurationLabel": {
+    "message": "Latència de camí crítica màxima:"
+  },
+  "lighthouse-core/report/html/renderer/util.js | errorLabel": {
+    "message": "Error"
+  },
+  "lighthouse-core/report/html/renderer/util.js | errorMissingAuditInfo": {
+    "message": "Error de l'informe: no hi ha informació d'auditoria"
+  },
+  "lighthouse-core/report/html/renderer/util.js | labDataTitle": {
+    "message": "Dades de laboratori"
+  },
+  "lighthouse-core/report/html/renderer/util.js | lsPerformanceCategoryDescription": {
+    "message": "Anàlisi amb [Lighthouse](https://developers.google.com/web/tools/lighthouse/) de la pàgina actual mitjançant una xarxa mòbil emulada. Els valors són estimacions i poden variar."
+  },
+  "lighthouse-core/report/html/renderer/util.js | manualAuditsGroupTitle": {
+    "message": "Elements addicionals per comprovar manualment"
+  },
+  "lighthouse-core/report/html/renderer/util.js | notApplicableAuditsGroupTitle": {
+    "message": "No aplicable"
+  },
+  "lighthouse-core/report/html/renderer/util.js | opportunityResourceColumnLabel": {
+    "message": "Oportunitat"
+  },
+  "lighthouse-core/report/html/renderer/util.js | opportunitySavingsColumnLabel": {
+    "message": "Estalvi estimat"
+  },
+  "lighthouse-core/report/html/renderer/util.js | passedAuditsGroupTitle": {
+    "message": "Auditories aprovades"
+  },
+  "lighthouse-core/report/html/renderer/util.js | snippetCollapseButtonLabel": {
+    "message": "Replega el fragment"
+  },
+  "lighthouse-core/report/html/renderer/util.js | snippetExpandButtonLabel": {
+    "message": "Desplega el fragment"
+  },
+  "lighthouse-core/report/html/renderer/util.js | thirdPartyResourcesLabel": {
+    "message": "Mostra els recursos de tercers"
+  },
+  "lighthouse-core/report/html/renderer/util.js | toplevelWarningsMessage": {
+    "message": "Hi ha hagut problemes que afecten aquesta execució de Lighthouse:"
+  },
+  "lighthouse-core/report/html/renderer/util.js | varianceDisclaimer": {
+    "message": "Els valors són estimacions i poden variar. El resultat del rendiment [només es basa en aquestes mètriques](https://github.com/GoogleChrome/lighthouse/blob/d2ec9ffbb21de9ad1a0f86ed24575eda32c796f0/docs/scoring.md#how-are-the-scores-weighted)."
+  },
+  "lighthouse-core/report/html/renderer/util.js | warningAuditsGroupTitle": {
+    "message": "Auditories aprovades però amb advertiments"
+  },
+  "lighthouse-core/report/html/renderer/util.js | warningHeader": {
+    "message": "Advertiments: "
+  },
+  "stack-packs/packs/wordpress.js | efficient_animated_content": {
+    "message": "Pots pujar el GIF en un servei que permeti inserir-lo en un vídeo HTML5."
+  },
+  "stack-packs/packs/wordpress.js | offscreen_images": {
+    "message": "Instal·la un [connector de WordPress de càrrega diferida](https://wordpress.org/plugins/search/lazy+load/) que t'ofereixi la possibilitat d'ajornar les imatges fora de pantalla o canviar a un tema que t'ofereixi aquesta funció. També pots fer servir [el connector AMP](https://wordpress.org/plugins/amp/)."
+  },
+  "stack-packs/packs/wordpress.js | render_blocking_resources": {
+    "message": "Hi ha diversos connectors de WordPress que et poden ajudar a [inserir recursos essencials](https://wordpress.org/plugins/search/critical+css/) o a [ajornar els recursos menys importants](https://wordpress.org/plugins/search/defer+css+javascript/). Tingues en compte que les optimitzacions que proporcionen aquests connectors poden afectar les funcions del tema o dels connectors, de manera que és possible que hagis de fer canvis al codi."
+  },
+  "stack-packs/packs/wordpress.js | time_to_first_byte": {
+    "message": "Els temes, els connectors i les especificacions del servidor contribueixen al temps de resposta del servidor. Pots buscar un tema més optimitzat, seleccionar amb cura un connector d'optimització o actualitzar el servidor."
+  },
+  "stack-packs/packs/wordpress.js | total_byte_weight": {
+    "message": "Pots mostrar extractes a les llistes de publicacions (per exemple, amb l'etiqueta més), reduir el nombre de publicacions que es mostren en una pàgina concreta, tallar les publicacions llargues en diverses pàgines o fer servir un connector per als comentaris de càrrega diferida."
+  },
+  "stack-packs/packs/wordpress.js | unminified_css": {
+    "message": "Hi ha diversos [connectors de WordPress](https://wordpress.org/plugins/search/minify+css/) que poden accelerar el teu lloc web. Per fer-ho, concatenen, redueixen i comprimeixen els estils. També et recomanem que utilitzis un procés de compilació per fer aquesta minimització de manera anticipada, si és possible."
+  },
+  "stack-packs/packs/wordpress.js | unminified_javascript": {
+    "message": "Hi ha diversos [connectors de WordPress](https://wordpress.org/plugins/search/minify+javascript/) que poden accelerar el teu lloc web. Per fer-ho, concatenen, redueixen i comprimeixen els scripts. També et recomanem que utilitzis un procés de compilació per fer aquesta minimització de manera anticipada, si és possible."
+  },
+  "stack-packs/packs/wordpress.js | unused_css_rules": {
+    "message": "Pots reduir o canviar el nombre de [connectors de WordPress](https://wordpress.org/plugins/) que carreguen fitxers CSS no utilitzats a la pàgina. Per identificar els connectors que afegeixen fitxers CSS externs, prova d'executar la [cobertura de codi](https://developers.google.com/web/updates/2017/04/devtools-release-notes#coverage) a Chrome DevTools. Pots identificar el tema o el connector responsable a partir de l'URL del full d'estil. Cerca connectors que tinguin molts fulls d'estil a la llista amb molt vermell a la cobertura de codi. Un connector només hauria de tenir un full d'estil a la cua si es fa servir a la pàgina."
+  },
+  "stack-packs/packs/wordpress.js | unused_javascript": {
+    "message": "Pots reduir o canviar el nombre de [connectors de WordPress](https://wordpress.org/plugins/) que carreguen fitxers JavaScript no utilitzats a la pàgina. Per identificar els connectors que afegeixen fitxers JavaScript externs, prova d'executar la [cobertura de codi](https://developers.google.com/web/updates/2017/04/devtools-release-notes#coverage) a Chrome DevTools. Pots identificar el tema o el connector responsable a partir de l'URL de l'script. Cerca connectors que tinguin molts scripts a la llista amb molt vermell a la cobertura de codi. Un connector només hauria de tenir un script a la cua si es fa servir a la pàgina."
+  },
+  "stack-packs/packs/wordpress.js | uses_long_cache_ttl": {
+    "message": "Obtén informació sobre la [memòria cau del navegador a WordPress](https://codex.wordpress.org/WordPress_Optimization#Browser_Caching)."
+  },
+  "stack-packs/packs/wordpress.js | uses_optimized_images": {
+    "message": "Pots utilitzar un [connector de WordPress d'optimització d'imatges](https://wordpress.org/plugins/search/optimize+images/) per comprimir les imatges sense perdre qualitat."
+  },
+  "stack-packs/packs/wordpress.js | uses_responsive_images": {
+    "message": "Penja imatges directament mitjançant la [biblioteca multimèdia](https://codex.wordpress.org/Media_Library_Screen) per garantir que les mides de la imatge necessàries estiguin disponibles i, a continuació, insereix-les des de la biblioteca multimèdia o fes servir el widget per garantir que es fan servir les mides de la imatge òptimes (incloses les dels punts de ruptura responsius). Evita utilitzar imatges de `Full Size`, tret que les dimensions siguin les adequades per a l'ús que se'n farà. [Obtén més informació](https://codex.wordpress.org/Inserting_Images_into_Posts_and_Pages#Image_Size)."
+  },
+  "stack-packs/packs/wordpress.js | uses_text_compression": {
+    "message": "Pots activar la compressió de text a la configuració del servidor web."
+  },
+  "stack-packs/packs/wordpress.js | uses_webp_images": {
+    "message": "Pots fer servir un [connector](https://wordpress.org/plugins/search/convert+webp/) o un servei que converteixi automàticament les imatges penjades als formats òptims."
+  }
+}
diff --git a/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/cs.json b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/cs.json
new file mode 100644
index 0000000..f2d5908
--- /dev/null
+++ b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/cs.json
@@ -0,0 +1,1541 @@
+{
+  "lighthouse-core/audits/accessibility/accesskeys.js | description": {
+    "message": "Přístupové klávesy uživatelům umožňují rychleji vybrat část stránky. Aby navigace fungovala správně, musí být každá přístupová klávesa jedinečná. [Další informace](https://web.dev/accesskeys/)"
+  },
+  "lighthouse-core/audits/accessibility/accesskeys.js | failureTitle": {
+    "message": "Hodnoty atributů `[accesskey]` nejsou jedinečné"
+  },
+  "lighthouse-core/audits/accessibility/accesskeys.js | title": {
+    "message": "Hodnoty `[accesskey]` jsou unikátní"
+  },
+  "lighthouse-core/audits/accessibility/aria-allowed-attr.js | description": {
+    "message": "Každá položka ARIA `role` podporuje konkrétní podmnožinu atributů `aria-*`. Nesprávné přiřazení atributy `aria-*` zneplatní. [Další informace](https://web.dev/aria-allowed-attr/)"
+  },
+  "lighthouse-core/audits/accessibility/aria-allowed-attr.js | failureTitle": {
+    "message": "Atributy `[aria-*]` neodpovídají svým rolím"
+  },
+  "lighthouse-core/audits/accessibility/aria-allowed-attr.js | title": {
+    "message": "Atributy `[aria-*]` odpovídají příslušným rolím"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-attr.js | description": {
+    "message": "Některé role ARIA mají povinné atributy, které čtečkám obrazovek popisují stav prvku. [Další informace](https://web.dev/aria-required-attr/)"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-attr.js | failureTitle": {
+    "message": "Prvky s atributy `[role]` nemají všechny povinné atributy `[aria-*]`"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-attr.js | title": {
+    "message": "Prvky s atributy `[role]` mají všechny povinné atributy `[aria-*]`"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-children.js | description": {
+    "message": "Některé nadřazené role ARIA musejí kvůli poskytovaní správných funkcí přístupnosti obsahovat určité podřízené role. [Další informace](https://web.dev/aria-required-children/)"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-children.js | failureTitle": {
+    "message": "V prvcích s atributem `[role]`, které by měly obsahovat podřízené prvky s určitými atributy `[role]`, tyto podřízené prvky chybí."
+  },
+  "lighthouse-core/audits/accessibility/aria-required-children.js | title": {
+    "message": "Prvky s atributem `[role]`, které by měly obsahovat podřízené prvky s určitými atributy `[role]`, tyto podřízené prvky obsahují"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-parent.js | description": {
+    "message": "Aby poskytovaly správné funkce přístupnosti, musejí být některé podřízené role ARIA umístěny v konkrétních nadřazených rolích. [Další informace](https://web.dev/aria-required-parent/)"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-parent.js | failureTitle": {
+    "message": "Prvky s atributem `[role]` nejsou umístěny v požadovaném nadřazeném prvku"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-parent.js | title": {
+    "message": "Prvky s atributy `[role]`jsou umístěny v požadovaném nadřazeném prvku"
+  },
+  "lighthouse-core/audits/accessibility/aria-roles.js | description": {
+    "message": "Aby role ARIA poskytovaly správné funkce přístupnosti, musejí mít platné hodnoty. [Další informace](https://web.dev/aria-roles/)"
+  },
+  "lighthouse-core/audits/accessibility/aria-roles.js | failureTitle": {
+    "message": "Hodnoty atributů `[role]` nejsou platné"
+  },
+  "lighthouse-core/audits/accessibility/aria-roles.js | title": {
+    "message": "Hodnoty atributů `[role]` jsou platné"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr-value.js | description": {
+    "message": "Asistenční technologie, jako jsou čtečky obrazovek, atributy ARIA s neplatnými hodnotami nedokážou interpretovat. [Další informace](https://web.dev/aria-valid-attr-value/)"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr-value.js | failureTitle": {
+    "message": "Atributy `[aria-*]` nemají platné hodnoty"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr-value.js | title": {
+    "message": "Atributy `[aria-*]` mají platné hodnoty"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr.js | description": {
+    "message": "Asistenční technologie, jako jsou čtečky obrazovek, atributy ARIA s neplatnými názvy nedokážou interpretovat. [Další informace](https://web.dev/aria-valid-attr/)"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr.js | failureTitle": {
+    "message": "Atributy `[aria-*]` nejsou platné nebo v nich jsou překlepy"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr.js | title": {
+    "message": "Atributy `[aria-*]` jsou platné a nejsou v nich překlepy"
+  },
+  "lighthouse-core/audits/accessibility/audio-caption.js | description": {
+    "message": "Titulky umožňují sluchově postiženým uživatelům používat zvukové prvky tím, že jim poskytují kritické informace (například kdo mluví a co říká nebo další informace nesouvisející s řečí). [Další informace](https://web.dev/audio-caption/)"
+  },
+  "lighthouse-core/audits/accessibility/audio-caption.js | failureTitle": {
+    "message": "V prvcích `<audio>` chybí prvek `<track>` s atributem `[kind=\"captions\"]`."
+  },
+  "lighthouse-core/audits/accessibility/audio-caption.js | title": {
+    "message": "Prvky `<audio>` obsahují prvek `<track>` s atributem `[kind=\"captions\"]`"
+  },
+  "lighthouse-core/audits/accessibility/axe-audit.js | failingElementsHeader": {
+    "message": "Prvky, které neprošly"
+  },
+  "lighthouse-core/audits/accessibility/button-name.js | description": {
+    "message": "Když tlačítko nemá přístupný název, čtečky obrazovek ho oznamují jako „tlačítko“ a pro jejich uživatele je tak v podstatě nepoužitelné. [Další informace](https://web.dev/button-name/)"
+  },
+  "lighthouse-core/audits/accessibility/button-name.js | failureTitle": {
+    "message": "Tlačítka nemají přístupné názvy"
+  },
+  "lighthouse-core/audits/accessibility/button-name.js | title": {
+    "message": "Tlačítka mají přístupné názvy"
+  },
+  "lighthouse-core/audits/accessibility/bypass.js | description": {
+    "message": "Když přidáte možnosti obejití repetitivního obsahu, umožníte tím efektivnější procházení stránky pomocí klávesnice. [Další informace](https://web.dev/bypass/)"
+  },
+  "lighthouse-core/audits/accessibility/bypass.js | failureTitle": {
+    "message": "Stránka neobsahuje nadpis, odkaz k přeskočení ani orientační bod regionu"
+  },
+  "lighthouse-core/audits/accessibility/bypass.js | title": {
+    "message": "Stránka obsahuje nadpis, odkaz k přeskočení nebo orientační bod regionu"
+  },
+  "lighthouse-core/audits/accessibility/color-contrast.js | description": {
+    "message": "Text s nízkým kontrastem je pro mnoho uživatelů obtížně čitelný nebo nečitelný. [Další informace](https://web.dev/color-contrast/)"
+  },
+  "lighthouse-core/audits/accessibility/color-contrast.js | failureTitle": {
+    "message": "Barvy pozadí a popředí nemají dostatečný kontrastní poměr."
+  },
+  "lighthouse-core/audits/accessibility/color-contrast.js | title": {
+    "message": "Barvy pozadí a popředí mají dostatečný kontrastní poměr"
+  },
+  "lighthouse-core/audits/accessibility/definition-list.js | description": {
+    "message": "Když seznamy definic nejsou správně označené, čtečky obrazovek mohou generovat matoucí nebo nepřesný výstup. [Další informace](https://web.dev/definition-list/)"
+  },
+  "lighthouse-core/audits/accessibility/definition-list.js | failureTitle": {
+    "message": "Prvky `<dl>` neobsahují jen správně seřazené skupiny prvků `<dt>` a `<dd>` nebo prvky `<script>` či `<template>`."
+  },
+  "lighthouse-core/audits/accessibility/definition-list.js | title": {
+    "message": "Prvky `<dl>` neobsahují jen správně seřazené skupiny prvků `<dt>` a `<dd>` nebo prvky `<script>` či `<template>`."
+  },
+  "lighthouse-core/audits/accessibility/dlitem.js | description": {
+    "message": "Aby mohly čtečky obrazovek správně oznamovat položky seznamů definic (`<dt>` a `<dd>`), musejí být tyto položky umístěny v nadřazeném prvku `<dl>`. [Další informace](https://web.dev/dlitem/)"
+  },
+  "lighthouse-core/audits/accessibility/dlitem.js | failureTitle": {
+    "message": "Položky seznamu definic nejsou umístěny v prvcích `<dl>`"
+  },
+  "lighthouse-core/audits/accessibility/dlitem.js | title": {
+    "message": "Položky seznamu definic jsou umístěny v prvcích `<dl>`"
+  },
+  "lighthouse-core/audits/accessibility/document-title.js | description": {
+    "message": "Název (title) uživatelům čteček obrazovek poskytuje souhrnné informace o stránce a uživatelé vyhledávačů se podle něj rozhodují, zda je stránka pro jejich vyhledávání relevantní. [Další informace](https://web.dev/document-title/)"
+  },
+  "lighthouse-core/audits/accessibility/document-title.js | failureTitle": {
+    "message": "Dokument neobsahuje prvek `<title>`"
+  },
+  "lighthouse-core/audits/accessibility/document-title.js | title": {
+    "message": "Dokument obsahuje prvek `<title>`"
+  },
+  "lighthouse-core/audits/accessibility/duplicate-id.js | description": {
+    "message": "Aby asistenční technologie nepřehlédly další výskyty, hodnota atributu id musí být jedinečná. [Další informace](https://web.dev/duplicate-id/)"
+  },
+  "lighthouse-core/audits/accessibility/duplicate-id.js | failureTitle": {
+    "message": "Atributy `[id]` na stránce nejsou jedinečné"
+  },
+  "lighthouse-core/audits/accessibility/duplicate-id.js | title": {
+    "message": "Atributy `[id]` na stránce jsou jedinečné"
+  },
+  "lighthouse-core/audits/accessibility/frame-title.js | description": {
+    "message": "Čtečky obrazovek obvykle k popisu obsahu rámců používají jejich atributy title. [Další informace](https://web.dev/frame-title/)"
+  },
+  "lighthouse-core/audits/accessibility/frame-title.js | failureTitle": {
+    "message": "Prvky `<frame>` nebo `<iframe>` nemají atribut title"
+  },
+  "lighthouse-core/audits/accessibility/frame-title.js | title": {
+    "message": "Prvky `<frame>` a `<iframe>` mají atribut title"
+  },
+  "lighthouse-core/audits/accessibility/html-has-lang.js | description": {
+    "message": "Pokud stránka neuvádí atribut lang, čtečky obrazovky předpokládají, že je ve výchozím jazyce, který uživatel zvolil při nastavování čtečky obrazovky. Pokud stránka ve skutečnosti ve výchozím jazyce není, čtečka obrazovky text nemusí přečíst správně. [Další informace](https://web.dev/html-has-lang/)"
+  },
+  "lighthouse-core/audits/accessibility/html-has-lang.js | failureTitle": {
+    "message": "Prvek `<html>` nemá atribut `[lang]`"
+  },
+  "lighthouse-core/audits/accessibility/html-has-lang.js | title": {
+    "message": "Prvek `<html>` má atribut `[lang]`"
+  },
+  "lighthouse-core/audits/accessibility/html-lang-valid.js | description": {
+    "message": "Zadáním platného [jazyka BCP 47](https://www.w3.org/International/questions/qa-choosing-language-tags#question) pomůžete čtečkám obrazovek správně oznamovat text. [Další informace](https://web.dev/html-lang-valid/)"
+  },
+  "lighthouse-core/audits/accessibility/html-lang-valid.js | failureTitle": {
+    "message": "Prvek `<html>` nemá platnou hodnotu atributu `[lang]`."
+  },
+  "lighthouse-core/audits/accessibility/html-lang-valid.js | title": {
+    "message": "Prvek `<html>` má atribut `[lang]` s platnou hodnotou"
+  },
+  "lighthouse-core/audits/accessibility/image-alt.js | description": {
+    "message": "Informativní prvky by měly mít krátký, popisný alternativní text. Dekorativní prvky lze ignorovat pomocí prázdného atributu alt. [Další informace](https://web.dev/image-alt/)"
+  },
+  "lighthouse-core/audits/accessibility/image-alt.js | failureTitle": {
+    "message": "Prvky obrázků nemají atributy `[alt]`"
+  },
+  "lighthouse-core/audits/accessibility/image-alt.js | title": {
+    "message": "Prvky obrázků mají atributy `[alt]`"
+  },
+  "lighthouse-core/audits/accessibility/input-image-alt.js | description": {
+    "message": "Když je jako tlačítko `<input>` použit obrázek, uvedení alternativního textu pomůže uživatelům čteček obrazovek porozumět účelu tlačítka. [Další informace](https://web.dev/input-image-alt/)"
+  },
+  "lighthouse-core/audits/accessibility/input-image-alt.js | failureTitle": {
+    "message": "Prvky `<input type=\"image\">` nemají text `[alt]`"
+  },
+  "lighthouse-core/audits/accessibility/input-image-alt.js | title": {
+    "message": "Prvky `<input type=\"image\">` mají text `[alt]`"
+  },
+  "lighthouse-core/audits/accessibility/label.js | description": {
+    "message": "Štítky zajišťují, aby asistenční technologie (například čtečky obrazovek) správně oznamovaly ovládací prvky formulářů. [Další informace](https://web.dev/label/)"
+  },
+  "lighthouse-core/audits/accessibility/label.js | failureTitle": {
+    "message": "K prvkům formulářů nejsou přidružené štítky"
+  },
+  "lighthouse-core/audits/accessibility/label.js | title": {
+    "message": "K prvkům formulářů jsou přidružené štítky"
+  },
+  "lighthouse-core/audits/accessibility/layout-table.js | description": {
+    "message": "Tabulka použitá pro účely rozvržení by neměla obsahovat datové prvky, jako jsou prvky th nebo caption ani atribut summary. Pro uživatele čteček obrazovek to může být matoucí. [Další informace](https://web.dev/layout-table/)"
+  },
+  "lighthouse-core/audits/accessibility/layout-table.js | failureTitle": {
+    "message": "Prezentační prvky `<table>` obsahují prvky `<th>` či `<caption>` nebo atribut `[summary]`."
+  },
+  "lighthouse-core/audits/accessibility/layout-table.js | title": {
+    "message": "Prezentační prvky `<table>` neobsahují prvky `<th>` a `<caption>`ani atribut `[summary]`."
+  },
+  "lighthouse-core/audits/accessibility/link-name.js | description": {
+    "message": "Text odkazů (a náhradní text obrázků, když jsou použité jako odkazy), který je rozeznatelný a jedinečný a který lze vybrat, uživatelům čteček obrazovek usnadňuje procházení stránek. [Další informace](https://web.dev/link-name/)"
+  },
+  "lighthouse-core/audits/accessibility/link-name.js | failureTitle": {
+    "message": "Odkazy nemají rozeznatelné názvy"
+  },
+  "lighthouse-core/audits/accessibility/link-name.js | title": {
+    "message": "Odkazy mají rozeznatelné názvy"
+  },
+  "lighthouse-core/audits/accessibility/list.js | description": {
+    "message": "Čtečky obrazovek oznamují seznamy speciálním způsobem. Použitím správné struktury seznamu pomůžete čtečkám obrazovek s výstupem. [Další informace](https://web.dev/list/)"
+  },
+  "lighthouse-core/audits/accessibility/list.js | failureTitle": {
+    "message": "Seznamy neobsahují výhradně prvky `<li>` a prvky, které podporují skripty (`<script>` a `<template>`)."
+  },
+  "lighthouse-core/audits/accessibility/list.js | title": {
+    "message": "Seznamy obsahují výhradně prvky `<li>` a prvky, které podporují skripty (`<script>` a `<template>`)."
+  },
+  "lighthouse-core/audits/accessibility/listitem.js | description": {
+    "message": "Aby čtečky obrazovek prvky `<li>` a `<ul>` oznamovaly správně, musejí být tyto prvky umístěny v nadřazených položkách (`<ol>`). [Další informace](https://web.dev/listitem/)"
+  },
+  "lighthouse-core/audits/accessibility/listitem.js | failureTitle": {
+    "message": "Položky seznamů (`<li>`) nejsou umístěny v nadřazených prvcích `<ul>` nebo `<ol>`."
+  },
+  "lighthouse-core/audits/accessibility/listitem.js | title": {
+    "message": "Položky seznamu (`<li>`) jsou umístěny v nadřazených prvcích `<ul>` nebo `<ol>`"
+  },
+  "lighthouse-core/audits/accessibility/meta-refresh.js | description": {
+    "message": "Uživatelé neočekávají, že se stránka bude automaticky obnovovat. Při automatickém obnovení se prohlížeč vrátí zpět na začátek stránky. Může to vést k nepříjemnému nebo matoucímu chování při procházení. [Další informace](https://web.dev/meta-refresh/)"
+  },
+  "lighthouse-core/audits/accessibility/meta-refresh.js | failureTitle": {
+    "message": "V dokumentu je použita metaznačka `<meta http-equiv=\"refresh\">`"
+  },
+  "lighthouse-core/audits/accessibility/meta-refresh.js | title": {
+    "message": "V dokumentu není použita metaznačka `<meta http-equiv=\"refresh\">`"
+  },
+  "lighthouse-core/audits/accessibility/meta-viewport.js | description": {
+    "message": "Deaktivace změny velikosti zobrazení je problematická pro slabozraké uživatele, kteří jsou při prohlížení obsahu webové stránky závislí na přiblížení obrazovky. [Další informace](https://web.dev/meta-viewport/)"
+  },
+  "lighthouse-core/audits/accessibility/meta-viewport.js | failureTitle": {
+    "message": "V prvku `[user-scalable=\"no\"]` je použit atribut `<meta name=\"viewport\">` nebo je atribut `[maximum-scale]` menší než 5."
+  },
+  "lighthouse-core/audits/accessibility/meta-viewport.js | title": {
+    "message": "V prvku `[user-scalable=\"no\"]` není použit atribut `<meta name=\"viewport\">` a atribut `[maximum-scale]` není menší než 5."
+  },
+  "lighthouse-core/audits/accessibility/object-alt.js | description": {
+    "message": "Čtečky obrazovek nedokážou přeložit obsah jiného typu, než je text. Když k prvkům `<object>` přidáte alternativní text, čtečky obrazovek budou moci předat uživatelům význam. [Další informace](https://web.dev/object-alt/)"
+  },
+  "lighthouse-core/audits/accessibility/object-alt.js | failureTitle": {
+    "message": "Prvky `<object>` nemají text `[alt]`"
+  },
+  "lighthouse-core/audits/accessibility/object-alt.js | title": {
+    "message": "Prvky `<object>` mají text `[alt]`"
+  },
+  "lighthouse-core/audits/accessibility/tabindex.js | description": {
+    "message": "Hodnota větší než 0 naznačuje explicitní řazení navigace. Ačkoli je platná, často vede k chování, které je pro uživatele závislé na asistenčních technologiích nepříjemné. [Další informace](https://web.dev/tabindex/)"
+  },
+  "lighthouse-core/audits/accessibility/tabindex.js | failureTitle": {
+    "message": "Některé prvky mají hodnotu `[tabindex]` větší než 0"
+  },
+  "lighthouse-core/audits/accessibility/tabindex.js | title": {
+    "message": "Žádný prvek nemá hodnotu `[tabindex]` větší než 0"
+  },
+  "lighthouse-core/audits/accessibility/td-headers-attr.js | description": {
+    "message": "Čtečky obrazovek mají funkce, které usnadňují procházení tabulek. Když zajistíte, aby buňky `<td>` s atributem `[headers]` odkazovaly pouze na jiné buňky ve stejné tabulce, můžete tím uživatelům čteček obrazovek usnadnit používání. [Další informace](https://web.dev/td-headers-attr/)"
+  },
+  "lighthouse-core/audits/accessibility/td-headers-attr.js | failureTitle": {
+    "message": "Buňky v prvku `<table>`, které mají atribut `[headers]`, odkazují na jiné buňky ve stejné tabulce."
+  },
+  "lighthouse-core/audits/accessibility/td-headers-attr.js | title": {
+    "message": "Buňky v prvku `<table>`, které mají atribut `[headers]`, odkazují jen na buňky ve stejné tabulce."
+  },
+  "lighthouse-core/audits/accessibility/th-has-data-cells.js | description": {
+    "message": "Čtečky obrazovek mají funkce, které usnadňují procházení tabulek. Když zajistíte, aby záhlaví tabulek vždy odkazovala na nějakou množinu buněk, bude pro uživatele čteček obrazovek procházení stránky snazší. [Další informace](https://web.dev/th-has-data-cells/)"
+  },
+  "lighthouse-core/audits/accessibility/th-has-data-cells.js | failureTitle": {
+    "message": "Prvky `<th>` a prvky s atributem `[role=\"columnheader\"/\"rowheader\"]` nemají datové buňky, které popisují."
+  },
+  "lighthouse-core/audits/accessibility/th-has-data-cells.js | title": {
+    "message": "Prvky `<th>` a prvky s atributem `[role=\"columnheader\"/\"rowheader\"]` mají datové buňky, které popisují."
+  },
+  "lighthouse-core/audits/accessibility/valid-lang.js | description": {
+    "message": "Pokud je u prvků uveden platný [jazyk BCP 47](https://www.w3.org/International/questions/qa-choosing-language-tags#question) pomůže to zajistit, aby čtečky obrazovek text četly správně. [Další informace](https://web.dev/valid-lang/)"
+  },
+  "lighthouse-core/audits/accessibility/valid-lang.js | failureTitle": {
+    "message": "Atributy `[lang]` nemají platnou hodnotu"
+  },
+  "lighthouse-core/audits/accessibility/valid-lang.js | title": {
+    "message": "Atributy `[lang]` mají platnou hodnotu"
+  },
+  "lighthouse-core/audits/accessibility/video-caption.js | description": {
+    "message": "Když jsou u videa k dispozici titulky, je pro sluchově postižené uživatele snazší využít informace ve videu. [Další informace](https://web.dev/video-caption/)"
+  },
+  "lighthouse-core/audits/accessibility/video-caption.js | failureTitle": {
+    "message": "Prvky `<video>` neobsahují prvek `<track>` s atributem `[kind=\"captions\"]`."
+  },
+  "lighthouse-core/audits/accessibility/video-caption.js | title": {
+    "message": "Prvky `<video>` obsahují prvek `<track>` s atributem `[kind=\"captions\"]`"
+  },
+  "lighthouse-core/audits/accessibility/video-description.js | description": {
+    "message": "Zvukové popisy u videí poskytují relevantní informace, které nejsou patrné z dialogů, jako jsou například výrazy v obličejích a popisy scén. [Další informace](https://web.dev/video-description/)"
+  },
+  "lighthouse-core/audits/accessibility/video-description.js | failureTitle": {
+    "message": "Prvky `<video>` neobsahují prvek `<track>` s atributem `[kind=\"description\"]`."
+  },
+  "lighthouse-core/audits/accessibility/video-description.js | title": {
+    "message": "Prvky `<video>` obsahují prvek `<track>` s atributem `[kind=\"description\"]`"
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | description": {
+    "message": "Pro ideální vzhled po přidání progresivní webové aplikace na plochu v systému iOS definujte atribut `apple-touch-icon`. Musí odkazovat na neprůhledný čtvercový obrázek PNG se stranami o délce 192 px (nebo 180 px). [Další informace](https://developers.google.com/web/fundamentals/design-and-ux/browser-customization/)"
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | failureTitle": {
+    "message": "Neobsahuje platný atribut `apple-touch-icon`"
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | precomposedWarning": {
+    "message": "Atribut `apple-touch-icon-precomposed` je zastaralý. Je preferován atribut `apple-touch-icon`."
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | title": {
+    "message": "Obsahuje platný atribut `apple-touch-icon`"
+  },
+  "lighthouse-core/audits/bootup-time.js | chromeExtensionsWarning": {
+    "message": "Rychlost načítání této stránky byla negativně ovlivněna rozšířeními pro Chrome. Zkuste stránku zkontrolovat v anonymním režimu nebo profilu Chromu bez rozšíření."
+  },
+  "lighthouse-core/audits/bootup-time.js | columnScriptEval": {
+    "message": "Vyhodnocování skriptů"
+  },
+  "lighthouse-core/audits/bootup-time.js | columnScriptParse": {
+    "message": "Analýza skriptů"
+  },
+  "lighthouse-core/audits/bootup-time.js | columnTotal": {
+    "message": "Celková doba využití procesoru"
+  },
+  "lighthouse-core/audits/bootup-time.js | description": {
+    "message": "Pokuste se zkrátit dobu analyzování, kompilování a spouštění JavaScriptu. Mohlo by pomoci odesílat menší soubory JavaScript. [Další informace](https://developers.google.com/web/tools/lighthouse/audits/bootup)"
+  },
+  "lighthouse-core/audits/bootup-time.js | failureTitle": {
+    "message": "Zkraťte dobu provádění JavaScriptu"
+  },
+  "lighthouse-core/audits/bootup-time.js | title": {
+    "message": "Doba provádění JavaScriptu"
+  },
+  "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | description": {
+    "message": "Velké soubory GIF nejsou efektivní k zobrazování animovaného obsahu. Zvažte, zda byste namísto souborů GIF nemohli pro animace použít videa MPEG4/WebM a pro statické obrázky soubory PNG/WebP. Snížíte tak množství přenášených dat. [Další informace](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/replace-animated-gifs-with-video/)"
+  },
+  "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | title": {
+    "message": "Pro animovaný obsah používejte formáty videa"
+  },
+  "lighthouse-core/audits/byte-efficiency/offscreen-images.js | description": {
+    "message": "Zvažte možnost načítat obrázky mimo obrazovku a skryté obrázky „líně“ až po načtení všech kritických zdrojů, abyste zkrátili dobu k dosažení interaktivnosti. [Další informace](https://developers.google.com/web/tools/lighthouse/audits/offscreen-images)"
+  },
+  "lighthouse-core/audits/byte-efficiency/offscreen-images.js | title": {
+    "message": "Odložte načítání obrázků mimo obrazovku"
+  },
+  "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | description": {
+    "message": "První vykreslení stránky blokují zdroje. Zvažte, zda byste kriticky důležité zdroje JavaScript a CSS nemohli poskytovat přímo v kódu a stahování veškerého nekritického JavaScriptu a stylů odložit. [Další informace](https://developers.google.com/web/tools/lighthouse/audits/blocking-resources)"
+  },
+  "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | title": {
+    "message": "Eliminujte zdroje, které blokují vykreslení"
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | description": {
+    "message": "Přenášení velkého množství dat po síti je pro uživatele finančně nákladné a obvykle vede k pomalému načítání. [Další informace](https://developers.google.com/web/tools/lighthouse/audits/network-payloads)"
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | displayValue": {
+    "message": "Celková velikost byla {totalBytes, number, bytes} kB"
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | failureTitle": {
+    "message": "Předejděte přenášení enormního množství dat"
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | title": {
+    "message": "Nepřenáší enormní množství dat"
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-css.js | description": {
+    "message": "Minifikací souborů CSS lze snížit množství přenášených dat. [Další informace](https://developers.google.com/web/tools/lighthouse/audits/minify-css)"
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-css.js | title": {
+    "message": "Minifikujte kód CSS"
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | description": {
+    "message": "Minifikací souborů JavaScript lze snížit množství přenášených dat a zrychlit analýzu skriptů. [Další informace](https://developers.google.com/speed/docs/insights/MinifyResources)"
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | title": {
+    "message": "Minifikujte JavaScript"
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | description": {
+    "message": "Odstraňte ze šablon stylů nepoužívaná pravidla a odložte načítání stylů CSS, které se nepoužívají pro obsah zobrazený bez posouvání, abyste snížili množství nepotřebných dat využívaných síťovou aktivitou. [Další informace](https://developers.google.com/web/tools/lighthouse/audits/unused-css)"
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | title": {
+    "message": "Odstraňte nepoužívané styly CSS"
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-javascript.js | description": {
+    "message": "Odstraněním nepoužívaného JavaScriptu zmenšíte množství přenášených dat."
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-javascript.js | title": {
+    "message": "Odstraňte nepoužívaný JavaScript"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | description": {
+    "message": "Dlouhá platnost mezipaměti může zrychlit opakované návštěvy stránky. [Další informace](https://developers.google.com/web/tools/lighthouse/audits/cache-policy)"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | displayValue": {
+    "message": "{itemCount,plural, =1{Byl nalezen 1 zdroj}few{Byly nalezeny # zdroje}many{Bylo nalezeno # zdroje}other{Bylo nalezeno # zdrojů}}"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | failureTitle": {
+    "message": "Statické podklady zobrazujte s efektivními zásadami pro mezipaměť"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | title": {
+    "message": "Používá u statických podkladů efektivní zásady pro mezipaměť"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | description": {
+    "message": "Optimalizované obrázky se načítají rychle a spotřebovávají méně mobilních dat. [Další informace](https://developers.google.com/web/tools/lighthouse/audits/optimize-images)"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | title": {
+    "message": "Používejte efektivní kódování obrázků"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | description": {
+    "message": "Zobrazujte obrázky s vhodnou velikostí, abyste ušetřili mobilní data a zrychlili načítání. [Další informace](https://developers.google.com/web/tools/lighthouse/audits/oversized-images)"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | title": {
+    "message": "Používejte správnou velikost obrázků"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | description": {
+    "message": "Textové zdroje by se měly odesílat komprimované (gzip, deflate nebo brotli), aby se minimalizovalo množství přenášených dat. [Další informace](https://developers.google.com/web/tools/lighthouse/audits/text-compression)"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | title": {
+    "message": "Zapněte kompresi textu"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | description": {
+    "message": "Formáty obrázků JPEG 2000, JPEG XR a WebP často poskytují lepší kompresi než formáty PNG a JPEG, což znamená rychlejší stahování a menší spotřebu dat. [Další informace](https://developers.google.com/web/tools/lighthouse/audits/webp)"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | title": {
+    "message": "Zobrazujte obrázky ve formátech nové generace"
+  },
+  "lighthouse-core/audits/content-width.js | description": {
+    "message": "Pokud se šířka obsahu aplikace neshoduje se šířkou zobrazované oblasti, aplikace nemusí být optimalizována pro obrazovky mobilních telefonů. [Další informace](https://developers.google.com/web/tools/lighthouse/audits/content-sized-correctly-for-viewport)"
+  },
+  "lighthouse-core/audits/content-width.js | explanation": {
+    "message": "Velikost zobrazované oblasti {innerWidth} px se neshoduje s velikostí okna {outerWidth} px."
+  },
+  "lighthouse-core/audits/content-width.js | failureTitle": {
+    "message": "Obsah nemá správnou velikost pro zobrazovanou oblast"
+  },
+  "lighthouse-core/audits/content-width.js | title": {
+    "message": "Obsah má správnou velikost pro zobrazovanou oblast"
+  },
+  "lighthouse-core/audits/critical-request-chains.js | description": {
+    "message": "Řetězce kritických požadavků níže ukazují, které zdroje se načítají s vysokou prioritou. Zvažte, zda byste načítání stránky nemohli vylepšit tím, že řetězce zkrátíte, zmenšíte zdroje nebo odložíte stahování zdrojů, které nejsou nezbytné. [Další informace](https://developers.google.com/web/tools/lighthouse/audits/critical-request-chains)"
+  },
+  "lighthouse-core/audits/critical-request-chains.js | displayValue": {
+    "message": "{itemCount,plural, =1{Byl nalezen 1 řetězec}few{Byly nalezeny # řetězce}many{Bylo nalezeno # řetězce}other{Bylo nalezeno # řetězců}}"
+  },
+  "lighthouse-core/audits/critical-request-chains.js | title": {
+    "message": "Minimalizujte hloubku kritických požadavků"
+  },
+  "lighthouse-core/audits/deprecations.js | columnDeprecate": {
+    "message": "Ukončení podpory / upozornění"
+  },
+  "lighthouse-core/audits/deprecations.js | columnLine": {
+    "message": "Řádek"
+  },
+  "lighthouse-core/audits/deprecations.js | description": {
+    "message": "Zastaralá rozhraní API budou z prohlížeče v budoucnu odstraněna. [Další informace](https://web.dev/deprecations)"
+  },
+  "lighthouse-core/audits/deprecations.js | displayValue": {
+    "message": "{itemCount,plural, =1{Bylo nalezeno 1 upozornění}few{Byla nalezena # upozornění}many{Bylo nalezeno # upozornění}other{Bylo nalezeno # upozornění}}"
+  },
+  "lighthouse-core/audits/deprecations.js | failureTitle": {
+    "message": "Používá zastaralá rozhraní API"
+  },
+  "lighthouse-core/audits/deprecations.js | title": {
+    "message": "Nepoužívá zastaralá rozhraní API"
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | description": {
+    "message": "Mezipaměť aplikace je zastaralá technologie. [Další informace](https://web.dev/appcache-manifest)"
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | displayValue": {
+    "message": "Nalezeno „{AppCacheManifest}“"
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | failureTitle": {
+    "message": "Používá mezipaměť aplikace"
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | title": {
+    "message": "Nepoužívá mezipaměť aplikace"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | description": {
+    "message": "Zadáním typu dokumentu (DOCTYPE) předejdete přechodu prohlížeče do adaptivního režimu. [Další informace](https://web.dev/doctype)"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationBadDoctype": {
+    "message": "Název typu dokumentu (DOCTYPE) musí být řetězec `html` psaný malými písmeny"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationNoDoctype": {
+    "message": "Dokument musí obsahovat deklaraci typu dokumentu DOCTYPE"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationPublicId": {
+    "message": "V poli publicId je očekáván prázdný řetězec"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationSystemId": {
+    "message": "V poli systemId je očekáván prázdný řetězec"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | failureTitle": {
+    "message": "Na stránce není deklarace typu dokumentu (DOCTYPE) HTML, proto se aktivuje adaptivní režim"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | title": {
+    "message": "Stránka má deklaraci typu dokumentu (DOCTYPE) HTML"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | columnElement": {
+    "message": "Prvek"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | columnStatistic": {
+    "message": "Statistika"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | columnValue": {
+    "message": "Hodnota"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | description": {
+    "message": "Vývojáři prohlížečů doporučují, aby stránky obsahovaly méně než cca. 1 500 prvků modelu DOM. Ideálně by hloubka stromu měla být menší než 32 prvků a každý nadřazený prvek by měl mít méně než 60 podřízených prvků. Velký model DOM může vést k většímu využití paměti, delším [výpočtům stylů](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations) a náročným [přeformátováváním rozvržení](https://developers.google.com/speed/articles/reflow). [Další informace](https://web.dev/dom-size)"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 prvek}few{# prvky}many{# prvku}other{# prvků}}"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | failureTitle": {
+    "message": "Nepoužívejte příliš velký model DOM"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | statisticDOMDepth": {
+    "message": "Maximální hloubka modelu DOM"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | statisticDOMElements": {
+    "message": "Celkový počet prvků DOM"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | statisticDOMWidth": {
+    "message": "Maximální počet podřízených prvků"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | title": {
+    "message": "Nepoužívá příliš velký model DOM"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | columnRel": {
+    "message": "Rel"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | columnTarget": {
+    "message": "Cíl"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | description": {
+    "message": "Ke všem externím odkazům přidejte atribut `rel=\"noopener\"` nebo `rel=\"noreferrer\"`. Stránku tím zrychlíte a předejdete ohrožení zabezpečení. [Další informace](https://web.dev/external-anchors-use-rel-noopener)"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | failureTitle": {
+    "message": "Odkazy na cíle v jiných doménách nejsou bezpečné"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | title": {
+    "message": "Odkazy na cíle v jiných doménách jsou bezpečné"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | warning": {
+    "message": "Nepodařilo se určit cíl ukotvení ({anchorHTML}). Pokud tento prvek nepoužíváte jako hypertextový odkaz, zvažte odstranění atributu target=_blank."
+  },
+  "lighthouse-core/audits/dobetterweb/geolocation-on-start.js | description": {
+    "message": "Vůči webům, které bez kontextu žádají o polohu, mohou být uživatelé nedůvěřiví nebo z nich mohou být zmateni. Zvažte možnost spojit tuto žádost s akcí uživatele. [Další informace](https://web.dev/geolocation-on-start)"
+  },
+  "lighthouse-core/audits/dobetterweb/geolocation-on-start.js | failureTitle": {
+    "message": "Žádá při načtení stránky o oprávnění ke geolokaci"
+  },
+  "lighthouse-core/audits/dobetterweb/geolocation-on-start.js | title": {
+    "message": "Nežádá při načtení stránky o oprávnění ke geolokaci"
+  },
+  "lighthouse-core/audits/dobetterweb/js-libraries.js | columnVersion": {
+    "message": "Verze"
+  },
+  "lighthouse-core/audits/dobetterweb/js-libraries.js | description": {
+    "message": "Všechny frontendové javascriptové knihovny zjištěné na stránce. [Další informace](https://web.dev/js-libraries)"
+  },
+  "lighthouse-core/audits/dobetterweb/js-libraries.js | title": {
+    "message": "Byly zjištěny javascriptové knihovny"
+  },
+  "lighthouse-core/audits/dobetterweb/no-document-write.js | description": {
+    "message": "U uživatelů s pomalým připojením mohou externí skripty vkládané metodou zpozdit `document.write()` načtení stránky o desítky sekund. [Další informace](https://web.dev/no-document-write)"
+  },
+  "lighthouse-core/audits/dobetterweb/no-document-write.js | failureTitle": {
+    "message": "Používá metodu `document.write()`"
+  },
+  "lighthouse-core/audits/dobetterweb/no-document-write.js | title": {
+    "message": "Nepoužívá metodu `document.write()`"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | columnSeverity": {
+    "message": "Největší závažnost"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | columnVersion": {
+    "message": "Verze knihovny"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | columnVuln": {
+    "message": "Počet chyb zabezpečení"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | description": {
+    "message": "Některé skripty třetích stran mohou obsahovat známé chyby zabezpečení, které útočníci mohou snadno odhalit a zneužít. [Další informace](https://web.dev/no-vulnerable-libraries)"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | displayValue": {
+    "message": "{itemCount,plural, =1{Byla zjištěna jedna chyba zabezpečení}few{Byly zjištěny # chyby zabezpečení}many{Bylo zjištěno # chyby zabezpečení}other{Bylo zjištěno # chyb zabezpečení}}"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | failureTitle": {
+    "message": "Zahrnuje frontendové javascriptové knihovny se známými chybami zabezpečení"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | rowSeverityHigh": {
+    "message": "Vysoká"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | rowSeverityLow": {
+    "message": "Nízká"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | rowSeverityMedium": {
+    "message": "Střední"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | title": {
+    "message": "Nepoužívá frontendové javascriptové knihovny se známými chybami zabezpečení"
+  },
+  "lighthouse-core/audits/dobetterweb/notification-on-start.js | description": {
+    "message": "Vůči webům, které bez kontextu žádají o oprávnění odesílat oznámení, mohou být uživatelé nedůvěřiví nebo z nich mohou být zmateni. Zvažte možnost spojit tuto žádost s gesty uživatele. [Další informace](https://web.dev/notification-on-start)"
+  },
+  "lighthouse-core/audits/dobetterweb/notification-on-start.js | failureTitle": {
+    "message": "Žádá při načtení stránky o oprávnění zobrazovat oznámení"
+  },
+  "lighthouse-core/audits/dobetterweb/notification-on-start.js | title": {
+    "message": "Nežádá při načtení stránky o oprávnění zobrazovat oznámení"
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | columnFailingElem": {
+    "message": "Prvky, které neprošly"
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | description": {
+    "message": "Blokování vkládání hesel je v rozporu s dobrými bezpečnostními zásadami. [Další informace](https://web.dev/password-inputs-can-be-pasted-into)"
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | failureTitle": {
+    "message": "Brání uživatelům ve vkládání obsahu do polí pro hesla"
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | title": {
+    "message": "Povoluje uživatelům vkládání obsahu do polí pro hesla"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | columnProtocol": {
+    "message": "Protokol"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | description": {
+    "message": "Protokol HTTP/2 oproti protokolu HTTP/1.1 nabízí mnoho výhod, včetně binárních záhlaví, multiplexingu a přenášení metodou push ze serveru. [Další informace](https://web.dev/uses-http2)"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 požadavek nebyl realizován pomocí protokolu HTTP/2}few{# požadavky nebyly realizovány pomocí protokolu HTTP/2}many{# požadavku nebylo realizováno pomocí protokolu HTTP/2}other{# požadavků nebylo realizováno pomocí protokolu HTTP/2}}"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | failureTitle": {
+    "message": "Nepoužívá pro všechny zdroje protokol HTTP/2"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | title": {
+    "message": "Pro vlastní zdroje používá protokol HTTP/2"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-passive-event-listeners.js | description": {
+    "message": "Zvažte označení posluchačů událostí dotyku a kolečka jako pasivních (`passive`), aby se stránka posouvala plynuleji. [Další informace](https://web.dev/uses-passive-event-listeners)"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-passive-event-listeners.js | failureTitle": {
+    "message": "Nepoužívá pasivní posluchače, které zlepšují posouvání"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-passive-event-listeners.js | title": {
+    "message": "Používá pasivní posluchače, které zlepšují posouvání"
+  },
+  "lighthouse-core/audits/errors-in-console.js | columnDesc": {
+    "message": "Popis"
+  },
+  "lighthouse-core/audits/errors-in-console.js | description": {
+    "message": "Chyby zaprotokolované do konzole ukazují na nevyřešené problémy. Mohou pocházet ze selhání síťových požadavků nebo jiných problémů v prohlížeči. [Další informace](https://web.dev/errors-in-console)"
+  },
+  "lighthouse-core/audits/errors-in-console.js | failureTitle": {
+    "message": "Do konzole byly zaprotokolovány chyby prohlížeče"
+  },
+  "lighthouse-core/audits/errors-in-console.js | title": {
+    "message": "Do konzole nebyly zaprotokolovány žádné chyby prohlížeče"
+  },
+  "lighthouse-core/audits/font-display.js | description": {
+    "message": "Pomocí funkce font-display stylů CSS zajistěte, aby byl text při načítání webfontů viditelný uživatelům. [Další informace](https://developers.google.com/web/updates/2016/02/font-display)"
+  },
+  "lighthouse-core/audits/font-display.js | failureTitle": {
+    "message": "Zajistěte, aby text při načítání webfontů zůstal viditelný"
+  },
+  "lighthouse-core/audits/font-display.js | title": {
+    "message": "Při načítání webfontů zůstává veškerý text viditelný"
+  },
+  "lighthouse-core/audits/font-display.js | undeclaredFontURLWarning": {
+    "message": "Nástroj Lighthouse nemohl automaticky zkontrolovat hodnotu font-display pro následující adresu URL: {fontURL}."
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | columnActual": {
+    "message": "Poměr stran (skutečný)"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | columnDisplayed": {
+    "message": "Poměr stran (zobrazený)"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | description": {
+    "message": "Zobrazované rozměry obrázků by měly odpovídat přirozenému poměru stran. [Další informace](https://web.dev/image-aspect-ratio)"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | failureTitle": {
+    "message": "Zobrazuje obrázky s nesprávným poměrem stran"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | title": {
+    "message": "Zobrazuje obrázky se správným poměrem stran"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | warningCompute": {
+    "message": "Neplatné informace o velikosti obrázku {url}"
+  },
+  "lighthouse-core/audits/installable-manifest.js | description": {
+    "message": "Prohlížeče mohou uživatele aktivně vyzývat, aby si vaši aplikaci přidali na plochu, což může vést k vyšší míře interakce. [Další informace](https://developers.google.com/web/tools/lighthouse/audits/install-prompt)"
+  },
+  "lighthouse-core/audits/installable-manifest.js | failureTitle": {
+    "message": "Manifest webové aplikace nesplňuje instalační požadavky"
+  },
+  "lighthouse-core/audits/installable-manifest.js | title": {
+    "message": "Manifest webové aplikace splňuje instalační požadavky"
+  },
+  "lighthouse-core/audits/is-on-https.js | columnInsecureURL": {
+    "message": "Nezabezpečená adresa URL"
+  },
+  "lighthouse-core/audits/is-on-https.js | description": {
+    "message": "Všechny weby (včetně těch, které nepracují s citlivými daty), by měly být chráněny protokolem HTTPS. Protokol HTTPS útočníkům zabraňuje v manipulaci s komunikací mezi vaší aplikací a uživateli (nebo v jejím pasivním poslechu) a je nezbytný pro HTTP/2 a mnoho nových webových rozhraní API. [Další informace](https://web.dev/is-on-https)"
+  },
+  "lighthouse-core/audits/is-on-https.js | displayValue": {
+    "message": "{itemCount,plural, =1{Byl nalezen 1 nezabezpečený požadavek}few{Byly nalezeny # nezabezpečené požadavky}many{Bylo nalezeno # nezabezpečeného požadavku}other{Bylo nalezeno # nezabezpečených požadavků}}"
+  },
+  "lighthouse-core/audits/is-on-https.js | failureTitle": {
+    "message": "Nepoužívá protokol HTTPS"
+  },
+  "lighthouse-core/audits/is-on-https.js | title": {
+    "message": "Používá protokol HTTPS"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | description": {
+    "message": "Rychlé načítání stránky přes mobilní síť zajišťuje dobrý dojem pro uživatele mobilních zařízení. [Další informace](https://developers.google.com/web/tools/lighthouse/audits/fast-3g)"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | displayValueText": {
+    "message": "Interaktivní za {timeInMs, number, seconds} s"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | displayValueTextWithOverride": {
+    "message": "V simulované mobilní síti je stránka interaktivní za {timeInMs, number, seconds} s"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | explanationLoadSlow": {
+    "message": "Vaše stránka se načítá příliš pomalu a neumožňuje interakci do 10 sekund. Podívejte se na příležitosti a diagnostiku v sekci Výkon, abyste zjistili, jak stránku vylepšit."
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | failureTitle": {
+    "message": "Stránka se v mobilních sítích nenačítá dostatečně rychle"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | title": {
+    "message": "Stránka se v mobilních sítích načítá dostatečně rychle"
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | columnCategory": {
+    "message": "Kategorie"
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | description": {
+    "message": "Pokuste se zkrátit dobu analyzování, kompilování a spouštění JavaScriptu. Mohlo by pomoci odesílat menší soubory JavaScript."
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | failureTitle": {
+    "message": "Minimalizujte práci v hlavním podprocesu"
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | title": {
+    "message": "Minimalizuje práci v hlavním podprocesu"
+  },
+  "lighthouse-core/audits/manual/pwa-cross-browser.js | description": {
+    "message": "Chcete-li zasáhnout co největší počet uživatelů, měly by webové stránky fungovat ve všech nejpoužívanějších prohlížečích. [Další informace](https://developers.google.com/web/progressive-web-apps/checklist#site-works-cross-browser)"
+  },
+  "lighthouse-core/audits/manual/pwa-cross-browser.js | title": {
+    "message": "Web funguje v různých prohlížečích"
+  },
+  "lighthouse-core/audits/manual/pwa-each-page-has-url.js | description": {
+    "message": "Zajistěte, aby na jednotlivé stránky bylo možné přidat přímý odkaz prostřednictvím adresy URL a aby s ohledem na možnost sdílení na sociálních sítích byly adresy URL jedinečné. [Další informace](https://developers.google.com/web/progressive-web-apps/checklist#each-page-has-a-url)"
+  },
+  "lighthouse-core/audits/manual/pwa-each-page-has-url.js | title": {
+    "message": "Každá stránka má adresu URL"
+  },
+  "lighthouse-core/audits/manual/pwa-page-transitions.js | description": {
+    "message": "Přechody by měly být plynulé i v pomalé síti, zvyšuje se tím dojem výkonnosti. [Další informace](https://developers.google.com/web/progressive-web-apps/checklist#page-transitions-dont-feel-like-they-block-on-the-network)"
+  },
+  "lighthouse-core/audits/manual/pwa-page-transitions.js | title": {
+    "message": "Přechody na jiné stránky nepůsobí zabržděně"
+  },
+  "lighthouse-core/audits/metrics/estimated-input-latency.js | description": {
+    "message": "Odhadovaná latence vstupu udává, jak dlouho (v milisekundách) bude aplikaci během nejvytíženějších pěti sekund při načítání stránky odhadem trvat reakce na uživatelský vstup. Pokud je latence větší než 50 ms, mohou uživatelé chování aplikace vnímat jako přerušované. [Další informace](https://developers.google.com/web/tools/lighthouse/audits/estimated-input-latency)"
+  },
+  "lighthouse-core/audits/metrics/estimated-input-latency.js | title": {
+    "message": "Odhadovaná latence vstupu"
+  },
+  "lighthouse-core/audits/metrics/first-contentful-paint.js | description": {
+    "message": "První vykreslení obsahu je okamžik vykreslení prvního textu nebo obrázku. [Další informace](https://developers.google.com/web/tools/lighthouse/audits/first-contentful-paint)"
+  },
+  "lighthouse-core/audits/metrics/first-contentful-paint.js | title": {
+    "message": "První vykreslení obsahu"
+  },
+  "lighthouse-core/audits/metrics/first-cpu-idle.js | description": {
+    "message": "První nečinnost procesoru udává čas, kdy je hlavní podproces stránky dostatečně nečinný na to, aby bylo možné zpracovat vstup. [Další informace](https://developers.google.com/web/tools/lighthouse/audits/first-interactive)"
+  },
+  "lighthouse-core/audits/metrics/first-cpu-idle.js | title": {
+    "message": "První nečinnost procesoru"
+  },
+  "lighthouse-core/audits/metrics/first-meaningful-paint.js | description": {
+    "message": "První smysluplné vykreslení udává, kdy začne být viditelný primární obsah stránky. [Další informace](https://developers.google.com/web/tools/lighthouse/audits/first-meaningful-paint)"
+  },
+  "lighthouse-core/audits/metrics/first-meaningful-paint.js | title": {
+    "message": "První smysluplné vykreslení"
+  },
+  "lighthouse-core/audits/metrics/interactive.js | description": {
+    "message": "Doba do interaktivity udává, jak dlouho trvá, než stránka začne být plně interaktivní. [Další informace](https://developers.google.com/web/tools/lighthouse/audits/consistently-interactive)"
+  },
+  "lighthouse-core/audits/metrics/interactive.js | title": {
+    "message": "Doba do interaktivity"
+  },
+  "lighthouse-core/audits/metrics/max-potential-fid.js | description": {
+    "message": "Maximální potenciální prodleva prvního vstupu, kterou by uživatelé mohli pocítit, je trvání nejdelší úlohy (v milisekundách). [Další informace](https://developers.google.com/web/updates/2018/05/first-input-delay)"
+  },
+  "lighthouse-core/audits/metrics/max-potential-fid.js | title": {
+    "message": "Maximální potenciální prodleva prvního vstupu"
+  },
+  "lighthouse-core/audits/metrics/speed-index.js | description": {
+    "message": "Index rychlosti ukazuje, jak rychle se viditelně vyplní obsah stránky. [Další informace](https://developers.google.com/web/tools/lighthouse/audits/speed-index)"
+  },
+  "lighthouse-core/audits/metrics/speed-index.js | title": {
+    "message": "Index rychlosti"
+  },
+  "lighthouse-core/audits/metrics/total-blocking-time.js | description": {
+    "message": "Součet všech dob (uvedený v milisekundách) mezi prvním vykreslením obsahu a dobou do interaktivity, u nichž délka úlohy překročila 50 ms."
+  },
+  "lighthouse-core/audits/metrics/total-blocking-time.js | title": {
+    "message": "Celková doba blokování"
+  },
+  "lighthouse-core/audits/network-rtt.js | description": {
+    "message": "Na výkon má velký vliv doba odezvy sítě. Pokud je doba odezvy připojení ke zdroji vysoká, značí to, že by se výkon mohl zlepšit při použití serverů méně vzdálených od uživatele. [Další informace](https://hpbn.co/primer-on-latency-and-bandwidth/)"
+  },
+  "lighthouse-core/audits/network-rtt.js | title": {
+    "message": "Doby odezvy sítě"
+  },
+  "lighthouse-core/audits/network-server-latency.js | description": {
+    "message": "Na výkon webu může mít dopad latence serverů. Vysoká latence serveru značí, že je server přetížen nebo že backend není dostatečně výkonný. [Další informace](https://hpbn.co/primer-on-web-performance/#analyzing-the-resource-waterfall)"
+  },
+  "lighthouse-core/audits/network-server-latency.js | title": {
+    "message": "Latence backendu na serveru"
+  },
+  "lighthouse-core/audits/offline-start-url.js | description": {
+    "message": "Soubor service worker vaší webové aplikaci umožňuje, aby byla spolehlivá i za nepředvídatelného stavu sítě. [Další informace](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)"
+  },
+  "lighthouse-core/audits/offline-start-url.js | failureTitle": {
+    "message": "V režimu offline `start_url` nereaguje stavovým kódem 200"
+  },
+  "lighthouse-core/audits/offline-start-url.js | title": {
+    "message": "V režimu offline `start_url` reaguje stavovým kódem 200"
+  },
+  "lighthouse-core/audits/offline-start-url.js | warningCantStart": {
+    "message": "Nástroji Lighthouse se v manifestu nepodařilo přečíst atribut `start_url`. Proto se předpokládá, že adresou URL dokumentu je `start_url`. Chybová zpráva: {manifestWarning}"
+  },
+  "lighthouse-core/audits/performance-budget.js | columnOverBudget": {
+    "message": "Nad rozpočet"
+  },
+  "lighthouse-core/audits/performance-budget.js | description": {
+    "message": "Udržujte množství a velikost síťových požadavků pod cílovými hodnotami, které udává poskytnutý rozpočet výkonu. [Další informace](https://developers.google.com/web/tools/lighthouse/audits/budgets)"
+  },
+  "lighthouse-core/audits/performance-budget.js | requestCountOverBudget": {
+    "message": "{count,plural, =1{1 požadavek}few{# požadavky}many{# požadavku}other{# požadavků}}"
+  },
+  "lighthouse-core/audits/performance-budget.js | title": {
+    "message": "Rozpočete výkonu"
+  },
+  "lighthouse-core/audits/redirects-http.js | description": {
+    "message": "Pokud jste protokol HTTPS už nastavili, nezapomeňte veškerý provoz přes protokol HTTP přesměrovat na HTTPS, aby všichni vaši uživatelé měli k dispozici funkce zabezpečeného webu. [Další informace](https://developers.google.com/web/tools/lighthouse/audits/http-redirects-to-https)"
+  },
+  "lighthouse-core/audits/redirects-http.js | failureTitle": {
+    "message": "Nepřesměrovává provoz přes protokol HTTP na HTTPS"
+  },
+  "lighthouse-core/audits/redirects-http.js | title": {
+    "message": "Přesměrovává provoz přes protokol HTTP na HTTPS"
+  },
+  "lighthouse-core/audits/redirects.js | description": {
+    "message": "Přesměrování způsobují další prodlevy před načtením stránky. [Další informace](https://developers.google.com/web/tools/lighthouse/audits/redirects)"
+  },
+  "lighthouse-core/audits/redirects.js | title": {
+    "message": "Nepoužívejte několik přesměrování stránky"
+  },
+  "lighthouse-core/audits/resource-summary.js | description": {
+    "message": "Chcete-li nastavit rozpočet pro množství a velikost zdrojů na stránce, přidejte soubor budget.json. [Další informace](https://developers.google.com/web/tools/lighthouse/audits/budgets)"
+  },
+  "lighthouse-core/audits/resource-summary.js | displayValue": {
+    "message": "{requestCount,plural, =1{1 požadavek • {byteCount, number, bytes} kB}few{# požadavky • {byteCount, number, bytes} kB}many{# požadavku • {byteCount, number, bytes} kB}other{# požadavků • {byteCount, number, bytes} kB}}"
+  },
+  "lighthouse-core/audits/resource-summary.js | title": {
+    "message": "Používejte málo požadavků a malé velikosti přenosů"
+  },
+  "lighthouse-core/audits/seo/canonical.js | description": {
+    "message": "Odkazy na kanonické verze slouží jako návrhy, které adresy URL se mají zobrazovat ve výsledcích vyhledávání. [Další informace](https://web.dev/canonical)"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationConflict": {
+    "message": "Několik konfliktních adres URL ({urlList})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationDifferentDomain": {
+    "message": "Odkazuje na jinou doménu ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationInvalid": {
+    "message": "Neplatná adresa URL ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationPointsElsewhere": {
+    "message": "Odkazuje na jiné umístění `hreflang` ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationRelative": {
+    "message": "Relativní adresa URL ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationRoot": {
+    "message": "Neodkazuje na ekvivalentní obsahovou stránku, ale na kořenovou adresu URL domény (domovskou stránku)"
+  },
+  "lighthouse-core/audits/seo/canonical.js | failureTitle": {
+    "message": "Dokument nemá platný atribut `rel=canonical`"
+  },
+  "lighthouse-core/audits/seo/canonical.js | title": {
+    "message": "Dokument má platný odkaz `rel=canonical`"
+  },
+  "lighthouse-core/audits/seo/font-size.js | description": {
+    "message": "Písma menší než 12 px jsou příliš malá na to, aby byla čitelná. Návštěvníci na mobilních zařízeních je kvůli čtení musí zvětšit roztažením prstů. Snažte se, aby více než 60 % textu na stránce mělo velikosti alespoň 12 px. [Další informace](https://web.dev/font-size)"
+  },
+  "lighthouse-core/audits/seo/font-size.js | displayValue": {
+    "message": "Podíl čitelného textu: {decimalProportion, number, extendedPercent}"
+  },
+  "lighthouse-core/audits/seo/font-size.js | explanationViewport": {
+    "message": "Text není čitelný, protože není k dispozici metaznačka viewport optimalizovaná pro obrazovky mobilních zařízení."
+  },
+  "lighthouse-core/audits/seo/font-size.js | explanationWithDisclaimer": {
+    "message": "Podíl příliš malého textu: {decimalProportion, number, extendedPercent} (posuzovaný vzorek: {decimalProportionVisited, number, extendedPercent})."
+  },
+  "lighthouse-core/audits/seo/font-size.js | failureTitle": {
+    "message": "V dokumentu nejsou použity čitelné velikosti písma"
+  },
+  "lighthouse-core/audits/seo/font-size.js | title": {
+    "message": "V dokumentu jsou použity čitelné velikosti písma"
+  },
+  "lighthouse-core/audits/seo/hreflang.js | description": {
+    "message": "Odkazy hreflang sdělují vyhledávačům, kterou verzi stránky mají uvádět ve výsledcích vyhledávání pro určitý jazyk či oblast. [Další informace](https://web.dev/hreflang)"
+  },
+  "lighthouse-core/audits/seo/hreflang.js | failureTitle": {
+    "message": "Dokument nemá platný atribut `hreflang`"
+  },
+  "lighthouse-core/audits/seo/hreflang.js | title": {
+    "message": "Dokument má platný atribut `hreflang`"
+  },
+  "lighthouse-core/audits/seo/http-status-code.js | description": {
+    "message": "Stránky s neúspěšnými stavovými kódy HTTP nemusejí být správně indexovány. [Další informace](https://web.dev/http-status-code)"
+  },
+  "lighthouse-core/audits/seo/http-status-code.js | failureTitle": {
+    "message": "Stránka má neúspěšný stavový kód HTTP"
+  },
+  "lighthouse-core/audits/seo/http-status-code.js | title": {
+    "message": "Stránka má úspěšný stavový kód HTTP"
+  },
+  "lighthouse-core/audits/seo/is-crawlable.js | description": {
+    "message": "Pokud vyhledávače nemají oprávnění procházet vaše stránky, nemohou je zahrnout do výsledků vyhledávání. [Další informace](https://web.dev/is-crawable)"
+  },
+  "lighthouse-core/audits/seo/is-crawlable.js | failureTitle": {
+    "message": "Indexování stránky je blokováno"
+  },
+  "lighthouse-core/audits/seo/is-crawlable.js | title": {
+    "message": "Indexování stránky není blokováno"
+  },
+  "lighthouse-core/audits/seo/link-text.js | description": {
+    "message": "Popisný text odkazů pomáhá vyhledávačům porozumět vašemu obsahu. [Další informace](https://web.dev/link-text)"
+  },
+  "lighthouse-core/audits/seo/link-text.js | displayValue": {
+    "message": "{itemCount,plural, =1{Byl nalezen 1 odkaz}few{Byly nalezeny # odkazy}many{Bylo nalezeno # odkazu}other{Bylo nalezeno # odkazů}}"
+  },
+  "lighthouse-core/audits/seo/link-text.js | failureTitle": {
+    "message": "Odkazy nemají popisný text"
+  },
+  "lighthouse-core/audits/seo/link-text.js | title": {
+    "message": "Odkazy mají popisný text"
+  },
+  "lighthouse-core/audits/seo/manual/structured-data.js | description": {
+    "message": "Chcete-li ověřit strukturovaná data, spusťte [nástroj na testování strukturovaných dat](https://search.google.com/structured-data/testing-tool/) a [nástroj Structured Data Linter](http://linter.structured-data.org/). [Další informace](https://web.dev/structured-data)"
+  },
+  "lighthouse-core/audits/seo/manual/structured-data.js | title": {
+    "message": "Strukturovaná data jsou platná"
+  },
+  "lighthouse-core/audits/seo/meta-description.js | description": {
+    "message": "Obsah metaznaček „description“ může být zahrnut ve výsledcích vyhledávání jako stručný souhrn obsahu stránky. [Další informace](https://web.dev/meta-description)"
+  },
+  "lighthouse-core/audits/seo/meta-description.js | explanation": {
+    "message": "Popisný text je prázdný."
+  },
+  "lighthouse-core/audits/seo/meta-description.js | failureTitle": {
+    "message": "Dokument nemá metaznačku „description“"
+  },
+  "lighthouse-core/audits/seo/meta-description.js | title": {
+    "message": "Dokument má metaznačku „description“"
+  },
+  "lighthouse-core/audits/seo/plugins.js | description": {
+    "message": "Vyhledávače obsah pluginů nedokážou indexovat a na mnoha zařízeních jsou pluginy zakázány nebo nejsou podporovány. [Další informace](https://web.dev/plugins)"
+  },
+  "lighthouse-core/audits/seo/plugins.js | failureTitle": {
+    "message": "Dokument používá pluginy"
+  },
+  "lighthouse-core/audits/seo/plugins.js | title": {
+    "message": "V dokumentu nejsou použity pluginy"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | description": {
+    "message": "Pokud soubor robots.txt nemá správný formát, prohledávače nemusejí být schopné zjistit, jak váš web mají procházet nebo indexovat. [Další informace](https://web.dev/robots-txt)"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | displayValueHttpBadCode": {
+    "message": "Na žádost o soubor robots.txt byl vrácen tento stav HTTP: {statusCode}"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | displayValueValidationError": {
+    "message": "{itemCount,plural, =1{Byla nalezena 1 chyba}few{Byly nalezeny # chyby}many{Bylo nalezeno # chyby}other{Bylo nalezeno # chyb}}"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | explanation": {
+    "message": "Nástroji Lighthouse se nepodařilo načíst soubor robots.txt."
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | failureTitle": {
+    "message": "Soubor robots.txt není platný"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | title": {
+    "message": "Soubor robots.txt je platný"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | description": {
+    "message": "Interaktivní prvky, jako jsou tlačítka a odkazy, by měly být dostatečně velké (48 × 48 px) a mělo by okolo nich být dost místa na to, aby se na ně dalo dostatečně snadno klepnout bez přesahování do dalších prvků. [Další informace](https://web.dev/tap-targets)"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | displayValue": {
+    "message": "Podíl dostatečně velkých dotykových prvků: {decimalProportion, number, percent}"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | explanationViewportMetaNotOptimized": {
+    "message": "Dotykové prvky jsou příliš malé, protože není k dispozici metaznačka viewport optimalizovaná pro obrazovky mobilních zařízení."
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | failureTitle": {
+    "message": "Dotykové prvky nejsou dostatečně velké"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | overlappingTargetHeader": {
+    "message": "Překrývající se cíl"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | tapTargetHeader": {
+    "message": "Dotykový prvek"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | title": {
+    "message": "Dotykové prvky jsou dostatečně velké"
+  },
+  "lighthouse-core/audits/service-worker.js | description": {
+    "message": "Service worker je technologie, která aplikaci umožňuje využívat mnoho funkcí progresivní webové aplikace, jako je režim offline, přidání na plochu nebo oznámení push. [Další informace](https://developers.google.com/web/tools/lighthouse/audits/registered-service-worker)"
+  },
+  "lighthouse-core/audits/service-worker.js | explanationBadManifest": {
+    "message": "Tuto stránku ovládá soubor service worker, nebyl ale nalezen atribut `start_url`, protože se manifest nepodařilo analyzovat jako platný soubor JSON"
+  },
+  "lighthouse-core/audits/service-worker.js | explanationBadStartUrl": {
+    "message": "Tuto stránku ovládá soubor service worker, ale atribut `start_url` ({startUrl}) pod soubor service worker ({scopeUrl}) nespadá."
+  },
+  "lighthouse-core/audits/service-worker.js | explanationNoManifest": {
+    "message": "Tuto stránku ovládá soubor service worker, ale atribut `start_url` nebyl nalezen, protože nebyl načten žádný manifest."
+  },
+  "lighthouse-core/audits/service-worker.js | explanationOutOfScope": {
+    "message": "Tento zdroj má jeden či více souborů service worker, ale stránka ({pageUrl}) pod něj nespadá."
+  },
+  "lighthouse-core/audits/service-worker.js | failureTitle": {
+    "message": "Neregistruje soubor service worker, který ovládá stránku a `start_url`"
+  },
+  "lighthouse-core/audits/service-worker.js | title": {
+    "message": "Registruje soubor service worker, který ovládá stránku a atribut `start_url`"
+  },
+  "lighthouse-core/audits/splash-screen.js | description": {
+    "message": "Stylová úvodní obrazovka zajišťuje kvalitní uživatelský dojem při spuštění aplikace z plochy. [Další informace](https://developers.google.com/web/tools/lighthouse/audits/custom-splash-screen)"
+  },
+  "lighthouse-core/audits/splash-screen.js | failureTitle": {
+    "message": "Není nakonfigurována vlastní úvodní obrazovka"
+  },
+  "lighthouse-core/audits/splash-screen.js | title": {
+    "message": "Je nakonfigurována vlastní úvodní obrazovka"
+  },
+  "lighthouse-core/audits/themed-omnibox.js | description": {
+    "message": "Motiv adresního řádku prohlížeče lze přizpůsobit motivu vašeho webu. [Další informace](https://developers.google.com/web/tools/lighthouse/audits/address-bar)"
+  },
+  "lighthouse-core/audits/themed-omnibox.js | failureTitle": {
+    "message": "Nenastavuje barvu motivu adresního řádku."
+  },
+  "lighthouse-core/audits/themed-omnibox.js | title": {
+    "message": "Nastavuje barvu motivu adresního řádku."
+  },
+  "lighthouse-core/audits/third-party-summary.js | columnBlockingTime": {
+    "message": "Doba blokování hlavního podprocesu"
+  },
+  "lighthouse-core/audits/third-party-summary.js | columnThirdParty": {
+    "message": "Třetí strana"
+  },
+  "lighthouse-core/audits/third-party-summary.js | description": {
+    "message": "Kód třetích stran může mít významný dopad na rychlost načítání. Omezte počet redundantních externích poskytovatelů a snažte se kód třetích stran načítat až poté, co se dokončí načtení vaší stránky. [Další informace](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/loading-third-party-javascript/)"
+  },
+  "lighthouse-core/audits/third-party-summary.js | displayValue": {
+    "message": "Kód třetí strany na {timeInMs, number, milliseconds} ms zablokoval hlavní podproces"
+  },
+  "lighthouse-core/audits/third-party-summary.js | failureTitle": {
+    "message": "Snižte vliv kódu třetích stran"
+  },
+  "lighthouse-core/audits/third-party-summary.js | title": {
+    "message": "Použití zdrojů od třetích stran"
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | description": {
+    "message": "Doba do načtení prvního bajtu udává, jak dlouho vašemu serveru trvá, než odešle odpověď. [Další informace](https://developers.google.com/web/tools/lighthouse/audits/ttfb)"
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | displayValue": {
+    "message": "Hlavní dokument trval {timeInMs, number, milliseconds} ms"
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | failureTitle": {
+    "message": "Zkraťte doby odezvy serverů (TTFB)"
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | title": {
+    "message": "Doby odezvy serveru jsou krátké (TTFB)"
+  },
+  "lighthouse-core/audits/user-timings.js | columnDuration": {
+    "message": "Trvání"
+  },
+  "lighthouse-core/audits/user-timings.js | columnStartTime": {
+    "message": "Čas zahájení"
+  },
+  "lighthouse-core/audits/user-timings.js | columnType": {
+    "message": "Typ"
+  },
+  "lighthouse-core/audits/user-timings.js | description": {
+    "message": "Zkuste v aplikaci pomocí rozhraní User Timing API implementovat měření reálného výkonu při událostech zásadních pro uživatelský dojem. [Další informace](https://developers.google.com/web/tools/lighthouse/audits/user-timing)"
+  },
+  "lighthouse-core/audits/user-timings.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 časování uživatelů}few{# časování uživatelů}many{# časování uživatelů}other{# časování uživatelů}}"
+  },
+  "lighthouse-core/audits/user-timings.js | title": {
+    "message": "Hodnoty časování uživatelů"
+  },
+  "lighthouse-core/audits/uses-rel-preconnect.js | crossoriginWarning": {
+    "message": "Byl nalezen prvek <link> k předběžnému připojení ke zdroji {securityOrigin}, ale prohlížeč jej nepoužil. Zkontrolujte, zda správně používáte atribut `crossorigin`."
+  },
+  "lighthouse-core/audits/uses-rel-preconnect.js | description": {
+    "message": "Zvažte přidání signálů `preconnect` nebo `dns-prefetch`, aby bylo možné včas se připojit k důležitým zdrojům třetích stran. [Další informace](https://developers.google.com/web/fundamentals/performance/resource-prioritization#preconnect)"
+  },
+  "lighthouse-core/audits/uses-rel-preconnect.js | title": {
+    "message": "K potřebným zdrojům se připojujte předem"
+  },
+  "lighthouse-core/audits/uses-rel-preload.js | crossoriginWarning": {
+    "message": "Byl nalezen prvek <link> k předběžnému načtení adresy {preloadURL}, ale prohlížeč jej nepoužil. Zkontrolujte, zda správně používáte atribut `crossorigin`."
+  },
+  "lighthouse-core/audits/uses-rel-preload.js | description": {
+    "message": "Zvažte použití značky `<link rel=preload>` k prioritnímu načtení zdrojů, o které se nyní žádá později během načítání stránky. [Další informace](https://developers.google.com/web/tools/lighthouse/audits/preload)"
+  },
+  "lighthouse-core/audits/uses-rel-preload.js | title": {
+    "message": "Klíčové požadavky načítejte předběžně"
+  },
+  "lighthouse-core/audits/viewport.js | description": {
+    "message": "Chcete-li aplikaci optimalizovat pro obrazovky mobilních zařízení, přidejte značku `<meta name=\"viewport\">`. [Další informace](https://developers.google.com/web/tools/lighthouse/audits/has-viewport-meta-tag)"
+  },
+  "lighthouse-core/audits/viewport.js | explanationNoTag": {
+    "message": "Nebyla nalezena značka `<meta name=\"viewport\">`"
+  },
+  "lighthouse-core/audits/viewport.js | failureTitle": {
+    "message": "Neobsahuje značku `<meta name=\"viewport\">` s atributem `width` nebo `initial-scale`"
+  },
+  "lighthouse-core/audits/viewport.js | title": {
+    "message": "Obsahuje značku `<meta name=\"viewport\">` s atributem `width` nebo `initial-scale`"
+  },
+  "lighthouse-core/audits/without-javascript.js | description": {
+    "message": "Vaše aplikace by měla zobrazovat nějaký obsah, i v případě, že bude JavaScript zakázaný, i kdyby to mělo být jen upozornění pro uživatele, že k použití aplikace je potřeba JavaScript. [Další informace](https://developers.google.com/web/tools/lighthouse/audits/no-js)"
+  },
+  "lighthouse-core/audits/without-javascript.js | explanation": {
+    "message": "Pokud nejsou k dispozici skripty stránky, v hlavní části stránky by se měl vykreslit nějaký obsah."
+  },
+  "lighthouse-core/audits/without-javascript.js | failureTitle": {
+    "message": "Neposkytuje záložní obsah, když není k dispozici JavaScript"
+  },
+  "lighthouse-core/audits/without-javascript.js | title": {
+    "message": "Obsahuje určitý obsah, když není k dispozici JavaScript"
+  },
+  "lighthouse-core/audits/works-offline.js | description": {
+    "message": "Pokud vytváříte progresivní webovou aplikaci, doporučujeme použít soubor service worker, aby aplikace fungovala i offline. [Další informace](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)"
+  },
+  "lighthouse-core/audits/works-offline.js | failureTitle": {
+    "message": "Stávající stránka nereaguje stavovým kódem 200, když je offline"
+  },
+  "lighthouse-core/audits/works-offline.js | title": {
+    "message": "Stávající stránka reaguje stavovým kódem 200, když je offline"
+  },
+  "lighthouse-core/audits/works-offline.js | warningNoLoad": {
+    "message": "Stránka se v režimu offline nemusí načíst, protože testovací adresa URL ({requested}) byla přesměrována na adresu „{final}“. Zkuste druhou adresu otestovat přímo."
+  },
+  "lighthouse-core/config/default-config.js | a11yAriaGroupDescription": {
+    "message": "Toto jsou příležitosti ke zlepšení používání specifikace ARIA ve vaší aplikaci, které mohou zlepšit prostředí pro uživatele asistenčních technologií, jako jsou čtečky obrazovek."
+  },
+  "lighthouse-core/config/default-config.js | a11yAriaGroupTitle": {
+    "message": "ARIA"
+  },
+  "lighthouse-core/config/default-config.js | a11yAudioVideoGroupDescription": {
+    "message": "Toto jsou příležitosti k poskytnutí alternativního obsahu pro zvuky a videa. Mohou zlepšit prostředí pro sluchově nebo zrakově postižené uživatele."
+  },
+  "lighthouse-core/config/default-config.js | a11yAudioVideoGroupTitle": {
+    "message": "Zvuk a video"
+  },
+  "lighthouse-core/config/default-config.js | a11yBestPracticesGroupDescription": {
+    "message": "Tyto položky upozorňují na běžné doporučené postupy v oblasti přístupnosti."
+  },
+  "lighthouse-core/config/default-config.js | a11yBestPracticesGroupTitle": {
+    "message": "Rady a tipy pro odpovídání na recenze"
+  },
+  "lighthouse-core/config/default-config.js | a11yCategoryDescription": {
+    "message": "Tyto kontroly odhalují příležitosti ke [zlepšení přístupnosti webové aplikace](https://developers.google.com/web/fundamentals/accessibility). Automaticky lze odhalit jen část problémů s přístupností, proto obsah doporučujeme otestovat i ručně."
+  },
+  "lighthouse-core/config/default-config.js | a11yCategoryManualDescription": {
+    "message": "Tyto položky se týkají oblastí, které v současné době automatické testování nedokáže pokrýt. Další informace najdete v průvodci [provedením kontroly přístupnosti](https://developers.google.com/web/fundamentals/accessibility/how-to-review)."
+  },
+  "lighthouse-core/config/default-config.js | a11yCategoryTitle": {
+    "message": "Přístupnost"
+  },
+  "lighthouse-core/config/default-config.js | a11yColorContrastGroupDescription": {
+    "message": "Toto jsou příležitosti ke zlepšení čitelnosti obsahu."
+  },
+  "lighthouse-core/config/default-config.js | a11yColorContrastGroupTitle": {
+    "message": "Kontrast"
+  },
+  "lighthouse-core/config/default-config.js | a11yLanguageGroupDescription": {
+    "message": "Toto jsou příležitosti ke zlepšení interpretace vašeho obsahu u uživatelů různých jazyků."
+  },
+  "lighthouse-core/config/default-config.js | a11yLanguageGroupTitle": {
+    "message": "Internacionalizace a lokalizace"
+  },
+  "lighthouse-core/config/default-config.js | a11yNamesLabelsGroupDescription": {
+    "message": "Toto jsou příležitosti ke zlepšení sémantiky ovládacích prvků v aplikaci. Mohou zlepšit prostředí pro uživatele asistenčních technologií, jako jsou například čtečky obrazovek."
+  },
+  "lighthouse-core/config/default-config.js | a11yNamesLabelsGroupTitle": {
+    "message": "Názvy a štítky"
+  },
+  "lighthouse-core/config/default-config.js | a11yNavigationGroupDescription": {
+    "message": "Toto jsou příležitosti ke zlepšení navigace pomocí klávesnice v aplikaci."
+  },
+  "lighthouse-core/config/default-config.js | a11yNavigationGroupTitle": {
+    "message": "Navigace"
+  },
+  "lighthouse-core/config/default-config.js | a11yTablesListsVideoGroupDescription": {
+    "message": "Toto jsou příležitosti ke zlepšení dojmu při čtení tabulek nebo seznamů pomocí asistenčních technologií, jako je čtečka obrazovky."
+  },
+  "lighthouse-core/config/default-config.js | a11yTablesListsVideoGroupTitle": {
+    "message": "Tabulky a seznamy"
+  },
+  "lighthouse-core/config/default-config.js | bestPracticesCategoryTitle": {
+    "message": "Doporučené postupy"
+  },
+  "lighthouse-core/config/default-config.js | budgetsGroupDescription": {
+    "message": "Výkonové rozpočty nastavují standard pro výkon vašeho webu."
+  },
+  "lighthouse-core/config/default-config.js | budgetsGroupTitle": {
+    "message": "Rozpočty"
+  },
+  "lighthouse-core/config/default-config.js | diagnosticsGroupDescription": {
+    "message": "Další informace o výkonu vaší aplikace. Tyto hodnoty nemají [přímý vliv](https://github.com/GoogleChrome/lighthouse/blob/d2ec9ffbb21de9ad1a0f86ed24575eda32c796f0/docs/scoring.md#how-are-the-scores-weighted) na skóre výkonu."
+  },
+  "lighthouse-core/config/default-config.js | diagnosticsGroupTitle": {
+    "message": "Diagnostika"
+  },
+  "lighthouse-core/config/default-config.js | firstPaintImprovementsGroupDescription": {
+    "message": "Nejkritičtějším aspektem výkonu je rychlost vykreslení pixelů na obrazovce. Klíčové metriky: První vykreslení obsahu, První smysluplné vykreslení"
+  },
+  "lighthouse-core/config/default-config.js | firstPaintImprovementsGroupTitle": {
+    "message": "Vylepšení prvního vykreslení"
+  },
+  "lighthouse-core/config/default-config.js | loadOpportunitiesGroupDescription": {
+    "message": "Tyto návrhy vám mohou pomoci zrychlit načítání stránky. Na skóre výkonu nemají [přímý vliv](https://github.com/GoogleChrome/lighthouse/blob/d2ec9ffbb21de9ad1a0f86ed24575eda32c796f0/docs/scoring.md#how-are-the-scores-weighted)."
+  },
+  "lighthouse-core/config/default-config.js | loadOpportunitiesGroupTitle": {
+    "message": "Příležitosti"
+  },
+  "lighthouse-core/config/default-config.js | metricGroupTitle": {
+    "message": "Metriky"
+  },
+  "lighthouse-core/config/default-config.js | overallImprovementsGroupDescription": {
+    "message": "Vylepšete celkové chování při načítání, aby byla stránka co nejdříve responzivní a připravena k používání. Klíčové metriky: Doba dosažení interaktivity, Index rychlosti"
+  },
+  "lighthouse-core/config/default-config.js | overallImprovementsGroupTitle": {
+    "message": "Celková vylepšení"
+  },
+  "lighthouse-core/config/default-config.js | performanceCategoryTitle": {
+    "message": "Výkon"
+  },
+  "lighthouse-core/config/default-config.js | pwaCategoryDescription": {
+    "message": "Tyto kontroly vyhodnocují aspekty progresivní webové aplikace. [Další informace](https://developers.google.com/web/progressive-web-apps/checklist)"
+  },
+  "lighthouse-core/config/default-config.js | pwaCategoryManualDescription": {
+    "message": "Tyto kontroly vyžaduje základní [kontrolní seznam aplikace PWA](https://developers.google.com/web/progressive-web-apps/checklist), ale nástroj Lighthouse je automaticky neprovádí. Na vaše skóre vliv nemají, ale je důležité, abyste je ověřili ručně."
+  },
+  "lighthouse-core/config/default-config.js | pwaCategoryTitle": {
+    "message": "Progresivní webová aplikace"
+  },
+  "lighthouse-core/config/default-config.js | pwaFastReliableGroupTitle": {
+    "message": "Rychlé a spolehlivé"
+  },
+  "lighthouse-core/config/default-config.js | pwaInstallableGroupTitle": {
+    "message": "Instalovatelné"
+  },
+  "lighthouse-core/config/default-config.js | pwaOptimizedGroupTitle": {
+    "message": "Optimalizováno pro PWA"
+  },
+  "lighthouse-core/config/default-config.js | seoCategoryDescription": {
+    "message": "Tyto kontroly zajišťují, aby vaše stránka byla optimalizovaná pro hodnocení výsledků ve vyhledávačích. Na hodnocení ve vyhledávání mohou mít vliv i další faktory, které nástroj Lighthouse nekontroluje. [Další informace](https://support.google.com/webmasters/answer/35769)"
+  },
+  "lighthouse-core/config/default-config.js | seoCategoryManualDescription": {
+    "message": "Chcete-li zkontrolovat dodržování dalších doporučených postupů pro SEO, spusťte pro svůj web tyto další validátory."
+  },
+  "lighthouse-core/config/default-config.js | seoCategoryTitle": {
+    "message": "SEO"
+  },
+  "lighthouse-core/config/default-config.js | seoContentGroupDescription": {
+    "message": "Naformátujte soubor HTML způsobem, který umožní prohledávačům lépe porozumět obsahu vaší aplikace."
+  },
+  "lighthouse-core/config/default-config.js | seoContentGroupTitle": {
+    "message": "Doporučené postupy pro obsah"
+  },
+  "lighthouse-core/config/default-config.js | seoCrawlingGroupDescription": {
+    "message": "Aby se vaše aplikace mohla zobrazovat ve výsledcích vyhledávání, prohledávače k ní musí mít přístup."
+  },
+  "lighthouse-core/config/default-config.js | seoCrawlingGroupTitle": {
+    "message": "Procházení a indexování"
+  },
+  "lighthouse-core/config/default-config.js | seoMobileGroupDescription": {
+    "message": "Zajistěte, aby stránky byly optimalizovány pro mobily a aby uživatelé nemuseli obsah stránky zvětšovat. [Další informace](https://developers.google.com/search/mobile-sites/)"
+  },
+  "lighthouse-core/config/default-config.js | seoMobileGroupTitle": {
+    "message": "Optimalizováno pro mobily"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnCacheTTL": {
+    "message": "Hodnota TTL (Time to Live) mezipaměti"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnLocation": {
+    "message": "Místo"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnName": {
+    "message": "Název"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnRequests": {
+    "message": "Požadavky"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnResourceType": {
+    "message": "Typ zdroje"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnSize": {
+    "message": "Velikost"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnTimeSpent": {
+    "message": "Strávený čas"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnTransferSize": {
+    "message": "Velikost přenosu"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnURL": {
+    "message": "URL"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnWastedBytes": {
+    "message": "Možná úspora"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnWastedMs": {
+    "message": "Možná úspora"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | displayValueByteSavings": {
+    "message": "Lze uspořit {wastedBytes, number, bytes} kB"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | displayValueMsSavings": {
+    "message": "Lze uspořit {wastedMs, number, milliseconds} ms"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | documentResourceType": {
+    "message": "Dokument"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | fontResourceType": {
+    "message": "Písmo"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | imageResourceType": {
+    "message": "Obrázek"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | mediaResourceType": {
+    "message": "Média"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | ms": {
+    "message": "{timeInMs, number, milliseconds} ms"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | otherResourceType": {
+    "message": "Jiné"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | scriptResourceType": {
+    "message": "Skript"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | seconds": {
+    "message": "{timeInMs, number, seconds} s"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | stylesheetResourceType": {
+    "message": "Šablona stylů"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | thirdPartyResourceType": {
+    "message": "Třetí strana"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | totalResourceType": {
+    "message": "Celkem"
+  },
+  "lighthouse-core/lib/lh-error.js | badTraceRecording": {
+    "message": "Při pořizování záznamu trasování během načítání stránky se něco pokazilo. Spusťte nástroj Lighthouse znovu. ({errorCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | criTimeout": {
+    "message": "Při čekání na počáteční připojení pomocí ladicího protokolu vypršel časový limit."
+  },
+  "lighthouse-core/lib/lh-error.js | didntCollectScreenshots": {
+    "message": "Chrome při načítání stránky nezískal žádné snímky obrazovky. Zkontrolujte, zda je na stránce vidět nějaký obsah, a poté nástroj Lighthouse zkuste spustit znovu. ({errorCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | dnsFailure": {
+    "message": "Servery DNS zadanou doménu nedokázaly přeložit."
+  },
+  "lighthouse-core/lib/lh-error.js | erroredRequiredArtifact": {
+    "message": "Při získávání povinného zdroje {artifactName} došlo k chybě: {errorMessage}"
+  },
+  "lighthouse-core/lib/lh-error.js | internalChromeError": {
+    "message": "Došlo k interní chybě Chromu. Restartujte Chrome a zkuste nástroj Lighthouse spustit znovu."
+  },
+  "lighthouse-core/lib/lh-error.js | missingRequiredArtifact": {
+    "message": "Požadovaný shromažďovací nástroj zdroje {artifactName} se nespustil."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailed": {
+    "message": "Nástroji Lighthouse se požadovanou stránku nepodařilo spolehlivě načíst. Zkontrolujte, zda testujete správnou adresu URL a zda server správně odpovídá na všechny požadavky."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedHung": {
+    "message": "Nástroj Lighthouse adresu URL nemohl spolehlivě načíst, protože stránka přestala reagovat."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedInsecure": {
+    "message": "Adresa URL, kterou jste zadali, nemá platný bezpečnostní certifikát. {securityMessages}"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedInterstitial": {
+    "message": "Chrome zabránil načtení stránky a zobrazil vsunutou obrazovku. Zkontrolujte, zda testujete správnou adresu URL a zda server správně odpovídá na všechny požadavky."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedWithDetails": {
+    "message": "Nástroji Lighthouse se požadovanou stránku nepodařilo spolehlivě načíst. Zkontrolujte, zda testujete správnou adresu URL a zda server správně odpovídá na všechny požadavky. (Podrobnosti: {errorDetails})"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedWithStatusCode": {
+    "message": "Nástroji Lighthouse se požadovanou stránku nepodařilo spolehlivě načíst. Zkontrolujte, zda testujete správnou adresu URL a zda server správně odpovídá na všechny požadavky. (Stavový kód: {statusCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadTookTooLong": {
+    "message": "Načtení stránky trvalo příliš dlouho. Podle návrhů v přehledu zkraťte dobu načítání stránky a poté nástroj Lighthouse zkuste spustit znovu. ({errorCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | protocolTimeout": {
+    "message": "Při čekání na odpověď protokolu DevTools byla překročena přidělená doba. (Metoda: {protocolMethod})"
+  },
+  "lighthouse-core/lib/lh-error.js | requestContentTimeout": {
+    "message": "Při načítání obsahu zdroje byla překročena přidělená doba"
+  },
+  "lighthouse-core/lib/lh-error.js | urlInvalid": {
+    "message": "Adresa URL, kterou jste poskytli, se zdá být neplatná."
+  },
+  "lighthouse-core/report/html/renderer/util.js | auditGroupExpandTooltip": {
+    "message": "Zobrazit audity"
+  },
+  "lighthouse-core/report/html/renderer/util.js | crcInitialNavigation": {
+    "message": "Počáteční navigace"
+  },
+  "lighthouse-core/report/html/renderer/util.js | crcLongestDurationLabel": {
+    "message": "Maximální latence kritické trasy:"
+  },
+  "lighthouse-core/report/html/renderer/util.js | errorLabel": {
+    "message": "Chyba!"
+  },
+  "lighthouse-core/report/html/renderer/util.js | errorMissingAuditInfo": {
+    "message": "Chyba přehledu: žádné informace o auditu"
+  },
+  "lighthouse-core/report/html/renderer/util.js | labDataTitle": {
+    "message": "Laboratorní data"
+  },
+  "lighthouse-core/report/html/renderer/util.js | lsPerformanceCategoryDescription": {
+    "message": "Analýza aktuální stránky pomocí nástroje [Lighthouse](https://developers.google.com/web/tools/lighthouse/) v emulované mobilní síti. Hodnoty jsou odhady a mohou se lišit."
+  },
+  "lighthouse-core/report/html/renderer/util.js | manualAuditsGroupTitle": {
+    "message": "Další položky k ruční kontrole"
+  },
+  "lighthouse-core/report/html/renderer/util.js | notApplicableAuditsGroupTitle": {
+    "message": "Není relevantní"
+  },
+  "lighthouse-core/report/html/renderer/util.js | opportunityResourceColumnLabel": {
+    "message": "Příležitost"
+  },
+  "lighthouse-core/report/html/renderer/util.js | opportunitySavingsColumnLabel": {
+    "message": "Odhadovaná úspora"
+  },
+  "lighthouse-core/report/html/renderer/util.js | passedAuditsGroupTitle": {
+    "message": "Úspěšné audity"
+  },
+  "lighthouse-core/report/html/renderer/util.js | snippetCollapseButtonLabel": {
+    "message": "Sbalit úryvek"
+  },
+  "lighthouse-core/report/html/renderer/util.js | snippetExpandButtonLabel": {
+    "message": "Rozbalit úryvek"
+  },
+  "lighthouse-core/report/html/renderer/util.js | thirdPartyResourcesLabel": {
+    "message": "Zobrazit zdroje třetích stran"
+  },
+  "lighthouse-core/report/html/renderer/util.js | toplevelWarningsMessage": {
+    "message": "Při tomto spuštění nástroje Lighthouse se vyskytly problémy:"
+  },
+  "lighthouse-core/report/html/renderer/util.js | varianceDisclaimer": {
+    "message": "Hodnoty jsou odhady a mohou se lišit. Skóre výkonu [vychází pouze z těchto metrik](https://github.com/GoogleChrome/lighthouse/blob/d2ec9ffbb21de9ad1a0f86ed24575eda32c796f0/docs/scoring.md#how-are-the-scores-weighted)."
+  },
+  "lighthouse-core/report/html/renderer/util.js | warningAuditsGroupTitle": {
+    "message": "Úspěšné audity s upozorněními"
+  },
+  "lighthouse-core/report/html/renderer/util.js | warningHeader": {
+    "message": "Upozornění: "
+  },
+  "stack-packs/packs/wordpress.js | efficient_animated_content": {
+    "message": "Zvažte nahrání souboru GIF do služby, pomocí které ho bude možné vložit jako video HTML5."
+  },
+  "stack-packs/packs/wordpress.js | offscreen_images": {
+    "message": "Nainstalujte [plugin služby WordPress pro líné načítání](https://wordpress.org/plugins/search/lazy+load/), který umožňuje odložit načítání obrázků mimo obrazovku, nebo přejděte na motiv, který tuto funkci poskytuje. Zvažte také použití [pluginu AMP](https://wordpress.org/plugins/amp/)."
+  },
+  "stack-packs/packs/wordpress.js | render_blocking_resources": {
+    "message": "K dispozici je celá řada pluginů služby WordPress, které vám pomohou [vložit kritické podklady přímo do kódu](https://wordpress.org/plugins/search/critical+css/) nebo [odložit načítání méně důležitých zdrojů](https://wordpress.org/plugins/search/defer+css+javascript/). Upozorňujeme, že optimalizace pomocí těchto pluginů může narušit funkčnost vašeho motivu nebo pluginů. V kódu proto pravděpodobně budete muset provést změny."
+  },
+  "stack-packs/packs/wordpress.js | time_to_first_byte": {
+    "message": "Na reakční dobu serveru mají vliv motivy, pluginy a specifikace serverů. Zvažte vyhledání optimalizovaného motivu, pečlivý výběr optimalizačního pluginu či upgradování serveru."
+  },
+  "stack-packs/packs/wordpress.js | total_byte_weight": {
+    "message": "Zvažte zobrazování ukázek v seznamech příspěvků (např. prostřednictvím značky k načtení dalšího obsahu), snížení počtu příspěvků zobrazených na jedné stránce, rozdělení dlouhých příspěvků na několik stránek nebo použití pluginu k línému načítání komentářů."
+  },
+  "stack-packs/packs/wordpress.js | unminified_css": {
+    "message": "K dispozici je celá řada [pluginů služby WordPress](https://wordpress.org/plugins/search/minify+css/), které web mohou zrychlit zřetězením, minifikací a komprimací stylů. Pokud je to možné, můžete minifikaci provést také předem pomocí procesu sestavení."
+  },
+  "stack-packs/packs/wordpress.js | unminified_javascript": {
+    "message": "K dispozici je celá řada [pluginů služby WordPress](https://wordpress.org/plugins/search/minify+javascript/), které váš web mohou zrychlit zřetězením, minifikací a zkomprimováním skriptů. Pokud je to možné, můžete minifikaci provést také předem pomocí procesu sestavení."
+  },
+  "stack-packs/packs/wordpress.js | unused_css_rules": {
+    "message": "Zvažte snížení počtu [pluginů služby WordPress](https://wordpress.org/plugins/), které na stránce načítají nevyužité styly CSS. Pluginy, které přidávají nadbytečné styly CSS, můžete vyhledat pomocí funkce [Coverage](https://developers.google.com/web/updates/2017/04/devtools-release-notes#coverage) v nástrojích pro vývojáře v Chromu. Odpovědný motiv či plugin můžete identifikovat podle adresy URL šablony stylů. Hledejte pluginy, které v seznamu mají mnoho šablon stylů, u nichž je při použití funkce Coverage velké množství kódu označeno červeně. Plugin by měl šablonu stylů do fronty zařadit jen v případě, že je na stránce opravdu použita."
+  },
+  "stack-packs/packs/wordpress.js | unused_javascript": {
+    "message": "Zvažte snížení počtu [pluginů služby WordPress](https://wordpress.org/plugins/), které na stránce načítají nepoužívaný kód JavaScript. Pluginy, které přidávají nadbytečný javascriptový kód, můžete vyhledat pomocí funkce [Coverage](https://developers.google.com/web/updates/2017/04/devtools-release-notes#coverage) v nástrojích pro vývojáře v Chromu. Odpovědný motiv či plugin poznáte podle adresy URL skriptu. Hledejte pluginy, které v seznamu mají mnoho skriptů, u nichž je při použití funkce Coverage velké množství kódu označeno červeně. Plugin by měl skript do fronty zařadit jen v případě, že se na stránce opravdu používá."
+  },
+  "stack-packs/packs/wordpress.js | uses_long_cache_ttl": {
+    "message": "Přečtěte si o [ukládání do mezipaměti prohlížeče ve službě WordPress](https://codex.wordpress.org/WordPress_Optimization#Browser_Caching)."
+  },
+  "stack-packs/packs/wordpress.js | uses_optimized_images": {
+    "message": "Zvažte použití [pluginu služby WordPress na optimalizaci obrázků](https://wordpress.org/plugins/search/optimize+images/), který obrázky komprimuje, přičemž zachová jejich kvalitu."
+  },
+  "stack-packs/packs/wordpress.js | uses_responsive_images": {
+    "message": "Nahrajte obrázky přímo prostřednictvím [mediální knihovny](https://codex.wordpress.org/Media_Library_Screen), abyste zajistili dostupnost potřebných velikostí obrázků, a poté je vložte z mediální knihovny, případně použití optimálních velikostí obrázků zajistěte pomocí widgetu pro obrázky (včetně obrázků pro responzivní dělicí body). Obrázky v této velikosti: `Full Size` používejte pouze v případě, že jsou jejich rozměry adekvátní k použití. [Další informace](https://codex.wordpress.org/Inserting_Images_into_Posts_and_Pages#Image_Size)"
+  },
+  "stack-packs/packs/wordpress.js | uses_text_compression": {
+    "message": "Můžete v konfiguraci webového serveru zapnout kompresi textu."
+  },
+  "stack-packs/packs/wordpress.js | uses_webp_images": {
+    "message": "Zvažte použití [pluginu](https://wordpress.org/plugins/search/convert+webp/) nebo služby, která nahrané obrázky automaticky převede na optimální formáty."
+  }
+}
diff --git a/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/da.json b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/da.json
new file mode 100644
index 0000000..f015c0c8
--- /dev/null
+++ b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/da.json
@@ -0,0 +1,1541 @@
+{
+  "lighthouse-core/audits/accessibility/accesskeys.js | description": {
+    "message": "Med adgangsnøgler kan brugerne hurtigt fokusere på dele af siden. Hver nøgle skal være unik for at navigere korrekt. [Få flere oplysninger](https://web.dev/accesskeys/)."
+  },
+  "lighthouse-core/audits/accessibility/accesskeys.js | failureTitle": {
+    "message": "`[accesskey]`-værdierne er ikke unikke"
+  },
+  "lighthouse-core/audits/accessibility/accesskeys.js | title": {
+    "message": "`[accesskey]`-værdier er unikke"
+  },
+  "lighthouse-core/audits/accessibility/aria-allowed-attr.js | description": {
+    "message": "Hver ARIA-`role` understøtter en bestemt delmængde af `aria-*`-attributter. Hvis der opstår uoverensstemmelser, gøres `aria-*`-attributterne ugyldige. [Få flere oplysninger](https://web.dev/aria-allowed-attr/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-allowed-attr.js | failureTitle": {
+    "message": "`[aria-*]`-attributterne stemmer ikke overens med deres roller"
+  },
+  "lighthouse-core/audits/accessibility/aria-allowed-attr.js | title": {
+    "message": "`[aria-*]`-attributterne stemmer overens med deres roller"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-attr.js | description": {
+    "message": "Nogle ARIA-roller har obligatoriske attributter, der beskriver elementets tilstand for skærmlæsere. [Få flere oplysninger](https://web.dev/aria-required-attr/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-required-attr.js | failureTitle": {
+    "message": "`[role]`-elementerne har ikke alle de obligatoriske `[aria-*]`-attributter"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-attr.js | title": {
+    "message": "`[role]`-elementerne har alle obligatoriske `[aria-*]`-attributter"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-children.js | description": {
+    "message": "Nogle overordnede ARIA-roller skal indeholde bestemte underordnede roller for at udføre deres tilsigtede hjælpefunktioner [Få flere oplysninger](https://web.dev/aria-required-children/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-required-children.js | failureTitle": {
+    "message": "Der mangler elementer med `[role]`, som kræver bestemte underordnede `[role]`-elementer."
+  },
+  "lighthouse-core/audits/accessibility/aria-required-children.js | title": {
+    "message": "Elementer med `[role]`, som kræver bestemte underordnede `[role]`-elementer, er til stede."
+  },
+  "lighthouse-core/audits/accessibility/aria-required-parent.js | description": {
+    "message": "Nogle underordnede ARIA-roller skal indgå i bestemte overordnede roller for at udføre deres tilsigtede hjælpefunktioner korrekt. [Få flere oplysninger](https://web.dev/aria-required-parent/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-required-parent.js | failureTitle": {
+    "message": "`[role]`-elementerne indgår ikke i deres påkrævede overordnede element"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-parent.js | title": {
+    "message": "`[role]`-elementerne indgår i deres påkrævede overordnede element"
+  },
+  "lighthouse-core/audits/accessibility/aria-roles.js | description": {
+    "message": "ARIA-roller skal have gyldige værdier for at udføre deres tilsigtede hjælpefunktioner. [Få flere oplysninger](https://web.dev/aria-roles/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-roles.js | failureTitle": {
+    "message": "`[role]`-værdierne er ikke gyldige"
+  },
+  "lighthouse-core/audits/accessibility/aria-roles.js | title": {
+    "message": "`[role]`-værdierne er gyldige"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr-value.js | description": {
+    "message": "Hjælpeteknologier som f.eks. skærmlæsere kan ikke fortolke ARIA-attributter med ugyldige værdier. [Få flere oplysninger](https://web.dev/aria-valid-attr-value/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr-value.js | failureTitle": {
+    "message": "`[aria-*]`-attributterne har ikke gyldige værdier"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr-value.js | title": {
+    "message": "`[aria-*]`-attributterne har gyldige værdier"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr.js | description": {
+    "message": "Hjælpeteknologier som f.eks. skærmlæsere kan ikke fortolke ARIA-attributter med ugyldige navne. [Få flere oplysninger](https://web.dev/aria-valid-attr/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr.js | failureTitle": {
+    "message": "`[aria-*]`-attributterne er ikke gyldige eller er stavet forkert"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr.js | title": {
+    "message": "`[aria-*]`-attributterne er gyldige og er stavet korrekt"
+  },
+  "lighthouse-core/audits/accessibility/audio-caption.js | description": {
+    "message": "Undertekster hjælper døve og hørehæmmede med at forstå lydelementer, idet de giver vigtige oplysninger som f.eks., hvem der taler, hvad de siger, og andre oplysninger, som ikke er relateret til tale. [Få flere oplysninger](https://web.dev/audio-caption/)."
+  },
+  "lighthouse-core/audits/accessibility/audio-caption.js | failureTitle": {
+    "message": "`<audio>`-elementerne mangler et `<track>`-element med `[kind=\"captions\"]`."
+  },
+  "lighthouse-core/audits/accessibility/audio-caption.js | title": {
+    "message": "`<audio>`-elementerne indeholder et `<track>`-element med `[kind=\"captions\"]`"
+  },
+  "lighthouse-core/audits/accessibility/axe-audit.js | failingElementsHeader": {
+    "message": "Elementer, der ikke bestod gennemgangen"
+  },
+  "lighthouse-core/audits/accessibility/button-name.js | description": {
+    "message": "Hvis en knap ikke har et tilgængeligt navn, oplæser skærmlæsere knappen som \"knap\", hvilket gør den ubrugelig for brugere, der anvender skærmlæsere. [Få flere oplysninger](https://web.dev/button-name/)."
+  },
+  "lighthouse-core/audits/accessibility/button-name.js | failureTitle": {
+    "message": "Knapperne har ikke et tilgængeligt navn"
+  },
+  "lighthouse-core/audits/accessibility/button-name.js | title": {
+    "message": "Knapperne har et tilgængeligt navn"
+  },
+  "lighthouse-core/audits/accessibility/bypass.js | description": {
+    "message": "Tastaturbrugere kan nemmere finde rundt på siden, når der tilføjes metoder til tilsidesættelse af gentagelser. [Få flere oplysninger](https://web.dev/bypass/)."
+  },
+  "lighthouse-core/audits/accessibility/bypass.js | failureTitle": {
+    "message": "Siden indeholder hverken en heading, et skip link eller en landmark region"
+  },
+  "lighthouse-core/audits/accessibility/bypass.js | title": {
+    "message": "Siden indeholder en heading, et skip link eller en landmark region"
+  },
+  "lighthouse-core/audits/accessibility/color-contrast.js | description": {
+    "message": "Tekst med lav kontrast er for mange brugere svær eller umulig at læse. [Få flere oplysninger](https://web.dev/color-contrast/)."
+  },
+  "lighthouse-core/audits/accessibility/color-contrast.js | failureTitle": {
+    "message": "Farverne i baggrunden og forgrunden har ikke nok kontrastforhold."
+  },
+  "lighthouse-core/audits/accessibility/color-contrast.js | title": {
+    "message": "Farverne i baggrunden og forgrunden har nok kontrastforhold"
+  },
+  "lighthouse-core/audits/accessibility/definition-list.js | description": {
+    "message": "Hvis lister over definitioner ikke opmærkes korrekt, kan skærmlæseres oplæsning være forvirrende og forkert. [Få flere oplysninger](https://web.dev/definition-list/)."
+  },
+  "lighthouse-core/audits/accessibility/definition-list.js | failureTitle": {
+    "message": "`<dl>`-elementerne indeholder ikke udelukkende korrekt organiserede `<dt>`- og `<dd>`-grupper, `<script>` eller `<template>`-elementer."
+  },
+  "lighthouse-core/audits/accessibility/definition-list.js | title": {
+    "message": "`<dl>`-elementerne indeholder kun korrekt organiserede `<dt>`- og `<dd>`-grupper, `<script>` eller `<template>`-elementer."
+  },
+  "lighthouse-core/audits/accessibility/dlitem.js | description": {
+    "message": "Elementer med lister over definitioner (`<dt>` og `<dd>`) skal indkapsles af et overordnet `<dl>`-element for at sikre, at skærmlæsere kan læse dem op korrekt. [Få flere oplysninger](https://web.dev/dlitem/)."
+  },
+  "lighthouse-core/audits/accessibility/dlitem.js | failureTitle": {
+    "message": "Elementer med lister over definitioner er ikke indkapslet af `<dl>`-elementer"
+  },
+  "lighthouse-core/audits/accessibility/dlitem.js | title": {
+    "message": "Elementer med lister over definitioner er indkapslet af `<dl>`-elementer"
+  },
+  "lighthouse-core/audits/accessibility/document-title.js | description": {
+    "message": "Titlen giver brugere af skærmlæsere et overblik over siden, og brugere af søgemaskiner skal bruge den til at afgøre, om en side er relevant for deres søgning. [Få flere oplysninger](https://web.dev/document-title/)."
+  },
+  "lighthouse-core/audits/accessibility/document-title.js | failureTitle": {
+    "message": "Dokumentet har ikke et `<title>`-element"
+  },
+  "lighthouse-core/audits/accessibility/document-title.js | title": {
+    "message": "Dokumentet har et `<title>`-element"
+  },
+  "lighthouse-core/audits/accessibility/duplicate-id.js | description": {
+    "message": "Værdien af en id-attribut skal være unik for at forhindre andre forekomster i at blive overset af hjælpeteknologier. [Få flere oplysninger](https://web.dev/duplicate-id/)."
+  },
+  "lighthouse-core/audits/accessibility/duplicate-id.js | failureTitle": {
+    "message": "`[id]`-attributterne på siden er ikke unikke"
+  },
+  "lighthouse-core/audits/accessibility/duplicate-id.js | title": {
+    "message": "`[id]`-attributterne på siden er unikke"
+  },
+  "lighthouse-core/audits/accessibility/frame-title.js | description": {
+    "message": "Brugere af skærmlæsere har brug for skærmtitler, der beskriver indholdet på skærmen. [Få flere oplysninger](https://web.dev/frame-title/)."
+  },
+  "lighthouse-core/audits/accessibility/frame-title.js | failureTitle": {
+    "message": "`<frame>`- eller `<iframe>`-elementerne har ikke en titel"
+  },
+  "lighthouse-core/audits/accessibility/frame-title.js | title": {
+    "message": "`<frame>`- eller `<iframe>`-elementerne har en titel"
+  },
+  "lighthouse-core/audits/accessibility/html-has-lang.js | description": {
+    "message": "Hvis siden ikke angiver en \"lang\"-attribut, antager en skærmlæser, at siden vises på det standardsprog, som brugeren valgte ved konfigurationen af sin skærmlæser. Hvis siden ikke vises på standardsproget, oplæser skærmlæseren muligvis ikke teksten på siden korrekt. [Få flere oplysninger](https://web.dev/html-has-lang/)."
+  },
+  "lighthouse-core/audits/accessibility/html-has-lang.js | failureTitle": {
+    "message": "`<html>`-elementet har ikke en `[lang]`-attribut"
+  },
+  "lighthouse-core/audits/accessibility/html-has-lang.js | title": {
+    "message": "`<html>`-elementet har en `[lang]`-attribut"
+  },
+  "lighthouse-core/audits/accessibility/html-lang-valid.js | description": {
+    "message": "Hjælp skærmlæsere med at oplæse tekst korrekt ved at angive et gyldigt [BCP 47-sprog](https://www.w3.org/International/questions/qa-choosing-language-tags#question). [Få flere oplysninger](https://web.dev/html-lang-valid/)."
+  },
+  "lighthouse-core/audits/accessibility/html-lang-valid.js | failureTitle": {
+    "message": "`<html>`-elementet har ikke en gyldig værdi for sin `[lang]`-attribut."
+  },
+  "lighthouse-core/audits/accessibility/html-lang-valid.js | title": {
+    "message": "`<html>`-elementet har en gyldig værdi for `[lang]`-attributten"
+  },
+  "lighthouse-core/audits/accessibility/image-alt.js | description": {
+    "message": "Informative elementer bør anvende en kort, beskrivende alternativ tekst. Dekorative elementer kan ignoreres med en tom alt-attribut. [Få flere oplysninger](https://web.dev/image-alt/)."
+  },
+  "lighthouse-core/audits/accessibility/image-alt.js | failureTitle": {
+    "message": "Billedelementerne har ikke `[alt]`-attributter"
+  },
+  "lighthouse-core/audits/accessibility/image-alt.js | title": {
+    "message": "Billedelementerne indeholder `[alt]`-attributter"
+  },
+  "lighthouse-core/audits/accessibility/input-image-alt.js | description": {
+    "message": "Når et billede bruges som en `<input>`-knap, kan alternativ tekst hjælpe brugere af skærmlæsere med at forstå knappens formål. [Få flere oplysninger](https://web.dev/input-image-alt/)."
+  },
+  "lighthouse-core/audits/accessibility/input-image-alt.js | failureTitle": {
+    "message": "`<input type=\"image\">`-elementerne har ikke `[alt]`-tekst"
+  },
+  "lighthouse-core/audits/accessibility/input-image-alt.js | title": {
+    "message": "`<input type=\"image\">`-elementerne har `[alt]`-tekst"
+  },
+  "lighthouse-core/audits/accessibility/label.js | description": {
+    "message": "Etiketter sikrer, at formularstyring oplæses korrekt af hjælpeteknologier som f.eks. skærmlæsere. [Få flere oplysninger](https://web.dev/label/)."
+  },
+  "lighthouse-core/audits/accessibility/label.js | failureTitle": {
+    "message": "Formularelementerne har ikke tilknyttede etiketter"
+  },
+  "lighthouse-core/audits/accessibility/label.js | title": {
+    "message": "Formularelementerne har tilknyttede etiketter"
+  },
+  "lighthouse-core/audits/accessibility/layout-table.js | description": {
+    "message": "En tabel, der bruges til layoutformål, bør ikke indeholde dataelementer som f.eks. th- eller tekstelementer eller oversigtsattributten, da dette kan forvirre brugere af skærmlæsere. [Få flere oplysninger](https://web.dev/layout-table/)."
+  },
+  "lighthouse-core/audits/accessibility/layout-table.js | failureTitle": {
+    "message": "`<table>`-præsentationselementerne undgår ikke at bruge `<th>`, `<caption>` eller attributten `[summary]`."
+  },
+  "lighthouse-core/audits/accessibility/layout-table.js | title": {
+    "message": "`<table>`-præsentationselementerne undgår at bruge `<th>`, `<caption>` eller attributten `[summary]`."
+  },
+  "lighthouse-core/audits/accessibility/link-name.js | description": {
+    "message": "Linktekst (og alternativ tekst til billeder, når de bruges som links), der er skelnelig, unik og fokuserbar, gør det nemmere for brugere af skærmlæsere at finde rundt. [Få flere oplysninger](https://web.dev/link-name/)."
+  },
+  "lighthouse-core/audits/accessibility/link-name.js | failureTitle": {
+    "message": "Linkene har ikke skelnelige navne"
+  },
+  "lighthouse-core/audits/accessibility/link-name.js | title": {
+    "message": "Linkene har skelnelige navne"
+  },
+  "lighthouse-core/audits/accessibility/list.js | description": {
+    "message": "Skærmlæsere oplæser lister på en bestemt måde. Du kan forbedre skærmlæsernes output ved at angive en ordentlig listestruktur. [Få flere oplysninger](https://web.dev/list/)."
+  },
+  "lighthouse-core/audits/accessibility/list.js | failureTitle": {
+    "message": "Listerne indeholder ikke kun `<li>`-elementer og elementer, der understøtter scripts (`<script>` og `<template>`)."
+  },
+  "lighthouse-core/audits/accessibility/list.js | title": {
+    "message": "Listerne indeholder kun `<li>`-elementer og elementer, der understøtter scripts (`<script>` og `<template>`)."
+  },
+  "lighthouse-core/audits/accessibility/listitem.js | description": {
+    "message": "Skærmlæsere kræver, at listeelementer (`<li>`) indgår i et overordnet `<ul>`- eller `<ol>`-element for at blive oplæst korrekt. [Få flere oplysninger](https://web.dev/listitem/)."
+  },
+  "lighthouse-core/audits/accessibility/listitem.js | failureTitle": {
+    "message": "Listeelementerne (`<li>`) indgår ikke i de overordnede `<ul>`- eller `<ol>`-elementer."
+  },
+  "lighthouse-core/audits/accessibility/listitem.js | title": {
+    "message": "Listeelementerne (`<li>`) indgår i de overordnede `<ul>`- eller `<ol>`-elementer"
+  },
+  "lighthouse-core/audits/accessibility/meta-refresh.js | description": {
+    "message": "Brugere forventer ikke, at en side opdateres automatisk, og automatisk opdatering flytter fokus tilbage til toppen af siden. Dette kan være frustrerende og forvirrende for brugerne. [Få flere oplysninger](https://web.dev/meta-refresh/)."
+  },
+  "lighthouse-core/audits/accessibility/meta-refresh.js | failureTitle": {
+    "message": "Dokumentet bruger `<meta http-equiv=\"refresh\">`"
+  },
+  "lighthouse-core/audits/accessibility/meta-refresh.js | title": {
+    "message": "Dokumentet bruger ikke `<meta http-equiv=\"refresh\">`"
+  },
+  "lighthouse-core/audits/accessibility/meta-viewport.js | description": {
+    "message": "Hvis zoom deaktiveres, kan det skabe problemer for svagtseende brugere, der har brug for skærmforstørrelse til at se indholdet på en webside. [Få flere oplysninger](https://web.dev/meta-viewport/)."
+  },
+  "lighthouse-core/audits/accessibility/meta-viewport.js | failureTitle": {
+    "message": "`[user-scalable=\"no\"]` anvendes i elementet `<meta name=\"viewport\">`, eller attributten `[maximum-scale]` er mindre end 5."
+  },
+  "lighthouse-core/audits/accessibility/meta-viewport.js | title": {
+    "message": "`[user-scalable=\"no\"]` anvendes ikke i `<meta name=\"viewport\">`-elementet, og attributten `[maximum-scale]` er ikke mindre end 5."
+  },
+  "lighthouse-core/audits/accessibility/object-alt.js | description": {
+    "message": "Skærmlæsere kan ikke oversætte indhold, som ikke er tekst. Du kan føje alternativ tekst til `<object>`-elementer for at hjælpe skærmlæsere med at formidle meningen til brugerne. [Få flere oplysninger](https://web.dev/object-alt/)."
+  },
+  "lighthouse-core/audits/accessibility/object-alt.js | failureTitle": {
+    "message": "`<object>`-elementerne har ikke `[alt]`-tekst"
+  },
+  "lighthouse-core/audits/accessibility/object-alt.js | title": {
+    "message": "`<object>`-elementerne har `[alt]`-tekst"
+  },
+  "lighthouse-core/audits/accessibility/tabindex.js | description": {
+    "message": "En værdi over 0 antyder en utvetydig sortering af navigation. Selvom dette teknisk er gyldigt, skaber det ofte en frustrerende oplevelse for brugere, der anvender hjælpeteknologier. [Få flere oplysninger](https://web.dev/tabindex/)."
+  },
+  "lighthouse-core/audits/accessibility/tabindex.js | failureTitle": {
+    "message": "Nogle elementer har en `[tabindex]`-værdi, som er større end 0"
+  },
+  "lighthouse-core/audits/accessibility/tabindex.js | title": {
+    "message": "Ingen af elementerne har en `[tabindex]`-værdi, der overstiger 0"
+  },
+  "lighthouse-core/audits/accessibility/td-headers-attr.js | description": {
+    "message": "Skærmlæsere har funktioner, der gør det nemmere at finde rundt i tabeller. Du kan give brugere af skærmlæsere en bedre oplevelse ved at sikre, at `<td>`-celler, der anvender attributten `[headers]`, kun henviser til andre celler i samme tabel. [Få flere oplysninger](https://web.dev/td-headers-attr/)."
+  },
+  "lighthouse-core/audits/accessibility/td-headers-attr.js | failureTitle": {
+    "message": "Celler i et `<table>`-element, der anvender attributten `[headers]`, henviser til andre celler i den samme tabel."
+  },
+  "lighthouse-core/audits/accessibility/td-headers-attr.js | title": {
+    "message": "Celler i et `<table>`-element, der anvender attributten `[headers]`, henviser kun til andre celler i den samme tabel."
+  },
+  "lighthouse-core/audits/accessibility/th-has-data-cells.js | description": {
+    "message": "Skærmlæsere har funktioner, der gør det nemmere at finde rundt i tabeller. Du kan give brugere af skærmlæsere en bedre oplevelse ved at sikre, at tabeloverskrifter altid henviser til nogle cellesæt. [Få flere oplysninger](https://web.dev/th-has-data-cells/)."
+  },
+  "lighthouse-core/audits/accessibility/th-has-data-cells.js | failureTitle": {
+    "message": "`<th>`-elementerne og elementerne med `[role=\"columnheader\"/\"rowheader\"]` indeholder ikke de dataceller, de beskriver."
+  },
+  "lighthouse-core/audits/accessibility/th-has-data-cells.js | title": {
+    "message": "`<th>`-elementerne og elementer med `[role=\"columnheader\"/\"rowheader\"]` indeholder de dataceller, de beskriver."
+  },
+  "lighthouse-core/audits/accessibility/valid-lang.js | description": {
+    "message": "Hjælp med at sikre, at tekst udtales korrekt af skærmlæsere, ved at angive et gyldigt [BCP 47-sprog](https://www.w3.org/International/questions/qa-choosing-language-tags#question) for elementer. [Få flere oplysninger](https://web.dev/valid-lang/)."
+  },
+  "lighthouse-core/audits/accessibility/valid-lang.js | failureTitle": {
+    "message": "`[lang]`-attributterne har ikke en gyldig værdi"
+  },
+  "lighthouse-core/audits/accessibility/valid-lang.js | title": {
+    "message": "`[lang]`-attributterne har en gyldig værdi"
+  },
+  "lighthouse-core/audits/accessibility/video-caption.js | description": {
+    "message": "Det er nemmere for døve og hørehæmmede at få adgang til en videos oplysninger, hvis videoen tilbyder undertekster. [Få flere oplysninger](https://web.dev/video-caption/)."
+  },
+  "lighthouse-core/audits/accessibility/video-caption.js | failureTitle": {
+    "message": "`<video>`-elementerne indeholder ikke et `<track>`-element med `[kind=\"captions\"]`."
+  },
+  "lighthouse-core/audits/accessibility/video-caption.js | title": {
+    "message": "`<video>`-elementerne indeholder et `<track>`-element med `[kind=\"captions\"]`"
+  },
+  "lighthouse-core/audits/accessibility/video-description.js | description": {
+    "message": "Lydbeskrivelser giver relevante oplysninger om videoer, som ikke fremgår af dialogen, f.eks. ansigtsudtryk og scener. [Få flere oplysninger](https://web.dev/video-description/)."
+  },
+  "lighthouse-core/audits/accessibility/video-description.js | failureTitle": {
+    "message": "`<video>`-elementerne indeholder ikke et `<track>`-element med `[kind=\"description\"]`."
+  },
+  "lighthouse-core/audits/accessibility/video-description.js | title": {
+    "message": "`<video>`-elementerne indeholder et `<track>`-element med `[kind=\"description\"]`"
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | description": {
+    "message": "Angiv et `apple-touch-icon` for at optimere iOS-brugerfladen, når brugere føjer en progressiv app til startskærmen. Det skal føre til en ikke-transparent firkantet PNG på 192 px (eller 180 px). [Få flere oplysninger](https://developers.google.com/web/fundamentals/design-and-ux/browser-customization/)."
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | failureTitle": {
+    "message": "Angiver ikke en gyldig `apple-touch-icon`"
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | precomposedWarning": {
+    "message": "`apple-touch-icon-precomposed` er forældet, og `apple-touch-icon` foretrækkes."
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | title": {
+    "message": "Angiver et gyldigt `apple-touch-icon`"
+  },
+  "lighthouse-core/audits/bootup-time.js | chromeExtensionsWarning": {
+    "message": "Chrome-udvidelser påvirkede denne sides indlæsning negativt. Prøv at revidere siden i inkognitotilstand eller fra en Chrome-profil uden udvidelser."
+  },
+  "lighthouse-core/audits/bootup-time.js | columnScriptEval": {
+    "message": "Scriptevaluering"
+  },
+  "lighthouse-core/audits/bootup-time.js | columnScriptParse": {
+    "message": "Scriptparsing"
+  },
+  "lighthouse-core/audits/bootup-time.js | columnTotal": {
+    "message": "Samlet CPU-tid"
+  },
+  "lighthouse-core/audits/bootup-time.js | description": {
+    "message": "Overvej at reducere den tid, der bruges på at parse, kompilere og udføre JavaScript. Levering af mindre JavaScript-datapakker kan hjælpe med dette. [Få flere oplysninger](https://developers.google.com/web/tools/lighthouse/audits/bootup)."
+  },
+  "lighthouse-core/audits/bootup-time.js | failureTitle": {
+    "message": "Reducer udførelsestiden for JavaScript"
+  },
+  "lighthouse-core/audits/bootup-time.js | title": {
+    "message": "Udførelsestid for JavaScript"
+  },
+  "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | description": {
+    "message": "Store giffer er mindre effektive til at levere animeret indhold. Du kan også overveje at bruge MPEG4-/WebM-videoer til animationer og PNG/WebP til statiske billeder i stedet for giffer for at spare netværksbytes. [Få flere oplysninger](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/replace-animated-gifs-with-video/)"
+  },
+  "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | title": {
+    "message": "Brug videoformater til animeret indhold"
+  },
+  "lighthouse-core/audits/byte-efficiency/offscreen-images.js | description": {
+    "message": "Overvej at udskyde indlæsningen af skjulte billeder og billeder, der ikke er på skærmen, til efter alle kritiske ressourcer er blevet indlæst for at reducere den tid, der går, inden siden bliver interaktiv. [Få flere oplysninger](https://developers.google.com/web/tools/lighthouse/audits/offscreen-images)."
+  },
+  "lighthouse-core/audits/byte-efficiency/offscreen-images.js | title": {
+    "message": "Udskyd billeder, der ikke er på skærmen"
+  },
+  "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | description": {
+    "message": "Ressourcer blokerer for første visning af din side. Overvej at levere kritisk JavaScript/CSS indlejret og udskyde alle ikke-kritiske JavaScript-elementer/typografier. [Få flere oplysninger](https://developers.google.com/web/tools/lighthouse/audits/blocking-resources)."
+  },
+  "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | title": {
+    "message": "Fjern ressourcer til blokering af gengivelse"
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | description": {
+    "message": "Store datapakker på netværk koster brugerne mange penge og er forbundet med lang indlæsningstid. [Få flere oplysninger](https://developers.google.com/web/tools/lighthouse/audits/network-payloads)."
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | displayValue": {
+    "message": "Den samlede størrelse var {totalBytes, number, bytes} kB"
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | failureTitle": {
+    "message": "Undgå kæmpe datapakker på netværk"
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | title": {
+    "message": "Undgår kæmpe datapakker på netværk"
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-css.js | description": {
+    "message": "Formindskelse af CSS-filer kan reducere størrelsen på datapakker på netværk. [Få flere oplysninger](https://developers.google.com/web/tools/lighthouse/audits/minify-css)."
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-css.js | title": {
+    "message": "Formindsk CSS"
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | description": {
+    "message": "Formindskelse af JavaScript-filer kan reducere størrelsen på datapakker og varigheden af scriptparsing. [Få flere oplysninger](https://developers.google.com/speed/docs/insights/MinifyResources)."
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | title": {
+    "message": "Formindsk JavaScript"
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | description": {
+    "message": "Skær ned på unødvendigt forbrug af bytes i forbindelse med netværksaktivitet ved at fjerne forældede regler fra typografiark og udskyde indlæsning af CSS, der ikke bruges til indhold over skillelinjen. [Få flere oplysninger](https://developers.google.com/web/tools/lighthouse/audits/unused-css)."
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | title": {
+    "message": "Fjern CSS, som ikke bruges"
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-javascript.js | description": {
+    "message": "Fjern JavaScript, der ikke bruges, for at skære ned på antallet af bytes, der anvendes ved netværksaktivitet."
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-javascript.js | title": {
+    "message": "Fjern JavaScript, som ikke bruges"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | description": {
+    "message": "En lang cachelevetid kan gøre indlæsningen hurtigere for tilbagevendende besøgende på din side. [Få flere oplysninger](https://developers.google.com/web/tools/lighthouse/audits/cache-policy)."
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | displayValue": {
+    "message": "{itemCount,plural, =1{Der blev fundet 1 ressource}one{Der blev fundet # ressource}other{Der blev fundet # ressourcer}}"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | failureTitle": {
+    "message": "Vis statiske aktiver med en effektiv cachepolitik"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | title": {
+    "message": "Anvender effektiv cachepolitik på statiske aktiver"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | description": {
+    "message": "Optimerede billeder indlæses hurtigere og bruger mindre mobildata. [Få flere oplysninger](https://developers.google.com/web/tools/lighthouse/audits/optimize-images)."
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | title": {
+    "message": "Kryptér billeder effektivt"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | description": {
+    "message": "Vis billeder i korrekte størrelser for at spare mobildata og forbedre indlæsningstiden. [Få flere oplysninger](https://developers.google.com/web/tools/lighthouse/audits/oversized-images)."
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | title": {
+    "message": "Brug korrekte billedstørrelser"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | description": {
+    "message": "Tekstbaserede ressourcer bør vises i komprimeret format (gzip, Deflate eller Brotli), så netværkets samlede antal bytes formindskes. [Få flere oplysninger](https://developers.google.com/web/tools/lighthouse/audits/text-compression)."
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | title": {
+    "message": "Aktivér tekstkomprimering"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | description": {
+    "message": "Billedformater såsom JPEG 2000, JPEG XR og WebP giver ofte en bedre komprimering end PNG og JPEG, hvilket betyder hurtigere downloads og mindre dataforbrug. [Få flere oplysninger](https://developers.google.com/web/tools/lighthouse/audits/webp)."
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | title": {
+    "message": "Vis billeder i formater af næste generation"
+  },
+  "lighthouse-core/audits/content-width.js | description": {
+    "message": "Hvis bredden på indholdet i din app ikke stemmer overens med bredden på din visning, bliver din app muligvis ikke optimeret til mobilskærme. [Få flere oplysninger](https://developers.google.com/web/tools/lighthouse/audits/content-sized-correctly-for-viewport)."
+  },
+  "lighthouse-core/audits/content-width.js | explanation": {
+    "message": "Visningens størrelse på {innerWidth} px stemmer ikke overens med vinduets størrelse på {outerWidth} px."
+  },
+  "lighthouse-core/audits/content-width.js | failureTitle": {
+    "message": "Indholdet har ikke den rigtige størrelse til visningen"
+  },
+  "lighthouse-core/audits/content-width.js | title": {
+    "message": "Indholdet har den rigtige størrelse til visningen"
+  },
+  "lighthouse-core/audits/critical-request-chains.js | description": {
+    "message": "Kæderne med kritiske anmodninger nedenfor viser dig, hvilke ressourcer der indlæses med høj prioritet. Overvej at reducere kædernes længde, så ressourcernes downloadstørrelse bliver mindre, eller at udskyde download af unødvendige ressourcer, så sideindlæsningen forbedres. [Få flere oplysninger](https://developers.google.com/web/tools/lighthouse/audits/critical-request-chains)."
+  },
+  "lighthouse-core/audits/critical-request-chains.js | displayValue": {
+    "message": "{itemCount,plural, =1{Der blev fundet 1 kæde}one{Der blev fundet # kæde}other{Der blev fundet # kæder}}"
+  },
+  "lighthouse-core/audits/critical-request-chains.js | title": {
+    "message": "Minimer dybden for kritiske anmodninger"
+  },
+  "lighthouse-core/audits/deprecations.js | columnDeprecate": {
+    "message": "Udfasning/advarsel"
+  },
+  "lighthouse-core/audits/deprecations.js | columnLine": {
+    "message": "Linje"
+  },
+  "lighthouse-core/audits/deprecations.js | description": {
+    "message": "Udfasede API'er fjernes med tiden fra browseren. [Få flere oplysninger](https://web.dev/deprecations)."
+  },
+  "lighthouse-core/audits/deprecations.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 advarsel blev fundet}one{# advarsel blev fundet}other{# advarsler blev fundet}}"
+  },
+  "lighthouse-core/audits/deprecations.js | failureTitle": {
+    "message": "Bruger udfasede API'er"
+  },
+  "lighthouse-core/audits/deprecations.js | title": {
+    "message": "Undgår udfasede API'er"
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | description": {
+    "message": "Application Cache er udfaset. [Få flere oplysninger](https://web.dev/appcache-manifest)."
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | displayValue": {
+    "message": "\"{AppCacheManifest}\" blev fundet"
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | failureTitle": {
+    "message": "Bruger Application Cache"
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | title": {
+    "message": "Undgår Application Cache"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | description": {
+    "message": "Når der angives en dokumenttype, forhindres browseren i at skifte til quirks-tilstand. [Få flere oplysninger](https://web.dev/doctype)."
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationBadDoctype": {
+    "message": "Navnet på dokumenttypen skal være en `html`-streng med små bogstaver"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationNoDoctype": {
+    "message": "Dokumentet skal indeholde en doctype"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationPublicId": {
+    "message": "En tom streng var forventet for publicId"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationSystemId": {
+    "message": "En tom streng var forventet for systemId"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | failureTitle": {
+    "message": "Siden mangler dokumenttypen HTML og aktiverer derfor quirks-tilstand"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | title": {
+    "message": "Siden har dokumenttypen HTML"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | columnElement": {
+    "message": "Element"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | columnStatistic": {
+    "message": "Statistik"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | columnValue": {
+    "message": "Værdi"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | description": {
+    "message": "Browserudviklere anbefaler, at sider højst indeholder 1.500 DOM-elementer. Det bedste er en træstrukturdybde med under 32 elementer og færre end 60 underordnede/overordnede elementer. En stor DOM kan øge hukommelsesforbruget, medføre længere [beregninger af typografi](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations) og resultere i dyre [omformateringer af layout](https://developers.google.com/speed/articles/reflow). [Få flere oplysninger](https://web.dev/dom-size)."
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 element}one{# element}other{# elementer}}"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | failureTitle": {
+    "message": "Undgå en overdreven DOM-størrelse"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | statisticDOMDepth": {
+    "message": "Maksimal DOM-dybde"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | statisticDOMElements": {
+    "message": "Samlet antal DOM-elementer"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | statisticDOMWidth": {
+    "message": "Højeste antal underordnede elementer"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | title": {
+    "message": "Undgår en overdreven DOM-størrelse"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | columnRel": {
+    "message": "Rel"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | columnTarget": {
+    "message": "Mål"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | description": {
+    "message": "Føj `rel=\"noopener\"` eller `rel=\"noreferrer\"` til alle eksterne links for at forbedre ydeevnen og forhindre sikkerhedssårbarheder. [Få flere oplysninger](https://web.dev/external-anchors-use-rel-noopener)."
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | failureTitle": {
+    "message": "Links til destinationer af anden oprindelse er ikke sikre"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | title": {
+    "message": "Links til destinationer af anden oprindelse er sikre"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | warning": {
+    "message": "Destinationen for ankeret ({anchorHTML}) kunne ikke identificeres. Hvis det ikke bruges som hyperlink, bør du overveje at fjerne target=_blank."
+  },
+  "lighthouse-core/audits/dobetterweb/geolocation-on-start.js | description": {
+    "message": "Brugere er mistænksomme over for eller forvirres af websites, der anmoder om deres placering uden sammenhæng. Overvej at knytte anmodningen til en brugerhandling i stedet for. [Få flere oplysninger](https://web.dev/geolocation-on-start)."
+  },
+  "lighthouse-core/audits/dobetterweb/geolocation-on-start.js | failureTitle": {
+    "message": "Anmoder om tilladelse til geoplacering ved indlæsning af siden"
+  },
+  "lighthouse-core/audits/dobetterweb/geolocation-on-start.js | title": {
+    "message": "Undgår at anmode om tilladelse til geoplacering ved indlæsning af siden"
+  },
+  "lighthouse-core/audits/dobetterweb/js-libraries.js | columnVersion": {
+    "message": "Version"
+  },
+  "lighthouse-core/audits/dobetterweb/js-libraries.js | description": {
+    "message": "Alle JavaScript-biblioteker i frontend, der registreres på siden. [Få flere oplysninger](https://web.dev/js-libraries)."
+  },
+  "lighthouse-core/audits/dobetterweb/js-libraries.js | title": {
+    "message": "Registrerede JavaScript-biblioteker"
+  },
+  "lighthouse-core/audits/dobetterweb/no-document-write.js | description": {
+    "message": "Eksterne scripts, der indsættes dynamisk via `document.write()`, kan forsinke sideindlæsningen med flere sekunder for brugere med langsomme forbindelser. [Få flere oplysninger](https://web.dev/no-document-write)."
+  },
+  "lighthouse-core/audits/dobetterweb/no-document-write.js | failureTitle": {
+    "message": "Bruger `document.write()`"
+  },
+  "lighthouse-core/audits/dobetterweb/no-document-write.js | title": {
+    "message": "Undgår `document.write()`"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | columnSeverity": {
+    "message": "Størst omfang"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | columnVersion": {
+    "message": "Biblioteksversion"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | columnVuln": {
+    "message": "Antal sårbarheder"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | description": {
+    "message": "Nogle scripts fra tredjeparter kan indeholde kendte sikkerhedssårbarheder, som let kan identificeres og udnyttes af hackere. [Få flere oplysninger](https://web.dev/no-vulnerable-libraries)."
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 sårbarhed blev registreret}one{# sårbarhed blev registreret}other{# sårbarheder blev registreret}}"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | failureTitle": {
+    "message": "Indeholder JavaScript-biblioteker i frontend med kendte sikkerhedssårbarheder"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | rowSeverityHigh": {
+    "message": "Høj"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | rowSeverityLow": {
+    "message": "Lavt"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | rowSeverityMedium": {
+    "message": "Middel"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | title": {
+    "message": "Undgår frontend JavaScript-biblioteker med kendte sikkerhedssårbarheder"
+  },
+  "lighthouse-core/audits/dobetterweb/notification-on-start.js | description": {
+    "message": "Brugere er mistænksomme over for eller forvirres af websites, der anmoder om at sende notifikationer uden sammenhæng. Overvej at knytte anmodningen til brugerbevægelser i stedet for. [Få flere oplysninger](https://web.dev/notification-on-start)."
+  },
+  "lighthouse-core/audits/dobetterweb/notification-on-start.js | failureTitle": {
+    "message": "Anmoder om tilladelse til notifikationer ved indlæsning af siden"
+  },
+  "lighthouse-core/audits/dobetterweb/notification-on-start.js | title": {
+    "message": "Undgår at anmode om tilladelse til notifikationer ved indlæsning af siden"
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | columnFailingElem": {
+    "message": "Elementer, der ikke bestod gennemgangen"
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | description": {
+    "message": "En god sikkerhedspolitik undermineres ved at forhindre indsættelse af adgangskoder. [Få flere oplysninger](https://web.dev/password-inputs-can-be-pasted-into)."
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | failureTitle": {
+    "message": "Forhindrer brugere i at indsætte indhold i adgangskodefelter"
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | title": {
+    "message": "Tillader, at brugere indsætter indhold i adgangskodefelter"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | columnProtocol": {
+    "message": "Protokol"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | description": {
+    "message": "HTTP/2 tilbyder mange fordele i forhold til HTTP/1.1, herunder binære headers, multipleksing og server push. [Få flere oplysninger](https://web.dev/uses-http2)."
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 anmodning blev ikke leveret via HTTP/2}one{# anmodning blev ikke leveret via HTTP/2}other{# anmodninger blev ikke leveret via HTTP/2}}"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | failureTitle": {
+    "message": "Anvender ikke HTTP/2 til alle sine ressourcer"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | title": {
+    "message": "Anvender HTTP/2 til egne ressourcer"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-passive-event-listeners.js | description": {
+    "message": "Overvej at markere hændelsesfunktionerne for tryk og hjul som `passive` for at forbedre effektiviteten ved rulning på siden. [Få flere oplysninger](https://web.dev/uses-passive-event-listeners)."
+  },
+  "lighthouse-core/audits/dobetterweb/uses-passive-event-listeners.js | failureTitle": {
+    "message": "Anvender ikke passive hændelsesfunktioner til at forbedre rulning"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-passive-event-listeners.js | title": {
+    "message": "Anvender passive hændelsesfunktioner til at forbedre rulning"
+  },
+  "lighthouse-core/audits/errors-in-console.js | columnDesc": {
+    "message": "Beskrivelse"
+  },
+  "lighthouse-core/audits/errors-in-console.js | description": {
+    "message": "Fejl, der er logført i konsollen, angiver uløste problemer. De kan stamme fra mislykkede netværksanmodninger og andre browserproblemer. [Få flere oplysninger](https://web.dev/errors-in-console)"
+  },
+  "lighthouse-core/audits/errors-in-console.js | failureTitle": {
+    "message": "Der blev logført browserfejl i konsollen"
+  },
+  "lighthouse-core/audits/errors-in-console.js | title": {
+    "message": "Der blev ikke logført nogen browserfejl i konsollen"
+  },
+  "lighthouse-core/audits/font-display.js | description": {
+    "message": "Udnyt CSS-funktionen til skrifttypevisning for at sikre, at teksten kan ses af brugerne, mens webfonts indlæses. [Få flere oplysninger](https://developers.google.com/web/updates/2016/02/font-display)."
+  },
+  "lighthouse-core/audits/font-display.js | failureTitle": {
+    "message": "Sørg for, at tekst forbliver synlig under indlæsning af webfont"
+  },
+  "lighthouse-core/audits/font-display.js | title": {
+    "message": "Al tekst forbliver synlig under indlæsning af webfont"
+  },
+  "lighthouse-core/audits/font-display.js | undeclaredFontURLWarning": {
+    "message": "Lighthouse kunne ikke automatisk tjekke visningsværdien for skrifttyper for den følgende webadresse: {fontURL}."
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | columnActual": {
+    "message": "Billedformat (faktisk)"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | columnDisplayed": {
+    "message": "Billedformat (vist)"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | description": {
+    "message": "Størrelsen for billedvisningen bør matche det naturlige billedformat. [Få flere oplysninger](https://web.dev/image-aspect-ratio)."
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | failureTitle": {
+    "message": "Viser billeder med forkert billedformat"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | title": {
+    "message": "Viser billeder med korrekt billedformat"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | warningCompute": {
+    "message": "Oplysningerne om billedstørrelse er ikke gyldige {url}"
+  },
+  "lighthouse-core/audits/installable-manifest.js | description": {
+    "message": "Browsere kan proaktivt bede brugere om at føje din app til deres startskærm, hvilket kan medføre større interaktion. [Få flere oplysninger](https://developers.google.com/web/tools/lighthouse/audits/install-prompt)."
+  },
+  "lighthouse-core/audits/installable-manifest.js | failureTitle": {
+    "message": "Webappens manifest opfylder ikke kravene til installation"
+  },
+  "lighthouse-core/audits/installable-manifest.js | title": {
+    "message": "Webappens manifest opfylder kravene til installation"
+  },
+  "lighthouse-core/audits/is-on-https.js | columnInsecureURL": {
+    "message": "Usikker webadresse"
+  },
+  "lighthouse-core/audits/is-on-https.js | description": {
+    "message": "Alle websites bør beskyttes med HTTPS, selv websites, der ikke håndterer følsomme oplysninger. HTTPS forhindrer uvedkommende i at manipulere med eller passivt lytte med på kommunikationen mellem din app og dine brugere og er en forudsætning for HTTP/2 og mange nye webplatform-API'er. [Få flere oplysninger](https://web.dev/is-on-https)."
+  },
+  "lighthouse-core/audits/is-on-https.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 usikker anmodning blev fundet}one{# usikker anmodning blev fundet}other{# usikre anmodninger blev fundet}}"
+  },
+  "lighthouse-core/audits/is-on-https.js | failureTitle": {
+    "message": "Anvender ikke HTTPS"
+  },
+  "lighthouse-core/audits/is-on-https.js | title": {
+    "message": "Bruger HTTPS"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | description": {
+    "message": "Hurtig sideindlæsning via mobilnetværk sikrer en god oplevelse for mobilbrugere. [Få flere oplysninger](https://developers.google.com/web/tools/lighthouse/audits/fast-3g)."
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | displayValueText": {
+    "message": "Interaktiv efter {timeInMs, number, seconds} sek."
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | displayValueTextWithOverride": {
+    "message": "Interaktiv på simuleret mobilnetværk efter {timeInMs, number, seconds} sek."
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | explanationLoadSlow": {
+    "message": "Din side indlæser for langsomt og bliver ikke interaktiv inden for 10 sekunder. Se mulighederne og diagnostik i sektionen \"Effektivitet\" for at finde ud af, hvordan du forbedrer den."
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | failureTitle": {
+    "message": "Sideindlæsning er ikke hurtig nok på mobilnetværk"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | title": {
+    "message": "Sideindlæsning er hurtig nok på mobilnetværk"
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | columnCategory": {
+    "message": "Kategori"
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | description": {
+    "message": "Overvej at reducere den tid, der bruges på at parse, kompilere og udføre JavaScript. Levering af mindre JavaScript-datapakker kan hjælpe med dette."
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | failureTitle": {
+    "message": "Formindsk primært trådarbejde"
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | title": {
+    "message": "Formindsker primært trådarbejde"
+  },
+  "lighthouse-core/audits/manual/pwa-cross-browser.js | description": {
+    "message": "Websites bør fungere på alle de mest populære browsere, så de når ud til flest mulige brugere. [Få flere oplysninger](https://developers.google.com/web/progressive-web-apps/checklist#site-works-cross-browser)."
+  },
+  "lighthouse-core/audits/manual/pwa-cross-browser.js | title": {
+    "message": "Websitet fungerer i forskellige browsere"
+  },
+  "lighthouse-core/audits/manual/pwa-each-page-has-url.js | description": {
+    "message": "Sørg for, at der kan føjes et dybt link til individuelle sider via en webadresse, og at denne webadresse er unik, så den kan deles på sociale medier. [Få flere oplysninger](https://developers.google.com/web/progressive-web-apps/checklist#each-page-has-a-url)."
+  },
+  "lighthouse-core/audits/manual/pwa-each-page-has-url.js | title": {
+    "message": "Hver side har en webadresse"
+  },
+  "lighthouse-core/audits/manual/pwa-page-transitions.js | description": {
+    "message": "Overgange bør være hurtige, når der trykkes på forskellige elementer, også selvom netværket er langsomt. Det er afgørende for brugerens opfattelse af effektiviteten. [Få flere oplysninger](https://developers.google.com/web/progressive-web-apps/checklist#page-transitions-dont-feel-like-they-block-on-the-network)."
+  },
+  "lighthouse-core/audits/manual/pwa-page-transitions.js | title": {
+    "message": "Det føles ikke som om sideovergange blokeres på netværket"
+  },
+  "lighthouse-core/audits/metrics/estimated-input-latency.js | description": {
+    "message": "Estimeret inputforsinkelse er en anslået værdi af, hvor længe din app er om at reagere på brugerinput i millisekunder i det travleste femsekundersvindue under en sideindlæsning. Hvis din forsinkelse er længere end 50 ms, kan brugerne opfatte din app som langsom. [Få flere oplysninger](https://developers.google.com/web/tools/lighthouse/audits/estimated-input-latency)."
+  },
+  "lighthouse-core/audits/metrics/estimated-input-latency.js | title": {
+    "message": "Estimeret inputforsinkelse"
+  },
+  "lighthouse-core/audits/metrics/first-contentful-paint.js | description": {
+    "message": "Første visning af indhold markerer tidspunktet, hvor den første tekst eller det første billede vises. [Få flere oplysninger](https://developers.google.com/web/tools/lighthouse/audits/first-contentful-paint)."
+  },
+  "lighthouse-core/audits/metrics/first-contentful-paint.js | title": {
+    "message": "Første udfyldning af indhold"
+  },
+  "lighthouse-core/audits/metrics/first-cpu-idle.js | description": {
+    "message": "Første stillestående CPU markerer det tidspunkt, hvor sidens primære tråd er stabil nok til at behandle input. [Få flere oplysninger](https://developers.google.com/web/tools/lighthouse/audits/first-interactive)."
+  },
+  "lighthouse-core/audits/metrics/first-cpu-idle.js | title": {
+    "message": "Første stillestående CPU"
+  },
+  "lighthouse-core/audits/metrics/first-meaningful-paint.js | description": {
+    "message": "Første meningsfulde visning måler, hvornår det primære indhold på en side kan ses. [Få flere oplysninger](https://developers.google.com/web/tools/lighthouse/audits/first-meaningful-paint)."
+  },
+  "lighthouse-core/audits/metrics/first-meaningful-paint.js | title": {
+    "message": "Første betydningsfulde udfyldning"
+  },
+  "lighthouse-core/audits/metrics/interactive.js | description": {
+    "message": "Tid inden interaktiv tilstand er den mængde tid, det tager, før siden er helt interaktiv. [Få flere oplysninger](https://developers.google.com/web/tools/lighthouse/audits/consistently-interactive)."
+  },
+  "lighthouse-core/audits/metrics/interactive.js | title": {
+    "message": "Tid inden interaktiv tilstand"
+  },
+  "lighthouse-core/audits/metrics/max-potential-fid.js | description": {
+    "message": "Den maksimale potentielle ventetid efter første input, som dine brugere kan opleve, er varigheden i millisekunder af den længste proces. [Få flere oplysninger](https://developers.google.com/web/updates/2018/05/first-input-delay)."
+  },
+  "lighthouse-core/audits/metrics/max-potential-fid.js | title": {
+    "message": "Maks. potentiel ventetid efter første input"
+  },
+  "lighthouse-core/audits/metrics/speed-index.js | description": {
+    "message": "Hastighedsindekset viser, hvor hurtigt indholdet på en side er visuelt udfyldt. [Få flere oplysninger](https://developers.google.com/web/tools/lighthouse/audits/speed-index)."
+  },
+  "lighthouse-core/audits/metrics/speed-index.js | title": {
+    "message": "Hastighedsindeks"
+  },
+  "lighthouse-core/audits/metrics/total-blocking-time.js | description": {
+    "message": "Summen af alle tidsrum mellem første visning af indhold og tid inden interaktiv tilstand, når proceslængden overstiger 50 ms, udtrykt i millisekunder."
+  },
+  "lighthouse-core/audits/metrics/total-blocking-time.js | title": {
+    "message": "Samlet blokeringstid"
+  },
+  "lighthouse-core/audits/network-rtt.js | description": {
+    "message": "Netværkets pingtid har stor indflydelse på ydeevnen. Hvis pingtiden til et oprindelsespunkt er lang, er det tegn på, at servere, der er tættere på brugeren, kan forbedre ydeevnen. [Få flere oplysninger](https://hpbn.co/primer-on-latency-and-bandwidth/)."
+  },
+  "lighthouse-core/audits/network-rtt.js | title": {
+    "message": "Pingtider for netværk"
+  },
+  "lighthouse-core/audits/network-server-latency.js | description": {
+    "message": "Serverforsinkelser kan have indvirkning på websitets ydeevne. Hvis serverforsinkelsen for et oprindelsespunkt er høj, er det tegn på, at serveren er overbelastet, eller at backend-ydeevnen er dårlig. [Få flere oplysninger](https://hpbn.co/primer-on-web-performance/#analyzing-the-resource-waterfall)."
+  },
+  "lighthouse-core/audits/network-server-latency.js | title": {
+    "message": "Forsinkelser for serverens backend"
+  },
+  "lighthouse-core/audits/offline-start-url.js | description": {
+    "message": "En scripttjeneste gør din webapp pålidelig ved uforudseelige netværksforhold. [Få flere oplysninger](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)."
+  },
+  "lighthouse-core/audits/offline-start-url.js | failureTitle": {
+    "message": "`start_url` svarer ikke med en 200-kode, når det er offline"
+  },
+  "lighthouse-core/audits/offline-start-url.js | title": {
+    "message": "`start_url` svarer med 200-kode, når det er offline"
+  },
+  "lighthouse-core/audits/offline-start-url.js | warningCantStart": {
+    "message": "Lighthouse kunne ikke læse `start_url` fra manifestet. `start_url` blev derfor betragtet som dokumentets webadresse. Fejlmeddelelse: \"{manifestWarning}\"."
+  },
+  "lighthouse-core/audits/performance-budget.js | columnOverBudget": {
+    "message": "Over budget"
+  },
+  "lighthouse-core/audits/performance-budget.js | description": {
+    "message": "Sørg for, at antallet af og størrelsen på netværksanmodningerne ikke overskrider målene i det angivne budget for ydeevne. [Få flere oplysninger](https://developers.google.com/web/tools/lighthouse/audits/budgets)."
+  },
+  "lighthouse-core/audits/performance-budget.js | requestCountOverBudget": {
+    "message": "{count,plural, =1{1 anmodning}one{# anmodning}other{# anmodninger}}"
+  },
+  "lighthouse-core/audits/performance-budget.js | title": {
+    "message": "Budget for ydeevne"
+  },
+  "lighthouse-core/audits/redirects-http.js | description": {
+    "message": "Hvis du allerede har konfigureret HTTPS, skal du sørge for at omdirigere al HTTP-trafik, så alle dine brugere får sikre webfunktioner. [Få flere oplysninger](https://developers.google.com/web/tools/lighthouse/audits/http-redirects-to-https)."
+  },
+  "lighthouse-core/audits/redirects-http.js | failureTitle": {
+    "message": "Omdirigerer ikke HTTP-trafik til HTTPS"
+  },
+  "lighthouse-core/audits/redirects-http.js | title": {
+    "message": "Omdirigerer HTTP-trafik til HTTPS"
+  },
+  "lighthouse-core/audits/redirects.js | description": {
+    "message": "Omdirigeringer medfører yderligere forsinkelser, inden siden kan indlæses. [Få flere oplysninger](https://developers.google.com/web/tools/lighthouse/audits/redirects)."
+  },
+  "lighthouse-core/audits/redirects.js | title": {
+    "message": "Undgå mange sideomdirigeringer"
+  },
+  "lighthouse-core/audits/resource-summary.js | description": {
+    "message": "Tilføj en budget.json-fil for at angive budgetter for antallet af og størrelsen på sideressourcer. [Få flere oplysninger](https://developers.google.com/web/tools/lighthouse/audits/budgets)."
+  },
+  "lighthouse-core/audits/resource-summary.js | displayValue": {
+    "message": "{requestCount,plural, =1{1 anmodning • {byteCount, number, bytes} kB}one{# anmodning • {byteCount, number, bytes} kB}other{# anmodninger • {byteCount, number, bytes} kB}}"
+  },
+  "lighthouse-core/audits/resource-summary.js | title": {
+    "message": "Sørg for, at antallet af anmodninger er lavt, og at overførslerne ikke er for store"
+  },
+  "lighthouse-core/audits/seo/canonical.js | description": {
+    "message": "Kanoniske links foreslår, hvilken webadresse der skal vises i søgeresultater. [Få flere oplysninger](https://web.dev/canonical)."
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationConflict": {
+    "message": "Flere webadresser ({urlList}) er modstridende"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationDifferentDomain": {
+    "message": "Peger på et andet domæne ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationInvalid": {
+    "message": "Ugyldig webadresse ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationPointsElsewhere": {
+    "message": "Peger på en anden placering for `hreflang` ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationRelative": {
+    "message": "Relativ webadresse ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationRoot": {
+    "message": "Peger på domænets rodwebadresse (startsiden) i stedet for en tilsvarende side med indhold"
+  },
+  "lighthouse-core/audits/seo/canonical.js | failureTitle": {
+    "message": "Dokumentet har ikke et gyldigt `rel=canonical`"
+  },
+  "lighthouse-core/audits/seo/canonical.js | title": {
+    "message": "Dokumentet har et gyldigt `rel=canonical`"
+  },
+  "lighthouse-core/audits/seo/font-size.js | description": {
+    "message": "Skriftstørrelser på mindre end 12 pixel er for små til at være læselige og kræver, at mobilbrugere \"kniber fingrene sammen for at zoome\" for at læse teksten. Du bør bestræbe dig på at gøre over 60 % af sideteksten større end eller lig med 12 pixel. [Få flere oplysninger](https://web.dev/font-size)."
+  },
+  "lighthouse-core/audits/seo/font-size.js | displayValue": {
+    "message": "{decimalProportion, number, extendedPercent} læselig tekst"
+  },
+  "lighthouse-core/audits/seo/font-size.js | explanationViewport": {
+    "message": "Teksten er ulæselig, fordi der ikke er et viewport-metatag, som er optimeret til mobilskærme."
+  },
+  "lighthouse-core/audits/seo/font-size.js | explanationWithDisclaimer": {
+    "message": "{decimalProportion, number, extendedPercent} af teksten er for lille (baseret på et eksempel på {decimalProportionVisited, number, extendedPercent})."
+  },
+  "lighthouse-core/audits/seo/font-size.js | failureTitle": {
+    "message": "Dokumentet bruger ikke læselige skriftstørrelser"
+  },
+  "lighthouse-core/audits/seo/font-size.js | title": {
+    "message": "Dokumentet anvender læselige skriftstørrelser"
+  },
+  "lighthouse-core/audits/seo/hreflang.js | description": {
+    "message": "hreflang-links fortæller søgemaskiner, hvilken version af en side de skal angive på listen over søgeresultater for et vilkårligt sprog eller område. [Få flere oplysninger](https://web.dev/hreflang)."
+  },
+  "lighthouse-core/audits/seo/hreflang.js | failureTitle": {
+    "message": "Dokumentet har ikke en gyldig `hreflang`"
+  },
+  "lighthouse-core/audits/seo/hreflang.js | title": {
+    "message": "Dokumentet har et gyldigt `hreflang`"
+  },
+  "lighthouse-core/audits/seo/http-status-code.js | description": {
+    "message": "Sider med ugyldige HTTP-statuskoder indekseres muligvis ikke korrekt. [Få flere oplysninger](https://web.dev/http-status-code)."
+  },
+  "lighthouse-core/audits/seo/http-status-code.js | failureTitle": {
+    "message": "HTTP-statuskoden for siden er ugyldig"
+  },
+  "lighthouse-core/audits/seo/http-status-code.js | title": {
+    "message": "HTTP-statuskoden for siden er gyldig"
+  },
+  "lighthouse-core/audits/seo/is-crawlable.js | description": {
+    "message": "Søgemaskiner kan ikke medtage dine sider i søgeresultater, hvis de ikke har tilladelse til at crawle dem. [Få flere oplysninger](https://web.dev/is-crawable)."
+  },
+  "lighthouse-core/audits/seo/is-crawlable.js | failureTitle": {
+    "message": "Siden er blokeret for indeksering"
+  },
+  "lighthouse-core/audits/seo/is-crawlable.js | title": {
+    "message": "Siden er ikke blokeret for indeksering"
+  },
+  "lighthouse-core/audits/seo/link-text.js | description": {
+    "message": "Beskrivende linktekst hjælper søgemaskiner med at forstå dit indhold. [Få flere oplysninger](https://web.dev/link-text)."
+  },
+  "lighthouse-core/audits/seo/link-text.js | displayValue": {
+    "message": "{itemCount,plural, =1{Der blev fundet 1 link}one{Der blev fundet # link}other{Der blev fundet # links}}"
+  },
+  "lighthouse-core/audits/seo/link-text.js | failureTitle": {
+    "message": "Linkene har ikke beskrivende tekst"
+  },
+  "lighthouse-core/audits/seo/link-text.js | title": {
+    "message": "Linkene har beskrivende tekst"
+  },
+  "lighthouse-core/audits/seo/manual/structured-data.js | description": {
+    "message": "Kør [testværktøjet til strukturerede data](https://search.google.com/structured-data/testing-tool/) og [Structured Data Linter](http://linter.structured-data.org/) for at validere strukturerede data. [Få flere oplysninger](https://web.dev/structured-data)."
+  },
+  "lighthouse-core/audits/seo/manual/structured-data.js | title": {
+    "message": "De strukturerede data er gyldige"
+  },
+  "lighthouse-core/audits/seo/meta-description.js | description": {
+    "message": "Metabeskrivelser kan medtages i søgeresultater for kortfattet at opsummere sideindhold. [Få flere oplysninger](https://web.dev/meta-description)."
+  },
+  "lighthouse-core/audits/seo/meta-description.js | explanation": {
+    "message": "Beskrivelsesteksten er tom."
+  },
+  "lighthouse-core/audits/seo/meta-description.js | failureTitle": {
+    "message": "Dokumentet har ikke en metabeskrivelse"
+  },
+  "lighthouse-core/audits/seo/meta-description.js | title": {
+    "message": "Dokumentet har en metabeskrivelse"
+  },
+  "lighthouse-core/audits/seo/plugins.js | description": {
+    "message": "Søgemaskiner kan ikke indeksere indhold i plugins, og mange enheder begrænser plugins eller understøtter dem ikke. [Få flere oplysninger](https://web.dev/plugins)."
+  },
+  "lighthouse-core/audits/seo/plugins.js | failureTitle": {
+    "message": "Dokumentet bruger plugins"
+  },
+  "lighthouse-core/audits/seo/plugins.js | title": {
+    "message": "Dokumentet undgår plugins"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | description": {
+    "message": "Hvis din robots.txt-fil indeholder fejl, kan crawlere muligvis ikke forstå, hvordan du vil have dit website crawlet eller indekseret. [Få flere oplysninger](https://web.dev/robots-txt)."
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | displayValueHttpBadCode": {
+    "message": "Anmodningen om robots.txt returnerede følgende HTTP-status: {statusCode}"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | displayValueValidationError": {
+    "message": "{itemCount,plural, =1{Der blev fundet 1 fejl}one{Der blev fundet # fejl}other{Der blev fundet # fejl}}"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | explanation": {
+    "message": "Lighthouse kunne ikke downloade en robots.txt-fil"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | failureTitle": {
+    "message": "robots.txt er ikke gyldig"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | title": {
+    "message": "robots.txt er gyldig"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | description": {
+    "message": "Interaktive elementer som f.eks. knapper og links skal være store nok (48 x 48 px) og have tilstrækkelig plads omkring sig for at gøre det let at trykke på dem uden at overlappe andre elementer. [Få flere oplysninger](https://web.dev/tap-targets)."
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | displayValue": {
+    "message": "{decimalProportion, number, percent} trykbare elementer med passende størrelse"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | explanationViewportMetaNotOptimized": {
+    "message": "Trykbare elementer er for små, fordi der ikke er et viewport-metatag, som er optimeret til mobilskærme"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | failureTitle": {
+    "message": "Trykbare elementer har ikke en passende størrelse"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | overlappingTargetHeader": {
+    "message": "Overlappende mål"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | tapTargetHeader": {
+    "message": "Trykbart element"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | title": {
+    "message": "Trykbare elementer har en passende størrelse"
+  },
+  "lighthouse-core/audits/service-worker.js | description": {
+    "message": "Scripttjenesten er den teknologi, der gør det muligt for din app at bruge mange funktioner til progressive webapps, f.eks. offline, tilføjelse på startskærme og push-notifikationer. [Få flere oplysninger](https://developers.google.com/web/tools/lighthouse/audits/registered-service-worker)."
+  },
+  "lighthouse-core/audits/service-worker.js | explanationBadManifest": {
+    "message": "Denne side styres af en scripttjeneste, men der blev ikke fundet noget `start_url`, fordi manifestet ikke kunne parse den som en gyldig JSON-fil"
+  },
+  "lighthouse-core/audits/service-worker.js | explanationBadStartUrl": {
+    "message": "Denne side styres af en scripttjeneste, men `start_url` ({startUrl}) er ikke omfattet af scripttjenesten ({scopeUrl})"
+  },
+  "lighthouse-core/audits/service-worker.js | explanationNoManifest": {
+    "message": "Denne side styres af en scripttjeneste, men der blev ikke fundet nogen `start_url`, da der ikke blev hentet noget manifest."
+  },
+  "lighthouse-core/audits/service-worker.js | explanationOutOfScope": {
+    "message": "Dette website har én eller flere scripttjenester, men siden ({pageUrl}) er ikke omfattet af disse."
+  },
+  "lighthouse-core/audits/service-worker.js | failureTitle": {
+    "message": "Registrerer ikke en scripttjeneste, der styrer siden og `start_url`"
+  },
+  "lighthouse-core/audits/service-worker.js | title": {
+    "message": "Registrerer en scripttjeneste, der styrer siden og `start_url`"
+  },
+  "lighthouse-core/audits/splash-screen.js | description": {
+    "message": "En splash-skærm med tema sikrer, at brugerne får en god oplevelse, når de starter din app på deres startskærm. [Få flere oplysninger](https://developers.google.com/web/tools/lighthouse/audits/custom-splash-screen)."
+  },
+  "lighthouse-core/audits/splash-screen.js | failureTitle": {
+    "message": "Websitet er ikke konfigureret til en tilpasset splash-skærm"
+  },
+  "lighthouse-core/audits/splash-screen.js | title": {
+    "message": "Konfigureret til en tilpasset splash-skærm"
+  },
+  "lighthouse-core/audits/themed-omnibox.js | description": {
+    "message": "Der kan angives et tema for browserens adresselinje, som matcher dit website. [Få flere oplysninger](https://developers.google.com/web/tools/lighthouse/audits/address-bar)."
+  },
+  "lighthouse-core/audits/themed-omnibox.js | failureTitle": {
+    "message": "Angiver ikke en temafarve til adresselinjen."
+  },
+  "lighthouse-core/audits/themed-omnibox.js | title": {
+    "message": "Angiver en temafarve til adresselinjen."
+  },
+  "lighthouse-core/audits/third-party-summary.js | columnBlockingTime": {
+    "message": "Tidspunkt for blokering af den primære tråd"
+  },
+  "lighthouse-core/audits/third-party-summary.js | columnThirdParty": {
+    "message": "Tredjepart"
+  },
+  "lighthouse-core/audits/third-party-summary.js | description": {
+    "message": "Kode fra tredjeparter kan have en væsentlig indvirkning på indlæsningen. Begræns antallet af overflødige tredjepartsudbydere, og prøv at indlæse kode fra tredjeparter, når indlæsningen af siden næsten er færdig. [Få flere oplysninger](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/loading-third-party-javascript/)."
+  },
+  "lighthouse-core/audits/third-party-summary.js | displayValue": {
+    "message": "Tredjepartskode blokerede den primære tråd i {timeInMs, number, milliseconds} ms"
+  },
+  "lighthouse-core/audits/third-party-summary.js | failureTitle": {
+    "message": "Reducer virkningen af tredjepartskode"
+  },
+  "lighthouse-core/audits/third-party-summary.js | title": {
+    "message": "Tredjepartsbrug"
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | description": {
+    "message": "TTFB (Time To First Byte) identificerer tidspunktet for, hvornår din server sender et svar. [Få flere oplysninger](https://developers.google.com/web/tools/lighthouse/audits/ttfb)."
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | displayValue": {
+    "message": "Roddokumentet tog {timeInMs, number, milliseconds} ms"
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | failureTitle": {
+    "message": "Reducer serversvartider (TTFB, Time To First Byte)"
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | title": {
+    "message": "Serversvartiderne er korte (TTFB, Time To First Byte)"
+  },
+  "lighthouse-core/audits/user-timings.js | columnDuration": {
+    "message": "Varighed"
+  },
+  "lighthouse-core/audits/user-timings.js | columnStartTime": {
+    "message": "Starttidspunkt"
+  },
+  "lighthouse-core/audits/user-timings.js | columnType": {
+    "message": "Type"
+  },
+  "lighthouse-core/audits/user-timings.js | description": {
+    "message": "Du kan også vælge at bruge User Timing API som værktøj til din app for at måle appens ydeevne i den virkelige verden i forbindelse med vigtige brugeroplevelser. [Få flere oplysninger](https://developers.google.com/web/tools/lighthouse/audits/user-timing)."
+  },
+  "lighthouse-core/audits/user-timings.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 brugstid}one{# brugstid}other{# brugstider}}"
+  },
+  "lighthouse-core/audits/user-timings.js | title": {
+    "message": "Brugstider markerer og måler"
+  },
+  "lighthouse-core/audits/uses-rel-preconnect.js | crossoriginWarning": {
+    "message": "Der blev fundet et <link>, der kan oprette forbindelse på forhånd for \"{securityOrigin}\", men det blev ikke brugt af browseren. Tjek, at du bruger attributten `crossorigin` korrekt."
+  },
+  "lighthouse-core/audits/uses-rel-preconnect.js | description": {
+    "message": "Overvej at tilføje ressourcehints til `preconnect` eller `dns-prefetch` for at oprette tidlige forbindelser til vigtige tredjepartswebsites. [Få flere oplysninger](https://developers.google.com/web/fundamentals/performance/resource-prioritization#preconnect)."
+  },
+  "lighthouse-core/audits/uses-rel-preconnect.js | title": {
+    "message": "Opret forbindelse på forhånd til påkrævede websites"
+  },
+  "lighthouse-core/audits/uses-rel-preload.js | crossoriginWarning": {
+    "message": "Der blev fundet et <link> til forudindlæsning for \"{preloadURL}\", men det blev ikke brugt af browseren. Tjek, at du bruger attributten `crossorigin` korrekt."
+  },
+  "lighthouse-core/audits/uses-rel-preload.js | description": {
+    "message": "Overvej at bruge `<link rel=preload>` til at prioritere hentning af ressourcer, der er anmodet om senere i sideindlæsningen. [Få flere oplysninger](https://developers.google.com/web/tools/lighthouse/audits/preload)."
+  },
+  "lighthouse-core/audits/uses-rel-preload.js | title": {
+    "message": "Forudindlæs vigtige anmodninger"
+  },
+  "lighthouse-core/audits/viewport.js | description": {
+    "message": "Tilføj et `<meta name=\"viewport\">`-tag for at optimere din app til mobilskærme. [Få flere oplysninger](https://developers.google.com/web/tools/lighthouse/audits/has-viewport-meta-tag)."
+  },
+  "lighthouse-core/audits/viewport.js | explanationNoTag": {
+    "message": "Der blev ikke fundet noget `<meta name=\"viewport\">`-tag"
+  },
+  "lighthouse-core/audits/viewport.js | failureTitle": {
+    "message": "Der ikke noget `<meta name=\"viewport\">`-tag med `width` eller `initial-scale`"
+  },
+  "lighthouse-core/audits/viewport.js | title": {
+    "message": "Der er et `<meta name=\"viewport\">`-tag med `width` eller `initial-scale`"
+  },
+  "lighthouse-core/audits/without-javascript.js | description": {
+    "message": "Din app bør vise noget indhold, når JavaScript er deaktiveret, også selvom det bare er en advarsel til brugeren om, at JavaScript er påkrævet for at bruge appen. [Få flere oplysninger](https://developers.google.com/web/tools/lighthouse/audits/no-js)."
+  },
+  "lighthouse-core/audits/without-javascript.js | explanation": {
+    "message": "Teksten på siden bør gengive noget indhold, hvis dens script ikke er tilgængelig."
+  },
+  "lighthouse-core/audits/without-javascript.js | failureTitle": {
+    "message": "Angiver ikke reserveindhold, når JavaScript ikke er tilgængelig"
+  },
+  "lighthouse-core/audits/without-javascript.js | title": {
+    "message": "Indeholder noget indhold, når JavaScript ikke er tilgængelig"
+  },
+  "lighthouse-core/audits/works-offline.js | description": {
+    "message": "Hvis du er ved at udvikle en progressiv webapp, kan du overveje at bruge en scripttjeneste, så din app kan fungere offline. [Få flere oplysninger](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)."
+  },
+  "lighthouse-core/audits/works-offline.js | failureTitle": {
+    "message": "Den aktuelle side svarer ikke med en 200-kode, når den er offline"
+  },
+  "lighthouse-core/audits/works-offline.js | title": {
+    "message": "Den aktuelle side svarer med en 200-kode, når den er offline"
+  },
+  "lighthouse-core/audits/works-offline.js | warningNoLoad": {
+    "message": "Siden indlæser muligvis ikke offline, da din testwebadresse ({requested}) blev omdirigeret til \"{final}\". Prøv at teste den anden webadresse direkte."
+  },
+  "lighthouse-core/config/default-config.js | a11yAriaGroupDescription": {
+    "message": "Disse er muligheder for at forbedre brugen af ARIA i din app, hvilket kan forbedre oplevelsen for brugere af hjælpeteknologi, f.eks. skærmlæsere."
+  },
+  "lighthouse-core/config/default-config.js | a11yAriaGroupTitle": {
+    "message": "ARIA"
+  },
+  "lighthouse-core/config/default-config.js | a11yAudioVideoGroupDescription": {
+    "message": "Disse er muligheder for at angive alternativt indhold for lyd og video. Dette kan forbedre oplevelsen for brugere med nedsat hørelse eller syn."
+  },
+  "lighthouse-core/config/default-config.js | a11yAudioVideoGroupTitle": {
+    "message": "Lyd og video"
+  },
+  "lighthouse-core/config/default-config.js | a11yBestPracticesGroupDescription": {
+    "message": "Disse elementer fremhæver almindelige optimale løsninger for hjælpefunktioner."
+  },
+  "lighthouse-core/config/default-config.js | a11yBestPracticesGroupTitle": {
+    "message": "Optimale løsninger"
+  },
+  "lighthouse-core/config/default-config.js | a11yCategoryDescription": {
+    "message": "Disse kontroller fremhæver muligheder for at [forbedre tilgængeligheden af din webapp](https://developers.google.com/web/fundamentals/accessibility). Det er kun visse tilgængelighedsproblemer, der kan registreres automatisk, og derfor anbefales det også at teste manuelt."
+  },
+  "lighthouse-core/config/default-config.js | a11yCategoryManualDescription": {
+    "message": "Disse elementer omhandler områder, som et automatisk testværktøj ikke kan dække. Få flere oplysninger ved at læse vores vejledning i, hvordan du [udfører en gennemgang af hjælpefunktioner](https://developers.google.com/web/fundamentals/accessibility/how-to-review)."
+  },
+  "lighthouse-core/config/default-config.js | a11yCategoryTitle": {
+    "message": "Hjælpefunktioner"
+  },
+  "lighthouse-core/config/default-config.js | a11yColorContrastGroupDescription": {
+    "message": "Disse er muligheder for at forbedre forståelsen af dit indhold."
+  },
+  "lighthouse-core/config/default-config.js | a11yColorContrastGroupTitle": {
+    "message": "Kontrast"
+  },
+  "lighthouse-core/config/default-config.js | a11yLanguageGroupDescription": {
+    "message": "Disse er muligheder for at gøre det nemmere for brugere med forskellige landestandarder at forstå dit indhold."
+  },
+  "lighthouse-core/config/default-config.js | a11yLanguageGroupTitle": {
+    "message": "Internationalisering og lokalisering"
+  },
+  "lighthouse-core/config/default-config.js | a11yNamesLabelsGroupDescription": {
+    "message": "Disse er muligheder for at forbedre semantikken i styringen af din app. De kan forbedre oplevelsen for brugere af hjælpeteknologi, f.eks. skærmlæsere."
+  },
+  "lighthouse-core/config/default-config.js | a11yNamesLabelsGroupTitle": {
+    "message": "Navne og etiketter"
+  },
+  "lighthouse-core/config/default-config.js | a11yNavigationGroupDescription": {
+    "message": "Disse er muligheder for at forbedre tastaturnavigation i din app."
+  },
+  "lighthouse-core/config/default-config.js | a11yNavigationGroupTitle": {
+    "message": "Navigation"
+  },
+  "lighthouse-core/config/default-config.js | a11yTablesListsVideoGroupDescription": {
+    "message": "Disse er muligheder for at forbedre oplevelsen af oplæste tabel- eller listedata ved hjælp af hjælpeteknologi som f.eks. en skærmlæser."
+  },
+  "lighthouse-core/config/default-config.js | a11yTablesListsVideoGroupTitle": {
+    "message": "Tabeller og lister"
+  },
+  "lighthouse-core/config/default-config.js | bestPracticesCategoryTitle": {
+    "message": "Optimale løsninger"
+  },
+  "lighthouse-core/config/default-config.js | budgetsGroupDescription": {
+    "message": "Budgetter for ydeevne angiver standarder for dit websites ydeevne."
+  },
+  "lighthouse-core/config/default-config.js | budgetsGroupTitle": {
+    "message": "Budgetter"
+  },
+  "lighthouse-core/config/default-config.js | diagnosticsGroupDescription": {
+    "message": "Få flere oplysninger om din apps ydeevne. Resultatet [påvirkes ikke direkte](https://github.com/GoogleChrome/lighthouse/blob/d2ec9ffbb21de9ad1a0f86ed24575eda32c796f0/docs/scoring.md#how-are-the-scores-weighted) af disse tal."
+  },
+  "lighthouse-core/config/default-config.js | diagnosticsGroupTitle": {
+    "message": "Diagnostik"
+  },
+  "lighthouse-core/config/default-config.js | firstPaintImprovementsGroupDescription": {
+    "message": "Det vigtigste aspekt af effektivitet er, hvor hurtigt pixels gengives på skærmen. Vigtige metrics: Første udfyldning af indhold, Første betydningsfulde udfyldning"
+  },
+  "lighthouse-core/config/default-config.js | firstPaintImprovementsGroupTitle": {
+    "message": "Forbedringer af første udfyldning"
+  },
+  "lighthouse-core/config/default-config.js | loadOpportunitiesGroupDescription": {
+    "message": "Disse forslag kan være med til at forbedre indlæsningstiden for din side. De [berører ikke direkte](https://github.com/GoogleChrome/lighthouse/blob/d2ec9ffbb21de9ad1a0f86ed24575eda32c796f0/docs/scoring.md#how-are-the-scores-weighted) resultatet."
+  },
+  "lighthouse-core/config/default-config.js | loadOpportunitiesGroupTitle": {
+    "message": "Muligheder"
+  },
+  "lighthouse-core/config/default-config.js | metricGroupTitle": {
+    "message": "Metrics"
+  },
+  "lighthouse-core/config/default-config.js | overallImprovementsGroupDescription": {
+    "message": "Gør den overordnede indlæsning bedre, så siden hurtigst muligt bliver responsiv og klar til brug. Vigtige metrics: Tid inden interaktiv tilstand, Hastighedsindeks"
+  },
+  "lighthouse-core/config/default-config.js | overallImprovementsGroupTitle": {
+    "message": "Overordnede forbedringer"
+  },
+  "lighthouse-core/config/default-config.js | performanceCategoryTitle": {
+    "message": "Effektivitet"
+  },
+  "lighthouse-core/config/default-config.js | pwaCategoryDescription": {
+    "message": "Disse tjek validerer aspekterne af en progressiv webapp. [Få flere oplysninger](https://developers.google.com/web/progressive-web-apps/checklist)."
+  },
+  "lighthouse-core/config/default-config.js | pwaCategoryManualDescription": {
+    "message": "Disse tjek kræves af den grundlæggende [tjekliste til progressive webapps](https://developers.google.com/web/progressive-web-apps/checklist), men de udføres ikke automatisk af Lighthouse. De påvirker ikke dine resultater, men det er vigtigt, at du bekræfter dem manuelt."
+  },
+  "lighthouse-core/config/default-config.js | pwaCategoryTitle": {
+    "message": "Progressiv webapp"
+  },
+  "lighthouse-core/config/default-config.js | pwaFastReliableGroupTitle": {
+    "message": "Hurtig og pålidelig"
+  },
+  "lighthouse-core/config/default-config.js | pwaInstallableGroupTitle": {
+    "message": "Websitet kan installeres"
+  },
+  "lighthouse-core/config/default-config.js | pwaOptimizedGroupTitle": {
+    "message": "PWA-optimeret"
+  },
+  "lighthouse-core/config/default-config.js | seoCategoryDescription": {
+    "message": "Disse kontroller sikrer, at din side er optimeret i forhold til rangering i søgemaskineresultater. Der findes andre faktorer, som Lighthouse ikke tjekker, og som kan påvirke din rangering i søgninger. [Få flere oplysninger](https://support.google.com/webmasters/answer/35769)."
+  },
+  "lighthouse-core/config/default-config.js | seoCategoryManualDescription": {
+    "message": "Kør disse yderligere valideringer på dit website for at tjekke andre optimale SEO-løsninger."
+  },
+  "lighthouse-core/config/default-config.js | seoCategoryTitle": {
+    "message": "SEO"
+  },
+  "lighthouse-core/config/default-config.js | seoContentGroupDescription": {
+    "message": "Formatér din HTML på en sådan måde, at den gør det lettere for crawlere at forstå indholdet i din app."
+  },
+  "lighthouse-core/config/default-config.js | seoContentGroupTitle": {
+    "message": "Optimale løsninger for indhold"
+  },
+  "lighthouse-core/config/default-config.js | seoCrawlingGroupDescription": {
+    "message": "Hvis dit website skal vises i søgeresultater, skal crawlere have adgang til din app."
+  },
+  "lighthouse-core/config/default-config.js | seoCrawlingGroupTitle": {
+    "message": "Crawl og indeksering"
+  },
+  "lighthouse-core/config/default-config.js | seoMobileGroupDescription": {
+    "message": "Sørg for, at dine sider er mobilvenlige, så brugere ikke behøver at knibe fingrene sammen eller zoome ind for at se indholdet. [Få flere oplysninger](https://developers.google.com/search/mobile-sites/)."
+  },
+  "lighthouse-core/config/default-config.js | seoMobileGroupTitle": {
+    "message": "Mobilvenlig"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnCacheTTL": {
+    "message": "Cache-TTL"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnLocation": {
+    "message": "Placering"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnName": {
+    "message": "Navn"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnRequests": {
+    "message": "Anmodninger"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnResourceType": {
+    "message": "Ressourcetype"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnSize": {
+    "message": "Størrelse"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnTimeSpent": {
+    "message": "Tidsforbrug"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnTransferSize": {
+    "message": "Overførselsstørrelse"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnURL": {
+    "message": "Webadresse"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnWastedBytes": {
+    "message": "Potentiel besparelse"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnWastedMs": {
+    "message": "Potentiel besparelse"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | displayValueByteSavings": {
+    "message": "Potentiel besparelse på {wastedBytes, number, bytes} kB"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | displayValueMsSavings": {
+    "message": "Potentiel besparelse på {wastedMs, number, milliseconds} ms"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | documentResourceType": {
+    "message": "Dokument"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | fontResourceType": {
+    "message": "Skrifttype"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | imageResourceType": {
+    "message": "Billede"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | mediaResourceType": {
+    "message": "Medier"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | ms": {
+    "message": "{timeInMs, number, milliseconds} ms"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | otherResourceType": {
+    "message": "Andet"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | scriptResourceType": {
+    "message": "Script"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | seconds": {
+    "message": "{timeInMs, number, seconds} sek."
+  },
+  "lighthouse-core/lib/i18n/i18n.js | stylesheetResourceType": {
+    "message": "Typografiark"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | thirdPartyResourceType": {
+    "message": "Tredjepart"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | totalResourceType": {
+    "message": "I alt"
+  },
+  "lighthouse-core/lib/lh-error.js | badTraceRecording": {
+    "message": "Der opstod en fejl ved registreringen af din sideindlæsning. Kør Lighthouse igen. ({errorCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | criTimeout": {
+    "message": "Der opstod timeout under ventetiden til den indledende forbindelse til Debugger-protokollen."
+  },
+  "lighthouse-core/lib/lh-error.js | didntCollectScreenshots": {
+    "message": "Chrome indsamlede ikke nogen screenshots under sideindlæsningen. Sørg for, at der er synligt indhold på siden, og prøv derefter at køre Lighthouse igen. ({errorCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | dnsFailure": {
+    "message": "DNS-serverne kunne ikke løse problemet med det angivne domæne."
+  },
+  "lighthouse-core/lib/lh-error.js | erroredRequiredArtifact": {
+    "message": "Der opstod en fejl i den obligatoriske {artifactName}-indsamler: {errorMessage}"
+  },
+  "lighthouse-core/lib/lh-error.js | internalChromeError": {
+    "message": "Der opstod en intern Chrome-fejl. Genstart Chrome, og prøv at køre Lighthouse igen."
+  },
+  "lighthouse-core/lib/lh-error.js | missingRequiredArtifact": {
+    "message": "Den obligatoriske {artifactName}-indsamler blev ikke kørt."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailed": {
+    "message": "Lighthouse kunne ikke indlæse den side, du anmodede om. Sørg for at teste den rigtige webadresse, og tjek, at serveren svarer korrekt på alle anmodninger."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedHung": {
+    "message": "Lighthouse kunne ikke indlæse den webadresse, du anmodede om, da siden stoppede med at svare."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedInsecure": {
+    "message": "Den webadresse, du har angivet, har ikke et gyldigt sikkerhedscertifikat. {securityMessages}"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedInterstitial": {
+    "message": "Chrome forhindrede indlæsning af en side med en mellemliggende annonce. Sørg for, at du tester den rigtige webadresse, og tjek, at serveren svarer korrekt på alle anmodninger."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedWithDetails": {
+    "message": "Lighthouse kunne ikke indlæse den side, du anmodede om. Sørg for, at du tester den rigtige webadresse, og tjek, at serveren svarer korrekt på alle anmodninger. (Info: {errorDetails})"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedWithStatusCode": {
+    "message": "Lighthouse kunne ikke indlæse den side, du anmodede om. Sørg for, at du tester den rigtige webadresse, og tjek, at serveren svarer korrekt på alle anmodninger. (Statuskode: {statusCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadTookTooLong": {
+    "message": "Det tog for lang tid at indlæse siden. Benyt mulighederne i rapporten for at reducere indlæsningstiden for din side. Prøv derefter at køre Lighthouse igen. ({errorCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | protocolTimeout": {
+    "message": "DevTools-protokollen har overskredet den tilladte ventetid for svar. (Metode: {protocolMethod})"
+  },
+  "lighthouse-core/lib/lh-error.js | requestContentTimeout": {
+    "message": "Hentning af ressourceindhold har taget længere tid end tilladt"
+  },
+  "lighthouse-core/lib/lh-error.js | urlInvalid": {
+    "message": "Den angivne webadresse lader til at være ugyldig."
+  },
+  "lighthouse-core/report/html/renderer/util.js | auditGroupExpandTooltip": {
+    "message": "Se revisioner"
+  },
+  "lighthouse-core/report/html/renderer/util.js | crcInitialNavigation": {
+    "message": "Indledende navigation"
+  },
+  "lighthouse-core/report/html/renderer/util.js | crcLongestDurationLabel": {
+    "message": "Maksimal forsinkelse for kritisk sti:"
+  },
+  "lighthouse-core/report/html/renderer/util.js | errorLabel": {
+    "message": "Der opstod en fejl"
+  },
+  "lighthouse-core/report/html/renderer/util.js | errorMissingAuditInfo": {
+    "message": "Rapportfejl: Der er ingen revisionsoplysninger"
+  },
+  "lighthouse-core/report/html/renderer/util.js | labDataTitle": {
+    "message": "Laboratoriedata"
+  },
+  "lighthouse-core/report/html/renderer/util.js | lsPerformanceCategoryDescription": {
+    "message": "[Lighthouse](https://developers.google.com/web/tools/lighthouse/)-analyse af den aktuelle side på et emuleret mobilnetværk. Værdierne er estimater og kan variere."
+  },
+  "lighthouse-core/report/html/renderer/util.js | manualAuditsGroupTitle": {
+    "message": "Yderligere elementer, der skal tjekkes manuelt"
+  },
+  "lighthouse-core/report/html/renderer/util.js | notApplicableAuditsGroupTitle": {
+    "message": "Ikke relevant"
+  },
+  "lighthouse-core/report/html/renderer/util.js | opportunityResourceColumnLabel": {
+    "message": "Mulighed"
+  },
+  "lighthouse-core/report/html/renderer/util.js | opportunitySavingsColumnLabel": {
+    "message": "Estimeret tidsbesparelse"
+  },
+  "lighthouse-core/report/html/renderer/util.js | passedAuditsGroupTitle": {
+    "message": "Beståede revisioner"
+  },
+  "lighthouse-core/report/html/renderer/util.js | snippetCollapseButtonLabel": {
+    "message": "Skjul uddrag"
+  },
+  "lighthouse-core/report/html/renderer/util.js | snippetExpandButtonLabel": {
+    "message": "Udvid uddrag"
+  },
+  "lighthouse-core/report/html/renderer/util.js | thirdPartyResourcesLabel": {
+    "message": "Vis ressourcer fra tredjeparter"
+  },
+  "lighthouse-core/report/html/renderer/util.js | toplevelWarningsMessage": {
+    "message": "Der blev registreret problemer, som påvirkede denne kørsel af Lighthouse:"
+  },
+  "lighthouse-core/report/html/renderer/util.js | varianceDisclaimer": {
+    "message": "Værdierne er estimater og kan variere. Resultatet er [kun baseret på disse metrics](https://github.com/GoogleChrome/lighthouse/blob/d2ec9ffbb21de9ad1a0f86ed24575eda32c796f0/docs/scoring.md#how-are-the-scores-weighted)."
+  },
+  "lighthouse-core/report/html/renderer/util.js | warningAuditsGroupTitle": {
+    "message": "Bestod revisioner, men med advarsler"
+  },
+  "lighthouse-core/report/html/renderer/util.js | warningHeader": {
+    "message": "Advarsler! "
+  },
+  "stack-packs/packs/wordpress.js | efficient_animated_content": {
+    "message": "Overvej at uploade din gif til en tjeneste, hvor den kan integreres som en HTML5-video."
+  },
+  "stack-packs/packs/wordpress.js | offscreen_images": {
+    "message": "Installer et [WordPress-plugin til udskudt indlæsning](https://wordpress.org/plugins/search/lazy+load/), der gør det muligt at udskyde eventuelle billeder, som ikke er på skærmen, eller skifte til et tema, der leverer denne funktionalitet. Overvej også at bruge [AMP-pluginnet](https://wordpress.org/plugins/amp/)."
+  },
+  "stack-packs/packs/wordpress.js | render_blocking_resources": {
+    "message": "Der er en række WordPress-plugins, som kan hjælpe dig med at [indlejre vigtige aktiver](https://wordpress.org/plugins/search/critical+css/) eller [udskyde mindre vigtige ressourcer](https://wordpress.org/plugins/search/defer+css+javascript/). Vær opmærksom på, at optimeringer via disse plugins kan ødelægge funktioner i dine temaer og plugins. Du bliver derfor sandsynligvis nødt til at foretage kodeændringer."
+  },
+  "stack-packs/packs/wordpress.js | time_to_first_byte": {
+    "message": "Temaer, plugins og serverspecifikationer påvirker alle serverens svartid. Overvej at finde et mere optimeret tema, vælge et plugin til optimering og/eller opgradere din server."
+  },
+  "stack-packs/packs/wordpress.js | total_byte_weight": {
+    "message": "Overvej at vise uddrag på dine opslagslister (f.eks. via tagget Mere), reducere antallet af viste opslag på en given side, opdele dine lange opslag i flere sider eller bruge et plugin til at indlæse kommentarer langsomt."
+  },
+  "stack-packs/packs/wordpress.js | unminified_css": {
+    "message": "En række [WordPress-plugins](https://wordpress.org/plugins/search/minify+css/) kan gøre dit website hurtigere ved at sammenkæde, formindske og komprimere dine typografier. Det kan også være en god idé at bruge en buildproces til at udføre denne formindskelse på forhånd, hvis det er muligt."
+  },
+  "stack-packs/packs/wordpress.js | unminified_javascript": {
+    "message": "En række [WordPress-plugins](https://wordpress.org/plugins/search/minify+javascript/) kan gøre dit website hurtigere ved at sammenkæde, formindske og komprimere dine scripts. Det kan også være en god idé at bruge en buildproces til at udføre denne formindskelse på forhånd, hvis det er muligt."
+  },
+  "stack-packs/packs/wordpress.js | unused_css_rules": {
+    "message": "Overvej at reducere eller ændre antallet af [WordPress-plugins](https://wordpress.org/plugins/), der indlæser ubrugt CSS på din side. Hvis du vil identificere plugins, der tilføjer irrelevant CSS, kan du prøve at køre [kodedækning](https://developers.google.com/web/updates/2017/04/devtools-release-notes#coverage) i Chrome DevTools. Du kan identificere det problematiske tema/plugin via webadressen for typografiarket. Kig efter plugins med mange typografiark på listen, som indeholder meget rødt i kodedækningen. Et plugin bør kun sætte et typografiark i kø, hvis det rent faktisk anvendes på siden."
+  },
+  "stack-packs/packs/wordpress.js | unused_javascript": {
+    "message": "Overvej at reducere eller ændre antallet af [WordPress-plugins](https://wordpress.org/plugins/), der indlæser ubrugt JavaScript på din side. Hvis du vil identificere plugins, der tilføjer irrelevant JavaScript, kan du prøve at køre [kodedækning](https://developers.google.com/web/updates/2017/04/devtools-release-notes#coverage) i Chrome DevTools. Du kan identificere det problematiske tema/plugin via webadressen for scriptet. Kig efter plugins med mange scripts på listen, som indeholder meget rødt i kodedækningen. Et plugin bør kun sætte et script i kø, hvis det rent faktisk anvendes på siden."
+  },
+  "stack-packs/packs/wordpress.js | uses_long_cache_ttl": {
+    "message": "Læs om [browserens cachelagring i WordPress](https://codex.wordpress.org/WordPress_Optimization#Browser_Caching)."
+  },
+  "stack-packs/packs/wordpress.js | uses_optimized_images": {
+    "message": "Overvej at bruge et [WordPress-plugin til billedoptimering](https://wordpress.org/plugins/search/optimize+images/), der komprimerer dine billeder uden at gå på kompromis med kvaliteten."
+  },
+  "stack-packs/packs/wordpress.js | uses_responsive_images": {
+    "message": "Upload billeder direkte via [mediesamlingen](https://codex.wordpress.org/Media_Library_Screen) for at sikre, at de påkrævede billedstørrelser er tilgængelige, og indsæt dem derefter fra mediesamlingen, eller brug billedwidgetten til at sikre, at de optimale billedstørrelser anvendes (inklusive dem til responsive skillepunkter). Undgå at bruge billeder i `Full Size`, medmindre dimensionerne er passende til brugen. [Få flere oplysninger](https://codex.wordpress.org/Inserting_Images_into_Posts_and_Pages#Image_Size)."
+  },
+  "stack-packs/packs/wordpress.js | uses_text_compression": {
+    "message": "Du kan aktivere tekstkomprimering ved konfigurationen af din webserver."
+  },
+  "stack-packs/packs/wordpress.js | uses_webp_images": {
+    "message": "Overvej at bruge et [plugin](https://wordpress.org/plugins/search/convert+webp/) eller en tjeneste, der automatisk konverterer dine uploadede billeder til deres optimale formater."
+  }
+}
diff --git a/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/de.json b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/de.json
new file mode 100644
index 0000000..51fb43eb
--- /dev/null
+++ b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/de.json
@@ -0,0 +1,1541 @@
+{
+  "lighthouse-core/audits/accessibility/accesskeys.js | description": {
+    "message": "Anhand von Tastenkombinationen können Nutzer schnell einen Bereich der Seite in den Fokus rücken. Damit die Navigation wie vorgesehen funktioniert, muss jede Tastenkombination eindeutig sein. [Weitere Informationen.](https://web.dev/accesskeys/)"
+  },
+  "lighthouse-core/audits/accessibility/accesskeys.js | failureTitle": {
+    "message": "`[accesskey]`-Werte sind nicht eindeutig"
+  },
+  "lighthouse-core/audits/accessibility/accesskeys.js | title": {
+    "message": "`[accesskey]`-Werte sind eindeutig"
+  },
+  "lighthouse-core/audits/accessibility/aria-allowed-attr.js | description": {
+    "message": "Jede ARIA-`role` unterstützt eine bestimmte Auswahl an `aria-*`-Attributen. Wenn sie jedoch falsch zugeordnet sind, werden die `aria-*`-Attribute ungültig. [Weitere Informationen.](https://web.dev/aria-allowed-attr/)"
+  },
+  "lighthouse-core/audits/accessibility/aria-allowed-attr.js | failureTitle": {
+    "message": "`[aria-*]`-Attribute stimmen nicht mit ihren Rollen überein"
+  },
+  "lighthouse-core/audits/accessibility/aria-allowed-attr.js | title": {
+    "message": "`[aria-*]`-Attribute entsprechen ihren Rollen"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-attr.js | description": {
+    "message": "Für einige ARIA-Rollen sind Attribute erforderlich, die Screenreadern den Zustand des Elements beschreiben. [Weitere Informationen.](https://web.dev/aria-required-attr/)"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-attr.js | failureTitle": {
+    "message": "`[role]`-Elemente weisen nicht alle erforderlichen `[aria-*]`-Attribute auf"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-attr.js | title": {
+    "message": "`[role]`-Elemente verfügen über alle erforderlichen `[aria-*]`-Attribute"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-children.js | description": {
+    "message": "Einige übergeordnete ARIA-Rollen müssen bestimmte untergeordnete Rollen enthalten, damit sie die beabsichtigten Hilfsfunktionen erfüllen können. [Weitere Informationen.](https://web.dev/aria-required-children/)"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-children.js | failureTitle": {
+    "message": "Bei Elementen mit `[role]`, die bestimmte untergeordnete `[role]`-Elemente erfordern, fehlen diese untergeordneten Elemente."
+  },
+  "lighthouse-core/audits/accessibility/aria-required-children.js | title": {
+    "message": "Bei Elementen mit `[role]`, die bestimmte untergeordnete `[role]`-Elemente erfordern, sind diese untergeordneten Elemente vorhanden"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-parent.js | description": {
+    "message": "Einige untergeordnete ARIA-Rollen müssen in bestimmten übergeordneten Rollen enthalten sein, damit sie die beabsichtigten Hilfsfunktionen erfüllen können. [Weitere Informationen.](https://web.dev/aria-required-parent/)"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-parent.js | failureTitle": {
+    "message": "`[role]`-Elemente sind nicht ihren jeweils erforderlichen übergeordneten Elementen untergeordnet"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-parent.js | title": {
+    "message": "`[role]`-Elemente sind ihren jeweils erforderlichen übergeordneten Elementen untergeordnet"
+  },
+  "lighthouse-core/audits/accessibility/aria-roles.js | description": {
+    "message": "Für ARIA-Rollen müssen gültige Werte angegeben sein, damit sie die beabsichtigten Hilfsfunktionen erfüllen können. [Weitere Informationen.](https://web.dev/aria-roles/)"
+  },
+  "lighthouse-core/audits/accessibility/aria-roles.js | failureTitle": {
+    "message": "`[role]`-Werte sind ungültig"
+  },
+  "lighthouse-core/audits/accessibility/aria-roles.js | title": {
+    "message": "`[role]`-Werte sind gültig"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr-value.js | description": {
+    "message": "Hilfstechnologien wie Screenreader können ARIA-Attribute mit ungültigen Werten nicht interpretieren. [Weitere Informationen.](https://web.dev/aria-valid-attr-value/)"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr-value.js | failureTitle": {
+    "message": "`[aria-*]`-Attribute weisen keine gültigen Werte auf"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr-value.js | title": {
+    "message": "`[aria-*]`-Attribute weisen gültige Werte auf"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr.js | description": {
+    "message": "Hilfstechnologien wie Screenreader können ARIA-Attribute mit ungültigen Namen nicht interpretieren. [Weitere Informationen.](https://web.dev/aria-valid-attr/)"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr.js | failureTitle": {
+    "message": "`[aria-*]`-Attribute sind ungültig oder falsch geschrieben"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr.js | title": {
+    "message": "`[aria-*]`-Attribute sind gültig und richtig geschrieben"
+  },
+  "lighthouse-core/audits/accessibility/audio-caption.js | description": {
+    "message": "Durch Untertitel sind Audioelemente auch für Gehörlose und Hörgeschädigte nutzbar, da sie wichtige Informationen zur sprechenden Person und zum Inhalt des Gesprächs sowie andere nonverbale Informationen enthalten. [Weitere Informationen.](https://web.dev/audio-caption/)"
+  },
+  "lighthouse-core/audits/accessibility/audio-caption.js | failureTitle": {
+    "message": "Den `<audio>`-Elementen fehlt ein `<track>`-Element mit `[kind=\"captions\"]`."
+  },
+  "lighthouse-core/audits/accessibility/audio-caption.js | title": {
+    "message": "`<audio>`-Elemente enthalten ein `<track>`-Element mit `[kind=\"captions\"]`"
+  },
+  "lighthouse-core/audits/accessibility/axe-audit.js | failingElementsHeader": {
+    "message": "Fehlerhafte Elemente"
+  },
+  "lighthouse-core/audits/accessibility/button-name.js | description": {
+    "message": "Wenn eine Schaltfläche keinen zugänglichen Namen hat, wird sie von Screenreadern als \"Schaltfläche\" angesagt, was sie für Nutzer, die auf Screenreader angewiesen sind, unbrauchbar macht. [Weitere Informationen.](https://web.dev/button-name/)"
+  },
+  "lighthouse-core/audits/accessibility/button-name.js | failureTitle": {
+    "message": "Schaltflächen haben keinen für Screenreader zugänglichen Namen"
+  },
+  "lighthouse-core/audits/accessibility/button-name.js | title": {
+    "message": "Die Namen der Schaltflächen sind für Screenreader zugänglich"
+  },
+  "lighthouse-core/audits/accessibility/bypass.js | description": {
+    "message": "Wenn Tastaturnutzer Inhalte umgehen können, die sich wiederholen, sorgt das für eine effizientere Navigation. [Weitere Informationen.](https://web.dev/bypass/)"
+  },
+  "lighthouse-core/audits/accessibility/bypass.js | failureTitle": {
+    "message": "Die Seite enthält keine Überschrift, keinen Link zum Überspringen und keinen Landmark-Bereich"
+  },
+  "lighthouse-core/audits/accessibility/bypass.js | title": {
+    "message": "Die Seite enthält eine Überschrift, einen Link zum Überspringen oder einen Landmark-Bereich"
+  },
+  "lighthouse-core/audits/accessibility/color-contrast.js | description": {
+    "message": "Text mit geringem Kontrast ist für viele Nutzer schlecht oder gar nicht lesbar. [Weitere Informationen.](https://web.dev/color-contrast/)"
+  },
+  "lighthouse-core/audits/accessibility/color-contrast.js | failureTitle": {
+    "message": "Das Kontrastverhältnis von Hintergrund- und Vordergrundfarben ist nicht ausreichend."
+  },
+  "lighthouse-core/audits/accessibility/color-contrast.js | title": {
+    "message": "Das Kontrastverhältnis von Hintergrund- und Vordergrundfarben ist ausreichend"
+  },
+  "lighthouse-core/audits/accessibility/definition-list.js | description": {
+    "message": "Wenn Definitionslisten nicht korrekt mit Markup versehen sind, geben Screenreader unter Umständen verwirrende oder falsche Inhalte aus. [Weitere Informationen.](https://web.dev/definition-list/)"
+  },
+  "lighthouse-core/audits/accessibility/definition-list.js | failureTitle": {
+    "message": "`<dl>`-Elemente enthalten nicht nur richtig angeordnete Gruppen aus `<dt>`- und `<dd>`-Elementen, `<script>`- oder `<template>`-Elemente."
+  },
+  "lighthouse-core/audits/accessibility/definition-list.js | title": {
+    "message": "Alle Gruppen aus `<dt>`- und `<dd>`-Elementen sowie `<script>`- oder `<template>`-Elemente, die in `<dl>`-Elementen enthalten sind, sind richtig angeordnet."
+  },
+  "lighthouse-core/audits/accessibility/dlitem.js | description": {
+    "message": "Definitionslistenelemente (`<dt>` und `<dd>`) müssen in ein übergeordnetes `<dl>`-Element eingefasst sein, damit sie von Screenreadern richtig angesagt werden können. [Weitere Informationen.](https://web.dev/dlitem/)"
+  },
+  "lighthouse-core/audits/accessibility/dlitem.js | failureTitle": {
+    "message": "Definitionslistenelemente sind nicht in `<dl>`-Elemente eingefasst"
+  },
+  "lighthouse-core/audits/accessibility/dlitem.js | title": {
+    "message": "Definitionslistenelemente sind in `<dl>`-Elemente eingefasst"
+  },
+  "lighthouse-core/audits/accessibility/document-title.js | description": {
+    "message": "Anhand des Titels wissen Screenreader-Nutzer, worum es auf der Seite geht. Außerdem entscheiden Nutzer von Suchmaschinen auf der Grundlage des Titels, ob eine Seite für ihre Suche relevant ist. [Weitere Informationen.](https://web.dev/document-title/)"
+  },
+  "lighthouse-core/audits/accessibility/document-title.js | failureTitle": {
+    "message": "Dokument hat kein `<title>`-Element"
+  },
+  "lighthouse-core/audits/accessibility/document-title.js | title": {
+    "message": "Dokument enthält ein `<title>`-Element"
+  },
+  "lighthouse-core/audits/accessibility/duplicate-id.js | description": {
+    "message": "Der Wert eines ID-Attributs muss eindeutig sein, damit andere Instanzen nicht von Hilfstechnologien übersehen werden. [Weitere Informationen.](https://web.dev/duplicate-id/)"
+  },
+  "lighthouse-core/audits/accessibility/duplicate-id.js | failureTitle": {
+    "message": "`[id]`-Attribute auf der Seite sind nicht eindeutig"
+  },
+  "lighthouse-core/audits/accessibility/duplicate-id.js | title": {
+    "message": "`[id]`-Attribute auf der Seite sind eindeutig"
+  },
+  "lighthouse-core/audits/accessibility/frame-title.js | description": {
+    "message": "Nutzer von Screenreadern sind auf Frametitel angewiesen, die die Frameinhalte beschreiben. [Weitere Informationen.](https://web.dev/frame-title/)"
+  },
+  "lighthouse-core/audits/accessibility/frame-title.js | failureTitle": {
+    "message": "`<frame>`- oder `<iframe>`-Elemente haben keinen Titel"
+  },
+  "lighthouse-core/audits/accessibility/frame-title.js | title": {
+    "message": "`<frame>`- oder `<iframe>`-Elemente verfügen über einen Titel"
+  },
+  "lighthouse-core/audits/accessibility/html-has-lang.js | description": {
+    "message": "Wenn auf einer Seite kein lang-Attribut angegeben ist, nimmt ein Screenreader an, dass es sich um die Standardsprache handelt, die der Nutzer beim Einrichten des Screenreaders ausgewählt hat. Wenn die Sprache jedoch nicht der Standardsprache entspricht, gibt der Screenreader den Inhalt der Seite möglicherweise falsch aus. [Weitere Informationen.](https://web.dev/html-has-lang/)"
+  },
+  "lighthouse-core/audits/accessibility/html-has-lang.js | failureTitle": {
+    "message": "`<html>`-Element enthält kein `[lang]`-Attribut"
+  },
+  "lighthouse-core/audits/accessibility/html-has-lang.js | title": {
+    "message": "`<html>`-Element hat ein `[lang]`-Attribut"
+  },
+  "lighthouse-core/audits/accessibility/html-lang-valid.js | description": {
+    "message": "Durch Angabe einer gültigen [Sprache gemäß BCP 47](https://www.w3.org/International/questions/qa-choosing-language-tags#question) kann der Text von einem Screenreader korrekt wiedergegeben werden. [Weitere Informationen.](https://web.dev/html-lang-valid/)"
+  },
+  "lighthouse-core/audits/accessibility/html-lang-valid.js | failureTitle": {
+    "message": "`<html>`-Element weist keinen gültigen Wert für sein `[lang]`-Attribut auf."
+  },
+  "lighthouse-core/audits/accessibility/html-lang-valid.js | title": {
+    "message": "Das `<html>`-Element hat einen gültigen Wert für sein `[lang]`-Attribut"
+  },
+  "lighthouse-core/audits/accessibility/image-alt.js | description": {
+    "message": "Informative Elemente sollten einen kurzen, beschreibenden alternativen Text haben. Dekorative Elemente können mit einem leeren ALT-Attribut ignoriert werden. [Weitere Informationen.](https://web.dev/image-alt/)"
+  },
+  "lighthouse-core/audits/accessibility/image-alt.js | failureTitle": {
+    "message": "Bildelemente haben keine `[alt]`-Attribute"
+  },
+  "lighthouse-core/audits/accessibility/image-alt.js | title": {
+    "message": "Bildelemente verfügen über `[alt]`-Attribute"
+  },
+  "lighthouse-core/audits/accessibility/input-image-alt.js | description": {
+    "message": "Wenn ein Bild als `<input>`-Schaltfläche verwendet wird, kann die Angabe von alternativem Text Screenreader-Nutzern helfen, den Zweck der Schaltfläche besser zu verstehen. [Weitere Informationen.](https://web.dev/input-image-alt/)"
+  },
+  "lighthouse-core/audits/accessibility/input-image-alt.js | failureTitle": {
+    "message": "`<input type=\"image\">`-Elemente verfügen nicht über `[alt]`-Text"
+  },
+  "lighthouse-core/audits/accessibility/input-image-alt.js | title": {
+    "message": "`<input type=\"image\">`-Elemente verfügen über `[alt]`-Text"
+  },
+  "lighthouse-core/audits/accessibility/label.js | description": {
+    "message": "Durch Labels wird gewährleistet, dass Steuerelemente für Formulare von Hilfstechnologien wie Screenreadern richtig angesagt werden. [Weitere Informationen.](https://web.dev/label/)"
+  },
+  "lighthouse-core/audits/accessibility/label.js | failureTitle": {
+    "message": "Die Formularelemente sind nicht mit Labels verknüpft"
+  },
+  "lighthouse-core/audits/accessibility/label.js | title": {
+    "message": "Formularelemente sind mit Labels verknüpft"
+  },
+  "lighthouse-core/audits/accessibility/layout-table.js | description": {
+    "message": "Eine für Layoutzwecke verwendete Tabelle sollte keine Datenelemente wie \"th\"- bzw. \"caption\"-Elemente oder das \"summary\"-Attribut enthalten, weil dies für Nutzer von Screenreadern verwirrend sein kann. [Weitere Informationen.](https://web.dev/layout-table/)"
+  },
+  "lighthouse-core/audits/accessibility/layout-table.js | failureTitle": {
+    "message": "`<table>`-Präsentationselemente verwenden `<th>`, `<caption>` oder das `[summary]`-Attribut."
+  },
+  "lighthouse-core/audits/accessibility/layout-table.js | title": {
+    "message": "`<table>`-Präsentationselemente enthalten keine `<th>`-, `<caption>`- oder `[summary]`-Attribute."
+  },
+  "lighthouse-core/audits/accessibility/link-name.js | description": {
+    "message": "Linktext, der leicht erkennbar, eindeutig und fokussierbar ist, verbessert die Navigation für Screenreader-Nutzer. Dies gilt auch für alternativen Text für Bilder, die als Links verwendet werden. [Weitere Informationen.](https://web.dev/link-name/)"
+  },
+  "lighthouse-core/audits/accessibility/link-name.js | failureTitle": {
+    "message": "Links haben keinen leicht erkennbaren Namen"
+  },
+  "lighthouse-core/audits/accessibility/link-name.js | title": {
+    "message": "Links haben einen leicht erkennbaren Namen"
+  },
+  "lighthouse-core/audits/accessibility/list.js | description": {
+    "message": "Screenreader sagen Listen auf bestimmte Art und Weise an. Eine korrekte Listenstruktur gewährleistet, dass der Screenreader sie richtig ausgibt. [Weitere Informationen.](https://web.dev/list/)"
+  },
+  "lighthouse-core/audits/accessibility/list.js | failureTitle": {
+    "message": "Listen enthalten nicht nur `<li>`-Elemente und Elemente zur Skriptunterstützung (`<script>` sowie `<template>`)."
+  },
+  "lighthouse-core/audits/accessibility/list.js | title": {
+    "message": "Listen enthalten nur `<li>`-Elemente und Elemente zur Skriptunterstützung (`<script>` sowie `<template>`)."
+  },
+  "lighthouse-core/audits/accessibility/listitem.js | description": {
+    "message": "Listenelemente (`<li>`) müssen sich in einem übergeordneten `<ul>`- oder `<ol>`-Element befinden, damit Screenreader sie richtig ansagen können. [Weitere Informationen.](https://web.dev/listitem/)"
+  },
+  "lighthouse-core/audits/accessibility/listitem.js | failureTitle": {
+    "message": "Listenelemente (`<li>`) befinden sich nicht in übergeordneten `<ul>`- oder `<ol>`-Elementen."
+  },
+  "lighthouse-core/audits/accessibility/listitem.js | title": {
+    "message": "Listenelemente (`<li>`) befinden sich in übergeordneten `<ul>`- oder `<ol>`-Elementen"
+  },
+  "lighthouse-core/audits/accessibility/meta-refresh.js | description": {
+    "message": "Nutzer rechnen nicht damit, dass eine Seite automatisch aktualisiert wird. Außerdem wird dadurch der Fokus wieder auf den Seitenanfang verschoben. Das kann für den Nutzer frustrierend oder verwirrend sein. [Weitere Informationen.](https://web.dev/meta-refresh/)"
+  },
+  "lighthouse-core/audits/accessibility/meta-refresh.js | failureTitle": {
+    "message": "Im Dokument wird `<meta http-equiv=\"refresh\">` verwendet"
+  },
+  "lighthouse-core/audits/accessibility/meta-refresh.js | title": {
+    "message": "Dieses Dokument verwendet `<meta http-equiv=\"refresh\">` nicht"
+  },
+  "lighthouse-core/audits/accessibility/meta-viewport.js | description": {
+    "message": "Wenn Sie die Zoomfunktion deaktivieren, haben Nutzer mit eingeschränktem Sehvermögen, die auf die Bildschirmvergrößerung angewiesen sind, Probleme, den Inhalt einer Webseite zu sehen. [Weitere Informationen.](https://web.dev/meta-viewport/)"
+  },
+  "lighthouse-core/audits/accessibility/meta-viewport.js | failureTitle": {
+    "message": "`[user-scalable=\"no\"]` wird im `<meta name=\"viewport\">`-Element verwendet oder das `[maximum-scale]`-Attribut ist kleiner als 5."
+  },
+  "lighthouse-core/audits/accessibility/meta-viewport.js | title": {
+    "message": "`[user-scalable=\"no\"]` wird nicht im `<meta name=\"viewport\">`-Element verwendet und das `[maximum-scale]`-Attribut ist nicht kleiner als 5."
+  },
+  "lighthouse-core/audits/accessibility/object-alt.js | description": {
+    "message": "Screenreader können lediglich Textinhalte interpretieren. Wenn Sie `<object>`-Elementen Alt-Text hinzufügen, können Screenreader-Nutzer besser verstehen, was diese Elemente darstellen. [Weitere Informationen.](https://web.dev/object-alt/)"
+  },
+  "lighthouse-core/audits/accessibility/object-alt.js | failureTitle": {
+    "message": "`<object>`-Elemente verfügen nicht über `[alt]`-Text"
+  },
+  "lighthouse-core/audits/accessibility/object-alt.js | title": {
+    "message": "`<object>`-Elemente verfügen über `[alt]`-Text"
+  },
+  "lighthouse-core/audits/accessibility/tabindex.js | description": {
+    "message": "Ein Wert größer als 0 impliziert eine explizite Navigationsanordnung. Das ist zwar technisch möglich; aber für Nutzer, die auf Hilfstechnologien angewiesen sind, ist dies häufig frustrierend. [Weitere Informationen.](https://web.dev/tabindex/)"
+  },
+  "lighthouse-core/audits/accessibility/tabindex.js | failureTitle": {
+    "message": "Der `[tabindex]`-Wert einiger Elemente ist größer als 0"
+  },
+  "lighthouse-core/audits/accessibility/tabindex.js | title": {
+    "message": "Kein Element hat einen `[tabindex]`-Wert größer als 0"
+  },
+  "lighthouse-core/audits/accessibility/td-headers-attr.js | description": {
+    "message": "Screenreader bieten Funktionen, die die Navigation in Tabellen vereinfachen. Wenn Sie dafür sorgen, dass `<td>`-Zellen, die das `[headers]`-Attribut verwenden, nur auf andere Zellen in derselben Tabelle verweisen, kann dies für Screenreader-Nutzer hilfreich sein. [Weitere Informationen.](https://web.dev/td-headers-attr/)"
+  },
+  "lighthouse-core/audits/accessibility/td-headers-attr.js | failureTitle": {
+    "message": "Zellen in einem `<table>`-Element, die das `[headers]`-Attribut verwenden, verweisen nur auf andere Zellen in derselben Tabelle."
+  },
+  "lighthouse-core/audits/accessibility/td-headers-attr.js | title": {
+    "message": "Zellen in einem `<table>`-Element, die das `[headers]`-Attribut verwenden, verweisen nur auf andere Zellen in derselben Tabelle."
+  },
+  "lighthouse-core/audits/accessibility/th-has-data-cells.js | description": {
+    "message": "Screenreader bieten Funktionen, die die Navigation in Tabellen vereinfachen. Wenn Sie dafür sorgen, dass Tabellenüberschriften immer auf eine Auswahl von Zellen verweisen, kann dies für Screenreader-Nutzer hilfreich sein. [Weitere Informationen.](https://web.dev/th-has-data-cells/)"
+  },
+  "lighthouse-core/audits/accessibility/th-has-data-cells.js | failureTitle": {
+    "message": "Für `<th>`-Elemente und Elemente mit `[role=\"columnheader\"/\"rowheader\"]` sind keine Datenzellen vorhanden, die sie beschreiben."
+  },
+  "lighthouse-core/audits/accessibility/th-has-data-cells.js | title": {
+    "message": "Für `<th>`-Elemente und Elemente mit `[role=\"columnheader\"/\"rowheader\"]` sind Datenzellen vorhanden, die sie beschreiben."
+  },
+  "lighthouse-core/audits/accessibility/valid-lang.js | description": {
+    "message": "Durch Angabe einer gültigen [Sprache gemäß BCP 47](https://www.w3.org/International/questions/qa-choosing-language-tags#question) in Elementen kann der Text von einem Screenreader korrekt ausgesprochen werden. [Weitere Informationen.](https://web.dev/valid-lang/)"
+  },
+  "lighthouse-core/audits/accessibility/valid-lang.js | failureTitle": {
+    "message": "`[lang]`-Attribute weisen keinen gültigen Wert auf"
+  },
+  "lighthouse-core/audits/accessibility/valid-lang.js | title": {
+    "message": "`[lang]`-Attribute weisen einen gültigen Wert auf"
+  },
+  "lighthouse-core/audits/accessibility/video-caption.js | description": {
+    "message": "Wenn ein Video Untertitel enthält, können gehörlose und hörgeschädigte Nutzer die Informationen im Video besser verstehen. [Weitere Informationen.](https://web.dev/video-caption/)"
+  },
+  "lighthouse-core/audits/accessibility/video-caption.js | failureTitle": {
+    "message": "`<video>`-Elemente enthalten kein `<track>`-Element mit `[kind=\"captions\"]`."
+  },
+  "lighthouse-core/audits/accessibility/video-caption.js | title": {
+    "message": "`<video>`-Elemente enthalten ein `<track>`-Element mit `[kind=\"captions\"]`"
+  },
+  "lighthouse-core/audits/accessibility/video-description.js | description": {
+    "message": "Audiobeschreibungen enthalten relevante Informationen für Videos, die aus dem Dialog nicht ersichtlich sind, z. B. Gesichtsausdrücke und Schauplätze. [Weitere Informationen.](https://web.dev/video-description/)"
+  },
+  "lighthouse-core/audits/accessibility/video-description.js | failureTitle": {
+    "message": "`<video>`-Elemente enthalten kein `<track>`-Element mit `[kind=\"description\"]`."
+  },
+  "lighthouse-core/audits/accessibility/video-description.js | title": {
+    "message": "`<video>`-Elemente enthalten ein `<track>`-Element mit `[kind=\"description\"]`"
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | description": {
+    "message": "Definieren Sie ein `apple-touch-icon` für eine ideale Darstellung unter iOS, wenn Nutzer die progressive Web-App dem Startbildschirm hinzufügen. Es muss auf eine nicht transparente, quadratische PNG-Datei mit 192 px (oder 180 px) verweisen. [Weitere Informationen.](https://developers.google.com/web/fundamentals/design-and-ux/browser-customization/)"
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | failureTitle": {
+    "message": "Hat kein gültiges `apple-touch-icon`"
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | precomposedWarning": {
+    "message": "`apple-touch-icon-precomposed` ist veraltet; `apple-touch-icon` wird bevorzugt."
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | title": {
+    "message": "Enthält ein gültiges `apple-touch-icon`"
+  },
+  "lighthouse-core/audits/bootup-time.js | chromeExtensionsWarning": {
+    "message": "Chrome-Erweiterungen haben die Ladegeschwindigkeit dieser Seite beeinträchtigt. Versuchen Sie, die Seite im Inkognito-Modus oder mit einem Chrome-Profil ohne Erweiterungen zu überprüfen."
+  },
+  "lighthouse-core/audits/bootup-time.js | columnScriptEval": {
+    "message": "Skriptauswertung"
+  },
+  "lighthouse-core/audits/bootup-time.js | columnScriptParse": {
+    "message": "Parsen von Skripten"
+  },
+  "lighthouse-core/audits/bootup-time.js | columnTotal": {
+    "message": "CPU-Zeit insgesamt"
+  },
+  "lighthouse-core/audits/bootup-time.js | description": {
+    "message": "Versuchen Sie, die Zeit für das Parsen, Kompilieren und Ausführen von JavaScript zu reduzieren. Die Bereitstellung kleinerer JS-Nutzlasten kann dabei helfen. [Weitere Informationen.](https://developers.google.com/web/tools/lighthouse/audits/bootup)"
+  },
+  "lighthouse-core/audits/bootup-time.js | failureTitle": {
+    "message": "Ausführungszeit von JavaScript reduzieren"
+  },
+  "lighthouse-core/audits/bootup-time.js | title": {
+    "message": "JavaScript-Ausführungszeit"
+  },
+  "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | description": {
+    "message": "Große GIF-Dateien sind nur bedingt für die Auslieferung animierter Inhalte geeignet. Sie können stattdessen MPEG4- oder WebM-Videos für Animationen und PNG oder WebP für statische Bilder verwenden und so die Netzwerk-Datenmenge reduzieren. [Weitere Informationen](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/replace-animated-gifs-with-video/)"
+  },
+  "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | title": {
+    "message": "Videoformate für animierte Inhalte verwenden"
+  },
+  "lighthouse-core/audits/byte-efficiency/offscreen-images.js | description": {
+    "message": "Wenn Sie nicht sichtbare und versteckte Bilder erst laden lassen, nachdem alle wichtigen Ressourcen geladen wurden, können Sie die Zeit bis zur Interaktivität reduzieren. [Weitere Informationen.](https://developers.google.com/web/tools/lighthouse/audits/offscreen-images)"
+  },
+  "lighthouse-core/audits/byte-efficiency/offscreen-images.js | title": {
+    "message": "Nicht sichtbare Bilder aufschieben"
+  },
+  "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | description": {
+    "message": "Ressourcen blockieren den First Paint Ihrer Seite. Versuchen Sie, wichtiges JS und wichtige CSS inline anzugeben und alle nicht kritischen JS und Stile aufzuschieben. [Weitere Informationen.](https://developers.google.com/web/tools/lighthouse/audits/blocking-resources)"
+  },
+  "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | title": {
+    "message": "Ressourcen beseitigen, die das Rendering blockieren"
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | description": {
+    "message": "Große Netzwerknutzlasten kosten Nutzer bares Geld und hängen eng mit langen Ladezeiten zusammen. [Weitere Informationen.](https://developers.google.com/web/tools/lighthouse/audits/network-payloads)"
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | displayValue": {
+    "message": "Die Gesamtgröße war {totalBytes, number, bytes} KB"
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | failureTitle": {
+    "message": "Sehr große Netzwerknutzlasten vermeiden"
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | title": {
+    "message": "Vermeidet sehr große Netzwerknutzlasten"
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-css.js | description": {
+    "message": "Durch die Komprimierung von CSS-Dateien können Netzwerknutzlasten verkleinert werden. [Weitere Informationen.](https://developers.google.com/web/tools/lighthouse/audits/minify-css)"
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-css.js | title": {
+    "message": "CSS komprimieren"
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | description": {
+    "message": "Durch die Komprimierung von JavaScript-Dateien können Nutzlastgrößen und die Zeit zum Parsen von Skripts reduziert werden. [Weitere Informationen.](https://developers.google.com/speed/docs/insights/MinifyResources)"
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | title": {
+    "message": "JavaScript komprimieren"
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | description": {
+    "message": "Sie können ungültige Regeln aus Stylesheets entfernen und das Laden von CSS aufschieben, die nicht für ohne Scrollen sichtbare Inhalte verwendet werden, um unnötigen Datenverbrauch durch Netzwerkaktivität zu vermeiden. [Weitere Informationen.](https://developers.google.com/web/tools/lighthouse/audits/unused-css)"
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | title": {
+    "message": "Nicht verwendete CSS entfernen"
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-javascript.js | description": {
+    "message": "Entfernen Sie nicht verwendetes JavaScript, um die Datenmenge bei Netzwerkaktivitäten zu reduzieren."
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-javascript.js | title": {
+    "message": "Nicht genutztes JavaScript entfernen"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | description": {
+    "message": "Eine lange Lebensdauer des Cache kann wiederholte Besuche Ihrer Seite beschleunigen. [Weitere Informationen.](https://developers.google.com/web/tools/lighthouse/audits/cache-policy)"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 Ressource gefunden}other{# Ressourcen gefunden}}"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | failureTitle": {
+    "message": "Statische Inhalte mit einer effizienten Cache-Richtlinie bereitstellen"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | title": {
+    "message": "Verwendet eine effiziente Cache-Richtlinie für statische Inhalte"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | description": {
+    "message": "Optimierte Bilder werden schneller geladen und verbrauchen weniger mobile Daten. [Weitere Informationen.](https://developers.google.com/web/tools/lighthouse/audits/optimize-images)"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | title": {
+    "message": "Bilder effizient codieren"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | description": {
+    "message": "Stellen Sie Bilder bereit, die eine angemessene Größe haben, um mobile Daten zu sparen und die Ladezeit zu verbessern. [Weitere Informationen.](https://developers.google.com/web/tools/lighthouse/audits/oversized-images)"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | title": {
+    "message": "Bilder richtig dimensionieren"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | description": {
+    "message": "Textbasierte Ressourcen sollten mit Komprimierung (gzip, Deflate oder Brotli) ausgeliefert werden, um die Datenmenge im Netzwerk insgesamt zu minimieren. [Weitere Informationen.](https://developers.google.com/web/tools/lighthouse/audits/text-compression)"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | title": {
+    "message": "Textkomprimierung aktivieren"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | description": {
+    "message": "Bildformate wie JPEG 2000, JPEG XR und WebP bieten oft eine bessere Komprimierung als PNG oder JPEG, was schnellere Downloads und einen geringeren Datenverbrauch ermöglicht. [Weitere Informationen.](https://developers.google.com/web/tools/lighthouse/audits/webp)"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | title": {
+    "message": "Bilder in modernen Formaten bereitstellen"
+  },
+  "lighthouse-core/audits/content-width.js | description": {
+    "message": "Wenn die Breite Ihrer App-Inhalte nicht mit der des Darstellungsbereichs übereinstimmt, ist Ihre App möglicherweise nicht für Bildschirme von Mobilgeräten optimiert. [Weitere Informationen.](https://developers.google.com/web/tools/lighthouse/audits/content-sized-correctly-for-viewport)"
+  },
+  "lighthouse-core/audits/content-width.js | explanation": {
+    "message": "Die Größe des Darstellungsbereichs von {innerWidth} Pixeln stimmt nicht mit der Fenstergröße von {outerWidth} Pixeln überein."
+  },
+  "lighthouse-core/audits/content-width.js | failureTitle": {
+    "message": "Inhalt hat nicht die richtige Größe für den Darstellungsbereich"
+  },
+  "lighthouse-core/audits/content-width.js | title": {
+    "message": "Inhalt hat die richtige Größe für den Darstellungsbereich"
+  },
+  "lighthouse-core/audits/critical-request-chains.js | description": {
+    "message": "In den unten aufgeführten Ketten kritischer Anfragen können Sie sehen, welche Ressourcen mit einer hohen Priorität geladen werden. Versuchen Sie, die Ketten zu verkürzen, die Downloadgröße von Ressourcen zu reduzieren oder das Herunterladen unnötiger Ressourcen aufzuschieben, um den Seitenaufbau zu beschleunigen. [Weitere Informationen.](https://developers.google.com/web/tools/lighthouse/audits/critical-request-chains)"
+  },
+  "lighthouse-core/audits/critical-request-chains.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 Kette gefunden}other{# Ketten gefunden}}"
+  },
+  "lighthouse-core/audits/critical-request-chains.js | title": {
+    "message": "Tiefe kritischer Anforderungen minimieren"
+  },
+  "lighthouse-core/audits/deprecations.js | columnDeprecate": {
+    "message": "Veraltet/Warnung"
+  },
+  "lighthouse-core/audits/deprecations.js | columnLine": {
+    "message": "Zeile"
+  },
+  "lighthouse-core/audits/deprecations.js | description": {
+    "message": "Veraltete APIs werden aus dem Browser entfernt. [Weitere Informationen.](https://web.dev/deprecations)"
+  },
+  "lighthouse-core/audits/deprecations.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 Warnung gefunden}other{# Warnungen gefunden}}"
+  },
+  "lighthouse-core/audits/deprecations.js | failureTitle": {
+    "message": "Verwendet veraltete APIs"
+  },
+  "lighthouse-core/audits/deprecations.js | title": {
+    "message": "Vermeidet veraltete APIs"
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | description": {
+    "message": "Application Cache ist veraltet. [Weitere Informationen.](https://web.dev/appcache-manifest)"
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | displayValue": {
+    "message": "\"{AppCacheManifest}\" gefunden"
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | failureTitle": {
+    "message": "Verwendet Application Cache"
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | title": {
+    "message": "Vermeidet Application Cache"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | description": {
+    "message": "Wenn Sie einen DOCTYPE festlegen, hindern Sie den Browser daran, zum Quirks-Modus zu wechseln. [Weitere Informationen.](https://web.dev/doctype)"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationBadDoctype": {
+    "message": "DOCTYPE-Name muss dieser String sein (in Kleinbuchstaben): `html`"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationNoDoctype": {
+    "message": "Dokument muss einen DOCTYPE enthalten"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationPublicId": {
+    "message": "PublicId sollte ein leerer String sein"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationSystemId": {
+    "message": "SystemId sollte ein leerer String sein"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | failureTitle": {
+    "message": "Seite verfügt nicht über den HTML-DOCTYPE und startet daher den Quirks-Modus"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | title": {
+    "message": "Seite verfügt über den HTML-DOCTYPE"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | columnElement": {
+    "message": "Element"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | columnStatistic": {
+    "message": "Statistik"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | columnValue": {
+    "message": "Wert"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | description": {
+    "message": "Laut der Empfehlung von Browserentwicklern sollten Seiten nicht mehr als ungefähr 1.500 DOM-Elemente enthalten. Die ideale Strukturtiefe liegt bei unter 32 Elementen und weniger als 60 unter- und übergeordneten Elementen. Ein großes DOM kann zu hohem Speicherverbrauch, langwierigen [Stilberechnungen](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations) und kostspieligen [dynamischen Umbrüchen im Layout](https://developers.google.com/speed/articles/reflow) führen. [Weitere Informationen.](https://web.dev/dom-size)"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 Element}other{# Elemente}}"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | failureTitle": {
+    "message": "Übermäßige DOM-Größe vermeiden"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | statisticDOMDepth": {
+    "message": "Maximale DOM-Tiefe"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | statisticDOMElements": {
+    "message": "DOM-Elemente insgesamt"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | statisticDOMWidth": {
+    "message": "Maximale Anzahl von untergeordneten Elementen"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | title": {
+    "message": "Vermeidet eine übermäßige DOM-Größe"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | columnRel": {
+    "message": "Rel"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | columnTarget": {
+    "message": "Ziel"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | description": {
+    "message": "Fügen Sie beliebigen externen Links `rel=\"noopener\"` oder `rel=\"noreferrer\"` hinzu, um die Leistung zu verbessern und Sicherheitslücken zu vermeiden. [Weitere Informationen.](https://web.dev/external-anchors-use-rel-noopener)"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | failureTitle": {
+    "message": "Links zu ursprungsübergreifenden Zielen sind unsicher"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | title": {
+    "message": "Links zu ursprungsübergreifenden Zielen sind sicher"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | warning": {
+    "message": "Ziel für Anker ({anchorHTML}) kann nicht bestimmt werden. Wenn dies nicht als Hyperlink genutzt wird, sollten Sie target=_blank entfernen."
+  },
+  "lighthouse-core/audits/dobetterweb/geolocation-on-start.js | description": {
+    "message": "Nutzer sind misstrauisch oder verwirrt, wenn Websites den Standort ohne Begründung anfordern. Versuchen Sie stattdessen, die Anforderung mit einer Nutzeraktion zu verbinden. [Weitere Informationen.](https://web.dev/geolocation-on-start)"
+  },
+  "lighthouse-core/audits/dobetterweb/geolocation-on-start.js | failureTitle": {
+    "message": "Fordert die Berechtigung zur Standortbestimmung beim Seitenaufbau an"
+  },
+  "lighthouse-core/audits/dobetterweb/geolocation-on-start.js | title": {
+    "message": "Fordert während des Seitenaufbaus keine Berechtigung zur Standortbestimmung an"
+  },
+  "lighthouse-core/audits/dobetterweb/js-libraries.js | columnVersion": {
+    "message": "Version"
+  },
+  "lighthouse-core/audits/dobetterweb/js-libraries.js | description": {
+    "message": "Alle Front-End-JavaScript-Bibliotheken auf der Seite wurden erkannt. [Weitere Informationen.](https://web.dev/js-libraries)"
+  },
+  "lighthouse-core/audits/dobetterweb/js-libraries.js | title": {
+    "message": "JavaScript-Bibliotheken erkannt"
+  },
+  "lighthouse-core/audits/dobetterweb/no-document-write.js | description": {
+    "message": "Für Nutzer mit langsamen Verbindungen können externe Skripts, die dynamisch über `document.write()` eingefügt werden, den Seitenaufbau um einige Sekunden verzögern. [Weitere Informationen.](https://web.dev/no-document-write)"
+  },
+  "lighthouse-core/audits/dobetterweb/no-document-write.js | failureTitle": {
+    "message": "Verwendet `document.write()`"
+  },
+  "lighthouse-core/audits/dobetterweb/no-document-write.js | title": {
+    "message": "Verwendet kein `document.write()`"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | columnSeverity": {
+    "message": "Höchster Schweregrad"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | columnVersion": {
+    "message": "Bibliotheksversion"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | columnVuln": {
+    "message": "Anzahl der Sicherheitslücken"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | description": {
+    "message": "Einige Skripts von Drittanbietern können bekannte Sicherheitslücken enthalten, die von Angreifern leicht zu identifizieren und zu missbrauchen sind. [Weitere Informationen.](https://web.dev/no-vulnerable-libraries)"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 Sicherheitslücke erkannt}other{# Sicherheitslücken erkannt}}"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | failureTitle": {
+    "message": "Enthält Front-End-JavaScript-Bibliotheken mit bekannten Sicherheitslücken"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | rowSeverityHigh": {
+    "message": "Hoch"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | rowSeverityLow": {
+    "message": "Niedrig"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | rowSeverityMedium": {
+    "message": "Mittel"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | title": {
+    "message": "Vermeidet Front-End-JavaScript-Bibliotheken mit bekannten Sicherheitslücken"
+  },
+  "lighthouse-core/audits/dobetterweb/notification-on-start.js | description": {
+    "message": "Nutzer sind misstrauisch oder verwirrt, wenn Websites die Berechtigung zum Senden von Benachrichtigungen ohne Begründung anfordern. Versuchen Sie stattdessen, die Anforderung mit Touch-Gesten zu verbinden. [Weitere Informationen.](https://web.dev/notification-on-start)"
+  },
+  "lighthouse-core/audits/dobetterweb/notification-on-start.js | failureTitle": {
+    "message": "Fordert die Benachrichtigungsberechtigung beim Seitenaufbau an"
+  },
+  "lighthouse-core/audits/dobetterweb/notification-on-start.js | title": {
+    "message": "Fordert während des Seitenaufbaus keine Benachrichtigungsberechtigung an"
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | columnFailingElem": {
+    "message": "Fehlerhafte Elemente"
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | description": {
+    "message": "Das Einfügen von Passwörtern sollte entsprechend guten Sicherheitsrichtlinien zulässig sein. [Weitere Informationen.](https://web.dev/password-inputs-can-be-pasted-into)"
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | failureTitle": {
+    "message": "Hindert Nutzer daran, Inhalte in Passwortfelder einzufügen"
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | title": {
+    "message": "Erlaubt Nutzern, Inhalte in Passwortfelder einzufügen"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | columnProtocol": {
+    "message": "Protokoll"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | description": {
+    "message": "HTTP/2 bietet gegenüber HTTP/1.1 viele Vorteile, wie z. B. Binärkopfzeilen, Multiplexing und Server-Push. [Weitere Informationen.](https://web.dev/uses-http2)"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | displayValue": {
+    "message": "{itemCount,plural, =1{Ressourcen für 1 Anfrage nicht über HTTP/2 bereitgestellt}other{Ressourcen für # Anfragen nicht über HTTP/2 bereitgestellt}}"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | failureTitle": {
+    "message": "Verwendet HTTP/2 nicht für alle Ressourcen"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | title": {
+    "message": "Verwendet HTTP/2 für eigene Ressourcen"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-passive-event-listeners.js | description": {
+    "message": "Wenn Sie Ihre Ereignis-Listener für Tipp- und Mausradbewegungen als `passive` markieren, können Sie damit die Scrollleistung Ihrer Seite verbessern. [Weitere Informationen.](https://web.dev/uses-passive-event-listeners)"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-passive-event-listeners.js | failureTitle": {
+    "message": "Verwendet keine passiven Listener zur Verbesserung der Scrollleistung"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-passive-event-listeners.js | title": {
+    "message": "Verwendet passive Listener zur Verbesserung der Scrollleistung"
+  },
+  "lighthouse-core/audits/errors-in-console.js | columnDesc": {
+    "message": "Beschreibung"
+  },
+  "lighthouse-core/audits/errors-in-console.js | description": {
+    "message": "In der Konsole protokollierte Fehler weisen auf ungelöste Probleme hin. Sie können durch fehlgeschlagene Netzwerkanfragen und andere Browser-Probleme verursacht werden. [Weitere Informationen](https://web.dev/errors-in-console)"
+  },
+  "lighthouse-core/audits/errors-in-console.js | failureTitle": {
+    "message": "Es wurden Browserfehler in der Konsole protokolliert"
+  },
+  "lighthouse-core/audits/errors-in-console.js | title": {
+    "message": "Es wurden keine Browserfehler in der Konsole protokolliert"
+  },
+  "lighthouse-core/audits/font-display.js | description": {
+    "message": "Verwenden Sie die CSS-Funktion font-display, damit der Text für Nutzer sichtbar ist, während Webfonts geladen werden. [Weitere Informationen.](https://developers.google.com/web/updates/2016/02/font-display)"
+  },
+  "lighthouse-core/audits/font-display.js | failureTitle": {
+    "message": "Darauf achten, dass der Text während der Webfont-Ladevorgänge sichtbar bleibt"
+  },
+  "lighthouse-core/audits/font-display.js | title": {
+    "message": "Der gesamte Text bleibt während der Webfont-Ladevorgänge sichtbar"
+  },
+  "lighthouse-core/audits/font-display.js | undeclaredFontURLWarning": {
+    "message": "Für die folgende URL konnte Lighthouse den Schriftart-Anzeigewert nicht automatisch prüfen: {fontURL}."
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | columnActual": {
+    "message": "Seitenverhältnis (Original)"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | columnDisplayed": {
+    "message": "Seitenverhältnis (angezeigt)"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | description": {
+    "message": "Die Bildgröße sollte dem natürlichen Seitenverhältnis entsprechen. [Weitere Informationen.](https://web.dev/image-aspect-ratio)"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | failureTitle": {
+    "message": "Zeigt Bilder mit einem falschen Seitenverhältnis an"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | title": {
+    "message": "Zeigt Bilder mit einem korrekten Seitenverhältnis an"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | warningCompute": {
+    "message": "Ungültige Informationen zur Bildgröße {url}"
+  },
+  "lighthouse-core/audits/installable-manifest.js | description": {
+    "message": "Browser können Nutzer direkt dazu auffordern, Ihre Web-App zum Startbildschirm hinzuzufügen. Das kann zu mehr Interaktionen führen. [Weitere Informationen.](https://developers.google.com/web/tools/lighthouse/audits/install-prompt)"
+  },
+  "lighthouse-core/audits/installable-manifest.js | failureTitle": {
+    "message": "Das Manifest der Web-App erfüllt die Anforderungen an die Installierbarkeit nicht"
+  },
+  "lighthouse-core/audits/installable-manifest.js | title": {
+    "message": "Das Manifest der Web-App erfüllt die Anforderungen an die Installierbarkeit"
+  },
+  "lighthouse-core/audits/is-on-https.js | columnInsecureURL": {
+    "message": "Unsichere URL"
+  },
+  "lighthouse-core/audits/is-on-https.js | description": {
+    "message": "Alle Websites sollten durch HTTPS geschützt werden – selbst wenn sie keine vertraulichen Daten enthalten. HTTPS verhindert, dass andere Personen die Website manipulieren oder die Kommunikation zwischen Ihrer App und Ihren Nutzern mitverfolgen können. Dieses Protokoll ist eine Voraussetzung für HTTP/2 sowie für viele neue Webplattform-APIs. [Weitere Informationen.](https://web.dev/is-on-https)"
+  },
+  "lighthouse-core/audits/is-on-https.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 unsichere Anfrage gefunden}other{# unsichere Anfragen gefunden}}"
+  },
+  "lighthouse-core/audits/is-on-https.js | failureTitle": {
+    "message": "Verwendet nicht HTTPS"
+  },
+  "lighthouse-core/audits/is-on-https.js | title": {
+    "message": "Verwendet HTTPS"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | description": {
+    "message": "Ein schneller Seitenaufbau über ein Mobilfunknetz sorgt dafür, dass die Seite für Nutzer auf Mobilgeräten angenehm zu bedienen ist. [Weitere Informationen.](https://developers.google.com/web/tools/lighthouse/audits/fast-3g)"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | displayValueText": {
+    "message": "Interaktiv nach {timeInMs, number, seconds} s"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | displayValueTextWithOverride": {
+    "message": "Im simulierten Mobilfunknetz interaktiv nach {timeInMs, number, seconds} s"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | explanationLoadSlow": {
+    "message": "Ihre Seite lädt zu langsam und es dauert länger als 10 Sekunden, bis sie interaktiv ist. Im Abschnitt \"Leistung\" finden Sie Empfehlungen und Diagnosedaten, die Ihnen helfen können, Ihre Seite zu optimieren."
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | failureTitle": {
+    "message": "Seitenaufbau in Mobilfunknetzen ist nicht schnell genug"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | title": {
+    "message": "Seitenaufbau in Mobilfunknetzen ist schnell genug"
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | columnCategory": {
+    "message": "Kategorie"
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | description": {
+    "message": "Versuchen Sie, die Zeit für das Parsen, Kompilieren und Ausführen von JS zu reduzieren. Die Bereitstellung kleinerer JS-Nutzlasten kann dabei helfen."
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | failureTitle": {
+    "message": "Aufwand für Hauptthread minimieren"
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | title": {
+    "message": "Minimiert den Aufwand für den Hauptthread"
+  },
+  "lighthouse-core/audits/manual/pwa-cross-browser.js | description": {
+    "message": "Damit Sie möglichst viele Nutzer erreichen können, sollte Ihre Website mit allen gängigen Browsern kompatibel sein. [Weitere Informationen.](https://developers.google.com/web/progressive-web-apps/checklist#site-works-cross-browser)"
+  },
+  "lighthouse-core/audits/manual/pwa-cross-browser.js | title": {
+    "message": "Website funktioniert auf verschiedenen Browsern"
+  },
+  "lighthouse-core/audits/manual/pwa-each-page-has-url.js | description": {
+    "message": "Für die einzelnen Seiten sollten Deeplinks erstellt werden können. Achten Sie darauf, dass die entsprechenden URLs eindeutig sind, sodass sich die Seiten in sozialen Netzwerken leichter teilen lassen. [Weitere Informationen.](https://developers.google.com/web/progressive-web-apps/checklist#each-page-has-a-url)"
+  },
+  "lighthouse-core/audits/manual/pwa-each-page-has-url.js | title": {
+    "message": "Jede Seite hat eine URL"
+  },
+  "lighthouse-core/audits/manual/pwa-page-transitions.js | description": {
+    "message": "Übergänge sollten sich auch bei einer langsamen Netzwerkverbindung schnell anfühlen – dies trägt erheblich zur wahrgenommenen Leistung Ihrer Web-App bei. [Weitere Informationen.](https://developers.google.com/web/progressive-web-apps/checklist#page-transitions-dont-feel-like-they-block-on-the-network)"
+  },
+  "lighthouse-core/audits/manual/pwa-page-transitions.js | title": {
+    "message": "Seitenübergänge vermitteln nicht das Gefühl von übermäßigen Ladezeiten"
+  },
+  "lighthouse-core/audits/metrics/estimated-input-latency.js | description": {
+    "message": "Die geschätzte Eingabelatenz ist eine Schätzung dessen, wie viele Millisekunden Ihre App benötigt, um während des 5-s-Fensters mit der stärksten Auslastung beim Seitenaufbau auf Nutzereingaben zu reagieren. Wenn die Latenz bei Ihnen über 50 ms beträgt, empfinden Nutzer Ihre App möglicherweise als langsam. [Weitere Informationen.](https://developers.google.com/web/tools/lighthouse/audits/estimated-input-latency)"
+  },
+  "lighthouse-core/audits/metrics/estimated-input-latency.js | title": {
+    "message": "Geschätzte Eingabelatenz"
+  },
+  "lighthouse-core/audits/metrics/first-contentful-paint.js | description": {
+    "message": "First Contentful Paint gibt an, wann der erste Text oder das erste Bild gezeichnet wird. [Weitere Informationen.](https://developers.google.com/web/tools/lighthouse/audits/first-contentful-paint)"
+  },
+  "lighthouse-core/audits/metrics/first-contentful-paint.js | title": {
+    "message": "Erste Inhalte gezeichnet"
+  },
+  "lighthouse-core/audits/metrics/first-cpu-idle.js | description": {
+    "message": "\"Erster CPU-Leerlauf\" gibt an, wann die Aktivität des Hauptthreads der Seite das erste Mal gering genug ist, um Eingaben zu verarbeiten. [Weitere Informationen.](https://developers.google.com/web/tools/lighthouse/audits/first-interactive)"
+  },
+  "lighthouse-core/audits/metrics/first-cpu-idle.js | title": {
+    "message": "Erster CPU-Leerlauf"
+  },
+  "lighthouse-core/audits/metrics/first-meaningful-paint.js | description": {
+    "message": "\"Inhalte weitgehend gezeichnet\" gibt an, wann die Hauptinhalte einer Seite sichtbar sind. [Weitere Informationen.](https://developers.google.com/web/tools/lighthouse/audits/first-meaningful-paint)"
+  },
+  "lighthouse-core/audits/metrics/first-meaningful-paint.js | title": {
+    "message": "Inhalte weitgehend gezeichnet"
+  },
+  "lighthouse-core/audits/metrics/interactive.js | description": {
+    "message": "Die Zeit bis Interaktivität entspricht der Zeit, die vergeht, bis die Seite vollständig interaktiv ist. [Weitere Informationen.](https://developers.google.com/web/tools/lighthouse/audits/consistently-interactive)"
+  },
+  "lighthouse-core/audits/metrics/interactive.js | title": {
+    "message": "Zeit bis Interaktivität"
+  },
+  "lighthouse-core/audits/metrics/max-potential-fid.js | description": {
+    "message": "Der maximale potenzielle First Input Delay, der bei Ihren Nutzern auftreten kann, entspricht der Dauer der längsten Aufgabe in Millisekunden. [Weitere Informationen.](https://developers.google.com/web/updates/2018/05/first-input-delay)"
+  },
+  "lighthouse-core/audits/metrics/max-potential-fid.js | title": {
+    "message": "Maximaler potenzieller First Input Delay"
+  },
+  "lighthouse-core/audits/metrics/speed-index.js | description": {
+    "message": "Der Geschwindigkeitsindex gibt an, wie schnell die Inhalte einer Seite sichtbar dargestellt werden. [Weitere Informationen.](https://developers.google.com/web/tools/lighthouse/audits/speed-index)"
+  },
+  "lighthouse-core/audits/metrics/speed-index.js | title": {
+    "message": "Geschwindigkeitsindex"
+  },
+  "lighthouse-core/audits/metrics/total-blocking-time.js | description": {
+    "message": "Summe aller Zeiträume (in Millisekunden) zwischen FCP und Zeit bis Interaktivität, wenn die Aufgabendauer 50 ms überschreitet."
+  },
+  "lighthouse-core/audits/metrics/total-blocking-time.js | title": {
+    "message": "Gesamtdauer der Blockierung"
+  },
+  "lighthouse-core/audits/network-rtt.js | description": {
+    "message": "Die Netzwerk-Umlaufzeit (RTT, Round Trip Time) hat großen Einfluss auf die Leistung. Wenn die RTT zu einem Ursprung hoch ausfällt, weist dies darauf hin, dass die Leistung mit Servern verbessert werden kann, die sich näher beim Nutzer befinden. [Weitere Informationen.](https://hpbn.co/primer-on-latency-and-bandwidth/)"
+  },
+  "lighthouse-core/audits/network-rtt.js | title": {
+    "message": "Netzwerk-Umlaufzeit"
+  },
+  "lighthouse-core/audits/network-server-latency.js | description": {
+    "message": "Serverlatenzen können die Leistung im Web beeinträchtigen. Wenn die Serverlatenz eines Ursprungs hoch ist, weist dies darauf hin, dass der Server überlastet ist oder eine schlechte Back-End-Leistung bietet. [Weitere Informationen.](https://hpbn.co/primer-on-web-performance/#analyzing-the-resource-waterfall)"
+  },
+  "lighthouse-core/audits/network-server-latency.js | title": {
+    "message": "Server-Back-End-Latenzen"
+  },
+  "lighthouse-core/audits/offline-start-url.js | description": {
+    "message": "Mithilfe eines Service Workers kann Ihre Web-App auch bei schlechten Netzwerkbedingungen zuverlässig funktionieren. [Weitere Informationen.](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)"
+  },
+  "lighthouse-core/audits/offline-start-url.js | failureTitle": {
+    "message": "`start_url` reagiert im Offlinemodus nicht mit dem HTTP-Statuscode 200"
+  },
+  "lighthouse-core/audits/offline-start-url.js | title": {
+    "message": "`start_url` reagiert im Offlinemodus mit dem HTTP-Status 200"
+  },
+  "lighthouse-core/audits/offline-start-url.js | warningCantStart": {
+    "message": "Lighthouse konnte die `start_url` nicht im Manifest abrufen. Daher wurde angenommen, dass es sich bei der `start_url` um die URL des Dokuments handelt. Fehlermeldung: \"{manifestWarning}\"."
+  },
+  "lighthouse-core/audits/performance-budget.js | columnOverBudget": {
+    "message": "Über dem Budget"
+  },
+  "lighthouse-core/audits/performance-budget.js | description": {
+    "message": "Die Anzahl und Größe der Netzwerkanfragen sollten unter den Zielvorgaben des Leistungsbudgets liegen. [Weitere Informationen.](https://developers.google.com/web/tools/lighthouse/audits/budgets)"
+  },
+  "lighthouse-core/audits/performance-budget.js | requestCountOverBudget": {
+    "message": "{count,plural, =1{1 Anfrage}other{# Anfragen}}"
+  },
+  "lighthouse-core/audits/performance-budget.js | title": {
+    "message": "Leistungsbudget"
+  },
+  "lighthouse-core/audits/redirects-http.js | description": {
+    "message": "Wenn Sie HTTPS bereits eingerichtet haben, sollten Sie den gesamten HTTP-Traffic auf HTTPS weiterleiten, damit für alle Ihre Nutzer sichere Webfunktionen aktiviert sind. [Weitere Informationen.](https://developers.google.com/web/tools/lighthouse/audits/http-redirects-to-https)"
+  },
+  "lighthouse-core/audits/redirects-http.js | failureTitle": {
+    "message": "HTTP-Traffic wird nicht auf HTTPS weitergeleitet"
+  },
+  "lighthouse-core/audits/redirects-http.js | title": {
+    "message": "HTTP-Traffic wird auf HTTPS weitergeleitet"
+  },
+  "lighthouse-core/audits/redirects.js | description": {
+    "message": "Weiterleitungen führen zu zusätzlichen Verzögerungen, bevor die Seite geladen werden kann. [Weitere Informationen.](https://developers.google.com/web/tools/lighthouse/audits/redirects)"
+  },
+  "lighthouse-core/audits/redirects.js | title": {
+    "message": "Mehrere Weiterleitungen auf die Seite vermeiden"
+  },
+  "lighthouse-core/audits/resource-summary.js | description": {
+    "message": "Fügen Sie zum Einrichten von Budgets für die Anzahl und Größe von Seitenressourcen eine budget.json-Datei hinzu. [Weitere Informationen.](https://developers.google.com/web/tools/lighthouse/audits/budgets)"
+  },
+  "lighthouse-core/audits/resource-summary.js | displayValue": {
+    "message": "{requestCount,plural, =1{1 Anfrage • {byteCount, number, bytes} KB}other{# Anfragen • {byteCount, number, bytes} KB}}"
+  },
+  "lighthouse-core/audits/resource-summary.js | title": {
+    "message": "Halten Sie die Anfrageanzahl niedrig und die Übertragungsgröße gering"
+  },
+  "lighthouse-core/audits/seo/canonical.js | description": {
+    "message": "Über kanonische Links wird angegeben, welche URL in den Suchergebnissen angezeigt werden soll. [Weitere Informationen.](https://web.dev/canonical)"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationConflict": {
+    "message": "Mehrere in Konflikt stehende URLs ({urlList})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationDifferentDomain": {
+    "message": "Verweist auf eine andere Domain ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationInvalid": {
+    "message": "Ungültige URL ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationPointsElsewhere": {
+    "message": "Verweist auf einen anderen `hreflang`-Speicherort ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationRelative": {
+    "message": "Relative URL ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationRoot": {
+    "message": "Verweist auf die Stamm-URL (die Startseite) der Domain statt auf eine identische Inhaltsseite"
+  },
+  "lighthouse-core/audits/seo/canonical.js | failureTitle": {
+    "message": "Dokument enthält kein gültiges `rel=canonical`-Element"
+  },
+  "lighthouse-core/audits/seo/canonical.js | title": {
+    "message": "Dokument enthält ein gültiges `rel=canonical`-Element"
+  },
+  "lighthouse-core/audits/seo/font-size.js | description": {
+    "message": "Schriftgrößen von weniger als 12 px sind zu klein und deshalb nicht gut lesbar, sodass Nutzer von Mobilgeräten den Text per Fingerbewegung heranzoomen müssen. Mindestens 60 % des Texts auf der Seite sollten deshalb eine Schriftgröße von mindestens 12 px haben. [Weitere Informationen.](https://web.dev/font-size)"
+  },
+  "lighthouse-core/audits/seo/font-size.js | displayValue": {
+    "message": "{decimalProportion, number, extendedPercent} gut lesbarer Text"
+  },
+  "lighthouse-core/audits/seo/font-size.js | explanationViewport": {
+    "message": "Text ist nicht lesbar, weil kein Meta-Tag für den Darstellungsbereich vorhanden ist, das für Bildschirme von Mobilgeräten optimiert ist."
+  },
+  "lighthouse-core/audits/seo/font-size.js | explanationWithDisclaimer": {
+    "message": "{decimalProportion, number, extendedPercent} des Texts ist zu klein (auf Grundlage einer Stichprobengröße von {decimalProportionVisited, number, extendedPercent})."
+  },
+  "lighthouse-core/audits/seo/font-size.js | failureTitle": {
+    "message": "Dokument enthält keine gut lesbaren Schriftgrößen"
+  },
+  "lighthouse-core/audits/seo/font-size.js | title": {
+    "message": "Dokument enthält gut lesbare Schriftgrößen"
+  },
+  "lighthouse-core/audits/seo/hreflang.js | description": {
+    "message": "Anhand von \"hreflang\"-Links können Suchmaschinen ermitteln, welche Version einer Seite sie in den Suchergebnissen für eine bestimmte Sprache oder Region anzeigen sollen. [Weitere Informationen.](https://web.dev/hreflang)"
+  },
+  "lighthouse-core/audits/seo/hreflang.js | failureTitle": {
+    "message": "Dokument enthält kein gültiges `hreflang`-Element"
+  },
+  "lighthouse-core/audits/seo/hreflang.js | title": {
+    "message": "Dokument enthält ein gültiges `hreflang`-Element"
+  },
+  "lighthouse-core/audits/seo/http-status-code.js | description": {
+    "message": "Seiten mit ungültigen HTTP-Statuscodes werden möglicherweise nicht richtig indexiert. [Weitere Informationen.](https://web.dev/http-status-code)"
+  },
+  "lighthouse-core/audits/seo/http-status-code.js | failureTitle": {
+    "message": "Seite hat keinen gültigen HTTP-Statuscode"
+  },
+  "lighthouse-core/audits/seo/http-status-code.js | title": {
+    "message": "Seite hat einen gültigen HTTP-Statuscode"
+  },
+  "lighthouse-core/audits/seo/is-crawlable.js | description": {
+    "message": "Suchmaschinen können Ihre Seiten nicht in die Suchergebnisse aufnehmen, wenn sie nicht dazu berechtigt sind, sie zu crawlen. [Weitere Informationen.](https://web.dev/is-crawable)"
+  },
+  "lighthouse-core/audits/seo/is-crawlable.js | failureTitle": {
+    "message": "Seite ist von Indexierung ausgeschlossen"
+  },
+  "lighthouse-core/audits/seo/is-crawlable.js | title": {
+    "message": "Seite ist nicht von Indexierung ausgeschlossen"
+  },
+  "lighthouse-core/audits/seo/link-text.js | description": {
+    "message": "Mit beschreibendem Linktext können Suchmaschinen Ihre Inhalte besser verstehen. [Weitere Informationen.](https://web.dev/link-text)"
+  },
+  "lighthouse-core/audits/seo/link-text.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 Link gefunden}other{# Links gefunden}}"
+  },
+  "lighthouse-core/audits/seo/link-text.js | failureTitle": {
+    "message": "Links enthalten keinen beschreibenden Text"
+  },
+  "lighthouse-core/audits/seo/link-text.js | title": {
+    "message": "Links haben beschreibenden Text"
+  },
+  "lighthouse-core/audits/seo/manual/structured-data.js | description": {
+    "message": "Sie können das [Testtool für strukturierte Daten](https://search.google.com/structured-data/testing-tool/) und den [Lint für strukturierte Daten](http://linter.structured-data.org/) ausführen, um strukturierte Daten zu validieren. [Weitere Informationen.](https://web.dev/structured-data)"
+  },
+  "lighthouse-core/audits/seo/manual/structured-data.js | title": {
+    "message": "Strukturierte Daten sind gültig"
+  },
+  "lighthouse-core/audits/seo/meta-description.js | description": {
+    "message": "Meta-Beschreibungen können in die Suchergebnisse aufgenommen werden, um die Seiteninhalte kurz zusammenzufassen. [Weitere Informationen.](https://web.dev/meta-description)"
+  },
+  "lighthouse-core/audits/seo/meta-description.js | explanation": {
+    "message": "Beschreibungstext ist leer."
+  },
+  "lighthouse-core/audits/seo/meta-description.js | failureTitle": {
+    "message": "Dokument enthält keine Meta-Beschreibung"
+  },
+  "lighthouse-core/audits/seo/meta-description.js | title": {
+    "message": "Dokument enthält eine Meta-Beschreibung"
+  },
+  "lighthouse-core/audits/seo/plugins.js | description": {
+    "message": "Suchmaschinen können keine Plug-in-Inhalte indexieren, und auf vielen Geräten werden Plug-ins eingeschränkt oder nicht unterstützt. [Weitere Informationen.](https://web.dev/plugins)"
+  },
+  "lighthouse-core/audits/seo/plugins.js | failureTitle": {
+    "message": "Dokument verwendet Plug-ins"
+  },
+  "lighthouse-core/audits/seo/plugins.js | title": {
+    "message": "Dokument verwendet keine Plug-ins"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | description": {
+    "message": "Wenn Ihre robots.txt-Datei fehlerhaft ist, können Crawler möglicherweise nicht nachvollziehen, wie Ihre Website gecrawlt oder indexiert werden soll. [Weitere Informationen.](https://web.dev/robots-txt)"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | displayValueHttpBadCode": {
+    "message": "robots.txt-Anfrage hat diesen HTTP-Status zurückgegeben: {statusCode}"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | displayValueValidationError": {
+    "message": "{itemCount,plural, =1{1 Fehler gefunden}other{# Fehler gefunden}}"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | explanation": {
+    "message": "Lighthouse konnte keine robots.txt-Datei herunterladen"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | failureTitle": {
+    "message": "robots.txt ist ungültig"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | title": {
+    "message": "robots.txt ist gültig"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | description": {
+    "message": "Interaktive Elemente wie Schaltflächen und Links sollten groß genug sein (48 x 48 px) und genügend Platz um sich herum haben, um einfach angetippt werden zu können. Dabei sollten sie sich aber nicht mit anderen Elementen überschneiden. [Weitere Informationen.](https://web.dev/tap-targets)"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | displayValue": {
+    "message": "{decimalProportion, number, percent} der Tippziele haben eine passende Größe"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | explanationViewportMetaNotOptimized": {
+    "message": "Die Tippziele sind zu klein, weil kein Meta-Tag für den Darstellungsbereich vorhanden ist, das für Bildschirme von Mobilgeräten optimiert ist"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | failureTitle": {
+    "message": "Größe von Tippzielen ist nicht richtig eingestellt"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | overlappingTargetHeader": {
+    "message": "Sich überschneidendes Ziel"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | tapTargetHeader": {
+    "message": "Tippziel"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | title": {
+    "message": "Größe von Tippzielen ist richtig eingestellt"
+  },
+  "lighthouse-core/audits/service-worker.js | description": {
+    "message": "Der Service Worker ermöglicht es Ihrer App, viele der Funktionen von progressiven Web-Apps zu nutzen, beispielsweise den Offlinemodus, das Hinzufügen zum Startbildschirm und Push-Benachrichtigungen. [Weitere Informationen.](https://developers.google.com/web/tools/lighthouse/audits/registered-service-worker)"
+  },
+  "lighthouse-core/audits/service-worker.js | explanationBadManifest": {
+    "message": "Diese Seite wird von einem Service Worker kontrolliert. Es wurde jedoch keine `start_url` gefunden, weil das Manifest nicht als gültige JSON-Datei geparst werden konnte."
+  },
+  "lighthouse-core/audits/service-worker.js | explanationBadStartUrl": {
+    "message": "Diese Seite wird zwar von einem Service Worker kontrolliert, die `start_url` ({startUrl}) liegt jedoch nicht in dessen Zuständigkeitsbereich ({scopeUrl})"
+  },
+  "lighthouse-core/audits/service-worker.js | explanationNoManifest": {
+    "message": "Diese Seite wird zwar von einem Service Worker kontrolliert, es wurde jedoch keine `start_url` gefunden, da kein Manifest abgerufen wurde."
+  },
+  "lighthouse-core/audits/service-worker.js | explanationOutOfScope": {
+    "message": "Dieser Ursprung verfügt über mindestens einen Service Worker. Die Seite ({pageUrl}) liegt jedoch nicht in dessen Zuständigkeitsbereich."
+  },
+  "lighthouse-core/audits/service-worker.js | failureTitle": {
+    "message": "Es wurde kein Service Worker erkannt, der die Seite und `start_url` kontrolliert"
+  },
+  "lighthouse-core/audits/service-worker.js | title": {
+    "message": "Es wurde ein Service Worker erkannt, der die Seite und `start_url` kontrolliert."
+  },
+  "lighthouse-core/audits/splash-screen.js | description": {
+    "message": "Wenn Sie Ihren Startbildschirm gemäß dem Design Ihrer App gestalten, vermitteln Sie den Nutzern schon beim Ladevorgang einen hochwertigen Eindruck. [Weitere Informationen.](https://developers.google.com/web/tools/lighthouse/audits/custom-splash-screen)"
+  },
+  "lighthouse-core/audits/splash-screen.js | failureTitle": {
+    "message": "Nicht für einen benutzerdefinierten Startbildschirm konfiguriert"
+  },
+  "lighthouse-core/audits/splash-screen.js | title": {
+    "message": "Konfiguriert für einen benutzerdefinierten Startbildschirm"
+  },
+  "lighthouse-core/audits/themed-omnibox.js | description": {
+    "message": "Die Adressleiste des Browsers kann an das Design Ihrer Website angepasst werden. [Weitere Informationen.](https://developers.google.com/web/tools/lighthouse/audits/address-bar)"
+  },
+  "lighthouse-core/audits/themed-omnibox.js | failureTitle": {
+    "message": "Legt keine Designfarbe für die Adressleiste fest."
+  },
+  "lighthouse-core/audits/themed-omnibox.js | title": {
+    "message": "Legt die Designfarbe der Adressleiste fest."
+  },
+  "lighthouse-core/audits/third-party-summary.js | columnBlockingTime": {
+    "message": "Dauer der Blockierung des Hauptthreads"
+  },
+  "lighthouse-core/audits/third-party-summary.js | columnThirdParty": {
+    "message": "Drittanbieter"
+  },
+  "lighthouse-core/audits/third-party-summary.js | description": {
+    "message": "Code von Drittanbietern kann die Ladegeschwindigkeit erheblich beeinträchtigen. Beschränken Sie die Zahl redundanter Drittanbieter und versuchen Sie, solchen Code erst nachträglich zu laden. [Weitere Informationen.](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/loading-third-party-javascript/)"
+  },
+  "lighthouse-core/audits/third-party-summary.js | displayValue": {
+    "message": "Code von Drittanbietern hat den Hauptthread {timeInMs, number, milliseconds} ms lang blockiert"
+  },
+  "lighthouse-core/audits/third-party-summary.js | failureTitle": {
+    "message": "Die Auswirkungen von Drittanbieter-Code minimieren"
+  },
+  "lighthouse-core/audits/third-party-summary.js | title": {
+    "message": "Nutzung von Drittanbieter-Code"
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | description": {
+    "message": "TTFB (Time To First Byte) erkennt den Zeitpunkt, zu dem Ihr Server eine Antwort sendet. [Weitere Informationen.](https://developers.google.com/web/tools/lighthouse/audits/ttfb)"
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | displayValue": {
+    "message": "Stammdokument brauchte {timeInMs, number, milliseconds} ms"
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | failureTitle": {
+    "message": "Serverantwortzeiten reduzieren (TTFB)"
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | title": {
+    "message": "Serverantwortzeiten sind niedrig (TTFB)"
+  },
+  "lighthouse-core/audits/user-timings.js | columnDuration": {
+    "message": "Dauer"
+  },
+  "lighthouse-core/audits/user-timings.js | columnStartTime": {
+    "message": "Beginn"
+  },
+  "lighthouse-core/audits/user-timings.js | columnType": {
+    "message": "Typ"
+  },
+  "lighthouse-core/audits/user-timings.js | description": {
+    "message": "Sie können die User Timing API in Ihre App integrieren. Damit lässt sich die Leistung Ihrer App während wichtiger Nutzerinteraktionen in der Praxis messen. [Weitere Informationen.](https://developers.google.com/web/tools/lighthouse/audits/user-timing)"
+  },
+  "lighthouse-core/audits/user-timings.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 Nutzertiming}other{# Nutzertimings}}"
+  },
+  "lighthouse-core/audits/user-timings.js | title": {
+    "message": "Markierungen und Messungen für das Nutzertiming"
+  },
+  "lighthouse-core/audits/uses-rel-preconnect.js | crossoriginWarning": {
+    "message": "Für {securityOrigin} wurde ein <link> zur Vorverbindung gefunden, der jedoch vom Browser nicht verwendet wurde. Überprüfen Sie, ob das `crossorigin`-Attribut richtig verwendet wird."
+  },
+  "lighthouse-core/audits/uses-rel-preconnect.js | description": {
+    "message": "Wenn Sie Hinweise auf Ressourcen als `preconnect` oder `dns-prefetch` hinzufügen, können Sie möglichst frühzeitig eine Verbindung zu wichtigen Drittanbieterursprüngen herstellen. [Weitere Informationen.](https://developers.google.com/web/fundamentals/performance/resource-prioritization#preconnect)"
+  },
+  "lighthouse-core/audits/uses-rel-preconnect.js | title": {
+    "message": "Vorverbindung zu erforderlichen Ursprüngen aufbauen"
+  },
+  "lighthouse-core/audits/uses-rel-preload.js | crossoriginWarning": {
+    "message": "Ein <link>-Element zum Vorabladen wurde für {preloadURL} gefunden, aber nicht vom Browser verwendet. Überprüfen Sie, ob das `crossorigin`-Attribut richtig verwendet wird."
+  },
+  "lighthouse-core/audits/uses-rel-preload.js | description": {
+    "message": "Mit `<link rel=preload>` können Sie das Abrufen von Ressourcen priorisieren, die derzeit beim Seitenaufbau erst später angefordert werden. [Weitere Informationen.](https://developers.google.com/web/tools/lighthouse/audits/preload)"
+  },
+  "lighthouse-core/audits/uses-rel-preload.js | title": {
+    "message": "Wichtige Anforderungen vorab laden"
+  },
+  "lighthouse-core/audits/viewport.js | description": {
+    "message": "Fügen Sie ein `<meta name=\"viewport\">`-Tag hinzu, um Ihre App für Bildschirme von Mobilgeräten zu optimieren. [Weitere Informationen.](https://developers.google.com/web/tools/lighthouse/audits/has-viewport-meta-tag)"
+  },
+  "lighthouse-core/audits/viewport.js | explanationNoTag": {
+    "message": "Kein `<meta name=\"viewport\">`-Tag gefunden"
+  },
+  "lighthouse-core/audits/viewport.js | failureTitle": {
+    "message": "Hat kein `<meta name=\"viewport\">`-Tag mit `width` oder `initial-scale`"
+  },
+  "lighthouse-core/audits/viewport.js | title": {
+    "message": "Hat ein `<meta name=\"viewport\">`-Tag mit `width` oder `initial-scale`"
+  },
+  "lighthouse-core/audits/without-javascript.js | description": {
+    "message": "Wenn JavaScript deaktiviert ist, sollte Ihre App dennoch einige Inhalte darstellen – auch wenn es sich dabei nur um eine Warnung handelt, dass die App JavaScript benötigt. [Weitere Informationen](https://developers.google.com/web/tools/lighthouse/audits/no-js)."
+  },
+  "lighthouse-core/audits/without-javascript.js | explanation": {
+    "message": "Die Body der Seite sollte einige Inhalte rendern, wenn ihre Skripts nicht verfügbar sind."
+  },
+  "lighthouse-core/audits/without-javascript.js | failureTitle": {
+    "message": "Liefert keinen Fallback-Content, wenn JavaScript nicht verfügbar ist"
+  },
+  "lighthouse-core/audits/without-javascript.js | title": {
+    "message": "Enthält einige Inhalte, wenn JavaScript nicht verfügbar ist"
+  },
+  "lighthouse-core/audits/works-offline.js | description": {
+    "message": "Wenn Sie eine progressive Web-App entwickeln, sollten Sie einen Service Worker verwenden, damit Ihre App auch offline funktioniert. [Weitere Informationen.](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)"
+  },
+  "lighthouse-core/audits/works-offline.js | failureTitle": {
+    "message": "Aktuelle Seite reagiert im Offlinemodus nicht mit dem HTTP-Statuscode 200"
+  },
+  "lighthouse-core/audits/works-offline.js | title": {
+    "message": "Aktuelle Seite reagiert im Offlinemodus mit dem HTTP-Statuscode 200"
+  },
+  "lighthouse-core/audits/works-offline.js | warningNoLoad": {
+    "message": "Die Seite lädt im Offlinemodus möglicherweise nicht, weil Ihre Test-URL ({requested}) auf \"{final}\" weitergeleitet wurde. Versuchen Sie, die zweite URL direkt zu testen."
+  },
+  "lighthouse-core/config/default-config.js | a11yAriaGroupDescription": {
+    "message": "Anhand dieser Möglichkeiten können Sie die Nutzung von ARIA in Ihrer Anwendung verbessern, wovon Nutzer von Hilfstechnologien wie Screenreadern unter Umständen profitieren."
+  },
+  "lighthouse-core/config/default-config.js | a11yAriaGroupTitle": {
+    "message": "ARIA"
+  },
+  "lighthouse-core/config/default-config.js | a11yAudioVideoGroupDescription": {
+    "message": "Hier finden Sie Möglichkeiten, um Alternativen für Audio- und Videoinhalte anzubieten. Dies kann die Nutzung für Personen mit eingeschränktem Hör- und Sehvermögen verbessern."
+  },
+  "lighthouse-core/config/default-config.js | a11yAudioVideoGroupTitle": {
+    "message": "Audio und Video"
+  },
+  "lighthouse-core/config/default-config.js | a11yBestPracticesGroupDescription": {
+    "message": "Hier finden Sie häufig genutzte Best Practices für Barrierefreiheit."
+  },
+  "lighthouse-core/config/default-config.js | a11yBestPracticesGroupTitle": {
+    "message": "Best Practices"
+  },
+  "lighthouse-core/config/default-config.js | a11yCategoryDescription": {
+    "message": "Mit diesen Prüfungen erfahren Sie, [wie Sie die Barrierefreiheit Ihrer Web-App verbessern](https://developers.google.com/web/fundamentals/accessibility). Nur bestimmte Probleme mit der Barrierefreiheit können durch automatisierte Tests erkannt werden. Deshalb ist es empfehlenswert, zusätzlich manuelle Tests durchzuführen."
+  },
+  "lighthouse-core/config/default-config.js | a11yCategoryManualDescription": {
+    "message": "Diese Prüfungen sind für Bereiche vorgesehen, für die automatische Testtools nicht geeignet sind. Weitere Informationen finden Sie in unserem Leitfaden zur [Durchführung einer Prüfung auf Barrierefreiheit](https://developers.google.com/web/fundamentals/accessibility/how-to-review)."
+  },
+  "lighthouse-core/config/default-config.js | a11yCategoryTitle": {
+    "message": "Barrierefreiheit"
+  },
+  "lighthouse-core/config/default-config.js | a11yColorContrastGroupDescription": {
+    "message": "Anhand dieser Möglichkeiten können Sie die Lesbarkeit Ihrer Inhalte verbessern."
+  },
+  "lighthouse-core/config/default-config.js | a11yColorContrastGroupTitle": {
+    "message": "Kontrast"
+  },
+  "lighthouse-core/config/default-config.js | a11yLanguageGroupDescription": {
+    "message": "Damit können Sie dafür sorgen, dass Ihre Inhalte in verschiedenen Sprachen besser verstanden werden."
+  },
+  "lighthouse-core/config/default-config.js | a11yLanguageGroupTitle": {
+    "message": "Internationalisierung und Lokalisierung"
+  },
+  "lighthouse-core/config/default-config.js | a11yNamesLabelsGroupDescription": {
+    "message": "Anhand dieser Möglichkeiten können Sie die Semantik der Steuerelemente Ihrer Anwendung verbessern. Dies kommt Nutzern von Hilfstechnologien wie Screenreadern zugute."
+  },
+  "lighthouse-core/config/default-config.js | a11yNamesLabelsGroupTitle": {
+    "message": "Namen und Labels"
+  },
+  "lighthouse-core/config/default-config.js | a11yNavigationGroupDescription": {
+    "message": "Hier finden Sie Möglichkeiten, die Tastaturnavigation in Ihrer App zu verbessern."
+  },
+  "lighthouse-core/config/default-config.js | a11yNavigationGroupTitle": {
+    "message": "Navigation"
+  },
+  "lighthouse-core/config/default-config.js | a11yTablesListsVideoGroupDescription": {
+    "message": "Hier finden Sie Möglichkeiten, um das Lesen von Daten in Tabellen oder Listen mit Hilfstechnologie wie Screenreadern zu verbessern."
+  },
+  "lighthouse-core/config/default-config.js | a11yTablesListsVideoGroupTitle": {
+    "message": "Tabellen und Listen"
+  },
+  "lighthouse-core/config/default-config.js | bestPracticesCategoryTitle": {
+    "message": "Best Practices"
+  },
+  "lighthouse-core/config/default-config.js | budgetsGroupDescription": {
+    "message": "Mithilfe von Leistungsbudgets werden Standards für die Leistung Ihrer Website definiert."
+  },
+  "lighthouse-core/config/default-config.js | budgetsGroupTitle": {
+    "message": "Budgets"
+  },
+  "lighthouse-core/config/default-config.js | diagnosticsGroupDescription": {
+    "message": "Weitere Informationen zur Leistung Ihrer App finden Sie hier. Diese Angaben haben keinen [direkten Einfluss](https://github.com/GoogleChrome/lighthouse/blob/d2ec9ffbb21de9ad1a0f86ed24575eda32c796f0/docs/scoring.md#how-are-the-scores-weighted) auf die Leistungsbewertung."
+  },
+  "lighthouse-core/config/default-config.js | diagnosticsGroupTitle": {
+    "message": "Diagnose"
+  },
+  "lighthouse-core/config/default-config.js | firstPaintImprovementsGroupDescription": {
+    "message": "Der wichtigste Faktor bei der Leistung ist, wie schnell Pixel auf dem Bildschirm gerendert werden. Wichtige Messwerte: \"Erste Inhalte gezeichnet\", \"Inhalte weitgehend gezeichnet\""
+  },
+  "lighthouse-core/config/default-config.js | firstPaintImprovementsGroupTitle": {
+    "message": "Verbesserungen beim Zeichnen der ersten Inhalte"
+  },
+  "lighthouse-core/config/default-config.js | loadOpportunitiesGroupDescription": {
+    "message": "Mithilfe diese Empfehlungen lässt sich die Ladezeit Ihrer Seite möglicherweise verkürzen. Sie haben keinen [direkten Einfluss](https://github.com/GoogleChrome/lighthouse/blob/d2ec9ffbb21de9ad1a0f86ed24575eda32c796f0/docs/scoring.md#how-are-the-scores-weighted) auf die Leistungsbewertung."
+  },
+  "lighthouse-core/config/default-config.js | loadOpportunitiesGroupTitle": {
+    "message": "Empfehlungen"
+  },
+  "lighthouse-core/config/default-config.js | metricGroupTitle": {
+    "message": "Messwerte"
+  },
+  "lighthouse-core/config/default-config.js | overallImprovementsGroupDescription": {
+    "message": "Hier können Sie die Ladezeiten verkürzen, damit die Seite so schnell wie möglich reagiert und Einsatzbereit ist. Wichtige Messwerte: \"Zeit bis Interaktivität\", \"Geschwindigkeitsindex\""
+  },
+  "lighthouse-core/config/default-config.js | overallImprovementsGroupTitle": {
+    "message": "Allgemeine Verbesserungen"
+  },
+  "lighthouse-core/config/default-config.js | performanceCategoryTitle": {
+    "message": "Leistung"
+  },
+  "lighthouse-core/config/default-config.js | pwaCategoryDescription": {
+    "message": "Diese Prüfungen dienen dazu, die einzelnen Aspekte einer progressiven Web-App zu überprüfen. [Weitere Informationen](https://developers.google.com/web/progressive-web-apps/checklist)."
+  },
+  "lighthouse-core/config/default-config.js | pwaCategoryManualDescription": {
+    "message": "Diese Prüfungen sind laut der grundlegenden [PWA-Checkliste](https://developers.google.com/web/progressive-web-apps/checklist) erforderlich, werden von Lighthouse jedoch nicht automatisch durchgeführt. Sie haben zwar keine Auswirkung auf Ihre Leistungsbewertung, aber es ist wichtig, sie manuell durchzuführen."
+  },
+  "lighthouse-core/config/default-config.js | pwaCategoryTitle": {
+    "message": "Progressive Web-App"
+  },
+  "lighthouse-core/config/default-config.js | pwaFastReliableGroupTitle": {
+    "message": "Schnell und zuverlässig"
+  },
+  "lighthouse-core/config/default-config.js | pwaInstallableGroupTitle": {
+    "message": "Installierbar"
+  },
+  "lighthouse-core/config/default-config.js | pwaOptimizedGroupTitle": {
+    "message": "PWA-optimiert"
+  },
+  "lighthouse-core/config/default-config.js | seoCategoryDescription": {
+    "message": "Mit diesen Prüfungen ist gewährleistet, dass Ihre Seite für das Ergebnis-Ranking von Suchmaschinen optimiert ist. Darüber hinaus gibt es aber auch noch andere Faktoren, die sich auf das Such-Ranking Ihrer Seite auswirken können und die Lighthouse nicht berücksichtigt. [Weitere Informationen.](https://support.google.com/webmasters/answer/35769)"
+  },
+  "lighthouse-core/config/default-config.js | seoCategoryManualDescription": {
+    "message": "Sie können diese zusätzlichen Validierungen für Ihre Website ausführen, um weitere Best Practices für die SEO zu prüfen."
+  },
+  "lighthouse-core/config/default-config.js | seoCategoryTitle": {
+    "message": "SEO"
+  },
+  "lighthouse-core/config/default-config.js | seoContentGroupDescription": {
+    "message": "Formatieren Sie Ihren HTML-Code so, dass Crawler den Inhalt Ihrer App besser verstehen."
+  },
+  "lighthouse-core/config/default-config.js | seoContentGroupTitle": {
+    "message": "Best Practices für Inhalte"
+  },
+  "lighthouse-core/config/default-config.js | seoCrawlingGroupDescription": {
+    "message": "Damit Ihre Website in den Suchergebnissen angezeigt werden kann, benötigen Crawler Zugriff auf Ihre App."
+  },
+  "lighthouse-core/config/default-config.js | seoCrawlingGroupTitle": {
+    "message": "Crawling und Indexierung"
+  },
+  "lighthouse-core/config/default-config.js | seoMobileGroupDescription": {
+    "message": "Achten Sie darauf, dass Ihre Seiten für Mobilgeräte optimiert sind, damit Nutzer problemlos Inhalte lesen können, ohne mit den Fingern heranzoomen zu müssen. [Weitere Informationen.](https://developers.google.com/search/mobile-sites/)"
+  },
+  "lighthouse-core/config/default-config.js | seoMobileGroupTitle": {
+    "message": "Für Mobilgeräte optimiert"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnCacheTTL": {
+    "message": "Cache-TTL"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnLocation": {
+    "message": "Position"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnName": {
+    "message": "Name"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnRequests": {
+    "message": "Anfragen"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnResourceType": {
+    "message": "Ressourcentyp"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnSize": {
+    "message": "Größe"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnTimeSpent": {
+    "message": "Zeitaufwand"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnTransferSize": {
+    "message": "Übertragungsgröße"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnURL": {
+    "message": "URL"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnWastedBytes": {
+    "message": "Mögliche Einsparungen"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnWastedMs": {
+    "message": "Mögliche Einsparungen"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | displayValueByteSavings": {
+    "message": "Mögliche Einsparung von {wastedBytes, number, bytes} KB"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | displayValueMsSavings": {
+    "message": "Mögliche Einsparung von {wastedMs, number, milliseconds} ms"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | documentResourceType": {
+    "message": "Dokument"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | fontResourceType": {
+    "message": "Schriftart"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | imageResourceType": {
+    "message": "Bild"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | mediaResourceType": {
+    "message": "Medien"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | ms": {
+    "message": "{timeInMs, number, milliseconds} ms"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | otherResourceType": {
+    "message": "Sonstige"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | scriptResourceType": {
+    "message": "Skript"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | seconds": {
+    "message": "{timeInMs, number, seconds} s"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | stylesheetResourceType": {
+    "message": "Stylesheet"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | thirdPartyResourceType": {
+    "message": "Drittanbieter"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | totalResourceType": {
+    "message": "Gesamt"
+  },
+  "lighthouse-core/lib/lh-error.js | badTraceRecording": {
+    "message": "Beim Aufzeichnen des Trace über Ihren Seitenaufbau ist ein Problem aufgetreten. Bitte führen Sie Lighthouse noch einmal aus. ({errorCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | criTimeout": {
+    "message": "Zeitüberschreitung beim Warten auf die ursprüngliche Verbindung zum Debugger-Protokoll."
+  },
+  "lighthouse-core/lib/lh-error.js | didntCollectScreenshots": {
+    "message": "Beim Seitenaufbau wurden von Chrome keine Screenshots erfasst. Achten Sie darauf, dass auf der Seite Inhalte sichtbar sind, und versuchen Sie dann, Lighthouse noch einmal auszuführen. ({errorCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | dnsFailure": {
+    "message": "Die angegebene Domain konnte von den DNS-Servern nicht aufgelöst werden."
+  },
+  "lighthouse-core/lib/lh-error.js | erroredRequiredArtifact": {
+    "message": "Beim erforderlichen {artifactName}-Gatherer ist ein Fehler aufgetreten: {errorMessage}"
+  },
+  "lighthouse-core/lib/lh-error.js | internalChromeError": {
+    "message": "Ein interner Chrome-Fehler ist aufgetreten. Starten Sie Chrome neu und versuchen Sie anschließend, Lighthouse noch einmal auszuführen."
+  },
+  "lighthouse-core/lib/lh-error.js | missingRequiredArtifact": {
+    "message": "Erforderlicher {artifactName}-Gatherer wurde nicht ausgeführt."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailed": {
+    "message": "Die von Ihnen angeforderte Seite konnte von Lighthouse nicht zuverlässig geladen werden. Überprüfen Sie, ob Sie die richtige URL testen und der Server auf alle Anfragen angemessen reagiert."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedHung": {
+    "message": "Die angeforderte URL konnte von Lighthouse nicht zuverlässig geladen werden, weil die Seite nicht mehr reagiert hat."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedInsecure": {
+    "message": "Die von Ihnen angegebene URL hat kein gültiges Sicherheitszertifikat. {securityMessages}"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedInterstitial": {
+    "message": "Chrome hat den Seitenaufbau mit einem Interstitial verhindert. Überprüfen Sie, ob Sie die richtige URL testen und der Server auf alle Anfragen angemessen reagiert."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedWithDetails": {
+    "message": "Die von Ihnen angeforderte Seite konnte von Lighthouse nicht zuverlässig geladen werden. Überprüfen Sie, ob Sie die richtige URL testen und der Server auf alle Anfragen angemessen reagiert. (Details: {errorDetails})"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedWithStatusCode": {
+    "message": "Die von Ihnen angeforderte Seite konnte von Lighthouse nicht zuverlässig geladen werden. Überprüfen Sie, ob Sie die richtige URL testen und der Server auf alle Anfragen angemessen reagiert. (Statuscode: {statusCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadTookTooLong": {
+    "message": "Das Laden Ihrer Seite hat zu lange gedauert. Nutzen Sie die Tipps im Bericht, um die Seitenladezeit zu verringern, und versuchen Sie anschließend noch einmal, Lighthouse auszuführen. ({errorCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | protocolTimeout": {
+    "message": "Die maximal zulässige Antwortzeit des DevTools-Protokolls wurde überschritten. (Methode: {protocolMethod})"
+  },
+  "lighthouse-core/lib/lh-error.js | requestContentTimeout": {
+    "message": "Die maximal zulässige Zeit für das Abrufen von Ressourceninhalten wurde überschritten"
+  },
+  "lighthouse-core/lib/lh-error.js | urlInvalid": {
+    "message": "Die von Ihnen angegebene URL scheint ungültig zu sein."
+  },
+  "lighthouse-core/report/html/renderer/util.js | auditGroupExpandTooltip": {
+    "message": "Überprüfungen ansehen"
+  },
+  "lighthouse-core/report/html/renderer/util.js | crcInitialNavigation": {
+    "message": "Anfangsnavigation"
+  },
+  "lighthouse-core/report/html/renderer/util.js | crcLongestDurationLabel": {
+    "message": "Maximale Latenz für kritischen Pfad:"
+  },
+  "lighthouse-core/report/html/renderer/util.js | errorLabel": {
+    "message": "Fehler."
+  },
+  "lighthouse-core/report/html/renderer/util.js | errorMissingAuditInfo": {
+    "message": "Fehler gemeldet: keine Informationen zur Überprüfung"
+  },
+  "lighthouse-core/report/html/renderer/util.js | labDataTitle": {
+    "message": "Labdaten"
+  },
+  "lighthouse-core/report/html/renderer/util.js | lsPerformanceCategoryDescription": {
+    "message": "[Lighthouse](https://developers.google.com/web/tools/lighthouse/)-Analyse der aktuellen Seite in einem emulierten Mobilfunknetz. Die Werte sind Schätzungen und können variieren."
+  },
+  "lighthouse-core/report/html/renderer/util.js | manualAuditsGroupTitle": {
+    "message": "Zusätzliche Elemente zur manuellen Überprüfung"
+  },
+  "lighthouse-core/report/html/renderer/util.js | notApplicableAuditsGroupTitle": {
+    "message": "Nicht zutreffend"
+  },
+  "lighthouse-core/report/html/renderer/util.js | opportunityResourceColumnLabel": {
+    "message": "Empfehlung"
+  },
+  "lighthouse-core/report/html/renderer/util.js | opportunitySavingsColumnLabel": {
+    "message": "Geschätzte Einsparung"
+  },
+  "lighthouse-core/report/html/renderer/util.js | passedAuditsGroupTitle": {
+    "message": "Bestandene Prüfungen"
+  },
+  "lighthouse-core/report/html/renderer/util.js | snippetCollapseButtonLabel": {
+    "message": "Snippet minimieren"
+  },
+  "lighthouse-core/report/html/renderer/util.js | snippetExpandButtonLabel": {
+    "message": "Snippet maximieren"
+  },
+  "lighthouse-core/report/html/renderer/util.js | thirdPartyResourcesLabel": {
+    "message": "Drittanbieter-Ressourcen anzeigen"
+  },
+  "lighthouse-core/report/html/renderer/util.js | toplevelWarningsMessage": {
+    "message": "Einige Probleme haben diese Ausführung von Lighthouse beeinträchtigt:"
+  },
+  "lighthouse-core/report/html/renderer/util.js | varianceDisclaimer": {
+    "message": "Die Werte sind Schätzungen und können variieren. Die Leistungsbewertung [basiert nur auf diesen Messwerten](https://github.com/GoogleChrome/lighthouse/blob/d2ec9ffbb21de9ad1a0f86ed24575eda32c796f0/docs/scoring.md#how-are-the-scores-weighted)."
+  },
+  "lighthouse-core/report/html/renderer/util.js | warningAuditsGroupTitle": {
+    "message": "Bestandene Prüfungen mit Warnungen"
+  },
+  "lighthouse-core/report/html/renderer/util.js | warningHeader": {
+    "message": "Warnungen: "
+  },
+  "stack-packs/packs/wordpress.js | efficient_animated_content": {
+    "message": "Sie haben die Möglichkeit, Ihr GIF bei einem Dienst hochzuladen, der dafür sorgt, dass es als HTML5-Video eingebettet werden kann."
+  },
+  "stack-packs/packs/wordpress.js | offscreen_images": {
+    "message": "Sie können ein [Lazy-Loading-Plug-in für WordPress](https://wordpress.org/plugins/search/lazy+load/) installieren, mit dem Sie nicht sichtbare Bilder aufschieben. Alternativ können Sie auch zu einem Design wechseln, das diese Funktion bietet. Sie sollten sich auch überlegen, [das AMP-Plug-in](https://wordpress.org/plugins/amp/) zu verwenden."
+  },
+  "stack-packs/packs/wordpress.js | render_blocking_resources": {
+    "message": "Es gibt eine Reihe von WordPress-Plug-ins, mit denen Sie [wichtige Assets einbetten](https://wordpress.org/plugins/search/critical+css/) oder [weniger wichtige Ressourcen aufschieben](https://wordpress.org/plugins/search/defer+css+javascript/) können. Beachten Sie, dass über diese Plug-ins bereitgestellte Optimierungen dazu führen können, dass Ihre Designs oder Plug-ins nicht funktionieren. Daher müssen Sie wahrscheinlich Änderungen am Code vornehmen."
+  },
+  "stack-packs/packs/wordpress.js | time_to_first_byte": {
+    "message": "Sowohl Designs, Plug-ins als auch Serverspezifikationen tragen zur Serverantwortzeit bei. Versuchen Sie, ein noch weiter optimiertes Design zu finden, wählen Sie ein geeignetes Optimierungs-Plug-in aus und/oder upgraden Sie Ihren Server."
+  },
+  "stack-packs/packs/wordpress.js | total_byte_weight": {
+    "message": "Sie haben die Möglichkeit, Auszüge in Ihrer Beitragsliste einzublenden (z. B. über das Tag \"Mehr\"), die Anzahl der Beiträge auf einer Seite zu verringern, lange Beiträge auf mehrere Seiten aufzuteilen oder ein Plug-in für das Lazy Loading von Kommentaren zu verwenden."
+  },
+  "stack-packs/packs/wordpress.js | unminified_css": {
+    "message": "Ihre Website lässt sich mit einer Reihe von [WordPress-Plug-ins](https://wordpress.org/plugins/search/minify+css/) beschleunigen, durch die Ihre Stile verkettet und komprimiert werden. Sofern möglich, können Sie diese Komprimierung auch im Voraus über einen Build-Prozess vornehmen."
+  },
+  "stack-packs/packs/wordpress.js | unminified_javascript": {
+    "message": "Ihre Website lässt sich mit einer Reihe von [WordPress-Plug-ins](https://wordpress.org/plugins/search/minify+javascript/) beschleunigen, durch die Ihre Skripts verkettet und komprimiert werden. Sofern möglich, können Sie diese Komprimierung auch im Voraus über einen Build-Prozess vornehmen."
+  },
+  "stack-packs/packs/wordpress.js | unused_css_rules": {
+    "message": "Prüfen Sie, ob Sie [WordPress-Plug-ins](https://wordpress.org/plugins/), über die nicht verwendete CSS auf Ihre Seite geladen werden, entfernen oder durch alternative Plug-ins ersetzen können. Wenn Sie die Plug-ins ermitteln möchten, über die irrelevante CSS hinzugefügt werden, können Sie das Prüftool zur [Codeabdeckung](https://developers.google.com/web/updates/2017/04/devtools-release-notes#coverage) in den Chrome-Entwicklertools verwenden. Das entsprechende Design/Plug-in können Sie anhand der URL des Stylesheets erkennen. Suchen Sie in der Liste nach Plug-ins mit vielen Stylesheets, bei denen im Prüftool zur Codeabdeckung viel nicht verwendeter Code (markiert in Rot) angezeigt wird. Ein Stylesheet sollte nur dann in ein Plug-in aufgenommen werden, wenn es auch tatsächlich auf der Seite verwendet wird."
+  },
+  "stack-packs/packs/wordpress.js | unused_javascript": {
+    "message": "Prüfen Sie, ob Sie [WordPress-Plug-ins](https://wordpress.org/plugins/), über die nicht verwendete JavaScript-Dateien auf Ihre Seite geladen werden, entfernen oder durch alternative Plug-ins ersetzen können. Wenn Sie die Plug-ins ermitteln möchten, über die irrelevante JavaScript-Dateien hinzugefügt werden, können Sie das Prüftool zur [Codeabdeckung](https://developers.google.com/web/updates/2017/04/devtools-release-notes#coverage) in den Chrome-Entwicklertools verwenden. Das entsprechende Design/Plug-in können Sie anhand der URL des Skripts erkennen. Suchen Sie in der Liste nach Plug-ins mit vielen Skripts, bei denen im Prüftool zur Codeabdeckung viel nicht verwendeter Code (markiert in Rot) angezeigt wird. Ein Skript sollte nur dann in ein Plug-in aufgenommen werden, wenn es auch tatsächlich auf der Seite verwendet wird."
+  },
+  "stack-packs/packs/wordpress.js | uses_long_cache_ttl": {
+    "message": "Hier erhalten Sie Informationen zum [Browser-Caching in WordPress](https://codex.wordpress.org/WordPress_Optimization#Browser_Caching)."
+  },
+  "stack-packs/packs/wordpress.js | uses_optimized_images": {
+    "message": "Sie haben die Möglichkeit, ein [WordPress-Plug-in für die Bildoptimierung](https://wordpress.org/plugins/search/optimize+images/) zu verwenden, durch das Ihre Bilder komprimiert werden, die Qualität jedoch gleich bleibt."
+  },
+  "stack-packs/packs/wordpress.js | uses_responsive_images": {
+    "message": "Sie haben die Möglichkeit, Bilder direkt über die [Medienbibliothek](https://codex.wordpress.org/Media_Library_Screen) hochzuladen, damit die erforderlichen Bildgrößen verfügbar sind. Die Bilder können Sie dann aus der Medienbibliothek einfügen oder auch das Bild-Widget nutzen, damit die optimalen Bildgrößen verwendet werden (einschließlich derjenigen für die responsiven Haltepunkte). Bilder in `Full Size` sollten nur verwendet werden, wenn die Abmessungen für die entsprechende Nutzung geeignet sind. [Weitere Informationen.](https://codex.wordpress.org/Inserting_Images_into_Posts_and_Pages#Image_Size)"
+  },
+  "stack-packs/packs/wordpress.js | uses_text_compression": {
+    "message": "Sie können die Textkomprimierung in der Konfiguration Ihres Webservers aktivieren."
+  },
+  "stack-packs/packs/wordpress.js | uses_webp_images": {
+    "message": "Sie haben die Möglichkeit, Ihre hochgeladenen Bilder mithilfe eines [Plug-ins](https://wordpress.org/plugins/search/convert+webp/) oder eines Dienstes automatisch in das optimale Format zu konvertieren."
+  }
+}
diff --git a/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/el.json b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/el.json
new file mode 100644
index 0000000..9f53922
--- /dev/null
+++ b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/el.json
@@ -0,0 +1,1541 @@
+{
+  "lighthouse-core/audits/accessibility/accesskeys.js | description": {
+    "message": "Τα πλήκτρα πρόσβασης επιτρέπουν στους χρήστες να εστιάσουν γρήγορα σε ένα τμήμα της σελίδας. Για σωστή πλοήγηση, κάθε πλήκτρο πρόσβασης πρέπει να είναι μοναδικό. [Μάθετε περισσότερα](https://web.dev/accesskeys/)."
+  },
+  "lighthouse-core/audits/accessibility/accesskeys.js | failureTitle": {
+    "message": "Οι τιμές `[accesskey]` δεν είναι μοναδικές"
+  },
+  "lighthouse-core/audits/accessibility/accesskeys.js | title": {
+    "message": "`[accesskey]` τιμές είναι μοναδικές"
+  },
+  "lighthouse-core/audits/accessibility/aria-allowed-attr.js | description": {
+    "message": "Κάθε στοιχείο ARIA `role` υποστηρίζει ένα συγκεκριμένο υποσύνολο χαρακτηριστικών `aria-*`. Η λανθασμένη αντιστοίχισή τους καθιστά μη έγκυρα τα χαρακτηριστικά `aria-*`. [Μάθετε περισσότερα](https://web.dev/aria-allowed-attr/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-allowed-attr.js | failureTitle": {
+    "message": "Τα χαρακτηριστικά `[aria-*]` δεν αντιστοιχούν στους ρόλους τους"
+  },
+  "lighthouse-core/audits/accessibility/aria-allowed-attr.js | title": {
+    "message": "Τα χαρακτηριστικά `[aria-*]` αντιστοιχούν στους ρόλους τους"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-attr.js | description": {
+    "message": "Ορισμένοι ρόλοι ARIA έχουν απαιτούμενα χαρακτηριστικά που περιγράφουν την κατάσταση του στοιχείου στους αναγνώστες οθόνης. [Μάθετε περισσότερα](https://web.dev/aria-required-attr/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-required-attr.js | failureTitle": {
+    "message": "Τα στοιχεία `[role]` δεν έχουν όλα τα απαιτούμενα χαρακτηριστικά `[aria-*]`"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-attr.js | title": {
+    "message": "Τα στοιχεία `[role]` έχουν όλα τα απαιτούμενα χαρακτηριστικά `[aria-*]`"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-children.js | description": {
+    "message": "Ορισμένοι γονικοί ρόλοι ARIA πρέπει να περιέχουν συγκεκριμένους θυγατρικούς ρόλους, για να μπορούν να εκτελέσουν τις προβλεπόμενες λειτουργίες προσβασιμότητας. [Μάθετε περισσότερα](https://web.dev/aria-required-children/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-required-children.js | failureTitle": {
+    "message": "Λείπουν τα στοιχεία με `[role]` που απαιτούν συγκεκριμένα θυγατρικά `[role]`."
+  },
+  "lighthouse-core/audits/accessibility/aria-required-children.js | title": {
+    "message": "Υπάρχουν τα στοιχεία με `[role]` που απαιτούν συγκεκριμένα θυγατρικά `[role]`."
+  },
+  "lighthouse-core/audits/accessibility/aria-required-parent.js | description": {
+    "message": "Ορισμένοι θυγατρικοί ρόλοι ARIA πρέπει να περιέχονται σε συγκεκριμένους γονικούς ρόλους, για να μπορούν να εκτελέσουν σωστά τις προβλεπόμενες λειτουργίες προσβασιμότητας. [Μάθετε περισσότερα](https://web.dev/aria-required-parent/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-required-parent.js | failureTitle": {
+    "message": "Τα στοιχεία `[role]` δεν περιλαμβάνονται στο απαιτούμενο γονικό στοιχείο τους"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-parent.js | title": {
+    "message": "Τα στοιχεία `[role]` περιλαμβάνονται στο απαιτούμενο γονικό στοιχείο τους"
+  },
+  "lighthouse-core/audits/accessibility/aria-roles.js | description": {
+    "message": "Οι ρόλοι ARIA πρέπει να έχουν έγκυρες τιμές, για να μπορούν να εκτελέσουν τις προβλεπόμενες λειτουργίες προσβασιμότητας. [Μάθετε περισσότερα](https://web.dev/aria-roles/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-roles.js | failureTitle": {
+    "message": "Οι τιμές `[role]` δεν είναι έγκυρες"
+  },
+  "lighthouse-core/audits/accessibility/aria-roles.js | title": {
+    "message": "Οι τιμές `[role]` είναι έγκυρες"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr-value.js | description": {
+    "message": "Οι τεχνολογίες υποβοήθησης χρηστών, όπως οι αναγνώστες οθόνης, δεν μπορούν να ερμηνεύσουν τα χαρακτηριστικά ARIA με μη έγκυρες τιμές. [Μάθετε περισσότερα](https://web.dev/aria-valid-attr-value/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr-value.js | failureTitle": {
+    "message": "Τα χαρακτηριστικά `[aria-*]` δεν έχουν έγκυρες τιμές"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr-value.js | title": {
+    "message": "Τα χαρακτηριστικά `[aria-*]` έχουν έγκυρες τιμές"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr.js | description": {
+    "message": "Οι τεχνολογίες υποβοήθησης χρηστών, όπως οι αναγνώστες οθόνης, δεν μπορούν να ερμηνεύσουν τα χαρακτηριστικά ARIA με μη έγκυρα ονόματα. [Μάθετε περισσότερα](https://web.dev/aria-valid-attr/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr.js | failureTitle": {
+    "message": "Τα χαρακτηριστικά `[aria-*]` δεν είναι έγκυρα ή έχουν ορθογραφικά λάθη"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr.js | title": {
+    "message": "Τα χαρακτηριστικά `[aria-*]` είναι έγκυρα και δεν έχουν ορθογραφικά λάθη"
+  },
+  "lighthouse-core/audits/accessibility/audio-caption.js | description": {
+    "message": "Οι υπότιτλοι καθιστούν τα στοιχεία ήχου προσβάσιμα από τους χρήστες που είναι κωφοί ή έχουν προβλήματα ακοής, καθώς παρέχουν σημαντικές πληροφορίες όπως το ποιος μιλάει, το τι λέει και άλλες μη λεκτικές πληροφορίες. [Μάθετε περισσότερα](https://web.dev/audio-caption/)."
+  },
+  "lighthouse-core/audits/accessibility/audio-caption.js | failureTitle": {
+    "message": "Λείπει ένα στοιχείο `<track>` με `[kind=\"captions\"]` από τα στοιχεία `<audio>`."
+  },
+  "lighthouse-core/audits/accessibility/audio-caption.js | title": {
+    "message": "Τα στοιχεία `<audio>` περιέχουν ένα στοιχείο `<track>` με `[kind=\"captions\"]`"
+  },
+  "lighthouse-core/audits/accessibility/axe-audit.js | failingElementsHeader": {
+    "message": "Στοιχεία που απέτυχαν"
+  },
+  "lighthouse-core/audits/accessibility/button-name.js | description": {
+    "message": "Όταν ένα κουμπί δεν έχει προσβάσιμο όνομα, οι αναγνώστες οθόνης το εκφωνούν ως \"κουμπί\", με αποτέλεσμα να μην μπορεί να χρησιμοποιηθεί από τους χρήστες που βασίζονται στους αναγνώστες οθόνης. [Μάθετε περισσότερα](https://web.dev/button-name/)."
+  },
+  "lighthouse-core/audits/accessibility/button-name.js | failureTitle": {
+    "message": "Τα κουμπιά δεν έχουν προσβάσιμο όνομα"
+  },
+  "lighthouse-core/audits/accessibility/button-name.js | title": {
+    "message": "Τα κουμπιά έχουν προσβάσιμο όνομα"
+  },
+  "lighthouse-core/audits/accessibility/bypass.js | description": {
+    "message": "Η προσθήκη τρόπων για την παράκαμψη του επαναλαμβανόμενου περιεχομένου επιτρέπει στους χρήστες του πληκτρολογίου να πλοηγούνται πιο αποτελεσματικά στη σελίδα. [Μάθετε περισσότερα](https://web.dev/bypass/)."
+  },
+  "lighthouse-core/audits/accessibility/bypass.js | failureTitle": {
+    "message": "Η σελίδα δεν περιέχει κεφαλίδα, σύνδεσμο παράβλεψης ή περιοχή ορόσημου"
+  },
+  "lighthouse-core/audits/accessibility/bypass.js | title": {
+    "message": "Η σελίδα περιέχει κεφαλίδα, σύνδεσμο παράβλεψης ή περιοχή ορόσημου"
+  },
+  "lighthouse-core/audits/accessibility/color-contrast.js | description": {
+    "message": "Ένα κείμενο χαμηλής αντίθεσης είναι δύσκολο ή αδύνατο να αναγνωστεί. [Μάθετε περισσότερα](https://web.dev/color-contrast/)."
+  },
+  "lighthouse-core/audits/accessibility/color-contrast.js | failureTitle": {
+    "message": "Τα χρώματα παρασκηνίου και προσκηνίου δεν έχουν επαρκή αναλογία αντίθεσης."
+  },
+  "lighthouse-core/audits/accessibility/color-contrast.js | title": {
+    "message": "Τα χρώματα παρασκηνίου και προσκηνίου έχουν επαρκή αναλογία αντίθεσης"
+  },
+  "lighthouse-core/audits/accessibility/definition-list.js | description": {
+    "message": "Όταν οι λίστες ορισμών δεν επισημαίνονται σωστά, οι αναγνώστες οθόνης μπορεί να παράγουν συγκεχυμένα ή ανακριβή αποτελέσματα. [Μάθετε περισσότερα](https://web.dev/definition-list/)."
+  },
+  "lighthouse-core/audits/accessibility/definition-list.js | failureTitle": {
+    "message": "Τα στοιχεία `<dl>` δεν περιέχουν μόνο σωστά ταξινομημένες ομάδες `<dt>` και `<dd>` ή στοιχεία `<script>` ή `<template>`."
+  },
+  "lighthouse-core/audits/accessibility/definition-list.js | title": {
+    "message": "Τα στοιχεία `<dl>` περιέχουν μόνο σωστά ταξινομημένες ομάδες `<dt>` και `<dd>` ή στοιχεία `<script>` ή `<template>`."
+  },
+  "lighthouse-core/audits/accessibility/dlitem.js | description": {
+    "message": "Τα στοιχεία λίστας ορισμών (`<dt>` και `<dd>`) πρέπει να περιτυλίγονται σε ένα γονικό στοιχείο `<dl>`, ώστε οι αναγνώστες οθόνης να μπορούν να τα εκφωνήσουν σωστά. [Μάθετε περισσότερα](https://web.dev/dlitem/)."
+  },
+  "lighthouse-core/audits/accessibility/dlitem.js | failureTitle": {
+    "message": "Τα στοιχεία της λίστας ορισμών δεν περιτυλίγονται σε στοιχεία `<dl>`"
+  },
+  "lighthouse-core/audits/accessibility/dlitem.js | title": {
+    "message": "Τα στοιχεία της λίστας ορισμών περιτυλίγονται σε στοιχεία `<dl>`"
+  },
+  "lighthouse-core/audits/accessibility/document-title.js | description": {
+    "message": "Για τους χρήστες ενός αναγνώστη οθόνης, ο τίτλος λειτουργεί ως επισκόπηση της σελίδας. Για τους χρήστες μιας μηχανής αναζήτησης, ο τίτλος τούς επιτρέπει να αποφασίσουν εάν μια σελίδα είναι σχετική με την αναζήτησή τους. [Μάθετε περισσότερα](https://web.dev/document-title/)."
+  },
+  "lighthouse-core/audits/accessibility/document-title.js | failureTitle": {
+    "message": "Το έγγραφο δεν έχει ένα στοιχείο `<title>`"
+  },
+  "lighthouse-core/audits/accessibility/document-title.js | title": {
+    "message": "Το έγγραφο έχει ένα στοιχείο `<title>`"
+  },
+  "lighthouse-core/audits/accessibility/duplicate-id.js | description": {
+    "message": "Η τιμή ενός χαρακτηριστικού αναγνωριστικού (id) πρέπει να είναι μοναδική, ώστε οι τεχνολογίες υποβοήθησης χρηστών να μην παραβλέπουν τις άλλες παρουσίες. [Μάθετε περισσότερα](https://web.dev/duplicate-id/)."
+  },
+  "lighthouse-core/audits/accessibility/duplicate-id.js | failureTitle": {
+    "message": "Τα χαρακτηριστικά `[id]` στη σελίδα δεν είναι μοναδικά"
+  },
+  "lighthouse-core/audits/accessibility/duplicate-id.js | title": {
+    "message": "Τα χαρακτηριστικά `[id]` στη σελίδα είναι μοναδικά"
+  },
+  "lighthouse-core/audits/accessibility/frame-title.js | description": {
+    "message": "Οι χρήστες ενός αναγνώστη οθόνης βασίζονται στους τίτλους των πλαισίων για την περιγραφή του περιεχομένου των πλαισίων. [Μάθετε περισσότερα](https://web.dev/frame-title/)."
+  },
+  "lighthouse-core/audits/accessibility/frame-title.js | failureTitle": {
+    "message": "Τα στοιχεία `<frame>` ή `<iframe>` δεν έχουν τίτλο"
+  },
+  "lighthouse-core/audits/accessibility/frame-title.js | title": {
+    "message": "Τα στοιχεία `<frame>` ή `<iframe>` έχουν έναν τίτλο"
+  },
+  "lighthouse-core/audits/accessibility/html-has-lang.js | description": {
+    "message": "Εάν μια σελίδα δεν προσδιορίζει κάποιο χαρακτηριστικό γλώσσας, ο αναγνώστης οθόνης υποθέτει ότι η σελίδα εμφανίζεται στην προεπιλεγμένη γλώσσα που επέλεξε ο χρήστης κατά τη ρύθμιση του αναγνώστη οθόνης. Εάν η σελίδα δεν εμφανίζεται στην προεπιλεγμένη γλώσσα, τότε ο αναγνώστης οθόνης μπορεί να μην εκφωνήσει σωστά το κείμενο της σελίδας. [Μάθετε περισσότερα](https://web.dev/html-has-lang/)."
+  },
+  "lighthouse-core/audits/accessibility/html-has-lang.js | failureTitle": {
+    "message": "Το στοιχείο `<html>` δεν έχει ένα χαρακτηριστικό `[lang]`"
+  },
+  "lighthouse-core/audits/accessibility/html-has-lang.js | title": {
+    "message": "Το στοιχείο `<html>` έχει ένα χαρακτηριστικό `[lang]`"
+  },
+  "lighthouse-core/audits/accessibility/html-lang-valid.js | description": {
+    "message": "Ο ορισμός μιας έγκυρης [γλώσσας BCP 47](https://www.w3.org/International/questions/qa-choosing-language-tags#question) βοηθά τους αναγνώστες οθόνης να εκφωνούν σωστά το κείμενο. [Μάθετε περισσότερα](https://web.dev/html-lang-valid/)."
+  },
+  "lighthouse-core/audits/accessibility/html-lang-valid.js | failureTitle": {
+    "message": "Το στοιχείο `<html>` δεν έχει μια έγκυρη τιμή για το χαρακτηριστικό `[lang]`."
+  },
+  "lighthouse-core/audits/accessibility/html-lang-valid.js | title": {
+    "message": "Το στοιχείο `<html>` έχει μια έγκυρη τιμή για το χαρακτηριστικό `[lang]`"
+  },
+  "lighthouse-core/audits/accessibility/image-alt.js | description": {
+    "message": "Τα πληροφοριακά στοιχεία πρέπει να στοχεύουν σε σύντομο και περιγραφικό εναλλακτικό κείμενο. Τα διακοσμητικά στοιχεία μπορούν να παραβλεφθούν με ένα κενό χαρακτηριστικό alt. [Μάθετε περισσότερα](https://web.dev/image-alt/)."
+  },
+  "lighthouse-core/audits/accessibility/image-alt.js | failureTitle": {
+    "message": "Τα στοιχεία εικόνας δεν έχουν χαρακτηριστικά `[alt]`"
+  },
+  "lighthouse-core/audits/accessibility/image-alt.js | title": {
+    "message": "Τα στοιχεία εικόνας έχουν χαρακτηριστικά `[alt]`"
+  },
+  "lighthouse-core/audits/accessibility/input-image-alt.js | description": {
+    "message": "Όταν μια εικόνα χρησιμοποιείται ως κουμπί `<input>`, η παροχή εναλλακτικού κειμένου μπορεί να βοηθήσει τους χρήστες του αναγνώστη οθόνης να κατανοήσουν τον σκοπό του κουμπιού. [Μάθετε περισσότερα](https://web.dev/input-image-alt/)."
+  },
+  "lighthouse-core/audits/accessibility/input-image-alt.js | failureTitle": {
+    "message": "Τα στοιχεία `<input type=\"image\">` δεν έχουν κείμενο `[alt]`"
+  },
+  "lighthouse-core/audits/accessibility/input-image-alt.js | title": {
+    "message": "Τα στοιχεία `<input type=\"image\">` έχουν κείμενο `[alt]`"
+  },
+  "lighthouse-core/audits/accessibility/label.js | description": {
+    "message": "Οι ετικέτες διασφαλίζουν ότι οι τεχνολογίες υποβοήθησης χρηστών, όπως οι αναγνώστες οθόνης, εκφωνούν σωστά τα στοιχεία ελέγχου φορμών. [Μάθετε περισσότερα](https://web.dev/label/)."
+  },
+  "lighthouse-core/audits/accessibility/label.js | failureTitle": {
+    "message": "Τα στοιχεία φρόμας δεν έχουν συσχετισμένες ετικέτες"
+  },
+  "lighthouse-core/audits/accessibility/label.js | title": {
+    "message": "Τα στοιχεία φόρμας έχουν συσχετισμένες ετικέτες"
+  },
+  "lighthouse-core/audits/accessibility/layout-table.js | description": {
+    "message": "Ένας πίνακας που χρησιμοποιείται για σκοπούς διάταξης δεν πρέπει να περιλαμβάνει στοιχεία δεδομένων, όπως τα στοιχεία th ή caption ή το χαρακτηριστικό summary, επειδή αυτό μπορεί να προκαλέσει σύγχυση στους χρήστες του αναγνώστη οθόνης. [Μάθετε περισσότερα](https://web.dev/layout-table/)."
+  },
+  "lighthouse-core/audits/accessibility/layout-table.js | failureTitle": {
+    "message": "Τα στοιχεία παρουσίασης `<table>` δεν αποφεύγουν τη χρήση των ετικετών `<th>` ή `<caption>` ή του χαρακτηριστικού `[summary]`."
+  },
+  "lighthouse-core/audits/accessibility/layout-table.js | title": {
+    "message": "Τα στοιχεία παρουσίασης `<table>` αποφεύγουν τη χρήση των ετικετών `<th>` ή `<caption>` ή του χαρακτηριστικού `[summary]`."
+  },
+  "lighthouse-core/audits/accessibility/link-name.js | description": {
+    "message": "Το κείμενο συνδέσμων (και το εναλλακτικό κείμενο για εικόνες όταν χρησιμοποιούνται ως σύνδεσμοι) που είναι διακριτό, μοναδικό και έχει δυνατότητα εστίασης βελτιώνει την εμπειρία πλοήγησης για τους χρήστες των αναγνωστών οθόνης. [Μάθετε περισσότερα](https://web.dev/link-name/)."
+  },
+  "lighthouse-core/audits/accessibility/link-name.js | failureTitle": {
+    "message": "Οι σύνδεσμοι δεν έχουν διακριτό όνομα"
+  },
+  "lighthouse-core/audits/accessibility/link-name.js | title": {
+    "message": "Οι σύνδεσμοι έχουν διακριτό όνομα"
+  },
+  "lighthouse-core/audits/accessibility/list.js | description": {
+    "message": "Οι αναγνώστες οθόνης έχουν έναν συγκεκριμένο τρόπο εκφώνησης των λιστών. Η χρήση κατάλληλης δομής για τις λίστες βοηθά στην αποτελεσματικότερη λειτουργία των αναγνωστών οθόνης. [Μάθετε περισσότερα](https://web.dev/list/)."
+  },
+  "lighthouse-core/audits/accessibility/list.js | failureTitle": {
+    "message": "Οι λίστες δεν περιέχουν μόνο στοιχεία `<li>` και στοιχεία υποστήριξης σεναρίων (`<script>` και `<template>`)."
+  },
+  "lighthouse-core/audits/accessibility/list.js | title": {
+    "message": "Οι λίστες περιέχουν μόνο στοιχεία `<li>` και στοιχεία υποστήριξης σεναρίων (`<script>` και `<template>`)."
+  },
+  "lighthouse-core/audits/accessibility/listitem.js | description": {
+    "message": "Για τη σωστή εκφώνηση των στοιχείων λίστας (`<li>`) από τους αναγνώστες οθόνης, τα στοιχεία πρέπει να περιέχονται σε ένα γονικό `<ul>` ή `<ol>`. [Μάθετε περισσότερα](https://web.dev/listitem/)."
+  },
+  "lighthouse-core/audits/accessibility/listitem.js | failureTitle": {
+    "message": "Τα στοιχεία λίστας (`<li>`) δεν περιλαμβάνονται στα γονικά στοιχεία `<ul>` ή `<ol>`."
+  },
+  "lighthouse-core/audits/accessibility/listitem.js | title": {
+    "message": "Τα στοιχεία λίστας (`<li>`) περιλαμβάνονται στα γονικά στοιχεία `<ul>` ή `<ol>`"
+  },
+  "lighthouse-core/audits/accessibility/meta-refresh.js | description": {
+    "message": "Οι χρήστες δεν περιμένουν ότι μια σελίδα θα ανανεωθεί αυτόματα και η εστίαση θα επιστρέψει στην κορυφή της σελίδας. Αυτό μπορεί να δημιουργήσει δυσαρέσκεια ή σύγχυση. [Μάθετε περισσότερα](https://web.dev/meta-refresh/)."
+  },
+  "lighthouse-core/audits/accessibility/meta-refresh.js | failureTitle": {
+    "message": "Το έγγραφο χρησιμοποιεί μια ετικέτα `<meta http-equiv=\"refresh\">`"
+  },
+  "lighthouse-core/audits/accessibility/meta-refresh.js | title": {
+    "message": "Το έγγραφο δεν χρησιμοποιεί `<meta http-equiv=\"refresh\">`"
+  },
+  "lighthouse-core/audits/accessibility/meta-viewport.js | description": {
+    "message": "Η απενεργοποίηση της δυνατότητας εστίασης αποτελεί πρόβλημα για τους χρήστες με περιορισμένη όραση που βασίζονται στη μεγέθυνση οθόνης για να βλέπουν σωστά τα περιεχόμενα μιας ιστοσελίδας. [Μάθετε περισσότερα](https://web.dev/meta-viewport/)."
+  },
+  "lighthouse-core/audits/accessibility/meta-viewport.js | failureTitle": {
+    "message": "To χαρακτηριστικό `[user-scalable=\"no\"]` χρησιμοποιείται στο στοιχείο `<meta name=\"viewport\">` ή το χαρακτηριστικό `[maximum-scale]` έχει τιμή μικρότερη από 5."
+  },
+  "lighthouse-core/audits/accessibility/meta-viewport.js | title": {
+    "message": "To χαρακτηριστικό `[user-scalable=\"no\"]` δεν χρησιμοποιείται στο στοιχείο `<meta name=\"viewport\">` και το χαρακτηριστικό `[maximum-scale]` δεν έχει τιμή μικρότερη από 5."
+  },
+  "lighthouse-core/audits/accessibility/object-alt.js | description": {
+    "message": "Οι αναγνώστες οθόνης δεν μπορούν να μεταφράσουν περιεχόμενο που δεν είναι κείμενο. Η προσθήκη εναλλακτικού κειμένου στα στοιχεία `<object>` βοηθά τους αναγνώστες οθόνης να αποδίδουν το νόημα στους χρήστες. [Μάθετε περισσότερα](https://web.dev/object-alt/)."
+  },
+  "lighthouse-core/audits/accessibility/object-alt.js | failureTitle": {
+    "message": "Τα στοιχεία `<object>` δεν έχουν κείμενο `[alt]`"
+  },
+  "lighthouse-core/audits/accessibility/object-alt.js | title": {
+    "message": "Τα στοιχεία `<object>` έχουν κείμενο `[alt]`"
+  },
+  "lighthouse-core/audits/accessibility/tabindex.js | description": {
+    "message": "Μια τιμή μεγαλύτερη από 0 υποδηλώνει μια ρητή σειρά πλοήγησης. Εάν και ορθό από τεχνικής άποψης, αυτό συχνά επηρεάζει αρνητικά την εμπειρία των χρηστών που βασίζονται στις τεχνολογίες υποβοήθησης. [Μάθετε περισσότερα](https://web.dev/tabindex/)."
+  },
+  "lighthouse-core/audits/accessibility/tabindex.js | failureTitle": {
+    "message": "Ορισμένα στοιχεία έχουν μια τιμή `[tabindex]` μεγαλύτερη από 0"
+  },
+  "lighthouse-core/audits/accessibility/tabindex.js | title": {
+    "message": "Κανένα στοιχείο δεν έχει τιμή `[tabindex]` μεγαλύτερη από 0"
+  },
+  "lighthouse-core/audits/accessibility/td-headers-attr.js | description": {
+    "message": "Οι αναγνώστες οθόνης έχουν λειτουργίες που διευκολύνουν την πλοήγηση στους πίνακες. Διασφαλίζοντας ότι τα κελιά `<td>` που χρησιμοποιούν το χαρακτηριστικό `[headers]` παραπέμπουν μόνο σε άλλα κελιά στον ίδιο πίνακα, μπορείτε να βελτιώσετε την εμπειρία των χρηστών των αναγνωστών οθόνης. [Μάθετε περισσότερα](https://web.dev/td-headers-attr/)."
+  },
+  "lighthouse-core/audits/accessibility/td-headers-attr.js | failureTitle": {
+    "message": "Τα κελιά σε ένα στοιχείο `<table>` που χρησιμοποιούν το χαρακτηριστικό `[headers]` παραπέμπουν σε άλλα κελιά του ίδιου πίνακα."
+  },
+  "lighthouse-core/audits/accessibility/td-headers-attr.js | title": {
+    "message": "Τα κελιά σε ένα στοιχείο `<table>` που χρησιμοποιούν το χαρακτηριστικό `[headers]` παραπέμπουν μόνο σε άλλα κελιά του ίδιου πίνακα."
+  },
+  "lighthouse-core/audits/accessibility/th-has-data-cells.js | description": {
+    "message": "Οι αναγνώστες οθόνης έχουν λειτουργίες που διευκολύνουν την πλοήγηση στους πίνακες. Διασφαλίζοντας ότι οι κεφαλίδες πίνακα παραπέμπουν πάντα σε ένα σύνολο κελιών του πίνακα, μπορείτε να βελτιώσετε την εμπειρία των χρηστών των αναγνωστών οθόνης. [Μάθετε περισσότερα](https://web.dev/th-has-data-cells/)."
+  },
+  "lighthouse-core/audits/accessibility/th-has-data-cells.js | failureTitle": {
+    "message": "Τα στοιχεία `<th>` και τα στοιχεία με `[role=\"columnheader\"/\"rowheader\"]` δεν έχουν τα κελιά δεδομένων που περιγράφουν."
+  },
+  "lighthouse-core/audits/accessibility/th-has-data-cells.js | title": {
+    "message": "Τα στοιχεία `<th>` και τα στοιχεία με `[role=\"columnheader\"/\"rowheader\"]` έχουν τα κελιά δεδομένων που περιγράφουν."
+  },
+  "lighthouse-core/audits/accessibility/valid-lang.js | description": {
+    "message": "Ο ορισμός μιας έγκυρης [γλώσσας BCP 47](https://www.w3.org/International/questions/qa-choosing-language-tags#question) στα στοιχεία συμβάλλει στο να διασφαλιστεί ότι ο αναγνώστης οθόνης θα εκφωνήσει σωστά το κείμενο. [Μάθετε περισσότερα](https://web.dev/valid-lang/)."
+  },
+  "lighthouse-core/audits/accessibility/valid-lang.js | failureTitle": {
+    "message": "Τα χαρακτηριστικά `[lang]` δεν έχουν έγκυρη τιμή"
+  },
+  "lighthouse-core/audits/accessibility/valid-lang.js | title": {
+    "message": "Τα χαρακτηριστικά `[lang]` έχουν μια έγκυρη τιμή"
+  },
+  "lighthouse-core/audits/accessibility/video-caption.js | description": {
+    "message": "Όταν ένα βίντεο περιέχει υπότιτλους, διευκολύνεται η πρόσβαση των χρηστών που είναι κωφοί ή έχουν προβλήματα ακοής στις πληροφορίες που περιέχει. [Μάθετε περισσότερα](https://web.dev/video-caption/)."
+  },
+  "lighthouse-core/audits/accessibility/video-caption.js | failureTitle": {
+    "message": "Τα στοιχεία `<video>` δεν περιέχουν ένα στοιχείο `<track>` με `[kind=\"captions\"]`."
+  },
+  "lighthouse-core/audits/accessibility/video-caption.js | title": {
+    "message": "Τα στοιχεία `<video>` περιέχουν ένα στοιχείο `<track>` με `[kind=\"captions\"]`"
+  },
+  "lighthouse-core/audits/accessibility/video-description.js | description": {
+    "message": "Οι ηχητικές περιγραφές παρέχουν πληροφορίες για τα βίντεο, οι οποίες δεν μπορούν να αποδοθούν μέσω των διαλόγων, όπως οι εκφράσεις προσώπου και το σκηνικό δράσης. [Μάθετε περισσότερα](https://web.dev/video-description/)."
+  },
+  "lighthouse-core/audits/accessibility/video-description.js | failureTitle": {
+    "message": "Τα στοιχεία `<video>` δεν περιέχουν ένα στοιχείο `<track>` με `[kind=\"description\"]`."
+  },
+  "lighthouse-core/audits/accessibility/video-description.js | title": {
+    "message": "Τα στοιχεία `<video>` περιέχουν ένα στοιχείο `<track>` με `[kind=\"description\"]`"
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | description": {
+    "message": "Για ιδανική εμφάνιση στο iOS όταν οι χρήστες προσθέτουν μια προηγμένη εφαρμογή ιστού στην αρχική οθόνη, ορίστε ένα `apple-touch-icon`. Το εικονίδιο πρέπει να παραπέμπει σε μια μη διαφανή, τετράγωνη εικόνα PNG 192px (ή 180px). [Μάθετε περισσότερα](https://developers.google.com/web/fundamentals/design-and-ux/browser-customization/)."
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | failureTitle": {
+    "message": "Δεν παρέχει ένα έγκυρο `apple-touch-icon`"
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | precomposedWarning": {
+    "message": "Το `apple-touch-icon-precomposed` δεν είναι ενημερωμένο. Συνιστάται η χρήση του `apple-touch-icon`."
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | title": {
+    "message": "Παρέχει ένα έγκυρο `apple-touch-icon`"
+  },
+  "lighthouse-core/audits/bootup-time.js | chromeExtensionsWarning": {
+    "message": "Οι επεκτάσεις του Chrome επηρέασαν αρνητικά την απόδοση φόρτωσης αυτής της σελίδας. Δοκιμάστε να ελέγξετε τη σελίδα σε κατάσταση ανώνυμης περιήγησης ή από ένα προφίλ του Chrome χωρίς επεκτάσεις."
+  },
+  "lighthouse-core/audits/bootup-time.js | columnScriptEval": {
+    "message": "Αξιολόγηση σεναρίου"
+  },
+  "lighthouse-core/audits/bootup-time.js | columnScriptParse": {
+    "message": "Ανάλυση σεναρίου"
+  },
+  "lighthouse-core/audits/bootup-time.js | columnTotal": {
+    "message": "Συνολικός χρόνος CPU"
+  },
+  "lighthouse-core/audits/bootup-time.js | description": {
+    "message": "Εξετάστε το ενδεχόμενο να ελαττώσετε τον χρόνο ανάλυσης, σύνθεσης και εκτέλεσης JS. Μπορεί να διαπιστώσετε ότι η προβολή μικρότερων φορτίων δεδομένων JS συμβάλλει προς αυτή την κατεύθυνση. [Μάθετε περισσότερα](https://developers.google.com/web/tools/lighthouse/audits/bootup)."
+  },
+  "lighthouse-core/audits/bootup-time.js | failureTitle": {
+    "message": "Μείωση χρόνου εκτέλεσης JavaScript"
+  },
+  "lighthouse-core/audits/bootup-time.js | title": {
+    "message": "Χρόνος εκτέλεσης JavaScript"
+  },
+  "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | description": {
+    "message": "Οι μεγάλες εικόνες GIF δεν είναι αποδοτικές για την προβολή περιεχομένου κινούμενων εικόνων. Εξετάστε το ενδεχόμενο, αντί για τη χρήση εικόνων GIF, να χρησιμοποιείτε βίντεο MPEG4/WebM για τις κινούμενες εικόνες και εικόνες PNG/WebP για τις στατικές εικόνες, ώστε να εξοικονομήσετε byte δικτύου. [Μαθετε περισσότερα](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/replace-animated-gifs-with-video/)."
+  },
+  "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | title": {
+    "message": "Χρήση μορφών βίντεο για περιεχόμενο κινούμενων εικόνων"
+  },
+  "lighthouse-core/audits/byte-efficiency/offscreen-images.js | description": {
+    "message": "Εξετάστε το ενδεχόμενο αργής φόρτωσης των εικόνων εκτός οθόνης και των κρυφών εικόνων μετά τη φόρτωση όλων των κρίσιμων πόρων. Με αυτό τον τρόπο, μπορεί να ελλατώθεί ο χρόνος μετάβασης σε κατάσταση αλληλεπίδρασης. [Μάθετε περισσότερα](https://developers.google.com/web/tools/lighthouse/audits/offscreen-images)."
+  },
+  "lighthouse-core/audits/byte-efficiency/offscreen-images.js | title": {
+    "message": "Καθυστέρηση φόρτωσης εικόνων εκτός οθόνης"
+  },
+  "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | description": {
+    "message": "Υπάρχουν πόροι οι οποίοι αποκλείουν την πρώτη μορφή της σελίδας σας. Εξετάστε το ενδεχόμενο τα κρίσιμα JS/CSS να προβάλλονται ενσωματωμένα και τα μη κρίσιμα JS/στιλ να φορτώνονται αργότερα. [Μάθετε περισσότερα](https://developers.google.com/web/tools/lighthouse/audits/blocking-resources)."
+  },
+  "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | title": {
+    "message": "Εξάλειψη πόρων που αποκλείουν την απόδοση"
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | description": {
+    "message": "Τα μεγάλα φορτία δικτύου συνεπάγονται οικονομικό κόστος για τους χρήστες και σχετίζονται σε μεγάλο βαθμό με εκτενείς χρόνους φόρτωσης. [Μάθετε περισσότερα](https://developers.google.com/web/tools/lighthouse/audits/network-payloads)."
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | displayValue": {
+    "message": "Το συνολικό μέγεθος ήταν {totalBytes, number, bytes} KB"
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | failureTitle": {
+    "message": "Αποφύγετε τα πολύ μεγάλα φορτία δεδομένων δικτύου"
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | title": {
+    "message": "Αποφεύγει τα πολύ μεγάλα φορτία δεδομένων δικτύου"
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-css.js | description": {
+    "message": "H ελαχιστοποίηση των αρχείων CSS μπορεί να μειώσει τα μεγέθη φορτίων δικτύου. [Μάθετε περισσότερα](https://developers.google.com/web/tools/lighthouse/audits/minify-css)."
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-css.js | title": {
+    "message": "Ελαχιστοποίηση CSS"
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | description": {
+    "message": "Η ελαχιστοποίηση των αρχείων JavaScript μπορεί να ελαττώσει το φορτίο, τα μεγέθη και τον χρόνο ανάλυσης σεναρίων. [Μάθετε περισσότερα](https://developers.google.com/speed/docs/insights/MinifyResources)."
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | title": {
+    "message": "Ελαχιστοποίηση JavaScript"
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | description": {
+    "message": "Καταργήστε τους ανενεργούς κανόνες από τα φύλλα στιλ και αναβάλετε τη φόρτωση των CSS που δεν χρησιμοποιούνται για το περιεχόμενο στο πάνω μέρος της σελίδας, για να ελαττώσετε τα περιττά byte που καταναλώνονται από τη δραστηριότητα δικτύου. [Μάθετε περισσότερα](https://developers.google.com/web/tools/lighthouse/audits/unused-css)."
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | title": {
+    "message": "Κατάργηση CSS που δεν χρησιμοποιείται"
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-javascript.js | description": {
+    "message": "Καταργήστε τυχόν JavaScript που δεν χρησιμοποιείται, για να ελαττώσετε τα byte που καταναλώνονται από τη δραστηριότητα δικτύου."
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-javascript.js | title": {
+    "message": "Κατάργηση JavaScript που δεν χρησιμοποιείται"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | description": {
+    "message": "Η μεγάλη διάρκεια ζωής της κρυφής μνήμης μπορεί να επιταχύνει τις επαναλαμβανόμενες επισκέψεις στη σελίδα σας. [Μάθετε περισσότερα](https://developers.google.com/web/tools/lighthouse/audits/cache-policy)."
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | displayValue": {
+    "message": "{itemCount,plural, =1{Βρέθηκε 1 πόρος}other{Βρέθηκαν # πόροι}}"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | failureTitle": {
+    "message": "Προβολή στατικών στοιχείων με επαρκή πολιτική κρυφής μνήμης"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | title": {
+    "message": "Χρησιμοποιεί αποδοτική πολιτική κρυφής μνήμης σε στατικά στοιχεία"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | description": {
+    "message": "Οι βελτιστοποιημένες εικόνες φορτώνονται πιο γρήγορα και καταναλώνουν λιγότερα δεδομένα κινητής τηλεφωνίας. [Μάθετε περισσότερα](https://developers.google.com/web/tools/lighthouse/audits/optimize-images)."
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | title": {
+    "message": "Αποδοτική κωδικοποίηση εικόνων"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | description": {
+    "message": "Συνιστάται η προβολή εικόνων κατάλληλου μεγέθους για την εξοικονόμηση δεδομένων κινητής τηλεφωνίας και τη βελτίωση του χρόνου φόρτωσης. [Μάθετε περισσότερα](https://developers.google.com/web/tools/lighthouse/audits/oversized-images)."
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | title": {
+    "message": "Κατάλληλη προσαρμογή μεγέθους εικόνων"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | description": {
+    "message": "Η προβολή των βασιζόμενων σε κείμενο πόρων πρέπει να γίνεται με συμπίεση (gzip, deflate ή brotli), ώστε να ελαχιστοποιείται ο συνολικός όγκος byte δικτύου. [Μάθετε περισσότερα](https://developers.google.com/web/tools/lighthouse/audits/text-compression)."
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | title": {
+    "message": "Ενεργοποίηση συμπίεσης κειμένου"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | description": {
+    "message": "Οι μορφές εικόνας JPEG 2000, JPEG XR και WebP συχνά παρέχουν καλύτερη συμπίεση από ό,τι οι μορφές PNG και JPEG. Αυτό σημαίνει γρηγορότερες λήψεις και μικρότερη κατανάλωση δεδομένων. [Μάθετε περισσότερα](https://developers.google.com/web/tools/lighthouse/audits/webp)."
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | title": {
+    "message": "Προβολή εικόνων σε μορφές επόμενης γενιάς"
+  },
+  "lighthouse-core/audits/content-width.js | description": {
+    "message": "Εάν το πλάτος του περιεχομένου της εφαρμογής σας δεν αντιστοιχεί στο πλάτος της θύρας προβολής, η εφαρμογή σας ενδέχεται να μην είναι βελτιστοποιημένη για οθόνες κινητών συσκευών. [Μάθετε περισσότερα](https://developers.google.com/web/tools/lighthouse/audits/content-sized-correctly-for-viewport)."
+  },
+  "lighthouse-core/audits/content-width.js | explanation": {
+    "message": "Το μέγεθος {innerWidth}px της θύρας προβολής δεν αντιστοιχεί στο μέγεθος {outerWidth}px του παραθύρου."
+  },
+  "lighthouse-core/audits/content-width.js | failureTitle": {
+    "message": "Το μέγεθος του περιεχομένου δεν προσαρμόζεται σωστά για τη θύρα προβολής"
+  },
+  "lighthouse-core/audits/content-width.js | title": {
+    "message": "Το μέγεθος του περιεχομένου έχει προσαρμοστεί σωστά για τη θύρα προβολής"
+  },
+  "lighthouse-core/audits/critical-request-chains.js | description": {
+    "message": "Στις ακόλουθες αλυσίδες κρίσιμων αιτημάτων φαίνεται ποιοι πόροι φορτώνονται με υψηλή προτεραιότητα. Για τη βελτίωση της φόρτωσης των σελίδων, εξετάστε το ενδεχόμενο μείωσης του μεγέθους των αλυσίδων, μείωσης του μεγέθους λήψης πόρων ή καθυστέρησης λήψης των μη απαραίτητων πόρων. [Μάθετε περισσότερα](https://developers.google.com/web/tools/lighthouse/audits/critical-request-chains)."
+  },
+  "lighthouse-core/audits/critical-request-chains.js | displayValue": {
+    "message": "{itemCount,plural, =1{Βρέθηκε 1 αλυσίδα}other{Βρέθηκαν # αλυσίδες}}"
+  },
+  "lighthouse-core/audits/critical-request-chains.js | title": {
+    "message": "Ελαχιστοποίηση βάθους κρίσιμων αιτημάτων"
+  },
+  "lighthouse-core/audits/deprecations.js | columnDeprecate": {
+    "message": "Κατάργηση / Προειδοποίηση"
+  },
+  "lighthouse-core/audits/deprecations.js | columnLine": {
+    "message": "Γραμμή"
+  },
+  "lighthouse-core/audits/deprecations.js | description": {
+    "message": "Τα καταργημένα API θα αφαιρεθούν κάποια στιγμή από το πρόγραμμα περιήγησης. [Μάθετε περισσότερα](https://web.dev/deprecations)."
+  },
+  "lighthouse-core/audits/deprecations.js | displayValue": {
+    "message": "{itemCount,plural, =1{Βρέθηκε 1 προειδοποίηση}other{Βρέθηκαν # προειδοποιήσεις}}"
+  },
+  "lighthouse-core/audits/deprecations.js | failureTitle": {
+    "message": "Χρησιμοποιεί καταργημένα API"
+  },
+  "lighthouse-core/audits/deprecations.js | title": {
+    "message": "Αποφυγή καταργημένων API"
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | description": {
+    "message": "Η κρυφή μνήμη εφαρμογής έχει καταργηθεί. [Μάθετε περισσότερα](https://web.dev/appcache-manifest)."
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | displayValue": {
+    "message": "Βρέθηκε \"{AppCacheManifest}\""
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | failureTitle": {
+    "message": "Χρησιμοποιεί προσωρινή μνήμη εφαρμογής"
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | title": {
+    "message": "Αποφυγή προσωρινής μνήμης εφαρμογής"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | description": {
+    "message": "Ο ορισμός ενός τύπου εγγράφου (doctype) εμποδίζει τη μετάβαση του προγράμματος περιήγησης στη λειτουργία ιδιαιτεροτήτων. [Μάθετε περισσότερα](https://web.dev/doctype)."
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationBadDoctype": {
+    "message": "Το όνομα τύπου εγγράφου (doctype) πρέπει να είναι μια συμβολοσειρά `html` με πεζούς χαρακτήρες."
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationNoDoctype": {
+    "message": "Το έγγραφο πρέπει να περιέχει έναν τύπο εγγράφου (doctype)"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationPublicId": {
+    "message": "Το αναγνωριστικό publicId αναμενόταν να είναι μια κενή συμβολοσειρά"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationSystemId": {
+    "message": "Το αναγνωριστικό systemId αναμενόταν να είναι μια κενή συμβολοσειρά"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | failureTitle": {
+    "message": "Από τη σελίδα λείπει ο τύπος εγγράφου (doctype) HTML, με αποτέλεσμα να ενεργοποιείται η λειτουργία ιδιαιτεροτήτων (quirks-mode)."
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | title": {
+    "message": "Η σελίδα έχει τύπο εγγράφου (doctype) HTML"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | columnElement": {
+    "message": "Στοιχείο"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | columnStatistic": {
+    "message": "Στατιστικό στοιχείο"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | columnValue": {
+    "message": "Τιμή"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | description": {
+    "message": "Οι μηχανικοί προγραμμάτων περιήγησης συνιστούν οι σελίδες να περιέχουν λιγότερα από 1.500 στοιχεία DOM. Το ιδανικό είναι μια δενδρική δομή με βάθος έως 32 στοιχεία και λιγότερα από 60 θυγατρικά/γονικά στοιχεία. Ένα μεγάλο DOM μπορεί να αυξήσει τη χρήση της μνήμης, να προκαλέσει [υπολογισμούς στιλ](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations) μεγαλύτερης διάρκειας και να δημιουργήσει [ανανεώσεις ροών διάταξης](https://developers.google.com/speed/articles/reflow) υψηλού κόστους. [Μάθετε περισσότερα](https://web.dev/dom-size)."
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 στοιχείο}other{# στοιχεία}}"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | failureTitle": {
+    "message": "Αποφύγετε τα υπερβολικά μεγάλα μεγέθη DOM"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | statisticDOMDepth": {
+    "message": "Μέγιστο βάθος DOM"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | statisticDOMElements": {
+    "message": "Σύνολο στοιχείων DOM"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | statisticDOMWidth": {
+    "message": "Μέγιστος αριθμός θυγατρικών στοιχείων"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | title": {
+    "message": "Αποφεύγει τα υπερβολικά μεγάλα μεγέθη DOM"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | columnRel": {
+    "message": "Rel"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | columnTarget": {
+    "message": "Στόχος"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | description": {
+    "message": "Προσθέστε ένα στοιχείο `rel=\"noopener\"` ή `rel=\"noreferrer\"` στους εξωτερικούς συνδέσμους για να βελτιώσετε την απόδοση και να αποφύγετε τις ευπάθειες ασφάλειας. [Μάθετε περισσότερα](https://web.dev/external-anchors-use-rel-noopener)."
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | failureTitle": {
+    "message": "Οι σύνδεσμοι με προορισμούς διασταυρούμενων προελεύσεων δεν είναι ασφαλείς"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | title": {
+    "message": "Οι σύνδεσμοι με προορισμούς διασταυρούμενων προελεύσεων είναι ασφαλείς"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | warning": {
+    "message": "Δεν ήταν δυνατός ο προσδιορισμός του προορισμού για την αγκύρωση ({anchorHTML}). Εάν δεν χρησιμοποιείται ως υπερσύνδεσμος, εξετάστε το ενδεχόμενο να καταργήσετε το χαρακτηριστικό target=_blank."
+  },
+  "lighthouse-core/audits/dobetterweb/geolocation-on-start.js | description": {
+    "message": "Οι ιστότοποι που απαιτούν τη γνωστοποίηση τοποθεσίας χωρίς προφανή αιτία προκαλούν σύγχυση ή φαίνονται ύποπτοι στους χρήστες. Συνιστάται τα αιτήματα να συνδέονται με τις ενέργειες των χρηστών. [Μάθετε περισσότερα](https://web.dev/geolocation-on-start)."
+  },
+  "lighthouse-core/audits/dobetterweb/geolocation-on-start.js | failureTitle": {
+    "message": "Αίτημα για άδεια εντοπισμού γεωγραφικής τοποθεσίας κατά τη φόρτωση σελίδων"
+  },
+  "lighthouse-core/audits/dobetterweb/geolocation-on-start.js | title": {
+    "message": "Αποφυγή αιτήματος για άδεια εντοπισμού γεωγραφικής τοποθεσίας κατά τη φόρτωση σελίδων"
+  },
+  "lighthouse-core/audits/dobetterweb/js-libraries.js | columnVersion": {
+    "message": "Έκδοση"
+  },
+  "lighthouse-core/audits/dobetterweb/js-libraries.js | description": {
+    "message": "Όλες οι βιβλιοθήκες JavaScript διεπαφής εντοπίστηκαν στη σελίδα. [Μάθετε περισσότερα](https://web.dev/js-libraries)."
+  },
+  "lighthouse-core/audits/dobetterweb/js-libraries.js | title": {
+    "message": "Εντοπίστηκαν βιβλιοθήκες JavaScript"
+  },
+  "lighthouse-core/audits/dobetterweb/no-document-write.js | description": {
+    "message": "Για τους χρήστες με αργές συνδέσεις, η δυναμική ενσωμάτωση εξωτερικών σεναρίων μέσω `document.write()` μπορεί να καθυστερήσει τη φόρτωση των σελίδων για δεκάδες δευτερόλεπτα. [Μάθετε περισσότερα](https://web.dev/no-document-write)."
+  },
+  "lighthouse-core/audits/dobetterweb/no-document-write.js | failureTitle": {
+    "message": "Χρησιμοποιεί `document.write()`"
+  },
+  "lighthouse-core/audits/dobetterweb/no-document-write.js | title": {
+    "message": "Αποφυγή `document.write()`"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | columnSeverity": {
+    "message": "Υψηλότερη σοβαρότητα"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | columnVersion": {
+    "message": "Έκδοση βιβλιοθήκης"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | columnVuln": {
+    "message": "Πλήθος ευπαθειών"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | description": {
+    "message": "Ορισμένα σενάρια τρίτων μπορεί να έχουν γνωστές ευπάθειες ασφάλειας τις οποίες μπορούν εύκολα να εντοπίσουν και να εκμεταλλευτούν οι επίδοξοι εισβολείς. [Μάθετε περισσότερα](https://web.dev/no-vulnerable-libraries)."
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | displayValue": {
+    "message": "{itemCount,plural, =1{Εντοπίστηκε 1 ευπάθεια}other{Εντοπίστηκαν # ευπάθειες}}"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | failureTitle": {
+    "message": "Συμπερίληψη βιβλιοθηκών JavaScript διεπαφής με γνωστές ευπάθειες ασφάλειας"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | rowSeverityHigh": {
+    "message": "Υψηλή"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | rowSeverityLow": {
+    "message": "Χαμηλή"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | rowSeverityMedium": {
+    "message": "Μέτρια"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | title": {
+    "message": "Αποφυγή όλων των βιβλιοθηκών JavaScript διεπαφής με γνωστές ευπάθειες ασφάλειας"
+  },
+  "lighthouse-core/audits/dobetterweb/notification-on-start.js | description": {
+    "message": "Οι ιστότοποι που απαιτούν την αποστολή ειδοποιήσεων χωρίς προφανή αιτία προκαλούν σύγχυση ή φαίνονται ύποπτοι στους χρήστες. Συνιστάται τα αιτήματα να συνδέονται με τις κινήσεις των χρηστών. [Μάθετε περισσότερα](https://web.dev/notification-on-start)."
+  },
+  "lighthouse-core/audits/dobetterweb/notification-on-start.js | failureTitle": {
+    "message": "Αίτημα για άδεια ειδοποίησης κατά τη φόρτωση σελίδων"
+  },
+  "lighthouse-core/audits/dobetterweb/notification-on-start.js | title": {
+    "message": "Αποφυγή αιτήματος για άδεια ειδοποίησης κατά τη φόρτωση σελίδων"
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | columnFailingElem": {
+    "message": "Στοιχεία που απέτυχαν"
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | description": {
+    "message": "Η απαγόρευση της επικόλλησης κωδικών πρόσβασης υπονομεύει την ορθή πολιτική ασφάλειας. [Μάθετε περισσότερα](https://web.dev/password-inputs-can-be-pasted-into)."
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | failureTitle": {
+    "message": "Εμποδίζει την επικόλληση στα πεδία κωδικών πρόσβασης από τους χρήστες"
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | title": {
+    "message": "Επιτρέπει την επικόλληση στα πεδία κωδικών πρόσβασης από τους χρήστες"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | columnProtocol": {
+    "message": "Πρωτόκολλο"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | description": {
+    "message": "Το HTTP/2 παρέχει περισσότερα πλεονεκτήματα σε σχέση με το HTTP/1.1, όπως οι δυαδικές κεφαλίδες, η πολυπλεξία και η λειτουργία αποστολής push από διακομιστή. [Μάθετε περισσότερα](https://web.dev/uses-http2)."
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 αίτημα δεν εξυπηρετήθηκε μεσω HTTP/2}other{# αιτήματα δεν εξυπηρετήθηκαν μέσω HTTP/2}}"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | failureTitle": {
+    "message": "Δεν χρησιμοποιεί HTTP/2 για όλους τους πόρους της"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | title": {
+    "message": "Χρησιμοποιεί HTTP/2 για τους πόρους της"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-passive-event-listeners.js | description": {
+    "message": "Εξετάστε το ενδεχόμενο να επισημάνετε τις λειτουργίες επεξεργασίας συμβάντων αφής και χρήσης τροχού κύλισης ως `passive` για να βελτιώσετε την απόδοση κύλισης της σελίδας σας. [Μάθετε περισσότερα](https://web.dev/uses-passive-event-listeners)."
+  },
+  "lighthouse-core/audits/dobetterweb/uses-passive-event-listeners.js | failureTitle": {
+    "message": "Δεν χρησιμοποιεί παθητικές λειτουργίες επεξεργασίας συμβάντων για τη βελτίωση της απόδοσης κύλισης"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-passive-event-listeners.js | title": {
+    "message": "Χρησιμοποιεί παθητικές λειτουργίες επεξεργασίας συμβάντων για τη βελτίωση της απόδοσης κύλισης"
+  },
+  "lighthouse-core/audits/errors-in-console.js | columnDesc": {
+    "message": "Περιγραφή"
+  },
+  "lighthouse-core/audits/errors-in-console.js | description": {
+    "message": "Τα σφάλματα που έχουν καταγραφεί στην κονσόλα υποδεικνύουν ότι υπάρχουν προβλήματα τα οποία δεν έχουν επιλυθεί. Μπορεί να σχετίζονται με σφάλματα αιτημάτων δικτύου ή με άλλα ζητήματα του προγράμματος περιήγησης. [Μάθετε περισσότερα](https://web.dev/errors-in-console)"
+  },
+  "lighthouse-core/audits/errors-in-console.js | failureTitle": {
+    "message": "Έχουν καταγραφεί σφάλματα προγράμματος περιήγησης στην κονσόλα"
+  },
+  "lighthouse-core/audits/errors-in-console.js | title": {
+    "message": "Δεν έχουν καταγραφεί σφάλματα προγράμματος περιήγησης στην κονσόλα"
+  },
+  "lighthouse-core/audits/font-display.js | description": {
+    "message": "Αξιοποιήστε τη λειτουργία CSS προβολής γραμματοσειρών (font-display), για να διασφαλίσετε ότι το κείμενο είναι ορατό στους χρήστες κατά τη φόρτωση των γραμματοσειρών ιστοτόπου. [Μάθετε περισσότερα](https://developers.google.com/web/updates/2016/02/font-display)."
+  },
+  "lighthouse-core/audits/font-display.js | failureTitle": {
+    "message": "Βεβαιωθείτε ότι το κείμενο παραμένει ορατό κατά τη διάρκεια της φόρτωσης γραμματοσειράς ιστοτόπου"
+  },
+  "lighthouse-core/audits/font-display.js | title": {
+    "message": "Όλο το κείμενο παραμένει ορατό κατά τη διάρκεια φορτώσεων γραμματοσειράς ιστοτόπου"
+  },
+  "lighthouse-core/audits/font-display.js | undeclaredFontURLWarning": {
+    "message": "Το Lighthouse δεν μπόρεσε να ελέγξει αυτόματα την τιμή προβολής γραμματοσειράς (font-display) για το ακόλουθο URL: {fontURL}."
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | columnActual": {
+    "message": "Λόγος διαστάσεων (Πραγματικός)"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | columnDisplayed": {
+    "message": "Λόγος διαστάσεων (Προβολή)"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | description": {
+    "message": "Οι διαστάσεις προβολής των εικόνων πρέπει να συμφωνούν με τον φυσικό λόγο διαστάσεων. [Μάθετε περισσότερα](https://web.dev/image-aspect-ratio)."
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | failureTitle": {
+    "message": "Προβάλλει τις εικόνες με εσφαλμένο λόγο διαστάσεων"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | title": {
+    "message": "Προβάλλει τις εικόνες με τον σωστό λόγο διαστάσεων"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | warningCompute": {
+    "message": "Μη έγκυρες πληροφορίες διαστάσεων εικόνας {url}"
+  },
+  "lighthouse-core/audits/installable-manifest.js | description": {
+    "message": "Τα προγράμματα περιήγησης μπορούν προληπτικά να ζητήσουν από τους χρήστες να προσθέσουν την εφαρμογή σας στην αρχική οθόνη τους, το οποίο μπορεί να οδηγήσει σε μεγαλύτερη αφοσίωση. [Μάθετε περισσότερα](https://developers.google.com/web/tools/lighthouse/audits/install-prompt)."
+  },
+  "lighthouse-core/audits/installable-manifest.js | failureTitle": {
+    "message": "Το μανιφέστο της εφαρμογής ιστού δεν ικανοποιεί τις απαιτήσεις εγκαταστασιμότητας"
+  },
+  "lighthouse-core/audits/installable-manifest.js | title": {
+    "message": "Το μανιφέστο εφαρμογής ιστού ικανοποιεί τις απαιτήσεις εγκαταστασιμότητας"
+  },
+  "lighthouse-core/audits/is-on-https.js | columnInsecureURL": {
+    "message": "Μη ασφαλές URL"
+  },
+  "lighthouse-core/audits/is-on-https.js | description": {
+    "message": "Όλοι οι ιστότοποι πρέπει να προστατεύονται με HTTPS, ακόμα και αν δεν χειρίζονται ευαίσθητα δεδομένα. Το HTTPS εμποδίζει τους εισβολείς από την αλλοίωση ή την παθητική ακρόαση των επικοινωνιών μεταξύ της εφαρμογής και των χρηστών σας. Επιπλέον, αποτελεί προαπαιτούμενο για το HTTP/2 και πολλά νέα API πλατφορών ιστού. [Μάθετε περισσότερα](https://web.dev/is-on-https)."
+  },
+  "lighthouse-core/audits/is-on-https.js | displayValue": {
+    "message": "{itemCount,plural, =1{Βρέθηκε 1 μη ασφαλές αίτημα}other{Βρέθηκαν # μη ασφαλή αιτήματα}}"
+  },
+  "lighthouse-core/audits/is-on-https.js | failureTitle": {
+    "message": "Δεν χρησιμοποιεί HTTPS"
+  },
+  "lighthouse-core/audits/is-on-https.js | title": {
+    "message": "Χρησιμοποιεί HTTPS"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | description": {
+    "message": "Η γρήγορη φόρτωση των σελίδων μέσω ενός δικτύου κινητής τηλεφωνίας διασφαλίζει μια καλή εμπειρία για τους χρήστες κινητών. [Μάθετε περισσότερα](https://developers.google.com/web/tools/lighthouse/audits/fast-3g)."
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | displayValueText": {
+    "message": "Διαδραστική σε {timeInMs, number, seconds} δ."
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | displayValueTextWithOverride": {
+    "message": "Διαδραστική σε προσομοιωμένο δίκτυο κινητής τηλεφωνίας σε {timeInMs, number, seconds} δ."
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | explanationLoadSlow": {
+    "message": "Η σελίδα σας φορτώνεται πολύ αργά και δεν μπορείτε να αλληλεπιδράσετε μαζί της εντός 10 δευτερολέπτων. Δείτε τις ευκαιρίες και τα διαγνωστικά στοιχεία στην ενότητα Απόδοση για να μάθετε πώς μπορείτε να βελτιώσετε την απόδοση."
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | failureTitle": {
+    "message": "Η φόρτωση σελίδας δεν είναι αρκετά γρήγορη σε δίκτυα κινητής τηλεφωνίας"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | title": {
+    "message": "Η φόρτωση σελίδας είναι αρκετά γρήγορη σε δίκτυα κινητής τηλεφωνίας"
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | columnCategory": {
+    "message": "Κατηγορία"
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | description": {
+    "message": "Εξετάστε το ενδεχόμενο ελάττωσης του χρόνου ανάλυσης, σύνθεσης και εκτέλεσης JS. Μπορεί να διαπιστώσετε ότι η προβολή μικρότερων φορτίων δεδομένων JS συμβάλλει προς αυτήν την κατεύθυνση."
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | failureTitle": {
+    "message": "Ελαχιστοποίηση εργασίας κύριου νήματος"
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | title": {
+    "message": "Ελαχιστοποιεί την εργασία κύριου νήματος"
+  },
+  "lighthouse-core/audits/manual/pwa-cross-browser.js | description": {
+    "message": "Για να προσελκύσουν τον μεγαλύτερο δυνατό αριθμό χρηστών, οι ιστότοποι θα πρέπει να λειτουργούν σε κάθε κύριο πρόγραμμα περιήγησης. [Μάθετε περισσότερα](https://developers.google.com/web/progressive-web-apps/checklist#site-works-cross-browser)."
+  },
+  "lighthouse-core/audits/manual/pwa-cross-browser.js | title": {
+    "message": "Ο ιστότοπος λειτουργεί σε διαφορετικά προγράμματα περιήγησης"
+  },
+  "lighthouse-core/audits/manual/pwa-each-page-has-url.js | description": {
+    "message": "Βεβαιωθείτε ότι οι μεμονωμένες σελίδες υποστηρίζουν συνδέσμους σε βάθος μέσω URL και ότι τα URL είναι μοναδικά με σκοπό την κοινή χρήση σε μέσα κοινωνικής δικτύωσης. [Μάθετε περισσότερα](https://developers.google.com/web/progressive-web-apps/checklist#each-page-has-a-url)."
+  },
+  "lighthouse-core/audits/manual/pwa-each-page-has-url.js | title": {
+    "message": "Κάθε σελίδα έχει URL"
+  },
+  "lighthouse-core/audits/manual/pwa-page-transitions.js | description": {
+    "message": "Οι μεταβάσεις θα πρέπει να έχουν γρήγορη αίσθηση καθώς πατάτε σε διάφορα σημεία, ακόμη και σε ένα αργό δίκτυο. Αυτό είναι κλειδί για την αντιλαμβανόμενη απόδοση. [Μάθετε περισσότερα](https://developers.google.com/web/progressive-web-apps/checklist#page-transitions-dont-feel-like-they-block-on-the-network)."
+  },
+  "lighthouse-core/audits/manual/pwa-page-transitions.js | title": {
+    "message": "Οι μεταβάσεις σελίδας δεν δίνουν την αίσθηση ότι καθυστερούν στο δίκτυο"
+  },
+  "lighthouse-core/audits/metrics/estimated-input-latency.js | description": {
+    "message": "Ο εκτιμώμενος λανθάνων χρόνος στοιχείων εισόδου αποτελεί εκτίμηση του χρόνου που απαιτείται, σε χιλιοστά του δευτερολέπτου, προκειμένου η εφαρμογή σας να ανταποκριθεί στα στοιχεία εισόδου χρήστη στο διάστημα των 5 δευτερολέπτων με τον μεγαλύτερο φόρτο κατά τη φόρτωση της σελίδας. Εάν ο λανθάνων χρόνος είναι μεγαλύτερος από 50 χιλιοστά δευτερολέπτου, οι χρήστες μπορεί να θεωρήσουν ότι η εφαρμογή σας είναι αργή. [Μάθετε περισσότερα](https://developers.google.com/web/tools/lighthouse/audits/estimated-input-latency)."
+  },
+  "lighthouse-core/audits/metrics/estimated-input-latency.js | title": {
+    "message": "Εκτιμώμενος λανθάνων χρόνος στοιχείων εισόδου"
+  },
+  "lighthouse-core/audits/metrics/first-contentful-paint.js | description": {
+    "message": "Η πρώτη μορφή με περιεχόμενο υποδεικνύει πότε σχεδιάζεται το πρώτο κείμενο ή η πρώτη εικόνα. [Μάθετε περισσότερα](https://developers.google.com/web/tools/lighthouse/audits/first-contentful-paint)."
+  },
+  "lighthouse-core/audits/metrics/first-contentful-paint.js | title": {
+    "message": "Πρώτη μορφή με περιεχόμενο"
+  },
+  "lighthouse-core/audits/metrics/first-cpu-idle.js | description": {
+    "message": "Η πρώτη αδράνεια CPU υποδεικνύει πότε είναι η πρώτη φορά που η δραστηριότητα του κύριου νήματος είναι τόσο χαμηλή ώστε να διαχειριστεί στοιχεία εισόδου. [Μάθετε περισσότερα](https://developers.google.com/web/tools/lighthouse/audits/first-interactive)."
+  },
+  "lighthouse-core/audits/metrics/first-cpu-idle.js | title": {
+    "message": "Πρώτη αδράνεια CPU"
+  },
+  "lighthouse-core/audits/metrics/first-meaningful-paint.js | description": {
+    "message": "Η πρώτη χρήσιμη μορφή υπολογίζει πότε καθίσταται ορατό το κύριο περιεχόμενο μιας σελίδας. [Μάθετε περισσότερα](https://developers.google.com/web/tools/lighthouse/audits/first-meaningful-paint)."
+  },
+  "lighthouse-core/audits/metrics/first-meaningful-paint.js | title": {
+    "message": "Πρώτη χρήσιμη μορφή"
+  },
+  "lighthouse-core/audits/metrics/interactive.js | description": {
+    "message": "Ο χρόνος για αλληλεπίδραση είναι το χρονικό διάστημα που απαιτείται προκειμένου η σελίδα να γίνει πλήρως διαδραστική. [Μάθετε περισσότερα](https://developers.google.com/web/tools/lighthouse/audits/consistently-interactive)."
+  },
+  "lighthouse-core/audits/metrics/interactive.js | title": {
+    "message": "Χρόνος για Αλληλεπίδραση"
+  },
+  "lighthouse-core/audits/metrics/max-potential-fid.js | description": {
+    "message": "Η μέγιστη δυνητική καθυστέρηση πρώτης εισόδου που θα μπορούσαν να αντιμετωπίσουν οι χρήστες είναι η διάρκεια, σε χιλιοστά δευτερολέπτου, της πιο χρονοβόρας εργασίας. [Μάθετε περισσότερα](https://developers.google.com/web/updates/2018/05/first-input-delay)."
+  },
+  "lighthouse-core/audits/metrics/max-potential-fid.js | title": {
+    "message": "Μέγ. δυνατή καθυστέρηση πρώτης εισόδου"
+  },
+  "lighthouse-core/audits/metrics/speed-index.js | description": {
+    "message": "Το ευρετήριο ταχύτητας δηλώνει πόσο γρήγορα γίνεται ορατό το περιεχόμενο μιας σελίδας. [Μάθετε περισσότερα](https://developers.google.com/web/tools/lighthouse/audits/speed-index)."
+  },
+  "lighthouse-core/audits/metrics/speed-index.js | title": {
+    "message": "Ευρετήριο ταχύτητας"
+  },
+  "lighthouse-core/audits/metrics/total-blocking-time.js | description": {
+    "message": "Η συνολική διάρκεια, σε χιλιοστά δευτερολέπτου, των χρονικών διαστημάτων από την πρώτη μορφή με περιεχόμενο μέχρι τον χρόνο για αλληλεπίδραση, όταν η διάρκεια της εργασίας υπερβαίνει τα 50 χιλιοστά δευτερολέπτου."
+  },
+  "lighthouse-core/audits/metrics/total-blocking-time.js | title": {
+    "message": "Συνολικός χρόνος αποκλεισμού"
+  },
+  "lighthouse-core/audits/network-rtt.js | description": {
+    "message": "Οι χρόνοι αποστολής και επιστροφής δικτύου (RTT) έχουν μεγάλο αντίκτυπο στην απόδοση. Εάν ο χρόνος RTT προς μια προέλευση είναι υψηλός, αυτό σημαίνει ότι η χρήση διακομιστών πιο κοντά στον χρήστη θα μπορούσε να βελτιώσει την απόδοση. [Μάθετε περισσότερα](https://hpbn.co/primer-on-latency-and-bandwidth/)."
+  },
+  "lighthouse-core/audits/network-rtt.js | title": {
+    "message": "Χρόνοι αποστολής και επιστροφής δικτύου"
+  },
+  "lighthouse-core/audits/network-server-latency.js | description": {
+    "message": "Οι λανθάνοντες χρόνοι των διακομιστών μπορούν να επηρεάσουν την απόδοση στον ιστό. Εάν ο λανθάνων χρόνος του διακομιστή μιας προέλευσης είναι υψηλός, αυτό αποτελεί ένδειξη ότι ο διακομιστής είναι υπερφορτωμένος ή ότι έχει ανεπαρκές σύστημα υποστήριξης. [Μάθετε περισσότερα](https://hpbn.co/primer-on-web-performance/#analyzing-the-resource-waterfall)."
+  },
+  "lighthouse-core/audits/network-server-latency.js | title": {
+    "message": "Λανθάνοντες χρόνοι συστημάτων υποστήριξης διακομιστή"
+  },
+  "lighthouse-core/audits/offline-start-url.js | description": {
+    "message": "Ένα service worker επιτρέπει στην εφαρμογή ιστού σας να είναι πιο αξιόπιστη όταν εκτελείται σε απρόβλεπτες συνθήκες δικτύου. [Μάθετε περισσότερα](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)."
+  },
+  "lighthouse-core/audits/offline-start-url.js | failureTitle": {
+    "message": "Το `start_url` δεν αποκρίνεται με κωδικό 200 όταν είναι εκτός σύνδεσης"
+  },
+  "lighthouse-core/audits/offline-start-url.js | title": {
+    "message": "Το `start_url` αποκρίνεται με κωδικό 200 όταν είναι εκτός σύνδεσης"
+  },
+  "lighthouse-core/audits/offline-start-url.js | warningCantStart": {
+    "message": "Το Lighthouse δεν μπόρεσε να διαβάσει το `start_url` από το μανιφέστο. Επομένως, το `start_url` θεωρήθηκε ότι είναι το URL του εγγράφου. Μήνυμα σφάλματος: '{manifestWarning}'."
+  },
+  "lighthouse-core/audits/performance-budget.js | columnOverBudget": {
+    "message": "Υπέρβαση προϋπολογισμού"
+  },
+  "lighthouse-core/audits/performance-budget.js | description": {
+    "message": "Διατηρήστε την ποσότητα και το μέγεθος των αιτημάτων δικτύου εντός των στόχων που ορίζονται από τον παρεχόμενο προϋπολογισμό απόδοσης. [Μάθετε περισσότερα](https://developers.google.com/web/tools/lighthouse/audits/budgets)."
+  },
+  "lighthouse-core/audits/performance-budget.js | requestCountOverBudget": {
+    "message": "{count,plural, =1{1 αίτημα}other{# αιτήματα}}"
+  },
+  "lighthouse-core/audits/performance-budget.js | title": {
+    "message": "Προϋπολογισμός απόδοσης"
+  },
+  "lighthouse-core/audits/redirects-http.js | description": {
+    "message": "Αν έχετε ήδη ρυθμίσει το HTTPS, βεβαιωθείτε ότι ανακατευθύνετε όλη την επισκεψιμότητα HTTP σε HTTPS, προκειμένου να ενεργοποιήσετε ασφαλείς λειτουργίες ιστού για όλους τους χρήστες σας. [Μάθετε περισσότερα](https://developers.google.com/web/tools/lighthouse/audits/http-redirects-to-https)."
+  },
+  "lighthouse-core/audits/redirects-http.js | failureTitle": {
+    "message": "Δεν ανακατευθύνσει την επισκεψιμότητα HTTP σε HTTPS"
+  },
+  "lighthouse-core/audits/redirects-http.js | title": {
+    "message": "Ανακατευθύνει την επισκεψιμότητα HTTP σε HTTPS"
+  },
+  "lighthouse-core/audits/redirects.js | description": {
+    "message": "Οι ανακατευθύνσεις προκαλούν πρόσθετες καθυστερήσεις στη φόρτωση της σελίδας. [Μάθετε περισσότερα](https://developers.google.com/web/tools/lighthouse/audits/redirects)."
+  },
+  "lighthouse-core/audits/redirects.js | title": {
+    "message": "Αποφυγή ανακατευθύνσεων πολλών σελίδων"
+  },
+  "lighthouse-core/audits/resource-summary.js | description": {
+    "message": "Για τον ορισμό προϋπολογισμών για την ποσότητα και το μέγεθος των πόρων μιας σελίδας, προσθέστε ένα αρχείο budget.json. [Μάθετε περισσότερα](https://developers.google.com/web/tools/lighthouse/audits/budgets)."
+  },
+  "lighthouse-core/audits/resource-summary.js | displayValue": {
+    "message": "{requestCount,plural, =1{1 αίτημα • {byteCount, number, bytes} KB}other{# αιτήματα • {byteCount, number, bytes} KB}}"
+  },
+  "lighthouse-core/audits/resource-summary.js | title": {
+    "message": "Φροντίστε να διατηρείτε το πλήθος των αιτημάτων χαμηλό και το μέγεθος των μεταφορών μικρό"
+  },
+  "lighthouse-core/audits/seo/canonical.js | description": {
+    "message": "Οι κανονικοί σύνδεσμοι προτείνουν το URL που πρέπει να εμφανιστεί στα αποτελέσματα αναζήτησης. [Μάθετε περισσότερα](https://web.dev/canonical)."
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationConflict": {
+    "message": "Πολλά URL σε διένεξη ({urlList})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationDifferentDomain": {
+    "message": "Παραπέμπει σε διαφορετικό τομέα ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationInvalid": {
+    "message": "Μη έγκυρο URL ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationPointsElsewhere": {
+    "message": "Παραπέμπει σε μια άλλη τοποθεσία `hreflang` ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationRelative": {
+    "message": "Σχετικό URL ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationRoot": {
+    "message": "Παραπέμπει στο ριζικό URL του τομέα (την αρχική σελίδα), αντί για μια αντίστοιχη σελίδα περιεχομένου"
+  },
+  "lighthouse-core/audits/seo/canonical.js | failureTitle": {
+    "message": "Το έγγραφο δεν έχει ένα έγκυρο `rel=canonical`"
+  },
+  "lighthouse-core/audits/seo/canonical.js | title": {
+    "message": "Το έγγραφο έχει ένα έγκυρο `rel=canonical`"
+  },
+  "lighthouse-core/audits/seo/font-size.js | description": {
+    "message": "Τα μεγέθη γραμματοσειράς κάτω από 12px είναι πολύ μικρά για να είναι ευανάγνωστα, με αποτέλεσμα οι επισκέπτες από κινητά να χρειάζεται να μεγεθύνουν με τα δάχτυλά τους τη σελίδα για να διαβάσουν το περιεχόμενο. Προσπαθήστε πάνω από το 60% του κειμένου της σελίδας να έχει μέγεθος μεγαλύτερο από ή ίσο με 12px. [Μάθετε περισσότερα](https://web.dev/font-size)."
+  },
+  "lighthouse-core/audits/seo/font-size.js | displayValue": {
+    "message": "{decimalProportion, number, extendedPercent} ευανάγνωστο κείμενο"
+  },
+  "lighthouse-core/audits/seo/font-size.js | explanationViewport": {
+    "message": "Το κείμενο είναι δυσανάγνωστο επειδή δεν υπάρχει βελτιστοποιημένη μεταετικέτα θύρα προβολής για οθόνες κινητών."
+  },
+  "lighthouse-core/audits/seo/font-size.js | explanationWithDisclaimer": {
+    "message": "{decimalProportion, number, extendedPercent} του κειμένου είναι πολύ μικρό (βάσει ενός δείγματος {decimalProportionVisited, number, extendedPercent})."
+  },
+  "lighthouse-core/audits/seo/font-size.js | failureTitle": {
+    "message": "Το έγγραφο δεν χρησιμοποιεί ευανάγνωστα μεγέθη γραμματοσειράς"
+  },
+  "lighthouse-core/audits/seo/font-size.js | title": {
+    "message": "Το έγγραφο χρησιμοποιεί ευανάγνωστα μεγέθη γραμματοσειράς"
+  },
+  "lighthouse-core/audits/seo/hreflang.js | description": {
+    "message": "Οι σύνδεσμοι hreflang ενημερώνουν τις μηχανές αναζήτησης σχετικά με την έκδοση σελίδας που πρέπει να αναφέρουν στα αποτελέσματα αναζήτησης για μια συγκεκριμένη γλώσσα ή περιοχή. [Μάθετε περισσότερα](https://web.dev/hreflang)."
+  },
+  "lighthouse-core/audits/seo/hreflang.js | failureTitle": {
+    "message": "Το έγγραφο δεν έχει ένα έγκυρο `hreflang`"
+  },
+  "lighthouse-core/audits/seo/hreflang.js | title": {
+    "message": "Το έγγραφο έχει ένα έγκυρο `hreflang`"
+  },
+  "lighthouse-core/audits/seo/http-status-code.js | description": {
+    "message": "Οι σελίδες με ανεπιτυχείς κωδικούς κατάστασης HTTP μπορεί να μην ευρετηριαστούν σωστά. [Μάθετε περισσότερα](https://web.dev/http-status-code)."
+  },
+  "lighthouse-core/audits/seo/http-status-code.js | failureTitle": {
+    "message": "Η σελίδα αποκρίνεται με ανεπιτυχή κωδικό κατάστασης HTTP"
+  },
+  "lighthouse-core/audits/seo/http-status-code.js | title": {
+    "message": "Η σελίδα αποκρίνεται με επιτυχή κωδικό κατάστασης HTTP"
+  },
+  "lighthouse-core/audits/seo/is-crawlable.js | description": {
+    "message": "Οι μηχανές αναζήτησης δεν μπορούν να συμπεριλάβουν τις σελίδες σας στα αποτελέσματα αναζήτησης, εάν δεν έχουν άδεια για την εκτέλεση ανίχνευσης σε αυτές. [Μάθετε περισσότερα](https://web.dev/is-crawable)."
+  },
+  "lighthouse-core/audits/seo/is-crawlable.js | failureTitle": {
+    "message": "Η σελίδα αποκλείεται από την ευρετηρίαση"
+  },
+  "lighthouse-core/audits/seo/is-crawlable.js | title": {
+    "message": "Η σελίδα δεν αποκλείεται από την ευρετηρίαση"
+  },
+  "lighthouse-core/audits/seo/link-text.js | description": {
+    "message": "Το περιγραφικό κείμενο συνδέσμων βοηθά τις μηχανές αναζήτησης να κατανοήσουν το περιεχόμενό σας. [Μάθετε περισσότερα](https://web.dev/link-text)."
+  },
+  "lighthouse-core/audits/seo/link-text.js | displayValue": {
+    "message": "{itemCount,plural, =1{Βρέθηκε 1 σύνδεσμος}other{Βρέθηκαν # σύνδεσμοι}}"
+  },
+  "lighthouse-core/audits/seo/link-text.js | failureTitle": {
+    "message": "Οι σύνδεσμοι δεν έχουν περιγραφικό κείμενο"
+  },
+  "lighthouse-core/audits/seo/link-text.js | title": {
+    "message": "Οι σύνδεσμοι έχουν περιγραφικό κείμενο"
+  },
+  "lighthouse-core/audits/seo/manual/structured-data.js | description": {
+    "message": "Εκτελέστε το [Εργαλείο δοκιμής δομημένων δεδομένων](https://search.google.com/structured-data/testing-tool/) και το [Structured Data Linter](http://linter.structured-data.org/) για να επικυρώσετε τα δομημένα δεδομένα. [Μάθετε περισσότερα](https://web.dev/structured-data)."
+  },
+  "lighthouse-core/audits/seo/manual/structured-data.js | title": {
+    "message": "Τα δομημένα δεδομένα είναι έγκυρα"
+  },
+  "lighthouse-core/audits/seo/meta-description.js | description": {
+    "message": "Οι περιγραφές μεταδεδομένων μπορούν να συμπεριληφθούν στα αποτελέσματα αναζήτησης για τη συνόψιση του περιεχομένου των σελίδων. [Μάθετε περισσότερα](https://web.dev/meta-description)."
+  },
+  "lighthouse-core/audits/seo/meta-description.js | explanation": {
+    "message": "Το κείμενο περιγραφής είναι κενό."
+  },
+  "lighthouse-core/audits/seo/meta-description.js | failureTitle": {
+    "message": "Το έγγραφο δεν έχει περιγραφή μεταδεδομένων"
+  },
+  "lighthouse-core/audits/seo/meta-description.js | title": {
+    "message": "Το έγγραφο έχει περιγραφή μεταδεδομένων"
+  },
+  "lighthouse-core/audits/seo/plugins.js | description": {
+    "message": "Οι μηχανές αναζήτησης δεν μπορούν να ευρετηριάσουν το περιεχόμενο των προσθηκών, ενώ πολλές συσκευές περιορίζουν ή δεν υποστηρίζουν τις προσθήκες. [Μάθετε περισσότερα](https://web.dev/plugins)."
+  },
+  "lighthouse-core/audits/seo/plugins.js | failureTitle": {
+    "message": "Το έγγραφο χρησιμοποιεί προσθήκες"
+  },
+  "lighthouse-core/audits/seo/plugins.js | title": {
+    "message": "Το έγγραφο αποφεύγει τις προσθήκες"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | description": {
+    "message": "Εάν το αρχείο σας robots.txt έχει εσφαλμένη μορφή, οι ανιχνευτές ενδεχομένως να μην μπορούν να κατανοήσουν με ποιον τρόπο θέλετε να γίνεται η ανίχνευση ή καταλογοποίηση του ιστοτόπου σας. [Μάθετε περισσότερα](https://web.dev/robots-txt)."
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | displayValueHttpBadCode": {
+    "message": "Το αίτημα για το αρχείο robots.txt επέστρεψε τον κωδικό κατάστασης HTTP: {statusCode}"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | displayValueValidationError": {
+    "message": "{itemCount,plural, =1{Βρέθηκε 1 σφάλμα}other{Βρέθηκαν # σφάλματα}}"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | explanation": {
+    "message": "Το Lighthouse δεν ήταν δυνατό να κατεβάσει ένα αρχείο robots.txt"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | failureTitle": {
+    "message": "Το αρχείο robots.txt δεν είναι έγκυρο"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | title": {
+    "message": "Το αρχείο robots.txt είναι έγκυρο"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | description": {
+    "message": "Τα στοιχεία αλληλεπίδρασης, όπως είναι τα κουμπιά και οι σύνδεσμοι, πρέπει να είναι αρκετά μεγάλα (48x48px) και με επαρκή χώρο γύρω τους, ώστε να μπορούν να πατηθούν εύκολα από τους χρήστες χωρίς να επικαλύπτουν άλλα στοιχεία. [Μάθετε περισσότερα](https://web.dev/tap-targets)."
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | displayValue": {
+    "message": "Το {decimalProportion, number, percent} των επιλεγόμενων με πάτημα στοιχείων έχουν κατάλληλο μέγεθος"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | explanationViewportMetaNotOptimized": {
+    "message": "Τα στοιχεία που επιλέγονται με πάτημα είναι υπερβολικά μικρά γιατί δεν υπάρχει βελτιστοποιημένη μεταετικέτα θύρας προβολής για οθόνες κινητών"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | failureTitle": {
+    "message": "Τα στοιχεία που επιλέγονται με πάτημα δεν έχουν κατάλληλο μέγεθος"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | overlappingTargetHeader": {
+    "message": "Αλληλεπικαλυπτόμενο στοιχείο επιλογής με πάτημα"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | tapTargetHeader": {
+    "message": "Στοιχείο επιλογής με πάτημα"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | title": {
+    "message": "Τα στοιχεία που επιλέγονται με πάτημα έχουν το κατάλληλο μέγεθος"
+  },
+  "lighthouse-core/audits/service-worker.js | description": {
+    "message": "Το service worker είναι η τεχνολογία που επιτρέπει στην εφαρμογή σας να χρησιμοποιεί πολλές λειτουργίες προηγμένων εφαρμογών ιστού, όπως η λειτουργία εκτός σύνδεσης, η προσθήκη στην αρχική οθόνη και οι ειδοποιήσεις push. [Μάθετε περισσότερα](https://developers.google.com/web/tools/lighthouse/audits/registered-service-worker)."
+  },
+  "lighthouse-core/audits/service-worker.js | explanationBadManifest": {
+    "message": "Αυτή η σελίδα ελέγχεται από ένα service worker, αλλά δεν βρέθηκε κανένα `start_url` επειδή το μανιφέστο απέτυχε να αναλυθεί ως έγκυρο JSON"
+  },
+  "lighthouse-core/audits/service-worker.js | explanationBadStartUrl": {
+    "message": "Αυτή η σελίδα ελέγχεται από ένα service worker, αλλά το `start_url` ({startUrl}) δεν βρίσκεται στο εύρος του service worker ({scopeUrl})"
+  },
+  "lighthouse-core/audits/service-worker.js | explanationNoManifest": {
+    "message": "Αυτή η σελίδα ελέγχεται από ένα service worker, αλλά δεν βρέθηκε κανένα `start_url` επειδή δεν έγινε λήψη μανιφέστου."
+  },
+  "lighthouse-core/audits/service-worker.js | explanationOutOfScope": {
+    "message": "Αυτή η προέλευση διαθέτει ένα περισσότερα service worker, αλλά η σελίδα ({pageUrl}) βρίσκεται εκτός εύρους."
+  },
+  "lighthouse-core/audits/service-worker.js | failureTitle": {
+    "message": "Δεν καταγράφει service worker που ελέγχει τη σελίδα και το `start_url`"
+  },
+  "lighthouse-core/audits/service-worker.js | title": {
+    "message": "Καταγράφει ένα service worker που ελέγχει μια σελίδα και το `start_url`"
+  },
+  "lighthouse-core/audits/splash-screen.js | description": {
+    "message": "Μια θεματική οθόνη εκκίνησης διασφαλίζει μια εμπειρία υψηλής ποιότητας όταν οι χρήστες εκκινούν την εφαρμογή σας από την αρχική οθόνη τους. [Μάθετε περισσότερα](https://developers.google.com/web/tools/lighthouse/audits/custom-splash-screen)."
+  },
+  "lighthouse-core/audits/splash-screen.js | failureTitle": {
+    "message": "Δεν έχει διαμορφωθεί για προσαρμοσμένη οθόνη εκκίνησης"
+  },
+  "lighthouse-core/audits/splash-screen.js | title": {
+    "message": "Διαμορφώνεται από προσαρμοσμένη οθόνη εκκίνησης"
+  },
+  "lighthouse-core/audits/themed-omnibox.js | description": {
+    "message": "Μπορείτε να προσθέσετε ένα θέμα στη γραμμή διευθύνσεων του προγράμματος περιήγησης ώστε να ταιριάζει με τον ιστότοπό σας. [Μάθετε περισσότερα](https://developers.google.com/web/tools/lighthouse/audits/address-bar)."
+  },
+  "lighthouse-core/audits/themed-omnibox.js | failureTitle": {
+    "message": "Δεν ορίζει ένα χρώμα θέματος για τη γραμμή διευθύνσεων."
+  },
+  "lighthouse-core/audits/themed-omnibox.js | title": {
+    "message": "Ορίζει ένα χρώμα θέματος για τη γραμμή διευθύνσεων."
+  },
+  "lighthouse-core/audits/third-party-summary.js | columnBlockingTime": {
+    "message": "Χρόνος αποκλεισμού κύριου νήματος"
+  },
+  "lighthouse-core/audits/third-party-summary.js | columnThirdParty": {
+    "message": "Τρίτο μέρος"
+  },
+  "lighthouse-core/audits/third-party-summary.js | description": {
+    "message": "Ο κώδικας τρίτων παρόχων μπορεί να επηρεάσει σημαντικά την απόδοση φόρτωσης. Περιορίστε τον αριθμό των περιττών τρίτων παρόχων και προσπαθήστε η φόρτωση του κώδικα τρίτων παρόχων να γίνεται αφού πρώτα έχει ολοκληρωθεί η φόρτωση της σελίδας σας. [Μάθετε περισσότερα](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/loading-third-party-javascript/)."
+  },
+  "lighthouse-core/audits/third-party-summary.js | displayValue": {
+    "message": "Ο κώδικας τρίτου μέρους απέκλεισε το κύριο νήμα για {timeInMs, number, milliseconds} ms"
+  },
+  "lighthouse-core/audits/third-party-summary.js | failureTitle": {
+    "message": "Μείωση αντίκτυπου του κώδικα τρίτου μέρους"
+  },
+  "lighthouse-core/audits/third-party-summary.js | title": {
+    "message": "Χρήση κώδικα τρίτου μέρους"
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | description": {
+    "message": "Ο χρόνος μέχρι το πρώτο byte προσδιορίζει τον χρόνο που χρειάζεται για την αποστολή μιας απόκρισης από τον διακομιστή σας. [Μάθετε περισσότερα](https://developers.google.com/web/tools/lighthouse/audits/ttfb)."
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | displayValue": {
+    "message": "Το ριζικό έγγραφο χρειάστηκε {timeInMs, number, milliseconds} χλστ.δ."
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | failureTitle": {
+    "message": "Μείωση χρόνων απόκρισης διακομιστή (TTFB)"
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | title": {
+    "message": "Οι χρόνοι απόκρισης διακομιστή είναι χαμηλοί (TTFB)"
+  },
+  "lighthouse-core/audits/user-timings.js | columnDuration": {
+    "message": "Διάρκεια"
+  },
+  "lighthouse-core/audits/user-timings.js | columnStartTime": {
+    "message": "Ώρα έναρξης"
+  },
+  "lighthouse-core/audits/user-timings.js | columnType": {
+    "message": "Τύπος"
+  },
+  "lighthouse-core/audits/user-timings.js | description": {
+    "message": "Εξετάστε το ενδεχόμενο να προσθέσετε στην εφαρμογή σας το API χρόνων χρήστη (User Timing API) για να μετράτε την πραγματική απόδοση της εφαρμογής σας κατά τη διάρκεια σημαντικών εμπειριών χρήστη. [Μάθετε περισσότερα](https://developers.google.com/web/tools/lighthouse/audits/user-timing)."
+  },
+  "lighthouse-core/audits/user-timings.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 χρόνος χρήστη}other{# χρόνοι χρήστη}}"
+  },
+  "lighthouse-core/audits/user-timings.js | title": {
+    "message": "Ενδείξεις και μετρήσεις Χρόνων χρήστη"
+  },
+  "lighthouse-core/audits/uses-rel-preconnect.js | crossoriginWarning": {
+    "message": "Βρέθηκε ένα <link> προσύνδεσης για το {securityOrigin}, αλλά δεν χρησιμοποιήθηκε από το πρόγραμμα περιήγησης. Ελέγξτε ότι χρησιμοποιείτε σωστά το χαρακτηριστικό `crossorigin`."
+  },
+  "lighthouse-core/audits/uses-rel-preconnect.js | description": {
+    "message": "Εξετάστε το ενδεχόμενο προσθήκης υποδείξεων πόρων `preconnect` ή `dns-prefetch`, για να δημιουργήσετε πρώιμες συνδέσεις σε σημαντικές προελεύσεις τρίτους μέρους. [Μάθετε περισσότερα](https://developers.google.com/web/fundamentals/performance/resource-prioritization#preconnect)."
+  },
+  "lighthouse-core/audits/uses-rel-preconnect.js | title": {
+    "message": "Προσύνδεση σε απαιτούμενες προελεύσεις"
+  },
+  "lighthouse-core/audits/uses-rel-preload.js | crossoriginWarning": {
+    "message": "Βρέθηκε ένα <link> προφόρτωσης για το {preloadURL}, αλλά δεν χρησιμοποιήθηκε από το πρόγραμμα περιήγησης. Ελέγξτε ότι χρησιμοποιείτε σωστά το χαρακτηριστικό `crossorigin`."
+  },
+  "lighthouse-core/audits/uses-rel-preload.js | description": {
+    "message": "Εξετάστε το ενδεχόμενο χρήσης του `<link rel=preload>` για την προτεραιοποίηση της ανάκτησης των πόρων που τώρα ζητούνται αργότερα κατά τη φόρτωση της σελίδας. [Μάθετε περισσότερα](https://developers.google.com/web/tools/lighthouse/audits/preload)."
+  },
+  "lighthouse-core/audits/uses-rel-preload.js | title": {
+    "message": "Σημαντικά αιτήματα προφόρτωσης"
+  },
+  "lighthouse-core/audits/viewport.js | description": {
+    "message": "Προσθέστε μια ετικέτα `<meta name=\"viewport\">` για να βελτιστοποιήσετε την εφαρμογή σας για οθόνες κινητών συσκευών. [Μάθετε περισσότερα](https://developers.google.com/web/tools/lighthouse/audits/has-viewport-meta-tag)."
+  },
+  "lighthouse-core/audits/viewport.js | explanationNoTag": {
+    "message": "Δεν βρέθηκε ετικέτα `<meta name=\"viewport\">`"
+  },
+  "lighthouse-core/audits/viewport.js | failureTitle": {
+    "message": "Δεν έχει ετικέτα `<meta name=\"viewport\">` με `width` ή `initial-scale`"
+  },
+  "lighthouse-core/audits/viewport.js | title": {
+    "message": "Έχει ετικέτα `<meta name=\"viewport\">` με `width` ή `initial-scale`"
+  },
+  "lighthouse-core/audits/without-javascript.js | description": {
+    "message": "Η εφαρμογή σας θα πρέπει να εμφανίζει κάποιο περιεχόμενο όταν η JavaScript είναι απενεργοποιημένη, ακόμη και αν είναι απλώς μια προειδοποίηση που ενημερώνει τον χρήστη ότι η JavaScript είναι απαραίτητη για τη χρήση της εφαρμογής. [Μάθετε περισσότερα](https://developers.google.com/web/tools/lighthouse/audits/no-js)."
+  },
+  "lighthouse-core/audits/without-javascript.js | explanation": {
+    "message": "Το σώμα της σελίδας θα πρέπει να αποδίδει κάποιο περιεχόμενο αν τα σενάριά του δεν είναι διαθέσιμα."
+  },
+  "lighthouse-core/audits/without-javascript.js | failureTitle": {
+    "message": "Δεν παρέχει εναλλακτικό περιεχόμενο όταν η JavaScript δεν είναι διαθέσιμη"
+  },
+  "lighthouse-core/audits/without-javascript.js | title": {
+    "message": "Περιλαμβάνει κάποιο περιεχόμενο όταν η JavaScript δεν είναι διαθέσιμη"
+  },
+  "lighthouse-core/audits/works-offline.js | description": {
+    "message": "Εάν δημιουργείτε μια προηγμένη εφαρμογή ιστού, εξετάστε το ενδεχόμενο χρήσης ενός service worker ώστε η εφαρμογή σας να μπορεί να λειτουργεί εκτός σύνδεσης. [Μάθετε περισσότερα](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)."
+  },
+  "lighthouse-core/audits/works-offline.js | failureTitle": {
+    "message": "Η τρέχουσα σελίδα δεν αποκρίνεται με κωδικό 200 όταν είναι εκτός σύνδεσης"
+  },
+  "lighthouse-core/audits/works-offline.js | title": {
+    "message": "Η τρέχουσα σελίδα αποκρίνεται με κωδικό 200 όταν είναι εκτός σύνδεσης"
+  },
+  "lighthouse-core/audits/works-offline.js | warningNoLoad": {
+    "message": "Αυτή η σελίδα μπορεί να μην φορτώνεται εκτός σύνδεσης επειδή το URL δοκιμής σας ({requested}) ανακατευθύνθηκε στο \"{final}\". Προσπαθήστε να δοκιμάσετε απευθείας το δεύτερο URL."
+  },
+  "lighthouse-core/config/default-config.js | a11yAriaGroupDescription": {
+    "message": "Αυτές είναι ευκαιρίες να βελτιώσετε τη χρήση των ARIA στην εφαρμογή σας, κάνοντας καλύτερη την εμπειρία χρήστη σε τεχνολογίες για άτομα με ειδικές ανάγκες, όπως στον αναγνώστη οθόνης."
+  },
+  "lighthouse-core/config/default-config.js | a11yAriaGroupTitle": {
+    "message": "ARIA"
+  },
+  "lighthouse-core/config/default-config.js | a11yAudioVideoGroupDescription": {
+    "message": "Αυτές είναι ευκαιρίες να παρέχετε εναλλακτικό περιεχόμενο για ήχο και βίντεο. Αυτό μπορεί να βελτιώσει την εμπειρία για χρήστες με προβλήματα ακοής ή όρασης."
+  },
+  "lighthouse-core/config/default-config.js | a11yAudioVideoGroupTitle": {
+    "message": "Ήχος και βίντεο"
+  },
+  "lighthouse-core/config/default-config.js | a11yBestPracticesGroupDescription": {
+    "message": "Αυτά τα στοιχεία επισημαίνουν συνήθεις βέλτιστες πρακτικές για την προσβασιμότητα."
+  },
+  "lighthouse-core/config/default-config.js | a11yBestPracticesGroupTitle": {
+    "message": "Βέλτιστες πρακτικές"
+  },
+  "lighthouse-core/config/default-config.js | a11yCategoryDescription": {
+    "message": "Αυτοί οι έλεγχοι επισημαίνουν ευκαιρίες για τη [βελτίωση της προσβασιμότητας της εφαρμογής ιστού σας](https://developers.google.com/web/fundamentals/accessibility). Μόνο ένα μέρος των ζητημάτων προσβασιμότητας μπορεί να εντοπιστεί αυτόματα. Ως εκ τούτου, συνιστάται να προβείτε και σε μη αυτόματες δοκιμές."
+  },
+  "lighthouse-core/config/default-config.js | a11yCategoryManualDescription": {
+    "message": "Αυτά τα στοιχεία σχετίζονται με τομείς τους οποίους δεν μπορεί να καλύψει ένα εργαλείο αυτοματοποιημένων δοκιμών. Μάθετε περισσότερα στον οδηγό μας σχετικά με τη [διεξαγωγή ενός ελέγχου προσβασιμότητας](https://developers.google.com/web/fundamentals/accessibility/how-to-review)."
+  },
+  "lighthouse-core/config/default-config.js | a11yCategoryTitle": {
+    "message": "Προσβασιμότητα"
+  },
+  "lighthouse-core/config/default-config.js | a11yColorContrastGroupDescription": {
+    "message": "Αυτές είναι ευκαιρίες να βελτιώσετε την αναγνωσιμότητα του περιεχομένου σας."
+  },
+  "lighthouse-core/config/default-config.js | a11yColorContrastGroupTitle": {
+    "message": "Αντίθεση"
+  },
+  "lighthouse-core/config/default-config.js | a11yLanguageGroupDescription": {
+    "message": "Αυτές είναι ευκαιρίες να βελτιώσετε την ερμηνεία του περιεχομένου σας από χρήστες με διαφορετικές τοπικές ρυθμίσεις."
+  },
+  "lighthouse-core/config/default-config.js | a11yLanguageGroupTitle": {
+    "message": "Διεθνοποίηση και τοπική προσαρμογή"
+  },
+  "lighthouse-core/config/default-config.js | a11yNamesLabelsGroupDescription": {
+    "message": "Αυτές είναι ευκαιρίες να βελτιώσετε τη σημασιολογία των στοιχείων ελέγχου στην εφαρμογή σας. Αυτό μπορεί να κάνει καλύτερη την εμπειρία για τους χρήστες τεχνολογίας για άτομα με ειδικές ανάγκες, όπως του αναγνώστη οθόνης."
+  },
+  "lighthouse-core/config/default-config.js | a11yNamesLabelsGroupTitle": {
+    "message": "Ονόματα και ετικέτες"
+  },
+  "lighthouse-core/config/default-config.js | a11yNavigationGroupDescription": {
+    "message": "Αυτές είναι ευκαιρίες να βελτιώσετε την πλοήγηση με πληκτρολόγιο στην εφαρμογή σας."
+  },
+  "lighthouse-core/config/default-config.js | a11yNavigationGroupTitle": {
+    "message": "Πλοήγηση"
+  },
+  "lighthouse-core/config/default-config.js | a11yTablesListsVideoGroupDescription": {
+    "message": "Αυτές είναι ευκαιρίες να βελτιώσετε την εμπειρία ανάγνωσης δεδομένων σε πίνακες ή λίστες με τη χρήση τεχνολογίας για άτομα με ειδικές ανάγκες, όπως του αναγνώστη οθόνης."
+  },
+  "lighthouse-core/config/default-config.js | a11yTablesListsVideoGroupTitle": {
+    "message": "Πίνακες και λίστες"
+  },
+  "lighthouse-core/config/default-config.js | bestPracticesCategoryTitle": {
+    "message": "Βέλτιστες πρακτικές"
+  },
+  "lighthouse-core/config/default-config.js | budgetsGroupDescription": {
+    "message": "Οι προϋπολογισμοί απόδοσης θέτουν τα πρότυπα για την απόδοση του ιστοτόπου σας."
+  },
+  "lighthouse-core/config/default-config.js | budgetsGroupTitle": {
+    "message": "Προϋπολογισμοί"
+  },
+  "lighthouse-core/config/default-config.js | diagnosticsGroupDescription": {
+    "message": "Περισσότερες πληροφορίες σχετικά με την απόδοση της εφαρμογής σας. Αυτά τα δεδομένα δεν [επηρεάζουν άμεσα](https://github.com/GoogleChrome/lighthouse/blob/d2ec9ffbb21de9ad1a0f86ed24575eda32c796f0/docs/scoring.md#how-are-the-scores-weighted) τη βαθμολογία απόδοσης."
+  },
+  "lighthouse-core/config/default-config.js | diagnosticsGroupTitle": {
+    "message": "Διαγνωστικά στοιχεία"
+  },
+  "lighthouse-core/config/default-config.js | firstPaintImprovementsGroupDescription": {
+    "message": "Η πιο σημαντική πτυχή της απόδοσης είναι η ταχύτητα με την οποία αποδίδονται τα pixel στην οθόνη. Σημαντικές μετρήσεις: Πρώτη μορφή με περιεχόμενο, Πρώτη χρήσιμη μορφή"
+  },
+  "lighthouse-core/config/default-config.js | firstPaintImprovementsGroupTitle": {
+    "message": "Βελτιώσεις πρώτης μορφής"
+  },
+  "lighthouse-core/config/default-config.js | loadOpportunitiesGroupDescription": {
+    "message": "Αυτές οι προτάσεις μπορούν να βοηθήσουν στην ταχύτερη φόρτωση της σελίδας σας. Δεν [επηρεάζουν άμεσα](https://github.com/GoogleChrome/lighthouse/blob/d2ec9ffbb21de9ad1a0f86ed24575eda32c796f0/docs/scoring.md#how-are-the-scores-weighted) τη βαθμολογία απόδοσης."
+  },
+  "lighthouse-core/config/default-config.js | loadOpportunitiesGroupTitle": {
+    "message": "Ευκαιρίες"
+  },
+  "lighthouse-core/config/default-config.js | metricGroupTitle": {
+    "message": "Μετρήσεις"
+  },
+  "lighthouse-core/config/default-config.js | overallImprovementsGroupDescription": {
+    "message": "Βελτιώστε τη συνολική εμπειρία φόρτωσης, για να μπορεί η σελίδα να ανταποκρίνεται και να είναι έτοιμη για χρήση το συντομότερο δυνατό. Σημαντικές μετρήσεις: Χρόνος για Αλληλεπίδραση, Ευρετήριο ταχύτητας"
+  },
+  "lighthouse-core/config/default-config.js | overallImprovementsGroupTitle": {
+    "message": "Συνολικές βελτιώσεις"
+  },
+  "lighthouse-core/config/default-config.js | performanceCategoryTitle": {
+    "message": "Απόδοση"
+  },
+  "lighthouse-core/config/default-config.js | pwaCategoryDescription": {
+    "message": "Αυτοί οι έλεγχοι επαληθεύουν τα στοιχεία μιας προηγμένης εφαρμογής ιστού. [Μάθετε περισσότερα](https://developers.google.com/web/progressive-web-apps/checklist)."
+  },
+  "lighthouse-core/config/default-config.js | pwaCategoryManualDescription": {
+    "message": "Αυτοί οι έλεγχοι απαιτούνται από τη [Λίστα ελέγχου PWA](https://developers.google.com/web/progressive-web-apps/checklist) σημείου αναφοράς αλλά δεν ελέγχονται αυτόματα από το Lighthouse. Δεν επηρεάζουν τη βαθμολογία σας αλλά είναι σημαντικό να τους επαληθεύσετε με μη αυτόματο τρόπο."
+  },
+  "lighthouse-core/config/default-config.js | pwaCategoryTitle": {
+    "message": "Προηγμένη εφαρμογή ιστού"
+  },
+  "lighthouse-core/config/default-config.js | pwaFastReliableGroupTitle": {
+    "message": "Γρήγορος και αξιόπιστος"
+  },
+  "lighthouse-core/config/default-config.js | pwaInstallableGroupTitle": {
+    "message": "Δυνατότητα εγκατάστασης"
+  },
+  "lighthouse-core/config/default-config.js | pwaOptimizedGroupTitle": {
+    "message": "Με βελτιστοποίηση PWA"
+  },
+  "lighthouse-core/config/default-config.js | seoCategoryDescription": {
+    "message": "Αυτοί οι έλεγχοι διασφαλίζουν ότι η σελίδα σας είναι βελτιστοποιημένη για κατάταξη στα αποτελέσματα μηχανών αναζήτησης. Υπάρχουν επιπλέον παράγοντες που δεν ελέγχονται από το Lighthouse και μπορεί να επηρεάσουν την κατάταξη της σελίδας σας στην αναζήτηση. [Μάθετε περισσότερα](https://support.google.com/webmasters/answer/35769)."
+  },
+  "lighthouse-core/config/default-config.js | seoCategoryManualDescription": {
+    "message": "Εκτελέστε αυτά τα πρόσθετα εργαλεία επικύρωσης, για να ελέγξετε περισσότερες βέλτιστες πρακτικές SEO."
+  },
+  "lighthouse-core/config/default-config.js | seoCategoryTitle": {
+    "message": "SEO"
+  },
+  "lighthouse-core/config/default-config.js | seoContentGroupDescription": {
+    "message": "Μορφοποιήστε το HTML με τρόπο που να επιτρέπει στους ανιχνευτές να κατανοούν καλύτερα το περιεχόμενο της εφαρμογής σας."
+  },
+  "lighthouse-core/config/default-config.js | seoContentGroupTitle": {
+    "message": "Βέλτιστες πρακτικές περιεχομένου"
+  },
+  "lighthouse-core/config/default-config.js | seoCrawlingGroupDescription": {
+    "message": "Για να εμφανίζεται στα αποτελέσματα αναζήτησης, οι ανιχνευτές χρειάζονται πρόσβαση στην εφαρμογή σας."
+  },
+  "lighthouse-core/config/default-config.js | seoCrawlingGroupTitle": {
+    "message": "Ανίχνευση και δημιουργία ευρετηρίου"
+  },
+  "lighthouse-core/config/default-config.js | seoMobileGroupDescription": {
+    "message": "Βεβαιωθείτε ότι οι σελίδες σας είναι κατάλληλα διαμορφωμένες για κινητά, ώστε οι χρήστες να μην χρειάζεται να πλησιάζουν τα δάχτυλά τους ή να κάνουν μεγέθυνση για να διαβάζουν τις σελίδες περιεχομένου. [Μάθετε περισσότερα](https://developers.google.com/search/mobile-sites/)."
+  },
+  "lighthouse-core/config/default-config.js | seoMobileGroupTitle": {
+    "message": "Φιλική προς κινητά"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnCacheTTL": {
+    "message": "TTL κρυφής μνήμης"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnLocation": {
+    "message": "Τοποθεσία"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnName": {
+    "message": "Όνομα"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnRequests": {
+    "message": "Αιτήματα"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnResourceType": {
+    "message": "Τύπος πόρου"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnSize": {
+    "message": "Μέγεθος"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnTimeSpent": {
+    "message": "Χρόνος χρήσης"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnTransferSize": {
+    "message": "Μέγεθος μεταφοράς"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnURL": {
+    "message": "URL"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnWastedBytes": {
+    "message": "Δυνητικές εξοικονομήσεις"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnWastedMs": {
+    "message": "Δυνητικές εξοικονομήσεις"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | displayValueByteSavings": {
+    "message": "Δυνηητική εξοικονόμηση {wastedBytes, number, bytes} KB"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | displayValueMsSavings": {
+    "message": "Δυνητική εξοικονόμηση {wastedMs, number, milliseconds} χλστ.δ."
+  },
+  "lighthouse-core/lib/i18n/i18n.js | documentResourceType": {
+    "message": "Έγγραφο"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | fontResourceType": {
+    "message": "Γραμματοσειρά"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | imageResourceType": {
+    "message": "Εικόνα"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | mediaResourceType": {
+    "message": "Μέσα"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | ms": {
+    "message": "{timeInMs, number, milliseconds} χλστ.δ."
+  },
+  "lighthouse-core/lib/i18n/i18n.js | otherResourceType": {
+    "message": "Άλλο"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | scriptResourceType": {
+    "message": "Σενάριο"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | seconds": {
+    "message": "{timeInMs, number, seconds} δ."
+  },
+  "lighthouse-core/lib/i18n/i18n.js | stylesheetResourceType": {
+    "message": "Φύλλο στιλ"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | thirdPartyResourceType": {
+    "message": "Τρίτο μέρος"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | totalResourceType": {
+    "message": "Σύνολο"
+  },
+  "lighthouse-core/lib/lh-error.js | badTraceRecording": {
+    "message": "Παρουσιάστηκε κάποιο πρόβλημα με την εγγραφή του ίχνους κατά τη φόρτωση της σελίδας σας. Εκτελέστε ξανά το Lighthouse. ({errorCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | criTimeout": {
+    "message": "Λήξη χρονικού ορίου κατά την αναμονή για αρχική σύνδεση του πρωτοκόλλου εργαλείου εντοπισμού σφαλμάτων."
+  },
+  "lighthouse-core/lib/lh-error.js | didntCollectScreenshots": {
+    "message": "Το Chrome δεν συγκέντρωσε στιγμιότυπα οθόνης κατά τη φόρτωση της σελίδας. Βεβαιωθείτε ότι υπάρχει ορατό περιεχόμενο στη σελίδα και έπειτα δοκιμάστε να εκτελέσετε ξανά το Lighthouse. ({errorCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | dnsFailure": {
+    "message": "Οι διακομιστές DNS δεν ήταν δυνατό να επιλύσουν τον παρεχόμενο τομέα."
+  },
+  "lighthouse-core/lib/lh-error.js | erroredRequiredArtifact": {
+    "message": "Παρουσιάστηκε κάποιο σφάλμα στη λειτουργία συγκέντρωσης για τον απαιτούμενο πόρο {artifactName}: {errorMessage}"
+  },
+  "lighthouse-core/lib/lh-error.js | internalChromeError": {
+    "message": "Προέκυψε εσωτερικό σφάλμα Chrome. Επανεκκινήστε το Chrome και δοκιμάστε να εκτελέσετε ξανά το Lighthouse."
+  },
+  "lighthouse-core/lib/lh-error.js | missingRequiredArtifact": {
+    "message": "Δεν εκτελέστηκε η λειτουργία συγκέντρωσης για τον απαιτούμενο πόρο {artifactName}."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailed": {
+    "message": "Το Lighthouse δεν ήταν δυνατό να φορτώσει με αξιοπιστία τη σελίδα που ζητήσατε. Βεβαιωθείτε ότι ελέγχετε το σωστό URL και ότι ο διακομιστής ανταποκρίνεται σωστά σε όλα τα αιτήματα."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedHung": {
+    "message": "Το Lighthouse δεν ήταν δυνατό να φορτώσει με αξιοπιστία το URL που ζητήσατε, επειδή η σελίδα σταμάτησε να ανταποκρίνεται."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedInsecure": {
+    "message": "Το URL που παρείχατε δεν έχει ένα έγκυρο πιστοποιητικό ασφάλειας. {securityMessages}"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedInterstitial": {
+    "message": "Το Chrome εμπόδισε την εμφάνιση μιας σελίδας με παρενθετική διαφήμιση. Βεβαιωθείτε ότι ελέγχετε το σωστό URL και ότι ο διακομιστής αποκρίνεται σωστά σε όλα τα αιτήματα."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedWithDetails": {
+    "message": "Το Lighthouse δεν μπόρεσε να φορτώσει με αξιοπιστία τη σελίδα που ζητήσατε. Βεβαιωθείτε ότι ελέγχετε το σωστό URL και ότι ο διακομιστής αποκρίνεται σωστά σε όλα τα αιτήματα. (Λεπτομέρειες: {errorDetails})"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedWithStatusCode": {
+    "message": "Το Lighthouse δεν μπόρεσε να φορτώσει με αξιοπιστία τη σελίδα που ζητήσατε. Βεβαιωθείτε ότι ελέγχετε το σωστό URL και ότι ο διακομιστής αποκρίνεται σωστά σε όλα τα αιτήματα. (Κωδικός κατάστασης: {statusCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadTookTooLong": {
+    "message": "Χρειάστηκε υπερβολικά πολύς χρόνος για τη φόρτωση της σελίδας σας. Συμβουλευτείτε τις ευκαιρίες στην αναφορά, για να μειώσετε τον χρόνο φόρτωσης της σελίδας, και έπειτα δοκιμάστε να εκτελέσετε ξανά το Lighthouse. ({errorCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | protocolTimeout": {
+    "message": "Η αναμονή για απόκριση του πρωτοκόλλου DevTools έχει υπερβεί τον μέγιστο επιτρεπόμενο χρόνο. (Μέθοδος: {protocolMethod})"
+  },
+  "lighthouse-core/lib/lh-error.js | requestContentTimeout": {
+    "message": "Η λήψη περιεχομένου πόρων έχει υπερβεί τον εκχωρημένο χρόνο"
+  },
+  "lighthouse-core/lib/lh-error.js | urlInvalid": {
+    "message": "Το URL που παρείχατε φαίνεται ότι δεν είναι έγκυρο."
+  },
+  "lighthouse-core/report/html/renderer/util.js | auditGroupExpandTooltip": {
+    "message": "Εμφάνιση ελέγχων"
+  },
+  "lighthouse-core/report/html/renderer/util.js | crcInitialNavigation": {
+    "message": "Αρχική πλοήγηση"
+  },
+  "lighthouse-core/report/html/renderer/util.js | crcLongestDurationLabel": {
+    "message": "Μέγιστος λανθάνων χρόνος κρίσιμης διαδρομής:"
+  },
+  "lighthouse-core/report/html/renderer/util.js | errorLabel": {
+    "message": "Σφάλμα!"
+  },
+  "lighthouse-core/report/html/renderer/util.js | errorMissingAuditInfo": {
+    "message": "Σφάλμα αναφοράς: Δεν υπάρχουν πληροφορίες ελέγχου"
+  },
+  "lighthouse-core/report/html/renderer/util.js | labDataTitle": {
+    "message": "Εργαστηριακά δεδομένα"
+  },
+  "lighthouse-core/report/html/renderer/util.js | lsPerformanceCategoryDescription": {
+    "message": "Ανάλυση της τρέχουσας σελίδας από το [Lighthouse](https://developers.google.com/web/tools/lighthouse/) σε ένα προσομειωμένο δίκτυο κινητής τηλεφωνίας. Οι τιμές είναι κατ' εκτίμηση και μπορεί να διαφέρουν."
+  },
+  "lighthouse-core/report/html/renderer/util.js | manualAuditsGroupTitle": {
+    "message": "Επιπλέον στοιχεία για μη αυτόματο έλεγχο"
+  },
+  "lighthouse-core/report/html/renderer/util.js | notApplicableAuditsGroupTitle": {
+    "message": "Δεν ισχύει"
+  },
+  "lighthouse-core/report/html/renderer/util.js | opportunityResourceColumnLabel": {
+    "message": "Ευκαιρία"
+  },
+  "lighthouse-core/report/html/renderer/util.js | opportunitySavingsColumnLabel": {
+    "message": "Εκτιμώμενες εξοικονομήσεις"
+  },
+  "lighthouse-core/report/html/renderer/util.js | passedAuditsGroupTitle": {
+    "message": "Έλεγχοι που ολοκληρώθηκαν επιτυχώς"
+  },
+  "lighthouse-core/report/html/renderer/util.js | snippetCollapseButtonLabel": {
+    "message": "Σύμπτυξη αποσπάσματος"
+  },
+  "lighthouse-core/report/html/renderer/util.js | snippetExpandButtonLabel": {
+    "message": "Ανάπτυξη αποσπάσματος"
+  },
+  "lighthouse-core/report/html/renderer/util.js | thirdPartyResourcesLabel": {
+    "message": "Εμφάνιση πόρων τρίτων"
+  },
+  "lighthouse-core/report/html/renderer/util.js | toplevelWarningsMessage": {
+    "message": "Παρουσιάστηκαν ορισμένα ζητήματα τα οποία επηρεάζουν αυτήν την εκτέλεση του Lighthouse:"
+  },
+  "lighthouse-core/report/html/renderer/util.js | varianceDisclaimer": {
+    "message": "Οι τιμές είναι κατ' εκτίμηση και μπορεί να διαφέρουν. Η βαθμολογία απόδοσης [βασίζεται σε αυτές τις μετρήσεις](https://github.com/GoogleChrome/lighthouse/blob/d2ec9ffbb21de9ad1a0f86ed24575eda32c796f0/docs/scoring.md#how-are-the-scores-weighted)."
+  },
+  "lighthouse-core/report/html/renderer/util.js | warningAuditsGroupTitle": {
+    "message": "Έλεγχοι που ολοκληρώθηκαν αλλά με προειδοποιήσεις"
+  },
+  "lighthouse-core/report/html/renderer/util.js | warningHeader": {
+    "message": "Προειδοποιήσεις: "
+  },
+  "stack-packs/packs/wordpress.js | efficient_animated_content": {
+    "message": "Εξετάστε το ενδεχόμενο μεταφόρτωσης του GIF σε μια υπηρεσία η οποία θα το διαθέσει για ενσωμάτωση ως βίντεο HTML5."
+  },
+  "stack-packs/packs/wordpress.js | offscreen_images": {
+    "message": "Εγκαταστήστε μια προσθήκη [WordPress αργής φόρτωσης](https://wordpress.org/plugins/search/lazy+load/) η οποία παρέχει τη δυνατότητα αναβολής φόρτωσης των εικόνων εκτός οθόνης. Εναλλακτικά, χρησιμοποιήστε ένα θέμα που παρέχει αυτή τη δυνατότητα. Εξετάστε επίσης το ενδεχόμενο χρήσης της [προσθήκης AMP](https://wordpress.org/plugins/amp/)."
+  },
+  "stack-packs/packs/wordpress.js | render_blocking_resources": {
+    "message": "Υπάρχουν διάφορες προσθήκες WordPress που μπορούν να σας βοηθήσουν στην [ενσωμάτωση των σημαντικών στοιχείων](https://wordpress.org/plugins/search/critical+css/) ή στην [καθυστέρηση των λιγότερο σημαντικών πόρων](https://wordpress.org/plugins/search/defer+css+javascript/). Λάβετε υπόψη ότι οι βελτιστοποιήσεις που παρέχονται από αυτές τις προσθήκες ενδέχεται να προκαλέσουν προβλήματα στις λειτουργίες των θεμάτων ή των προσθηκών σας. Ως εκ τούτου, είναι πιθανό να χρειαστεί να κάνετε αλλαγές στον κώδικα."
+  },
+  "stack-packs/packs/wordpress.js | time_to_first_byte": {
+    "message": "Τα θέματα, οι προσθήκες και οι προδιαγραφές διακομιστή συμβάλλουν στον χρόνο απόκρισης του διακομιστή. Αν θέλετε, μπορείτε να ψάξετε για ένα περισσότερο βελτιστοποιημένο θέμα, να επιλέξετε προσεκτικά μια προσθήκη βελτιστοποίησης ή/και να αναβαθμίσετε τον διακομιστή σας."
+  },
+  "stack-packs/packs/wordpress.js | total_byte_weight": {
+    "message": "Εξετάστε το ενδεχόμενο εμφάνισης αποσπασμάτων στις λίστες αναρτήσεών σας (π.χ. μέσω της ετικέτας \"περισσότερες\"), μειώνοντας τον αριθμό των αναρτήσεων που εμφανίζονται σε μια συγκεκριμένη σελίδα, χωρίζοντας τις μεγάλες αναρτήσεις σε πολλές σελίδες ή χρησιμοποιώντας μια προσθήκη για φόρτωση με καθυστέρηση των σχολίων."
+  },
+  "stack-packs/packs/wordpress.js | unminified_css": {
+    "message": "Μερικές [προσθήκες WordPress](https://wordpress.org/plugins/search/minify+css/) μπορούν να επιταχύνουν τον ιστότοπό σας συνενώνοντας, ελαχιστοποιώντας και συμπιέζοντας τα στιλ σας. Μπορείτε επίσης να χρησιμοποιήσετε μια διεργασία δόμησης για την εκ των προτέρων πραγματοποίηση αυτής της ελαχιστοποίησης, εφόσον υπάρχει αυτή η δυνατότητα."
+  },
+  "stack-packs/packs/wordpress.js | unminified_javascript": {
+    "message": "Μερικές [προσθήκες WordPress](https://wordpress.org/plugins/search/minify+javascript/) μπορούν να επιταχύνουν τον ιστότοπό σας συνενώνοντας, ελαχιστοποιώντας και συμπιέζοντας τα σενάριά σας. Μπορείτε επίσης να χρησιμοποιήσετε μια διεργασία δόμησης για την εκ των προτέρων πραγματοποίηση αυτής της ελαχιστοποίησης, εφόσον υπάρχει αυτή η δυνατότητα."
+  },
+  "stack-packs/packs/wordpress.js | unused_css_rules": {
+    "message": "Εξετάστε το ενδεχόμενο μείωσης ή αλλαγής των [προσθηκών WordPress](https://wordpress.org/plugins/) που φορτώνουν μη χρησιμοποιούμενα CSS στη σελίδα σας. Για να προσδιορίσετε τις προσθήκες που προσθέτουν περιττό κώδικα CSS, δοκιμάστε να εκτελέσετε [κάλυψη κώδικα](https://developers.google.com/web/updates/2017/04/devtools-release-notes#coverage) στο Chrome DevTools. Μπορείτε να προσδιορίσετε το θέμα ή την προσθήκη που ευθύνεται μέσω του URL του φύλλου στιλ. Αναζητήστε προσθήκες που διαθέτουν πολλά φύλλα στιλ στη λίστα, στα οποία ένα μεγάλο μέρος της κάλυψης κώδικα έχει κόκκινο χρώμα. Μια προσθήκη θα πρέπει να τοποθετεί στην ουρά ένα φύλλο στιλ, μόνο αν χρησιμοποιείται στη σελίδα."
+  },
+  "stack-packs/packs/wordpress.js | unused_javascript": {
+    "message": "Εξετάστε το ενδεχόμενο μείωσης ή αλλαγής των [προσθηκών WordPress](https://wordpress.org/plugins/) που φορτώνουν μη χρησιμοποιούμενη JavaScript στη σελίδα σας. Για να προσδιορίσετε τις προσθήκες που προσθέτουν περιττό κώδικα JS, δοκιμάστε να εκτελέσετε [κάλυψη κώδικα](https://developers.google.com/web/updates/2017/04/devtools-release-notes#coverage) στο Chrome DevTools. Μπορείτε να προσδιορίσετε το θέμα ή την προσθήκη που ευθύνεται μέσω του URL του σεναρίου. Αναζητήστε προσθήκες που διαθέτουν πολλά σενάρια στη λίστα, στα οποία ένα μεγάλο μέρος της κάλυψης κώδικα έχει κόκκινο χρώμα. Μια προσθήκη θα πρέπει να τοποθετεί στην ουρά ένα σενάριο μόνο αν χρησιμοποιείται στη σελίδα."
+  },
+  "stack-packs/packs/wordpress.js | uses_long_cache_ttl": {
+    "message": "Διαβάστε σχετικά με την [Κρυφή μνήμη προγράμματος περιήγησης στο WordPress](https://codex.wordpress.org/WordPress_Optimization#Browser_Caching)."
+  },
+  "stack-packs/packs/wordpress.js | uses_optimized_images": {
+    "message": "Εξετάστε το ενδεχόμενο να χρησιμοποιήσετε μια [προσθήκη βελτιστοποίησης εικόνων WordPress](https://wordpress.org/plugins/search/optimize+images/) που συμπιέζει τις εικόνες διατηρώντας όμως την ποιότητά τους."
+  },
+  "stack-packs/packs/wordpress.js | uses_responsive_images": {
+    "message": "Ανεβάστε εικόνες απευθείας μέσω της [βιβλιοθήκης μέσων](https://codex.wordpress.org/Media_Library_Screen) για να διασφαλίσετε ότι τα απαιτούμενα μεγέθη εικόνων είναι διαθέσιμα. Στη συνέχεια, μπορείτε να τις εισαγάγετε από τη βιβλιοθήκη μέσων ή να χρησιμοποιήσετε το γραφικό στοιχείο εικόνων για να διασφαλίσετε ότι χρησιμοποιούνται τα βέλτιστα μεγέθη (συμπεριλαμβανομένων αυτών για τα αποκριτικά σημεία διακοπής). Αποφύγετε τη χρήση εικόνων `Full Size`, εκτός αν οι διαστάσεις είναι κατάλληλες για τη χρήση τους. [Μάθετε περισσότερα](https://codex.wordpress.org/Inserting_Images_into_Posts_and_Pages#Image_Size)."
+  },
+  "stack-packs/packs/wordpress.js | uses_text_compression": {
+    "message": "Μπορείτε να ενεργοποιήσετε τη συμπίεση κειμένου στη διαμόρφωση του διακομιστή ιστού σας."
+  },
+  "stack-packs/packs/wordpress.js | uses_webp_images": {
+    "message": "Εξετάστε το ενδεχόμενο να χρησιμοποιήσετε μια [προσθήκη](https://wordpress.org/plugins/search/convert+webp/) ή μια υπηρεσία που θα μετατρέπει αυτόματα τις μεταφορτωμένες εικόνες σας στη βέλτιστη μορφή."
+  }
+}
diff --git a/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/en-GB.json b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/en-GB.json
new file mode 100644
index 0000000..80dda71
--- /dev/null
+++ b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/en-GB.json
@@ -0,0 +1,1541 @@
+{
+  "lighthouse-core/audits/accessibility/accesskeys.js | description": {
+    "message": "Access keys let users quickly focus a part of the page. For proper navigation, each access key must be unique. [Learn more](https://web.dev/accesskeys/)."
+  },
+  "lighthouse-core/audits/accessibility/accesskeys.js | failureTitle": {
+    "message": "`[accesskey]` values are not unique"
+  },
+  "lighthouse-core/audits/accessibility/accesskeys.js | title": {
+    "message": "`[accesskey]` values are unique"
+  },
+  "lighthouse-core/audits/accessibility/aria-allowed-attr.js | description": {
+    "message": "Each ARIA `role` supports a specific subset of `aria-*` attributes. Mismatching these invalidates the `aria-*` attributes. [Learn more](https://web.dev/aria-allowed-attr/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-allowed-attr.js | failureTitle": {
+    "message": "`[aria-*]` attributes do not match their roles"
+  },
+  "lighthouse-core/audits/accessibility/aria-allowed-attr.js | title": {
+    "message": "`[aria-*]` attributes match their roles"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-attr.js | description": {
+    "message": "Some ARIA roles have required attributes that describe the state of the element to screen readers. [Learn more](https://web.dev/aria-required-attr/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-required-attr.js | failureTitle": {
+    "message": "`[role]`s do not have all required `[aria-*]` attributes"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-attr.js | title": {
+    "message": "`[role]`s have all required `[aria-*]` attributes"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-children.js | description": {
+    "message": "Some ARIA parent roles must contain specific child roles to perform their intended accessibility functions. [Learn more](https://web.dev/aria-required-children/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-required-children.js | failureTitle": {
+    "message": "Elements with `[role]` that require specific children `[role]`s, are missing."
+  },
+  "lighthouse-core/audits/accessibility/aria-required-children.js | title": {
+    "message": "Elements with `[role]` that require specific children `[role]`s, are present"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-parent.js | description": {
+    "message": "Some ARIA child roles must be contained by specific parent roles to properly perform their intended accessibility functions. [Learn more](https://web.dev/aria-required-parent/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-required-parent.js | failureTitle": {
+    "message": "`[role]`s are not contained by their required parent element"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-parent.js | title": {
+    "message": "`[role]`s are contained by their required parent element"
+  },
+  "lighthouse-core/audits/accessibility/aria-roles.js | description": {
+    "message": "ARIA roles must have valid values in order to perform their intended accessibility functions. [Learn more](https://web.dev/aria-roles/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-roles.js | failureTitle": {
+    "message": "`[role]` values are not valid"
+  },
+  "lighthouse-core/audits/accessibility/aria-roles.js | title": {
+    "message": "`[role]` values are valid"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr-value.js | description": {
+    "message": "Assistive technologies, such as screen readers, can't interpret ARIA attributes with invalid values. [Learn more](https://web.dev/aria-valid-attr-value/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr-value.js | failureTitle": {
+    "message": "`[aria-*]` attributes do not have valid values"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr-value.js | title": {
+    "message": "`[aria-*]` attributes have valid values"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr.js | description": {
+    "message": "Assistive technologies, such as screen readers, can't interpret ARIA attributes with invalid names. [Learn more](https://web.dev/aria-valid-attr/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr.js | failureTitle": {
+    "message": "`[aria-*]` attributes are not valid or misspelled"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr.js | title": {
+    "message": "`[aria-*]` attributes are valid and not misspelled"
+  },
+  "lighthouse-core/audits/accessibility/audio-caption.js | description": {
+    "message": "Captions make audio elements usable for deaf or hearing-impaired users, providing critical information such as who is talking, what they're saying and other non-speech information. [Learn more](https://web.dev/audio-caption/)."
+  },
+  "lighthouse-core/audits/accessibility/audio-caption.js | failureTitle": {
+    "message": "`<audio>` elements are missing a `<track>` element with `[kind=\"captions\"]`."
+  },
+  "lighthouse-core/audits/accessibility/audio-caption.js | title": {
+    "message": "`<audio>` elements contain a `<track>` element with `[kind=\"captions\"]`"
+  },
+  "lighthouse-core/audits/accessibility/axe-audit.js | failingElementsHeader": {
+    "message": "Failing elements"
+  },
+  "lighthouse-core/audits/accessibility/button-name.js | description": {
+    "message": "When a button doesn't have an accessible name, screen readers announce it as 'button', making it unusable for users who rely on screen readers. [Learn more](https://web.dev/button-name/)."
+  },
+  "lighthouse-core/audits/accessibility/button-name.js | failureTitle": {
+    "message": "Buttons do not have an accessible name"
+  },
+  "lighthouse-core/audits/accessibility/button-name.js | title": {
+    "message": "Buttons have an accessible name"
+  },
+  "lighthouse-core/audits/accessibility/bypass.js | description": {
+    "message": "Adding ways to bypass repetitive content lets keyboard users navigate the page more efficiently. [Learn more](https://web.dev/bypass/)."
+  },
+  "lighthouse-core/audits/accessibility/bypass.js | failureTitle": {
+    "message": "The page does not contain a heading, skip link or landmark region"
+  },
+  "lighthouse-core/audits/accessibility/bypass.js | title": {
+    "message": "The page contains a heading, skip link or landmark region"
+  },
+  "lighthouse-core/audits/accessibility/color-contrast.js | description": {
+    "message": "Low-contrast text is difficult or impossible for many users to read. [Learn more](https://web.dev/color-contrast/)."
+  },
+  "lighthouse-core/audits/accessibility/color-contrast.js | failureTitle": {
+    "message": "Background and foreground colours do not have a sufficient contrast ratio."
+  },
+  "lighthouse-core/audits/accessibility/color-contrast.js | title": {
+    "message": "Background and foreground colours have a sufficient contrast ratio"
+  },
+  "lighthouse-core/audits/accessibility/definition-list.js | description": {
+    "message": "When definition lists are not properly marked up, screen readers may produce confusing or inaccurate output. [Learn more](https://web.dev/definition-list/)."
+  },
+  "lighthouse-core/audits/accessibility/definition-list.js | failureTitle": {
+    "message": "`<dl>`'s do not contain only properly-ordered `<dt>` and `<dd>` groups, `<script>` or `<template>` elements."
+  },
+  "lighthouse-core/audits/accessibility/definition-list.js | title": {
+    "message": "`<dl>`'s contain only properly-ordered `<dt>` and `<dd>` groups, `<script>` or `<template>` elements."
+  },
+  "lighthouse-core/audits/accessibility/dlitem.js | description": {
+    "message": "Definition list items (`<dt>` and `<dd>`) must be wrapped in a parent `<dl>` element to ensure that screen readers can properly announce them. [Learn more](https://web.dev/dlitem/)."
+  },
+  "lighthouse-core/audits/accessibility/dlitem.js | failureTitle": {
+    "message": "Definition list items are not wrapped in `<dl>` elements"
+  },
+  "lighthouse-core/audits/accessibility/dlitem.js | title": {
+    "message": "Definition list items are wrapped in `<dl>` elements"
+  },
+  "lighthouse-core/audits/accessibility/document-title.js | description": {
+    "message": "The title gives screen reader users an overview of the page, and search engine users rely on it heavily to determine if a page is relevant to their search. [Learn more](https://web.dev/document-title/)."
+  },
+  "lighthouse-core/audits/accessibility/document-title.js | failureTitle": {
+    "message": "Document doesn't have a `<title>` element"
+  },
+  "lighthouse-core/audits/accessibility/document-title.js | title": {
+    "message": "Document has a `<title>` element"
+  },
+  "lighthouse-core/audits/accessibility/duplicate-id.js | description": {
+    "message": "The value of an ID attribute must be unique to prevent other instances from being overlooked by assistive technologies. [Learn more](https://web.dev/duplicate-id/)."
+  },
+  "lighthouse-core/audits/accessibility/duplicate-id.js | failureTitle": {
+    "message": "`[id]` attributes on the page are not unique"
+  },
+  "lighthouse-core/audits/accessibility/duplicate-id.js | title": {
+    "message": "`[id]` attributes on the page are unique"
+  },
+  "lighthouse-core/audits/accessibility/frame-title.js | description": {
+    "message": "Screen reader users rely on frame titles to describe the contents of frames. [Learn more](https://web.dev/frame-title/)."
+  },
+  "lighthouse-core/audits/accessibility/frame-title.js | failureTitle": {
+    "message": "`<frame>` or `<iframe>` elements do not have a title"
+  },
+  "lighthouse-core/audits/accessibility/frame-title.js | title": {
+    "message": "`<frame>` or `<iframe>` elements have a title"
+  },
+  "lighthouse-core/audits/accessibility/html-has-lang.js | description": {
+    "message": "If a page doesn't specify a lang attribute, a screen reader assumes that the page is in the default language that the user chose when setting up the screen reader. If the page isn't actually in the default language, then the screen reader might not announce the page's text correctly. [Learn more](https://web.dev/html-has-lang/)."
+  },
+  "lighthouse-core/audits/accessibility/html-has-lang.js | failureTitle": {
+    "message": "`<html>` element does not have a `[lang]` attribute"
+  },
+  "lighthouse-core/audits/accessibility/html-has-lang.js | title": {
+    "message": "`<html>` element has a `[lang]` attribute"
+  },
+  "lighthouse-core/audits/accessibility/html-lang-valid.js | description": {
+    "message": "Specifying a valid [BCP 47 language](https://www.w3.org/International/questions/qa-choosing-language-tags#question) helps screen readers announce text properly. [Learn more](https://web.dev/html-lang-valid/)."
+  },
+  "lighthouse-core/audits/accessibility/html-lang-valid.js | failureTitle": {
+    "message": "`<html>` element does not have a valid value for its `[lang]` attribute."
+  },
+  "lighthouse-core/audits/accessibility/html-lang-valid.js | title": {
+    "message": "`<html>` element has a valid value for its `[lang]` attribute"
+  },
+  "lighthouse-core/audits/accessibility/image-alt.js | description": {
+    "message": "Informative elements should aim for short, descriptive alternative text. Decorative elements can be ignored with an empty alt attribute. [Learn more](https://web.dev/image-alt/)."
+  },
+  "lighthouse-core/audits/accessibility/image-alt.js | failureTitle": {
+    "message": "Image elements do not have `[alt]` attributes"
+  },
+  "lighthouse-core/audits/accessibility/image-alt.js | title": {
+    "message": "Image elements have `[alt]` attributes"
+  },
+  "lighthouse-core/audits/accessibility/input-image-alt.js | description": {
+    "message": "When an image is being used as an `<input>` button, providing alternative text can help screen reader users understand the purpose of the button. [Learn more](https://web.dev/input-image-alt/)."
+  },
+  "lighthouse-core/audits/accessibility/input-image-alt.js | failureTitle": {
+    "message": "`<input type=\"image\">` elements do not have `[alt]` text"
+  },
+  "lighthouse-core/audits/accessibility/input-image-alt.js | title": {
+    "message": "`<input type=\"image\">` elements have `[alt]` text"
+  },
+  "lighthouse-core/audits/accessibility/label.js | description": {
+    "message": "Labels ensure that form controls are announced properly by assistive technologies, such as screen readers. [Learn more](https://web.dev/label/)."
+  },
+  "lighthouse-core/audits/accessibility/label.js | failureTitle": {
+    "message": "Form elements do not have associated labels"
+  },
+  "lighthouse-core/audits/accessibility/label.js | title": {
+    "message": "Form elements have associated labels"
+  },
+  "lighthouse-core/audits/accessibility/layout-table.js | description": {
+    "message": "A table being used for layout purposes should not include data elements, such as the caption elements or the summary attribute, because this can create a confusing experience for screen reader users. [Learn more](https://web.dev/layout-table/)."
+  },
+  "lighthouse-core/audits/accessibility/layout-table.js | failureTitle": {
+    "message": "Presentational `<table>` elements do not avoid using `<th>`, `<caption>` or the `[summary]` attribute."
+  },
+  "lighthouse-core/audits/accessibility/layout-table.js | title": {
+    "message": "Presentational `<table>` elements avoid using `<th>`, `<caption>` or the `[summary]` attribute."
+  },
+  "lighthouse-core/audits/accessibility/link-name.js | description": {
+    "message": "Link text (and alternative text for images, when used as links) that is discernible, unique and focusable improves the navigation experience for screen reader users. [Learn more](https://web.dev/link-name/)."
+  },
+  "lighthouse-core/audits/accessibility/link-name.js | failureTitle": {
+    "message": "Links do not have a discernible name"
+  },
+  "lighthouse-core/audits/accessibility/link-name.js | title": {
+    "message": "Links have a discernible name"
+  },
+  "lighthouse-core/audits/accessibility/list.js | description": {
+    "message": "Screen readers have a specific way of announcing lists. Ensuring proper list structure aids screen reader output. [Learn more](https://web.dev/list/)."
+  },
+  "lighthouse-core/audits/accessibility/list.js | failureTitle": {
+    "message": "Lists do not contain only `<li>` elements and script supporting elements (`<script>` and `<template>`)."
+  },
+  "lighthouse-core/audits/accessibility/list.js | title": {
+    "message": "Lists contain only `<li>` elements and script supporting elements (`<script>` and `<template>`)."
+  },
+  "lighthouse-core/audits/accessibility/listitem.js | description": {
+    "message": "Screen readers require list items (`<li>`) to be contained within a parent `<ul>` or `<ol>` to be announced properly. [Learn more](https://web.dev/listitem/)."
+  },
+  "lighthouse-core/audits/accessibility/listitem.js | failureTitle": {
+    "message": "List items (`<li>`) are not contained within `<ul>` or `<ol>` parent elements."
+  },
+  "lighthouse-core/audits/accessibility/listitem.js | title": {
+    "message": "List items (`<li>`) are contained within `<ul>` or `<ol>` parent elements"
+  },
+  "lighthouse-core/audits/accessibility/meta-refresh.js | description": {
+    "message": "Users do not expect a page to refresh automatically, and doing so will move focus back to the top of the page. This may create a frustrating or confusing experience. [Learn more](https://web.dev/meta-refresh/)."
+  },
+  "lighthouse-core/audits/accessibility/meta-refresh.js | failureTitle": {
+    "message": "The document uses `<meta http-equiv=\"refresh\">`"
+  },
+  "lighthouse-core/audits/accessibility/meta-refresh.js | title": {
+    "message": "The document does not use `<meta http-equiv=\"refresh\">`"
+  },
+  "lighthouse-core/audits/accessibility/meta-viewport.js | description": {
+    "message": "Disabling zooming is problematic for users with low vision who rely on screen magnification to properly see the contents of a web page. [Learn more](https://web.dev/meta-viewport/)."
+  },
+  "lighthouse-core/audits/accessibility/meta-viewport.js | failureTitle": {
+    "message": "`[user-scalable=\"no\"]` is used in the `<meta name=\"viewport\">` element or the `[maximum-scale]` attribute is less than 5."
+  },
+  "lighthouse-core/audits/accessibility/meta-viewport.js | title": {
+    "message": "`[user-scalable=\"no\"]` is not used in the `<meta name=\"viewport\">` element and the `[maximum-scale]` attribute is not less than 5."
+  },
+  "lighthouse-core/audits/accessibility/object-alt.js | description": {
+    "message": "Screen readers cannot translate non-text content. Adding alt text to `<object>` elements helps screen readers convey meaning to users. [Learn more](https://web.dev/object-alt/)."
+  },
+  "lighthouse-core/audits/accessibility/object-alt.js | failureTitle": {
+    "message": "`<object>` elements do not have `[alt]` text"
+  },
+  "lighthouse-core/audits/accessibility/object-alt.js | title": {
+    "message": "`<object>` elements have `[alt]` text"
+  },
+  "lighthouse-core/audits/accessibility/tabindex.js | description": {
+    "message": "A value greater than 0 implies an explicit navigation ordering. Although technically valid, this often creates frustrating experiences for users who rely on assistive technologies. [Learn more](https://web.dev/tabindex/)."
+  },
+  "lighthouse-core/audits/accessibility/tabindex.js | failureTitle": {
+    "message": "Some elements have a `[tabindex]` value greater than 0"
+  },
+  "lighthouse-core/audits/accessibility/tabindex.js | title": {
+    "message": "No element has a `[tabindex]` value greater than 0"
+  },
+  "lighthouse-core/audits/accessibility/td-headers-attr.js | description": {
+    "message": "Screen readers have features to make navigating tables easier. Ensuring `<td>` cells using the `[headers]` attribute only refer to other cells in the same table may improve the experience for screen reader users. [Learn more](https://web.dev/td-headers-attr/)."
+  },
+  "lighthouse-core/audits/accessibility/td-headers-attr.js | failureTitle": {
+    "message": "Cells in a `<table>` element that use the `[headers]` attribute refers to other cells of that same table."
+  },
+  "lighthouse-core/audits/accessibility/td-headers-attr.js | title": {
+    "message": "Cells in a `<table>` element that use the `[headers]` attribute only refer to other cells of that same table."
+  },
+  "lighthouse-core/audits/accessibility/th-has-data-cells.js | description": {
+    "message": "Screen readers have features to make navigating tables easier. Ensuring that table headers always refer to some set of cells may improve the experience for screen reader users. [Learn more](https://web.dev/th-has-data-cells/)."
+  },
+  "lighthouse-core/audits/accessibility/th-has-data-cells.js | failureTitle": {
+    "message": "`<th>` elements and elements with `[role=\"columnheader\"/\"rowheader\"]` do not have data cells they describe."
+  },
+  "lighthouse-core/audits/accessibility/th-has-data-cells.js | title": {
+    "message": "`<th>` elements and elements with `[role=\"columnheader\"/\"rowheader\"]` have data cells they describe."
+  },
+  "lighthouse-core/audits/accessibility/valid-lang.js | description": {
+    "message": "Specifying a valid [BCP 47 language](https://www.w3.org/International/questions/qa-choosing-language-tags#question) on elements helps ensure that text is pronounced correctly by a screen reader. [Learn more](https://web.dev/valid-lang/)."
+  },
+  "lighthouse-core/audits/accessibility/valid-lang.js | failureTitle": {
+    "message": "`[lang]` attributes do not have a valid value"
+  },
+  "lighthouse-core/audits/accessibility/valid-lang.js | title": {
+    "message": "`[lang]` attributes have a valid value"
+  },
+  "lighthouse-core/audits/accessibility/video-caption.js | description": {
+    "message": "When a video provides a caption it is easier for deaf and hearing-impaired users to access its information. [Learn more](https://web.dev/video-caption/)."
+  },
+  "lighthouse-core/audits/accessibility/video-caption.js | failureTitle": {
+    "message": "`<video>` elements do not contain a `<track>` element with `[kind=\"captions\"]`."
+  },
+  "lighthouse-core/audits/accessibility/video-caption.js | title": {
+    "message": "`<video>` elements contain a `<track>` element with `[kind=\"captions\"]`"
+  },
+  "lighthouse-core/audits/accessibility/video-description.js | description": {
+    "message": "Audio descriptions provide relevant information for videos that dialogue cannot, such as facial expressions and scenes. [Learn more](https://web.dev/video-description/)."
+  },
+  "lighthouse-core/audits/accessibility/video-description.js | failureTitle": {
+    "message": "`<video>` elements do not contain a `<track>` element with `[kind=\"description\"]`."
+  },
+  "lighthouse-core/audits/accessibility/video-description.js | title": {
+    "message": "`<video>` elements contain a `<track>` element with `[kind=\"description\"]`"
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | description": {
+    "message": "For ideal appearance on iOS when users add a progressive web app to the home screen, define an `apple-touch-icon`. It must point to a non-transparent 192px (or 180px) square PNG. [Learn More](https://developers.google.com/web/fundamentals/design-and-ux/browser-customization/)."
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | failureTitle": {
+    "message": "Does not provide a valid `apple-touch-icon`"
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | precomposedWarning": {
+    "message": "`apple-touch-icon-precomposed` is out of date; `apple-touch-icon` is preferred."
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | title": {
+    "message": "Provides a valid `apple-touch-icon`"
+  },
+  "lighthouse-core/audits/bootup-time.js | chromeExtensionsWarning": {
+    "message": "Chrome extensions negatively affected this page's load performance. Try auditing the page in incognito mode or from a Chrome profile without extensions."
+  },
+  "lighthouse-core/audits/bootup-time.js | columnScriptEval": {
+    "message": "Script Evaluation"
+  },
+  "lighthouse-core/audits/bootup-time.js | columnScriptParse": {
+    "message": "Script Parse"
+  },
+  "lighthouse-core/audits/bootup-time.js | columnTotal": {
+    "message": "Total CPU Time"
+  },
+  "lighthouse-core/audits/bootup-time.js | description": {
+    "message": "Consider reducing the time spent parsing, compiling and executing JS. You may find delivering smaller JS payloads helps with this. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/bootup)."
+  },
+  "lighthouse-core/audits/bootup-time.js | failureTitle": {
+    "message": "Reduce JavaScript execution time"
+  },
+  "lighthouse-core/audits/bootup-time.js | title": {
+    "message": "JavaScript execution time"
+  },
+  "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | description": {
+    "message": "Large GIFs are inefficient for delivering animated content. Consider using MPEG4/WebM videos for animations and PNG/WebP for static images instead of GIF to save network bytes. [Learn more](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/replace-animated-gifs-with-video/)"
+  },
+  "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | title": {
+    "message": "Use video formats for animated content"
+  },
+  "lighthouse-core/audits/byte-efficiency/offscreen-images.js | description": {
+    "message": "Consider lazy loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/offscreen-images)."
+  },
+  "lighthouse-core/audits/byte-efficiency/offscreen-images.js | title": {
+    "message": "Defer off-screen images"
+  },
+  "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | description": {
+    "message": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/blocking-resources)."
+  },
+  "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | title": {
+    "message": "Eliminate render-blocking resources"
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | description": {
+    "message": "Large network payloads cost users real money and are highly correlated with long load times. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/network-payloads)."
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | displayValue": {
+    "message": "Total size was {totalBytes, number, bytes} KB"
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | failureTitle": {
+    "message": "Avoid enormous network payloads"
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | title": {
+    "message": "Avoids enormous network payloads"
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-css.js | description": {
+    "message": "Minifying CSS files can reduce network payload sizes. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/minify-css)."
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-css.js | title": {
+    "message": "Minify CSS"
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | description": {
+    "message": "Minifying JavaScript files can reduce payload sizes and script parse time. [Learn more](https://developers.google.com/speed/docs/insights/MinifyResources)."
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | title": {
+    "message": "Minify JavaScript"
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | description": {
+    "message": "Remove dead rules from style sheets and defer the loading of CSS not used for above-the-fold content to reduce unnecessary bytes consumed by network activity. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/unused-css)."
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | title": {
+    "message": "Remove unused CSS"
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-javascript.js | description": {
+    "message": "Remove unused JavaScript to reduce bytes consumed by network activity."
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-javascript.js | title": {
+    "message": "Remove unused JavaScript"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | description": {
+    "message": "A long cache lifetime can speed up repeat visits to your page. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/cache-policy)."
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 resource found}other{# resources found}}"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | failureTitle": {
+    "message": "Serve static assets with an efficient cache policy"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | title": {
+    "message": "Uses efficient cache policy on static assets"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | description": {
+    "message": "Optimised images load faster and consume less mobile data. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/optimize-images)."
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | title": {
+    "message": "Efficiently encode images"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | description": {
+    "message": "Serve images that are appropriately-sized to save mobile data and improve load time. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/oversized-images)."
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | title": {
+    "message": "Properly size images"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | description": {
+    "message": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimise total network bytes. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/text-compression)."
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | title": {
+    "message": "Enable text compression"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | description": {
+    "message": "Image formats like JPEG 2000, JPEG XR and WebP often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/webp)."
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | title": {
+    "message": "Serve images in next-gen formats"
+  },
+  "lighthouse-core/audits/content-width.js | description": {
+    "message": "If the width of your app's content doesn't match the width of the viewport, your app might not be optimised for mobile screens. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/content-sized-correctly-for-viewport)."
+  },
+  "lighthouse-core/audits/content-width.js | explanation": {
+    "message": "The viewport size of {innerWidth}px does not match the window size of {outerWidth}px."
+  },
+  "lighthouse-core/audits/content-width.js | failureTitle": {
+    "message": "Content is not sized correctly for the viewport"
+  },
+  "lighthouse-core/audits/content-width.js | title": {
+    "message": "Content is sized correctly for the viewport"
+  },
+  "lighthouse-core/audits/critical-request-chains.js | description": {
+    "message": "The critical request chains below show you what resources are loaded with a high priority. Consider reducing the length of chains, reducing the download size of resources or deferring the download of unnecessary resources to improve page load. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/critical-request-chains)."
+  },
+  "lighthouse-core/audits/critical-request-chains.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 chain found}other{# chains found}}"
+  },
+  "lighthouse-core/audits/critical-request-chains.js | title": {
+    "message": "Minimise Critical Requests Depth"
+  },
+  "lighthouse-core/audits/deprecations.js | columnDeprecate": {
+    "message": "Deprecation/Warning"
+  },
+  "lighthouse-core/audits/deprecations.js | columnLine": {
+    "message": "Line"
+  },
+  "lighthouse-core/audits/deprecations.js | description": {
+    "message": "Deprecated APIs will eventually be removed from the browser. [Learn more](https://web.dev/deprecations)."
+  },
+  "lighthouse-core/audits/deprecations.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 warning found}other{# warnings found}}"
+  },
+  "lighthouse-core/audits/deprecations.js | failureTitle": {
+    "message": "Uses deprecated APIs"
+  },
+  "lighthouse-core/audits/deprecations.js | title": {
+    "message": "Avoids deprecated APIs"
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | description": {
+    "message": "Application cache is deprecated. [Learn more](https://web.dev/appcache-manifest)."
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | displayValue": {
+    "message": "Found '{AppCacheManifest}'"
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | failureTitle": {
+    "message": "Uses application cache"
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | title": {
+    "message": "Avoids application cache"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | description": {
+    "message": "Specifying a DOCTYPE prevents the browser from switching to quirks mode. [Learn more](https://web.dev/doctype)."
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationBadDoctype": {
+    "message": "Doctype name must be the lowercase string `html`"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationNoDoctype": {
+    "message": "Document must contain a doctype"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationPublicId": {
+    "message": "Expected publicId to be an empty string"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationSystemId": {
+    "message": "Expected systemId to be an empty string"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | failureTitle": {
+    "message": "Page lacks the HTML doctype, thus triggering quirks mode"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | title": {
+    "message": "Page has the HTML doctype"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | columnElement": {
+    "message": "Element"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | columnStatistic": {
+    "message": "Statistic"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | columnValue": {
+    "message": "Value"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | description": {
+    "message": "Browser engineers recommend pages contain fewer than ~1,500 DOM elements. The sweet spot is a tree depth < 32 elements and fewer than 60 children/parent element. A large DOM can increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations) and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn more](https://web.dev/dom-size)."
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 element}other{# elements}}"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | failureTitle": {
+    "message": "Avoid an excessive DOM size"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | statisticDOMDepth": {
+    "message": "Maximum DOM Depth"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | statisticDOMElements": {
+    "message": "Total DOM Elements"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | statisticDOMWidth": {
+    "message": "Maximum Child Elements"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | title": {
+    "message": "Avoids an excessive DOM size"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | columnRel": {
+    "message": "Rel"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | columnTarget": {
+    "message": "Target"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | description": {
+    "message": "Add `rel=\"noopener\"` or `rel=\"noreferrer\"` to any external links to improve performance and prevent security vulnerabilities. [Learn more](https://web.dev/external-anchors-use-rel-noopener)."
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | failureTitle": {
+    "message": "Links to cross-origin destinations are unsafe"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | title": {
+    "message": "Links to cross-origin destinations are safe"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | warning": {
+    "message": "Unable to determine the destination for anchor ({anchorHTML}). If not used as a hyperlink, consider removing target=_blank."
+  },
+  "lighthouse-core/audits/dobetterweb/geolocation-on-start.js | description": {
+    "message": "Users are mistrustful of or confused by sites that request their location without context. Consider tying the request to a user action instead. [Learn more](https://web.dev/geolocation-on-start)."
+  },
+  "lighthouse-core/audits/dobetterweb/geolocation-on-start.js | failureTitle": {
+    "message": "Requests the geolocation permission on page load"
+  },
+  "lighthouse-core/audits/dobetterweb/geolocation-on-start.js | title": {
+    "message": "Avoids requesting the geolocation permission on page load"
+  },
+  "lighthouse-core/audits/dobetterweb/js-libraries.js | columnVersion": {
+    "message": "Version"
+  },
+  "lighthouse-core/audits/dobetterweb/js-libraries.js | description": {
+    "message": "All front-end JavaScript libraries detected on the page. [Learn more](https://web.dev/js-libraries)."
+  },
+  "lighthouse-core/audits/dobetterweb/js-libraries.js | title": {
+    "message": "Detected JavaScript libraries"
+  },
+  "lighthouse-core/audits/dobetterweb/no-document-write.js | description": {
+    "message": "For users on slow connections, external scripts dynamically injected via `document.write()` can delay page load by tens of seconds. [Learn more](https://web.dev/no-document-write)."
+  },
+  "lighthouse-core/audits/dobetterweb/no-document-write.js | failureTitle": {
+    "message": "Uses `document.write()`"
+  },
+  "lighthouse-core/audits/dobetterweb/no-document-write.js | title": {
+    "message": "Avoids `document.write()`"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | columnSeverity": {
+    "message": "Highest Severity"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | columnVersion": {
+    "message": "Library version"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | columnVuln": {
+    "message": "Vulnerability count"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | description": {
+    "message": "Some third-party scripts may contain known security vulnerabilities that are easily identified and exploited by attackers. [Learn more](https://web.dev/no-vulnerable-libraries)."
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 vulnerability detected}other{# vulnerabilities detected}}"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | failureTitle": {
+    "message": "Includes front-end JavaScript libraries with known security vulnerabilities"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | rowSeverityHigh": {
+    "message": "High"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | rowSeverityLow": {
+    "message": "Low"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | rowSeverityMedium": {
+    "message": "Medium"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | title": {
+    "message": "Avoids front-end JavaScript libraries with known security vulnerabilities"
+  },
+  "lighthouse-core/audits/dobetterweb/notification-on-start.js | description": {
+    "message": "Users are mistrustful of or confused by sites that request to send notifications without context. Consider tying the request to user gestures instead. [Learn more](https://web.dev/notification-on-start)."
+  },
+  "lighthouse-core/audits/dobetterweb/notification-on-start.js | failureTitle": {
+    "message": "Requests the notification permission on page load"
+  },
+  "lighthouse-core/audits/dobetterweb/notification-on-start.js | title": {
+    "message": "Avoids requesting the notification permission on page load"
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | columnFailingElem": {
+    "message": "Failing Elements"
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | description": {
+    "message": "Preventing password pasting undermines good security policy. [Learn more](https://web.dev/password-inputs-can-be-pasted-into)."
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | failureTitle": {
+    "message": "Prevents users to paste into password fields"
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | title": {
+    "message": "Allows users to paste into password fields"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | columnProtocol": {
+    "message": "Protocol"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | description": {
+    "message": "HTTP/2 offers many benefits over HTTP/1.1, including binary headers, multiplexing and server push. [Learn more](https://web.dev/uses-http2)."
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 request not served via HTTP/2}other{# requests not served via HTTP/2}}"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | failureTitle": {
+    "message": "Does not use HTTP/2 for all of its resources"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | title": {
+    "message": "Uses HTTP/2 for its own resources"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-passive-event-listeners.js | description": {
+    "message": "Consider marking your touch and wheel event listeners as `passive` to improve your page's scroll performance. [Learn more](https://web.dev/uses-passive-event-listeners)."
+  },
+  "lighthouse-core/audits/dobetterweb/uses-passive-event-listeners.js | failureTitle": {
+    "message": "Does not use passive listeners to improve scrolling performance"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-passive-event-listeners.js | title": {
+    "message": "Uses passive listeners to improve scrolling performance"
+  },
+  "lighthouse-core/audits/errors-in-console.js | columnDesc": {
+    "message": "Description"
+  },
+  "lighthouse-core/audits/errors-in-console.js | description": {
+    "message": "Errors logged to the console indicate unresolved problems. They can come from network request failures and other browser concerns. [Learn more](https://web.dev/errors-in-console)"
+  },
+  "lighthouse-core/audits/errors-in-console.js | failureTitle": {
+    "message": "Browser errors were logged to the console"
+  },
+  "lighthouse-core/audits/errors-in-console.js | title": {
+    "message": "No browser errors logged to the console"
+  },
+  "lighthouse-core/audits/font-display.js | description": {
+    "message": "Leverage the font-display CSS feature to ensure text is user-visible while webfonts are loading. [Learn more](https://developers.google.com/web/updates/2016/02/font-display)."
+  },
+  "lighthouse-core/audits/font-display.js | failureTitle": {
+    "message": "Ensure text remains visible during webfont load"
+  },
+  "lighthouse-core/audits/font-display.js | title": {
+    "message": "All text remains visible during webfont loads"
+  },
+  "lighthouse-core/audits/font-display.js | undeclaredFontURLWarning": {
+    "message": "Lighthouse was unable to automatically check the font-display value for the following URL: {fontURL}."
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | columnActual": {
+    "message": "Aspect ratio (actual)"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | columnDisplayed": {
+    "message": "Aspect ratio (displayed)"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | description": {
+    "message": "Image display dimensions should match natural aspect ratio. [Learn more](https://web.dev/image-aspect-ratio)."
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | failureTitle": {
+    "message": "Displays images with incorrect aspect ratio"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | title": {
+    "message": "Displays images with correct aspect ratio"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | warningCompute": {
+    "message": "Invalid image sizing information {url}"
+  },
+  "lighthouse-core/audits/installable-manifest.js | description": {
+    "message": "Browsers can proactively prompt users to add your app to their home screen, which can lead to higher engagement. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/install-prompt)."
+  },
+  "lighthouse-core/audits/installable-manifest.js | failureTitle": {
+    "message": "Web app manifest does not meet the installability requirements"
+  },
+  "lighthouse-core/audits/installable-manifest.js | title": {
+    "message": "Web app manifest meets the installability requirements"
+  },
+  "lighthouse-core/audits/is-on-https.js | columnInsecureURL": {
+    "message": "Insecure URL"
+  },
+  "lighthouse-core/audits/is-on-https.js | description": {
+    "message": "All sites should be protected with HTTPS, even ones that don't handle sensitive data. HTTPS prevents intruders from tampering with or passively listening in on the communications between your app and your users, and is a prerequisite for HTTP/2 and many new web platform APIs. [Learn more](https://web.dev/is-on-https)."
+  },
+  "lighthouse-core/audits/is-on-https.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 insecure request found}other{# insecure requests found}}"
+  },
+  "lighthouse-core/audits/is-on-https.js | failureTitle": {
+    "message": "Does not use HTTPS"
+  },
+  "lighthouse-core/audits/is-on-https.js | title": {
+    "message": "Uses HTTPS"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | description": {
+    "message": "A fast page load over a mobile network ensures a good mobile user experience. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/fast-3g)."
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | displayValueText": {
+    "message": "Interactive at {timeInMs, number, seconds} s"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | displayValueTextWithOverride": {
+    "message": "Interactive on simulated mobile network at {timeInMs, number, seconds} s"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | explanationLoadSlow": {
+    "message": "Your page loads too slowly and is not interactive within 10 seconds. Look at the opportunities and diagnostics in the 'Performance' section to learn how to improve."
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | failureTitle": {
+    "message": "Page load is not fast enough on mobile networks"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | title": {
+    "message": "Page load is fast enough on mobile networks"
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | columnCategory": {
+    "message": "Category"
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | description": {
+    "message": "Consider reducing the time spent parsing, compiling and executing JS. You may find delivering smaller JS payloads helps with this."
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | failureTitle": {
+    "message": "Minimise main-thread work"
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | title": {
+    "message": "Minimises main-thread work"
+  },
+  "lighthouse-core/audits/manual/pwa-cross-browser.js | description": {
+    "message": "To reach the most users, sites should work across every major browser. [Learn more](https://developers.google.com/web/progressive-web-apps/checklist#site-works-cross-browser)."
+  },
+  "lighthouse-core/audits/manual/pwa-cross-browser.js | title": {
+    "message": "Site works cross-browser"
+  },
+  "lighthouse-core/audits/manual/pwa-each-page-has-url.js | description": {
+    "message": "Ensure individual pages are deep linkable via URL and that URLs are unique for the purpose of shareability on social media. [Learn more](https://developers.google.com/web/progressive-web-apps/checklist#each-page-has-a-url)."
+  },
+  "lighthouse-core/audits/manual/pwa-each-page-has-url.js | title": {
+    "message": "Each page has a URL"
+  },
+  "lighthouse-core/audits/manual/pwa-page-transitions.js | description": {
+    "message": "Transitions should feel crisp as you tap around, even on a slow network; a key to perceived performance. [Learn more](https://developers.google.com/web/progressive-web-apps/checklist#page-transitions-dont-feel-like-they-block-on-the-network)."
+  },
+  "lighthouse-core/audits/manual/pwa-page-transitions.js | title": {
+    "message": "Page transitions don't feel like they block on the network"
+  },
+  "lighthouse-core/audits/metrics/estimated-input-latency.js | description": {
+    "message": "Estimated input latency is an estimate of how long your app takes to respond to user input, in milliseconds, during the busiest 5s window of page load. If your latency is higher than 50 ms, users may perceive your app as laggy. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/estimated-input-latency)."
+  },
+  "lighthouse-core/audits/metrics/estimated-input-latency.js | title": {
+    "message": "Estimated Input Latency"
+  },
+  "lighthouse-core/audits/metrics/first-contentful-paint.js | description": {
+    "message": "First contentful paint marks the time at which the first text or image is painted. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/first-contentful-paint)."
+  },
+  "lighthouse-core/audits/metrics/first-contentful-paint.js | title": {
+    "message": "First Contentful Paint"
+  },
+  "lighthouse-core/audits/metrics/first-cpu-idle.js | description": {
+    "message": "First CPU Idle marks the first time at which the page's main thread is quiet enough to handle input. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/first-interactive)."
+  },
+  "lighthouse-core/audits/metrics/first-cpu-idle.js | title": {
+    "message": "First CPU Idle"
+  },
+  "lighthouse-core/audits/metrics/first-meaningful-paint.js | description": {
+    "message": "First meaningful paint measures when the primary content of a page is visible. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/first-meaningful-paint)."
+  },
+  "lighthouse-core/audits/metrics/first-meaningful-paint.js | title": {
+    "message": "First Meaningful Paint"
+  },
+  "lighthouse-core/audits/metrics/interactive.js | description": {
+    "message": "Time to interactive is the amount of time it takes for the page to become fully interactive. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/consistently-interactive)."
+  },
+  "lighthouse-core/audits/metrics/interactive.js | title": {
+    "message": "Time to Interactive"
+  },
+  "lighthouse-core/audits/metrics/max-potential-fid.js | description": {
+    "message": "The maximum potential first input delay that your users could experience is the duration, in milliseconds, of the longest task. [Learn more](https://developers.google.com/web/updates/2018/05/first-input-delay)."
+  },
+  "lighthouse-core/audits/metrics/max-potential-fid.js | title": {
+    "message": "Max potential first input delay"
+  },
+  "lighthouse-core/audits/metrics/speed-index.js | description": {
+    "message": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/speed-index)."
+  },
+  "lighthouse-core/audits/metrics/speed-index.js | title": {
+    "message": "Speed Index"
+  },
+  "lighthouse-core/audits/metrics/total-blocking-time.js | description": {
+    "message": "Sum of all time periods between FCP and Time to Interactive, when task length exceeded 50ms, expressed in milliseconds."
+  },
+  "lighthouse-core/audits/metrics/total-blocking-time.js | title": {
+    "message": "Total blocking time"
+  },
+  "lighthouse-core/audits/network-rtt.js | description": {
+    "message": "Network round trip times (RTT) have a large impact on performance. If the RTT to an origin is high, it's an indication that servers closer to the user could improve performance. [Learn more](https://hpbn.co/primer-on-latency-and-bandwidth/)."
+  },
+  "lighthouse-core/audits/network-rtt.js | title": {
+    "message": "Network Return Times"
+  },
+  "lighthouse-core/audits/network-server-latency.js | description": {
+    "message": "Server latencies can impact web performance. If the server latency of an origin is high, it's an indication that the server is overloaded or has poor back-end performance. [Learn more](https://hpbn.co/primer-on-web-performance/#analyzing-the-resource-waterfall)."
+  },
+  "lighthouse-core/audits/network-server-latency.js | title": {
+    "message": "Server Back-end Latencies"
+  },
+  "lighthouse-core/audits/offline-start-url.js | description": {
+    "message": "A service worker enables your web app to be reliable in unpredictable network conditions. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)."
+  },
+  "lighthouse-core/audits/offline-start-url.js | failureTitle": {
+    "message": "`start_url` does not respond with a 200 when offline"
+  },
+  "lighthouse-core/audits/offline-start-url.js | title": {
+    "message": "`start_url` responds with a 200 when offline"
+  },
+  "lighthouse-core/audits/offline-start-url.js | warningCantStart": {
+    "message": "Lighthouse couldn't read the `start_url` from the manifest. As a result, the `start_url` was assumed to be the document's URL. Error message: '{manifestWarning}'."
+  },
+  "lighthouse-core/audits/performance-budget.js | columnOverBudget": {
+    "message": "Over budget"
+  },
+  "lighthouse-core/audits/performance-budget.js | description": {
+    "message": "Keep the quantity and size of network requests under the targets set by the provided performance budget. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/budgets)."
+  },
+  "lighthouse-core/audits/performance-budget.js | requestCountOverBudget": {
+    "message": "{count,plural, =1{1 request}other{# requests}}"
+  },
+  "lighthouse-core/audits/performance-budget.js | title": {
+    "message": "Performance budget"
+  },
+  "lighthouse-core/audits/redirects-http.js | description": {
+    "message": "If you've already set up HTTPS, make sure that you redirect all HTTP traffic to HTTPS in order to enable secure web features for all your users. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/http-redirects-to-https)."
+  },
+  "lighthouse-core/audits/redirects-http.js | failureTitle": {
+    "message": "Does not redirect HTTP traffic to HTTPS"
+  },
+  "lighthouse-core/audits/redirects-http.js | title": {
+    "message": "Redirects HTTP traffic to HTTPS"
+  },
+  "lighthouse-core/audits/redirects.js | description": {
+    "message": "Redirects introduce additional delays before the page can be loaded. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/redirects)."
+  },
+  "lighthouse-core/audits/redirects.js | title": {
+    "message": "Avoid multiple page redirects"
+  },
+  "lighthouse-core/audits/resource-summary.js | description": {
+    "message": "To set budgets for the quantity and size of page resources, add a budget.json file. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/budgets)."
+  },
+  "lighthouse-core/audits/resource-summary.js | displayValue": {
+    "message": "{requestCount,plural, =1{1 request • {byteCount, number, bytes} KB}other{# requests • {byteCount, number, bytes} KB}}"
+  },
+  "lighthouse-core/audits/resource-summary.js | title": {
+    "message": "Keep request counts low and transfer sizes small"
+  },
+  "lighthouse-core/audits/seo/canonical.js | description": {
+    "message": "Canonical links suggest which URL to show in search results. [Learn more](https://web.dev/canonical)."
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationConflict": {
+    "message": "Multiple conflicting URLs ({urlList})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationDifferentDomain": {
+    "message": "Points to a different domain ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationInvalid": {
+    "message": "Invalid URL ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationPointsElsewhere": {
+    "message": "Points to another `hreflang` location ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationRelative": {
+    "message": "Relative URL ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationRoot": {
+    "message": "Points to the domain's root URL (the home page), instead of an equivalent page of content"
+  },
+  "lighthouse-core/audits/seo/canonical.js | failureTitle": {
+    "message": "Document does not have a valid `rel=canonical`"
+  },
+  "lighthouse-core/audits/seo/canonical.js | title": {
+    "message": "Document has a valid `rel=canonical`"
+  },
+  "lighthouse-core/audits/seo/font-size.js | description": {
+    "message": "Font sizes less than 12px are too small to be legible and require mobile visitors to 'pinch to zoom' in order to read. Strive to have >60% of page text ≥12px. [Learn more](https://web.dev/font-size)."
+  },
+  "lighthouse-core/audits/seo/font-size.js | displayValue": {
+    "message": "{decimalProportion, number, extendedPercent} legible text"
+  },
+  "lighthouse-core/audits/seo/font-size.js | explanationViewport": {
+    "message": "Text is illegible because there's no viewport meta tag optimised for mobile screens."
+  },
+  "lighthouse-core/audits/seo/font-size.js | explanationWithDisclaimer": {
+    "message": "{decimalProportion, number, extendedPercent} of text is too small (based on {decimalProportionVisited, number, extendedPercent} sample)."
+  },
+  "lighthouse-core/audits/seo/font-size.js | failureTitle": {
+    "message": "Document doesn't use legible font sizes"
+  },
+  "lighthouse-core/audits/seo/font-size.js | title": {
+    "message": "Document uses legible font sizes"
+  },
+  "lighthouse-core/audits/seo/hreflang.js | description": {
+    "message": "hreflang links tell search engines what version of a page they should list in search results for a given language or region. [Learn more](https://web.dev/hreflang)."
+  },
+  "lighthouse-core/audits/seo/hreflang.js | failureTitle": {
+    "message": "Document doesn't have a valid `hreflang`"
+  },
+  "lighthouse-core/audits/seo/hreflang.js | title": {
+    "message": "Document has a valid `hreflang`"
+  },
+  "lighthouse-core/audits/seo/http-status-code.js | description": {
+    "message": "Pages with unsuccessful HTTP status codes may not be indexed properly. [Learn more](https://web.dev/http-status-code)."
+  },
+  "lighthouse-core/audits/seo/http-status-code.js | failureTitle": {
+    "message": "Page has unsuccessful HTTP status code"
+  },
+  "lighthouse-core/audits/seo/http-status-code.js | title": {
+    "message": "Page has successful HTTP status code"
+  },
+  "lighthouse-core/audits/seo/is-crawlable.js | description": {
+    "message": "Search engines are unable to include your pages in search results if they don't have permission to crawl them. [Learn more](https://web.dev/is-crawable)."
+  },
+  "lighthouse-core/audits/seo/is-crawlable.js | failureTitle": {
+    "message": "Page is blocked from indexing"
+  },
+  "lighthouse-core/audits/seo/is-crawlable.js | title": {
+    "message": "Page isn’t blocked from indexing"
+  },
+  "lighthouse-core/audits/seo/link-text.js | description": {
+    "message": "Descriptive link text helps search engines understand your content. [Learn more](https://web.dev/link-text)."
+  },
+  "lighthouse-core/audits/seo/link-text.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 link found}other{# links found}}"
+  },
+  "lighthouse-core/audits/seo/link-text.js | failureTitle": {
+    "message": "Links do not have descriptive text"
+  },
+  "lighthouse-core/audits/seo/link-text.js | title": {
+    "message": "Links have descriptive text"
+  },
+  "lighthouse-core/audits/seo/manual/structured-data.js | description": {
+    "message": "Run the [Structured Data Testing Tool](https://search.google.com/structured-data/testing-tool/) and the [Structured Data Linter](http://linter.structured-data.org/) to validate structured data. [Learn more](https://web.dev/structured-data)."
+  },
+  "lighthouse-core/audits/seo/manual/structured-data.js | title": {
+    "message": "Structured data is valid"
+  },
+  "lighthouse-core/audits/seo/meta-description.js | description": {
+    "message": "Meta descriptions may be included in search results to concisely summarise page content. [Learn more](https://web.dev/meta-description)."
+  },
+  "lighthouse-core/audits/seo/meta-description.js | explanation": {
+    "message": "Description text is empty."
+  },
+  "lighthouse-core/audits/seo/meta-description.js | failureTitle": {
+    "message": "Document does not have a meta description"
+  },
+  "lighthouse-core/audits/seo/meta-description.js | title": {
+    "message": "Document has a meta description"
+  },
+  "lighthouse-core/audits/seo/plugins.js | description": {
+    "message": "Search engines can't index plug-in content, and many devices restrict plug-ins or don't support them. [Learn more](https://web.dev/plugins)."
+  },
+  "lighthouse-core/audits/seo/plugins.js | failureTitle": {
+    "message": "Document uses plugins"
+  },
+  "lighthouse-core/audits/seo/plugins.js | title": {
+    "message": "Document avoids plugins"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | description": {
+    "message": "If your robots.txt file is malformed, crawlers may not be able to understand how you want your website to be crawled or indexed. [Learn more](https://web.dev/robots-txt)."
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | displayValueHttpBadCode": {
+    "message": "Request for robots.txt returned HTTP status: {statusCode}"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | displayValueValidationError": {
+    "message": "{itemCount,plural, =1{1 error found}other{# errors found}}"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | explanation": {
+    "message": "Lighthouse was unable to download a robots.txt file"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | failureTitle": {
+    "message": "robots.txt is not valid"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | title": {
+    "message": "robots.txt is valid"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | description": {
+    "message": "Interactive elements such as buttons and links should be large enough (48 x 48px) and have enough space around them to be easy enough to tap without overlapping onto other elements. [Learn more](https://web.dev/tap-targets)."
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | displayValue": {
+    "message": "{decimalProportion, number, percent} appropriately sized tap targets"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | explanationViewportMetaNotOptimized": {
+    "message": "Tap targets are too small because there's no viewport meta tag optimised for mobile screens"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | failureTitle": {
+    "message": "Tap targets are not sized appropriately"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | overlappingTargetHeader": {
+    "message": "Overlapping target"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | tapTargetHeader": {
+    "message": "Tap target"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | title": {
+    "message": "Tap targets are sized appropriately"
+  },
+  "lighthouse-core/audits/service-worker.js | description": {
+    "message": "The service worker is the technology that enables your app to use many progressive web app features, such as offline, add to home screen and push notifications. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/registered-service-worker)."
+  },
+  "lighthouse-core/audits/service-worker.js | explanationBadManifest": {
+    "message": "This page is controlled by a service worker, however no `start_url` was found because manifest failed to parse as valid JSON"
+  },
+  "lighthouse-core/audits/service-worker.js | explanationBadStartUrl": {
+    "message": "This page is controlled by a service worker, however the `start_url` ({startUrl}) is not in the service worker's scope ({scopeUrl})"
+  },
+  "lighthouse-core/audits/service-worker.js | explanationNoManifest": {
+    "message": "This page is controlled by a service worker, however no `start_url` was found because no manifest was fetched."
+  },
+  "lighthouse-core/audits/service-worker.js | explanationOutOfScope": {
+    "message": "This origin has one or more service workers, however the page ({pageUrl}) is not in scope."
+  },
+  "lighthouse-core/audits/service-worker.js | failureTitle": {
+    "message": "Does not register a service worker that controls page and `start_url`"
+  },
+  "lighthouse-core/audits/service-worker.js | title": {
+    "message": "Registers a service worker that controls page and `start_url`"
+  },
+  "lighthouse-core/audits/splash-screen.js | description": {
+    "message": "A themed splash screen ensures a high-quality experience when users launch your app from their home screens. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/custom-splash-screen)."
+  },
+  "lighthouse-core/audits/splash-screen.js | failureTitle": {
+    "message": "Is not configured for a custom splash screen"
+  },
+  "lighthouse-core/audits/splash-screen.js | title": {
+    "message": "Configured for a custom splash screen"
+  },
+  "lighthouse-core/audits/themed-omnibox.js | description": {
+    "message": "The browser address bar can be themed to match your site. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/address-bar)."
+  },
+  "lighthouse-core/audits/themed-omnibox.js | failureTitle": {
+    "message": "Does not set a theme colour for the address bar."
+  },
+  "lighthouse-core/audits/themed-omnibox.js | title": {
+    "message": "Sets a theme colour for the address bar."
+  },
+  "lighthouse-core/audits/third-party-summary.js | columnBlockingTime": {
+    "message": "Main-thread blocking time"
+  },
+  "lighthouse-core/audits/third-party-summary.js | columnThirdParty": {
+    "message": "Third-party"
+  },
+  "lighthouse-core/audits/third-party-summary.js | description": {
+    "message": "Third-party code can significantly impact load performance. Limit the number of redundant third-party providers and try to load third-party code after your page has primarily finished loading. [Learn more](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/loading-third-party-javascript/)."
+  },
+  "lighthouse-core/audits/third-party-summary.js | displayValue": {
+    "message": "Third-party code blocked the main thread for {timeInMs, number, milliseconds} ms"
+  },
+  "lighthouse-core/audits/third-party-summary.js | failureTitle": {
+    "message": "Reduce the impact of third-party code"
+  },
+  "lighthouse-core/audits/third-party-summary.js | title": {
+    "message": "Third-party usage"
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | description": {
+    "message": "Time to first byte identifies the time at which your server sends a response. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/ttfb)."
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | displayValue": {
+    "message": "Root document took {timeInMs, number, milliseconds} ms"
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | failureTitle": {
+    "message": "Reduce server response times (TTFB)"
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | title": {
+    "message": "Server response times are low (TTFB)"
+  },
+  "lighthouse-core/audits/user-timings.js | columnDuration": {
+    "message": "Duration"
+  },
+  "lighthouse-core/audits/user-timings.js | columnStartTime": {
+    "message": "Start Time"
+  },
+  "lighthouse-core/audits/user-timings.js | columnType": {
+    "message": "Type"
+  },
+  "lighthouse-core/audits/user-timings.js | description": {
+    "message": "Consider instrumenting your app with the User Timing API to measure your app's real-world performance during key user experiences. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/user-timing)."
+  },
+  "lighthouse-core/audits/user-timings.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 user timing}other{# user timings}}"
+  },
+  "lighthouse-core/audits/user-timings.js | title": {
+    "message": "User Timing marks and measures"
+  },
+  "lighthouse-core/audits/uses-rel-preconnect.js | crossoriginWarning": {
+    "message": "A preconnect <link> was found for '{securityOrigin}' but was not used by the browser. Check that you are using the `crossorigin` attribute properly."
+  },
+  "lighthouse-core/audits/uses-rel-preconnect.js | description": {
+    "message": "Consider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn more](https://developers.google.com/web/fundamentals/performance/resource-prioritization#preconnect)."
+  },
+  "lighthouse-core/audits/uses-rel-preconnect.js | title": {
+    "message": "Pre-connect to required origins"
+  },
+  "lighthouse-core/audits/uses-rel-preload.js | crossoriginWarning": {
+    "message": "A preload <link> was found for '{preloadURL}' but was not used by the browser. Check that you are using the `crossorigin` attribute properly."
+  },
+  "lighthouse-core/audits/uses-rel-preload.js | description": {
+    "message": "Consider using `<link rel=preload>` to prioritise fetching resources that are currently requested later in page load. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/preload)."
+  },
+  "lighthouse-core/audits/uses-rel-preload.js | title": {
+    "message": "Pre-load key requests"
+  },
+  "lighthouse-core/audits/viewport.js | description": {
+    "message": "Add a `<meta name=\"viewport\">` tag to optimise your app for mobile screens. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/has-viewport-meta-tag)."
+  },
+  "lighthouse-core/audits/viewport.js | explanationNoTag": {
+    "message": "No `<meta name=\"viewport\">` tag found"
+  },
+  "lighthouse-core/audits/viewport.js | failureTitle": {
+    "message": "Does not have a `<meta name=\"viewport\">` tag with `width` or `initial-scale`"
+  },
+  "lighthouse-core/audits/viewport.js | title": {
+    "message": "Has a `<meta name=\"viewport\">` tag with `width` or `initial-scale`"
+  },
+  "lighthouse-core/audits/without-javascript.js | description": {
+    "message": "Your app should display some content when JavaScript is disabled, even if it's just a warning to the user that JavaScript is required to use the app. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/no-js)."
+  },
+  "lighthouse-core/audits/without-javascript.js | explanation": {
+    "message": "The page body should render some content if its scripts are not available."
+  },
+  "lighthouse-core/audits/without-javascript.js | failureTitle": {
+    "message": "Does not provide fallback content when JavaScript is not available"
+  },
+  "lighthouse-core/audits/without-javascript.js | title": {
+    "message": "Contains some content when JavaScript is not available"
+  },
+  "lighthouse-core/audits/works-offline.js | description": {
+    "message": "If you're building a progressive web app, consider using a service worker so that your app can work offline. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)."
+  },
+  "lighthouse-core/audits/works-offline.js | failureTitle": {
+    "message": "Current page does not respond with a 200 when offline"
+  },
+  "lighthouse-core/audits/works-offline.js | title": {
+    "message": "Current page responds with a 200 when offline"
+  },
+  "lighthouse-core/audits/works-offline.js | warningNoLoad": {
+    "message": "The page may not be loading offline because your test URL ({requested}) was redirected to '{final}'. Try testing the second URL directly."
+  },
+  "lighthouse-core/config/default-config.js | a11yAriaGroupDescription": {
+    "message": "These are opportunities to improve the usage of ARIA in your application which may enhance the experience for users of assistive technology, such as a screen reader."
+  },
+  "lighthouse-core/config/default-config.js | a11yAriaGroupTitle": {
+    "message": "ARIA"
+  },
+  "lighthouse-core/config/default-config.js | a11yAudioVideoGroupDescription": {
+    "message": "These are opportunities to provide alternative content for audio and video. This may improve the experience for users with hearing or vision impairments."
+  },
+  "lighthouse-core/config/default-config.js | a11yAudioVideoGroupTitle": {
+    "message": "Audio and video"
+  },
+  "lighthouse-core/config/default-config.js | a11yBestPracticesGroupDescription": {
+    "message": "These items highlight common accessibility best practices."
+  },
+  "lighthouse-core/config/default-config.js | a11yBestPracticesGroupTitle": {
+    "message": "Best practices"
+  },
+  "lighthouse-core/config/default-config.js | a11yCategoryDescription": {
+    "message": "These checks highlight opportunities to [improve the accessibility of your web app](https://developers.google.com/web/fundamentals/accessibility). Only a subset of accessibility issues can be automatically detected so manual testing is also encouraged."
+  },
+  "lighthouse-core/config/default-config.js | a11yCategoryManualDescription": {
+    "message": "These items address areas which an automated testing tool cannot cover. Learn more in our guide on [conducting an accessibility review](https://developers.google.com/web/fundamentals/accessibility/how-to-review)."
+  },
+  "lighthouse-core/config/default-config.js | a11yCategoryTitle": {
+    "message": "Accessibility"
+  },
+  "lighthouse-core/config/default-config.js | a11yColorContrastGroupDescription": {
+    "message": "These are opportunities to improve the legibility of your content."
+  },
+  "lighthouse-core/config/default-config.js | a11yColorContrastGroupTitle": {
+    "message": "Contrast"
+  },
+  "lighthouse-core/config/default-config.js | a11yLanguageGroupDescription": {
+    "message": "These are opportunities to improve the interpretation of your content by users in different locales."
+  },
+  "lighthouse-core/config/default-config.js | a11yLanguageGroupTitle": {
+    "message": "Internationalisation and localisation"
+  },
+  "lighthouse-core/config/default-config.js | a11yNamesLabelsGroupDescription": {
+    "message": "These are opportunities to improve the semantics of the controls in your application. This may enhance the experience for users of assistive technology, such as a screen reader."
+  },
+  "lighthouse-core/config/default-config.js | a11yNamesLabelsGroupTitle": {
+    "message": "Names and labels"
+  },
+  "lighthouse-core/config/default-config.js | a11yNavigationGroupDescription": {
+    "message": "These are opportunities to improve keyboard navigation in your application."
+  },
+  "lighthouse-core/config/default-config.js | a11yNavigationGroupTitle": {
+    "message": "Navigation"
+  },
+  "lighthouse-core/config/default-config.js | a11yTablesListsVideoGroupDescription": {
+    "message": "These are opportunities to improve the experience of reading tabular or list data using assistive technology, such as a screen reader."
+  },
+  "lighthouse-core/config/default-config.js | a11yTablesListsVideoGroupTitle": {
+    "message": "Tables and lists"
+  },
+  "lighthouse-core/config/default-config.js | bestPracticesCategoryTitle": {
+    "message": "Best Practices"
+  },
+  "lighthouse-core/config/default-config.js | budgetsGroupDescription": {
+    "message": "Performance budgets set standards for the performance of your site."
+  },
+  "lighthouse-core/config/default-config.js | budgetsGroupTitle": {
+    "message": "Budgets"
+  },
+  "lighthouse-core/config/default-config.js | diagnosticsGroupDescription": {
+    "message": "More information about the performance of your application. These numbers don't [directly affect](https://github.com/GoogleChrome/lighthouse/blob/d2ec9ffbb21de9ad1a0f86ed24575eda32c796f0/docs/scoring.md#how-are-the-scores-weighted) the performance score."
+  },
+  "lighthouse-core/config/default-config.js | diagnosticsGroupTitle": {
+    "message": "Diagnostics"
+  },
+  "lighthouse-core/config/default-config.js | firstPaintImprovementsGroupDescription": {
+    "message": "The most critical aspect of performance is how quickly pixels are rendered onscreen. Key metrics: First Contentful Paint, First Meaningful Paint"
+  },
+  "lighthouse-core/config/default-config.js | firstPaintImprovementsGroupTitle": {
+    "message": "First Paint Improvements"
+  },
+  "lighthouse-core/config/default-config.js | loadOpportunitiesGroupDescription": {
+    "message": "These suggestions can help your page load faster. They don't [directly affect](https://github.com/GoogleChrome/lighthouse/blob/d2ec9ffbb21de9ad1a0f86ed24575eda32c796f0/docs/scoring.md#how-are-the-scores-weighted) the performance score."
+  },
+  "lighthouse-core/config/default-config.js | loadOpportunitiesGroupTitle": {
+    "message": "Opportunities"
+  },
+  "lighthouse-core/config/default-config.js | metricGroupTitle": {
+    "message": "Metrics"
+  },
+  "lighthouse-core/config/default-config.js | overallImprovementsGroupDescription": {
+    "message": "Enhance the overall loading experience, so the page is responsive and ready to use as soon as possible. Key metrics: Time to Interactive, Speed Index"
+  },
+  "lighthouse-core/config/default-config.js | overallImprovementsGroupTitle": {
+    "message": "Overall Improvements"
+  },
+  "lighthouse-core/config/default-config.js | performanceCategoryTitle": {
+    "message": "Performance"
+  },
+  "lighthouse-core/config/default-config.js | pwaCategoryDescription": {
+    "message": "These checks validate the aspects of a progressive web app. [Learn more](https://developers.google.com/web/progressive-web-apps/checklist)."
+  },
+  "lighthouse-core/config/default-config.js | pwaCategoryManualDescription": {
+    "message": "These checks are required by the baseline [PWA checklist](https://developers.google.com/web/progressive-web-apps/checklist) but are not automatically checked by Lighthouse. They do not affect your score but it's important that you verify them manually."
+  },
+  "lighthouse-core/config/default-config.js | pwaCategoryTitle": {
+    "message": "progressive web app"
+  },
+  "lighthouse-core/config/default-config.js | pwaFastReliableGroupTitle": {
+    "message": "Fast and reliable"
+  },
+  "lighthouse-core/config/default-config.js | pwaInstallableGroupTitle": {
+    "message": "Installable"
+  },
+  "lighthouse-core/config/default-config.js | pwaOptimizedGroupTitle": {
+    "message": "PWA Optimised"
+  },
+  "lighthouse-core/config/default-config.js | seoCategoryDescription": {
+    "message": "These checks ensure that your page is optimised for search engine results ranking. There are additional factors that Lighthouse does not check that may affect your search ranking. [Learn more](https://support.google.com/webmasters/answer/35769)."
+  },
+  "lighthouse-core/config/default-config.js | seoCategoryManualDescription": {
+    "message": "Run these additional validators on your site to check additional SEO best practices."
+  },
+  "lighthouse-core/config/default-config.js | seoCategoryTitle": {
+    "message": "SEO"
+  },
+  "lighthouse-core/config/default-config.js | seoContentGroupDescription": {
+    "message": "Format your HTML in a way that enables crawlers to better understand your app’s content."
+  },
+  "lighthouse-core/config/default-config.js | seoContentGroupTitle": {
+    "message": "Content Best Practices"
+  },
+  "lighthouse-core/config/default-config.js | seoCrawlingGroupDescription": {
+    "message": "To appear in search results, crawlers need access to your app."
+  },
+  "lighthouse-core/config/default-config.js | seoCrawlingGroupTitle": {
+    "message": "Crawling and Indexing"
+  },
+  "lighthouse-core/config/default-config.js | seoMobileGroupDescription": {
+    "message": "Make sure that your pages are mobile friendly so users don’t have to pinch or zoom in order to read the content pages. [Learn more](https://developers.google.com/search/mobile-sites/)."
+  },
+  "lighthouse-core/config/default-config.js | seoMobileGroupTitle": {
+    "message": "Mobile friendly"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnCacheTTL": {
+    "message": "Cache TTL"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnLocation": {
+    "message": "Location"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnName": {
+    "message": "Name"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnRequests": {
+    "message": "Requests"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnResourceType": {
+    "message": "Resource type"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnSize": {
+    "message": "Size"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnTimeSpent": {
+    "message": "Time Spent"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnTransferSize": {
+    "message": "Transfer size"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnURL": {
+    "message": "URL"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnWastedBytes": {
+    "message": "Potential savings"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnWastedMs": {
+    "message": "Potential Savings"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | displayValueByteSavings": {
+    "message": "Potential savings of {wastedBytes, number, bytes} KB"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | displayValueMsSavings": {
+    "message": "Potential savings of {wastedMs, number, milliseconds} ms"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | documentResourceType": {
+    "message": "Document"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | fontResourceType": {
+    "message": "Font"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | imageResourceType": {
+    "message": "Image"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | mediaResourceType": {
+    "message": "Media"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | ms": {
+    "message": "{timeInMs, number, milliseconds} ms"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | otherResourceType": {
+    "message": "Other"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | scriptResourceType": {
+    "message": "Script"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | seconds": {
+    "message": "{timeInMs, number, seconds} s"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | stylesheetResourceType": {
+    "message": "Stylesheet"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | thirdPartyResourceType": {
+    "message": "Third-party"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | totalResourceType": {
+    "message": "Total"
+  },
+  "lighthouse-core/lib/lh-error.js | badTraceRecording": {
+    "message": "Something went wrong with recording the trace over your page load. Please run Lighthouse again. ({errorCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | criTimeout": {
+    "message": "Timeout waiting for initial Debugger Protocol connection."
+  },
+  "lighthouse-core/lib/lh-error.js | didntCollectScreenshots": {
+    "message": "Chrome didn't collect any screenshots during the page load. Please make sure that there is content visible on the page, and then try re-running Lighthouse. ({errorCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | dnsFailure": {
+    "message": "DNS servers could not resolve the provided domain."
+  },
+  "lighthouse-core/lib/lh-error.js | erroredRequiredArtifact": {
+    "message": "Required {artifactName} gatherer encountered an error: {errorMessage}"
+  },
+  "lighthouse-core/lib/lh-error.js | internalChromeError": {
+    "message": "An internal Chrome error occurred. Please restart Chrome and try re-running Lighthouse."
+  },
+  "lighthouse-core/lib/lh-error.js | missingRequiredArtifact": {
+    "message": "Required {artifactName} gatherer did not run."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailed": {
+    "message": "Lighthouse was unable to reliably load the page that you requested. Make sure that you are testing the correct URL and that the server is properly responding to all requests."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedHung": {
+    "message": "Lighthouse was unable to reliably load the URL that you requested because the page stopped responding."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedInsecure": {
+    "message": "The URL you have provided does not have a valid security certificate. {securityMessages}"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedInterstitial": {
+    "message": "Chrome prevented page load with an interstitial. Make sure that you are testing the correct URL and that the server is properly responding to all requests."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedWithDetails": {
+    "message": "Lighthouse was unable to reliably load the page that you requested. Make sure that you are testing the correct URL and that the server is properly responding to all requests. (Details: {errorDetails})"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedWithStatusCode": {
+    "message": "Lighthouse was unable to reliably load the page that you requested. Make sure that you are testing the correct URL and that the server is properly responding to all requests. (Status code: {statusCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadTookTooLong": {
+    "message": "Your page took too long to load. Please follow the opportunities in the report to reduce your page load time, and then try re-running Lighthouse. ({errorCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | protocolTimeout": {
+    "message": "Waiting for DevTools protocol response has exceeded the allotted time. (Method: {protocolMethod})"
+  },
+  "lighthouse-core/lib/lh-error.js | requestContentTimeout": {
+    "message": "Fetching resource content has exceeded the allotted time"
+  },
+  "lighthouse-core/lib/lh-error.js | urlInvalid": {
+    "message": "The URL that you have provided appears to be invalid."
+  },
+  "lighthouse-core/report/html/renderer/util.js | auditGroupExpandTooltip": {
+    "message": "Show audits"
+  },
+  "lighthouse-core/report/html/renderer/util.js | crcInitialNavigation": {
+    "message": "Initial Navigation"
+  },
+  "lighthouse-core/report/html/renderer/util.js | crcLongestDurationLabel": {
+    "message": "Maximum critical path latency:"
+  },
+  "lighthouse-core/report/html/renderer/util.js | errorLabel": {
+    "message": "Error!"
+  },
+  "lighthouse-core/report/html/renderer/util.js | errorMissingAuditInfo": {
+    "message": "Report error: no audit information"
+  },
+  "lighthouse-core/report/html/renderer/util.js | labDataTitle": {
+    "message": "Lab Data"
+  },
+  "lighthouse-core/report/html/renderer/util.js | lsPerformanceCategoryDescription": {
+    "message": "[Lighthouse](https://developers.google.com/web/tools/lighthouse/) analysis of the current page on an emulated mobile network. Values are estimated and may vary."
+  },
+  "lighthouse-core/report/html/renderer/util.js | manualAuditsGroupTitle": {
+    "message": "Additional items to manually check"
+  },
+  "lighthouse-core/report/html/renderer/util.js | notApplicableAuditsGroupTitle": {
+    "message": "Not applicable"
+  },
+  "lighthouse-core/report/html/renderer/util.js | opportunityResourceColumnLabel": {
+    "message": "Opportunity"
+  },
+  "lighthouse-core/report/html/renderer/util.js | opportunitySavingsColumnLabel": {
+    "message": "Estimated Savings"
+  },
+  "lighthouse-core/report/html/renderer/util.js | passedAuditsGroupTitle": {
+    "message": "Passed audits"
+  },
+  "lighthouse-core/report/html/renderer/util.js | snippetCollapseButtonLabel": {
+    "message": "Collapse snippet"
+  },
+  "lighthouse-core/report/html/renderer/util.js | snippetExpandButtonLabel": {
+    "message": "Expand snippet"
+  },
+  "lighthouse-core/report/html/renderer/util.js | thirdPartyResourcesLabel": {
+    "message": "Show 3rd-party resources"
+  },
+  "lighthouse-core/report/html/renderer/util.js | toplevelWarningsMessage": {
+    "message": "There were issues affecting this run of Lighthouse:"
+  },
+  "lighthouse-core/report/html/renderer/util.js | varianceDisclaimer": {
+    "message": "Values are estimated and may vary. The performance score is [based only on these metrics](https://github.com/GoogleChrome/lighthouse/blob/d2ec9ffbb21de9ad1a0f86ed24575eda32c796f0/docs/scoring.md#how-are-the-scores-weighted)."
+  },
+  "lighthouse-core/report/html/renderer/util.js | warningAuditsGroupTitle": {
+    "message": "Passed audits but with warnings"
+  },
+  "lighthouse-core/report/html/renderer/util.js | warningHeader": {
+    "message": "Warnings: "
+  },
+  "stack-packs/packs/wordpress.js | efficient_animated_content": {
+    "message": "Consider uploading your GIF to a service which will make it available to embed as an HTML5 video."
+  },
+  "stack-packs/packs/wordpress.js | offscreen_images": {
+    "message": "Install a [lazy load WordPress plug-in](https://wordpress.org/plugins/search/lazy+load/) that provides the ability to defer any offscreen images, or switch to a theme that provides that functionality. Also consider using [the AMP plug-in](https://wordpress.org/plugins/amp/)."
+  },
+  "stack-packs/packs/wordpress.js | render_blocking_resources": {
+    "message": "There are a number of WordPress plug-ins that can help you [inline critical assets](https://wordpress.org/plugins/search/critical+css/) or [defer less important resources](https://wordpress.org/plugins/search/defer+css+javascript/). Beware that optimisations provided by these plug-ins may break features of your theme or plug-ins, so you will likely need to make code changes."
+  },
+  "stack-packs/packs/wordpress.js | time_to_first_byte": {
+    "message": "Themes, plug-ins and server specifications all contribute to server response time. Consider finding a more optimised theme, carefully selecting an optimisation plug-in, and/or upgrading your server."
+  },
+  "stack-packs/packs/wordpress.js | total_byte_weight": {
+    "message": "Consider showing excerpts in your post lists (e.g. via the more tag), reducing the number of posts shown on a given page, breaking your long posts into multiple pages, or using a plug-in to lazy-load comments."
+  },
+  "stack-packs/packs/wordpress.js | unminified_css": {
+    "message": "A number of [WordPress plug-ins](https://wordpress.org/plugins/search/minify+css/) can speed up your site by concatenating, minifying and compressing your styles. You may also want to use a build process to do this minification up-front if possible."
+  },
+  "stack-packs/packs/wordpress.js | unminified_javascript": {
+    "message": "A number of [WordPress plug-ins](https://wordpress.org/plugins/search/minify+javascript/) can speed up your site by concatenating, minifying and compressing your scripts. You may also want to use a build process to do this minification up front if possible."
+  },
+  "stack-packs/packs/wordpress.js | unused_css_rules": {
+    "message": "Consider reducing, or switching, the number of [WordPress plug-ins](https://wordpress.org/plugins/) loading unused CSS in your page. To identify plug-ins that are adding extraneous CSS, try running [code coverage](https://developers.google.com/web/updates/2017/04/devtools-release-notes#coverage) in Chrome DevTools. You can identify the theme/plug-in responsible from the URL of the stylesheet. Look out for plug-ins that have many stylesheets in the list which have a lot of red in code coverage. A plug-in should only enqueue a stylesheet if it is actually used on the page."
+  },
+  "stack-packs/packs/wordpress.js | unused_javascript": {
+    "message": "Consider reducing, or switching, the number of [WordPress plug-ins](https://wordpress.org/plugins/) loading unused JavaScript in your page. To identify plug-ins that are adding extraneous JS, try running [code coverage](https://developers.google.com/web/updates/2017/04/devtools-release-notes#coverage) in Chrome DevTools. You can identify the theme/plug-in responsible from the URL of the script. Look out for plug-ins that have many scripts in the list which have a lot of red in code coverage. A plug-in should only enqueue a script if it is actually used on the page."
+  },
+  "stack-packs/packs/wordpress.js | uses_long_cache_ttl": {
+    "message": "Read about [browser caching in WordPress](https://codex.wordpress.org/WordPress_Optimization#Browser_Caching)."
+  },
+  "stack-packs/packs/wordpress.js | uses_optimized_images": {
+    "message": "Consider using an [image optimisation WordPress plug-in](https://wordpress.org/plugins/search/optimize+images/) that compresses your images while retaining quality."
+  },
+  "stack-packs/packs/wordpress.js | uses_responsive_images": {
+    "message": "Upload images directly through the [media library](https://codex.wordpress.org/Media_Library_Screen) to ensure that the required image sizes are available, and then insert them from the media library or use the image widget to ensure that the optimal image sizes are used (including those for the responsive breakpoints). Avoid using `Full Size` images unless the dimensions are adequate for their usage. [Learn more](https://codex.wordpress.org/Inserting_Images_into_Posts_and_Pages#Image_Size)."
+  },
+  "stack-packs/packs/wordpress.js | uses_text_compression": {
+    "message": "You can enable text compression in your web server configuration."
+  },
+  "stack-packs/packs/wordpress.js | uses_webp_images": {
+    "message": "Consider using a [plug-in](https://wordpress.org/plugins/search/convert+webp/) or service that will automatically convert your uploaded images to the optimal formats."
+  }
+}
diff --git a/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/en-US.json b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/en-US.json
new file mode 100644
index 0000000..eabd53c0
--- /dev/null
+++ b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/en-US.json
@@ -0,0 +1,1541 @@
+{
+  "lighthouse-core/audits/accessibility/accesskeys.js | description": {
+    "message": "Access keys let users quickly focus a part of the page. For proper navigation, each access key must be unique. [Learn more](https://web.dev/accesskeys/)."
+  },
+  "lighthouse-core/audits/accessibility/accesskeys.js | failureTitle": {
+    "message": "`[accesskey]` values are not unique"
+  },
+  "lighthouse-core/audits/accessibility/accesskeys.js | title": {
+    "message": "`[accesskey]` values are unique"
+  },
+  "lighthouse-core/audits/accessibility/aria-allowed-attr.js | description": {
+    "message": "Each ARIA `role` supports a specific subset of `aria-*` attributes. Mismatching these invalidates the `aria-*` attributes. [Learn more](https://web.dev/aria-allowed-attr/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-allowed-attr.js | failureTitle": {
+    "message": "`[aria-*]` attributes do not match their roles"
+  },
+  "lighthouse-core/audits/accessibility/aria-allowed-attr.js | title": {
+    "message": "`[aria-*]` attributes match their roles"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-attr.js | description": {
+    "message": "Some ARIA roles have required attributes that describe the state of the element to screen readers. [Learn more](https://web.dev/aria-required-attr/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-required-attr.js | failureTitle": {
+    "message": "`[role]`s do not have all required `[aria-*]` attributes"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-attr.js | title": {
+    "message": "`[role]`s have all required `[aria-*]` attributes"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-children.js | description": {
+    "message": "Some ARIA parent roles must contain specific child roles to perform their intended accessibility functions. [Learn more](https://web.dev/aria-required-children/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-required-children.js | failureTitle": {
+    "message": "Elements with an ARIA `[role]` that require children to contain a specific `[role]` are missing some or all of those required children."
+  },
+  "lighthouse-core/audits/accessibility/aria-required-children.js | title": {
+    "message": "Elements with an ARIA `[role]` that require children to contain a specific `[role]` have all required children."
+  },
+  "lighthouse-core/audits/accessibility/aria-required-parent.js | description": {
+    "message": "Some ARIA child roles must be contained by specific parent roles to properly perform their intended accessibility functions. [Learn more](https://web.dev/aria-required-parent/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-required-parent.js | failureTitle": {
+    "message": "`[role]`s are not contained by their required parent element"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-parent.js | title": {
+    "message": "`[role]`s are contained by their required parent element"
+  },
+  "lighthouse-core/audits/accessibility/aria-roles.js | description": {
+    "message": "ARIA roles must have valid values in order to perform their intended accessibility functions. [Learn more](https://web.dev/aria-roles/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-roles.js | failureTitle": {
+    "message": "`[role]` values are not valid"
+  },
+  "lighthouse-core/audits/accessibility/aria-roles.js | title": {
+    "message": "`[role]` values are valid"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr-value.js | description": {
+    "message": "Assistive technologies, like screen readers, can't interpret ARIA attributes with invalid values. [Learn more](https://web.dev/aria-valid-attr-value/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr-value.js | failureTitle": {
+    "message": "`[aria-*]` attributes do not have valid values"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr-value.js | title": {
+    "message": "`[aria-*]` attributes have valid values"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr.js | description": {
+    "message": "Assistive technologies, like screen readers, can't interpret ARIA attributes with invalid names. [Learn more](https://web.dev/aria-valid-attr/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr.js | failureTitle": {
+    "message": "`[aria-*]` attributes are not valid or misspelled"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr.js | title": {
+    "message": "`[aria-*]` attributes are valid and not misspelled"
+  },
+  "lighthouse-core/audits/accessibility/audio-caption.js | description": {
+    "message": "Captions make audio elements usable for deaf or hearing-impaired users, providing critical information such as who is talking, what they're saying, and other non-speech information. [Learn more](https://web.dev/audio-caption/)."
+  },
+  "lighthouse-core/audits/accessibility/audio-caption.js | failureTitle": {
+    "message": "`<audio>` elements are missing a `<track>` element with `[kind=\"captions\"]`."
+  },
+  "lighthouse-core/audits/accessibility/audio-caption.js | title": {
+    "message": "`<audio>` elements contain a `<track>` element with `[kind=\"captions\"]`"
+  },
+  "lighthouse-core/audits/accessibility/axe-audit.js | failingElementsHeader": {
+    "message": "Failing Elements"
+  },
+  "lighthouse-core/audits/accessibility/button-name.js | description": {
+    "message": "When a button doesn't have an accessible name, screen readers announce it as \"button\", making it unusable for users who rely on screen readers. [Learn more](https://web.dev/button-name/)."
+  },
+  "lighthouse-core/audits/accessibility/button-name.js | failureTitle": {
+    "message": "Buttons do not have an accessible name"
+  },
+  "lighthouse-core/audits/accessibility/button-name.js | title": {
+    "message": "Buttons have an accessible name"
+  },
+  "lighthouse-core/audits/accessibility/bypass.js | description": {
+    "message": "Adding ways to bypass repetitive content lets keyboard users navigate the page more efficiently. [Learn more](https://web.dev/bypass/)."
+  },
+  "lighthouse-core/audits/accessibility/bypass.js | failureTitle": {
+    "message": "The page does not contain a heading, skip link, or landmark region"
+  },
+  "lighthouse-core/audits/accessibility/bypass.js | title": {
+    "message": "The page contains a heading, skip link, or landmark region"
+  },
+  "lighthouse-core/audits/accessibility/color-contrast.js | description": {
+    "message": "Low-contrast text is difficult or impossible for many users to read. [Learn more](https://web.dev/color-contrast/)."
+  },
+  "lighthouse-core/audits/accessibility/color-contrast.js | failureTitle": {
+    "message": "Background and foreground colors do not have a sufficient contrast ratio."
+  },
+  "lighthouse-core/audits/accessibility/color-contrast.js | title": {
+    "message": "Background and foreground colors have a sufficient contrast ratio"
+  },
+  "lighthouse-core/audits/accessibility/definition-list.js | description": {
+    "message": "When definition lists are not properly marked up, screen readers may produce confusing or inaccurate output. [Learn more](https://web.dev/definition-list/)."
+  },
+  "lighthouse-core/audits/accessibility/definition-list.js | failureTitle": {
+    "message": "`<dl>`'s do not contain only properly-ordered `<dt>` and `<dd>` groups, `<script>` or `<template>` elements."
+  },
+  "lighthouse-core/audits/accessibility/definition-list.js | title": {
+    "message": "`<dl>`'s contain only properly-ordered `<dt>` and `<dd>` groups, `<script>` or `<template>` elements."
+  },
+  "lighthouse-core/audits/accessibility/dlitem.js | description": {
+    "message": "Definition list items (`<dt>` and `<dd>`) must be wrapped in a parent `<dl>` element to ensure that screen readers can properly announce them. [Learn more](https://web.dev/dlitem/)."
+  },
+  "lighthouse-core/audits/accessibility/dlitem.js | failureTitle": {
+    "message": "Definition list items are not wrapped in `<dl>` elements"
+  },
+  "lighthouse-core/audits/accessibility/dlitem.js | title": {
+    "message": "Definition list items are wrapped in `<dl>` elements"
+  },
+  "lighthouse-core/audits/accessibility/document-title.js | description": {
+    "message": "The title gives screen reader users an overview of the page, and search engine users rely on it heavily to determine if a page is relevant to their search. [Learn more](https://web.dev/document-title/)."
+  },
+  "lighthouse-core/audits/accessibility/document-title.js | failureTitle": {
+    "message": "Document doesn't have a `<title>` element"
+  },
+  "lighthouse-core/audits/accessibility/document-title.js | title": {
+    "message": "Document has a `<title>` element"
+  },
+  "lighthouse-core/audits/accessibility/duplicate-id.js | description": {
+    "message": "The value of an id attribute must be unique to prevent other instances from being overlooked by assistive technologies. [Learn more](https://web.dev/duplicate-id/)."
+  },
+  "lighthouse-core/audits/accessibility/duplicate-id.js | failureTitle": {
+    "message": "`[id]` attributes on the page are not unique"
+  },
+  "lighthouse-core/audits/accessibility/duplicate-id.js | title": {
+    "message": "`[id]` attributes on the page are unique"
+  },
+  "lighthouse-core/audits/accessibility/frame-title.js | description": {
+    "message": "Screen reader users rely on frame titles to describe the contents of frames. [Learn more](https://web.dev/frame-title/)."
+  },
+  "lighthouse-core/audits/accessibility/frame-title.js | failureTitle": {
+    "message": "`<frame>` or `<iframe>` elements do not have a title"
+  },
+  "lighthouse-core/audits/accessibility/frame-title.js | title": {
+    "message": "`<frame>` or `<iframe>` elements have a title"
+  },
+  "lighthouse-core/audits/accessibility/html-has-lang.js | description": {
+    "message": "If a page doesn't specify a lang attribute, a screen reader assumes that the page is in the default language that the user chose when setting up the screen reader. If the page isn't actually in the default language, then the screen reader might not announce the page's text correctly. [Learn more](https://web.dev/html-has-lang/)."
+  },
+  "lighthouse-core/audits/accessibility/html-has-lang.js | failureTitle": {
+    "message": "`<html>` element does not have a `[lang]` attribute"
+  },
+  "lighthouse-core/audits/accessibility/html-has-lang.js | title": {
+    "message": "`<html>` element has a `[lang]` attribute"
+  },
+  "lighthouse-core/audits/accessibility/html-lang-valid.js | description": {
+    "message": "Specifying a valid [BCP 47 language](https://www.w3.org/International/questions/qa-choosing-language-tags#question) helps screen readers announce text properly. [Learn more](https://web.dev/html-lang-valid/)."
+  },
+  "lighthouse-core/audits/accessibility/html-lang-valid.js | failureTitle": {
+    "message": "`<html>` element does not have a valid value for its `[lang]` attribute."
+  },
+  "lighthouse-core/audits/accessibility/html-lang-valid.js | title": {
+    "message": "`<html>` element has a valid value for its `[lang]` attribute"
+  },
+  "lighthouse-core/audits/accessibility/image-alt.js | description": {
+    "message": "Informative elements should aim for short, descriptive alternate text. Decorative elements can be ignored with an empty alt attribute. [Learn more](https://web.dev/image-alt/)."
+  },
+  "lighthouse-core/audits/accessibility/image-alt.js | failureTitle": {
+    "message": "Image elements do not have `[alt]` attributes"
+  },
+  "lighthouse-core/audits/accessibility/image-alt.js | title": {
+    "message": "Image elements have `[alt]` attributes"
+  },
+  "lighthouse-core/audits/accessibility/input-image-alt.js | description": {
+    "message": "When an image is being used as an `<input>` button, providing alternative text can help screen reader users understand the purpose of the button. [Learn more](https://web.dev/input-image-alt/)."
+  },
+  "lighthouse-core/audits/accessibility/input-image-alt.js | failureTitle": {
+    "message": "`<input type=\"image\">` elements do not have `[alt]` text"
+  },
+  "lighthouse-core/audits/accessibility/input-image-alt.js | title": {
+    "message": "`<input type=\"image\">` elements have `[alt]` text"
+  },
+  "lighthouse-core/audits/accessibility/label.js | description": {
+    "message": "Labels ensure that form controls are announced properly by assistive technologies, like screen readers. [Learn more](https://web.dev/label/)."
+  },
+  "lighthouse-core/audits/accessibility/label.js | failureTitle": {
+    "message": "Form elements do not have associated labels"
+  },
+  "lighthouse-core/audits/accessibility/label.js | title": {
+    "message": "Form elements have associated labels"
+  },
+  "lighthouse-core/audits/accessibility/layout-table.js | description": {
+    "message": "A table being used for layout purposes should not include data elements, such as the th or caption elements or the summary attribute, because this can create a confusing experience for screen reader users. [Learn more](https://web.dev/layout-table/)."
+  },
+  "lighthouse-core/audits/accessibility/layout-table.js | failureTitle": {
+    "message": "Presentational `<table>` elements do not avoid using `<th>`, `<caption>` or the `[summary]` attribute."
+  },
+  "lighthouse-core/audits/accessibility/layout-table.js | title": {
+    "message": "Presentational `<table>` elements avoid using `<th>`, `<caption>` or the `[summary]` attribute."
+  },
+  "lighthouse-core/audits/accessibility/link-name.js | description": {
+    "message": "Link text (and alternate text for images, when used as links) that is discernible, unique, and focusable improves the navigation experience for screen reader users. [Learn more](https://web.dev/link-name/)."
+  },
+  "lighthouse-core/audits/accessibility/link-name.js | failureTitle": {
+    "message": "Links do not have a discernible name"
+  },
+  "lighthouse-core/audits/accessibility/link-name.js | title": {
+    "message": "Links have a discernible name"
+  },
+  "lighthouse-core/audits/accessibility/list.js | description": {
+    "message": "Screen readers have a specific way of announcing lists. Ensuring proper list structure aids screen reader output. [Learn more](https://web.dev/list/)."
+  },
+  "lighthouse-core/audits/accessibility/list.js | failureTitle": {
+    "message": "Lists do not contain only `<li>` elements and script supporting elements (`<script>` and `<template>`)."
+  },
+  "lighthouse-core/audits/accessibility/list.js | title": {
+    "message": "Lists contain only `<li>` elements and script supporting elements (`<script>` and `<template>`)."
+  },
+  "lighthouse-core/audits/accessibility/listitem.js | description": {
+    "message": "Screen readers require list items (`<li>`) to be contained within a parent `<ul>` or `<ol>` to be announced properly. [Learn more](https://web.dev/listitem/)."
+  },
+  "lighthouse-core/audits/accessibility/listitem.js | failureTitle": {
+    "message": "List items (`<li>`) are not contained within `<ul>` or `<ol>` parent elements."
+  },
+  "lighthouse-core/audits/accessibility/listitem.js | title": {
+    "message": "List items (`<li>`) are contained within `<ul>` or `<ol>` parent elements"
+  },
+  "lighthouse-core/audits/accessibility/meta-refresh.js | description": {
+    "message": "Users do not expect a page to refresh automatically, and doing so will move focus back to the top of the page. This may create a frustrating or confusing experience. [Learn more](https://web.dev/meta-refresh/)."
+  },
+  "lighthouse-core/audits/accessibility/meta-refresh.js | failureTitle": {
+    "message": "The document uses `<meta http-equiv=\"refresh\">`"
+  },
+  "lighthouse-core/audits/accessibility/meta-refresh.js | title": {
+    "message": "The document does not use `<meta http-equiv=\"refresh\">`"
+  },
+  "lighthouse-core/audits/accessibility/meta-viewport.js | description": {
+    "message": "Disabling zooming is problematic for users with low vision who rely on screen magnification to properly see the contents of a web page. [Learn more](https://web.dev/meta-viewport/)."
+  },
+  "lighthouse-core/audits/accessibility/meta-viewport.js | failureTitle": {
+    "message": "`[user-scalable=\"no\"]` is used in the `<meta name=\"viewport\">` element or the `[maximum-scale]` attribute is less than 5."
+  },
+  "lighthouse-core/audits/accessibility/meta-viewport.js | title": {
+    "message": "`[user-scalable=\"no\"]` is not used in the `<meta name=\"viewport\">` element and the `[maximum-scale]` attribute is not less than 5."
+  },
+  "lighthouse-core/audits/accessibility/object-alt.js | description": {
+    "message": "Screen readers cannot translate non-text content. Adding alt text to `<object>` elements helps screen readers convey meaning to users. [Learn more](https://web.dev/object-alt/)."
+  },
+  "lighthouse-core/audits/accessibility/object-alt.js | failureTitle": {
+    "message": "`<object>` elements do not have `[alt]` text"
+  },
+  "lighthouse-core/audits/accessibility/object-alt.js | title": {
+    "message": "`<object>` elements have `[alt]` text"
+  },
+  "lighthouse-core/audits/accessibility/tabindex.js | description": {
+    "message": "A value greater than 0 implies an explicit navigation ordering. Although technically valid, this often creates frustrating experiences for users who rely on assistive technologies. [Learn more](https://web.dev/tabindex/)."
+  },
+  "lighthouse-core/audits/accessibility/tabindex.js | failureTitle": {
+    "message": "Some elements have a `[tabindex]` value greater than 0"
+  },
+  "lighthouse-core/audits/accessibility/tabindex.js | title": {
+    "message": "No element has a `[tabindex]` value greater than 0"
+  },
+  "lighthouse-core/audits/accessibility/td-headers-attr.js | description": {
+    "message": "Screen readers have features to make navigating tables easier. Ensuring `<td>` cells using the `[headers]` attribute only refer to other cells in the same table may improve the experience for screen reader users. [Learn more](https://web.dev/td-headers-attr/)."
+  },
+  "lighthouse-core/audits/accessibility/td-headers-attr.js | failureTitle": {
+    "message": "Cells in a `<table>` element that use the `[headers]` attribute refer to an element `id` not found within the same table."
+  },
+  "lighthouse-core/audits/accessibility/td-headers-attr.js | title": {
+    "message": "Cells in a `<table>` element that use the `[headers]` attribute refer to table cells within the same table."
+  },
+  "lighthouse-core/audits/accessibility/th-has-data-cells.js | description": {
+    "message": "Screen readers have features to make navigating tables easier. Ensuring table headers always refer to some set of cells may improve the experience for screen reader users. [Learn more](https://web.dev/th-has-data-cells/)."
+  },
+  "lighthouse-core/audits/accessibility/th-has-data-cells.js | failureTitle": {
+    "message": "`<th>` elements and elements with `[role=\"columnheader\"/\"rowheader\"]` do not have data cells they describe."
+  },
+  "lighthouse-core/audits/accessibility/th-has-data-cells.js | title": {
+    "message": "`<th>` elements and elements with `[role=\"columnheader\"/\"rowheader\"]` have data cells they describe."
+  },
+  "lighthouse-core/audits/accessibility/valid-lang.js | description": {
+    "message": "Specifying a valid [BCP 47 language](https://www.w3.org/International/questions/qa-choosing-language-tags#question) on elements helps ensure that text is pronounced correctly by a screen reader. [Learn more](https://web.dev/valid-lang/)."
+  },
+  "lighthouse-core/audits/accessibility/valid-lang.js | failureTitle": {
+    "message": "`[lang]` attributes do not have a valid value"
+  },
+  "lighthouse-core/audits/accessibility/valid-lang.js | title": {
+    "message": "`[lang]` attributes have a valid value"
+  },
+  "lighthouse-core/audits/accessibility/video-caption.js | description": {
+    "message": "When a video provides a caption it is easier for deaf and hearing impaired users to access its information. [Learn more](https://web.dev/video-caption/)."
+  },
+  "lighthouse-core/audits/accessibility/video-caption.js | failureTitle": {
+    "message": "`<video>` elements do not contain a `<track>` element with `[kind=\"captions\"]`."
+  },
+  "lighthouse-core/audits/accessibility/video-caption.js | title": {
+    "message": "`<video>` elements contain a `<track>` element with `[kind=\"captions\"]`"
+  },
+  "lighthouse-core/audits/accessibility/video-description.js | description": {
+    "message": "Audio descriptions provide relevant information for videos that dialogue cannot, such as facial expressions and scenes. [Learn more](https://web.dev/video-description/)."
+  },
+  "lighthouse-core/audits/accessibility/video-description.js | failureTitle": {
+    "message": "`<video>` elements do not contain a `<track>` element with `[kind=\"description\"]`."
+  },
+  "lighthouse-core/audits/accessibility/video-description.js | title": {
+    "message": "`<video>` elements contain a `<track>` element with `[kind=\"description\"]`"
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | description": {
+    "message": "For ideal appearance on iOS when users add a progressive web app to the home screen, define an `apple-touch-icon`. It must point to a non-transparent 192px (or 180px) square PNG. [Learn More](https://developers.google.com/web/fundamentals/design-and-ux/browser-customization/)."
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | failureTitle": {
+    "message": "Does not provide a valid `apple-touch-icon`"
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | precomposedWarning": {
+    "message": "`apple-touch-icon-precomposed` is out of date; `apple-touch-icon` is preferred."
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | title": {
+    "message": "Provides a valid `apple-touch-icon`"
+  },
+  "lighthouse-core/audits/bootup-time.js | chromeExtensionsWarning": {
+    "message": "Chrome extensions negatively affected this page's load performance. Try auditing the page in incognito mode or from a Chrome profile without extensions."
+  },
+  "lighthouse-core/audits/bootup-time.js | columnScriptEval": {
+    "message": "Script Evaluation"
+  },
+  "lighthouse-core/audits/bootup-time.js | columnScriptParse": {
+    "message": "Script Parse"
+  },
+  "lighthouse-core/audits/bootup-time.js | columnTotal": {
+    "message": "Total CPU Time"
+  },
+  "lighthouse-core/audits/bootup-time.js | description": {
+    "message": "Consider reducing the time spent parsing, compiling, and executing JS. You may find delivering smaller JS payloads helps with this. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/bootup)."
+  },
+  "lighthouse-core/audits/bootup-time.js | failureTitle": {
+    "message": "Reduce JavaScript execution time"
+  },
+  "lighthouse-core/audits/bootup-time.js | title": {
+    "message": "JavaScript execution time"
+  },
+  "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | description": {
+    "message": "Large GIFs are inefficient for delivering animated content. Consider using MPEG4/WebM videos for animations and PNG/WebP for static images instead of GIF to save network bytes. [Learn more](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/replace-animated-gifs-with-video/)"
+  },
+  "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | title": {
+    "message": "Use video formats for animated content"
+  },
+  "lighthouse-core/audits/byte-efficiency/offscreen-images.js | description": {
+    "message": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/offscreen-images)."
+  },
+  "lighthouse-core/audits/byte-efficiency/offscreen-images.js | title": {
+    "message": "Defer offscreen images"
+  },
+  "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | description": {
+    "message": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/blocking-resources)."
+  },
+  "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | title": {
+    "message": "Eliminate render-blocking resources"
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | description": {
+    "message": "Large network payloads cost users real money and are highly correlated with long load times. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/network-payloads)."
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | displayValue": {
+    "message": "Total size was {totalBytes, number, bytes} KB"
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | failureTitle": {
+    "message": "Avoid enormous network payloads"
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | title": {
+    "message": "Avoids enormous network payloads"
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-css.js | description": {
+    "message": "Minifying CSS files can reduce network payload sizes. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/minify-css)."
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-css.js | title": {
+    "message": "Minify CSS"
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | description": {
+    "message": "Minifying JavaScript files can reduce payload sizes and script parse time. [Learn more](https://developers.google.com/speed/docs/insights/MinifyResources)."
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | title": {
+    "message": "Minify JavaScript"
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | description": {
+    "message": "Remove dead rules from stylesheets and defer the loading of CSS not used for above-the-fold content to reduce unnecessary bytes consumed by network activity. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/unused-css)."
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | title": {
+    "message": "Remove unused CSS"
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-javascript.js | description": {
+    "message": "Remove unused JavaScript to reduce bytes consumed by network activity."
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-javascript.js | title": {
+    "message": "Remove unused JavaScript"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | description": {
+    "message": "A long cache lifetime can speed up repeat visits to your page. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/cache-policy)."
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | displayValue": {
+    "message": "{itemCount, plural,\n    =1 {1 resource found}\n    other {# resources found}\n    }"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | failureTitle": {
+    "message": "Serve static assets with an efficient cache policy"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | title": {
+    "message": "Uses efficient cache policy on static assets"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | description": {
+    "message": "Optimized images load faster and consume less cellular data. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/optimize-images)."
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | title": {
+    "message": "Efficiently encode images"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | description": {
+    "message": "Serve images that are appropriately-sized to save cellular data and improve load time. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/oversized-images)."
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | title": {
+    "message": "Properly size images"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | description": {
+    "message": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/text-compression)."
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | title": {
+    "message": "Enable text compression"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | description": {
+    "message": "Image formats like JPEG 2000, JPEG XR, and WebP often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/webp)."
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | title": {
+    "message": "Serve images in next-gen formats"
+  },
+  "lighthouse-core/audits/content-width.js | description": {
+    "message": "If the width of your app's content doesn't match the width of the viewport, your app might not be optimized for mobile screens. [Learn more](https://web.dev/content-width)."
+  },
+  "lighthouse-core/audits/content-width.js | explanation": {
+    "message": "The viewport size of {innerWidth}px does not match the window size of {outerWidth}px."
+  },
+  "lighthouse-core/audits/content-width.js | failureTitle": {
+    "message": "Content is not sized correctly for the viewport"
+  },
+  "lighthouse-core/audits/content-width.js | title": {
+    "message": "Content is sized correctly for the viewport"
+  },
+  "lighthouse-core/audits/critical-request-chains.js | description": {
+    "message": "The Critical Request Chains below show you what resources are loaded with a high priority. Consider reducing the length of chains, reducing the download size of resources, or deferring the download of unnecessary resources to improve page load. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/critical-request-chains)."
+  },
+  "lighthouse-core/audits/critical-request-chains.js | displayValue": {
+    "message": "{itemCount, plural,\n    =1 {1 chain found}\n    other {# chains found}\n    }"
+  },
+  "lighthouse-core/audits/critical-request-chains.js | title": {
+    "message": "Minimize Critical Requests Depth"
+  },
+  "lighthouse-core/audits/deprecations.js | columnDeprecate": {
+    "message": "Deprecation / Warning"
+  },
+  "lighthouse-core/audits/deprecations.js | columnLine": {
+    "message": "Line"
+  },
+  "lighthouse-core/audits/deprecations.js | description": {
+    "message": "Deprecated APIs will eventually be removed from the browser. [Learn more](https://web.dev/deprecations)."
+  },
+  "lighthouse-core/audits/deprecations.js | displayValue": {
+    "message": "{itemCount, plural,\n    =1 {1 warning found}\n    other {# warnings found}\n    }"
+  },
+  "lighthouse-core/audits/deprecations.js | failureTitle": {
+    "message": "Uses deprecated APIs"
+  },
+  "lighthouse-core/audits/deprecations.js | title": {
+    "message": "Avoids deprecated APIs"
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | description": {
+    "message": "Application Cache is deprecated. [Learn more](https://web.dev/appcache-manifest)."
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | displayValue": {
+    "message": "Found \"{AppCacheManifest}\""
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | failureTitle": {
+    "message": "Uses Application Cache"
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | title": {
+    "message": "Avoids Application Cache"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | description": {
+    "message": "Specifying a doctype prevents the browser from switching to quirks-mode. [Learn more](https://web.dev/doctype)."
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationBadDoctype": {
+    "message": "Doctype name must be the lowercase string `html`"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationNoDoctype": {
+    "message": "Document must contain a doctype"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationPublicId": {
+    "message": "Expected publicId to be an empty string"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationSystemId": {
+    "message": "Expected systemId to be an empty string"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | failureTitle": {
+    "message": "Page lacks the HTML doctype, thus triggering quirks-mode"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | title": {
+    "message": "Page has the HTML doctype"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | columnElement": {
+    "message": "Element"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | columnStatistic": {
+    "message": "Statistic"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | columnValue": {
+    "message": "Value"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | description": {
+    "message": "Browser engineers recommend pages contain fewer than ~1,500 DOM elements. The sweet spot is a tree depth < 32 elements and fewer than 60 children/parent element. A large DOM can increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn more](https://web.dev/dom-size)."
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | displayValue": {
+    "message": "{itemCount, plural,\n    =1 {1 element}\n    other {# elements}\n    }"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | failureTitle": {
+    "message": "Avoid an excessive DOM size"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | statisticDOMDepth": {
+    "message": "Maximum DOM Depth"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | statisticDOMElements": {
+    "message": "Total DOM Elements"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | statisticDOMWidth": {
+    "message": "Maximum Child Elements"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | title": {
+    "message": "Avoids an excessive DOM size"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | columnRel": {
+    "message": "Rel"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | columnTarget": {
+    "message": "Target"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | description": {
+    "message": "Add `rel=\"noopener\"` or `rel=\"noreferrer\"` to any external links to improve performance and prevent security vulnerabilities. [Learn more](https://web.dev/external-anchors-use-rel-noopener)."
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | failureTitle": {
+    "message": "Links to cross-origin destinations are unsafe"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | title": {
+    "message": "Links to cross-origin destinations are safe"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | warning": {
+    "message": "Unable to determine the destination for anchor ({anchorHTML}). If not used as a hyperlink, consider removing target=_blank."
+  },
+  "lighthouse-core/audits/dobetterweb/geolocation-on-start.js | description": {
+    "message": "Users are mistrustful of or confused by sites that request their location without context. Consider tying the request to a user action instead. [Learn more](https://web.dev/geolocation-on-start)."
+  },
+  "lighthouse-core/audits/dobetterweb/geolocation-on-start.js | failureTitle": {
+    "message": "Requests the geolocation permission on page load"
+  },
+  "lighthouse-core/audits/dobetterweb/geolocation-on-start.js | title": {
+    "message": "Avoids requesting the geolocation permission on page load"
+  },
+  "lighthouse-core/audits/dobetterweb/js-libraries.js | columnVersion": {
+    "message": "Version"
+  },
+  "lighthouse-core/audits/dobetterweb/js-libraries.js | description": {
+    "message": "All front-end JavaScript libraries detected on the page. [Learn more](https://web.dev/js-libraries)."
+  },
+  "lighthouse-core/audits/dobetterweb/js-libraries.js | title": {
+    "message": "Detected JavaScript libraries"
+  },
+  "lighthouse-core/audits/dobetterweb/no-document-write.js | description": {
+    "message": "For users on slow connections, external scripts dynamically injected via `document.write()` can delay page load by tens of seconds. [Learn more](https://web.dev/no-document-write)."
+  },
+  "lighthouse-core/audits/dobetterweb/no-document-write.js | failureTitle": {
+    "message": "Uses `document.write()`"
+  },
+  "lighthouse-core/audits/dobetterweb/no-document-write.js | title": {
+    "message": "Avoids `document.write()`"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | columnSeverity": {
+    "message": "Highest Severity"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | columnVersion": {
+    "message": "Library Version"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | columnVuln": {
+    "message": "Vulnerability Count"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | description": {
+    "message": "Some third-party scripts may contain known security vulnerabilities that are easily identified and exploited by attackers. [Learn more](https://web.dev/no-vulnerable-libraries)."
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | displayValue": {
+    "message": "{itemCount, plural,\n    =1 {1 vulnerability detected}\n    other {# vulnerabilities detected}\n    }"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | failureTitle": {
+    "message": "Includes front-end JavaScript libraries with known security vulnerabilities"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | rowSeverityHigh": {
+    "message": "High"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | rowSeverityLow": {
+    "message": "Low"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | rowSeverityMedium": {
+    "message": "Medium"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | title": {
+    "message": "Avoids front-end JavaScript libraries with known security vulnerabilities"
+  },
+  "lighthouse-core/audits/dobetterweb/notification-on-start.js | description": {
+    "message": "Users are mistrustful of or confused by sites that request to send notifications without context. Consider tying the request to user gestures instead. [Learn more](https://web.dev/notification-on-start)."
+  },
+  "lighthouse-core/audits/dobetterweb/notification-on-start.js | failureTitle": {
+    "message": "Requests the notification permission on page load"
+  },
+  "lighthouse-core/audits/dobetterweb/notification-on-start.js | title": {
+    "message": "Avoids requesting the notification permission on page load"
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | columnFailingElem": {
+    "message": "Failing Elements"
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | description": {
+    "message": "Preventing password pasting undermines good security policy. [Learn more](https://web.dev/password-inputs-can-be-pasted-into)."
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | failureTitle": {
+    "message": "Prevents users to paste into password fields"
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | title": {
+    "message": "Allows users to paste into password fields"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | columnProtocol": {
+    "message": "Protocol"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | description": {
+    "message": "HTTP/2 offers many benefits over HTTP/1.1, including binary headers, multiplexing, and server push. [Learn more](https://web.dev/uses-http2)."
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | displayValue": {
+    "message": "{itemCount, plural,\n    =1 {1 request not served via HTTP/2}\n    other {# requests not served via HTTP/2}\n    }"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | failureTitle": {
+    "message": "Does not use HTTP/2 for all of its resources"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | title": {
+    "message": "Uses HTTP/2 for its own resources"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-passive-event-listeners.js | description": {
+    "message": "Consider marking your touch and wheel event listeners as `passive` to improve your page's scroll performance. [Learn more](https://web.dev/uses-passive-event-listeners)."
+  },
+  "lighthouse-core/audits/dobetterweb/uses-passive-event-listeners.js | failureTitle": {
+    "message": "Does not use passive listeners to improve scrolling performance"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-passive-event-listeners.js | title": {
+    "message": "Uses passive listeners to improve scrolling performance"
+  },
+  "lighthouse-core/audits/errors-in-console.js | columnDesc": {
+    "message": "Description"
+  },
+  "lighthouse-core/audits/errors-in-console.js | description": {
+    "message": "Errors logged to the console indicate unresolved problems. They can come from network request failures and other browser concerns. [Learn more](https://web.dev/errors-in-console)"
+  },
+  "lighthouse-core/audits/errors-in-console.js | failureTitle": {
+    "message": "Browser errors were logged to the console"
+  },
+  "lighthouse-core/audits/errors-in-console.js | title": {
+    "message": "No browser errors logged to the console"
+  },
+  "lighthouse-core/audits/font-display.js | description": {
+    "message": "Leverage the font-display CSS feature to ensure text is user-visible while webfonts are loading. [Learn more](https://developers.google.com/web/updates/2016/02/font-display)."
+  },
+  "lighthouse-core/audits/font-display.js | failureTitle": {
+    "message": "Ensure text remains visible during webfont load"
+  },
+  "lighthouse-core/audits/font-display.js | title": {
+    "message": "All text remains visible during webfont loads"
+  },
+  "lighthouse-core/audits/font-display.js | undeclaredFontURLWarning": {
+    "message": "Lighthouse was unable to automatically check the font-display value for the following URL: {fontURL}."
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | columnActual": {
+    "message": "Aspect Ratio (Actual)"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | columnDisplayed": {
+    "message": "Aspect Ratio (Displayed)"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | description": {
+    "message": "Image display dimensions should match natural aspect ratio. [Learn more](https://web.dev/image-aspect-ratio)."
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | failureTitle": {
+    "message": "Displays images with incorrect aspect ratio"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | title": {
+    "message": "Displays images with correct aspect ratio"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | warningCompute": {
+    "message": "Invalid image sizing information {url}"
+  },
+  "lighthouse-core/audits/installable-manifest.js | description": {
+    "message": "Browsers can proactively prompt users to add your app to their homescreen, which can lead to higher engagement. [Learn more](https://web.dev/installable-manifest)."
+  },
+  "lighthouse-core/audits/installable-manifest.js | failureTitle": {
+    "message": "Web app manifest does not meet the installability requirements"
+  },
+  "lighthouse-core/audits/installable-manifest.js | title": {
+    "message": "Web app manifest meets the installability requirements"
+  },
+  "lighthouse-core/audits/is-on-https.js | columnInsecureURL": {
+    "message": "Insecure URL"
+  },
+  "lighthouse-core/audits/is-on-https.js | description": {
+    "message": "All sites should be protected with HTTPS, even ones that don't handle sensitive data. HTTPS prevents intruders from tampering with or passively listening in on the communications between your app and your users, and is a prerequisite for HTTP/2 and many new web platform APIs. [Learn more](https://web.dev/is-on-https)."
+  },
+  "lighthouse-core/audits/is-on-https.js | displayValue": {
+    "message": "{itemCount, plural,\n    =1 {1 insecure request found}\n    other {# insecure requests found}\n    }"
+  },
+  "lighthouse-core/audits/is-on-https.js | failureTitle": {
+    "message": "Does not use HTTPS"
+  },
+  "lighthouse-core/audits/is-on-https.js | title": {
+    "message": "Uses HTTPS"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | description": {
+    "message": "A fast page load over a cellular network ensures a good mobile user experience. [Learn more](https://web.dev/load-fast-enough-for-pwa)."
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | displayValueText": {
+    "message": "Interactive at {timeInMs, number, seconds} s"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | displayValueTextWithOverride": {
+    "message": "Interactive on simulated mobile network at {timeInMs, number, seconds} s"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | explanationLoadSlow": {
+    "message": "Your page loads too slowly and is not interactive within 10 seconds. Look at the opportunities and diagnostics in the \"Performance\" section to learn how to improve."
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | failureTitle": {
+    "message": "Page load is not fast enough on mobile networks"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | title": {
+    "message": "Page load is fast enough on mobile networks"
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | columnCategory": {
+    "message": "Category"
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | description": {
+    "message": "Consider reducing the time spent parsing, compiling and executing JS. You may find delivering smaller JS payloads helps with this."
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | failureTitle": {
+    "message": "Minimize main-thread work"
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | title": {
+    "message": "Minimizes main-thread work"
+  },
+  "lighthouse-core/audits/manual/pwa-cross-browser.js | description": {
+    "message": "To reach the most number of users, sites should work across every major browser. [Learn more](https://web.dev/pwa-cross-browser)."
+  },
+  "lighthouse-core/audits/manual/pwa-cross-browser.js | title": {
+    "message": "Site works cross-browser"
+  },
+  "lighthouse-core/audits/manual/pwa-each-page-has-url.js | description": {
+    "message": "Ensure individual pages are deep linkable via URL and that URLs are unique for the purpose of shareability on social media. [Learn more](https://web.dev/pwa-each-page-has-url)."
+  },
+  "lighthouse-core/audits/manual/pwa-each-page-has-url.js | title": {
+    "message": "Each page has a URL"
+  },
+  "lighthouse-core/audits/manual/pwa-page-transitions.js | description": {
+    "message": "Transitions should feel snappy as you tap around, even on a slow network. This experience is key to a user's perception of performance. [Learn more](https://web.dev/pwa-page-transitions)."
+  },
+  "lighthouse-core/audits/manual/pwa-page-transitions.js | title": {
+    "message": "Page transitions don't feel like they block on the network"
+  },
+  "lighthouse-core/audits/metrics/estimated-input-latency.js | description": {
+    "message": "Estimated Input Latency is an estimate of how long your app takes to respond to user input, in milliseconds, during the busiest 5s window of page load. If your latency is higher than 50 ms, users may perceive your app as laggy. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/estimated-input-latency)."
+  },
+  "lighthouse-core/audits/metrics/estimated-input-latency.js | title": {
+    "message": "Estimated Input Latency"
+  },
+  "lighthouse-core/audits/metrics/first-contentful-paint.js | description": {
+    "message": "First Contentful Paint marks the time at which the first text or image is painted. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/first-contentful-paint)."
+  },
+  "lighthouse-core/audits/metrics/first-contentful-paint.js | title": {
+    "message": "First Contentful Paint"
+  },
+  "lighthouse-core/audits/metrics/first-cpu-idle.js | description": {
+    "message": "First CPU Idle marks the first time at which the page's main thread is quiet enough to handle input. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/first-interactive)."
+  },
+  "lighthouse-core/audits/metrics/first-cpu-idle.js | title": {
+    "message": "First CPU Idle"
+  },
+  "lighthouse-core/audits/metrics/first-meaningful-paint.js | description": {
+    "message": "First Meaningful Paint measures when the primary content of a page is visible. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/first-meaningful-paint)."
+  },
+  "lighthouse-core/audits/metrics/first-meaningful-paint.js | title": {
+    "message": "First Meaningful Paint"
+  },
+  "lighthouse-core/audits/metrics/interactive.js | description": {
+    "message": "Time to interactive is the amount of time it takes for the page to become fully interactive. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/consistently-interactive)."
+  },
+  "lighthouse-core/audits/metrics/interactive.js | title": {
+    "message": "Time to Interactive"
+  },
+  "lighthouse-core/audits/metrics/max-potential-fid.js | description": {
+    "message": "The maximum potential First Input Delay that your users could experience is the duration, in milliseconds, of the longest task. [Learn more](https://developers.google.com/web/updates/2018/05/first-input-delay)."
+  },
+  "lighthouse-core/audits/metrics/max-potential-fid.js | title": {
+    "message": "Max Potential First Input Delay"
+  },
+  "lighthouse-core/audits/metrics/speed-index.js | description": {
+    "message": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/speed-index)."
+  },
+  "lighthouse-core/audits/metrics/speed-index.js | title": {
+    "message": "Speed Index"
+  },
+  "lighthouse-core/audits/metrics/total-blocking-time.js | description": {
+    "message": "Sum of all time periods between FCP and Time to Interactive, when task length exceeded 50ms, expressed in milliseconds."
+  },
+  "lighthouse-core/audits/metrics/total-blocking-time.js | title": {
+    "message": "Total Blocking Time"
+  },
+  "lighthouse-core/audits/network-rtt.js | description": {
+    "message": "Network round trip times (RTT) have a large impact on performance. If the RTT to an origin is high, it's an indication that servers closer to the user could improve performance. [Learn more](https://hpbn.co/primer-on-latency-and-bandwidth/)."
+  },
+  "lighthouse-core/audits/network-rtt.js | title": {
+    "message": "Network Round Trip Times"
+  },
+  "lighthouse-core/audits/network-server-latency.js | description": {
+    "message": "Server latencies can impact web performance. If the server latency of an origin is high, it's an indication the server is overloaded or has poor backend performance. [Learn more](https://hpbn.co/primer-on-web-performance/#analyzing-the-resource-waterfall)."
+  },
+  "lighthouse-core/audits/network-server-latency.js | title": {
+    "message": "Server Backend Latencies"
+  },
+  "lighthouse-core/audits/offline-start-url.js | description": {
+    "message": "A service worker enables your web app to be reliable in unpredictable network conditions. [Learn more](https://web.dev/offline-start-url)."
+  },
+  "lighthouse-core/audits/offline-start-url.js | failureTitle": {
+    "message": "`start_url` does not respond with a 200 when offline"
+  },
+  "lighthouse-core/audits/offline-start-url.js | title": {
+    "message": "`start_url` responds with a 200 when offline"
+  },
+  "lighthouse-core/audits/offline-start-url.js | warningCantStart": {
+    "message": "Lighthouse couldn't read the `start_url` from the manifest. As a result, the `start_url` was assumed to be the document's URL. Error message: '{manifestWarning}'."
+  },
+  "lighthouse-core/audits/performance-budget.js | columnOverBudget": {
+    "message": "Over Budget"
+  },
+  "lighthouse-core/audits/performance-budget.js | description": {
+    "message": "Keep the quantity and size of network requests under the targets set by the provided performance budget. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/budgets)."
+  },
+  "lighthouse-core/audits/performance-budget.js | requestCountOverBudget": {
+    "message": "{count, plural,\n    =1 {1 request}\n    other {# requests}\n   }"
+  },
+  "lighthouse-core/audits/performance-budget.js | title": {
+    "message": "Performance budget"
+  },
+  "lighthouse-core/audits/redirects-http.js | description": {
+    "message": "If you've already set up HTTPS, make sure that you redirect all HTTP traffic to HTTPS in order to enable secure web features for all your users. [Learn more](https://web.dev/redirects-http)."
+  },
+  "lighthouse-core/audits/redirects-http.js | failureTitle": {
+    "message": "Does not redirect HTTP traffic to HTTPS"
+  },
+  "lighthouse-core/audits/redirects-http.js | title": {
+    "message": "Redirects HTTP traffic to HTTPS"
+  },
+  "lighthouse-core/audits/redirects.js | description": {
+    "message": "Redirects introduce additional delays before the page can be loaded. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/redirects)."
+  },
+  "lighthouse-core/audits/redirects.js | title": {
+    "message": "Avoid multiple page redirects"
+  },
+  "lighthouse-core/audits/resource-summary.js | description": {
+    "message": "To set budgets for the quantity and size of page resources, add a budget.json file. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/budgets)."
+  },
+  "lighthouse-core/audits/resource-summary.js | displayValue": {
+    "message": "{requestCount, plural, =1 {1 request • {byteCount, number, bytes} KB} other {# requests • {byteCount, number, bytes} KB}}"
+  },
+  "lighthouse-core/audits/resource-summary.js | title": {
+    "message": "Keep request counts low and transfer sizes small"
+  },
+  "lighthouse-core/audits/seo/canonical.js | description": {
+    "message": "Canonical links suggest which URL to show in search results. [Learn more](https://web.dev/canonical)."
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationConflict": {
+    "message": "Multiple conflicting URLs ({urlList})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationDifferentDomain": {
+    "message": "Points to a different domain ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationInvalid": {
+    "message": "Invalid URL ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationPointsElsewhere": {
+    "message": "Points to another `hreflang` location ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationRelative": {
+    "message": "Relative URL ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationRoot": {
+    "message": "Points to the domain's root URL (the homepage), instead of an equivalent page of content"
+  },
+  "lighthouse-core/audits/seo/canonical.js | failureTitle": {
+    "message": "Document does not have a valid `rel=canonical`"
+  },
+  "lighthouse-core/audits/seo/canonical.js | title": {
+    "message": "Document has a valid `rel=canonical`"
+  },
+  "lighthouse-core/audits/seo/font-size.js | description": {
+    "message": "Font sizes less than 12px are too small to be legible and require mobile visitors to “pinch to zoom” in order to read. Strive to have >60% of page text ≥12px. [Learn more](https://web.dev/font-size)."
+  },
+  "lighthouse-core/audits/seo/font-size.js | displayValue": {
+    "message": "{decimalProportion, number, extendedPercent} legible text"
+  },
+  "lighthouse-core/audits/seo/font-size.js | explanationViewport": {
+    "message": "Text is illegible because there's no viewport meta tag optimized for mobile screens."
+  },
+  "lighthouse-core/audits/seo/font-size.js | explanationWithDisclaimer": {
+    "message": "{decimalProportion, number, extendedPercent} of text is too small (based on {decimalProportionVisited, number, extendedPercent} sample)."
+  },
+  "lighthouse-core/audits/seo/font-size.js | failureTitle": {
+    "message": "Document doesn't use legible font sizes"
+  },
+  "lighthouse-core/audits/seo/font-size.js | title": {
+    "message": "Document uses legible font sizes"
+  },
+  "lighthouse-core/audits/seo/hreflang.js | description": {
+    "message": "hreflang links tell search engines what version of a page they should list in search results for a given language or region. [Learn more](https://web.dev/hreflang)."
+  },
+  "lighthouse-core/audits/seo/hreflang.js | failureTitle": {
+    "message": "Document doesn't have a valid `hreflang`"
+  },
+  "lighthouse-core/audits/seo/hreflang.js | title": {
+    "message": "Document has a valid `hreflang`"
+  },
+  "lighthouse-core/audits/seo/http-status-code.js | description": {
+    "message": "Pages with unsuccessful HTTP status codes may not be indexed properly. [Learn more](https://web.dev/http-status-code)."
+  },
+  "lighthouse-core/audits/seo/http-status-code.js | failureTitle": {
+    "message": "Page has unsuccessful HTTP status code"
+  },
+  "lighthouse-core/audits/seo/http-status-code.js | title": {
+    "message": "Page has successful HTTP status code"
+  },
+  "lighthouse-core/audits/seo/is-crawlable.js | description": {
+    "message": "Search engines are unable to include your pages in search results if they don't have permission to crawl them. [Learn more](https://web.dev/is-crawable)."
+  },
+  "lighthouse-core/audits/seo/is-crawlable.js | failureTitle": {
+    "message": "Page is blocked from indexing"
+  },
+  "lighthouse-core/audits/seo/is-crawlable.js | title": {
+    "message": "Page isn’t blocked from indexing"
+  },
+  "lighthouse-core/audits/seo/link-text.js | description": {
+    "message": "Descriptive link text helps search engines understand your content. [Learn more](https://web.dev/link-text)."
+  },
+  "lighthouse-core/audits/seo/link-text.js | displayValue": {
+    "message": "{itemCount, plural,\n    =1 {1 link found}\n    other {# links found}\n    }"
+  },
+  "lighthouse-core/audits/seo/link-text.js | failureTitle": {
+    "message": "Links do not have descriptive text"
+  },
+  "lighthouse-core/audits/seo/link-text.js | title": {
+    "message": "Links have descriptive text"
+  },
+  "lighthouse-core/audits/seo/manual/structured-data.js | description": {
+    "message": "Run the [Structured Data Testing Tool](https://search.google.com/structured-data/testing-tool/) and the [Structured Data Linter](http://linter.structured-data.org/) to validate structured data. [Learn more](https://web.dev/structured-data)."
+  },
+  "lighthouse-core/audits/seo/manual/structured-data.js | title": {
+    "message": "Structured data is valid"
+  },
+  "lighthouse-core/audits/seo/meta-description.js | description": {
+    "message": "Meta descriptions may be included in search results to concisely summarize page content. [Learn more](https://web.dev/meta-description)."
+  },
+  "lighthouse-core/audits/seo/meta-description.js | explanation": {
+    "message": "Description text is empty."
+  },
+  "lighthouse-core/audits/seo/meta-description.js | failureTitle": {
+    "message": "Document does not have a meta description"
+  },
+  "lighthouse-core/audits/seo/meta-description.js | title": {
+    "message": "Document has a meta description"
+  },
+  "lighthouse-core/audits/seo/plugins.js | description": {
+    "message": "Search engines can't index plugin content, and many devices restrict plugins or don't support them. [Learn more](https://web.dev/plugins)."
+  },
+  "lighthouse-core/audits/seo/plugins.js | failureTitle": {
+    "message": "Document uses plugins"
+  },
+  "lighthouse-core/audits/seo/plugins.js | title": {
+    "message": "Document avoids plugins"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | description": {
+    "message": "If your robots.txt file is malformed, crawlers may not be able to understand how you want your website to be crawled or indexed. [Learn more](https://web.dev/robots-txt)."
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | displayValueHttpBadCode": {
+    "message": "Request for robots.txt returned HTTP status: {statusCode}"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | displayValueValidationError": {
+    "message": "{itemCount, plural,\n    =1 {1 error found}\n    other {# errors found}\n    }"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | explanation": {
+    "message": "Lighthouse was unable to download a robots.txt file"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | failureTitle": {
+    "message": "robots.txt is not valid"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | title": {
+    "message": "robots.txt is valid"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | description": {
+    "message": "Interactive elements like buttons and links should be large enough (48x48px), and have enough space around them, to be easy enough to tap without overlapping onto other elements. [Learn more](https://web.dev/tap-targets)."
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | displayValue": {
+    "message": "{decimalProportion, number, percent} appropriately sized tap targets"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | explanationViewportMetaNotOptimized": {
+    "message": "Tap targets are too small because there's no viewport meta tag optimized for mobile screens"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | failureTitle": {
+    "message": "Tap targets are not sized appropriately"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | overlappingTargetHeader": {
+    "message": "Overlapping Target"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | tapTargetHeader": {
+    "message": "Tap Target"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | title": {
+    "message": "Tap targets are sized appropriately"
+  },
+  "lighthouse-core/audits/service-worker.js | description": {
+    "message": "The service worker is the technology that enables your app to use many Progressive Web App features, such as offline, add to homescreen, and push notifications. [Learn more](https://web.dev/service-worker)."
+  },
+  "lighthouse-core/audits/service-worker.js | explanationBadManifest": {
+    "message": "This page is controlled by a service worker, however no `start_url` was found because manifest failed to parse as valid JSON"
+  },
+  "lighthouse-core/audits/service-worker.js | explanationBadStartUrl": {
+    "message": "This page is controlled by a service worker, however the `start_url` ({startUrl}) is not in the service worker's scope ({scopeUrl})"
+  },
+  "lighthouse-core/audits/service-worker.js | explanationNoManifest": {
+    "message": "This page is controlled by a service worker, however no `start_url` was found because no manifest was fetched."
+  },
+  "lighthouse-core/audits/service-worker.js | explanationOutOfScope": {
+    "message": "This origin has one or more service workers, however the page ({pageUrl}) is not in scope."
+  },
+  "lighthouse-core/audits/service-worker.js | failureTitle": {
+    "message": "Does not register a service worker that controls page and `start_url`"
+  },
+  "lighthouse-core/audits/service-worker.js | title": {
+    "message": "Registers a service worker that controls page and `start_url`"
+  },
+  "lighthouse-core/audits/splash-screen.js | description": {
+    "message": "A themed splash screen ensures a high-quality experience when users launch your app from their homescreens. [Learn more](https://web.dev/splash-screen)."
+  },
+  "lighthouse-core/audits/splash-screen.js | failureTitle": {
+    "message": "Is not configured for a custom splash screen"
+  },
+  "lighthouse-core/audits/splash-screen.js | title": {
+    "message": "Configured for a custom splash screen"
+  },
+  "lighthouse-core/audits/themed-omnibox.js | description": {
+    "message": "The browser address bar can be themed to match your site. [Learn more](https://web.dev/themed-omnibox)."
+  },
+  "lighthouse-core/audits/themed-omnibox.js | failureTitle": {
+    "message": "Does not set a theme color for the address bar."
+  },
+  "lighthouse-core/audits/themed-omnibox.js | title": {
+    "message": "Sets a theme color for the address bar."
+  },
+  "lighthouse-core/audits/third-party-summary.js | columnBlockingTime": {
+    "message": "Main-Thread Blocking Time"
+  },
+  "lighthouse-core/audits/third-party-summary.js | columnThirdParty": {
+    "message": "Third-Party"
+  },
+  "lighthouse-core/audits/third-party-summary.js | description": {
+    "message": "Third-party code can significantly impact load performance. Limit the number of redundant third-party providers and try to load third-party code after your page has primarily finished loading. [Learn more](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/loading-third-party-javascript/)."
+  },
+  "lighthouse-core/audits/third-party-summary.js | displayValue": {
+    "message": "Third-party code blocked the main thread for {timeInMs, number, milliseconds} ms"
+  },
+  "lighthouse-core/audits/third-party-summary.js | failureTitle": {
+    "message": "Reduce the impact of third-party code"
+  },
+  "lighthouse-core/audits/third-party-summary.js | title": {
+    "message": "Third-Party usage"
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | description": {
+    "message": "Time To First Byte identifies the time at which your server sends a response. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/ttfb)."
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | displayValue": {
+    "message": "Root document took {timeInMs, number, milliseconds} ms"
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | failureTitle": {
+    "message": "Reduce server response times (TTFB)"
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | title": {
+    "message": "Server response times are low (TTFB)"
+  },
+  "lighthouse-core/audits/user-timings.js | columnDuration": {
+    "message": "Duration"
+  },
+  "lighthouse-core/audits/user-timings.js | columnStartTime": {
+    "message": "Start Time"
+  },
+  "lighthouse-core/audits/user-timings.js | columnType": {
+    "message": "Type"
+  },
+  "lighthouse-core/audits/user-timings.js | description": {
+    "message": "Consider instrumenting your app with the User Timing API to measure your app's real-world performance during key user experiences. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/user-timing)."
+  },
+  "lighthouse-core/audits/user-timings.js | displayValue": {
+    "message": "{itemCount, plural,\n    =1 {1 user timing}\n    other {# user timings}\n    }"
+  },
+  "lighthouse-core/audits/user-timings.js | title": {
+    "message": "User Timing marks and measures"
+  },
+  "lighthouse-core/audits/uses-rel-preconnect.js | crossoriginWarning": {
+    "message": "A preconnect <link> was found for \"{securityOrigin}\" but was not used by the browser. Check that you are using the `crossorigin` attribute properly."
+  },
+  "lighthouse-core/audits/uses-rel-preconnect.js | description": {
+    "message": "Consider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn more](https://developers.google.com/web/fundamentals/performance/resource-prioritization#preconnect)."
+  },
+  "lighthouse-core/audits/uses-rel-preconnect.js | title": {
+    "message": "Preconnect to required origins"
+  },
+  "lighthouse-core/audits/uses-rel-preload.js | crossoriginWarning": {
+    "message": "A preload <link> was found for \"{preloadURL}\" but was not used by the browser. Check that you are using the `crossorigin` attribute properly."
+  },
+  "lighthouse-core/audits/uses-rel-preload.js | description": {
+    "message": "Consider using `<link rel=preload>` to prioritize fetching resources that are currently requested later in page load. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/preload)."
+  },
+  "lighthouse-core/audits/uses-rel-preload.js | title": {
+    "message": "Preload key requests"
+  },
+  "lighthouse-core/audits/viewport.js | description": {
+    "message": "Add a `<meta name=\"viewport\">` tag to optimize your app for mobile screens. [Learn more](https://web.dev/viewport)."
+  },
+  "lighthouse-core/audits/viewport.js | explanationNoTag": {
+    "message": "No `<meta name=\"viewport\">` tag found"
+  },
+  "lighthouse-core/audits/viewport.js | failureTitle": {
+    "message": "Does not have a `<meta name=\"viewport\">` tag with `width` or `initial-scale`"
+  },
+  "lighthouse-core/audits/viewport.js | title": {
+    "message": "Has a `<meta name=\"viewport\">` tag with `width` or `initial-scale`"
+  },
+  "lighthouse-core/audits/without-javascript.js | description": {
+    "message": "Your app should display some content when JavaScript is disabled, even if it's just a warning to the user that JavaScript is required to use the app. [Learn more](https://web.dev/without-javascript)."
+  },
+  "lighthouse-core/audits/without-javascript.js | explanation": {
+    "message": "The page body should render some content if its scripts are not available."
+  },
+  "lighthouse-core/audits/without-javascript.js | failureTitle": {
+    "message": "Does not provide fallback content when JavaScript is not available"
+  },
+  "lighthouse-core/audits/without-javascript.js | title": {
+    "message": "Contains some content when JavaScript is not available"
+  },
+  "lighthouse-core/audits/works-offline.js | description": {
+    "message": "If you're building a Progressive Web App, consider using a service worker so that your app can work offline. [Learn more](https://web.dev/works-offline)."
+  },
+  "lighthouse-core/audits/works-offline.js | failureTitle": {
+    "message": "Current page does not respond with a 200 when offline"
+  },
+  "lighthouse-core/audits/works-offline.js | title": {
+    "message": "Current page responds with a 200 when offline"
+  },
+  "lighthouse-core/audits/works-offline.js | warningNoLoad": {
+    "message": "The page may not be loading offline because your test URL ({requested}) was redirected to \"{final}\". Try testing the second URL directly."
+  },
+  "lighthouse-core/config/default-config.js | a11yAriaGroupDescription": {
+    "message": "These are opportunities to improve the usage of ARIA in your application which may enhance the experience for users of assistive technology, like a screen reader."
+  },
+  "lighthouse-core/config/default-config.js | a11yAriaGroupTitle": {
+    "message": "ARIA"
+  },
+  "lighthouse-core/config/default-config.js | a11yAudioVideoGroupDescription": {
+    "message": "These are opportunities to provide alternative content for audio and video. This may improve the experience for users with hearing or vision impairments."
+  },
+  "lighthouse-core/config/default-config.js | a11yAudioVideoGroupTitle": {
+    "message": "Audio and video"
+  },
+  "lighthouse-core/config/default-config.js | a11yBestPracticesGroupDescription": {
+    "message": "These items highlight common accessibility best practices."
+  },
+  "lighthouse-core/config/default-config.js | a11yBestPracticesGroupTitle": {
+    "message": "Best practices"
+  },
+  "lighthouse-core/config/default-config.js | a11yCategoryDescription": {
+    "message": "These checks highlight opportunities to [improve the accessibility of your web app](https://developers.google.com/web/fundamentals/accessibility). Only a subset of accessibility issues can be automatically detected so manual testing is also encouraged."
+  },
+  "lighthouse-core/config/default-config.js | a11yCategoryManualDescription": {
+    "message": "These items address areas which an automated testing tool cannot cover. Learn more in our guide on [conducting an accessibility review](https://developers.google.com/web/fundamentals/accessibility/how-to-review)."
+  },
+  "lighthouse-core/config/default-config.js | a11yCategoryTitle": {
+    "message": "Accessibility"
+  },
+  "lighthouse-core/config/default-config.js | a11yColorContrastGroupDescription": {
+    "message": "These are opportunities to improve the legibility of your content."
+  },
+  "lighthouse-core/config/default-config.js | a11yColorContrastGroupTitle": {
+    "message": "Contrast"
+  },
+  "lighthouse-core/config/default-config.js | a11yLanguageGroupDescription": {
+    "message": "These are opportunities to improve the interpretation of your content by users in different locales."
+  },
+  "lighthouse-core/config/default-config.js | a11yLanguageGroupTitle": {
+    "message": "Internationalization and localization"
+  },
+  "lighthouse-core/config/default-config.js | a11yNamesLabelsGroupDescription": {
+    "message": "These are opportunities to improve the semantics of the controls in your application. This may enhance the experience for users of assistive technology, like a screen reader."
+  },
+  "lighthouse-core/config/default-config.js | a11yNamesLabelsGroupTitle": {
+    "message": "Names and labels"
+  },
+  "lighthouse-core/config/default-config.js | a11yNavigationGroupDescription": {
+    "message": "These are opportunities to improve keyboard navigation in your application."
+  },
+  "lighthouse-core/config/default-config.js | a11yNavigationGroupTitle": {
+    "message": "Navigation"
+  },
+  "lighthouse-core/config/default-config.js | a11yTablesListsVideoGroupDescription": {
+    "message": "These are opportunities to to improve the experience of reading tabular or list data using assistive technology, like a screen reader."
+  },
+  "lighthouse-core/config/default-config.js | a11yTablesListsVideoGroupTitle": {
+    "message": "Tables and lists"
+  },
+  "lighthouse-core/config/default-config.js | bestPracticesCategoryTitle": {
+    "message": "Best Practices"
+  },
+  "lighthouse-core/config/default-config.js | budgetsGroupDescription": {
+    "message": "Performance budgets set standards for the performance of your site."
+  },
+  "lighthouse-core/config/default-config.js | budgetsGroupTitle": {
+    "message": "Budgets"
+  },
+  "lighthouse-core/config/default-config.js | diagnosticsGroupDescription": {
+    "message": "More information about the performance of your application. These numbers don't [directly affect](https://github.com/GoogleChrome/lighthouse/blob/d2ec9ffbb21de9ad1a0f86ed24575eda32c796f0/docs/scoring.md#how-are-the-scores-weighted) the Performance score."
+  },
+  "lighthouse-core/config/default-config.js | diagnosticsGroupTitle": {
+    "message": "Diagnostics"
+  },
+  "lighthouse-core/config/default-config.js | firstPaintImprovementsGroupDescription": {
+    "message": "The most critical aspect of performance is how quickly pixels are rendered onscreen. Key metrics: First Contentful Paint, First Meaningful Paint"
+  },
+  "lighthouse-core/config/default-config.js | firstPaintImprovementsGroupTitle": {
+    "message": "First Paint Improvements"
+  },
+  "lighthouse-core/config/default-config.js | loadOpportunitiesGroupDescription": {
+    "message": "These suggestions can help your page load faster. They don't [directly affect](https://github.com/GoogleChrome/lighthouse/blob/d2ec9ffbb21de9ad1a0f86ed24575eda32c796f0/docs/scoring.md#how-are-the-scores-weighted) the Performance score."
+  },
+  "lighthouse-core/config/default-config.js | loadOpportunitiesGroupTitle": {
+    "message": "Opportunities"
+  },
+  "lighthouse-core/config/default-config.js | metricGroupTitle": {
+    "message": "Metrics"
+  },
+  "lighthouse-core/config/default-config.js | overallImprovementsGroupDescription": {
+    "message": "Enhance the overall loading experience, so the page is responsive and ready to use as soon as possible. Key metrics: Time to Interactive, Speed Index"
+  },
+  "lighthouse-core/config/default-config.js | overallImprovementsGroupTitle": {
+    "message": "Overall Improvements"
+  },
+  "lighthouse-core/config/default-config.js | performanceCategoryTitle": {
+    "message": "Performance"
+  },
+  "lighthouse-core/config/default-config.js | pwaCategoryDescription": {
+    "message": "These checks validate the aspects of a Progressive Web App. [Learn more](https://developers.google.com/web/progressive-web-apps/checklist)."
+  },
+  "lighthouse-core/config/default-config.js | pwaCategoryManualDescription": {
+    "message": "These checks are required by the baseline [PWA Checklist](https://developers.google.com/web/progressive-web-apps/checklist) but are not automatically checked by Lighthouse. They do not affect your score but it's important that you verify them manually."
+  },
+  "lighthouse-core/config/default-config.js | pwaCategoryTitle": {
+    "message": "Progressive Web App"
+  },
+  "lighthouse-core/config/default-config.js | pwaFastReliableGroupTitle": {
+    "message": "Fast and reliable"
+  },
+  "lighthouse-core/config/default-config.js | pwaInstallableGroupTitle": {
+    "message": "Installable"
+  },
+  "lighthouse-core/config/default-config.js | pwaOptimizedGroupTitle": {
+    "message": "PWA Optimized"
+  },
+  "lighthouse-core/config/default-config.js | seoCategoryDescription": {
+    "message": "These checks ensure that your page is optimized for search engine results ranking. There are additional factors Lighthouse does not check that may affect your search ranking. [Learn more](https://support.google.com/webmasters/answer/35769)."
+  },
+  "lighthouse-core/config/default-config.js | seoCategoryManualDescription": {
+    "message": "Run these additional validators on your site to check additional SEO best practices."
+  },
+  "lighthouse-core/config/default-config.js | seoCategoryTitle": {
+    "message": "SEO"
+  },
+  "lighthouse-core/config/default-config.js | seoContentGroupDescription": {
+    "message": "Format your HTML in a way that enables crawlers to better understand your app’s content."
+  },
+  "lighthouse-core/config/default-config.js | seoContentGroupTitle": {
+    "message": "Content Best Practices"
+  },
+  "lighthouse-core/config/default-config.js | seoCrawlingGroupDescription": {
+    "message": "To appear in search results, crawlers need access to your app."
+  },
+  "lighthouse-core/config/default-config.js | seoCrawlingGroupTitle": {
+    "message": "Crawling and Indexing"
+  },
+  "lighthouse-core/config/default-config.js | seoMobileGroupDescription": {
+    "message": "Make sure your pages are mobile friendly so users don’t have to pinch or zoom in order to read the content pages. [Learn more](https://developers.google.com/search/mobile-sites/)."
+  },
+  "lighthouse-core/config/default-config.js | seoMobileGroupTitle": {
+    "message": "Mobile Friendly"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnCacheTTL": {
+    "message": "Cache TTL"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnLocation": {
+    "message": "Location"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnName": {
+    "message": "Name"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnRequests": {
+    "message": "Requests"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnResourceType": {
+    "message": "Resource Type"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnSize": {
+    "message": "Size"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnTimeSpent": {
+    "message": "Time Spent"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnTransferSize": {
+    "message": "Transfer Size"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnURL": {
+    "message": "URL"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnWastedBytes": {
+    "message": "Potential Savings"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnWastedMs": {
+    "message": "Potential Savings"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | displayValueByteSavings": {
+    "message": "Potential savings of {wastedBytes, number, bytes} KB"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | displayValueMsSavings": {
+    "message": "Potential savings of {wastedMs, number, milliseconds} ms"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | documentResourceType": {
+    "message": "Document"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | fontResourceType": {
+    "message": "Font"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | imageResourceType": {
+    "message": "Image"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | mediaResourceType": {
+    "message": "Media"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | ms": {
+    "message": "{timeInMs, number, milliseconds} ms"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | otherResourceType": {
+    "message": "Other"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | scriptResourceType": {
+    "message": "Script"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | seconds": {
+    "message": "{timeInMs, number, seconds} s"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | stylesheetResourceType": {
+    "message": "Stylesheet"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | thirdPartyResourceType": {
+    "message": "Third-party"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | totalResourceType": {
+    "message": "Total"
+  },
+  "lighthouse-core/lib/lh-error.js | badTraceRecording": {
+    "message": "Something went wrong with recording the trace over your page load. Please run Lighthouse again. ({errorCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | criTimeout": {
+    "message": "Timeout waiting for initial Debugger Protocol connection."
+  },
+  "lighthouse-core/lib/lh-error.js | didntCollectScreenshots": {
+    "message": "Chrome didn't collect any screenshots during the page load. Please make sure there is content visible on the page, and then try re-running Lighthouse. ({errorCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | dnsFailure": {
+    "message": "DNS servers could not resolve the provided domain."
+  },
+  "lighthouse-core/lib/lh-error.js | erroredRequiredArtifact": {
+    "message": "Required {artifactName} gatherer encountered an error: {errorMessage}"
+  },
+  "lighthouse-core/lib/lh-error.js | internalChromeError": {
+    "message": "An internal Chrome error occurred. Please restart Chrome and try re-running Lighthouse."
+  },
+  "lighthouse-core/lib/lh-error.js | missingRequiredArtifact": {
+    "message": "Required {artifactName} gatherer did not run."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailed": {
+    "message": "Lighthouse was unable to reliably load the page you requested. Make sure you are testing the correct URL and that the server is properly responding to all requests."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedHung": {
+    "message": "Lighthouse was unable to reliably load the URL you requested because the page stopped responding."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedInsecure": {
+    "message": "The URL you have provided does not have a valid security certificate. {securityMessages}"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedInterstitial": {
+    "message": "Chrome prevented page load with an interstitial. Make sure you are testing the correct URL and that the server is properly responding to all requests."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedWithDetails": {
+    "message": "Lighthouse was unable to reliably load the page you requested. Make sure you are testing the correct URL and that the server is properly responding to all requests. (Details: {errorDetails})"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedWithStatusCode": {
+    "message": "Lighthouse was unable to reliably load the page you requested. Make sure you are testing the correct URL and that the server is properly responding to all requests. (Status code: {statusCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadTookTooLong": {
+    "message": "Your page took too long to load. Please follow the opportunities in the report to reduce your page load time, and then try re-running Lighthouse. ({errorCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | protocolTimeout": {
+    "message": "Waiting for DevTools protocol response has exceeded the allotted time. (Method: {protocolMethod})"
+  },
+  "lighthouse-core/lib/lh-error.js | requestContentTimeout": {
+    "message": "Fetching resource content has exceeded the allotted time"
+  },
+  "lighthouse-core/lib/lh-error.js | urlInvalid": {
+    "message": "The URL you have provided appears to be invalid."
+  },
+  "lighthouse-core/report/html/renderer/util.js | auditGroupExpandTooltip": {
+    "message": "Show audits"
+  },
+  "lighthouse-core/report/html/renderer/util.js | crcInitialNavigation": {
+    "message": "Initial Navigation"
+  },
+  "lighthouse-core/report/html/renderer/util.js | crcLongestDurationLabel": {
+    "message": "Maximum critical path latency:"
+  },
+  "lighthouse-core/report/html/renderer/util.js | errorLabel": {
+    "message": "Error!"
+  },
+  "lighthouse-core/report/html/renderer/util.js | errorMissingAuditInfo": {
+    "message": "Report error: no audit information"
+  },
+  "lighthouse-core/report/html/renderer/util.js | labDataTitle": {
+    "message": "Lab Data"
+  },
+  "lighthouse-core/report/html/renderer/util.js | lsPerformanceCategoryDescription": {
+    "message": "[Lighthouse](https://developers.google.com/web/tools/lighthouse/) analysis of the current page on an emulated mobile network. Values are estimated and may vary."
+  },
+  "lighthouse-core/report/html/renderer/util.js | manualAuditsGroupTitle": {
+    "message": "Additional items to manually check"
+  },
+  "lighthouse-core/report/html/renderer/util.js | notApplicableAuditsGroupTitle": {
+    "message": "Not applicable"
+  },
+  "lighthouse-core/report/html/renderer/util.js | opportunityResourceColumnLabel": {
+    "message": "Opportunity"
+  },
+  "lighthouse-core/report/html/renderer/util.js | opportunitySavingsColumnLabel": {
+    "message": "Estimated Savings"
+  },
+  "lighthouse-core/report/html/renderer/util.js | passedAuditsGroupTitle": {
+    "message": "Passed audits"
+  },
+  "lighthouse-core/report/html/renderer/util.js | snippetCollapseButtonLabel": {
+    "message": "Collapse snippet"
+  },
+  "lighthouse-core/report/html/renderer/util.js | snippetExpandButtonLabel": {
+    "message": "Expand snippet"
+  },
+  "lighthouse-core/report/html/renderer/util.js | thirdPartyResourcesLabel": {
+    "message": "Show 3rd-party resources"
+  },
+  "lighthouse-core/report/html/renderer/util.js | toplevelWarningsMessage": {
+    "message": "There were issues affecting this run of Lighthouse:"
+  },
+  "lighthouse-core/report/html/renderer/util.js | varianceDisclaimer": {
+    "message": "Values are estimated and may vary. The performance score is [based only on these metrics](https://github.com/GoogleChrome/lighthouse/blob/d2ec9ffbb21de9ad1a0f86ed24575eda32c796f0/docs/scoring.md#how-are-the-scores-weighted)."
+  },
+  "lighthouse-core/report/html/renderer/util.js | warningAuditsGroupTitle": {
+    "message": "Passed audits but with warnings"
+  },
+  "lighthouse-core/report/html/renderer/util.js | warningHeader": {
+    "message": "Warnings: "
+  },
+  "stack-packs/packs/wordpress.js | efficient_animated_content": {
+    "message": "Consider uploading your GIF to a service which will make it available to embed as an HTML5 video."
+  },
+  "stack-packs/packs/wordpress.js | offscreen_images": {
+    "message": "Install a [lazy-load WordPress plugin](https://wordpress.org/plugins/search/lazy+load/) that provides the ability to defer any offscreen images, or switch to a theme that provides that functionality. Also consider using [the AMP plugin](https://wordpress.org/plugins/amp/)."
+  },
+  "stack-packs/packs/wordpress.js | render_blocking_resources": {
+    "message": "There are a number of WordPress plugins that can help you [inline critical assets](https://wordpress.org/plugins/search/critical+css/) or [defer less important resources](https://wordpress.org/plugins/search/defer+css+javascript/). Beware that optimizations provided by these plugins may break features of your theme or plugins, so you will likely need to make code changes."
+  },
+  "stack-packs/packs/wordpress.js | time_to_first_byte": {
+    "message": "Themes, plugins, and server specifications all contribute to server response time. Consider finding a more optimized theme, carefully selecting an optimization plugin, and/or upgrading your server."
+  },
+  "stack-packs/packs/wordpress.js | total_byte_weight": {
+    "message": "Consider showing excerpts in your post lists (e.g. via the more tag), reducing the number of posts shown on a given page, breaking your long posts into multiple pages, or using a plugin to lazy-load comments."
+  },
+  "stack-packs/packs/wordpress.js | unminified_css": {
+    "message": "A number of [WordPress plugins](https://wordpress.org/plugins/search/minify+css/) can speed up your site by concatenating, minifying, and compressing your styles. You may also want to use a build process to do this minification up-front if possible."
+  },
+  "stack-packs/packs/wordpress.js | unminified_javascript": {
+    "message": "A number of [WordPress plugins](https://wordpress.org/plugins/search/minify+javascript/) can speed up your site by concatenating, minifying, and compressing your scripts. You may also want to use a build process to do this minification up front if possible."
+  },
+  "stack-packs/packs/wordpress.js | unused_css_rules": {
+    "message": "Consider reducing, or switching, the number of [WordPress plugins](https://wordpress.org/plugins/) loading unused CSS in your page. To identify plugins that are adding extraneous CSS, try running [code coverage](https://developers.google.com/web/updates/2017/04/devtools-release-notes#coverage) in Chrome DevTools. You can identify the theme/plugin responsible from the URL of the stylesheet. Look out for plugins that have many stylesheets in the list which have a lot of red in code coverage. A plugin should only enqueue a stylesheet if it is actually used on the page."
+  },
+  "stack-packs/packs/wordpress.js | unused_javascript": {
+    "message": "Consider reducing, or switching, the number of [WordPress plugins](https://wordpress.org/plugins/) loading unused JavaScript in your page. To identify plugins that are adding extraneous JS, try running [code coverage](https://developers.google.com/web/updates/2017/04/devtools-release-notes#coverage) in Chrome DevTools. You can identify the theme/plugin responsible from the URL of the script. Look out for plugins that have many scripts in the list which have a lot of red in code coverage. A plugin should only enqueue a script if it is actually used on the page."
+  },
+  "stack-packs/packs/wordpress.js | uses_long_cache_ttl": {
+    "message": "Read about [Browser Caching in WordPress](https://codex.wordpress.org/WordPress_Optimization#Browser_Caching)."
+  },
+  "stack-packs/packs/wordpress.js | uses_optimized_images": {
+    "message": "Consider using an [image optimization WordPress plugin](https://wordpress.org/plugins/search/optimize+images/) that compresses your images while retaining quality."
+  },
+  "stack-packs/packs/wordpress.js | uses_responsive_images": {
+    "message": "Upload images directly through the [media library](https://codex.wordpress.org/Media_Library_Screen) to ensure that the required image sizes are available, and then insert them from the media library or use the image widget to ensure the optimal image sizes are used (including those for the responsive breakpoints). Avoid using `Full Size` images unless the dimensions are adequate for their usage. [Learn More](https://codex.wordpress.org/Inserting_Images_into_Posts_and_Pages#Image_Size)."
+  },
+  "stack-packs/packs/wordpress.js | uses_text_compression": {
+    "message": "You can enable text compression in your web server configuration."
+  },
+  "stack-packs/packs/wordpress.js | uses_webp_images": {
+    "message": "Consider using a [plugin](https://wordpress.org/plugins/search/convert+webp/) or service that will automatically convert your uploaded images to the optimal formats."
+  }
+}
diff --git a/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/en-XA.json b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/en-XA.json
new file mode 100644
index 0000000..8fc6f60
--- /dev/null
+++ b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/en-XA.json
@@ -0,0 +1,1541 @@
+{
+  "lighthouse-core/audits/accessibility/accesskeys.js | description": {
+    "message": "[Åççéšš ķéýš ļéţ ûšéŕš qûîçķļý ƒöçûš å þåŕţ öƒ ţĥé þåĝé. Föŕ þŕöþéŕ ñåvîĝåţîöñ, éåçĥ åççéšš ķéý mûšţ бé ûñîqûé. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://web.dev/accesskeys/)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen twenty]"
+  },
+  "lighthouse-core/audits/accessibility/accesskeys.js | failureTitle": {
+    "message": "[ᐅ`[accesskey]`ᐊ våļûéš åŕé ñöţ ûñîqûé one two three four five six]"
+  },
+  "lighthouse-core/audits/accessibility/accesskeys.js | title": {
+    "message": "[ᐅ`[accesskey]`ᐊ våļûéš åŕé ûñîqûé one two three four five]"
+  },
+  "lighthouse-core/audits/accessibility/aria-allowed-attr.js | description": {
+    "message": "[Éåçĥ ÅŔÎÅ ᐅ`role`ᐊ šûþþöŕţš å šþéçîƒîç šûбšéţ öƒ ᐅ`aria-*`ᐊ åţţŕîбûţéš. Mîšmåţçĥîñĝ ţĥéšé îñvåļîðåţéš ţĥé ᐅ`aria-*`ᐊ åţţŕîбûţéš. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://web.dev/aria-allowed-attr/)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen twenty]"
+  },
+  "lighthouse-core/audits/accessibility/aria-allowed-attr.js | failureTitle": {
+    "message": "[ᐅ`[aria-*]`ᐊ åţţŕîбûţéš ðö ñöţ måţçĥ ţĥéîŕ ŕöļéš one two three four five six seven eight]"
+  },
+  "lighthouse-core/audits/accessibility/aria-allowed-attr.js | title": {
+    "message": "[ᐅ`[aria-*]`ᐊ åţţŕîбûţéš måţçĥ ţĥéîŕ ŕöļéš one two three four five six seven]"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-attr.js | description": {
+    "message": "[Šömé ÅŔÎÅ ŕöļéš ĥåvé ŕéqûîŕéð åţţŕîбûţéš ţĥåţ ðéšçŕîбé ţĥé šţåţé öƒ ţĥé éļéméñţ ţö šçŕééñ ŕéåðéŕš. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://web.dev/aria-required-attr/)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen]"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-attr.js | failureTitle": {
+    "message": "[ᐅ`[role]`ᐊš ðö ñöţ ĥåvé åļļ ŕéqûîŕéð ᐅ`[aria-*]`ᐊ åţţŕîбûţéš one two three four five six seven eight nine]"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-attr.js | title": {
+    "message": "[ᐅ`[role]`ᐊš ĥåvé åļļ ŕéqûîŕéð ᐅ`[aria-*]`ᐊ åţţŕîбûţéš one two three four five six seven eight]"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-children.js | description": {
+    "message": "[Šömé ÅŔÎÅ þåŕéñţ ŕöļéš mûšţ çöñţåîñ šþéçîƒîç çĥîļð ŕöļéš ţö þéŕƒöŕm ţĥéîŕ îñţéñðéð åççéššîбîļîţý ƒûñçţîöñš. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://web.dev/aria-required-children/)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen]"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-children.js | failureTitle": {
+    "message": "[Éļéméñţš ŵîţĥ ᐅ`[role]`ᐊ ţĥåţ ŕéqûîŕé šþéçîƒîç çĥîļðŕéñ ᐅ`[role]`ᐊš, åŕé mîššîñĝ. one two three four five six seven eight nine ten eleven twelve thirteen]"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-children.js | title": {
+    "message": "[Éļéméñţš ŵîţĥ ᐅ`[role]`ᐊ ţĥåţ ŕéqûîŕé šþéçîƒîç çĥîļðŕéñ ᐅ`[role]`ᐊš, åŕé þŕéšéñţ one two three four five six seven eight nine ten eleven twelve thirteen]"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-parent.js | description": {
+    "message": "[Šömé ÅŔÎÅ çĥîļð ŕöļéš mûšţ бé çöñţåîñéð бý šþéçîƒîç þåŕéñţ ŕöļéš ţö þŕöþéŕļý þéŕƒöŕm ţĥéîŕ îñţéñðéð åççéššîбîļîţý ƒûñçţîöñš. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://web.dev/aria-required-parent/)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen twenty twentyone]"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-parent.js | failureTitle": {
+    "message": "[ᐅ`[role]`ᐊš åŕé ñöţ çöñţåîñéð бý ţĥéîŕ ŕéqûîŕéð þåŕéñţ éļéméñţ one two three four five six seven eight nine ten eleven]"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-parent.js | title": {
+    "message": "[ᐅ`[role]`ᐊš åŕé çöñţåîñéð бý ţĥéîŕ ŕéqûîŕéð þåŕéñţ éļéméñţ one two three four five six seven eight nine ten eleven]"
+  },
+  "lighthouse-core/audits/accessibility/aria-roles.js | description": {
+    "message": "[ÅŔÎÅ ŕöļéš mûšţ ĥåvé våļîð våļûéš îñ öŕðéŕ ţö þéŕƒöŕm ţĥéîŕ îñţéñðéð åççéššîбîļîţý ƒûñçţîöñš. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://web.dev/aria-roles/)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen]"
+  },
+  "lighthouse-core/audits/accessibility/aria-roles.js | failureTitle": {
+    "message": "[ᐅ`[role]`ᐊ våļûéš åŕé ñöţ våļîð one two three four five]"
+  },
+  "lighthouse-core/audits/accessibility/aria-roles.js | title": {
+    "message": "[ᐅ`[role]`ᐊ våļûéš åŕé våļîð one two three four five]"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr-value.js | description": {
+    "message": "[Åššîšţîvé ţéçĥñöļöĝîéš, ļîķé šçŕééñ ŕéåðéŕš, çåñ'ţ îñţéŕþŕéţ ÅŔÎÅ åţţŕîбûţéš ŵîţĥ îñvåļîð våļûéš. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://web.dev/aria-valid-attr-value/)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen]"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr-value.js | failureTitle": {
+    "message": "[ᐅ`[aria-*]`ᐊ åţţŕîбûţéš ðö ñöţ ĥåvé våļîð våļûéš one two three four five six seven eight]"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr-value.js | title": {
+    "message": "[ᐅ`[aria-*]`ᐊ åţţŕîбûţéš ĥåvé våļîð våļûéš one two three four five six seven]"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr.js | description": {
+    "message": "[Åššîšţîvé ţéçĥñöļöĝîéš, ļîķé šçŕééñ ŕéåðéŕš, çåñ'ţ îñţéŕþŕéţ ÅŔÎÅ åţţŕîбûţéš ŵîţĥ îñvåļîð ñåméš. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://web.dev/aria-valid-attr/)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen]"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr.js | failureTitle": {
+    "message": "[ᐅ`[aria-*]`ᐊ åţţŕîбûţéš åŕé ñöţ våļîð öŕ mîššþéļļéð one two three four five six seven eight nine]"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr.js | title": {
+    "message": "[ᐅ`[aria-*]`ᐊ åţţŕîбûţéš åŕé våļîð åñð ñöţ mîššþéļļéð one two three four five six seven eight nine]"
+  },
+  "lighthouse-core/audits/accessibility/audio-caption.js | description": {
+    "message": "[Çåþţîöñš måķé åûðîö éļéméñţš ûšåбļé ƒöŕ ðéåƒ öŕ ĥéåŕîñĝ-îmþåîŕéð ûšéŕš, þŕövîðîñĝ çŕîţîçåļ îñƒöŕmåţîöñ šûçĥ åš ŵĥö îš ţåļķîñĝ, ŵĥåţ ţĥéý'ŕé šåýîñĝ, åñð öţĥéŕ ñöñ-šþééçĥ îñƒöŕmåţîöñ. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://web.dev/audio-caption/)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen twenty twentyone twentytwo twentythree twentyfour twentyfive twentysix twentyseven]"
+  },
+  "lighthouse-core/audits/accessibility/audio-caption.js | failureTitle": {
+    "message": "[ᐅ`<audio>`ᐊ éļéméñţš åŕé mîššîñĝ å ᐅ`<track>`ᐊ éļéméñţ ŵîţĥ ᐅ`[kind=\"captions\"]`ᐊ. one two three four five six seven eight nine ten]"
+  },
+  "lighthouse-core/audits/accessibility/audio-caption.js | title": {
+    "message": "[ᐅ`<audio>`ᐊ éļéméñţš çöñţåîñ å ᐅ`<track>`ᐊ éļéméñţ ŵîţĥ ᐅ`[kind=\"captions\"]`ᐊ one two three four five six seven eight nine]"
+  },
+  "lighthouse-core/audits/accessibility/axe-audit.js | failingElementsHeader": {
+    "message": "[Fåîļîñĝ Éļéméñţš one two]"
+  },
+  "lighthouse-core/audits/accessibility/button-name.js | description": {
+    "message": "[Ŵĥéñ å бûţţöñ ðöéšñ'ţ ĥåvé åñ åççéššîбļé ñåmé, šçŕééñ ŕéåðéŕš åññöûñçé îţ åš \"бûţţöñ\", måķîñĝ îţ ûñûšåбļé ƒöŕ ûšéŕš ŵĥö ŕéļý öñ šçŕééñ ŕéåðéŕš. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://web.dev/button-name/)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen twenty twentyone twentytwo twentythree]"
+  },
+  "lighthouse-core/audits/accessibility/button-name.js | failureTitle": {
+    "message": "[Бûţţöñš ðö ñöţ ĥåvé åñ åççéššîбļé ñåmé one two three four five six seven eight]"
+  },
+  "lighthouse-core/audits/accessibility/button-name.js | title": {
+    "message": "[Бûţţöñš ĥåvé åñ åççéššîбļé ñåmé one two three four five six seven]"
+  },
+  "lighthouse-core/audits/accessibility/bypass.js | description": {
+    "message": "[Åððîñĝ ŵåýš ţö бýþåšš ŕéþéţîţîvé çöñţéñţ ļéţš ķéýбöåŕð ûšéŕš ñåvîĝåţé ţĥé þåĝé möŕé 郃îçîéñţļý. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://web.dev/bypass/)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen]"
+  },
+  "lighthouse-core/audits/accessibility/bypass.js | failureTitle": {
+    "message": "[Ţĥé þåĝé ðöéš ñöţ çöñţåîñ å ĥéåðîñĝ, šķîþ ļîñķ, öŕ ļåñðmåŕķ ŕéĝîöñ one two three four five six seven eight nine ten eleven twelve thirteen]"
+  },
+  "lighthouse-core/audits/accessibility/bypass.js | title": {
+    "message": "[Ţĥé þåĝé çöñţåîñš å ĥéåðîñĝ, šķîþ ļîñķ, öŕ ļåñðmåŕķ ŕéĝîöñ one two three four five six seven eight nine ten eleven twelve]"
+  },
+  "lighthouse-core/audits/accessibility/color-contrast.js | description": {
+    "message": "[Ļöŵ-çöñţŕåšţ ţéxţ îš ðîçûļţ öŕ îmþöššîбļé ƒöŕ måñý ûšéŕš ţö ŕéåð. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://web.dev/color-contrast/)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen]"
+  },
+  "lighthouse-core/audits/accessibility/color-contrast.js | failureTitle": {
+    "message": "[Бåçķĝŕöûñð åñð ƒöŕéĝŕöûñð çöļöŕš ðö ñöţ ĥåvé å šûƒƒîçîéñţ çöñţŕåšţ ŕåţîö. one two three four five six seven eight nine ten eleven twelve thirteen fourteen]"
+  },
+  "lighthouse-core/audits/accessibility/color-contrast.js | title": {
+    "message": "[Бåçķĝŕöûñð åñð ƒöŕéĝŕöûñð çöļöŕš ĥåvé å šûƒƒîçîéñţ çöñţŕåšţ ŕåţîö one two three four five six seven eight nine ten eleven twelve thirteen]"
+  },
+  "lighthouse-core/audits/accessibility/definition-list.js | description": {
+    "message": "[Ŵĥéñ ðéƒîñîţîöñ ļîšţš åŕé ñöţ þŕöþéŕļý måŕķéð ûþ, šçŕééñ ŕéåðéŕš måý þŕöðûçé çöñƒûšîñĝ öŕ îñåççûŕåţé öûţþûţ. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://web.dev/definition-list/)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen twenty]"
+  },
+  "lighthouse-core/audits/accessibility/definition-list.js | failureTitle": {
+    "message": "[ᐅ`<dl>`ᐊ'š ðö ñöţ çöñţåîñ öñļý þŕöþéŕļý-öŕðéŕéð ᐅ`<dt>`ᐊ åñð ᐅ`<dd>`ᐊ ĝŕöûþš, ᐅ`<script>`ᐊ öŕ ᐅ`<template>`ᐊ éļéméñţš. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen]"
+  },
+  "lighthouse-core/audits/accessibility/definition-list.js | title": {
+    "message": "[ᐅ`<dl>`ᐊ'š çöñţåîñ öñļý þŕöþéŕļý-öŕðéŕéð ᐅ`<dt>`ᐊ åñð ᐅ`<dd>`ᐊ ĝŕöûþš, ᐅ`<script>`ᐊ öŕ ᐅ`<template>`ᐊ éļéméñţš. one two three four five six seven eight nine ten eleven twelve thirteen fourteen]"
+  },
+  "lighthouse-core/audits/accessibility/dlitem.js | description": {
+    "message": "[Ðéƒîñîţîöñ ļîšţ îţémš (ᐅ`<dt>`ᐊ åñð ᐅ`<dd>`ᐊ) mûšţ бé ŵŕåþþéð îñ å þåŕéñţ ᐅ`<dl>`ᐊ éļéméñţ ţö éñšûŕé ţĥåţ šçŕééñ ŕéåðéŕš çåñ þŕöþéŕļý åññöûñçé ţĥém. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://web.dev/dlitem/)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen twenty twentyone twentytwo]"
+  },
+  "lighthouse-core/audits/accessibility/dlitem.js | failureTitle": {
+    "message": "[Ðéƒîñîţîöñ ļîšţ îţémš åŕé ñöţ ŵŕåþþéð îñ ᐅ`<dl>`ᐊ éļéméñţš one two three four five six seven eight nine ten eleven]"
+  },
+  "lighthouse-core/audits/accessibility/dlitem.js | title": {
+    "message": "[Ðéƒîñîţîöñ ļîšţ îţémš åŕé ŵŕåþþéð îñ ᐅ`<dl>`ᐊ éļéméñţš one two three four five six seven eight nine ten]"
+  },
+  "lighthouse-core/audits/accessibility/document-title.js | description": {
+    "message": "[Ţĥé ţîţļé ĝîvéš šçŕééñ ŕéåðéŕ ûšéŕš åñ övéŕvîéŵ öƒ ţĥé þåĝé, åñð šéåŕçĥ éñĝîñé ûšéŕš ŕéļý öñ îţ ĥéåvîļý ţö ðéţéŕmîñé îƒ å þåĝé îš ŕéļévåñţ ţö ţĥéîŕ šéåŕçĥ. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://web.dev/document-title/)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen twenty twentyone twentytwo twentythree twentyfour]"
+  },
+  "lighthouse-core/audits/accessibility/document-title.js | failureTitle": {
+    "message": "[Ðöçûméñţ ðöéšñ'ţ ĥåvé å ᐅ`<title>`ᐊ éļéméñţ one two three four five six seven eight]"
+  },
+  "lighthouse-core/audits/accessibility/document-title.js | title": {
+    "message": "[Ðöçûméñţ ĥåš å ᐅ`<title>`ᐊ éļéméñţ one two three four five six]"
+  },
+  "lighthouse-core/audits/accessibility/duplicate-id.js | description": {
+    "message": "[Ţĥé våļûé öƒ åñ îð åţţŕîбûţé mûšţ бé ûñîqûé ţö þŕévéñţ öţĥéŕ îñšţåñçéš ƒŕöm бéîñĝ övéŕļööķéð бý åššîšţîvé ţéçĥñöļöĝîéš. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://web.dev/duplicate-id/)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen twenty twentyone]"
+  },
+  "lighthouse-core/audits/accessibility/duplicate-id.js | failureTitle": {
+    "message": "[ᐅ`[id]`ᐊ åţţŕîбûţéš öñ ţĥé þåĝé åŕé ñöţ ûñîqûé one two three four five six seven eight nine]"
+  },
+  "lighthouse-core/audits/accessibility/duplicate-id.js | title": {
+    "message": "[ᐅ`[id]`ᐊ åţţŕîбûţéš öñ ţĥé þåĝé åŕé ûñîqûé one two three four five six seven eight]"
+  },
+  "lighthouse-core/audits/accessibility/frame-title.js | description": {
+    "message": "[Šçŕééñ ŕéåðéŕ ûšéŕš ŕéļý öñ ƒŕåmé ţîţļéš ţö ðéšçŕîбé ţĥé çöñţéñţš öƒ ƒŕåméš. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://web.dev/frame-title/)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen]"
+  },
+  "lighthouse-core/audits/accessibility/frame-title.js | failureTitle": {
+    "message": "[ᐅ`<frame>`ᐊ öŕ ᐅ`<iframe>`ᐊ éļéméñţš ðö ñöţ ĥåvé å ţîţļé one two three four five six seven eight]"
+  },
+  "lighthouse-core/audits/accessibility/frame-title.js | title": {
+    "message": "[ᐅ`<frame>`ᐊ öŕ ᐅ`<iframe>`ᐊ éļéméñţš ĥåvé å ţîţļé one two three four five six seven]"
+  },
+  "lighthouse-core/audits/accessibility/html-has-lang.js | description": {
+    "message": "[΃ å þåĝé ðöéšñ'ţ šþéçîƒý å ļåñĝ åţţŕîбûţé, å šçŕééñ ŕéåðéŕ åššûméš ţĥåţ ţĥé þåĝé îš îñ ţĥé ðéƒåûļţ ļåñĝûåĝé ţĥåţ ţĥé ûšéŕ çĥöšé ŵĥéñ šéţţîñĝ ûþ ţĥé šçŕééñ ŕéåðéŕ. ΃ ţĥé þåĝé îšñ'ţ åçţûåļļý îñ ţĥé ðéƒåûļţ ļåñĝûåĝé, ţĥéñ ţĥé šçŕééñ ŕéåðéŕ mîĝĥţ ñöţ åññöûñçé ţĥé þåĝé'š ţéxţ çöŕŕéçţļý. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://web.dev/html-has-lang/)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen twenty twentyone twentytwo twentythree twentyfour twentyfive twentysix twentyseven twentyeight twentynine thirty thirtyone thirtytwo thirtythree thirtyfour thirtyfive thirtysix]"
+  },
+  "lighthouse-core/audits/accessibility/html-has-lang.js | failureTitle": {
+    "message": "[ᐅ`<html>`ᐊ éļéméñţ ðöéš ñöţ ĥåvé å ᐅ`[lang]`ᐊ åţţŕîбûţé one two three four five six seven eight nine]"
+  },
+  "lighthouse-core/audits/accessibility/html-has-lang.js | title": {
+    "message": "[ᐅ`<html>`ᐊ éļéméñţ ĥåš å ᐅ`[lang]`ᐊ åţţŕîбûţé one two three four five six seven]"
+  },
+  "lighthouse-core/audits/accessibility/html-lang-valid.js | description": {
+    "message": "[Šþéçîƒýîñĝ å våļîð ᐅ[ᐊБÇÞ 47 ļåñĝûåĝéᐅ](https://www.w3.org/International/questions/qa-choosing-language-tags#question)ᐊ ĥéļþš šçŕééñ ŕéåðéŕš åññöûñçé ţéxţ þŕöþéŕļý. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://web.dev/html-lang-valid/)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen]"
+  },
+  "lighthouse-core/audits/accessibility/html-lang-valid.js | failureTitle": {
+    "message": "[ᐅ`<html>`ᐊ éļéméñţ ðöéš ñöţ ĥåvé å våļîð våļûé ƒöŕ îţš ᐅ`[lang]`ᐊ åţţŕîбûţé. one two three four five six seven eight nine ten eleven twelve]"
+  },
+  "lighthouse-core/audits/accessibility/html-lang-valid.js | title": {
+    "message": "[ᐅ`<html>`ᐊ éļéméñţ ĥåš å våļîð våļûé ƒöŕ îţš ᐅ`[lang]`ᐊ åţţŕîбûţé one two three four five six seven eight nine ten eleven]"
+  },
+  "lighthouse-core/audits/accessibility/image-alt.js | description": {
+    "message": "[Îñƒöŕmåţîvé éļéméñţš šĥöûļð åîm ƒöŕ šĥöŕţ, ðéšçŕîþţîvé åļţéŕñåţé ţéxţ. Ðéçöŕåţîvé éļéméñţš çåñ бé îĝñöŕéð ŵîţĥ åñ émþţý åļţ åţţŕîбûţé. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://web.dev/image-alt/)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen twenty twentyone twentytwo]"
+  },
+  "lighthouse-core/audits/accessibility/image-alt.js | failureTitle": {
+    "message": "[Îmåĝé éļéméñţš ðö ñöţ ĥåvé ᐅ`[alt]`ᐊ åţţŕîбûţéš one two three four five six seven eight nine]"
+  },
+  "lighthouse-core/audits/accessibility/image-alt.js | title": {
+    "message": "[Îmåĝé éļéméñţš ĥåvé ᐅ`[alt]`ᐊ åţţŕîбûţéš one two three four five six seven]"
+  },
+  "lighthouse-core/audits/accessibility/input-image-alt.js | description": {
+    "message": "[Ŵĥéñ åñ îmåĝé îš бéîñĝ ûšéð åš åñ ᐅ`<input>`ᐊ бûţţöñ, þŕövîðîñĝ åļţéŕñåţîvé ţéxţ çåñ ĥéļþ šçŕééñ ŕéåðéŕ ûšéŕš ûñðéŕšţåñð ţĥé þûŕþöšé öƒ ţĥé бûţţöñ. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://web.dev/input-image-alt/)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen twenty twentyone twentytwo twentythree]"
+  },
+  "lighthouse-core/audits/accessibility/input-image-alt.js | failureTitle": {
+    "message": "[ᐅ`<input type=\"image\">`ᐊ éļéméñţš ðö ñöţ ĥåvé ᐅ`[alt]`ᐊ ţéxţ one two three four five six seven]"
+  },
+  "lighthouse-core/audits/accessibility/input-image-alt.js | title": {
+    "message": "[ᐅ`<input type=\"image\">`ᐊ éļéméñţš ĥåvé ᐅ`[alt]`ᐊ ţéxţ one two three four five six]"
+  },
+  "lighthouse-core/audits/accessibility/label.js | description": {
+    "message": "[Ļåбéļš éñšûŕé ţĥåţ ƒöŕm çöñţŕöļš åŕé åññöûñçéð þŕöþéŕļý бý åššîšţîvé ţéçĥñöļöĝîéš, ļîķé šçŕééñ ŕéåðéŕš. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://web.dev/label/)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen]"
+  },
+  "lighthouse-core/audits/accessibility/label.js | failureTitle": {
+    "message": "[Föŕm éļéméñţš ðö ñöţ ĥåvé åššöçîåţéð ļåбéļš one two three four five six seven eight nine]"
+  },
+  "lighthouse-core/audits/accessibility/label.js | title": {
+    "message": "[Föŕm éļéméñţš ĥåvé åššöçîåţéð ļåбéļš one two three four five six seven eight]"
+  },
+  "lighthouse-core/audits/accessibility/layout-table.js | description": {
+    "message": "[Å ţåбļé бéîñĝ ûšéð ƒöŕ ļåýöûţ þûŕþöšéš šĥöûļð ñöţ îñçļûðé ðåţå éļéméñţš, šûçĥ åš ţĥé ţĥ öŕ çåþţîöñ éļéméñţš öŕ ţĥé šûmmåŕý åţţŕîбûţé, бéçåûšé ţĥîš çåñ çŕéåţé å çöñƒûšîñĝ éxþéŕîéñçé ƒöŕ šçŕééñ ŕéåðéŕ ûšéŕš. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://web.dev/layout-table/)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen twenty twentyone twentytwo twentythree twentyfour twentyfive twentysix twentyseven twentyeight twentynine]"
+  },
+  "lighthouse-core/audits/accessibility/layout-table.js | failureTitle": {
+    "message": "[Þŕéšéñţåţîöñåļ ᐅ`<table>`ᐊ éļéméñţš ðö ñöţ åvöîð ûšîñĝ ᐅ`<th>`ᐊ, ᐅ`<caption>`ᐊ öŕ ţĥé ᐅ`[summary]`ᐊ åţţŕîбûţé. one two three four five six seven eight nine ten eleven twelve thirteen fourteen]"
+  },
+  "lighthouse-core/audits/accessibility/layout-table.js | title": {
+    "message": "[Þŕéšéñţåţîöñåļ ᐅ`<table>`ᐊ éļéméñţš åvöîð ûšîñĝ ᐅ`<th>`ᐊ, ᐅ`<caption>`ᐊ öŕ ţĥé ᐅ`[summary]`ᐊ åţţŕîбûţé. one two three four five six seven eight nine ten eleven twelve thirteen]"
+  },
+  "lighthouse-core/audits/accessibility/link-name.js | description": {
+    "message": "[Ļîñķ ţéxţ (åñð åļţéŕñåţé ţéxţ ƒöŕ îmåĝéš, ŵĥéñ ûšéð åš ļîñķš) ţĥåţ îš ðîšçéŕñîбļé, ûñîqûé, åñð ƒöçûšåбļé îmþŕövéš ţĥé ñåvîĝåţîöñ éxþéŕîéñçé ƒöŕ šçŕééñ ŕéåðéŕ ûšéŕš. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://web.dev/link-name/)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen twenty twentyone twentytwo twentythree twentyfour twentyfive]"
+  },
+  "lighthouse-core/audits/accessibility/link-name.js | failureTitle": {
+    "message": "[Ļîñķš ðö ñöţ ĥåvé å ðîšçéŕñîбļé ñåmé one two three four five six seven eight]"
+  },
+  "lighthouse-core/audits/accessibility/link-name.js | title": {
+    "message": "[Ļîñķš ĥåvé å ðîšçéŕñîбļé ñåmé one two three four five six seven]"
+  },
+  "lighthouse-core/audits/accessibility/list.js | description": {
+    "message": "[Šçŕééñ ŕéåðéŕš ĥåvé å šþéçîƒîç ŵåý öƒ åññöûñçîñĝ ļîšţš. Éñšûŕîñĝ þŕöþéŕ ļîšţ šţŕûçţûŕé åîðš šçŕééñ ŕéåðéŕ öûţþûţ. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://web.dev/list/)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen twenty]"
+  },
+  "lighthouse-core/audits/accessibility/list.js | failureTitle": {
+    "message": "[Ļîšţš ðö ñöţ çöñţåîñ öñļý ᐅ`<li>`ᐊ éļéméñţš åñð šçŕîþţ šûþþöŕţîñĝ éļéméñţš (ᐅ`<script>`ᐊ åñð ᐅ`<template>`ᐊ). one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen]"
+  },
+  "lighthouse-core/audits/accessibility/list.js | title": {
+    "message": "[Ļîšţš çöñţåîñ öñļý ᐅ`<li>`ᐊ éļéméñţš åñð šçŕîþţ šûþþöŕţîñĝ éļéméñţš (ᐅ`<script>`ᐊ åñð ᐅ`<template>`ᐊ). one two three four five six seven eight nine ten eleven twelve thirteen fourteen]"
+  },
+  "lighthouse-core/audits/accessibility/listitem.js | description": {
+    "message": "[Šçŕééñ ŕéåðéŕš ŕéqûîŕé ļîšţ îţémš (ᐅ`<li>`ᐊ) ţö бé çöñţåîñéð ŵîţĥîñ å þåŕéñţ ᐅ`<ul>`ᐊ öŕ ᐅ`<ol>`ᐊ ţö бé åññöûñçéð þŕöþéŕļý. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://web.dev/listitem/)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen twenty]"
+  },
+  "lighthouse-core/audits/accessibility/listitem.js | failureTitle": {
+    "message": "[Ļîšţ îţémš (ᐅ`<li>`ᐊ) åŕé ñöţ çöñţåîñéð ŵîţĥîñ ᐅ`<ul>`ᐊ öŕ ᐅ`<ol>`ᐊ þåŕéñţ éļéméñţš. one two three four five six seven eight nine ten eleven twelve thirteen]"
+  },
+  "lighthouse-core/audits/accessibility/listitem.js | title": {
+    "message": "[Ļîšţ îţémš (ᐅ`<li>`ᐊ) åŕé çöñţåîñéð ŵîţĥîñ ᐅ`<ul>`ᐊ öŕ ᐅ`<ol>`ᐊ þåŕéñţ éļéméñţš one two three four five six seven eight nine ten eleven twelve thirteen]"
+  },
+  "lighthouse-core/audits/accessibility/meta-refresh.js | description": {
+    "message": "[Ûšéŕš ðö ñöţ éxþéçţ å þåĝé ţö ŕéƒŕéšĥ åûţömåţîçåļļý, åñð ðöîñĝ šö ŵîļļ mövé ƒöçûš бåçķ ţö ţĥé ţöþ öƒ ţĥé þåĝé. Ţĥîš måý çŕéåţé å ƒŕûšţŕåţîñĝ öŕ çöñƒûšîñĝ éxþéŕîéñçé. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://web.dev/meta-refresh/)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen twenty twentyone twentytwo twentythree twentyfour twentyfive]"
+  },
+  "lighthouse-core/audits/accessibility/meta-refresh.js | failureTitle": {
+    "message": "[Ţĥé ðöçûméñţ ûšéš ᐅ`<meta http-equiv=\"refresh\">`ᐊ one two three four five]"
+  },
+  "lighthouse-core/audits/accessibility/meta-refresh.js | title": {
+    "message": "[Ţĥé ðöçûméñţ ðöéš ñöţ ûšé ᐅ`<meta http-equiv=\"refresh\">`ᐊ one two three four five six seven]"
+  },
+  "lighthouse-core/audits/accessibility/meta-viewport.js | description": {
+    "message": "[Ðîšåбļîñĝ žöömîñĝ îš þŕöбļémåţîç ƒöŕ ûšéŕš ŵîţĥ ļöŵ vîšîöñ ŵĥö ŕéļý öñ šçŕééñ måĝñîƒîçåţîöñ ţö þŕöþéŕļý šéé ţĥé çöñţéñţš öƒ å ŵéб þåĝé. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://web.dev/meta-viewport/)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen twenty twentyone twentytwo twentythree]"
+  },
+  "lighthouse-core/audits/accessibility/meta-viewport.js | failureTitle": {
+    "message": "[ᐅ`[user-scalable=\"no\"]`ᐊ îš ûšéð îñ ţĥé ᐅ`<meta name=\"viewport\">`ᐊ éļéméñţ öŕ ţĥé ᐅ`[maximum-scale]`ᐊ åţţŕîбûţé îš ļéšš ţĥåñ 5. one two three four five six seven eight nine ten eleven twelve thirteen]"
+  },
+  "lighthouse-core/audits/accessibility/meta-viewport.js | title": {
+    "message": "[ᐅ`[user-scalable=\"no\"]`ᐊ îš ñöţ ûšéð îñ ţĥé ᐅ`<meta name=\"viewport\">`ᐊ éļéméñţ åñð ţĥé ᐅ`[maximum-scale]`ᐊ åţţŕîбûţé îš ñöţ ļéšš ţĥåñ 5. one two three four five six seven eight nine ten eleven twelve thirteen fourteen]"
+  },
+  "lighthouse-core/audits/accessibility/object-alt.js | description": {
+    "message": "[Šçŕééñ ŕéåðéŕš çåññöţ ţŕåñšļåţé ñöñ-ţéxţ çöñţéñţ. Åððîñĝ åļţ ţéxţ ţö ᐅ`<object>`ᐊ éļéméñţš ĥéļþš šçŕééñ ŕéåðéŕš çöñvéý méåñîñĝ ţö ûšéŕš. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://web.dev/object-alt/)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen twenty twentyone twentytwo]"
+  },
+  "lighthouse-core/audits/accessibility/object-alt.js | failureTitle": {
+    "message": "[ᐅ`<object>`ᐊ éļéméñţš ðö ñöţ ĥåvé ᐅ`[alt]`ᐊ ţéxţ one two three four five six seven]"
+  },
+  "lighthouse-core/audits/accessibility/object-alt.js | title": {
+    "message": "[ᐅ`<object>`ᐊ éļéméñţš ĥåvé ᐅ`[alt]`ᐊ ţéxţ one two three four five six]"
+  },
+  "lighthouse-core/audits/accessibility/tabindex.js | description": {
+    "message": "[Å våļûé ĝŕéåţéŕ ţĥåñ 0 îmþļîéš åñ éxþļîçîţ ñåvîĝåţîöñ öŕðéŕîñĝ. Åļţĥöûĝĥ ţéçĥñîçåļļý våļîð, ţĥîš öƒţéñ çŕéåţéš ƒŕûšţŕåţîñĝ éxþéŕîéñçéš ƒöŕ ûšéŕš ŵĥö ŕéļý öñ åššîšţîvé ţéçĥñöļöĝîéš. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://web.dev/tabindex/)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen twenty twentyone twentytwo twentythree twentyfour twentyfive twentysix twentyseven]"
+  },
+  "lighthouse-core/audits/accessibility/tabindex.js | failureTitle": {
+    "message": "[Šömé éļéméñţš ĥåvé å ᐅ`[tabindex]`ᐊ våļûé ĝŕéåţéŕ ţĥåñ 0 one two three four five six seven eight nine]"
+  },
+  "lighthouse-core/audits/accessibility/tabindex.js | title": {
+    "message": "[Ñö éļéméñţ ĥåš å ᐅ`[tabindex]`ᐊ våļûé ĝŕéåţéŕ ţĥåñ 0 one two three four five six seven eight nine]"
+  },
+  "lighthouse-core/audits/accessibility/td-headers-attr.js | description": {
+    "message": "[Šçŕééñ ŕéåðéŕš ĥåvé ƒéåţûŕéš ţö måķé ñåvîĝåţîñĝ ţåбļéš éåšîéŕ. Éñšûŕîñĝ ᐅ`<td>`ᐊ çéļļš ûšîñĝ ţĥé ᐅ`[headers]`ᐊ åţţŕîбûţé öñļý ŕéƒéŕ ţö öţĥéŕ çéļļš îñ ţĥé šåmé ţåбļé måý îmþŕövé ţĥé éxþéŕîéñçé ƒöŕ šçŕééñ ŕéåðéŕ ûšéŕš. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://web.dev/td-headers-attr/)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen twenty twentyone twentytwo twentythree twentyfour twentyfive twentysix twentyseven twentyeight]"
+  },
+  "lighthouse-core/audits/accessibility/td-headers-attr.js | failureTitle": {
+    "message": "[Çéļļš îñ å ᐅ`<table>`ᐊ éļéméñţ ţĥåţ ûšé ţĥé ᐅ`[headers]`ᐊ åţţŕîбûţé ŕéƒéŕš ţö öţĥéŕ çéļļš öƒ ţĥåţ šåmé ţåбļé. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen]"
+  },
+  "lighthouse-core/audits/accessibility/td-headers-attr.js | title": {
+    "message": "[Çéļļš îñ å ᐅ`<table>`ᐊ éļéméñţ ţĥåţ ûšé ţĥé ᐅ`[headers]`ᐊ åţţŕîбûţé öñļý ŕéƒéŕ ţö öţĥéŕ çéļļš öƒ ţĥåţ šåmé ţåбļé. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen]"
+  },
+  "lighthouse-core/audits/accessibility/th-has-data-cells.js | description": {
+    "message": "[Šçŕééñ ŕéåðéŕš ĥåvé ƒéåţûŕéš ţö måķé ñåvîĝåţîñĝ ţåбļéš éåšîéŕ. Éñšûŕîñĝ ţåбļé ĥéåðéŕš åļŵåýš ŕéƒéŕ ţö šömé šéţ öƒ çéļļš måý îmþŕövé ţĥé éxþéŕîéñçé ƒöŕ šçŕééñ ŕéåðéŕ ûšéŕš. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://web.dev/th-has-data-cells/)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen twenty twentyone twentytwo twentythree twentyfour twentyfive twentysix]"
+  },
+  "lighthouse-core/audits/accessibility/th-has-data-cells.js | failureTitle": {
+    "message": "[ᐅ`<th>`ᐊ éļéméñţš åñð éļéméñţš ŵîţĥ ᐅ`[role=\"columnheader\"/\"rowheader\"]`ᐊ ðö ñöţ ĥåvé ðåţå çéļļš ţĥéý ðéšçŕîбé. one two three four five six seven eight nine ten eleven twelve thirteen]"
+  },
+  "lighthouse-core/audits/accessibility/th-has-data-cells.js | title": {
+    "message": "[ᐅ`<th>`ᐊ éļéméñţš åñð éļéméñţš ŵîţĥ ᐅ`[role=\"columnheader\"/\"rowheader\"]`ᐊ ĥåvé ðåţå çéļļš ţĥéý ðéšçŕîбé. one two three four five six seven eight nine ten eleven twelve thirteen]"
+  },
+  "lighthouse-core/audits/accessibility/valid-lang.js | description": {
+    "message": "[Šþéçîƒýîñĝ å våļîð ᐅ[ᐊБÇÞ 47 ļåñĝûåĝéᐅ](https://www.w3.org/International/questions/qa-choosing-language-tags#question)ᐊ öñ éļéméñţš ĥéļþš éñšûŕé ţĥåţ ţéxţ îš þŕöñöûñçéð çöŕŕéçţļý бý å šçŕééñ ŕéåðéŕ. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://web.dev/valid-lang/)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen twenty twentyone]"
+  },
+  "lighthouse-core/audits/accessibility/valid-lang.js | failureTitle": {
+    "message": "[ᐅ`[lang]`ᐊ åţţŕîбûţéš ðö ñöţ ĥåvé å våļîð våļûé one two three four five six seven eight]"
+  },
+  "lighthouse-core/audits/accessibility/valid-lang.js | title": {
+    "message": "[ᐅ`[lang]`ᐊ åţţŕîбûţéš ĥåvé å våļîð våļûé one two three four five six seven]"
+  },
+  "lighthouse-core/audits/accessibility/video-caption.js | description": {
+    "message": "[Ŵĥéñ å vîðéö þŕövîðéš å çåþţîöñ îţ îš éåšîéŕ ƒöŕ ðéåƒ åñð ĥéåŕîñĝ îmþåîŕéð ûšéŕš ţö åççéšš îţš îñƒöŕmåţîöñ. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://web.dev/video-caption/)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen]"
+  },
+  "lighthouse-core/audits/accessibility/video-caption.js | failureTitle": {
+    "message": "[ᐅ`<video>`ᐊ éļéméñţš ðö ñöţ çöñţåîñ å ᐅ`<track>`ᐊ éļéméñţ ŵîţĥ ᐅ`[kind=\"captions\"]`ᐊ. one two three four five six seven eight nine ten eleven]"
+  },
+  "lighthouse-core/audits/accessibility/video-caption.js | title": {
+    "message": "[ᐅ`<video>`ᐊ éļéméñţš çöñţåîñ å ᐅ`<track>`ᐊ éļéméñţ ŵîţĥ ᐅ`[kind=\"captions\"]`ᐊ one two three four five six seven eight nine]"
+  },
+  "lighthouse-core/audits/accessibility/video-description.js | description": {
+    "message": "[Åûðîö ðéšçŕîþţîöñš þŕövîðé ŕéļévåñţ îñƒöŕmåţîöñ ƒöŕ vîðéöš ţĥåţ ðîåļöĝûé çåññöţ, šûçĥ åš ƒåçîåļ éxþŕéššîöñš åñð šçéñéš. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://web.dev/video-description/)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen twenty twentyone]"
+  },
+  "lighthouse-core/audits/accessibility/video-description.js | failureTitle": {
+    "message": "[ᐅ`<video>`ᐊ éļéméñţš ðö ñöţ çöñţåîñ å ᐅ`<track>`ᐊ éļéméñţ ŵîţĥ ᐅ`[kind=\"description\"]`ᐊ. one two three four five six seven eight nine ten eleven]"
+  },
+  "lighthouse-core/audits/accessibility/video-description.js | title": {
+    "message": "[ᐅ`<video>`ᐊ éļéméñţš çöñţåîñ å ᐅ`<track>`ᐊ éļéméñţ ŵîţĥ ᐅ`[kind=\"description\"]`ᐊ one two three four five six seven eight nine]"
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | description": {
+    "message": "[Föŕ îðéåļ åþþéåŕåñçé öñ îÖŠ ŵĥéñ ûšéŕš åðð å þŕöĝŕéššîvé ŵéб åþþ ţö ţĥé ĥömé šçŕééñ, ðéƒîñé åñ ᐅ`apple-touch-icon`ᐊ. Îţ mûšţ þöîñţ ţö å ñöñ-ţŕåñšþåŕéñţ 192þx (öŕ 180þx) šqûåŕé ÞÑĜ. ᐅ[ᐊĻéåŕñ Möŕéᐅ](https://developers.google.com/web/fundamentals/design-and-ux/browser-customization/)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen twenty twentyone twentytwo twentythree twentyfour twentyfive]"
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | failureTitle": {
+    "message": "[Ðöéš ñöţ þŕövîðé å våļîð ᐅ`apple-touch-icon`ᐊ one two three four five six]"
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | precomposedWarning": {
+    "message": "[ᐅ`apple-touch-icon-precomposed`ᐊ îš öûţ öƒ ðåţé; ᐅ`apple-touch-icon`ᐊ îš þŕéƒéŕŕéð. one two three four five six seven eight]"
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | title": {
+    "message": "[Þŕövîðéš å våļîð ᐅ`apple-touch-icon`ᐊ one two three four five]"
+  },
+  "lighthouse-core/audits/bootup-time.js | chromeExtensionsWarning": {
+    "message": "[Çĥŕömé éxţéñšîöñš ñéĝåţîvéļý 僃éçţéð ţĥîš þåĝé'š ļöåð þéŕƒöŕmåñçé. Ţŕý åûðîţîñĝ ţĥé þåĝé îñ îñçöĝñîţö möðé öŕ ƒŕöm å Çĥŕömé þŕöƒîļé ŵîţĥöûţ éxţéñšîöñš. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen twenty twentyone twentytwo]"
+  },
+  "lighthouse-core/audits/bootup-time.js | columnScriptEval": {
+    "message": "[Šçŕîþţ Évåļûåţîöñ one two three]"
+  },
+  "lighthouse-core/audits/bootup-time.js | columnScriptParse": {
+    "message": "[Šçŕîþţ Þåŕšé one two]"
+  },
+  "lighthouse-core/audits/bootup-time.js | columnTotal": {
+    "message": "[Ţöţåļ ÇÞÛ Ţîmé one two]"
+  },
+  "lighthouse-core/audits/bootup-time.js | description": {
+    "message": "[Çöñšîðéŕ ŕéðûçîñĝ ţĥé ţîmé šþéñţ þåŕšîñĝ, çömþîļîñĝ, åñð éxéçûţîñĝ ĴŠ. Ýöû måý ƒîñð ðéļîvéŕîñĝ šmåļļéŕ ĴŠ þåýļöåðš ĥéļþš ŵîţĥ ţĥîš. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://developers.google.com/web/tools/lighthouse/audits/bootup)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen twenty twentyone twentytwo]"
+  },
+  "lighthouse-core/audits/bootup-time.js | failureTitle": {
+    "message": "[Ŕéðûçé ĴåvåŠçŕîþţ éxéçûţîöñ ţîmé one two three four five six seven]"
+  },
+  "lighthouse-core/audits/bootup-time.js | title": {
+    "message": "[ĴåvåŠçŕîþţ éxéçûţîöñ ţîmé one two three]"
+  },
+  "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | description": {
+    "message": "[Ļåŕĝé ĜÎFš åŕé îñ郃îçîéñţ ƒöŕ ðéļîvéŕîñĝ åñîmåţéð çöñţéñţ. Çöñšîðéŕ ûšîñĝ MÞÉĜ4/ŴéбM vîðéöš ƒöŕ åñîmåţîöñš åñð ÞÑĜ/ŴéбÞ ƒöŕ šţåţîç îmåĝéš îñšţéåð öƒ ĜÎF ţö šåvé ñéţŵöŕķ бýţéš. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/replace-animated-gifs-with-video/)ᐊ one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen twenty twentyone twentytwo twentythree twentyfour twentyfive twentysix]"
+  },
+  "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | title": {
+    "message": "[Ûšé vîðéö ƒöŕmåţš ƒöŕ åñîmåţéð çöñţéñţ one two three four five six seven eight]"
+  },
+  "lighthouse-core/audits/byte-efficiency/offscreen-images.js | description": {
+    "message": "[Çöñšîðéŕ ļåžý-ļöåðîñĝ öƒƒšçŕééñ åñð ĥîððéñ îmåĝéš åƒţéŕ åļļ çŕîţîçåļ ŕéšöûŕçéš ĥåvé ƒîñîšĥéð ļöåðîñĝ ţö ļöŵéŕ ţîmé ţö îñţéŕåçţîvé. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://developers.google.com/web/tools/lighthouse/audits/offscreen-images)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen twenty twentyone twentytwo]"
+  },
+  "lighthouse-core/audits/byte-efficiency/offscreen-images.js | title": {
+    "message": "[Ðéƒéŕ öƒƒšçŕééñ îmåĝéš one two three]"
+  },
+  "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | description": {
+    "message": "[Ŕéšöûŕçéš åŕé бļöçķîñĝ ţĥé ƒîŕšţ þåîñţ öƒ ýöûŕ þåĝé. Çöñšîðéŕ ðéļîvéŕîñĝ çŕîţîçåļ ĴŠ/ÇŠŠ îñļîñé åñð ðéƒéŕŕîñĝ åļļ ñöñ-çŕîţîçåļ ĴŠ/šţýļéš. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://developers.google.com/web/tools/lighthouse/audits/blocking-resources)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen twenty twentyone twentytwo twentythree]"
+  },
+  "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | title": {
+    "message": "[Éļîmîñåţé ŕéñðéŕ-бļöçķîñĝ ŕéšöûŕçéš one two three four]"
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | description": {
+    "message": "[Ļåŕĝé ñéţŵöŕķ þåýļöåðš çöšţ ûšéŕš ŕéåļ möñéý åñð åŕé ĥîĝĥļý çöŕŕéļåţéð ŵîţĥ ļöñĝ ļöåð ţîméš. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://developers.google.com/web/tools/lighthouse/audits/network-payloads)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen]"
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | displayValue": {
+    "message": "[Ţöţåļ šîžé ŵåš ᐅ{totalBytes, number, bytes}ᐊ ĶБ one two three four five]"
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | failureTitle": {
+    "message": "[Åvöîð éñöŕmöûš ñéţŵöŕķ þåýļöåðš one two three four five six seven]"
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | title": {
+    "message": "[Åvöîðš éñöŕmöûš ñéţŵöŕķ þåýļöåðš one two three four five six seven]"
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-css.js | description": {
+    "message": "[Mîñîƒýîñĝ ÇŠŠ ƒîļéš çåñ ŕéðûçé ñéţŵöŕķ þåýļöåð šîžéš. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://developers.google.com/web/tools/lighthouse/audits/minify-css)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen]"
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-css.js | title": {
+    "message": "[Mîñîƒý ÇŠŠ one two]"
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | description": {
+    "message": "[Mîñîƒýîñĝ ĴåvåŠçŕîþţ ƒîļéš çåñ ŕéðûçé þåýļöåð šîžéš åñð šçŕîþţ þåŕšé ţîmé. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://developers.google.com/speed/docs/insights/MinifyResources)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen]"
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | title": {
+    "message": "[Mîñîƒý ĴåvåŠçŕîþţ one two three]"
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | description": {
+    "message": "[Ŕémövé ðéåð ŕûļéš ƒŕöm šţýļéšĥééţš åñð ðéƒéŕ ţĥé ļöåðîñĝ öƒ ÇŠŠ ñöţ ûšéð ƒöŕ åбövé-ţĥé-ƒöļð çöñţéñţ ţö ŕéðûçé ûññéçéššåŕý бýţéš çöñšûméð бý ñéţŵöŕķ åçţîvîţý. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://developers.google.com/web/tools/lighthouse/audits/unused-css)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen twenty twentyone twentytwo twentythree twentyfour]"
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | title": {
+    "message": "[Ŕémövé ûñûšéð ÇŠŠ one two three]"
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-javascript.js | description": {
+    "message": "[Ŕémövé ûñûšéð ĴåvåŠçŕîþţ ţö ŕéðûçé бýţéš çöñšûméð бý ñéţŵöŕķ åçţîvîţý. one two three four five six seven eight nine ten eleven twelve thirteen]"
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-javascript.js | title": {
+    "message": "[Ŕémövé ûñûšéð ĴåvåŠçŕîþţ one two three]"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | description": {
+    "message": "[Å ļöñĝ çåçĥé ļîƒéţîmé çåñ šþééð ûþ ŕéþéåţ vîšîţš ţö ýöûŕ þåĝé. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://developers.google.com/web/tools/lighthouse/audits/cache-policy)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen]"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | displayValue": {
+    "message": "{itemCount,plural, =1{[1 ŕéšöûŕçé ƒöûñð one two]}other{[# ŕéšöûŕçéš ƒöûñð one two three]}}"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | failureTitle": {
+    "message": "[Šéŕvé šţåţîç åššéţš ŵîţĥ åñ 郃îçîéñţ çåçĥé þöļîçý one two three four five six seven eight nine ten eleven]"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | title": {
+    "message": "[Ûšéš éƒƒîçîéñţ çåçĥé þöļîçý öñ šţåţîç åššéţš one two three four five six seven eight nine]"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | description": {
+    "message": "[Öþţîmîžéð îmåĝéš ļöåð ƒåšţéŕ åñð çöñšûmé ļéšš çéļļûļåŕ ðåţå. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://developers.google.com/web/tools/lighthouse/audits/optimize-images)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen]"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | title": {
+    "message": "[Ƀƒîçîéñţļý éñçöðé îmåĝéš one two three]"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | description": {
+    "message": "[Šéŕvé îmåĝéš ţĥåţ åŕé åþþŕöþŕîåţéļý-šîžéð ţö šåvé çéļļûļåŕ ðåţå åñð îmþŕövé ļöåð ţîmé. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://developers.google.com/web/tools/lighthouse/audits/oversized-images)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen]"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | title": {
+    "message": "[Þŕöþéŕļý šîžé îmåĝéš one two three]"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | description": {
+    "message": "[Ţéxţ-бåšéð ŕéšöûŕçéš šĥöûļð бé šéŕvéð ŵîţĥ çömþŕéššîöñ (ĝžîþ, ðéƒļåţé öŕ бŕöţļî) ţö mîñîmîžé ţöţåļ ñéţŵöŕķ бýţéš. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://developers.google.com/web/tools/lighthouse/audits/text-compression)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen twenty]"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | title": {
+    "message": "[Éñåбļé ţéxţ çömþŕéššîöñ one two three]"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | description": {
+    "message": "[Îmåĝé ƒöŕmåţš ļîķé ĴÞÉĜ 2000, ĴÞÉĜ XŔ, åñð ŴéбÞ öƒţéñ þŕövîðé бéţţéŕ çömþŕéššîöñ ţĥåñ ÞÑĜ öŕ ĴÞÉĜ, ŵĥîçĥ méåñš ƒåšţéŕ ðöŵñļöåðš åñð ļéšš ðåţå çöñšûmþţîöñ. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://developers.google.com/web/tools/lighthouse/audits/webp)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen twenty twentyone twentytwo twentythree twentyfour]"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | title": {
+    "message": "[Šéŕvé îmåĝéš îñ ñéxţ-ĝéñ ƒöŕmåţš one two three four five six seven]"
+  },
+  "lighthouse-core/audits/content-width.js | description": {
+    "message": "[΃ ţĥé ŵîðţĥ öƒ ýöûŕ åþþ'š çöñţéñţ ðöéšñ'ţ måţçĥ ţĥé ŵîðţĥ öƒ ţĥé vîéŵþöŕţ, ýöûŕ åþþ mîĝĥţ ñöţ бé öþţîmîžéð ƒöŕ möбîļé šçŕééñš. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://developers.google.com/web/tools/lighthouse/audits/content-sized-correctly-for-viewport)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen twenty twentyone twentytwo]"
+  },
+  "lighthouse-core/audits/content-width.js | explanation": {
+    "message": "[Ţĥé vîéŵþöŕţ šîžé öƒ ᐅ{innerWidth}ᐊþx ðöéš ñöţ måţçĥ ţĥé ŵîñðöŵ šîžé öƒ ᐅ{outerWidth}ᐊþx. one two three four five six seven eight nine ten eleven twelve thirteen]"
+  },
+  "lighthouse-core/audits/content-width.js | failureTitle": {
+    "message": "[Çöñţéñţ îš ñöţ šîžéð çöŕŕéçţļý ƒöŕ ţĥé vîéŵþöŕţ one two three four five six seven eight nine ten]"
+  },
+  "lighthouse-core/audits/content-width.js | title": {
+    "message": "[Çöñţéñţ îš šîžéð çöŕŕéçţļý ƒöŕ ţĥé vîéŵþöŕţ one two three four five six seven eight nine]"
+  },
+  "lighthouse-core/audits/critical-request-chains.js | description": {
+    "message": "[Ţĥé Çŕîţîçåļ Ŕéqûéšţ Çĥåîñš бéļöŵ šĥöŵ ýöû ŵĥåţ ŕéšöûŕçéš åŕé ļöåðéð ŵîţĥ å ĥîĝĥ þŕîöŕîţý. Çöñšîðéŕ ŕéðûçîñĝ ţĥé ļéñĝţĥ öƒ çĥåîñš, ŕéðûçîñĝ ţĥé ðöŵñļöåð šîžé öƒ ŕéšöûŕçéš, öŕ ðéƒéŕŕîñĝ ţĥé ðöŵñļöåð öƒ ûññéçéššåŕý ŕéšöûŕçéš ţö îmþŕövé þåĝé ļöåð. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://developers.google.com/web/tools/lighthouse/audits/critical-request-chains)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen twenty twentyone twentytwo twentythree twentyfour twentyfive twentysix twentyseven twentyeight twentynine thirty thirtyone thirtytwo thirtythree]"
+  },
+  "lighthouse-core/audits/critical-request-chains.js | displayValue": {
+    "message": "{itemCount,plural, =1{[1 çĥåîñ ƒöûñð one two]}other{[# çĥåîñš ƒöûñð one two]}}"
+  },
+  "lighthouse-core/audits/critical-request-chains.js | title": {
+    "message": "[Mîñîmîžé Çŕîţîçåļ Ŕéqûéšţš Ðéþţĥ one two three four five six seven]"
+  },
+  "lighthouse-core/audits/deprecations.js | columnDeprecate": {
+    "message": "[Ðéþŕéçåţîöñ / Ŵåŕñîñĝ one two three]"
+  },
+  "lighthouse-core/audits/deprecations.js | columnLine": {
+    "message": "[Ļîñé one]"
+  },
+  "lighthouse-core/audits/deprecations.js | description": {
+    "message": "[Ðéþŕéçåţéð ÅÞΚ ŵîļļ évéñţûåļļý бé ŕémövéð ƒŕöm ţĥé бŕöŵšéŕ. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://web.dev/deprecations)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen]"
+  },
+  "lighthouse-core/audits/deprecations.js | displayValue": {
+    "message": "{itemCount,plural, =1{[1 ŵåŕñîñĝ ƒöûñð one two]}other{[# ŵåŕñîñĝš ƒöûñð one two]}}"
+  },
+  "lighthouse-core/audits/deprecations.js | failureTitle": {
+    "message": "[Ûšéš ðéþŕéçåţéð ÅÞΚ one two three]"
+  },
+  "lighthouse-core/audits/deprecations.js | title": {
+    "message": "[Åvöîðš ðéþŕéçåţéð ÅÞΚ one two three]"
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | description": {
+    "message": "[Åþþļîçåţîöñ Çåçĥé îš ðéþŕéçåţéð. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://web.dev/appcache-manifest)ᐊ. one two three four five six seven eight nine ten eleven]"
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | displayValue": {
+    "message": "[Föûñð \"ᐅ{AppCacheManifest}ᐊ\" one two three]"
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | failureTitle": {
+    "message": "[Ûšéš Åþþļîçåţîöñ Çåçĥé one two three]"
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | title": {
+    "message": "[Åvöîðš Åþþļîçåţîöñ Çåçĥé one two three]"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | description": {
+    "message": "[Šþéçîƒýîñĝ å ðöçţýþé þŕévéñţš ţĥé бŕöŵšéŕ ƒŕöm šŵîţçĥîñĝ ţö qûîŕķš-möðé. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://web.dev/doctype)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen]"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationBadDoctype": {
+    "message": "[Ðöçţýþé ñåmé mûšţ бé ţĥé ļöŵéŕçåšé šţŕîñĝ ᐅ`html`ᐊ one two three four five six seven eight nine]"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationNoDoctype": {
+    "message": "[Ðöçûméñţ mûšţ çöñţåîñ å ðöçţýþé one two three four five six seven]"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationPublicId": {
+    "message": "[Éxþéçţéð þûбļîçÎð ţö бé åñ émþţý šţŕîñĝ one two three four five six seven eight]"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationSystemId": {
+    "message": "[Éxþéçţéð šýšţémÎð ţö бé åñ émþţý šţŕîñĝ one two three four five six seven eight]"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | failureTitle": {
+    "message": "[Þåĝé ļåçķš ţĥé ĤŢMĻ ðöçţýþé, ţĥûš ţŕîĝĝéŕîñĝ qûîŕķš-möðé one two three four five six seven eight nine ten eleven]"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | title": {
+    "message": "[Þåĝé ĥåš ţĥé ĤŢMĻ ðöçţýþé one two three four five six]"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | columnElement": {
+    "message": "[Éļéméñţ one]"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | columnStatistic": {
+    "message": "[Šţåţîšţîç one two]"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | columnValue": {
+    "message": "[Våļûé one]"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | description": {
+    "message": "[Бŕöŵšéŕ éñĝîñééŕš ŕéçömméñð þåĝéš çöñţåîñ ƒéŵéŕ ţĥåñ ~1,500 ÐÖM éļéméñţš. Ţĥé šŵééţ šþöţ îš å ţŕéé ðéþţĥ < 32 éļéméñţš åñð ƒéŵéŕ ţĥåñ 60 çĥîļðŕéñ/þåŕéñţ éļéméñţ. Å ļåŕĝé ÐÖM çåñ îñçŕéåšé mémöŕý ûšåĝé, çåûšé ļöñĝéŕ ᐅ[ᐊšţýļé çåļçûļåţîöñšᐅ](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations)ᐊ, åñð þŕöðûçé çöšţļý ᐅ[ᐊļåýöûţ ŕéƒļöŵšᐅ](https://developers.google.com/speed/articles/reflow)ᐊ. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://web.dev/dom-size)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen twenty twentyone twentytwo twentythree twentyfour twentyfive twentysix twentyseven twentyeight twentynine thirty thirtyone thirtytwo thirtythree thirtyfour thirtyfive thirtysix]"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | displayValue": {
+    "message": "{itemCount,plural, =1{[1 éļéméñţ one two]}other{[# éļéméñţš one two]}}"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | failureTitle": {
+    "message": "[Åvöîð åñ éxçéššîvé ÐÖM šîžé one two three four five six]"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | statisticDOMDepth": {
+    "message": "[Måxîmûm ÐÖM Ðéþţĥ one two three]"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | statisticDOMElements": {
+    "message": "[Ţöţåļ ÐÖM Éļéméñţš one two three]"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | statisticDOMWidth": {
+    "message": "[Måxîmûm Çĥîļð Éļéméñţš one two three]"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | title": {
+    "message": "[Åvöîðš åñ éxçéššîvé ÐÖM šîžé one two three four five six]"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | columnRel": {
+    "message": "[Ŕéļ one]"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | columnTarget": {
+    "message": "[Ţåŕĝéţ one]"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | description": {
+    "message": "[Åðð ᐅ`rel=\"noopener\"`ᐊ öŕ ᐅ`rel=\"noreferrer\"`ᐊ ţö åñý éxţéŕñåļ ļîñķš ţö îmþŕövé þéŕƒöŕmåñçé åñð þŕévéñţ šéçûŕîţý vûļñéŕåбîļîţîéš. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://web.dev/external-anchors-use-rel-noopener)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen]"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | failureTitle": {
+    "message": "[Ļîñķš ţö çŕöšš-öŕîĝîñ ðéšţîñåţîöñš åŕé ûñšåƒé one two three four five six seven eight nine]"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | title": {
+    "message": "[Ļîñķš ţö çŕöšš-öŕîĝîñ ðéšţîñåţîöñš åŕé šåƒé one two three four five six seven eight nine]"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | warning": {
+    "message": "[Ûñåбļé ţö ðéţéŕmîñé ţĥé ðéšţîñåţîöñ ƒöŕ åñçĥöŕ (ᐅ{anchorHTML}ᐊ). ΃ ñöţ ûšéð åš å ĥýþéŕļîñķ, çöñšîðéŕ ŕémövîñĝ ţåŕĝéţ=_бļåñķ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen]"
+  },
+  "lighthouse-core/audits/dobetterweb/geolocation-on-start.js | description": {
+    "message": "[Ûšéŕš åŕé mîšţŕûšţƒûļ öƒ öŕ çöñƒûšéð бý šîţéš ţĥåţ ŕéqûéšţ ţĥéîŕ ļöçåţîöñ ŵîţĥöûţ çöñţéxţ. Çöñšîðéŕ ţýîñĝ ţĥé ŕéqûéšţ ţö å ûšéŕ åçţîöñ îñšţéåð. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://web.dev/geolocation-on-start)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen twenty twentyone twentytwo twentythree]"
+  },
+  "lighthouse-core/audits/dobetterweb/geolocation-on-start.js | failureTitle": {
+    "message": "[Ŕéqûéšţš ţĥé ĝéöļöçåţîöñ þéŕmîššîöñ öñ þåĝé ļöåð one two three four five six seven eight nine ten]"
+  },
+  "lighthouse-core/audits/dobetterweb/geolocation-on-start.js | title": {
+    "message": "[Åvöîðš ŕéqûéšţîñĝ ţĥé ĝéöļöçåţîöñ þéŕmîššîöñ öñ þåĝé ļöåð one two three four five six seven eight nine ten eleven twelve]"
+  },
+  "lighthouse-core/audits/dobetterweb/js-libraries.js | columnVersion": {
+    "message": "[Véŕšîöñ one]"
+  },
+  "lighthouse-core/audits/dobetterweb/js-libraries.js | description": {
+    "message": "[Åļļ ƒŕöñţ-éñð ĴåvåŠçŕîþţ ļîбŕåŕîéš ðéţéçţéð öñ ţĥé þåĝé. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://web.dev/js-libraries)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen]"
+  },
+  "lighthouse-core/audits/dobetterweb/js-libraries.js | title": {
+    "message": "[Ðéţéçţéð ĴåvåŠçŕîþţ ļîбŕåŕîéš one two three four]"
+  },
+  "lighthouse-core/audits/dobetterweb/no-document-write.js | description": {
+    "message": "[Föŕ ûšéŕš öñ šļöŵ çöññéçţîöñš, éxţéŕñåļ šçŕîþţš ðýñåmîçåļļý îñĵéçţéð vîå ᐅ`document.write()`ᐊ çåñ ðéļåý þåĝé ļöåð бý ţéñš öƒ šéçöñðš. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://web.dev/no-document-write)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen twenty twentyone]"
+  },
+  "lighthouse-core/audits/dobetterweb/no-document-write.js | failureTitle": {
+    "message": "[Ûšéš ᐅ`document.write()`ᐊ one two]"
+  },
+  "lighthouse-core/audits/dobetterweb/no-document-write.js | title": {
+    "message": "[Åvöîðš ᐅ`document.write()`ᐊ one two three]"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | columnSeverity": {
+    "message": "[Ĥîĝĥéšţ Šévéŕîţý one two]"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | columnVersion": {
+    "message": "[Ļîбŕåŕý Véŕšîöñ one two]"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | columnVuln": {
+    "message": "[Vûļñéŕåбîļîţý Çöûñţ one two three]"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | description": {
+    "message": "[Šömé ţĥîŕð-þåŕţý šçŕîþţš måý çöñţåîñ ķñöŵñ šéçûŕîţý vûļñéŕåбîļîţîéš ţĥåţ åŕé éåšîļý îðéñţîƒîéð åñð éxþļöîţéð бý åţţåçķéŕš. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://web.dev/no-vulnerable-libraries)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen twenty twentyone]"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | displayValue": {
+    "message": "{itemCount,plural, =1{[1 vûļñéŕåбîļîţý ðéţéçţéð one two three]}other{[# vûļñéŕåбîļîţîéš ðéţéçţéð one two three]}}"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | failureTitle": {
+    "message": "[Îñçļûðéš ƒŕöñţ-éñð ĴåvåŠçŕîþţ ļîбŕåŕîéš ŵîţĥ ķñöŵñ šéçûŕîţý vûļñéŕåбîļîţîéš one two three four five six seven eight nine ten eleven twelve thirteen fourteen]"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | rowSeverityHigh": {
+    "message": "[Ĥîĝĥ one]"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | rowSeverityLow": {
+    "message": "[Ļöŵ one]"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | rowSeverityMedium": {
+    "message": "[Méðîûm one]"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | title": {
+    "message": "[Åvöîðš ƒŕöñţ-éñð ĴåvåŠçŕîþţ ļîбŕåŕîéš ŵîţĥ ķñöŵñ šéçûŕîţý vûļñéŕåбîļîţîéš one two three four five six seven eight nine ten eleven twelve thirteen fourteen]"
+  },
+  "lighthouse-core/audits/dobetterweb/notification-on-start.js | description": {
+    "message": "[Ûšéŕš åŕé mîšţŕûšţƒûļ öƒ öŕ çöñƒûšéð бý šîţéš ţĥåţ ŕéqûéšţ ţö šéñð ñöţîƒîçåţîöñš ŵîţĥöûţ çöñţéxţ. Çöñšîðéŕ ţýîñĝ ţĥé ŕéqûéšţ ţö ûšéŕ ĝéšţûŕéš îñšţéåð. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://web.dev/notification-on-start)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen twenty twentyone twentytwo twentythree twentyfour]"
+  },
+  "lighthouse-core/audits/dobetterweb/notification-on-start.js | failureTitle": {
+    "message": "[Ŕéqûéšţš ţĥé ñöţîƒîçåţîöñ þéŕmîššîöñ öñ þåĝé ļöåð one two three four five six seven eight nine ten]"
+  },
+  "lighthouse-core/audits/dobetterweb/notification-on-start.js | title": {
+    "message": "[Åvöîðš ŕéqûéšţîñĝ ţĥé ñöţîƒîçåţîöñ þéŕmîššîöñ öñ þåĝé ļöåð one two three four five six seven eight nine ten eleven twelve]"
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | columnFailingElem": {
+    "message": "[Fåîļîñĝ Éļéméñţš one two]"
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | description": {
+    "message": "[Þŕévéñţîñĝ þåššŵöŕð þåšţîñĝ ûñðéŕmîñéš ĝööð šéçûŕîţý þöļîçý. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://web.dev/password-inputs-can-be-pasted-into)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen]"
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | failureTitle": {
+    "message": "[Þŕévéñţš ûšéŕš ţö þåšţé îñţö þåššŵöŕð ƒîéļðš one two three four five six seven eight nine]"
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | title": {
+    "message": "[Åļļöŵš ûšéŕš ţö þåšţé îñţö þåššŵöŕð ƒîéļðš one two three four five six seven eight nine]"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | columnProtocol": {
+    "message": "[Þŕöţöçöļ one]"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | description": {
+    "message": "[ĤŢŢÞ/2 öƒƒéŕš måñý бéñéƒîţš övéŕ ĤŢŢÞ/1.1, îñçļûðîñĝ бîñåŕý ĥéåðéŕš, mûļţîþļéxîñĝ, åñð šéŕvéŕ þûšĥ. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://web.dev/uses-http2)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen]"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | displayValue": {
+    "message": "{itemCount,plural, =1{[1 ŕéqûéšţ ñöţ šéŕvéð vîå ĤŢŢÞ/2 one two three four five six seven]}other{[# ŕéqûéšţš ñöţ šéŕvéð vîå ĤŢŢÞ/2 one two three four five six seven]}}"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | failureTitle": {
+    "message": "[Ðöéš ñöţ ûšé ĤŢŢÞ/2 ƒöŕ åļļ öƒ îţš ŕéšöûŕçéš one two three four five six seven eight nine]"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | title": {
+    "message": "[Ûšéš ĤŢŢÞ/2 ƒöŕ îţš öŵñ ŕéšöûŕçéš one two three four five six seven]"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-passive-event-listeners.js | description": {
+    "message": "[Çöñšîðéŕ måŕķîñĝ ýöûŕ ţöûçĥ åñð ŵĥééļ évéñţ ļîšţéñéŕš åš ᐅ`passive`ᐊ ţö îmþŕövé ýöûŕ þåĝé'š šçŕöļļ þéŕƒöŕmåñçé. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://web.dev/uses-passive-event-listeners)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen]"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-passive-event-listeners.js | failureTitle": {
+    "message": "[Ðöéš ñöţ ûšé þåššîvé ļîšţéñéŕš ţö îmþŕövé šçŕöļļîñĝ þéŕƒöŕmåñçé one two three four five six seven eight nine ten eleven twelve]"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-passive-event-listeners.js | title": {
+    "message": "[Ûšéš þåššîvé ļîšţéñéŕš ţö îmþŕövé šçŕöļļîñĝ þéŕƒöŕmåñçé one two three four five six seven eight nine ten eleven]"
+  },
+  "lighthouse-core/audits/errors-in-console.js | columnDesc": {
+    "message": "[Ðéšçŕîþţîöñ one two]"
+  },
+  "lighthouse-core/audits/errors-in-console.js | description": {
+    "message": "[Éŕŕöŕš ļöĝĝéð ţö ţĥé çöñšöļé îñðîçåţé ûñŕéšöļvéð þŕöбļémš. Ţĥéý çåñ çömé ƒŕöm ñéţŵöŕķ ŕéqûéšţ ƒåîļûŕéš åñð öţĥéŕ бŕöŵšéŕ çöñçéŕñš. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://web.dev/errors-in-console)ᐊ one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen twenty twentyone twentytwo]"
+  },
+  "lighthouse-core/audits/errors-in-console.js | failureTitle": {
+    "message": "[Бŕöŵšéŕ éŕŕöŕš ŵéŕé ļöĝĝéð ţö ţĥé çöñšöļé one two three four five six seven eight nine]"
+  },
+  "lighthouse-core/audits/errors-in-console.js | title": {
+    "message": "[Ñö бŕöŵšéŕ éŕŕöŕš ļöĝĝéð ţö ţĥé çöñšöļé one two three four five six seven eight]"
+  },
+  "lighthouse-core/audits/font-display.js | description": {
+    "message": "[Ļévéŕåĝé ţĥé ƒöñţ-ðîšþļåý ÇŠŠ ƒéåţûŕé ţö éñšûŕé ţéxţ îš ûšéŕ-vîšîбļé ŵĥîļé ŵéбƒöñţš åŕé ļöåðîñĝ. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://developers.google.com/web/updates/2016/02/font-display)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen]"
+  },
+  "lighthouse-core/audits/font-display.js | failureTitle": {
+    "message": "[Éñšûŕé ţéxţ ŕémåîñš vîšîбļé ðûŕîñĝ ŵéбƒöñţ ļöåð one two three four five six seven eight nine ten]"
+  },
+  "lighthouse-core/audits/font-display.js | title": {
+    "message": "[Åļļ ţéxţ ŕémåîñš vîšîбļé ðûŕîñĝ ŵéбƒöñţ ļöåðš one two three four five six seven eight nine]"
+  },
+  "lighthouse-core/audits/font-display.js | undeclaredFontURLWarning": {
+    "message": "[Ļîĝĥţĥöûšé ŵåš ûñåбļé ţö åûţömåţîçåļļý çĥéçķ ţĥé ƒöñţ-ðîšþļåý våļûé ƒöŕ ţĥé ƒöļļöŵîñĝ ÛŔĻ: ᐅ{fontURL}ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen]"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | columnActual": {
+    "message": "[Åšþéçţ Ŕåţîö (Åçţûåļ) one two three]"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | columnDisplayed": {
+    "message": "[Åšþéçţ Ŕåţîö (Ðîšþļåýéð) one two three]"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | description": {
+    "message": "[Îmåĝé ðîšþļåý ðîméñšîöñš šĥöûļð måţçĥ ñåţûŕåļ åšþéçţ ŕåţîö. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://web.dev/image-aspect-ratio)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen]"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | failureTitle": {
+    "message": "[Ðîšþļåýš îmåĝéš ŵîţĥ îñçöŕŕéçţ åšþéçţ ŕåţîö one two three four five six seven eight nine]"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | title": {
+    "message": "[Ðîšþļåýš îmåĝéš ŵîţĥ çöŕŕéçţ åšþéçţ ŕåţîö one two three four five six seven eight nine]"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | warningCompute": {
+    "message": "[Îñvåļîð îmåĝé šîžîñĝ îñƒöŕmåţîöñ ᐅ{url}ᐊ one two three four five six seven eight]"
+  },
+  "lighthouse-core/audits/installable-manifest.js | description": {
+    "message": "[Бŕöŵšéŕš çåñ þŕöåçţîvéļý þŕömþţ ûšéŕš ţö åðð ýöûŕ åþþ ţö ţĥéîŕ ĥöméšçŕééñ, ŵĥîçĥ çåñ ļéåð ţö ĥîĝĥéŕ éñĝåĝéméñţ. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://developers.google.com/web/tools/lighthouse/audits/install-prompt)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen twenty]"
+  },
+  "lighthouse-core/audits/installable-manifest.js | failureTitle": {
+    "message": "[Ŵéб åþþ måñîƒéšţ ðöéš ñöţ mééţ ţĥé îñšţåļļåбîļîţý ŕéqûîŕéméñţš one two three four five six seven eight nine ten eleven twelve]"
+  },
+  "lighthouse-core/audits/installable-manifest.js | title": {
+    "message": "[Ŵéб åþþ måñîƒéšţ mééţš ţĥé îñšţåļļåбîļîţý ŕéqûîŕéméñţš one two three four five six seven eight nine ten eleven]"
+  },
+  "lighthouse-core/audits/is-on-https.js | columnInsecureURL": {
+    "message": "[Îñšéçûŕé ÛŔĻ one two]"
+  },
+  "lighthouse-core/audits/is-on-https.js | description": {
+    "message": "[Åļļ šîţéš šĥöûļð бé þŕöţéçţéð ŵîţĥ ĤŢŢÞŠ, évéñ öñéš ţĥåţ ðöñ'ţ ĥåñðļé šéñšîţîvé ðåţå. ĤŢŢÞŠ þŕévéñţš îñţŕûðéŕš ƒŕöm ţåmþéŕîñĝ ŵîţĥ öŕ þåššîvéļý ļîšţéñîñĝ îñ öñ ţĥé çömmûñîçåţîöñš бéţŵééñ ýöûŕ åþþ åñð ýöûŕ ûšéŕš, åñð îš å þŕéŕéqûîšîţé ƒöŕ ĤŢŢÞ/2 åñð måñý ñéŵ ŵéб þļåţƒöŕm ÅÞΚ. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://web.dev/is-on-https)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen twenty twentyone twentytwo twentythree twentyfour twentyfive twentysix twentyseven twentyeight twentynine thirty thirtyone thirtytwo thirtythree thirtyfour thirtyfive thirtysix]"
+  },
+  "lighthouse-core/audits/is-on-https.js | displayValue": {
+    "message": "{itemCount,plural, =1{[1 îñšéçûŕé ŕéqûéšţ ƒöûñð one two three four five]}other{[# îñšéçûŕé ŕéqûéšţš ƒöûñð one two three four five six]}}"
+  },
+  "lighthouse-core/audits/is-on-https.js | failureTitle": {
+    "message": "[Ðöéš ñöţ ûšé ĤŢŢÞŠ one two three four]"
+  },
+  "lighthouse-core/audits/is-on-https.js | title": {
+    "message": "[Ûšéš ĤŢŢÞŠ one two]"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | description": {
+    "message": "[Å ƒåšţ þåĝé ļöåð övéŕ å çéļļûļåŕ ñéţŵöŕķ éñšûŕéš å ĝööð möбîļé ûšéŕ éxþéŕîéñçé. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://developers.google.com/web/tools/lighthouse/audits/fast-3g)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen]"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | displayValueText": {
+    "message": "[Îñţéŕåçţîvé åţ ᐅ{timeInMs, number, seconds}ᐊ š one two three four five]"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | displayValueTextWithOverride": {
+    "message": "[Îñţéŕåçţîvé öñ šîmûļåţéð möбîļé ñéţŵöŕķ åţ ᐅ{timeInMs, number, seconds}ᐊ š one two three four five six seven eight nine ten]"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | explanationLoadSlow": {
+    "message": "[Ýöûŕ þåĝé ļöåðš ţöö šļöŵļý åñð îš ñöţ îñţéŕåçţîvé ŵîţĥîñ 10 šéçöñðš. Ļööķ åţ ţĥé öþþöŕţûñîţîéš åñð ðîåĝñöšţîçš îñ ţĥé \"Þéŕƒöŕmåñçé\" šéçţîöñ ţö ļéåŕñ ĥöŵ ţö îmþŕövé. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen twenty twentyone twentytwo twentythree]"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | failureTitle": {
+    "message": "[Þåĝé ļöåð îš ñöţ ƒåšţ éñöûĝĥ öñ möбîļé ñéţŵöŕķš one two three four five six seven eight nine ten]"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | title": {
+    "message": "[Þåĝé ļöåð îš ƒåšţ éñöûĝĥ öñ möбîļé ñéţŵöŕķš one two three four five six seven eight nine]"
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | columnCategory": {
+    "message": "[Çåţéĝöŕý one]"
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | description": {
+    "message": "[Çöñšîðéŕ ŕéðûçîñĝ ţĥé ţîmé šþéñţ þåŕšîñĝ, çömþîļîñĝ åñð éxéçûţîñĝ ĴŠ. Ýöû måý ƒîñð ðéļîvéŕîñĝ šmåļļéŕ ĴŠ þåýļöåðš ĥéļþš ŵîţĥ ţĥîš. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen twenty]"
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | failureTitle": {
+    "message": "[Mîñîmîžé måîñ-ţĥŕéåð ŵöŕķ one two three]"
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | title": {
+    "message": "[Mîñîmîžéš måîñ-ţĥŕéåð ŵöŕķ one two three]"
+  },
+  "lighthouse-core/audits/manual/pwa-cross-browser.js | description": {
+    "message": "[Ţö ŕéåçĥ ţĥé möšţ ñûmбéŕ öƒ ûšéŕš, šîţéš šĥöûļð ŵöŕķ åçŕöšš évéŕý måĵöŕ бŕöŵšéŕ. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://developers.google.com/web/progressive-web-apps/checklist#site-works-cross-browser)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen]"
+  },
+  "lighthouse-core/audits/manual/pwa-cross-browser.js | title": {
+    "message": "[Šîţé ŵöŕķš çŕöšš-бŕöŵšéŕ one two three]"
+  },
+  "lighthouse-core/audits/manual/pwa-each-page-has-url.js | description": {
+    "message": "[Éñšûŕé îñðîvîðûåļ þåĝéš åŕé ðééþ ļîñķåбļé vîå ÛŔĻ åñð ţĥåţ ÛŔĻš åŕé ûñîqûé ƒöŕ ţĥé þûŕþöšé öƒ šĥåŕéåбîļîţý öñ šöçîåļ méðîå. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://developers.google.com/web/progressive-web-apps/checklist#each-page-has-a-url)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen twenty twentyone]"
+  },
+  "lighthouse-core/audits/manual/pwa-each-page-has-url.js | title": {
+    "message": "[Éåçĥ þåĝé ĥåš å ÛŔĻ one two three four]"
+  },
+  "lighthouse-core/audits/manual/pwa-page-transitions.js | description": {
+    "message": "[Ţŕåñšîţîöñš šĥöûļð ƒééļ šñåþþý åš ýöû ţåþ åŕöûñð, évéñ öñ å šļöŵ ñéţŵöŕķ, å ķéý ţö þéŕçéîvéð þéŕƒöŕmåñçé. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://developers.google.com/web/progressive-web-apps/checklist#page-transitions-dont-feel-like-they-block-on-the-network)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen]"
+  },
+  "lighthouse-core/audits/manual/pwa-page-transitions.js | title": {
+    "message": "[Þåĝé ţŕåñšîţîöñš ðöñ'ţ ƒééļ ļîķé ţĥéý бļöçķ öñ ţĥé ñéţŵöŕķ one two three four five six seven eight nine ten eleven twelve]"
+  },
+  "lighthouse-core/audits/metrics/estimated-input-latency.js | description": {
+    "message": "[Éšţîmåţéð Îñþûţ Ļåţéñçý îš åñ éšţîmåţé öƒ ĥöŵ ļöñĝ ýöûŕ åþþ ţåķéš ţö ŕéšþöñð ţö ûšéŕ îñþûţ, îñ mîļļîšéçöñðš, ðûŕîñĝ ţĥé бûšîéšţ 5š ŵîñðöŵ öƒ þåĝé ļöåð. ΃ ýöûŕ ļåţéñçý îš ĥîĝĥéŕ ţĥåñ 50 mš, ûšéŕš måý þéŕçéîvé ýöûŕ åþþ åš ļåĝĝý. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://developers.google.com/web/tools/lighthouse/audits/estimated-input-latency)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen twenty twentyone twentytwo twentythree twentyfour twentyfive twentysix twentyseven twentyeight twentynine thirty thirtyone]"
+  },
+  "lighthouse-core/audits/metrics/estimated-input-latency.js | title": {
+    "message": "[Éšţîmåţéð Îñþûţ Ļåţéñçý one two three]"
+  },
+  "lighthouse-core/audits/metrics/first-contentful-paint.js | description": {
+    "message": "[Fîŕšţ Çöñţéñţƒûļ Þåîñţ måŕķš ţĥé ţîmé åţ ŵĥîçĥ ţĥé ƒîŕšţ ţéxţ öŕ îmåĝé îš þåîñţéð. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://developers.google.com/web/tools/lighthouse/audits/first-contentful-paint)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen]"
+  },
+  "lighthouse-core/audits/metrics/first-contentful-paint.js | title": {
+    "message": "[Fîŕšţ Çöñţéñţƒûļ Þåîñţ one two three]"
+  },
+  "lighthouse-core/audits/metrics/first-cpu-idle.js | description": {
+    "message": "[Fîŕšţ ÇÞÛ Îðļé måŕķš ţĥé ƒîŕšţ ţîmé åţ ŵĥîçĥ ţĥé þåĝé'š måîñ ţĥŕéåð îš qûîéţ éñöûĝĥ ţö ĥåñðļé îñþûţ. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://developers.google.com/web/tools/lighthouse/audits/first-interactive)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen]"
+  },
+  "lighthouse-core/audits/metrics/first-cpu-idle.js | title": {
+    "message": "[Fîŕšţ ÇÞÛ Îðļé one two]"
+  },
+  "lighthouse-core/audits/metrics/first-meaningful-paint.js | description": {
+    "message": "[Fîŕšţ Méåñîñĝƒûļ Þåîñţ méåšûŕéš ŵĥéñ ţĥé þŕîmåŕý çöñţéñţ öƒ å þåĝé îš vîšîбļé. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://developers.google.com/web/tools/lighthouse/audits/first-meaningful-paint)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen]"
+  },
+  "lighthouse-core/audits/metrics/first-meaningful-paint.js | title": {
+    "message": "[Fîŕšţ Méåñîñĝƒûļ Þåîñţ one two three]"
+  },
+  "lighthouse-core/audits/metrics/interactive.js | description": {
+    "message": "[Ţîmé ţö îñţéŕåçţîvé îš ţĥé åmöûñţ öƒ ţîmé îţ ţåķéš ƒöŕ ţĥé þåĝé ţö бéçömé ƒûļļý îñţéŕåçţîvé. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://developers.google.com/web/tools/lighthouse/audits/consistently-interactive)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen]"
+  },
+  "lighthouse-core/audits/metrics/interactive.js | title": {
+    "message": "[Ţîmé ţö Îñţéŕåçţîvé one two three]"
+  },
+  "lighthouse-core/audits/metrics/max-potential-fid.js | description": {
+    "message": "[Ţĥé måxîmûm þöţéñţîåļ Fîŕšţ Îñþûţ Ðéļåý ţĥåţ ýöûŕ ûšéŕš çöûļð éxþéŕîéñçé îš ţĥé ðûŕåţîöñ, îñ mîļļîšéçöñðš, öƒ ţĥé ļöñĝéšţ ţåšķ. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://developers.google.com/web/updates/2018/05/first-input-delay)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen twenty twentyone twentytwo]"
+  },
+  "lighthouse-core/audits/metrics/max-potential-fid.js | title": {
+    "message": "[Måx Þöţéñţîåļ Fîŕšţ Îñþûţ Ðéļåý one two three four five six seven]"
+  },
+  "lighthouse-core/audits/metrics/speed-index.js | description": {
+    "message": "[Šþééð Îñðéx šĥöŵš ĥöŵ qûîçķļý ţĥé çöñţéñţš öƒ å þåĝé åŕé vîšîбļý þöþûļåţéð. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://developers.google.com/web/tools/lighthouse/audits/speed-index)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen]"
+  },
+  "lighthouse-core/audits/metrics/speed-index.js | title": {
+    "message": "[Šþééð Îñðéx one two]"
+  },
+  "lighthouse-core/audits/metrics/total-blocking-time.js | description": {
+    "message": "[Šûm öƒ åļļ ţîmé þéŕîöðš бéţŵééñ FÇÞ åñð Ţîmé ţö Îñţéŕåçţîvé, ŵĥéñ ţåšķ ļéñĝţĥ éxçééðéð 50mš, éxþŕéššéð îñ mîļļîšéçöñðš. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen]"
+  },
+  "lighthouse-core/audits/metrics/total-blocking-time.js | title": {
+    "message": "[Ţöţåļ Бļöçķîñĝ Ţîmé one two three]"
+  },
+  "lighthouse-core/audits/network-rtt.js | description": {
+    "message": "[Ñéţŵöŕķ ŕöûñð ţŕîþ ţîméš (ŔŢŢ) ĥåvé å ļåŕĝé îmþåçţ öñ þéŕƒöŕmåñçé. ΃ ţĥé ŔŢŢ ţö åñ öŕîĝîñ îš ĥîĝĥ, îţ'š åñ îñðîçåţîöñ ţĥåţ šéŕvéŕš çļöšéŕ ţö ţĥé ûšéŕ çöûļð îmþŕövé þéŕƒöŕmåñçé. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://hpbn.co/primer-on-latency-and-bandwidth/)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen twenty twentyone twentytwo twentythree twentyfour twentyfive twentysix]"
+  },
+  "lighthouse-core/audits/network-rtt.js | title": {
+    "message": "[Ñéţŵöŕķ Ŕöûñð Ţŕîþ Ţîméš one two three four five]"
+  },
+  "lighthouse-core/audits/network-server-latency.js | description": {
+    "message": "[Šéŕvéŕ ļåţéñçîéš çåñ îmþåçţ ŵéб þéŕƒöŕmåñçé. ΃ ţĥé šéŕvéŕ ļåţéñçý öƒ åñ öŕîĝîñ îš ĥîĝĥ, îţ'š åñ îñðîçåţîöñ ţĥé šéŕvéŕ îš övéŕļöåðéð öŕ ĥåš þööŕ бåçķéñð þéŕƒöŕmåñçé. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://hpbn.co/primer-on-web-performance/#analyzing-the-resource-waterfall)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen twenty twentyone twentytwo twentythree twentyfour twentyfive]"
+  },
+  "lighthouse-core/audits/network-server-latency.js | title": {
+    "message": "[Šéŕvéŕ Бåçķéñð Ļåţéñçîéš one two three]"
+  },
+  "lighthouse-core/audits/offline-start-url.js | description": {
+    "message": "[Å šéŕvîçé ŵöŕķéŕ éñåбļéš ýöûŕ ŵéб åþþ ţö бé ŕéļîåбļé îñ ûñþŕéðîçţåбļé ñéţŵöŕķ çöñðîţîöñš. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen]"
+  },
+  "lighthouse-core/audits/offline-start-url.js | failureTitle": {
+    "message": "[ᐅ`start_url`ᐊ ðöéš ñöţ ŕéšþöñð ŵîţĥ å 200 ŵĥéñ öƒƒļîñé one two three four five six seven eight nine]"
+  },
+  "lighthouse-core/audits/offline-start-url.js | title": {
+    "message": "[ᐅ`start_url`ᐊ ŕéšþöñðš ŵîţĥ å 200 ŵĥéñ öƒƒļîñé one two three four five six seven eight]"
+  },
+  "lighthouse-core/audits/offline-start-url.js | warningCantStart": {
+    "message": "[Ļîĝĥţĥöûšé çöûļðñ'ţ ŕéåð ţĥé ᐅ`start_url`ᐊ ƒŕöm ţĥé måñîƒéšţ. Åš å ŕéšûļţ, ţĥé ᐅ`start_url`ᐊ ŵåš åššûméð ţö бé ţĥé ðöçûméñţ'š ÛŔĻ. Éŕŕöŕ méššåĝé: 'ᐅ{manifestWarning}ᐊ'. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen twenty]"
+  },
+  "lighthouse-core/audits/performance-budget.js | columnOverBudget": {
+    "message": "[Övéŕ Бûðĝéţ one two]"
+  },
+  "lighthouse-core/audits/performance-budget.js | description": {
+    "message": "[Ķééþ ţĥé qûåñţîţý åñð šîžé öƒ ñéţŵöŕķ ŕéqûéšţš ûñðéŕ ţĥé ţåŕĝéţš šéţ бý ţĥé þŕövîðéð þéŕƒöŕmåñçé бûðĝéţ. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://developers.google.com/web/tools/lighthouse/audits/budgets)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen]"
+  },
+  "lighthouse-core/audits/performance-budget.js | requestCountOverBudget": {
+    "message": "{count,plural, =1{[1 ŕéqûéšţ one two]}other{[# ŕéqûéšţš one two]}}"
+  },
+  "lighthouse-core/audits/performance-budget.js | title": {
+    "message": "[Þéŕƒöŕmåñçé бûðĝéţ one two three]"
+  },
+  "lighthouse-core/audits/redirects-http.js | description": {
+    "message": "[΃ ýöû'vé åļŕéåðý šéţ ûþ ĤŢŢÞŠ, måķé šûŕé ţĥåţ ýöû ŕéðîŕéçţ åļļ ĤŢŢÞ ţŕ僃îç ţö ĤŢŢÞŠ îñ öŕðéŕ ţö éñåбļé šéçûŕé ŵéб ƒéåţûŕéš ƒöŕ åļļ ýöûŕ ûšéŕš. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://developers.google.com/web/tools/lighthouse/audits/http-redirects-to-https)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen twenty twentyone twentytwo twentythree]"
+  },
+  "lighthouse-core/audits/redirects-http.js | failureTitle": {
+    "message": "[Ðöéš ñöţ ŕéðîŕéçţ ĤŢŢÞ ţŕ僃îç ţö ĤŢŢÞŠ one two three four five six seven eight]"
+  },
+  "lighthouse-core/audits/redirects-http.js | title": {
+    "message": "[Ŕéðîŕéçţš ĤŢŢÞ ţŕ僃îç ţö ĤŢŢÞŠ one two three four five six seven]"
+  },
+  "lighthouse-core/audits/redirects.js | description": {
+    "message": "[Ŕéðîŕéçţš îñţŕöðûçé åððîţîöñåļ ðéļåýš бéƒöŕé ţĥé þåĝé çåñ бé ļöåðéð. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://developers.google.com/web/tools/lighthouse/audits/redirects)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen]"
+  },
+  "lighthouse-core/audits/redirects.js | title": {
+    "message": "[Åvöîð mûļţîþļé þåĝé ŕéðîŕéçţš one two three four five six seven]"
+  },
+  "lighthouse-core/audits/resource-summary.js | description": {
+    "message": "[Ţö šéţ бûðĝéţš ƒöŕ ţĥé qûåñţîţý åñð šîžé öƒ þåĝé ŕéšöûŕçéš, åðð å бûðĝéţ.ĵšöñ ƒîļé. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://developers.google.com/web/tools/lighthouse/audits/budgets)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen]"
+  },
+  "lighthouse-core/audits/resource-summary.js | displayValue": {
+    "message": "{requestCount,plural, =1{[1 ŕéqûéšţ • ᐅ{byteCount, number, bytes}ᐊ ĶБ one two three four]}other{[# ŕéqûéšţš • ᐅ{byteCount, number, bytes}ᐊ ĶБ one two three four]}}"
+  },
+  "lighthouse-core/audits/resource-summary.js | title": {
+    "message": "[Ķééþ ŕéqûéšţ çöûñţš ļöŵ åñð ţŕåñšƒéŕ šîžéš šmåļļ one two three four five six seven eight nine ten]"
+  },
+  "lighthouse-core/audits/seo/canonical.js | description": {
+    "message": "[Çåñöñîçåļ ļîñķš šûĝĝéšţ ŵĥîçĥ ÛŔĻ ţö šĥöŵ îñ šéåŕçĥ ŕéšûļţš. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://web.dev/canonical)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen]"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationConflict": {
+    "message": "[Mûļţîþļé çöñƒļîçţîñĝ ÛŔĻš (ᐅ{urlList}ᐊ) one two three four five six seven]"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationDifferentDomain": {
+    "message": "[Þöîñţš ţö å ðéŕéñţ ðömåîñ (ᐅ{url}ᐊ) one two three four five six seven]"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationInvalid": {
+    "message": "[Îñvåļîð ÛŔĻ (ᐅ{url}ᐊ) one two three four]"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationPointsElsewhere": {
+    "message": "[Þöîñţš ţö åñöţĥéŕ ᐅ`hreflang`ᐊ ļöçåţîöñ (ᐅ{url}ᐊ) one two three four five six seven eight]"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationRelative": {
+    "message": "[Ŕéļåţîvé ÛŔĻ (ᐅ{url}ᐊ) one two three four]"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationRoot": {
+    "message": "[Þöîñţš ţö ţĥé ðömåîñ'š ŕööţ ÛŔĻ (ţĥé ĥöméþåĝé), îñšţéåð öƒ åñ éqûîvåļéñţ þåĝé öƒ çöñţéñţ one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen]"
+  },
+  "lighthouse-core/audits/seo/canonical.js | failureTitle": {
+    "message": "[Ðöçûméñţ ðöéš ñöţ ĥåvé å våļîð ᐅ`rel=canonical`ᐊ one two three four five six seven]"
+  },
+  "lighthouse-core/audits/seo/canonical.js | title": {
+    "message": "[Ðöçûméñţ ĥåš å våļîð ᐅ`rel=canonical`ᐊ one two three four five]"
+  },
+  "lighthouse-core/audits/seo/font-size.js | description": {
+    "message": "[Föñţ šîžéš ļéšš ţĥåñ 12þx åŕé ţöö šmåļļ ţö бé ļéĝîбļé åñð ŕéqûîŕé möбîļé vîšîţöŕš ţö “þîñçĥ ţö žööm” îñ öŕðéŕ ţö ŕéåð. Šţŕîvé ţö ĥåvé >60% oƒ þåĝé ţéxţ ≥12þx. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://web.dev/font-size)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen twenty twentyone twentytwo twentythree twentyfour twentyfive]"
+  },
+  "lighthouse-core/audits/seo/font-size.js | displayValue": {
+    "message": "[ᐅ{decimalProportion, number, extendedPercent}ᐊ ļéĝîбļé ţéxţ one two three four]"
+  },
+  "lighthouse-core/audits/seo/font-size.js | explanationViewport": {
+    "message": "[Ţéxţ îš îļļéĝîбļé бéçåûšé ţĥéŕé'š ñö vîéŵþöŕţ méţå ţåĝ öþţîmîžéð ƒöŕ möбîļé šçŕééñš. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen]"
+  },
+  "lighthouse-core/audits/seo/font-size.js | explanationWithDisclaimer": {
+    "message": "[ᐅ{decimalProportion, number, extendedPercent}ᐊ öƒ ţéxţ îš ţöö šmåļļ (бåšéð öñ ᐅ{decimalProportionVisited, number, extendedPercent}ᐊ šåmþļé). one two three four five six seven eight nine ten]"
+  },
+  "lighthouse-core/audits/seo/font-size.js | failureTitle": {
+    "message": "[Ðöçûméñţ ðöéšñ'ţ ûšé ļéĝîбļé ƒöñţ šîžéš one two three four five six seven eight]"
+  },
+  "lighthouse-core/audits/seo/font-size.js | title": {
+    "message": "[Ðöçûméñţ ûšéš ļéĝîбļé ƒöñţ šîžéš one two three four five six seven]"
+  },
+  "lighthouse-core/audits/seo/hreflang.js | description": {
+    "message": "[ĥŕéƒļåñĝ ļîñķš ţéļļ šéåŕçĥ éñĝîñéš ŵĥåţ véŕšîöñ öƒ å þåĝé ţĥéý šĥöûļð ļîšţ îñ šéåŕçĥ ŕéšûļţš ƒöŕ å ĝîvéñ ļåñĝûåĝé öŕ ŕéĝîöñ. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://web.dev/hreflang)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen twenty twentyone]"
+  },
+  "lighthouse-core/audits/seo/hreflang.js | failureTitle": {
+    "message": "[Ðöçûméñţ ðöéšñ'ţ ĥåvé å våļîð ᐅ`hreflang`ᐊ one two three four five six seven]"
+  },
+  "lighthouse-core/audits/seo/hreflang.js | title": {
+    "message": "[Ðöçûméñţ ĥåš å våļîð ᐅ`hreflang`ᐊ one two three four five]"
+  },
+  "lighthouse-core/audits/seo/http-status-code.js | description": {
+    "message": "[Þåĝéš ŵîţĥ ûñšûççéššƒûļ ĤŢŢÞ šţåţûš çöðéš måý ñöţ бé îñðéxéð þŕöþéŕļý. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://web.dev/http-status-code)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen]"
+  },
+  "lighthouse-core/audits/seo/http-status-code.js | failureTitle": {
+    "message": "[Þåĝé ĥåš ûñšûççéššƒûļ ĤŢŢÞ šţåţûš çöðé one two three four five six seven eight]"
+  },
+  "lighthouse-core/audits/seo/http-status-code.js | title": {
+    "message": "[Þåĝé ĥåš šûççéššƒûļ ĤŢŢÞ šţåţûš çöðé one two three four five six seven eight]"
+  },
+  "lighthouse-core/audits/seo/is-crawlable.js | description": {
+    "message": "[Šéåŕçĥ éñĝîñéš åŕé ûñåбļé ţö îñçļûðé ýöûŕ þåĝéš îñ šéåŕçĥ ŕéšûļţš îƒ ţĥéý ðöñ'ţ ĥåvé þéŕmîššîöñ ţö çŕåŵļ ţĥém. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://web.dev/is-crawable)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen twenty]"
+  },
+  "lighthouse-core/audits/seo/is-crawlable.js | failureTitle": {
+    "message": "[Þåĝé îš бļöçķéð ƒŕöm îñðéxîñĝ one two three four five six seven]"
+  },
+  "lighthouse-core/audits/seo/is-crawlable.js | title": {
+    "message": "[Þåĝé îšñ’ţ бļöçķéð ƒŕöm îñðéxîñĝ one two three four five six seven]"
+  },
+  "lighthouse-core/audits/seo/link-text.js | description": {
+    "message": "[Ðéšçŕîþţîvé ļîñķ ţéxţ ĥéļþš šéåŕçĥ éñĝîñéš ûñðéŕšţåñð ýöûŕ çöñţéñţ. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://web.dev/link-text)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen]"
+  },
+  "lighthouse-core/audits/seo/link-text.js | displayValue": {
+    "message": "{itemCount,plural, =1{[1 ļîñķ ƒöûñð one two]}other{[# ļîñķš ƒöûñð one two]}}"
+  },
+  "lighthouse-core/audits/seo/link-text.js | failureTitle": {
+    "message": "[Ļîñķš ðö ñöţ ĥåvé ðéšçŕîþţîvé ţéxţ one two three four five six seven]"
+  },
+  "lighthouse-core/audits/seo/link-text.js | title": {
+    "message": "[Ļîñķš ĥåvé ðéšçŕîþţîvé ţéxţ one two three four five six]"
+  },
+  "lighthouse-core/audits/seo/manual/structured-data.js | description": {
+    "message": "[Ŕûñ ţĥé ᐅ[ᐊŠţŕûçţûŕéð Ðåţå Ţéšţîñĝ Ţööļᐅ](https://search.google.com/structured-data/testing-tool/)ᐊ åñð ţĥé ᐅ[ᐊŠţŕûçţûŕéð Ðåţå Ļîñţéŕᐅ](http://linter.structured-data.org/)ᐊ ţö våļîðåţé šţŕûçţûŕéð ðåţå. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://web.dev/structured-data)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen twenty]"
+  },
+  "lighthouse-core/audits/seo/manual/structured-data.js | title": {
+    "message": "[Šţŕûçţûŕéð ðåţå îš våļîð one two three four five]"
+  },
+  "lighthouse-core/audits/seo/meta-description.js | description": {
+    "message": "[Méţå ðéšçŕîþţîöñš måý бé îñçļûðéð îñ šéåŕçĥ ŕéšûļţš ţö çöñçîšéļý šûmmåŕîžé þåĝé çöñţéñţ. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://web.dev/meta-description)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen]"
+  },
+  "lighthouse-core/audits/seo/meta-description.js | explanation": {
+    "message": "[Ðéšçŕîþţîöñ ţéxţ îš émþţý. one two three four five six]"
+  },
+  "lighthouse-core/audits/seo/meta-description.js | failureTitle": {
+    "message": "[Ðöçûméñţ ðöéš ñöţ ĥåvé å méţå ðéšçŕîþţîöñ one two three four five six seven eight nine]"
+  },
+  "lighthouse-core/audits/seo/meta-description.js | title": {
+    "message": "[Ðöçûméñţ ĥåš å méţå ðéšçŕîþţîöñ one two three four five six seven]"
+  },
+  "lighthouse-core/audits/seo/plugins.js | description": {
+    "message": "[Šéåŕçĥ éñĝîñéš çåñ'ţ îñðéx þļûĝîñ çöñţéñţ, åñð måñý ðévîçéš ŕéšţŕîçţ þļûĝîñš öŕ ðöñ'ţ šûþþöŕţ ţĥém. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://web.dev/plugins)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen]"
+  },
+  "lighthouse-core/audits/seo/plugins.js | failureTitle": {
+    "message": "[Ðöçûméñţ ûšéš þļûĝîñš one two three]"
+  },
+  "lighthouse-core/audits/seo/plugins.js | title": {
+    "message": "[Ðöçûméñţ åvöîðš þļûĝîñš one two three]"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | description": {
+    "message": "[΃ ýöûŕ ŕöбöţš.ţxţ ƒîļé îš måļƒöŕméð, çŕåŵļéŕš måý ñöţ бé åбļé ţö ûñðéŕšţåñð ĥöŵ ýöû ŵåñţ ýöûŕ ŵéбšîţé ţö бé çŕåŵļéð öŕ îñðéxéð. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://web.dev/robots-txt)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen twenty twentyone twentytwo]"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | displayValueHttpBadCode": {
+    "message": "[Ŕéqûéšţ ƒöŕ ŕöбöţš.ţxţ ŕéţûŕñéð ĤŢŢÞ šţåţûš: ᐅ{statusCode}ᐊ one two three four five six seven eight nine ten]"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | displayValueValidationError": {
+    "message": "{itemCount,plural, =1{[1 éŕŕöŕ ƒöûñð one two]}other{[# éŕŕöŕš ƒöûñð one two]}}"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | explanation": {
+    "message": "[Ļîĝĥţĥöûšé ŵåš ûñåбļé ţö ðöŵñļöåð å ŕöбöţš.ţxţ ƒîļé one two three four five six seven eight nine ten eleven]"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | failureTitle": {
+    "message": "[ŕöбöţš.ţxţ îš ñöţ våļîð one two three four five]"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | title": {
+    "message": "[ŕöбöţš.ţxţ îš våļîð one two three]"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | description": {
+    "message": "[Îñţéŕåçţîvé éļéméñţš ļîķé бûţţöñš åñð ļîñķš šĥöûļð бé ļåŕĝé éñöûĝĥ (48x48þx), åñð ĥåvé éñöûĝĥ šþåçé åŕöûñð ţĥém, ţö бé éåšý éñöûĝĥ ţö ţåþ ŵîţĥöûţ övéŕļåþþîñĝ öñţö öţĥéŕ éļéméñţš. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://web.dev/tap-targets)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen twenty twentyone twentytwo twentythree twentyfour twentyfive twentysix]"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | displayValue": {
+    "message": "[ᐅ{decimalProportion, number, percent}ᐊ åþþŕöþŕîåţéļý šîžéð ţåþ ţåŕĝéţš one two three four five six seven eight]"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | explanationViewportMetaNotOptimized": {
+    "message": "[Ţåþ ţåŕĝéţš åŕé ţöö šmåļļ бéçåûšé ţĥéŕé'š ñö vîéŵþöŕţ méţå ţåĝ öþţîmîžéð ƒöŕ möбîļé šçŕééñš one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen]"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | failureTitle": {
+    "message": "[Ţåþ ţåŕĝéţš åŕé ñöţ šîžéð åþþŕöþŕîåţéļý one two three four five six seven eight]"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | overlappingTargetHeader": {
+    "message": "[Övéŕļåþþîñĝ Ţåŕĝéţ one two three]"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | tapTargetHeader": {
+    "message": "[Ţåþ Ţåŕĝéţ one two]"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | title": {
+    "message": "[Ţåþ ţåŕĝéţš åŕé šîžéð åþþŕöþŕîåţéļý one two three four five six seven eight]"
+  },
+  "lighthouse-core/audits/service-worker.js | description": {
+    "message": "[Ţĥé šéŕvîçé ŵöŕķéŕ îš ţĥé ţéçĥñöļöĝý ţĥåţ éñåбļéš ýöûŕ åþþ ţö ûšé måñý Þŕöĝŕéššîvé Ŵéб Åþþ ƒéåţûŕéš, šûçĥ åš öƒƒļîñé, åðð ţö ĥöméšçŕééñ, åñð þûšĥ ñöţîƒîçåţîöñš. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://developers.google.com/web/tools/lighthouse/audits/registered-service-worker)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen twenty twentyone twentytwo twentythree twentyfour twentyfive]"
+  },
+  "lighthouse-core/audits/service-worker.js | explanationBadManifest": {
+    "message": "[Ţĥîš þåĝé îš çöñţŕöļļéð бý å šéŕvîçé ŵöŕķéŕ, ĥöŵévéŕ ñö ᐅ`start_url`ᐊ ŵåš ƒöûñð бéçåûšé måñîƒéšţ ƒåîļéð ţö þåŕšé åš våļîð ĴŠÖÑ one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen]"
+  },
+  "lighthouse-core/audits/service-worker.js | explanationBadStartUrl": {
+    "message": "[Ţĥîš þåĝé îš çöñţŕöļļéð бý å šéŕvîçé ŵöŕķéŕ, ĥöŵévéŕ ţĥé ᐅ`start_url`ᐊ (ᐅ{startUrl}ᐊ) îš ñöţ îñ ţĥé šéŕvîçé ŵöŕķéŕ'š šçöþé (ᐅ{scopeUrl}ᐊ) one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen]"
+  },
+  "lighthouse-core/audits/service-worker.js | explanationNoManifest": {
+    "message": "[Ţĥîš þåĝé îš çöñţŕöļļéð бý å šéŕvîçé ŵöŕķéŕ, ĥöŵévéŕ ñö ᐅ`start_url`ᐊ ŵåš ƒöûñð бéçåûšé ñö måñîƒéšţ ŵåš ƒéţçĥéð. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen]"
+  },
+  "lighthouse-core/audits/service-worker.js | explanationOutOfScope": {
+    "message": "[Ţĥîš öŕîĝîñ ĥåš öñé öŕ möŕé šéŕvîçé ŵöŕķéŕš, ĥöŵévéŕ ţĥé þåĝé (ᐅ{pageUrl}ᐊ) îš ñöţ îñ šçöþé. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen]"
+  },
+  "lighthouse-core/audits/service-worker.js | failureTitle": {
+    "message": "[Ðöéš ñöţ ŕéĝîšţéŕ å šéŕvîçé ŵöŕķéŕ ţĥåţ çöñţŕöļš þåĝé åñð ᐅ`start_url`ᐊ one two three four five six seven eight nine ten eleven twelve]"
+  },
+  "lighthouse-core/audits/service-worker.js | title": {
+    "message": "[Ŕéĝîšţéŕš å šéŕvîçé ŵöŕķéŕ ţĥåţ çöñţŕöļš þåĝé åñð ᐅ`start_url`ᐊ one two three four five six seven eight nine ten eleven]"
+  },
+  "lighthouse-core/audits/splash-screen.js | description": {
+    "message": "[Å ţĥéméð šþļåšĥ šçŕééñ éñšûŕéš å ĥîĝĥ-qûåļîţý éxþéŕîéñçé ŵĥéñ ûšéŕš ļåûñçĥ ýöûŕ åþþ ƒŕöm ţĥéîŕ ĥöméšçŕééñš. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://developers.google.com/web/tools/lighthouse/audits/custom-splash-screen)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen]"
+  },
+  "lighthouse-core/audits/splash-screen.js | failureTitle": {
+    "message": "[Κ ñöţ çöñƒîĝûŕéð ƒöŕ å çûšţöm šþļåšĥ šçŕééñ one two three four five six seven eight nine]"
+  },
+  "lighthouse-core/audits/splash-screen.js | title": {
+    "message": "[Çöñƒîĝûŕéð ƒöŕ å çûšţöm šþļåšĥ šçŕééñ one two three four five six seven eight]"
+  },
+  "lighthouse-core/audits/themed-omnibox.js | description": {
+    "message": "[Ţĥé бŕöŵšéŕ åððŕéšš бåŕ çåñ бé ţĥéméð ţö måţçĥ ýöûŕ šîţé. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://developers.google.com/web/tools/lighthouse/audits/address-bar)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen]"
+  },
+  "lighthouse-core/audits/themed-omnibox.js | failureTitle": {
+    "message": "[Ðöéš ñöţ šéţ å ţĥémé çöļöŕ ƒöŕ ţĥé åððŕéšš бåŕ. one two three four five six seven eight nine ten]"
+  },
+  "lighthouse-core/audits/themed-omnibox.js | title": {
+    "message": "[Šéţš å ţĥémé çöļöŕ ƒöŕ ţĥé åððŕéšš бåŕ. one two three four five six seven eight]"
+  },
+  "lighthouse-core/audits/third-party-summary.js | columnBlockingTime": {
+    "message": "[Måîñ-Ţĥŕéåð Бļöçķîñĝ Ţîmé one two three]"
+  },
+  "lighthouse-core/audits/third-party-summary.js | columnThirdParty": {
+    "message": "[Ţĥîŕð-Þåŕţý one two]"
+  },
+  "lighthouse-core/audits/third-party-summary.js | description": {
+    "message": "[Ţĥîŕð-þåŕţý çöðé çåñ šîĝñîƒîçåñţļý îmþåçţ ļöåð þéŕƒöŕmåñçé. Ļîmîţ ţĥé ñûmбéŕ öƒ ŕéðûñðåñţ ţĥîŕð-þåŕţý þŕövîðéŕš åñð ţŕý ţö ļöåð ţĥîŕð-þåŕţý çöðé åƒţéŕ ýöûŕ þåĝé ĥåš þŕîmåŕîļý ƒîñîšĥéð ļöåðîñĝ. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/loading-third-party-javascript/)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen twenty twentyone twentytwo twentythree twentyfour twentyfive twentysix twentyseven twentyeight]"
+  },
+  "lighthouse-core/audits/third-party-summary.js | displayValue": {
+    "message": "[Ţĥîŕð-þåŕţý çöðé бļöçķéð ţĥé måîñ ţĥŕéåð ƒöŕ ᐅ{timeInMs, number, milliseconds}ᐊ mš one two three four five six seven eight nine ten eleven]"
+  },
+  "lighthouse-core/audits/third-party-summary.js | failureTitle": {
+    "message": "[Ŕéðûçé ţĥé îmþåçţ öƒ ţĥîŕð-þåŕţý çöðé one two three four five six seven eight]"
+  },
+  "lighthouse-core/audits/third-party-summary.js | title": {
+    "message": "[Ţĥîŕð-Þåŕţý ûšåĝé one two three]"
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | description": {
+    "message": "[Ţîmé Ţö Fîŕšţ Бýţé îðéñţîƒîéš ţĥé ţîmé åţ ŵĥîçĥ ýöûŕ šéŕvéŕ šéñðš å ŕéšþöñšé. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://developers.google.com/web/tools/lighthouse/audits/ttfb)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen]"
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | displayValue": {
+    "message": "[Ŕööţ ðöçûméñţ ţööķ ᐅ{timeInMs, number, milliseconds}ᐊ mš one two three four five six]"
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | failureTitle": {
+    "message": "[Ŕéðûçé šéŕvéŕ ŕéšþöñšé ţîméš (ŢŢFБ) one two three four five six seven eight]"
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | title": {
+    "message": "[Šéŕvéŕ ŕéšþöñšé ţîméš åŕé ļöŵ (ŢŢFБ) one two three four five six seven eight]"
+  },
+  "lighthouse-core/audits/user-timings.js | columnDuration": {
+    "message": "[Ðûŕåţîöñ one]"
+  },
+  "lighthouse-core/audits/user-timings.js | columnStartTime": {
+    "message": "[Šţåŕţ Ţîmé one two]"
+  },
+  "lighthouse-core/audits/user-timings.js | columnType": {
+    "message": "[Ţýþé one]"
+  },
+  "lighthouse-core/audits/user-timings.js | description": {
+    "message": "[Çöñšîðéŕ îñšţŕûméñţîñĝ ýöûŕ åþþ ŵîţĥ ţĥé Ûšéŕ Ţîmîñĝ ÅÞÎ ţö méåšûŕé ýöûŕ åþþ'š ŕéåļ-ŵöŕļð þéŕƒöŕmåñçé ðûŕîñĝ ķéý ûšéŕ éxþéŕîéñçéš. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://developers.google.com/web/tools/lighthouse/audits/user-timing)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen twenty twentyone twentytwo]"
+  },
+  "lighthouse-core/audits/user-timings.js | displayValue": {
+    "message": "{itemCount,plural, =1{[1 ûšéŕ ţîmîñĝ one two]}other{[# ûšéŕ ţîmîñĝš one two]}}"
+  },
+  "lighthouse-core/audits/user-timings.js | title": {
+    "message": "[Ûšéŕ Ţîmîñĝ måŕķš åñð méåšûŕéš one two three four five six seven]"
+  },
+  "lighthouse-core/audits/uses-rel-preconnect.js | crossoriginWarning": {
+    "message": "[Å þŕéçöññéçţ <link> ŵåš ƒöûñð ƒöŕ \"ᐅ{securityOrigin}ᐊ\" бûţ ŵåš ñöţ ûšéð бý ţĥé бŕöŵšéŕ. Çĥéçķ ţĥåţ ýöû åŕé ûšîñĝ ţĥé ᐅ`crossorigin`ᐊ åţţŕîбûţé þŕöþéŕļý. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen]"
+  },
+  "lighthouse-core/audits/uses-rel-preconnect.js | description": {
+    "message": "[Çöñšîðéŕ åððîñĝ ᐅ`preconnect`ᐊ öŕ ᐅ`dns-prefetch`ᐊ ŕéšöûŕçé ĥîñţš ţö éšţåбļîšĥ éåŕļý çöññéçţîöñš ţö îmþöŕţåñţ ţĥîŕð-þåŕţý öŕîĝîñš. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://developers.google.com/web/fundamentals/performance/resource-prioritization#preconnect)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen]"
+  },
+  "lighthouse-core/audits/uses-rel-preconnect.js | title": {
+    "message": "[Þŕéçöññéçţ ţö ŕéqûîŕéð öŕîĝîñš one two three four five six seven]"
+  },
+  "lighthouse-core/audits/uses-rel-preload.js | crossoriginWarning": {
+    "message": "[Å þŕéļöåð <link> ŵåš ƒöûñð ƒöŕ \"ᐅ{preloadURL}ᐊ\" бûţ ŵåš ñöţ ûšéð бý ţĥé бŕöŵšéŕ. Çĥéçķ ţĥåţ ýöû åŕé ûšîñĝ ţĥé ᐅ`crossorigin`ᐊ åţţŕîбûţé þŕöþéŕļý. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen]"
+  },
+  "lighthouse-core/audits/uses-rel-preload.js | description": {
+    "message": "[Çöñšîðéŕ ûšîñĝ ᐅ`<link rel=preload>`ᐊ ţö þŕîöŕîţîžé ƒéţçĥîñĝ ŕéšöûŕçéš ţĥåţ åŕé çûŕŕéñţļý ŕéqûéšţéð ļåţéŕ îñ þåĝé ļöåð. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://developers.google.com/web/tools/lighthouse/audits/preload)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen]"
+  },
+  "lighthouse-core/audits/uses-rel-preload.js | title": {
+    "message": "[Þŕéļöåð ķéý ŕéqûéšţš one two three]"
+  },
+  "lighthouse-core/audits/viewport.js | description": {
+    "message": "[Åðð å ᐅ`<meta name=\"viewport\">`ᐊ ţåĝ ţö öþţîmîžé ýöûŕ åþþ ƒöŕ möбîļé šçŕééñš. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://developers.google.com/web/tools/lighthouse/audits/has-viewport-meta-tag)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen]"
+  },
+  "lighthouse-core/audits/viewport.js | explanationNoTag": {
+    "message": "[Ñö ᐅ`<meta name=\"viewport\">`ᐊ ţåĝ ƒöûñð one two three four]"
+  },
+  "lighthouse-core/audits/viewport.js | failureTitle": {
+    "message": "[Ðöéš ñöţ ĥåvé å ᐅ`<meta name=\"viewport\">`ᐊ ţåĝ ŵîţĥ ᐅ`width`ᐊ öŕ ᐅ`initial-scale`ᐊ one two three four five six seven eight]"
+  },
+  "lighthouse-core/audits/viewport.js | title": {
+    "message": "[Ĥåš å ᐅ`<meta name=\"viewport\">`ᐊ ţåĝ ŵîţĥ ᐅ`width`ᐊ öŕ ᐅ`initial-scale`ᐊ one two three four five six seven]"
+  },
+  "lighthouse-core/audits/without-javascript.js | description": {
+    "message": "[Ýöûŕ åþþ šĥöûļð ðîšþļåý šömé çöñţéñţ ŵĥéñ ĴåvåŠçŕîþţ îš ðîšåбļéð, évéñ îƒ îţ'š ĵûšţ å ŵåŕñîñĝ ţö ţĥé ûšéŕ ţĥåţ ĴåvåŠçŕîþţ îš ŕéqûîŕéð ţö ûšé ţĥé åþþ. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://developers.google.com/web/tools/lighthouse/audits/no-js)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen twenty twentyone twentytwo twentythree twentyfour]"
+  },
+  "lighthouse-core/audits/without-javascript.js | explanation": {
+    "message": "[Ţĥé þåĝé бöðý šĥöûļð ŕéñðéŕ šömé çöñţéñţ îƒ îţš šçŕîþţš åŕé ñöţ åvåîļåбļé. one two three four five six seven eight nine ten eleven twelve thirteen fourteen]"
+  },
+  "lighthouse-core/audits/without-javascript.js | failureTitle": {
+    "message": "[Ðöéš ñöţ þŕövîðé ƒåļļбåçķ çöñţéñţ ŵĥéñ ĴåvåŠçŕîþţ îš ñöţ åvåîļåбļé one two three four five six seven eight nine ten eleven twelve thirteen]"
+  },
+  "lighthouse-core/audits/without-javascript.js | title": {
+    "message": "[Çöñţåîñš šömé çöñţéñţ ŵĥéñ ĴåvåŠçŕîþţ îš ñöţ åvåîļåбļé one two three four five six seven eight nine ten eleven]"
+  },
+  "lighthouse-core/audits/works-offline.js | description": {
+    "message": "[΃ ýöû'ŕé бûîļðîñĝ å Þŕöĝŕéššîvé Ŵéб Åþþ, çöñšîðéŕ ûšîñĝ å šéŕvîçé ŵöŕķéŕ šö ţĥåţ ýöûŕ åþþ çåñ ŵöŕķ öƒƒļîñé. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen twenty]"
+  },
+  "lighthouse-core/audits/works-offline.js | failureTitle": {
+    "message": "[Çûŕŕéñţ þåĝé ðöéš ñöţ ŕéšþöñð ŵîţĥ å 200 ŵĥéñ öƒƒļîñé one two three four five six seven eight nine ten eleven]"
+  },
+  "lighthouse-core/audits/works-offline.js | title": {
+    "message": "[Çûŕŕéñţ þåĝé ŕéšþöñðš ŵîţĥ å 200 ŵĥéñ öƒƒļîñé one two three four five six seven eight nine]"
+  },
+  "lighthouse-core/audits/works-offline.js | warningNoLoad": {
+    "message": "[Ţĥé þåĝé måý ñöţ бé ļöåðîñĝ öƒƒļîñé бéçåûšé ýöûŕ ţéšţ ÛŔĻ (ᐅ{requested}ᐊ) ŵåš ŕéðîŕéçţéð ţö \"ᐅ{final}ᐊ\". Ţŕý ţéšţîñĝ ţĥé šéçöñð ÛŔĻ ðîŕéçţļý. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen]"
+  },
+  "lighthouse-core/config/default-config.js | a11yAriaGroupDescription": {
+    "message": "[Ţĥéšé åŕé öþþöŕţûñîţîéš ţö îmþŕövé ţĥé ûšåĝé öƒ ÅŔÎÅ îñ ýöûŕ åþþļîçåţîöñ ŵĥîçĥ måý éñĥåñçé ţĥé éxþéŕîéñçé ƒöŕ ûšéŕš öƒ åššîšţîvé ţéçĥñöļöĝý, ļîķé å šçŕééñ ŕéåðéŕ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen twenty twentyone twentytwo twentythree]"
+  },
+  "lighthouse-core/config/default-config.js | a11yAriaGroupTitle": {
+    "message": "[ÅŔÎÅ one]"
+  },
+  "lighthouse-core/config/default-config.js | a11yAudioVideoGroupDescription": {
+    "message": "[Ţĥéšé åŕé öþþöŕţûñîţîéš ţö þŕövîðé åļţéŕñåţîvé çöñţéñţ ƒöŕ åûðîö åñð vîðéö. Ţĥîš måý îmþŕövé ţĥé éxþéŕîéñçé ƒöŕ ûšéŕš ŵîţĥ ĥéåŕîñĝ öŕ vîšîöñ îmþåîŕméñţš. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen twenty twentyone twentytwo twentythree]"
+  },
+  "lighthouse-core/config/default-config.js | a11yAudioVideoGroupTitle": {
+    "message": "[Åûðîö åñð vîðéö one two]"
+  },
+  "lighthouse-core/config/default-config.js | a11yBestPracticesGroupDescription": {
+    "message": "[Ţĥéšé îţémš ĥîĝĥļîĝĥţ çömmöñ åççéššîбîļîţý бéšţ þŕåçţîçéš. one two three four five six seven eight nine ten eleven twelve]"
+  },
+  "lighthouse-core/config/default-config.js | a11yBestPracticesGroupTitle": {
+    "message": "[Бéšţ þŕåçţîçéš one two]"
+  },
+  "lighthouse-core/config/default-config.js | a11yCategoryDescription": {
+    "message": "[Ţĥéšé çĥéçķš ĥîĝĥļîĝĥţ öþþöŕţûñîţîéš ţö ᐅ[ᐊîmþŕövé ţĥé åççéššîбîļîţý öƒ ýöûŕ ŵéб åþþᐅ](https://developers.google.com/web/fundamentals/accessibility)ᐊ. Öñļý å šûбšéţ öƒ åççéššîбîļîţý îššûéš çåñ бé åûţömåţîçåļļý ðéţéçţéð šö måñûåļ ţéšţîñĝ îš åļšö éñçöûŕåĝéð. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen twenty twentyone twentytwo twentythree twentyfour twentyfive twentysix]"
+  },
+  "lighthouse-core/config/default-config.js | a11yCategoryManualDescription": {
+    "message": "[Ţĥéšé îţémš åððŕéšš åŕéåš ŵĥîçĥ åñ åûţömåţéð ţéšţîñĝ ţööļ çåññöţ çövéŕ. Ļéåŕñ möŕé îñ öûŕ ĝûîðé öñ ᐅ[ᐊçöñðûçţîñĝ åñ åççéššîбîļîţý ŕévîéŵᐅ](https://developers.google.com/web/fundamentals/accessibility/how-to-review)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen twenty twentyone]"
+  },
+  "lighthouse-core/config/default-config.js | a11yCategoryTitle": {
+    "message": "[Åççéššîбîļîţý one two]"
+  },
+  "lighthouse-core/config/default-config.js | a11yColorContrastGroupDescription": {
+    "message": "[Ţĥéšé åŕé öþþöŕţûñîţîéš ţö îmþŕövé ţĥé ļéĝîбîļîţý öƒ ýöûŕ çöñţéñţ. one two three four five six seven eight nine ten eleven twelve thirteen]"
+  },
+  "lighthouse-core/config/default-config.js | a11yColorContrastGroupTitle": {
+    "message": "[Çöñţŕåšţ one]"
+  },
+  "lighthouse-core/config/default-config.js | a11yLanguageGroupDescription": {
+    "message": "[Ţĥéšé åŕé öþþöŕţûñîţîéš ţö îmþŕövé ţĥé îñţéŕþŕéţåţîöñ öƒ ýöûŕ çöñţéñţ бý ûšéŕš îñ ðéŕéñţ ļöçåļéš. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen]"
+  },
+  "lighthouse-core/config/default-config.js | a11yLanguageGroupTitle": {
+    "message": "[Îñţéŕñåţîöñåļîžåţîöñ åñð ļöçåļîžåţîöñ one two three four]"
+  },
+  "lighthouse-core/config/default-config.js | a11yNamesLabelsGroupDescription": {
+    "message": "[Ţĥéšé åŕé öþþöŕţûñîţîéš ţö îmþŕövé ţĥé šémåñţîçš öƒ ţĥé çöñţŕöļš îñ ýöûŕ åþþļîçåţîöñ. Ţĥîš måý éñĥåñçé ţĥé éxþéŕîéñçé ƒöŕ ûšéŕš öƒ åššîšţîvé ţéçĥñöļöĝý, ļîķé å šçŕééñ ŕéåðéŕ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen twenty twentyone twentytwo twentythree twentyfour]"
+  },
+  "lighthouse-core/config/default-config.js | a11yNamesLabelsGroupTitle": {
+    "message": "[Ñåméš åñð ļåбéļš one two]"
+  },
+  "lighthouse-core/config/default-config.js | a11yNavigationGroupDescription": {
+    "message": "[Ţĥéšé åŕé öþþöŕţûñîţîéš ţö îmþŕövé ķéýбöåŕð ñåvîĝåţîöñ îñ ýöûŕ åþþļîçåţîöñ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen]"
+  },
+  "lighthouse-core/config/default-config.js | a11yNavigationGroupTitle": {
+    "message": "[Ñåvîĝåţîöñ one two]"
+  },
+  "lighthouse-core/config/default-config.js | a11yTablesListsVideoGroupDescription": {
+    "message": "[Ţĥéšé åŕé öþþöŕţûñîţîéš ţö ţö îmþŕövé ţĥé éxþéŕîéñçé öƒ ŕéåðîñĝ ţåбûļåŕ öŕ ļîšţ ðåţå ûšîñĝ åššîšţîvé ţéçĥñöļöĝý, ļîķé å šçŕééñ ŕéåðéŕ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen twenty twentyone]"
+  },
+  "lighthouse-core/config/default-config.js | a11yTablesListsVideoGroupTitle": {
+    "message": "[Ţåбļéš åñð ļîšţš one two]"
+  },
+  "lighthouse-core/config/default-config.js | bestPracticesCategoryTitle": {
+    "message": "[Бéšţ Þŕåçţîçéš one two]"
+  },
+  "lighthouse-core/config/default-config.js | budgetsGroupDescription": {
+    "message": "[Þéŕƒöŕmåñçé бûðĝéţš šéţ šţåñðåŕðš ƒöŕ ţĥé þéŕƒöŕmåñçé öƒ ýöûŕ šîţé. one two three four five six seven eight nine ten eleven twelve thirteen]"
+  },
+  "lighthouse-core/config/default-config.js | budgetsGroupTitle": {
+    "message": "[Бûðĝéţš one]"
+  },
+  "lighthouse-core/config/default-config.js | diagnosticsGroupDescription": {
+    "message": "[Möŕé îñƒöŕmåţîöñ åбöûţ ţĥé þéŕƒöŕmåñçé öƒ ýöûŕ åþþļîçåţîöñ. Ţĥéšé ñûmбéŕš ðöñ'ţ ᐅ[ᐊðîŕéçţļý 僃éçţᐅ](https://github.com/GoogleChrome/lighthouse/blob/d2ec9ffbb21de9ad1a0f86ed24575eda32c796f0/docs/scoring.md#how-are-the-scores-weighted)ᐊ ţĥé Þéŕƒöŕmåñçé šçöŕé. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen]"
+  },
+  "lighthouse-core/config/default-config.js | diagnosticsGroupTitle": {
+    "message": "[Ðîåĝñöšţîçš one two]"
+  },
+  "lighthouse-core/config/default-config.js | firstPaintImprovementsGroupDescription": {
+    "message": "[Ţĥé möšţ çŕîţîçåļ åšþéçţ öƒ þéŕƒöŕmåñçé îš ĥöŵ qûîçķļý þîxéļš åŕé ŕéñðéŕéð öñšçŕééñ. Ķéý méţŕîçš: Fîŕšţ Çöñţéñţƒûļ Þåîñţ, Fîŕšţ Méåñîñĝƒûļ Þåîñţ one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen twenty twentyone twentytwo]"
+  },
+  "lighthouse-core/config/default-config.js | firstPaintImprovementsGroupTitle": {
+    "message": "[Fîŕšţ Þåîñţ Îmþŕövéméñţš one two three]"
+  },
+  "lighthouse-core/config/default-config.js | loadOpportunitiesGroupDescription": {
+    "message": "[Ţĥéšé šûĝĝéšţîöñš çåñ ĥéļþ ýöûŕ þåĝé ļöåð ƒåšţéŕ. Ţĥéý ðöñ'ţ ᐅ[ᐊðîŕéçţļý 僃éçţᐅ](https://github.com/GoogleChrome/lighthouse/blob/d2ec9ffbb21de9ad1a0f86ed24575eda32c796f0/docs/scoring.md#how-are-the-scores-weighted)ᐊ ţĥé Þéŕƒöŕmåñçé šçöŕé. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen]"
+  },
+  "lighthouse-core/config/default-config.js | loadOpportunitiesGroupTitle": {
+    "message": "[Öþþöŕţûñîţîéš one two]"
+  },
+  "lighthouse-core/config/default-config.js | metricGroupTitle": {
+    "message": "[Méţŕîçš one]"
+  },
+  "lighthouse-core/config/default-config.js | overallImprovementsGroupDescription": {
+    "message": "[Éñĥåñçé ţĥé övéŕåļļ ļöåðîñĝ éxþéŕîéñçé, šö ţĥé þåĝé îš ŕéšþöñšîvé åñð ŕéåðý ţö ûšé åš šööñ åš þöššîбļé. Ķéý méţŕîçš: Ţîmé ţö Îñţéŕåçţîvé, Šþééð Îñðéx one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen twenty twentyone twentytwo]"
+  },
+  "lighthouse-core/config/default-config.js | overallImprovementsGroupTitle": {
+    "message": "[Övéŕåļļ Îmþŕövéméñţš one two three]"
+  },
+  "lighthouse-core/config/default-config.js | performanceCategoryTitle": {
+    "message": "[Þéŕƒöŕmåñçé one two]"
+  },
+  "lighthouse-core/config/default-config.js | pwaCategoryDescription": {
+    "message": "[Ţĥéšé çĥéçķš våļîðåţé ţĥé åšþéçţš öƒ å Þŕöĝŕéššîvé Ŵéб Åþþ. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://developers.google.com/web/progressive-web-apps/checklist)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen]"
+  },
+  "lighthouse-core/config/default-config.js | pwaCategoryManualDescription": {
+    "message": "[Ţĥéšé çĥéçķš åŕé ŕéqûîŕéð бý ţĥé бåšéļîñé ᐅ[ᐊÞŴÅ Çĥéçķļîšţᐅ](https://developers.google.com/web/progressive-web-apps/checklist)ᐊ бûţ åŕé ñöţ åûţömåţîçåļļý çĥéçķéð бý Ļîĝĥţĥöûšé. Ţĥéý ðö ñöţ 僃éçţ ýöûŕ šçöŕé бûţ îţ'š îmþöŕţåñţ ţĥåţ ýöû véŕîƒý ţĥém måñûåļļý. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen twenty twentyone twentytwo twentythree twentyfour twentyfive twentysix]"
+  },
+  "lighthouse-core/config/default-config.js | pwaCategoryTitle": {
+    "message": "[Þŕöĝŕéššîvé Ŵéб Åþþ one two three]"
+  },
+  "lighthouse-core/config/default-config.js | pwaFastReliableGroupTitle": {
+    "message": "[Fåšţ åñð ŕéļîåбļé one two three]"
+  },
+  "lighthouse-core/config/default-config.js | pwaInstallableGroupTitle": {
+    "message": "[Îñšţåļļåбļé one two]"
+  },
+  "lighthouse-core/config/default-config.js | pwaOptimizedGroupTitle": {
+    "message": "[ÞŴÅ Öþţîmîžéð one two]"
+  },
+  "lighthouse-core/config/default-config.js | seoCategoryDescription": {
+    "message": "[Ţĥéšé çĥéçķš éñšûŕé ţĥåţ ýöûŕ þåĝé îš öþţîmîžéð ƒöŕ šéåŕçĥ éñĝîñé ŕéšûļţš ŕåñķîñĝ. Ţĥéŕé åŕé åððîţîöñåļ ƒåçţöŕš Ļîĝĥţĥöûšé ðöéš ñöţ çĥéçķ ţĥåţ måý 僃éçţ ýöûŕ šéåŕçĥ ŕåñķîñĝ. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://support.google.com/webmasters/answer/35769)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen twenty twentyone twentytwo twentythree twentyfour twentyfive twentysix]"
+  },
+  "lighthouse-core/config/default-config.js | seoCategoryManualDescription": {
+    "message": "[Ŕûñ ţĥéšé åððîţîöñåļ våļîðåţöŕš öñ ýöûŕ šîţé ţö çĥéçķ åððîţîöñåļ ŠÉÖ бéšţ þŕåçţîçéš. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen]"
+  },
+  "lighthouse-core/config/default-config.js | seoCategoryTitle": {
+    "message": "[ŠÉÖ one]"
+  },
+  "lighthouse-core/config/default-config.js | seoContentGroupDescription": {
+    "message": "[Föŕmåţ ýöûŕ ĤŢMĻ îñ å ŵåý ţĥåţ éñåбļéš çŕåŵļéŕš ţö бéţţéŕ ûñðéŕšţåñð ýöûŕ åþþ’š çöñţéñţ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen]"
+  },
+  "lighthouse-core/config/default-config.js | seoContentGroupTitle": {
+    "message": "[Çöñţéñţ Бéšţ Þŕåçţîçéš one two three]"
+  },
+  "lighthouse-core/config/default-config.js | seoCrawlingGroupDescription": {
+    "message": "[Ţö åþþéåŕ îñ šéåŕçĥ ŕéšûļţš, çŕåŵļéŕš ñééð åççéšš ţö ýöûŕ åþþ. one two three four five six seven eight nine ten eleven twelve]"
+  },
+  "lighthouse-core/config/default-config.js | seoCrawlingGroupTitle": {
+    "message": "[Çŕåŵļîñĝ åñð Îñðéxîñĝ one two three]"
+  },
+  "lighthouse-core/config/default-config.js | seoMobileGroupDescription": {
+    "message": "[Måķé šûŕé ýöûŕ þåĝéš åŕé möбîļé ƒŕîéñðļý šö ûšéŕš ðöñ’ţ ĥåvé ţö þîñçĥ öŕ žööm îñ öŕðéŕ ţö ŕéåð ţĥé çöñţéñţ þåĝéš. ᐅ[ᐊĻéåŕñ möŕéᐅ](https://developers.google.com/search/mobile-sites/)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen twenty]"
+  },
+  "lighthouse-core/config/default-config.js | seoMobileGroupTitle": {
+    "message": "[Möбîļé Fŕîéñðļý one two]"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnCacheTTL": {
+    "message": "[Çåçĥé ŢŢĻ one two]"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnLocation": {
+    "message": "[Ļöçåţîöñ one]"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnName": {
+    "message": "[Ñåmé one]"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnRequests": {
+    "message": "[Ŕéqûéšţš one]"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnResourceType": {
+    "message": "[Ŕéšöûŕçé Ţýþé one two]"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnSize": {
+    "message": "[Šîžé one]"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnTimeSpent": {
+    "message": "[Ţîmé Šþéñţ one two]"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnTransferSize": {
+    "message": "[Ţŕåñšƒéŕ Šîžé one two]"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnURL": {
+    "message": "[ÛŔĻ one]"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnWastedBytes": {
+    "message": "[Þöţéñţîåļ Šåvîñĝš one two three]"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnWastedMs": {
+    "message": "[Þöţéñţîåļ Šåvîñĝš one two three]"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | displayValueByteSavings": {
+    "message": "[Þöţéñţîåļ šåvîñĝš öƒ ᐅ{wastedBytes, number, bytes}ᐊ ĶБ one two three four five six]"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | displayValueMsSavings": {
+    "message": "[Þöţéñţîåļ šåvîñĝš öƒ ᐅ{wastedMs, number, milliseconds}ᐊ mš one two three four five six]"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | documentResourceType": {
+    "message": "[Ðöçûméñţ one]"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | fontResourceType": {
+    "message": "[Föñţ one]"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | imageResourceType": {
+    "message": "[Îmåĝé one]"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | mediaResourceType": {
+    "message": "[Méðîå one]"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | ms": {
+    "message": "[ᐅ{timeInMs, number, milliseconds}ᐊ mš one two]"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | otherResourceType": {
+    "message": "[Öţĥéŕ one]"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | scriptResourceType": {
+    "message": "[Šçŕîþţ one]"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | seconds": {
+    "message": "[ᐅ{timeInMs, number, seconds}ᐊ š one two]"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | stylesheetResourceType": {
+    "message": "[Šţýļéšĥééţ one two]"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | thirdPartyResourceType": {
+    "message": "[Ţĥîŕð-þåŕţý one two]"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | totalResourceType": {
+    "message": "[Ţöţåļ one]"
+  },
+  "lighthouse-core/lib/lh-error.js | badTraceRecording": {
+    "message": "[Šöméţĥîñĝ ŵéñţ ŵŕöñĝ ŵîţĥ ŕéçöŕðîñĝ ţĥé ţŕåçé övéŕ ýöûŕ þåĝé ļöåð. Þļéåšé ŕûñ Ļîĝĥţĥöûšé åĝåîñ. (ᐅ{errorCode}ᐊ) one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen]"
+  },
+  "lighthouse-core/lib/lh-error.js | criTimeout": {
+    "message": "[Ţîméöûţ ŵåîţîñĝ ƒöŕ îñîţîåļ Ðéбûĝĝéŕ Þŕöţöçöļ çöññéçţîöñ. one two three four five six seven eight nine ten eleven twelve]"
+  },
+  "lighthouse-core/lib/lh-error.js | didntCollectScreenshots": {
+    "message": "[Çĥŕömé ðîðñ'ţ çöļļéçţ åñý šçŕééñšĥöţš ðûŕîñĝ ţĥé þåĝé ļöåð. Þļéåšé måķé šûŕé ţĥéŕé îš çöñţéñţ vîšîбļé öñ ţĥé þåĝé, åñð ţĥéñ ţŕý ŕé-ŕûññîñĝ Ļîĝĥţĥöûšé. (ᐅ{errorCode}ᐊ) one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen twenty twentyone twentytwo twentythree]"
+  },
+  "lighthouse-core/lib/lh-error.js | dnsFailure": {
+    "message": "[ÐÑŠ šéŕvéŕš çöûļð ñöţ ŕéšöļvé ţĥé þŕövîðéð ðömåîñ. one two three four five six seven eight nine ten eleven]"
+  },
+  "lighthouse-core/lib/lh-error.js | erroredRequiredArtifact": {
+    "message": "[Ŕéqûîŕéð ᐅ{artifactName}ᐊ ĝåţĥéŕéŕ éñçöûñţéŕéð åñ éŕŕöŕ: ᐅ{errorMessage}ᐊ one two three four five six seven eight nine ten]"
+  },
+  "lighthouse-core/lib/lh-error.js | internalChromeError": {
+    "message": "[Åñ îñţéŕñåļ Çĥŕömé éŕŕöŕ öççûŕŕéð. Þļéåšé ŕéšţåŕţ Çĥŕömé åñð ţŕý ŕé-ŕûññîñĝ Ļîĝĥţĥöûšé. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen]"
+  },
+  "lighthouse-core/lib/lh-error.js | missingRequiredArtifact": {
+    "message": "[Ŕéqûîŕéð ᐅ{artifactName}ᐊ ĝåţĥéŕéŕ ðîð ñöţ ŕûñ. one two three four five six seven]"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailed": {
+    "message": "[Ļîĝĥţĥöûšé ŵåš ûñåбļé ţö ŕéļîåбļý ļöåð ţĥé þåĝé ýöû ŕéqûéšţéð. Måķé šûŕé ýöû åŕé ţéšţîñĝ ţĥé çöŕŕéçţ ÛŔĻ åñð ţĥåţ ţĥé šéŕvéŕ îš þŕöþéŕļý ŕéšþöñðîñĝ ţö åļļ ŕéqûéšţš. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen twenty twentyone twentytwo twentythree]"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedHung": {
+    "message": "[Ļîĝĥţĥöûšé ŵåš ûñåбļé ţö ŕéļîåбļý ļöåð ţĥé ÛŔĻ ýöû ŕéqûéšţéð бéçåûšé ţĥé þåĝé šţöþþéð ŕéšþöñðîñĝ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen]"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedInsecure": {
+    "message": "[Ţĥé ÛŔĻ ýöû ĥåvé þŕövîðéð ðöéš ñöţ ĥåvé å våļîð šéçûŕîţý çéŕţîƒîçåţé. ᐅ{securityMessages}ᐊ one two three four five six seven eight nine ten eleven twelve thirteen fourteen]"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedInterstitial": {
+    "message": "[Çĥŕömé þŕévéñţéð þåĝé ļöåð ŵîţĥ åñ îñţéŕšţîţîåļ. Måķé šûŕé ýöû åŕé ţéšţîñĝ ţĥé çöŕŕéçţ ÛŔĻ åñð ţĥåţ ţĥé šéŕvéŕ îš þŕöþéŕļý ŕéšþöñðîñĝ ţö åļļ ŕéqûéšţš. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen twenty twentyone twentytwo]"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedWithDetails": {
+    "message": "[Ļîĝĥţĥöûšé ŵåš ûñåбļé ţö ŕéļîåбļý ļöåð ţĥé þåĝé ýöû ŕéqûéšţéð. Måķé šûŕé ýöû åŕé ţéšţîñĝ ţĥé çöŕŕéçţ ÛŔĻ åñð ţĥåţ ţĥé šéŕvéŕ îš þŕöþéŕļý ŕéšþöñðîñĝ ţö åļļ ŕéqûéšţš. (Ðéţåîļš: ᐅ{errorDetails}ᐊ) one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen twenty twentyone twentytwo twentythree twentyfour twentyfive]"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedWithStatusCode": {
+    "message": "[Ļîĝĥţĥöûšé ŵåš ûñåбļé ţö ŕéļîåбļý ļöåð ţĥé þåĝé ýöû ŕéqûéšţéð. Måķé šûŕé ýöû åŕé ţéšţîñĝ ţĥé çöŕŕéçţ ÛŔĻ åñð ţĥåţ ţĥé šéŕvéŕ îš þŕöþéŕļý ŕéšþöñðîñĝ ţö åļļ ŕéqûéšţš. (Šţåţûš çöðé: ᐅ{statusCode}ᐊ) one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen twenty twentyone twentytwo twentythree twentyfour twentyfive]"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadTookTooLong": {
+    "message": "[Ýöûŕ þåĝé ţööķ ţöö ļöñĝ ţö ļöåð. Þļéåšé ƒöļļöŵ ţĥé öþþöŕţûñîţîéš îñ ţĥé ŕéþöŕţ ţö ŕéðûçé ýöûŕ þåĝé ļöåð ţîmé, åñð ţĥéñ ţŕý ŕé-ŕûññîñĝ Ļîĝĥţĥöûšé. (ᐅ{errorCode}ᐊ) one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen twenty twentyone twentytwo]"
+  },
+  "lighthouse-core/lib/lh-error.js | protocolTimeout": {
+    "message": "[Ŵåîţîñĝ ƒöŕ ÐévŢööļš þŕöţöçöļ ŕéšþöñšé ĥåš éxçééðéð ţĥé åļļöţţéð ţîmé. (Méţĥöð: ᐅ{protocolMethod}ᐊ) one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen]"
+  },
+  "lighthouse-core/lib/lh-error.js | requestContentTimeout": {
+    "message": "[Féţçĥîñĝ ŕéšöûŕçé çöñţéñţ ĥåš éxçééðéð ţĥé åļļöţţéð ţîmé one two three four five six seven eight nine ten eleven]"
+  },
+  "lighthouse-core/lib/lh-error.js | urlInvalid": {
+    "message": "[Ţĥé ÛŔĻ ýöû ĥåvé þŕövîðéð åþþéåŕš ţö бé îñvåļîð. one two three four five six seven eight nine ten]"
+  },
+  "lighthouse-core/report/html/renderer/util.js | auditGroupExpandTooltip": {
+    "message": "[Šĥöŵ åûðîţš one two]"
+  },
+  "lighthouse-core/report/html/renderer/util.js | crcInitialNavigation": {
+    "message": "[Îñîţîåļ Ñåvîĝåţîöñ one two three]"
+  },
+  "lighthouse-core/report/html/renderer/util.js | crcLongestDurationLabel": {
+    "message": "[Måxîmûm çŕîţîçåļ þåţĥ ļåţéñçý: one two three four five six seven]"
+  },
+  "lighthouse-core/report/html/renderer/util.js | errorLabel": {
+    "message": "[Éŕŕöŕ¡ one]"
+  },
+  "lighthouse-core/report/html/renderer/util.js | errorMissingAuditInfo": {
+    "message": "[Ŕéþöŕţ éŕŕöŕ: ñö åûðîţ îñƒöŕmåţîöñ one two three four five six seven]"
+  },
+  "lighthouse-core/report/html/renderer/util.js | labDataTitle": {
+    "message": "[Ļåб Ðåţå one]"
+  },
+  "lighthouse-core/report/html/renderer/util.js | lsPerformanceCategoryDescription": {
+    "message": "[ᐅ[ᐊĻîĝĥţĥöûšéᐅ](https://developers.google.com/web/tools/lighthouse/)ᐊ åñåļýšîš öƒ ţĥé çûŕŕéñţ þåĝé öñ åñ émûļåţéð möбîļé ñéţŵöŕķ. Våļûéš åŕé éšţîmåţéð åñð måý våŕý. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen]"
+  },
+  "lighthouse-core/report/html/renderer/util.js | manualAuditsGroupTitle": {
+    "message": "[Åððîţîöñåļ îţémš ţö måñûåļļý çĥéçķ one two three four five six seven]"
+  },
+  "lighthouse-core/report/html/renderer/util.js | notApplicableAuditsGroupTitle": {
+    "message": "[Ñöţ åþþļîçåбļé one two]"
+  },
+  "lighthouse-core/report/html/renderer/util.js | opportunityResourceColumnLabel": {
+    "message": "[Öþþöŕţûñîţý one two]"
+  },
+  "lighthouse-core/report/html/renderer/util.js | opportunitySavingsColumnLabel": {
+    "message": "[Éšţîmåţéð Šåvîñĝš one two three]"
+  },
+  "lighthouse-core/report/html/renderer/util.js | passedAuditsGroupTitle": {
+    "message": "[Þåššéð åûðîţš one two]"
+  },
+  "lighthouse-core/report/html/renderer/util.js | snippetCollapseButtonLabel": {
+    "message": "[Çöļļåþšé šñîþþéţ one two]"
+  },
+  "lighthouse-core/report/html/renderer/util.js | snippetExpandButtonLabel": {
+    "message": "[Éxþåñð šñîþþéţ one two]"
+  },
+  "lighthouse-core/report/html/renderer/util.js | thirdPartyResourcesLabel": {
+    "message": "[Šĥöŵ 3ŕð-þåŕţý ŕéšöûŕçéš one two three]"
+  },
+  "lighthouse-core/report/html/renderer/util.js | toplevelWarningsMessage": {
+    "message": "[Ţĥéŕé ŵéŕé îššûéš åƒƒéçţîñĝ ţĥîš ŕûñ öƒ Ļîĝĥţĥöûšé: one two three four five six seven eight nine ten eleven]"
+  },
+  "lighthouse-core/report/html/renderer/util.js | varianceDisclaimer": {
+    "message": "[Våļûéš åŕé éšţîmåţéð åñð måý våŕý. Ţĥé þéŕƒöŕmåñçé šçöŕé îš ᐅ[ᐊбåšéð öñļý öñ ţĥéšé méţŕîçšᐅ](https://github.com/GoogleChrome/lighthouse/blob/d2ec9ffbb21de9ad1a0f86ed24575eda32c796f0/docs/scoring.md#how-are-the-scores-weighted)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen]"
+  },
+  "lighthouse-core/report/html/renderer/util.js | warningAuditsGroupTitle": {
+    "message": "[Þåššéð åûðîţš бûţ ŵîţĥ ŵåŕñîñĝš one two three four five six seven]"
+  },
+  "lighthouse-core/report/html/renderer/util.js | warningHeader": {
+    "message": "[Ŵåŕñîñĝš:  one two]"
+  },
+  "stack-packs/packs/wordpress.js | efficient_animated_content": {
+    "message": "[Çöñšîðéŕ ûþļöåðîñĝ ýöûŕ ĜÎF ţö å šéŕvîçé ŵĥîçĥ ŵîļļ måķé îţ åvåîļåбļé ţö émбéð åš åñ ĤŢMĻ5 vîðéö. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen]"
+  },
+  "stack-packs/packs/wordpress.js | offscreen_images": {
+    "message": "[Îñšţåļļ å ᐅ[ᐊļåžý-ļöåð ŴöŕðÞŕéšš þļûĝîñᐅ](https://wordpress.org/plugins/search/lazy+load/)ᐊ ţĥåţ þŕövîðéš ţĥé åбîļîţý ţö ðéƒéŕ åñý öƒƒšçŕééñ îmåĝéš, öŕ šŵîţçĥ ţö å ţĥémé ţĥåţ þŕövîðéš ţĥåţ ƒûñçţîöñåļîţý. Åļšö çöñšîðéŕ ûšîñĝ ᐅ[ᐊţĥé ÅMÞ þļûĝîñᐅ](https://wordpress.org/plugins/amp/)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen twenty twentyone twentytwo twentythree twentyfour twentyfive twentysix]"
+  },
+  "stack-packs/packs/wordpress.js | render_blocking_resources": {
+    "message": "[Ţĥéŕé åŕé å ñûmбéŕ öƒ ŴöŕðÞŕéšš þļûĝîñš ţĥåţ çåñ ĥéļþ ýöû ᐅ[ᐊîñļîñé çŕîţîçåļ åššéţšᐅ](https://wordpress.org/plugins/search/critical+css/)ᐊ öŕ ᐅ[ᐊðéƒéŕ ļéšš îmþöŕţåñţ ŕéšöûŕçéšᐅ](https://wordpress.org/plugins/search/defer+css+javascript/)ᐊ. Бéŵåŕé ţĥåţ öþţîmîžåţîöñš þŕövîðéð бý ţĥéšé þļûĝîñš måý бŕéåķ ƒéåţûŕéš öƒ ýöûŕ ţĥémé öŕ þļûĝîñš, šö ýöû ŵîļļ ļîķéļý ñééð ţö måķé çöðé çĥåñĝéš. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen twenty twentyone twentytwo twentythree twentyfour twentyfive twentysix twentyseven twentyeight twentynine thirty thirtyone thirtytwo thirtythree]"
+  },
+  "stack-packs/packs/wordpress.js | time_to_first_byte": {
+    "message": "[Ţĥéméš, þļûĝîñš, åñð šéŕvéŕ šþéçîƒîçåţîöñš åļļ çöñţŕîбûţé ţö šéŕvéŕ ŕéšþöñšé ţîmé. Çöñšîðéŕ ƒîñðîñĝ å möŕé öþţîmîžéð ţĥémé, çåŕéƒûļļý šéļéçţîñĝ åñ öþţîmîžåţîöñ þļûĝîñ, åñð/öŕ ûþĝŕåðîñĝ ýöûŕ šéŕvéŕ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen twenty twentyone twentytwo twentythree twentyfour twentyfive twentysix twentyseven]"
+  },
+  "stack-packs/packs/wordpress.js | total_byte_weight": {
+    "message": "[Çöñšîðéŕ šĥöŵîñĝ éxçéŕþţš îñ ýöûŕ þöšţ ļîšţš (é.ĝ. vîå ţĥé möŕé ţåĝ), ŕéðûçîñĝ ţĥé ñûmбéŕ öƒ þöšţš šĥöŵñ öñ å ĝîvéñ þåĝé, бŕéåķîñĝ ýöûŕ ļöñĝ þöšţš îñţö mûļţîþļé þåĝéš, öŕ ûšîñĝ å þļûĝîñ ţö ļåžý-ļöåð çömméñţš. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen twenty twentyone twentytwo twentythree twentyfour twentyfive twentysix twentyseven]"
+  },
+  "stack-packs/packs/wordpress.js | unminified_css": {
+    "message": "[Å ñûmбéŕ öƒ ᐅ[ᐊŴöŕðÞŕéšš þļûĝîñšᐅ](https://wordpress.org/plugins/search/minify+css/)ᐊ çåñ šþééð ûþ ýöûŕ šîţé бý çöñçåţéñåţîñĝ, mîñîƒýîñĝ, åñð çömþŕéššîñĝ ýöûŕ šţýļéš. Ýöû måý åļšö ŵåñţ ţö ûšé å бûîļð þŕöçéšš ţö ðö ţĥîš mîñîƒîçåţîöñ ûþ-ƒŕöñţ îƒ þöššîбļé. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen twenty twentyone twentytwo twentythree twentyfour twentyfive twentysix twentyseven]"
+  },
+  "stack-packs/packs/wordpress.js | unminified_javascript": {
+    "message": "[Å ñûmбéŕ öƒ ᐅ[ᐊŴöŕðÞŕéšš þļûĝîñšᐅ](https://wordpress.org/plugins/search/minify+javascript/)ᐊ çåñ šþééð ûþ ýöûŕ šîţé бý çöñçåţéñåţîñĝ, mîñîƒýîñĝ, åñð çömþŕéššîñĝ ýöûŕ šçŕîþţš. Ýöû måý åļšö ŵåñţ ţö ûšé å бûîļð þŕöçéšš ţö ðö ţĥîš mîñîƒîçåţîöñ ûþ ƒŕöñţ îƒ þöššîбļé. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen twenty twentyone twentytwo twentythree twentyfour twentyfive twentysix twentyseven]"
+  },
+  "stack-packs/packs/wordpress.js | unused_css_rules": {
+    "message": "[Çöñšîðéŕ ŕéðûçîñĝ, öŕ šŵîţçĥîñĝ, ţĥé ñûmбéŕ öƒ ᐅ[ᐊŴöŕðÞŕéšš þļûĝîñšᐅ](https://wordpress.org/plugins/)ᐊ ļöåðîñĝ ûñûšéð ÇŠŠ îñ ýöûŕ þåĝé. Ţö îðéñţîƒý þļûĝîñš ţĥåţ åŕé åððîñĝ éxţŕåñéöûš ÇŠŠ, ţŕý ŕûññîñĝ ᐅ[ᐊçöðé çövéŕåĝéᐅ](https://developers.google.com/web/updates/2017/04/devtools-release-notes#coverage)ᐊ îñ Çĥŕömé ÐévŢööļš. Ýöû çåñ îðéñţîƒý ţĥé ţĥémé/þļûĝîñ ŕéšþöñšîбļé ƒŕöm ţĥé ÛŔĻ öƒ ţĥé šţýļéšĥééţ. Ļööķ öûţ ƒöŕ þļûĝîñš ţĥåţ ĥåvé måñý šţýļéšĥééţš îñ ţĥé ļîšţ ŵĥîçĥ ĥåvé å ļöţ öƒ ŕéð îñ çöðé çövéŕåĝé. Å þļûĝîñ šĥöûļð öñļý éñqûéûé å šţýļéšĥééţ îƒ îţ îš åçţûåļļý ûšéð öñ ţĥé þåĝé. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen twenty twentyone twentytwo twentythree twentyfour twentyfive twentysix twentyseven twentyeight twentynine thirty thirtyone thirtytwo thirtythree thirtyfour thirtyfive thirtysix thirtyseven thirtyeight thirtynine forty one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen]"
+  },
+  "stack-packs/packs/wordpress.js | unused_javascript": {
+    "message": "[Çöñšîðéŕ ŕéðûçîñĝ, öŕ šŵîţçĥîñĝ, ţĥé ñûmбéŕ öƒ ᐅ[ᐊŴöŕðÞŕéšš þļûĝîñšᐅ](https://wordpress.org/plugins/)ᐊ ļöåðîñĝ ûñûšéð ĴåvåŠçŕîþţ îñ ýöûŕ þåĝé. Ţö îðéñţîƒý þļûĝîñš ţĥåţ åŕé åððîñĝ éxţŕåñéöûš ĴŠ, ţŕý ŕûññîñĝ ᐅ[ᐊçöðé çövéŕåĝéᐅ](https://developers.google.com/web/updates/2017/04/devtools-release-notes#coverage)ᐊ îñ Çĥŕömé ÐévŢööļš. Ýöû çåñ îðéñţîƒý ţĥé ţĥémé/þļûĝîñ ŕéšþöñšîбļé ƒŕöm ţĥé ÛŔĻ öƒ ţĥé šçŕîþţ. Ļööķ öûţ ƒöŕ þļûĝîñš ţĥåţ ĥåvé måñý šçŕîþţš îñ ţĥé ļîšţ ŵĥîçĥ ĥåvé å ļöţ öƒ ŕéð îñ çöðé çövéŕåĝé. Å þļûĝîñ šĥöûļð öñļý éñqûéûé å šçŕîþţ îƒ îţ îš åçţûåļļý ûšéð öñ ţĥé þåĝé. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen twenty twentyone twentytwo twentythree twentyfour twentyfive twentysix twentyseven twentyeight twentynine thirty thirtyone thirtytwo thirtythree thirtyfour thirtyfive thirtysix thirtyseven thirtyeight thirtynine forty one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen]"
+  },
+  "stack-packs/packs/wordpress.js | uses_long_cache_ttl": {
+    "message": "[Ŕéåð åбöûţ ᐅ[ᐊБŕöŵšéŕ Çåçĥîñĝ îñ ŴöŕðÞŕéššᐅ](https://codex.wordpress.org/WordPress_Optimization#Browser_Caching)ᐊ. one two three four five six seven eight nine ten]"
+  },
+  "stack-packs/packs/wordpress.js | uses_optimized_images": {
+    "message": "[Çöñšîðéŕ ûšîñĝ åñ ᐅ[ᐊîmåĝé öþţîmîžåţîöñ ŴöŕðÞŕéšš þļûĝîñᐅ](https://wordpress.org/plugins/search/optimize+images/)ᐊ ţĥåţ çömþŕéššéš ýöûŕ îmåĝéš ŵĥîļé ŕéţåîñîñĝ qûåļîţý. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen]"
+  },
+  "stack-packs/packs/wordpress.js | uses_responsive_images": {
+    "message": "[Ûþļöåð îmåĝéš ðîŕéçţļý ţĥŕöûĝĥ ţĥé ᐅ[ᐊméðîå ļîбŕåŕýᐅ](https://codex.wordpress.org/Media_Library_Screen)ᐊ ţö éñšûŕé ţĥåţ ţĥé ŕéqûîŕéð îmåĝé šîžéš åŕé åvåîļåбļé, åñð ţĥéñ îñšéŕţ ţĥém ƒŕöm ţĥé méðîå ļîбŕåŕý öŕ ûšé ţĥé îmåĝé ŵîðĝéţ ţö éñšûŕé ţĥé öþţîmåļ îmåĝé šîžéš åŕé ûšéð (îñçļûðîñĝ ţĥöšé ƒöŕ ţĥé ŕéšþöñšîvé бŕéåķþöîñţš). Åvöîð ûšîñĝ ᐅ`Full Size`ᐊ îmåĝéš ûñļéšš ţĥé ðîméñšîöñš åŕé åðéqûåţé ƒöŕ ţĥéîŕ ûšåĝé. ᐅ[ᐊĻéåŕñ Möŕéᐅ](https://codex.wordpress.org/Inserting_Images_into_Posts_and_Pages#Image_Size)ᐊ. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen twenty twentyone twentytwo twentythree twentyfour twentyfive twentysix twentyseven twentyeight twentynine thirty thirtyone thirtytwo thirtythree thirtyfour thirtyfive thirtysix thirtyseven thirtyeight thirtynine forty one two three four five]"
+  },
+  "stack-packs/packs/wordpress.js | uses_text_compression": {
+    "message": "[Ýöû çåñ éñåбļé ţéxţ çömþŕéššîöñ îñ ýöûŕ ŵéб šéŕvéŕ çöñƒîĝûŕåţîöñ. one two three four five six seven eight nine ten eleven twelve thirteen]"
+  },
+  "stack-packs/packs/wordpress.js | uses_webp_images": {
+    "message": "[Çöñšîðéŕ ûšîñĝ å ᐅ[ᐊþļûĝîñᐅ](https://wordpress.org/plugins/search/convert+webp/)ᐊ öŕ šéŕvîçé ţĥåţ ŵîļļ åûţömåţîçåļļý çöñvéŕţ ýöûŕ ûþļöåðéð îmåĝéš ţö ţĥé öþţîmåļ ƒöŕmåţš. one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen]"
+  }
+}
diff --git a/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/en-XL.json b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/en-XL.json
new file mode 100644
index 0000000..88ec3d3
--- /dev/null
+++ b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/en-XL.json
@@ -0,0 +1,1541 @@
+{
+  "lighthouse-core/audits/accessibility/accesskeys.js | description": {
+    "message": "Âćĉéŝś k̂éŷś l̂ét̂ úŝér̂ś q̂úîćk̂ĺŷ f́ôćûś â ṕâŕt̂ óf̂ t́ĥé p̂áĝé. F̂ór̂ ṕr̂óp̂ér̂ ńâv́îǵât́îón̂, éâćĥ áĉćêśŝ ḱêý m̂úŝt́ b̂é ûńîq́ûé. [L̂éâŕn̂ ḿôŕê](https://web.dev/accesskeys/)."
+  },
+  "lighthouse-core/audits/accessibility/accesskeys.js | failureTitle": {
+    "message": "`[accesskey]` v̂ál̂úêś âŕê ńôt́ ûńîq́ûé"
+  },
+  "lighthouse-core/audits/accessibility/accesskeys.js | title": {
+    "message": "`[accesskey]` v̂ál̂úêś âŕê ún̂íq̂úê"
+  },
+  "lighthouse-core/audits/accessibility/aria-allowed-attr.js | description": {
+    "message": "Êáĉh́ ÂŔÎÁ `role` ŝúp̂ṕôŕt̂ś â śp̂éĉíf̂íĉ śûb́ŝét̂ óf̂ `aria-*` át̂t́r̂íb̂út̂éŝ. Ḿîśm̂át̂ćĥín̂ǵ t̂h́êśê ín̂v́âĺîd́ât́êś t̂h́ê `aria-*` át̂t́r̂íb̂út̂éŝ. [Ĺêár̂ń m̂ór̂é](https://web.dev/aria-allowed-attr/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-allowed-attr.js | failureTitle": {
+    "message": "`[aria-*]` ât́t̂ŕîb́ût́êś d̂ó n̂ót̂ ḿât́ĉh́ t̂h́êír̂ ŕôĺêś"
+  },
+  "lighthouse-core/audits/accessibility/aria-allowed-attr.js | title": {
+    "message": "`[aria-*]` ât́t̂ŕîb́ût́êś m̂át̂ćĥ t́ĥéîŕ r̂ól̂éŝ"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-attr.js | description": {
+    "message": "Ŝóm̂é ÂŔÎÁ r̂ól̂éŝ h́âv́ê ŕêq́ûír̂éd̂ át̂t́r̂íb̂út̂éŝ t́ĥát̂ d́êśĉŕîb́ê t́ĥé ŝt́ât́ê óf̂ t́ĥé êĺêḿêńt̂ t́ô śĉŕêén̂ ŕêád̂ér̂ś. [L̂éâŕn̂ ḿôŕê](https://web.dev/aria-required-attr/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-required-attr.js | failureTitle": {
+    "message": "`[role]`ŝ d́ô ńôt́ ĥáv̂é âĺl̂ ŕêq́ûír̂éd̂ `[aria-*]` át̂t́r̂íb̂út̂éŝ"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-attr.js | title": {
+    "message": "`[role]`ŝ h́âv́ê ál̂ĺ r̂éq̂úîŕêd́ `[aria-*]` ât́t̂ŕîb́ût́êś"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-children.js | description": {
+    "message": "Ŝóm̂é ÂŔÎÁ p̂ár̂én̂t́ r̂ól̂éŝ ḿûśt̂ ćôńt̂áîń ŝṕêćîf́îć ĉh́îĺd̂ ŕôĺêś t̂ó p̂ér̂f́ôŕm̂ t́ĥéîŕ îńt̂én̂d́êd́ âćĉéŝśîb́îĺît́ŷ f́ûńĉt́îón̂ś. [L̂éâŕn̂ ḿôŕê](https://web.dev/aria-required-children/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-required-children.js | failureTitle": {
+    "message": "Êĺêḿêńt̂ś ŵít̂h́ âń ÂŔÎÁ `[role]` t̂h́ât́ r̂éq̂úîŕê ćĥíl̂d́r̂én̂ t́ô ćôńt̂áîń â śp̂éĉíf̂íĉ `[role]` ár̂é m̂íŝśîńĝ śôḿê ór̂ ál̂ĺ ôf́ t̂h́ôśê ŕêq́ûír̂éd̂ ćĥíl̂d́r̂én̂."
+  },
+  "lighthouse-core/audits/accessibility/aria-required-children.js | title": {
+    "message": "Êĺêḿêńt̂ś ŵít̂h́ âń ÂŔÎÁ `[role]` t̂h́ât́ r̂éq̂úîŕê ćĥíl̂d́r̂én̂ t́ô ćôńt̂áîń â śp̂éĉíf̂íĉ `[role]` h́âv́ê ál̂ĺ r̂éq̂úîŕêd́ ĉh́îĺd̂ŕêń."
+  },
+  "lighthouse-core/audits/accessibility/aria-required-parent.js | description": {
+    "message": "Ŝóm̂é ÂŔÎÁ ĉh́îĺd̂ ŕôĺêś m̂úŝt́ b̂é ĉón̂t́âín̂éd̂ b́ŷ śp̂éĉíf̂íĉ ṕâŕêńt̂ ŕôĺêś t̂ó p̂ŕôṕêŕl̂ý p̂ér̂f́ôŕm̂ t́ĥéîŕ îńt̂én̂d́êd́ âćĉéŝśîb́îĺît́ŷ f́ûńĉt́îón̂ś. [L̂éâŕn̂ ḿôŕê](https://web.dev/aria-required-parent/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-required-parent.js | failureTitle": {
+    "message": "`[role]`ŝ ár̂é n̂ót̂ ćôńt̂áîńêd́ b̂ý t̂h́êír̂ ŕêq́ûír̂éd̂ ṕâŕêńt̂ él̂ém̂én̂t́"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-parent.js | title": {
+    "message": "`[role]`ŝ ár̂é ĉón̂t́âín̂éd̂ b́ŷ t́ĥéîŕ r̂éq̂úîŕêd́ p̂ár̂én̂t́ êĺêḿêńt̂"
+  },
+  "lighthouse-core/audits/accessibility/aria-roles.js | description": {
+    "message": "ÂŔÎÁ r̂ól̂éŝ ḿûśt̂ h́âv́ê v́âĺîd́ v̂ál̂úêś îń ôŕd̂ér̂ t́ô ṕêŕf̂ór̂ḿ t̂h́êír̂ ín̂t́êńd̂éd̂ áĉćêśŝíb̂íl̂ít̂ý f̂ún̂ćt̂íôńŝ. [Ĺêár̂ń m̂ór̂é](https://web.dev/aria-roles/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-roles.js | failureTitle": {
+    "message": "`[role]` v̂ál̂úêś âŕê ńôt́ v̂ál̂íd̂"
+  },
+  "lighthouse-core/audits/accessibility/aria-roles.js | title": {
+    "message": "`[role]` v̂ál̂úêś âŕê v́âĺîd́"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr-value.js | description": {
+    "message": "Âśŝíŝt́îv́ê t́êćĥńôĺôǵîéŝ, ĺîḱê śĉŕêén̂ ŕêád̂ér̂ś, ĉán̂'t́ îńt̂ér̂ṕr̂ét̂ ÁR̂ÍÂ át̂t́r̂íb̂út̂éŝ ẃît́ĥ ín̂v́âĺîd́ v̂ál̂úêś. [L̂éâŕn̂ ḿôŕê](https://web.dev/aria-valid-attr-value/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr-value.js | failureTitle": {
+    "message": "`[aria-*]` ât́t̂ŕîb́ût́êś d̂ó n̂ót̂ h́âv́ê v́âĺîd́ v̂ál̂úêś"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr-value.js | title": {
+    "message": "`[aria-*]` ât́t̂ŕîb́ût́êś ĥáv̂é v̂ál̂íd̂ v́âĺûéŝ"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr.js | description": {
+    "message": "Âśŝíŝt́îv́ê t́êćĥńôĺôǵîéŝ, ĺîḱê śĉŕêén̂ ŕêád̂ér̂ś, ĉán̂'t́ îńt̂ér̂ṕr̂ét̂ ÁR̂ÍÂ át̂t́r̂íb̂út̂éŝ ẃît́ĥ ín̂v́âĺîd́ n̂ám̂éŝ. [Ĺêár̂ń m̂ór̂é](https://web.dev/aria-valid-attr/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr.js | failureTitle": {
+    "message": "`[aria-*]` ât́t̂ŕîb́ût́êś âŕê ńôt́ v̂ál̂íd̂ ór̂ ḿîśŝṕêĺl̂éd̂"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr.js | title": {
+    "message": "`[aria-*]` ât́t̂ŕîb́ût́êś âŕê v́âĺîd́ âńd̂ ńôt́ m̂íŝśp̂él̂ĺêd́"
+  },
+  "lighthouse-core/audits/accessibility/audio-caption.js | description": {
+    "message": "Ĉáp̂t́îón̂ś m̂ák̂é âúd̂íô él̂ém̂én̂t́ŝ úŝáb̂ĺê f́ôŕ d̂éâf́ ôŕ ĥéâŕîńĝ-ím̂ṕâír̂éd̂ úŝér̂ś, p̂ŕôv́îd́îńĝ ćr̂ít̂íĉál̂ ín̂f́ôŕm̂át̂íôń ŝúĉh́ âś ŵh́ô íŝ t́âĺk̂ín̂ǵ, ŵh́ât́ t̂h́êý'r̂é ŝáŷín̂ǵ, âńd̂ ót̂h́êŕ n̂ón̂-śp̂éêćĥ ín̂f́ôŕm̂át̂íôń. [L̂éâŕn̂ ḿôŕê](https://web.dev/audio-caption/)."
+  },
+  "lighthouse-core/audits/accessibility/audio-caption.js | failureTitle": {
+    "message": "`<audio>` êĺêḿêńt̂ś âŕê ḿîśŝín̂ǵ â `<track>` él̂ém̂én̂t́ ŵít̂h́ `[kind=\"captions\"]`."
+  },
+  "lighthouse-core/audits/accessibility/audio-caption.js | title": {
+    "message": "`<audio>` êĺêḿêńt̂ś ĉón̂t́âín̂ á `<track>` êĺêḿêńt̂ ẃît́ĥ `[kind=\"captions\"]`"
+  },
+  "lighthouse-core/audits/accessibility/axe-audit.js | failingElementsHeader": {
+    "message": "F̂áîĺîńĝ Él̂ém̂én̂t́ŝ"
+  },
+  "lighthouse-core/audits/accessibility/button-name.js | description": {
+    "message": "Ŵh́êń â b́ût́t̂ón̂ d́ôéŝń't̂ h́âv́ê án̂ áĉćêśŝíb̂ĺê ńâḿê, śĉŕêén̂ ŕêád̂ér̂ś âńn̂óûńĉé ît́ âś \"b̂út̂t́ôń\", m̂ák̂ín̂ǵ ît́ ûńûśâb́l̂é f̂ór̂ úŝér̂ś ŵh́ô ŕêĺŷ ón̂ śĉŕêén̂ ŕêád̂ér̂ś. [L̂éâŕn̂ ḿôŕê](https://web.dev/button-name/)."
+  },
+  "lighthouse-core/audits/accessibility/button-name.js | failureTitle": {
+    "message": "B̂út̂t́ôńŝ d́ô ńôt́ ĥáv̂é âń âćĉéŝśîb́l̂é n̂ám̂é"
+  },
+  "lighthouse-core/audits/accessibility/button-name.js | title": {
+    "message": "B̂út̂t́ôńŝ h́âv́ê án̂ áĉćêśŝíb̂ĺê ńâḿê"
+  },
+  "lighthouse-core/audits/accessibility/bypass.js | description": {
+    "message": "Âd́d̂ín̂ǵ ŵáŷś t̂ó b̂ýp̂áŝś r̂ép̂ét̂ít̂ív̂é ĉón̂t́êńt̂ ĺêt́ŝ ḱêýb̂óâŕd̂ úŝér̂ś n̂áv̂íĝát̂é t̂h́ê ṕâǵê ḿôŕê éf̂f́îćîén̂t́l̂ý. [L̂éâŕn̂ ḿôŕê](https://web.dev/bypass/)."
+  },
+  "lighthouse-core/audits/accessibility/bypass.js | failureTitle": {
+    "message": "T̂h́ê ṕâǵê d́ôéŝ ńôt́ ĉón̂t́âín̂ á ĥéâd́îńĝ, śk̂íp̂ ĺîńk̂, ór̂ ĺâńd̂ḿâŕk̂ ŕêǵîón̂"
+  },
+  "lighthouse-core/audits/accessibility/bypass.js | title": {
+    "message": "T̂h́ê ṕâǵê ćôńt̂áîńŝ á ĥéâd́îńĝ, śk̂íp̂ ĺîńk̂, ór̂ ĺâńd̂ḿâŕk̂ ŕêǵîón̂"
+  },
+  "lighthouse-core/audits/accessibility/color-contrast.js | description": {
+    "message": "L̂óŵ-ćôńt̂ŕâśt̂ t́êx́t̂ íŝ d́îf́f̂íĉúl̂t́ ôŕ îḿp̂óŝśîb́l̂é f̂ór̂ ḿâńŷ úŝér̂ś t̂ó r̂éâd́. [L̂éâŕn̂ ḿôŕê](https://web.dev/color-contrast/)."
+  },
+  "lighthouse-core/audits/accessibility/color-contrast.js | failureTitle": {
+    "message": "B̂áĉḱĝŕôún̂d́ âńd̂ f́ôŕêǵr̂óûńd̂ ćôĺôŕŝ d́ô ńôt́ ĥáv̂é â śûf́f̂íĉíêńt̂ ćôńt̂ŕâśt̂ ŕât́îó."
+  },
+  "lighthouse-core/audits/accessibility/color-contrast.js | title": {
+    "message": "B̂áĉḱĝŕôún̂d́ âńd̂ f́ôŕêǵr̂óûńd̂ ćôĺôŕŝ h́âv́ê á ŝúf̂f́îćîén̂t́ ĉón̂t́r̂áŝt́ r̂át̂íô"
+  },
+  "lighthouse-core/audits/accessibility/definition-list.js | description": {
+    "message": "Ŵh́êń d̂éf̂ín̂ít̂íôń l̂íŝt́ŝ ár̂é n̂ót̂ ṕr̂óp̂ér̂ĺŷ ḿâŕk̂éd̂ úp̂, śĉŕêén̂ ŕêád̂ér̂ś m̂áŷ ṕr̂ód̂úĉé ĉón̂f́ûśîńĝ ór̂ ín̂áĉćûŕât́ê óût́p̂út̂. [Ĺêár̂ń m̂ór̂é](https://web.dev/definition-list/)."
+  },
+  "lighthouse-core/audits/accessibility/definition-list.js | failureTitle": {
+    "message": "`<dl>`'ŝ d́ô ńôt́ ĉón̂t́âín̂ ón̂ĺŷ ṕr̂óp̂ér̂ĺŷ-ór̂d́êŕêd́ `<dt>` âńd̂ `<dd>` ǵr̂óûṕŝ, `<script>` ór̂ `<template>` él̂ém̂én̂t́ŝ."
+  },
+  "lighthouse-core/audits/accessibility/definition-list.js | title": {
+    "message": "`<dl>`'ŝ ćôńt̂áîń ôńl̂ý p̂ŕôṕêŕl̂ý-ôŕd̂ér̂éd̂ `<dt>` án̂d́ `<dd>` ĝŕôúp̂ś, `<script>` ôŕ `<template>` êĺêḿêńt̂ś."
+  },
+  "lighthouse-core/audits/accessibility/dlitem.js | description": {
+    "message": "D̂éf̂ín̂ít̂íôń l̂íŝt́ ît́êḿŝ (`<dt>` án̂d́ `<dd>`) m̂úŝt́ b̂é ŵŕâṕp̂éd̂ ín̂ á p̂ár̂én̂t́ `<dl>` êĺêḿêńt̂ t́ô én̂śûŕê t́ĥát̂ śĉŕêén̂ ŕêád̂ér̂ś ĉán̂ ṕr̂óp̂ér̂ĺŷ án̂ńôún̂ćê t́ĥém̂. [Ĺêár̂ń m̂ór̂é](https://web.dev/dlitem/)."
+  },
+  "lighthouse-core/audits/accessibility/dlitem.js | failureTitle": {
+    "message": "D̂éf̂ín̂ít̂íôń l̂íŝt́ ît́êḿŝ ár̂é n̂ót̂ ẃr̂áp̂ṕêd́ îń `<dl>` êĺêḿêńt̂ś"
+  },
+  "lighthouse-core/audits/accessibility/dlitem.js | title": {
+    "message": "D̂éf̂ín̂ít̂íôń l̂íŝt́ ît́êḿŝ ár̂é ŵŕâṕp̂éd̂ ín̂ `<dl>` él̂ém̂én̂t́ŝ"
+  },
+  "lighthouse-core/audits/accessibility/document-title.js | description": {
+    "message": "T̂h́ê t́ît́l̂é ĝív̂éŝ śĉŕêén̂ ŕêád̂ér̂ úŝér̂ś âń ôv́êŕv̂íêẃ ôf́ t̂h́ê ṕâǵê, án̂d́ ŝéâŕĉh́ êńĝín̂é ûśêŕŝ ŕêĺŷ ón̂ ít̂ h́êáv̂íl̂ý t̂ó d̂ét̂ér̂ḿîńê íf̂ á p̂áĝé îś r̂él̂év̂án̂t́ t̂ó t̂h́êír̂ śêár̂ćĥ. [Ĺêár̂ń m̂ór̂é](https://web.dev/document-title/)."
+  },
+  "lighthouse-core/audits/accessibility/document-title.js | failureTitle": {
+    "message": "D̂óĉúm̂én̂t́ d̂óêśn̂'t́ ĥáv̂é â `<title>` él̂ém̂én̂t́"
+  },
+  "lighthouse-core/audits/accessibility/document-title.js | title": {
+    "message": "D̂óĉúm̂én̂t́ ĥáŝ á `<title>` êĺêḿêńt̂"
+  },
+  "lighthouse-core/audits/accessibility/duplicate-id.js | description": {
+    "message": "T̂h́ê v́âĺûé ôf́ âń îd́ ât́t̂ŕîb́ût́ê ḿûśt̂ b́ê ún̂íq̂úê t́ô ṕr̂év̂én̂t́ ôt́ĥér̂ ín̂śt̂án̂ćêś f̂ŕôḿ b̂éîńĝ óv̂ér̂ĺôók̂éd̂ b́ŷ áŝśîśt̂ív̂é t̂éĉh́n̂ól̂óĝíêś. [L̂éâŕn̂ ḿôŕê](https://web.dev/duplicate-id/)."
+  },
+  "lighthouse-core/audits/accessibility/duplicate-id.js | failureTitle": {
+    "message": "`[id]` ât́t̂ŕîb́ût́êś ôń t̂h́ê ṕâǵê ár̂é n̂ót̂ ún̂íq̂úê"
+  },
+  "lighthouse-core/audits/accessibility/duplicate-id.js | title": {
+    "message": "`[id]` ât́t̂ŕîb́ût́êś ôń t̂h́ê ṕâǵê ár̂é ûńîq́ûé"
+  },
+  "lighthouse-core/audits/accessibility/frame-title.js | description": {
+    "message": "Ŝćr̂éêń r̂éâd́êŕ ûśêŕŝ ŕêĺŷ ón̂ f́r̂ám̂é t̂ít̂ĺêś t̂ó d̂éŝćr̂íb̂é t̂h́ê ćôńt̂én̂t́ŝ óf̂ f́r̂ám̂éŝ. [Ĺêár̂ń m̂ór̂é](https://web.dev/frame-title/)."
+  },
+  "lighthouse-core/audits/accessibility/frame-title.js | failureTitle": {
+    "message": "`<frame>` ôŕ `<iframe>` êĺêḿêńt̂ś d̂ó n̂ót̂ h́âv́ê á t̂ít̂ĺê"
+  },
+  "lighthouse-core/audits/accessibility/frame-title.js | title": {
+    "message": "`<frame>` ôŕ `<iframe>` êĺêḿêńt̂ś ĥáv̂é â t́ît́l̂é"
+  },
+  "lighthouse-core/audits/accessibility/html-has-lang.js | description": {
+    "message": "Îf́ â ṕâǵê d́ôéŝń't̂ śp̂éĉíf̂ý â ĺâńĝ át̂t́r̂íb̂út̂é, â śĉŕêén̂ ŕêád̂ér̂ áŝśûḿêś t̂h́ât́ t̂h́ê ṕâǵê íŝ ín̂ t́ĥé d̂éf̂áûĺt̂ ĺâńĝúâǵê t́ĥát̂ t́ĥé ûśêŕ ĉh́ôśê ẃĥén̂ śêt́t̂ín̂ǵ ûṕ t̂h́ê śĉŕêén̂ ŕêád̂ér̂. Íf̂ t́ĥé p̂áĝé îśn̂'t́ âćt̂úâĺl̂ý îń t̂h́ê d́êf́âúl̂t́ l̂án̂ǵûáĝé, t̂h́êń t̂h́ê śĉŕêén̂ ŕêád̂ér̂ ḿîǵĥt́ n̂ót̂ án̂ńôún̂ćê t́ĥé p̂áĝé'ŝ t́êx́t̂ ćôŕr̂éĉt́l̂ý. [L̂éâŕn̂ ḿôŕê](https://web.dev/html-has-lang/)."
+  },
+  "lighthouse-core/audits/accessibility/html-has-lang.js | failureTitle": {
+    "message": "`<html>` êĺêḿêńt̂ d́ôéŝ ńôt́ ĥáv̂é â `[lang]` át̂t́r̂íb̂út̂é"
+  },
+  "lighthouse-core/audits/accessibility/html-has-lang.js | title": {
+    "message": "`<html>` êĺêḿêńt̂ h́âś â `[lang]` át̂t́r̂íb̂út̂é"
+  },
+  "lighthouse-core/audits/accessibility/html-lang-valid.js | description": {
+    "message": "Ŝṕêćîf́ŷín̂ǵ â v́âĺîd́ [B̂ĆP̂ 47 ĺâńĝúâǵê](https://www.w3.org/International/questions/qa-choosing-language-tags#question) h́êĺp̂ś ŝćr̂éêń r̂éâd́êŕŝ án̂ńôún̂ćê t́êx́t̂ ṕr̂óp̂ér̂ĺŷ. [Ĺêár̂ń m̂ór̂é](https://web.dev/html-lang-valid/)."
+  },
+  "lighthouse-core/audits/accessibility/html-lang-valid.js | failureTitle": {
+    "message": "`<html>` êĺêḿêńt̂ d́ôéŝ ńôt́ ĥáv̂é â v́âĺîd́ v̂ál̂úê f́ôŕ ît́ŝ `[lang]` át̂t́r̂íb̂út̂é."
+  },
+  "lighthouse-core/audits/accessibility/html-lang-valid.js | title": {
+    "message": "`<html>` êĺêḿêńt̂ h́âś â v́âĺîd́ v̂ál̂úê f́ôŕ ît́ŝ `[lang]` át̂t́r̂íb̂út̂é"
+  },
+  "lighthouse-core/audits/accessibility/image-alt.js | description": {
+    "message": "Îńf̂ór̂ḿât́îv́ê él̂ém̂én̂t́ŝ śĥóûĺd̂ áîḿ f̂ór̂ śĥór̂t́, d̂éŝćr̂íp̂t́îv́ê ál̂t́êŕn̂át̂é t̂éx̂t́. D̂éĉór̂át̂ív̂é êĺêḿêńt̂ś ĉán̂ b́ê íĝńôŕêd́ ŵít̂h́ âń êḿp̂t́ŷ ál̂t́ ât́t̂ŕîb́ût́ê. [Ĺêár̂ń m̂ór̂é](https://web.dev/image-alt/)."
+  },
+  "lighthouse-core/audits/accessibility/image-alt.js | failureTitle": {
+    "message": "Îḿâǵê él̂ém̂én̂t́ŝ d́ô ńôt́ ĥáv̂é `[alt]` ât́t̂ŕîb́ût́êś"
+  },
+  "lighthouse-core/audits/accessibility/image-alt.js | title": {
+    "message": "Îḿâǵê él̂ém̂én̂t́ŝ h́âv́ê `[alt]` át̂t́r̂íb̂út̂éŝ"
+  },
+  "lighthouse-core/audits/accessibility/input-image-alt.js | description": {
+    "message": "Ŵh́êń âń îḿâǵê íŝ b́êín̂ǵ ûśêd́ âś âń `<input>` b̂út̂t́ôń, p̂ŕôv́îd́îńĝ ál̂t́êŕn̂át̂ív̂é t̂éx̂t́ ĉán̂ h́êĺp̂ śĉŕêén̂ ŕêád̂ér̂ úŝér̂ś ûńd̂ér̂śt̂án̂d́ t̂h́ê ṕûŕp̂óŝé ôf́ t̂h́ê b́ût́t̂ón̂. [Ĺêár̂ń m̂ór̂é](https://web.dev/input-image-alt/)."
+  },
+  "lighthouse-core/audits/accessibility/input-image-alt.js | failureTitle": {
+    "message": "`<input type=\"image\">` êĺêḿêńt̂ś d̂ó n̂ót̂ h́âv́ê `[alt]` t́êx́t̂"
+  },
+  "lighthouse-core/audits/accessibility/input-image-alt.js | title": {
+    "message": "`<input type=\"image\">` êĺêḿêńt̂ś ĥáv̂é `[alt]` t̂éx̂t́"
+  },
+  "lighthouse-core/audits/accessibility/label.js | description": {
+    "message": "L̂áb̂él̂ś êńŝúr̂é t̂h́ât́ f̂ór̂ḿ ĉón̂t́r̂ól̂ś âŕê án̂ńôún̂ćêd́ p̂ŕôṕêŕl̂ý b̂ý âśŝíŝt́îv́ê t́êćĥńôĺôǵîéŝ, ĺîḱê śĉŕêén̂ ŕêád̂ér̂ś. [L̂éâŕn̂ ḿôŕê](https://web.dev/label/)."
+  },
+  "lighthouse-core/audits/accessibility/label.js | failureTitle": {
+    "message": "F̂ór̂ḿ êĺêḿêńt̂ś d̂ó n̂ót̂ h́âv́ê áŝśôćîát̂éd̂ ĺâb́êĺŝ"
+  },
+  "lighthouse-core/audits/accessibility/label.js | title": {
+    "message": "F̂ór̂ḿ êĺêḿêńt̂ś ĥáv̂é âśŝóĉíât́êd́ l̂áb̂él̂ś"
+  },
+  "lighthouse-core/audits/accessibility/layout-table.js | description": {
+    "message": "Â t́âb́l̂é b̂éîńĝ úŝéd̂ f́ôŕ l̂áŷóût́ p̂úr̂ṕôśêś ŝh́ôúl̂d́ n̂ót̂ ín̂ćl̂úd̂é d̂át̂á êĺêḿêńt̂ś, ŝúĉh́ âś t̂h́ê t́ĥ ór̂ ćâṕt̂íôń êĺêḿêńt̂ś ôŕ t̂h́ê śûḿm̂ár̂ý ât́t̂ŕîb́ût́ê, b́êćâúŝé t̂h́îś ĉán̂ ćr̂éât́ê á ĉón̂f́ûśîńĝ éx̂ṕêŕîén̂ćê f́ôŕ ŝćr̂éêń r̂éâd́êŕ ûśêŕŝ. [Ĺêár̂ń m̂ór̂é](https://web.dev/layout-table/)."
+  },
+  "lighthouse-core/audits/accessibility/layout-table.js | failureTitle": {
+    "message": "P̂ŕêśêńt̂át̂íôńâĺ `<table>` êĺêḿêńt̂ś d̂ó n̂ót̂ áv̂óîd́ ûśîńĝ `<th>`, `<caption>` ór̂ t́ĥé `[summary]` ât́t̂ŕîb́ût́ê."
+  },
+  "lighthouse-core/audits/accessibility/layout-table.js | title": {
+    "message": "P̂ŕêśêńt̂át̂íôńâĺ `<table>` êĺêḿêńt̂ś âv́ôíd̂ úŝín̂ǵ `<th>`, `<caption>` ôŕ t̂h́ê `[summary]` át̂t́r̂íb̂út̂é."
+  },
+  "lighthouse-core/audits/accessibility/link-name.js | description": {
+    "message": "L̂ín̂ḱ t̂éx̂t́ (âńd̂ ál̂t́êŕn̂át̂é t̂éx̂t́ f̂ór̂ ím̂áĝéŝ, ẃĥén̂ úŝéd̂ áŝ ĺîńk̂ś) t̂h́ât́ îś d̂íŝćêŕn̂íb̂ĺê, ún̂íq̂úê, án̂d́ f̂óĉúŝáb̂ĺê ím̂ṕr̂óv̂éŝ t́ĥé n̂áv̂íĝát̂íôń êx́p̂ér̂íêńĉé f̂ór̂ śĉŕêén̂ ŕêád̂ér̂ úŝér̂ś. [L̂éâŕn̂ ḿôŕê](https://web.dev/link-name/)."
+  },
+  "lighthouse-core/audits/accessibility/link-name.js | failureTitle": {
+    "message": "L̂ín̂ḱŝ d́ô ńôt́ ĥáv̂é â d́îśĉér̂ńîb́l̂é n̂ám̂é"
+  },
+  "lighthouse-core/audits/accessibility/link-name.js | title": {
+    "message": "L̂ín̂ḱŝ h́âv́ê á d̂íŝćêŕn̂íb̂ĺê ńâḿê"
+  },
+  "lighthouse-core/audits/accessibility/list.js | description": {
+    "message": "Ŝćr̂éêń r̂éâd́êŕŝ h́âv́ê á ŝṕêćîf́îć ŵáŷ óf̂ án̂ńôún̂ćîńĝ ĺîśt̂ś. Êńŝúr̂ín̂ǵ p̂ŕôṕêŕ l̂íŝt́ ŝt́r̂úĉt́ûŕê áîd́ŝ śĉŕêén̂ ŕêád̂ér̂ óût́p̂út̂. [Ĺêár̂ń m̂ór̂é](https://web.dev/list/)."
+  },
+  "lighthouse-core/audits/accessibility/list.js | failureTitle": {
+    "message": "L̂íŝt́ŝ d́ô ńôt́ ĉón̂t́âín̂ ón̂ĺŷ `<li>` él̂ém̂én̂t́ŝ án̂d́ ŝćr̂íp̂t́ ŝúp̂ṕôŕt̂ín̂ǵ êĺêḿêńt̂ś (`<script>` âńd̂ `<template>`)."
+  },
+  "lighthouse-core/audits/accessibility/list.js | title": {
+    "message": "L̂íŝt́ŝ ćôńt̂áîń ôńl̂ý `<li>` êĺêḿêńt̂ś âńd̂ śĉŕîṕt̂ śûṕp̂ór̂t́îńĝ él̂ém̂én̂t́ŝ (`<script>` án̂d́ `<template>`)."
+  },
+  "lighthouse-core/audits/accessibility/listitem.js | description": {
+    "message": "Ŝćr̂éêń r̂éâd́êŕŝ ŕêq́ûír̂é l̂íŝt́ ît́êḿŝ (`<li>`) t́ô b́ê ćôńt̂áîńêd́ ŵít̂h́îń â ṕâŕêńt̂ `<ul>` ór̂ `<ol>` t́ô b́ê án̂ńôún̂ćêd́ p̂ŕôṕêŕl̂ý. [L̂éâŕn̂ ḿôŕê](https://web.dev/listitem/)."
+  },
+  "lighthouse-core/audits/accessibility/listitem.js | failureTitle": {
+    "message": "L̂íŝt́ ît́êḿŝ (`<li>`) ár̂é n̂ót̂ ćôńt̂áîńêd́ ŵít̂h́îń `<ul>` ôŕ `<ol>` p̂ár̂én̂t́ êĺêḿêńt̂ś."
+  },
+  "lighthouse-core/audits/accessibility/listitem.js | title": {
+    "message": "L̂íŝt́ ît́êḿŝ (`<li>`) ár̂é ĉón̂t́âín̂éd̂ ẃît́ĥín̂ `<ul>` ór̂ `<ol>` ṕâŕêńt̂ él̂ém̂én̂t́ŝ"
+  },
+  "lighthouse-core/audits/accessibility/meta-refresh.js | description": {
+    "message": "Ûśêŕŝ d́ô ńôt́ êx́p̂éĉt́ â ṕâǵê t́ô ŕêf́r̂éŝh́ âút̂óm̂át̂íĉál̂ĺŷ, án̂d́ d̂óîńĝ śô ẃîĺl̂ ḿôv́ê f́ôćûś b̂áĉḱ t̂ó t̂h́ê t́ôṕ ôf́ t̂h́ê ṕâǵê. T́ĥíŝ ḿâý ĉŕêát̂é â f́r̂úŝt́r̂át̂ín̂ǵ ôŕ ĉón̂f́ûśîńĝ éx̂ṕêŕîén̂ćê. [Ĺêár̂ń m̂ór̂é](https://web.dev/meta-refresh/)."
+  },
+  "lighthouse-core/audits/accessibility/meta-refresh.js | failureTitle": {
+    "message": "T̂h́ê d́ôćûḿêńt̂ úŝéŝ `<meta http-equiv=\"refresh\">`"
+  },
+  "lighthouse-core/audits/accessibility/meta-refresh.js | title": {
+    "message": "T̂h́ê d́ôćûḿêńt̂ d́ôéŝ ńôt́ ûśê `<meta http-equiv=\"refresh\">`"
+  },
+  "lighthouse-core/audits/accessibility/meta-viewport.js | description": {
+    "message": "D̂íŝáb̂ĺîńĝ źôóm̂ín̂ǵ îś p̂ŕôb́l̂ém̂át̂íĉ f́ôŕ ûśêŕŝ ẃît́ĥ ĺôẃ v̂íŝíôń ŵh́ô ŕêĺŷ ón̂ śĉŕêén̂ ḿâǵn̂íf̂íĉát̂íôń t̂ó p̂ŕôṕêŕl̂ý ŝéê t́ĥé ĉón̂t́êńt̂ś ôf́ â ẃêb́ p̂áĝé. [L̂éâŕn̂ ḿôŕê](https://web.dev/meta-viewport/)."
+  },
+  "lighthouse-core/audits/accessibility/meta-viewport.js | failureTitle": {
+    "message": "`[user-scalable=\"no\"]` îś ûśêd́ îń t̂h́ê `<meta name=\"viewport\">` él̂ém̂én̂t́ ôŕ t̂h́ê `[maximum-scale]` át̂t́r̂íb̂út̂é îś l̂éŝś t̂h́âń 5."
+  },
+  "lighthouse-core/audits/accessibility/meta-viewport.js | title": {
+    "message": "`[user-scalable=\"no\"]` îś n̂ót̂ úŝéd̂ ín̂ t́ĥé `<meta name=\"viewport\">` êĺêḿêńt̂ án̂d́ t̂h́ê `[maximum-scale]` át̂t́r̂íb̂út̂é îś n̂ót̂ ĺêśŝ t́ĥán̂ 5."
+  },
+  "lighthouse-core/audits/accessibility/object-alt.js | description": {
+    "message": "Ŝćr̂éêń r̂éâd́êŕŝ ćâńn̂ót̂ t́r̂án̂śl̂át̂é n̂ón̂-t́êx́t̂ ćôńt̂én̂t́. Âd́d̂ín̂ǵ âĺt̂ t́êx́t̂ t́ô `<object>` él̂ém̂én̂t́ŝ h́êĺp̂ś ŝćr̂éêń r̂éâd́êŕŝ ćôńv̂éŷ ḿêán̂ín̂ǵ t̂ó ûśêŕŝ. [Ĺêár̂ń m̂ór̂é](https://web.dev/object-alt/)."
+  },
+  "lighthouse-core/audits/accessibility/object-alt.js | failureTitle": {
+    "message": "`<object>` êĺêḿêńt̂ś d̂ó n̂ót̂ h́âv́ê `[alt]` t́êx́t̂"
+  },
+  "lighthouse-core/audits/accessibility/object-alt.js | title": {
+    "message": "`<object>` êĺêḿêńt̂ś ĥáv̂é `[alt]` t̂éx̂t́"
+  },
+  "lighthouse-core/audits/accessibility/tabindex.js | description": {
+    "message": "Â v́âĺûé ĝŕêát̂ér̂ t́ĥán̂ 0 ím̂ṕl̂íêś âń êx́p̂ĺîćît́ n̂áv̂íĝát̂íôń ôŕd̂ér̂ín̂ǵ. Âĺt̂h́ôúĝh́ t̂éĉh́n̂íĉál̂ĺŷ v́âĺîd́, t̂h́îś ôf́t̂én̂ ćr̂éât́êś f̂ŕûśt̂ŕât́îńĝ éx̂ṕêŕîén̂ćêś f̂ór̂ úŝér̂ś ŵh́ô ŕêĺŷ ón̂ áŝśîśt̂ív̂é t̂éĉh́n̂ól̂óĝíêś. [L̂éâŕn̂ ḿôŕê](https://web.dev/tabindex/)."
+  },
+  "lighthouse-core/audits/accessibility/tabindex.js | failureTitle": {
+    "message": "Ŝóm̂é êĺêḿêńt̂ś ĥáv̂é â `[tabindex]` v́âĺûé ĝŕêát̂ér̂ t́ĥán̂ 0"
+  },
+  "lighthouse-core/audits/accessibility/tabindex.js | title": {
+    "message": "N̂ó êĺêḿêńt̂ h́âś â `[tabindex]` v́âĺûé ĝŕêát̂ér̂ t́ĥán̂ 0"
+  },
+  "lighthouse-core/audits/accessibility/td-headers-attr.js | description": {
+    "message": "Ŝćr̂éêń r̂éâd́êŕŝ h́âv́ê f́êát̂úr̂éŝ t́ô ḿâḱê ńâv́îǵât́îńĝ t́âb́l̂éŝ éâśîér̂. Én̂śûŕîńĝ `<td>` ćêĺl̂ś ûśîńĝ t́ĥé `[headers]` ât́t̂ŕîb́ût́ê ón̂ĺŷ ŕêf́êŕ t̂ó ôt́ĥér̂ ćêĺl̂ś îń t̂h́ê śâḿê t́âb́l̂é m̂áŷ ím̂ṕr̂óv̂é t̂h́ê éx̂ṕêŕîén̂ćê f́ôŕ ŝćr̂éêń r̂éâd́êŕ ûśêŕŝ. [Ĺêár̂ń m̂ór̂é](https://web.dev/td-headers-attr/)."
+  },
+  "lighthouse-core/audits/accessibility/td-headers-attr.js | failureTitle": {
+    "message": "Ĉél̂ĺŝ ín̂ á `<table>` êĺêḿêńt̂ t́ĥát̂ úŝé t̂h́ê `[headers]` át̂t́r̂íb̂út̂é r̂éf̂ér̂ t́ô án̂ él̂ém̂én̂t́ `id` n̂ót̂ f́ôún̂d́ ŵít̂h́îń t̂h́ê śâḿê t́âb́l̂é."
+  },
+  "lighthouse-core/audits/accessibility/td-headers-attr.js | title": {
+    "message": "Ĉél̂ĺŝ ín̂ á `<table>` êĺêḿêńt̂ t́ĥát̂ úŝé t̂h́ê `[headers]` át̂t́r̂íb̂út̂é r̂éf̂ér̂ t́ô t́âb́l̂é ĉél̂ĺŝ ẃît́ĥín̂ t́ĥé ŝám̂é t̂áb̂ĺê."
+  },
+  "lighthouse-core/audits/accessibility/th-has-data-cells.js | description": {
+    "message": "Ŝćr̂éêń r̂éâd́êŕŝ h́âv́ê f́êát̂úr̂éŝ t́ô ḿâḱê ńâv́îǵât́îńĝ t́âb́l̂éŝ éâśîér̂. Én̂śûŕîńĝ t́âb́l̂é ĥéâd́êŕŝ ál̂ẃâýŝ ŕêf́êŕ t̂ó ŝóm̂é ŝét̂ óf̂ ćêĺl̂ś m̂áŷ ím̂ṕr̂óv̂é t̂h́ê éx̂ṕêŕîén̂ćê f́ôŕ ŝćr̂éêń r̂éâd́êŕ ûśêŕŝ. [Ĺêár̂ń m̂ór̂é](https://web.dev/th-has-data-cells/)."
+  },
+  "lighthouse-core/audits/accessibility/th-has-data-cells.js | failureTitle": {
+    "message": "`<th>` êĺêḿêńt̂ś âńd̂ él̂ém̂én̂t́ŝ ẃît́ĥ `[role=\"columnheader\"/\"rowheader\"]` d́ô ńôt́ ĥáv̂é d̂át̂á ĉél̂ĺŝ t́ĥéŷ d́êśĉŕîb́ê."
+  },
+  "lighthouse-core/audits/accessibility/th-has-data-cells.js | title": {
+    "message": "`<th>` êĺêḿêńt̂ś âńd̂ él̂ém̂én̂t́ŝ ẃît́ĥ `[role=\"columnheader\"/\"rowheader\"]` h́âv́ê d́ât́â ćêĺl̂ś t̂h́êý d̂éŝćr̂íb̂é."
+  },
+  "lighthouse-core/audits/accessibility/valid-lang.js | description": {
+    "message": "Ŝṕêćîf́ŷín̂ǵ â v́âĺîd́ [B̂ĆP̂ 47 ĺâńĝúâǵê](https://www.w3.org/International/questions/qa-choosing-language-tags#question) ón̂ él̂ém̂én̂t́ŝ h́êĺp̂ś êńŝúr̂é t̂h́ât́ t̂éx̂t́ îś p̂ŕôńôún̂ćêd́ ĉór̂ŕêćt̂ĺŷ b́ŷ á ŝćr̂éêń r̂éâd́êŕ. [L̂éâŕn̂ ḿôŕê](https://web.dev/valid-lang/)."
+  },
+  "lighthouse-core/audits/accessibility/valid-lang.js | failureTitle": {
+    "message": "`[lang]` ât́t̂ŕîb́ût́êś d̂ó n̂ót̂ h́âv́ê á v̂ál̂íd̂ v́âĺûé"
+  },
+  "lighthouse-core/audits/accessibility/valid-lang.js | title": {
+    "message": "`[lang]` ât́t̂ŕîb́ût́êś ĥáv̂é â v́âĺîd́ v̂ál̂úê"
+  },
+  "lighthouse-core/audits/accessibility/video-caption.js | description": {
+    "message": "Ŵh́êń â v́îd́êó p̂ŕôv́îd́êś â ćâṕt̂íôń ît́ îś êáŝíêŕ f̂ór̂ d́êáf̂ án̂d́ ĥéâŕîńĝ ím̂ṕâír̂éd̂ úŝér̂ś t̂ó âćĉéŝś ît́ŝ ín̂f́ôŕm̂át̂íôń. [L̂éâŕn̂ ḿôŕê](https://web.dev/video-caption/)."
+  },
+  "lighthouse-core/audits/accessibility/video-caption.js | failureTitle": {
+    "message": "`<video>` êĺêḿêńt̂ś d̂ó n̂ót̂ ćôńt̂áîń â `<track>` él̂ém̂én̂t́ ŵít̂h́ `[kind=\"captions\"]`."
+  },
+  "lighthouse-core/audits/accessibility/video-caption.js | title": {
+    "message": "`<video>` êĺêḿêńt̂ś ĉón̂t́âín̂ á `<track>` êĺêḿêńt̂ ẃît́ĥ `[kind=\"captions\"]`"
+  },
+  "lighthouse-core/audits/accessibility/video-description.js | description": {
+    "message": "Âúd̂íô d́êśĉŕîṕt̂íôńŝ ṕr̂óv̂íd̂é r̂él̂év̂án̂t́ îńf̂ór̂ḿât́îón̂ f́ôŕ v̂íd̂éôś t̂h́ât́ d̂íâĺôǵûé ĉán̂ńôt́, ŝúĉh́ âś f̂áĉíâĺ êx́p̂ŕêśŝíôńŝ án̂d́ ŝćêńêś. [L̂éâŕn̂ ḿôŕê](https://web.dev/video-description/)."
+  },
+  "lighthouse-core/audits/accessibility/video-description.js | failureTitle": {
+    "message": "`<video>` êĺêḿêńt̂ś d̂ó n̂ót̂ ćôńt̂áîń â `<track>` él̂ém̂én̂t́ ŵít̂h́ `[kind=\"description\"]`."
+  },
+  "lighthouse-core/audits/accessibility/video-description.js | title": {
+    "message": "`<video>` êĺêḿêńt̂ś ĉón̂t́âín̂ á `<track>` êĺêḿêńt̂ ẃît́ĥ `[kind=\"description\"]`"
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | description": {
+    "message": "F̂ór̂ íd̂éâĺ âṕp̂éâŕâńĉé ôń îÓŜ ẃĥén̂ úŝér̂ś âd́d̂ á p̂ŕôǵr̂éŝśîv́ê ẃêb́ âṕp̂ t́ô t́ĥé ĥóm̂é ŝćr̂éêń, d̂éf̂ín̂é âń `apple-touch-icon`. Ît́ m̂úŝt́ p̂óîńt̂ t́ô á n̂ón̂-t́r̂án̂śp̂ár̂én̂t́ 192p̂x́ (ôŕ 180p̂x́) ŝq́ûár̂é P̂ŃĜ. [Ĺêár̂ń M̂ór̂é](https://developers.google.com/web/fundamentals/design-and-ux/browser-customization/)."
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | failureTitle": {
+    "message": "D̂óêś n̂ót̂ ṕr̂óv̂íd̂é â v́âĺîd́ `apple-touch-icon`"
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | precomposedWarning": {
+    "message": "`apple-touch-icon-precomposed` îś ôút̂ óf̂ d́ât́ê; `apple-touch-icon` íŝ ṕr̂éf̂ér̂ŕêd́."
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | title": {
+    "message": "P̂ŕôv́îd́êś â v́âĺîd́ `apple-touch-icon`"
+  },
+  "lighthouse-core/audits/bootup-time.js | chromeExtensionsWarning": {
+    "message": "Ĉh́r̂óm̂é êx́t̂én̂śîón̂ś n̂éĝát̂ív̂él̂ý âf́f̂éĉt́êd́ t̂h́îś p̂áĝé'ŝ ĺôád̂ ṕêŕf̂ór̂ḿâńĉé. T̂ŕŷ áûd́ît́îńĝ t́ĥé p̂áĝé îń îńĉóĝńît́ô ḿôd́ê ór̂ f́r̂óm̂ á Ĉh́r̂óm̂é p̂ŕôf́îĺê ẃît́ĥóût́ êx́t̂én̂śîón̂ś."
+  },
+  "lighthouse-core/audits/bootup-time.js | columnScriptEval": {
+    "message": "Ŝćr̂íp̂t́ Êv́âĺûát̂íôń"
+  },
+  "lighthouse-core/audits/bootup-time.js | columnScriptParse": {
+    "message": "Ŝćr̂íp̂t́ P̂ár̂śê"
+  },
+  "lighthouse-core/audits/bootup-time.js | columnTotal": {
+    "message": "T̂ót̂ál̂ ĆP̂Ú T̂ím̂é"
+  },
+  "lighthouse-core/audits/bootup-time.js | description": {
+    "message": "Ĉón̂śîd́êŕ r̂éd̂úĉín̂ǵ t̂h́ê t́îḿê śp̂én̂t́ p̂ár̂śîńĝ, ćôḿp̂íl̂ín̂ǵ, âńd̂ éx̂éĉút̂ín̂ǵ ĴŚ. Ŷóû ḿâý f̂ín̂d́ d̂él̂ív̂ér̂ín̂ǵ ŝḿâĺl̂ér̂ J́Ŝ ṕâýl̂óâd́ŝ h́êĺp̂ś ŵít̂h́ t̂h́îś. [L̂éâŕn̂ ḿôŕê](https://developers.google.com/web/tools/lighthouse/audits/bootup)."
+  },
+  "lighthouse-core/audits/bootup-time.js | failureTitle": {
+    "message": "R̂éd̂úĉé Ĵáv̂áŜćr̂íp̂t́ êx́êćût́îón̂ t́îḿê"
+  },
+  "lighthouse-core/audits/bootup-time.js | title": {
+    "message": "Ĵáv̂áŜćr̂íp̂t́ êx́êćût́îón̂ t́îḿê"
+  },
+  "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | description": {
+    "message": "L̂ár̂ǵê ǴÎF́ŝ ár̂é îńêf́f̂íĉíêńt̂ f́ôŕ d̂él̂ív̂ér̂ín̂ǵ âńîḿât́êd́ ĉón̂t́êńt̂. Ćôńŝíd̂ér̂ úŝín̂ǵ M̂ṔÊǴ4/Ŵéb̂Ḿ v̂íd̂éôś f̂ór̂ án̂ím̂át̂íôńŝ án̂d́ P̂ŃĜ/Ẃêb́P̂ f́ôŕ ŝt́ât́îć îḿâǵêś îńŝt́êád̂ óf̂ ǴÎF́ t̂ó ŝáv̂é n̂ét̂ẃôŕk̂ b́ŷt́êś. [L̂éâŕn̂ ḿôŕê](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/replace-animated-gifs-with-video/)"
+  },
+  "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | title": {
+    "message": "Ûśê v́îd́êó f̂ór̂ḿât́ŝ f́ôŕ âńîḿât́êd́ ĉón̂t́êńt̂"
+  },
+  "lighthouse-core/audits/byte-efficiency/offscreen-images.js | description": {
+    "message": "Ĉón̂śîd́êŕ l̂áẑý-l̂óâd́îńĝ óf̂f́ŝćr̂éêń âńd̂ h́îd́d̂én̂ ím̂áĝéŝ áf̂t́êŕ âĺl̂ ćr̂ít̂íĉál̂ ŕêśôúr̂ćêś ĥáv̂é f̂ín̂íŝh́êd́ l̂óâd́îńĝ t́ô ĺôẃêŕ t̂ím̂é t̂ó îńt̂ér̂áĉt́îv́ê. [Ĺêár̂ń m̂ór̂é](https://developers.google.com/web/tools/lighthouse/audits/offscreen-images)."
+  },
+  "lighthouse-core/audits/byte-efficiency/offscreen-images.js | title": {
+    "message": "D̂éf̂ér̂ óf̂f́ŝćr̂éêń îḿâǵêś"
+  },
+  "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | description": {
+    "message": "R̂éŝóûŕĉéŝ ár̂é b̂ĺôćk̂ín̂ǵ t̂h́ê f́îŕŝt́ p̂áîńt̂ óf̂ ýôúr̂ ṕâǵê. Ćôńŝíd̂ér̂ d́êĺîv́êŕîńĝ ćr̂ít̂íĉál̂ J́Ŝ/ĆŜŚ îńl̂ín̂é âńd̂ d́êf́êŕr̂ín̂ǵ âĺl̂ ńôń-ĉŕît́îćâĺ ĴŚ/ŝt́ŷĺêś. [L̂éâŕn̂ ḿôŕê](https://developers.google.com/web/tools/lighthouse/audits/blocking-resources)."
+  },
+  "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | title": {
+    "message": "Êĺîḿîńât́ê ŕêńd̂ér̂-b́l̂óĉḱîńĝ ŕêśôúr̂ćêś"
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | description": {
+    "message": "L̂ár̂ǵê ńêt́ŵór̂ḱ p̂áŷĺôád̂ś ĉóŝt́ ûśêŕŝ ŕêál̂ ḿôńêý âńd̂ ár̂é ĥíĝh́l̂ý ĉór̂ŕêĺât́êd́ ŵít̂h́ l̂ón̂ǵ l̂óâd́ t̂ím̂éŝ. [Ĺêár̂ń m̂ór̂é](https://developers.google.com/web/tools/lighthouse/audits/network-payloads)."
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | displayValue": {
+    "message": "T̂ót̂ál̂ śîźê ẃâś {totalBytes, number, bytes} K̂B́"
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | failureTitle": {
+    "message": "Âv́ôíd̂ én̂ór̂ḿôúŝ ńêt́ŵór̂ḱ p̂áŷĺôád̂ś"
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | title": {
+    "message": "Âv́ôíd̂ś êńôŕm̂óûś n̂ét̂ẃôŕk̂ ṕâýl̂óâd́ŝ"
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-css.js | description": {
+    "message": "M̂ín̂íf̂ýîńĝ ĆŜŚ f̂íl̂éŝ ćâń r̂éd̂úĉé n̂ét̂ẃôŕk̂ ṕâýl̂óâd́ ŝíẑéŝ. [Ĺêár̂ń m̂ór̂é](https://developers.google.com/web/tools/lighthouse/audits/minify-css)."
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-css.js | title": {
+    "message": "M̂ín̂íf̂ý ĈŚŜ"
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | description": {
+    "message": "M̂ín̂íf̂ýîńĝ J́âv́âŚĉŕîṕt̂ f́îĺêś ĉán̂ ŕêd́ûćê ṕâýl̂óâd́ ŝíẑéŝ án̂d́ ŝćr̂íp̂t́ p̂ár̂śê t́îḿê. [Ĺêár̂ń m̂ór̂é](https://developers.google.com/speed/docs/insights/MinifyResources)."
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | title": {
+    "message": "M̂ín̂íf̂ý Ĵáv̂áŜćr̂íp̂t́"
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | description": {
+    "message": "R̂ém̂óv̂é d̂éâd́ r̂úl̂éŝ f́r̂óm̂ śt̂ýl̂éŝh́êét̂ś âńd̂ d́êf́êŕ t̂h́ê ĺôád̂ín̂ǵ ôf́ ĈŚŜ ńôt́ ûśêd́ f̂ór̂ áb̂óv̂é-t̂h́ê-f́ôĺd̂ ćôńt̂én̂t́ t̂ó r̂éd̂úĉé ûńn̂éĉéŝśâŕŷ b́ŷt́êś ĉón̂śûḿêd́ b̂ý n̂ét̂ẃôŕk̂ áĉt́îv́ît́ŷ. [Ĺêár̂ń m̂ór̂é](https://developers.google.com/web/tools/lighthouse/audits/unused-css)."
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | title": {
+    "message": "R̂ém̂óv̂é ûńûśêd́ ĈŚŜ"
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-javascript.js | description": {
+    "message": "R̂ém̂óv̂é ûńûśêd́ Ĵáv̂áŜćr̂íp̂t́ t̂ó r̂éd̂úĉé b̂ýt̂éŝ ćôńŝúm̂éd̂ b́ŷ ńêt́ŵór̂ḱ âćt̂ív̂ít̂ý."
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-javascript.js | title": {
+    "message": "R̂ém̂óv̂é ûńûśêd́ Ĵáv̂áŜćr̂íp̂t́"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | description": {
+    "message": "Â ĺôńĝ ćâćĥé l̂íf̂ét̂ím̂é ĉán̂ śp̂éêd́ ûṕ r̂ép̂éât́ v̂íŝít̂ś t̂ó ŷóûŕ p̂áĝé. [L̂éâŕn̂ ḿôŕê](https://developers.google.com/web/tools/lighthouse/audits/cache-policy)."
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | displayValue": {
+    "message": "{itemCount, plural,\n    =1 {1 r̂éŝóûŕĉé f̂óûńd̂}\n    other {# ŕêśôúr̂ćêś f̂óûńd̂}\n    }"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | failureTitle": {
+    "message": "Ŝér̂v́ê śt̂át̂íĉ áŝśêt́ŝ ẃît́ĥ án̂ éf̂f́îćîén̂t́ ĉáĉh́ê ṕôĺîćŷ"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | title": {
+    "message": "Ûśêś êf́f̂íĉíêńt̂ ćâćĥé p̂ól̂íĉý ôń ŝt́ât́îć âśŝét̂ś"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | description": {
+    "message": "Ôṕt̂ím̂íẑéd̂ ím̂áĝéŝ ĺôád̂ f́âśt̂ér̂ án̂d́ ĉón̂śûḿê ĺêśŝ ćêĺl̂úl̂ár̂ d́ât́â. [Ĺêár̂ń m̂ór̂é](https://developers.google.com/web/tools/lighthouse/audits/optimize-images)."
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | title": {
+    "message": "Êf́f̂íĉíêńt̂ĺŷ én̂ćôd́ê ím̂áĝéŝ"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | description": {
+    "message": "Ŝér̂v́ê ím̂áĝéŝ t́ĥát̂ ár̂é âṕp̂ŕôṕr̂íât́êĺŷ-śîźêd́ t̂ó ŝáv̂é ĉél̂ĺûĺâŕ d̂át̂á âńd̂ ím̂ṕr̂óv̂é l̂óâd́ t̂ím̂é. [L̂éâŕn̂ ḿôŕê](https://developers.google.com/web/tools/lighthouse/audits/oversized-images)."
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | title": {
+    "message": "P̂ŕôṕêŕl̂ý ŝíẑé îḿâǵêś"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | description": {
+    "message": "T̂éx̂t́-b̂áŝéd̂ ŕêśôúr̂ćêś ŝh́ôúl̂d́ b̂é ŝér̂v́êd́ ŵít̂h́ ĉóm̂ṕr̂éŝśîón̂ (ǵẑíp̂, d́êf́l̂át̂é ôŕ b̂ŕôt́l̂í) t̂ó m̂ín̂ím̂íẑé t̂ót̂ál̂ ńêt́ŵór̂ḱ b̂ýt̂éŝ. [Ĺêár̂ń m̂ór̂é](https://developers.google.com/web/tools/lighthouse/audits/text-compression)."
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | title": {
+    "message": "Êńâb́l̂é t̂éx̂t́ ĉóm̂ṕr̂éŝśîón̂"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | description": {
+    "message": "Îḿâǵê f́ôŕm̂át̂ś l̂ík̂é ĴṔÊǴ 2000, ĴṔÊǴ X̂Ŕ, âńd̂ Ẃêb́P̂ óf̂t́êń p̂ŕôv́îd́ê b́êt́t̂ér̂ ćôḿp̂ŕêśŝíôń t̂h́âń P̂ŃĜ ór̂ J́P̂ÉĜ, ẃĥíĉh́ m̂éâńŝ f́âśt̂ér̂ d́ôẃn̂ĺôád̂ś âńd̂ ĺêśŝ d́ât́â ćôńŝúm̂ṕt̂íôń. [L̂éâŕn̂ ḿôŕê](https://developers.google.com/web/tools/lighthouse/audits/webp)."
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | title": {
+    "message": "Ŝér̂v́ê ím̂áĝéŝ ín̂ ńêx́t̂-ǵêń f̂ór̂ḿât́ŝ"
+  },
+  "lighthouse-core/audits/content-width.js | description": {
+    "message": "Îf́ t̂h́ê ẃîd́t̂h́ ôf́ ŷóûŕ âṕp̂'ś ĉón̂t́êńt̂ d́ôéŝń't̂ ḿât́ĉh́ t̂h́ê ẃîd́t̂h́ ôf́ t̂h́ê v́îéŵṕôŕt̂, ýôúr̂ áp̂ṕ m̂íĝh́t̂ ńôt́ b̂é ôṕt̂ím̂íẑéd̂ f́ôŕ m̂ób̂íl̂é ŝćr̂éêńŝ. [Ĺêár̂ń m̂ór̂é](https://web.dev/content-width)."
+  },
+  "lighthouse-core/audits/content-width.js | explanation": {
+    "message": "T̂h́ê v́îéŵṕôŕt̂ śîźê óf̂ {innerWidth}ṕx̂ d́ôéŝ ńôt́ m̂át̂ćĥ t́ĥé ŵín̂d́ôẃ ŝíẑé ôf́ {outerWidth}p̂x́."
+  },
+  "lighthouse-core/audits/content-width.js | failureTitle": {
+    "message": "Ĉón̂t́êńt̂ íŝ ńôt́ ŝíẑéd̂ ćôŕr̂éĉt́l̂ý f̂ór̂ t́ĥé v̂íêẃp̂ór̂t́"
+  },
+  "lighthouse-core/audits/content-width.js | title": {
+    "message": "Ĉón̂t́êńt̂ íŝ śîźêd́ ĉór̂ŕêćt̂ĺŷ f́ôŕ t̂h́ê v́îéŵṕôŕt̂"
+  },
+  "lighthouse-core/audits/critical-request-chains.js | description": {
+    "message": "T̂h́ê Ćr̂ít̂íĉál̂ Ŕêq́ûéŝt́ Ĉh́âín̂ś b̂él̂óŵ śĥóŵ ýôú ŵh́ât́ r̂éŝóûŕĉéŝ ár̂é l̂óâd́êd́ ŵít̂h́ â h́îǵĥ ṕr̂íôŕît́ŷ. Ćôńŝíd̂ér̂ ŕêd́ûćîńĝ t́ĥé l̂én̂ǵt̂h́ ôf́ ĉh́âín̂ś, r̂éd̂úĉín̂ǵ t̂h́ê d́ôẃn̂ĺôád̂ śîźê óf̂ ŕêśôúr̂ćêś, ôŕ d̂éf̂ér̂ŕîńĝ t́ĥé d̂óŵńl̂óâd́ ôf́ ûńn̂éĉéŝśâŕŷ ŕêśôúr̂ćêś t̂ó îḿp̂ŕôv́ê ṕâǵê ĺôád̂. [Ĺêár̂ń m̂ór̂é](https://developers.google.com/web/tools/lighthouse/audits/critical-request-chains)."
+  },
+  "lighthouse-core/audits/critical-request-chains.js | displayValue": {
+    "message": "{itemCount, plural,\n    =1 {1 ĉh́âín̂ f́ôún̂d́}\n    other {# ĉh́âín̂ś f̂óûńd̂}\n    }"
+  },
+  "lighthouse-core/audits/critical-request-chains.js | title": {
+    "message": "M̂ín̂ím̂íẑé Ĉŕît́îćâĺ R̂éq̂úêśt̂ś D̂ép̂t́ĥ"
+  },
+  "lighthouse-core/audits/deprecations.js | columnDeprecate": {
+    "message": "D̂ép̂ŕêćât́îón̂ / Ẃâŕn̂ín̂ǵ"
+  },
+  "lighthouse-core/audits/deprecations.js | columnLine": {
+    "message": "L̂ín̂é"
+  },
+  "lighthouse-core/audits/deprecations.js | description": {
+    "message": "D̂ép̂ŕêćât́êd́ ÂṔÎś ŵíl̂ĺ êv́êńt̂úâĺl̂ý b̂é r̂ém̂óv̂éd̂ f́r̂óm̂ t́ĥé b̂ŕôẃŝér̂. [Ĺêár̂ń m̂ór̂é](https://web.dev/deprecations)."
+  },
+  "lighthouse-core/audits/deprecations.js | displayValue": {
+    "message": "{itemCount, plural,\n    =1 {1 ŵár̂ńîńĝ f́ôún̂d́}\n    other {# ŵár̂ńîńĝś f̂óûńd̂}\n    }"
+  },
+  "lighthouse-core/audits/deprecations.js | failureTitle": {
+    "message": "Ûśêś d̂ép̂ŕêćât́êd́ ÂṔÎś"
+  },
+  "lighthouse-core/audits/deprecations.js | title": {
+    "message": "Âv́ôíd̂ś d̂ép̂ŕêćât́êd́ ÂṔÎś"
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | description": {
+    "message": "Âṕp̂ĺîćât́îón̂ Ćâćĥé îś d̂ép̂ŕêćât́êd́. [L̂éâŕn̂ ḿôŕê](https://web.dev/appcache-manifest)."
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | displayValue": {
+    "message": "F̂óûńd̂ \"{AppCacheManifest}\""
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | failureTitle": {
+    "message": "Ûśêś Âṕp̂ĺîćât́îón̂ Ćâćĥé"
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | title": {
+    "message": "Âv́ôíd̂ś Âṕp̂ĺîćât́îón̂ Ćâćĥé"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | description": {
+    "message": "Ŝṕêćîf́ŷín̂ǵ â d́ôćt̂ýp̂é p̂ŕêv́êńt̂ś t̂h́ê b́r̂óŵśêŕ f̂ŕôḿ ŝẃît́ĉh́îńĝ t́ô q́ûír̂ḱŝ-ḿôd́ê. [Ĺêár̂ń m̂ór̂é](https://web.dev/doctype)."
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationBadDoctype": {
+    "message": "D̂óĉt́ŷṕê ńâḿê ḿûśt̂ b́ê t́ĥé l̂óŵér̂ćâśê śt̂ŕîńĝ `html`"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationNoDoctype": {
+    "message": "D̂óĉúm̂én̂t́ m̂úŝt́ ĉón̂t́âín̂ á d̂óĉt́ŷṕê"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationPublicId": {
+    "message": "Êx́p̂éĉt́êd́ p̂úb̂ĺîćÎd́ t̂ó b̂é âń êḿp̂t́ŷ śt̂ŕîńĝ"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationSystemId": {
+    "message": "Êx́p̂éĉt́êd́ ŝýŝt́êḿÎd́ t̂ó b̂é âń êḿp̂t́ŷ śt̂ŕîńĝ"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | failureTitle": {
+    "message": "P̂áĝé l̂áĉḱŝ t́ĥé ĤT́M̂Ĺ d̂óĉt́ŷṕê, t́ĥúŝ t́r̂íĝǵêŕîńĝ q́ûír̂ḱŝ-ḿôd́ê"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | title": {
+    "message": "P̂áĝé ĥáŝ t́ĥé ĤT́M̂Ĺ d̂óĉt́ŷṕê"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | columnElement": {
+    "message": "Êĺêḿêńt̂"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | columnStatistic": {
+    "message": "Ŝt́ât́îśt̂íĉ"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | columnValue": {
+    "message": "V̂ál̂úê"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | description": {
+    "message": "B̂ŕôẃŝér̂ én̂ǵîńêér̂ś r̂éĉóm̂ḿêńd̂ ṕâǵêś ĉón̂t́âín̂ f́êẃêŕ t̂h́âń ~1,500 D̂ÓM̂ él̂ém̂én̂t́ŝ. T́ĥé ŝẃêét̂ śp̂ót̂ íŝ á t̂ŕêé d̂ép̂t́ĥ < 32 él̂ém̂én̂t́ŝ án̂d́ f̂éŵér̂ t́ĥán̂ 60 ćĥíl̂d́r̂én̂/ṕâŕêńt̂ él̂ém̂én̂t́. Â ĺâŕĝé D̂ÓM̂ ćâń îńĉŕêáŝé m̂ém̂ór̂ý ûśâǵê, ćâúŝé l̂ón̂ǵêŕ [ŝt́ŷĺê ćâĺĉúl̂át̂íôńŝ](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), án̂d́ p̂ŕôd́ûćê ćôśt̂ĺŷ [ĺâýôút̂ ŕêf́l̂óŵś](https://developers.google.com/speed/articles/reflow). [L̂éâŕn̂ ḿôŕê](https://web.dev/dom-size)."
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | displayValue": {
+    "message": "{itemCount, plural,\n    =1 {1 êĺêḿêńt̂}\n    other {# él̂ém̂én̂t́ŝ}\n    }"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | failureTitle": {
+    "message": "Âv́ôíd̂ án̂ éx̂ćêśŝív̂é D̂ÓM̂ śîźê"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | statisticDOMDepth": {
+    "message": "M̂áx̂ím̂úm̂ D́ÔḾ D̂ép̂t́ĥ"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | statisticDOMElements": {
+    "message": "T̂ót̂ál̂ D́ÔḾ Êĺêḿêńt̂ś"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | statisticDOMWidth": {
+    "message": "M̂áx̂ím̂úm̂ Ćĥíl̂d́ Êĺêḿêńt̂ś"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | title": {
+    "message": "Âv́ôíd̂ś âń êx́ĉéŝśîv́ê D́ÔḾ ŝíẑé"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | columnRel": {
+    "message": "R̂él̂"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | columnTarget": {
+    "message": "T̂ár̂ǵêt́"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | description": {
+    "message": "Âd́d̂ `rel=\"noopener\"` ór̂ `rel=\"noreferrer\"` t́ô án̂ý êx́t̂ér̂ńâĺ l̂ín̂ḱŝ t́ô ím̂ṕr̂óv̂é p̂ér̂f́ôŕm̂án̂ćê án̂d́ p̂ŕêv́êńt̂ śêćûŕît́ŷ v́ûĺn̂ér̂áb̂íl̂ít̂íêś. [L̂éâŕn̂ ḿôŕê](https://web.dev/external-anchors-use-rel-noopener)."
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | failureTitle": {
+    "message": "L̂ín̂ḱŝ t́ô ćr̂óŝś-ôŕîǵîń d̂éŝt́îńât́îón̂ś âŕê ún̂śâf́ê"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | title": {
+    "message": "L̂ín̂ḱŝ t́ô ćr̂óŝś-ôŕîǵîń d̂éŝt́îńât́îón̂ś âŕê śâf́ê"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | warning": {
+    "message": "Ûńâb́l̂é t̂ó d̂ét̂ér̂ḿîńê t́ĥé d̂éŝt́îńât́îón̂ f́ôŕ âńĉh́ôŕ ({anchorHTML}). Îf́ n̂ót̂ úŝéd̂ áŝ á ĥýp̂ér̂ĺîńk̂, ćôńŝíd̂ér̂ ŕêḿôv́îńĝ t́âŕĝét̂=_b́l̂án̂ḱ."
+  },
+  "lighthouse-core/audits/dobetterweb/geolocation-on-start.js | description": {
+    "message": "Ûśêŕŝ ár̂é m̂íŝt́r̂úŝt́f̂úl̂ óf̂ ór̂ ćôńf̂úŝéd̂ b́ŷ śît́êś t̂h́ât́ r̂éq̂úêśt̂ t́ĥéîŕ l̂óĉát̂íôń ŵít̂h́ôút̂ ćôńt̂éx̂t́. Ĉón̂śîd́êŕ t̂ýîńĝ t́ĥé r̂éq̂úêśt̂ t́ô á ûśêŕ âćt̂íôń îńŝt́êád̂. [Ĺêár̂ń m̂ór̂é](https://web.dev/geolocation-on-start)."
+  },
+  "lighthouse-core/audits/dobetterweb/geolocation-on-start.js | failureTitle": {
+    "message": "R̂éq̂úêśt̂ś t̂h́ê ǵêól̂óĉát̂íôń p̂ér̂ḿîśŝíôń ôń p̂áĝé l̂óâd́"
+  },
+  "lighthouse-core/audits/dobetterweb/geolocation-on-start.js | title": {
+    "message": "Âv́ôíd̂ś r̂éq̂úêśt̂ín̂ǵ t̂h́ê ǵêól̂óĉát̂íôń p̂ér̂ḿîśŝíôń ôń p̂áĝé l̂óâd́"
+  },
+  "lighthouse-core/audits/dobetterweb/js-libraries.js | columnVersion": {
+    "message": "V̂ér̂śîón̂"
+  },
+  "lighthouse-core/audits/dobetterweb/js-libraries.js | description": {
+    "message": "Âĺl̂ f́r̂ón̂t́-êńd̂ J́âv́âŚĉŕîṕt̂ ĺîb́r̂ár̂íêś d̂ét̂éĉt́êd́ ôń t̂h́ê ṕâǵê. [Ĺêár̂ń m̂ór̂é](https://web.dev/js-libraries)."
+  },
+  "lighthouse-core/audits/dobetterweb/js-libraries.js | title": {
+    "message": "D̂ét̂éĉt́êd́ Ĵáv̂áŜćr̂íp̂t́ l̂íb̂ŕâŕîéŝ"
+  },
+  "lighthouse-core/audits/dobetterweb/no-document-write.js | description": {
+    "message": "F̂ór̂ úŝér̂ś ôń ŝĺôẃ ĉón̂ńêćt̂íôńŝ, éx̂t́êŕn̂ál̂ śĉŕîṕt̂ś d̂ýn̂ám̂íĉál̂ĺŷ ín̂j́êćt̂éd̂ v́îá `document.write()` ĉán̂ d́êĺâý p̂áĝé l̂óâd́ b̂ý t̂én̂ś ôf́ ŝéĉón̂d́ŝ. [Ĺêár̂ń m̂ór̂é](https://web.dev/no-document-write)."
+  },
+  "lighthouse-core/audits/dobetterweb/no-document-write.js | failureTitle": {
+    "message": "Ûśêś `document.write()`"
+  },
+  "lighthouse-core/audits/dobetterweb/no-document-write.js | title": {
+    "message": "Âv́ôíd̂ś `document.write()`"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | columnSeverity": {
+    "message": "Ĥíĝh́êśt̂ Śêv́êŕît́ŷ"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | columnVersion": {
+    "message": "L̂íb̂ŕâŕŷ V́êŕŝíôń"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | columnVuln": {
+    "message": "V̂úl̂ńêŕâb́îĺît́ŷ Ćôún̂t́"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | description": {
+    "message": "Ŝóm̂é t̂h́îŕd̂-ṕâŕt̂ý ŝćr̂íp̂t́ŝ ḿâý ĉón̂t́âín̂ ḱn̂óŵń ŝéĉúr̂ít̂ý v̂úl̂ńêŕâb́îĺît́îéŝ t́ĥát̂ ár̂é êáŝíl̂ý îd́êńt̂íf̂íêd́ âńd̂ éx̂ṕl̂óît́êd́ b̂ý ât́t̂áĉḱêŕŝ. [Ĺêár̂ń m̂ór̂é](https://web.dev/no-vulnerable-libraries)."
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | displayValue": {
+    "message": "{itemCount, plural,\n    =1 {1 v̂úl̂ńêŕâb́îĺît́ŷ d́êt́êćt̂éd̂}\n    other {# v́ûĺn̂ér̂áb̂íl̂ít̂íêś d̂ét̂éĉt́êd́}\n    }"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | failureTitle": {
+    "message": "Îńĉĺûd́êś f̂ŕôńt̂-én̂d́ Ĵáv̂áŜćr̂íp̂t́ l̂íb̂ŕâŕîéŝ ẃît́ĥ ḱn̂óŵń ŝéĉúr̂ít̂ý v̂úl̂ńêŕâb́îĺît́îéŝ"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | rowSeverityHigh": {
+    "message": "Ĥíĝh́"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | rowSeverityLow": {
+    "message": "L̂óŵ"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | rowSeverityMedium": {
+    "message": "M̂éd̂íûḿ"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | title": {
+    "message": "Âv́ôíd̂ś f̂ŕôńt̂-én̂d́ Ĵáv̂áŜćr̂íp̂t́ l̂íb̂ŕâŕîéŝ ẃît́ĥ ḱn̂óŵń ŝéĉúr̂ít̂ý v̂úl̂ńêŕâb́îĺît́îéŝ"
+  },
+  "lighthouse-core/audits/dobetterweb/notification-on-start.js | description": {
+    "message": "Ûśêŕŝ ár̂é m̂íŝt́r̂úŝt́f̂úl̂ óf̂ ór̂ ćôńf̂úŝéd̂ b́ŷ śît́êś t̂h́ât́ r̂éq̂úêśt̂ t́ô śêńd̂ ńôt́îf́îćât́îón̂ś ŵít̂h́ôút̂ ćôńt̂éx̂t́. Ĉón̂śîd́êŕ t̂ýîńĝ t́ĥé r̂éq̂úêśt̂ t́ô úŝér̂ ǵêśt̂úr̂éŝ ín̂śt̂éâd́. [L̂éâŕn̂ ḿôŕê](https://web.dev/notification-on-start)."
+  },
+  "lighthouse-core/audits/dobetterweb/notification-on-start.js | failureTitle": {
+    "message": "R̂éq̂úêśt̂ś t̂h́ê ńôt́îf́îćât́îón̂ ṕêŕm̂íŝśîón̂ ón̂ ṕâǵê ĺôád̂"
+  },
+  "lighthouse-core/audits/dobetterweb/notification-on-start.js | title": {
+    "message": "Âv́ôíd̂ś r̂éq̂úêśt̂ín̂ǵ t̂h́ê ńôt́îf́îćât́îón̂ ṕêŕm̂íŝśîón̂ ón̂ ṕâǵê ĺôád̂"
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | columnFailingElem": {
+    "message": "F̂áîĺîńĝ Él̂ém̂én̂t́ŝ"
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | description": {
+    "message": "P̂ŕêv́êńt̂ín̂ǵ p̂áŝśŵór̂d́ p̂áŝt́îńĝ ún̂d́êŕm̂ín̂éŝ ǵôód̂ śêćûŕît́ŷ ṕôĺîćŷ. [Ĺêár̂ń m̂ór̂é](https://web.dev/password-inputs-can-be-pasted-into)."
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | failureTitle": {
+    "message": "P̂ŕêv́êńt̂ś ûśêŕŝ t́ô ṕâśt̂é îńt̂ó p̂áŝśŵór̂d́ f̂íêĺd̂ś"
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | title": {
+    "message": "Âĺl̂óŵś ûśêŕŝ t́ô ṕâśt̂é îńt̂ó p̂áŝśŵór̂d́ f̂íêĺd̂ś"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | columnProtocol": {
+    "message": "P̂ŕôt́ôćôĺ"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | description": {
+    "message": "ĤT́T̂Ṕ/2 ôf́f̂ér̂ś m̂án̂ý b̂én̂éf̂ít̂ś ôv́êŕ ĤT́T̂Ṕ/1.1, îńĉĺûd́îńĝ b́îńâŕŷ h́êád̂ér̂ś, m̂úl̂t́îṕl̂éx̂ín̂ǵ, âńd̂ śêŕv̂ér̂ ṕûśĥ. [Ĺêár̂ń m̂ór̂é](https://web.dev/uses-http2)."
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | displayValue": {
+    "message": "{itemCount, plural,\n    =1 {1 r̂éq̂úêśt̂ ńôt́ ŝér̂v́êd́ v̂íâ H́T̂T́P̂/2}\n    other {# ŕêq́ûéŝt́ŝ ńôt́ ŝér̂v́êd́ v̂íâ H́T̂T́P̂/2}\n    }"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | failureTitle": {
+    "message": "D̂óêś n̂ót̂ úŝé ĤT́T̂Ṕ/2 f̂ór̂ ál̂ĺ ôf́ ît́ŝ ŕêśôúr̂ćêś"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | title": {
+    "message": "Ûśêś ĤT́T̂Ṕ/2 f̂ór̂ ít̂ś ôẃn̂ ŕêśôúr̂ćêś"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-passive-event-listeners.js | description": {
+    "message": "Ĉón̂śîd́êŕ m̂ár̂ḱîńĝ ýôúr̂ t́ôúĉh́ âńd̂ ẃĥéêĺ êv́êńt̂ ĺîśt̂én̂ér̂ś âś `passive` t̂ó îḿp̂ŕôv́ê ýôúr̂ ṕâǵê'ś ŝćr̂ól̂ĺ p̂ér̂f́ôŕm̂án̂ćê. [Ĺêár̂ń m̂ór̂é](https://web.dev/uses-passive-event-listeners)."
+  },
+  "lighthouse-core/audits/dobetterweb/uses-passive-event-listeners.js | failureTitle": {
+    "message": "D̂óêś n̂ót̂ úŝé p̂áŝśîv́ê ĺîśt̂én̂ér̂ś t̂ó îḿp̂ŕôv́ê śĉŕôĺl̂ín̂ǵ p̂ér̂f́ôŕm̂án̂ćê"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-passive-event-listeners.js | title": {
+    "message": "Ûśêś p̂áŝśîv́ê ĺîśt̂én̂ér̂ś t̂ó îḿp̂ŕôv́ê śĉŕôĺl̂ín̂ǵ p̂ér̂f́ôŕm̂án̂ćê"
+  },
+  "lighthouse-core/audits/errors-in-console.js | columnDesc": {
+    "message": "D̂éŝćr̂íp̂t́îón̂"
+  },
+  "lighthouse-core/audits/errors-in-console.js | description": {
+    "message": "Êŕr̂ór̂ś l̂óĝǵêd́ t̂ó t̂h́ê ćôńŝól̂é îńd̂íĉát̂é ûńr̂éŝól̂v́êd́ p̂ŕôb́l̂ém̂ś. T̂h́êý ĉán̂ ćôḿê f́r̂óm̂ ńêt́ŵór̂ḱ r̂éq̂úêśt̂ f́âíl̂úr̂éŝ án̂d́ ôt́ĥér̂ b́r̂óŵśêŕ ĉón̂ćêŕn̂ś. [L̂éâŕn̂ ḿôŕê](https://web.dev/errors-in-console)"
+  },
+  "lighthouse-core/audits/errors-in-console.js | failureTitle": {
+    "message": "B̂ŕôẃŝér̂ ér̂ŕôŕŝ ẃêŕê ĺôǵĝéd̂ t́ô t́ĥé ĉón̂śôĺê"
+  },
+  "lighthouse-core/audits/errors-in-console.js | title": {
+    "message": "N̂ó b̂ŕôẃŝér̂ ér̂ŕôŕŝ ĺôǵĝéd̂ t́ô t́ĥé ĉón̂śôĺê"
+  },
+  "lighthouse-core/audits/font-display.js | description": {
+    "message": "L̂év̂ér̂áĝé t̂h́ê f́ôńt̂-d́îśp̂ĺâý ĈŚŜ f́êát̂úr̂é t̂ó êńŝúr̂é t̂éx̂t́ îś ûśêŕ-v̂íŝíb̂ĺê ẃĥíl̂é ŵéb̂f́ôńt̂ś âŕê ĺôád̂ín̂ǵ. [L̂éâŕn̂ ḿôŕê](https://developers.google.com/web/updates/2016/02/font-display)."
+  },
+  "lighthouse-core/audits/font-display.js | failureTitle": {
+    "message": "Êńŝúr̂é t̂éx̂t́ r̂ém̂áîńŝ v́îśîb́l̂é d̂úr̂ín̂ǵ ŵéb̂f́ôńt̂ ĺôád̂"
+  },
+  "lighthouse-core/audits/font-display.js | title": {
+    "message": "Âĺl̂ t́êx́t̂ ŕêḿâín̂ś v̂íŝíb̂ĺê d́ûŕîńĝ ẃêb́f̂ón̂t́ l̂óâd́ŝ"
+  },
+  "lighthouse-core/audits/font-display.js | undeclaredFontURLWarning": {
+    "message": "L̂íĝh́t̂h́ôúŝé ŵáŝ ún̂áb̂ĺê t́ô áût́ôḿât́îćâĺl̂ý ĉh́êćk̂ t́ĥé f̂ón̂t́-d̂íŝṕl̂áŷ v́âĺûé f̂ór̂ t́ĥé f̂ól̂ĺôẃîńĝ ÚR̂Ĺ: {fontURL}."
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | columnActual": {
+    "message": "Âśp̂éĉt́ R̂át̂íô (Áĉt́ûál̂)"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | columnDisplayed": {
+    "message": "Âśp̂éĉt́ R̂át̂íô (D́îśp̂ĺâýêd́)"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | description": {
+    "message": "Îḿâǵê d́îśp̂ĺâý d̂ím̂én̂śîón̂ś ŝh́ôúl̂d́ m̂át̂ćĥ ńât́ûŕâĺ âśp̂éĉt́ r̂át̂íô. [Ĺêár̂ń m̂ór̂é](https://web.dev/image-aspect-ratio)."
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | failureTitle": {
+    "message": "D̂íŝṕl̂áŷś îḿâǵêś ŵít̂h́ îńĉór̂ŕêćt̂ áŝṕêćt̂ ŕât́îó"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | title": {
+    "message": "D̂íŝṕl̂áŷś îḿâǵêś ŵít̂h́ ĉór̂ŕêćt̂ áŝṕêćt̂ ŕât́îó"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | warningCompute": {
+    "message": "Îńv̂ál̂íd̂ ím̂áĝé ŝíẑín̂ǵ îńf̂ór̂ḿât́îón̂ {url}"
+  },
+  "lighthouse-core/audits/installable-manifest.js | description": {
+    "message": "B̂ŕôẃŝér̂ś ĉán̂ ṕr̂óâćt̂ív̂él̂ý p̂ŕôḿp̂t́ ûśêŕŝ t́ô ád̂d́ ŷóûŕ âṕp̂ t́ô t́ĥéîŕ ĥóm̂éŝćr̂éêń, ŵh́îćĥ ćâń l̂éâd́ t̂ó ĥíĝh́êŕ êńĝáĝém̂én̂t́. [L̂éâŕn̂ ḿôŕê](https://web.dev/installable-manifest)."
+  },
+  "lighthouse-core/audits/installable-manifest.js | failureTitle": {
+    "message": "Ŵéb̂ áp̂ṕ m̂án̂íf̂éŝt́ d̂óêś n̂ót̂ ḿêét̂ t́ĥé îńŝt́âĺl̂áb̂íl̂ít̂ý r̂éq̂úîŕêḿêńt̂ś"
+  },
+  "lighthouse-core/audits/installable-manifest.js | title": {
+    "message": "Ŵéb̂ áp̂ṕ m̂án̂íf̂éŝt́ m̂éêt́ŝ t́ĥé îńŝt́âĺl̂áb̂íl̂ít̂ý r̂éq̂úîŕêḿêńt̂ś"
+  },
+  "lighthouse-core/audits/is-on-https.js | columnInsecureURL": {
+    "message": "Îńŝéĉúr̂é ÛŔL̂"
+  },
+  "lighthouse-core/audits/is-on-https.js | description": {
+    "message": "Âĺl̂ śît́êś ŝh́ôúl̂d́ b̂é p̂ŕôt́êćt̂éd̂ ẃît́ĥ H́T̂T́P̂Ś, êv́êń ôńêś t̂h́ât́ d̂ón̂'t́ ĥán̂d́l̂é ŝén̂śît́îv́ê d́ât́â. H́T̂T́P̂Ś p̂ŕêv́êńt̂ś îńt̂ŕûd́êŕŝ f́r̂óm̂ t́âḿp̂ér̂ín̂ǵ ŵít̂h́ ôŕ p̂áŝśîv́êĺŷ ĺîśt̂én̂ín̂ǵ îń ôń t̂h́ê ćôḿm̂ún̂íĉát̂íôńŝ b́êt́ŵéêń ŷóûŕ âṕp̂ án̂d́ ŷóûŕ ûśêŕŝ, án̂d́ îś â ṕr̂ér̂éq̂úîśît́ê f́ôŕ ĤT́T̂Ṕ/2 âńd̂ ḿâńŷ ńêẃ ŵéb̂ ṕl̂át̂f́ôŕm̂ ÁP̂Íŝ. [Ĺêár̂ń m̂ór̂é](https://web.dev/is-on-https)."
+  },
+  "lighthouse-core/audits/is-on-https.js | displayValue": {
+    "message": "{itemCount, plural,\n    =1 {1 îńŝéĉúr̂é r̂éq̂úêśt̂ f́ôún̂d́}\n    other {# îńŝéĉúr̂é r̂éq̂úêśt̂ś f̂óûńd̂}\n    }"
+  },
+  "lighthouse-core/audits/is-on-https.js | failureTitle": {
+    "message": "D̂óêś n̂ót̂ úŝé ĤT́T̂ṔŜ"
+  },
+  "lighthouse-core/audits/is-on-https.js | title": {
+    "message": "Ûśêś ĤT́T̂ṔŜ"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | description": {
+    "message": "Â f́âśt̂ ṕâǵê ĺôád̂ óv̂ér̂ á ĉél̂ĺûĺâŕ n̂ét̂ẃôŕk̂ én̂śûŕêś â ǵôód̂ ḿôb́îĺê úŝér̂ éx̂ṕêŕîén̂ćê. [Ĺêár̂ń m̂ór̂é](https://web.dev/load-fast-enough-for-pwa)."
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | displayValueText": {
+    "message": "Îńt̂ér̂áĉt́îv́ê át̂ {timeInMs, number, seconds} ś"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | displayValueTextWithOverride": {
+    "message": "Îńt̂ér̂áĉt́îv́ê ón̂ śîḿûĺât́êd́ m̂ób̂íl̂é n̂ét̂ẃôŕk̂ át̂ {timeInMs, number, seconds} ś"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | explanationLoadSlow": {
+    "message": "Ŷóûŕ p̂áĝé l̂óâd́ŝ t́ôó ŝĺôẃl̂ý âńd̂ íŝ ńôt́ îńt̂ér̂áĉt́îv́ê ẃît́ĥín̂ 10 śêćôńd̂ś. L̂óôḱ ât́ t̂h́ê óp̂ṕôŕt̂ún̂ít̂íêś âńd̂ d́îáĝńôśt̂íĉś îń t̂h́ê \"Ṕêŕf̂ór̂ḿâńĉé\" ŝéĉt́îón̂ t́ô ĺêár̂ń ĥóŵ t́ô ím̂ṕr̂óv̂é."
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | failureTitle": {
+    "message": "P̂áĝé l̂óâd́ îś n̂ót̂ f́âśt̂ én̂óûǵĥ ón̂ ḿôb́îĺê ńêt́ŵór̂ḱŝ"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | title": {
+    "message": "P̂áĝé l̂óâd́ îś f̂áŝt́ êńôúĝh́ ôń m̂ób̂íl̂é n̂ét̂ẃôŕk̂ś"
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | columnCategory": {
+    "message": "Ĉát̂éĝór̂ý"
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | description": {
+    "message": "Ĉón̂śîd́êŕ r̂éd̂úĉín̂ǵ t̂h́ê t́îḿê śp̂én̂t́ p̂ár̂śîńĝ, ćôḿp̂íl̂ín̂ǵ âńd̂ éx̂éĉút̂ín̂ǵ ĴŚ. Ŷóû ḿâý f̂ín̂d́ d̂él̂ív̂ér̂ín̂ǵ ŝḿâĺl̂ér̂ J́Ŝ ṕâýl̂óâd́ŝ h́êĺp̂ś ŵít̂h́ t̂h́îś."
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | failureTitle": {
+    "message": "M̂ín̂ím̂íẑé m̂áîń-t̂h́r̂éâd́ ŵór̂ḱ"
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | title": {
+    "message": "M̂ín̂ím̂íẑéŝ ḿâín̂-t́ĥŕêád̂ ẃôŕk̂"
+  },
+  "lighthouse-core/audits/manual/pwa-cross-browser.js | description": {
+    "message": "T̂ó r̂éâćĥ t́ĥé m̂óŝt́ n̂úm̂b́êŕ ôf́ ûśêŕŝ, śît́êś ŝh́ôúl̂d́ ŵór̂ḱ âćr̂óŝś êv́êŕŷ ḿâj́ôŕ b̂ŕôẃŝér̂. [Ĺêár̂ń m̂ór̂é](https://web.dev/pwa-cross-browser)."
+  },
+  "lighthouse-core/audits/manual/pwa-cross-browser.js | title": {
+    "message": "Ŝít̂é ŵór̂ḱŝ ćr̂óŝś-b̂ŕôẃŝér̂"
+  },
+  "lighthouse-core/audits/manual/pwa-each-page-has-url.js | description": {
+    "message": "Êńŝúr̂é îńd̂ív̂íd̂úâĺ p̂áĝéŝ ár̂é d̂éêṕ l̂ín̂ḱâb́l̂é v̂íâ ÚR̂Ĺ âńd̂ t́ĥát̂ ÚR̂Ĺŝ ár̂é ûńîq́ûé f̂ór̂ t́ĥé p̂úr̂ṕôśê óf̂ śĥár̂éâb́îĺît́ŷ ón̂ śôćîál̂ ḿêd́îá. [L̂éâŕn̂ ḿôŕê](https://web.dev/pwa-each-page-has-url)."
+  },
+  "lighthouse-core/audits/manual/pwa-each-page-has-url.js | title": {
+    "message": "Êáĉh́ p̂áĝé ĥáŝ á ÛŔL̂"
+  },
+  "lighthouse-core/audits/manual/pwa-page-transitions.js | description": {
+    "message": "T̂ŕâńŝít̂íôńŝ śĥóûĺd̂ f́êél̂ śn̂áp̂ṕŷ áŝ ýôú t̂áp̂ ár̂óûńd̂, év̂én̂ ón̂ á ŝĺôẃ n̂ét̂ẃôŕk̂. T́ĥíŝ éx̂ṕêŕîén̂ćê íŝ ḱêý t̂ó â úŝér̂'ś p̂ér̂ćêṕt̂íôń ôf́ p̂ér̂f́ôŕm̂án̂ćê. [Ĺêár̂ń m̂ór̂é](https://web.dev/pwa-page-transitions)."
+  },
+  "lighthouse-core/audits/manual/pwa-page-transitions.js | title": {
+    "message": "P̂áĝé t̂ŕâńŝít̂íôńŝ d́ôń't̂ f́êél̂ ĺîḱê t́ĥéŷ b́l̂óĉḱ ôń t̂h́ê ńêt́ŵór̂ḱ"
+  },
+  "lighthouse-core/audits/metrics/estimated-input-latency.js | description": {
+    "message": "Êśt̂ím̂át̂éd̂ Ín̂ṕût́ L̂át̂én̂ćŷ íŝ án̂ éŝt́îḿât́ê óf̂ h́ôẃ l̂ón̂ǵ ŷóûŕ âṕp̂ t́âḱêś t̂ó r̂éŝṕôńd̂ t́ô úŝér̂ ín̂ṕût́, îń m̂íl̂ĺîśêćôńd̂ś, d̂úr̂ín̂ǵ t̂h́ê b́ûśîéŝt́ 5ŝ ẃîńd̂óŵ óf̂ ṕâǵê ĺôád̂. Íf̂ ýôúr̂ ĺât́êńĉý îś ĥíĝh́êŕ t̂h́âń 50 m̂ś, ûśêŕŝ ḿâý p̂ér̂ćêív̂é ŷóûŕ âṕp̂ áŝ ĺâǵĝý. [L̂éâŕn̂ ḿôŕê](https://developers.google.com/web/tools/lighthouse/audits/estimated-input-latency)."
+  },
+  "lighthouse-core/audits/metrics/estimated-input-latency.js | title": {
+    "message": "Êśt̂ím̂át̂éd̂ Ín̂ṕût́ L̂át̂én̂ćŷ"
+  },
+  "lighthouse-core/audits/metrics/first-contentful-paint.js | description": {
+    "message": "F̂ír̂śt̂ Ćôńt̂én̂t́f̂úl̂ Ṕâín̂t́ m̂ár̂ḱŝ t́ĥé t̂ím̂é ât́ ŵh́îćĥ t́ĥé f̂ír̂śt̂ t́êx́t̂ ór̂ ím̂áĝé îś p̂áîńt̂éd̂. [Ĺêár̂ń m̂ór̂é](https://developers.google.com/web/tools/lighthouse/audits/first-contentful-paint)."
+  },
+  "lighthouse-core/audits/metrics/first-contentful-paint.js | title": {
+    "message": "F̂ír̂śt̂ Ćôńt̂én̂t́f̂úl̂ Ṕâín̂t́"
+  },
+  "lighthouse-core/audits/metrics/first-cpu-idle.js | description": {
+    "message": "F̂ír̂śt̂ ĆP̂Ú Îd́l̂é m̂ár̂ḱŝ t́ĥé f̂ír̂śt̂ t́îḿê át̂ ẃĥíĉh́ t̂h́ê ṕâǵê'ś m̂áîń t̂h́r̂éâd́ îś q̂úîét̂ én̂óûǵĥ t́ô h́âńd̂ĺê ín̂ṕût́. [L̂éâŕn̂ ḿôŕê](https://developers.google.com/web/tools/lighthouse/audits/first-interactive)."
+  },
+  "lighthouse-core/audits/metrics/first-cpu-idle.js | title": {
+    "message": "F̂ír̂śt̂ ĆP̂Ú Îd́l̂é"
+  },
+  "lighthouse-core/audits/metrics/first-meaningful-paint.js | description": {
+    "message": "F̂ír̂śt̂ Ḿêán̂ín̂ǵf̂úl̂ Ṕâín̂t́ m̂éâśûŕêś ŵh́êń t̂h́ê ṕr̂ím̂ár̂ý ĉón̂t́êńt̂ óf̂ á p̂áĝé îś v̂íŝíb̂ĺê. [Ĺêár̂ń m̂ór̂é](https://developers.google.com/web/tools/lighthouse/audits/first-meaningful-paint)."
+  },
+  "lighthouse-core/audits/metrics/first-meaningful-paint.js | title": {
+    "message": "F̂ír̂śt̂ Ḿêán̂ín̂ǵf̂úl̂ Ṕâín̂t́"
+  },
+  "lighthouse-core/audits/metrics/interactive.js | description": {
+    "message": "T̂ím̂é t̂ó îńt̂ér̂áĉt́îv́ê íŝ t́ĥé âḿôún̂t́ ôf́ t̂ím̂é ît́ t̂ák̂éŝ f́ôŕ t̂h́ê ṕâǵê t́ô b́êćôḿê f́ûĺl̂ý îńt̂ér̂áĉt́îv́ê. [Ĺêár̂ń m̂ór̂é](https://developers.google.com/web/tools/lighthouse/audits/consistently-interactive)."
+  },
+  "lighthouse-core/audits/metrics/interactive.js | title": {
+    "message": "T̂ím̂é t̂ó Îńt̂ér̂áĉt́îv́ê"
+  },
+  "lighthouse-core/audits/metrics/max-potential-fid.js | description": {
+    "message": "T̂h́ê ḿâx́îḿûḿ p̂ót̂én̂t́îál̂ F́îŕŝt́ Îńp̂út̂ D́êĺâý t̂h́ât́ ŷóûŕ ûśêŕŝ ćôúl̂d́ êx́p̂ér̂íêńĉé îś t̂h́ê d́ûŕât́îón̂, ín̂ ḿîĺl̂íŝéĉón̂d́ŝ, óf̂ t́ĥé l̂ón̂ǵêśt̂ t́âśk̂. [Ĺêár̂ń m̂ór̂é](https://developers.google.com/web/updates/2018/05/first-input-delay)."
+  },
+  "lighthouse-core/audits/metrics/max-potential-fid.js | title": {
+    "message": "M̂áx̂ Ṕôt́êńt̂íâĺ F̂ír̂śt̂ Ín̂ṕût́ D̂él̂áŷ"
+  },
+  "lighthouse-core/audits/metrics/speed-index.js | description": {
+    "message": "Ŝṕêéd̂ Ín̂d́êx́ ŝh́ôẃŝ h́ôẃ q̂úîćk̂ĺŷ t́ĥé ĉón̂t́êńt̂ś ôf́ â ṕâǵê ár̂é v̂íŝíb̂ĺŷ ṕôṕûĺât́êd́. [L̂éâŕn̂ ḿôŕê](https://developers.google.com/web/tools/lighthouse/audits/speed-index)."
+  },
+  "lighthouse-core/audits/metrics/speed-index.js | title": {
+    "message": "Ŝṕêéd̂ Ín̂d́êx́"
+  },
+  "lighthouse-core/audits/metrics/total-blocking-time.js | description": {
+    "message": "Ŝúm̂ óf̂ ál̂ĺ t̂ím̂é p̂ér̂íôd́ŝ b́êt́ŵéêń F̂ĆP̂ án̂d́ T̂ím̂é t̂ó Îńt̂ér̂áĉt́îv́ê, ẃĥén̂ t́âśk̂ ĺêńĝt́ĥ éx̂ćêéd̂éd̂ 50ḿŝ, éx̂ṕr̂éŝśêd́ îń m̂íl̂ĺîśêćôńd̂ś."
+  },
+  "lighthouse-core/audits/metrics/total-blocking-time.js | title": {
+    "message": "T̂ót̂ál̂ B́l̂óĉḱîńĝ T́îḿê"
+  },
+  "lighthouse-core/audits/network-rtt.js | description": {
+    "message": "N̂ét̂ẃôŕk̂ ŕôún̂d́ t̂ŕîṕ t̂ím̂éŝ (ŔT̂T́) ĥáv̂é â ĺâŕĝé îḿp̂áĉt́ ôń p̂ér̂f́ôŕm̂án̂ćê. Íf̂ t́ĥé R̂T́T̂ t́ô án̂ ór̂íĝín̂ íŝ h́îǵĥ, ít̂'ś âń îńd̂íĉát̂íôń t̂h́ât́ ŝér̂v́êŕŝ ćl̂óŝér̂ t́ô t́ĥé ûśêŕ ĉóûĺd̂ ím̂ṕr̂óv̂é p̂ér̂f́ôŕm̂án̂ćê. [Ĺêár̂ń m̂ór̂é](https://hpbn.co/primer-on-latency-and-bandwidth/)."
+  },
+  "lighthouse-core/audits/network-rtt.js | title": {
+    "message": "N̂ét̂ẃôŕk̂ Ŕôún̂d́ T̂ŕîṕ T̂ím̂éŝ"
+  },
+  "lighthouse-core/audits/network-server-latency.js | description": {
+    "message": "Ŝér̂v́êŕ l̂át̂én̂ćîéŝ ćâń îḿp̂áĉt́ ŵéb̂ ṕêŕf̂ór̂ḿâńĉé. Îf́ t̂h́ê śêŕv̂ér̂ ĺât́êńĉý ôf́ âń ôŕîǵîń îś ĥíĝh́, ît́'ŝ án̂ ín̂d́îćât́îón̂ t́ĥé ŝér̂v́êŕ îś ôv́êŕl̂óâd́êd́ ôŕ ĥáŝ ṕôór̂ b́âćk̂én̂d́ p̂ér̂f́ôŕm̂án̂ćê. [Ĺêár̂ń m̂ór̂é](https://hpbn.co/primer-on-web-performance/#analyzing-the-resource-waterfall)."
+  },
+  "lighthouse-core/audits/network-server-latency.js | title": {
+    "message": "Ŝér̂v́êŕ B̂áĉḱêńd̂ Ĺât́êńĉíêś"
+  },
+  "lighthouse-core/audits/offline-start-url.js | description": {
+    "message": "Â śêŕv̂íĉé ŵór̂ḱêŕ êńâb́l̂éŝ ýôúr̂ ẃêb́ âṕp̂ t́ô b́ê ŕêĺîáb̂ĺê ín̂ ún̂ṕr̂éd̂íĉt́âb́l̂é n̂ét̂ẃôŕk̂ ćôńd̂ít̂íôńŝ. [Ĺêár̂ń m̂ór̂é](https://web.dev/offline-start-url)."
+  },
+  "lighthouse-core/audits/offline-start-url.js | failureTitle": {
+    "message": "`start_url` d̂óêś n̂ót̂ ŕêśp̂ón̂d́ ŵít̂h́ â 200 ẃĥén̂ óf̂f́l̂ín̂é"
+  },
+  "lighthouse-core/audits/offline-start-url.js | title": {
+    "message": "`start_url` r̂éŝṕôńd̂ś ŵít̂h́ â 200 ẃĥén̂ óf̂f́l̂ín̂é"
+  },
+  "lighthouse-core/audits/offline-start-url.js | warningCantStart": {
+    "message": "L̂íĝh́t̂h́ôúŝé ĉóûĺd̂ń't̂ ŕêád̂ t́ĥé `start_url` f̂ŕôḿ t̂h́ê ḿâńîf́êśt̂. Áŝ á r̂éŝúl̂t́, t̂h́ê `start_url` ẃâś âśŝúm̂éd̂ t́ô b́ê t́ĥé d̂óĉúm̂én̂t́'ŝ ÚR̂Ĺ. Êŕr̂ór̂ ḿêśŝáĝé: '{manifestWarning}'."
+  },
+  "lighthouse-core/audits/performance-budget.js | columnOverBudget": {
+    "message": "Ôv́êŕ B̂úd̂ǵêt́"
+  },
+  "lighthouse-core/audits/performance-budget.js | description": {
+    "message": "K̂éêṕ t̂h́ê q́ûán̂t́ît́ŷ án̂d́ ŝíẑé ôf́ n̂ét̂ẃôŕk̂ ŕêq́ûéŝt́ŝ ún̂d́êŕ t̂h́ê t́âŕĝét̂ś ŝét̂ b́ŷ t́ĥé p̂ŕôv́îd́êd́ p̂ér̂f́ôŕm̂án̂ćê b́ûd́ĝét̂. [Ĺêár̂ń m̂ór̂é](https://developers.google.com/web/tools/lighthouse/audits/budgets)."
+  },
+  "lighthouse-core/audits/performance-budget.js | requestCountOverBudget": {
+    "message": "{count, plural,\n    =1 {1 r̂éq̂úêśt̂}\n    other {# ŕêq́ûéŝt́ŝ}\n   }"
+  },
+  "lighthouse-core/audits/performance-budget.js | title": {
+    "message": "P̂ér̂f́ôŕm̂án̂ćê b́ûd́ĝét̂"
+  },
+  "lighthouse-core/audits/redirects-http.js | description": {
+    "message": "Îf́ ŷóû'v́ê ál̂ŕêád̂ý ŝét̂ úp̂ H́T̂T́P̂Ś, m̂ák̂é ŝúr̂é t̂h́ât́ ŷóû ŕêd́îŕêćt̂ ál̂ĺ ĤT́T̂Ṕ t̂ŕâf́f̂íĉ t́ô H́T̂T́P̂Ś îń ôŕd̂ér̂ t́ô én̂áb̂ĺê śêćûŕê ẃêb́ f̂éât́ûŕêś f̂ór̂ ál̂ĺ ŷóûŕ ûśêŕŝ. [Ĺêár̂ń m̂ór̂é](https://web.dev/redirects-http)."
+  },
+  "lighthouse-core/audits/redirects-http.js | failureTitle": {
+    "message": "D̂óêś n̂ót̂ ŕêd́îŕêćt̂ H́T̂T́P̂ t́r̂áf̂f́îć t̂ó ĤT́T̂ṔŜ"
+  },
+  "lighthouse-core/audits/redirects-http.js | title": {
+    "message": "R̂éd̂ír̂éĉt́ŝ H́T̂T́P̂ t́r̂áf̂f́îć t̂ó ĤT́T̂ṔŜ"
+  },
+  "lighthouse-core/audits/redirects.js | description": {
+    "message": "R̂éd̂ír̂éĉt́ŝ ín̂t́r̂ód̂úĉé âd́d̂ít̂íôńâĺ d̂él̂áŷś b̂éf̂ór̂é t̂h́ê ṕâǵê ćâń b̂é l̂óâd́êd́. [L̂éâŕn̂ ḿôŕê](https://developers.google.com/web/tools/lighthouse/audits/redirects)."
+  },
+  "lighthouse-core/audits/redirects.js | title": {
+    "message": "Âv́ôíd̂ ḿûĺt̂íp̂ĺê ṕâǵê ŕêd́îŕêćt̂ś"
+  },
+  "lighthouse-core/audits/resource-summary.js | description": {
+    "message": "T̂ó ŝét̂ b́ûd́ĝét̂ś f̂ór̂ t́ĥé q̂úâńt̂ít̂ý âńd̂ śîźê óf̂ ṕâǵê ŕêśôúr̂ćêś, âd́d̂ á b̂úd̂ǵêt́.ĵśôń f̂íl̂é. [L̂éâŕn̂ ḿôŕê](https://developers.google.com/web/tools/lighthouse/audits/budgets)."
+  },
+  "lighthouse-core/audits/resource-summary.js | displayValue": {
+    "message": "{requestCount, plural, =1 {1 r̂éq̂úêśt̂ • {byteCount, number, bytes} ḰB̂} other {# ŕêq́ûéŝt́ŝ • {byteCount, number, bytes} ḰB̂}}"
+  },
+  "lighthouse-core/audits/resource-summary.js | title": {
+    "message": "K̂éêṕ r̂éq̂úêśt̂ ćôún̂t́ŝ ĺôẃ âńd̂ t́r̂án̂śf̂ér̂ śîźêś ŝḿâĺl̂"
+  },
+  "lighthouse-core/audits/seo/canonical.js | description": {
+    "message": "Ĉán̂ón̂íĉál̂ ĺîńk̂ś ŝúĝǵêśt̂ ẃĥíĉh́ ÛŔL̂ t́ô śĥóŵ ín̂ śêár̂ćĥ ŕêśûĺt̂ś. [L̂éâŕn̂ ḿôŕê](https://web.dev/canonical)."
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationConflict": {
+    "message": "M̂úl̂t́îṕl̂é ĉón̂f́l̂íĉt́îńĝ ÚR̂Ĺŝ ({urlList})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationDifferentDomain": {
+    "message": "P̂óîńt̂ś t̂ó â d́îf́f̂ér̂én̂t́ d̂óm̂áîń ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationInvalid": {
+    "message": "Îńv̂ál̂íd̂ ÚR̂Ĺ ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationPointsElsewhere": {
+    "message": "P̂óîńt̂ś t̂ó âńôt́ĥér̂ `hreflang` ĺôćât́îón̂ ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationRelative": {
+    "message": "R̂él̂át̂ív̂é ÛŔL̂ ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationRoot": {
+    "message": "P̂óîńt̂ś t̂ó t̂h́ê d́ôḿâín̂'ś r̂óôt́ ÛŔL̂ (t́ĥé ĥóm̂ép̂áĝé), îńŝt́êád̂ óf̂ án̂ éq̂úîv́âĺêńt̂ ṕâǵê óf̂ ćôńt̂én̂t́"
+  },
+  "lighthouse-core/audits/seo/canonical.js | failureTitle": {
+    "message": "D̂óĉúm̂én̂t́ d̂óêś n̂ót̂ h́âv́ê á v̂ál̂íd̂ `rel=canonical`"
+  },
+  "lighthouse-core/audits/seo/canonical.js | title": {
+    "message": "D̂óĉúm̂én̂t́ ĥáŝ á v̂ál̂íd̂ `rel=canonical`"
+  },
+  "lighthouse-core/audits/seo/font-size.js | description": {
+    "message": "F̂ón̂t́ ŝíẑéŝ ĺêśŝ t́ĥán̂ 12ṕx̂ ár̂é t̂óô śm̂ál̂ĺ t̂ó b̂é l̂éĝíb̂ĺê án̂d́ r̂éq̂úîŕê ḿôb́îĺê v́îśît́ôŕŝ t́ô “ṕîńĉh́ t̂ó ẑóôḿ” îń ôŕd̂ér̂ t́ô ŕêád̂. Śt̂ŕîv́ê t́ô h́âv́ê >60% óf̂ ṕâǵê t́êx́t̂ ≥12ṕx̂. [Ĺêár̂ń m̂ór̂é](https://web.dev/font-size)."
+  },
+  "lighthouse-core/audits/seo/font-size.js | displayValue": {
+    "message": "{decimalProportion, number, extendedPercent} l̂éĝíb̂ĺê t́êx́t̂"
+  },
+  "lighthouse-core/audits/seo/font-size.js | explanationViewport": {
+    "message": "T̂éx̂t́ îś îĺl̂éĝíb̂ĺê b́êćâúŝé t̂h́êŕê'ś n̂ó v̂íêẃp̂ór̂t́ m̂ét̂á t̂áĝ óp̂t́îḿîźêd́ f̂ór̂ ḿôb́îĺê śĉŕêén̂ś."
+  },
+  "lighthouse-core/audits/seo/font-size.js | explanationWithDisclaimer": {
+    "message": "{decimalProportion, number, extendedPercent} ôf́ t̂éx̂t́ îś t̂óô śm̂ál̂ĺ (b̂áŝéd̂ ón̂ {decimalProportionVisited, number, extendedPercent} śâḿp̂ĺê)."
+  },
+  "lighthouse-core/audits/seo/font-size.js | failureTitle": {
+    "message": "D̂óĉúm̂én̂t́ d̂óêśn̂'t́ ûśê ĺêǵîb́l̂é f̂ón̂t́ ŝíẑéŝ"
+  },
+  "lighthouse-core/audits/seo/font-size.js | title": {
+    "message": "D̂óĉúm̂én̂t́ ûśêś l̂éĝíb̂ĺê f́ôńt̂ śîźêś"
+  },
+  "lighthouse-core/audits/seo/hreflang.js | description": {
+    "message": "ĥŕêf́l̂án̂ǵ l̂ín̂ḱŝ t́êĺl̂ śêár̂ćĥ én̂ǵîńêś ŵh́ât́ v̂ér̂śîón̂ óf̂ á p̂áĝé t̂h́êý ŝh́ôúl̂d́ l̂íŝt́ îń ŝéâŕĉh́ r̂éŝúl̂t́ŝ f́ôŕ â ǵîv́êń l̂án̂ǵûáĝé ôŕ r̂éĝíôń. [L̂éâŕn̂ ḿôŕê](https://web.dev/hreflang)."
+  },
+  "lighthouse-core/audits/seo/hreflang.js | failureTitle": {
+    "message": "D̂óĉúm̂én̂t́ d̂óêśn̂'t́ ĥáv̂é â v́âĺîd́ `hreflang`"
+  },
+  "lighthouse-core/audits/seo/hreflang.js | title": {
+    "message": "D̂óĉúm̂én̂t́ ĥáŝ á v̂ál̂íd̂ `hreflang`"
+  },
+  "lighthouse-core/audits/seo/http-status-code.js | description": {
+    "message": "P̂áĝéŝ ẃît́ĥ ún̂śûćĉéŝśf̂úl̂ H́T̂T́P̂ śt̂át̂úŝ ćôd́êś m̂áŷ ńôt́ b̂é îńd̂éx̂éd̂ ṕr̂óp̂ér̂ĺŷ. [Ĺêár̂ń m̂ór̂é](https://web.dev/http-status-code)."
+  },
+  "lighthouse-core/audits/seo/http-status-code.js | failureTitle": {
+    "message": "P̂áĝé ĥáŝ ún̂śûćĉéŝśf̂úl̂ H́T̂T́P̂ śt̂át̂úŝ ćôd́ê"
+  },
+  "lighthouse-core/audits/seo/http-status-code.js | title": {
+    "message": "P̂áĝé ĥáŝ śûćĉéŝśf̂úl̂ H́T̂T́P̂ śt̂át̂úŝ ćôd́ê"
+  },
+  "lighthouse-core/audits/seo/is-crawlable.js | description": {
+    "message": "Ŝéâŕĉh́ êńĝín̂éŝ ár̂é ûńâb́l̂é t̂ó îńĉĺûd́ê ýôúr̂ ṕâǵêś îń ŝéâŕĉh́ r̂éŝúl̂t́ŝ íf̂ t́ĥéŷ d́ôń't̂ h́âv́ê ṕêŕm̂íŝśîón̂ t́ô ćr̂áŵĺ t̂h́êḿ. [L̂éâŕn̂ ḿôŕê](https://web.dev/is-crawable)."
+  },
+  "lighthouse-core/audits/seo/is-crawlable.js | failureTitle": {
+    "message": "P̂áĝé îś b̂ĺôćk̂éd̂ f́r̂óm̂ ín̂d́êx́îńĝ"
+  },
+  "lighthouse-core/audits/seo/is-crawlable.js | title": {
+    "message": "P̂áĝé îśn̂’t́ b̂ĺôćk̂éd̂ f́r̂óm̂ ín̂d́êx́îńĝ"
+  },
+  "lighthouse-core/audits/seo/link-text.js | description": {
+    "message": "D̂éŝćr̂íp̂t́îv́ê ĺîńk̂ t́êx́t̂ h́êĺp̂ś ŝéâŕĉh́ êńĝín̂éŝ ún̂d́êŕŝt́âńd̂ ýôúr̂ ćôńt̂én̂t́. [L̂éâŕn̂ ḿôŕê](https://web.dev/link-text)."
+  },
+  "lighthouse-core/audits/seo/link-text.js | displayValue": {
+    "message": "{itemCount, plural,\n    =1 {1 l̂ín̂ḱ f̂óûńd̂}\n    other {# ĺîńk̂ś f̂óûńd̂}\n    }"
+  },
+  "lighthouse-core/audits/seo/link-text.js | failureTitle": {
+    "message": "L̂ín̂ḱŝ d́ô ńôt́ ĥáv̂é d̂éŝćr̂íp̂t́îv́ê t́êx́t̂"
+  },
+  "lighthouse-core/audits/seo/link-text.js | title": {
+    "message": "L̂ín̂ḱŝ h́âv́ê d́êśĉŕîṕt̂ív̂é t̂éx̂t́"
+  },
+  "lighthouse-core/audits/seo/manual/structured-data.js | description": {
+    "message": "R̂ún̂ t́ĥé [Ŝt́r̂úĉt́ûŕêd́ D̂át̂á T̂éŝt́îńĝ T́ôól̂](https://search.google.com/structured-data/testing-tool/) án̂d́ t̂h́ê [Śt̂ŕûćt̂úr̂éd̂ D́ât́â Ĺîńt̂ér̂](http://linter.structured-data.org/) t́ô v́âĺîd́ât́ê śt̂ŕûćt̂úr̂éd̂ d́ât́â. [Ĺêár̂ń m̂ór̂é](https://web.dev/structured-data)."
+  },
+  "lighthouse-core/audits/seo/manual/structured-data.js | title": {
+    "message": "Ŝt́r̂úĉt́ûŕêd́ d̂át̂á îś v̂ál̂íd̂"
+  },
+  "lighthouse-core/audits/seo/meta-description.js | description": {
+    "message": "M̂ét̂á d̂éŝćr̂íp̂t́îón̂ś m̂áŷ b́ê ín̂ćl̂úd̂éd̂ ín̂ śêár̂ćĥ ŕêśûĺt̂ś t̂ó ĉón̂ćîśêĺŷ śûḿm̂ár̂íẑé p̂áĝé ĉón̂t́êńt̂. [Ĺêár̂ń m̂ór̂é](https://web.dev/meta-description)."
+  },
+  "lighthouse-core/audits/seo/meta-description.js | explanation": {
+    "message": "D̂éŝćr̂íp̂t́îón̂ t́êx́t̂ íŝ ém̂ṕt̂ý."
+  },
+  "lighthouse-core/audits/seo/meta-description.js | failureTitle": {
+    "message": "D̂óĉúm̂én̂t́ d̂óêś n̂ót̂ h́âv́ê á m̂ét̂á d̂éŝćr̂íp̂t́îón̂"
+  },
+  "lighthouse-core/audits/seo/meta-description.js | title": {
+    "message": "D̂óĉúm̂én̂t́ ĥáŝ á m̂ét̂á d̂éŝćr̂íp̂t́îón̂"
+  },
+  "lighthouse-core/audits/seo/plugins.js | description": {
+    "message": "Ŝéâŕĉh́ êńĝín̂éŝ ćâń't̂ ín̂d́êx́ p̂ĺûǵîń ĉón̂t́êńt̂, án̂d́ m̂án̂ý d̂év̂íĉéŝ ŕêśt̂ŕîćt̂ ṕl̂úĝín̂ś ôŕ d̂ón̂'t́ ŝúp̂ṕôŕt̂ t́ĥém̂. [Ĺêár̂ń m̂ór̂é](https://web.dev/plugins)."
+  },
+  "lighthouse-core/audits/seo/plugins.js | failureTitle": {
+    "message": "D̂óĉúm̂én̂t́ ûśêś p̂ĺûǵîńŝ"
+  },
+  "lighthouse-core/audits/seo/plugins.js | title": {
+    "message": "D̂óĉúm̂én̂t́ âv́ôíd̂ś p̂ĺûǵîńŝ"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | description": {
+    "message": "Îf́ ŷóûŕ r̂ób̂ót̂ś.t̂x́t̂ f́îĺê íŝ ḿâĺf̂ór̂ḿêd́, ĉŕâẃl̂ér̂ś m̂áŷ ńôt́ b̂é âb́l̂é t̂ó ûńd̂ér̂śt̂án̂d́ ĥóŵ ýôú ŵán̂t́ ŷóûŕ ŵéb̂śît́ê t́ô b́ê ćr̂áŵĺêd́ ôŕ îńd̂éx̂éd̂. [Ĺêár̂ń m̂ór̂é](https://web.dev/robots-txt)."
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | displayValueHttpBadCode": {
+    "message": "R̂éq̂úêśt̂ f́ôŕ r̂ób̂ót̂ś.t̂x́t̂ ŕêt́ûŕn̂éd̂ H́T̂T́P̂ śt̂át̂úŝ: {statusCode}"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | displayValueValidationError": {
+    "message": "{itemCount, plural,\n    =1 {1 êŕr̂ór̂ f́ôún̂d́}\n    other {# êŕr̂ór̂ś f̂óûńd̂}\n    }"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | explanation": {
+    "message": "L̂íĝh́t̂h́ôúŝé ŵáŝ ún̂áb̂ĺê t́ô d́ôẃn̂ĺôád̂ á r̂ób̂ót̂ś.t̂x́t̂ f́îĺê"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | failureTitle": {
+    "message": "r̂ób̂ót̂ś.t̂x́t̂ íŝ ńôt́ v̂ál̂íd̂"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | title": {
+    "message": "r̂ób̂ót̂ś.t̂x́t̂ íŝ v́âĺîd́"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | description": {
+    "message": "Îńt̂ér̂áĉt́îv́ê él̂ém̂én̂t́ŝ ĺîḱê b́ût́t̂ón̂ś âńd̂ ĺîńk̂ś ŝh́ôúl̂d́ b̂é l̂ár̂ǵê én̂óûǵĥ (48x́48p̂x́), âńd̂ h́âv́ê én̂óûǵĥ śp̂áĉé âŕôún̂d́ t̂h́êḿ, t̂ó b̂é êáŝý êńôúĝh́ t̂ó t̂áp̂ ẃît́ĥóût́ ôv́êŕl̂áp̂ṕîńĝ ón̂t́ô ót̂h́êŕ êĺêḿêńt̂ś. [L̂éâŕn̂ ḿôŕê](https://web.dev/tap-targets)."
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | displayValue": {
+    "message": "{decimalProportion, number, percent} âṕp̂ŕôṕr̂íât́êĺŷ śîźêd́ t̂áp̂ t́âŕĝét̂ś"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | explanationViewportMetaNotOptimized": {
+    "message": "T̂áp̂ t́âŕĝét̂ś âŕê t́ôó ŝḿâĺl̂ b́êćâúŝé t̂h́êŕê'ś n̂ó v̂íêẃp̂ór̂t́ m̂ét̂á t̂áĝ óp̂t́îḿîźêd́ f̂ór̂ ḿôb́îĺê śĉŕêén̂ś"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | failureTitle": {
+    "message": "T̂áp̂ t́âŕĝét̂ś âŕê ńôt́ ŝíẑéd̂ áp̂ṕr̂óp̂ŕîát̂él̂ý"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | overlappingTargetHeader": {
+    "message": "Ôv́êŕl̂áp̂ṕîńĝ T́âŕĝét̂"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | tapTargetHeader": {
+    "message": "T̂áp̂ T́âŕĝét̂"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | title": {
+    "message": "T̂áp̂ t́âŕĝét̂ś âŕê śîźêd́ âṕp̂ŕôṕr̂íât́êĺŷ"
+  },
+  "lighthouse-core/audits/service-worker.js | description": {
+    "message": "T̂h́ê śêŕv̂íĉé ŵór̂ḱêŕ îś t̂h́ê t́êćĥńôĺôǵŷ t́ĥát̂ én̂áb̂ĺêś ŷóûŕ âṕp̂ t́ô úŝé m̂án̂ý P̂ŕôǵr̂éŝśîv́ê Ẃêb́ Âṕp̂ f́êát̂úr̂éŝ, śûćĥ áŝ óf̂f́l̂ín̂é, âd́d̂ t́ô h́ôḿêśĉŕêén̂, án̂d́ p̂úŝh́ n̂ót̂íf̂íĉát̂íôńŝ. [Ĺêár̂ń m̂ór̂é](https://web.dev/service-worker)."
+  },
+  "lighthouse-core/audits/service-worker.js | explanationBadManifest": {
+    "message": "T̂h́îś p̂áĝé îś ĉón̂t́r̂ól̂ĺêd́ b̂ý â śêŕv̂íĉé ŵór̂ḱêŕ, ĥóŵév̂ér̂ ńô `start_url` ẃâś f̂óûńd̂ b́êćâúŝé m̂án̂íf̂éŝt́ f̂áîĺêd́ t̂ó p̂ár̂śê áŝ v́âĺîd́ ĴŚÔŃ"
+  },
+  "lighthouse-core/audits/service-worker.js | explanationBadStartUrl": {
+    "message": "T̂h́îś p̂áĝé îś ĉón̂t́r̂ól̂ĺêd́ b̂ý â śêŕv̂íĉé ŵór̂ḱêŕ, ĥóŵév̂ér̂ t́ĥé `start_url` ({startUrl}) îś n̂ót̂ ín̂ t́ĥé ŝér̂v́îćê ẃôŕk̂ér̂'ś ŝćôṕê ({scopeUrl})"
+  },
+  "lighthouse-core/audits/service-worker.js | explanationNoManifest": {
+    "message": "T̂h́îś p̂áĝé îś ĉón̂t́r̂ól̂ĺêd́ b̂ý â śêŕv̂íĉé ŵór̂ḱêŕ, ĥóŵév̂ér̂ ńô `start_url` ẃâś f̂óûńd̂ b́êćâúŝé n̂ó m̂án̂íf̂éŝt́ ŵáŝ f́êt́ĉh́êd́."
+  },
+  "lighthouse-core/audits/service-worker.js | explanationOutOfScope": {
+    "message": "T̂h́îś ôŕîǵîń ĥáŝ ón̂é ôŕ m̂ór̂é ŝér̂v́îćê ẃôŕk̂ér̂ś, ĥóŵév̂ér̂ t́ĥé p̂áĝé ({pageUrl}) îś n̂ót̂ ín̂ śĉóp̂é."
+  },
+  "lighthouse-core/audits/service-worker.js | failureTitle": {
+    "message": "D̂óêś n̂ót̂ ŕêǵîśt̂ér̂ á ŝér̂v́îćê ẃôŕk̂ér̂ t́ĥát̂ ćôńt̂ŕôĺŝ ṕâǵê án̂d́ `start_url`"
+  },
+  "lighthouse-core/audits/service-worker.js | title": {
+    "message": "R̂éĝíŝt́êŕŝ á ŝér̂v́îćê ẃôŕk̂ér̂ t́ĥát̂ ćôńt̂ŕôĺŝ ṕâǵê án̂d́ `start_url`"
+  },
+  "lighthouse-core/audits/splash-screen.js | description": {
+    "message": "Â t́ĥém̂éd̂ śp̂ĺâśĥ śĉŕêén̂ én̂śûŕêś â h́îǵĥ-q́ûál̂ít̂ý êx́p̂ér̂íêńĉé ŵh́êń ûśêŕŝ ĺâún̂ćĥ ýôúr̂ áp̂ṕ f̂ŕôḿ t̂h́êír̂ h́ôḿêśĉŕêén̂ś. [L̂éâŕn̂ ḿôŕê](https://web.dev/splash-screen)."
+  },
+  "lighthouse-core/audits/splash-screen.js | failureTitle": {
+    "message": "Îś n̂ót̂ ćôńf̂íĝúr̂éd̂ f́ôŕ â ćûśt̂óm̂ śp̂ĺâśĥ śĉŕêén̂"
+  },
+  "lighthouse-core/audits/splash-screen.js | title": {
+    "message": "Ĉón̂f́îǵûŕêd́ f̂ór̂ á ĉúŝt́ôḿ ŝṕl̂áŝh́ ŝćr̂éêń"
+  },
+  "lighthouse-core/audits/themed-omnibox.js | description": {
+    "message": "T̂h́ê b́r̂óŵśêŕ âd́d̂ŕêśŝ b́âŕ ĉán̂ b́ê t́ĥém̂éd̂ t́ô ḿât́ĉh́ ŷóûŕ ŝít̂é. [L̂éâŕn̂ ḿôŕê](https://web.dev/themed-omnibox)."
+  },
+  "lighthouse-core/audits/themed-omnibox.js | failureTitle": {
+    "message": "D̂óêś n̂ót̂ śêt́ â t́ĥém̂é ĉól̂ór̂ f́ôŕ t̂h́ê ád̂d́r̂éŝś b̂ár̂."
+  },
+  "lighthouse-core/audits/themed-omnibox.js | title": {
+    "message": "Ŝét̂ś â t́ĥém̂é ĉól̂ór̂ f́ôŕ t̂h́ê ád̂d́r̂éŝś b̂ár̂."
+  },
+  "lighthouse-core/audits/third-party-summary.js | columnBlockingTime": {
+    "message": "M̂áîń-T̂h́r̂éâd́ B̂ĺôćk̂ín̂ǵ T̂ím̂é"
+  },
+  "lighthouse-core/audits/third-party-summary.js | columnThirdParty": {
+    "message": "T̂h́îŕd̂-Ṕâŕt̂ý"
+  },
+  "lighthouse-core/audits/third-party-summary.js | description": {
+    "message": "T̂h́îŕd̂-ṕâŕt̂ý ĉód̂é ĉán̂ śîǵn̂íf̂íĉán̂t́l̂ý îḿp̂áĉt́ l̂óâd́ p̂ér̂f́ôŕm̂án̂ćê. Ĺîḿît́ t̂h́ê ńûḿb̂ér̂ óf̂ ŕêd́ûńd̂án̂t́ t̂h́îŕd̂-ṕâŕt̂ý p̂ŕôv́îd́êŕŝ án̂d́ t̂ŕŷ t́ô ĺôád̂ t́ĥír̂d́-p̂ár̂t́ŷ ćôd́ê áf̂t́êŕ ŷóûŕ p̂áĝé ĥáŝ ṕr̂ím̂ár̂íl̂ý f̂ín̂íŝh́êd́ l̂óâd́îńĝ. [Ĺêár̂ń m̂ór̂é](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/loading-third-party-javascript/)."
+  },
+  "lighthouse-core/audits/third-party-summary.js | displayValue": {
+    "message": "T̂h́îŕd̂-ṕâŕt̂ý ĉód̂é b̂ĺôćk̂éd̂ t́ĥé m̂áîń t̂h́r̂éâd́ f̂ór̂ {timeInMs, number, milliseconds} ḿŝ"
+  },
+  "lighthouse-core/audits/third-party-summary.js | failureTitle": {
+    "message": "R̂éd̂úĉé t̂h́ê ím̂ṕâćt̂ óf̂ t́ĥír̂d́-p̂ár̂t́ŷ ćôd́ê"
+  },
+  "lighthouse-core/audits/third-party-summary.js | title": {
+    "message": "T̂h́îŕd̂-Ṕâŕt̂ý ûśâǵê"
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | description": {
+    "message": "T̂ím̂é T̂ó F̂ír̂śt̂ B́ŷt́ê íd̂én̂t́îf́îéŝ t́ĥé t̂ím̂é ât́ ŵh́îćĥ ýôúr̂ śêŕv̂ér̂ śêńd̂ś â ŕêśp̂ón̂śê. [Ĺêár̂ń m̂ór̂é](https://developers.google.com/web/tools/lighthouse/audits/ttfb)."
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | displayValue": {
+    "message": "R̂óôt́ d̂óĉúm̂én̂t́ t̂óôḱ {timeInMs, number, milliseconds} m̂ś"
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | failureTitle": {
+    "message": "R̂éd̂úĉé ŝér̂v́êŕ r̂éŝṕôńŝé t̂ím̂éŝ (T́T̂F́B̂)"
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | title": {
+    "message": "Ŝér̂v́êŕ r̂éŝṕôńŝé t̂ím̂éŝ ár̂é l̂óŵ (T́T̂F́B̂)"
+  },
+  "lighthouse-core/audits/user-timings.js | columnDuration": {
+    "message": "D̂úr̂át̂íôń"
+  },
+  "lighthouse-core/audits/user-timings.js | columnStartTime": {
+    "message": "Ŝt́âŕt̂ T́îḿê"
+  },
+  "lighthouse-core/audits/user-timings.js | columnType": {
+    "message": "T̂ýp̂é"
+  },
+  "lighthouse-core/audits/user-timings.js | description": {
+    "message": "Ĉón̂śîd́êŕ îńŝt́r̂úm̂én̂t́îńĝ ýôúr̂ áp̂ṕ ŵít̂h́ t̂h́ê Úŝér̂ T́îḿîńĝ ÁP̂Í t̂ó m̂éâśûŕê ýôúr̂ áp̂ṕ'ŝ ŕêál̂-ẃôŕl̂d́ p̂ér̂f́ôŕm̂án̂ćê d́ûŕîńĝ ḱêý ûśêŕ êx́p̂ér̂íêńĉéŝ. [Ĺêár̂ń m̂ór̂é](https://developers.google.com/web/tools/lighthouse/audits/user-timing)."
+  },
+  "lighthouse-core/audits/user-timings.js | displayValue": {
+    "message": "{itemCount, plural,\n    =1 {1 ûśêŕ t̂ím̂ín̂ǵ}\n    other {# ûśêŕ t̂ím̂ín̂ǵŝ}\n    }"
+  },
+  "lighthouse-core/audits/user-timings.js | title": {
+    "message": "Ûśêŕ T̂ím̂ín̂ǵ m̂ár̂ḱŝ án̂d́ m̂éâśûŕêś"
+  },
+  "lighthouse-core/audits/uses-rel-preconnect.js | crossoriginWarning": {
+    "message": "Â ṕr̂éĉón̂ńêćt̂ <ĺîńk̂> ẃâś f̂óûńd̂ f́ôŕ \"{securityOrigin}\" b̂út̂ ẃâś n̂ót̂ úŝéd̂ b́ŷ t́ĥé b̂ŕôẃŝér̂. Ćĥéĉḱ t̂h́ât́ ŷóû ár̂é ûśîńĝ t́ĥé `crossorigin` ât́t̂ŕîb́ût́ê ṕr̂óp̂ér̂ĺŷ."
+  },
+  "lighthouse-core/audits/uses-rel-preconnect.js | description": {
+    "message": "Ĉón̂śîd́êŕ âd́d̂ín̂ǵ `preconnect` ôŕ `dns-prefetch` r̂éŝóûŕĉé ĥín̂t́ŝ t́ô éŝt́âb́l̂íŝh́ êár̂ĺŷ ćôńn̂éĉt́îón̂ś t̂ó îḿp̂ór̂t́âńt̂ t́ĥír̂d́-p̂ár̂t́ŷ ór̂íĝín̂ś. [L̂éâŕn̂ ḿôŕê](https://developers.google.com/web/fundamentals/performance/resource-prioritization#preconnect)."
+  },
+  "lighthouse-core/audits/uses-rel-preconnect.js | title": {
+    "message": "P̂ŕêćôńn̂éĉt́ t̂ó r̂éq̂úîŕêd́ ôŕîǵîńŝ"
+  },
+  "lighthouse-core/audits/uses-rel-preload.js | crossoriginWarning": {
+    "message": "Â ṕr̂él̂óâd́ <l̂ín̂ḱ> ŵáŝ f́ôún̂d́ f̂ór̂ \"{preloadURL}\" b́ût́ ŵáŝ ńôt́ ûśêd́ b̂ý t̂h́ê b́r̂óŵśêŕ. Ĉh́êćk̂ t́ĥát̂ ýôú âŕê úŝín̂ǵ t̂h́ê `crossorigin` át̂t́r̂íb̂út̂é p̂ŕôṕêŕl̂ý."
+  },
+  "lighthouse-core/audits/uses-rel-preload.js | description": {
+    "message": "Ĉón̂śîd́êŕ ûśîńĝ `<link rel=preload>` t́ô ṕr̂íôŕît́îźê f́êt́ĉh́îńĝ ŕêśôúr̂ćêś t̂h́ât́ âŕê ćûŕr̂én̂t́l̂ý r̂éq̂úêśt̂éd̂ ĺât́êŕ îń p̂áĝé l̂óâd́. [L̂éâŕn̂ ḿôŕê](https://developers.google.com/web/tools/lighthouse/audits/preload)."
+  },
+  "lighthouse-core/audits/uses-rel-preload.js | title": {
+    "message": "P̂ŕêĺôád̂ ḱêý r̂éq̂úêśt̂ś"
+  },
+  "lighthouse-core/audits/viewport.js | description": {
+    "message": "Âd́d̂ á `<meta name=\"viewport\">` t̂áĝ t́ô óp̂t́îḿîźê ýôúr̂ áp̂ṕ f̂ór̂ ḿôb́îĺê śĉŕêén̂ś. [L̂éâŕn̂ ḿôŕê](https://web.dev/viewport)."
+  },
+  "lighthouse-core/audits/viewport.js | explanationNoTag": {
+    "message": "N̂ó `<meta name=\"viewport\">` t̂áĝ f́ôún̂d́"
+  },
+  "lighthouse-core/audits/viewport.js | failureTitle": {
+    "message": "D̂óêś n̂ót̂ h́âv́ê á `<meta name=\"viewport\">` t̂áĝ ẃît́ĥ `width` ór̂ `initial-scale`"
+  },
+  "lighthouse-core/audits/viewport.js | title": {
+    "message": "Ĥáŝ á `<meta name=\"viewport\">` t̂áĝ ẃît́ĥ `width` ór̂ `initial-scale`"
+  },
+  "lighthouse-core/audits/without-javascript.js | description": {
+    "message": "Ŷóûŕ âṕp̂ śĥóûĺd̂ d́îśp̂ĺâý ŝóm̂é ĉón̂t́êńt̂ ẃĥén̂ J́âv́âŚĉŕîṕt̂ íŝ d́îśâb́l̂éd̂, év̂én̂ íf̂ ít̂'ś ĵúŝt́ â ẃâŕn̂ín̂ǵ t̂ó t̂h́ê úŝér̂ t́ĥát̂ J́âv́âŚĉŕîṕt̂ íŝ ŕêq́ûír̂éd̂ t́ô úŝé t̂h́ê áp̂ṕ. [L̂éâŕn̂ ḿôŕê](https://web.dev/without-javascript)."
+  },
+  "lighthouse-core/audits/without-javascript.js | explanation": {
+    "message": "T̂h́ê ṕâǵê b́ôd́ŷ śĥóûĺd̂ ŕêńd̂ér̂ śôḿê ćôńt̂én̂t́ îf́ ît́ŝ śĉŕîṕt̂ś âŕê ńôt́ âv́âíl̂áb̂ĺê."
+  },
+  "lighthouse-core/audits/without-javascript.js | failureTitle": {
+    "message": "D̂óêś n̂ót̂ ṕr̂óv̂íd̂é f̂ál̂ĺb̂áĉḱ ĉón̂t́êńt̂ ẃĥén̂ J́âv́âŚĉŕîṕt̂ íŝ ńôt́ âv́âíl̂áb̂ĺê"
+  },
+  "lighthouse-core/audits/without-javascript.js | title": {
+    "message": "Ĉón̂t́âín̂ś ŝóm̂é ĉón̂t́êńt̂ ẃĥén̂ J́âv́âŚĉŕîṕt̂ íŝ ńôt́ âv́âíl̂áb̂ĺê"
+  },
+  "lighthouse-core/audits/works-offline.js | description": {
+    "message": "Îf́ ŷóû'ŕê b́ûíl̂d́îńĝ á P̂ŕôǵr̂éŝśîv́ê Ẃêb́ Âṕp̂, ćôńŝíd̂ér̂ úŝín̂ǵ â śêŕv̂íĉé ŵór̂ḱêŕ ŝó t̂h́ât́ ŷóûŕ âṕp̂ ćâń ŵór̂ḱ ôf́f̂ĺîńê. [Ĺêár̂ń m̂ór̂é](https://web.dev/works-offline)."
+  },
+  "lighthouse-core/audits/works-offline.js | failureTitle": {
+    "message": "Ĉúr̂ŕêńt̂ ṕâǵê d́ôéŝ ńôt́ r̂éŝṕôńd̂ ẃît́ĥ á 200 ŵh́êń ôf́f̂ĺîńê"
+  },
+  "lighthouse-core/audits/works-offline.js | title": {
+    "message": "Ĉúr̂ŕêńt̂ ṕâǵê ŕêśp̂ón̂d́ŝ ẃît́ĥ á 200 ŵh́êń ôf́f̂ĺîńê"
+  },
+  "lighthouse-core/audits/works-offline.js | warningNoLoad": {
+    "message": "T̂h́ê ṕâǵê ḿâý n̂ót̂ b́ê ĺôád̂ín̂ǵ ôf́f̂ĺîńê b́êćâúŝé ŷóûŕ t̂éŝt́ ÛŔL̂ ({requested}) ẃâś r̂éd̂ír̂éĉt́êd́ t̂ó \"{final}\". T̂ŕŷ t́êśt̂ín̂ǵ t̂h́ê śêćôńd̂ ÚR̂Ĺ d̂ír̂éĉt́l̂ý."
+  },
+  "lighthouse-core/config/default-config.js | a11yAriaGroupDescription": {
+    "message": "T̂h́êśê ár̂é ôṕp̂ór̂t́ûńît́îéŝ t́ô ím̂ṕr̂óv̂é t̂h́ê úŝáĝé ôf́ ÂŔÎÁ îń ŷóûŕ âṕp̂ĺîćât́îón̂ ẃĥíĉh́ m̂áŷ én̂h́âńĉé t̂h́ê éx̂ṕêŕîén̂ćê f́ôŕ ûśêŕŝ óf̂ áŝśîśt̂ív̂é t̂éĉh́n̂ól̂óĝý, l̂ík̂é â śĉŕêén̂ ŕêád̂ér̂."
+  },
+  "lighthouse-core/config/default-config.js | a11yAriaGroupTitle": {
+    "message": "ÂŔÎÁ"
+  },
+  "lighthouse-core/config/default-config.js | a11yAudioVideoGroupDescription": {
+    "message": "T̂h́êśê ár̂é ôṕp̂ór̂t́ûńît́îéŝ t́ô ṕr̂óv̂íd̂é âĺt̂ér̂ńât́îv́ê ćôńt̂én̂t́ f̂ór̂ áûd́îó âńd̂ v́îd́êó. T̂h́îś m̂áŷ ím̂ṕr̂óv̂é t̂h́ê éx̂ṕêŕîén̂ćê f́ôŕ ûśêŕŝ ẃît́ĥ h́êár̂ín̂ǵ ôŕ v̂íŝíôń îḿp̂áîŕm̂én̂t́ŝ."
+  },
+  "lighthouse-core/config/default-config.js | a11yAudioVideoGroupTitle": {
+    "message": "Âúd̂íô án̂d́ v̂íd̂éô"
+  },
+  "lighthouse-core/config/default-config.js | a11yBestPracticesGroupDescription": {
+    "message": "T̂h́êśê ít̂ém̂ś ĥíĝh́l̂íĝh́t̂ ćôḿm̂ón̂ áĉćêśŝíb̂íl̂ít̂ý b̂éŝt́ p̂ŕâćt̂íĉéŝ."
+  },
+  "lighthouse-core/config/default-config.js | a11yBestPracticesGroupTitle": {
+    "message": "B̂éŝt́ p̂ŕâćt̂íĉéŝ"
+  },
+  "lighthouse-core/config/default-config.js | a11yCategoryDescription": {
+    "message": "T̂h́êśê ćĥéĉḱŝ h́îǵĥĺîǵĥt́ ôṕp̂ór̂t́ûńît́îéŝ t́ô [ím̂ṕr̂óv̂é t̂h́ê áĉćêśŝíb̂íl̂ít̂ý ôf́ ŷóûŕ ŵéb̂ áp̂ṕ](https://developers.google.com/web/fundamentals/accessibility). Ôńl̂ý â śûb́ŝét̂ óf̂ áĉćêśŝíb̂íl̂ít̂ý îśŝúêś ĉán̂ b́ê áût́ôḿât́îćâĺl̂ý d̂ét̂éĉt́êd́ ŝó m̂án̂úâĺ t̂éŝt́îńĝ íŝ ál̂śô én̂ćôúr̂áĝéd̂."
+  },
+  "lighthouse-core/config/default-config.js | a11yCategoryManualDescription": {
+    "message": "T̂h́êśê ít̂ém̂ś âd́d̂ŕêśŝ ár̂éâś ŵh́îćĥ án̂ áût́ôḿât́êd́ t̂éŝt́îńĝ t́ôól̂ ćâńn̂ót̂ ćôv́êŕ. L̂éâŕn̂ ḿôŕê ín̂ óûŕ ĝúîd́ê ón̂ [ćôńd̂úĉt́îńĝ án̂ áĉćêśŝíb̂íl̂ít̂ý r̂év̂íêẃ](https://developers.google.com/web/fundamentals/accessibility/how-to-review)."
+  },
+  "lighthouse-core/config/default-config.js | a11yCategoryTitle": {
+    "message": "Âćĉéŝśîb́îĺît́ŷ"
+  },
+  "lighthouse-core/config/default-config.js | a11yColorContrastGroupDescription": {
+    "message": "T̂h́êśê ár̂é ôṕp̂ór̂t́ûńît́îéŝ t́ô ím̂ṕr̂óv̂é t̂h́ê ĺêǵîb́îĺît́ŷ óf̂ ýôúr̂ ćôńt̂én̂t́."
+  },
+  "lighthouse-core/config/default-config.js | a11yColorContrastGroupTitle": {
+    "message": "Ĉón̂t́r̂áŝt́"
+  },
+  "lighthouse-core/config/default-config.js | a11yLanguageGroupDescription": {
+    "message": "T̂h́êśê ár̂é ôṕp̂ór̂t́ûńît́îéŝ t́ô ím̂ṕr̂óv̂é t̂h́ê ín̂t́êŕp̂ŕêt́ât́îón̂ óf̂ ýôúr̂ ćôńt̂én̂t́ b̂ý ûśêŕŝ ín̂ d́îf́f̂ér̂én̂t́ l̂óĉál̂éŝ."
+  },
+  "lighthouse-core/config/default-config.js | a11yLanguageGroupTitle": {
+    "message": "Îńt̂ér̂ńât́îón̂ál̂íẑát̂íôń âńd̂ ĺôćâĺîźât́îón̂"
+  },
+  "lighthouse-core/config/default-config.js | a11yNamesLabelsGroupDescription": {
+    "message": "T̂h́êśê ár̂é ôṕp̂ór̂t́ûńît́îéŝ t́ô ím̂ṕr̂óv̂é t̂h́ê śêḿâńt̂íĉś ôf́ t̂h́ê ćôńt̂ŕôĺŝ ín̂ ýôúr̂ áp̂ṕl̂íĉát̂íôń. T̂h́îś m̂áŷ én̂h́âńĉé t̂h́ê éx̂ṕêŕîén̂ćê f́ôŕ ûśêŕŝ óf̂ áŝśîśt̂ív̂é t̂éĉh́n̂ól̂óĝý, l̂ík̂é â śĉŕêén̂ ŕêád̂ér̂."
+  },
+  "lighthouse-core/config/default-config.js | a11yNamesLabelsGroupTitle": {
+    "message": "N̂ám̂éŝ án̂d́ l̂áb̂él̂ś"
+  },
+  "lighthouse-core/config/default-config.js | a11yNavigationGroupDescription": {
+    "message": "T̂h́êśê ár̂é ôṕp̂ór̂t́ûńît́îéŝ t́ô ím̂ṕr̂óv̂é k̂éŷb́ôár̂d́ n̂áv̂íĝát̂íôń îń ŷóûŕ âṕp̂ĺîćât́îón̂."
+  },
+  "lighthouse-core/config/default-config.js | a11yNavigationGroupTitle": {
+    "message": "N̂áv̂íĝát̂íôń"
+  },
+  "lighthouse-core/config/default-config.js | a11yTablesListsVideoGroupDescription": {
+    "message": "T̂h́êśê ár̂é ôṕp̂ór̂t́ûńît́îéŝ t́ô t́ô ím̂ṕr̂óv̂é t̂h́ê éx̂ṕêŕîén̂ćê óf̂ ŕêád̂ín̂ǵ t̂áb̂úl̂ár̂ ór̂ ĺîśt̂ d́ât́â úŝín̂ǵ âśŝíŝt́îv́ê t́êćĥńôĺôǵŷ, ĺîḱê á ŝćr̂éêń r̂éâd́êŕ."
+  },
+  "lighthouse-core/config/default-config.js | a11yTablesListsVideoGroupTitle": {
+    "message": "T̂áb̂ĺêś âńd̂ ĺîśt̂ś"
+  },
+  "lighthouse-core/config/default-config.js | bestPracticesCategoryTitle": {
+    "message": "B̂éŝt́ P̂ŕâćt̂íĉéŝ"
+  },
+  "lighthouse-core/config/default-config.js | budgetsGroupDescription": {
+    "message": "P̂ér̂f́ôŕm̂án̂ćê b́ûd́ĝét̂ś ŝét̂ śt̂án̂d́âŕd̂ś f̂ór̂ t́ĥé p̂ér̂f́ôŕm̂án̂ćê óf̂ ýôúr̂ śît́ê."
+  },
+  "lighthouse-core/config/default-config.js | budgetsGroupTitle": {
+    "message": "B̂úd̂ǵêt́ŝ"
+  },
+  "lighthouse-core/config/default-config.js | diagnosticsGroupDescription": {
+    "message": "M̂ór̂é îńf̂ór̂ḿât́îón̂ áb̂óût́ t̂h́ê ṕêŕf̂ór̂ḿâńĉé ôf́ ŷóûŕ âṕp̂ĺîćât́îón̂. T́ĥéŝé n̂úm̂b́êŕŝ d́ôń't̂ [d́îŕêćt̂ĺŷ áf̂f́êćt̂](https://github.com/GoogleChrome/lighthouse/blob/d2ec9ffbb21de9ad1a0f86ed24575eda32c796f0/docs/scoring.md#how-are-the-scores-weighted) t́ĥé P̂ér̂f́ôŕm̂án̂ćê śĉór̂é."
+  },
+  "lighthouse-core/config/default-config.js | diagnosticsGroupTitle": {
+    "message": "D̂íâǵn̂óŝt́îćŝ"
+  },
+  "lighthouse-core/config/default-config.js | firstPaintImprovementsGroupDescription": {
+    "message": "T̂h́ê ḿôśt̂ ćr̂ít̂íĉál̂ áŝṕêćt̂ óf̂ ṕêŕf̂ór̂ḿâńĉé îś ĥóŵ q́ûíĉḱl̂ý p̂íx̂él̂ś âŕê ŕêńd̂ér̂éd̂ ón̂śĉŕêén̂. Ḱêý m̂ét̂ŕîćŝ: F́îŕŝt́ Ĉón̂t́êńt̂f́ûĺ P̂áîńt̂, F́îŕŝt́ M̂éâńîńĝf́ûĺ P̂áîńt̂"
+  },
+  "lighthouse-core/config/default-config.js | firstPaintImprovementsGroupTitle": {
+    "message": "F̂ír̂śt̂ Ṕâín̂t́ Îḿp̂ŕôv́êḿêńt̂ś"
+  },
+  "lighthouse-core/config/default-config.js | loadOpportunitiesGroupDescription": {
+    "message": "T̂h́êśê śûǵĝéŝt́îón̂ś ĉán̂ h́êĺp̂ ýôúr̂ ṕâǵê ĺôád̂ f́âśt̂ér̂. T́ĥéŷ d́ôń't̂ [d́îŕêćt̂ĺŷ áf̂f́êćt̂](https://github.com/GoogleChrome/lighthouse/blob/d2ec9ffbb21de9ad1a0f86ed24575eda32c796f0/docs/scoring.md#how-are-the-scores-weighted) t́ĥé P̂ér̂f́ôŕm̂án̂ćê śĉór̂é."
+  },
+  "lighthouse-core/config/default-config.js | loadOpportunitiesGroupTitle": {
+    "message": "Ôṕp̂ór̂t́ûńît́îéŝ"
+  },
+  "lighthouse-core/config/default-config.js | metricGroupTitle": {
+    "message": "M̂ét̂ŕîćŝ"
+  },
+  "lighthouse-core/config/default-config.js | overallImprovementsGroupDescription": {
+    "message": "Êńĥán̂ćê t́ĥé ôv́êŕâĺl̂ ĺôád̂ín̂ǵ êx́p̂ér̂íêńĉé, ŝó t̂h́ê ṕâǵê íŝ ŕêśp̂ón̂śîv́ê án̂d́ r̂éâd́ŷ t́ô úŝé âś ŝóôń âś p̂óŝśîb́l̂é. K̂éŷ ḿêt́r̂íĉś: T̂ím̂é t̂ó Îńt̂ér̂áĉt́îv́ê, Śp̂éêd́ Îńd̂éx̂"
+  },
+  "lighthouse-core/config/default-config.js | overallImprovementsGroupTitle": {
+    "message": "Ôv́êŕâĺl̂ Ím̂ṕr̂óv̂ém̂én̂t́ŝ"
+  },
+  "lighthouse-core/config/default-config.js | performanceCategoryTitle": {
+    "message": "P̂ér̂f́ôŕm̂án̂ćê"
+  },
+  "lighthouse-core/config/default-config.js | pwaCategoryDescription": {
+    "message": "T̂h́êśê ćĥéĉḱŝ v́âĺîd́ât́ê t́ĥé âśp̂éĉt́ŝ óf̂ á P̂ŕôǵr̂éŝśîv́ê Ẃêb́ Âṕp̂. [Ĺêár̂ń m̂ór̂é](https://developers.google.com/web/progressive-web-apps/checklist)."
+  },
+  "lighthouse-core/config/default-config.js | pwaCategoryManualDescription": {
+    "message": "T̂h́êśê ćĥéĉḱŝ ár̂é r̂éq̂úîŕêd́ b̂ý t̂h́ê b́âśêĺîńê [ṔŴÁ Ĉh́êćk̂ĺîśt̂](https://developers.google.com/web/progressive-web-apps/checklist) b́ût́ âŕê ńôt́ âút̂óm̂át̂íĉál̂ĺŷ ćĥéĉḱêd́ b̂ý L̂íĝh́t̂h́ôúŝé. T̂h́êý d̂ó n̂ót̂ áf̂f́êćt̂ ýôúr̂ śĉór̂é b̂út̂ ít̂'ś îḿp̂ór̂t́âńt̂ t́ĥát̂ ýôú v̂ér̂íf̂ý t̂h́êḿ m̂án̂úâĺl̂ý."
+  },
+  "lighthouse-core/config/default-config.js | pwaCategoryTitle": {
+    "message": "P̂ŕôǵr̂éŝśîv́ê Ẃêb́ Âṕp̂"
+  },
+  "lighthouse-core/config/default-config.js | pwaFastReliableGroupTitle": {
+    "message": "F̂áŝt́ âńd̂ ŕêĺîáb̂ĺê"
+  },
+  "lighthouse-core/config/default-config.js | pwaInstallableGroupTitle": {
+    "message": "Îńŝt́âĺl̂áb̂ĺê"
+  },
+  "lighthouse-core/config/default-config.js | pwaOptimizedGroupTitle": {
+    "message": "P̂ẂÂ Óp̂t́îḿîźêd́"
+  },
+  "lighthouse-core/config/default-config.js | seoCategoryDescription": {
+    "message": "T̂h́êśê ćĥéĉḱŝ én̂śûŕê t́ĥát̂ ýôúr̂ ṕâǵê íŝ óp̂t́îḿîźêd́ f̂ór̂ śêár̂ćĥ én̂ǵîńê ŕêśûĺt̂ś r̂án̂ḱîńĝ. T́ĥér̂é âŕê ád̂d́ît́îón̂ál̂ f́âćt̂ór̂ś L̂íĝh́t̂h́ôúŝé d̂óêś n̂ót̂ ćĥéĉḱ t̂h́ât́ m̂áŷ áf̂f́êćt̂ ýôúr̂ śêár̂ćĥ ŕâńk̂ín̂ǵ. [L̂éâŕn̂ ḿôŕê](https://support.google.com/webmasters/answer/35769)."
+  },
+  "lighthouse-core/config/default-config.js | seoCategoryManualDescription": {
+    "message": "R̂ún̂ t́ĥéŝé âd́d̂ít̂íôńâĺ v̂ál̂íd̂át̂ór̂ś ôń ŷóûŕ ŝít̂é t̂ó ĉh́êćk̂ ád̂d́ît́îón̂ál̂ ŚÊÓ b̂éŝt́ p̂ŕâćt̂íĉéŝ."
+  },
+  "lighthouse-core/config/default-config.js | seoCategoryTitle": {
+    "message": "ŜÉÔ"
+  },
+  "lighthouse-core/config/default-config.js | seoContentGroupDescription": {
+    "message": "F̂ór̂ḿât́ ŷóûŕ ĤT́M̂Ĺ îń â ẃâý t̂h́ât́ êńâb́l̂éŝ ćr̂áŵĺêŕŝ t́ô b́êt́t̂ér̂ ún̂d́êŕŝt́âńd̂ ýôúr̂ áp̂ṕ’ŝ ćôńt̂én̂t́."
+  },
+  "lighthouse-core/config/default-config.js | seoContentGroupTitle": {
+    "message": "Ĉón̂t́êńt̂ B́êśt̂ Ṕr̂áĉt́îćêś"
+  },
+  "lighthouse-core/config/default-config.js | seoCrawlingGroupDescription": {
+    "message": "T̂ó âṕp̂éâŕ îń ŝéâŕĉh́ r̂éŝúl̂t́ŝ, ćr̂áŵĺêŕŝ ńêéd̂ áĉćêśŝ t́ô ýôúr̂ áp̂ṕ."
+  },
+  "lighthouse-core/config/default-config.js | seoCrawlingGroupTitle": {
+    "message": "Ĉŕâẃl̂ín̂ǵ âńd̂ Ín̂d́êx́îńĝ"
+  },
+  "lighthouse-core/config/default-config.js | seoMobileGroupDescription": {
+    "message": "M̂ák̂é ŝúr̂é ŷóûŕ p̂áĝéŝ ár̂é m̂ób̂íl̂é f̂ŕîén̂d́l̂ý ŝó ûśêŕŝ d́ôń’t̂ h́âv́ê t́ô ṕîńĉh́ ôŕ ẑóôḿ îń ôŕd̂ér̂ t́ô ŕêád̂ t́ĥé ĉón̂t́êńt̂ ṕâǵêś. [L̂éâŕn̂ ḿôŕê](https://developers.google.com/search/mobile-sites/)."
+  },
+  "lighthouse-core/config/default-config.js | seoMobileGroupTitle": {
+    "message": "M̂ób̂íl̂é F̂ŕîén̂d́l̂ý"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnCacheTTL": {
+    "message": "Ĉáĉh́ê T́T̂Ĺ"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnLocation": {
+    "message": "L̂óĉát̂íôń"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnName": {
+    "message": "N̂ám̂é"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnRequests": {
+    "message": "R̂éq̂úêśt̂ś"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnResourceType": {
+    "message": "R̂éŝóûŕĉé T̂ýp̂é"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnSize": {
+    "message": "Ŝíẑé"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnTimeSpent": {
+    "message": "T̂ím̂é Ŝṕêńt̂"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnTransferSize": {
+    "message": "T̂ŕâńŝf́êŕ Ŝíẑé"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnURL": {
+    "message": "ÛŔL̂"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnWastedBytes": {
+    "message": "P̂ót̂én̂t́îál̂ Śâv́îńĝś"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnWastedMs": {
+    "message": "P̂ót̂én̂t́îál̂ Śâv́îńĝś"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | displayValueByteSavings": {
+    "message": "P̂ót̂én̂t́îál̂ śâv́îńĝś ôf́ {wastedBytes, number, bytes} K̂B́"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | displayValueMsSavings": {
+    "message": "P̂ót̂én̂t́îál̂ śâv́îńĝś ôf́ {wastedMs, number, milliseconds} m̂ś"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | documentResourceType": {
+    "message": "D̂óĉúm̂én̂t́"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | fontResourceType": {
+    "message": "F̂ón̂t́"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | imageResourceType": {
+    "message": "Îḿâǵê"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | mediaResourceType": {
+    "message": "M̂éd̂íâ"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | ms": {
+    "message": "{timeInMs, number, milliseconds} m̂ś"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | otherResourceType": {
+    "message": "Ôt́ĥér̂"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | scriptResourceType": {
+    "message": "Ŝćr̂íp̂t́"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | seconds": {
+    "message": "{timeInMs, number, seconds} ŝ"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | stylesheetResourceType": {
+    "message": "Ŝt́ŷĺêśĥéêt́"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | thirdPartyResourceType": {
+    "message": "T̂h́îŕd̂-ṕâŕt̂ý"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | totalResourceType": {
+    "message": "T̂ót̂ál̂"
+  },
+  "lighthouse-core/lib/lh-error.js | badTraceRecording": {
+    "message": "Ŝóm̂ét̂h́îńĝ ẃêńt̂ ẃr̂ón̂ǵ ŵít̂h́ r̂éĉór̂d́îńĝ t́ĥé t̂ŕâćê óv̂ér̂ ýôúr̂ ṕâǵê ĺôád̂. Ṕl̂éâśê ŕûń L̂íĝh́t̂h́ôúŝé âǵâín̂. ({errorCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | criTimeout": {
+    "message": "T̂ím̂éôút̂ ẃâít̂ín̂ǵ f̂ór̂ ín̂ít̂íâĺ D̂éb̂úĝǵêŕ P̂ŕôt́ôćôĺ ĉón̂ńêćt̂íôń."
+  },
+  "lighthouse-core/lib/lh-error.js | didntCollectScreenshots": {
+    "message": "Ĉh́r̂óm̂é d̂íd̂ń't̂ ćôĺl̂éĉt́ âńŷ śĉŕêén̂śĥót̂ś d̂úr̂ín̂ǵ t̂h́ê ṕâǵê ĺôád̂. Ṕl̂éâśê ḿâḱê śûŕê t́ĥér̂é îś ĉón̂t́êńt̂ v́îśîb́l̂é ôń t̂h́ê ṕâǵê, án̂d́ t̂h́êń t̂ŕŷ ŕê-ŕûńn̂ín̂ǵ L̂íĝh́t̂h́ôúŝé. ({errorCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | dnsFailure": {
+    "message": "D̂ŃŜ śêŕv̂ér̂ś ĉóûĺd̂ ńôt́ r̂éŝól̂v́ê t́ĥé p̂ŕôv́îd́êd́ d̂óm̂áîń."
+  },
+  "lighthouse-core/lib/lh-error.js | erroredRequiredArtifact": {
+    "message": "R̂éq̂úîŕêd́ {artifactName} ĝát̂h́êŕêŕ êńĉóûńt̂ér̂éd̂ án̂ ér̂ŕôŕ: {errorMessage}"
+  },
+  "lighthouse-core/lib/lh-error.js | internalChromeError": {
+    "message": "Âń îńt̂ér̂ńâĺ Ĉh́r̂óm̂é êŕr̂ór̂ óĉćûŕr̂éd̂. Ṕl̂éâśê ŕêśt̂ár̂t́ Ĉh́r̂óm̂é âńd̂ t́r̂ý r̂é-r̂ún̂ńîńĝ Ĺîǵĥt́ĥóûśê."
+  },
+  "lighthouse-core/lib/lh-error.js | missingRequiredArtifact": {
+    "message": "R̂éq̂úîŕêd́ {artifactName} ĝát̂h́êŕêŕ d̂íd̂ ńôt́ r̂ún̂."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailed": {
+    "message": "L̂íĝh́t̂h́ôúŝé ŵáŝ ún̂áb̂ĺê t́ô ŕêĺîáb̂ĺŷ ĺôád̂ t́ĥé p̂áĝé ŷóû ŕêq́ûéŝt́êd́. M̂ák̂é ŝúr̂é ŷóû ár̂é t̂éŝt́îńĝ t́ĥé ĉór̂ŕêćt̂ ÚR̂Ĺ âńd̂ t́ĥát̂ t́ĥé ŝér̂v́êŕ îś p̂ŕôṕêŕl̂ý r̂éŝṕôńd̂ín̂ǵ t̂ó âĺl̂ ŕêq́ûéŝt́ŝ."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedHung": {
+    "message": "L̂íĝh́t̂h́ôúŝé ŵáŝ ún̂áb̂ĺê t́ô ŕêĺîáb̂ĺŷ ĺôád̂ t́ĥé ÛŔL̂ ýôú r̂éq̂úêśt̂éd̂ b́êćâúŝé t̂h́ê ṕâǵê śt̂óp̂ṕêd́ r̂éŝṕôńd̂ín̂ǵ."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedInsecure": {
+    "message": "T̂h́ê ÚR̂Ĺ ŷóû h́âv́ê ṕr̂óv̂íd̂éd̂ d́ôéŝ ńôt́ ĥáv̂é â v́âĺîd́ ŝéĉúr̂ít̂ý ĉér̂t́îf́îćât́ê. {securityMessages}"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedInterstitial": {
+    "message": "Ĉh́r̂óm̂é p̂ŕêv́êńt̂éd̂ ṕâǵê ĺôád̂ ẃît́ĥ án̂ ín̂t́êŕŝt́ît́îál̂. Ḿâḱê śûŕê ýôú âŕê t́êśt̂ín̂ǵ t̂h́ê ćôŕr̂éĉt́ ÛŔL̂ án̂d́ t̂h́ât́ t̂h́ê śêŕv̂ér̂ íŝ ṕr̂óp̂ér̂ĺŷ ŕêśp̂ón̂d́îńĝ t́ô ál̂ĺ r̂éq̂úêśt̂ś."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedWithDetails": {
+    "message": "L̂íĝh́t̂h́ôúŝé ŵáŝ ún̂áb̂ĺê t́ô ŕêĺîáb̂ĺŷ ĺôád̂ t́ĥé p̂áĝé ŷóû ŕêq́ûéŝt́êd́. M̂ák̂é ŝúr̂é ŷóû ár̂é t̂éŝt́îńĝ t́ĥé ĉór̂ŕêćt̂ ÚR̂Ĺ âńd̂ t́ĥát̂ t́ĥé ŝér̂v́êŕ îś p̂ŕôṕêŕl̂ý r̂éŝṕôńd̂ín̂ǵ t̂ó âĺl̂ ŕêq́ûéŝt́ŝ. (D́êt́âíl̂ś: {errorDetails})"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedWithStatusCode": {
+    "message": "L̂íĝh́t̂h́ôúŝé ŵáŝ ún̂áb̂ĺê t́ô ŕêĺîáb̂ĺŷ ĺôád̂ t́ĥé p̂áĝé ŷóû ŕêq́ûéŝt́êd́. M̂ák̂é ŝúr̂é ŷóû ár̂é t̂éŝt́îńĝ t́ĥé ĉór̂ŕêćt̂ ÚR̂Ĺ âńd̂ t́ĥát̂ t́ĥé ŝér̂v́êŕ îś p̂ŕôṕêŕl̂ý r̂éŝṕôńd̂ín̂ǵ t̂ó âĺl̂ ŕêq́ûéŝt́ŝ. (Śt̂át̂úŝ ćôd́ê: {statusCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadTookTooLong": {
+    "message": "Ŷóûŕ p̂áĝé t̂óôḱ t̂óô ĺôńĝ t́ô ĺôád̂. Ṕl̂éâśê f́ôĺl̂óŵ t́ĥé ôṕp̂ór̂t́ûńît́îéŝ ín̂ t́ĥé r̂ép̂ór̂t́ t̂ó r̂éd̂úĉé ŷóûŕ p̂áĝé l̂óâd́ t̂ím̂é, âńd̂ t́ĥén̂ t́r̂ý r̂é-r̂ún̂ńîńĝ Ĺîǵĥt́ĥóûśê. ({errorCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | protocolTimeout": {
+    "message": "Ŵáît́îńĝ f́ôŕ D̂év̂T́ôól̂ś p̂ŕôt́ôćôĺ r̂éŝṕôńŝé ĥáŝ éx̂ćêéd̂éd̂ t́ĥé âĺl̂ót̂t́êd́ t̂ím̂é. (M̂ét̂h́ôd́: {protocolMethod})"
+  },
+  "lighthouse-core/lib/lh-error.js | requestContentTimeout": {
+    "message": "F̂ét̂ćĥín̂ǵ r̂éŝóûŕĉé ĉón̂t́êńt̂ h́âś êx́ĉéêd́êd́ t̂h́ê ál̂ĺôt́t̂éd̂ t́îḿê"
+  },
+  "lighthouse-core/lib/lh-error.js | urlInvalid": {
+    "message": "T̂h́ê ÚR̂Ĺ ŷóû h́âv́ê ṕr̂óv̂íd̂éd̂ áp̂ṕêár̂ś t̂ó b̂é îńv̂ál̂íd̂."
+  },
+  "lighthouse-core/report/html/renderer/util.js | auditGroupExpandTooltip": {
+    "message": "Ŝh́ôẃ âúd̂ít̂ś"
+  },
+  "lighthouse-core/report/html/renderer/util.js | crcInitialNavigation": {
+    "message": "Îńît́îál̂ Ńâv́îǵât́îón̂"
+  },
+  "lighthouse-core/report/html/renderer/util.js | crcLongestDurationLabel": {
+    "message": "M̂áx̂ím̂úm̂ ćr̂ít̂íĉál̂ ṕât́ĥ ĺât́êńĉý:"
+  },
+  "lighthouse-core/report/html/renderer/util.js | errorLabel": {
+    "message": "Êŕr̂ór̂!"
+  },
+  "lighthouse-core/report/html/renderer/util.js | errorMissingAuditInfo": {
+    "message": "R̂ép̂ór̂t́ êŕr̂ór̂: ńô áûd́ît́ îńf̂ór̂ḿât́îón̂"
+  },
+  "lighthouse-core/report/html/renderer/util.js | labDataTitle": {
+    "message": "L̂áb̂ D́ât́â"
+  },
+  "lighthouse-core/report/html/renderer/util.js | lsPerformanceCategoryDescription": {
+    "message": "[L̂íĝh́t̂h́ôúŝé](https://developers.google.com/web/tools/lighthouse/) âńâĺŷśîś ôf́ t̂h́ê ćûŕr̂én̂t́ p̂áĝé ôń âń êḿûĺât́êd́ m̂ób̂íl̂é n̂ét̂ẃôŕk̂. V́âĺûéŝ ár̂é êśt̂ím̂át̂éd̂ án̂d́ m̂áŷ v́âŕŷ."
+  },
+  "lighthouse-core/report/html/renderer/util.js | manualAuditsGroupTitle": {
+    "message": "Âd́d̂ít̂íôńâĺ ît́êḿŝ t́ô ḿâńûál̂ĺŷ ćĥéĉḱ"
+  },
+  "lighthouse-core/report/html/renderer/util.js | notApplicableAuditsGroupTitle": {
+    "message": "N̂ót̂ áp̂ṕl̂íĉáb̂ĺê"
+  },
+  "lighthouse-core/report/html/renderer/util.js | opportunityResourceColumnLabel": {
+    "message": "Ôṕp̂ór̂t́ûńît́ŷ"
+  },
+  "lighthouse-core/report/html/renderer/util.js | opportunitySavingsColumnLabel": {
+    "message": "Êśt̂ím̂át̂éd̂ Śâv́îńĝś"
+  },
+  "lighthouse-core/report/html/renderer/util.js | passedAuditsGroupTitle": {
+    "message": "P̂áŝśêd́ âúd̂ít̂ś"
+  },
+  "lighthouse-core/report/html/renderer/util.js | snippetCollapseButtonLabel": {
+    "message": "Ĉól̂ĺâṕŝé ŝńîṕp̂ét̂"
+  },
+  "lighthouse-core/report/html/renderer/util.js | snippetExpandButtonLabel": {
+    "message": "Êx́p̂án̂d́ ŝńîṕp̂ét̂"
+  },
+  "lighthouse-core/report/html/renderer/util.js | thirdPartyResourcesLabel": {
+    "message": "Ŝh́ôẃ 3r̂d́-p̂ár̂t́ŷ ŕêśôúr̂ćêś"
+  },
+  "lighthouse-core/report/html/renderer/util.js | toplevelWarningsMessage": {
+    "message": "T̂h́êŕê ẃêŕê íŝśûéŝ áf̂f́êćt̂ín̂ǵ t̂h́îś r̂ún̂ óf̂ Ĺîǵĥt́ĥóûśê:"
+  },
+  "lighthouse-core/report/html/renderer/util.js | varianceDisclaimer": {
+    "message": "V̂ál̂úêś âŕê éŝt́îḿât́êd́ âńd̂ ḿâý v̂ár̂ý. T̂h́ê ṕêŕf̂ór̂ḿâńĉé ŝćôŕê íŝ [b́âśêd́ ôńl̂ý ôń t̂h́êśê ḿêt́r̂íĉś](https://github.com/GoogleChrome/lighthouse/blob/d2ec9ffbb21de9ad1a0f86ed24575eda32c796f0/docs/scoring.md#how-are-the-scores-weighted)."
+  },
+  "lighthouse-core/report/html/renderer/util.js | warningAuditsGroupTitle": {
+    "message": "P̂áŝśêd́ âúd̂ít̂ś b̂út̂ ẃît́ĥ ẃâŕn̂ín̂ǵŝ"
+  },
+  "lighthouse-core/report/html/renderer/util.js | warningHeader": {
+    "message": "Ŵár̂ńîńĝś: "
+  },
+  "stack-packs/packs/wordpress.js | efficient_animated_content": {
+    "message": "Ĉón̂śîd́êŕ ûṕl̂óâd́îńĝ ýôúr̂ ǴÎF́ t̂ó â śêŕv̂íĉé ŵh́îćĥ ẃîĺl̂ ḿâḱê ít̂ áv̂áîĺâb́l̂é t̂ó êḿb̂éd̂ áŝ án̂ H́T̂ḾL̂5 v́îd́êó."
+  },
+  "stack-packs/packs/wordpress.js | offscreen_images": {
+    "message": "Îńŝt́âĺl̂ á [l̂áẑý-l̂óâd́ Ŵór̂d́P̂ŕêśŝ ṕl̂úĝín̂](https://wordpress.org/plugins/search/lazy+load/) t́ĥát̂ ṕr̂óv̂íd̂éŝ t́ĥé âb́îĺît́ŷ t́ô d́êf́êŕ âńŷ óf̂f́ŝćr̂éêń îḿâǵêś, ôŕ ŝẃît́ĉh́ t̂ó â t́ĥém̂é t̂h́ât́ p̂ŕôv́îd́êś t̂h́ât́ f̂ún̂ćt̂íôńâĺît́ŷ. Ál̂śô ćôńŝíd̂ér̂ úŝín̂ǵ [t̂h́ê ÁM̂Ṕ p̂ĺûǵîń](https://wordpress.org/plugins/amp/)."
+  },
+  "stack-packs/packs/wordpress.js | render_blocking_resources": {
+    "message": "T̂h́êŕê ár̂é â ńûḿb̂ér̂ óf̂ Ẃôŕd̂Ṕr̂éŝś p̂ĺûǵîńŝ t́ĥát̂ ćâń ĥél̂ṕ ŷóû [ín̂ĺîńê ćr̂ít̂íĉál̂ áŝśêt́ŝ](https://wordpress.org/plugins/search/critical+css/) ór̂ [d́êf́êŕ l̂éŝś îḿp̂ór̂t́âńt̂ ŕêśôúr̂ćêś](https://wordpress.org/plugins/search/defer+css+javascript/). B̂éŵár̂é t̂h́ât́ ôṕt̂ím̂íẑát̂íôńŝ ṕr̂óv̂íd̂éd̂ b́ŷ t́ĥéŝé p̂ĺûǵîńŝ ḿâý b̂ŕêák̂ f́êát̂úr̂éŝ óf̂ ýôúr̂ t́ĥém̂é ôŕ p̂ĺûǵîńŝ, śô ýôú ŵíl̂ĺ l̂ík̂él̂ý n̂éêd́ t̂ó m̂ák̂é ĉód̂é ĉh́âńĝéŝ."
+  },
+  "stack-packs/packs/wordpress.js | time_to_first_byte": {
+    "message": "T̂h́êḿêś, p̂ĺûǵîńŝ, án̂d́ ŝér̂v́êŕ ŝṕêćîf́îćât́îón̂ś âĺl̂ ćôńt̂ŕîb́ût́ê t́ô śêŕv̂ér̂ ŕêśp̂ón̂śê t́îḿê. Ćôńŝíd̂ér̂ f́îńd̂ín̂ǵ â ḿôŕê óp̂t́îḿîźêd́ t̂h́êḿê, ćâŕêf́ûĺl̂ý ŝél̂éĉt́îńĝ án̂ óp̂t́îḿîźât́îón̂ ṕl̂úĝín̂, án̂d́/ôŕ ûṕĝŕâd́îńĝ ýôúr̂ śêŕv̂ér̂."
+  },
+  "stack-packs/packs/wordpress.js | total_byte_weight": {
+    "message": "Ĉón̂śîd́êŕ ŝh́ôẃîńĝ éx̂ćêŕp̂t́ŝ ín̂ ýôúr̂ ṕôśt̂ ĺîśt̂ś (ê.ǵ. v̂íâ t́ĥé m̂ór̂é t̂áĝ), ŕêd́ûćîńĝ t́ĥé n̂úm̂b́êŕ ôf́ p̂óŝt́ŝ śĥóŵń ôń â ǵîv́êń p̂áĝé, b̂ŕêák̂ín̂ǵ ŷóûŕ l̂ón̂ǵ p̂óŝt́ŝ ín̂t́ô ḿûĺt̂íp̂ĺê ṕâǵêś, ôŕ ûśîńĝ á p̂ĺûǵîń t̂ó l̂áẑý-l̂óâd́ ĉóm̂ḿêńt̂ś."
+  },
+  "stack-packs/packs/wordpress.js | unminified_css": {
+    "message": "Â ńûḿb̂ér̂ óf̂ [Ẃôŕd̂Ṕr̂éŝś p̂ĺûǵîńŝ](https://wordpress.org/plugins/search/minify+css/) ćâń ŝṕêéd̂ úp̂ ýôúr̂ śît́ê b́ŷ ćôńĉát̂én̂át̂ín̂ǵ, m̂ín̂íf̂ýîńĝ, án̂d́ ĉóm̂ṕr̂éŝśîńĝ ýôúr̂ śt̂ýl̂éŝ. Ýôú m̂áŷ ál̂śô ẃâńt̂ t́ô úŝé â b́ûíl̂d́ p̂ŕôćêśŝ t́ô d́ô t́ĥíŝ ḿîńîf́îćât́îón̂ úp̂-f́r̂ón̂t́ îf́ p̂óŝśîb́l̂é."
+  },
+  "stack-packs/packs/wordpress.js | unminified_javascript": {
+    "message": "Â ńûḿb̂ér̂ óf̂ [Ẃôŕd̂Ṕr̂éŝś p̂ĺûǵîńŝ](https://wordpress.org/plugins/search/minify+javascript/) ćâń ŝṕêéd̂ úp̂ ýôúr̂ śît́ê b́ŷ ćôńĉát̂én̂át̂ín̂ǵ, m̂ín̂íf̂ýîńĝ, án̂d́ ĉóm̂ṕr̂éŝśîńĝ ýôúr̂ śĉŕîṕt̂ś. Ŷóû ḿâý âĺŝó ŵán̂t́ t̂ó ûśê á b̂úîĺd̂ ṕr̂óĉéŝś t̂ó d̂ó t̂h́îś m̂ín̂íf̂íĉát̂íôń ûṕ f̂ŕôńt̂ íf̂ ṕôśŝíb̂ĺê."
+  },
+  "stack-packs/packs/wordpress.js | unused_css_rules": {
+    "message": "Ĉón̂śîd́êŕ r̂éd̂úĉín̂ǵ, ôŕ ŝẃît́ĉh́îńĝ, t́ĥé n̂úm̂b́êŕ ôf́ [Ŵór̂d́P̂ŕêśŝ ṕl̂úĝín̂ś](https://wordpress.org/plugins/) l̂óâd́îńĝ ún̂úŝéd̂ ĆŜŚ îń ŷóûŕ p̂áĝé. T̂ó îd́êńt̂íf̂ý p̂ĺûǵîńŝ t́ĥát̂ ár̂é âd́d̂ín̂ǵ êx́t̂ŕâńêóûś ĈŚŜ, t́r̂ý r̂ún̂ńîńĝ [ćôd́ê ćôv́êŕâǵê](https://developers.google.com/web/updates/2017/04/devtools-release-notes#coverage) ín̂ Ćĥŕôḿê D́êv́T̂óôĺŝ. Ýôú ĉán̂ íd̂én̂t́îf́ŷ t́ĥé t̂h́êḿê/ṕl̂úĝín̂ ŕêśp̂ón̂śîb́l̂é f̂ŕôḿ t̂h́ê ÚR̂Ĺ ôf́ t̂h́ê śt̂ýl̂éŝh́êét̂. Ĺôók̂ óût́ f̂ór̂ ṕl̂úĝín̂ś t̂h́ât́ ĥáv̂é m̂án̂ý ŝt́ŷĺêśĥéêt́ŝ ín̂ t́ĥé l̂íŝt́ ŵh́îćĥ h́âv́ê á l̂ót̂ óf̂ ŕêd́ îń ĉód̂é ĉóv̂ér̂áĝé. Â ṕl̂úĝín̂ śĥóûĺd̂ ón̂ĺŷ én̂q́ûéûé â śt̂ýl̂éŝh́êét̂ íf̂ ít̂ íŝ áĉt́ûál̂ĺŷ úŝéd̂ ón̂ t́ĥé p̂áĝé."
+  },
+  "stack-packs/packs/wordpress.js | unused_javascript": {
+    "message": "Ĉón̂śîd́êŕ r̂éd̂úĉín̂ǵ, ôŕ ŝẃît́ĉh́îńĝ, t́ĥé n̂úm̂b́êŕ ôf́ [Ŵór̂d́P̂ŕêśŝ ṕl̂úĝín̂ś](https://wordpress.org/plugins/) l̂óâd́îńĝ ún̂úŝéd̂ J́âv́âŚĉŕîṕt̂ ín̂ ýôúr̂ ṕâǵê. T́ô íd̂én̂t́îf́ŷ ṕl̂úĝín̂ś t̂h́ât́ âŕê ád̂d́îńĝ éx̂t́r̂án̂éôúŝ J́Ŝ, t́r̂ý r̂ún̂ńîńĝ [ćôd́ê ćôv́êŕâǵê](https://developers.google.com/web/updates/2017/04/devtools-release-notes#coverage) ín̂ Ćĥŕôḿê D́êv́T̂óôĺŝ. Ýôú ĉán̂ íd̂én̂t́îf́ŷ t́ĥé t̂h́êḿê/ṕl̂úĝín̂ ŕêśp̂ón̂śîb́l̂é f̂ŕôḿ t̂h́ê ÚR̂Ĺ ôf́ t̂h́ê śĉŕîṕt̂. Ĺôók̂ óût́ f̂ór̂ ṕl̂úĝín̂ś t̂h́ât́ ĥáv̂é m̂án̂ý ŝćr̂íp̂t́ŝ ín̂ t́ĥé l̂íŝt́ ŵh́îćĥ h́âv́ê á l̂ót̂ óf̂ ŕêd́ îń ĉód̂é ĉóv̂ér̂áĝé.  ṕl̂úĝín̂ śĥóûĺd̂ ón̂ĺŷ én̂q́ûéûé â śĉŕîṕt̂ íf̂ ít̂ íŝ áĉt́ûál̂ĺŷ úŝéd̂ ón̂ t́ĥé p̂áĝé."
+  },
+  "stack-packs/packs/wordpress.js | uses_long_cache_ttl": {
+    "message": "R̂éâd́ âb́ôút̂ [B́r̂óŵśêŕ Ĉáĉh́îńĝ ín̂ Ẃôŕd̂Ṕr̂éŝś](https://codex.wordpress.org/WordPress_Optimization#Browser_Caching)."
+  },
+  "stack-packs/packs/wordpress.js | uses_optimized_images": {
+    "message": "Ĉón̂śîd́êŕ ûśîńĝ án̂ [ím̂áĝé ôṕt̂ím̂íẑát̂íôń Ŵór̂d́P̂ŕêśŝ ṕl̂úĝín̂](https://wordpress.org/plugins/search/optimize+images/) t́ĥát̂ ćôḿp̂ŕêśŝéŝ ýôúr̂ ím̂áĝéŝ ẃĥíl̂é r̂ét̂áîńîńĝ q́ûál̂ít̂ý."
+  },
+  "stack-packs/packs/wordpress.js | uses_responsive_images": {
+    "message": "Ûṕl̂óâd́ îḿâǵêś d̂ír̂éĉt́l̂ý t̂h́r̂óûǵĥ t́ĥé [m̂éd̂íâ ĺîb́r̂ár̂ý](https://codex.wordpress.org/Media_Library_Screen) t̂ó êńŝúr̂é t̂h́ât́ t̂h́ê ŕêq́ûír̂éd̂ ím̂áĝé ŝíẑéŝ ár̂é âv́âíl̂áb̂ĺê, án̂d́ t̂h́êń îńŝér̂t́ t̂h́êḿ f̂ŕôḿ t̂h́ê ḿêd́îá l̂íb̂ŕâŕŷ ór̂ úŝé t̂h́ê ím̂áĝé ŵíd̂ǵêt́ t̂ó êńŝúr̂é t̂h́ê óp̂t́îḿâĺ îḿâǵê śîźêś âŕê úŝéd̂ (ín̂ćl̂úd̂ín̂ǵ t̂h́ôśê f́ôŕ t̂h́ê ŕêśp̂ón̂śîv́ê b́r̂éâḱp̂óîńt̂ś). Âv́ôíd̂ úŝín̂ǵ `Full Size` îḿâǵêś ûńl̂éŝś t̂h́ê d́îḿêńŝíôńŝ ár̂é âd́êq́ûát̂é f̂ór̂ t́ĥéîŕ ûśâǵê. [Ĺêár̂ń M̂ór̂é](https://codex.wordpress.org/Inserting_Images_into_Posts_and_Pages#Image_Size)."
+  },
+  "stack-packs/packs/wordpress.js | uses_text_compression": {
+    "message": "Ŷóû ćâń êńâb́l̂é t̂éx̂t́ ĉóm̂ṕr̂éŝśîón̂ ín̂ ýôúr̂ ẃêb́ ŝér̂v́êŕ ĉón̂f́îǵûŕât́îón̂."
+  },
+  "stack-packs/packs/wordpress.js | uses_webp_images": {
+    "message": "Ĉón̂śîd́êŕ ûśîńĝ á [p̂ĺûǵîń](https://wordpress.org/plugins/search/convert+webp/) ôŕ ŝér̂v́îćê t́ĥát̂ ẃîĺl̂ áût́ôḿât́îćâĺl̂ý ĉón̂v́êŕt̂ ýôúr̂ úp̂ĺôád̂éd̂ ím̂áĝéŝ t́ô t́ĥé ôṕt̂ím̂ál̂ f́ôŕm̂át̂ś."
+  }
+}
diff --git a/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/es-419.json b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/es-419.json
new file mode 100644
index 0000000..74d08154
--- /dev/null
+++ b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/es-419.json
@@ -0,0 +1,1541 @@
+{
+  "lighthouse-core/audits/accessibility/accesskeys.js | description": {
+    "message": "Las claves de acceso permiten a los usuarios dirigirse rápidamente a una parte concreta de la página. Para facilitar una navegación correcta, las claves de acceso deben ser únicas. [Obtén más información](https://web.dev/accesskeys/)."
+  },
+  "lighthouse-core/audits/accessibility/accesskeys.js | failureTitle": {
+    "message": "Los valores de `[accesskey]` no son únicos"
+  },
+  "lighthouse-core/audits/accessibility/accesskeys.js | title": {
+    "message": "Los valores de `[accesskey]` son únicos"
+  },
+  "lighthouse-core/audits/accessibility/aria-allowed-attr.js | description": {
+    "message": "Cada `role` de ARIA admite un subconjunto específico de atributos de `aria-*`. Si no coinciden estos valores, los atributos de `aria-*` no serán válidos. [Obtén más información](https://web.dev/aria-allowed-attr/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-allowed-attr.js | failureTitle": {
+    "message": "Los atributos `[aria-*]` no coinciden con sus roles"
+  },
+  "lighthouse-core/audits/accessibility/aria-allowed-attr.js | title": {
+    "message": "Los atributos `[aria-*]` coinciden con sus roles"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-attr.js | description": {
+    "message": "Algunos roles de ARIA incluyen atributos obligatorios que describen el estado del elemento a los lectores de pantalla. [Obtén más información](https://web.dev/aria-required-attr/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-required-attr.js | failureTitle": {
+    "message": "Los elementos `[role]` no tienen todos los atributos `[aria-*]` necesarios"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-attr.js | title": {
+    "message": "Los elementos `[role]` tienen todos los atributos `[aria-*]` necesarios"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-children.js | description": {
+    "message": "Algunos roles principales de ARIA deben contener roles secundarios específicos para llevar a cabo las funciones de accesibilidad correspondientes. [Obtén más información](https://web.dev/aria-required-children/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-required-children.js | failureTitle": {
+    "message": "Faltan elementos con `[role]` que requieren elementos `[role]` secundarios específicos."
+  },
+  "lighthouse-core/audits/accessibility/aria-required-children.js | title": {
+    "message": "Se incluyen elementos con roles `[role]` que requieren roles `[role]` secundarios específicos"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-parent.js | description": {
+    "message": "Algunos roles secundarios de ARIA deben incluirse dentro de roles principales específicos para llevar a cabo de manera adecuada las funciones de accesibilidad correspondientes. [Obtén más información](https://web.dev/aria-required-parent/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-required-parent.js | failureTitle": {
+    "message": "Los elementos `[role]` no se incluyen en los elementos principales necesarios"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-parent.js | title": {
+    "message": "Los elementos `[role]` se incluyen en los elementos principales correspondientes"
+  },
+  "lighthouse-core/audits/accessibility/aria-roles.js | description": {
+    "message": "Los roles de ARIA deben tener valores válidos para realizar las funciones de accesibilidad correspondientes. [Obtén más información](https://web.dev/aria-roles/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-roles.js | failureTitle": {
+    "message": "Los valores de `[role]` no son válidos"
+  },
+  "lighthouse-core/audits/accessibility/aria-roles.js | title": {
+    "message": "Los valores de `[role]` son válidos"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr-value.js | description": {
+    "message": "Las tecnologías de asistencia, como los lectores de pantalla, no pueden interpretar atributos de ARIA con valores no válidos. [Obtén más información](https://web.dev/aria-valid-attr-value/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr-value.js | failureTitle": {
+    "message": "Los atributos `[aria-*]` no tienen valores válidos"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr-value.js | title": {
+    "message": "Los atributos `[aria-*]` tienen valores válidos"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr.js | description": {
+    "message": "Las tecnologías de asistencia, como los lectores de pantalla, no pueden interpretar los atributos ARIA cuyos nombres no sean válidos. [Obtén más información](https://web.dev/aria-valid-attr/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr.js | failureTitle": {
+    "message": "Los atributos `[aria-*]` no son válidos o no están bien escritos"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr.js | title": {
+    "message": "Los atributos `[aria-*]` son válidos y están bien escritos"
+  },
+  "lighthouse-core/audits/accessibility/audio-caption.js | description": {
+    "message": "Los subtítulos permiten que los usuarios sordos o con dificultades auditivas aprovechen los elementos de audio, dado que proporcionan información fundamental, como la indicación de quién habla, lo que dice y otros datos no verbales. [Obtén más información](https://web.dev/audio-caption/)."
+  },
+  "lighthouse-core/audits/accessibility/audio-caption.js | failureTitle": {
+    "message": "Falta un elemento `<track>` con `[kind=\"captions\"]` en los elementos `<audio>`."
+  },
+  "lighthouse-core/audits/accessibility/audio-caption.js | title": {
+    "message": "Los elementos `<audio>` contienen un elemento `<track>` con `[kind=\"captions\"]`"
+  },
+  "lighthouse-core/audits/accessibility/axe-audit.js | failingElementsHeader": {
+    "message": "Elementos con errores"
+  },
+  "lighthouse-core/audits/accessibility/button-name.js | description": {
+    "message": "Si un botón no tiene un nombre accesible, los lectores de pantalla lo leerán en voz alta como \"botón\", por lo que resulta inservible para los usuarios que necesitan usar lectores de pantalla. [Obtén más información](https://web.dev/button-name/)."
+  },
+  "lighthouse-core/audits/accessibility/button-name.js | failureTitle": {
+    "message": "Los botones no tienen nombres accesibles"
+  },
+  "lighthouse-core/audits/accessibility/button-name.js | title": {
+    "message": "Los botones tienen nombres accesibles"
+  },
+  "lighthouse-core/audits/accessibility/bypass.js | description": {
+    "message": "Incluir maneras de omitir el contenido repetitivo permite a los usuarios que usan un teclado navegar por la página con mayor eficiencia. [Obtén más información](https://web.dev/bypass/)."
+  },
+  "lighthouse-core/audits/accessibility/bypass.js | failureTitle": {
+    "message": "La página no contiene ningún título, vínculo de omisión ni región de punto de referencia"
+  },
+  "lighthouse-core/audits/accessibility/bypass.js | title": {
+    "message": "La página contiene un título, un vínculo de omisión o una región de punto de referencia"
+  },
+  "lighthouse-core/audits/accessibility/color-contrast.js | description": {
+    "message": "Los textos con poco contraste resultan difíciles o imposibles de leer para muchos usuarios. [Obtén más información](https://web.dev/color-contrast/)."
+  },
+  "lighthouse-core/audits/accessibility/color-contrast.js | failureTitle": {
+    "message": "Los colores de fondo y de primer plano no tienen una relación de contraste adecuada."
+  },
+  "lighthouse-core/audits/accessibility/color-contrast.js | title": {
+    "message": "Los colores de fondo y de primer plano tienen una relación de contraste adecuada"
+  },
+  "lighthouse-core/audits/accessibility/definition-list.js | description": {
+    "message": "Si las listas de definiciones no están bien marcadas, es posible que los lectores de pantalla las lean de forma confusa o imprecisa. [Obtén más información](https://web.dev/definition-list/)."
+  },
+  "lighthouse-core/audits/accessibility/definition-list.js | failureTitle": {
+    "message": "Los elementos `<dl>` no contienen solo elementos `<script>` o `<template>`, o grupos de `<dt>` y `<dd>` ordenados correctamente."
+  },
+  "lighthouse-core/audits/accessibility/definition-list.js | title": {
+    "message": "Los elementos `<dl>` contienen solo elementos `<script>` o `<template>`, o grupos de `<dt>` y `<dd>` ordenados correctamente."
+  },
+  "lighthouse-core/audits/accessibility/dlitem.js | description": {
+    "message": "Los elementos de la lista de definiciones (`<dt>` y `<dd>`) deben incluirse en un elemento `<dl>` principal para garantizar que los lectores de pantalla los lean correctamente. [Obtén más información](https://web.dev/dlitem/)."
+  },
+  "lighthouse-core/audits/accessibility/dlitem.js | failureTitle": {
+    "message": "Los elementos de la lista de definiciones no se incluyen en los elementos `<dl>`"
+  },
+  "lighthouse-core/audits/accessibility/dlitem.js | title": {
+    "message": "Los elementos de la lista de definiciones se incluyen en los elementos `<dl>`"
+  },
+  "lighthouse-core/audits/accessibility/document-title.js | description": {
+    "message": "El título les brinda a los usuarios de lectores de pantalla una descripción general de la página. Por su parte, los usuarios de motores de búsqueda lo usan mucho para determinar si una página es relevante para su búsqueda. [Obtén más información](https://web.dev/document-title/)."
+  },
+  "lighthouse-core/audits/accessibility/document-title.js | failureTitle": {
+    "message": "El documento no tiene un elemento `<title>`"
+  },
+  "lighthouse-core/audits/accessibility/document-title.js | title": {
+    "message": "El documento tiene un elemento `<title>`"
+  },
+  "lighthouse-core/audits/accessibility/duplicate-id.js | description": {
+    "message": "El valor de los atributos id debe ser único para evitar que las tecnologías de asistencia omitan otras instancias. [Obtén más información](https://web.dev/duplicate-id/)."
+  },
+  "lighthouse-core/audits/accessibility/duplicate-id.js | failureTitle": {
+    "message": "Los atributos `[id]` de la página no son únicos"
+  },
+  "lighthouse-core/audits/accessibility/duplicate-id.js | title": {
+    "message": "Los atributos `[id]` de la página son únicos"
+  },
+  "lighthouse-core/audits/accessibility/frame-title.js | description": {
+    "message": "Los usuarios de lectores de pantalla necesitan que los marcos tengan títulos para que se describa su contenido. [Obtén más información](https://web.dev/frame-title/)."
+  },
+  "lighthouse-core/audits/accessibility/frame-title.js | failureTitle": {
+    "message": "Los elementos `<frame>` o `<iframe>` no tienen título"
+  },
+  "lighthouse-core/audits/accessibility/frame-title.js | title": {
+    "message": "Los elementos `<frame>` o `<iframe>` tienen un título"
+  },
+  "lighthouse-core/audits/accessibility/html-has-lang.js | description": {
+    "message": "Si no se especifica ningún atributo de idioma para una página, los lectores de pantalla considerarán que la página está en el idioma predeterminado que el usuario eligió al configurar el lector de pantalla. Si el idioma de la página es diferente del predeterminado, es posible que el lector de pantalla no lea bien el texto de la página. [Obtén más información](https://web.dev/html-has-lang/)."
+  },
+  "lighthouse-core/audits/accessibility/html-has-lang.js | failureTitle": {
+    "message": "El elemento `<html>` no tiene un atributo `[lang]`"
+  },
+  "lighthouse-core/audits/accessibility/html-has-lang.js | title": {
+    "message": "El elemento `<html>` tiene un atributo `[lang]`"
+  },
+  "lighthouse-core/audits/accessibility/html-lang-valid.js | description": {
+    "message": "Especificar un [idioma BCP 47](https://www.w3.org/International/questions/qa-choosing-language-tags#question) válido permite a los lectores de pantalla leer el texto en voz alta correctamente. [Obtén más información](https://web.dev/html-lang-valid/)."
+  },
+  "lighthouse-core/audits/accessibility/html-lang-valid.js | failureTitle": {
+    "message": "El elemento `<html>` no tiene un valor válido para el atributo `[lang]`."
+  },
+  "lighthouse-core/audits/accessibility/html-lang-valid.js | title": {
+    "message": "El elemento `<html>` tiene un valor válido para su atributo `[lang]`"
+  },
+  "lighthouse-core/audits/accessibility/image-alt.js | description": {
+    "message": "El texto de los elementos informativos debe ser corto y descriptivo. Los elementos decorativos se pueden omitir usando un atributo alt vacío. [Obtén más información](https://web.dev/image-alt/)."
+  },
+  "lighthouse-core/audits/accessibility/image-alt.js | failureTitle": {
+    "message": "Los elementos de imagen no tienen ningún atributo `[alt]`"
+  },
+  "lighthouse-core/audits/accessibility/image-alt.js | title": {
+    "message": "Los elementos de imagen tienen atributos `[alt]`"
+  },
+  "lighthouse-core/audits/accessibility/input-image-alt.js | description": {
+    "message": "Cuando se usa una imagen como botón `<input>`, resulta útil proporcionar un texto alternativo para permitir que los usuarios de lectores de pantalla entiendan cuál es la función del botón. [Obtén más información](https://web.dev/input-image-alt/)."
+  },
+  "lighthouse-core/audits/accessibility/input-image-alt.js | failureTitle": {
+    "message": "Los elementos `<input type=\"image\">` no tienen texto `[alt]`"
+  },
+  "lighthouse-core/audits/accessibility/input-image-alt.js | title": {
+    "message": "Los elementos `<input type=\"image\">` tienen texto `[alt]`"
+  },
+  "lighthouse-core/audits/accessibility/label.js | description": {
+    "message": "Las etiquetas garantizan que las tecnologías de asistencia, como los lectores de pantalla, lean los controles de los formularios de forma correcta. [Obtén más información](https://web.dev/label/)."
+  },
+  "lighthouse-core/audits/accessibility/label.js | failureTitle": {
+    "message": "Los elementos de formulario no tienen ninguna etiqueta asociada"
+  },
+  "lighthouse-core/audits/accessibility/label.js | title": {
+    "message": "Los elementos de formulario tienen etiquetas asociadas"
+  },
+  "lighthouse-core/audits/accessibility/layout-table.js | description": {
+    "message": "Las tablas que se usen con fines de diseño no deben incluir elementos de datos (como ordinales, leyendas o atributos de resumen), dado que estos pueden confundir a los usuarios de lectores de pantalla. [Obtén más información](https://web.dev/layout-table/)."
+  },
+  "lighthouse-core/audits/accessibility/layout-table.js | failureTitle": {
+    "message": "Los elementos `<table>` de presentación no evitan el uso de `<th>`, `<caption>` ni del atributo `[summary]`."
+  },
+  "lighthouse-core/audits/accessibility/layout-table.js | title": {
+    "message": "Los elementos `<table>` de presentación evitan el uso de `<th>`, `<caption>` o del atributo `[summary]`."
+  },
+  "lighthouse-core/audits/accessibility/link-name.js | description": {
+    "message": "Usar textos de vínculo (y textos alternativos para las imágenes, si estas se usan como vínculos) que sean reconocibles y únicos, y que se puedan seleccionar mejora la experiencia de navegación de los usuarios de lectores de pantalla. [Obtén más información](https://web.dev/link-name/)."
+  },
+  "lighthouse-core/audits/accessibility/link-name.js | failureTitle": {
+    "message": "Los vínculos no tienen nombres reconocibles"
+  },
+  "lighthouse-core/audits/accessibility/link-name.js | title": {
+    "message": "Los vínculos tienen nombres reconocibles"
+  },
+  "lighthouse-core/audits/accessibility/list.js | description": {
+    "message": "Los lectores de pantalla leen las listas en voz alta de una forma concreta. Se recomienda utilizar una estructura de lista adecuada para que los lectores de pantalla puedan leer las listas de forma correcta. [Obtén más información](https://web.dev/list/)."
+  },
+  "lighthouse-core/audits/accessibility/list.js | failureTitle": {
+    "message": "Las listas no contienen solo elementos `<li>` y elementos que admiten secuencias de comandos (`<script>` y `<template>`)."
+  },
+  "lighthouse-core/audits/accessibility/list.js | title": {
+    "message": "Las listas contienen solo elementos `<li>` y elementos que admiten secuencias de comando (`<script>` y `<template>`)."
+  },
+  "lighthouse-core/audits/accessibility/listitem.js | description": {
+    "message": "Los lectores de pantalla requieren que los elementos de lista (`<li>`) se incluyan en un elemento `<ul>` o `<ol>` principal para leerlos correctamente. [Obtén más información](https://web.dev/listitem/)."
+  },
+  "lighthouse-core/audits/accessibility/listitem.js | failureTitle": {
+    "message": "Los elementos de lista (`<li>`) no se encuentran dentro de elementos principales `<ul>` o `<ol>`."
+  },
+  "lighthouse-core/audits/accessibility/listitem.js | title": {
+    "message": "Los elementos de lista (`<li>`) se incluyen en los elementos principales `<ul>` o `<ol>`"
+  },
+  "lighthouse-core/audits/accessibility/meta-refresh.js | description": {
+    "message": "Los usuarios no esperan que una página se actualice automáticamente. Cuando eso sucede, vuelve a mostrarse la parte superior de la página. Esto puede generar una experiencia frustrante o confusa. [Obtén más información](https://web.dev/meta-refresh/)."
+  },
+  "lighthouse-core/audits/accessibility/meta-refresh.js | failureTitle": {
+    "message": "El documento usa `<meta http-equiv=\"refresh\">`"
+  },
+  "lighthouse-core/audits/accessibility/meta-refresh.js | title": {
+    "message": "El documento no usa `<meta http-equiv=\"refresh\">`"
+  },
+  "lighthouse-core/audits/accessibility/meta-viewport.js | description": {
+    "message": "Desactivar el zoom genera problemas para los usuarios con visión reducida, quienes necesitan ampliar la pantalla para ver correctamente el contenido de las páginas web. [Obtén más información](https://web.dev/meta-viewport/)."
+  },
+  "lighthouse-core/audits/accessibility/meta-viewport.js | failureTitle": {
+    "message": "`[user-scalable=\"no\"]` se usa en el elemento `<meta name=\"viewport\">` o el atributo `[maximum-scale]` tiene un valor inferior a 5."
+  },
+  "lighthouse-core/audits/accessibility/meta-viewport.js | title": {
+    "message": "No se usa `[user-scalable=\"no\"]` en el elemento `<meta name=\"viewport\">` y el atributo `[maximum-scale]` no tiene un valor inferior a 5."
+  },
+  "lighthouse-core/audits/accessibility/object-alt.js | description": {
+    "message": "Los lectores de pantalla no pueden traducir contenido que no sea texto. El agregado de texto alternativo a los elementos `<object>` ayuda a los lectores de pantalla a transmitir el significado correspondiente a los usuarios. [Obtén más información](https://web.dev/object-alt/)."
+  },
+  "lighthouse-core/audits/accessibility/object-alt.js | failureTitle": {
+    "message": "Los elementos `<object>` no tienen texto `[alt]`"
+  },
+  "lighthouse-core/audits/accessibility/object-alt.js | title": {
+    "message": "Los elementos `<object>` tienen texto `[alt]`"
+  },
+  "lighthouse-core/audits/accessibility/tabindex.js | description": {
+    "message": "Si el valor es superior a 0, el orden de navegación es explícito. Aunque técnicamente esta es una posibilidad válida, suele producir experiencias frustrantes en los usuarios que necesitan las tecnologías de asistencia. [Obtén más información](https://web.dev/tabindex/)."
+  },
+  "lighthouse-core/audits/accessibility/tabindex.js | failureTitle": {
+    "message": "Algunos elementos tienen un valor de `[tabindex]` superior a 0"
+  },
+  "lighthouse-core/audits/accessibility/tabindex.js | title": {
+    "message": "No hay ningún elemento con un valor de `[tabindex]` superior a 0"
+  },
+  "lighthouse-core/audits/accessibility/td-headers-attr.js | description": {
+    "message": "Los lectores de pantalla incluyen funciones para facilitar la navegación por las tablas. Asegurarse de que las celdas `<td>` que usan el atributo `[headers]` solo hagan referencia a otras celdas de la misma tabla puede mejorar la experiencia de los usuarios de lectores de pantalla. [Obtén más información](https://web.dev/td-headers-attr/)."
+  },
+  "lighthouse-core/audits/accessibility/td-headers-attr.js | failureTitle": {
+    "message": "Las celdas de un elemento `<table>` que usan el atributo `[headers]` hacen referencia a otras celdas de esa misma tabla."
+  },
+  "lighthouse-core/audits/accessibility/td-headers-attr.js | title": {
+    "message": "Las celdas de un elemento `<table>` que usan el atributo `[headers]` solo hacen referencia a otras celdas de esa misma tabla."
+  },
+  "lighthouse-core/audits/accessibility/th-has-data-cells.js | description": {
+    "message": "Los lectores de pantalla incluyen funciones para facilitar la navegación por las tablas. Asegurarse de que los encabezados de las tablas siempre hagan referencia a un conjunto específico de celdas puede mejorar la experiencia de los usuarios de lectores de pantalla. [Obtén más información](https://web.dev/th-has-data-cells/)."
+  },
+  "lighthouse-core/audits/accessibility/th-has-data-cells.js | failureTitle": {
+    "message": "Los elementos `<th>` y los elementos con `[role=\"columnheader\"/\"rowheader\"]` no contienen las celdas de datos que describen."
+  },
+  "lighthouse-core/audits/accessibility/th-has-data-cells.js | title": {
+    "message": "Los elementos `<th>` y los elementos con `[role=\"columnheader\"/\"rowheader\"]` contienen celdas de datos que describen."
+  },
+  "lighthouse-core/audits/accessibility/valid-lang.js | description": {
+    "message": "Especificar un [idioma CP 47](https://www.w3.org/International/questions/qa-choosing-language-tags#question) válido en los elementos ayuda a asegurar que los lectores de pantalla pronuncien bien el texto correspondiente. [Obtén más información](https://web.dev/valid-lang/)."
+  },
+  "lighthouse-core/audits/accessibility/valid-lang.js | failureTitle": {
+    "message": "Los atributos `[lang]` no tienen un valor válido"
+  },
+  "lighthouse-core/audits/accessibility/valid-lang.js | title": {
+    "message": "Los atributos `[lang]` tienen un valor válido"
+  },
+  "lighthouse-core/audits/accessibility/video-caption.js | description": {
+    "message": "Si un video tiene subtítulos, los usuarios sordos o con dificultades auditivas pueden acceder a la información más fácilmente. [Obtén más información](https://web.dev/video-caption/)."
+  },
+  "lighthouse-core/audits/accessibility/video-caption.js | failureTitle": {
+    "message": "Los elementos `<video>` no contienen un elemento `<track>` con `[kind=\"captions\"]`."
+  },
+  "lighthouse-core/audits/accessibility/video-caption.js | title": {
+    "message": "Los elementos `<video>` contienen un elemento `<track>` con `[kind=\"captions\"]`"
+  },
+  "lighthouse-core/audits/accessibility/video-description.js | description": {
+    "message": "Las descripciones de audio incluidas en los videos proporcionan información relevante que no surge de los diálogos, como la relativa a expresiones faciales y escenografía. [Obtén más información](https://web.dev/video-description/)."
+  },
+  "lighthouse-core/audits/accessibility/video-description.js | failureTitle": {
+    "message": "Los elementos `<video>` no contienen un elemento `<track>` con `[kind=\"description\"]`."
+  },
+  "lighthouse-core/audits/accessibility/video-description.js | title": {
+    "message": "Los elementos `<video>` contienen un elemento `<track>` con `[kind=\"description\"]`"
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | description": {
+    "message": "Para que el aspecto en iOS sea perfecto cuando los usuarios agreguen una app web progresiva a la pantalla principal, define un atributo `apple-touch-icon`. El atributo debe apuntar a un archivo PNG cuadrado de 192 px (o 180 px) no transparente. [Obtén más información](https://developers.google.com/web/fundamentals/design-and-ux/browser-customization/)."
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | failureTitle": {
+    "message": "No proporciona un ícono `apple-touch-icon` válido"
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | precomposedWarning": {
+    "message": "El atributo `apple-touch-icon-precomposed` está desactualizado; usa en su lugar`apple-touch-icon`."
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | title": {
+    "message": "Proporciona un `apple-touch-icon` válido"
+  },
+  "lighthouse-core/audits/bootup-time.js | chromeExtensionsWarning": {
+    "message": "Las extensiones de Chrome afectaron de forma negativa al rendimiento de carga de esta página. Prueba a auditarla en modo incógnito o desde un perfil de Chrome sin extensiones."
+  },
+  "lighthouse-core/audits/bootup-time.js | columnScriptEval": {
+    "message": "Evaluación de la secuencia de comandos"
+  },
+  "lighthouse-core/audits/bootup-time.js | columnScriptParse": {
+    "message": "Análisis de la secuencia de comandos"
+  },
+  "lighthouse-core/audits/bootup-time.js | columnTotal": {
+    "message": "Tiempo de CPU total"
+  },
+  "lighthouse-core/audits/bootup-time.js | description": {
+    "message": "Te recomendamos que reduzcas el tiempo de análisis, compilación y ejecución de secuencias JS. Para ello, puedes entregar cargas útiles de JS más pequeñas. [Obtén más información](https://developers.google.com/web/tools/lighthouse/audits/bootup)."
+  },
+  "lighthouse-core/audits/bootup-time.js | failureTitle": {
+    "message": "Reduce el tiempo de ejecución de JavaScript"
+  },
+  "lighthouse-core/audits/bootup-time.js | title": {
+    "message": "Tiempo de ejecución de JavaScript"
+  },
+  "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | description": {
+    "message": "Los GIF de gran tamaño no son eficientes para mostrar contenido animado. En su lugar, puedes utilizar formatos de video MPEG4/WebM para animaciones y formatos PNG/WebP para imágenes estáticas a fin de ahorrar bytes de la red. [Más información](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/replace-animated-gifs-with-video/)"
+  },
+  "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | title": {
+    "message": "Usa formatos de video para incluir contenido animado"
+  },
+  "lighthouse-core/audits/byte-efficiency/offscreen-images.js | description": {
+    "message": "Te recomendamos que uses la carga diferida para las imágenes ocultas y fuera de pantalla una vez que hayan terminado de cargarse todos los recursos críticos a fin de reducir el tiempo de carga. [Obtén más información](https://developers.google.com/web/tools/lighthouse/audits/offscreen-images)."
+  },
+  "lighthouse-core/audits/byte-efficiency/offscreen-images.js | title": {
+    "message": "Posterga la carga de imágenes que no aparecen en pantalla"
+  },
+  "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | description": {
+    "message": "Hay recursos que bloquean el primer procesamiento de imagen de la página. Te recomendamos entregar los elementos JS/CSS críticos insertados y postergar todos los JS/estilos que no sean críticos. [Obtén más información](https://developers.google.com/web/tools/lighthouse/audits/blocking-resources)."
+  },
+  "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | title": {
+    "message": "Elimina los recursos que bloqueen el renderizado"
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | description": {
+    "message": "Trabajar con cargas útiles de red de gran tamaño resulta oneroso para el usuario, además de aumentar considerablemente el tiempo de carga de las páginas. [Obtén más información](https://developers.google.com/web/tools/lighthouse/audits/network-payloads)."
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | displayValue": {
+    "message": "El tamaño total era {totalBytes, number, bytes} KB"
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | failureTitle": {
+    "message": "Evita cargas útiles de red de gran tamaño"
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | title": {
+    "message": "Evita cargas útiles de red de gran tamaño"
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-css.js | description": {
+    "message": "Si reduces los archivos CSS, puedes achicar el tamaño de la carga útil de la red. [Obtén más información](https://developers.google.com/web/tools/lighthouse/audits/minify-css)."
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-css.js | title": {
+    "message": "Reduce el uso de CSS"
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | description": {
+    "message": "Si reduces los archivos JavaScript, puedes achicar el tamaño de la carga útil y el tiempo de análisis de secuencias de comandos. [Obtén más información](https://developers.google.com/speed/docs/insights/MinifyResources)."
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | title": {
+    "message": "Reducir el uso de JavaScript"
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | description": {
+    "message": "Quita las reglas inactivas de las hojas de estilo y retrasa la carga de secuencias CSS que no se utilicen para el contenido de la mitad superior de la página. Así, se reducirán los bytes que consume innecesariamente la actividad de red. [Obtén más información](https://developers.google.com/web/tools/lighthouse/audits/unused-css)."
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | title": {
+    "message": "Quita los recursos CSS que no se usen"
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-javascript.js | description": {
+    "message": "Quita el contenido JavaScript sin usar para reducir la cantidad de bytes que consume la actividad de red."
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-javascript.js | title": {
+    "message": "Quita el código JavaScript sin usar"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | description": {
+    "message": "La duración en caché por un período prolongado puede acelerar la carga de la página cuando el usuario la visita de manera repetida. [Obtén más información](https://developers.google.com/web/tools/lighthouse/audits/cache-policy)."
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | displayValue": {
+    "message": "{itemCount,plural, =1{Se encontró 1 recurso}other{Se encontraron # recursos}}"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | failureTitle": {
+    "message": "Publica elementos estáticos con una política de caché eficaz"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | title": {
+    "message": "Usa una política de caché eficaz en recursos estáticos"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | description": {
+    "message": "Las imágenes optimizadas se cargan más rápido y consumen menos datos móviles. [Obtén más información](https://developers.google.com/web/tools/lighthouse/audits/optimize-images)."
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | title": {
+    "message": "Codifica las imágenes de forma eficaz"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | description": {
+    "message": "Muestra imágenes con un tamaño adecuado para ahorrar datos móviles y reducir el tiempo de carga. [Obtén más información](https://developers.google.com/web/tools/lighthouse/audits/oversized-images)."
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | title": {
+    "message": "Usa un tamaño adecuado para las imágenes"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | description": {
+    "message": "Los recursos basados en texto se deberían publicar comprimidos (gzip, deflate o brotli) para minimizar el total de bytes de la red. [Obtén más información](https://developers.google.com/web/tools/lighthouse/audits/text-compression)."
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | title": {
+    "message": "Habilita la compresión de texto"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | description": {
+    "message": "Los formatos como JPEG 2000, JPEG XR y WebP suelen comprimir mejor las imágenes que los formatos PNG o JPEG, lo que hace que se descarguen más rápido y consuman menos datos. [Obtén más información](https://developers.google.com/web/tools/lighthouse/audits/webp)."
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | title": {
+    "message": "Publica imágenes con formatos de próxima generación"
+  },
+  "lighthouse-core/audits/content-width.js | description": {
+    "message": "Si el ancho del contenido de tu app no coincide con el de la vista del puerto, es posible que la app no esté optimizada para pantallas de dispositivos móviles. [Obtén más información](https://developers.google.com/web/tools/lighthouse/audits/content-sized-correctly-for-viewport)."
+  },
+  "lighthouse-core/audits/content-width.js | explanation": {
+    "message": "El tamaño de la vista del puerto de {innerWidth} px no coincide con el tamaño de la ventana de {outerWidth} px."
+  },
+  "lighthouse-core/audits/content-width.js | failureTitle": {
+    "message": "El contenido no tiene el tamaño correcto para la vista del puerto"
+  },
+  "lighthouse-core/audits/content-width.js | title": {
+    "message": "El contenido tiene el tamaño correcto para la vista del puerto"
+  },
+  "lighthouse-core/audits/critical-request-chains.js | description": {
+    "message": "Las cadenas de solicitudes críticas que se muestran a continuación indican qué recursos son de alta prioridad en la carga. Te recomendamos que reduzcas la longitud de las cadenas, disminuyas el tamaño de los recursos para la descarga o postergues la descarga de recursos innecesarios para mejorar la carga de la página. [Obtén más información](https://developers.google.com/web/tools/lighthouse/audits/critical-request-chains)."
+  },
+  "lighthouse-core/audits/critical-request-chains.js | displayValue": {
+    "message": "{itemCount,plural, =1{Se encontró 1 cadena}other{Se encontraron # cadenas}}"
+  },
+  "lighthouse-core/audits/critical-request-chains.js | title": {
+    "message": "Minimiza la profundidad de las solicitudes críticas"
+  },
+  "lighthouse-core/audits/deprecations.js | columnDeprecate": {
+    "message": "Baja/advertencia"
+  },
+  "lighthouse-core/audits/deprecations.js | columnLine": {
+    "message": "Línea"
+  },
+  "lighthouse-core/audits/deprecations.js | description": {
+    "message": "Con el tiempo, se quitarán las API obsoletas del navegador. [Obtén más información](https://web.dev/deprecations)."
+  },
+  "lighthouse-core/audits/deprecations.js | displayValue": {
+    "message": "{itemCount,plural, =1{Se encontró 1 advertencia}other{Se encontraron # advertencias}}"
+  },
+  "lighthouse-core/audits/deprecations.js | failureTitle": {
+    "message": "Usa API obsoletas"
+  },
+  "lighthouse-core/audits/deprecations.js | title": {
+    "message": "Evita las API obsoletas"
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | description": {
+    "message": "La caché de aplicaciones es obsoleta. [Obtén más información](https://web.dev/appcache-manifest)."
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | displayValue": {
+    "message": "Se encontró \"{AppCacheManifest}\""
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | failureTitle": {
+    "message": "Usa la caché de aplicaciones"
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | title": {
+    "message": "Evita la caché de aplicaciones"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | description": {
+    "message": "Especificar un DOCTYPE evita que el navegador cambie al modo no estándar. [Obtén más información](https://web.dev/doctype)."
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationBadDoctype": {
+    "message": "El nombre de DOCTYPE debe ser la cadena en minúsculas `html`"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationNoDoctype": {
+    "message": "El documento debe contener un DOCTYPE"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationPublicId": {
+    "message": "Se esperaba que publicId fuera una string vacía"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationSystemId": {
+    "message": "Se esperaba que systemId fuera una string vacía"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | failureTitle": {
+    "message": "La página no tiene el DOCKTYPE de HTML; por lo tanto, activa el modo no estándar"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | title": {
+    "message": "La página tiene el DOCTYPE de HTML"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | columnElement": {
+    "message": "Elemento"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | columnStatistic": {
+    "message": "Estadística"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | columnValue": {
+    "message": "Valor"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | description": {
+    "message": "Los desarrolladores de navegadores recomiendan que las páginas contengan menos de alrededor de 1500 elementos de DOM. Lo ideal es que la profundidad del árbol sea inferior a 32 elementos, con 60 elementos secundarios por elemento principal como máximo. Los DOM de gran tamaño pueden aumentar el uso de la memoria, hacer que los [cálculos de estilos](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations) tarden más y generar costosos [reprocesamientos del diseño](https://developers.google.com/speed/articles/reflow). [Obtén más información](https://web.dev/dom-size)."
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 elemento}other{# elementos}}"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | failureTitle": {
+    "message": "Evita un tamaño excesivo de DOM"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | statisticDOMDepth": {
+    "message": "Profundidad máxima de DOM"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | statisticDOMElements": {
+    "message": "Total de elementos DOM"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | statisticDOMWidth": {
+    "message": "Número máximo de elementos secundarios"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | title": {
+    "message": "Evita un tamaño excesivo de DOM"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | columnRel": {
+    "message": "Rel"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | columnTarget": {
+    "message": "Objetivo"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | description": {
+    "message": "Agrega `rel=\"noopener\"` o `rel=\"noreferrer\"` a cualquier vínculo externo para mejorar el rendimiento y evitar vulnerabilidades de seguridad. [Obtén más información](https://web.dev/external-anchors-use-rel-noopener)."
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | failureTitle": {
+    "message": "Los vínculos a destinos con orígenes cruzados no son seguros"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | title": {
+    "message": "Los vínculos a destinos con orígenes cruzados son seguros"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | warning": {
+    "message": "No se puede determinar el destino de anclaje ({anchorHTML}). Si no se usa como hipervínculo, te recomendamos quitar target=_blank."
+  },
+  "lighthouse-core/audits/dobetterweb/geolocation-on-start.js | description": {
+    "message": "Los sitios que solicitan a los usuarios su ubicación sin contexto los confunden o los hacen desconfiar. Te recomendamos vincular la solicitud a una acción del usuario. [Obtén más información](https://web.dev/geolocation-on-start)."
+  },
+  "lighthouse-core/audits/dobetterweb/geolocation-on-start.js | failureTitle": {
+    "message": "Solicita el permiso de ubicación geográfica al cargar la página"
+  },
+  "lighthouse-core/audits/dobetterweb/geolocation-on-start.js | title": {
+    "message": "Evita solicitar el permiso de ubicación geográfica al cargar la página"
+  },
+  "lighthouse-core/audits/dobetterweb/js-libraries.js | columnVersion": {
+    "message": "Versión"
+  },
+  "lighthouse-core/audits/dobetterweb/js-libraries.js | description": {
+    "message": "Se detectaron todas las bibliotecas JavaScript de frontend de la página. [Obtén más información](https://web.dev/js-libraries)."
+  },
+  "lighthouse-core/audits/dobetterweb/js-libraries.js | title": {
+    "message": "Se detectaron bibliotecas JavaScript"
+  },
+  "lighthouse-core/audits/dobetterweb/no-document-write.js | description": {
+    "message": "En el caso de usuarios con una conexión lenta, las secuencias de comandos externas que se incorporan dinámicamente a través de`document.write()` pueden demorar la carga de la página decenas de segundos. [Obtén más información](https://web.dev/no-document-write)."
+  },
+  "lighthouse-core/audits/dobetterweb/no-document-write.js | failureTitle": {
+    "message": "Usa `document.write()`"
+  },
+  "lighthouse-core/audits/dobetterweb/no-document-write.js | title": {
+    "message": "No usa `document.write()`"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | columnSeverity": {
+    "message": "Gravedad más alta"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | columnVersion": {
+    "message": "Versión de la biblioteca"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | columnVuln": {
+    "message": "Recuento de vulnerabilidades"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | description": {
+    "message": "Es posible que algunas secuencias de comandos de terceros contengan vulnerabilidades de seguridad conocidas que los atacantes pueden identificar y aprovechar fácilmente. [Obtén más información](https://web.dev/no-vulnerable-libraries)."
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | displayValue": {
+    "message": "{itemCount,plural, =1{Se detectó una vulnerabilidad}other{Se detectaron # vulnerabilidades}}"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | failureTitle": {
+    "message": "Incluye bibliotecas JavaScript de frontend con vulnerabilidades de seguridad conocidas"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | rowSeverityHigh": {
+    "message": "Alta"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | rowSeverityLow": {
+    "message": "Baja"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | rowSeverityMedium": {
+    "message": "Media"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | title": {
+    "message": "Evita las bibliotecas JavaScript de frontend con vulnerabilidades de seguridad conocidas"
+  },
+  "lighthouse-core/audits/dobetterweb/notification-on-start.js | description": {
+    "message": "Los sitios que solicitan a los usuarios permiso para enviar notificaciones sin contexto los confunden o los hacen desconfiar. Te recomendamos vincular la solicitud a los gestos del usuario. [Obtén más información](https://web.dev/notification-on-start)."
+  },
+  "lighthouse-core/audits/dobetterweb/notification-on-start.js | failureTitle": {
+    "message": "Solicita el permiso de notificaciones al cargar la página"
+  },
+  "lighthouse-core/audits/dobetterweb/notification-on-start.js | title": {
+    "message": "Evita solicitar el permiso de notificaciones al cargar la página"
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | columnFailingElem": {
+    "message": "Elementos con errores"
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | description": {
+    "message": "Evitar el pegado de contraseñas debilita las buenas políticas de seguridad. [Obtén más información](https://web.dev/password-inputs-can-be-pasted-into)."
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | failureTitle": {
+    "message": "Evita que los usuarios peguen contenido en los campos de contraseña"
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | title": {
+    "message": "Permite que los usuarios peguen contenido en los campos de contraseña"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | columnProtocol": {
+    "message": "Protocolo"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | description": {
+    "message": "HTTP/2 ofrece más beneficios que HTTP/1.1, como los encabezados binarios, el multiplexado y los mensajes push del servidor. [Obtén más información](https://web.dev/uses-http2)."
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 solicitud no se entregó mediante HTTP/2}other{# solicitudes no se entregaron mediante HTTP/2}}"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | failureTitle": {
+    "message": "No usa HTTP/2 para todos los recursos propios"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | title": {
+    "message": "Usa HTTP/2 para sus propios recursos"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-passive-event-listeners.js | description": {
+    "message": "Puedes marcar tus objetos de escucha de eventos táctiles y de la rueda del mouse como `passive` para mejorar el rendimiento de desplazamiento de tu página. [Obtén más información](https://web.dev/uses-passive-event-listeners)."
+  },
+  "lighthouse-core/audits/dobetterweb/uses-passive-event-listeners.js | failureTitle": {
+    "message": "No usa objetos de escucha pasivos para mejorar el rendimiento del desplazamiento"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-passive-event-listeners.js | title": {
+    "message": "Usa objetos de escucha pasivos para mejorar el rendimiento del desplazamiento"
+  },
+  "lighthouse-core/audits/errors-in-console.js | columnDesc": {
+    "message": "Descripción"
+  },
+  "lighthouse-core/audits/errors-in-console.js | description": {
+    "message": "Los errores registrados en la consola indican la existencia de problemas no resueltos. Es posible que se deban a fallos en solicitudes de red y otros problemas del navegador. [Obtén más información](https://web.dev/errors-in-console)."
+  },
+  "lighthouse-core/audits/errors-in-console.js | failureTitle": {
+    "message": "Se registraron errores del navegador en la consola"
+  },
+  "lighthouse-core/audits/errors-in-console.js | title": {
+    "message": "No se registraron errores del navegador en la consola"
+  },
+  "lighthouse-core/audits/font-display.js | description": {
+    "message": "Utiliza la función font-display de CSS a fin de que los usuarios vean el texto mientras se carga la fuente para sitios web. [Obtén más información](https://developers.google.com/web/updates/2016/02/font-display)."
+  },
+  "lighthouse-core/audits/font-display.js | failureTitle": {
+    "message": "Asegúrate de que el texto permanezca visible mientras se carga la fuente web"
+  },
+  "lighthouse-core/audits/font-display.js | title": {
+    "message": "Todo el texto permanece visible mientras se carga la fuente para sitios web"
+  },
+  "lighthouse-core/audits/font-display.js | undeclaredFontURLWarning": {
+    "message": "Lighthouse no pudo comprobar automáticamente el valor de font-display para la siguiente URL: {fontURL}."
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | columnActual": {
+    "message": "Relación de aspecto (real)"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | columnDisplayed": {
+    "message": "Relación de aspecto (visualizada)"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | description": {
+    "message": "Las dimensiones de visualización de las imágenes deben coincidir con la relación de aspecto natural. [Obtén más información](https://web.dev/image-aspect-ratio)."
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | failureTitle": {
+    "message": "Muestra imágenes con una relación de aspecto incorrecta"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | title": {
+    "message": "Muestra imágenes con una relación de aspecto correcta"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | warningCompute": {
+    "message": "La información sobre el tamaño de la imagen no es válida {url}"
+  },
+  "lighthouse-core/audits/installable-manifest.js | description": {
+    "message": "Los navegadores pueden solicitarles a los usuarios de forma proactiva que agreguen tu app a la pantalla principal, lo que puede conllevar un mayor compromiso. [Obtén más información](https://developers.google.com/web/tools/lighthouse/audits/install-prompt)."
+  },
+  "lighthouse-core/audits/installable-manifest.js | failureTitle": {
+    "message": "El manifiesto de la aplicación web no cumple los requisitos de instalación"
+  },
+  "lighthouse-core/audits/installable-manifest.js | title": {
+    "message": "El manifiesto de la aplicación web cumple los requisitos de instalación"
+  },
+  "lighthouse-core/audits/is-on-https.js | columnInsecureURL": {
+    "message": "URL no segura"
+  },
+  "lighthouse-core/audits/is-on-https.js | description": {
+    "message": "Todos los sitios deben estar protegidos con el protocolo HTTPS, incluso aquellos que no controlan datos sensibles. Este protocolo evita que intrusos manipulen o escuchen de forma pasiva las comunicaciones entre tu app y los usuarios. Además, HTTPS es un requisito del protocolo HTTP/2 y muchas API nuevas de Web Platform. [Obtén más información](https://web.dev/is-on-https)."
+  },
+  "lighthouse-core/audits/is-on-https.js | displayValue": {
+    "message": "{itemCount,plural, =1{Se encontró una solicitud no segura}other{Se encontraron # solicitudes no seguras}}"
+  },
+  "lighthouse-core/audits/is-on-https.js | failureTitle": {
+    "message": "No usa HTTPS"
+  },
+  "lighthouse-core/audits/is-on-https.js | title": {
+    "message": "Usa HTTPS"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | description": {
+    "message": "Si las páginas se cargan rápidamente en las redes móviles, el usuario disfrutará de una buena experiencia. [Obtén más información](https://developers.google.com/web/tools/lighthouse/audits/fast-3g)."
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | displayValueText": {
+    "message": "Interactiva a los {timeInMs, number, seconds} s"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | displayValueTextWithOverride": {
+    "message": "Interactiva en una red móvil simulada a los {timeInMs, number, seconds} s"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | explanationLoadSlow": {
+    "message": "Tu página es demasiado lenta y no es interactiva en menos de 10 segundos. Para obtener información sobre cómo mejorarla, accede a la sección \"Rendimiento\" para ver las oportunidades y el diagnóstico."
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | failureTitle": {
+    "message": "La página no se carga suficientemente rápido en las redes móviles"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | title": {
+    "message": "La carga de la página es lo suficientemente rápida en redes móviles"
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | columnCategory": {
+    "message": "Categoría"
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | description": {
+    "message": "Te recomendamos que reduzcas el tiempo de análisis, compilación y ejecución de JS. Para ello, puedes utilizar cargas útiles de JS más pequeñas."
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | failureTitle": {
+    "message": "Minimiza el trabajo del hilo principal"
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | title": {
+    "message": "Minimiza el trabajo del hilo principal"
+  },
+  "lighthouse-core/audits/manual/pwa-cross-browser.js | description": {
+    "message": "Para alcanzar la mayor cantidad de usuarios, los sitios deben poder funcionar en todos los navegadores principales. [Obtén más información](https://developers.google.com/web/progressive-web-apps/checklist#site-works-cross-browser)."
+  },
+  "lighthouse-core/audits/manual/pwa-cross-browser.js | title": {
+    "message": "El sitio funciona en diferentes navegadores"
+  },
+  "lighthouse-core/audits/manual/pwa-each-page-has-url.js | description": {
+    "message": "Garantiza que las páginas individuales puedan vincularse directamente a través de la URL y que las URL sean únicas para que se puedan compartir en redes sociales. [Obtén más información](https://developers.google.com/web/progressive-web-apps/checklist#each-page-has-a-url)."
+  },
+  "lighthouse-core/audits/manual/pwa-each-page-has-url.js | title": {
+    "message": "Cada página tiene una URL"
+  },
+  "lighthouse-core/audits/manual/pwa-page-transitions.js | description": {
+    "message": "Una clave del rendimiento percibido es la agilidad de las transiciones cuando presionas diferentes teclas, incluso con conexiones de red lentas. [Obtén más información](https://developers.google.com/web/progressive-web-apps/checklist#page-transitions-dont-feel-like-they-block-on-the-network)."
+  },
+  "lighthouse-core/audits/manual/pwa-page-transitions.js | title": {
+    "message": "No parece que se bloqueen las transiciones de la página en la red"
+  },
+  "lighthouse-core/audits/metrics/estimated-input-latency.js | description": {
+    "message": "La latencia de entrada estimada es el tiempo aproximado, en milisegundos, que tarda tu app en responder a las acciones de los usuarios durante el periodo de 5 s más activo de carga de la página. Si la latencia es superior a 50 ms, es posible que los usuarios piensen que tu app es lenta. [Obtén más información](https://developers.google.com/web/tools/lighthouse/audits/estimated-input-latency)."
+  },
+  "lighthouse-core/audits/metrics/estimated-input-latency.js | title": {
+    "message": "Latencia de entrada estimada"
+  },
+  "lighthouse-core/audits/metrics/first-contentful-paint.js | description": {
+    "message": "El primer procesamiento de imagen con contenido indica el momento en el que se visualiza en la pantalla el primer texto o imagen. [Obtén más información](https://developers.google.com/web/tools/lighthouse/audits/first-contentful-paint)."
+  },
+  "lighthouse-core/audits/metrics/first-contentful-paint.js | title": {
+    "message": "Primer procesamiento de imagen con contenido"
+  },
+  "lighthouse-core/audits/metrics/first-cpu-idle.js | description": {
+    "message": "La métrica primer estado inactivo de la CPU indica la primera vez que el subproceso principal de la página está lo suficientemente inactivo para recibir entradas del usuario. [Obtén más información](https://developers.google.com/web/tools/lighthouse/audits/first-interactive)."
+  },
+  "lighthouse-core/audits/metrics/first-cpu-idle.js | title": {
+    "message": "Primer tiempo inactivo de la CPU"
+  },
+  "lighthouse-core/audits/metrics/first-meaningful-paint.js | description": {
+    "message": "La primera pintura significativa mide el momento en que se muestra el contenido principal de la página. [Obtén más información](https://developers.google.com/web/tools/lighthouse/audits/first-meaningful-paint)."
+  },
+  "lighthouse-core/audits/metrics/first-meaningful-paint.js | title": {
+    "message": "Primera pintura significativa"
+  },
+  "lighthouse-core/audits/metrics/interactive.js | description": {
+    "message": "El tiempo de carga indica cuánto tarda una página en ser totalmente interactiva. [Obtén más información](https://developers.google.com/web/tools/lighthouse/audits/consistently-interactive)."
+  },
+  "lighthouse-core/audits/metrics/interactive.js | title": {
+    "message": "Tiempo de carga"
+  },
+  "lighthouse-core/audits/metrics/max-potential-fid.js | description": {
+    "message": "El máximo retraso de primera entrada que podrían experimentar los usuarios es la duración (en milisegundos) de la tarea más larga. [Obtén más información](https://developers.google.com/web/updates/2018/05/first-input-delay)."
+  },
+  "lighthouse-core/audits/metrics/max-potential-fid.js | title": {
+    "message": "Máximo retraso de primera entrada posible"
+  },
+  "lighthouse-core/audits/metrics/speed-index.js | description": {
+    "message": "El índice de velocidad indica la rapidez con la que se puede ver el contenido de una página. [Obtén más información](https://developers.google.com/web/tools/lighthouse/audits/speed-index)."
+  },
+  "lighthouse-core/audits/metrics/speed-index.js | title": {
+    "message": "Índice de velocidad"
+  },
+  "lighthouse-core/audits/metrics/total-blocking-time.js | description": {
+    "message": "Suma todos los períodos entre FCP y el tiempo de carga, cuando la tarea tarda más de 50 ms. El resultado se expresa en milisegundos."
+  },
+  "lighthouse-core/audits/metrics/total-blocking-time.js | title": {
+    "message": "Tiempo total de bloqueo"
+  },
+  "lighthouse-core/audits/network-rtt.js | description": {
+    "message": "Los tiempos de ida y vuelta (RTT) de la red afectan mucho el rendimiento. Los valores altos de RTT respecto de un origen son indicio de que usar servidores más cercanos al usuario podría mejorar el rendimiento. [Obtén más información](https://hpbn.co/primer-on-latency-and-bandwidth/)."
+  },
+  "lighthouse-core/audits/network-rtt.js | title": {
+    "message": "Tiempos de ida y vuelta de la red"
+  },
+  "lighthouse-core/audits/network-server-latency.js | description": {
+    "message": "Las latencias del servidor pueden afectar el rendimiento de la Web. Un nivel alto de latencia del servidor en un origen indica que el servidor está sobrecargado o que su rendimiento de backend es bajo. [Obtén más información](https://hpbn.co/primer-on-web-performance/#analyzing-the-resource-waterfall)."
+  },
+  "lighthouse-core/audits/network-server-latency.js | title": {
+    "message": "Latencias de backend del servidor"
+  },
+  "lighthouse-core/audits/offline-start-url.js | description": {
+    "message": "Un service worker permite que tu aplicación web sea confiable en condiciones de red impredecibles. [Obtén más información](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)."
+  },
+  "lighthouse-core/audits/offline-start-url.js | failureTitle": {
+    "message": "`start_url` no responde con un código de estado HTTP 200 cuando no hay conexión"
+  },
+  "lighthouse-core/audits/offline-start-url.js | title": {
+    "message": "`start_url` responde con un código de estado HTTP 200 cuando no hay conexión"
+  },
+  "lighthouse-core/audits/offline-start-url.js | warningCantStart": {
+    "message": "Lighthouse no pudo leer el atributo `start_url` del manifiesto. Como resultado, se consideró que el atributo `start_url` fuera la URL del documento. Mensaje de error: \"{manifestWarning}\"."
+  },
+  "lighthouse-core/audits/performance-budget.js | columnOverBudget": {
+    "message": "Superior a la estimación"
+  },
+  "lighthouse-core/audits/performance-budget.js | description": {
+    "message": "Asegúrate de que la cantidad y el tamaño de las solicitudes de red sean menores que los valores objetivo establecidos en la estimación de rendimiento. [Obtén más información](https://developers.google.com/web/tools/lighthouse/audits/budgets)."
+  },
+  "lighthouse-core/audits/performance-budget.js | requestCountOverBudget": {
+    "message": "{count,plural, =1{1 solicitud}other{# solicitudes}}"
+  },
+  "lighthouse-core/audits/performance-budget.js | title": {
+    "message": "Estimación de rendimiento"
+  },
+  "lighthouse-core/audits/redirects-http.js | description": {
+    "message": "Si ya configuraste el protocolo HTTPS, asegúrate de redireccionar todo el tráfico de HTTP a HTTPS para que todos los usuarios aprovechen las características de protección de la Web. [Obtén más información](https://developers.google.com/web/tools/lighthouse/audits/http-redirects-to-https)."
+  },
+  "lighthouse-core/audits/redirects-http.js | failureTitle": {
+    "message": "No redirecciona el tráfico HTTP a HTTPS"
+  },
+  "lighthouse-core/audits/redirects-http.js | title": {
+    "message": "Redirecciona el tráfico HTTP a HTTPS"
+  },
+  "lighthouse-core/audits/redirects.js | description": {
+    "message": "Las redirecciones provocan retrasos adicionales antes de que la página se cargue. [Obtén más información](https://developers.google.com/web/tools/lighthouse/audits/redirects)."
+  },
+  "lighthouse-core/audits/redirects.js | title": {
+    "message": "Evita que haya varias redirecciones de página"
+  },
+  "lighthouse-core/audits/resource-summary.js | description": {
+    "message": "A fin de configurar estimaciones para la cantidad y el tamaño de los recursos de la página, agrega un archivo budget.json. [Obtén más información](https://developers.google.com/web/tools/lighthouse/audits/budgets)."
+  },
+  "lighthouse-core/audits/resource-summary.js | displayValue": {
+    "message": "{requestCount,plural, =1{1 solicitud • {byteCount, number, bytes} KB}other{# solicitudes • {byteCount, number, bytes} KB}}"
+  },
+  "lighthouse-core/audits/resource-summary.js | title": {
+    "message": "Asegúrate de que la cantidad de solicitudes y los tamaños de transferencia sean reducidos"
+  },
+  "lighthouse-core/audits/seo/canonical.js | description": {
+    "message": "Los vínculos canónicos indican qué URL mostrar en los resultados de la búsqueda. [Obtén más información](https://web.dev/canonical)."
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationConflict": {
+    "message": "Varias URL en conflicto ({urlList})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationDifferentDomain": {
+    "message": "Redirige al usuario a otro dominio ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationInvalid": {
+    "message": "URL no válida ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationPointsElsewhere": {
+    "message": "Hace referencia a otra ubicación de `hreflang` ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationRelative": {
+    "message": "URL relativa ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationRoot": {
+    "message": "Apunta a la URL raíz del dominio (la página principal), en lugar de a una página de contenido equivalente"
+  },
+  "lighthouse-core/audits/seo/canonical.js | failureTitle": {
+    "message": "El documento no tiene un vínculo `rel=canonical` válido"
+  },
+  "lighthouse-core/audits/seo/canonical.js | title": {
+    "message": "El documento tiene un atributo `rel=canonical` válido"
+  },
+  "lighthouse-core/audits/seo/font-size.js | description": {
+    "message": "Las fuentes con un tamaño inferior a 12 px son demasiado pequeñas y poco legibles, lo que obliga a los visitantes que acceden con dispositivos móviles a pellizcar la pantalla para ampliarla y poder leer el texto. Intenta que más del 60% del texto de la página tenga un tamaño igual o superior a 12 px. [Obtén más información](https://web.dev/font-size)."
+  },
+  "lighthouse-core/audits/seo/font-size.js | displayValue": {
+    "message": "{decimalProportion, number, extendedPercent} del texto es legible"
+  },
+  "lighthouse-core/audits/seo/font-size.js | explanationViewport": {
+    "message": "El texto es ilegible porque no hay metaetiquetas de la vista del puerto optimizadas para pantallas de dispositivos móviles."
+  },
+  "lighthouse-core/audits/seo/font-size.js | explanationWithDisclaimer": {
+    "message": "El porcentaje {decimalProportion, number, extendedPercent} del texto es demasiado bajo (según la muestra {decimalProportionVisited, number, extendedPercent})."
+  },
+  "lighthouse-core/audits/seo/font-size.js | failureTitle": {
+    "message": "El documento no usa tamaños de fuente legibles"
+  },
+  "lighthouse-core/audits/seo/font-size.js | title": {
+    "message": "El documento usa tamaños de fuente legibles"
+  },
+  "lighthouse-core/audits/seo/hreflang.js | description": {
+    "message": "Los vínculos de hreflang indican a los motores de búsqueda qué versión de una página deben incluir en los resultados de la búsqueda para una región o un idioma determinados. [Obtén más información](https://web.dev/hreflang)."
+  },
+  "lighthouse-core/audits/seo/hreflang.js | failureTitle": {
+    "message": "El documento no tiene un atributo `hreflang` válido"
+  },
+  "lighthouse-core/audits/seo/hreflang.js | title": {
+    "message": "El documento tiene un atributo `hreflang` válido"
+  },
+  "lighthouse-core/audits/seo/http-status-code.js | description": {
+    "message": "Es posible que las páginas con códigos de estado HTTP de error no se indexen correctamente. [Obtén más información](https://web.dev/http-status-code)."
+  },
+  "lighthouse-core/audits/seo/http-status-code.js | failureTitle": {
+    "message": "El código de estado HTTP de la página no es válido"
+  },
+  "lighthouse-core/audits/seo/http-status-code.js | title": {
+    "message": "El código de estado HTTP de la página es válido"
+  },
+  "lighthouse-core/audits/seo/is-crawlable.js | description": {
+    "message": "Los motores de búsqueda no pueden incluir tus páginas en los resultados de la búsqueda si no tienen permiso para rastrearlas. [Obtén más información](https://web.dev/is-crawable)."
+  },
+  "lighthouse-core/audits/seo/is-crawlable.js | failureTitle": {
+    "message": "Se bloqueó la indexación de la página"
+  },
+  "lighthouse-core/audits/seo/is-crawlable.js | title": {
+    "message": "No se bloqueó la indexación de la página"
+  },
+  "lighthouse-core/audits/seo/link-text.js | description": {
+    "message": "El texto descriptivo de los vínculos ayuda a los motores de búsqueda a entender tu contenido. [Obtén más información](https://web.dev/link-text)."
+  },
+  "lighthouse-core/audits/seo/link-text.js | displayValue": {
+    "message": "{itemCount,plural, =1{Se encontró 1 vínculo}other{Se encontraron # vínculos}}"
+  },
+  "lighthouse-core/audits/seo/link-text.js | failureTitle": {
+    "message": "Los vínculos no tienen texto descriptivo"
+  },
+  "lighthouse-core/audits/seo/link-text.js | title": {
+    "message": "Los vínculos tienen texto descriptivo"
+  },
+  "lighthouse-core/audits/seo/manual/structured-data.js | description": {
+    "message": "Ejecuta la [Herramienta de pruebas de datos estructurados](https://search.google.com/structured-data/testing-tool/) y la herramienta [Structured Data Linter](http://linter.structured-data.org/) para validar los datos estructurados. [Obtén más información](https://web.dev/structured-data)."
+  },
+  "lighthouse-core/audits/seo/manual/structured-data.js | title": {
+    "message": "Los datos estructurados son válidos"
+  },
+  "lighthouse-core/audits/seo/meta-description.js | description": {
+    "message": "Se pueden incluir metadescripciones en los resultados de la búsqueda para resumir el contenido de la página. [Obtén más información](https://web.dev/meta-description)."
+  },
+  "lighthouse-core/audits/seo/meta-description.js | explanation": {
+    "message": "El texto de la descripción está vacío."
+  },
+  "lighthouse-core/audits/seo/meta-description.js | failureTitle": {
+    "message": "El documento no tiene una metadescripción"
+  },
+  "lighthouse-core/audits/seo/meta-description.js | title": {
+    "message": "El documento tiene una metadescripción"
+  },
+  "lighthouse-core/audits/seo/plugins.js | description": {
+    "message": "Los motores de búsqueda no pueden indexar el contenido de los complementos y muchos dispositivos limitan el uso de complementos o no los admiten. [Obtén más información](https://web.dev/plugins)."
+  },
+  "lighthouse-core/audits/seo/plugins.js | failureTitle": {
+    "message": "El documento usa complementos"
+  },
+  "lighthouse-core/audits/seo/plugins.js | title": {
+    "message": "Los documentos evitan el uso de complementos"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | description": {
+    "message": "Si el formato del archivo robots.txt no es correcto, es posible que los rastreadores no puedan interpretar cómo quieres que se rastree o indexe tu sitio web. [Obtén más información](https://web.dev/robots-txt)."
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | displayValueHttpBadCode": {
+    "message": "La solicitud de robots.txt mostró el siguiente estado de HTTP: {statusCode}"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | displayValueValidationError": {
+    "message": "{itemCount,plural, =1{Se encontró 1 error}other{Se encontraron # errores}}"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | explanation": {
+    "message": "Lighthouse no pudo descargar un archivo robots.txt"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | failureTitle": {
+    "message": "robots.txt no es válido"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | title": {
+    "message": "robots.txt es válido"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | description": {
+    "message": "Los elementos interactivos, como los botones y vínculos, deben ser suficientemente grandes (48 × 48 px) y tener alrededor el espacio necesario para que sea posible tocarlos con facilidad sin presionar otros elementos a la vez. [Obtén más información](https://web.dev/tap-targets)."
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | displayValue": {
+    "message": "El {decimalProportion, number, percent} de los elementos táctiles tiene un tamaño adecuado"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | explanationViewportMetaNotOptimized": {
+    "message": "Los elementos táctiles son demasiado pequeños porque no hay metaetiquetas de la vista del puerto optimizadas para pantallas de dispositivos móviles"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | failureTitle": {
+    "message": "El tamaño de los elementos táctiles no es el adecuado"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | overlappingTargetHeader": {
+    "message": "Elementos superpuestos"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | tapTargetHeader": {
+    "message": "Elemento táctil"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | title": {
+    "message": "El tamaño de los elementos táctiles es el adecuado"
+  },
+  "lighthouse-core/audits/service-worker.js | description": {
+    "message": "El service worker es la tecnología que te permite usar las funciones de las apps web progresivas, como el modo sin conexión, agregarlas a la pantalla principal y las notificaciones push. [Obtén más información](https://developers.google.com/web/tools/lighthouse/audits/registered-service-worker)."
+  },
+  "lighthouse-core/audits/service-worker.js | explanationBadManifest": {
+    "message": "Un service worker controla esta página, pero no se encontró ningún atributo `start_url` porque el archivo de manifiesto no es un JSON válido"
+  },
+  "lighthouse-core/audits/service-worker.js | explanationBadStartUrl": {
+    "message": "Un service worker controla esta página, pero el atributo `start_url` ({startUrl}) está fuera del rango del service worker ({scopeUrl})"
+  },
+  "lighthouse-core/audits/service-worker.js | explanationNoManifest": {
+    "message": "Un service worker controla esta página, pero no se encontró el atributo `start_url` porque no se recuperó ningún manifiesto."
+  },
+  "lighthouse-core/audits/service-worker.js | explanationOutOfScope": {
+    "message": "Este origen tiene al menos un service worker, pero la página ({pageUrl}) no está dentro del rango."
+  },
+  "lighthouse-core/audits/service-worker.js | failureTitle": {
+    "message": "No registra un service worker que controle la página y `start_url`"
+  },
+  "lighthouse-core/audits/service-worker.js | title": {
+    "message": "Registra a un service worker que controle la página y `start_url`"
+  },
+  "lighthouse-core/audits/splash-screen.js | description": {
+    "message": "Una pantalla de presentación personalizada asegura que la experiencia de los usuarios sea de calidad cuando ejecuten tu app desde sus pantallas principales. [Obtén más información](https://developers.google.com/web/tools/lighthouse/audits/custom-splash-screen)."
+  },
+  "lighthouse-core/audits/splash-screen.js | failureTitle": {
+    "message": "No se configuró para una pantalla de presentación personalizada"
+  },
+  "lighthouse-core/audits/splash-screen.js | title": {
+    "message": "Se configuró para una pantalla de presentación personalizada"
+  },
+  "lighthouse-core/audits/themed-omnibox.js | description": {
+    "message": "El color de la barra de direcciones del navegador puede adaptarse a tu sitio web. [Obtén más información](https://developers.google.com/web/tools/lighthouse/audits/address-bar)."
+  },
+  "lighthouse-core/audits/themed-omnibox.js | failureTitle": {
+    "message": "No establece el color de un tema para la barra de direcciones."
+  },
+  "lighthouse-core/audits/themed-omnibox.js | title": {
+    "message": "Establece el color de un tema para la barra de direcciones."
+  },
+  "lighthouse-core/audits/third-party-summary.js | columnBlockingTime": {
+    "message": "Tiempo de bloqueo del subproceso principal"
+  },
+  "lighthouse-core/audits/third-party-summary.js | columnThirdParty": {
+    "message": "Terceros"
+  },
+  "lighthouse-core/audits/third-party-summary.js | description": {
+    "message": "El código de terceros puede reducir en gran medida el rendimiento de carga. Limita la cantidad de proveedores externos redundantes y prueba cargar el código de terceros después de que haya finalizado la carga principal de tu página. [Obtén más información](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/loading-third-party-javascript/)."
+  },
+  "lighthouse-core/audits/third-party-summary.js | displayValue": {
+    "message": "El código de terceros bloqueó el subproceso principal por {timeInMs, number, milliseconds} ms"
+  },
+  "lighthouse-core/audits/third-party-summary.js | failureTitle": {
+    "message": "Reduce el impacto del código de terceros"
+  },
+  "lighthouse-core/audits/third-party-summary.js | title": {
+    "message": "Uso por parte de terceros"
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | description": {
+    "message": "El tiempo hasta el primer byte indica el momento en el que el servidor envía una respuesta. [Obtén más información](https://developers.google.com/web/tools/lighthouse/audits/ttfb)."
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | displayValue": {
+    "message": "El documento raíz tardó {timeInMs, number, milliseconds} ms"
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | failureTitle": {
+    "message": "Reduce los tiempos de respuesta del servidor (TTFB)"
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | title": {
+    "message": "La respuesta del servidor es lenta (TTFB)"
+  },
+  "lighthouse-core/audits/user-timings.js | columnDuration": {
+    "message": "Duración"
+  },
+  "lighthouse-core/audits/user-timings.js | columnStartTime": {
+    "message": "Hora de inicio"
+  },
+  "lighthouse-core/audits/user-timings.js | columnType": {
+    "message": "Tipo"
+  },
+  "lighthouse-core/audits/user-timings.js | description": {
+    "message": "Te recomendamos que incorpores la API de Tiempos de usuario en tu app para calcular su rendimiento real durante las principales experiencias de usuario. [Obtén más información](https://developers.google.com/web/tools/lighthouse/audits/user-timing)."
+  },
+  "lighthouse-core/audits/user-timings.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 tiempo de usuario}other{# tiempos de usuario}}"
+  },
+  "lighthouse-core/audits/user-timings.js | title": {
+    "message": "Medidas y marcas de Tiempos de usuario"
+  },
+  "lighthouse-core/audits/uses-rel-preconnect.js | crossoriginWarning": {
+    "message": "Se encontró un elemento <link> previo a la conexión para \"{securityOrigin}\", pero el navegador no lo usó. Comprueba que el atributo `crossorigin` se esté usando correctamente."
+  },
+  "lighthouse-core/audits/uses-rel-preconnect.js | description": {
+    "message": "Te recomendamos agregar sugerencias de recursos `preconnect` o `dns-prefetch` para establecer conexiones tempranas con orígenes externos importantes. [Obtén más información](https://developers.google.com/web/fundamentals/performance/resource-prioritization#preconnect)."
+  },
+  "lighthouse-core/audits/uses-rel-preconnect.js | title": {
+    "message": "Establece conexión previamente con los orígenes necesarios"
+  },
+  "lighthouse-core/audits/uses-rel-preload.js | crossoriginWarning": {
+    "message": "Se encontró un elemento <link> de precarga para \"{preloadURL}\", pero el navegador no lo usó. Comprueba que el atributo `crossorigin` se esté usando correctamente."
+  },
+  "lighthouse-core/audits/uses-rel-preload.js | description": {
+    "message": "Te recomendamos usar `<link rel=preload>` para dar prioridad a la obtención de los recursos que, en este momento, se solicitan en una instancia posterior de la carga de la página. [Obtén más información](https://developers.google.com/web/tools/lighthouse/audits/preload)."
+  },
+  "lighthouse-core/audits/uses-rel-preload.js | title": {
+    "message": "Carga previamente las solicitudes clave"
+  },
+  "lighthouse-core/audits/viewport.js | description": {
+    "message": "Agrega una etiqueta `<meta name=\"viewport\">` para optimizar la app para pantallas de dispositivos móviles. [Obtén más información](https://developers.google.com/web/tools/lighthouse/audits/has-viewport-meta-tag)."
+  },
+  "lighthouse-core/audits/viewport.js | explanationNoTag": {
+    "message": "No se encontró ninguna etiqueta `<meta name=\"viewport\">`"
+  },
+  "lighthouse-core/audits/viewport.js | failureTitle": {
+    "message": "No tiene una etiqueta `<meta name=\"viewport\">` con `width` o `initial-scale`"
+  },
+  "lighthouse-core/audits/viewport.js | title": {
+    "message": "Tiene una etiqueta `<meta name=\"viewport\">` con `width` o `initial-scale`"
+  },
+  "lighthouse-core/audits/without-javascript.js | description": {
+    "message": "Tu app debe mostrar algún contenido cuando JavaScript esté inhabilitado, aunque solo sea un aviso para informar al usuario de que es necesario activar JavaScript para usar la app. [Obtén más información](https://developers.google.com/web/tools/lighthouse/audits/no-js)."
+  },
+  "lighthouse-core/audits/without-javascript.js | explanation": {
+    "message": "El cuerpo de la página debe renderizar parte del contenido aunque sus secuencias de comandos no estén disponibles."
+  },
+  "lighthouse-core/audits/without-javascript.js | failureTitle": {
+    "message": "No se incluye contenido alternativo cuando no está disponible JavaScript"
+  },
+  "lighthouse-core/audits/without-javascript.js | title": {
+    "message": "Se incluye parte del contenido cuando no está disponible JavaScript"
+  },
+  "lighthouse-core/audits/works-offline.js | description": {
+    "message": "Si estás creando una app web progresiva, puedes usar un service worker para que la app funcione sin conexión. [Obtén más información](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)."
+  },
+  "lighthouse-core/audits/works-offline.js | failureTitle": {
+    "message": "La página actual no responde con un código de estado HTTP 200 cuando no hay conexión"
+  },
+  "lighthouse-core/audits/works-offline.js | title": {
+    "message": "La página actual responde con un código de estado HTTP 200 cuando no hay conexión"
+  },
+  "lighthouse-core/audits/works-offline.js | warningNoLoad": {
+    "message": "Es posible que la página no se esté cargando sin conexión porque se redireccionó la URL de prueba ({requested}) a \"{final}\". Prueba directamente la segunda URL."
+  },
+  "lighthouse-core/config/default-config.js | a11yAriaGroupDescription": {
+    "message": "A continuación, se indican consejos para optimizar el uso de ARIA en tu app, lo que puede mejorar la experiencia de los usuarios de tecnologías de asistencia, como los lectores de pantalla."
+  },
+  "lighthouse-core/config/default-config.js | a11yAriaGroupTitle": {
+    "message": "ARIA"
+  },
+  "lighthouse-core/config/default-config.js | a11yAudioVideoGroupDescription": {
+    "message": "Aquí tienes consejos para proporcionar contenido alternativo para audio y video. Así se puede mejorar la experiencia de los usuarios con dificultades auditivas o visuales."
+  },
+  "lighthouse-core/config/default-config.js | a11yAudioVideoGroupTitle": {
+    "message": "Audio y video"
+  },
+  "lighthouse-core/config/default-config.js | a11yBestPracticesGroupDescription": {
+    "message": "Estos elementos destacan las prácticas recomendadas de accesibilidad más habituales."
+  },
+  "lighthouse-core/config/default-config.js | a11yBestPracticesGroupTitle": {
+    "message": "Prácticas recomendadas"
+  },
+  "lighthouse-core/config/default-config.js | a11yCategoryDescription": {
+    "message": "Estas comprobaciones incluyen consejos para [mejorar la accesibilidad de tu app web](https://developers.google.com/web/fundamentals/accessibility). Solo algunos problemas de accesibilidad pueden detectarse de forma automática. Por eso, te recomendamos realizar también pruebas manuales."
+  },
+  "lighthouse-core/config/default-config.js | a11yCategoryManualDescription": {
+    "message": "Estos elementos abarcan áreas que las herramientas de prueba automáticas no contemplan. Obtén más información en nuestra guía sobre [cómo revisar los aspectos de accesibilidad](https://developers.google.com/web/fundamentals/accessibility/how-to-review)."
+  },
+  "lighthouse-core/config/default-config.js | a11yCategoryTitle": {
+    "message": "Accesibilidad"
+  },
+  "lighthouse-core/config/default-config.js | a11yColorContrastGroupDescription": {
+    "message": "A continuación, se indican consejos para facilitar la lectura del contenido."
+  },
+  "lighthouse-core/config/default-config.js | a11yColorContrastGroupTitle": {
+    "message": "Contraste"
+  },
+  "lighthouse-core/config/default-config.js | a11yLanguageGroupDescription": {
+    "message": "A continuación, se indican consejos para que los usuarios con diversas configuraciones regionales puedan interpretar mejor el contenido de las páginas."
+  },
+  "lighthouse-core/config/default-config.js | a11yLanguageGroupTitle": {
+    "message": "Internacionalización y localización"
+  },
+  "lighthouse-core/config/default-config.js | a11yNamesLabelsGroupDescription": {
+    "message": "A continuación, se indican consejos para mejorar la semántica de los controles de tu app. Estos consejos pueden mejorar la experiencia de los usuarios de tecnologías de asistencia, como los lectores de pantalla."
+  },
+  "lighthouse-core/config/default-config.js | a11yNamesLabelsGroupTitle": {
+    "message": "Nombres y etiquetas"
+  },
+  "lighthouse-core/config/default-config.js | a11yNavigationGroupDescription": {
+    "message": "Estas son oportunidades para mejorar la navegación con el teclado en tu app."
+  },
+  "lighthouse-core/config/default-config.js | a11yNavigationGroupTitle": {
+    "message": "Navegación"
+  },
+  "lighthouse-core/config/default-config.js | a11yTablesListsVideoGroupDescription": {
+    "message": "Aquí tienes consejos para mejorar la lectura de datos en tablas o listas con tecnologías de asistencia como los lectores de pantalla."
+  },
+  "lighthouse-core/config/default-config.js | a11yTablesListsVideoGroupTitle": {
+    "message": "Tablas y listas"
+  },
+  "lighthouse-core/config/default-config.js | bestPracticesCategoryTitle": {
+    "message": "Recomendaciones"
+  },
+  "lighthouse-core/config/default-config.js | budgetsGroupDescription": {
+    "message": "Las estimaciones de rendimiento establecen estándares para el rendimiento de tu sitio."
+  },
+  "lighthouse-core/config/default-config.js | budgetsGroupTitle": {
+    "message": "Estimaciones"
+  },
+  "lighthouse-core/config/default-config.js | diagnosticsGroupDescription": {
+    "message": "Obtén más información sobre el rendimiento de tu app. Estos números no [afectan directamente](https://github.com/GoogleChrome/lighthouse/blob/d2ec9ffbb21de9ad1a0f86ed24575eda32c796f0/docs/scoring.md#how-are-the-scores-weighted) la medición del rendimiento."
+  },
+  "lighthouse-core/config/default-config.js | diagnosticsGroupTitle": {
+    "message": "Diagnóstico"
+  },
+  "lighthouse-core/config/default-config.js | firstPaintImprovementsGroupDescription": {
+    "message": "El aspecto más importante del rendimiento es la rapidez con la que se renderizan los píxeles en la pantalla. Métricas clave: primer procesamiento de imagen con contenido, primera pintura significativa"
+  },
+  "lighthouse-core/config/default-config.js | firstPaintImprovementsGroupTitle": {
+    "message": "Mejoras del primer procesamiento de imagen"
+  },
+  "lighthouse-core/config/default-config.js | loadOpportunitiesGroupDescription": {
+    "message": "Estas sugerencias pueden hacer que tus páginas se carguen más rápido. No [afectan directamente](https://github.com/GoogleChrome/lighthouse/blob/d2ec9ffbb21de9ad1a0f86ed24575eda32c796f0/docs/scoring.md#how-are-the-scores-weighted) la medición del rendimiento."
+  },
+  "lighthouse-core/config/default-config.js | loadOpportunitiesGroupTitle": {
+    "message": "Oportunidades"
+  },
+  "lighthouse-core/config/default-config.js | metricGroupTitle": {
+    "message": "Métricas"
+  },
+  "lighthouse-core/config/default-config.js | overallImprovementsGroupDescription": {
+    "message": "Mejora la experiencia de carga general para que la página responda bien y se pueda usar lo antes posible. Métricas clave: Tiempo de carga, Índice de velocidad"
+  },
+  "lighthouse-core/config/default-config.js | overallImprovementsGroupTitle": {
+    "message": "Mejoras generales"
+  },
+  "lighthouse-core/config/default-config.js | performanceCategoryTitle": {
+    "message": "Rendimiento"
+  },
+  "lighthouse-core/config/default-config.js | pwaCategoryDescription": {
+    "message": "Estas comprobaciones se centran en diferentes aspectos de las apps web progresivas. [Obtén más información](https://developers.google.com/web/progressive-web-apps/checklist)."
+  },
+  "lighthouse-core/config/default-config.js | pwaCategoryManualDescription": {
+    "message": "Estas comprobaciones son necesarias según el modelo de referencia [Lista de tareas para AWP](https://developers.google.com/web/progressive-web-apps/checklist), pero Lighthouse no las verifica automáticamente. Es importante que las verifiques a mano (aunque no afectan a la puntuación)."
+  },
+  "lighthouse-core/config/default-config.js | pwaCategoryTitle": {
+    "message": "App web progresiva"
+  },
+  "lighthouse-core/config/default-config.js | pwaFastReliableGroupTitle": {
+    "message": "Rápida y confiable"
+  },
+  "lighthouse-core/config/default-config.js | pwaInstallableGroupTitle": {
+    "message": "Instalable"
+  },
+  "lighthouse-core/config/default-config.js | pwaOptimizedGroupTitle": {
+    "message": "Optimizado para PWA"
+  },
+  "lighthouse-core/config/default-config.js | seoCategoryDescription": {
+    "message": "Estas comprobaciones aseguran que tu página esté optimizada para posicionarse bien en los resultados de los motores de búsqueda. Hay otros factores que Lighthouse no comprueba y que pueden afectar tu posicionamiento en los buscadores. [Obtén más información](https://support.google.com/webmasters/answer/35769)."
+  },
+  "lighthouse-core/config/default-config.js | seoCategoryManualDescription": {
+    "message": "Ejecuta estos validadores adicionales en tu sitio web para comprobar más prácticas recomendadas de SEO."
+  },
+  "lighthouse-core/config/default-config.js | seoCategoryTitle": {
+    "message": "SEO"
+  },
+  "lighthouse-core/config/default-config.js | seoContentGroupDescription": {
+    "message": "Edita el código HTML de tu página web de forma que los rastreadores puedan entender mejor el contenido de tu app."
+  },
+  "lighthouse-core/config/default-config.js | seoContentGroupTitle": {
+    "message": "Prácticas recomendadas para el contenido"
+  },
+  "lighthouse-core/config/default-config.js | seoCrawlingGroupDescription": {
+    "message": "Para aparecer en los resultados de búsqueda, los rastreadores necesitan acceso a tu app."
+  },
+  "lighthouse-core/config/default-config.js | seoCrawlingGroupTitle": {
+    "message": "Rastreo e indexación"
+  },
+  "lighthouse-core/config/default-config.js | seoMobileGroupDescription": {
+    "message": "Asegúrate de que tus páginas estén optimizadas para dispositivos móviles a fin de que los usuarios no tengan que pellizcar ni hacer zoom para leer las páginas de contenido. [Obtén más información](https://developers.google.com/search/mobile-sites/)."
+  },
+  "lighthouse-core/config/default-config.js | seoMobileGroupTitle": {
+    "message": "Optimizada para dispositivos móviles"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnCacheTTL": {
+    "message": "TTL en caché"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnLocation": {
+    "message": "Ubicación"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnName": {
+    "message": "Nombre"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnRequests": {
+    "message": "Solicitudes"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnResourceType": {
+    "message": "Tipo de recurso"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnSize": {
+    "message": "Tamaño"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnTimeSpent": {
+    "message": "Tiempo de uso"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnTransferSize": {
+    "message": "Tamaño de transferencia"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnURL": {
+    "message": "URL"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnWastedBytes": {
+    "message": "Ahorros posibles"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnWastedMs": {
+    "message": "Ahorros posibles"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | displayValueByteSavings": {
+    "message": "Ahorro posible de {wastedBytes, number, bytes} KB"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | displayValueMsSavings": {
+    "message": "Ahorro posible en {wastedMs, number, milliseconds} ms"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | documentResourceType": {
+    "message": "Documento"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | fontResourceType": {
+    "message": "Fuente"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | imageResourceType": {
+    "message": "Imagen"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | mediaResourceType": {
+    "message": "Contenido multimedia"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | ms": {
+    "message": "{timeInMs, number, milliseconds} ms"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | otherResourceType": {
+    "message": "Otro"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | scriptResourceType": {
+    "message": "Secuencia de comandos"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | seconds": {
+    "message": "{timeInMs, number, seconds} s"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | stylesheetResourceType": {
+    "message": "Hoja de estilo"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | thirdPartyResourceType": {
+    "message": "Terceros"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | totalResourceType": {
+    "message": "Total"
+  },
+  "lighthouse-core/lib/lh-error.js | badTraceRecording": {
+    "message": "Se produjo un error de registro de seguimiento durante la carga de la página. Vuelve a ejecutar Lighthouse. ({errorCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | criTimeout": {
+    "message": "Se agotó el tiempo de espera de la conexión inicial del protocolo del depurador."
+  },
+  "lighthouse-core/lib/lh-error.js | didntCollectScreenshots": {
+    "message": "Chrome no recopiló ninguna captura de pantalla al cargar la página. Comprueba que haya contenido visible en la página y vuelve a ejecutar Lighthouse. ({errorCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | dnsFailure": {
+    "message": "Los servidores DNS no pudieron resolver el dominio proporcionado."
+  },
+  "lighthouse-core/lib/lh-error.js | erroredRequiredArtifact": {
+    "message": "El recopilador {artifactName} obligatorio encontró un error: {errorMessage}"
+  },
+  "lighthouse-core/lib/lh-error.js | internalChromeError": {
+    "message": "Se produjo un error interno de Chrome. Reinicia Chrome y vuelve a ejecutar Lighthouse."
+  },
+  "lighthouse-core/lib/lh-error.js | missingRequiredArtifact": {
+    "message": "No se ejecutó el recopilador necesario para {artifactName}."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailed": {
+    "message": "Lighthouse no pudo cargar correctamente la página que solicitaste. Comprueba que estás probando la URL correcta y que el servidor responde correctamente a todas las solicitudes."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedHung": {
+    "message": "Lighthouse no pudo cargar correctamente la URL que solicitaste porque la página dejó de responder."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedInsecure": {
+    "message": "La URL que proporcionaste no tiene un certificado de seguridad válido. {securityMessages}"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedInterstitial": {
+    "message": "Chrome evitó la carga de la página y mostró una pantalla intersticial. Verifica que estés probando la URL correcta y que el servidor responda adecuadamente a todas las solicitudes."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedWithDetails": {
+    "message": "Lighthouse no pudo cargar correctamente la página que solicitaste. Verifica que estés probando la URL correcta y que el servidor responda adecuadamente a todas las solicitudes. (Detalles: {errorDetails})"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedWithStatusCode": {
+    "message": "Lighthouse no pudo cargar correctamente la página que solicitaste. Verifica que estés probando la URL correcta y que el servidor responda adecuadamente a todas las solicitudes. (Código de estado: {statusCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadTookTooLong": {
+    "message": "La página tardó demasiado en cargarse. Sigue los consejos del informe para reducir el tiempo de carga de la página y vuelve a ejecutar Lighthouse. ({errorCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | protocolTimeout": {
+    "message": "Se superó el tiempo asignado para la respuesta de protocolo de DevTools. (Método: {protocolMethod})"
+  },
+  "lighthouse-core/lib/lh-error.js | requestContentTimeout": {
+    "message": "Se superó el tiempo asignado para obtener el contenido de los recursos"
+  },
+  "lighthouse-core/lib/lh-error.js | urlInvalid": {
+    "message": "Al parecer, la URL que proporcionaste no es válida."
+  },
+  "lighthouse-core/report/html/renderer/util.js | auditGroupExpandTooltip": {
+    "message": "Mostrar auditorías"
+  },
+  "lighthouse-core/report/html/renderer/util.js | crcInitialNavigation": {
+    "message": "Navegación inicial"
+  },
+  "lighthouse-core/report/html/renderer/util.js | crcLongestDurationLabel": {
+    "message": "Latencia de ruta crítica máxima:"
+  },
+  "lighthouse-core/report/html/renderer/util.js | errorLabel": {
+    "message": "Error"
+  },
+  "lighthouse-core/report/html/renderer/util.js | errorMissingAuditInfo": {
+    "message": "Error del informe: No hay información de la auditoría"
+  },
+  "lighthouse-core/report/html/renderer/util.js | labDataTitle": {
+    "message": "Datos de prueba"
+  },
+  "lighthouse-core/report/html/renderer/util.js | lsPerformanceCategoryDescription": {
+    "message": "Análisis de [Lighthouse](https://developers.google.com/web/tools/lighthouse/) de la página actual en una red móvil emulada. Los valores son estimados y pueden variar."
+  },
+  "lighthouse-core/report/html/renderer/util.js | manualAuditsGroupTitle": {
+    "message": "Elementos adicionales que se deben comprobar manualmente"
+  },
+  "lighthouse-core/report/html/renderer/util.js | notApplicableAuditsGroupTitle": {
+    "message": "No aplicable"
+  },
+  "lighthouse-core/report/html/renderer/util.js | opportunityResourceColumnLabel": {
+    "message": "Oportunidad"
+  },
+  "lighthouse-core/report/html/renderer/util.js | opportunitySavingsColumnLabel": {
+    "message": "Ahorro estimado"
+  },
+  "lighthouse-core/report/html/renderer/util.js | passedAuditsGroupTitle": {
+    "message": "Auditorías aprobadas"
+  },
+  "lighthouse-core/report/html/renderer/util.js | snippetCollapseButtonLabel": {
+    "message": "Contraer fragmento"
+  },
+  "lighthouse-core/report/html/renderer/util.js | snippetExpandButtonLabel": {
+    "message": "Expandir fragmento"
+  },
+  "lighthouse-core/report/html/renderer/util.js | thirdPartyResourcesLabel": {
+    "message": "Mostrar recursos de terceros"
+  },
+  "lighthouse-core/report/html/renderer/util.js | toplevelWarningsMessage": {
+    "message": "Algunos problemas afectaron la ejecución de Lighthouse:"
+  },
+  "lighthouse-core/report/html/renderer/util.js | varianceDisclaimer": {
+    "message": "Los valores son estimados y pueden variar. La medición del rendimiento se [basa solo en estas métricas](https://github.com/GoogleChrome/lighthouse/blob/d2ec9ffbb21de9ad1a0f86ed24575eda32c796f0/docs/scoring.md#how-are-the-scores-weighted)."
+  },
+  "lighthouse-core/report/html/renderer/util.js | warningAuditsGroupTitle": {
+    "message": "Auditorías aprobadas con advertencias"
+  },
+  "lighthouse-core/report/html/renderer/util.js | warningHeader": {
+    "message": "Advertencias: "
+  },
+  "stack-packs/packs/wordpress.js | efficient_animated_content": {
+    "message": "Puedes subir tu GIF a un servicio que permita insertarlo como un video HTML5."
+  },
+  "stack-packs/packs/wordpress.js | offscreen_images": {
+    "message": "Instala un [complemento de carga diferida de WordPress](https://wordpress.org/plugins/search/lazy+load/) con la capacidad de postergar las imágenes fuera de pantalla o bien cambia a un tema que incluya esa función. También puedes usar [el complemento AMP](https://wordpress.org/plugins/amp/)."
+  },
+  "stack-packs/packs/wordpress.js | render_blocking_resources": {
+    "message": "Existen varios complementos de WordPress que pueden ayudarte a [insertar elementos fundamentales](https://wordpress.org/plugins/search/critical+css/) o a [postergar recursos menos importantes](https://wordpress.org/plugins/search/defer+css+javascript/). Ten en cuenta que las optimizaciones que ofrecen estos complementos pueden interferir con funciones de tu tema o complementos, por lo que seguramente tengas que hacer cambios en el código."
+  },
+  "stack-packs/packs/wordpress.js | time_to_first_byte": {
+    "message": "Los temas, los complementos y las especificaciones del servidor afectan al tiempo de respuesta. Puedes buscar un tema más optimizado, seleccionar un complemento de optimización o actualizar tu servidor."
+  },
+  "stack-packs/packs/wordpress.js | total_byte_weight": {
+    "message": "Puedes mostrar fragmentos en tus listas de entradas (por ejemplo, mediante la etiqueta \"<more>\"), reducir la cantidad de entradas que se muestran en cada página, dividir tus entradas más largas en múltiples páginas o usar un complemento para postergar la carga de los comentarios."
+  },
+  "stack-packs/packs/wordpress.js | unminified_css": {
+    "message": "Hay varios [complementos de WordPress](https://wordpress.org/plugins/search/minify+css/) que pueden concatenar, reducir y comprimir los estilos para acelerar tu sitio web. Te recomendamos que, si es posible, uses un proceso de compilación para reducir los estilos de forma anticipada."
+  },
+  "stack-packs/packs/wordpress.js | unminified_javascript": {
+    "message": "Hay varios [complementos de WordPress](https://wordpress.org/plugins/search/minify+javascript/) que pueden concatenar, reducir y comprimir las secuencias de comandos para acelerar tu sitio web. Te recomendamos que, si es posible, uses un proceso de compilación para realizar la reducción de forma anticipada."
+  },
+  "stack-packs/packs/wordpress.js | unused_css_rules": {
+    "message": "Puedes reducir o cambiar la cantidad de [complementos de WordPress](https://wordpress.org/plugins/) que cargan hojas de estilo CSS que tu página no usa. Para identificar los complementos que agregan hojas de estilo CSS innecesarias, prueba ejecutar la [cobertura de código](https://developers.google.com/web/updates/2017/04/devtools-release-notes#coverage) en DevTools de Chrome. Puedes identificar el tema o complemento concreto en la URL de la hoja de estilo. Presta atención a los complementos que tengan varias hojas de estilo en la lista con muchos elementos en rojo en la cobertura de código. Los complementos solo deberían poner en cola hojas de estilo que se usen en la página."
+  },
+  "stack-packs/packs/wordpress.js | unused_javascript": {
+    "message": "Puedes reducir o cambiar la cantidad de [complementos de WordPress](https://wordpress.org/plugins/) que cargan secuencias JavaScript que tu página no usa. Para identificar los complementos que agregan secuencias JS innecesarias, prueba ejecutar la [cobertura de código](https://developers.google.com/web/updates/2017/04/devtools-release-notes#coverage) en DevTools de Chrome. Puedes identificar el tema o complemento concreto en la URL de la secuencia de comandos. Presta atención a los complementos que tengan varias secuencias de comandos en la lista con muchos elementos en rojo en la cobertura de código. Los complementos solo deberían poner en cola secuencias de comandos que se usen en la página."
+  },
+  "stack-packs/packs/wordpress.js | uses_long_cache_ttl": {
+    "message": "Consulta información sobre el [almacenamiento en la memoria caché del navegador en WordPress](https://codex.wordpress.org/WordPress_Optimization#Browser_Caching)."
+  },
+  "stack-packs/packs/wordpress.js | uses_optimized_images": {
+    "message": "Puedes usar un [complemento de optimización de imágenes de WordPress](https://wordpress.org/plugins/search/optimize+images/) que comprima tus imágenes y conserve la calidad."
+  },
+  "stack-packs/packs/wordpress.js | uses_responsive_images": {
+    "message": "Carga imágenes directamente a través de la [biblioteca de medios](https://codex.wordpress.org/Media_Library_Screen) para garantizar que estén disponibles los tamaños de imagen requeridos y, luego, insértalas desde la biblioteca de medios, o bien usa el widget de imágenes para asegurarte de que se utilicen los tamaños de imagen óptimos (incluidos los que se emplean para interrupciones receptivas). Evita usar imágenes `Full Size`, a menos que las dimensiones sean adecuadas para su empleo. [Obtén más información](https://codex.wordpress.org/Inserting_Images_into_Posts_and_Pages#Image_Size)."
+  },
+  "stack-packs/packs/wordpress.js | uses_text_compression": {
+    "message": "Puedes habilitar la compresión de texto en la configuración de tu servidor web."
+  },
+  "stack-packs/packs/wordpress.js | uses_webp_images": {
+    "message": "Puedes utilizar un [complemento](https://wordpress.org/plugins/search/convert+webp/) o servicio que convierta automáticamente las imágenes que subas a los formatos óptimos."
+  }
+}
diff --git a/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/es.json b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/es.json
new file mode 100644
index 0000000..aa0d90d
--- /dev/null
+++ b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/es.json
@@ -0,0 +1,1541 @@
+{
+  "lighthouse-core/audits/accessibility/accesskeys.js | description": {
+    "message": "Las claves de acceso permiten a los usuarios dirigirse rápidamente a una parte concreta de la página. Para facilitar una navegación correcta, las claves de acceso deben ser únicas. [Más información](https://web.dev/accesskeys/)"
+  },
+  "lighthouse-core/audits/accessibility/accesskeys.js | failureTitle": {
+    "message": "Los valores de `[accesskey]` no son únicos"
+  },
+  "lighthouse-core/audits/accessibility/accesskeys.js | title": {
+    "message": "Los valores de `[accesskey]` son únicos"
+  },
+  "lighthouse-core/audits/accessibility/aria-allowed-attr.js | description": {
+    "message": "Cada `role` de ARIA admite un subconjunto determinado de atributos `aria-*`. Si no coinciden, los atributos `aria-*` se invalidarán. [Más información](https://web.dev/aria-allowed-attr/)"
+  },
+  "lighthouse-core/audits/accessibility/aria-allowed-attr.js | failureTitle": {
+    "message": "Los atributos `[aria-*]` no se corresponden con sus funciones"
+  },
+  "lighthouse-core/audits/accessibility/aria-allowed-attr.js | title": {
+    "message": "Los atributos `[aria-*]` coinciden con sus funciones"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-attr.js | description": {
+    "message": "Algunas funciones de ARIA incluyen atributos obligatorios que describen el estado del elemento a los lectores de pantalla. [Más información](https://web.dev/aria-required-attr/)"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-attr.js | failureTitle": {
+    "message": "Los elementos `[role]` no incluyen todos los atributos `[aria-*]` necesarios"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-attr.js | title": {
+    "message": "Todos los elementos `[role]` tienen los atributos `[aria-*]` obligatorios"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-children.js | description": {
+    "message": "Algunas funciones principales de ARIA deben contener funciones secundarias específicas para llevar a cabo las funciones de accesibilidad correspondientes. [Más información](https://web.dev/aria-required-children/)"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-children.js | failureTitle": {
+    "message": "Faltan elementos con atributos `[role]` que requieren otros atributos `[role]` secundarios específicos."
+  },
+  "lighthouse-core/audits/accessibility/aria-required-children.js | title": {
+    "message": "Se han incluido los elementos con atributos `[role]` que requieren otros atributos `[role]` secundarios específicos"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-parent.js | description": {
+    "message": "Algunas funciones secundarias de ARIA se deben incluir dentro de funciones principales concretas para poder llevar a cabo las funciones de accesibilidad correspondientes. [Más información](https://web.dev/aria-required-parent/)"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-parent.js | failureTitle": {
+    "message": "Los atributos `[role]` no están incluidos dentro de los elementos principales obligatorios"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-parent.js | title": {
+    "message": "Los atributos `[role]` están incluidos en los elementos principales correspondientes"
+  },
+  "lighthouse-core/audits/accessibility/aria-roles.js | description": {
+    "message": "Las funciones de ARIA deben tener valores válidos para realizar las funciones de accesibilidad correspondientes. [Más información](https://web.dev/aria-roles/)"
+  },
+  "lighthouse-core/audits/accessibility/aria-roles.js | failureTitle": {
+    "message": "Los valores de `[role]` no son válidos"
+  },
+  "lighthouse-core/audits/accessibility/aria-roles.js | title": {
+    "message": "Los valores de `[role]` son válidos"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr-value.js | description": {
+    "message": "Las tecnologías de asistencia, como los lectores de pantalla, no pueden interpretar los atributos ARIA cuyos valores no sean válidos. [Más información](https://web.dev/aria-valid-attr-value/)"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr-value.js | failureTitle": {
+    "message": "Los atributos `[aria-*]` no tienen valores válidos"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr-value.js | title": {
+    "message": "Los atributos `[aria-*]` tienen valores válidos"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr.js | description": {
+    "message": "Las tecnologías de asistencia, como los lectores de pantalla, no pueden interpretar los atributos ARIA con nombres no válidos. [Más información](https://web.dev/aria-valid-attr/)"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr.js | failureTitle": {
+    "message": "Los atributos `[aria-*]` no son válidos o no están bien escritos"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr.js | title": {
+    "message": "Los atributos `[aria-*]` son válidos y están bien escritos"
+  },
+  "lighthouse-core/audits/accessibility/audio-caption.js | description": {
+    "message": "Los subtítulos permiten a los usuarios sordos o con problemas auditivos utilizar elementos de audio, ya que proporcionan detalles esenciales como quién habla, qué se dice e información no verbal adicional. [Más información](https://web.dev/audio-caption/)"
+  },
+  "lighthouse-core/audits/accessibility/audio-caption.js | failureTitle": {
+    "message": "A los elementos `<audio>` les falta un elemento `<track>` con el atributo `[kind=\"captions\"]`."
+  },
+  "lighthouse-core/audits/accessibility/audio-caption.js | title": {
+    "message": "Los elementos `<audio>` contienen un elemento `<track>` con el atributo `[kind=\"captions\"]`"
+  },
+  "lighthouse-core/audits/accessibility/axe-audit.js | failingElementsHeader": {
+    "message": "Elementos con errores"
+  },
+  "lighthouse-core/audits/accessibility/button-name.js | description": {
+    "message": "Si un botón no tiene un nombre accesible, los lectores de pantalla lo leerán en voz alta como \"botón\", por lo que resultan inservibles para los usuarios que necesitan usar lectores de pantalla para navegar. [Más información](https://web.dev/button-name/)"
+  },
+  "lighthouse-core/audits/accessibility/button-name.js | failureTitle": {
+    "message": "Los botones no tienen nombres accesibles"
+  },
+  "lighthouse-core/audits/accessibility/button-name.js | title": {
+    "message": "Los botones tienen nombres accesibles"
+  },
+  "lighthouse-core/audits/accessibility/bypass.js | description": {
+    "message": "Incluir maneras de omitir el contenido repetitivo permite a los usuarios con teclado navegar por la página de forma más eficaz. [Más información](https://web.dev/bypass/)"
+  },
+  "lighthouse-core/audits/accessibility/bypass.js | failureTitle": {
+    "message": "La página no contiene ningún título, enlace de omisión ni región de punto de referencia"
+  },
+  "lighthouse-core/audits/accessibility/bypass.js | title": {
+    "message": "La página contiene un título, un enlace de omisión o una región de punto de referencia"
+  },
+  "lighthouse-core/audits/accessibility/color-contrast.js | description": {
+    "message": "Los textos con poco contraste resultan difíciles o imposibles de leer para muchos usuarios. [Más información](https://web.dev/color-contrast/)"
+  },
+  "lighthouse-core/audits/accessibility/color-contrast.js | failureTitle": {
+    "message": "Los colores de fondo y de primer plano no tienen una relación de contraste adecuada."
+  },
+  "lighthouse-core/audits/accessibility/color-contrast.js | title": {
+    "message": "Los colores de fondo y de primer plano tienen una relación de contraste adecuada"
+  },
+  "lighthouse-core/audits/accessibility/definition-list.js | description": {
+    "message": "Si las listas de definiciones no están bien marcadas, es posible que los lectores de pantalla las interpreten de forma confusa o imprecisa. [Más información](https://web.dev/definition-list/)"
+  },
+  "lighthouse-core/audits/accessibility/definition-list.js | failureTitle": {
+    "message": "Los elementos `<dl>` no contienen únicamente grupos de `<dt>` y `<dd>` o elementos `<script>` o `<template>` ordenados correctamente."
+  },
+  "lighthouse-core/audits/accessibility/definition-list.js | title": {
+    "message": "Los elementos de `<dl>` solo contienen grupos de `<dt>` y `<dd>` o elementos `<script>` o `<template>` ordenados correctamente."
+  },
+  "lighthouse-core/audits/accessibility/dlitem.js | description": {
+    "message": "Los elementos de la lista de definiciones (`<dt>` y`<dd>`) deben estar incluidos en un elemento `<dl>` principal para asegurarte de que los lectores de pantalla puedan leerlos en voz alta correctamente. [Más información](https://web.dev/dlitem/)"
+  },
+  "lighthouse-core/audits/accessibility/dlitem.js | failureTitle": {
+    "message": "Los elementos de la lista de definiciones están incluidos dentro de elementos `<dl>`"
+  },
+  "lighthouse-core/audits/accessibility/dlitem.js | title": {
+    "message": "Los elementos de la lista de definiciones están incluidos dentro de elementos `<dl>`"
+  },
+  "lighthouse-core/audits/accessibility/document-title.js | description": {
+    "message": "Los títulos proporcionan una idea general sobre la página a los usuarios de lectores de pantalla. Además, los usuarios de buscadores se basan principalmente en los títulos para determinar si una página es relevante para su búsqueda o no. [Más información](https://web.dev/document-title/)"
+  },
+  "lighthouse-core/audits/accessibility/document-title.js | failureTitle": {
+    "message": "El documento no contiene un elemento `<title>`"
+  },
+  "lighthouse-core/audits/accessibility/document-title.js | title": {
+    "message": "El documento tiene un elemento `<title>`"
+  },
+  "lighthouse-core/audits/accessibility/duplicate-id.js | description": {
+    "message": "El valor de los atributos id debe ser único para evitar que las tecnologías de asistencia omitan otras instancias. [Más información](https://web.dev/duplicate-id/)"
+  },
+  "lighthouse-core/audits/accessibility/duplicate-id.js | failureTitle": {
+    "message": "Los atributos `[id]` de la página no son únicos"
+  },
+  "lighthouse-core/audits/accessibility/duplicate-id.js | title": {
+    "message": "Los atributos `[id]` de la página son únicos"
+  },
+  "lighthouse-core/audits/accessibility/frame-title.js | description": {
+    "message": "Los usuarios de lectores de pantalla confían en que los títulos describan el contenido de los marcos. [Más información](https://web.dev/frame-title/)"
+  },
+  "lighthouse-core/audits/accessibility/frame-title.js | failureTitle": {
+    "message": "Los elementos `<frame>` o `<iframe>` no tienen título"
+  },
+  "lighthouse-core/audits/accessibility/frame-title.js | title": {
+    "message": "Los elementos `<frame>` o `<iframe>` tienen un título"
+  },
+  "lighthouse-core/audits/accessibility/html-has-lang.js | description": {
+    "message": "Si no se especifica ningún atributo de idioma en una página, el lector de pantalla asumirá que la página está en el idioma predeterminado que el usuario eligió al configurarlo. Si el idioma de la página es diferente del predeterminado, es posible que el lector de pantalla no lea correctamente el texto de la página. [Más información](https://web.dev/html-has-lang/)"
+  },
+  "lighthouse-core/audits/accessibility/html-has-lang.js | failureTitle": {
+    "message": "El elemento `<html>` no tiene un atributo `[lang]`"
+  },
+  "lighthouse-core/audits/accessibility/html-has-lang.js | title": {
+    "message": "El elemento `<html>` tiene un atributo `[lang]`"
+  },
+  "lighthouse-core/audits/accessibility/html-lang-valid.js | description": {
+    "message": "Especificar un [idioma BCP 47](https://www.w3.org/International/questions/qa-choosing-language-tags#question) válido permite a los lectores de pantalla leer el texto correctamente en voz alta. [Más información](https://web.dev/html-lang-valid/)"
+  },
+  "lighthouse-core/audits/accessibility/html-lang-valid.js | failureTitle": {
+    "message": "El valor del atributo `[lang]` del elemento `<html>` no es válido."
+  },
+  "lighthouse-core/audits/accessibility/html-lang-valid.js | title": {
+    "message": "El atributo `[lang]` del elemento `<html>` tiene un valor válido"
+  },
+  "lighthouse-core/audits/accessibility/image-alt.js | description": {
+    "message": "Los elementos informativos deberían incluir textos alternativos cortos y descriptivos. Los elementos decorativos se pueden omitir usando un atributo \"alt\" vacío. [Más información](https://web.dev/image-alt/)"
+  },
+  "lighthouse-core/audits/accessibility/image-alt.js | failureTitle": {
+    "message": "Los elementos de imagen no tienen ningún atributo `[alt]`"
+  },
+  "lighthouse-core/audits/accessibility/image-alt.js | title": {
+    "message": "Los elementos de imagen tienen atributos `[alt]`"
+  },
+  "lighthouse-core/audits/accessibility/input-image-alt.js | description": {
+    "message": "Cuando se usa una imagen como botón `<input>`, resulta útil proporcionar un texto alternativo para permitir que los usuarios de lectores de pantalla entiendan cuál es la función del botón. [Más información](https://web.dev/input-image-alt/)"
+  },
+  "lighthouse-core/audits/accessibility/input-image-alt.js | failureTitle": {
+    "message": "Los elementos `<input type=\"image\">` no tienen texto `[alt]`"
+  },
+  "lighthouse-core/audits/accessibility/input-image-alt.js | title": {
+    "message": "Los elementos `<input type=\"image\">` contienen texto `[alt]`"
+  },
+  "lighthouse-core/audits/accessibility/label.js | description": {
+    "message": "Las etiquetas facilitan que las tecnologías de asistencia, como los lectores de pantalla, puedan leer los controles de los formularios de forma correcta. [Más información](https://web.dev/label/)"
+  },
+  "lighthouse-core/audits/accessibility/label.js | failureTitle": {
+    "message": "Los elementos de formulario no tienen ninguna etiqueta asociada"
+  },
+  "lighthouse-core/audits/accessibility/label.js | title": {
+    "message": "Los elementos de formulario tienen etiquetas asociadas"
+  },
+  "lighthouse-core/audits/accessibility/layout-table.js | description": {
+    "message": "Las tablas que solo se utilizan para crear un diseño no deben incluir elementos de datos, como los elementos th o caption, o el atributo summary, ya que podrían confundir a los usuarios de lectores de pantalla. [Más información](https://web.dev/layout-table/)"
+  },
+  "lighthouse-core/audits/accessibility/layout-table.js | failureTitle": {
+    "message": "Los elementos `<table>` de presentación no evitan el uso de `<th>`, `<caption>` ni del atributo `[summary]`."
+  },
+  "lighthouse-core/audits/accessibility/layout-table.js | title": {
+    "message": "Los elementos `<table>` de presentación no utilizan elementos `<th>` o `<caption>` ni el atributo `[summary]`."
+  },
+  "lighthouse-core/audits/accessibility/link-name.js | description": {
+    "message": "Usar textos de enlace (y textos alternativos para las imágenes, si estas se usan como enlaces) que sean reconocibles, únicos y que se puedan seleccionar mejora la experiencia de navegación de los usuarios de lectores de pantalla. [Más información](https://web.dev/link-name/)"
+  },
+  "lighthouse-core/audits/accessibility/link-name.js | failureTitle": {
+    "message": "Los enlaces no tienen nombres reconocibles"
+  },
+  "lighthouse-core/audits/accessibility/link-name.js | title": {
+    "message": "Los enlaces tienen nombres reconocibles"
+  },
+  "lighthouse-core/audits/accessibility/list.js | description": {
+    "message": "Los lectores de pantalla leen las listas en voz alta de una forma concreta. Se recomienda utilizar una estructura de listas adecuada para que los lectores de pantalla puedan leer las listas de forma correcta. [Más información](https://web.dev/list/)"
+  },
+  "lighthouse-core/audits/accessibility/list.js | failureTitle": {
+    "message": "Las listas no contienen únicamente elementos `<li>` y elementos que admiten secuencias de comandos (`<script>` y `<template>`)."
+  },
+  "lighthouse-core/audits/accessibility/list.js | title": {
+    "message": "Las listas contienen únicamente elementos `<li>` y elementos que admiten secuencias de comandos (`<script>` y `<template>`)."
+  },
+  "lighthouse-core/audits/accessibility/listitem.js | description": {
+    "message": "Los lectores de pantalla requieren que los elementos de lista (`<li>`) estén incluidos dentro de un elemento `<ul>` o `<ol>` principal para poder leerlos correctamente en voz alta. [Más información](https://web.dev/listitem/)"
+  },
+  "lighthouse-core/audits/accessibility/listitem.js | failureTitle": {
+    "message": "Los elementos de lista (`<li>`) no están incluidos dentro de elementos principales `<ul>` o `<ol>`."
+  },
+  "lighthouse-core/audits/accessibility/listitem.js | title": {
+    "message": "Los elementos de lista (`<li>`) están incluidos dentro de los elementos principales `<ul>` o `<ol>`"
+  },
+  "lighthouse-core/audits/accessibility/meta-refresh.js | description": {
+    "message": "Los usuarios no esperan que las páginas se actualicen automáticamente; si es así, se les volverá a dirigir a la parte superior de la página. Esto puede dar lugar a una experiencia frustrante o confusa. [Más información](https://web.dev/meta-refresh/)"
+  },
+  "lighthouse-core/audits/accessibility/meta-refresh.js | failureTitle": {
+    "message": "El documento usa `<meta http-equiv=\"refresh\">`"
+  },
+  "lighthouse-core/audits/accessibility/meta-refresh.js | title": {
+    "message": "El documento no usa `<meta http-equiv=\"refresh\">`"
+  },
+  "lighthouse-core/audits/accessibility/meta-viewport.js | description": {
+    "message": "Inhabilitar el zoom provoca problemas a los usuarios con visión reducida que necesitan ampliar la pantalla para poder ver correctamente el contenido de las páginas web. [Más información](https://web.dev/meta-viewport/)"
+  },
+  "lighthouse-core/audits/accessibility/meta-viewport.js | failureTitle": {
+    "message": "El atributo `[user-scalable=\"no\"]` se usa en el elemento `<meta name=\"viewport\">` o el valor del atributo `[maximum-scale]` es inferior a 5."
+  },
+  "lighthouse-core/audits/accessibility/meta-viewport.js | title": {
+    "message": "`[user-scalable=\"no\"]` no se utiliza en el elemento `<meta name=\"viewport\">` y el valor del atributo `[maximum-scale]` no es inferior a 5."
+  },
+  "lighthouse-core/audits/accessibility/object-alt.js | description": {
+    "message": "Los lectores de pantalla no pueden traducir contenido que no sea texto. Al añadir texto alternativo a los elementos `<object>`, los lectores de pantalla podrán transmitir su significado a los usuarios. [Más información](https://web.dev/object-alt/)"
+  },
+  "lighthouse-core/audits/accessibility/object-alt.js | failureTitle": {
+    "message": "Los elementos `<object>` no tienen texto `[alt]`"
+  },
+  "lighthouse-core/audits/accessibility/object-alt.js | title": {
+    "message": "Los elementos `<object>` contienen texto `[alt]`"
+  },
+  "lighthouse-core/audits/accessibility/tabindex.js | description": {
+    "message": "Si el valor es superior a 0, significa que el orden de navegación es explícito. Aunque técnicamente es válido, esto suele producir experiencias frustrantes para los usuarios que necesitan usar tecnologías de asistencia. [Más información](https://web.dev/tabindex/)"
+  },
+  "lighthouse-core/audits/accessibility/tabindex.js | failureTitle": {
+    "message": "Algunos elementos tienen un valor de `[tabindex]` superior a 0"
+  },
+  "lighthouse-core/audits/accessibility/tabindex.js | title": {
+    "message": "No hay ningún elemento con un valor de `[tabindex]` superior a 0"
+  },
+  "lighthouse-core/audits/accessibility/td-headers-attr.js | description": {
+    "message": "Los lectores de pantalla incluyen funciones para facilitar la navegación por las tablas. Asegurarse de que las celdas `<td>` que usan el atributo `[headers]` solo hacen referencia a otras celdas de la misma tabla mejora la experiencia de los usuarios de lectores de pantalla. [Más información](https://web.dev/td-headers-attr/)"
+  },
+  "lighthouse-core/audits/accessibility/td-headers-attr.js | failureTitle": {
+    "message": "Las celdas de los elementos `<table>` que usen el atributo `[headers]` hacen referencia a otras celdas de esa misma tabla."
+  },
+  "lighthouse-core/audits/accessibility/td-headers-attr.js | title": {
+    "message": "Las celdas de un elemento `<table>` que usa el atributo `[headers]` hacen referencia únicamente a otras celdas de la misma tabla."
+  },
+  "lighthouse-core/audits/accessibility/th-has-data-cells.js | description": {
+    "message": "Los lectores de pantalla incluyen funciones para facilitar la navegación por las tablas. Si te aseguras de que los encabezados de las tablas siempre hagan referencia a un conjunto de celdas, puedes mejorar la experiencia de los usuarios de lectores de pantalla. [Más información](https://web.dev/th-has-data-cells/)"
+  },
+  "lighthouse-core/audits/accessibility/th-has-data-cells.js | failureTitle": {
+    "message": "Los elementos `<th>` y los elementos con `[role=\"columnheader\"/\"rowheader\"]` no contienen las celdas de datos que describen."
+  },
+  "lighthouse-core/audits/accessibility/th-has-data-cells.js | title": {
+    "message": "Los elementos `<th>` y los elementos con atributos `[role=\"columnheader\"/\"rowheader\"]` contienen las celdas de datos que describen."
+  },
+  "lighthouse-core/audits/accessibility/valid-lang.js | description": {
+    "message": "Especificar un [idioma BCP 47](https://www.w3.org/International/questions/qa-choosing-language-tags#question) en los elementos ayuda a asegurar que los lectores de pantalla pronuncien correctamente las palabras del texto. [Más información](https://web.dev/valid-lang/)"
+  },
+  "lighthouse-core/audits/accessibility/valid-lang.js | failureTitle": {
+    "message": "Los atributos `[lang]` no tienen un valor válido"
+  },
+  "lighthouse-core/audits/accessibility/valid-lang.js | title": {
+    "message": "Los atributos `[lang]` tienen un valor válido"
+  },
+  "lighthouse-core/audits/accessibility/video-caption.js | description": {
+    "message": "Si un vídeo tiene subtítulos, los usuarios sordos o con problemas auditivos pueden acceder a la información con más facilidad. [Más información](https://web.dev/video-caption/)"
+  },
+  "lighthouse-core/audits/accessibility/video-caption.js | failureTitle": {
+    "message": "Los elementos `<video>` no contienen ningún elemento `<track>` con el atributo `[kind=\"captions\"]`."
+  },
+  "lighthouse-core/audits/accessibility/video-caption.js | title": {
+    "message": "Los elementos `<video>` contienen un elemento `<track>` con el atributo `[kind=\"captions\"]`"
+  },
+  "lighthouse-core/audits/accessibility/video-description.js | description": {
+    "message": "Las audiodescripciones proporcionan información pertinente en vídeos cuyos diálogos no transmiten todo el contenido, como en el caso de las expresiones faciales y las escenas. [Más información](https://web.dev/video-description/)"
+  },
+  "lighthouse-core/audits/accessibility/video-description.js | failureTitle": {
+    "message": "Los elementos `<video>` no contienen ningún elemento `<track>` con el atributo `[kind=\"description\"]`."
+  },
+  "lighthouse-core/audits/accessibility/video-description.js | title": {
+    "message": "Los elementos `<video>` contienen un elemento `<track>` con el atributo `[kind=\"description\"]`"
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | description": {
+    "message": "Para que el aspecto en iOS sea perfecto cuando los usuarios añadan una aplicación web progresiva a la pantalla de inicio, define un `apple-touch-icon`. Debe apuntar a una imagen PNG cuadrada de 192 px (o 180 px) que sea opaca. [Más información](https://developers.google.com/web/fundamentals/design-and-ux/browser-customization/)"
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | failureTitle": {
+    "message": "No proporciona un `apple-touch-icon` válido"
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | precomposedWarning": {
+    "message": "`apple-touch-icon-precomposed` está obsoleto; se recomienda usar `apple-touch-icon`."
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | title": {
+    "message": "Proporciona un `apple-touch-icon` válido"
+  },
+  "lighthouse-core/audits/bootup-time.js | chromeExtensionsWarning": {
+    "message": "Las extensiones de Chrome han afectado de forma negativa al rendimiento de carga de esta página. Prueba a auditarla en modo incógnito o desde un perfil de Chrome sin extensiones."
+  },
+  "lighthouse-core/audits/bootup-time.js | columnScriptEval": {
+    "message": "Evaluación de la secuencia de comandos"
+  },
+  "lighthouse-core/audits/bootup-time.js | columnScriptParse": {
+    "message": "Análisis de la secuencia de comandos"
+  },
+  "lighthouse-core/audits/bootup-time.js | columnTotal": {
+    "message": "Tiempo de CPU total"
+  },
+  "lighthouse-core/audits/bootup-time.js | description": {
+    "message": "Te recomendamos que reduzcas el tiempo de análisis, compilación y ejecución de JavaScript. Para ello, puedes utilizar cargas útiles de JavaScript más pequeñas. [Más información](https://developers.google.com/web/tools/lighthouse/audits/bootup)"
+  },
+  "lighthouse-core/audits/bootup-time.js | failureTitle": {
+    "message": "Reduce el tiempo de ejecución de JavaScript"
+  },
+  "lighthouse-core/audits/bootup-time.js | title": {
+    "message": "Tiempo de ejecución de JavaScript"
+  },
+  "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | description": {
+    "message": "Los GIF de gran tamaño no son eficientes para mostrar contenido animado. Para usar menos bytes de la red, te recomendamos que utilices los formatos de vídeo MPEG4 o WebM para incluir animaciones y los formatos PNG o WebP para añadir imágenes estáticas en lugar del formato GIF. [Más información](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/replace-animated-gifs-with-video/)"
+  },
+  "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | title": {
+    "message": "Usa formatos de vídeo para incluir contenido animado"
+  },
+  "lighthouse-core/audits/byte-efficiency/offscreen-images.js | description": {
+    "message": "Te recomendamos que uses la carga diferida con imágenes ocultas y que no aparecen en pantalla una vez que todos los recursos críticos hayan terminado de cargarse para reducir el tiempo que pasa hasta que la página es interactiva. [Más información](https://developers.google.com/web/tools/lighthouse/audits/offscreen-images)"
+  },
+  "lighthouse-core/audits/byte-efficiency/offscreen-images.js | title": {
+    "message": "Pospón la carga de imágenes que no aparecen en pantalla"
+  },
+  "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | description": {
+    "message": "Hay recursos que bloquean el primer renderizado de la página. Te recomendamos que muestres los elementos de JavaScript y CSS críticos insertados y pospongas todos los que no sean esenciales. [Más información](https://developers.google.com/web/tools/lighthouse/audits/blocking-resources)"
+  },
+  "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | title": {
+    "message": "Elimina los recursos que bloqueen el renderizado"
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | description": {
+    "message": "Si la carga útil de la red es muy grande, los usuarios consumen más datos móviles y las páginas tardan más en cargarse. [Más información](https://developers.google.com/web/tools/lighthouse/audits/network-payloads)"
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | displayValue": {
+    "message": "Tamaño total: {totalBytes, number, bytes} kB"
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | failureTitle": {
+    "message": "Evita cargas útiles de red de gran tamaño"
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | title": {
+    "message": "Evita cargas útiles de red de gran tamaño"
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-css.js | description": {
+    "message": "Si minificas los archivos CSS, se puede reducir el tamaño de la carga útil de la red. [Más información](https://developers.google.com/web/tools/lighthouse/audits/minify-css)"
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-css.js | title": {
+    "message": "Minifica los archivos CSS"
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | description": {
+    "message": "Si minificas los archivos de JavaScript, se puede reducir el tamaño de la carga útil y el tiempo de análisis de la secuencia de comandos. [Más información](https://developers.google.com/speed/docs/insights/MinifyResources)"
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | title": {
+    "message": "Minifica los recursos JavaScript"
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | description": {
+    "message": "Elimina las reglas inactivas de las hojas de estilo y retrasa la carga de los archivos CSS que no se utilicen para el contenido de la mitad superior de la página. Así, se reducirán los bytes consumidos innecesariamente por la actividad de red. [Más información](https://developers.google.com/web/tools/lighthouse/audits/unused-css)"
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | title": {
+    "message": "Elimina archivos CSS sin usar"
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-javascript.js | description": {
+    "message": "Quita el contenido JavaScript que no se use para reducir el número de bytes que consume la actividad de red."
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-javascript.js | title": {
+    "message": "Quita los recursos JavaScript que no se usen"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | description": {
+    "message": "Una duración en caché más larga puede aumentar el número de visitas repetidas a tu página. [Más información](https://developers.google.com/web/tools/lighthouse/audits/cache-policy)"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | displayValue": {
+    "message": "{itemCount,plural, =1{Se ha encontrado 1 recurso}other{Se han encontrado # recursos}}"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | failureTitle": {
+    "message": "Publica recursos estáticos con una política de caché eficaz"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | title": {
+    "message": "Usa una política de caché eficaz en recursos estáticos"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | description": {
+    "message": "Las imágenes optimizadas se cargan más rápido y consumen menos datos móviles. [Más información](https://developers.google.com/web/tools/lighthouse/audits/optimize-images)"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | title": {
+    "message": "Codifica las imágenes de forma eficaz"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | description": {
+    "message": "Muestra imágenes con un tamaño adecuado para ahorrar datos móviles y mejorar el tiempo de carga. [Más información](https://developers.google.com/web/tools/lighthouse/audits/oversized-images)"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | title": {
+    "message": "Usa un tamaño adecuado para las imágenes"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | description": {
+    "message": "Los recursos de texto se deberían publicar comprimidos (gzip, deflate o brotli) para minimizar el total de bytes de la red. [Más información](https://developers.google.com/web/tools/lighthouse/audits/text-compression)"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | title": {
+    "message": "Habilita la compresión de texto"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | description": {
+    "message": "Los formatos JPEG 2000, JPEG XR y WebP comprimen mejor las imágenes que los formatos PNG o JPEG, lo que hace que se descarguen más rápido y consuman menos datos. [Más información](https://developers.google.com/web/tools/lighthouse/audits/webp)"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | title": {
+    "message": "Publica imágenes con formatos de próxima generación"
+  },
+  "lighthouse-core/audits/content-width.js | description": {
+    "message": "Si el ancho del contenido de tu aplicación no coincide con el ancho del viewport, es posible que tu aplicación no esté optimizada para pantallas de dispositivos móviles. [Más información](https://developers.google.com/web/tools/lighthouse/audits/content-sized-correctly-for-viewport)"
+  },
+  "lighthouse-core/audits/content-width.js | explanation": {
+    "message": "El tamaño del viewport es de {innerWidth} px y no coincide con el de la ventana, que es de {outerWidth} px."
+  },
+  "lighthouse-core/audits/content-width.js | failureTitle": {
+    "message": "El contenido no tiene el tamaño adecuado para el viewport"
+  },
+  "lighthouse-core/audits/content-width.js | title": {
+    "message": "El contenido tiene el tamaño adecuado para el viewport"
+  },
+  "lighthouse-core/audits/critical-request-chains.js | description": {
+    "message": "Las cadenas de solicitud crítica que se muestran a continuación indican qué recursos son de alta prioridad. Te recomendamos que reduzcas la longitud de las cadenas, disminuyas el tamaño de los recursos o pospongas la descarga de recursos innecesarios para mejorar la carga de la página. [Más información](https://developers.google.com/web/tools/lighthouse/audits/critical-request-chains)"
+  },
+  "lighthouse-core/audits/critical-request-chains.js | displayValue": {
+    "message": "{itemCount,plural, =1{Se ha encontrado 1 cadena}other{Se han encontrado # cadenas}}"
+  },
+  "lighthouse-core/audits/critical-request-chains.js | title": {
+    "message": "Minimiza la profundidad de las solicitudes críticas"
+  },
+  "lighthouse-core/audits/deprecations.js | columnDeprecate": {
+    "message": "Desactivación/Advertencia"
+  },
+  "lighthouse-core/audits/deprecations.js | columnLine": {
+    "message": "Línea"
+  },
+  "lighthouse-core/audits/deprecations.js | description": {
+    "message": "Las API obsoletas se eliminarán del navegador en el futuro. [Más información](https://web.dev/deprecations)"
+  },
+  "lighthouse-core/audits/deprecations.js | displayValue": {
+    "message": "{itemCount,plural, =1{Se ha encontrado 1 advertencia}other{Se han encontrado # advertencias}}"
+  },
+  "lighthouse-core/audits/deprecations.js | failureTitle": {
+    "message": "Usa API obsoletas"
+  },
+  "lighthouse-core/audits/deprecations.js | title": {
+    "message": "Evita las API obsoletas"
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | description": {
+    "message": "La caché de aplicación está obsoleta. [Más información](https://web.dev/appcache-manifest)"
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | displayValue": {
+    "message": "Se ha detectado \"{AppCacheManifest}\""
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | failureTitle": {
+    "message": "Usa caché de aplicación"
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | title": {
+    "message": "Evita la caché de aplicación"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | description": {
+    "message": "Especificar un DOCTYPE evita que el navegador cambie al modo Quirks. [Más información](https://web.dev/doctype)"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationBadDoctype": {
+    "message": "El nombre del DOCTYPE debe ser la cadena `html` en minúsculas"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationNoDoctype": {
+    "message": "El documento debe contener un elemento DOCTYPE"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationPublicId": {
+    "message": "Se esperaba que publicId fuera una cadena vacía"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationSystemId": {
+    "message": "Se esperaba que systemId fuera una cadena vacía"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | failureTitle": {
+    "message": "A la página le falta el DOCTYPE de HTML, por lo que se ha activado el modo Quirks"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | title": {
+    "message": "La página tiene el DOCTYPE de HTML"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | columnElement": {
+    "message": "Elemento"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | columnStatistic": {
+    "message": "Estadística"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | columnValue": {
+    "message": "Valor"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | description": {
+    "message": "Los desarrolladores de navegadores recomiendan que las páginas contengan menos de 1500 elementos DOM. Lo ideal es conseguir una profundidad de árbol inferior a 32 elementos y a 60 elementos secundarios por cada elemento principal. Los DOM de gran tamaño aumentan el uso de memoria, hacen que los [cálculos de estilo](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations) duren más y generan costosos [reinicios del flujo del diseño](https://developers.google.com/speed/articles/reflow). [Más información](https://web.dev/dom-size)"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 elemento}other{# elementos}}"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | failureTitle": {
+    "message": "Evita un tamaño excesivo de DOM"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | statisticDOMDepth": {
+    "message": "Profundidad máxima de DOM"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | statisticDOMElements": {
+    "message": "Total de elementos DOM"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | statisticDOMWidth": {
+    "message": "Número máximo de elementos secundarios"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | title": {
+    "message": "Evita un tamaño excesivo de DOM"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | columnRel": {
+    "message": "Rel"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | columnTarget": {
+    "message": "Destino"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | description": {
+    "message": "Añade `rel=\"noopener\"` o `rel=\"noreferrer\"` a cualquier enlace externo para mejorar el rendimiento y evitar vulnerabilidades de seguridad. [Más información](https://web.dev/external-anchors-use-rel-noopener)"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | failureTitle": {
+    "message": "Los enlaces a destinos de origen cruzado no son seguros"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | title": {
+    "message": "Los enlaces a destinos de origen cruzado son seguros"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | warning": {
+    "message": "No se ha podido determinar el destino del enlace ({anchorHTML}). Si no se usa como hiperenlace, se recomienda eliminar el atributo target=_blank."
+  },
+  "lighthouse-core/audits/dobetterweb/geolocation-on-start.js | description": {
+    "message": "Los usuarios dudan o desconfían de los sitios web que solicitan su ubicación sin contexto. Como alternativa, puedes vincular la solicitud a una acción del usuario. [Más información](https://web.dev/geolocation-on-start)"
+  },
+  "lighthouse-core/audits/dobetterweb/geolocation-on-start.js | failureTitle": {
+    "message": "Solicita el permiso de geolocalización al cargar la página"
+  },
+  "lighthouse-core/audits/dobetterweb/geolocation-on-start.js | title": {
+    "message": "Evita solicitar el permiso de geolocalización al cargar la página"
+  },
+  "lighthouse-core/audits/dobetterweb/js-libraries.js | columnVersion": {
+    "message": "Versión"
+  },
+  "lighthouse-core/audits/dobetterweb/js-libraries.js | description": {
+    "message": "Todas las bibliotecas frontend de JavaScript detectadas en la página. [Más información](https://web.dev/js-libraries)"
+  },
+  "lighthouse-core/audits/dobetterweb/js-libraries.js | title": {
+    "message": "Bibliotecas de JavaScript detectadas"
+  },
+  "lighthouse-core/audits/dobetterweb/no-document-write.js | description": {
+    "message": "Las secuencias de comandos externas inyectadas dinámicamente mediante `document.write()` pueden retrasar la carga de la página varias decenas de segundos en conexiones lentas. [Más información](https://web.dev/no-document-write)"
+  },
+  "lighthouse-core/audits/dobetterweb/no-document-write.js | failureTitle": {
+    "message": "Usa `document.write()`"
+  },
+  "lighthouse-core/audits/dobetterweb/no-document-write.js | title": {
+    "message": "Evita `document.write()`"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | columnSeverity": {
+    "message": "Gravedad máxima"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | columnVersion": {
+    "message": "Versión de la biblioteca"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | columnVuln": {
+    "message": "Número de vulnerabilidades"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | description": {
+    "message": "Algunas secuencias de comandos externas pueden contener vulnerabilidades de seguridad conocidas que pueden ser detectadas y aprovechadas por los atacantes. [Más información](https://web.dev/no-vulnerable-libraries)"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 vulnerabilidad detectada}other{# vulnerabilidades detectadas}}"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | failureTitle": {
+    "message": "Incluye bibliotecas en el frontend de JavaScript con vulnerabilidades de seguridad conocidas"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | rowSeverityHigh": {
+    "message": "Alta"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | rowSeverityLow": {
+    "message": "Baja"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | rowSeverityMedium": {
+    "message": "Media"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | title": {
+    "message": "Evita en el frontend las bibliotecas de JavaScript con vulnerabilidades de seguridad conocidas"
+  },
+  "lighthouse-core/audits/dobetterweb/notification-on-start.js | description": {
+    "message": "Los usuarios dudan o desconfían de los sitios web que solicitan enviar notificaciones sin contexto. Como alternativa, puedes vincular la solicitud a los gestos de los usuarios. [Más información](https://web.dev/notification-on-start)"
+  },
+  "lighthouse-core/audits/dobetterweb/notification-on-start.js | failureTitle": {
+    "message": "Solicita el permiso de notificación al cargar la página"
+  },
+  "lighthouse-core/audits/dobetterweb/notification-on-start.js | title": {
+    "message": "Evita solicitar el permiso de notificación al cargar la página"
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | columnFailingElem": {
+    "message": "Elementos con errores"
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | description": {
+    "message": "Evitar que se pueda pegar texto en el campo de contraseña debilita una buena política de seguridad. [Más información](https://web.dev/password-inputs-can-be-pasted-into)"
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | failureTitle": {
+    "message": "Impide que los usuarios peguen texto en los campos de contraseña"
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | title": {
+    "message": "Permite que los usuarios peguen texto en los campos de contraseña"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | columnProtocol": {
+    "message": "Protocolo"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | description": {
+    "message": "HTTP/2 ofrece muchas ventajas con respecto a HTTP/1.1, como encabezados binarios, multiplexación y servidor push. [Más información](https://web.dev/uses-http2)"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 solicitud no atendida mediante HTTP/2}other{# solicitudes no atendidas mediante HTTP/2}}"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | failureTitle": {
+    "message": "No usa HTTP/2 para todos sus recursos"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | title": {
+    "message": "Usa HTTP/2 para sus propios recursos"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-passive-event-listeners.js | description": {
+    "message": "Se recomienda que los procesadores de eventos táctiles y de la rueda sean `passive` para mejorar el desplazamiento de tu página. [Más información](https://web.dev/uses-passive-event-listeners)"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-passive-event-listeners.js | failureTitle": {
+    "message": "No usa listeners pasivos para mejorar el desplazamiento"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-passive-event-listeners.js | title": {
+    "message": "Usa listeners pasivos para mejorar el desplazamiento"
+  },
+  "lighthouse-core/audits/errors-in-console.js | columnDesc": {
+    "message": "Descripción"
+  },
+  "lighthouse-core/audits/errors-in-console.js | description": {
+    "message": "Los errores registrados en la consola indican problemas sin resolver. Pueden proceder de solicitudes fallidas de la red y otros errores del navegador. [Más información](https://web.dev/errors-in-console)"
+  },
+  "lighthouse-core/audits/errors-in-console.js | failureTitle": {
+    "message": "Se han registrado errores del navegador en la consola"
+  },
+  "lighthouse-core/audits/errors-in-console.js | title": {
+    "message": "No se ha registrado en la consola ningún error del navegador"
+  },
+  "lighthouse-core/audits/font-display.js | description": {
+    "message": "Utiliza la característica de CSS \"font-display\" para que los usuarios vean el texto mientras se carga la fuente web. [Más información](https://developers.google.com/web/updates/2016/02/font-display)"
+  },
+  "lighthouse-core/audits/font-display.js | failureTitle": {
+    "message": "Asegúrate de que el texto permanece visible mientras se carga la fuente web"
+  },
+  "lighthouse-core/audits/font-display.js | title": {
+    "message": "Todo el texto permanece visible mientras se carga la fuente web"
+  },
+  "lighthouse-core/audits/font-display.js | undeclaredFontURLWarning": {
+    "message": "Lighthouse no ha podido comprobar automáticamente el valor de font-display de la siguiente URL: {fontURL}."
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | columnActual": {
+    "message": "Relación de aspecto (real)"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | columnDisplayed": {
+    "message": "Relación de aspecto (mostrada)"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | description": {
+    "message": "Las dimensiones de las imágenes mostradas deberían mantener su relación de aspecto natural. [Más información](https://web.dev/image-aspect-ratio)"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | failureTitle": {
+    "message": "Muestra imágenes con una relación de aspecto incorrecta"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | title": {
+    "message": "Muestra imágenes con la relación de aspecto adecuada"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | warningCompute": {
+    "message": "La información del tamaño de la imagen no es válida ({url})"
+  },
+  "lighthouse-core/audits/installable-manifest.js | description": {
+    "message": "Los navegadores pueden preguntar a los usuarios si quieren añadir tu aplicación a la pantalla de inicio, lo que genera más interacción. [Más información](https://developers.google.com/web/tools/lighthouse/audits/install-prompt)"
+  },
+  "lighthouse-core/audits/installable-manifest.js | failureTitle": {
+    "message": "El archivo de manifiesto de la aplicación web no cumple los requisitos de instalación"
+  },
+  "lighthouse-core/audits/installable-manifest.js | title": {
+    "message": "El archivo de manifiesto de la aplicación web cumple los requisitos de instalación"
+  },
+  "lighthouse-core/audits/is-on-https.js | columnInsecureURL": {
+    "message": "URL poco segura"
+  },
+  "lighthouse-core/audits/is-on-https.js | description": {
+    "message": "Todos los sitios web deberían estar protegidos con el protocolo HTTPS, incluso los que no gestionen datos sensibles. HTTPS evita que los intrusos alteren o escuchen pasivamente la comunicación entre tu aplicación y tus usuarios. Además, es un requisito previo para poder usar HTTP/2 y las API de muchas plataformas web nuevas. [Más información](https://web.dev/is-on-https)"
+  },
+  "lighthouse-core/audits/is-on-https.js | displayValue": {
+    "message": "{itemCount,plural, =1{Se ha encontrado 1 solicitud poco segura}other{Se han encontrado # solicitudes poco seguras}}"
+  },
+  "lighthouse-core/audits/is-on-https.js | failureTitle": {
+    "message": "No usa HTTPS"
+  },
+  "lighthouse-core/audits/is-on-https.js | title": {
+    "message": "Usa HTTPS"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | description": {
+    "message": "Si las páginas se cargan rápidamente en las redes móviles, se asegurará una buena experiencia de usuario. [Más información](https://developers.google.com/web/tools/lighthouse/audits/fast-3g)"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | displayValueText": {
+    "message": "Página interactiva en {timeInMs, number, seconds} s"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | displayValueTextWithOverride": {
+    "message": "Página interactiva en una red móvil simulada en {timeInMs, number, seconds} s"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | explanationLoadSlow": {
+    "message": "Tu página tarda mucho en cargar y hay que esperar 10 segundos hasta que se puede interactuar con ella. Para mejorarla, consulta las oportunidades y los diagnósticos en la sección \"Rendimiento\"."
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | failureTitle": {
+    "message": "La página no se carga suficientemente rápido en las redes móviles"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | title": {
+    "message": "La carga de la página es lo suficientemente rápida en redes móviles"
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | columnCategory": {
+    "message": "Categoría"
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | description": {
+    "message": "Te recomendamos que reduzcas el tiempo de análisis, compilación y ejecución de JavaScript. Para ello, puedes utilizar cargas útiles de JS más pequeñas."
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | failureTitle": {
+    "message": "Minimiza el trabajo del hilo principal"
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | title": {
+    "message": "Minimiza el trabajo del hilo principal"
+  },
+  "lighthouse-core/audits/manual/pwa-cross-browser.js | description": {
+    "message": "Para llegar al mayor número de usuarios, los sitios web deben funcionar en los navegadores principales. [Más información](https://developers.google.com/web/progressive-web-apps/checklist#site-works-cross-browser)"
+  },
+  "lighthouse-core/audits/manual/pwa-cross-browser.js | title": {
+    "message": "El sitio web funciona en diferentes navegadores"
+  },
+  "lighthouse-core/audits/manual/pwa-each-page-has-url.js | description": {
+    "message": "Asegúrate de que la URL de cada página sea un enlace profundo y único para poder compartir las páginas fácilmente en las redes sociales. [Más información](https://developers.google.com/web/progressive-web-apps/checklist#each-page-has-a-url)"
+  },
+  "lighthouse-core/audits/manual/pwa-each-page-has-url.js | title": {
+    "message": "Cada página tiene una URL"
+  },
+  "lighthouse-core/audits/manual/pwa-page-transitions.js | description": {
+    "message": "Las transiciones deberían ser rápidas al tocar en diferentes partes de la aplicación, incluso si la red es lenta. Es esencial para que se perciba que el rendimiento es alto. [Más información](https://developers.google.com/web/progressive-web-apps/checklist#page-transitions-dont-feel-like-they-block-on-the-network)"
+  },
+  "lighthouse-core/audits/manual/pwa-page-transitions.js | title": {
+    "message": "No parece que se bloqueen las transiciones de la página en la red"
+  },
+  "lighthouse-core/audits/metrics/estimated-input-latency.js | description": {
+    "message": "La latencia de entrada estimada es el tiempo, en milisegundos, que tarda tu aplicación en responder a las acciones de los usuarios durante el periodo de 5 s más activo de carga de la página. Si tu latencia es superior a 50 ms, es posible que los usuarios perciban cierto retardo en tu aplicación. [Más información](https://developers.google.com/web/tools/lighthouse/audits/estimated-input-latency)"
+  },
+  "lighthouse-core/audits/metrics/estimated-input-latency.js | title": {
+    "message": "Latencia de entrada estimada"
+  },
+  "lighthouse-core/audits/metrics/first-contentful-paint.js | description": {
+    "message": "El primer renderizado con contenido indica el momento en el que se renderiza el primer texto o la primera imagen. [Más información](https://developers.google.com/web/tools/lighthouse/audits/first-contentful-paint)"
+  },
+  "lighthouse-core/audits/metrics/first-contentful-paint.js | title": {
+    "message": "Primer renderizado con contenido"
+  },
+  "lighthouse-core/audits/metrics/first-cpu-idle.js | description": {
+    "message": "El primer tiempo inactivo de la CPU indica la primera vez que el hilo principal de la página está lo suficientemente inactivo para recibir acciones del usuario. [Más información](https://developers.google.com/web/tools/lighthouse/audits/first-interactive)"
+  },
+  "lighthouse-core/audits/metrics/first-cpu-idle.js | title": {
+    "message": "Primer tiempo inactivo de la CPU"
+  },
+  "lighthouse-core/audits/metrics/first-meaningful-paint.js | description": {
+    "message": "El primer renderizado significativo mide el momento en que se muestra el contenido principal de la página. [Más información](https://developers.google.com/web/tools/lighthouse/audits/first-meaningful-paint)"
+  },
+  "lighthouse-core/audits/metrics/first-meaningful-paint.js | title": {
+    "message": "Primer renderizado significativo"
+  },
+  "lighthouse-core/audits/metrics/interactive.js | description": {
+    "message": "El tiempo hasta que está interactiva es el tiempo que tarda una página en ser totalmente interactiva. [Más información](https://developers.google.com/web/tools/lighthouse/audits/consistently-interactive)"
+  },
+  "lighthouse-core/audits/metrics/interactive.js | title": {
+    "message": "Tiempo hasta que está interactiva"
+  },
+  "lighthouse-core/audits/metrics/max-potential-fid.js | description": {
+    "message": "La latencia potencial máxima de la primera interacción que podrían experimentar los usuarios es la duración, en milisegundos, de la tarea más larga. [Más información](https://developers.google.com/web/updates/2018/05/first-input-delay)"
+  },
+  "lighthouse-core/audits/metrics/max-potential-fid.js | title": {
+    "message": "Latencia potencial máxima de la primera interacción"
+  },
+  "lighthouse-core/audits/metrics/speed-index.js | description": {
+    "message": "El índice de velocidad indica la rapidez con la que se puede ver el contenido de una página. [Más información](https://developers.google.com/web/tools/lighthouse/audits/speed-index)"
+  },
+  "lighthouse-core/audits/metrics/speed-index.js | title": {
+    "message": "Índice de velocidad"
+  },
+  "lighthouse-core/audits/metrics/total-blocking-time.js | description": {
+    "message": "Suma de los periodos, en milisegundos, entre el primer renderizado con contenido y el tiempo hasta que la página es interactiva cuando se exceden los 50 ms."
+  },
+  "lighthouse-core/audits/metrics/total-blocking-time.js | title": {
+    "message": "Tiempo total de bloqueo"
+  },
+  "lighthouse-core/audits/network-rtt.js | description": {
+    "message": "Los tiempos de ida y vuelta (RTT) de la red afectan mucho al rendimiento. Un RTT alto hasta un origen indica que usar servidores más cercanos al usuario podría mejorar el rendimiento. [Más información](https://hpbn.co/primer-on-latency-and-bandwidth/)"
+  },
+  "lighthouse-core/audits/network-rtt.js | title": {
+    "message": "Tiempos de ida y vuelta de la red"
+  },
+  "lighthouse-core/audits/network-server-latency.js | description": {
+    "message": "La latencia del servidor puede afectar al rendimiento del sitio web. Una latencia del servidor alta en un origen indica que el servidor está sobrecargado o que su rendimiento de backend es bajo. [Más información](https://hpbn.co/primer-on-web-performance/#analyzing-the-resource-waterfall)"
+  },
+  "lighthouse-core/audits/network-server-latency.js | title": {
+    "message": "Latencias de backend del servidor"
+  },
+  "lighthouse-core/audits/offline-start-url.js | description": {
+    "message": "Un service worker hace que tu aplicación web sea más fiable si la conexión de red es inestable. [Más información](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)"
+  },
+  "lighthouse-core/audits/offline-start-url.js | failureTitle": {
+    "message": "`start_url` no responde con un código de estado HTTP 200 cuando no hay conexión"
+  },
+  "lighthouse-core/audits/offline-start-url.js | title": {
+    "message": "`start_url` responde con un código de estado HTTP 200 cuando no hay conexión"
+  },
+  "lighthouse-core/audits/offline-start-url.js | warningCantStart": {
+    "message": "Lighthouse no ha podido leer la propiedad `start_url` en el archivo de manifiesto. Por ello, se considera que el valor de `start_url` es la URL del documento. Mensaje de error: \"{manifestWarning}\"."
+  },
+  "lighthouse-core/audits/performance-budget.js | columnOverBudget": {
+    "message": "Por encima del límite"
+  },
+  "lighthouse-core/audits/performance-budget.js | description": {
+    "message": "Mantiene la cantidad y el tamaño de las solicitudes de red por debajo de los límites definidos en los límites de rendimiento. [Más información](https://developers.google.com/web/tools/lighthouse/audits/budgets)"
+  },
+  "lighthouse-core/audits/performance-budget.js | requestCountOverBudget": {
+    "message": "{count,plural, =1{1 solicitud}other{# solicitudes}}"
+  },
+  "lighthouse-core/audits/performance-budget.js | title": {
+    "message": "Límites de rendimiento"
+  },
+  "lighthouse-core/audits/redirects-http.js | description": {
+    "message": "Si ya has configurado HTTPS, asegúrate de redireccionar todo el tráfico HTTP a HTTPS para habilitar funciones de seguridad web para todos los usuarios. [Más información](https://developers.google.com/web/tools/lighthouse/audits/http-redirects-to-https)"
+  },
+  "lighthouse-core/audits/redirects-http.js | failureTitle": {
+    "message": "No redirige el tráfico HTTP a HTTPS"
+  },
+  "lighthouse-core/audits/redirects-http.js | title": {
+    "message": "Redirige el tráfico HTTP a HTTPS"
+  },
+  "lighthouse-core/audits/redirects.js | description": {
+    "message": "Las redirecciones provocan retrasos adicionales antes de que la página se pueda cargar. [Más información](https://developers.google.com/web/tools/lighthouse/audits/redirects)"
+  },
+  "lighthouse-core/audits/redirects.js | title": {
+    "message": "Evita que haya varias redirecciones de página"
+  },
+  "lighthouse-core/audits/resource-summary.js | description": {
+    "message": "Para definir la cantidad y el tamaño de los recursos de la página, añade un archivo budget.json. [Más información](https://developers.google.com/web/tools/lighthouse/audits/budgets)"
+  },
+  "lighthouse-core/audits/resource-summary.js | displayValue": {
+    "message": "{requestCount,plural, =1{1 solicitud: {byteCount, number, bytes} kB}other{# solicitudes: {byteCount, number, bytes} kB}}"
+  },
+  "lighthouse-core/audits/resource-summary.js | title": {
+    "message": "Reduce el número de solicitudes y el tamaño de las transferencias"
+  },
+  "lighthouse-core/audits/seo/canonical.js | description": {
+    "message": "Los enlaces canónicos sugieren qué URL se debe mostrar en los resultados de búsqueda. [Más información](https://web.dev/canonical)"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationConflict": {
+    "message": "Varias URL en conflicto ({urlList})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationDifferentDomain": {
+    "message": "Dirige a un dominio diferente ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationInvalid": {
+    "message": "La URL no es válida ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationPointsElsewhere": {
+    "message": "Apunta a una ubicación de `hreflang` distinta ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationRelative": {
+    "message": "URL relativa ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationRoot": {
+    "message": "Apunta a la URL raíz del dominio (la página principal), en lugar de a una página de contenido equivalente"
+  },
+  "lighthouse-core/audits/seo/canonical.js | failureTitle": {
+    "message": "El documento no tiene un atributo `rel=canonical` válido"
+  },
+  "lighthouse-core/audits/seo/canonical.js | title": {
+    "message": "El documento tiene un atributo `rel=canonical` válido"
+  },
+  "lighthouse-core/audits/seo/font-size.js | description": {
+    "message": "Las fuentes con un tamaño inferior a 12 px son demasiado pequeñas y poco legibles, lo que obliga a los visitantes que acceden con dispositivos móviles a pellizcar la pantalla para ampliarla y poder leer el texto. Intenta que más del 60 % del texto de la página tenga un tamaño igual o superior a 12 px. [Más información](https://web.dev/font-size)"
+  },
+  "lighthouse-core/audits/seo/font-size.js | displayValue": {
+    "message": "El {decimalProportion, number, extendedPercent} del texto es legible"
+  },
+  "lighthouse-core/audits/seo/font-size.js | explanationViewport": {
+    "message": "El texto es ilegible porque no hay metaetiquetas de viewport optimizadas para pantallas de dispositivos móviles."
+  },
+  "lighthouse-core/audits/seo/font-size.js | explanationWithDisclaimer": {
+    "message": "El {decimalProportion, number, extendedPercent} del texto es demasiado pequeño (según una muestra del {decimalProportionVisited, number, extendedPercent})."
+  },
+  "lighthouse-core/audits/seo/font-size.js | failureTitle": {
+    "message": "El documento no usa tamaños de fuente legibles"
+  },
+  "lighthouse-core/audits/seo/font-size.js | title": {
+    "message": "El documento usa tamaños de fuente legibles"
+  },
+  "lighthouse-core/audits/seo/hreflang.js | description": {
+    "message": "Los enlaces \"hreflang\" indican a los buscadores qué versiones de las páginas deben incluir en los resultados de búsqueda de una región o un idioma determinados. [Más información](https://web.dev/hreflang)"
+  },
+  "lighthouse-core/audits/seo/hreflang.js | failureTitle": {
+    "message": "El atributo `hreflang` del documento no es válido"
+  },
+  "lighthouse-core/audits/seo/hreflang.js | title": {
+    "message": "El documento tiene un atributo `hreflang` válido"
+  },
+  "lighthouse-core/audits/seo/http-status-code.js | description": {
+    "message": "Es posible que las páginas con códigos de estado HTTP no válidos no estén bien indexadas. [Más información](https://web.dev/http-status-code)"
+  },
+  "lighthouse-core/audits/seo/http-status-code.js | failureTitle": {
+    "message": "El código de estado HTTP de la página no es válido"
+  },
+  "lighthouse-core/audits/seo/http-status-code.js | title": {
+    "message": "El código de estado HTTP de la página es válido"
+  },
+  "lighthouse-core/audits/seo/is-crawlable.js | description": {
+    "message": "Los buscadores no pueden incluir tus páginas en los resultados de búsqueda si no tienen permiso para rastrearlas. [Más información](https://web.dev/is-crawable)"
+  },
+  "lighthouse-core/audits/seo/is-crawlable.js | failureTitle": {
+    "message": "Se ha bloqueado la indexación de la página"
+  },
+  "lighthouse-core/audits/seo/is-crawlable.js | title": {
+    "message": "No se ha bloqueado la indexación de la página"
+  },
+  "lighthouse-core/audits/seo/link-text.js | description": {
+    "message": "El texto descriptivo de los enlaces ayuda a los buscadores a entender tu contenido. [Más información](https://web.dev/link-text)"
+  },
+  "lighthouse-core/audits/seo/link-text.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 enlace encontrado}other{# enlaces encontrados}}"
+  },
+  "lighthouse-core/audits/seo/link-text.js | failureTitle": {
+    "message": "Los enlaces no tienen texto descriptivo"
+  },
+  "lighthouse-core/audits/seo/link-text.js | title": {
+    "message": "Los enlaces tienen texto descriptivo"
+  },
+  "lighthouse-core/audits/seo/manual/structured-data.js | description": {
+    "message": "Ejecuta la [Herramienta de prueba de datos estructurados](https://search.google.com/structured-data/testing-tool/) y la herramienta [Structured Data Linter](http://linter.structured-data.org/) para validar los datos estructurados. [Más información](https://web.dev/structured-data)"
+  },
+  "lighthouse-core/audits/seo/manual/structured-data.js | title": {
+    "message": "Los datos estructurados son válidos"
+  },
+  "lighthouse-core/audits/seo/meta-description.js | description": {
+    "message": "Se pueden incluir metadescripciones en los resultados de búsqueda para resumir brevemente el contenido de la página. [Más información](https://web.dev/meta-description)"
+  },
+  "lighthouse-core/audits/seo/meta-description.js | explanation": {
+    "message": "El texto de la descripción está vacío."
+  },
+  "lighthouse-core/audits/seo/meta-description.js | failureTitle": {
+    "message": "El documento no tiene una metadescripción"
+  },
+  "lighthouse-core/audits/seo/meta-description.js | title": {
+    "message": "El documento tiene una metadescripción"
+  },
+  "lighthouse-core/audits/seo/plugins.js | description": {
+    "message": "Los buscadores no pueden indexar el contenido de los complementos, y muchos dispositivos limitan el uso de complementos o no los admiten. [Más información](https://web.dev/plugins)"
+  },
+  "lighthouse-core/audits/seo/plugins.js | failureTitle": {
+    "message": "El documento usa complementos"
+  },
+  "lighthouse-core/audits/seo/plugins.js | title": {
+    "message": "El documento no usa complementos"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | description": {
+    "message": "Si el formato del archivo robots.txt no es correcto, es posible que los rastreadores no puedan interpretar cómo quieres que se rastree o indexe tu sitio web. [Más información](https://web.dev/robots-txt)"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | displayValueHttpBadCode": {
+    "message": "La solicitud de robots.txt ha devuelto el siguiente código de estado HTTP: {statusCode}"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | displayValueValidationError": {
+    "message": "{itemCount,plural, =1{1 error encontrado}other{# errores encontrados}}"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | explanation": {
+    "message": "Lighthouse no ha podido descargar un archivo robots.txt"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | failureTitle": {
+    "message": "robots.txt no es válido"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | title": {
+    "message": "robots.txt es válido"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | description": {
+    "message": "Los elementos interactivos, como los botones y enlaces, deben ser lo suficientemente grandes (48x48 px) y tener suficiente espacio alrededor para poder tocarlos con facilidad sin superponerse con otros elementos. [Más información](https://web.dev/tap-targets)"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | displayValue": {
+    "message": "El {decimalProportion, number, percent} de los elementos táctiles tiene un tamaño adecuado"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | explanationViewportMetaNotOptimized": {
+    "message": "Los elementos táctiles son demasiado pequeños porque no hay metaetiquetas de viewport optimizadas para pantallas de dispositivos móviles"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | failureTitle": {
+    "message": "El tamaño de los elementos táctiles no es el adecuado"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | overlappingTargetHeader": {
+    "message": "Elementos superpuestos"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | tapTargetHeader": {
+    "message": "Elemento táctil"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | title": {
+    "message": "El tamaño de los elementos táctiles es el adecuado"
+  },
+  "lighthouse-core/audits/service-worker.js | description": {
+    "message": "El service worker es la tecnología que te permite usar las funciones de las aplicaciones web progresivas, como el modo sin conexión, poder añadirlas a la pantalla de inicio y las notificaciones push. [Más información](https://developers.google.com/web/tools/lighthouse/audits/registered-service-worker)"
+  },
+  "lighthouse-core/audits/service-worker.js | explanationBadManifest": {
+    "message": "Un service worker controla esta página, pero no se ha encontrado ninguna propiedad `start_url` porque el archivo de manifiesto no es un JSON válido"
+  },
+  "lighthouse-core/audits/service-worker.js | explanationBadStartUrl": {
+    "message": "Un service worker controla esta página, pero la propiedad `start_url` ({startUrl}) está fuera del rango del service worker ({scopeUrl})."
+  },
+  "lighthouse-core/audits/service-worker.js | explanationNoManifest": {
+    "message": "Un service worker controla esta página, pero no se ha encontrado la propiedad `start_url` porque no se ha recuperado ningún archivo de manifiesto."
+  },
+  "lighthouse-core/audits/service-worker.js | explanationOutOfScope": {
+    "message": "Este origen tiene al menos un service worker, pero la página ({pageUrl}) no está dentro del rango."
+  },
+  "lighthouse-core/audits/service-worker.js | failureTitle": {
+    "message": "No tiene un service worker que controle la página y la propiedad`start_url`"
+  },
+  "lighthouse-core/audits/service-worker.js | title": {
+    "message": "Hay un service worker que controla la página y la propiedad `start_url`"
+  },
+  "lighthouse-core/audits/splash-screen.js | description": {
+    "message": "Una pantalla de inicio personalizada asegura que la experiencia de los usuarios sea de calidad cuando ejecuten tu aplicación desde sus pantallas de inicio. [Más información](https://developers.google.com/web/tools/lighthouse/audits/custom-splash-screen)"
+  },
+  "lighthouse-core/audits/splash-screen.js | failureTitle": {
+    "message": "No se ha configurado para una pantalla de inicio personalizada"
+  },
+  "lighthouse-core/audits/splash-screen.js | title": {
+    "message": "Se ha configurado para una pantalla de inicio personalizada"
+  },
+  "lighthouse-core/audits/themed-omnibox.js | description": {
+    "message": "El color de la barra de direcciones del navegador puede adaptarse a tu sitio web. [Más información](https://developers.google.com/web/tools/lighthouse/audits/address-bar)"
+  },
+  "lighthouse-core/audits/themed-omnibox.js | failureTitle": {
+    "message": "No establece un color de tema personalizado en la barra de direcciones."
+  },
+  "lighthouse-core/audits/themed-omnibox.js | title": {
+    "message": "Establece un color personalizado en la barra de direcciones."
+  },
+  "lighthouse-core/audits/third-party-summary.js | columnBlockingTime": {
+    "message": "Tiempo de bloqueo del hilo principal"
+  },
+  "lighthouse-core/audits/third-party-summary.js | columnThirdParty": {
+    "message": "Proveedor externo"
+  },
+  "lighthouse-core/audits/third-party-summary.js | description": {
+    "message": "El código externo puede afectar mucho a la velocidad de carga. Limita el número de proveedores externos redundantes e intenta cargar el código externo cuando se haya completado la carga principal de tu página. [Más información](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/loading-third-party-javascript/)"
+  },
+  "lighthouse-core/audits/third-party-summary.js | displayValue": {
+    "message": "El código de un tercero ha bloqueado el hilo principal durante {timeInMs, number, milliseconds} ms"
+  },
+  "lighthouse-core/audits/third-party-summary.js | failureTitle": {
+    "message": "Reduce el impacto del código de terceros"
+  },
+  "lighthouse-core/audits/third-party-summary.js | title": {
+    "message": "Uso de código de terceros"
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | description": {
+    "message": "El tiempo hasta el primer byte indica el momento en el que el servidor envía una respuesta. [Más información](https://developers.google.com/web/tools/lighthouse/audits/ttfb)"
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | displayValue": {
+    "message": "El documento raíz ha tardado {timeInMs, number, milliseconds} ms"
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | failureTitle": {
+    "message": "Reduce los tiempos de respuesta del servidor (TTFB)"
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | title": {
+    "message": "Los tiempos de respuesta del servidor son rápidos (TTFB)"
+  },
+  "lighthouse-core/audits/user-timings.js | columnDuration": {
+    "message": "Duración"
+  },
+  "lighthouse-core/audits/user-timings.js | columnStartTime": {
+    "message": "Hora de inicio"
+  },
+  "lighthouse-core/audits/user-timings.js | columnType": {
+    "message": "Tipo"
+  },
+  "lighthouse-core/audits/user-timings.js | description": {
+    "message": "Te recomendamos que uses la API Tiempos de usuario en tu aplicación para calcular su rendimiento real durante las principales experiencias de usuario. [Más información](https://developers.google.com/web/tools/lighthouse/audits/user-timing)"
+  },
+  "lighthouse-core/audits/user-timings.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 tiempo de usuario}other{# tiempos de usuario}}"
+  },
+  "lighthouse-core/audits/user-timings.js | title": {
+    "message": "Medidas y marcas de User Timing"
+  },
+  "lighthouse-core/audits/uses-rel-preconnect.js | crossoriginWarning": {
+    "message": "Se ha encontrado un elemento <link> previo a la conexión para \"{securityOrigin}\", pero el navegador no lo ha usado. Comprueba que el atributo `crossorigin` se esté usando correctamente."
+  },
+  "lighthouse-core/audits/uses-rel-preconnect.js | description": {
+    "message": "Puedes añadir sugerencias de recursos `preconnect` o `dns-prefetch` para establecer conexiones previas con orígenes importantes de terceros. [Más información](https://developers.google.com/web/fundamentals/performance/resource-prioritization#preconnect)"
+  },
+  "lighthouse-core/audits/uses-rel-preconnect.js | title": {
+    "message": "Establece conexión previamente con los orígenes necesarios"
+  },
+  "lighthouse-core/audits/uses-rel-preload.js | crossoriginWarning": {
+    "message": "Se ha encontrado un elemento <link> de precarga para \"{preloadURL}\", pero el navegador no lo ha utilizado. Comprueba que el atributo `crossorigin` se esté usando correctamente."
+  },
+  "lighthouse-core/audits/uses-rel-preload.js | description": {
+    "message": "Te recomendamos usar `<link rel=preload>` para dar prioridad a los recursos que se solicitan más tarde al cargar la página. [Más información](https://developers.google.com/web/tools/lighthouse/audits/preload)"
+  },
+  "lighthouse-core/audits/uses-rel-preload.js | title": {
+    "message": "Carga previamente las solicitudes clave"
+  },
+  "lighthouse-core/audits/viewport.js | description": {
+    "message": "Añade una etiqueta `<meta name=\"viewport\">` para que tu aplicación se vea mejor en las pantallas de los dispositivos móviles. [Más información](https://developers.google.com/web/tools/lighthouse/audits/has-viewport-meta-tag)"
+  },
+  "lighthouse-core/audits/viewport.js | explanationNoTag": {
+    "message": "No se ha encontrado ninguna etiqueta `<meta name=\"viewport\">`"
+  },
+  "lighthouse-core/audits/viewport.js | failureTitle": {
+    "message": "No tiene una etiqueta `<meta name=\"viewport\">` con `width` o `initial-scale`"
+  },
+  "lighthouse-core/audits/viewport.js | title": {
+    "message": "Contiene una etiqueta `<meta name=\"viewport\">` con `width` o `initial-scale`"
+  },
+  "lighthouse-core/audits/without-javascript.js | description": {
+    "message": "Tu aplicación debería mostrar algún contenido cuando JavaScript esté inhabilitado, aunque solo sea un aviso para informar al usuario de que es necesario activar JavaScript para usar la aplicación. [Más información](https://developers.google.com/web/tools/lighthouse/audits/no-js)"
+  },
+  "lighthouse-core/audits/without-javascript.js | explanation": {
+    "message": "El cuerpo de la página debería renderizar algo de contenido aunque sus secuencias de comandos no estén disponibles."
+  },
+  "lighthouse-core/audits/without-javascript.js | failureTitle": {
+    "message": "No ofrece contenido de reserva cuando JavaScript está inhabilitado"
+  },
+  "lighthouse-core/audits/without-javascript.js | title": {
+    "message": "Muestra algo de contenido cuando JavaScript está inhabilitado"
+  },
+  "lighthouse-core/audits/works-offline.js | description": {
+    "message": "Si estás creando una aplicación web progresiva, puedes usar un service worker para que tu aplicación funcione sin conexión. [Más información](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)"
+  },
+  "lighthouse-core/audits/works-offline.js | failureTitle": {
+    "message": "La página web no responde con un código de estado HTTP 200 cuando no hay conexión"
+  },
+  "lighthouse-core/audits/works-offline.js | title": {
+    "message": "La página web responde con un código de estado HTTP 200 cuando no hay conexión"
+  },
+  "lighthouse-core/audits/works-offline.js | warningNoLoad": {
+    "message": "Es posible que la página no se esté cargando sin conexión porque la URL de prueba ({requested}) se haya redirigido a \"{final}\". Prueba directamente la segunda URL."
+  },
+  "lighthouse-core/config/default-config.js | a11yAriaGroupDescription": {
+    "message": "A continuación se indican consejos para optimizar el uso de ARIA en tu aplicación, lo que puede mejorar la experiencia de los usuarios de tecnologías de asistencia, como los lectores de pantalla."
+  },
+  "lighthouse-core/config/default-config.js | a11yAriaGroupTitle": {
+    "message": "ARIA"
+  },
+  "lighthouse-core/config/default-config.js | a11yAudioVideoGroupDescription": {
+    "message": "Aquí tienes consejos para proporcionar contenido alternativo para audio y vídeo. Así se puede mejorar la experiencia de los usuarios con dificultades auditivas o visuales."
+  },
+  "lighthouse-core/config/default-config.js | a11yAudioVideoGroupTitle": {
+    "message": "Audio y vídeo"
+  },
+  "lighthouse-core/config/default-config.js | a11yBestPracticesGroupDescription": {
+    "message": "Estos elementos destacan las prácticas recomendadas de accesibilidad más habituales."
+  },
+  "lighthouse-core/config/default-config.js | a11yBestPracticesGroupTitle": {
+    "message": "Prácticas recomendadas"
+  },
+  "lighthouse-core/config/default-config.js | a11yCategoryDescription": {
+    "message": "Estas comprobaciones incluyen consejos para [mejorar la accesibilidad de tu aplicación web](https://developers.google.com/web/fundamentals/accessibility). Solo se pueden detectar un subconjunto de problemas de accesibilidad de forma automática. Por eso, te recomendamos realizar pruebas manuales."
+  },
+  "lighthouse-core/config/default-config.js | a11yCategoryManualDescription": {
+    "message": "Estos elementos se ocupan de áreas que las herramientas de prueba automáticas no pueden analizar. Consulta más información sobre cómo [revisar la accesibilidad](https://developers.google.com/web/fundamentals/accessibility/how-to-review) en nuestra guía."
+  },
+  "lighthouse-core/config/default-config.js | a11yCategoryTitle": {
+    "message": "Accesibilidad"
+  },
+  "lighthouse-core/config/default-config.js | a11yColorContrastGroupDescription": {
+    "message": "A continuación se indican consejos para facilitar la lectura del contenido."
+  },
+  "lighthouse-core/config/default-config.js | a11yColorContrastGroupTitle": {
+    "message": "Contraste"
+  },
+  "lighthouse-core/config/default-config.js | a11yLanguageGroupDescription": {
+    "message": "A continuación se indican consejos para que los usuarios con diversas configuraciones regionales puedan interpretar mejor el contenido de las páginas."
+  },
+  "lighthouse-core/config/default-config.js | a11yLanguageGroupTitle": {
+    "message": "Internacionalización y localización"
+  },
+  "lighthouse-core/config/default-config.js | a11yNamesLabelsGroupDescription": {
+    "message": "A continuación se indican consejos para mejorar la semántica de los controles de tu aplicación. Estos consejos pueden mejorar la experiencia de los usuarios de tecnologías de asistencia, como los lectores de pantalla."
+  },
+  "lighthouse-core/config/default-config.js | a11yNamesLabelsGroupTitle": {
+    "message": "Nombres y etiquetas"
+  },
+  "lighthouse-core/config/default-config.js | a11yNavigationGroupDescription": {
+    "message": "Aquí tienes consejos para facilitar el desplazamiento con el teclado en tu aplicación."
+  },
+  "lighthouse-core/config/default-config.js | a11yNavigationGroupTitle": {
+    "message": "Navegación"
+  },
+  "lighthouse-core/config/default-config.js | a11yTablesListsVideoGroupDescription": {
+    "message": "Aquí tienes consejos para mejorar la lectura de datos en tablas o listas con tecnologías de asistencia como los lectores de pantalla."
+  },
+  "lighthouse-core/config/default-config.js | a11yTablesListsVideoGroupTitle": {
+    "message": "Tablas y listas"
+  },
+  "lighthouse-core/config/default-config.js | bestPracticesCategoryTitle": {
+    "message": "Prácticas recomendadas"
+  },
+  "lighthouse-core/config/default-config.js | budgetsGroupDescription": {
+    "message": "Los límites de rendimiento definen los estándares de rendimiento de tu sitio web."
+  },
+  "lighthouse-core/config/default-config.js | budgetsGroupTitle": {
+    "message": "Límites"
+  },
+  "lighthouse-core/config/default-config.js | diagnosticsGroupDescription": {
+    "message": "Consulta más información sobre el rendimiento de tu aplicación. Estos datos no [afectan directamente](https://github.com/GoogleChrome/lighthouse/blob/d2ec9ffbb21de9ad1a0f86ed24575eda32c796f0/docs/scoring.md#how-are-the-scores-weighted) a la puntuación del rendimiento."
+  },
+  "lighthouse-core/config/default-config.js | diagnosticsGroupTitle": {
+    "message": "Diagnósticos"
+  },
+  "lighthouse-core/config/default-config.js | firstPaintImprovementsGroupDescription": {
+    "message": "El aspecto más importante del rendimiento es la rapidez con la que se renderizan los píxeles en la pantalla. Métricas clave: Primer renderizado con contenido y Primer renderizado significativo"
+  },
+  "lighthouse-core/config/default-config.js | firstPaintImprovementsGroupTitle": {
+    "message": "Mejoras del primer renderizado"
+  },
+  "lighthouse-core/config/default-config.js | loadOpportunitiesGroupDescription": {
+    "message": "Estas sugerencias pueden ayudar a que tu página cargue más rápido. No [afectan directamente](https://github.com/GoogleChrome/lighthouse/blob/d2ec9ffbb21de9ad1a0f86ed24575eda32c796f0/docs/scoring.md#how-are-the-scores-weighted) a la puntuación del rendimiento"
+  },
+  "lighthouse-core/config/default-config.js | loadOpportunitiesGroupTitle": {
+    "message": "Oportunidades"
+  },
+  "lighthouse-core/config/default-config.js | metricGroupTitle": {
+    "message": "Métricas"
+  },
+  "lighthouse-core/config/default-config.js | overallImprovementsGroupDescription": {
+    "message": "Mejora la experiencia de carga general para que la página responda bien y se pueda usar lo antes posible. Métricas clave: Tiempo hasta que está interactiva, Índice de velocidad"
+  },
+  "lighthouse-core/config/default-config.js | overallImprovementsGroupTitle": {
+    "message": "Mejoras generales"
+  },
+  "lighthouse-core/config/default-config.js | performanceCategoryTitle": {
+    "message": "Rendimiento"
+  },
+  "lighthouse-core/config/default-config.js | pwaCategoryDescription": {
+    "message": "Estas comprobaciones se centran en diferentes aspectos de las aplicaciones web progresivas. [Más información](https://developers.google.com/web/progressive-web-apps/checklist)"
+  },
+  "lighthouse-core/config/default-config.js | pwaCategoryManualDescription": {
+    "message": "Estas comprobaciones son necesarias según el documento de referencia [PWA Checklist](https://developers.google.com/web/progressive-web-apps/checklist) (lista de comprobación para aplicaciones web progresivas), pero Lighthouse no las verifica automáticamente. Es importante que las verifiques a mano (aunque no afectan a la puntuación)."
+  },
+  "lighthouse-core/config/default-config.js | pwaCategoryTitle": {
+    "message": "Aplicación web progresiva"
+  },
+  "lighthouse-core/config/default-config.js | pwaFastReliableGroupTitle": {
+    "message": "Rapidez y fiabilidad"
+  },
+  "lighthouse-core/config/default-config.js | pwaInstallableGroupTitle": {
+    "message": "Instalabilidad"
+  },
+  "lighthouse-core/config/default-config.js | pwaOptimizedGroupTitle": {
+    "message": "Optimizado para PWA"
+  },
+  "lighthouse-core/config/default-config.js | seoCategoryDescription": {
+    "message": "Estas comprobaciones aseguran que tu página esté optimizada para posicionarse en los resultados de los buscadores. Hay otros factores que Lighthouse no comprueba y que pueden afectar a tu posicionamiento en los buscadores. [Más información](https://support.google.com/webmasters/answer/35769)"
+  },
+  "lighthouse-core/config/default-config.js | seoCategoryManualDescription": {
+    "message": "Ejecuta estos validadores adicionales en tu sitio web para comprobar más prácticas recomendadas de SEO."
+  },
+  "lighthouse-core/config/default-config.js | seoCategoryTitle": {
+    "message": "SEO"
+  },
+  "lighthouse-core/config/default-config.js | seoContentGroupDescription": {
+    "message": "Edita el código HTML de tu página web de forma que los rastreadores puedan entender mejor el contenido de tu aplicación."
+  },
+  "lighthouse-core/config/default-config.js | seoContentGroupTitle": {
+    "message": "Prácticas recomendadas de contenido"
+  },
+  "lighthouse-core/config/default-config.js | seoCrawlingGroupDescription": {
+    "message": "Para aparecer en los resultados de búsqueda, los rastreadores necesitan acceder a tu aplicación."
+  },
+  "lighthouse-core/config/default-config.js | seoCrawlingGroupTitle": {
+    "message": "Rastrear e indexar"
+  },
+  "lighthouse-core/config/default-config.js | seoMobileGroupDescription": {
+    "message": "Asegúrate de que tus páginas están optimizadas para móviles de forma que los usuarios no tengan que pellizcar la pantalla o ampliarla para poder leer su contenido. [Más información](https://developers.google.com/search/mobile-sites/)"
+  },
+  "lighthouse-core/config/default-config.js | seoMobileGroupTitle": {
+    "message": "Optimización para móviles"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnCacheTTL": {
+    "message": "Tiempo de vida en caché"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnLocation": {
+    "message": "Ubicación"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnName": {
+    "message": "Nombre"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnRequests": {
+    "message": "Solicitudes"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnResourceType": {
+    "message": "Tipo de recurso"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnSize": {
+    "message": "Tamaño"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnTimeSpent": {
+    "message": "Duración"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnTransferSize": {
+    "message": "Tamaño de la transferencia"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnURL": {
+    "message": "URL"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnWastedBytes": {
+    "message": "Ahorro potencial"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnWastedMs": {
+    "message": "Ahorro potencial"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | displayValueByteSavings": {
+    "message": "Ahorro potencial de {wastedBytes, number, bytes} kB"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | displayValueMsSavings": {
+    "message": "Ahorro potencial de {wastedMs, number, milliseconds} ms"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | documentResourceType": {
+    "message": "Documento"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | fontResourceType": {
+    "message": "Fuente"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | imageResourceType": {
+    "message": "Imagen"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | mediaResourceType": {
+    "message": "Contenido multimedia"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | ms": {
+    "message": "{timeInMs, number, milliseconds} ms"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | otherResourceType": {
+    "message": "Otros"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | scriptResourceType": {
+    "message": "Secuencia de comandos"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | seconds": {
+    "message": "{timeInMs, number, seconds} s"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | stylesheetResourceType": {
+    "message": "Hoja de estilo"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | thirdPartyResourceType": {
+    "message": "Recursos externos"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | totalResourceType": {
+    "message": "Total"
+  },
+  "lighthouse-core/lib/lh-error.js | badTraceRecording": {
+    "message": "Se ha producido un error al registrar el rastro durante la carga de la página. Ejecuta Lighthouse de nuevo. ({errorCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | criTimeout": {
+    "message": "Se ha agotado el tiempo de espera de la conexión inicial del protocolo del depurador."
+  },
+  "lighthouse-core/lib/lh-error.js | didntCollectScreenshots": {
+    "message": "Chrome no ha recopilado ninguna captura de pantalla al cargar la página. Comprueba que haya contenido visible en la página e intenta ejecutar Lighthouse de nuevo. ({errorCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | dnsFailure": {
+    "message": "Los servidores DNS no han podido resolver el dominio proporcionado."
+  },
+  "lighthouse-core/lib/lh-error.js | erroredRequiredArtifact": {
+    "message": "No se ha podido recuperar el recurso {artifactName} necesario: {errorMessage}"
+  },
+  "lighthouse-core/lib/lh-error.js | internalChromeError": {
+    "message": "Se ha producido un error interno de Chrome. Reinicia Chrome y prueba a ejecutar Lighthouse de nuevo."
+  },
+  "lighthouse-core/lib/lh-error.js | missingRequiredArtifact": {
+    "message": "No se ha podido recuperar el recurso {artifactName} necesario."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailed": {
+    "message": "Lighthouse no ha podido cargar correctamente la página que has solicitado. Comprueba que estás probando la URL correcta y que el servidor responde correctamente a todas las solicitudes."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedHung": {
+    "message": "Lighthouse no ha podido cargar correctamente la URL que has solicitado porque la página ha dejado de responder."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedInsecure": {
+    "message": "La URL que has proporcionado no tiene un certificado de seguridad válido. {securityMessages}"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedInterstitial": {
+    "message": "Chrome ha evitado la carga de la página con un intersticial. Comprueba que estás probando la URL correcta y que el servidor responde correctamente a todas las solicitudes."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedWithDetails": {
+    "message": "Lighthouse no ha podido cargar correctamente la página que has solicitado. Comprueba que estás probando la URL correcta y que el servidor responde correctamente a todas las solicitudes. (Detalles: {errorDetails})"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedWithStatusCode": {
+    "message": "Lighthouse no ha podido cargar correctamente la página que has solicitado. Comprueba que estás probando la URL correcta y que el servidor responde correctamente a todas las solicitudes. (Código de estado: {statusCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadTookTooLong": {
+    "message": "La página ha tardado demasiado tiempo en cargarse. Sigue los consejos del informe para reducir el tiempo de carga de la página y prueba a ejecutar Lighthouse de nuevo. ({errorCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | protocolTimeout": {
+    "message": "Se ha superado el tiempo asignado para la respuesta de protocolo de DevTools. (Método: {protocolMethod})"
+  },
+  "lighthouse-core/lib/lh-error.js | requestContentTimeout": {
+    "message": "Se ha superado el tiempo asignado para obtener el contenido de los recursos"
+  },
+  "lighthouse-core/lib/lh-error.js | urlInvalid": {
+    "message": "La URL que has proporcionado no es válida."
+  },
+  "lighthouse-core/report/html/renderer/util.js | auditGroupExpandTooltip": {
+    "message": "Mostrar auditorías"
+  },
+  "lighthouse-core/report/html/renderer/util.js | crcInitialNavigation": {
+    "message": "Navegación inicial"
+  },
+  "lighthouse-core/report/html/renderer/util.js | crcLongestDurationLabel": {
+    "message": "Latencia de ruta crítica máxima:"
+  },
+  "lighthouse-core/report/html/renderer/util.js | errorLabel": {
+    "message": "Error"
+  },
+  "lighthouse-core/report/html/renderer/util.js | errorMissingAuditInfo": {
+    "message": "Error del informe: no hay información de la auditoría"
+  },
+  "lighthouse-core/report/html/renderer/util.js | labDataTitle": {
+    "message": "Datos de prueba"
+  },
+  "lighthouse-core/report/html/renderer/util.js | lsPerformanceCategoryDescription": {
+    "message": "[Lighthouse](https://developers.google.com/web/tools/lighthouse/) ha analizado la página actual en una red móvil emulada. Los valores son estimaciones y pueden variar."
+  },
+  "lighthouse-core/report/html/renderer/util.js | manualAuditsGroupTitle": {
+    "message": "Elementos adicionales que se deben comprobar manualmente"
+  },
+  "lighthouse-core/report/html/renderer/util.js | notApplicableAuditsGroupTitle": {
+    "message": "No aplicable"
+  },
+  "lighthouse-core/report/html/renderer/util.js | opportunityResourceColumnLabel": {
+    "message": "Oportunidad"
+  },
+  "lighthouse-core/report/html/renderer/util.js | opportunitySavingsColumnLabel": {
+    "message": "Ahorro estimado"
+  },
+  "lighthouse-core/report/html/renderer/util.js | passedAuditsGroupTitle": {
+    "message": "Auditorías aprobadas"
+  },
+  "lighthouse-core/report/html/renderer/util.js | snippetCollapseButtonLabel": {
+    "message": "Ocultar fragmento"
+  },
+  "lighthouse-core/report/html/renderer/util.js | snippetExpandButtonLabel": {
+    "message": "Mostrar fragmento"
+  },
+  "lighthouse-core/report/html/renderer/util.js | thirdPartyResourcesLabel": {
+    "message": "Mostrar recursos externos"
+  },
+  "lighthouse-core/report/html/renderer/util.js | toplevelWarningsMessage": {
+    "message": "Algunos problemas han afectado a la ejecución de Lighthouse:"
+  },
+  "lighthouse-core/report/html/renderer/util.js | varianceDisclaimer": {
+    "message": "Los valores son estimaciones y pueden variar. La puntuación del rendimiento [se basa solo en estas métricas](https://github.com/GoogleChrome/lighthouse/blob/d2ec9ffbb21de9ad1a0f86ed24575eda32c796f0/docs/scoring.md#how-are-the-scores-weighted)."
+  },
+  "lighthouse-core/report/html/renderer/util.js | warningAuditsGroupTitle": {
+    "message": "Auditorías aprobadas con advertencias"
+  },
+  "lighthouse-core/report/html/renderer/util.js | warningHeader": {
+    "message": "Advertencias: "
+  },
+  "stack-packs/packs/wordpress.js | efficient_animated_content": {
+    "message": "Puedes subir tu GIF a un servicio que permita insertarlo como un vídeo HTML5."
+  },
+  "stack-packs/packs/wordpress.js | offscreen_images": {
+    "message": "Instala un [complemento de carga en diferido de WordPress](https://wordpress.org/plugins/search/lazy+load/) con la capacidad de posponer imágenes que no aparecen en la pantalla, o cambia a un tema con esa función. También puedes usar el [complemento AMP](https://wordpress.org/plugins/amp/)."
+  },
+  "stack-packs/packs/wordpress.js | render_blocking_resources": {
+    "message": "Existen varios complementos de WordPress que pueden ayudarte a [insertar recursos fundamentales](https://wordpress.org/plugins/search/critical+css/) o [posponer recursos menos importantes](https://wordpress.org/plugins/search/defer+css+javascript/). Ten en cuenta que las optimizaciones que ofrecen estos complementos pueden bloquear funciones de tu tema o tus complementos, así que seguramente tengas que hacer cambios en el código."
+  },
+  "stack-packs/packs/wordpress.js | time_to_first_byte": {
+    "message": "Los temas, los complementos y las especificaciones del servidor afectan al tiempo de respuesta. Puedes buscar un tema más optimizado, seleccionar un complemento de optimización o actualizar tu servidor."
+  },
+  "stack-packs/packs/wordpress.js | total_byte_weight": {
+    "message": "Puedes mostrar fragmentos en tus listas de entradas (por ejemplo, mediante la etiqueta \"more\"), reducir la cantidad de entradas que se muestran en cada página, dividir tus entradas más largas en múltiples páginas o usar un complemento para posponer la carga de los comentarios."
+  },
+  "stack-packs/packs/wordpress.js | unminified_css": {
+    "message": "Hay varios [complementos de WordPress](https://wordpress.org/plugins/search/minify+css/) que pueden concatenar, minificar y comprimir tus estilos para acelerar tu sitio web. Te recomendamos que, si es posible, uses un proceso de creación para realizar la minificación de forma anticipada."
+  },
+  "stack-packs/packs/wordpress.js | unminified_javascript": {
+    "message": "Hay varios [complementos de WordPress](https://wordpress.org/plugins/search/minify+javascript/) que pueden concatenar, minificar y comprimir tus secuencias de comandos para acelerar tu sitio web. Te recomendamos que, si es posible, uses un proceso de creación para realizar la minificación de forma anticipada."
+  },
+  "stack-packs/packs/wordpress.js | unused_css_rules": {
+    "message": "Puedes reducir o cambiar la cantidad de [complementos de WordPress](https://wordpress.org/plugins/) que cargan archivos CSS sin usar en tu página. Para identificar los complementos que añaden archivos CSS externos, ejecuta la [cobertura de código](https://developers.google.com/web/updates/2017/04/devtools-release-notes#coverage) en DevTools de Chrome. Puedes identificar el tema o complemento concreto en la URL de la hoja de estilo. Presta atención a los complementos con varias hojas de estilo en la lista y con muchos elementos en rojo en la cobertura de código. Un complemento solo debería poner en cola una hoja de estilo (si esta se usa en la página)."
+  },
+  "stack-packs/packs/wordpress.js | unused_javascript": {
+    "message": "Puedes reducir o cambiar la cantidad de [complementos de WordPress](https://wordpress.org/plugins/) que cargan código de JavaScript sin usar en tu página. Para identificar los complementos que añaden código de JavaScript externo, ejecuta la [cobertura de código](https://developers.google.com/web/updates/2017/04/devtools-release-notes#coverage) en DevTools de Chrome. Puedes identificar el tema o complemento concreto en la URL de la secuencia de comandos. Presta atención a los complementos con varias secuencias de comandos en la lista y con muchos elementos en rojo en la cobertura de código. Un complemento solo debería poner en cola una secuencia de comandos (si esta se usa en la página)."
+  },
+  "stack-packs/packs/wordpress.js | uses_long_cache_ttl": {
+    "message": "Consulta más información sobre el [almacenamiento en la memoria caché del navegador en WordPress](https://codex.wordpress.org/WordPress_Optimization#Browser_Caching)."
+  },
+  "stack-packs/packs/wordpress.js | uses_optimized_images": {
+    "message": "Puedes utilizar un [complemento de optimización de imágenes de WordPress](https://wordpress.org/plugins/search/optimize+images/) que comprima tus imágenes conservando la calidad."
+  },
+  "stack-packs/packs/wordpress.js | uses_responsive_images": {
+    "message": "Sube imágenes directamente a la [biblioteca multimedia](https://codex.wordpress.org/Media_Library_Screen) para asegurarte de que estén disponibles los tamaños de imagen necesarios y, después, insértalas desde esa biblioteca multimedia o utiliza el widget de imagen para usar los tamaños de imagen óptimos (incluidos los tamaños de los puntos de interrupción adaptables). Evita usar imágenes `Full Size`, a no ser que las dimensiones sean las adecuadas para su uso. [Más información](https://codex.wordpress.org/Inserting_Images_into_Posts_and_Pages#Image_Size)"
+  },
+  "stack-packs/packs/wordpress.js | uses_text_compression": {
+    "message": "Puedes habilitar la compresión de texto en la configuración de tu servidor web."
+  },
+  "stack-packs/packs/wordpress.js | uses_webp_images": {
+    "message": "Puedes utilizar un [complemento](https://wordpress.org/plugins/search/convert+webp/) o servicio que convierta automáticamente las imágenes que subas en los formatos óptimos."
+  }
+}
diff --git a/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/fi.json b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/fi.json
new file mode 100644
index 0000000..69cdc76
--- /dev/null
+++ b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/fi.json
@@ -0,0 +1,1541 @@
+{
+  "lighthouse-core/audits/accessibility/accesskeys.js | description": {
+    "message": "Pääsyavaimien avulla käyttäjät voivat nopeasti kohdistaa tiettyyn sivun osaan. Jotta sivulla siirtyminen onnistuu, jokaisen pääsyavaimen on oltava yksilöllinen. [Lue lisää](https://web.dev/accesskeys/)."
+  },
+  "lighthouse-core/audits/accessibility/accesskeys.js | failureTitle": {
+    "message": "`[accesskey]`-arvot eivät ole yksilöllisiä"
+  },
+  "lighthouse-core/audits/accessibility/accesskeys.js | title": {
+    "message": "`[accesskey]`-arvot ovat yksilöllisiä."
+  },
+  "lighthouse-core/audits/accessibility/aria-allowed-attr.js | description": {
+    "message": "Jokainen ARIA-`role` tukee tiettyä `aria-*`-määritteiden osaa. Vastaavuusjärjestyksen sekoittaminen mitätöi `aria-*`-määritteet. [Lue lisää](https://web.dev/aria-allowed-attr/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-allowed-attr.js | failureTitle": {
+    "message": "`[aria-*]`-määritteet eivät vastaa rooleja"
+  },
+  "lighthouse-core/audits/accessibility/aria-allowed-attr.js | title": {
+    "message": "`[aria-*]`-määritteet vastaavat roolejaan"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-attr.js | description": {
+    "message": "Joillakin ARIA-rooleilla on pakollisia määritteitä, jotka kuvaavat elementin tilaa näytönlukuohjelmille. [Lue lisää](https://web.dev/aria-required-attr/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-required-attr.js | failureTitle": {
+    "message": "`[role]`-elementeissä ei ole kaikkia vaadittuja `[aria-*]`-määritteitä"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-attr.js | title": {
+    "message": "`[role]`-elementeissä on kaikki vaaditut `[aria-*]`-määritteet"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-children.js | description": {
+    "message": "Voidakseen suorittaa esteettömyyteen liittyvät toiminnot joidenkin alatason ARIA-roolien on kuuluttava tiettyihin ylätason rooleihin. [Lue lisää](https://web.dev/aria-required-children/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-required-children.js | failureTitle": {
+    "message": "Sellaisia `[role]`:n sisältäviä elementtejä puuttuu, jotka edellyttävät tiettyjä alatason `[role]`-elementtejä"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-children.js | title": {
+    "message": "Käytössä on `[role]`:n sisältäviä elementtejä, jotka edellyttävät tiettyjä alatason `[role]`-elementtejä"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-parent.js | description": {
+    "message": "Voidakseen suorittaa esteettömyyteen liittyvät toiminnot joidenkin alatason ARIA-roolien on kuuluttava tiettyihin ylätason rooleihin. [Lue lisää](https://web.dev/aria-required-parent/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-required-parent.js | failureTitle": {
+    "message": "`[role]`-elementit eivät sisälly niiden pakolliseen ylätason elementtiin"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-parent.js | title": {
+    "message": "`[role]`-elementit sisältyvät niiden pakolliseen ylätason elementtiin"
+  },
+  "lighthouse-core/audits/accessibility/aria-roles.js | description": {
+    "message": "Voidakseen suorittaa esteettömyyteen liittyvät toiminnot ARIA-rooleilla on oltava kelvolliset arvot. [Lue lisää](https://web.dev/aria-roles/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-roles.js | failureTitle": {
+    "message": "`[role]`-arvot eivät ole kelvollisia"
+  },
+  "lighthouse-core/audits/accessibility/aria-roles.js | title": {
+    "message": "`[role]`-arvot ovat kelvollisia"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr-value.js | description": {
+    "message": "Avustustekniikat (kuten näytönlukuohjelmat) eivät voi tulkita ARIA-määritteitä, joissa on virheelliset arvot. [Lue lisää](https://web.dev/aria-valid-attr-value/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr-value.js | failureTitle": {
+    "message": "`[aria-*]`-määritteiden arvot eivät ole kelvollisia"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr-value.js | title": {
+    "message": "`[aria-*]`-määritteiden arvot ovat kelvollisia"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr.js | description": {
+    "message": "Avustustekniikat (kuten näytönlukuohjelmat) eivät voi tulkita ARIA-määritteitä, joilla on virheelliset nimet. [Lue lisää](https://web.dev/aria-valid-attr/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr.js | failureTitle": {
+    "message": "`[aria-*]`-määritteet eivät ole kelvollisia tai sisältävät kirjoitusvirheitä"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr.js | title": {
+    "message": "`[aria-*]`-määritteet ovat kelvollisia eivätkä sisällä kirjoitusvirheitä"
+  },
+  "lighthouse-core/audits/accessibility/audio-caption.js | description": {
+    "message": "Tekstitykset tekevät äänielementeistä merkittäviä kuuroille tai heikkokuuloisille kertomalla, kuka puhuu ja mitä, sekä antamalla muita kuin puheeseen liittyviä tietoja. [Lue lisää](https://web.dev/audio-caption/)."
+  },
+  "lighthouse-core/audits/accessibility/audio-caption.js | failureTitle": {
+    "message": "`<audio>`-elementeistä puuttuu `<track>`-elementti, jossa on `[kind=\"captions\"]`"
+  },
+  "lighthouse-core/audits/accessibility/audio-caption.js | title": {
+    "message": "`<audio>`-elementit sisältävät `<track>`-elementin, jossa on `[kind=\"captions\"]`"
+  },
+  "lighthouse-core/audits/accessibility/axe-audit.js | failingElementsHeader": {
+    "message": "Hylätyt elementit"
+  },
+  "lighthouse-core/audits/accessibility/button-name.js | description": {
+    "message": "Kun painikkeen nimi ei ole esteetön, näytönlukuohjelmat ilmoittavat sen painikkeeksi, jolloin se on hyödytön näytönlukuohjelmia tarvitseville käyttäjille. [Lue lisää](https://web.dev/button-name/)."
+  },
+  "lighthouse-core/audits/accessibility/button-name.js | failureTitle": {
+    "message": "Painikkeiden nimet eivät ole esteettömiä"
+  },
+  "lighthouse-core/audits/accessibility/button-name.js | title": {
+    "message": "Painikkeiden nimet ovat esteettömiä"
+  },
+  "lighthouse-core/audits/accessibility/bypass.js | description": {
+    "message": "Tapojen lisääminen toistuvan sisällön ohittamiseen auttaa näppäimistön käyttäjiä siirtymään sivulla tehokkaammin. [Lue lisää](https://web.dev/bypass/)."
+  },
+  "lighthouse-core/audits/accessibility/bypass.js | failureTitle": {
+    "message": "Sivu ei sisällä otsikkoa, ohituslinkkiä tai maamerkin aluetta"
+  },
+  "lighthouse-core/audits/accessibility/bypass.js | title": {
+    "message": "Sivu sisältää otsikon, ohituslinkin tai maamerkin alueen"
+  },
+  "lighthouse-core/audits/accessibility/color-contrast.js | description": {
+    "message": "Alhaisen kontrastin teksti on monelle vaikea tai mahdoton lukea. [Lue lisää](https://web.dev/color-contrast/)."
+  },
+  "lighthouse-core/audits/accessibility/color-contrast.js | failureTitle": {
+    "message": "Taustan ja etualan värien kontrastisuhde ei ole riittävä."
+  },
+  "lighthouse-core/audits/accessibility/color-contrast.js | title": {
+    "message": "Taustan ja etualan värien kontrastisuhde on riittävä"
+  },
+  "lighthouse-core/audits/accessibility/definition-list.js | description": {
+    "message": "Kun määritelmäluetteloita ei ole merkitty kunnolla, näytönlukuohjelmien tuottama sisältö voi olla sekavaa tai epätarkkaa. [Lue lisää](https://web.dev/definition-list/)."
+  },
+  "lighthouse-core/audits/accessibility/definition-list.js | failureTitle": {
+    "message": "`<dl>`-elementit eivät sisällä vain oikein järjestettyjä `<dt>`- ja `<dd>`-ryhmiä ja `<script>`- tai `<template>`-elementtejä"
+  },
+  "lighthouse-core/audits/accessibility/definition-list.js | title": {
+    "message": "`<dl>`-elementit sisältävät vain oikein järjestettyjä `<dt>`- ja `<dd>`-ryhmiä ja `<script>`- tai `<template>`-elementtejä"
+  },
+  "lighthouse-core/audits/accessibility/dlitem.js | description": {
+    "message": "Määritelmien luettelokohdat (`<dt>` ja `<dd>`) on yhdistettävä ylätason `<dl>`-elementtiin, jotta näytönlukuohjelmat voivat varmasti lukea ne oikein. [Lue lisää](https://web.dev/dlitem/)."
+  },
+  "lighthouse-core/audits/accessibility/dlitem.js | failureTitle": {
+    "message": "Määritelmien luettelokohtia ei ole yhdistetty `<dl>`-elementeillä"
+  },
+  "lighthouse-core/audits/accessibility/dlitem.js | title": {
+    "message": "Määritelmien luettelokohdat on yhdistetty `<dl>`-elementeillä"
+  },
+  "lighthouse-core/audits/accessibility/document-title.js | description": {
+    "message": "Nimi antaa näytönlukuohjelmaa käyttäville yleiskuvan sivusta, ja hakukoneen käyttäjille nimi on tärkeä oleellisten sivujen löytämiseen hakutuloksista. [Lue lisää](https://web.dev/document-title/)."
+  },
+  "lighthouse-core/audits/accessibility/document-title.js | failureTitle": {
+    "message": "Dokumentissa ei ole `<title>`-elementtiä"
+  },
+  "lighthouse-core/audits/accessibility/document-title.js | title": {
+    "message": "Dokumentissa on `<title>`-elementti"
+  },
+  "lighthouse-core/audits/accessibility/duplicate-id.js | description": {
+    "message": "Tunnusmääritteen arvon on oltava yksilöllinen, jotta avustustekniikat eivät jätä muita esiintymiä huomioimatta. [Lue lisää](https://web.dev/duplicate-id/)."
+  },
+  "lighthouse-core/audits/accessibility/duplicate-id.js | failureTitle": {
+    "message": "Sivulla olevat `[id]`-määritteet eivät ole yksilöllisiä"
+  },
+  "lighthouse-core/audits/accessibility/duplicate-id.js | title": {
+    "message": "Sivulla olevat `[id]`-määritteet ovat yksilöllisiä"
+  },
+  "lighthouse-core/audits/accessibility/frame-title.js | description": {
+    "message": "Näytönlukuohjelman käyttäjät saavat tietää kehysten sisällöt vain kehysten nimien avulla. [Lue lisää](https://web.dev/frame-title/)."
+  },
+  "lighthouse-core/audits/accessibility/frame-title.js | failureTitle": {
+    "message": "`<frame>`- tai `<iframe>`-elementeillä ei ole nimeä"
+  },
+  "lighthouse-core/audits/accessibility/frame-title.js | title": {
+    "message": "`<frame>`- tai `<iframe>`-elementeillä on nimi"
+  },
+  "lighthouse-core/audits/accessibility/html-has-lang.js | description": {
+    "message": "Jos sivulla ei ole kielimääritettä, näytönlukuohjelma arvioi kieleksi oletuskielen, jonka käyttäjä valitsi ottaessaan näytönlukuohjelman käyttöön. Jos oletuskieli ei ole käytössä sivulla, näytönlukuohjelma voi ilmoittaa sivun tekstin väärin. [Lue lisää](https://web.dev/html-has-lang/)."
+  },
+  "lighthouse-core/audits/accessibility/html-has-lang.js | failureTitle": {
+    "message": "`<html>`-elementissä ei ole `[lang]`-määritettä"
+  },
+  "lighthouse-core/audits/accessibility/html-has-lang.js | title": {
+    "message": "`<html>`-elementissä on `[lang]`-määrite"
+  },
+  "lighthouse-core/audits/accessibility/html-lang-valid.js | description": {
+    "message": "Kelvollisen [BCP 47 language](https://www.w3.org/International/questions/qa-choosing-language-tags#question) ‑määritteen ilmoittaminen elementeille auttaa näytönlukuohjelmaa kertomaan tekstin oikein. [Lue lisää](https://web.dev/html-lang-valid/)."
+  },
+  "lighthouse-core/audits/accessibility/html-lang-valid.js | failureTitle": {
+    "message": "`<html>`-elementin `[lang]`-määritteen arvo ei ole kelvollinen"
+  },
+  "lighthouse-core/audits/accessibility/html-lang-valid.js | title": {
+    "message": "`<html>`-elementin `[lang]`-määritteen arvo on kelvollinen"
+  },
+  "lighthouse-core/audits/accessibility/image-alt.js | description": {
+    "message": "Informatiivisilla elementeillä pitäisi olla lyhyt ja kuvaileva vaihtoehtoinen teksti. Koristeelliset elementit voidaan ohittaa tyhjällä Alt-määritteellä. [Lue lisää](https://web.dev/image-alt/)."
+  },
+  "lighthouse-core/audits/accessibility/image-alt.js | failureTitle": {
+    "message": "Kuvaelementeillä ei ole `[alt]`-määritteitä"
+  },
+  "lighthouse-core/audits/accessibility/image-alt.js | title": {
+    "message": "Kuvaelementeillä on `[alt]`-määritteet"
+  },
+  "lighthouse-core/audits/accessibility/input-image-alt.js | description": {
+    "message": "Kun `<input>`-painikkeena käytetään kuvaa, vaihtoehtoisen tekstin lisääminen voi auttaa näytönlukuohjelman käyttäjiä ymmärtämään painikkeen tarkoituksen. [Lue lisää](https://web.dev/input-image-alt/)."
+  },
+  "lighthouse-core/audits/accessibility/input-image-alt.js | failureTitle": {
+    "message": "`<input type=\"image\">`-elementeissä ei ole `[alt]`-tekstiä"
+  },
+  "lighthouse-core/audits/accessibility/input-image-alt.js | title": {
+    "message": "`<input type=\"image\">`-elementeissä on `[alt]`-teksti"
+  },
+  "lighthouse-core/audits/accessibility/label.js | description": {
+    "message": "Tunnisteilla varmistetaan, että avustustekniikat (kuten näytönlukuohjelmat) ilmoittavat lomakkeiden ohjaimista oikein. [Lue lisää](https://web.dev/label/)."
+  },
+  "lighthouse-core/audits/accessibility/label.js | failureTitle": {
+    "message": "Lomakkeiden elementeillä ei ole niihin liittyviä tunnisteita"
+  },
+  "lighthouse-core/audits/accessibility/label.js | title": {
+    "message": "Lomake-elementeillä on niihin liittyvät tunnisteet"
+  },
+  "lighthouse-core/audits/accessibility/layout-table.js | description": {
+    "message": "Asettelua varten luodussa taulukossa ei pitäisi olla dataelementtejä, kuten taulukoiden otsikko ‑elementtejä, tekstityselementtejä tai yhteenvetomääritteitä, koska ne voivat tehdä näytönlukuohjelman käytöstä sekavaa. [Lue lisää](https://web.dev/layout-table/)."
+  },
+  "lighthouse-core/audits/accessibility/layout-table.js | failureTitle": {
+    "message": "Esittelyyn tarkoitetut `<table>`-elementit eivät vältä `<th>`-,`<caption>`- tai `[summary]`-määritteen käyttöä"
+  },
+  "lighthouse-core/audits/accessibility/layout-table.js | title": {
+    "message": "Esittelyyn tarkoitetut `<table>`-elementit välttävät `<th>`-,`<caption>`- tai `[summary]`-määritteiden käyttöä"
+  },
+  "lighthouse-core/audits/accessibility/link-name.js | description": {
+    "message": "Linkkiteksti (ja vaihtoehtoinen teksti kuvia varten, kun niitä käytetään linkkeinä), joka on erottuva, yksilöllinen ja tarkennettavissa, parantaa näytönlukuohjelmaa käyttävien navigointikokemusta. [Lue lisää](https://web.dev/link-name/)."
+  },
+  "lighthouse-core/audits/accessibility/link-name.js | failureTitle": {
+    "message": "Linkkien nimet eivät ole helposti erottuvia"
+  },
+  "lighthouse-core/audits/accessibility/link-name.js | title": {
+    "message": "Linkkien nimet ovat helposti erottuvia"
+  },
+  "lighthouse-core/audits/accessibility/list.js | description": {
+    "message": "Näytönlukuohjelmat ilmoittavat luettelot tietyillä tavoilla. Kelvollinen luettelorakenne tukee näytönlukuohjelman tuottamaa sisältöä. [Lue lisää](https://web.dev/list/)."
+  },
+  "lighthouse-core/audits/accessibility/list.js | failureTitle": {
+    "message": "Luettelot eivät sisällä ainoastaan `<li>`-elementtejä ja skriptiä tukevia elementtejä (`<script>` ja `<template>`)"
+  },
+  "lighthouse-core/audits/accessibility/list.js | title": {
+    "message": "Luettelot sisältävät ainoastaan `<li>`-elementtejä ja skriptiä tukevia elementtejä (`<script>` ja `<template>`)"
+  },
+  "lighthouse-core/audits/accessibility/listitem.js | description": {
+    "message": "Näytönlukuohjelmat edellyttävät, että luettelokohdat (`<li>`) sisältyvät ylätason elementteihin `<ul>` tai `<ol>`, jotta ne voidaan ilmoittaa oikein. [Lue lisää](https://web.dev/listitem/)."
+  },
+  "lighthouse-core/audits/accessibility/listitem.js | failureTitle": {
+    "message": "Luettelokohteet (`<li>`) eivät sisälly ylätason `<ul>`- tai `<ol>`-elementtiin"
+  },
+  "lighthouse-core/audits/accessibility/listitem.js | title": {
+    "message": "Luettelokohdat (`<li>`) sisältyvät ylätason elementteihin `<ul>` tai `<ol>`"
+  },
+  "lighthouse-core/audits/accessibility/meta-refresh.js | description": {
+    "message": "Käyttäjät eivät odota sivun päivittyvän automaattisesti, ja päivittäminen siirtää kohdistuksen takaisin sivun yläreunaan. Tämä voi tehdä käytöstä turhauttavaa tai sekavaa. [Lue lisää](https://web.dev/meta-refresh/)."
+  },
+  "lighthouse-core/audits/accessibility/meta-refresh.js | failureTitle": {
+    "message": "Dokumentissa on käytössä `<meta http-equiv=\"refresh\">`"
+  },
+  "lighthouse-core/audits/accessibility/meta-refresh.js | title": {
+    "message": "Dokumentti ei käytä `<meta http-equiv=\"refresh\">`-tagia"
+  },
+  "lighthouse-core/audits/accessibility/meta-viewport.js | description": {
+    "message": "Zoomauksen poistaminen käytöstä aiheuttaa ongelmia heikkonäköisille käyttäjille, jotka tarvitsevat näytön suurennusta nähdäkseen verkkosivun sisällön kunnolla. [Lue lisää](https://web.dev/meta-viewport/)."
+  },
+  "lighthouse-core/audits/accessibility/meta-viewport.js | failureTitle": {
+    "message": "`[user-scalable=\"no\"]` on käytössä `<meta name=\"viewport\">`-elementissä tai `[maximum-scale]`-määrite on pienempi kuin 5"
+  },
+  "lighthouse-core/audits/accessibility/meta-viewport.js | title": {
+    "message": "`[user-scalable=\"no\"]` ei ole käytössä `<meta name=\"viewport\">`-elementissä, ja `[maximum-scale]`-määrite on vähintään 5"
+  },
+  "lighthouse-core/audits/accessibility/object-alt.js | description": {
+    "message": "Näytönlukuohjelmat eivät voi kääntää sisältöä, joka ei ole tekstiä. Vaihtoehtoisen tekstin lisääminen `<object>`-elementteihin auttaa näytönlukuohjelmia esittämään sisällön merkityksen käyttäjille. [Lue lisää](https://web.dev/object-alt/)."
+  },
+  "lighthouse-core/audits/accessibility/object-alt.js | failureTitle": {
+    "message": "`<object>`-elementeissä ei ole `[alt]`-tekstiä"
+  },
+  "lighthouse-core/audits/accessibility/object-alt.js | title": {
+    "message": "`<object>`-elementeissä on `[alt]`-teksti"
+  },
+  "lighthouse-core/audits/accessibility/tabindex.js | description": {
+    "message": "Navigointijärjestys on eksplisiittinen, jos arvo on suurempi kuin 0. Vaikka ratkaisu on teknisesti käypä, se tekee usein kokemuksesta turhauttavan avustustekniikkaa tarvitseville käyttäjille. [Lue lisää](https://web.dev/tabindex/)."
+  },
+  "lighthouse-core/audits/accessibility/tabindex.js | failureTitle": {
+    "message": "Joidenkin elementtien `[tabindex]`-arvo on suurempi kuin 0"
+  },
+  "lighthouse-core/audits/accessibility/tabindex.js | title": {
+    "message": "Yhdenkään elementin `[tabindex]`-arvo ei ole suurempi kuin 0"
+  },
+  "lighthouse-core/audits/accessibility/td-headers-attr.js | description": {
+    "message": "Näytönlukuohjelmissa on ominaisuuksia, jotka tekevät taulukoissa siirtymisestä helpompaa. Voit parantaa näytönlukuohjelman käyttäjien kokemusta varmistamalla, että `[headers]`-määritettä käyttävät `<td>`-solut viittaavat vain toisiin soluihin samassa taulukossa. [Lue lisää](https://web.dev/td-headers-attr/)."
+  },
+  "lighthouse-core/audits/accessibility/td-headers-attr.js | failureTitle": {
+    "message": "`<table>`-elementissä on soluja, joiden `[headers]`-määritteet viittaavat saman taulukon toisiin soluihin"
+  },
+  "lighthouse-core/audits/accessibility/td-headers-attr.js | title": {
+    "message": "`<table>`-määritettä käyttävät `[headers]`-elementin solut viittaavat vain toisiin soluihin samassa taulukossa"
+  },
+  "lighthouse-core/audits/accessibility/th-has-data-cells.js | description": {
+    "message": "Näytönlukuohjelmissa on ominaisuuksia, jotka tekevät taulukoissa siirtymisestä helpompaa. Voit parantaa näytönlukuohjelmaa käyttävien kokemusta varmistamalla, että taulukoiden otsikot viittaavat aina johonkin solujoukkoon. [Lue lisää](https://web.dev/th-has-data-cells/)."
+  },
+  "lighthouse-core/audits/accessibility/th-has-data-cells.js | failureTitle": {
+    "message": "`<th>`-elementit ja elementit, joissa on `[role=\"columnheader\"/\"rowheader\"]`, eivät sisällä niissä kuvattuja datasoluja"
+  },
+  "lighthouse-core/audits/accessibility/th-has-data-cells.js | title": {
+    "message": "`<th>`-elementit ja elementit, joissa on `[role=\"columnheader\"/\"rowheader\"]`, sisältävät niissä kuvatut datasolut"
+  },
+  "lighthouse-core/audits/accessibility/valid-lang.js | description": {
+    "message": "Kelvollisen [BCP 47 language](https://www.w3.org/International/questions/qa-choosing-language-tags#question) ‑määritteen ilmoittaminen elementeille auttaa varmistamaan, että näytönlukuohjelma ääntää tekstin oikein. [Lue lisää](https://web.dev/valid-lang/)."
+  },
+  "lighthouse-core/audits/accessibility/valid-lang.js | failureTitle": {
+    "message": "`[lang]`-määritteiden arvot eivät ole kelvollisia"
+  },
+  "lighthouse-core/audits/accessibility/valid-lang.js | title": {
+    "message": "`[lang]`-määritteillä on kelvollinen arvo"
+  },
+  "lighthouse-core/audits/accessibility/video-caption.js | description": {
+    "message": "Kun videossa on tekstitykset, kuurot ja heikkokuuloiset saavat videon tiedot paremmin. [Lue lisää](https://web.dev/video-caption/)."
+  },
+  "lighthouse-core/audits/accessibility/video-caption.js | failureTitle": {
+    "message": "`<video>`-elementit eivät sisällä `<track>`-elementtiä, jossa on `[kind=\"captions\"]`"
+  },
+  "lighthouse-core/audits/accessibility/video-caption.js | title": {
+    "message": "`<video>`-elementit sisältävät `<track>`-elementin, jossa on `[kind=\"captions\"]`"
+  },
+  "lighthouse-core/audits/accessibility/video-description.js | description": {
+    "message": "Äänikuvaukset antavat videoista oleellista tietoa (esimerkiksi ilmeistä ja tapahtumapaikoista), jota ei saa keskustelusta. [Lue lisää](https://web.dev/video-description/)."
+  },
+  "lighthouse-core/audits/accessibility/video-description.js | failureTitle": {
+    "message": "`<video>`-elementit eivät sisällä `<track>`-elementtiä, jossa on `[kind=\"description\"]`"
+  },
+  "lighthouse-core/audits/accessibility/video-description.js | title": {
+    "message": "`<video>`-elementit sisältävät `<track>`-elementin, jossa on `[kind=\"description\"]`"
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | description": {
+    "message": "Määritä `apple-touch-icon`, jotta iOS-näkyvyys on paras mahdollinen, kun käyttäjä lisää progressiivisen web-sovelluksen aloitusnäytölle. Sen on viitattava läpinäkymättömään neliön muotoiseen (192 px tai 180 px) PNG-tiedostoon. [Lue lisää](https://developers.google.com/web/fundamentals/design-and-ux/browser-customization/)."
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | failureTitle": {
+    "message": "Ei sisällä kelvollista `apple-touch-icon`-arvoa"
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | precomposedWarning": {
+    "message": "`apple-touch-icon-precomposed` on vanhentunut; `apple-touch-icon`-määritettä suositellaan."
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | title": {
+    "message": "Sisältää kelvollisen `apple-touch-icon`-määritteen"
+  },
+  "lighthouse-core/audits/bootup-time.js | chromeExtensionsWarning": {
+    "message": "Chromen laajennukset heikensivät tämän sivun latausnopeutta. Yritä tarkastaa sivu incognito-tilassa tai Chrome-profiililla, johon ei ole lisätty laajennuksia."
+  },
+  "lighthouse-core/audits/bootup-time.js | columnScriptEval": {
+    "message": "Skriptin arviointi"
+  },
+  "lighthouse-core/audits/bootup-time.js | columnScriptParse": {
+    "message": "Skriptin jäsennys"
+  },
+  "lighthouse-core/audits/bootup-time.js | columnTotal": {
+    "message": "Prosessoriaika yhteensä"
+  },
+  "lighthouse-core/audits/bootup-time.js | description": {
+    "message": "Suosittelemme lyhentämään JS:n jäsentämiseen, kääntämiseen ja suorittamiseen kuluvaa aikaa. Pienempien JS-resurssien jakaminen voi helpottaa tätä. [Lue lisää](https://developers.google.com/web/tools/lighthouse/audits/bootup)."
+  },
+  "lighthouse-core/audits/bootup-time.js | failureTitle": {
+    "message": "Vähennä JavaScriptin suorittamiseen kuluvaa aikaa"
+  },
+  "lighthouse-core/audits/bootup-time.js | title": {
+    "message": "JavaScriptin suorittamiseen kuluva aika"
+  },
+  "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | description": {
+    "message": "Suuret GIFit eivät ole tehokas tapa jaella animoitua sisältöä. Voit pienentää ladattavien tavujen määrää jakelemalla animaatioita MPEG4- tai WebM-muodossa ja staattisia kuvia PNG- tai WebP-muodossa. [Lue lisää](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/replace-animated-gifs-with-video/)"
+  },
+  "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | title": {
+    "message": "Jakele animaatiosisältöä videomuodossa"
+  },
+  "lighthouse-core/audits/byte-efficiency/offscreen-images.js | description": {
+    "message": "Suosittelemme lykkäämään poissa näkyvistä olevien ja piilotettujen kuvien lataamista, kunnes kaikki kriittiset resurssit on ladattu. [Lue lisää](https://developers.google.com/web/tools/lighthouse/audits/offscreen-images)."
+  },
+  "lighthouse-core/audits/byte-efficiency/offscreen-images.js | title": {
+    "message": "Lykkää kuvien lataamista, jos ne eivät ole näkyvissä"
+  },
+  "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | description": {
+    "message": "Resurssit estävät sivun ensimmäisen renderöinnin. Suosittelemme jakelemaan kriittiset JS- ja CSS-osat sivuun upotettuina ja lykkäämään kaikkien ei-kriittisten JS- tai tyyliosien lataamista. [Lue lisää](https://developers.google.com/web/tools/lighthouse/audits/blocking-resources)."
+  },
+  "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | title": {
+    "message": "Poista renderöinnin estävät resurssit"
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | description": {
+    "message": "Suuret verkkoresurssit aiheuttavat kuluja käyttäjille ja liittyvät vahvasti pitkiin latausaikoihin. [Lue lisää](https://developers.google.com/web/tools/lighthouse/audits/network-payloads)."
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | displayValue": {
+    "message": "Yhteenlaskettu koko oli {totalBytes, number, bytes} kt"
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | failureTitle": {
+    "message": "Vältä valtavia verkkoresursseja"
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | title": {
+    "message": "Välttää valtavia verkkoresursseja"
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-css.js | description": {
+    "message": "CSS-tiedostojen pienentäminen voi auttaa pienentämään verkkoresurssien kokoa. [Lue lisää](https://developers.google.com/web/tools/lighthouse/audits/minify-css)."
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-css.js | title": {
+    "message": "Pienennä CSS-tiedostoja"
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | description": {
+    "message": "JavaScript-tiedostojen pienentäminen voi auttaa pienentämään resurssien kokoa ja lyhentämään skriptin jäsentämiseen kuluvaa aikaa. [Lue lisää](https://developers.google.com/speed/docs/insights/MinifyResources)."
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | title": {
+    "message": "Pienennä JavaScript-tiedostoja"
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | description": {
+    "message": "Poista käyttämättömät säännöt tyylisivuilta ja lykkää sellaisen CSS:n lataamista, jota ei käytetä sivun yläosan sisältöön, niin vähennät verkkotoiminnan turhaa tavujen kulutusta. [Lue lisää](https://developers.google.com/web/tools/lighthouse/audits/unused-css)."
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | title": {
+    "message": "Poista käyttämätön CSS"
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-javascript.js | description": {
+    "message": "Poista käyttämättömät JavaScript-osat, jotta voit vähentää verkkotoiminnan kuluttamia tavuja."
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-javascript.js | title": {
+    "message": "Poista käyttämätön JavaScript"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | description": {
+    "message": "Pitkä välimuistin käyttöikä voi nopeuttaa sivun lataamista, kun käyttäjä avaa sen uudelleen. [Lue lisää](https://developers.google.com/web/tools/lighthouse/audits/cache-policy)."
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 resurssi löydetty}other{# resurssia löydetty}}"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | failureTitle": {
+    "message": "Käytä tehokasta välimuistikäytäntöä staattisten resurssien jakelemiseen"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | title": {
+    "message": "Käyttää tehokasta välimuistikäytäntöä staattisten resurssien käsittelyyn"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | description": {
+    "message": "Optimoidut kuvat latautuvat nopeammin ja kuluttavat vähemmän mobiilidataa. [Lue lisää](https://developers.google.com/web/tools/lighthouse/audits/optimize-images)."
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | title": {
+    "message": "Koodaa kuvat tehokkaasti"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | description": {
+    "message": "Näytä sopivan kokoisia kuvia, jotta voit vähentää mobiilidatan kulutusta ja lyhentää latausaikoja. [Lue lisää](https://developers.google.com/web/tools/lighthouse/audits/oversized-images)."
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | title": {
+    "message": "Määritä kuvien koko oikein"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | description": {
+    "message": "Tekstipohjaiset resurssit on hyvä pakata ennen jakelua (gzip, deflate tai brotli), jotta ladattavien tavujen määrä voidaan minimoida. [Lue lisää](https://developers.google.com/web/tools/lighthouse/audits/text-compression)."
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | title": {
+    "message": "Ota tekstin pakkaus käyttöön"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | description": {
+    "message": "Tietyt kuvamuodot, kuten JPEG 2000, JPEG XR ja WebP, pakkaavat sisältöä usein paremmin kuin PNG tai JPEG, minkä vuoksi ne auttavat nopeuttamaan latauksia ja vähentämään datan kulutusta. [Lue lisää](https://developers.google.com/web/tools/lighthouse/audits/webp)."
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | title": {
+    "message": "Jakele kuvat seuraavan sukupolven muodoissa"
+  },
+  "lighthouse-core/audits/content-width.js | description": {
+    "message": "Jos sovelluksesi leveys ei vastaa näkymän leveyttä, sovelluksesi ei välttämättä ole mobiilinäytöille optimoitu. [Lue lisää](https://developers.google.com/web/tools/lighthouse/audits/content-sized-correctly-for-viewport)."
+  },
+  "lighthouse-core/audits/content-width.js | explanation": {
+    "message": "Näkymän koko, {innerWidth} px, ei vastaa ikkunan kokoa, {outerWidth} px."
+  },
+  "lighthouse-core/audits/content-width.js | failureTitle": {
+    "message": "Sisällön koko ei vastaa näkymää"
+  },
+  "lighthouse-core/audits/content-width.js | title": {
+    "message": "Sisällön koko on näkymän mukainen"
+  },
+  "lighthouse-core/audits/critical-request-chains.js | description": {
+    "message": "Alla olevat kriittiset pyyntöketjut kertovat, minkä resurssien lataaminen priorisoidaan. Suosittelemme parantamaan sivun latausaikaa lyhentämällä ketjuja, pienentämällä resurssien latauskokoa ja lykkäämällä tarpeettomien resurssien lataamista. [Lue lisää](https://developers.google.com/web/tools/lighthouse/audits/critical-request-chains)."
+  },
+  "lighthouse-core/audits/critical-request-chains.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 ketju löydetty}other{# ketjua löydetty}}"
+  },
+  "lighthouse-core/audits/critical-request-chains.js | title": {
+    "message": "Minimoi kriittisten pyyntöjen syvyys"
+  },
+  "lighthouse-core/audits/deprecations.js | columnDeprecate": {
+    "message": "Käytöstä poistaminen / varoitus"
+  },
+  "lighthouse-core/audits/deprecations.js | columnLine": {
+    "message": "Rivi"
+  },
+  "lighthouse-core/audits/deprecations.js | description": {
+    "message": "Käytöstä poistetut käyttöliittymät poistetaan aikanaan selaimesta. [Lue lisää](https://web.dev/deprecations)."
+  },
+  "lighthouse-core/audits/deprecations.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 varoitus löydetty}other{# varoitusta löydetty}}"
+  },
+  "lighthouse-core/audits/deprecations.js | failureTitle": {
+    "message": "Käyttää käytöstä poistettuja sovellusliittymiä"
+  },
+  "lighthouse-core/audits/deprecations.js | title": {
+    "message": "Välttää käytöstä poistettuja sovellusliittymiä"
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | description": {
+    "message": "Sovellusvälimuisti on poistettu käytöstä. [Lue lisää](https://web.dev/appcache-manifest)."
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | displayValue": {
+    "message": "Löydetty {AppCacheManifest}"
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | failureTitle": {
+    "message": "Käyttää sovellusvälimuistia"
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | title": {
+    "message": "Välttää sovellusvälimuistia"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | description": {
+    "message": "Dokumenttityypin määrittäminen estää selainta siirtymästä quirks-tilaan. [Lue lisää](https://web.dev/doctype)."
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationBadDoctype": {
+    "message": "Dokumenttityypin nimen on oltava pienillä kirjaimilla kirjoitettu merkkijono `html`"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationNoDoctype": {
+    "message": "Dokumentin täytyy sisältää dokumenttityyppi"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationPublicId": {
+    "message": "Oletettu publicId-arvo on tyhjä merkkijono"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationSystemId": {
+    "message": "Oletettu systemId-arvo on tyhjä merkkijono"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | failureTitle": {
+    "message": "Sivulta puuttuu HTML-tiedostotyyppi, mikä käynnistää quirks-tilan"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | title": {
+    "message": "Sivulla on HTML-dokumenttityyppi"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | columnElement": {
+    "message": "Elementti"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | columnStatistic": {
+    "message": "Tilastotieto"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | columnValue": {
+    "message": "Arvo"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | description": {
+    "message": "Selainten kehittäjät suosittelevat käyttämään sivulla enintään noin 1 500:aa DOM-elementtiä. Sopiva puun syvyys on alle 32 elementtiä ja alle 60 ala- ja ylätason elementtiä. Suuri DOM voi lisätä muistin käyttöä, pidentää [tyylilaskelmia](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations) ja aiheuttaa työläitä [asettelun uudelleenjuoksutuksia](https://developers.google.com/speed/articles/reflow). [Lue lisää](https://web.dev/dom-size)."
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 elementti}other{# elementtiä}}"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | failureTitle": {
+    "message": "Vältä liian suurta DOM:ää"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | statisticDOMDepth": {
+    "message": "DOM:n enimmäissyvyys"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | statisticDOMElements": {
+    "message": "DOM-elementit yhteensä"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | statisticDOMWidth": {
+    "message": "Alatason elementtien maksimimäärä"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | title": {
+    "message": "Välttää liian suurta DOM:ää"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | columnRel": {
+    "message": "Rel"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | columnTarget": {
+    "message": "Kohde"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | description": {
+    "message": "Lisää ulkoisiin linkkeihin `rel=\"noopener\"` tai `rel=\"noreferrer\"` parantaaksesi tehokkuutta ja estääksesi tietoturvahaavoittuvuuksia. [Lue lisää](https://web.dev/external-anchors-use-rel-noopener)."
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | failureTitle": {
+    "message": "Eri lähteisiin johtavat linkit eivät ole turvallisia"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | title": {
+    "message": "Eri lähteisiin johtavat linkit ovat turvallisia"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | warning": {
+    "message": "Ankkurin ({anchorHTML}) kohteen määritys epäonnistui. Sinun kannattaa ehkä poistaa target=_blank, jos sitä ei käytetä linkkinä."
+  },
+  "lighthouse-core/audits/dobetterweb/geolocation-on-start.js | description": {
+    "message": "Sivustot, jotka pyytävät sijainnin käyttöoikeutta ilman asiayhteyttä, saavat käyttäjät epäluuloisiksi tai hämmentävät heitä. Kokeile sen sijaan yhdistää pyyntö käyttäjätoimintoon. [Lue lisää](https://web.dev/geolocation-on-start)."
+  },
+  "lighthouse-core/audits/dobetterweb/geolocation-on-start.js | failureTitle": {
+    "message": "Pyytää maantieteellistä sijaintia sivun latauksessa"
+  },
+  "lighthouse-core/audits/dobetterweb/geolocation-on-start.js | title": {
+    "message": "Välttää maantieteellisen sijainnin pyytämistä sivun latauksessa"
+  },
+  "lighthouse-core/audits/dobetterweb/js-libraries.js | columnVersion": {
+    "message": "Versio"
+  },
+  "lighthouse-core/audits/dobetterweb/js-libraries.js | description": {
+    "message": "Kaikki käyttöliittymän JavaScript-kirjastot havaittiin sivulla. [Lue lisää](https://web.dev/js-libraries)."
+  },
+  "lighthouse-core/audits/dobetterweb/js-libraries.js | title": {
+    "message": "Havaitut JavaScript-kirjastot"
+  },
+  "lighthouse-core/audits/dobetterweb/no-document-write.js | description": {
+    "message": "Hitaiden yhteyksien käyttäjien kohdalla `document.write()`-komennolla dynaamisesti lisätyt ulkoiset skriptit voivat hidastaa sivun latausta kymmenillä sekunneilla. [Lue lisää](https://web.dev/no-document-write)."
+  },
+  "lighthouse-core/audits/dobetterweb/no-document-write.js | failureTitle": {
+    "message": "`document.write()` on käytössä"
+  },
+  "lighthouse-core/audits/dobetterweb/no-document-write.js | title": {
+    "message": "Vältetty: `document.write()`"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | columnSeverity": {
+    "message": "Vakavin mahdollinen"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | columnVersion": {
+    "message": "Kirjaston versio"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | columnVuln": {
+    "message": "Haavoittuvuuksien määrä"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | description": {
+    "message": "Jotkin kolmannen osapuolen skriptit voivat sisältää tunnettuja tietoturvahaavoittuvuuksia, joita hyökkääjien on helppo tunnistaa ja hyödyntää. [Lue lisää](https://web.dev/no-vulnerable-libraries)."
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 haavoittuvuus havaittu}other{# haavoittuvuutta havaittu}}"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | failureTitle": {
+    "message": "Sisältää käyttöliittymän JavaScript-kirjastot, joissa on tunnettuja tietoturvahaavoittuvuuksia"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | rowSeverityHigh": {
+    "message": "Vakava"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | rowSeverityLow": {
+    "message": "Vähäinen"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | rowSeverityMedium": {
+    "message": "Kohtalainen"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | title": {
+    "message": "Välttää käyttöliittymän JavaScript-kirjastoja, joissa on tunnettuja tietoturvahaavoittuvuuksia"
+  },
+  "lighthouse-core/audits/dobetterweb/notification-on-start.js | description": {
+    "message": "Sivustot, jotka pyytävät lupaa ilmoitusten lähettämiseen ilman asiayhteyttä, saavat käyttäjät epäluuloisiksi tai hämmentävät heitä. Kokeile sen sijaan yhdistää pyyntö käyttäjäeleisiin. [Lue lisää](https://web.dev/notification-on-start)."
+  },
+  "lighthouse-core/audits/dobetterweb/notification-on-start.js | failureTitle": {
+    "message": "Pyytää ilmoitusten käyttöoikeutta sivun latauksessa"
+  },
+  "lighthouse-core/audits/dobetterweb/notification-on-start.js | title": {
+    "message": "Välttää ilmoitusten käyttöoikeuden pyytämistä sivun latauksessa"
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | columnFailingElem": {
+    "message": "Hylätyt elementit"
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | description": {
+    "message": "Salasanan liittämisen estäminen on hyvän tietoturvakäytännön vastaista. [Lue lisää](https://web.dev/password-inputs-can-be-pasted-into)."
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | failureTitle": {
+    "message": "Estää käyttäjiä liittämästä sisältöä salasanakenttiin"
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | title": {
+    "message": "Sallii käyttäjien liittää sisältöä salasanakenttiin"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | columnProtocol": {
+    "message": "Protokolla"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | description": {
+    "message": "HTTP/2 tarjoaa monia etuja HTTP/1.1:een verrattuna, mukaan lukien binaariotsikot, kanavoinnin ja palvelinkehotteet. [Lue lisää](https://web.dev/uses-http2)."
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 pyyntöä ei tehty HTTP/2:n kautta}other{# pyyntöä ei tehty HTTP/2:n kautta}}"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | failureTitle": {
+    "message": "Ei käytä HTTP/2:ta kaikille resursseille"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | title": {
+    "message": "Käyttää HTTP/2:ta omille resursseilleen"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-passive-event-listeners.js | description": {
+    "message": "Sinun kannattaa ehkä merkitä kosketus- ja vieritystapahtumien seurainten arvoksi `passive` sivun vieritystoiminnan parantamiseksi. [Lue lisää](https://web.dev/uses-passive-event-listeners)."
+  },
+  "lighthouse-core/audits/dobetterweb/uses-passive-event-listeners.js | failureTitle": {
+    "message": "Ei käytä passiivisia seuraimia vieritystoiminnan parantamiseen"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-passive-event-listeners.js | title": {
+    "message": "Käyttää passiivisia seuraimia vieritystoiminnan parantamiseen"
+  },
+  "lighthouse-core/audits/errors-in-console.js | columnDesc": {
+    "message": "Kuvaus"
+  },
+  "lighthouse-core/audits/errors-in-console.js | description": {
+    "message": "Konsoliin kirjatut virheet viittaavat ratkaisemattomiin ongelmiin. Ne voivat johtua epäonnistuneista verkkopyynnöistä ja muista selainongelmista. [Lue lisää](https://web.dev/errors-in-console)."
+  },
+  "lighthouse-core/audits/errors-in-console.js | failureTitle": {
+    "message": "Selainvirheet kirjattiin konsoliin"
+  },
+  "lighthouse-core/audits/errors-in-console.js | title": {
+    "message": "Konsoliin ei kirjattu selainvirheitä"
+  },
+  "lighthouse-core/audits/font-display.js | description": {
+    "message": "Käytä CSS:n kirjasimennäyttöominaisuutta, jotta voit varmistaa, että käyttäjä näkee tekstin myös verkkofonttien lataamisen aikana. [Lue lisää](https://developers.google.com/web/updates/2016/02/font-display)."
+  },
+  "lighthouse-core/audits/font-display.js | failureTitle": {
+    "message": "Varmista, että teksti pysyy näkyvissä verkkofontin lataamisen aikana"
+  },
+  "lighthouse-core/audits/font-display.js | title": {
+    "message": "Kaikki teksti pysyy näkyvissä verkkofontin lataamisen aikana"
+  },
+  "lighthouse-core/audits/font-display.js | undeclaredFontURLWarning": {
+    "message": "Lighthouse ei pystynyt tarkistamaan seuraavan URL-osoitteen kirjasimennäyttöarvoa automaattisesti: {fontURL}."
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | columnActual": {
+    "message": "Kuvasuhde (todellinen)"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | columnDisplayed": {
+    "message": "Kuvasuhde (näkyvä)"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | description": {
+    "message": "Kuvan mittasuhteiden tulisi täsmätä luonnolliseen kuvasuhteeseen. [Lue lisää](https://web.dev/image-aspect-ratio)."
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | failureTitle": {
+    "message": "Näytä kuvat, joiden kuvasuhde on virheellinen"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | title": {
+    "message": "Näytä kuvat, joiden kuvasuhde on oikea"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | warningCompute": {
+    "message": "Virheelliset kuvan kokotiedot: {url}"
+  },
+  "lighthouse-core/audits/installable-manifest.js | description": {
+    "message": "Selain voi aktiivisesti suositella käyttäjille sovelluksesi lisäämistä aloitusnäytölle, mikä voi edistää aktivoitumista. [Lue lisää](https://developers.google.com/web/tools/lighthouse/audits/install-prompt)."
+  },
+  "lighthouse-core/audits/installable-manifest.js | failureTitle": {
+    "message": "Verkkosovelluksen luettelo ei vastaa asennettavuusvaatimuksia"
+  },
+  "lighthouse-core/audits/installable-manifest.js | title": {
+    "message": "Verkkosovelluksen luettelo vastaa asennettavuusvaatimuksia"
+  },
+  "lighthouse-core/audits/is-on-https.js | columnInsecureURL": {
+    "message": "Suojaamaton URL-osoite"
+  },
+  "lighthouse-core/audits/is-on-https.js | description": {
+    "message": "Kaikki sivustot tulee suojata HTTPS:llä, myös ne, jotka eivät käsittele arkaluontoista dataa. HTTPS estää tunkeutujia peukaloimasta sovelluksesi ja sen käyttäjien välistä toimintaa tai seuraamasta sitä passiivisesti. HTTPS:ää edellytetään HTTP/2:ssa ja monien uusien verkkoalustojen käyttöliittymissä. [Lue lisää](https://web.dev/is-on-https)."
+  },
+  "lighthouse-core/audits/is-on-https.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 suojaamaton pyyntö löytyi}other{# suojaamatonta pyyntöä löytyi}}"
+  },
+  "lighthouse-core/audits/is-on-https.js | failureTitle": {
+    "message": "Ei käytä HTTPS:ää"
+  },
+  "lighthouse-core/audits/is-on-https.js | title": {
+    "message": "Käyttää HTTPS:ää"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | description": {
+    "message": "Nopea sivun lataus mobiiliverkon kautta varmistaa hyvän mobiilikäyttökokemuksen. [Lue lisää](https://developers.google.com/web/tools/lighthouse/audits/fast-3g)."
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | displayValueText": {
+    "message": "Interaktiivinen: {timeInMs, number, seconds} s"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | displayValueTextWithOverride": {
+    "message": "Interaktiivinen simuloidussa mobiiliverkossa: {timeInMs, number, seconds} s"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | explanationLoadSlow": {
+    "message": "Sivu latautuu liian hitaasti eikä ole interaktiivinen 10 sekunnin sisällä. Katso mahdollisuuksia ja diagnostiikkatietoja Tehokkuus-osiosta sivujen kehittämiseksi."
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | failureTitle": {
+    "message": "Sivu ei lataudu tarpeeksi nopeasti mobiiliverkoissa"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | title": {
+    "message": "Sivu latautuu tarpeeksi nopeasti mobiiliverkoissa"
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | columnCategory": {
+    "message": "Luokka"
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | description": {
+    "message": "Suosittelemme vähentämään JS:n jäsentämiseen, kääntämiseen ja suorittamiseen kuluvaa aikaa. Pienempien JS-resurssien jakaminen voi helpottaa tätä."
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | failureTitle": {
+    "message": "Minimoi pääsäikeen työkuorma"
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | title": {
+    "message": "Minimoi pääsäikeen työkuorman"
+  },
+  "lighthouse-core/audits/manual/pwa-cross-browser.js | description": {
+    "message": "Tavoittaakseen maksimimäärän käyttäjiä sivustojen tulee toimia kaikilla tärkeillä selaimilla. [Lue lisää](https://developers.google.com/web/progressive-web-apps/checklist#site-works-cross-browser)."
+  },
+  "lighthouse-core/audits/manual/pwa-cross-browser.js | title": {
+    "message": "Sivusto toimii eri selaimilla"
+  },
+  "lighthouse-core/audits/manual/pwa-each-page-has-url.js | description": {
+    "message": "Varmista, että yksittäisiin sivuihin voi täsmälinkittää URL-osoitteella ja että URL-osoitteet ovat ainutlaatuisia, jotta jaettavuus somessa paranee. [Lue lisää](https://developers.google.com/web/progressive-web-apps/checklist#each-page-has-a-url)."
+  },
+  "lighthouse-core/audits/manual/pwa-each-page-has-url.js | title": {
+    "message": "Joka sivulla on URL-osoite"
+  },
+  "lighthouse-core/audits/manual/pwa-page-transitions.js | description": {
+    "message": "Napautuksilla navigoitaessa siirtymien tulee olla saumattomia, vaikka verkko olisi hidas, jotta syntyy vaikutelma toimivuudesta. [Lue lisää](https://developers.google.com/web/progressive-web-apps/checklist#page-transitions-dont-feel-like-they-block-on-the-network)."
+  },
+  "lighthouse-core/audits/manual/pwa-page-transitions.js | title": {
+    "message": "Verkko ei estä sivujen välisiä siirtymiä"
+  },
+  "lighthouse-core/audits/metrics/estimated-input-latency.js | description": {
+    "message": "Arvioitu syöttöviive on millisekunteina annettu arvio siitä, kuinka kauan sovelluksellasi kestää vastata käyttäjän syötteeseen sivun lataamisen kiireisimmän, viiden sekunnin mittaisen jakson aikana. Jos viive on yli 50 ms, sovelluksesi voi toimia käyttäjien mielestä hitaasti. [Lue lisää](https://developers.google.com/web/tools/lighthouse/audits/estimated-input-latency)."
+  },
+  "lighthouse-core/audits/metrics/estimated-input-latency.js | title": {
+    "message": "Arvioitu syöttöviive"
+  },
+  "lighthouse-core/audits/metrics/first-contentful-paint.js | description": {
+    "message": "Ensimmäinen sisällön renderöinti kertoo, milloin ensimmäinen tekstikohde tai kuva renderöidään. [Lue lisää](https://developers.google.com/web/tools/lighthouse/audits/first-contentful-paint)."
+  },
+  "lighthouse-core/audits/metrics/first-contentful-paint.js | title": {
+    "message": "Ensimmäinen sisällön renderöinti"
+  },
+  "lighthouse-core/audits/metrics/first-cpu-idle.js | description": {
+    "message": "CPU:n ensimmäinen toimettomuusjakso kertoo, milloin sivun pääsäikeen tilanne sallii syötteiden käsittelyn. [Lue lisää](https://developers.google.com/web/tools/lighthouse/audits/first-interactive)."
+  },
+  "lighthouse-core/audits/metrics/first-cpu-idle.js | title": {
+    "message": "CPU:n ensimmäinen toimettomuusjakso"
+  },
+  "lighthouse-core/audits/metrics/first-meaningful-paint.js | description": {
+    "message": "Ensimmäinen merkityksellinen renderöinti kertoo, milloin sivun ensisijainen sisältö tulee näkyviin. [Lue lisää](https://developers.google.com/web/tools/lighthouse/audits/first-meaningful-paint)."
+  },
+  "lighthouse-core/audits/metrics/first-meaningful-paint.js | title": {
+    "message": "Ensimmäinen merkityksellinen renderöinti"
+  },
+  "lighthouse-core/audits/metrics/interactive.js | description": {
+    "message": "Interaktiivisuutta edeltävä aika tarkoittaa aikaa, joka sivulla kestää siihen, että se on täysin interaktiivinen. [Lue lisää](https://developers.google.com/web/tools/lighthouse/audits/consistently-interactive)."
+  },
+  "lighthouse-core/audits/metrics/interactive.js | title": {
+    "message": "Interaktiivisuutta edeltävä aika"
+  },
+  "lighthouse-core/audits/metrics/max-potential-fid.js | description": {
+    "message": "Käyttäjiesi suurin mahdollinen ensimmäisen toiminnon viive on pisimmän tehtävän kesto millisekunneissa. [Lue lisää](https://developers.google.com/web/updates/2018/05/first-input-delay)."
+  },
+  "lighthouse-core/audits/metrics/max-potential-fid.js | title": {
+    "message": "Suurin mahdollinen ensimmäisen toiminnon viive"
+  },
+  "lighthouse-core/audits/metrics/speed-index.js | description": {
+    "message": "Nopeusindeksi kertoo, kuinka nopeasti sivun sisältö tulee näkyviin. [Lue lisää](https://developers.google.com/web/tools/lighthouse/audits/speed-index)."
+  },
+  "lighthouse-core/audits/metrics/speed-index.js | title": {
+    "message": "Nopeusindeksi"
+  },
+  "lighthouse-core/audits/metrics/total-blocking-time.js | description": {
+    "message": "Kaikkien FCP:n ja interaktiivisuutta edeltävän ajan väliset ajanjaksot yhteenlaskettuna, kun tehtävän pituus on yli 50 ms (ilmoitettu millisekunteina)"
+  },
+  "lighthouse-core/audits/metrics/total-blocking-time.js | title": {
+    "message": "Estoaika yhteensä"
+  },
+  "lighthouse-core/audits/network-rtt.js | description": {
+    "message": "Verkon meno-paluuajoilla (RTT) on suuri vaikutus suorituskykyyn. Jos RTT lähtöpaikkaan on korkea, se on merkki siitä, että käyttäjää lähellä olevien palvelimien suorituskyvyssä on parantamisen varaa. [Lue lisää](https://hpbn.co/primer-on-latency-and-bandwidth/)."
+  },
+  "lighthouse-core/audits/network-rtt.js | title": {
+    "message": "Verkon meno-paluuajat"
+  },
+  "lighthouse-core/audits/network-server-latency.js | description": {
+    "message": "Palvelimen viiveet voivat vaikuttaa verkon suorituskykyyn. Jos lähtöpaikan palvelimen viive on korkea, se on merkki siitä, että palvelin on ylikuormittunut tai sen taustasuorituskyky on huono. [Lue lisää](https://hpbn.co/primer-on-web-performance/#analyzing-the-resource-waterfall)."
+  },
+  "lighthouse-core/audits/network-server-latency.js | title": {
+    "message": "Palvelimen taustaviiveet"
+  },
+  "lighthouse-core/audits/offline-start-url.js | description": {
+    "message": "Service worker auttaa tekemään verkkosovelluksesta luotettavan, jos verkko-olosuhteet ovat vaikeita ennustaa. [Lue lisää](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)."
+  },
+  "lighthouse-core/audits/offline-start-url.js | failureTitle": {
+    "message": "`start_url` ei vastaa 200-viestillä offline-tilassa"
+  },
+  "lighthouse-core/audits/offline-start-url.js | title": {
+    "message": "`start_url` vastaa 200-viestillä offline-tilassa"
+  },
+  "lighthouse-core/audits/offline-start-url.js | warningCantStart": {
+    "message": "`start_url` ei ollut Lighthousen luettavissa luettelossa. Siksi oletimme, että `start_url` on dokumentin URL-osoite. Virheilmoitus: {manifestWarning}"
+  },
+  "lighthouse-core/audits/performance-budget.js | columnOverBudget": {
+    "message": "Ylittää budjetin"
+  },
+  "lighthouse-core/audits/performance-budget.js | description": {
+    "message": "Pidä verkkopyyntöjen määrä ja koko tehokkuusbudjetissa määritettyjen tavoitteiden rajoissa. [Lue lisää](https://developers.google.com/web/tools/lighthouse/audits/budgets)."
+  },
+  "lighthouse-core/audits/performance-budget.js | requestCountOverBudget": {
+    "message": "{count,plural, =1{1 pyyntö}other{# pyyntöä}}"
+  },
+  "lighthouse-core/audits/performance-budget.js | title": {
+    "message": "Tehokkuusbudjetti"
+  },
+  "lighthouse-core/audits/redirects-http.js | description": {
+    "message": "Jos määritit jo HTTPS:n, varmista että ohjaat kaiken HTTP-liikenteen HTTPS:ään, jotta kaikki käyttäjät saavat turvalliset verkko-ominaisuudet. [Lue lisää](https://developers.google.com/web/tools/lighthouse/audits/http-redirects-to-https)."
+  },
+  "lighthouse-core/audits/redirects-http.js | failureTitle": {
+    "message": "Ei uudelleenohjaa HTTP-liikennettä HTTPS:ään"
+  },
+  "lighthouse-core/audits/redirects-http.js | title": {
+    "message": "Uudelleenohjaa HTTP-liikennettä HTTPS:ään"
+  },
+  "lighthouse-core/audits/redirects.js | description": {
+    "message": "Uudelleenohjaukset viivästyttävät sivun lataamista. [Lue lisää](https://developers.google.com/web/tools/lighthouse/audits/redirects)."
+  },
+  "lighthouse-core/audits/redirects.js | title": {
+    "message": "Vältä useita uudelleenohjauksia"
+  },
+  "lighthouse-core/audits/resource-summary.js | description": {
+    "message": "Jos haluat asettaa sivuresurssien määrälle ja koolle budjetin, lisää budget.json-tiedosto. [Lue lisää](https://developers.google.com/web/tools/lighthouse/audits/budgets)."
+  },
+  "lighthouse-core/audits/resource-summary.js | displayValue": {
+    "message": "{requestCount,plural, =1{1 pyyntö • {byteCount, number, bytes} Kt}other{# pyyntöä • {byteCount, number, bytes} Kt}}"
+  },
+  "lighthouse-core/audits/resource-summary.js | title": {
+    "message": "Pidä pyyntöjen määrät alhaisina ja siirtojen koot pieninä"
+  },
+  "lighthouse-core/audits/seo/canonical.js | description": {
+    "message": "Ensisijaiset linkit ehdottavat, mitä URL-osoitteita näyttää hakutuloksissa. [Lue lisää](https://web.dev/canonical)."
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationConflict": {
+    "message": "Useita ristiriitaisia URL-osoitteita ({urlList})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationDifferentDomain": {
+    "message": "Viittaa toiseen verkkotunnukseen ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationInvalid": {
+    "message": "Virheellinen URL-osoite ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationPointsElsewhere": {
+    "message": "Viittaa toiseen `hreflang`-sijaintiin ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationRelative": {
+    "message": "Suhteellinen URL-osoite ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationRoot": {
+    "message": "Osoittaa verkkotunnuksen juuri-URL-osoitteeseen (kotisivulle) sitä vastaavan sisältösivun sijaan"
+  },
+  "lighthouse-core/audits/seo/canonical.js | failureTitle": {
+    "message": "Dokumentissa ei ole kelvollista `rel=canonical`-määritettä"
+  },
+  "lighthouse-core/audits/seo/canonical.js | title": {
+    "message": "Dokumentissa on kelvollinen `rel=canonical`"
+  },
+  "lighthouse-core/audits/seo/font-size.js | description": {
+    "message": "Alle 12 pikselin kirjasinkoot ovat liian pieniä luettavaksi ja edellyttävät mobiilivierailijoiden zoomaavan nipistämällä voidakseen lukea. Pyri siihen, että >60 % sivun tekstistä on ≥12 px. [Lue lisää](https://web.dev/font-size)."
+  },
+  "lighthouse-core/audits/seo/font-size.js | displayValue": {
+    "message": "{decimalProportion, number, extendedPercent} lukukelpoista tekstiä"
+  },
+  "lighthouse-core/audits/seo/font-size.js | explanationViewport": {
+    "message": "Teksti on lukukelvotonta, koska näkymän sisällönkuvauskenttää ei ole optimoitu mobiilinäytöille."
+  },
+  "lighthouse-core/audits/seo/font-size.js | explanationWithDisclaimer": {
+    "message": "{decimalProportion, number, extendedPercent} tekstistä on liian pientä (perustuen {decimalProportionVisited, number, extendedPercent}:n näytteeseen)."
+  },
+  "lighthouse-core/audits/seo/font-size.js | failureTitle": {
+    "message": "Dokumentissa ei käytetä lukukelpoisia kirjasinkokoja"
+  },
+  "lighthouse-core/audits/seo/font-size.js | title": {
+    "message": "Dokumentti käyttää lukukelpoisia kirjasinkokoja"
+  },
+  "lighthouse-core/audits/seo/hreflang.js | description": {
+    "message": "hreflang-linkit kertovat hakukoneille, mikä sivuversio niiden pitäisi lisätä tietyn kielen tai alueen hakutuloksiin. [Lue lisää](https://web.dev/hreflang)."
+  },
+  "lighthouse-core/audits/seo/hreflang.js | failureTitle": {
+    "message": "Dokumentissa ei ole kelvollista `hreflang`-elementtiä"
+  },
+  "lighthouse-core/audits/seo/hreflang.js | title": {
+    "message": "Dokumentissa on kelvollinen `hreflang`"
+  },
+  "lighthouse-core/audits/seo/http-status-code.js | description": {
+    "message": "Epäonnistuneita HTTP-tilakoodeja sisältäviä sivuja ei välttämättä indeksoida oikein. [Lue lisää](https://web.dev/http-status-code)."
+  },
+  "lighthouse-core/audits/seo/http-status-code.js | failureTitle": {
+    "message": "Sivun HTTP-tilakoodi on epäonnistunut"
+  },
+  "lighthouse-core/audits/seo/http-status-code.js | title": {
+    "message": "Sivun HTTP-tilakoodi on onnistunut"
+  },
+  "lighthouse-core/audits/seo/is-crawlable.js | description": {
+    "message": "Hakukoneet eivät voi sisällyttää sivujasi hakutuloksiin, jos niillä ei ole lupaa indeksoida niitä. [Lue lisää](https://web.dev/is-crawable)."
+  },
+  "lighthouse-core/audits/seo/is-crawlable.js | failureTitle": {
+    "message": "Sivun indeksointi on estetty"
+  },
+  "lighthouse-core/audits/seo/is-crawlable.js | title": {
+    "message": "Sivun indeksointia ei ole estetty"
+  },
+  "lighthouse-core/audits/seo/link-text.js | description": {
+    "message": "Kuvailevat linkkitekstit auttavat hakukoneita ymmärtämään sisältöäsi. [Lue lisää](https://web.dev/link-text)."
+  },
+  "lighthouse-core/audits/seo/link-text.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 linkki löydetty}other{# linkkiä löydetty}}"
+  },
+  "lighthouse-core/audits/seo/link-text.js | failureTitle": {
+    "message": "Linkeissä ei ole kuvaavaa tekstiä"
+  },
+  "lighthouse-core/audits/seo/link-text.js | title": {
+    "message": "Linkeissä on kuvailevaa tekstiä"
+  },
+  "lighthouse-core/audits/seo/manual/structured-data.js | description": {
+    "message": "Suorita [Structured Data Testing Tool](https://search.google.com/structured-data/testing-tool/) ja [Structured Data Linter](http://linter.structured-data.org/) vahvistaaksesi strukturoidun datan. [Lue lisää](https://web.dev/structured-data)."
+  },
+  "lighthouse-core/audits/seo/manual/structured-data.js | title": {
+    "message": "Strukturoitu data on kelvollinen"
+  },
+  "lighthouse-core/audits/seo/meta-description.js | description": {
+    "message": "Hakutuloksiin voidaan lisätä sisällönkuvauskenttiä, joissa kuvaillaan sivun sisältöä lyhyesti. [Lue lisää](https://web.dev/meta-description)."
+  },
+  "lighthouse-core/audits/seo/meta-description.js | explanation": {
+    "message": "Kuvausteksti on tyhjä."
+  },
+  "lighthouse-core/audits/seo/meta-description.js | failureTitle": {
+    "message": "Dokumentissa ei ole sisällönkuvauskenttää"
+  },
+  "lighthouse-core/audits/seo/meta-description.js | title": {
+    "message": "Dokumentissa on sisällönkuvauskenttä"
+  },
+  "lighthouse-core/audits/seo/plugins.js | description": {
+    "message": "Hakukoneet eivät voi indeksoida laajennusten sisältöä, ja monet laitteet rajoittavat laajennusten käyttöä tai eivät tue niitä. [Lue lisää](https://web.dev/plugins)."
+  },
+  "lighthouse-core/audits/seo/plugins.js | failureTitle": {
+    "message": "Dokumentti käyttää laajennuksia"
+  },
+  "lighthouse-core/audits/seo/plugins.js | title": {
+    "message": "Dokumentti välttää laajennuksia"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | description": {
+    "message": "Jos robots.txt-tiedostosi on muotoiltu väärin, indeksointirobotit eivät välttämättä ymmärrä, miten haluat sivustosi indeksoitavan. [Lue lisää](https://web.dev/robots-txt)."
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | displayValueHttpBadCode": {
+    "message": "Robots.txt-pyyntö palautti HTTP-tilan: {statusCode}"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | displayValueValidationError": {
+    "message": "{itemCount,plural, =1{1 virhe löydetty}other{# virhettä löydetty}}"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | explanation": {
+    "message": "Lighthouse ei voinut ladata robots.txt-tiedostoa"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | failureTitle": {
+    "message": "robots.txt ei ole kelvollinen"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | title": {
+    "message": "robots.txt on kelvollinen"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | description": {
+    "message": "Interaktiivisten elementtien, kuten painikkeiden ja linkkien, on oltava tarpeeksi suuria (48 x 48 px) ja niiden ympärillä on oltava tarpeeksi tilaa, jotta niiden napauttaminen onnistuu helposti niin, etteivät ne ole muiden elementtien päällä. [Lue lisää](https://web.dev/tap-targets)."
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | displayValue": {
+    "message": "{decimalProportion, number, percent} oikean kokoisia napautuskohteita"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | explanationViewportMetaNotOptimized": {
+    "message": "Napautuskohteet ovat liian pieniä, koska näkymän sisällönkuvauskenttää ei ole optimoitu mobiilinäytöille"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | failureTitle": {
+    "message": "Napautuskohteet eivät ole sopivan kokoisia"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | overlappingTargetHeader": {
+    "message": "Päällekkäinen kohde"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | tapTargetHeader": {
+    "message": "Napautuskohde"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | title": {
+    "message": "Napautuskohteet ovat sopivan kokoisia"
+  },
+  "lighthouse-core/audits/service-worker.js | description": {
+    "message": "Service worker ‑teknologia tuo sovelluksen käyttöön monia progressiivisen web-sovelluksen ominaisuuksia, kuten offline-käytön, aloitusnäytölle lisäämisen ja ilmoitukset. [Lue lisää](https://developers.google.com/web/tools/lighthouse/audits/registered-service-worker)."
+  },
+  "lighthouse-core/audits/service-worker.js | explanationBadManifest": {
+    "message": "Service worker hallitsee sivua, mutta osoitetta (`start_url`) ei löytynyt, koska luetteloa ei voitu jäsentää kelvollisena JSONina."
+  },
+  "lighthouse-core/audits/service-worker.js | explanationBadStartUrl": {
+    "message": "Service worker hallitsee sivua, mutta `start_url` ({startUrl}) ei ole workerin toiminta-alueella ({scopeUrl})"
+  },
+  "lighthouse-core/audits/service-worker.js | explanationNoManifest": {
+    "message": "Service worker hallitsee sivua, mutta osoitetta (`start_url`) ei löytynyt, koska luetteloa ei noudettu."
+  },
+  "lighthouse-core/audits/service-worker.js | explanationOutOfScope": {
+    "message": "Lähteessä on ainakin yksi service worker, mutta sivu ({pageUrl}) ei kuulu sen toiminta-alueeseen."
+  },
+  "lighthouse-core/audits/service-worker.js | failureTitle": {
+    "message": "Ei rekisteröi service workeria, jonka hallinnassa sivu ja `start_url` ovat"
+  },
+  "lighthouse-core/audits/service-worker.js | title": {
+    "message": "Rekisteröi service workerin, jonka hallinnassa sivu ja `start_url` ovat"
+  },
+  "lighthouse-core/audits/splash-screen.js | description": {
+    "message": "Teeman sisältävä aloitussivu varmistaa laadukkaan kokemuksen, kun käyttäjä avaa sovelluksen aloitusnäytöltään. [Lue lisää](https://developers.google.com/web/tools/lighthouse/audits/custom-splash-screen)."
+  },
+  "lighthouse-core/audits/splash-screen.js | failureTitle": {
+    "message": "Yksilöityä aloitusnäyttöä ei ole määritetty"
+  },
+  "lighthouse-core/audits/splash-screen.js | title": {
+    "message": "Yksilöity aloitusnäyttö määritetty"
+  },
+  "lighthouse-core/audits/themed-omnibox.js | description": {
+    "message": "Voit muokata selaimen osoitepalkkia sivustosi teeman mukaiseksi. [Lue lisää](https://developers.google.com/web/tools/lighthouse/audits/address-bar)."
+  },
+  "lighthouse-core/audits/themed-omnibox.js | failureTitle": {
+    "message": "Ei aseta osoitepalkin teemaväriä"
+  },
+  "lighthouse-core/audits/themed-omnibox.js | title": {
+    "message": "Asettaa osoitepalkin teemavärin"
+  },
+  "lighthouse-core/audits/third-party-summary.js | columnBlockingTime": {
+    "message": "Pääsäikeen estoaika"
+  },
+  "lighthouse-core/audits/third-party-summary.js | columnThirdParty": {
+    "message": "Kolmas osapuoli"
+  },
+  "lighthouse-core/audits/third-party-summary.js | description": {
+    "message": "Kolmannen osapuolen koodi voi vaikuttaa lataustehokkuuteen merkittävästi. Rajoita tarpeettomien kolmannen osapuolen palveluntarjoajien määrää ja yritä ladata kolmannen osapuolen koodi sen jälkeen, kun sivun ensisijainen lataus on valmis. [Lue lisää](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/loading-third-party-javascript/)."
+  },
+  "lighthouse-core/audits/third-party-summary.js | displayValue": {
+    "message": "Kolmannen osapuolen koodi esti pääsäikeen {timeInMs, number, milliseconds} ms:n ajan"
+  },
+  "lighthouse-core/audits/third-party-summary.js | failureTitle": {
+    "message": "Vähennä kolmannen osapuolen koodin vaikutusta"
+  },
+  "lighthouse-core/audits/third-party-summary.js | title": {
+    "message": "Kolmannen osapuolen käyttö"
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | description": {
+    "message": "Ensimmäistä tavua edeltävä aika kertoo, kuinka kauan kestää, ennen kuin palvelimesi lähettää vastauksen. [Lue lisää](https://developers.google.com/web/tools/lighthouse/audits/ttfb)."
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | displayValue": {
+    "message": "Päädokumentti käytti {timeInMs, number, milliseconds} ms"
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | failureTitle": {
+    "message": "Lyhennä palvelimen vastausaikoja (ensimmäistä tavua edeltävä aika)"
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | title": {
+    "message": "Palvelimen vastausajat ovat lyhyitä (ensimmäistä tavua edeltävä aika)"
+  },
+  "lighthouse-core/audits/user-timings.js | columnDuration": {
+    "message": "Kesto"
+  },
+  "lighthouse-core/audits/user-timings.js | columnStartTime": {
+    "message": "Aloitusaika"
+  },
+  "lighthouse-core/audits/user-timings.js | columnType": {
+    "message": "Tyyppi"
+  },
+  "lighthouse-core/audits/user-timings.js | description": {
+    "message": "Suosittelemme käyttämään sovelluksen kehittämisessä User Timing ‑sovellusliittymää mittaamaan todellista toimivuutta tärkeiden käyttökokemusten aikana. [Lue lisää](https://developers.google.com/web/tools/lighthouse/audits/user-timing)."
+  },
+  "lighthouse-core/audits/user-timings.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 käyttäjän ajankäyttömerkintä}other{# käyttäjän ajankäyttömerkintää}}"
+  },
+  "lighthouse-core/audits/user-timings.js | title": {
+    "message": "User Timing ‑merkinnät ja ‑mitat"
+  },
+  "lighthouse-core/audits/uses-rel-preconnect.js | crossoriginWarning": {
+    "message": "Yhteyttä edeltävä linkki (<link>) löytyi osoitteelle {securityOrigin}, mutta selain ei käyttänyt sitä. Varmista, että käytät eri lähteiden `crossorigin`-määritettä oikein."
+  },
+  "lighthouse-core/audits/uses-rel-preconnect.js | description": {
+    "message": "Suosittelemme lisäämään sivulle `preconnect`- tai `dns-prefetch` ‑resurssivihjeitä, joiden avulla yhteydet tärkeisiin kolmannen osapuolen lähteisiin voidaan muodostaa ajoissa. [Lue lisää](https://developers.google.com/web/fundamentals/performance/resource-prioritization#preconnect)."
+  },
+  "lighthouse-core/audits/uses-rel-preconnect.js | title": {
+    "message": "Muodosta yhteydet pakollisiin kohteisiin etukäteen"
+  },
+  "lighthouse-core/audits/uses-rel-preload.js | crossoriginWarning": {
+    "message": "Esilatauslinkki <link> löytyi osoitteelle {preloadURL}, mutta selain ei käyttänyt sitä. Varmista, että käytät eri lähteiden `crossorigin`-määritettä oikein."
+  },
+  "lighthouse-core/audits/uses-rel-preload.js | description": {
+    "message": "Suosittelemme käyttämään `<link rel=preload>`-tagia, jotta voit priorisoida resursseja, joiden noutamista pyydetään sivun lataamisen myöhemmässä vaiheessa. [Lue lisää](https://developers.google.com/web/tools/lighthouse/audits/preload)."
+  },
+  "lighthouse-core/audits/uses-rel-preload.js | title": {
+    "message": "Lataa tärkeät pyynnöt etukäteen"
+  },
+  "lighthouse-core/audits/viewport.js | description": {
+    "message": "Lisää `<meta name=\"viewport\">`-tagi optimoidaksesi sovelluksen mobiilinäytöille. [Lue lisää](https://developers.google.com/web/tools/lighthouse/audits/has-viewport-meta-tag)."
+  },
+  "lighthouse-core/audits/viewport.js | explanationNoTag": {
+    "message": "`<meta name=\"viewport\">`-tagia ei löytynyt"
+  },
+  "lighthouse-core/audits/viewport.js | failureTitle": {
+    "message": "`<meta name=\"viewport\">` ‑tagi, jossa `width` tai `initial-scale`, puuttuu"
+  },
+  "lighthouse-core/audits/viewport.js | title": {
+    "message": "`<meta name=\"viewport\">` ‑tagi, jossa `width` tai `initial-scale`, löytyy"
+  },
+  "lighthouse-core/audits/without-javascript.js | description": {
+    "message": "Sovelluksen tulee näyttää jotakin sisältöä, vaikka JavaScript ei ole toiminnassa. Näytä käyttäjälle vähintään varoitus, että JavaScript on pakollinen sovelluksen käyttöä varten. [Lue lisää](https://developers.google.com/web/tools/lighthouse/audits/no-js)."
+  },
+  "lighthouse-core/audits/without-javascript.js | explanation": {
+    "message": "Sivun runko-osan pitäisi renderöidä sisältöä, vaikka sen skriptit eivät ole saatavilla."
+  },
+  "lighthouse-core/audits/without-javascript.js | failureTitle": {
+    "message": "Ei palauta varasisältöä, kun JavaScript ei ole käytettävissä"
+  },
+  "lighthouse-core/audits/without-javascript.js | title": {
+    "message": "Palauttaa sisältöä, vaikka JavaScript ei ole käytettävissä"
+  },
+  "lighthouse-core/audits/works-offline.js | description": {
+    "message": "Jos kehität progressiivista web-sovellusta, harkitse service workerin käyttöä tukemaan sovelluksen toimintaa offline-tilassa. [Lue lisää](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)."
+  },
+  "lighthouse-core/audits/works-offline.js | failureTitle": {
+    "message": "Nykyinen sivu ei vastaa 200-viestillä offline-tilassa"
+  },
+  "lighthouse-core/audits/works-offline.js | title": {
+    "message": "Nykyinen sivu vastaa 200-viestillä offline-tilassa"
+  },
+  "lighthouse-core/audits/works-offline.js | warningNoLoad": {
+    "message": "Sivun offline-lataus ei ehkä onnistu, koska testi-URL ({requested}) ohjattiin uudelleen osoitteeseen {final}. Kokeile suoraan toista URL-osoitetta."
+  },
+  "lighthouse-core/config/default-config.js | a11yAriaGroupDescription": {
+    "message": "Näillä voit parantaa ARIA:n käyttöä sovelluksessasi, mikä voi tehdä avustusteknologiaa (kuten näytönlukuohjelmaa) käyttävien kokemuksesta paremman."
+  },
+  "lighthouse-core/config/default-config.js | a11yAriaGroupTitle": {
+    "message": "ARIA"
+  },
+  "lighthouse-core/config/default-config.js | a11yAudioVideoGroupDescription": {
+    "message": "Näillä voit antaa vaihtoehtoista sisältöä äänelle ja videolle. Tämä voi parantaa kuulo- tai näkörajoitteisten käyttäjien kokemusta."
+  },
+  "lighthouse-core/config/default-config.js | a11yAudioVideoGroupTitle": {
+    "message": "Ääni ja video"
+  },
+  "lighthouse-core/config/default-config.js | a11yBestPracticesGroupDescription": {
+    "message": "Näissä kohdissa kerrotaan yleisistä esteettömyyden parhaista käytännöistä."
+  },
+  "lighthouse-core/config/default-config.js | a11yBestPracticesGroupTitle": {
+    "message": "Parhaat käytännöt"
+  },
+  "lighthouse-core/config/default-config.js | a11yCategoryDescription": {
+    "message": "Nämä tarkistukset tuovat esiin kohtia, joissa voit [parantaa verkkosovelluksesi esteettömyyttä](https://developers.google.com/web/fundamentals/accessibility). Vain pieni joukko esteettömyysongelmia voidaan havaita automaattisesti, joten myös manuaalista testaamista suositellaan."
+  },
+  "lighthouse-core/config/default-config.js | a11yCategoryManualDescription": {
+    "message": "Nämä kohteet koskevat alueita, joita automaattinen testaustyökalu ei voi testata. Lue lisää [esteettömyystarkistuksen tekemisen](https://developers.google.com/web/fundamentals/accessibility/how-to-review) oppaastamme."
+  },
+  "lighthouse-core/config/default-config.js | a11yCategoryTitle": {
+    "message": "Esteettömyys"
+  },
+  "lighthouse-core/config/default-config.js | a11yColorContrastGroupDescription": {
+    "message": "Näillä voit parantaa sisältösi luettavuutta."
+  },
+  "lighthouse-core/config/default-config.js | a11yColorContrastGroupTitle": {
+    "message": "Kontrasti"
+  },
+  "lighthouse-core/config/default-config.js | a11yLanguageGroupDescription": {
+    "message": "Näillä voit parantaa tulkintoja, joita eri alueiden käyttäjät tekevät sisällöstäsi."
+  },
+  "lighthouse-core/config/default-config.js | a11yLanguageGroupTitle": {
+    "message": "Kansainvälistyminen ja lokalisointi"
+  },
+  "lighthouse-core/config/default-config.js | a11yNamesLabelsGroupDescription": {
+    "message": "Näillä voit parantaa sovelluksen ohjainten semantiikkaa. Tämä voi parantaa avustusteknologiaa (kuten näytönlukuohjelmaa) käyttävien kokemusta."
+  },
+  "lighthouse-core/config/default-config.js | a11yNamesLabelsGroupTitle": {
+    "message": "Nimet ja tunnisteet"
+  },
+  "lighthouse-core/config/default-config.js | a11yNavigationGroupDescription": {
+    "message": "Nämä ovat tilaisuuksia parantaa näppäimistöllä siirtymistä sovelluksessasi."
+  },
+  "lighthouse-core/config/default-config.js | a11yNavigationGroupTitle": {
+    "message": "Siirtyminen"
+  },
+  "lighthouse-core/config/default-config.js | a11yTablesListsVideoGroupDescription": {
+    "message": "Näillä voi parantaa taulukko- tai luettelodatan lukukokemusta avustusteknologiaa (kuten näytönlukuohjelmaa) käyttäville."
+  },
+  "lighthouse-core/config/default-config.js | a11yTablesListsVideoGroupTitle": {
+    "message": "Taulukot ja luettelot"
+  },
+  "lighthouse-core/config/default-config.js | bestPracticesCategoryTitle": {
+    "message": "Parhaat käytännöt"
+  },
+  "lighthouse-core/config/default-config.js | budgetsGroupDescription": {
+    "message": "Tehokkuusbudjetit määrittävät sivuston tehokkuuden standardit."
+  },
+  "lighthouse-core/config/default-config.js | budgetsGroupTitle": {
+    "message": "Budjetit"
+  },
+  "lighthouse-core/config/default-config.js | diagnosticsGroupDescription": {
+    "message": "Lisätietoja sovelluksen toiminnasta. Luvut eivät [suoraan vaikuta](https://github.com/GoogleChrome/lighthouse/blob/d2ec9ffbb21de9ad1a0f86ed24575eda32c796f0/docs/scoring.md#how-are-the-scores-weighted) tehokkuusprosenttiin."
+  },
+  "lighthouse-core/config/default-config.js | diagnosticsGroupTitle": {
+    "message": "Diagnostiikka"
+  },
+  "lighthouse-core/config/default-config.js | firstPaintImprovementsGroupDescription": {
+    "message": "Tehokkuuden tärkein osa-alue on se, kuinka nopeasti pikselit renderöidään näytölle. Tärkeimmät mittarit ovat ensimmäinen sisällön renderöinti ja ensimmäinen merkityksellinen renderöinti."
+  },
+  "lighthouse-core/config/default-config.js | firstPaintImprovementsGroupTitle": {
+    "message": "Ensimmäistä renderöintiä koskevat parannusehdotukset"
+  },
+  "lighthouse-core/config/default-config.js | loadOpportunitiesGroupDescription": {
+    "message": "Nämä ehdotukset voivat auttaa sivua latautumaan nopeammin. Ne eivät [suoraan vaikuta](https://github.com/GoogleChrome/lighthouse/blob/d2ec9ffbb21de9ad1a0f86ed24575eda32c796f0/docs/scoring.md#how-are-the-scores-weighted) tehokkuusprosenttiin."
+  },
+  "lighthouse-core/config/default-config.js | loadOpportunitiesGroupTitle": {
+    "message": "Suositukset"
+  },
+  "lighthouse-core/config/default-config.js | metricGroupTitle": {
+    "message": "Tiedot"
+  },
+  "lighthouse-core/config/default-config.js | overallImprovementsGroupDescription": {
+    "message": "Paranna latauskokemusta kokonaisuutena, jotta sivu on responsiivisempi ja käytettävissä mahdollisimman pian. Tärkeimmät mittarit ovat interaktiivisuutta edeltävä aika ja nopeusindeksi."
+  },
+  "lighthouse-core/config/default-config.js | overallImprovementsGroupTitle": {
+    "message": "Yleiset parannusehdotukset"
+  },
+  "lighthouse-core/config/default-config.js | performanceCategoryTitle": {
+    "message": "Tehokkuus"
+  },
+  "lighthouse-core/config/default-config.js | pwaCategoryDescription": {
+    "message": "Näillä testeillä vahvistetaan progressiivisen web-sovelluksen ominaisuudet. [Lue lisää](https://developers.google.com/web/progressive-web-apps/checklist)."
+  },
+  "lighthouse-core/config/default-config.js | pwaCategoryManualDescription": {
+    "message": "Normaali [PWA Checklist](https://developers.google.com/web/progressive-web-apps/checklist) sisältää nämä kohdat, mutta Lighthouse ei tarkista niitä automaattisesti. Ne eivät vaikuta tulokseesi, mutta on tärkeää, että tarkistat kohdat manuaalisesti."
+  },
+  "lighthouse-core/config/default-config.js | pwaCategoryTitle": {
+    "message": "Progressiivinen web-sovellus"
+  },
+  "lighthouse-core/config/default-config.js | pwaFastReliableGroupTitle": {
+    "message": "Nopea ja luotettava"
+  },
+  "lighthouse-core/config/default-config.js | pwaInstallableGroupTitle": {
+    "message": "Asennettavissa"
+  },
+  "lighthouse-core/config/default-config.js | pwaOptimizedGroupTitle": {
+    "message": "PWA optimoitu"
+  },
+  "lighthouse-core/config/default-config.js | seoCategoryDescription": {
+    "message": "Näillä tarkistuksilla varmistetaan, että sivusi optimoidaan hakukoneiden tulossijoituksia varten. Hakusijoitukseesi voivat vaikuttaa myös muut tekijät, joita Lighthouse ei tarkista. [Lue lisää](https://support.google.com/webmasters/answer/35769)."
+  },
+  "lighthouse-core/config/default-config.js | seoCategoryManualDescription": {
+    "message": "Käytä näitä lisätarkistustyökaluja sivustollasi tarkistaaksesi kaikki hakukoneoptimoinnin parhaat käytännöt."
+  },
+  "lighthouse-core/config/default-config.js | seoCategoryTitle": {
+    "message": "Hakukoneoptimointi"
+  },
+  "lighthouse-core/config/default-config.js | seoContentGroupDescription": {
+    "message": "Muotoile HTML niin, että indeksointirobottien on helpompi ymmärtää sovelluksen sisältöä."
+  },
+  "lighthouse-core/config/default-config.js | seoContentGroupTitle": {
+    "message": "Parhaat sisältökäytännöt"
+  },
+  "lighthouse-core/config/default-config.js | seoCrawlingGroupDescription": {
+    "message": "Indeksointiroboteilla on oltava pääsy sovellukseen, jotta se voi näkyä hakutuloksissa."
+  },
+  "lighthouse-core/config/default-config.js | seoCrawlingGroupTitle": {
+    "message": "Indeksointi ja hakemistoon lisääminen"
+  },
+  "lighthouse-core/config/default-config.js | seoMobileGroupDescription": {
+    "message": "Varmista, että sivut ovat mobiiliystävällisiä, jotta käyttäjien ei tarvitse nipistää tai lähentää sisältösivuja lukeakseen niitä. [Lue lisää](https://developers.google.com/search/mobile-sites/)."
+  },
+  "lighthouse-core/config/default-config.js | seoMobileGroupTitle": {
+    "message": "Mobiiliystävällinen"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnCacheTTL": {
+    "message": "Välimuistin käyttöikä"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnLocation": {
+    "message": "Sijainti"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnName": {
+    "message": "Nimi"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnRequests": {
+    "message": "Pyynnöt"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnResourceType": {
+    "message": "Resurssin tyyppi"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnSize": {
+    "message": "Koko"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnTimeSpent": {
+    "message": "Käytetty aika"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnTransferSize": {
+    "message": "Siirron koko"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnURL": {
+    "message": "URL-osoite"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnWastedBytes": {
+    "message": "Potentiaalinen säästö"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnWastedMs": {
+    "message": "Potentiaalinen säästö"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | displayValueByteSavings": {
+    "message": "Potentiaalinen säästö: {wastedBytes, number, bytes} kt"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | displayValueMsSavings": {
+    "message": "Potentiaalinen säästö: {wastedMs, number, milliseconds} ms"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | documentResourceType": {
+    "message": "Dokumentti"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | fontResourceType": {
+    "message": "Kirjasin"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | imageResourceType": {
+    "message": "Kuva"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | mediaResourceType": {
+    "message": "Media"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | ms": {
+    "message": "{timeInMs, number, milliseconds} ms"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | otherResourceType": {
+    "message": "Muu"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | scriptResourceType": {
+    "message": "Skripti"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | seconds": {
+    "message": "{timeInMs, number, seconds} s"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | stylesheetResourceType": {
+    "message": "Tyylisivu"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | thirdPartyResourceType": {
+    "message": "Kolmas osapuoli"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | totalResourceType": {
+    "message": "Yhteensä"
+  },
+  "lighthouse-core/lib/lh-error.js | badTraceRecording": {
+    "message": "Sivun lataamisen jäljen tallennuksessa tapahtui virhe. Suorita Lighthouse uudelleen. ({errorCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | criTimeout": {
+    "message": "Aikakatkaisu: odotetaan yhteyttä virheenkorjausprotokollaan"
+  },
+  "lighthouse-core/lib/lh-error.js | didntCollectScreenshots": {
+    "message": "Chrome ei kerännyt kuvakaappauksia sivun latautumisen aikana. Varmista, että sisältö näkyy sivulla, ja suorita sitten Lighthouse uudelleen. ({errorCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | dnsFailure": {
+    "message": "DNS-palvelimet eivät voineet ratkaista verkkotunnusta."
+  },
+  "lighthouse-core/lib/lh-error.js | erroredRequiredArtifact": {
+    "message": "Vaadittu {artifactName}-keräystoiminto kohtasi virheen: {errorMessage}"
+  },
+  "lighthouse-core/lib/lh-error.js | internalChromeError": {
+    "message": "Tapahtui sisäinen Chrome-virhe. Käynnistä Chrome uudelleen ja yritä suorittaa Lighthouse sen jälkeen."
+  },
+  "lighthouse-core/lib/lh-error.js | missingRequiredArtifact": {
+    "message": "Vaadittua {artifactName}-keräystoimintoa ei suoritettu."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailed": {
+    "message": "Lighthouse ei pystynyt lataamaan pyytämääsi sivua luotettavasti. Varmista, että testaat oikeaa URL-osoitetta ja että palvelin vastaa kunnolla kaikkiin pyyntöihin."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedHung": {
+    "message": "Lighthouse ei pystynyt lataamaan pyytämääsi URL-osoitetta luotettavasti, koska sivu lakkasi vastaamasta."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedInsecure": {
+    "message": "Ilmoittamasi URL-osoitteen suojausvarmenne ei ole kelvollinen. {securityMessages}"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedInterstitial": {
+    "message": "Chrome esti sivun lataamisen välimainoksella. Varmista, että testaat oikeaa URL-osoitetta ja että palvelin vastaa kunnolla kaikkiin pyyntöihin."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedWithDetails": {
+    "message": "Lighthouse ei pystynyt lataamaan pyytämääsi sivua luotettavasti. Varmista, että testaat oikeaa URL-osoitetta ja että palvelin vastaa kunnolla kaikkiin pyyntöihin. (Tiedot: {errorDetails})"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedWithStatusCode": {
+    "message": "Lighthouse ei pystynyt lataamaan pyytämääsi sivua luotettavasti. Varmista, että testaat oikeaa URL-osoitetta ja että palvelin vastaa kunnolla kaikkiin pyyntöihin. (Tilakoodi: {statusCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadTookTooLong": {
+    "message": "Sivun lataaminen kesti liian kauan. Lyhennä sivun latausaikaa raportin ehdotusten mukaisesti ja yritä suorittaa Lighthouse sen jälkeen. ({errorCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | protocolTimeout": {
+    "message": "DevTools-protokollan vastauksen odotus on ylittänyt sille lasketun ajan. (Tapa: {protocolMethod})"
+  },
+  "lighthouse-core/lib/lh-error.js | requestContentTimeout": {
+    "message": "Resurssisisällön hakeminen on ylittänyt sille varatun ajan"
+  },
+  "lighthouse-core/lib/lh-error.js | urlInvalid": {
+    "message": "Kirjoittamasi URL-osoite näyttää olevan virheellinen."
+  },
+  "lighthouse-core/report/html/renderer/util.js | auditGroupExpandTooltip": {
+    "message": "Näytä tarkastukset"
+  },
+  "lighthouse-core/report/html/renderer/util.js | crcInitialNavigation": {
+    "message": "Ensimmäinen navigointi"
+  },
+  "lighthouse-core/report/html/renderer/util.js | crcLongestDurationLabel": {
+    "message": "Kriittisen polun enimmäisviive:"
+  },
+  "lighthouse-core/report/html/renderer/util.js | errorLabel": {
+    "message": "Virhe!"
+  },
+  "lighthouse-core/report/html/renderer/util.js | errorMissingAuditInfo": {
+    "message": "Raporttivirhe: ei tarkastustietoja"
+  },
+  "lighthouse-core/report/html/renderer/util.js | labDataTitle": {
+    "message": "Laboratoriodata"
+  },
+  "lighthouse-core/report/html/renderer/util.js | lsPerformanceCategoryDescription": {
+    "message": "[Lighthouse](https://developers.google.com/web/tools/lighthouse/) analysoi nykyisen sivun mobiiliverkon emulaation avulla. Arvot ovat arvioita ja voivat vaihdella."
+  },
+  "lighthouse-core/report/html/renderer/util.js | manualAuditsGroupTitle": {
+    "message": "Lisää manuaalisesti tarkistettavia kohteita"
+  },
+  "lighthouse-core/report/html/renderer/util.js | notApplicableAuditsGroupTitle": {
+    "message": "Ei sovellu"
+  },
+  "lighthouse-core/report/html/renderer/util.js | opportunityResourceColumnLabel": {
+    "message": "Suositus"
+  },
+  "lighthouse-core/report/html/renderer/util.js | opportunitySavingsColumnLabel": {
+    "message": "Arvioitu säästö"
+  },
+  "lighthouse-core/report/html/renderer/util.js | passedAuditsGroupTitle": {
+    "message": "Hyväksytyt tarkastukset"
+  },
+  "lighthouse-core/report/html/renderer/util.js | snippetCollapseButtonLabel": {
+    "message": "Tiivistä koodinpätkä"
+  },
+  "lighthouse-core/report/html/renderer/util.js | snippetExpandButtonLabel": {
+    "message": "Laajenna koodinpätkä"
+  },
+  "lighthouse-core/report/html/renderer/util.js | thirdPartyResourcesLabel": {
+    "message": "Näytä kolmannen osapuolen resurssit"
+  },
+  "lighthouse-core/report/html/renderer/util.js | toplevelWarningsMessage": {
+    "message": "Lighthousen suorituksessa havaittiin ongelmia:"
+  },
+  "lighthouse-core/report/html/renderer/util.js | varianceDisclaimer": {
+    "message": "Arvot ovat arvioita ja voivat vaihdella. Tehokkuusprosentti [perustuu vain näihin mittareihin](https://github.com/GoogleChrome/lighthouse/blob/d2ec9ffbb21de9ad1a0f86ed24575eda32c796f0/docs/scoring.md#how-are-the-scores-weighted)."
+  },
+  "lighthouse-core/report/html/renderer/util.js | warningAuditsGroupTitle": {
+    "message": "Läpäisi tarkastukset, mutta sai varoituksia"
+  },
+  "lighthouse-core/report/html/renderer/util.js | warningHeader": {
+    "message": "Varoitukset: "
+  },
+  "stack-packs/packs/wordpress.js | efficient_animated_content": {
+    "message": "GIF kannattaa ehkä ladata palveluun, jonka avulla se voidaan upottaa HTML5-videona."
+  },
+  "stack-packs/packs/wordpress.js | offscreen_images": {
+    "message": "Asenna [WordPressin lazy load ‑laajennus](https://wordpress.org/plugins/search/lazy+load/), joka lykkää näytöllä näkymättömien kuvien lataamista, tai vaihda teemaan, joka tarjoaa tämän ominaisuuden. Harkitse myös [AMP-laajennuksen](https://wordpress.org/plugins/amp/) käyttöä."
+  },
+  "stack-packs/packs/wordpress.js | render_blocking_resources": {
+    "message": "Monet WordPress-laajennukset voivat [tuoda tärkeää materiaalia sivun sisälle](https://wordpress.org/plugins/search/critical+css/) tai [lykätä vähemmän tärkeiden resurssien lataamista](https://wordpress.org/plugins/search/defer+css+javascript/). Huomaa, että näiden laajennusten tuomat optimoinnit voivat rikkoa teeman tai laajennusten toimintoja, joten sinun on todennäköisesti muutettava koodia."
+  },
+  "stack-packs/packs/wordpress.js | time_to_first_byte": {
+    "message": "Teemat, laajennukset ja palvelinasetukset vaikuttavat kaikki palvelimen vastausaikaan. Sinun kannattaa ehkä etsiä optimoidumpi teema, valita optimointilaajennus tai päivittää palvelimesi."
+  },
+  "stack-packs/packs/wordpress.js | total_byte_weight": {
+    "message": "Sinun kannattaa ehkä näyttää postausluettelossa katkelmia (esim. more-tagin avulla), näyttää yhdellä sivulla vähemmän postauksia, jakaa pitkät postaukset usealle sivulle tai käyttää kommenttien lazy load ‑laajennusta."
+  },
+  "stack-packs/packs/wordpress.js | unminified_css": {
+    "message": "Monet [WordPress-laajennukset](https://wordpress.org/plugins/search/minify+css/) voivat nopeuttaa sivustosi toimintaa yhdistämällä, kutistamalla ja pakkaamalla tyylejä. Tämä kutistaminen voidaan mahdollisesti tehdä jo aiemmin kehitysvaiheen prosessilla."
+  },
+  "stack-packs/packs/wordpress.js | unminified_javascript": {
+    "message": "Monet [WordPress-laajennukset](https://wordpress.org/plugins/search/minify+javascript/) voivat nopeuttaa sivustosi toimintaa yhdistämällä, kutistamalla ja pakkaamalla skriptejä. Tämä kutistaminen voidaan mahdollisesti tehdä jo aiemmin kehitysvaiheen prosessilla."
+  },
+  "stack-packs/packs/wordpress.js | unused_css_rules": {
+    "message": "Sinun kannattaa ehkä poistaa tai vaihtaa toisiin [WordPress-laajennuksia](https://wordpress.org/plugins/), jotka lataavat sivulla käyttämätöntä CSS:ää. Etsi tarpeetonta CSS:ää lisääviä laajennuksia [tutkimalla koodin testikattavuutta](https://developers.google.com/web/updates/2017/04/devtools-release-notes#coverage) Chromen DevToolsissa. Löydät syynä olevan teeman tai laajennuksen tyylitiedoston URL-osoitteen avulla. Etsi laajennuksia, joilla on monia tyylitiedostoja luettelossa ja paljon punaista koodin testikattavuudessa. Laajennuksen pitäisi lisätä tyylitiedosto jonoon vain, jos sitä todella käytetään sivulla."
+  },
+  "stack-packs/packs/wordpress.js | unused_javascript": {
+    "message": "Sinun kannattaa ehkä poistaa tai vaihtaa toisiin [WordPress-laajennuksia](https://wordpress.org/plugins/), jotka lataavat sivulla käyttämätöntä JavaScriptiä. Etsi tarpeetonta JS:ää lisääviä laajennuksia [tutkimalla koodin testikattavuutta](https://developers.google.com/web/updates/2017/04/devtools-release-notes#coverage) Chromen DevToolsissa. Löydät syynä olevan teeman tai laajennuksen skriptin URL-osoitteen avulla. Etsi laajennuksia, joilla on monia skriptejä luettelossa ja paljon punaista koodin testikattavuudessa. Laajennuksen pitäisi lisätä skripti jonoon vain, jos sitä todella käytetään sivulla."
+  },
+  "stack-packs/packs/wordpress.js | uses_long_cache_ttl": {
+    "message": "Lue lisää [selaimen välimuistin käytöstä WordPressissä](https://codex.wordpress.org/WordPress_Optimization#Browser_Caching)."
+  },
+  "stack-packs/packs/wordpress.js | uses_optimized_images": {
+    "message": "Harkitse [WordPressin kuvaoptimointilaajennusta](https://wordpress.org/plugins/search/optimize+images/), joka pakkaa kuvat mutta säilyttää niiden laadun."
+  },
+  "stack-packs/packs/wordpress.js | uses_responsive_images": {
+    "message": "Lataa kuvat suoraan [mediakirjastosta](https://codex.wordpress.org/Media_Library_Screen), jolloin oikeat kuvakoot ovat varmasti saatavilla, ja lisää ne kuvakirjastosta tai varmista oikeiden kuvakokojen käyttö kuva-widgetillä (myös responsiivisuuden raja-arvojen kohdalla). Älä käytä kuvia, joiden koko on `Full Size`, paitsi jos sivun koko on riittävä. [Lue lisää](https://codex.wordpress.org/Inserting_Images_into_Posts_and_Pages#Image_Size)."
+  },
+  "stack-packs/packs/wordpress.js | uses_text_compression": {
+    "message": "Voit ottaa tekstin pakkaamisen käyttöön palvelimen määrityksistä."
+  },
+  "stack-packs/packs/wordpress.js | uses_webp_images": {
+    "message": "Sinun kannattaa ehkä käyttää [laajennusta](https://wordpress.org/plugins/search/convert+webp/) tai palvelua, joka muuntaa ladatut kuvat automaattisesti oikeisiin muotoihin."
+  }
+}
diff --git a/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/fil.json b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/fil.json
new file mode 100644
index 0000000..cd2f16a
--- /dev/null
+++ b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/fil.json
@@ -0,0 +1,1541 @@
+{
+  "lighthouse-core/audits/accessibility/accesskeys.js | description": {
+    "message": "Hinahayaan ng mga access key ang mga user na mabilis na makatuon sa isang bahagi ng page. Para sa maayos na navigation, natatangi dapat ang bawat access key. [Matuto pa](https://web.dev/accesskeys/)."
+  },
+  "lighthouse-core/audits/accessibility/accesskeys.js | failureTitle": {
+    "message": "Hindi natatangi ang mga value na `[accesskey]`"
+  },
+  "lighthouse-core/audits/accessibility/accesskeys.js | title": {
+    "message": "Natatangi ang mga value ng `[accesskey]`"
+  },
+  "lighthouse-core/audits/accessibility/aria-allowed-attr.js | description": {
+    "message": "Sinusuportahan ng bawat `role` ng ARIA ang isang partikular na subset ng mga attribute na `aria-*`. Kapag hindi pinagtugma ang mga ito, magiging invalid ang mga attribute na `aria-*`. [Matuto pa](https://web.dev/aria-allowed-attr/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-allowed-attr.js | failureTitle": {
+    "message": "Hindi tumutugma ang mga attribute na `[aria-*]` sa mga tungkulin ng mga ito"
+  },
+  "lighthouse-core/audits/accessibility/aria-allowed-attr.js | title": {
+    "message": "Tumutugma ang mga attribute na `[aria-*]` sa mga tungkulin ng mga ito"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-attr.js | description": {
+    "message": "Ang ilang tungkulin ng ARIA ay may mga kinakailangang attribute na naglalarawan sa status ng element sa mga screen reader. [Matuto pa](https://web.dev/aria-required-attr/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-required-attr.js | failureTitle": {
+    "message": "May mga kulang na kinakailangang attribute na `[aria-*]` ang mga `[role]`"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-attr.js | title": {
+    "message": "Mayroon ng lahat ng kinakailangang attribute na `[aria-*]` ang mga `[role]`"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-children.js | description": {
+    "message": "Dapat maglaman ang ilang parent role ng ARIA ng mga partikular na child role para maisagawa nito ang mga nilalayong function sa pagiging accessible. [Matuto pa](https://web.dev/aria-required-children/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-required-children.js | failureTitle": {
+    "message": "Nawawala ang mga element na may `[role]` na nangangailangan ng mga partikular na child `[role]`."
+  },
+  "lighthouse-core/audits/accessibility/aria-required-children.js | title": {
+    "message": "May mga element na may `[role]` na nangangailangan ng mga partikular na child `[role]`"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-parent.js | description": {
+    "message": "Ang ilang child role ng ARIA ay laman dapat ng mga partikular na parent role para maayos na maisagawa ang mga nilalayong function sa pagiging accessible. [Matuto pa](https://web.dev/aria-required-parent/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-required-parent.js | failureTitle": {
+    "message": "Hindi nakapaloob ang mga `[role]` sa kinakailangang parent element ng mga ito"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-parent.js | title": {
+    "message": "Nakapaloob ang mga `[role]` sa kinakailangang pangunahing element ng mga ito"
+  },
+  "lighthouse-core/audits/accessibility/aria-roles.js | description": {
+    "message": "Dapat ay may mga valid na value ang mga tungkulin ng ARIA para maisagawa ang mga nilalayong function sa pagiging accessible. [Matuto pa](https://web.dev/aria-roles/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-roles.js | failureTitle": {
+    "message": "Hindi valid ang mga value ng `[role]`"
+  },
+  "lighthouse-core/audits/accessibility/aria-roles.js | title": {
+    "message": "Valid ang mga value ng `[role]`"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr-value.js | description": {
+    "message": "Hindi mauunawaan ng mga nakakatulong na teknolohiya, gaya ng mga screen reader, ang mga attribute ng ARIA na may mga invalid na value. [Matuto pa](https://web.dev/aria-valid-attr-value/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr-value.js | failureTitle": {
+    "message": "Walang valid na value ang mga attribute na`[aria-*]`"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr-value.js | title": {
+    "message": "May valid na value ang mga attribute na `[aria-*]`"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr.js | description": {
+    "message": "Hindi mauunawaan ng mga nakakatulong na teknolohiya, gaya ng mga screen reader, ang mga attribute ng ARIA na may mga invalid na pangalan. [Matuto pa](https://web.dev/aria-valid-attr/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr.js | failureTitle": {
+    "message": "Hindi valid o hindi mali ang spelling ng mga attribute na `[aria-*]`"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr.js | title": {
+    "message": "Valid at hindi mali ang spelling ng mga attribute na `[aria-*]`"
+  },
+  "lighthouse-core/audits/accessibility/audio-caption.js | description": {
+    "message": "Ginagawang kapaki-pakinabang ng mga caption ang mga element ng audio para sa mga user na bingi o may problema sa pandinig, nagbibigay ng mahalagang impormasyon gaya ng kung sino ang nagsasalita, ano ang kanilang sinasabi, at iba pang hindi binibigkas na impormasyon. [Matuto pa](https://web.dev/audio-caption/)."
+  },
+  "lighthouse-core/audits/accessibility/audio-caption.js | failureTitle": {
+    "message": "May kulang na element na `<track>` na may `[kind=\"captions\"]` ang mga element na `<audio>`"
+  },
+  "lighthouse-core/audits/accessibility/audio-caption.js | title": {
+    "message": "Naglalaman ng element na `<track>` na may `[kind=\"captions\"]` ang mga element na `<audio>`"
+  },
+  "lighthouse-core/audits/accessibility/axe-audit.js | failingElementsHeader": {
+    "message": "Mga Hindi Nakapasang Element"
+  },
+  "lighthouse-core/audits/accessibility/button-name.js | description": {
+    "message": "Kapag walang naa-access na pangalan ang isang button, iaanunsyo ito ng mga screen reader bilang \"button,\" kaya naman hindi ito magagamit ng mga user na umaasa sa mga screen reader. [Matuto pa](https://web.dev/button-name/)."
+  },
+  "lighthouse-core/audits/accessibility/button-name.js | failureTitle": {
+    "message": "Walang naa-access na pangalan ang mga button"
+  },
+  "lighthouse-core/audits/accessibility/button-name.js | title": {
+    "message": "May naa-access na pangalan ang mga button"
+  },
+  "lighthouse-core/audits/accessibility/bypass.js | description": {
+    "message": "Kapag nagdagdag ng mga paraan para i-bypass ang paulit-ulit na content, mas madaling makakapag-navigate sa page ang mga user ng keyboard. [Matuto pa](https://web.dev/bypass/)."
+  },
+  "lighthouse-core/audits/accessibility/bypass.js | failureTitle": {
+    "message": "Walang heading, link ng paglaktaw, o rehiyon ng landmark ang page"
+  },
+  "lighthouse-core/audits/accessibility/bypass.js | title": {
+    "message": "Ang page ay naglalaman ng heading, link ng paglaktaw, o rehiyon ng landmark"
+  },
+  "lighthouse-core/audits/accessibility/color-contrast.js | description": {
+    "message": "Mahirap o imposibleng mabasa ng maraming user ang text na mababa ang contrast. [Matuto pa](https://web.dev/color-contrast/)."
+  },
+  "lighthouse-core/audits/accessibility/color-contrast.js | failureTitle": {
+    "message": "Kulang ang ratio ng contrast ng mga kulay ng background at foreground."
+  },
+  "lighthouse-core/audits/accessibility/color-contrast.js | title": {
+    "message": "May sapat na ratio ng contrast ang mga kulay ng background at foreground"
+  },
+  "lighthouse-core/audits/accessibility/definition-list.js | description": {
+    "message": "Kapag hindi naka-mark up nang maayos ang mga listahan ng kahulugan, puwedeng gumawa ng nakakalito o hindi tumpak na output ang mga screen reader. [Matuto pa](https://web.dev/definition-list/)."
+  },
+  "lighthouse-core/audits/accessibility/definition-list.js | failureTitle": {
+    "message": "Hindi naglalaman ang `<dl>` ng mga nakaayos lang na pangkat na `<dt>` at `<dd>`, mga element na `<script>` o `<template>`."
+  },
+  "lighthouse-core/audits/accessibility/definition-list.js | title": {
+    "message": "Naglalaman ang `<dl>` ng mga nakaayos lang na `<dt>` at mga `<dd>` na pangkat, `<script>` o mga `<template>` na element."
+  },
+  "lighthouse-core/audits/accessibility/dlitem.js | description": {
+    "message": "Nakapaloob dapat ang mga item sa listahan ng kahulugan (`<dt>` at `<dd>`) sa isang parent element na `<dl>` para matiyak na maayos na maiaanunsyo ng mga screen reader ang mga ito. [Matuto pa](https://web.dev/dlitem/)."
+  },
+  "lighthouse-core/audits/accessibility/dlitem.js | failureTitle": {
+    "message": "Hindi nakapaloob sa mga element na `<dl>` ang mga item sa listahan ng kahulugan"
+  },
+  "lighthouse-core/audits/accessibility/dlitem.js | title": {
+    "message": "Nakapaloob sa mga element na `<dl>` ang mga item sa listahan ng kahulugan"
+  },
+  "lighthouse-core/audits/accessibility/document-title.js | description": {
+    "message": "Binibigyan ng pamagat ang mga user ng screen reader ng pangkalahatang-ideya ng page, at lubos na umaasa rito ang mga user ng search engine para matukoy kung may kaugnayan ang isang page sa kanilang paghahanap. [Matuto pa](https://web.dev/document-title/)."
+  },
+  "lighthouse-core/audits/accessibility/document-title.js | failureTitle": {
+    "message": "Walang element na `<title>` ang dokumento"
+  },
+  "lighthouse-core/audits/accessibility/document-title.js | title": {
+    "message": "May `<title>` na element ang dokumento"
+  },
+  "lighthouse-core/audits/accessibility/duplicate-id.js | description": {
+    "message": "Natatangi dapat ang value ng id attribute para hindi makaligtaan ng mga nakakatulong na teknolohiya ang iba pang instance. [Matuto pa](https://web.dev/duplicate-id/)."
+  },
+  "lighthouse-core/audits/accessibility/duplicate-id.js | failureTitle": {
+    "message": "Hindi natatangi ang mga attribute na `[id]`"
+  },
+  "lighthouse-core/audits/accessibility/duplicate-id.js | title": {
+    "message": "Natatangi ang mga attribute na `[id]` sa page"
+  },
+  "lighthouse-core/audits/accessibility/frame-title.js | description": {
+    "message": "Umaasa ang mga user ng screen reader sa mga pamagat ng frame para ilarawan ang mga content ng mga frame. [Matuto pa](https://web.dev/frame-title/)."
+  },
+  "lighthouse-core/audits/accessibility/frame-title.js | failureTitle": {
+    "message": "Walang pamagat ang mga element na`<frame>` o `<iframe>`"
+  },
+  "lighthouse-core/audits/accessibility/frame-title.js | title": {
+    "message": "May pamagat ang mga elemento na`<frame>` o `<iframe>`"
+  },
+  "lighthouse-core/audits/accessibility/html-has-lang.js | description": {
+    "message": "Kung hindi tutukoy ng lang attribute ang isang page, ipagpapalagay ng screen reader na ang page ay nasa default na wikang pinili ng user noong sine-set up ang screen reader. Kung wala talaga sa default na wika ang page, puwedeng hindi maianunsyo nang tama ng screen reader ang text ng page. [Matuto pa](https://web.dev/html-has-lang/)."
+  },
+  "lighthouse-core/audits/accessibility/html-has-lang.js | failureTitle": {
+    "message": "Walang attribute na `[lang]` ang element na `<html>`"
+  },
+  "lighthouse-core/audits/accessibility/html-has-lang.js | title": {
+    "message": "Ang `<html>` na element ay may attribute na `[lang]`"
+  },
+  "lighthouse-core/audits/accessibility/html-lang-valid.js | description": {
+    "message": "Ang pagtukoy ng valid na [wika ng BCP 47](https://www.w3.org/International/questions/qa-choosing-language-tags#question) ay nakakatulong na maianunsyo nang maayos ang text. [Matuto pa](https://web.dev/html-lang-valid/)."
+  },
+  "lighthouse-core/audits/accessibility/html-lang-valid.js | failureTitle": {
+    "message": "Walang valid na value ang element na `<html>` para sa attribute nitong `[lang]`."
+  },
+  "lighthouse-core/audits/accessibility/html-lang-valid.js | title": {
+    "message": "May valid na value ang element na `<html>` para sa `[lang]` na attribute nito"
+  },
+  "lighthouse-core/audits/accessibility/image-alt.js | description": {
+    "message": "Layunin dapat ng mga nagbibigay-impormasyong element na magkaroon ng maikli at naglalarawang alternatibong text. Puwedeng balewalain ang mga palamuting element sa pamamagitan ng walang lamang kahaliling attribute. [Matuto pa](https://web.dev/image-alt/)."
+  },
+  "lighthouse-core/audits/accessibility/image-alt.js | failureTitle": {
+    "message": "Walang attribute na `[alt]` ang mga element ng larawan"
+  },
+  "lighthouse-core/audits/accessibility/image-alt.js | title": {
+    "message": "May mga attribute na `[alt]` ang mga element na larawan"
+  },
+  "lighthouse-core/audits/accessibility/input-image-alt.js | description": {
+    "message": "Kapag gumagamit ng larawan bilang button na `<input>`, makakatulong sa mga user ng screen reader ang pagbibigay ng alternatibong text na maunawaan kung para saan ang button. [Matuto pa](https://web.dev/input-image-alt/)."
+  },
+  "lighthouse-core/audits/accessibility/input-image-alt.js | failureTitle": {
+    "message": "Walang text na `[alt]` ang mga element na `<input type=\"image\">`"
+  },
+  "lighthouse-core/audits/accessibility/input-image-alt.js | title": {
+    "message": "May text na `[alt]` ang mga element na `<input type=\"image\">`"
+  },
+  "lighthouse-core/audits/accessibility/label.js | description": {
+    "message": "Tinitiyak ng mga label na maayos na inaanunsyo ang mga kontrol ng form ng mga nakakatulong na teknolohiya, tulad ng mga screen reader. [Matuto pa](https://web.dev/label/)."
+  },
+  "lighthouse-core/audits/accessibility/label.js | failureTitle": {
+    "message": "Walang nauugnay na label ang mga element ng form"
+  },
+  "lighthouse-core/audits/accessibility/label.js | title": {
+    "message": "May mga nauugnay na label ang mga element ng form"
+  },
+  "lighthouse-core/audits/accessibility/layout-table.js | description": {
+    "message": "Dapat ay walang kasamang element ng data ang isang talahanayang ginagamit para sa mga layunin ng layout, gaya ng th o mga element ng caption o attribute ng buod, dahil puwede itong gumawa ng nakakalitong karanasan para sa mga user ng screen reader. [Matuto pa](https://web.dev/layout-table/)."
+  },
+  "lighthouse-core/audits/accessibility/layout-table.js | failureTitle": {
+    "message": "Hindi iniiwasan ng mga pang-presentation na element na `<table>` ang paggamit ng attribute na `<th>`, `<caption>` o `[summary]`."
+  },
+  "lighthouse-core/audits/accessibility/layout-table.js | title": {
+    "message": "Iniiwasan ng mga pang-presentation na element na `<table>` ang paggamit ng attribute na `<th>`, `<caption>` o `[summary]`."
+  },
+  "lighthouse-core/audits/accessibility/link-name.js | description": {
+    "message": "Pinapahusay ng text ng link (at alternatibong text para sa mga larawan, kapag ginamit bilang mga link) na nakikita, natatangi, at nafo-focus ang karanasan sa navigation para sa mga user ng screen reader. [Matuto pa](https://web.dev/link-name/)."
+  },
+  "lighthouse-core/audits/accessibility/link-name.js | failureTitle": {
+    "message": "Walang nakikitang pangalan ang mga link"
+  },
+  "lighthouse-core/audits/accessibility/link-name.js | title": {
+    "message": "May nakikitang pangalan ang mga link"
+  },
+  "lighthouse-core/audits/accessibility/list.js | description": {
+    "message": "May partikular na paraan ng pag-aanunsyo ng mga listahan ang mga screen reader. Makakatulong sa output ng screen reader ang pagtiyak na maayos ang istruktura ng listahan. [Matuto pa](https://web.dev/list/)."
+  },
+  "lighthouse-core/audits/accessibility/list.js | failureTitle": {
+    "message": "Hindi lang naglalaman ang listahan ng mga element na `<li>` at element na sumusuporta sa script (`<script>` at `<template>`)."
+  },
+  "lighthouse-core/audits/accessibility/list.js | title": {
+    "message": "Naglalaman lang ang mga listahan ng mga element na `<li>` at element na sumusuporta sa script (`<script>` at `<template>`)."
+  },
+  "lighthouse-core/audits/accessibility/listitem.js | description": {
+    "message": "Kailangang nakapaloob sa parent `<ul>` o `<ol>` ang mga item sa listahan `<li>` para maayos itong maianunsyo ng mga screen reader. [Matuto pa](https://web.dev/listitem/)."
+  },
+  "lighthouse-core/audits/accessibility/listitem.js | failureTitle": {
+    "message": "Hindi nakapaloob ang mga item sa listahan (`<li>`) sa mga parent element na `<ul>` o `<ol>`."
+  },
+  "lighthouse-core/audits/accessibility/listitem.js | title": {
+    "message": "Nakapaloob ang mga item sa listahan (`<li>`) sa mga pangunahing element na `<ul>` o `<ol>`"
+  },
+  "lighthouse-core/audits/accessibility/meta-refresh.js | description": {
+    "message": "Hindi inaasahan ng mga user na awtomatikong magre-refresh ang isang page, at babalik sa itaas ng page ang focus kapag ginawa ito. Puwede itong gumawa ng nakakainis o nakakalitong karanasan. [Matuto pa](https://web.dev/meta-refresh/)."
+  },
+  "lighthouse-core/audits/accessibility/meta-refresh.js | failureTitle": {
+    "message": "Gumagamit ng `<meta http-equiv=\"refresh\">` ang dokumento"
+  },
+  "lighthouse-core/audits/accessibility/meta-refresh.js | title": {
+    "message": "Hindi gumagamit ng `<meta http-equiv=\"refresh\">` ang dokumento"
+  },
+  "lighthouse-core/audits/accessibility/meta-viewport.js | description": {
+    "message": "Problema ang pag-disable ng pag-zoom para sa mga user na malabo ang paningin na umaasa sa pag-magnify ng screen para maayos na makita ang mga content ng isang web page. [Matuto pa](https://web.dev/meta-viewport/)."
+  },
+  "lighthouse-core/audits/accessibility/meta-viewport.js | failureTitle": {
+    "message": "Ginagamit ang `[user-scalable=\"no\"]` sa element na `<meta name=\"viewport\">` o `[maximum-scale]` na attribute na mas mababa sa 5."
+  },
+  "lighthouse-core/audits/accessibility/meta-viewport.js | title": {
+    "message": "Hindi ginagamit ang `[user-scalable=\"no\"]` sa element na `<meta name=\"viewport\">` at hindi mas mababa sa 5 ang attribute na `[maximum-scale]`."
+  },
+  "lighthouse-core/audits/accessibility/object-alt.js | description": {
+    "message": "Hindi makakapag-translate ng hindi text na content ang mga screen reader. Kapag nagdagdag ng alt text sa mga element na `<object>`, matutulungan ang mga screen reader sa pagpaparating ng kahulugan sa mga user. [Matuto pa](https://web.dev/object-alt/)."
+  },
+  "lighthouse-core/audits/accessibility/object-alt.js | failureTitle": {
+    "message": "Walang text na `[alt]` ang mga element na `<object>`"
+  },
+  "lighthouse-core/audits/accessibility/object-alt.js | title": {
+    "message": "May text na `[alt]` ang mga element na `<object>`"
+  },
+  "lighthouse-core/audits/accessibility/tabindex.js | description": {
+    "message": "Nagpapahiwatig ng tahasang pagsasaayos ng navigation ang value na mas mataas sa 0. Bagama't kung tutuusin ay valid ito, madalas itong nagdudulot ng mga nakakainis na karanasan para sa mga user na umaasa sa mga nakakatulong na teknolohiya. [Matuto pa](https://web.dev/tabindex/)."
+  },
+  "lighthouse-core/audits/accessibility/tabindex.js | failureTitle": {
+    "message": "Ang ilang element ay may value ng `[tabindex]` na mas mataas sa 0"
+  },
+  "lighthouse-core/audits/accessibility/tabindex.js | title": {
+    "message": "Walang element na may value na `[tabindex]` na mas mataas sa 0"
+  },
+  "lighthouse-core/audits/accessibility/td-headers-attr.js | description": {
+    "message": "May mga feature ang mga screen reader na mas nagpapadali ng pag-navigate sa mga talahanayan. Kapag tiniyak na ang mga cell na `<td>` na gumagamit sa attribute na `[headers]` ay tumutukoy lang sa iba pang cell sa talahanayang ding iyon, puwedeng mapaganda ang karanasan para sa mga user ng screen reader. [Matuto pa](https://web.dev/td-headers-attr/)."
+  },
+  "lighthouse-core/audits/accessibility/td-headers-attr.js | failureTitle": {
+    "message": "Tumutukoy sa iba pang cell sa kaparehong talahanayan ang mga cell sa isang element na `<table>` na gumagamit sa attribute na `[headers]`"
+  },
+  "lighthouse-core/audits/accessibility/td-headers-attr.js | title": {
+    "message": "Ang mga cell sa isang element na `<table>` na gumagamit sa attribute na `[headers]` ay tumutukoy lang sa iba pang cell sa talahanayang ding iyon."
+  },
+  "lighthouse-core/audits/accessibility/th-has-data-cells.js | description": {
+    "message": "May mga feature ang mga screen reader na mas nagpapadali ng pag-navigate sa mga talahanayan. Kapag tiniyak na ang mga header ng talahanayan ay tumutukoy sa ilang hanay ng mga cell, puwedeng mapahusay ang karanasan para sa mga user ng screen reader. [Matuto pa](https://web.dev/th-has-data-cells/)."
+  },
+  "lighthouse-core/audits/accessibility/th-has-data-cells.js | failureTitle": {
+    "message": "Ang mga element na `<th>` at element na may `[role=\"columnheader\"/\"rowheader\"]` ay walang cell ng data na inilalarawan ng mga ito."
+  },
+  "lighthouse-core/audits/accessibility/th-has-data-cells.js | title": {
+    "message": "May mga inilalarawang cell ng data ang mga element na `<th>` at element na may `[role=\"columnheader\"/\"rowheader\"]`."
+  },
+  "lighthouse-core/audits/accessibility/valid-lang.js | description": {
+    "message": "Ang pagtukoy ng valid na [wika ng BCP 47](https://www.w3.org/International/questions/qa-choosing-language-tags#question) sa mga element ay nakakatulong sa pagtiyak na tama ang pagbigkas ng screen reader sa text. [Matuto pa](https://web.dev/valid-lang/)."
+  },
+  "lighthouse-core/audits/accessibility/valid-lang.js | failureTitle": {
+    "message": "Walang valid na value ang mga attribute na `[lang]`"
+  },
+  "lighthouse-core/audits/accessibility/valid-lang.js | title": {
+    "message": "May valid na value ang mga attribute na `[lang]`"
+  },
+  "lighthouse-core/audits/accessibility/video-caption.js | description": {
+    "message": "Kapag nagbigay ng caption ang isang video, mas madaling maa-access ng mga user na bingi at may problema sa pandinig ang impormasyon nito. [Matuto pa](https://web.dev/video-caption/)."
+  },
+  "lighthouse-core/audits/accessibility/video-caption.js | failureTitle": {
+    "message": "Hindi naglalaman ng element na `<track>` na may `[kind=\"captions\"]` ang mga element na `<video>`"
+  },
+  "lighthouse-core/audits/accessibility/video-caption.js | title": {
+    "message": "Naglalaman ng element na `<track>` na may `[kind=\"captions\"]` ang mga element na `<video>`"
+  },
+  "lighthouse-core/audits/accessibility/video-description.js | description": {
+    "message": "Nagbibigay ang mga audio na paglalarawan ng may kaugnayang impormasyon para sa mga video na hindi magagawa ng dialogue, gaya ng mga expression ng mukha at eksena. [Matuto pa](https://web.dev/video-description/)."
+  },
+  "lighthouse-core/audits/accessibility/video-description.js | failureTitle": {
+    "message": "Hindi naglalaman ng element na `<track>` na may `[kind=\"description\"]` ang mga element na `<video>`"
+  },
+  "lighthouse-core/audits/accessibility/video-description.js | title": {
+    "message": "Naglalaman ng element na `<track>` na may `[kind=\"description\"]` ang mga element na `<video>`"
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | description": {
+    "message": "Para sa magandang hitsura sa iOS kapag nagdagdag ang mga user ng progressive web app sa home screen, tumukoy ng isang `apple-touch-icon`. Dapat itong nakadirekta sa isang hindi transparent na kuwadradong 192px (o 180px) PNG. [Matuto Pa](https://developers.google.com/web/fundamentals/design-and-ux/browser-customization/)."
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | failureTitle": {
+    "message": "Hindi nagbibigay ng valid na `apple-touch-icon`"
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | precomposedWarning": {
+    "message": "Hindi napapanahon ang `apple-touch-icon-precomposed`; mas gusto ang `apple-touch-icon`."
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | title": {
+    "message": "Nagbibigay ng valid na `apple-touch-icon`"
+  },
+  "lighthouse-core/audits/bootup-time.js | chromeExtensionsWarning": {
+    "message": "Nagkaroon ng negatibong epekto ang mga extension ng Chrome sa performance ng pag-load ng page na ito. Subukang i-audit ang page sa incognito mode o mula sa isang profile sa Chrome nang walang extension."
+  },
+  "lighthouse-core/audits/bootup-time.js | columnScriptEval": {
+    "message": "Pagsusuri ng Script"
+  },
+  "lighthouse-core/audits/bootup-time.js | columnScriptParse": {
+    "message": "Pag-parse ng Script"
+  },
+  "lighthouse-core/audits/bootup-time.js | columnTotal": {
+    "message": "Kabuuang Oras ng CPU"
+  },
+  "lighthouse-core/audits/bootup-time.js | description": {
+    "message": "Pag-isipang bawasan ang oras na ginugugol sa pag-parse, pag-compile, at pagpapagana ng JS. Puwedeng mapansin mong nakakatulong dito ang paghahatid ng mas maliliit na payload ng JS. [Matuto pa](https://developers.google.com/web/tools/lighthouse/audits/bootup)."
+  },
+  "lighthouse-core/audits/bootup-time.js | failureTitle": {
+    "message": "Pabilisin ang pagpapagana ng JavaScript"
+  },
+  "lighthouse-core/audits/bootup-time.js | title": {
+    "message": "Bilis ng pagpapagana ng JavaScript"
+  },
+  "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | description": {
+    "message": "Hindi mahusay ang malalaking GIF sa paghahatid ng animated na content. Pag-isipang gumamit ng mga MPEG4/WebM na video para sa mga animation at PNG/WebP para sa mga static na larawan sa halip na GIF para makatipid ng mga byte ng network. [Matuto pa](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/replace-animated-gifs-with-video/)"
+  },
+  "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | title": {
+    "message": "Gumamit ng mga format ng video para sa animated na content"
+  },
+  "lighthouse-core/audits/byte-efficiency/offscreen-images.js | description": {
+    "message": "Pag-isipang i-lazy load ang mga larawang wala sa screen at nakatago kapag tapos nang mag-load ang lahat ng mahalagang resource para mapabilis ang oras bago maging interactive. [Matuto pa](https://developers.google.com/web/tools/lighthouse/audits/offscreen-images)."
+  },
+  "lighthouse-core/audits/byte-efficiency/offscreen-images.js | title": {
+    "message": "Ipagpaliban ang mga larawang wala sa screen"
+  },
+  "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | description": {
+    "message": "Bina-block ng mga resource ang first paint ng iyong page. Pag-isipang ihatid ang mahalagang JS/CSS inline at ipagpaliban ang lahat ng hindi mahalagang JS/istilo. [Matuto pa](https://developers.google.com/web/tools/lighthouse/audits/blocking-resources)."
+  },
+  "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | title": {
+    "message": "Alisin ang mga resource na nagba-block ng pag-render"
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | description": {
+    "message": "Napapagastos ang mga user sa malalaking payload ng network, at malaki ang kaugnayan ng mga ito sa matagal na pag-load. [Matuto pa](https://developers.google.com/web/tools/lighthouse/audits/network-payloads)."
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | displayValue": {
+    "message": "Ang kabuuang laki ay {totalBytes, number, bytes} KB"
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | failureTitle": {
+    "message": "Iwasan ang malalaking payload ng network"
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | title": {
+    "message": "Umiiwas sa malalaking payload ng network"
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-css.js | description": {
+    "message": "Puwedeng bawasan ng pagpapaliit ng mga file ng CSS ang laki ng payload ng network. [Matuto pa](https://developers.google.com/web/tools/lighthouse/audits/minify-css)."
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-css.js | title": {
+    "message": "Paliitin ang CSS"
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | description": {
+    "message": "Puwedeng bawasan ng pagpapaliit ng mga file ng JavaScript ang laki ng payload at oras ng pag-parse ng script. [Matuto pa](https://developers.google.com/speed/docs/insights/MinifyResources)."
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | title": {
+    "message": "Paliitin ang JavaScript"
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | description": {
+    "message": "Alisin ang mga hindi na gumaganang panuntunan sa mga stylesheet at ipagpaliban ang pag-load ng CSS na hindi ginagamit para sa content sa itaas ng fold para mabawasan ang mga hindi kinakailangang byte na nakokonsumo ng aktibidad sa network. [Matuto pa](https://developers.google.com/web/tools/lighthouse/audits/unused-css)."
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | title": {
+    "message": "Alisin ang hindi ginagamit na CSS"
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-javascript.js | description": {
+    "message": "Alisin ang hindi nagamit na JavaScript para mabawasan ang mga byte na nakokonsumo ng aktibidad sa network."
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-javascript.js | title": {
+    "message": "Alisin ang hindi nagamit na JavaScript"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | description": {
+    "message": "Puwedeng mapabilis ng mahabang lifetime ng cache ang mga umuulit na pagbisita sa iyong page. [Matuto pa](https://developers.google.com/web/tools/lighthouse/audits/cache-policy)."
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | displayValue": {
+    "message": "{itemCount,plural, =1{Nakakita ng 1 resource}one{Nakakita ng # resource}other{Nakakita ng # na resource}}"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | failureTitle": {
+    "message": "Maghatid ng mga static na asset nang may mahusay na patakaran sa cache"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | title": {
+    "message": "Gumagamit ng mahusay na patakaran sa cache sa mga static na asset"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | description": {
+    "message": "Mas mabilis mag-load ang mga na-optimize na larawan at mas kaunti ang nakokonsumong cellular data ng mga ito. [Matuto pa](https://developers.google.com/web/tools/lighthouse/audits/optimize-images)."
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | title": {
+    "message": "Mahusay na mag-encode ng mga larawan"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | description": {
+    "message": "Maghatid ng mga larawang naaangkop ang laki para makatipid sa cellular data at mapabilis ang pag-load. [Matuto pa](https://developers.google.com/web/tools/lighthouse/audits/oversized-images)."
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | title": {
+    "message": "Iangkop ang laki ng mga larawan"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | description": {
+    "message": "Dapat maghatid ang mga text-based na resource nang may compression (gzip, deflate, o brotli) para mabawasan ang kabuuang mga byte ng network. [Matuto pa](https://developers.google.com/web/tools/lighthouse/audits/text-compression)."
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | title": {
+    "message": "I-enable ang compression ng text"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | description": {
+    "message": "Kadalasan, mas mahusay ang pag-compress ng mga format ng larawan gaya ng JPEG 2000, JPEG XR, at WebP kaysa sa pag-compress ng PNG o JPEG, kaya mas mabilis ang pag-download at mas kaunti ang nakokonsumong data. [Matuto pa](https://developers.google.com/web/tools/lighthouse/audits/webp)."
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | title": {
+    "message": "Maghatid ng mga larawan sa mga makabagong format"
+  },
+  "lighthouse-core/audits/content-width.js | description": {
+    "message": "Kung hindi tumutugma ang lapad ng content ng iyong app sa lapad ng viewport, puwedeng hindi ma-optimize ang app mo para sa mga screen ng mobile. [Matuto pa](https://developers.google.com/web/tools/lighthouse/audits/content-sized-correctly-for-viewport)."
+  },
+  "lighthouse-core/audits/content-width.js | explanation": {
+    "message": "Hindi tumutugma ang laki ng viewport na {innerWidth}px sa laki ng window na {outerWidth}px."
+  },
+  "lighthouse-core/audits/content-width.js | failureTitle": {
+    "message": "Hindi tama ang laki ng content para sa viewport"
+  },
+  "lighthouse-core/audits/content-width.js | title": {
+    "message": "Tama ang laki ng content para sa viewport"
+  },
+  "lighthouse-core/audits/critical-request-chains.js | description": {
+    "message": "Ipinapakita sa iyo ng Mga Chain ng Mahahalagang Kahilingan kung anong mga resource ang nilo-load nang may mataas na priyoridad. Pag-isipang paikliin ang mga chain, paliitin ang mga dina-download na resource, o ipagpaliban ang pag-download ng mga hindi kinakailangang resource para mapabilis ang pag-load ng page. [Matuto pa](https://developers.google.com/web/tools/lighthouse/audits/critical-request-chains)."
+  },
+  "lighthouse-core/audits/critical-request-chains.js | displayValue": {
+    "message": "{itemCount,plural, =1{Nakakita ng 1 chain}one{Nakakita ng # chain}other{Nakakita ng # na chain}}"
+  },
+  "lighthouse-core/audits/critical-request-chains.js | title": {
+    "message": "I-minimize ang Lalim ng Mahahalagang Kahilingan"
+  },
+  "lighthouse-core/audits/deprecations.js | columnDeprecate": {
+    "message": "Paghinto sa Paggamit / Babala"
+  },
+  "lighthouse-core/audits/deprecations.js | columnLine": {
+    "message": "Linya"
+  },
+  "lighthouse-core/audits/deprecations.js | description": {
+    "message": "Aalisin sa browser ang mga hindi na ginagamit na API sa paglaon. [Matuto pa](https://web.dev/deprecations)."
+  },
+  "lighthouse-core/audits/deprecations.js | displayValue": {
+    "message": "{itemCount,plural, =1{May nakitang 1 babala}one{May nakitang # babala}other{May nakitang # na babala}}"
+  },
+  "lighthouse-core/audits/deprecations.js | failureTitle": {
+    "message": "Gumagamit ng mga hindi na ginagamit na API"
+  },
+  "lighthouse-core/audits/deprecations.js | title": {
+    "message": "Iniiwasan ang mga hindi na ginagamit na API"
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | description": {
+    "message": "Hindi na ginagamit ang Cache ng Application. [Matuto pa](https://web.dev/appcache-manifest)."
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | displayValue": {
+    "message": "Nakita ang \"{AppCacheManifest}\""
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | failureTitle": {
+    "message": "Gumagamit ng Cache ng Application"
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | title": {
+    "message": "Iniiwasan ang Application Cache"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | description": {
+    "message": "Ang pagtukoy ng doctype ay pumipigil sa browser na lumipat sa quirks-mode. [Matuto pa](https://web.dev/doctype)."
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationBadDoctype": {
+    "message": "Ang pangalan ng doctype ay dapat ang nasa maliliit na titik na string na `html`"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationNoDoctype": {
+    "message": "Dapat maglaman ng doctype ang dokumento"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationPublicId": {
+    "message": "Walang lamang string ang inaasahang publicId"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationSystemId": {
+    "message": "Walang lamang string ang inaasahang systemId"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | failureTitle": {
+    "message": "Walang HTML na doctype ang page, at dahil dito, na-trigger nito ang quirks-mode"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | title": {
+    "message": "May HTML na doctype ang page"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | columnElement": {
+    "message": "Elemento"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | columnStatistic": {
+    "message": "Istatistika"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | columnValue": {
+    "message": "Value"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | description": {
+    "message": "Inirerekomenda ng mga engineer ng browser ang mga page na naglalaman ng mas kaunti sa ~1,500 element ng DOM. Ang pinakamainam ay isang lalim ng tree na < 32 element at mas kaunti sa 60 child/parent na element. Kapag malaki ang DOM, puwedeng tumaas ang paggamit ng memory, magdulot ng mas mahahabang [pagkalkula ng istilo](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), at makagawa ng mamahaling [mga reflow ng layout](https://developers.google.com/speed/articles/reflow). [Matuto pa](https://web.dev/dom-size)."
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 element}one{# element}other{# na element}}"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | failureTitle": {
+    "message": "Umiwas sa masyadong malaking DOM"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | statisticDOMDepth": {
+    "message": "Maximum na Lalim ng DOM"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | statisticDOMElements": {
+    "message": "Kabuuang Element ng DOM"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | statisticDOMWidth": {
+    "message": "Maximum na Mga Child na Elemento"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | title": {
+    "message": "Umiiwas sa masyadong malaking DOM"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | columnRel": {
+    "message": "Rel"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | columnTarget": {
+    "message": "Target"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | description": {
+    "message": "Idagdag ang `rel=\"noopener\"` o `rel=\"noreferrer\"` sa anumang external na link para pahusayin ang performance at pigilan ang mga kahinaan sa seguridad. [Matuto pa](https://web.dev/external-anchors-use-rel-noopener)."
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | failureTitle": {
+    "message": "Hindi ligtas ang mga link sa mga cross-origin na destinasyon"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | title": {
+    "message": "Ligtas ang mga link sa mga cross-origin na destinasyon"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | warning": {
+    "message": "Hindi matukoy ang destinasyon para sa anchor na ({anchorHTML}). Kung hindi ginagamit bilang hyperlink, pag-isipang alisin ang target=_blank."
+  },
+  "lighthouse-core/audits/dobetterweb/geolocation-on-start.js | description": {
+    "message": "Walang tiwala o nalilito ang mga user sa mga site na humihiling ng kanilang lokasyon nang walang konteksto. Sa halip ay pag-isipang iugnay ang kahilingan sa pagkilos ng user. [Matuto pa](https://web.dev/geolocation-on-start)."
+  },
+  "lighthouse-core/audits/dobetterweb/geolocation-on-start.js | failureTitle": {
+    "message": "Humihiling ng pahintulot sa geolocation sa pag-load ng page"
+  },
+  "lighthouse-core/audits/dobetterweb/geolocation-on-start.js | title": {
+    "message": "Iniiwasan ang paghiling ng pahintulot sa geolocation sa pag-load ng page"
+  },
+  "lighthouse-core/audits/dobetterweb/js-libraries.js | columnVersion": {
+    "message": "Bersyon"
+  },
+  "lighthouse-core/audits/dobetterweb/js-libraries.js | description": {
+    "message": "Lahat ng front-end na library ng JavaScript na natukoy sa page. [Matuto pa](https://web.dev/js-libraries)."
+  },
+  "lighthouse-core/audits/dobetterweb/js-libraries.js | title": {
+    "message": "Natukoy na mga library ng JavaScript"
+  },
+  "lighthouse-core/audits/dobetterweb/no-document-write.js | description": {
+    "message": "Para sa mga user na may mabagal na koneksyon, puwedeng maantala ang pag-load ng page dahil sa mga external na script na dynamic na inilagay sa pamamagitan ng `document.write()`. [Matuto pa](https://web.dev/no-document-write)."
+  },
+  "lighthouse-core/audits/dobetterweb/no-document-write.js | failureTitle": {
+    "message": "Gumagamit ng `document.write()`"
+  },
+  "lighthouse-core/audits/dobetterweb/no-document-write.js | title": {
+    "message": "Umiiwas sa `document.write()`"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | columnSeverity": {
+    "message": "Pinakamataas na Kalalaan"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | columnVersion": {
+    "message": "Bersyon ng Library"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | columnVuln": {
+    "message": "Bilang ng Kahinaan"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | description": {
+    "message": "Puwedeng maglaman ng mga kilalang kahinaan sa seguridad ang ilang script ng third party na madaling natutukoy at nasasamantala ng mga nang-aatake. [Matuto pa](https://web.dev/no-vulnerable-libraries)."
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 kahinaan ang natukoy}one{# kahinaan ang natukoy}other{# na kahinaan ang natukoy}}"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | failureTitle": {
+    "message": "May mga kasamang front-end na library ng JavaScript na may mga kilalang kahinaan sa seguridad"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | rowSeverityHigh": {
+    "message": "Mataas"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | rowSeverityLow": {
+    "message": "Mababa"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | rowSeverityMedium": {
+    "message": "Katamtaman"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | title": {
+    "message": "Umiiwas sa mga front-end na library ng JavaScript na may mga kilalang kahinaan sa seguridad"
+  },
+  "lighthouse-core/audits/dobetterweb/notification-on-start.js | description": {
+    "message": "Walang tiwala o nalilito ang mga user sa mga site na humihiling na magpadala ng mga notification nang walang konteksto. Sa halip ay pag-isipang iugnay ang kahilingan sa mga galaw ng user. [Matuto pa](https://web.dev/notification-on-start)."
+  },
+  "lighthouse-core/audits/dobetterweb/notification-on-start.js | failureTitle": {
+    "message": "Humihiling ng pahintulot sa notification sa pag-load ng page"
+  },
+  "lighthouse-core/audits/dobetterweb/notification-on-start.js | title": {
+    "message": "Iniiwasan ang paghiling ng pahintulot sa notification sa pag-load ng page"
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | columnFailingElem": {
+    "message": "Mga Hindi Nakapasang Element"
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | description": {
+    "message": "Pinapahina ng paghadlang sa pag-paste ng password ang magandang patakarang panseguridad. [Matuto pa](https://web.dev/password-inputs-can-be-pasted-into)."
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | failureTitle": {
+    "message": "Pinipigilan ang mga user na mag-paste sa mga field ng password"
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | title": {
+    "message": "Pinapayagan ang mga user na mag-paste sa mga field ng password"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | columnProtocol": {
+    "message": "Protocol"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | description": {
+    "message": "Nag-aalok ang HTTP/2 ng mas maraming benepisyo kaysa sa HTTP/1.1, kasama ang mga binary header, multiplexing, at server push. [Matuto pa](https://web.dev/uses-http2)."
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 kahilingan ang hindi naihatid sa pamamagitan ng HTTP/2}one{# kahilingan ang hindi naihatid sa pamamagitan ng HTTP/2}other{# na kahilingan ang hindi naihatid sa pamamagitan ng HTTP/2}}"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | failureTitle": {
+    "message": "Hindi gumagamit ng HTTP/2 para sa lahat ng resource nito"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | title": {
+    "message": "Hindi gumagamit ng HTTP/2 para sa mga sarili nitong resource"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-passive-event-listeners.js | description": {
+    "message": "Pag-isipang markahan ang iyong pan-detect ng event sa pagpindot at wheel bilang `passive` para mapahusay ang performance sa pag-scroll ng iyong page. [Matuto pa](https://web.dev/uses-passive-event-listeners)."
+  },
+  "lighthouse-core/audits/dobetterweb/uses-passive-event-listeners.js | failureTitle": {
+    "message": "Hindi gumagamit ng mga passive na listener para pahusayin ang performance sa pag-scroll"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-passive-event-listeners.js | title": {
+    "message": "Gumagamit ng mga passive na listener para pahusayin ang performance sa pag-scroll"
+  },
+  "lighthouse-core/audits/errors-in-console.js | columnDesc": {
+    "message": "Paglalarawan"
+  },
+  "lighthouse-core/audits/errors-in-console.js | description": {
+    "message": "Nagsasaad ng mga hindi naresolbang problema ang mga error na naka-log sa console. Puwedeng manggaling ang mga ito sa mga hindi nagawang kahilingan sa network at iba pang alalahanin sa browser. [Matuto pa](https://web.dev/errors-in-console)"
+  },
+  "lighthouse-core/audits/errors-in-console.js | failureTitle": {
+    "message": "Na-log sa console ang mga error sa browser"
+  },
+  "lighthouse-core/audits/errors-in-console.js | title": {
+    "message": "Walang naka-log na mga error sa browser sa console"
+  },
+  "lighthouse-core/audits/font-display.js | description": {
+    "message": "Gamitin ang feature na font-display ng CSS para matiyak na nakikita ng user ang text habang nilo-load ang mga webfont. [Matuto pa](https://developers.google.com/web/updates/2016/02/font-display)."
+  },
+  "lighthouse-core/audits/font-display.js | failureTitle": {
+    "message": "Tiyaking patuloy na nakikita ang text sa pag-load ng webfont"
+  },
+  "lighthouse-core/audits/font-display.js | title": {
+    "message": "Patuloy na nakikita ang lahat ng text sa pag-load ng webfont"
+  },
+  "lighthouse-core/audits/font-display.js | undeclaredFontURLWarning": {
+    "message": "Hindi awtomatikong nasuri ng Lighthouse ang value na font-display para sa sumusunod na URL: {fontURL}."
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | columnActual": {
+    "message": "Aspect Ratio (Aktwal)"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | columnDisplayed": {
+    "message": "Aspect Ratio (Ipinakita)"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | description": {
+    "message": "Dapat na tumugma ang mga dimensyon ng display ng larawan sa natural na aspect ratio. [Matuto pa](https://web.dev/image-aspect-ratio)."
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | failureTitle": {
+    "message": "Ipinapakita ang mga larawang may maling aspect ratio"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | title": {
+    "message": "Ipinapakita ang mga larawang may tamang aspect ratio"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | warningCompute": {
+    "message": "Invalid ang laki ng larawan ng impormasyon {url}"
+  },
+  "lighthouse-core/audits/installable-manifest.js | description": {
+    "message": "Puwedeng proactive na i-prompt ng mga browser ang mga user para idagdag ang iyong app sa kanilang homescreen, na maaaring magresulta sa mas mataas na pakikipag-ugnayan. [Matuto pa](https://developers.google.com/web/tools/lighthouse/audits/install-prompt)."
+  },
+  "lighthouse-core/audits/installable-manifest.js | failureTitle": {
+    "message": "Hindi natutugunan ng manifest ng web app ang mga kinakailangan sa pag-install"
+  },
+  "lighthouse-core/audits/installable-manifest.js | title": {
+    "message": "Natutugunan ng manifest ng web app ang mga kinakailangan sa pag-install"
+  },
+  "lighthouse-core/audits/is-on-https.js | columnInsecureURL": {
+    "message": "Hindi secure na URL"
+  },
+  "lighthouse-core/audits/is-on-https.js | description": {
+    "message": "Dapat protektahan gamit ang HTTPS ang lahat ng site, kahit ang mga hindi nangangasiwa ng sensitibong data. Pinipigilan ng HTTPS ang mga nanghihimasok na makialam o tahimik na makinig sa mga pakikipag-ugnayan sa pagitan ng iyong app at mga user, at isa itong prerequisite para sa HTTP/2 at maraming bagong API ng web platform. [Matuto pa](https://web.dev/is-on-https)."
+  },
+  "lighthouse-core/audits/is-on-https.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 hindi secure na kahilingan ang nakita}one{# hindi secure na kahilingan ang nakita}other{# na hindi secure na kahilingan ang nakita}}"
+  },
+  "lighthouse-core/audits/is-on-https.js | failureTitle": {
+    "message": "Hindi gumagamit ng HTTPS"
+  },
+  "lighthouse-core/audits/is-on-https.js | title": {
+    "message": "Gumagamit ng HTTPS"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | description": {
+    "message": "Kapag mabilis ang pag-load ng page sa cellular network, nagkakaroon ng magandang karanasan ng user sa mobile. [Matuto pa](https://developers.google.com/web/tools/lighthouse/audits/fast-3g)."
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | displayValueText": {
+    "message": "Interactive sa {timeInMs, number, seconds} s"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | displayValueTextWithOverride": {
+    "message": "Interactive sa naka-simulate na mobile network sa loob ng {timeInMs, number, seconds} s"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | explanationLoadSlow": {
+    "message": "Masyadong mabagal mag-load ang iyong page at hindi interactive sa loob ng 10 segundo. Tingnan ang mga pagkakataon at diagnostic sa seksyong \"Performance\" para matutunan kung paano magpahusay."
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | failureTitle": {
+    "message": "Hindi sapat ang bilis ng pag-load ng page sa mga mobile network"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | title": {
+    "message": "Sapat ang bilis ng pag-load ng page sa mga mobile network"
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | columnCategory": {
+    "message": "Kategorya"
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | description": {
+    "message": "Pag-isipang bawasan ang oras na ginugugol sa pag-parse, pag-compile, at pagpapagana ng JS. Maaaring mapansin mong nakakatulong dito ang paghahatid ng mas maliliit na payload ng JS."
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | failureTitle": {
+    "message": "Bawasan ang gawain sa pangunahing thread"
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | title": {
+    "message": "Binabawasan ang gawain sa pangunahing thread"
+  },
+  "lighthouse-core/audits/manual/pwa-cross-browser.js | description": {
+    "message": "Para maabot ang pinakamaraming bilang nguser, dapat gumana ang mga site sa bawat pangunahing browser. [Matuto pa](https://developers.google.com/web/progressive-web-apps/checklist#site-works-cross-browser)."
+  },
+  "lighthouse-core/audits/manual/pwa-cross-browser.js | title": {
+    "message": "Gumagana ang site sa cross-browser"
+  },
+  "lighthouse-core/audits/manual/pwa-each-page-has-url.js | description": {
+    "message": "Tiyaking nali-link nang malalim ang mga indibidwal na page sa pamamagitan ng URL at natatangi ang mga URL para sa pagbabahagi sa social media. [Matuto pa](https://developers.google.com/web/progressive-web-apps/checklist#each-page-has-a-url)."
+  },
+  "lighthouse-core/audits/manual/pwa-each-page-has-url.js | title": {
+    "message": "May URL ang bawat page"
+  },
+  "lighthouse-core/audits/manual/pwa-page-transitions.js | description": {
+    "message": "Mabilis dapat ang dating ng mga transition habang nagta-tap ka sa paligid, kahit nasa mabagal na network, isang susi sa kapansin-pansing performance. [Matuto pa](https://developers.google.com/web/progressive-web-apps/checklist#page-transitions-dont-feel-like-they-block-on-the-network)."
+  },
+  "lighthouse-core/audits/manual/pwa-page-transitions.js | title": {
+    "message": "Mukhang hindi nagba-block sa network ang mga transition ng page"
+  },
+  "lighthouse-core/audits/metrics/estimated-input-latency.js | description": {
+    "message": "Ang Tinantyang Latency ng Input ay isang pagtatantya ng bilis ng pagtugon ng iyong app sa input ng user, na nasa millisecond, sa pinakaabalang 5 segundong palugit ng pag-load ng page. Kung mas mataas kaysa sa 50 ms ang iyong latency, puwedeng ituring ng mga user na mabagal ang app mo. [Matuto pa](https://developers.google.com/web/tools/lighthouse/audits/estimated-input-latency)."
+  },
+  "lighthouse-core/audits/metrics/estimated-input-latency.js | title": {
+    "message": "Tinatayang Latency ng Input"
+  },
+  "lighthouse-core/audits/metrics/first-contentful-paint.js | description": {
+    "message": "Minamarkahan ng First Contentful Paint ang tagal bago ma-paint ang unang text o larawan. [Matuto pa](https://developers.google.com/web/tools/lighthouse/audits/first-contentful-paint)."
+  },
+  "lighthouse-core/audits/metrics/first-contentful-paint.js | title": {
+    "message": "First Contentful Paint"
+  },
+  "lighthouse-core/audits/metrics/first-cpu-idle.js | description": {
+    "message": "Minamarkahan ng First CPU Idle ang unang beses kung kailan hindi abala ang pangunahing thread ng page at puwede itong mangasiwa ng input. [Matuto pa](https://developers.google.com/web/tools/lighthouse/audits/first-interactive)."
+  },
+  "lighthouse-core/audits/metrics/first-cpu-idle.js | title": {
+    "message": "First CPU Idle"
+  },
+  "lighthouse-core/audits/metrics/first-meaningful-paint.js | description": {
+    "message": "Sinusukat ng First Meaningful Paint ang bilis ng pagpapakita ng pangunahing content ng isang page. [Matuto pa](https://developers.google.com/web/tools/lighthouse/audits/first-meaningful-paint)."
+  },
+  "lighthouse-core/audits/metrics/first-meaningful-paint.js | title": {
+    "message": "First Meaningful Paint"
+  },
+  "lighthouse-core/audits/metrics/interactive.js | description": {
+    "message": "Ang oras bago maging interactive ay ang haba ng oras na inaabot bago maging ganap na interactive ang page. [Matuto pa](https://developers.google.com/web/tools/lighthouse/audits/consistently-interactive)."
+  },
+  "lighthouse-core/audits/metrics/interactive.js | title": {
+    "message": "Time to Interactive"
+  },
+  "lighthouse-core/audits/metrics/max-potential-fid.js | description": {
+    "message": "Ang maximum na potensyal na First Input Delay na puwedeng maranasan ng iyong mga user ay ang tagal, na nasa millisecond, ng pinakamahabang gawain. [Matuto pa](https://developers.google.com/web/updates/2018/05/first-input-delay)."
+  },
+  "lighthouse-core/audits/metrics/max-potential-fid.js | title": {
+    "message": "Max na Potensyal na First Input Delay"
+  },
+  "lighthouse-core/audits/metrics/speed-index.js | description": {
+    "message": "Ipinapakita ng Speed Index ang bilis ng nakikitang pag-populate ng mga content ng isang page. [Matuto pa](https://developers.google.com/web/tools/lighthouse/audits/speed-index)."
+  },
+  "lighthouse-core/audits/metrics/speed-index.js | title": {
+    "message": "Speed Index"
+  },
+  "lighthouse-core/audits/metrics/total-blocking-time.js | description": {
+    "message": "Kabuuan ng lahat ng yugto ng panahon sa pagitan ng FCP at Oras bago maging Interactive, kapag lumampas ang haba ng gawain sa 50ms, ipinahayag sa milliseconds."
+  },
+  "lighthouse-core/audits/metrics/total-blocking-time.js | title": {
+    "message": "Kabuuang Oras ng Pag-block"
+  },
+  "lighthouse-core/audits/network-rtt.js | description": {
+    "message": "Malaki ang epekto ng mga round trip time (RTT) ng network sa performance. Kung mataas ang RTT sa isang pinagmulan, isa itong palatandaan na mapapahusay ng mga server na malapit sa user ang performance. [Matuto pa](https://hpbn.co/primer-on-latency-and-bandwidth/)."
+  },
+  "lighthouse-core/audits/network-rtt.js | title": {
+    "message": "Mga Round Trip Time ng Network"
+  },
+  "lighthouse-core/audits/network-server-latency.js | description": {
+    "message": "Puwedeng makaapekto sa performance sa web ang mga latency ng server. Kung mataas ang latency ng server ng isang pinagmulan, ito ay palatandaang na-overload ang server o hindi mahusay ang performance nito sa backend. [Matuto pa](https://hpbn.co/primer-on-web-performance/#analyzing-the-resource-waterfall)."
+  },
+  "lighthouse-core/audits/network-server-latency.js | title": {
+    "message": "Mga Latency sa Backend ng Server"
+  },
+  "lighthouse-core/audits/offline-start-url.js | description": {
+    "message": "Ine-enable ng isang service worker ang iyong web app para maging maaasahan sa mga pabagu-bagong kundisyon ng network. [Matuto pa](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)."
+  },
+  "lighthouse-core/audits/offline-start-url.js | failureTitle": {
+    "message": "Hindi tumutugon ang `start_url` gamit ang 200 kapag offline"
+  },
+  "lighthouse-core/audits/offline-start-url.js | title": {
+    "message": "Tumutugon ang `start_url` gamit ang 200 kapag offline"
+  },
+  "lighthouse-core/audits/offline-start-url.js | warningCantStart": {
+    "message": "Hindi mabasa ng Lighthouse ang `start_url` na galing sa manifest. Dahil dito, ipinagpapalagay ang `start_url` bilang URL ng dokumento. Mensahe ng error: '{manifestWarning}'."
+  },
+  "lighthouse-core/audits/performance-budget.js | columnOverBudget": {
+    "message": "Lampas sa Badyet"
+  },
+  "lighthouse-core/audits/performance-budget.js | description": {
+    "message": "Panatilihin ang dami at laki ng mga kahilingan sa network sa ilalim ng mga target na itinakda ng ibinigay na badyet sa performance. [Matuto pa](https://developers.google.com/web/tools/lighthouse/audits/budgets)."
+  },
+  "lighthouse-core/audits/performance-budget.js | requestCountOverBudget": {
+    "message": "{count,plural, =1{1 kahilingan}one{# kahilingan}other{# na kahilingan}}"
+  },
+  "lighthouse-core/audits/performance-budget.js | title": {
+    "message": "Badyet sa performance"
+  },
+  "lighthouse-core/audits/redirects-http.js | description": {
+    "message": "Kung na-set up mo na ang HTTPS, tiyaking iyong na-redirect sa HTTPS ang lahat ng trapiko sa HTTP para ma-enable ang mga ligtas na feature sa web para sa lahat ng user mo. [Matuto pa](https://developers.google.com/web/tools/lighthouse/audits/http-redirects-to-https)."
+  },
+  "lighthouse-core/audits/redirects-http.js | failureTitle": {
+    "message": "Hindi nire-redirect sa HTTPS ang trapiko sa HTTP"
+  },
+  "lighthouse-core/audits/redirects-http.js | title": {
+    "message": "Nire-redirect sa HTTPS ang trapiko sa HTTP"
+  },
+  "lighthouse-core/audits/redirects.js | description": {
+    "message": "Nagpapasimula ang mga pag-redirect ng mga karagdagang pagkaantala bago ma-load ang page. [Matuto pa](https://developers.google.com/web/tools/lighthouse/audits/redirects)."
+  },
+  "lighthouse-core/audits/redirects.js | title": {
+    "message": "Iwasan ang mga pag-redirect sa maraming page"
+  },
+  "lighthouse-core/audits/resource-summary.js | description": {
+    "message": "Para magtakda ng mga badyet para sa dami at laki ng mga resource ng page, magdagdag ng budget.json na file. [Matuto pa](https://developers.google.com/web/tools/lighthouse/audits/budgets)."
+  },
+  "lighthouse-core/audits/resource-summary.js | displayValue": {
+    "message": "{requestCount,plural, =1{1 kahilingan • {byteCount, number, bytes} KB}one{# kahilingan • {byteCount, number, bytes} KB}other{# na kahilingan • {byteCount, number, bytes} KB}}"
+  },
+  "lighthouse-core/audits/resource-summary.js | title": {
+    "message": "Panatilihing mababa ang mga bilang ng kahilingan at maliit ang mga paglipat"
+  },
+  "lighthouse-core/audits/seo/canonical.js | description": {
+    "message": "Iminumungkahi ng mga canonical na link kung aling URL ang ipapakita sa mga resulta ng paghahanap. [Matuto pa](https://web.dev/canonical)."
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationConflict": {
+    "message": "Maraming URL ang hindi magkakatugma ({urlList})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationDifferentDomain": {
+    "message": "Tumuturo sa ibang domain ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationInvalid": {
+    "message": "Invalid na URL ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationPointsElsewhere": {
+    "message": "Tumuturo sa ibang lokasyon ng `hreflang` ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationRelative": {
+    "message": "Relatibong URL ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationRoot": {
+    "message": "Tumuturo sa root URL ng domain (ang homepage), sa halip na sa katumbas na page ng content"
+  },
+  "lighthouse-core/audits/seo/canonical.js | failureTitle": {
+    "message": "Walang valid na `rel=canonical` ang dokumento"
+  },
+  "lighthouse-core/audits/seo/canonical.js | title": {
+    "message": "May valid na `rel=canonical` ang dokumento"
+  },
+  "lighthouse-core/audits/seo/font-size.js | description": {
+    "message": "Ang mga laki ng font na mas mababa sa 12px ay masyadong maliit para mabasa at kinakailangan ng mga bisita sa mobile na “mag-pinch para mag-zoom in” para mabasa ito. Subukang gawing ≥12px ang >60% ng text sa page. [Matuto pa](https://web.dev/font-size)."
+  },
+  "lighthouse-core/audits/seo/font-size.js | displayValue": {
+    "message": "{decimalProportion, number, extendedPercent} nababasang text"
+  },
+  "lighthouse-core/audits/seo/font-size.js | explanationViewport": {
+    "message": "Hindi nababasa ang text dahil walang viewport meta tag na naka-optimize para sa mga screen ng mobile."
+  },
+  "lighthouse-core/audits/seo/font-size.js | explanationWithDisclaimer": {
+    "message": "Masyadong maliit ang {decimalProportion, number, extendedPercent} ng text (batay sa sample na {decimalProportionVisited, number, extendedPercent})."
+  },
+  "lighthouse-core/audits/seo/font-size.js | failureTitle": {
+    "message": "Hindi gumagamit ng mga nababasang laki ng font ang dokumento"
+  },
+  "lighthouse-core/audits/seo/font-size.js | title": {
+    "message": "Gumagamit ng mga nababasang laki ng font ang dokumento"
+  },
+  "lighthouse-core/audits/seo/hreflang.js | description": {
+    "message": "Sinasabi ng mga link na hreflang sa mga search engine kung anong bersyon ng isang page ang dapat ilista ng mga ito sa mga resulta ng paghahanap para sa isang partikular na wika o rehiyon. [Matuto pa](https://web.dev/hreflang)."
+  },
+  "lighthouse-core/audits/seo/hreflang.js | failureTitle": {
+    "message": "Walang valid na `hreflang` ang dokumento"
+  },
+  "lighthouse-core/audits/seo/hreflang.js | title": {
+    "message": "May valid na `hreflang` ang dokumento"
+  },
+  "lighthouse-core/audits/seo/http-status-code.js | description": {
+    "message": "Puwedeng hindi ma-index nang maayos ang mga page na may mga hindi matagumpay na status code ng HTTP. [Matuto pa](https://web.dev/http-status-code)."
+  },
+  "lighthouse-core/audits/seo/http-status-code.js | failureTitle": {
+    "message": "Hindi matagumpay ang status code ng HTML ng page"
+  },
+  "lighthouse-core/audits/seo/http-status-code.js | title": {
+    "message": "Matagumpay ang status code ng HTTP ng page"
+  },
+  "lighthouse-core/audits/seo/is-crawlable.js | description": {
+    "message": "Hindi maisasama ng mga search engine ang iyong mga page sa mga resulta ng paghahanap kung walang pahintulot ang mga ito na i-crawl ang mga iyon. [Matuto pa](https://web.dev/is-crawable)."
+  },
+  "lighthouse-core/audits/seo/is-crawlable.js | failureTitle": {
+    "message": "Naka-block ang page mula sa pag-index"
+  },
+  "lighthouse-core/audits/seo/is-crawlable.js | title": {
+    "message": "Hindi naka-block ang page mula sa pag-index"
+  },
+  "lighthouse-core/audits/seo/link-text.js | description": {
+    "message": "Nakakatulong ang naglalarawang text ng link sa mga search engine na maunawaan ang iyong content. [Matuto pa](https://web.dev/link-text)."
+  },
+  "lighthouse-core/audits/seo/link-text.js | displayValue": {
+    "message": "{itemCount,plural, =1{May nakitang 1 link}one{May nakitang # link}other{May nakitang # na link}}"
+  },
+  "lighthouse-core/audits/seo/link-text.js | failureTitle": {
+    "message": "Walang naglalarawang text ang mga link"
+  },
+  "lighthouse-core/audits/seo/link-text.js | title": {
+    "message": "May naglalarawang text ang mga link"
+  },
+  "lighthouse-core/audits/seo/manual/structured-data.js | description": {
+    "message": "Patakbuhin ang [Tool sa Pag-test ng Structured Data](https://search.google.com/structured-data/testing-tool/) at ang [Structured Data Linter](http://linter.structured-data.org/) para i-validate ang structured data. [Matuto pa](https://web.dev/structured-data)."
+  },
+  "lighthouse-core/audits/seo/manual/structured-data.js | title": {
+    "message": "Valid ang structured data"
+  },
+  "lighthouse-core/audits/seo/meta-description.js | description": {
+    "message": "Puwedeng magsama ng mga paglalarawan ng meta sa mga resulta ng paghahanap para makapagbigay ng maikling buod ng content ng page. [Matuto pa](https://web.dev/meta-description)."
+  },
+  "lighthouse-core/audits/seo/meta-description.js | explanation": {
+    "message": "Walang laman ang text ng paglalarawan."
+  },
+  "lighthouse-core/audits/seo/meta-description.js | failureTitle": {
+    "message": "Walang paglalarawan ng meta ang dokumento"
+  },
+  "lighthouse-core/audits/seo/meta-description.js | title": {
+    "message": "May paglalarawan ng meta ang dokumento"
+  },
+  "lighthouse-core/audits/seo/plugins.js | description": {
+    "message": "Hindi nai-index ng mga search engine ang content ng plugin, at maraming device ang naglilimita sa mga plugin o hindi sumusuporta sa mga ito. [Matuto pa](https://web.dev/plugins)."
+  },
+  "lighthouse-core/audits/seo/plugins.js | failureTitle": {
+    "message": "Gumagamit ng mga plugin ang dokumento"
+  },
+  "lighthouse-core/audits/seo/plugins.js | title": {
+    "message": "Iniiwasan ng dokumento ang mga plugin"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | description": {
+    "message": "Kung sira ang iyong robots.txt, puwedeng hindi maunawaan ng mga crawler kung paano mo gustong ma-crawl o ma-index ang iyong website. [Matuto pa](https://web.dev/robots-txt)."
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | displayValueHttpBadCode": {
+    "message": "Ang kahilingan para sa robots.txt ay nagbalik ng status ng HTTP na: {statusCode}"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | displayValueValidationError": {
+    "message": "{itemCount,plural, =1{May nakitang 1 error}one{May nakitang # error}other{May nakitang # na error}}"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | explanation": {
+    "message": "Hindi nakapag-download ng robots.txt file ang Lighthouse"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | failureTitle": {
+    "message": "Hindi valid ang robots.txt"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | title": {
+    "message": "Valid ang robots.txt"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | description": {
+    "message": "Sapat dapat ang laki (48x48px) at mayroon dapat sapat na espasyo sa paligid ang mga interactive na element gaya ng mga button at link, para madaling ma-tap ang mga ito nang hindi nag-o-overlap sa iba pang element. [Matuto pa](https://web.dev/tap-targets)."
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | displayValue": {
+    "message": "{decimalProportion, number, percent} ng mga target sa pag-tap ang may angkop na laki"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | explanationViewportMetaNotOptimized": {
+    "message": "Masyadong maliit ang mga target ng pag-tap dahil walang viewport meta tag na naka-optimize para sa mga screen ng mobile"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | failureTitle": {
+    "message": "Hindi angkop ang laki ng mga target ng pag-tap"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | overlappingTargetHeader": {
+    "message": "Nag-o-overlap na Target"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | tapTargetHeader": {
+    "message": "Target ng Pag-tap"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | title": {
+    "message": "Angkop ang laki ng mga target ng pag-tap"
+  },
+  "lighthouse-core/audits/service-worker.js | description": {
+    "message": "Ang service worker ay ang teknolohiyang nag-e-enable sa iyong app na gumamit ng maraming feature ng Progressive Web App, gaya ng offline, pagdaragdag sa homescreen, at mga push notification. [Matuto pa](https://developers.google.com/web/tools/lighthouse/audits/registered-service-worker)."
+  },
+  "lighthouse-core/audits/service-worker.js | explanationBadManifest": {
+    "message": "Kinokontrol ng isang service worker ang page na ito, gayunpaman, walang nakitang `start_url` dahil hindi na-parse ang manifest bilang valid na JSON"
+  },
+  "lighthouse-core/audits/service-worker.js | explanationBadStartUrl": {
+    "message": "Kinokontrol ng isang service worker ang page na ito, gayunpaman, wala ang `start_url` ({startUrl}) sa saklaw ng service worker ({scopeUrl})"
+  },
+  "lighthouse-core/audits/service-worker.js | explanationNoManifest": {
+    "message": "Kinokontrol ng isang service worker ang page na ito, gayunpaman, walang nakitang `start_url` dahil walang nakuhang manifest."
+  },
+  "lighthouse-core/audits/service-worker.js | explanationOutOfScope": {
+    "message": "May isa o higit pang service worker ang origin na ito, gayunpaman, wala sa saklaw ang page ({pageUrl})."
+  },
+  "lighthouse-core/audits/service-worker.js | failureTitle": {
+    "message": "Hindi nagrerehistro ng service worker na kumokontrol sa page at `start_url`"
+  },
+  "lighthouse-core/audits/service-worker.js | title": {
+    "message": "Nagrerehistro ng service worker na kumokontrol sa page at `start_url`"
+  },
+  "lighthouse-core/audits/splash-screen.js | description": {
+    "message": "Tinititiyak ng isang splash screen na may tema ang mataas na kalidad na karanasan kapag inilunsad ng mga user ang iyong app sa kanilang mga homescreen. [Matuto pa](https://developers.google.com/web/tools/lighthouse/audits/custom-splash-screen)."
+  },
+  "lighthouse-core/audits/splash-screen.js | failureTitle": {
+    "message": "Hindi naka-configure para sa custom na splash screen"
+  },
+  "lighthouse-core/audits/splash-screen.js | title": {
+    "message": "Naka-configure para sa custom na splash screen"
+  },
+  "lighthouse-core/audits/themed-omnibox.js | description": {
+    "message": "Puwedeng lagyan ng tema ang address bar ng browser para tumugma sa iyong site. [Matuto pa](https://developers.google.com/web/tools/lighthouse/audits/address-bar)."
+  },
+  "lighthouse-core/audits/themed-omnibox.js | failureTitle": {
+    "message": "Hindi nagtatakda ng kulay ng tema para sa address bar."
+  },
+  "lighthouse-core/audits/themed-omnibox.js | title": {
+    "message": "Nagtatakda ng kulay ng tema para sa address bar."
+  },
+  "lighthouse-core/audits/third-party-summary.js | columnBlockingTime": {
+    "message": "Oras ng Pag-block ng Pangunahing Thread"
+  },
+  "lighthouse-core/audits/third-party-summary.js | columnThirdParty": {
+    "message": "Third-Party"
+  },
+  "lighthouse-core/audits/third-party-summary.js | description": {
+    "message": "Puwedeng lubos na makaapekto ang code ng third party sa performance ng pag-load. Limitahan ang bilang ng paulit-ulit na mga third-party na provider at subukang i-load ang code ng third party pagkatapos ng pangunahing pag-load ng iyong page. [Matuto pa](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/loading-third-party-javascript/)."
+  },
+  "lighthouse-core/audits/third-party-summary.js | displayValue": {
+    "message": "Na-block ng third-party na code ang pangunahing thread sa loob ng {timeInMs, number, milliseconds} ms"
+  },
+  "lighthouse-core/audits/third-party-summary.js | failureTitle": {
+    "message": "Bawasan ang epekto ng third-party na code"
+  },
+  "lighthouse-core/audits/third-party-summary.js | title": {
+    "message": "Paggamit ng Third Party"
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | description": {
+    "message": "Tinutukoy ng Time To First Byte ang tagal bago makapagpadala ng tugon ang iyong server. [Matuto pa](https://developers.google.com/web/tools/lighthouse/audits/ttfb)."
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | displayValue": {
+    "message": "Inabot nang {timeInMs, number, milliseconds} ms ang root na dokumento"
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | failureTitle": {
+    "message": "Pabilisin ang pagtugon ng server (TTFB)"
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | title": {
+    "message": "Masyadong matagal ang pagtugon ng server (TTFB)"
+  },
+  "lighthouse-core/audits/user-timings.js | columnDuration": {
+    "message": "Tagal"
+  },
+  "lighthouse-core/audits/user-timings.js | columnStartTime": {
+    "message": "Oras ng Pagsisimula"
+  },
+  "lighthouse-core/audits/user-timings.js | columnType": {
+    "message": "Uri"
+  },
+  "lighthouse-core/audits/user-timings.js | description": {
+    "message": "Pag-isipang gumamit ng User Timing API sa iyong app para sukatin ang makatotohanang performance ng app mo sa mahahalagang karanasan ng user. [Matuto pa](https://developers.google.com/web/tools/lighthouse/audits/user-timing)."
+  },
+  "lighthouse-core/audits/user-timings.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 timing ng user}one{# timing ng user}other{# na timing ng user}}"
+  },
+  "lighthouse-core/audits/user-timings.js | title": {
+    "message": "Mga marka at sukat ng User Timing"
+  },
+  "lighthouse-core/audits/uses-rel-preconnect.js | crossoriginWarning": {
+    "message": "May nakitang preconnect na <link> para sa \"{securityOrigin}\" pero hindi ito ginamit ng browser. Tingnan kung ginagamit mo nang maayos ang attribute na `crossorigin`."
+  },
+  "lighthouse-core/audits/uses-rel-preconnect.js | description": {
+    "message": "Pag-isipang magdagdag ng mga hint ng resource na `preconnect` o `dns-prefetch` para magtakda ng mga paunang koneksyon sa mahahalagang third-party na pinagmulan. [Matuto pa](https://developers.google.com/web/fundamentals/performance/resource-prioritization#preconnect)."
+  },
+  "lighthouse-core/audits/uses-rel-preconnect.js | title": {
+    "message": "Mag-preconnect sa mga kinakailangang origin"
+  },
+  "lighthouse-core/audits/uses-rel-preload.js | crossoriginWarning": {
+    "message": "May nakitang preload na <link> para sa \"{preloadURL}\" pero hindi ito ginamit ng browser. Tingnan kung ginagamit mo nang maayos ang attribute na `crossorigin`."
+  },
+  "lighthouse-core/audits/uses-rel-preload.js | description": {
+    "message": "Pag-isipang gumamit ng `<link rel=preload>` para mabigyang-priyoridad ang pagkuha ng mga resource na kasalukuyang hinihiling sa huling bahagi ng pag-load ng page. [Matuto pa](https://developers.google.com/web/tools/lighthouse/audits/preload)."
+  },
+  "lighthouse-core/audits/uses-rel-preload.js | title": {
+    "message": "I-preload ang mahahalagang kahilingan"
+  },
+  "lighthouse-core/audits/viewport.js | description": {
+    "message": "Magdagdag ng tag na `<meta name=\"viewport\">` para i-optimize ang iyong app para sa mga screen ng mobile. [Matuto pa](https://developers.google.com/web/tools/lighthouse/audits/has-viewport-meta-tag)."
+  },
+  "lighthouse-core/audits/viewport.js | explanationNoTag": {
+    "message": "Walang nahanap na tag na `<meta name=\"viewport\">`"
+  },
+  "lighthouse-core/audits/viewport.js | failureTitle": {
+    "message": "Walang tag na `<meta name=\"viewport\">` na may `width` o `initial-scale`"
+  },
+  "lighthouse-core/audits/viewport.js | title": {
+    "message": "May tag na `<meta name=\"viewport\">` na may `width` o `initial-scale`"
+  },
+  "lighthouse-core/audits/without-javascript.js | description": {
+    "message": "Dapat magpakita ng ilang content ang iyong app kapag naka-disable ang JavaScript, kahit isang babala lang ito sa user na kinakailangan ang Javascript para magamit ang app. [Matuto pa](https://developers.google.com/web/tools/lighthouse/audits/no-js)."
+  },
+  "lighthouse-core/audits/without-javascript.js | explanation": {
+    "message": "Dapat mag-render ng ilang content ang nilalaman ng page kung hindi available ang mga script nito."
+  },
+  "lighthouse-core/audits/without-javascript.js | failureTitle": {
+    "message": "Hindi nagbibigay ng fallback na content kapag hindi available ang JavaScript"
+  },
+  "lighthouse-core/audits/without-javascript.js | title": {
+    "message": "Naglalaman ng ilang content kapag hindi available ang JavaScript"
+  },
+  "lighthouse-core/audits/works-offline.js | description": {
+    "message": "Kung bumubuo ka ng Progressive Web App, pag-isipang gumamit ng isang service worker para puwedeng gumana ang iyong app offline. [Matuto pa](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)."
+  },
+  "lighthouse-core/audits/works-offline.js | failureTitle": {
+    "message": "Hindi tumutugon ang kasalukuyang page gamit ang 200 kapag offline"
+  },
+  "lighthouse-core/audits/works-offline.js | title": {
+    "message": "Tumutugon ang kasalukuyang page gamit ang 200 kapag offline"
+  },
+  "lighthouse-core/audits/works-offline.js | warningNoLoad": {
+    "message": "Puwedeng hindi naglo-load ang page offline dahil na-redirect ang iyong pansubok na URL ({requested}) sa \"{final}\". Subukang suriin ang pangalawang URL nang direkta."
+  },
+  "lighthouse-core/config/default-config.js | a11yAriaGroupDescription": {
+    "message": "Mga pagkakataon ito na pahusayin ang paggamit ng ARIA sa iyong application na maaaring mapahusay ang karanasan para sa mga user ng nakakatulong na teknolohiya, tulad ng screen reader."
+  },
+  "lighthouse-core/config/default-config.js | a11yAriaGroupTitle": {
+    "message": "ARIA"
+  },
+  "lighthouse-core/config/default-config.js | a11yAudioVideoGroupDescription": {
+    "message": "Ito ay mga pagkakataong magbigay ng alternatibong content para sa audio at video. Puwede nitong mapaganda ang karanasan para sa mga user na may mga problema sa paningin o pandinig."
+  },
+  "lighthouse-core/config/default-config.js | a11yAudioVideoGroupTitle": {
+    "message": "Audio at video"
+  },
+  "lighthouse-core/config/default-config.js | a11yBestPracticesGroupDescription": {
+    "message": "Hina-highlight ng mga item na ito ang mga karaniwang pinakamahusay na kagawian sa pagiging accessible."
+  },
+  "lighthouse-core/config/default-config.js | a11yBestPracticesGroupTitle": {
+    "message": "Pinakamahuhusay na kagawian"
+  },
+  "lighthouse-core/config/default-config.js | a11yCategoryDescription": {
+    "message": "Hina-highlight ng mga pagsusuring ito ang mga pagkakataong [gawing mas accessible ng iyong web app](https://developers.google.com/web/fundamentals/accessibility). Isang subset lang ng mga isyu sa pagiging accessible ang awtomatikong matutukoy kaya hinihikayat din ang manual na pagsusuri."
+  },
+  "lighthouse-core/config/default-config.js | a11yCategoryManualDescription": {
+    "message": "Tinutugunan ng mga item na ito ang mga bahaging hindi masasakop ng naka-automate na tool sa pagsusuri. Matuto pa sa aming gabay sa [pagsasagawa ng pagsusuri sa pagiging accessible](https://developers.google.com/web/fundamentals/accessibility/how-to-review)."
+  },
+  "lighthouse-core/config/default-config.js | a11yCategoryTitle": {
+    "message": "Pagiging accessible"
+  },
+  "lighthouse-core/config/default-config.js | a11yColorContrastGroupDescription": {
+    "message": "Mga pagkakataon ito na pahusayin ang pagiging nababasa ng iyong content."
+  },
+  "lighthouse-core/config/default-config.js | a11yColorContrastGroupTitle": {
+    "message": "Contrast"
+  },
+  "lighthouse-core/config/default-config.js | a11yLanguageGroupDescription": {
+    "message": "Mga pagkakataon ito na pahusayin ang pagsasalin ng mga user sa iyong content sa iba't ibang lokal."
+  },
+  "lighthouse-core/config/default-config.js | a11yLanguageGroupTitle": {
+    "message": "Pag-internationalize at pag-localize"
+  },
+  "lighthouse-core/config/default-config.js | a11yNamesLabelsGroupDescription": {
+    "message": "Mga pagkakataon ito ng pahusayin ang mga semantic ng mga kontrol sa iyong application. Maaari nitong pahusayin ang karanasan para sa mga user ng nakakatulong na teknolohiya, tulad ng screen reader."
+  },
+  "lighthouse-core/config/default-config.js | a11yNamesLabelsGroupTitle": {
+    "message": "Mga pangalan at label"
+  },
+  "lighthouse-core/config/default-config.js | a11yNavigationGroupDescription": {
+    "message": "Ito ay mga pagkakataong pahusayin ang pag-navigate gamit ang keyboard sa iyong application."
+  },
+  "lighthouse-core/config/default-config.js | a11yNavigationGroupTitle": {
+    "message": "Navigation"
+  },
+  "lighthouse-core/config/default-config.js | a11yTablesListsVideoGroupDescription": {
+    "message": "Ito ay mga pagkakataon para pagandahin ang karanasan ng pagbabasa ng data na nasa talahanayan o listahan gamit ang nakakatulong na teknolohiya, gaya ng screen reader."
+  },
+  "lighthouse-core/config/default-config.js | a11yTablesListsVideoGroupTitle": {
+    "message": "Mga talahanayan at listahan"
+  },
+  "lighthouse-core/config/default-config.js | bestPracticesCategoryTitle": {
+    "message": "Pinakamahuhusay na Kagawian"
+  },
+  "lighthouse-core/config/default-config.js | budgetsGroupDescription": {
+    "message": "Nagtatakda ng mga pamantayan para sa performance ng iyong site ang mga badyet ng performance."
+  },
+  "lighthouse-core/config/default-config.js | budgetsGroupTitle": {
+    "message": "Mga Badyet"
+  },
+  "lighthouse-core/config/default-config.js | diagnosticsGroupDescription": {
+    "message": "Higit pang impormasyon tungkol sa performance ng iyong application. Ang mga numerong ito ay hindi [direktang makakaapekto ](https://github.com/GoogleChrome/lighthouse/blob/d2ec9ffbb21de9ad1a0f86ed24575eda32c796f0/docs/scoring.md#how-are-the-scores-weighted) sa score sa Performance."
+  },
+  "lighthouse-core/config/default-config.js | diagnosticsGroupTitle": {
+    "message": "Mga Diagnostic"
+  },
+  "lighthouse-core/config/default-config.js | firstPaintImprovementsGroupDescription": {
+    "message": "Ang pinakamahalagang aspeto ng performance ay ang bilis ng pag-render ng mga pixel sa screen. Mahahalagang sukatan: First Contentful Paint, First Meaningful Paint"
+  },
+  "lighthouse-core/config/default-config.js | firstPaintImprovementsGroupTitle": {
+    "message": "Mga Pagpapahusay sa First Paint"
+  },
+  "lighthouse-core/config/default-config.js | loadOpportunitiesGroupDescription": {
+    "message": "Puwedeng makatulong ang mga suhestyon na ito na mapabilis ang pag-load ng iyong page. Hindi [direktang nakakaapekto](https://github.com/GoogleChrome/lighthouse/blob/d2ec9ffbb21de9ad1a0f86ed24575eda32c796f0/docs/scoring.md#how-are-the-scores-weighted) ang mga ito sa score sa Performance."
+  },
+  "lighthouse-core/config/default-config.js | loadOpportunitiesGroupTitle": {
+    "message": "Mga Pagkakataon"
+  },
+  "lighthouse-core/config/default-config.js | metricGroupTitle": {
+    "message": "Mga Sukatan"
+  },
+  "lighthouse-core/config/default-config.js | overallImprovementsGroupDescription": {
+    "message": "Pagandahin ang pangkalahatang karanasan sa pag-load para bumilis ang pagtugon ng page at magamit ito kaagad. Mahahalagang sukatan: Time to Interactive, Speed Index"
+  },
+  "lighthouse-core/config/default-config.js | overallImprovementsGroupTitle": {
+    "message": "Mga Pangkalahatang Pagpapahusay"
+  },
+  "lighthouse-core/config/default-config.js | performanceCategoryTitle": {
+    "message": "Performance"
+  },
+  "lighthouse-core/config/default-config.js | pwaCategoryDescription": {
+    "message": "Vina-validate ng mga pagsusuring ito ang mga aspeto ng isang Progressive Web App. [Matuto pa](https://developers.google.com/web/progressive-web-apps/checklist)."
+  },
+  "lighthouse-core/config/default-config.js | pwaCategoryManualDescription": {
+    "message": "Kinakailangan ang mga pagsusuring ito ng baseline na [Checklist ng PWA ](https://developers.google.com/web/progressive-web-apps/checklist) pero hindi awtomatikong sinusuri ng Lighthouse. Hindi nakakaapekto ang mga ito sa iyong score pero mahalagang ma-verify mo ang mga ito nang manual."
+  },
+  "lighthouse-core/config/default-config.js | pwaCategoryTitle": {
+    "message": "Progressive Web App"
+  },
+  "lighthouse-core/config/default-config.js | pwaFastReliableGroupTitle": {
+    "message": "Mabilis at maaasahan"
+  },
+  "lighthouse-core/config/default-config.js | pwaInstallableGroupTitle": {
+    "message": "Nai-install"
+  },
+  "lighthouse-core/config/default-config.js | pwaOptimizedGroupTitle": {
+    "message": "Na-optimize ang PWA"
+  },
+  "lighthouse-core/config/default-config.js | seoCategoryDescription": {
+    "message": "Tinitiyak ng mga pagsusuring ito na naka-optimize ang iyong page para sa ranking ng mga resulta ng search engine. May mga karagdagang salik na hindi sinusuri ng Lighthouse na puwedeng makaapekto sa iyong ranking sa paghahanap. [Matuto pa](https://support.google.com/webmasters/answer/35769)."
+  },
+  "lighthouse-core/config/default-config.js | seoCategoryManualDescription": {
+    "message": "Paganahin ang mga karagdagang validator na ito sa iyong site para tingnan ang karagdagang pinakamahuhusay na kagawian sa SEO."
+  },
+  "lighthouse-core/config/default-config.js | seoCategoryTitle": {
+    "message": "SEO"
+  },
+  "lighthouse-core/config/default-config.js | seoContentGroupDescription": {
+    "message": "I-format ang iyong HTML sa paraang nag-e-enable sa mga crawler na mas maunawaan ang content ng app mo."
+  },
+  "lighthouse-core/config/default-config.js | seoContentGroupTitle": {
+    "message": "Pinakamahuhusay na Kagawian sa Content"
+  },
+  "lighthouse-core/config/default-config.js | seoCrawlingGroupDescription": {
+    "message": "Para lumabas sa mga resulta ng paghahanap, kailangan ng mga crawler ng access sa iyong app."
+  },
+  "lighthouse-core/config/default-config.js | seoCrawlingGroupTitle": {
+    "message": "Pag-crawl at Pag-index"
+  },
+  "lighthouse-core/config/default-config.js | seoMobileGroupDescription": {
+    "message": "Tiyaking pang-mobile ang iyong mga page para hindi na kailangang mag-pinch o mag-zoom in ng mga user para mabasa ang mga page ng content. [Matuto pa](https://developers.google.com/search/mobile-sites/)."
+  },
+  "lighthouse-core/config/default-config.js | seoMobileGroupTitle": {
+    "message": "Pang-mobile"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnCacheTTL": {
+    "message": "TTL ng Cache"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnLocation": {
+    "message": "Lokasyon"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnName": {
+    "message": "Pangalan"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnRequests": {
+    "message": "Mga Kahilingan"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnResourceType": {
+    "message": "Uri ng Resource"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnSize": {
+    "message": "Laki"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnTimeSpent": {
+    "message": "Oras na Ginugol"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnTransferSize": {
+    "message": "Laki ng Paglipat"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnURL": {
+    "message": "URL"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnWastedBytes": {
+    "message": "Puwedeng Matipid"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnWastedMs": {
+    "message": "Puwedeng Matipid"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | displayValueByteSavings": {
+    "message": "Puwedeng makatipid ng {wastedBytes, number, bytes} KB"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | displayValueMsSavings": {
+    "message": "Puwedeng makatipid ng {wastedMs, number, milliseconds} ms"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | documentResourceType": {
+    "message": "Dokumento"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | fontResourceType": {
+    "message": "Font"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | imageResourceType": {
+    "message": "Larawan"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | mediaResourceType": {
+    "message": "Media"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | ms": {
+    "message": "{timeInMs, number, milliseconds} ms"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | otherResourceType": {
+    "message": "Iba pa"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | scriptResourceType": {
+    "message": "Script"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | seconds": {
+    "message": "{timeInMs, number, seconds} s"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | stylesheetResourceType": {
+    "message": "Stylesheet"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | thirdPartyResourceType": {
+    "message": "Third-party"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | totalResourceType": {
+    "message": "Kabuuan"
+  },
+  "lighthouse-core/lib/lh-error.js | badTraceRecording": {
+    "message": "Nagkaroon ng problema sa pag-record ng trace sa pag-load ng iyong page. Paganahin ulit ang Lighthouse. ({errorCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | criTimeout": {
+    "message": "Nag-timeout habang naghihintay para sa paunang koneksyon sa Protocol ng Debugger."
+  },
+  "lighthouse-core/lib/lh-error.js | didntCollectScreenshots": {
+    "message": "Hindi nangolekta ang Chrome ng anumang screenshot habang nilo-load ang page. Pakitiyak na may nakikitang content sa page, at pagkatapos ay subukang paganahin ulit ang Lighthouse. ({errorCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | dnsFailure": {
+    "message": "Hindi malutas ng mga DNS server ang ibinigay na domain."
+  },
+  "lighthouse-core/lib/lh-error.js | erroredRequiredArtifact": {
+    "message": "Ang kinakailangang gatherer na {artifactName} ay nagkaroon ng error: {errorMessage}"
+  },
+  "lighthouse-core/lib/lh-error.js | internalChromeError": {
+    "message": "Nagkaroon ng internal na error sa Chrome. Paki-restart ang Chrome at subukang muling paganahin ang Lighthouse."
+  },
+  "lighthouse-core/lib/lh-error.js | missingRequiredArtifact": {
+    "message": "Hindi tumakbo ang kinakailangang gatherer na {artifactName}."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailed": {
+    "message": "Hindi na-load nang maayos ng Lighthouse ang page na hiniling mo. Tiyaking tamang URL ang sinusubukan mo at tumutugon nang maayos ang server sa lahat ng kahilingan."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedHung": {
+    "message": "Hindi na-load nang maayos ng Lighthouse ang URL na hiniling mo dahil huminto sa pagtugon ang page."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedInsecure": {
+    "message": "Walang valid na panseguridad na certificate ang URL na ibinigay mo. {securityMessages}"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedInterstitial": {
+    "message": "Pinigilan ng Chrome ang pag-load ng page gamit ang interstitial. Tiyaking tamang URL ang sinusubukan mo at tumutugon nang maayos ang server sa lahat ng kahilingan."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedWithDetails": {
+    "message": "Hindi na-load nang maayos ng Lighthouse ang page na hiniling mo. Tiyaking tamang URL ang sinusubukan mo at tumutugon nang maayos ang server sa lahat ng kahilingan. (Mga Detalye: {errorDetails})"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedWithStatusCode": {
+    "message": "Hindi na-load nang maayos ng Lighthouse ang page na hiniling mo. Tiyaking tamang URL ang sinusubukan mo at tumutugon nang maayos ang server sa lahat ng kahilingan. (Status code: {statusCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadTookTooLong": {
+    "message": "Masyadong matagal na na-load ang iyong page. Pakisunod ang mga pagkakataon sa ulat para mabawasan ang tagal ng pag-load ng iyong page, at pagkatapos ay paganahin ulit ang Lighthouse. ({errorCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | protocolTimeout": {
+    "message": "Lumampas na sa nakalaang oras ang paghihintay ng tugon ng DevTools protocol. (Pamamaraan: {protocolMethod})"
+  },
+  "lighthouse-core/lib/lh-error.js | requestContentTimeout": {
+    "message": "Lumampas na sa nakalaang panahon ang pag-fetch ng content ng resource"
+  },
+  "lighthouse-core/lib/lh-error.js | urlInvalid": {
+    "message": "Mukhang invalid ang URL na ibinigay mo."
+  },
+  "lighthouse-core/report/html/renderer/util.js | auditGroupExpandTooltip": {
+    "message": "Ipakita ang mga pag-audit"
+  },
+  "lighthouse-core/report/html/renderer/util.js | crcInitialNavigation": {
+    "message": "Unang Navigation"
+  },
+  "lighthouse-core/report/html/renderer/util.js | crcLongestDurationLabel": {
+    "message": "Maximum na latency ng critical path:"
+  },
+  "lighthouse-core/report/html/renderer/util.js | errorLabel": {
+    "message": "Nagka-error!"
+  },
+  "lighthouse-core/report/html/renderer/util.js | errorMissingAuditInfo": {
+    "message": "Error sa ulat: walang impormasyon sa pag-audit"
+  },
+  "lighthouse-core/report/html/renderer/util.js | labDataTitle": {
+    "message": "Data ng Lab"
+  },
+  "lighthouse-core/report/html/renderer/util.js | lsPerformanceCategoryDescription": {
+    "message": "Ang pagsusuri ng [Lighthouse](https://developers.google.com/web/tools/lighthouse/) ng kasalukuyang page sa isang na-emulate na mobile network. Tinantya at puwedeng mag-iba ang mga value."
+  },
+  "lighthouse-core/report/html/renderer/util.js | manualAuditsGroupTitle": {
+    "message": "Mga karagdagang item na manual na susuriin"
+  },
+  "lighthouse-core/report/html/renderer/util.js | notApplicableAuditsGroupTitle": {
+    "message": "Hindi naaangkop"
+  },
+  "lighthouse-core/report/html/renderer/util.js | opportunityResourceColumnLabel": {
+    "message": "Pagkakataon"
+  },
+  "lighthouse-core/report/html/renderer/util.js | opportunitySavingsColumnLabel": {
+    "message": "Tinatayang Matitipid"
+  },
+  "lighthouse-core/report/html/renderer/util.js | passedAuditsGroupTitle": {
+    "message": "Mga pumasang pag-audit"
+  },
+  "lighthouse-core/report/html/renderer/util.js | snippetCollapseButtonLabel": {
+    "message": "I-collapse ang snippet"
+  },
+  "lighthouse-core/report/html/renderer/util.js | snippetExpandButtonLabel": {
+    "message": "I-expand ang snippet"
+  },
+  "lighthouse-core/report/html/renderer/util.js | thirdPartyResourcesLabel": {
+    "message": "Ipakita ang mga resource ng 3rd party"
+  },
+  "lighthouse-core/report/html/renderer/util.js | toplevelWarningsMessage": {
+    "message": "May mga isyung nakakaapekto sa pagpapatakbong ito ng Lighthouse:"
+  },
+  "lighthouse-core/report/html/renderer/util.js | varianceDisclaimer": {
+    "message": "Tinantya at puwedeng mag-iba ang mga value. [Batay lang sa mga sukatang ito ](https://github.com/GoogleChrome/lighthouse/blob/d2ec9ffbb21de9ad1a0f86ed24575eda32c796f0/docs/scoring.md#how-are-the-scores-weighted) ang score sa performance."
+  },
+  "lighthouse-core/report/html/renderer/util.js | warningAuditsGroupTitle": {
+    "message": "Pumasa sa mga pag-audit ngunit may mga babala"
+  },
+  "lighthouse-core/report/html/renderer/util.js | warningHeader": {
+    "message": "Mga Babala: "
+  },
+  "stack-packs/packs/wordpress.js | efficient_animated_content": {
+    "message": "Pag-isipang i-upload ang iyong GIF sa isang serbisyo kung saan gagawin itong available para i-embed bilang HTML5 video."
+  },
+  "stack-packs/packs/wordpress.js | offscreen_images": {
+    "message": "Mag-install ng [lazy-load na plugin sa WordPress](https://wordpress.org/plugins/search/lazy+load/) na nagbibigay ng kakayahang ipagpaliban ang anumang offscreen na larawan, o lumipat sa isang temang nagbibigay ng functionality. Pag-isipan ding gamiting [ang AMP na plugin](https://wordpress.org/plugins/amp/)."
+  },
+  "stack-packs/packs/wordpress.js | render_blocking_resources": {
+    "message": "May ilang plugin sa WordPress na makakatulong sa iyong [i-inline ang mahahalagang asset](https://wordpress.org/plugins/search/critical+css/) o [ipagpaliban ang hindi masyadong mahahalagang resource](https://wordpress.org/plugins/search/defer+css+javascript/). Tandaang puwedeng makasira sa mga feature ng iyong tema o mga plugin ang mga pag-optimize na mula sa mga plugin na ito, kaya malamang na kakailanganin mong gumawa ng mga pagbabago sa code."
+  },
+  "stack-packs/packs/wordpress.js | time_to_first_byte": {
+    "message": "Nakakaapekto ang mga tema, plugin, at detalye ng server sa oras ng pagtugon ng server. Pag-isipang maghanap ng mas naka-optimize na tema, maingat na pumili ng plugin sa pag-optimize, at/o i-upgrade ang iyong server."
+  },
+  "stack-packs/packs/wordpress.js | total_byte_weight": {
+    "message": "Pag-isipang magpakita ng mga sipi sa iyong mga listahan ng post (hal. sa pamamagitan ng tag na higit pa), bawasan ang bilang ng post na ipinapakita sa isang page, hatiin ang mahahaba mong post sa maraming page, o gumamit ng plugin sa mga lazy-load na komento."
+  },
+  "stack-packs/packs/wordpress.js | unminified_css": {
+    "message": "Puwedeng pabilisin ng ilang [plugin sa WordPress](https://wordpress.org/plugins/search/minify+css/) ang iyong site sa pamamagitan ng pagsasama-sama, pagpapaliit, at pagko-compress ng mga istilo mo. Puwede ka ring gumamit ng proseso ng pagbuo para gawin ang pagpapaliit na ito nang mas maaga kung posible."
+  },
+  "stack-packs/packs/wordpress.js | unminified_javascript": {
+    "message": "Puwedeng pabilisin ng ilang [plugin sa WordPress](https://wordpress.org/plugins/search/minify+javascript/) ang iyong site sa pamamagitan ng pagsasama-sama, pagpapaliit, at pagko-compress ng mga script mo. Puwede ka ring gumamit ng proseso ng pagbuo para gawin ang pagpapaliit na ito nang mas maaga kung posible."
+  },
+  "stack-packs/packs/wordpress.js | unused_css_rules": {
+    "message": "Pag-isipang bawasan, o baguhin, ang bilang ng [mga plugin sa WordPress](https://wordpress.org/plugins/) na naglo-load ng mga hindi ginagamit na CSS sa iyong page. Para tukuyin ang mga plugin na nagdaragdag ng mga hindi nauugnay na CSS, subukang patakbuhin ang [sakop ng code](https://developers.google.com/web/updates/2017/04/devtools-release-notes#coverage) sa Chrome DevTools. Puwede mong tukuyin ang tema/plugin na sanhi nito mula sa URL ng stylesheet. Abangan ang mga plugin na maraming stylesheet sa listahang maraming pula sa sakop ng code. Dapat lang i-enqueue ng plugin ang isang stylesheet kung talagang ginagamit ito sa page."
+  },
+  "stack-packs/packs/wordpress.js | unused_javascript": {
+    "message": "Pag-isipang bawasan, o baguhin, ang bilang ng [mga plugin sa WordPress](https://wordpress.org/plugins/) na naglo-load ng mga hindi ginagamit na JavaScript sa iyong page. Para tukuyin ang mga plugin na nagdaragdag ng mga hindi nauugnay na JS, subukang patakbuhin ang [sakop ng code](https://developers.google.com/web/updates/2017/04/devtools-release-notes#coverage) sa Chrome DevTools. Puwede mong tukuyin ang tema/plugin na sanhi nito mula sa URL ng script. Abangan ang mga plugin na maraming script sa listahang may maraming pula sa sakop ng code. Dapat lang i-enqueue ng plugin ang isang script kung talagang ginagamit ito sa page."
+  },
+  "stack-packs/packs/wordpress.js | uses_long_cache_ttl": {
+    "message": "Magbasa tungkol sa [Pag-cache ng Browser sa WordPress](https://codex.wordpress.org/WordPress_Optimization#Browser_Caching)."
+  },
+  "stack-packs/packs/wordpress.js | uses_optimized_images": {
+    "message": "Pag-isipang gumamit ng [plugin sa WordPress para sa pag-optimize ng larawan](https://wordpress.org/plugins/search/optimize+images/) na nagko-compress ng iyong mga larawan habang pinapanatili ang kalidad."
+  },
+  "stack-packs/packs/wordpress.js | uses_responsive_images": {
+    "message": "Direktang i-upload ang mga larawan sa pamamagitan ng [library ng media](https://codex.wordpress.org/Media_Library_Screen) para tiyaking available ang mga kinakailangang laki ng larawan, at pagkatapos ay ilagay ang mga ito mula sa library ng media o gamitin ang widget ng larawan para tiyaking ginagamit ang mga pinakaangkop na laki ng larawan (kabilang ang para sa mga tumutugong breakpoint). Iwasang gamitin ang mga larawang nasa `Full Size` maliban kung sapat ang mga dimensyon para sa paggamit ng mga ito. [Matuto Pa](https://codex.wordpress.org/Inserting_Images_into_Posts_and_Pages#Image_Size)."
+  },
+  "stack-packs/packs/wordpress.js | uses_text_compression": {
+    "message": "Puwede mong i-enable ang pag-compress ng text sa configuration ng iyong server sa web."
+  },
+  "stack-packs/packs/wordpress.js | uses_webp_images": {
+    "message": "Pag-isipang gumamit ng [plugin](https://wordpress.org/plugins/search/convert+webp/) o serbisyong awtomatikong magko-convert ng iyong mga na-upload na larawan sa mga optimal na format."
+  }
+}
diff --git a/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/fr.json b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/fr.json
new file mode 100644
index 0000000..5d29e5d2
--- /dev/null
+++ b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/fr.json
@@ -0,0 +1,1541 @@
+{
+  "lighthouse-core/audits/accessibility/accesskeys.js | description": {
+    "message": "Les clés d'accès permettent aux utilisateurs de positionner rapidement le curseur dans une partie spécifique de la page. Pour les aider à naviguer correctement, pensez à définir des clés d'accès uniques. [En savoir plus](https://web.dev/accesskeys/)"
+  },
+  "lighthouse-core/audits/accessibility/accesskeys.js | failureTitle": {
+    "message": "Les valeurs `[accesskey]` ne sont pas uniques"
+  },
+  "lighthouse-core/audits/accessibility/accesskeys.js | title": {
+    "message": "Les valeurs `[accesskey]` sont uniques"
+  },
+  "lighthouse-core/audits/accessibility/aria-allowed-attr.js | description": {
+    "message": "Chaque `role` ARIA est rattaché à un sous-ensemble spécifique d'attributs `aria-*`. S'ils ne sont pas correctement associés, les attributs `aria-*` ne seront pas valides. [En savoir plus](https://web.dev/aria-allowed-attr/)"
+  },
+  "lighthouse-core/audits/accessibility/aria-allowed-attr.js | failureTitle": {
+    "message": "Les attributs `[aria-*]` ne correspondent pas à leurs rôles"
+  },
+  "lighthouse-core/audits/accessibility/aria-allowed-attr.js | title": {
+    "message": "Les attributs `[aria-*]` correspondent à leurs rôles"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-attr.js | description": {
+    "message": "Certains rôles ARIA ont des attributs obligatoires qui décrivent l'état de l'élément aux lecteurs d'écran. [En savoir plus](https://web.dev/aria-required-attr/)"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-attr.js | failureTitle": {
+    "message": "Les éléments `[role]` ne possèdent pas tous les attributs `[aria-*]` requis"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-attr.js | title": {
+    "message": "Tous les éléments `[role]` contiennent les attributs `[aria-*]` requis"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-children.js | description": {
+    "message": "Certains rôles ARIA parents doivent contenir des rôles enfants spécifiques afin de remplir correctement leurs fonctions d'accessibilité. [En savoir plus](https://web.dev/aria-required-children/)"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-children.js | failureTitle": {
+    "message": "Les éléments associés à `[role]` et nécessitant des éléments `[role]` enfants spécifiques sont manquants."
+  },
+  "lighthouse-core/audits/accessibility/aria-required-children.js | title": {
+    "message": "Les éléments associés à `[role]` et nécessitant des éléments `[role]` enfants spécifiques sont présents"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-parent.js | description": {
+    "message": "Certains rôles ARIA enfants doivent être inclus dans un rôle parent spécifique afin de remplir correctement leurs fonctions d'accessibilité. [En savoir plus](https://web.dev/aria-required-parent/)"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-parent.js | failureTitle": {
+    "message": "Les éléments `[role]` ne sont pas inclus dans l'élément parent requis"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-parent.js | title": {
+    "message": "Les éléments `[role]` sont inclus dans l'élément parent approprié"
+  },
+  "lighthouse-core/audits/accessibility/aria-roles.js | description": {
+    "message": "Les rôles ARIA doivent comporter des valeurs valides afin de remplir correctement leurs fonctions d'accessibilité. [En savoir plus](https://web.dev/aria-roles/)"
+  },
+  "lighthouse-core/audits/accessibility/aria-roles.js | failureTitle": {
+    "message": "Les valeurs `[role]` ne sont pas valides"
+  },
+  "lighthouse-core/audits/accessibility/aria-roles.js | title": {
+    "message": "Les valeurs `[role]` sont valides"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr-value.js | description": {
+    "message": "Les technologies d'assistance telles que les lecteurs d'écran ne peuvent pas interpréter les attributs ARIA si leurs valeurs ne sont pas valides. [En savoir plus](https://web.dev/aria-valid-attr-value/)"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr-value.js | failureTitle": {
+    "message": "La valeur des attributs `[aria-*]` n'est pas valide"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr-value.js | title": {
+    "message": "Les attributs `[aria-*]` ont des valeurs valides"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr.js | description": {
+    "message": "Les technologies d'assistance telles que les lecteurs d'écran ne peuvent pas interpréter les attributs ARIA si leurs noms ne sont pas valides. [En savoir plus](https://web.dev/aria-valid-attr/)"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr.js | failureTitle": {
+    "message": "Les attributs `[aria-*]` ne sont pas valides ou sont mal orthographiés"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr.js | title": {
+    "message": "Les attributs `[aria-*]` sont valides et correctement orthographiés"
+  },
+  "lighthouse-core/audits/accessibility/audio-caption.js | description": {
+    "message": "Les sous-titres rendent les contenus audio accessibles aux personnes sourdes et malentendantes, en leur fournissant des informations essentielles (qui est en train de parler, ce que cette personne dit et d'autres informations non contenues dans le dialogue, par exemple). [En savoir plus](https://web.dev/audio-caption/)"
+  },
+  "lighthouse-core/audits/accessibility/audio-caption.js | failureTitle": {
+    "message": "Il manque un élément `<track>` possédant l'attribut `[kind=\"captions\"]` dans les éléments `<audio>`."
+  },
+  "lighthouse-core/audits/accessibility/audio-caption.js | title": {
+    "message": "Les éléments `<audio>` contiennent un élément `<track>` possédant l'attribut `[kind=\"captions\"]`"
+  },
+  "lighthouse-core/audits/accessibility/axe-audit.js | failingElementsHeader": {
+    "message": "Éléments non conformes"
+  },
+  "lighthouse-core/audits/accessibility/button-name.js | description": {
+    "message": "Lorsqu'un bouton n'a pas de nom accessible, les lecteurs d'écran annoncent simplement qu'il s'agit d'un \"bouton\", ce qui le rend inutilisable pour les personnes qui se servent de tels outils. [En savoir plus](https://web.dev/button-name/)"
+  },
+  "lighthouse-core/audits/accessibility/button-name.js | failureTitle": {
+    "message": "Les boutons n'ont pas de nom accessible"
+  },
+  "lighthouse-core/audits/accessibility/button-name.js | title": {
+    "message": "Les boutons ont un nom accessible"
+  },
+  "lighthouse-core/audits/accessibility/bypass.js | description": {
+    "message": "En ajoutant des méthodes pour contourner les contenus répétitifs, vous permettez aux internautes qui utilisent un clavier de naviguer plus efficacement sur la page. [En savoir plus](https://web.dev/bypass/)"
+  },
+  "lighthouse-core/audits/accessibility/bypass.js | failureTitle": {
+    "message": "La page ne contient pas de titre, de lien \"Ignorer\" ni de point de repère"
+  },
+  "lighthouse-core/audits/accessibility/bypass.js | title": {
+    "message": "La page contient un titre, un lien \"Ignorer\" ou un point de repère"
+  },
+  "lighthouse-core/audits/accessibility/color-contrast.js | description": {
+    "message": "Un texte faiblement contrasté est difficile, voire impossible à lire pour de nombreux utilisateurs. [En savoir plus](https://web.dev/color-contrast/)"
+  },
+  "lighthouse-core/audits/accessibility/color-contrast.js | failureTitle": {
+    "message": "Les couleurs d'arrière-plan et de premier plan ne sont pas suffisamment contrastées"
+  },
+  "lighthouse-core/audits/accessibility/color-contrast.js | title": {
+    "message": "Les couleurs d'arrière-plan et de premier plan sont suffisamment contrastées"
+  },
+  "lighthouse-core/audits/accessibility/definition-list.js | description": {
+    "message": "Si les listes de définition ne sont pas correctement balisées, les lecteurs d'écran risquent de donner des résultats confus ou imprécis. [En savoir plus](https://web.dev/definition-list/)"
+  },
+  "lighthouse-core/audits/accessibility/definition-list.js | failureTitle": {
+    "message": "Les éléments `<dl>` ne contiennent pas uniquement des groupes `<dt>` et `<dd>` ainsi que des éléments `<script>` ou `<template>` dans le bon ordre."
+  },
+  "lighthouse-core/audits/accessibility/definition-list.js | title": {
+    "message": "Les éléments `<dl>` ne contiennent que des groupes `<dt>` et `<dd>` ainsi que des éléments `<script>` ou `<template>` dans le bon ordre."
+  },
+  "lighthouse-core/audits/accessibility/dlitem.js | description": {
+    "message": "Les éléments de liste de définition (`<dt>` et `<dd>`) doivent être encapsulés dans un élément `<dl>` parent afin que les lecteurs d'écran puissent les énoncer correctement. [En savoir plus](https://web.dev/dlitem/)"
+  },
+  "lighthouse-core/audits/accessibility/dlitem.js | failureTitle": {
+    "message": "Les éléments de liste de définition ne sont pas encapsulés dans des éléments `<dl>`"
+  },
+  "lighthouse-core/audits/accessibility/dlitem.js | title": {
+    "message": "Les éléments de liste de définition sont encapsulés dans des éléments `<dl>`"
+  },
+  "lighthouse-core/audits/accessibility/document-title.js | description": {
+    "message": "Le titre donne aux utilisateurs de lecteurs d'écran un aperçu de la page. En outre, les moteurs de recherche s'appuient principalement sur ce dernier pour déterminer la pertinence du contenu proposé. [En savoir plus](https://web.dev/document-title/)"
+  },
+  "lighthouse-core/audits/accessibility/document-title.js | failureTitle": {
+    "message": "Le document ne contient pas d'élément `<title>`"
+  },
+  "lighthouse-core/audits/accessibility/document-title.js | title": {
+    "message": "Le document contient un élément `<title>`"
+  },
+  "lighthouse-core/audits/accessibility/duplicate-id.js | description": {
+    "message": "La valeur de chaque attribut \"id\" doit être unique afin que les différentes instances soient toutes prises en compte par les technologies d'assistance. [En savoir plus](https://web.dev/duplicate-id/)"
+  },
+  "lighthouse-core/audits/accessibility/duplicate-id.js | failureTitle": {
+    "message": "Les attributs `[id]` de la page ne sont pas uniques"
+  },
+  "lighthouse-core/audits/accessibility/duplicate-id.js | title": {
+    "message": "Les attributs `[id]` de la page sont uniques"
+  },
+  "lighthouse-core/audits/accessibility/frame-title.js | description": {
+    "message": "Les lecteurs d'écran s'appuient sur le titre des frames pour décrire le contenu de ces derniers aux utilisateurs. [En savoir plus](https://web.dev/frame-title/)"
+  },
+  "lighthouse-core/audits/accessibility/frame-title.js | failureTitle": {
+    "message": "Les éléments `<frame>` ou `<iframe>` n'ont pas de titre"
+  },
+  "lighthouse-core/audits/accessibility/frame-title.js | title": {
+    "message": "Les éléments `<frame>` ou `<iframe>` ont un titre"
+  },
+  "lighthouse-core/audits/accessibility/html-has-lang.js | description": {
+    "message": "Lorsqu'une page ne spécifie pas d'attribut \"lang\", les lecteurs d'écran considèrent qu'elle est rédigée dans la langue par défaut sélectionnée au moment de leur configuration par l'utilisateur. Si la page n'est pas rédigée dans cette langue par défaut, les lecteurs d'écran risquent de ne pas énoncer correctement son contenu. [En savoir plus](https://web.dev/html-has-lang/)"
+  },
+  "lighthouse-core/audits/accessibility/html-has-lang.js | failureTitle": {
+    "message": "L'élément `<html>` n'a pas d'attribut `[lang]`"
+  },
+  "lighthouse-core/audits/accessibility/html-has-lang.js | title": {
+    "message": "L'élément `<html>` contient un attribut `[lang]`"
+  },
+  "lighthouse-core/audits/accessibility/html-lang-valid.js | description": {
+    "message": "Le fait de spécifier une [langue BCP 47](https://www.w3.org/International/questions/qa-choosing-language-tags#question) valide permet d'aider les lecteurs d'écran à énoncer correctement le texte. [En savoir plus](https://web.dev/html-lang-valid/)"
+  },
+  "lighthouse-core/audits/accessibility/html-lang-valid.js | failureTitle": {
+    "message": "La valeur de l'attribut `[lang]` de l'élément `<html>` n'est pas valide."
+  },
+  "lighthouse-core/audits/accessibility/html-lang-valid.js | title": {
+    "message": "La valeur de l'attribut `[lang]` de l'élément `<html>` est valide"
+  },
+  "lighthouse-core/audits/accessibility/image-alt.js | description": {
+    "message": "Les éléments informatifs doivent contenir un texte de substitution court et descriptif. L'attribut alt peut rester vide pour les éléments décoratifs. [En savoir plus](https://web.dev/image-alt/)"
+  },
+  "lighthouse-core/audits/accessibility/image-alt.js | failureTitle": {
+    "message": "Des éléments d'image n'ont pas d'attribut `[alt]`"
+  },
+  "lighthouse-core/audits/accessibility/image-alt.js | title": {
+    "message": "Les éléments d'image possèdent des attributs `[alt]`"
+  },
+  "lighthouse-core/audits/accessibility/input-image-alt.js | description": {
+    "message": "Lorsqu'une image est utilisée comme bouton `<input>`, vous pouvez aider les utilisateurs de lecteurs d'écran à comprendre son utilité en ajoutant un texte de substitution. [En savoir plus](https://web.dev/input-image-alt/)"
+  },
+  "lighthouse-core/audits/accessibility/input-image-alt.js | failureTitle": {
+    "message": "Les éléments `<input type=\"image\">` n'ont pas de texte `[alt]`"
+  },
+  "lighthouse-core/audits/accessibility/input-image-alt.js | title": {
+    "message": "Les éléments `<input type=\"image\">` contiennent du texte `[alt]`"
+  },
+  "lighthouse-core/audits/accessibility/label.js | description": {
+    "message": "Les libellés permettent de s'assurer que les éléments de contrôle des formulaires sont énoncés correctement par les technologies d'assistance, comme les lecteurs d'écran. [En savoir plus](https://web.dev/label/)"
+  },
+  "lighthouse-core/audits/accessibility/label.js | failureTitle": {
+    "message": "Les éléments de formulaire ne sont pas associés à des libellés"
+  },
+  "lighthouse-core/audits/accessibility/label.js | title": {
+    "message": "Les éléments de formulaire sont associés à des libellés"
+  },
+  "lighthouse-core/audits/accessibility/layout-table.js | description": {
+    "message": "Un tableau utilisé pour la mise en page ne doit pas inclure d'éléments de données tels que les éléments \"th\" ou \"caption\", ou encore l'attribut \"summary\", car cela peut perturber l'expérience des utilisateurs de lecteurs d'écran. [En savoir plus](https://web.dev/layout-table/)"
+  },
+  "lighthouse-core/audits/accessibility/layout-table.js | failureTitle": {
+    "message": "Les éléments `<table>` de présentation n'évitent pas d'utiliser `<th>`, `<caption>` ni l'attribut `[summary]`."
+  },
+  "lighthouse-core/audits/accessibility/layout-table.js | title": {
+    "message": "Les éléments `<table>` de présentation ne font pas appel aux éléments `<th>` et `<caption>`, ni à l'attribut `[summary]`."
+  },
+  "lighthouse-core/audits/accessibility/link-name.js | description": {
+    "message": "Rédigez du texte visible et unique pour les liens (et pour le texte de substitution des images, si vous vous en servez dans des liens), afin que les utilisateurs de lecteurs d'écran puissent facilement positionner le curseur dessus et bénéficient d'une meilleure expérience de navigation. [En savoir plus](https://web.dev/link-name/)"
+  },
+  "lighthouse-core/audits/accessibility/link-name.js | failureTitle": {
+    "message": "Les liens n'ont pas de nom visible"
+  },
+  "lighthouse-core/audits/accessibility/link-name.js | title": {
+    "message": "Les liens ont un nom visible"
+  },
+  "lighthouse-core/audits/accessibility/list.js | description": {
+    "message": "Les lecteurs d'écran ont une façon spécifique d'énoncer les listes. Pour leur permettre de donner de bons résultats, pensez à bien structurer ces dernières. [En savoir plus](https://web.dev/list/)"
+  },
+  "lighthouse-core/audits/accessibility/list.js | failureTitle": {
+    "message": "Les listes ne contiennent pas uniquement des éléments `<li>` et des éléments de type script (`<script>` et `<template>`)."
+  },
+  "lighthouse-core/audits/accessibility/list.js | title": {
+    "message": "Les listes contiennent uniquement des éléments `<li>` et des éléments de type script (`<script>` et `<template>`)."
+  },
+  "lighthouse-core/audits/accessibility/listitem.js | description": {
+    "message": "Les lecteurs d'écran requièrent que les éléments de liste (`<li>`) soient contenus dans un élément parent `<ul>` ou `<ol>` pour les énoncer correctement. [En savoir plus](https://web.dev/listitem/)"
+  },
+  "lighthouse-core/audits/accessibility/listitem.js | failureTitle": {
+    "message": "Les éléments de liste (`<li>`) ne sont pas inclus dans des éléments parents `<ul>` ni `<ol>`."
+  },
+  "lighthouse-core/audits/accessibility/listitem.js | title": {
+    "message": "Les éléments de liste (`<li>`) sont inclus dans des éléments parents `<ul>` ou `<ol>`"
+  },
+  "lighthouse-core/audits/accessibility/meta-refresh.js | description": {
+    "message": "Les utilisateurs ne s'attendent pas à ce qu'une page s'actualise automatiquement. De plus, lorsque cela se produit, le curseur est aussitôt repositionné en haut de la page. Cela peut générer de la frustration et perturber l'expérience utilisateur. [En savoir plus](https://web.dev/meta-refresh/)"
+  },
+  "lighthouse-core/audits/accessibility/meta-refresh.js | failureTitle": {
+    "message": "Le document utilise une balise Meta `<meta http-equiv=\"refresh\">`"
+  },
+  "lighthouse-core/audits/accessibility/meta-refresh.js | title": {
+    "message": "Le document n'utilise pas de balise Meta `<meta http-equiv=\"refresh\">`"
+  },
+  "lighthouse-core/audits/accessibility/meta-viewport.js | description": {
+    "message": "La désactivation de la fonction de zoom peut être problématique pour les utilisateurs qui ne voient pas bien et qui ont besoin d'agrandir le contenu d'une page Web pour en saisir le sens. [En savoir plus](https://web.dev/meta-viewport/)"
+  },
+  "lighthouse-core/audits/accessibility/meta-viewport.js | failureTitle": {
+    "message": "L'attribut `[user-scalable=\"no\"]` est utilisé dans l'élément `<meta name=\"viewport\">`, ou l'attribut `[maximum-scale]` est inférieur à 5."
+  },
+  "lighthouse-core/audits/accessibility/meta-viewport.js | title": {
+    "message": "`[user-scalable=\"no\"]` n'est pas utilisé dans l'élément `<meta name=\"viewport\">`, et l'attribut `[maximum-scale]` n'est pas inférieur à 5."
+  },
+  "lighthouse-core/audits/accessibility/object-alt.js | description": {
+    "message": "Les lecteurs d'écran ne peuvent pas traduire les contenus non textuels. En ajoutant un texte de substitution aux éléments `<object>`, vous aiderez les lecteurs d'écran à transmettre votre message aux utilisateurs. [En savoir plus](https://web.dev/object-alt/)"
+  },
+  "lighthouse-core/audits/accessibility/object-alt.js | failureTitle": {
+    "message": "Les éléments `<object>` n'ont pas de texte `[alt]`"
+  },
+  "lighthouse-core/audits/accessibility/object-alt.js | title": {
+    "message": "Les éléments `<object>` contiennent du texte `[alt]`"
+  },
+  "lighthouse-core/audits/accessibility/tabindex.js | description": {
+    "message": "Une valeur supérieure à 0 implique un ordre de navigation explicite. Bien que cela soit valide d'un point de vue technique, cela crée souvent une expérience frustrante pour les utilisateurs qui s'appuient sur des technologies d'assistance. [En savoir plus](https://web.dev/tabindex/)"
+  },
+  "lighthouse-core/audits/accessibility/tabindex.js | failureTitle": {
+    "message": "Certains éléments ont une valeur `[tabindex]` supérieure à 0"
+  },
+  "lighthouse-core/audits/accessibility/tabindex.js | title": {
+    "message": "Aucun élément n'a de valeur `[tabindex]` supérieure à 0"
+  },
+  "lighthouse-core/audits/accessibility/td-headers-attr.js | description": {
+    "message": "Les lecteurs d'écran proposent des fonctionnalités qui permettent de naviguer plus simplement dans les tableaux. En vous assurant que les cellules `<td>` qui comportent l'attribut `[headers]` fassent référence à d'autres cellules dans le même tableau uniquement, vous pourrez améliorer l'expérience des utilisateurs de lecteurs d'écran. [En savoir plus](https://web.dev/td-headers-attr/)"
+  },
+  "lighthouse-core/audits/accessibility/td-headers-attr.js | failureTitle": {
+    "message": "Les cellules d'un élément `<table>` qui utilisent l'attribut `[headers]` font référence à d'autres cellules du même tableau."
+  },
+  "lighthouse-core/audits/accessibility/td-headers-attr.js | title": {
+    "message": "Les cellules d'un élément `<table>` qui utilisent l'attribut `[headers]` font uniquement référence à d'autres cellules dans le même tableau."
+  },
+  "lighthouse-core/audits/accessibility/th-has-data-cells.js | description": {
+    "message": "Les lecteurs d'écran proposent des fonctionnalités qui permettent de naviguer plus simplement dans les tableaux. En vous assurant que les en-têtes de tableaux fassent toujours référence à un ensemble de cellules spécifique, vous pourrez améliorer l'expérience des utilisateurs de lecteurs d'écran. [En savoir plus](https://web.dev/th-has-data-cells/)"
+  },
+  "lighthouse-core/audits/accessibility/th-has-data-cells.js | failureTitle": {
+    "message": "Les éléments `<th>` et ceux portant l'attribut `[role=\"columnheader\"/\"rowheader\"]` ne décrivent aucune cellule de données."
+  },
+  "lighthouse-core/audits/accessibility/th-has-data-cells.js | title": {
+    "message": "Les éléments `<th>` et ceux portant l'attribut `[role=\"columnheader\"/\"rowheader\"]` décrivent des cellules de données."
+  },
+  "lighthouse-core/audits/accessibility/valid-lang.js | description": {
+    "message": "Le fait de spécifier une [langue BCP 47](https://www.w3.org/International/questions/qa-choosing-language-tags#question) valide pour les éléments permet de s'assurer que le texte sera prononcé correctement par les lecteurs d'écran. [En savoir plus](https://web.dev/valid-lang/)"
+  },
+  "lighthouse-core/audits/accessibility/valid-lang.js | failureTitle": {
+    "message": "La valeur des attributs `[lang]` n'est pas valide"
+  },
+  "lighthouse-core/audits/accessibility/valid-lang.js | title": {
+    "message": "Les attributs `[lang]` ont une valeur valide"
+  },
+  "lighthouse-core/audits/accessibility/video-caption.js | description": {
+    "message": "Le fait d'ajouter des sous-titres à une vidéo rend cette dernière plus accessible aux personnes sourdes et malentendantes. [En savoir plus](https://web.dev/video-caption/)"
+  },
+  "lighthouse-core/audits/accessibility/video-caption.js | failureTitle": {
+    "message": "Les éléments `<video>` ne contiennent pas d'élément `<track>` possédant l'attribut `[kind=\"captions\"]`."
+  },
+  "lighthouse-core/audits/accessibility/video-caption.js | title": {
+    "message": "Les éléments `<video>` contiennent un élément `<track>` possédant l'attribut `[kind=\"captions\"]`"
+  },
+  "lighthouse-core/audits/accessibility/video-description.js | description": {
+    "message": "Les descriptions audio fournissent des informations pertinentes qui ne sont pas comprises dans le dialogue des vidéos, comme les expressions faciales et les scènes. [En savoir plus](https://web.dev/video-description/)"
+  },
+  "lighthouse-core/audits/accessibility/video-description.js | failureTitle": {
+    "message": "Les éléments `<video>` ne contiennent pas d'élément `<track>` possédant l'attribut `[kind=\"description\"]`."
+  },
+  "lighthouse-core/audits/accessibility/video-description.js | title": {
+    "message": "Les éléments `<video>` contiennent un élément `<track>` possédant l'attribut `[kind=\"description\"]`"
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | description": {
+    "message": "Définissez un attribut `apple-touch-icon` afin d'optimiser l'affichage de votre progressive web app sur l'écran d'accueil des appareils iOS. Il doit mener vers une image PNG carrée opaque de 180 ou 192 pixels. [Découvrez-en davantage](https://developers.google.com/web/fundamentals/design-and-ux/browser-customization/)."
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | failureTitle": {
+    "message": "La valeur de l'attribut `apple-touch-icon` n'est pas valide"
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | precomposedWarning": {
+    "message": "`apple-touch-icon-precomposed` est obsolète. Utilisez plutôt `apple-touch-icon`."
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | title": {
+    "message": "La valeur de l'attribut `apple-touch-icon` est valide"
+  },
+  "lighthouse-core/audits/bootup-time.js | chromeExtensionsWarning": {
+    "message": "Les extensions Chrome ont eu un impact négatif sur les performances de chargement de la page. Essayez de contrôler la page en mode navigation privée ou depuis un profil Chrome sans extensions."
+  },
+  "lighthouse-core/audits/bootup-time.js | columnScriptEval": {
+    "message": "Évaluation des scripts"
+  },
+  "lighthouse-core/audits/bootup-time.js | columnScriptParse": {
+    "message": "Analyse des scripts"
+  },
+  "lighthouse-core/audits/bootup-time.js | columnTotal": {
+    "message": "Temps CPU total"
+  },
+  "lighthouse-core/audits/bootup-time.js | description": {
+    "message": "Envisagez de réduire le temps consacré à l'analyse, la compilation et l'exécution de JavaScript. La livraison de charges utiles JavaScript plus petites peut vous aider. [En savoir plus](https://developers.google.com/web/tools/lighthouse/audits/bootup)"
+  },
+  "lighthouse-core/audits/bootup-time.js | failureTitle": {
+    "message": "Réduisez le temps d'exécution de JavaScript"
+  },
+  "lighthouse-core/audits/bootup-time.js | title": {
+    "message": "Délai d'exécution de JavaScript"
+  },
+  "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | description": {
+    "message": "Les grandes images GIF sont inefficaces pour diffuser du contenu animé. Envisagez d'utiliser des vidéos MPEG4/WebM pour les animations et PNG/WebP pour les images statiques au lieu d'images GIF afin d'économiser des octets réseau. [En savoir plus](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/replace-animated-gifs-with-video/)"
+  },
+  "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | title": {
+    "message": "Utilisez des formats vidéo pour le contenu animé"
+  },
+  "lighthouse-core/audits/byte-efficiency/offscreen-images.js | description": {
+    "message": "Envisagez de charger des images masquées ou hors écran après le chargement de toutes les ressources essentielles afin de réduire le délai avant interactivité. [En savoir plus](https://developers.google.com/web/tools/lighthouse/audits/offscreen-images)"
+  },
+  "lighthouse-core/audits/byte-efficiency/offscreen-images.js | title": {
+    "message": "Différez le chargement des images hors écran"
+  },
+  "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | description": {
+    "message": "Des ressources bloquent la première visualisation (first paint) de votre page. Envisagez de diffuser des feuilles JS/CSS essentielles en ligne et de différer la diffusion de toutes les feuilles JS/de style non essentielles. [En savoir plus](https://developers.google.com/web/tools/lighthouse/audits/blocking-resources)"
+  },
+  "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | title": {
+    "message": "Éliminez les ressources qui bloquent le rendu"
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | description": {
+    "message": "Les charges utiles des grands réseaux coûtent de l'argent réel aux utilisateurs et sont fortement corrélées aux délais de chargement interminables. [En savoir plus](https://developers.google.com/web/tools/lighthouse/audits/network-payloads)"
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | displayValue": {
+    "message": "Taille totale : {totalBytes, number, bytes} Ko"
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | failureTitle": {
+    "message": "Évitez d'énormes charges utiles de réseau"
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | title": {
+    "message": "Éviter d'énormes charges utiles de réseau"
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-css.js | description": {
+    "message": "La réduction des fichiers CSS peut réduire la taille des charges utiles de réseau. [En savoir plus](https://developers.google.com/web/tools/lighthouse/audits/minify-css)"
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-css.js | title": {
+    "message": "Réduisez la taille des ressources CSS"
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | description": {
+    "message": "La minimisation des fichiers JavaScript peut réduire la taille des charges utiles et la durée d'analyse des scripts. [En savoir plus](https://developers.google.com/speed/docs/insights/MinifyResources)"
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | title": {
+    "message": "Réduisez la taille des ressources JavaScript"
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | description": {
+    "message": "Supprimez les règles inutilisées des feuilles de style et différez le chargement des ressources CSS inutilisées pour le contenu au-dessus de la ligne de flottaison afin de réduire la quantité d'octets inutiles consommés par l'activité réseau. [En savoir plus](https://developers.google.com/web/tools/lighthouse/audits/unused-css)"
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | title": {
+    "message": "Supprimer les ressources CSS inutilisées"
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-javascript.js | description": {
+    "message": "Supprimez les ressources JavaScript inutilisées pour réduire la quantité d'octets consommés par l'activité réseau."
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-javascript.js | title": {
+    "message": "Supprimez les ressources JavaScript inutilisées"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | description": {
+    "message": "Une longue durée de vie du cache peut accélérer les visites répétées sur votre page. [En savoir plus](https://developers.google.com/web/tools/lighthouse/audits/cache-policy)"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 ressource trouvée}one{# ressource trouvée}other{# ressources trouvées}}"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | failureTitle": {
+    "message": "Diffusez des éléments statiques grâce à des règles de cache efficaces"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | title": {
+    "message": "Utiliser des règles de cache efficaces sur les éléments statiques"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | description": {
+    "message": "Les images optimisées se chargent plus rapidement et consomment moins de données mobiles. [En savoir plus](https://developers.google.com/web/tools/lighthouse/audits/optimize-images)"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | title": {
+    "message": "Encodez les images de manière efficace"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | description": {
+    "message": "Diffusez des images de taille appropriée afin d'économiser des données mobiles et de réduire le temps de chargement. [En savoir plus](https://developers.google.com/web/tools/lighthouse/audits/oversized-images)"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | title": {
+    "message": "Dimensionnez correctement les images"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | description": {
+    "message": "Les ressources textuelles doivent être diffusées compressées (Gzip, Deflate ou Brotli) pour réduire le nombre total d'octets du réseau. [En savoir plus](https://developers.google.com/web/tools/lighthouse/audits/text-compression)"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | title": {
+    "message": "Activez la compression de texte"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | description": {
+    "message": "Les formats d'image comme JPEG 2000, JPEG XR et WebP proposent souvent une meilleure compression que les formats PNG ou JPEG. Par conséquent, les téléchargements sont plus rapides et la consommation de données est réduite. [En savoir plus](https://developers.google.com/web/tools/lighthouse/audits/webp)"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | title": {
+    "message": "Diffusez des images aux formats nouvelle génération"
+  },
+  "lighthouse-core/audits/content-width.js | description": {
+    "message": "Si la largeur du contenu de votre application ne correspond pas à la largeur de la fenêtre d'affichage, il se peut que votre application ne soit pas optimisée pour les écrans mobiles. [Découvrez-en davantage](https://developers.google.com/web/tools/lighthouse/audits/content-sized-correctly-for-viewport)."
+  },
+  "lighthouse-core/audits/content-width.js | explanation": {
+    "message": "La dimension de la fenêtre d'affichage ({innerWidth} pixels) ne correspond pas à la taille de la fenêtre ({outerWidth} pixels)."
+  },
+  "lighthouse-core/audits/content-width.js | failureTitle": {
+    "message": "Le contenu n'est pas correctement dimensionné pour la fenêtre d'affichage"
+  },
+  "lighthouse-core/audits/content-width.js | title": {
+    "message": "Le contenu est correctement dimensionné pour la fenêtre d'affichage"
+  },
+  "lighthouse-core/audits/critical-request-chains.js | description": {
+    "message": "Les chaînes de demandes critiques ci-dessous vous montrent quelles ressources sont chargées avec une priorité élevée. Envisagez de réduire la longueur des chaînes et la taille de téléchargement des ressources ou de reporter le téléchargement de ressources inutiles afin d'améliorer le chargement des pages. [En savoir plus](https://developers.google.com/web/tools/lighthouse/audits/critical-request-chains)"
+  },
+  "lighthouse-core/audits/critical-request-chains.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 chaîne trouvée}one{# chaîne trouvée}other{# chaînes trouvées}}"
+  },
+  "lighthouse-core/audits/critical-request-chains.js | title": {
+    "message": "Réduisez la profondeur des demandes critiques"
+  },
+  "lighthouse-core/audits/deprecations.js | columnDeprecate": {
+    "message": "API obsolète/Avertissement"
+  },
+  "lighthouse-core/audits/deprecations.js | columnLine": {
+    "message": "Ligne"
+  },
+  "lighthouse-core/audits/deprecations.js | description": {
+    "message": "Les API obsolètes seront finalement supprimées du navigateur. [En savoir plus](https://web.dev/deprecations)"
+  },
+  "lighthouse-core/audits/deprecations.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 avertissement détecté}one{# avertissement détecté}other{# avertissements détectés}}"
+  },
+  "lighthouse-core/audits/deprecations.js | failureTitle": {
+    "message": "API obsolètes utilisées"
+  },
+  "lighthouse-core/audits/deprecations.js | title": {
+    "message": "La page n'utilise pas d'API obsolètes"
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | description": {
+    "message": "L'API Application Cache est obsolète. [En savoir plus](https://web.dev/appcache-manifest)"
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | displayValue": {
+    "message": "\"{AppCacheManifest}\" trouvé"
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | failureTitle": {
+    "message": "API Application Cache utilisée"
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | title": {
+    "message": "API Application Cache non utilisée"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | description": {
+    "message": "La spécification d'un attribut doctype empêche le navigateur de passer en mode quirks. [Découvrez-en davantage](https://web.dev/doctype)."
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationBadDoctype": {
+    "message": "Le nom de l'attribut doctype doit être en minuscules `html`"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationNoDoctype": {
+    "message": "Le document doit contenir un attribut doctype"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationPublicId": {
+    "message": "La chaîne publicId est censée être vide"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationSystemId": {
+    "message": "La chaîne systemId est censée être vide"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | failureTitle": {
+    "message": "La page n'a pas d'attribut doctype HTML, ce qui déclenche le mode quirks"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | title": {
+    "message": "La page n'a pas d'attribut doctype HTML"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | columnElement": {
+    "message": "Élément"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | columnStatistic": {
+    "message": "Statistique"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | columnValue": {
+    "message": "Valeur"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | description": {
+    "message": "Les ingénieurs en navigation recommandent que les pages contiennent moins de 1 500 éléments DOM environ. La zone d'écoute idéale est une profondeur d'arborescence inférieure à 32 éléments et contenant moins de 60 éléments enfant/parent. Un grand DOM peut accroître l'utilisation de la mémoire, et entraîner de plus longs [calculs de style](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations) et de coûteux [ajustements de la mise en page](https://developers.google.com/speed/articles/reflow). [En savoir plus](https://web.dev/dom-size)"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 élément}one{# élément}other{# éléments}}"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | failureTitle": {
+    "message": "Évitez une taille excessive de DOM"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | statisticDOMDepth": {
+    "message": "Profondeur maximum de DOM"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | statisticDOMElements": {
+    "message": "Nombre total d'éléments DOM"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | statisticDOMWidth": {
+    "message": "Nombre maximal d'éléments enfants"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | title": {
+    "message": "Éviter une taille excessive de DOM"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | columnRel": {
+    "message": "Rel"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | columnTarget": {
+    "message": "Cible"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | description": {
+    "message": "Ajoutez les attributs `rel=\"noopener\"` ou `rel=\"noreferrer\"` à tous les liens externes pour améliorer les performances et prévenir les failles de sécurité. [En savoir plus](https://web.dev/external-anchors-use-rel-noopener)"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | failureTitle": {
+    "message": "Les liens vers les destinations multi-domaines sont dangereux"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | title": {
+    "message": "Les liens vers les destinations multi-domaines sont sûrs"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | warning": {
+    "message": "Impossible de déterminer la destination de l'ancrage ({anchorHTML}). S'il n'est pas utilisé comme lien hypertexte, envisagez de supprimer target=_blank."
+  },
+  "lighthouse-core/audits/dobetterweb/geolocation-on-start.js | description": {
+    "message": "Les utilisateurs se méfient des sites qui demandent leur position sans contexte. Envisagez plutôt d'associer la demande à des actions de l'utilisateur. [En savoir plus](https://web.dev/geolocation-on-start)"
+  },
+  "lighthouse-core/audits/dobetterweb/geolocation-on-start.js | failureTitle": {
+    "message": "Demandes d'autorisation de géolocalisation lors du chargement de page"
+  },
+  "lighthouse-core/audits/dobetterweb/geolocation-on-start.js | title": {
+    "message": "Aucune autorisation de géolocalisation n'est demandée au chargement de la page"
+  },
+  "lighthouse-core/audits/dobetterweb/js-libraries.js | columnVersion": {
+    "message": "Version"
+  },
+  "lighthouse-core/audits/dobetterweb/js-libraries.js | description": {
+    "message": "Toutes les bibliothèques JavaScript frontales détectées sur la page. [Découvrez-en davantage](https://web.dev/js-libraries)."
+  },
+  "lighthouse-core/audits/dobetterweb/js-libraries.js | title": {
+    "message": "Bibliothèques JavaScript détectées"
+  },
+  "lighthouse-core/audits/dobetterweb/no-document-write.js | description": {
+    "message": "Pour les utilisateurs rencontrant des problèmes de connexion lente, les scripts externes injectés dynamiquement via `document.write()` peuvent retarder le chargement des pages de plusieurs dizaines de secondes. [En savoir plus](https://web.dev/no-document-write)"
+  },
+  "lighthouse-core/audits/dobetterweb/no-document-write.js | failureTitle": {
+    "message": "La page utilise l'attribut `document.write()`"
+  },
+  "lighthouse-core/audits/dobetterweb/no-document-write.js | title": {
+    "message": "Évite `document.write()`"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | columnSeverity": {
+    "message": "Extrême"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | columnVersion": {
+    "message": "Version de la bibliothèque"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | columnVuln": {
+    "message": "Nombre de failles"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | description": {
+    "message": "Certains scripts tiers peuvent présenter des failles de sécurité connues, faciles à identifier et à exploiter par des pirates informatiques. [En savoir plus](https://web.dev/no-vulnerable-libraries)"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 faille détectée}one{# faille détectée}other{# failles détectées}}"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | failureTitle": {
+    "message": "La page utilise des bibliothèques JavaScript frontales présentant des failles de sécurité connues"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | rowSeverityHigh": {
+    "message": "Élevée"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | rowSeverityLow": {
+    "message": "Faible"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | rowSeverityMedium": {
+    "message": "Moyenne"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | title": {
+    "message": "Les bibliothèques JavaScript frontales ne présentent aucune faille de sécurité connue"
+  },
+  "lighthouse-core/audits/dobetterweb/notification-on-start.js | description": {
+    "message": "Les utilisateurs se méfient des sites qui demandent à envoyer des notifications sans contexte. Envisagez plutôt d'associer la demande à des gestes de l'utilisateur. [En savoir plus](https://web.dev/notification-on-start)"
+  },
+  "lighthouse-core/audits/dobetterweb/notification-on-start.js | failureTitle": {
+    "message": "Demandes d'autorisation d'envoi de notifications lors du chargement de page"
+  },
+  "lighthouse-core/audits/dobetterweb/notification-on-start.js | title": {
+    "message": "Aucune autorisation d'envoi de notifications n'est demandée au chargement de la page"
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | columnFailingElem": {
+    "message": "Éléments non conformes"
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | description": {
+    "message": "Empêcher la copie de contenu dans les champs de mot de passe nuit aux règles de sécurité. [En savoir plus](https://web.dev/password-inputs-can-be-pasted-into)"
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | failureTitle": {
+    "message": "La copie de contenu n'est pas autorisée dans les champs de mot de passe"
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | title": {
+    "message": "Autoriser les utilisateurs à copier un contenu dans les champs de mot de passe"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | columnProtocol": {
+    "message": "Protocole"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | description": {
+    "message": "Le protocole HTTP/2 offre de nombreux avantages par rapport à HTTP/1.1, comme les en-têtes binaires, le multiplexage et la fonctionnalité Push des serveurs. [En savoir plus](https://web.dev/uses-http2)"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 requête non traitée via le protocole HTTP/2}one{# requête non traitée via le protocole HTTP/2}other{# requêtes non traitées via le protocole HTTP/2}}"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | failureTitle": {
+    "message": "La page n'utilise pas le protocole HTTP/2 pour toutes ses ressources"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | title": {
+    "message": "La page utilise le protocole HTTP/2 pour ses propres ressources"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-passive-event-listeners.js | description": {
+    "message": "Envisagez de marquer vos écouteurs d'événements tactiles et à la molette comme `passive` pour améliorer les performances de défilement de votre page. [En savoir plus](https://web.dev/uses-passive-event-listeners)"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-passive-event-listeners.js | failureTitle": {
+    "message": "La page n'utilise pas d'écouteurs d'événements passifs pour améliorer les performances de défilement"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-passive-event-listeners.js | title": {
+    "message": "La page utilise des écouteurs d'événements passifs pour améliorer les performances de défilement"
+  },
+  "lighthouse-core/audits/errors-in-console.js | columnDesc": {
+    "message": "Description"
+  },
+  "lighthouse-core/audits/errors-in-console.js | description": {
+    "message": "Les erreurs enregistrées dans la console indiquent des problèmes non résolus. Ces derniers peuvent être dus à des requêtes réseau qui ont échoué et à d'autres problèmes du navigateur. [En savoir plus](https://web.dev/errors-in-console)"
+  },
+  "lighthouse-core/audits/errors-in-console.js | failureTitle": {
+    "message": "Les erreurs de navigateur ont été enregistrées dans la console"
+  },
+  "lighthouse-core/audits/errors-in-console.js | title": {
+    "message": "Aucune erreur de navigateur enregistrée dans la console"
+  },
+  "lighthouse-core/audits/font-display.js | description": {
+    "message": "Utilisez la fonction d'affichage de la police CSS afin que le texte soit visible par l'utilisateur pendant le chargement des polices Web. [En savoir plus](https://developers.google.com/web/updates/2016/02/font-display)"
+  },
+  "lighthouse-core/audits/font-display.js | failureTitle": {
+    "message": "Assurez-vous que le texte reste visible pendant le chargement des polices Web"
+  },
+  "lighthouse-core/audits/font-display.js | title": {
+    "message": "La totalité du texte reste visible pendant le chargement des polices Web"
+  },
+  "lighthouse-core/audits/font-display.js | undeclaredFontURLWarning": {
+    "message": "Lighthouse n'a pas pu vérifier automatiquement la valeur d'affichage de la police pour l'URL suivante : {fontURL}."
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | columnActual": {
+    "message": "Format (image réelle)"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | columnDisplayed": {
+    "message": "Format (image affichée)"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | description": {
+    "message": "Les dimensions d'affichage des images doivent correspondre au format naturel. [En savoir plus](https://web.dev/image-aspect-ratio)"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | failureTitle": {
+    "message": "Images affichées dans un format incorrect"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | title": {
+    "message": "Images affichées au bon format"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | warningCompute": {
+    "message": "Informations sur la taille d'image non valides {url}"
+  },
+  "lighthouse-core/audits/installable-manifest.js | description": {
+    "message": "Les utilisateurs peuvent être invités à ajouter votre application à leur écran d'accueil par le biais de leur navigateur. Cette fonctionnalité peut contribuer à une hausse de l'engagement. [Découvrez-en davantage](https://developers.google.com/web/tools/lighthouse/audits/install-prompt)."
+  },
+  "lighthouse-core/audits/installable-manifest.js | failureTitle": {
+    "message": "Le fichier manifeste de l'application Web ne respecte pas les conditions d'installation requises"
+  },
+  "lighthouse-core/audits/installable-manifest.js | title": {
+    "message": "Le fichier manifeste de l'application Web respecte les conditions d'installation requises"
+  },
+  "lighthouse-core/audits/is-on-https.js | columnInsecureURL": {
+    "message": "URL non sécurisée"
+  },
+  "lighthouse-core/audits/is-on-https.js | description": {
+    "message": "Tous les sites doivent être protégés par le protocole HTTPS, même ceux qui ne traitent pas de données sensibles. Le protocole HTTPS empêche les intrus de détourner ou d’écouter passivement les communications entre votre application et les utilisateurs. Il constitue également une condition préalable à l'utilisation de HTTP/2 et de nombreuses nouvelles API de plates-formes Web. [En savoir plus](https://web.dev/is-on-https)"
+  },
+  "lighthouse-core/audits/is-on-https.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 requête non sécurisée trouvée}one{# requête non sécurisée trouvée}other{# requêtes non sécurisées trouvées}}"
+  },
+  "lighthouse-core/audits/is-on-https.js | failureTitle": {
+    "message": "La page n'utilise pas le protocole HTTPS"
+  },
+  "lighthouse-core/audits/is-on-https.js | title": {
+    "message": "Requêtes HTTPS"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | description": {
+    "message": "Le chargement rapide des pages sur un réseau mobile garantit une expérience utilisateur de qualité. [En savoir plus](https://developers.google.com/web/tools/lighthouse/audits/fast-3g)"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | displayValueText": {
+    "message": "Page interactive en {timeInMs, number, seconds} s"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | displayValueTextWithOverride": {
+    "message": "Page devenue interactive sur un réseau mobile au bout de {timeInMs, number, seconds} s"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | explanationLoadSlow": {
+    "message": "Votre page se charge trop lentement. L'utilisateur ne peut pas interagir avec en moins de 10 secondes. Pour découvrir comment l'améliorer, consultez les conseils et les diagnostics de la section \"Performances\"."
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | failureTitle": {
+    "message": "Le chargement de la page n'est pas suffisamment rapide sur les réseaux mobiles"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | title": {
+    "message": "Le chargement de la page est suffisamment rapide sur les réseaux mobiles"
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | columnCategory": {
+    "message": "Catégorie"
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | description": {
+    "message": "Envisagez de réduire le temps consacré à l'analyse, la compilation et l'exécution de JavaScript. La livraison de charges utiles JavaScript plus petites peut vous aider."
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | failureTitle": {
+    "message": "Réduisez le travail du thread principal"
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | title": {
+    "message": "Réduire le travail du thread principal"
+  },
+  "lighthouse-core/audits/manual/pwa-cross-browser.js | description": {
+    "message": "Afin de toucher le plus grand nombre d'utilisateurs possible, les sites doivent fonctionner sur tous les principaux navigateurs. [Découvrez-en davantage](https://developers.google.com/web/progressive-web-apps/checklist#site-works-cross-browser)."
+  },
+  "lighthouse-core/audits/manual/pwa-cross-browser.js | title": {
+    "message": "Le site fonctionne sur différents navigateurs"
+  },
+  "lighthouse-core/audits/manual/pwa-each-page-has-url.js | description": {
+    "message": "Veillez à ce que les URL de vos pages puissent être utilisées dans des liens profonds. En outre, chaque URL doit être unique afin de pouvoir être correctement partagée sur les médias sociaux. [Découvrez-en davantage](https://developers.google.com/web/progressive-web-apps/checklist#each-page-has-a-url)."
+  },
+  "lighthouse-core/audits/manual/pwa-each-page-has-url.js | title": {
+    "message": "Chaque page a sa propre URL"
+  },
+  "lighthouse-core/audits/manual/pwa-page-transitions.js | description": {
+    "message": "La navigation sur les pages doit être rapide et fluide, même pour les utilisateurs avec une connexion lente. C'est un critère de performance fondamental. [Découvrez-en davantage](https://developers.google.com/web/progressive-web-apps/checklist#page-transitions-dont-feel-like-they-block-on-the-network)."
+  },
+  "lighthouse-core/audits/manual/pwa-page-transitions.js | title": {
+    "message": "La navigation entre les différentes pages du site doit être rapide et fluide"
+  },
+  "lighthouse-core/audits/metrics/estimated-input-latency.js | description": {
+    "message": "La valeur \"Estimated Input Latency\" est une estimation du temps en millisecondes que prend votre application pour réagir à l'intervention de l'utilisateur, pendant la fenêtre de pointe de 5 s de chargement de la page. Si le temps de latence est supérieur à 50 ms, les utilisateurs peuvent percevoir votre application comme étant lente. [En savoir plus](https://developers.google.com/web/tools/lighthouse/audits/estimated-input-latency)"
+  },
+  "lighthouse-core/audits/metrics/estimated-input-latency.js | title": {
+    "message": "Estimation du temps de latence avant intervention"
+  },
+  "lighthouse-core/audits/metrics/first-contentful-paint.js | description": {
+    "message": "La statistique \"First Contentful Paint\" indique le moment où le premier texte ou la première image sont affichés. [En savoir plus](https://developers.google.com/web/tools/lighthouse/audits/first-contentful-paint)"
+  },
+  "lighthouse-core/audits/metrics/first-contentful-paint.js | title": {
+    "message": "First Contentful Paint"
+  },
+  "lighthouse-core/audits/metrics/first-cpu-idle.js | description": {
+    "message": "La statistique \"First CPU Idle\" marque la première fois que le thread principal de la page est suffisamment silencieux pour gérer l'entrée. [En savoir plus](https://developers.google.com/web/tools/lighthouse/audits/first-interactive)"
+  },
+  "lighthouse-core/audits/metrics/first-cpu-idle.js | title": {
+    "message": "Premier processeur inactif"
+  },
+  "lighthouse-core/audits/metrics/first-meaningful-paint.js | description": {
+    "message": "La statistique \"First Meaningful Paint\" mesure quand le contenu principal d'une page est visible. [En savoir plus](https://developers.google.com/web/tools/lighthouse/audits/first-meaningful-paint)"
+  },
+  "lighthouse-core/audits/metrics/first-meaningful-paint.js | title": {
+    "message": "First Meaningful Paint"
+  },
+  "lighthouse-core/audits/metrics/interactive.js | description": {
+    "message": "La valeur \"Time to Interactive\" correspond au temps nécessaire pour que la page devienne entièrement interactive. [En savoir plus](https://developers.google.com/web/tools/lighthouse/audits/consistently-interactive)"
+  },
+  "lighthouse-core/audits/metrics/interactive.js | title": {
+    "message": "Délai avant interactivité"
+  },
+  "lighthouse-core/audits/metrics/max-potential-fid.js | description": {
+    "message": "Le retard maximal (Maximum Potential First Input Delay) auquel vos utilisateurs peuvent éventuellement être confrontés correspond à la durée, en millisecondes, de la tâche la plus longue. [En savoir plus](https://developers.google.com/web/updates/2018/05/first-input-delay)"
+  },
+  "lighthouse-core/audits/metrics/max-potential-fid.js | title": {
+    "message": "Max Potential First Input Delay"
+  },
+  "lighthouse-core/audits/metrics/speed-index.js | description": {
+    "message": "La valeur \"Speed Index\" indique la rapidité avec laquelle le contenu d'une page est disponible. [En savoir plus](https://developers.google.com/web/tools/lighthouse/audits/speed-index)"
+  },
+  "lighthouse-core/audits/metrics/speed-index.js | title": {
+    "message": "Indice de vitesse"
+  },
+  "lighthouse-core/audits/metrics/total-blocking-time.js | description": {
+    "message": "Somme en millisecondes de toutes les périodes entre le FCP et le délai avant interactivité, lorsque la durée de la tâche a dépassé 50 ms."
+  },
+  "lighthouse-core/audits/metrics/total-blocking-time.js | title": {
+    "message": "Total Blocking Time"
+  },
+  "lighthouse-core/audits/network-rtt.js | description": {
+    "message": "Les délais aller-retour (DAR) du réseau ont un impact important sur les performances. Si le DAR par rapport à un point d'origine est élevé, cela signifie que les performances des serveurs proches de l'utilisateur peuvent sans doute être améliorées. [En savoir plus](https://hpbn.co/primer-on-latency-and-bandwidth/)"
+  },
+  "lighthouse-core/audits/network-rtt.js | title": {
+    "message": "Délai aller-retour réseau"
+  },
+  "lighthouse-core/audits/network-server-latency.js | description": {
+    "message": "La latence du serveur peut avoir une incidence sur les performances Web. Si la latence serveur d'une origine est élevée, cela signifie que le serveur est en surcharge ou que ses performances backend sont médiocres. [En savoir plus](https://hpbn.co/primer-on-web-performance/#analyzing-the-resource-waterfall)"
+  },
+  "lighthouse-core/audits/network-server-latency.js | title": {
+    "message": "Latences du backend serveur"
+  },
+  "lighthouse-core/audits/offline-start-url.js | description": {
+    "message": "Les service workers garantissent le bon fonctionnement de votre application Web, indépendamment des aléas du réseau. [Découvrez-en davantage](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)."
+  },
+  "lighthouse-core/audits/offline-start-url.js | failureTitle": {
+    "message": "`start_url` ne retourne pas de code 200 en mode hors connexion"
+  },
+  "lighthouse-core/audits/offline-start-url.js | title": {
+    "message": "`start_url` retourne un code 200 en mode hors connexion"
+  },
+  "lighthouse-core/audits/offline-start-url.js | warningCantStart": {
+    "message": "Lighthouse ne parvient pas à lire l'attribut `start_url` du fichier manifeste et considère donc `start_url` comme étant l'URL du document. Message d'erreur : \"{manifestWarning}\"."
+  },
+  "lighthouse-core/audits/performance-budget.js | columnOverBudget": {
+    "message": "Au-dessus du budget"
+  },
+  "lighthouse-core/audits/performance-budget.js | description": {
+    "message": "Maintenez le volume et la taille des requêtes réseau sous les objectifs définis par le budget de performances fourni. [En savoir plus](https://developers.google.com/web/tools/lighthouse/audits/budgets)"
+  },
+  "lighthouse-core/audits/performance-budget.js | requestCountOverBudget": {
+    "message": "{count,plural, =1{1 requête}one{# requête}other{# requêtes}}"
+  },
+  "lighthouse-core/audits/performance-budget.js | title": {
+    "message": "Budget de performances"
+  },
+  "lighthouse-core/audits/redirects-http.js | description": {
+    "message": "Si vous avez déjà configuré le protocole HTTPS, veillez à rediriger tout le trafic HTTP vers HTTPS afin de proposer des fonctionnalités Web sûres à tous vos utilisateurs. [Découvrez-en davantage](https://developers.google.com/web/tools/lighthouse/audits/http-redirects-to-https)."
+  },
+  "lighthouse-core/audits/redirects-http.js | failureTitle": {
+    "message": "Ne redirige pas le trafic HTTP vers HTTPS"
+  },
+  "lighthouse-core/audits/redirects-http.js | title": {
+    "message": "Trafic HTTP redirigé vers HTTPS"
+  },
+  "lighthouse-core/audits/redirects.js | description": {
+    "message": "Les redirections entraînent des retards supplémentaires avant que la page ne puisse être chargée. [En savoir plus](https://developers.google.com/web/tools/lighthouse/audits/redirects)"
+  },
+  "lighthouse-core/audits/redirects.js | title": {
+    "message": "Évitez les redirections de page multiples"
+  },
+  "lighthouse-core/audits/resource-summary.js | description": {
+    "message": "Pour définir des budgets liés à la quantité et à la taille des ressources de pages, ajoutez un fichier budget.json. [En savoir plus](https://developers.google.com/web/tools/lighthouse/audits/budgets)"
+  },
+  "lighthouse-core/audits/resource-summary.js | displayValue": {
+    "message": "{requestCount,plural, =1{1 requête • {byteCount, number, bytes} Ko}one{# requête • {byteCount, number, bytes} Ko}other{# requêtes • {byteCount, number, bytes} Ko}}"
+  },
+  "lighthouse-core/audits/resource-summary.js | title": {
+    "message": "Réduisez au maximum le nombre de requêtes et la taille des transferts"
+  },
+  "lighthouse-core/audits/seo/canonical.js | description": {
+    "message": "Les liens canoniques suggèrent l'URL à afficher dans les résultats de recherche. [En savoir plus](https://web.dev/canonical)"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationConflict": {
+    "message": "Plusieurs URL en conflit ({urlList})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationDifferentDomain": {
+    "message": "L'URL mène à un autre domaine ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationInvalid": {
+    "message": "URL incorrecte ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationPointsElsewhere": {
+    "message": "URL qui mène à un autre emplacement `hreflang` ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationRelative": {
+    "message": "URL relative ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationRoot": {
+    "message": "Pointe vers l'URL racine du domaine (la page d'accueil), et non vers une page de contenu équivalente"
+  },
+  "lighthouse-core/audits/seo/canonical.js | failureTitle": {
+    "message": "L'attribut `rel=canonical` du document n'est pas valide"
+  },
+  "lighthouse-core/audits/seo/canonical.js | title": {
+    "message": "L'attribut `rel=canonical` du document est valide"
+  },
+  "lighthouse-core/audits/seo/font-size.js | description": {
+    "message": "Les tailles de police inférieures à 12 pixels sont trop petites pour être lisibles et nécessitent que les visiteurs sur la version mobile pincent l'écran pour zoomer et lire le texte. Veuillez utiliser une police de texte de plus de 12 pixels sur plus de 60 % du texte de la page. [En savoir plus](https://web.dev/font-size)"
+  },
+  "lighthouse-core/audits/seo/font-size.js | displayValue": {
+    "message": "{decimalProportion, number, extendedPercent} du texte lisibles"
+  },
+  "lighthouse-core/audits/seo/font-size.js | explanationViewport": {
+    "message": "Le texte est illisible, car aucune balise Meta de fenêtre d'affichage n'est optimisée pour les écrans mobiles."
+  },
+  "lighthouse-core/audits/seo/font-size.js | explanationWithDisclaimer": {
+    "message": "{decimalProportion, number, extendedPercent} du texte sont trop petits (d'après un échantillon de {decimalProportionVisited, number, extendedPercent})."
+  },
+  "lighthouse-core/audits/seo/font-size.js | failureTitle": {
+    "message": "Les tailles de police utilisées dans le document ne sont pas lisibles"
+  },
+  "lighthouse-core/audits/seo/font-size.js | title": {
+    "message": "Le document utilise des tailles de police lisibles"
+  },
+  "lighthouse-core/audits/seo/hreflang.js | description": {
+    "message": "Les liens hreflang indiquent aux moteurs de recherche la version de la page qu'ils doivent répertorier dans les résultats de recherche pour une page ou une région donnée. [En savoir plus](https://web.dev/hreflang)"
+  },
+  "lighthouse-core/audits/seo/hreflang.js | failureTitle": {
+    "message": "Le document ne contient pas d'attribut `hreflang` valide"
+  },
+  "lighthouse-core/audits/seo/hreflang.js | title": {
+    "message": "L'attribut `hreflang` du document est valide"
+  },
+  "lighthouse-core/audits/seo/http-status-code.js | description": {
+    "message": "Les pages renvoyant des codes d'état HTTP d'échec peuvent ne pas être indexées correctement. [En savoir plus](https://web.dev/http-status-code)"
+  },
+  "lighthouse-core/audits/seo/http-status-code.js | failureTitle": {
+    "message": "La page renvoie un code d'état HTTP d'échec"
+  },
+  "lighthouse-core/audits/seo/http-status-code.js | title": {
+    "message": "La page renvoie un code d'état HTTP de réussite"
+  },
+  "lighthouse-core/audits/seo/is-crawlable.js | description": {
+    "message": "Les moteurs de recherche ne peuvent pas inclure vos pages dans les résultats de recherche s'ils ne sont pas autorisés à les explorer. [En savoir plus](https://web.dev/is-crawable)"
+  },
+  "lighthouse-core/audits/seo/is-crawlable.js | failureTitle": {
+    "message": "L'indexation de la page est bloquée"
+  },
+  "lighthouse-core/audits/seo/is-crawlable.js | title": {
+    "message": "L'indexation de cette page n'est pas bloquée"
+  },
+  "lighthouse-core/audits/seo/link-text.js | description": {
+    "message": "Le texte descriptif d'un lien aide les moteurs de recherche à comprendre votre contenu. [En savoir plus](https://web.dev/link-text)"
+  },
+  "lighthouse-core/audits/seo/link-text.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 lien trouvé}one{# lien trouvé}other{# liens trouvés}}"
+  },
+  "lighthouse-core/audits/seo/link-text.js | failureTitle": {
+    "message": "Les liens ne contiennent pas de texte descriptif"
+  },
+  "lighthouse-core/audits/seo/link-text.js | title": {
+    "message": "Les liens contiennent un texte descriptif"
+  },
+  "lighthouse-core/audits/seo/manual/structured-data.js | description": {
+    "message": "Exécutez l'[outil de test des données structurées](https://search.google.com/structured-data/testing-tool/) et le [validateur Lint de données structurées](http://linter.structured-data.org/) pour valider les données structurées. [En savoir plus](https://web.dev/structured-data)"
+  },
+  "lighthouse-core/audits/seo/manual/structured-data.js | title": {
+    "message": "Les données structurées sont valides"
+  },
+  "lighthouse-core/audits/seo/meta-description.js | description": {
+    "message": "Les résultats de recherche peuvent inclure des attributs \"meta description\" pour résumer de façon concise le contenu de la page. [En savoir plus](https://web.dev/meta-description)"
+  },
+  "lighthouse-core/audits/seo/meta-description.js | explanation": {
+    "message": "Le texte de la description est vide."
+  },
+  "lighthouse-core/audits/seo/meta-description.js | failureTitle": {
+    "message": "Le document ne contient pas d'attribut \"meta description\""
+  },
+  "lighthouse-core/audits/seo/meta-description.js | title": {
+    "message": "Le document contient un attribut \"meta description\""
+  },
+  "lighthouse-core/audits/seo/plugins.js | description": {
+    "message": "Les moteurs de recherche ne peuvent pas indexer le contenu des plug-ins, et de nombreux appareils limitent l'utilisation de ces derniers, voire ne les acceptent pas. [En savoir plus](https://web.dev/plugins)"
+  },
+  "lighthouse-core/audits/seo/plugins.js | failureTitle": {
+    "message": "Le document utilise des plug-ins"
+  },
+  "lighthouse-core/audits/seo/plugins.js | title": {
+    "message": "Le document évite les plug-ins"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | description": {
+    "message": "Si votre fichier robots.txt n'est pas créé correctement, il se peut que les robots d'exploration ne puissent pas comprendre comment votre site Web doit être exploré ou indexé. [Découvrez-en davantage](https://web.dev/robots-txt)."
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | displayValueHttpBadCode": {
+    "message": "La requête pour le fichier robots.txt a renvoyé l'état HTTP {statusCode}"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | displayValueValidationError": {
+    "message": "{itemCount,plural, =1{1 erreur détectée}one{# erreur détectée}other{# erreurs détectées}}"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | explanation": {
+    "message": "Lighthouse n'est pas parvenu à télécharger le fichier robots.txt"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | failureTitle": {
+    "message": "Le fichier robots.txt n'est pas valide"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | title": {
+    "message": "Le fichier robots.txt est valide"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | description": {
+    "message": "Les éléments interactifs comme les boutons et les liens doivent être suffisamment larges (48 x 48 pixels) et avoir suffisamment d'espace autour d'eux pour que l'utilisateur puisse appuyer facilement dessus sans appuyer en même temps sur d'autres éléments. [En savoir plus](https://web.dev/tap-targets)"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | displayValue": {
+    "message": "{decimalProportion, number, percent} des éléments tactiles sont correctement dimensionnés"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | explanationViewportMetaNotOptimized": {
+    "message": "Les éléments tactiles sont trop petits, car aucune balise Meta de fenêtre d'affichage n'est optimisée pour les écrans mobiles"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | failureTitle": {
+    "message": "Les éléments tactiles ne sont pas dimensionnés correctement"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | overlappingTargetHeader": {
+    "message": "Cible en chevauchement"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | tapTargetHeader": {
+    "message": "Élément tactile"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | title": {
+    "message": "Les éléments tactiles sont dimensionnés correctement"
+  },
+  "lighthouse-core/audits/service-worker.js | description": {
+    "message": "Un service worker est une technologie qui permet à votre application d'exploiter de nombreuses fonctionnalités propres aux progressive web apps, comme le fonctionnement hors connexion, l'ajout à un écran d'accueil et les notifications push. [Découvrez-en davantage](https://developers.google.com/web/tools/lighthouse/audits/registered-service-worker)."
+  },
+  "lighthouse-core/audits/service-worker.js | explanationBadManifest": {
+    "message": "Un service worker contrôle cette page. Toutefois, aucun attribut `start_url` n'a été trouvé en raison d'un échec lors de l'analyse du fichier manifeste (JSON non valide)"
+  },
+  "lighthouse-core/audits/service-worker.js | explanationBadStartUrl": {
+    "message": "Un service worker contrôle cette page. Toutefois, l'attribut `start_url` ({startUrl}) est situé en dehors du champ d'application du service worker ({scopeUrl})"
+  },
+  "lighthouse-core/audits/service-worker.js | explanationNoManifest": {
+    "message": "Un service worker contrôle cette page. Toutefois, aucun attribut `start_url` n'a été trouvé, car le fichier manifeste n'a pas pu être récupéré."
+  },
+  "lighthouse-core/audits/service-worker.js | explanationOutOfScope": {
+    "message": "Plusieurs service workers existent pour cette origine. Toutefois, la page ({pageUrl}) est située en dehors du champ d'application."
+  },
+  "lighthouse-core/audits/service-worker.js | failureTitle": {
+    "message": "Aucun service worker de contrôle de la page et de `start_url` n'est enregistré"
+  },
+  "lighthouse-core/audits/service-worker.js | title": {
+    "message": "Un service worker de contrôle de la page et de `start_url` est enregistré"
+  },
+  "lighthouse-core/audits/splash-screen.js | description": {
+    "message": "Avec un écran d'accueil à thème, vous garantissez une expérience de qualité aux utilisateurs qui lancent votre application depuis leur écran d'accueil. [Découvrez-en davantage](https://developers.google.com/web/tools/lighthouse/audits/custom-splash-screen)."
+  },
+  "lighthouse-core/audits/splash-screen.js | failureTitle": {
+    "message": "Écran d'accueil personnalisé non disponible"
+  },
+  "lighthouse-core/audits/splash-screen.js | title": {
+    "message": "Écran d'accueil personnalisé disponible"
+  },
+  "lighthouse-core/audits/themed-omnibox.js | description": {
+    "message": "Vous pouvez définir un thème assorti à votre site pour la barre d'adresse du navigateur. [Découvrez-en davantage](https://developers.google.com/web/tools/lighthouse/audits/address-bar)."
+  },
+  "lighthouse-core/audits/themed-omnibox.js | failureTitle": {
+    "message": "Aucune couleur de thème n'est configurée pour la barre d'adresse."
+  },
+  "lighthouse-core/audits/themed-omnibox.js | title": {
+    "message": "Une couleur de thème est configurée pour la barre d'adresse."
+  },
+  "lighthouse-core/audits/third-party-summary.js | columnBlockingTime": {
+    "message": "Durée de blocage du thread principal"
+  },
+  "lighthouse-core/audits/third-party-summary.js | columnThirdParty": {
+    "message": "Tiers"
+  },
+  "lighthouse-core/audits/third-party-summary.js | description": {
+    "message": "Le code tiers peut affecter considérablement les performances de chargement des pages. Limitez le nombre de fournisseurs tiers redondants, et essayez de charger du code tiers une fois le chargement de votre page terminé. [En savoir plus](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/loading-third-party-javascript/)"
+  },
+  "lighthouse-core/audits/third-party-summary.js | displayValue": {
+    "message": "Le thread principal a été bloqué par du code tiers pendant {timeInMs, number, milliseconds} ms"
+  },
+  "lighthouse-core/audits/third-party-summary.js | failureTitle": {
+    "message": "Réduire l'impact du code tiers"
+  },
+  "lighthouse-core/audits/third-party-summary.js | title": {
+    "message": "Code tiers"
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | description": {
+    "message": "La valeur \"Time To First Byte\" identifie l'heure à laquelle votre serveur envoie une réponse. [En savoir plus](https://developers.google.com/web/tools/lighthouse/audits/ttfb)"
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | displayValue": {
+    "message": "Le document racine a pris {timeInMs, number, milliseconds} ms"
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | failureTitle": {
+    "message": "Réduisez les délais de réponse du serveur (TTFB)"
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | title": {
+    "message": "Les délais de réponse du serveur sont faibles (TTFB)"
+  },
+  "lighthouse-core/audits/user-timings.js | columnDuration": {
+    "message": "Durée"
+  },
+  "lighthouse-core/audits/user-timings.js | columnStartTime": {
+    "message": "Heure de début"
+  },
+  "lighthouse-core/audits/user-timings.js | columnType": {
+    "message": "Type"
+  },
+  "lighthouse-core/audits/user-timings.js | description": {
+    "message": "Envisagez de doter votre application de l'API User Timing pour mesurer ses performances réelles lors d'expériences utilisateur clés. [En savoir plus](https://developers.google.com/web/tools/lighthouse/audits/user-timing)"
+  },
+  "lighthouse-core/audits/user-timings.js | displayValue": {
+    "message": "{itemCount,plural, =1{[=1]1 temps utilisateur}one{# temps utilisateur}other{# temps utilisateur}}"
+  },
+  "lighthouse-core/audits/user-timings.js | title": {
+    "message": "Marques et mesures du temps utilisateur"
+  },
+  "lighthouse-core/audits/uses-rel-preconnect.js | crossoriginWarning": {
+    "message": "Un élément <link> de pré-connexion a été trouvé pour \"{securityOrigin}\", mais il n'a pas été utilisé par le navigateur. Vérifiez que vous utilisez correctement l'attribut \"`crossorigin`\"."
+  },
+  "lighthouse-core/audits/uses-rel-preconnect.js | description": {
+    "message": "Envisagez d'ajouter les indices de ressources `preconnect` ou `dns-prefetch` pour établir les premières connexions avec des origines tierces importantes. [Découvrez-en davantage](https://developers.google.com/web/fundamentals/performance/resource-prioritization#preconnect)."
+  },
+  "lighthouse-core/audits/uses-rel-preconnect.js | title": {
+    "message": "Connectez-vous à l'avance aux origines souhaitées"
+  },
+  "lighthouse-core/audits/uses-rel-preload.js | crossoriginWarning": {
+    "message": "Une balise <link> de préchargement a été détectée pour \"{preloadURL}\", mais n'a pas été utilisée par le navigateur. Vérifiez que vous utilisez correctement l'attribut \"`crossorigin`\"."
+  },
+  "lighthouse-core/audits/uses-rel-preload.js | description": {
+    "message": "Envisagez d'utiliser `<link rel=preload>` pour hiérarchiser la récupération des ressources actuellement requises pour le chargement ultérieur de la page. [En savoir plus](https://developers.google.com/web/tools/lighthouse/audits/preload)"
+  },
+  "lighthouse-core/audits/uses-rel-preload.js | title": {
+    "message": "Préchargez les demandes clés"
+  },
+  "lighthouse-core/audits/viewport.js | description": {
+    "message": "Ajoutez une balise `<meta name=\"viewport\">` afin d'optimiser votre application pour les écrans mobiles. [Découvrez-en davantage](https://developers.google.com/web/tools/lighthouse/audits/has-viewport-meta-tag)."
+  },
+  "lighthouse-core/audits/viewport.js | explanationNoTag": {
+    "message": "Aucune balise `<meta name=\"viewport\">` trouvée"
+  },
+  "lighthouse-core/audits/viewport.js | failureTitle": {
+    "message": "Aucune balise `<meta name=\"viewport\">` ayant l'attribut `width` ou `initial-scale` n'est configurée"
+  },
+  "lighthouse-core/audits/viewport.js | title": {
+    "message": "Une balise `<meta name=\"viewport\">` ayant l'attribut `width` ou `initial-scale` est configurée"
+  },
+  "lighthouse-core/audits/without-javascript.js | description": {
+    "message": "Nous vous recommandons d'afficher du contenu même lorsque JavaScript est indisponible. Il peut s'agir d'un simple avertissement informant l'utilisateur que JavaScript est requis pour utiliser votre application. [Découvrez-en davantage](https://developers.google.com/web/tools/lighthouse/audits/no-js)."
+  },
+  "lighthouse-core/audits/without-javascript.js | explanation": {
+    "message": "Il est recommandé d'afficher du contenu dans le corps de la page lorsque les scripts sont indisponibles."
+  },
+  "lighthouse-core/audits/without-javascript.js | failureTitle": {
+    "message": "Aucun contenu de remplacement ne s'affiche lorsque JavaScript est indisponible"
+  },
+  "lighthouse-core/audits/without-javascript.js | title": {
+    "message": "Du contenu s'affiche lorsque JavaScript est indisponible"
+  },
+  "lighthouse-core/audits/works-offline.js | description": {
+    "message": "Si vous développez une progressive web app, envisagez d'utiliser un service worker afin que votre application soit accessible hors connexion. [Découvrez-en davantage](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)."
+  },
+  "lighthouse-core/audits/works-offline.js | failureTitle": {
+    "message": "La page actuelle ne retourne pas de code 200 en mode hors connexion"
+  },
+  "lighthouse-core/audits/works-offline.js | title": {
+    "message": "La page actuelle retourne un code 200 en mode hors connexion"
+  },
+  "lighthouse-core/audits/works-offline.js | warningNoLoad": {
+    "message": "Il est possible que cette page ne se charge pas hors connexion, car votre URL de test ({requested}) redirige vers \"{final}\". Testez directement la seconde URL."
+  },
+  "lighthouse-core/config/default-config.js | a11yAriaGroupDescription": {
+    "message": "Servez-vous de ces indications pour améliorer l'utilisation des éléments ARIA dans votre application et ainsi optimiser l'expérience des utilisateurs de technologies d'assistance, comme les lecteurs d'écran."
+  },
+  "lighthouse-core/config/default-config.js | a11yAriaGroupTitle": {
+    "message": "ARIA"
+  },
+  "lighthouse-core/config/default-config.js | a11yAudioVideoGroupDescription": {
+    "message": "Servez-vous de ces indications pour fournir un contenu alternatif pour l'audio et la vidéo. Vous pourrez ainsi améliorer l'expérience des utilisateurs malvoyants ou malentendants."
+  },
+  "lighthouse-core/config/default-config.js | a11yAudioVideoGroupTitle": {
+    "message": "Audio et vidéo"
+  },
+  "lighthouse-core/config/default-config.js | a11yBestPracticesGroupDescription": {
+    "message": "Ces indications présentent les bonnes pratiques courantes en matière d'accessibilité."
+  },
+  "lighthouse-core/config/default-config.js | a11yBestPracticesGroupTitle": {
+    "message": "Bonnes pratiques"
+  },
+  "lighthouse-core/config/default-config.js | a11yCategoryDescription": {
+    "message": "Ces vérifications permettent de connaître les possibilités d'[amélioration de l'accessibilité de vos applications Web](https://developers.google.com/web/fundamentals/accessibility). Seule une partie des problèmes d'accessibilité peut être détectée automatiquement. Il est donc conseillé d'effectuer un test manuel."
+  },
+  "lighthouse-core/config/default-config.js | a11yCategoryManualDescription": {
+    "message": "Ces éléments concernent des zones qu'un outil de test automatique ne peut pas couvrir. Consultez notre guide sur la [réalisation d'un examen d'accessibilité](https://developers.google.com/web/fundamentals/accessibility/how-to-review)."
+  },
+  "lighthouse-core/config/default-config.js | a11yCategoryTitle": {
+    "message": "Accessibilité"
+  },
+  "lighthouse-core/config/default-config.js | a11yColorContrastGroupDescription": {
+    "message": "Servez-vous de ces indications pour améliorer la lisibilité de votre contenu."
+  },
+  "lighthouse-core/config/default-config.js | a11yColorContrastGroupTitle": {
+    "message": "Contraste"
+  },
+  "lighthouse-core/config/default-config.js | a11yLanguageGroupDescription": {
+    "message": "Servez-vous de ces indications pour améliorer l'interprétation de votre contenu en fonction des différents paramètres régionaux choisis par les utilisateurs."
+  },
+  "lighthouse-core/config/default-config.js | a11yLanguageGroupTitle": {
+    "message": "Internationalisation et localisation"
+  },
+  "lighthouse-core/config/default-config.js | a11yNamesLabelsGroupDescription": {
+    "message": "Servez-vous de ces indications pour améliorer la sémantique des éléments de contrôle de votre application. Vous optimiserez ainsi l'expérience des utilisateurs de technologies d'assistance, comme les lecteurs d'écran."
+  },
+  "lighthouse-core/config/default-config.js | a11yNamesLabelsGroupTitle": {
+    "message": "Noms et étiquettes"
+  },
+  "lighthouse-core/config/default-config.js | a11yNavigationGroupDescription": {
+    "message": "Servez-vous de ces indications pour améliorer la navigation au clavier de votre application."
+  },
+  "lighthouse-core/config/default-config.js | a11yNavigationGroupTitle": {
+    "message": "Navigation"
+  },
+  "lighthouse-core/config/default-config.js | a11yTablesListsVideoGroupDescription": {
+    "message": "Servez-vous de ces indications pour améliorer l'expérience de lecture des listes ou tableaux de données en utilisant une technologie d'assistance, comme un lecteur d'écran."
+  },
+  "lighthouse-core/config/default-config.js | a11yTablesListsVideoGroupTitle": {
+    "message": "Tableaux et listes"
+  },
+  "lighthouse-core/config/default-config.js | bestPracticesCategoryTitle": {
+    "message": "Bonnes pratiques"
+  },
+  "lighthouse-core/config/default-config.js | budgetsGroupDescription": {
+    "message": "Les budgets de performances établissent des normes sur les performances de votre site."
+  },
+  "lighthouse-core/config/default-config.js | budgetsGroupTitle": {
+    "message": "Au niveau des budgets"
+  },
+  "lighthouse-core/config/default-config.js | diagnosticsGroupDescription": {
+    "message": "Plus d'informations sur les performances de votre application. Ces chiffres n'ont pas d'[incidence directe](https://github.com/GoogleChrome/lighthouse/blob/d2ec9ffbb21de9ad1a0f86ed24575eda32c796f0/docs/scoring.md#how-are-the-scores-weighted) sur le score lié aux performances."
+  },
+  "lighthouse-core/config/default-config.js | diagnosticsGroupTitle": {
+    "message": "Diagnostic"
+  },
+  "lighthouse-core/config/default-config.js | firstPaintImprovementsGroupDescription": {
+    "message": "L'aspect le plus essentiel des performances est la rapidité avec laquelle les pixels sont affichés à l'écran. Statistiques clés : First Contentful Paint, First Meaningful Paint"
+  },
+  "lighthouse-core/config/default-config.js | firstPaintImprovementsGroupTitle": {
+    "message": "Amélioration de First Paint"
+  },
+  "lighthouse-core/config/default-config.js | loadOpportunitiesGroupDescription": {
+    "message": "Ces suggestions peuvent contribuer à charger votre page plus rapidement. En revanche, elles n'ont pas d'[incidence directe](https://github.com/GoogleChrome/lighthouse/blob/d2ec9ffbb21de9ad1a0f86ed24575eda32c796f0/docs/scoring.md#how-are-the-scores-weighted) sur le score lié aux performances."
+  },
+  "lighthouse-core/config/default-config.js | loadOpportunitiesGroupTitle": {
+    "message": "Opportunités"
+  },
+  "lighthouse-core/config/default-config.js | metricGroupTitle": {
+    "message": "Statistiques"
+  },
+  "lighthouse-core/config/default-config.js | overallImprovementsGroupDescription": {
+    "message": "Améliorez l'expérience globale de chargement, afin que la page soit réactive et disponible dès que possible. Statistiques clés : délai avant interactivité, indice de vitesse"
+  },
+  "lighthouse-core/config/default-config.js | overallImprovementsGroupTitle": {
+    "message": "Améliorations générales"
+  },
+  "lighthouse-core/config/default-config.js | performanceCategoryTitle": {
+    "message": "Performances"
+  },
+  "lighthouse-core/config/default-config.js | pwaCategoryDescription": {
+    "message": "Ces contrôles permettent de vérifier que les conditions requises pour les progressive web apps sont remplies. [Découvrez-en davantage](https://developers.google.com/web/progressive-web-apps/checklist)."
+  },
+  "lighthouse-core/config/default-config.js | pwaCategoryManualDescription": {
+    "message": "Ces contrôles font partie des [vérifications de base de la checklist PWA](https://developers.google.com/web/progressive-web-apps/checklist), mais ne sont pas exécutés automatiquement par Lighthouse. Même s'ils n'ont pas d'influence sur votre score, il est important de les effectuer manuellement."
+  },
+  "lighthouse-core/config/default-config.js | pwaCategoryTitle": {
+    "message": "Progressive web app"
+  },
+  "lighthouse-core/config/default-config.js | pwaFastReliableGroupTitle": {
+    "message": "Rapide et fiable"
+  },
+  "lighthouse-core/config/default-config.js | pwaInstallableGroupTitle": {
+    "message": "Possibilités d'installation"
+  },
+  "lighthouse-core/config/default-config.js | pwaOptimizedGroupTitle": {
+    "message": "Optimisation PWA"
+  },
+  "lighthouse-core/config/default-config.js | seoCategoryDescription": {
+    "message": "Ces vérifications vous permettent de vous assurer que votre page est optimisée pour le classement dans les résultats sur les moteurs de recherche. Lighthouse ne vérifie pas certains facteurs supplémentaires susceptibles d'avoir un impact sur votre classement dans les moteurs de recherche. [En savoir plus](https://support.google.com/webmasters/answer/35769)"
+  },
+  "lighthouse-core/config/default-config.js | seoCategoryManualDescription": {
+    "message": "Exécutez ces outils de validation supplémentaires sur votre site pour vérifier les bonnes pratiques de SEO complémentaires."
+  },
+  "lighthouse-core/config/default-config.js | seoCategoryTitle": {
+    "message": "SEO"
+  },
+  "lighthouse-core/config/default-config.js | seoContentGroupDescription": {
+    "message": "Rédigez votre code HTML de sorte à autoriser les robots d'exploration à analyser le contenu de votre application."
+  },
+  "lighthouse-core/config/default-config.js | seoContentGroupTitle": {
+    "message": "Bonnes pratiques relatives au contenu"
+  },
+  "lighthouse-core/config/default-config.js | seoCrawlingGroupDescription": {
+    "message": "Pour que votre contenu apparaisse dans les résultats de recherche, les robots d'exploration doivent accéder à votre application."
+  },
+  "lighthouse-core/config/default-config.js | seoCrawlingGroupTitle": {
+    "message": "Exploration et indexation"
+  },
+  "lighthouse-core/config/default-config.js | seoMobileGroupDescription": {
+    "message": "Assurez-vous que vos pages sont adaptées aux mobiles, afin que les utilisateurs n'aient pas besoin de pincer l'écran ni de zoomer pour lire votre contenu. [En savoir plus](https://developers.google.com/search/mobile-sites/)"
+  },
+  "lighthouse-core/config/default-config.js | seoMobileGroupTitle": {
+    "message": "Adapté aux mobiles"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnCacheTTL": {
+    "message": "Cache de la valeur TTL"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnLocation": {
+    "message": "Emplacement"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnName": {
+    "message": "Nom"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnRequests": {
+    "message": "Requêtes"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnResourceType": {
+    "message": "Type de ressource"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnSize": {
+    "message": "Taille"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnTimeSpent": {
+    "message": "Temps passé"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnTransferSize": {
+    "message": "Taille de transfert"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnURL": {
+    "message": "URL"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnWastedBytes": {
+    "message": "Économies potentielles"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnWastedMs": {
+    "message": "Économies potentielles"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | displayValueByteSavings": {
+    "message": "Économies potentielles de {wastedBytes, number, bytes} Ko"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | displayValueMsSavings": {
+    "message": "Économies potentielles de {wastedMs, number, milliseconds} ms"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | documentResourceType": {
+    "message": "Document"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | fontResourceType": {
+    "message": "Police de caractères"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | imageResourceType": {
+    "message": "Image"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | mediaResourceType": {
+    "message": "Contenu multimédia"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | ms": {
+    "message": "{timeInMs, number, milliseconds} ms"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | otherResourceType": {
+    "message": "Autre"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | scriptResourceType": {
+    "message": "Script"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | seconds": {
+    "message": "{timeInMs, number, seconds} s"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | stylesheetResourceType": {
+    "message": "Feuille de style"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | thirdPartyResourceType": {
+    "message": "Tiers"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | totalResourceType": {
+    "message": "Total"
+  },
+  "lighthouse-core/lib/lh-error.js | badTraceRecording": {
+    "message": "Un problème est survenu lors de l'enregistrement de la trace du chargement de votre page. Veuillez relancer Lighthouse. ({errorCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | criTimeout": {
+    "message": "Expiration du délai pendant la tentative de connexion initiale du protocole du débogueur."
+  },
+  "lighthouse-core/lib/lh-error.js | didntCollectScreenshots": {
+    "message": "Chrome n'a collecté aucune capture d'écran pendant le chargement de la page. Veuillez vous assurer que du contenu est visible sur la page, puis essayez de relancer Lighthouse. ({errorCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | dnsFailure": {
+    "message": "Les serveurs DNS n'ont pas pu résoudre le domaine fourni."
+  },
+  "lighthouse-core/lib/lh-error.js | erroredRequiredArtifact": {
+    "message": "Une erreur s'est produite lors de la collecte de la ressource {artifactName} requise : {errorMessage}"
+  },
+  "lighthouse-core/lib/lh-error.js | internalChromeError": {
+    "message": "Une erreur Chrome interne s'est produite. Veuillez redémarrer Chrome et essayer de relancer Lighthouse."
+  },
+  "lighthouse-core/lib/lh-error.js | missingRequiredArtifact": {
+    "message": "La ressource {artifactName} nécessaire n'a pas été collectée."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailed": {
+    "message": "Lighthouse n'a pas pu charger correctement la page que vous avez demandée. Assurez-vous de tester la bonne URL et vérifiez que le serveur répond correctement à toutes les requêtes."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedHung": {
+    "message": "Lighthouse n'a pas pu charger correctement l'URL que vous avez demandée, car la page a cessé de répondre."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedInsecure": {
+    "message": "L'URL que vous avez fournie n'est pas associée à un certificat de sécurité valide. {securityMessages}"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedInterstitial": {
+    "message": "Le chargement de la page dans Chrome a été bloqué et remplacé par un écran interstitiel. Assurez-vous de tester la bonne URL et vérifiez que le serveur répond correctement à toutes les requêtes."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedWithDetails": {
+    "message": "Lighthouse n'a pas pu charger correctement la page que vous avez demandée. Assurez-vous de tester la bonne URL et vérifiez que le serveur répond correctement à toutes les requêtes. (Détails : {errorDetails})"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedWithStatusCode": {
+    "message": "Lighthouse n'a pas pu charger correctement la page que vous avez demandée. Assurez-vous de tester la bonne URL et vérifiez que le serveur répond correctement à toutes les requêtes. (Code d'état : {statusCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadTookTooLong": {
+    "message": "Le chargement de la page a pris trop de temps. Veuillez suivre les indications du rapport pour réduire le temps de chargement de la page, puis essayez de relancer Lighthouse. ({errorCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | protocolTimeout": {
+    "message": "Le délai d'attente de la réponse du protocole DevTools est arrivé à expiration. (Méthode : {protocolMethod})"
+  },
+  "lighthouse-core/lib/lh-error.js | requestContentTimeout": {
+    "message": "Le délai alloué à la récupération des ressources a été atteint"
+  },
+  "lighthouse-core/lib/lh-error.js | urlInvalid": {
+    "message": "L'URL que vous avez fournie ne semble pas valide."
+  },
+  "lighthouse-core/report/html/renderer/util.js | auditGroupExpandTooltip": {
+    "message": "Afficher les audits"
+  },
+  "lighthouse-core/report/html/renderer/util.js | crcInitialNavigation": {
+    "message": "Navigation initiale"
+  },
+  "lighthouse-core/report/html/renderer/util.js | crcLongestDurationLabel": {
+    "message": "Latence de chemin d'accès critique maximale :"
+  },
+  "lighthouse-core/report/html/renderer/util.js | errorLabel": {
+    "message": "Erreur"
+  },
+  "lighthouse-core/report/html/renderer/util.js | errorMissingAuditInfo": {
+    "message": "Erreur de rapport : pas d'information d'audit"
+  },
+  "lighthouse-core/report/html/renderer/util.js | labDataTitle": {
+    "message": "Données de test"
+  },
+  "lighthouse-core/report/html/renderer/util.js | lsPerformanceCategoryDescription": {
+    "message": "Analyse [Lighthouse](https://developers.google.com/web/tools/lighthouse/) de la page actuelle sur un réseau mobile émulé. Les valeurs sont estimées et peuvent varier."
+  },
+  "lighthouse-core/report/html/renderer/util.js | manualAuditsGroupTitle": {
+    "message": "Autres éléments à vérifier manuellement"
+  },
+  "lighthouse-core/report/html/renderer/util.js | notApplicableAuditsGroupTitle": {
+    "message": "Non applicable"
+  },
+  "lighthouse-core/report/html/renderer/util.js | opportunityResourceColumnLabel": {
+    "message": "Opportunité"
+  },
+  "lighthouse-core/report/html/renderer/util.js | opportunitySavingsColumnLabel": {
+    "message": "Estimation des économies"
+  },
+  "lighthouse-core/report/html/renderer/util.js | passedAuditsGroupTitle": {
+    "message": "Audits réussis"
+  },
+  "lighthouse-core/report/html/renderer/util.js | snippetCollapseButtonLabel": {
+    "message": "Réduire l'extrait"
+  },
+  "lighthouse-core/report/html/renderer/util.js | snippetExpandButtonLabel": {
+    "message": "Développer l'extrait"
+  },
+  "lighthouse-core/report/html/renderer/util.js | thirdPartyResourcesLabel": {
+    "message": "Afficher les ressources tierces"
+  },
+  "lighthouse-core/report/html/renderer/util.js | toplevelWarningsMessage": {
+    "message": "Cette exécution de Lighthouse a rencontré des problèmes :"
+  },
+  "lighthouse-core/report/html/renderer/util.js | varianceDisclaimer": {
+    "message": "Les valeurs sont estimées et peuvent varier. Le score lié aux performances [ne repose que sur ces statistiques](https://github.com/GoogleChrome/lighthouse/blob/d2ec9ffbb21de9ad1a0f86ed24575eda32c796f0/docs/scoring.md#how-are-the-scores-weighted)."
+  },
+  "lighthouse-core/report/html/renderer/util.js | warningAuditsGroupTitle": {
+    "message": "Réussite des audits, mais avec des avertissements"
+  },
+  "lighthouse-core/report/html/renderer/util.js | warningHeader": {
+    "message": "Avertissements : "
+  },
+  "stack-packs/packs/wordpress.js | efficient_animated_content": {
+    "message": "Vous pouvez envisager d'importer votre GIF dans un service qui permettra de l'intégrer dans une vidéo HTML5."
+  },
+  "stack-packs/packs/wordpress.js | offscreen_images": {
+    "message": "Installez un [plug-in WordPress de chargement différé](https://wordpress.org/plugins/search/lazy+load/) pour différer le chargement des images qui ne sont pas à l'écran, ou remplacez le thème par un autre qui offre cette fonctionnalité. Vous pouvez également envisager d'utiliser [le plug-in AMP](https://wordpress.org/plugins/amp/)."
+  },
+  "stack-packs/packs/wordpress.js | render_blocking_resources": {
+    "message": "Divers plug-ins WordPress peuvent vous aider à [aligner des éléments critiques](https://wordpress.org/plugins/search/critical+css/) ou à [différer le chargement des ressources moins importantes](https://wordpress.org/plugins/search/defer+css+javascript/). Gardez en tête qu'à cause des optimisations fournies par ces plug-ins, certaines fonctionnalités de votre thème ou de vos plug-ins peuvent cesser de fonctionner. Vous devrez donc probablement modifier le code."
+  },
+  "stack-packs/packs/wordpress.js | time_to_first_byte": {
+    "message": "Les thèmes, les plug-ins et les spécifications du serveur sont autant d'éléments qui influent sur le temps de réponse du serveur. Vous pouvez envisager d'utiliser un thème plus optimisé ou un plug-in d'optimisation plus performant, ou bien de mettre à niveau votre serveur."
+  },
+  "stack-packs/packs/wordpress.js | total_byte_weight": {
+    "message": "Vous pouvez envisager d'afficher des extraits dans vos listes d'articles (par exemple en utilisant la balise \"more\"), de réduire le nombre d'articles affichés dans une page donnée, de répartir vos articles longs sur plusieurs pages ou d'utiliser un plug-in qui charge de façon différée les commentaires."
+  },
+  "stack-packs/packs/wordpress.js | unminified_css": {
+    "message": "Un certain nombre de [plug-ins WordPress](https://wordpress.org/plugins/search/minify+css/) peuvent accélérer l'affichage de votre site en concaténant, en minimisant et en compressant vos styles. Si possible, utilisez un processus de build pour réaliser cette minimisation en amont."
+  },
+  "stack-packs/packs/wordpress.js | unminified_javascript": {
+    "message": "Un certain nombre de [plug-ins WordPress](https://wordpress.org/plugins/search/minify+javascript/) peuvent accélérer l'affichage de votre site en concaténant, en minimisant et en compressant vos scripts. Si possible, utilisez un processus de build pour réaliser cette minimisation en amont."
+  },
+  "stack-packs/packs/wordpress.js | unused_css_rules": {
+    "message": "Vous pouvez envisager de réduire le nombre de [plug-ins WordPress](https://wordpress.org/plugins/) qui chargent des feuilles de style CSS inutilisées dans votre page, ou désactiver certains de ces plug-ins. Pour déterminer les plug-ins qui ajoutent des feuilles de style CSS superflues, exécutez une [couverture de code](https://developers.google.com/web/updates/2017/04/devtools-release-notes#coverage) dans Chrome DevTools. Vous pouvez identifier le thème ou le plug-in responsable à partir de l'URL de la feuille de style. Recherchez les plug-ins pour lesquels un grand nombre de feuilles de style présentent beaucoup d'éléments en rouge dans la couverture de code. Un plug-in ne doit mettre une feuille de style en file d'attente que si elle est effectivement utilisée dans la page."
+  },
+  "stack-packs/packs/wordpress.js | unused_javascript": {
+    "message": "Vous pouvez envisager de réduire le nombre de [plug-ins WordPress](https://wordpress.org/plugins/) qui chargent des scripts JavaScript inutilisés dans votre page, ou désactiver certains de ces plug-ins. Pour déterminer les plug-ins qui ajoutent des scripts JavaScript superflus, exécutez une [couverture de code](https://developers.google.com/web/updates/2017/04/devtools-release-notes#coverage) dans Chrome DevTools. Vous pouvez identifier le thème ou le plug-in responsable à partir de l'URL du script. Recherchez les plug-ins pour lesquels un grand nombre de scripts présentent beaucoup d'éléments en rouge dans la couverture de code. Un plug-in ne doit mettre un script en file d'attente que s'il est effectivement utilisé dans la page."
+  },
+  "stack-packs/packs/wordpress.js | uses_long_cache_ttl": {
+    "message": "En savoir plus sur la [mise en cache dans le navigateur dans WordPress](https://codex.wordpress.org/WordPress_Optimization#Browser_Caching)"
+  },
+  "stack-packs/packs/wordpress.js | uses_optimized_images": {
+    "message": "Vous pouvez envisager d'utiliser un [plug-in WordPress d'optimisation d'image](https://wordpress.org/plugins/search/optimize+images/) pour compresser vos images sans dégrader leur qualité."
+  },
+  "stack-packs/packs/wordpress.js | uses_responsive_images": {
+    "message": "Importez des images directement via la [bibliothèque multimédia](https://codex.wordpress.org/Media_Library_Screen) pour vous assurer que les tailles d'images requises sont disponibles. Ensuite, insérez-les depuis la bibliothèque multimédia ou utilisez le widget d'image pour vous assurer que les tailles d'images optimales sont utilisées (y compris celles pour les points d'arrêt réactifs). Évitez d'utiliser les images `Full Size`, sauf si les dimensions sont adéquates pour l'utilisation prévue. [En savoir plus](https://codex.wordpress.org/Inserting_Images_into_Posts_and_Pages#Image_Size)"
+  },
+  "stack-packs/packs/wordpress.js | uses_text_compression": {
+    "message": "Vous pouvez activer la compression du texte dans la configuration de votre serveur Web."
+  },
+  "stack-packs/packs/wordpress.js | uses_webp_images": {
+    "message": "Vous pouvez envisager d'utiliser un [plug-in](https://wordpress.org/plugins/search/convert+webp/) ou un service qui convertit automatiquement les images que vous importez dans un format optimal."
+  }
+}
diff --git a/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/he.json b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/he.json
new file mode 100644
index 0000000..cbf8d00
--- /dev/null
+++ b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/he.json
@@ -0,0 +1,1541 @@
+{
+  "lighthouse-core/audits/accessibility/accesskeys.js | description": {
+    "message": "מקשי גישה מאפשרים למשתמשים להתמקד במהירות בחלק מסוים בדף. כדי לאפשר ניווט תקין, כל מקש גישה צריך להיות ייחודי. [מידע נוסף](https://web.dev/accesskeys/)."
+  },
+  "lighthouse-core/audits/accessibility/accesskeys.js | failureTitle": {
+    "message": "יש ערכי `[accesskey]` שאינם ייחודיים"
+  },
+  "lighthouse-core/audits/accessibility/accesskeys.js | title": {
+    "message": "`[accesskey]` הערכים ייחודיים"
+  },
+  "lighthouse-core/audits/accessibility/aria-allowed-attr.js | description": {
+    "message": "כל ARIA `role` תומכת בקבוצת משנה ספציפית של `aria-*` מאפיינים. חוסר התאמה בין המאפיינים הופך אותם `aria-*` ללא חוקיים. [מידע נוסף](https://web.dev/aria-allowed-attr/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-allowed-attr.js | failureTitle": {
+    "message": "יש מאפייני `[aria-*]` שלא תואמים לתפקידים שלהם"
+  },
+  "lighthouse-core/audits/accessibility/aria-allowed-attr.js | title": {
+    "message": "מאפייני ה-`[aria-*]`‎ תואמים לתפקידים שלהם"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-attr.js | description": {
+    "message": "חלק מתפקידי ה-ARIA כוללים מאפיינים נדרשים שמתארים לקוראי המסך את מצב הרכיב. [מידע נוסף](https://web.dev/aria-required-attr/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-required-attr.js | failureTitle": {
+    "message": "יש רכיבים מסוג `[role]` שאין להם את כל מאפייני ה-`[aria-*]` הנדרשים"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-attr.js | title": {
+    "message": "לכל הרכיבים מסוג `[role]` יש את כל מאפייני ה-`[aria-*]` הדרושים"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-children.js | description": {
+    "message": "תפקידי הורה מסוימים של ARIA צריכים לכלול תפקידי צאצא ספציפיים כדי לבצע את פונקציות הנגישות שלהם. [מידע נוסף](https://web.dev/aria-required-children/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-required-children.js | failureTitle": {
+    "message": "חסרים רכיבים עם `[role]` שדורשים רכיבי צאצא ספציפיים של `[role]`."
+  },
+  "lighthouse-core/audits/accessibility/aria-required-children.js | title": {
+    "message": "קיימים רכיבים עם `[role]` שדורשים רכיבי צאצא ספציפיים של `[role]`"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-parent.js | description": {
+    "message": "חלק מתפקידי הצאצא מסוג ARIA חייבים להיכלל בין תפקידי הורה ספציפיים כדי למלא באופן תקין את פונקציות הנגישות שלהם. [מידע נוסף](https://web.dev/aria-required-parent/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-required-parent.js | failureTitle": {
+    "message": "מאפייני `[role]` לא נמצאים בתוך רכיב ההורה הנדרש שלהם"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-parent.js | title": {
+    "message": "רכיבים מסוג `[role]` נמצאים בתוך רכיב ההורה הנדרש שלהם"
+  },
+  "lighthouse-core/audits/accessibility/aria-roles.js | description": {
+    "message": "תפקידי ARIA חייבים לכלול ערכים חוקיים כדי לבצע את פונקציות הנגישות שלהם. [מידע נוסף](https://web.dev/aria-roles/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-roles.js | failureTitle": {
+    "message": "יש ערכי `[role]` לא חוקיים"
+  },
+  "lighthouse-core/audits/accessibility/aria-roles.js | title": {
+    "message": "ערכי ה-`[role]` חוקיים"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr-value.js | description": {
+    "message": "טכנולוגיות לנגישות, כמו קוראי מסך, לא יכולות לפענח מאפייני ARIA שהערכים שלהם לא חוקיים. [מידע נוסף](https://web.dev/aria-valid-attr-value/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr-value.js | failureTitle": {
+    "message": "למאפייני ‎`[aria-*]`‎ אין ערכים חוקיים"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr-value.js | title": {
+    "message": "למאפייני ה-`[aria-*]` יש ערכים חוקיים"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr.js | description": {
+    "message": "טכנולוגיות לנגישות, כמו קוראי מסך, לא יכולות לפענח מאפייני ARIA עם שמות לא חוקיים. [מידע נוסף](https://web.dev/aria-valid-attr/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr.js | failureTitle": {
+    "message": "יש מאפייני `[aria-*]` שאינם חוקיים או שכוללים שגיאות איות"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr.js | title": {
+    "message": "מאפייני ה-`[aria-*]` חוקיים ולא כוללים שגיאות איות"
+  },
+  "lighthouse-core/audits/accessibility/audio-caption.js | description": {
+    "message": "כתוביות מאפשרות לאנשים חרשים ולקויי שמיעה להשתמש ברכיבי אודיו, ומספקות מידע קריטי, כמו זהות הדובר, המילים שנאמרות ומידע אחר שאינו מועבר בדיבור. [מידע נוסף](https://web.dev/audio-caption/)."
+  },
+  "lighthouse-core/audits/accessibility/audio-caption.js | failureTitle": {
+    "message": "יש רכיבי `<audio>` שחסר בהם רכיב `<track>` עם `[kind=\"captions\"]`."
+  },
+  "lighthouse-core/audits/accessibility/audio-caption.js | title": {
+    "message": "רכיבי `<audio>` מכילים רכיב `<track>` עם `[kind=\"captions\"]`"
+  },
+  "lighthouse-core/audits/accessibility/axe-audit.js | failingElementsHeader": {
+    "message": "רכיבים שנכשלו בבדיקה"
+  },
+  "lighthouse-core/audits/accessibility/button-name.js | description": {
+    "message": "כשאין ללחצן שם נגיש, קוראי מסך אומרים את המילה \"לחצן\", ובמצב כזה אנשים שמסתמכים על קוראי מסך יתקשו להשתמש בלחצן. [מידע נוסף](https://web.dev/button-name/)."
+  },
+  "lighthouse-core/audits/accessibility/button-name.js | failureTitle": {
+    "message": "ללחצנים אין שמות ייחודיים"
+  },
+  "lighthouse-core/audits/accessibility/button-name.js | title": {
+    "message": "ללחצנים יש שם נגיש"
+  },
+  "lighthouse-core/audits/accessibility/bypass.js | description": {
+    "message": "הוספה של דרכים לעקיפת תוכן שחוזר על עצמו מאפשרת לאנשים שמשתמשים במקלדת לנווט בדף בצורה יעילה יותר. [מידע נוסף](https://web.dev/bypass/)."
+  },
+  "lighthouse-core/audits/accessibility/bypass.js | failureTitle": {
+    "message": "הדף לא כולל כותרת, קישור לדילוג או קטע שמסומן כ-landmark"
+  },
+  "lighthouse-core/audits/accessibility/bypass.js | title": {
+    "message": "הדף כולל כותרת, קישור לדילוג או קטע שמסומן כ-landmark"
+  },
+  "lighthouse-core/audits/accessibility/color-contrast.js | description": {
+    "message": "משתמשים רבים מתקשים לקרוא טקסט עם ניגודיות נמוכה, או לא מסוגלים לקרוא אותו. [מידע נוסף](https://web.dev/color-contrast/)."
+  },
+  "lighthouse-core/audits/accessibility/color-contrast.js | failureTitle": {
+    "message": "יחס הניגודיות של צבעי הרקע והחזית אינו מספיק."
+  },
+  "lighthouse-core/audits/accessibility/color-contrast.js | title": {
+    "message": "יש יחס ניגודיות מספיק בין צבעי הרקע והחזית"
+  },
+  "lighthouse-core/audits/accessibility/definition-list.js | description": {
+    "message": "כשרשימות של הגדרות לא מסומנות כראוי, קוראי מסך עשויים לספק פלט מבלבל או לא מדויק. [מידע נוסף](https://web.dev/definition-list/)."
+  },
+  "lighthouse-core/audits/accessibility/definition-list.js | failureTitle": {
+    "message": "יש רכיבי `<dl>` שלא מכילים רק רכיבי `<script>` או `<template>`, או קבוצות `<dt>` ו-`<dd>` עם סדר תקין."
+  },
+  "lighthouse-core/audits/accessibility/definition-list.js | title": {
+    "message": "רכיבי `<dl>` מכילים רק רכיבי `<script>` או `<template>`, או קבוצות `<dt>` ו-`<dd>` עם סדר תקין."
+  },
+  "lighthouse-core/audits/accessibility/dlitem.js | description": {
+    "message": "פריטים ברשימות של הגדרות (`<dt>` ו-`<dd>`) צריכים להיות תחומים בתוך רכיב הורה מסוג `<dl>` כדי שקוראי מסך יוכלו להקריא אותם בצורה נכונה. [מידע נוסף](https://web.dev/dlitem/)."
+  },
+  "lighthouse-core/audits/accessibility/dlitem.js | failureTitle": {
+    "message": "יש פריטים ברשימות של הגדרות שלא תחומים בין רכיבי `<dl>`"
+  },
+  "lighthouse-core/audits/accessibility/dlitem.js | title": {
+    "message": "פריטים ברשימות של הגדרות מוצבים בין רכיבי `<dl>`"
+  },
+  "lighthouse-core/audits/accessibility/document-title.js | description": {
+    "message": "הכותרת מספקת סקירה כללית של הדף למשתמשים הנעזרים בקוראי מסך. בנוסף, משתמשים של מנועי חיפוש מסתמכים במידה רבה על הכותרת כדי להבין אם הדף רלוונטי לחיפוש שלהם. [מידע נוסף](https://web.dev/document-title/)."
+  },
+  "lighthouse-core/audits/accessibility/document-title.js | failureTitle": {
+    "message": "למסמך אין רכיב `<title>`"
+  },
+  "lighthouse-core/audits/accessibility/document-title.js | title": {
+    "message": "המסמך מכיל רכיב `<title>`"
+  },
+  "lighthouse-core/audits/accessibility/duplicate-id.js | description": {
+    "message": "הערך של מאפיין id חייב להיות ייחודי כדי למנוע מטכנולוגיות לנגישות להתעלם ממופעים אחרים. [מידע נוסף](https://web.dev/duplicate-id/)."
+  },
+  "lighthouse-core/audits/accessibility/duplicate-id.js | failureTitle": {
+    "message": "יש בדף מאפייני `[id]` שאינם ייחודיים"
+  },
+  "lighthouse-core/audits/accessibility/duplicate-id.js | title": {
+    "message": "מאפייני ה-`[id]` בדף הם ייחודיים"
+  },
+  "lighthouse-core/audits/accessibility/frame-title.js | description": {
+    "message": "משתמשים הנעזרים בקוראי מסך מסתמכים על כותרות של מסגרות כדי להבין מה תוכן המסגרות. [מידע נוסף](https://web.dev/frame-title/)."
+  },
+  "lighthouse-core/audits/accessibility/frame-title.js | failureTitle": {
+    "message": "לרכיבי `<frame>` או `<iframe>` אין מאפיין title"
+  },
+  "lighthouse-core/audits/accessibility/frame-title.js | title": {
+    "message": "לרכיבי `<frame>` או `<iframe>` יש מאפיין title"
+  },
+  "lighthouse-core/audits/accessibility/html-has-lang.js | description": {
+    "message": "אם בדף לא מצוין מאפיין lang, קורא המסך יפעל כאילו שהדף כתוב בשפת ברירת המחדל שהמשתמש בחר במהלך הגדרת קורא המסך. אם שפת הדף שונה משפת ברירת המחדל, ייתכן שקורא המסך לא יקרא בצורה נכונה את הטקסט שבדף. [מידע נוסף](https://web.dev/html-has-lang/)."
+  },
+  "lighthouse-core/audits/accessibility/html-has-lang.js | failureTitle": {
+    "message": "לרכיב `<html>` אין רכיב `[lang]`"
+  },
+  "lighthouse-core/audits/accessibility/html-has-lang.js | title": {
+    "message": "לרכיב `<html>` יש מאפיין `[lang]`"
+  },
+  "lighthouse-core/audits/accessibility/html-lang-valid.js | description": {
+    "message": "ציון של [שפת BCP 47](https://www.w3.org/International/questions/qa-choosing-language-tags#question) חוקית עוזר לקוראי מסך להקריא טקסט בצורה נכונה. [מידע נוסף](https://web.dev/html-lang-valid/)."
+  },
+  "lighthouse-core/audits/accessibility/html-lang-valid.js | failureTitle": {
+    "message": "לרכיב `<html>` אין ערך חוקי עבור המאפיין `[lang]`."
+  },
+  "lighthouse-core/audits/accessibility/html-lang-valid.js | title": {
+    "message": "לרכיב `<html>` יש ערך חוקי עבור המאפיין `[lang]`"
+  },
+  "lighthouse-core/audits/accessibility/image-alt.js | description": {
+    "message": "רכיבים אינפורמטיביים צריכים לכלול טקסט חלופי קצר ותיאורי. אפשר להתעלם מרכיבי עיצוב עם מאפיין alt ריק. [מידע נוסף](https://web.dev/image-alt/)."
+  },
+  "lighthouse-core/audits/accessibility/image-alt.js | failureTitle": {
+    "message": "יש רכיבי תמונה ללא מאפייני `[alt]`"
+  },
+  "lighthouse-core/audits/accessibility/image-alt.js | title": {
+    "message": "לרכיבי תמונה יש מאפייני `[alt]`"
+  },
+  "lighthouse-core/audits/accessibility/input-image-alt.js | description": {
+    "message": "כשתמונה משמשת כלחצן `<input>`, הוספה של טקסט חלופי יכולה לעזור למשתמשים הנעזרים בקוראי מסך להבין מה הלחצן עושה. [מידע נוסף](https://web.dev/input-image-alt/)."
+  },
+  "lighthouse-core/audits/accessibility/input-image-alt.js | failureTitle": {
+    "message": "יש רכיבי `<input type=\"image\">` שאין להם טקסט `[alt]`"
+  },
+  "lighthouse-core/audits/accessibility/input-image-alt.js | title": {
+    "message": "לרכיבים מסוג `<input type=\"image\">` יש טקסט `[alt]`"
+  },
+  "lighthouse-core/audits/accessibility/label.js | description": {
+    "message": "תוויות עוזרות לוודא ששמות של פקדי טפסים מוקראים באופן תקין על ידי טכנולוגיות לנגישות, כמו קוראי מסך. [מידע נוסף](https://web.dev/label/)."
+  },
+  "lighthouse-core/audits/accessibility/label.js | failureTitle": {
+    "message": "לא שויכו תוויות אל רכיבי טופס"
+  },
+  "lighthouse-core/audits/accessibility/label.js | title": {
+    "message": "לרכיבי טופס יש תוויות המשויכות אליהם"
+  },
+  "lighthouse-core/audits/accessibility/layout-table.js | description": {
+    "message": "טבלה המשמשת לקביעת פריסה אינה יכולה לכלול רכיבי נתונים, כמו הרכיב th, הרכיב ‏caption או המאפיין summary, כי הם עשויים ליצור חוויה מבלבלת עבור משתמשים הנעזרים בקורא מסך. [מידע נוסף](https://web.dev/layout-table/)."
+  },
+  "lighthouse-core/audits/accessibility/layout-table.js | failureTitle": {
+    "message": "ברכיבי `<table>` להצגה, אין הימנעות משימוש ב-`<th>`, ב-`<caption>` או במאפיין `[summary]`."
+  },
+  "lighthouse-core/audits/accessibility/layout-table.js | title": {
+    "message": "רכיבי `<table>` להצגה לא מכילים `<th>`, `<caption>` או את המאפיין `[summary]`."
+  },
+  "lighthouse-core/audits/accessibility/link-name.js | description": {
+    "message": "כשהטקסט של הקישור מובן וייחודי ואפשר להתמקד בו, משתמשים שנעזרים בקורא מסך נהנים מחוויית ניווט משופרת. מצב זה נכון גם לגבי טקסט חלופי של תמונות כשנעשה בהן שימוש כקישורים. [מידע נוסף](https://web.dev/link-name/)."
+  },
+  "lighthouse-core/audits/accessibility/link-name.js | failureTitle": {
+    "message": "לקישורים אין שמות ייחודיים"
+  },
+  "lighthouse-core/audits/accessibility/link-name.js | title": {
+    "message": "לקישורים יש שמות ייחודיים"
+  },
+  "lighthouse-core/audits/accessibility/list.js | description": {
+    "message": "קוראי מסך מקריאים רשימות בצורה מסוימת. שמירה על מבנה רשימות תקין מאפשרת הקראה תקינה על ידי קורא המסך. [מידע נוסף](https://web.dev/list/)."
+  },
+  "lighthouse-core/audits/accessibility/list.js | failureTitle": {
+    "message": "הרשימות לא מכילות רק רכיבי `<li>` ורכיבים שתומכים בסקריפט (`<script>` ו- `<template>`)."
+  },
+  "lighthouse-core/audits/accessibility/list.js | title": {
+    "message": "הרשימות מכילות רק רכיבי `<li>` ורכיבים שתומכים בסקריפט (`<script>` ו-`<template>`)."
+  },
+  "lighthouse-core/audits/accessibility/listitem.js | description": {
+    "message": "כדי שקוראי מסך יוכלו לקרוא כראוי פריטים ברשימות, (`<li>`) הם צריכים להופיע בין רכיבי הורה מסוג `<ul>` או `<ol>`. [מידע נוסף](https://web.dev/listitem/)."
+  },
+  "lighthouse-core/audits/accessibility/listitem.js | failureTitle": {
+    "message": "יש פריטים ברשימות (`<li>`) שלא נמצאים בין רכיבי הורה של `<ul>` או `<ol>`."
+  },
+  "lighthouse-core/audits/accessibility/listitem.js | title": {
+    "message": "פריטים ברשימות (`<li>`) מופיעים בין רכיבי הורה `<ul>` או `<ol>`"
+  },
+  "lighthouse-core/audits/accessibility/meta-refresh.js | description": {
+    "message": "משתמשים לא מצפים לרענון אוטומטי של הדף, ושימוש ברענון כזה יחזיר את ההתמקדות אל ראש הדף. מצב כזה יכול ליצור חוויה מתסכלת או מבלבלת. [מידע נוסף](https://web.dev/meta-refresh/)."
+  },
+  "lighthouse-core/audits/accessibility/meta-refresh.js | failureTitle": {
+    "message": "המסמך מכיל `<meta http-equiv=\"refresh\">`"
+  },
+  "lighthouse-core/audits/accessibility/meta-refresh.js | title": {
+    "message": "המסמך לא כולל שימוש ב-`<meta http-equiv=\"refresh\">`"
+  },
+  "lighthouse-core/audits/accessibility/meta-viewport.js | description": {
+    "message": "השבתת האפשרות להגדיל את תצוגת התוכן יוצרת בעיה עבור משתמשים עם ליקויי ראייה שנוהגים להגדיל את המסך כדי לראות היטב את תוכן דף האינטרנט. [מידע נוסף](https://web.dev/meta-viewport/)."
+  },
+  "lighthouse-core/audits/accessibility/meta-viewport.js | failureTitle": {
+    "message": "נעשה שימוש ב-`[user-scalable=\"no\"]` ברכיב `<meta name=\"viewport\">`, או שערך המאפיין `[maximum-scale]` קטן מ-5."
+  },
+  "lighthouse-core/audits/accessibility/meta-viewport.js | title": {
+    "message": "לא נעשה שימוש ב-`[user-scalable=\"no\"]` ברכיב `<meta name=\"viewport\">` וערך המאפיין `[maximum-scale]` לא קטן מ-5."
+  },
+  "lighthouse-core/audits/accessibility/object-alt.js | description": {
+    "message": "קוראי מסך לא יכולים לתרגם תוכן שאינו טקסט. הוספה של טקסט חלופי לרכיבי `<object>` עוזרת להבהיר את המשמעות כשמשתמשים בקוראי מסך. [מידע נוסף](https://web.dev/object-alt/)."
+  },
+  "lighthouse-core/audits/accessibility/object-alt.js | failureTitle": {
+    "message": "יש רכיבי `<object>` שאין להם טקסט `[alt]`"
+  },
+  "lighthouse-core/audits/accessibility/object-alt.js | title": {
+    "message": "לרכיבים מסוג `<object>` יש טקסט `[alt]`"
+  },
+  "lighthouse-core/audits/accessibility/tabindex.js | description": {
+    "message": "ערך גדול מ-0 מרמז על סדר ניווט מפורש. זו אפשרות תקינה מבחינה טכנית, אבל במקרים רבים היא גורמת לחוויה מתסכלת עבור משתמשים שמסתמכים על טכנולוגיות לנגישות. [מידע נוסף](https://web.dev/tabindex/)."
+  },
+  "lighthouse-core/audits/accessibility/tabindex.js | failureTitle": {
+    "message": "לחלק מהרכיבים יש ערך `[tabindex]` גדול מ-0"
+  },
+  "lighthouse-core/audits/accessibility/tabindex.js | title": {
+    "message": "לאף רכיב אין ערך `[tabindex]` גדול מ-0"
+  },
+  "lighthouse-core/audits/accessibility/td-headers-attr.js | description": {
+    "message": "קוראי מסך כוללים תכונות שמקלות את הניווט בטבלאות. כשתאי `<td>` שמשתמשים במאפיין `[headers]` מתייחסים רק לתאים אחרים באותה טבלה, משתמשים הנעזרים בקוראי מסך יכולים ליהנות מחוויה טובה יותר. [מידע נוסף](https://web.dev/td-headers-attr/)."
+  },
+  "lighthouse-core/audits/accessibility/td-headers-attr.js | failureTitle": {
+    "message": "תאים ברכיב `<table>` שמשתמשים במאפיין `[headers]` מתייחסים לתאים אחרים באותה הטבלה."
+  },
+  "lighthouse-core/audits/accessibility/td-headers-attr.js | title": {
+    "message": "כל התאים שמוצבים בתוך רכיב `<table>` ומשתמשים במאפיין `[headers]` מתייחסים רק לתאים אחרים באותה טבלה."
+  },
+  "lighthouse-core/audits/accessibility/th-has-data-cells.js | description": {
+    "message": "קוראי מסך כוללים תכונות שמקלות את הניווט בטבלאות. כשכותרות של טבלאות מתייחסות תמיד לקבוצה כלשהי של תאים, משתמשים הנעזרים בקורא מסך יכולים ליהנות מחוויה טובה יותר. [מידע נוסף](https://web.dev/th-has-data-cells/)."
+  },
+  "lighthouse-core/audits/accessibility/th-has-data-cells.js | failureTitle": {
+    "message": "יש רכיבי `<th>` ורכיבים עם `[role=\"columnheader\"/\"rowheader\"]` שאין להם את תאי הנתונים שהם מתארים."
+  },
+  "lighthouse-core/audits/accessibility/th-has-data-cells.js | title": {
+    "message": "לרכיבי `<th>` ולרכיבים עם `[role=\"columnheader\"/\"rowheader\"]` יש תאי נתונים שהם מתארים."
+  },
+  "lighthouse-core/audits/accessibility/valid-lang.js | description": {
+    "message": "ציון של [שפת BCP 47](https://www.w3.org/International/questions/qa-choosing-language-tags#question) חוקית ברכיבים עוזר להבטיח הגייה נכונה של הטקסט על ידי קורא המסך. [מידע נוסף](https://web.dev/valid-lang/)."
+  },
+  "lighthouse-core/audits/accessibility/valid-lang.js | failureTitle": {
+    "message": "יש מאפייני `[lang]` שאין להם ערך חוקי"
+  },
+  "lighthouse-core/audits/accessibility/valid-lang.js | title": {
+    "message": "למאפייני `[lang]` יש ערך חוקי"
+  },
+  "lighthouse-core/audits/accessibility/video-caption.js | description": {
+    "message": "כשסרטון כולל כתוביות, המידע שהוא כולל נגיש יותר למשתמשים חרשים ולקויי שמיעה. [מידע נוסף](https://web.dev/video-caption/)."
+  },
+  "lighthouse-core/audits/accessibility/video-caption.js | failureTitle": {
+    "message": "יש רכיבי `<video>` שלא מכילים רכיב `<track>` עם `[kind=\"captions\"]`."
+  },
+  "lighthouse-core/audits/accessibility/video-caption.js | title": {
+    "message": "רכיבי `<video>` מכילים רכיב `<track>` עם `[kind=\"captions\"]`"
+  },
+  "lighthouse-core/audits/accessibility/video-description.js | description": {
+    "message": "בסרטונים, תיאורים קוליים מספקים מידע רלוונטי שאי אפשר להבין מהדיאלוג. למשל, הבעות פנים ונופים. [מידע נוסף](https://web.dev/video-description/)."
+  },
+  "lighthouse-core/audits/accessibility/video-description.js | failureTitle": {
+    "message": "יש רכיבי `<video>` שלא מכילים רכיב `<track>` עם `[kind=\"description\"]`."
+  },
+  "lighthouse-core/audits/accessibility/video-description.js | title": {
+    "message": "רכיבי `<video>` מכילים רכיב `<track>` עם `[kind=\"description\"]`"
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | description": {
+    "message": "כדי שהדף יוצג למשתמשים באופן אידיאלי ב-iOS לאחר הוספת Progressive Web App למסך הבית, מומלץ להגדיר `apple-touch-icon`. המאפיין חייב להפנות לתמונת PNG לא שקופה בפורמט ריבוע בגודל 192 פיקסלים (או 180 פיקסלים). [מידע נוסף](https://developers.google.com/web/fundamentals/design-and-ux/browser-customization/)."
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | failureTitle": {
+    "message": "הדף לא מכיל `apple-touch-icon` חוקי"
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | precomposedWarning": {
+    "message": "`apple-touch-icon-precomposed` לא עדכני; עדיף להשתמש ב-`apple-touch-icon`."
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | title": {
+    "message": "האתר מכיל `apple-touch-icon` חוקי"
+  },
+  "lighthouse-core/audits/bootup-time.js | chromeExtensionsWarning": {
+    "message": "תוספים ל-Chrome השפיעו לרעה על ביצועי הטעינה של הדף הזה. כדאי לבדוק את הדף במצב גלישה בסתר או באמצעות פרופיל Chrome שאינו כולל תוספים."
+  },
+  "lighthouse-core/audits/bootup-time.js | columnScriptEval": {
+    "message": "הערכת סקריפט"
+  },
+  "lighthouse-core/audits/bootup-time.js | columnScriptParse": {
+    "message": "ניתוח סקריפט"
+  },
+  "lighthouse-core/audits/bootup-time.js | columnTotal": {
+    "message": "זמן כולל של CPU (יחידת עיבוד מרכזית)"
+  },
+  "lighthouse-core/audits/bootup-time.js | description": {
+    "message": "כדאי לשקול את האפשרות לקצר את הזמן הדרוש לניתוח, הידור וביצוע של JS. לשם כך כדאי להשתמש במטענים ייעודיים (payloads) קטנים יותר של JS. [מידע נוסף](https://developers.google.com/web/tools/lighthouse/audits/bootup)."
+  },
+  "lighthouse-core/audits/bootup-time.js | failureTitle": {
+    "message": "יש לקצר את זמן הביצוע של JavaScript"
+  },
+  "lighthouse-core/audits/bootup-time.js | title": {
+    "message": "זמן ביצוע של JavaScript"
+  },
+  "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | description": {
+    "message": "קובצי GIF גדולים לא מעבירים אנימציות בצורה יעילה. כדי לצמצם את מספר הבייטים שמועברים ברשת, במקום קובצי GIF כדאי לשקול את האפשרות להשתמש בסרטוני MPEG4/WebM בשביל אנימציות ובקובצי PNG/WebP בשביל תמונות סטטיות. [מידע נוסף](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/replace-animated-gifs-with-video/)"
+  },
+  "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | title": {
+    "message": "יש להשתמש בפורמטים של וידאו כדי להציג תוכן אנימציה"
+  },
+  "lighthouse-core/audits/byte-efficiency/offscreen-images.js | description": {
+    "message": "כדי לקצר את הזמן עד לפעילות מלאה, כדאי לשקול לבצע טעינה הדרגתית של תמונות מוסתרות ותמונות שלא מופיעות מיד במסך, כך שייטענו רק אחרי סיום הטעינה של כל המשאבים הקריטיים. [מידע נוסף](https://developers.google.com/web/tools/lighthouse/audits/offscreen-images)."
+  },
+  "lighthouse-core/audits/byte-efficiency/offscreen-images.js | title": {
+    "message": "יש לעכב טעינה של תמונות שאינן מופיעות במסך"
+  },
+  "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | description": {
+    "message": "משאבים חוסמים את הצגת התמונה הראשונית של הדף במסך כדאי לשקול את האפשרות לספק תוכן JS/CSS קריטי באופן מוטבע ולדחות את הטעינה של כל תוכן ה-JS/הסגנונות שאינם קריטיים. [מידע נוסף](https://developers.google.com/web/tools/lighthouse/audits/blocking-resources)."
+  },
+  "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | title": {
+    "message": "יש להימנע ממשאבים שחוסמים עיבוד"
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | description": {
+    "message": "מטענים ייעודיים (payload) בנפח גדול המועברים ברשת עולים למשתמשים כסף ולעתים קרובות מאריכים את זמני הטעינה. [מידע נוסף](https://developers.google.com/web/tools/lighthouse/audits/network-payloads)."
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | displayValue": {
+    "message": "הגודל הכולל היה ‎{totalBytes, number, bytes} KB"
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | failureTitle": {
+    "message": "יש להימנע מהעברה של מטענים ייעודיים ענקיים (payload) ברשת"
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | title": {
+    "message": "נמנע מהעברה של מטענים ייעודיים ענקיים (payload) ברשת"
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-css.js | description": {
+    "message": "הקטנה של קובצי CSS יכולה לצמצם את הגודל של מטענים ייעודיים (payloads) שמועברים ברשת. [מידע נוסף](https://developers.google.com/web/tools/lighthouse/audits/minify-css)."
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-css.js | title": {
+    "message": "יש להקטין קובצי CSS"
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | description": {
+    "message": "הקטנה של קובצי JavaScript יכולה לצמצם את המטען הייעודי (payload) ולקצר את משך הזמן הנדרש לניתוח סקריפט. [מידע נוסף](https://developers.google.com/speed/docs/insights/MinifyResources)."
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | title": {
+    "message": "יש לקצר את קוד JavaScript למינימום ההכרחי"
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | description": {
+    "message": "יש להסיר מגיליונות הסגנונות כללים שאינם בשימוש ולדחות את הטעינה של רכיבי CSS שאינם חלק מהתוכן בחלק העליון והקבוע. הפעולה הזו תצמצם צריכה בלתי נחוצה של בייטים כתוצאה מפעילות הרשת. [מידע נוסף](https://developers.google.com/web/tools/lighthouse/audits/unused-css)."
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | title": {
+    "message": "יש להסיר CSS שאינו בשימוש"
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-javascript.js | description": {
+    "message": "יש להסיר JavaScript שאינו בשימוש כדי לצמצם צריכת בייטים על-ידי פעילות ברשת."
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-javascript.js | title": {
+    "message": "יש להסיר JavaScript שאינו בשימוש"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | description": {
+    "message": "משך חיים ארוך של מטמון יכול לזרז את הביקורים החוזרים בדף. [מידע נוסף](https://developers.google.com/web/tools/lighthouse/audits/cache-policy)."
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | displayValue": {
+    "message": "{itemCount,plural, =1{נמצא משאב אחד}two{נמצאו # משאבים}many{נמצאו # משאבים}other{נמצאו # משאבים}}"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | failureTitle": {
+    "message": "יש להציג נכסים סטטיים בעזרת מדיניות מטמון יעילה"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | title": {
+    "message": "יש להשתמש במדיניות מטמון יעילה בנכסים סטטיים"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | description": {
+    "message": "תמונות שעברו אופטימיזציה נטענות מהר יותר וצורכות פחות נתונים בחבילת הגלישה. [מידע נוסף](https://developers.google.com/web/tools/lighthouse/audits/optimize-images)."
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | title": {
+    "message": "יש לקודד תמונות בצורה יעילה"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | description": {
+    "message": "הצגת תמונות שהגודל שלהן הוגדר בצורה נכונה עוזרת לחסוך בניצול חבילת הגלישה ולקצר את זמן הטעינה. [מידע נוסף](https://developers.google.com/web/tools/lighthouse/audits/oversized-images)."
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | title": {
+    "message": "יש להגדיר את גודל התמונות בצורה נכונה"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | description": {
+    "message": "הצגת משאבים המבוססים על טקסט צריכה להתבצע עם דחיסה (gzip‏, deflate או brotli) כדי לצמצם את כמות הבייטים שמועברים ברשת. [מידע נוסף](https://developers.google.com/web/tools/lighthouse/audits/text-compression)."
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | title": {
+    "message": "יש להפעיל דחיסת טקסט"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | description": {
+    "message": "לעתים קרובות, פורמטים של תמונות כמו JPEG 2000‏, JPEG XR ו-WebP מספקים דחיסה טובה יותר מאשר PNG או JPEG. הדחיסה המשופרת מקצרת את זמן ההורדות ומצמצמת את צריכת הנתונים. [מידע נוסף](https://developers.google.com/web/tools/lighthouse/audits/webp)."
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | title": {
+    "message": "יש להציג תמונות בפורמטים עדכניים"
+  },
+  "lighthouse-core/audits/content-width.js | description": {
+    "message": "אם הרוחב של תוכן האפליקציה לא תואם לרוחב של אזור התצוגה, ייתכן שלא בוצעה אופטימיזציה לאפליקציה שלך עבור מסכים של ניידים. [מידע נוסף](https://developers.google.com/web/tools/lighthouse/audits/content-sized-correctly-for-viewport)."
+  },
+  "lighthouse-core/audits/content-width.js | explanation": {
+    "message": "גודל אזור התצוגה של {innerWidth} פיקסלים לא תואם לגודל החלון של {outerWidth} פיקסלים."
+  },
+  "lighthouse-core/audits/content-width.js | failureTitle": {
+    "message": "הגודל של התוכן הוגדר בצורה לא תקינה עבור אזור התצוגה"
+  },
+  "lighthouse-core/audits/content-width.js | title": {
+    "message": "הגודל של התוכן הוגדר בצורה תקינה עבור אזור התצוגה"
+  },
+  "lighthouse-core/audits/critical-request-chains.js | description": {
+    "message": "בקטע 'שרשראות בקשה קריטיות' שבהמשך מוצגים המשאבים שנטענים עם עדיפות גבוהה. כדי לשפר את מהירות טעינת הדף, מומלץ לקצר את השרשראות, להקטין את גודל ההורדה של משאבים או לעכב את ההורדה של משאבים לא נחוצים. [מידע נוסף](https://developers.google.com/web/tools/lighthouse/audits/critical-request-chains)."
+  },
+  "lighthouse-core/audits/critical-request-chains.js | displayValue": {
+    "message": "{itemCount,plural, =1{נמצאה שרשרת אחת}two{נמצאו # שרשראות}many{נמצאו # שרשראות}other{נמצאו # שרשראות}}"
+  },
+  "lighthouse-core/audits/critical-request-chains.js | title": {
+    "message": "יש לצמצם את העומק של בקשות קריטיות"
+  },
+  "lighthouse-core/audits/deprecations.js | columnDeprecate": {
+    "message": "הוצאה משימוש/אזהרה"
+  },
+  "lighthouse-core/audits/deprecations.js | columnLine": {
+    "message": "שורה"
+  },
+  "lighthouse-core/audits/deprecations.js | description": {
+    "message": "רכיבי API שהוצאו משימוש יוסרו בסופו של דבר מהדפדפן. [מידע נוסף](https://web.dev/deprecations)."
+  },
+  "lighthouse-core/audits/deprecations.js | displayValue": {
+    "message": "{itemCount,plural, =1{נמצאה אזהרה אחת}two{נמצאו # אזהרות}many{נמצאו # אזהרות}other{נמצאו # אזהרות}}"
+  },
+  "lighthouse-core/audits/deprecations.js | failureTitle": {
+    "message": "הדף מכיל רכיבי API שהוצאו משימוש"
+  },
+  "lighthouse-core/audits/deprecations.js | title": {
+    "message": "אין רכיבי API שהוצאו משימוש"
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | description": {
+    "message": "Application Cache הוצא משימוש. [מידע נוסף](https://web.dev/appcache-manifest)."
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | displayValue": {
+    "message": "בשימוש: \"{AppCacheManifest}\""
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | failureTitle": {
+    "message": "נעשה שימוש ב-Application Cache"
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | title": {
+    "message": "לא נעשה שימוש ב-Application Cache"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | description": {
+    "message": "ציון של doctype מונע מהדפדפן לעבור למצב תאימות (quirks mode). [מידע נוסף](https://web.dev/doctype)."
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationBadDoctype": {
+    "message": "שם של Doctype חייב להיות המחרוזת `html` עם אותיות קטנות"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationNoDoctype": {
+    "message": "המסמך חייב להכיל doctype"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationPublicId": {
+    "message": "publicId אמור להיות מחרוזת ריקה"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationSystemId": {
+    "message": "systemId אמור להיות מחרוזת ריקה"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | failureTitle": {
+    "message": "ה-doctype של הדף אינו מוגדר ל-HTML, ולכן הופעל מצב תאימות (quirks mode)"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | title": {
+    "message": "ה-doctype של הדף מוגדר ל-HTML"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | columnElement": {
+    "message": "רכיב"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | columnStatistic": {
+    "message": "נתון סטטיסטי"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | columnValue": {
+    "message": "ערך"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | description": {
+    "message": "מהנדסי דפדפנים ממליצים לכלול פחות מכ-1,500 רכיבי DOM בדפים. התצורה המועדפת היא עץ בעומק של פחות מ-32 רכיבים, ופחות מ-60 רכיבי צאצא לכל רכיב הורה. DOM גדול עשוי להגדיל את צריכת משאבי הזיכרון, להאריך את הזמן הדרוש ל[חישובי סגנונות](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations) ולהוביל ל[זרימה חוזרת של פריסות](https://developers.google.com/speed/articles/reflow) שגוזלת משאבים יקרים. [מידע נוסף](https://web.dev/dom-size)."
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | displayValue": {
+    "message": "{itemCount,plural, =1{רכיב אחד}two{# רכיבים}many{# רכיבים}other{# רכיבים}}"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | failureTitle": {
+    "message": "יש להימנע מ-DOM גדול מדי"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | statisticDOMDepth": {
+    "message": "עומק DOM מרבי"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | statisticDOMElements": {
+    "message": "סך רכיבי DOM"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | statisticDOMWidth": {
+    "message": "מקסימום רכיבי צאצא"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | title": {
+    "message": "נמנע מ-DOM גדול מדי"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | columnRel": {
+    "message": "Rel"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | columnTarget": {
+    "message": "יעד"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | description": {
+    "message": "כדי לשפר את הביצועים ולמנוע פגיעויות המסכנות את האבטחה, יש להוסיף `rel=\"noopener\"` או `rel=\"noreferrer\"` לקישורים חיצוניים. [מידע נוסף](https://web.dev/external-anchors-use-rel-noopener)."
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | failureTitle": {
+    "message": "הדף מכיל קישורים לא בטוחים ליעדים ממקורות שונים"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | title": {
+    "message": "כל הקישורים ליעדים ממקורות שונים בטוחים לשימוש"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | warning": {
+    "message": "לא ניתן לקבוע את יעד העוגן ({anchorHTML}). אם target=_blank לא משמש כהיפר-קישור, כדאי לשקול להסיר אותו."
+  },
+  "lighthouse-core/audits/dobetterweb/geolocation-on-start.js | description": {
+    "message": "אתרים שמבקשים לקבל גישה למיקום של המשתמשים, בלי לציין הקשר, מעוררים אצל המשתמשים תחושת בלבול או חשדנות. במקום זאת, כדאי לשקול לקשר את הבקשות לפעולה של המשתמשים. [מידע נוסף](https://web.dev/geolocation-on-start)."
+  },
+  "lighthouse-core/audits/dobetterweb/geolocation-on-start.js | failureTitle": {
+    "message": "הדף מבקש הרשאות למיקום גאוגרפי במהלך טעינת הדף"
+  },
+  "lighthouse-core/audits/dobetterweb/geolocation-on-start.js | title": {
+    "message": "הדף לא מבקש הרשאות למיקום גאוגרפי במהלך טעינת הדף"
+  },
+  "lighthouse-core/audits/dobetterweb/js-libraries.js | columnVersion": {
+    "message": "גרסה"
+  },
+  "lighthouse-core/audits/dobetterweb/js-libraries.js | description": {
+    "message": "זו ביקורת שמטרתה לזהות את כל ספריות ה-JavaScript החזיתיות בדף. [מידע נוסף](https://web.dev/js-libraries)."
+  },
+  "lighthouse-core/audits/dobetterweb/js-libraries.js | title": {
+    "message": "ספריות JavaScript שזוהו"
+  },
+  "lighthouse-core/audits/dobetterweb/no-document-write.js | description": {
+    "message": "אם החיבור איטי, סקריפטים חיצוניים המושתלים באופן דינמי דרך `document.write()` יכולים לעכב את טעינת הדף בעשרות שניות. [מידע נוסף](https://web.dev/no-document-write)."
+  },
+  "lighthouse-core/audits/dobetterweb/no-document-write.js | failureTitle": {
+    "message": "הדף כולל שימוש ב-`document.write()`"
+  },
+  "lighthouse-core/audits/dobetterweb/no-document-write.js | title": {
+    "message": "לא נעשה שימוש ב-`document.write()`"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | columnSeverity": {
+    "message": "רמת החומרה הגבוהה ביותר"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | columnVersion": {
+    "message": "גרסת הספרייה"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | columnVuln": {
+    "message": "מספר הפגיעויות"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | description": {
+    "message": "סקריפטים של צד שלישי עשויים להכיל פגיעויות ידועות באבטחה, שתוקפים יכולים לזהות ולנצל בקלות. [מידע נוסף](https://web.dev/no-vulnerable-libraries)."
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | displayValue": {
+    "message": "{itemCount,plural, =1{זוהתה פגיעוּת אחת}two{זוהו # פגיעויות}many{זוהו # פגיעויות}other{זוהו # פגיעויות}}"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | failureTitle": {
+    "message": "הדף מכיל ספריות JavaScript חזיתיות בעלות פגיעויות ידועות באבטחה"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | rowSeverityHigh": {
+    "message": "גבוהה"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | rowSeverityLow": {
+    "message": "נמוכה"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | rowSeverityMedium": {
+    "message": "בינונית"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | title": {
+    "message": "הדף לא מכיל ספריות JavaScript חזיתיות בעלות פגיעויות ידועות באבטחה"
+  },
+  "lighthouse-core/audits/dobetterweb/notification-on-start.js | description": {
+    "message": "אתרים שמבקשים לשלוח התראות ללא הקשר מעוררים תחושת בלבול או חשדנות בקרב המשתמשים. במקום זאת, כדאי לשקול לקשר את הבקשות למחוות של המשתמשים. [מידע נוסף](https://web.dev/notification-on-start)."
+  },
+  "lighthouse-core/audits/dobetterweb/notification-on-start.js | failureTitle": {
+    "message": "הדף מבקש הרשאה להודעות במהלך טעינת הדף"
+  },
+  "lighthouse-core/audits/dobetterweb/notification-on-start.js | title": {
+    "message": "הדף לא מבקש הרשאה להתראות במהלך טעינת הדף"
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | columnFailingElem": {
+    "message": "רכיבים שנכשלו בבדיקה"
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | description": {
+    "message": "מניעה של הדבקת סיסמאות פוגעת ביכולת לקיים מדיניות אבטחה טובה. [מידע נוסף](https://web.dev/password-inputs-can-be-pasted-into)."
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | failureTitle": {
+    "message": "בדף הזה משתמשים לא יכולים להדביק תוכן מועתק לתוך שדות של סיסמאות"
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | title": {
+    "message": "בדף הזה משתמשים יכולים להדביק תוכן מועתק לתוך שדות של סיסמאות"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | columnProtocol": {
+    "message": "פרוטוקול"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | description": {
+    "message": "ל-HTTP/2 יש הרבה יתרונות על-פני HTTP/1.1, ביניהם כותרות בינאריות, ריבוב והקצאות שרת מוקדמות (Server Push). [מידע נוסף](https://web.dev/uses-http2)."
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | displayValue": {
+    "message": "{itemCount,plural, =1{בקשה אחת לא מולאה דרך HTTP/2}two{# בקשות לא מולאו דרך HTTP/2}many{# בקשות לא מולאו דרך HTTP/2}other{# בקשות לא מולאו דרך HTTP/2}}"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | failureTitle": {
+    "message": "לא נעשה שימוש ב-HTTP/2 עבור כל משאבי הדף"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | title": {
+    "message": "נעשה שימוש ב-HTTP/2 עבור משאבי הדף"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-passive-event-listeners.js | description": {
+    "message": "כדי לשפר את ביצועי הגלילה של הדף, מומלץ לשקול להוסיף סימון `passive` למעבדים של אירועי נגיעה וגלילה עם גלגל העכבר. [מידע נוסף](https://web.dev/uses-passive-event-listeners)."
+  },
+  "lighthouse-core/audits/dobetterweb/uses-passive-event-listeners.js | failureTitle": {
+    "message": "לא נעשה שימוש ברכיבי listener פסיביים לשיפור ביצועי הגלילה"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-passive-event-listeners.js | title": {
+    "message": "נעשה שימוש ברכיבי listener פסיביים לשיפור ביצועי הגלילה"
+  },
+  "lighthouse-core/audits/errors-in-console.js | columnDesc": {
+    "message": "תיאור"
+  },
+  "lighthouse-core/audits/errors-in-console.js | description": {
+    "message": "שגיאות שנרשמו במסוף מצביעות על בעיות לא פתורות. הן עשויות להופיע בעקבות כשל בבקשות ברשת או בעיות אחרות בדפדפן. [מידע נוסף](https://web.dev/errors-in-console)"
+  },
+  "lighthouse-core/audits/errors-in-console.js | failureTitle": {
+    "message": "נרשמו שגיאות דפדפן במסוף"
+  },
+  "lighthouse-core/audits/errors-in-console.js | title": {
+    "message": "לא נרשמו במסוף שגיאות דפדפן"
+  },
+  "lighthouse-core/audits/font-display.js | description": {
+    "message": "שימוש בתכונת תצוגת הגופן של CSS מבטיח שהטקסט מוצג למשתמש בזמן טעינה של גופני webfont. [מידע נוסף](https://developers.google.com/web/updates/2016/02/font-display)."
+  },
+  "lighthouse-core/audits/font-display.js | failureTitle": {
+    "message": "יש לוודא שטקסט ממשיך להופיע במהלך טעינת webfont"
+  },
+  "lighthouse-core/audits/font-display.js | title": {
+    "message": "כל הטקסט ממשיך להופיע במהלך טעינות של webfont"
+  },
+  "lighthouse-core/audits/font-display.js | undeclaredFontURLWarning": {
+    "message": "מערכת Lighthouse לא הצליחה לבדוק באופן אוטומטי את ערך תצוגת הגופן של כתובת ה-URL הבאה: {fontURL}."
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | columnActual": {
+    "message": "יחס גובה-רוחב (בפועל)"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | columnDisplayed": {
+    "message": "יחס גובה-רוחב (בתצוגה)"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | description": {
+    "message": "מידות התצוגה של התמונה צריכות להתאים ליחס הגובה-רוחב הטבעי. [מידע נוסף](https://web.dev/image-aspect-ratio)."
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | failureTitle": {
+    "message": "יש תמונות עם יחס גובה-רוחב שגוי"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | title": {
+    "message": "התמונות מוצגות ביחס גובה-רוחב נכון"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | warningCompute": {
+    "message": "נתוני הגודל של תמונה לא חוקיים: {url}"
+  },
+  "lighthouse-core/audits/installable-manifest.js | description": {
+    "message": "הדפדפנים יכולים לבקש ממשתמשים באופן יזום להוסיף את האפליקציה שלך אל מסך הבית שלהם, פעולה שמגדילה את הסיכוי להשגת מעורבות גבוהה יותר. [מידע נוסף](https://developers.google.com/web/tools/lighthouse/audits/install-prompt)."
+  },
+  "lighthouse-core/audits/installable-manifest.js | failureTitle": {
+    "message": "המניפסט של אפליקציית האינטרנט לא עומד בדרישות יכולת ההתקנה"
+  },
+  "lighthouse-core/audits/installable-manifest.js | title": {
+    "message": "המניפסט של אפליקציית האינטרנט עומד בדרישות יכולת ההתקנה"
+  },
+  "lighthouse-core/audits/is-on-https.js | columnInsecureURL": {
+    "message": "כתובת URL של בקשה לא מאובטחת"
+  },
+  "lighthouse-core/audits/is-on-https.js | description": {
+    "message": "יש להגן באמצעות פרוטוקול HTTPS על כל האתרים, אפילו אם הם לא מכילים נתונים רגישים. פרוטוקול HTTPS מונע מפורצים לעשות שימוש לרעה בתקשורת המתקיימת בין האפליקציה למשתמשים או לצותת לה. השימוש בפרוטוקול הזה הוא דרישה מוקדמת של HTTP/2 ושל רכיבי ה-API של רבות מפלטפורמות האינטרנט החדשות. [מידע נוסף](https://web.dev/is-on-https)."
+  },
+  "lighthouse-core/audits/is-on-https.js | displayValue": {
+    "message": "{itemCount,plural, =1{נמצאה בקשה לא מאובטחת אחת}two{נמצאו # בקשות לא מאובטחות}many{נמצאו # בקשות לא מאובטחות}other{נמצאו # בקשות לא מאובטחות}}"
+  },
+  "lighthouse-core/audits/is-on-https.js | failureTitle": {
+    "message": "לא נעשה שימוש ב-HTTPS"
+  },
+  "lighthouse-core/audits/is-on-https.js | title": {
+    "message": "שימוש ב-HTTPS"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | description": {
+    "message": "כשהדף נטען במהירות ברשת סלולרית, חוויית המשתמש איכותית. [מידע נוסף](https://developers.google.com/web/tools/lighthouse/audits/fast-3g)."
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | displayValueText": {
+    "message": "פעילות מלאה תוך {timeInMs, number, seconds} שנ'"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | displayValueTextWithOverride": {
+    "message": "הזמן עד לפעילות מלאה בהדמיית רשת סלולרית הוא {timeInMs, number, seconds} שניות"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | explanationLoadSlow": {
+    "message": "הדף שלך נטען לאט מדי ולא מגיע לפעילות מלאה תוך 10 שניות. כדי ללמוד כיצד לבצע שיפורים, מומלץ לעיין בהזדמנויות ובניתוחים שמופיעים בקטע \"ביצועים\"."
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | failureTitle": {
+    "message": "טעינת הדף לא מהירה מספיק ברשתות סלולריות"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | title": {
+    "message": "טעינת הדף ברשתות סלולריות מהירה מספיק"
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | columnCategory": {
+    "message": "קטגוריה"
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | description": {
+    "message": "כדאי לשקול את האפשרות לקצר את הזמן הדרוש לניתוח, הידור וביצוע JS. לשם כך כדאי להשתמש במטענים ייעודיים (payload) קטנים יותר של JS."
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | failureTitle": {
+    "message": "צריך לצמצם את העבודה על התהליכון הראשי"
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | title": {
+    "message": "מצמצם את העבודה על התהליכון הראשי"
+  },
+  "lighthouse-core/audits/manual/pwa-cross-browser.js | description": {
+    "message": "כדי להגדיל את היקף החשיפה לכמה שיותר משתמשים, האתרים צריכים לעבוד בכל הדפדפנים המובילים. [מידע נוסף](https://developers.google.com/web/progressive-web-apps/checklist#site-works-cross-browser)."
+  },
+  "lighthouse-core/audits/manual/pwa-cross-browser.js | title": {
+    "message": "האתר עובד בדפדפנים שונים"
+  },
+  "lighthouse-core/audits/manual/pwa-each-page-has-url.js | description": {
+    "message": "יש לוודא שניתן לבצע קישור עמוק לדפים נפרדים דרך כתובת URL ושכתובות ה-URL ייחודיות, כדי שניתן יהיה לשתף אותן ברשתות חברתיות. [מידע נוסף](https://developers.google.com/web/progressive-web-apps/checklist#each-page-has-a-url)."
+  },
+  "lighthouse-core/audits/manual/pwa-each-page-has-url.js | title": {
+    "message": "לכל דף יש כתובת URL"
+  },
+  "lighthouse-core/audits/manual/pwa-page-transitions.js | description": {
+    "message": "כשמקישים באפליקציה, התחושה של המעברים צריכה להיות מהירה, גם ברשת איטית. זוהי נקודת מפתח לתפיסת הביצועים שלה. [מידע נוסף](https://developers.google.com/web/progressive-web-apps/checklist#page-transitions-dont-feel-like-they-block-on-the-network)."
+  },
+  "lighthouse-core/audits/manual/pwa-page-transitions.js | title": {
+    "message": "מעברי הדפים לא מרגישים חסומים ברשת"
+  },
+  "lighthouse-core/audits/metrics/estimated-input-latency.js | description": {
+    "message": "זמן אחזור מוערך של קלט הוא אומדן של משך הזמן הנדרש לאפליקציה כדי להגיב לקלט של משתמש. הערך מצוין באלפיות שנייה ומתייחס ל-5 השניות העמוסות ביותר בטעינת הדף. אם זמן האחזור ארוך מ-50 אלפיות שנייה, ייתכן שהמשתמשים יבחינו בעיכוב בפעילות האפליקציה. [מידע נוסף](https://developers.google.com/web/tools/lighthouse/audits/estimated-input-latency)."
+  },
+  "lighthouse-core/audits/metrics/estimated-input-latency.js | title": {
+    "message": "אומדן זמן האחזור של קלט"
+  },
+  "lighthouse-core/audits/metrics/first-contentful-paint.js | description": {
+    "message": "המדד 'הצגת תוכן ראשוני (FCP)' מציין את הזמן שבו הטקסט או התמונה הראשונים מוצגים. [מידע נוסף](https://developers.google.com/web/tools/lighthouse/audits/first-contentful-paint)."
+  },
+  "lighthouse-core/audits/metrics/first-contentful-paint.js | title": {
+    "message": "הצגת התוכן הראשוני"
+  },
+  "lighthouse-core/audits/metrics/first-cpu-idle.js | description": {
+    "message": "הערך 'מצב ראשון של חוסר פעילות ב-CPU' מציין את הפעם הראשונה שבה התהליכון הראשי של הדף פנוי מספיק בשביל להגיב לקלט. [מידע נוסף](https://developers.google.com/web/tools/lighthouse/audits/first-interactive)."
+  },
+  "lighthouse-core/audits/metrics/first-cpu-idle.js | title": {
+    "message": "מצב ראשון של חוסר פעילות ב-CPU"
+  },
+  "lighthouse-core/audits/metrics/first-meaningful-paint.js | description": {
+    "message": "הערך 'הצגת התוכן העיקרי (FMP)' מציין מתי מוצג התוכן העיקרי של הדף. [מידע נוסף](https://developers.google.com/web/tools/lighthouse/audits/first-meaningful-paint)."
+  },
+  "lighthouse-core/audits/metrics/first-meaningful-paint.js | title": {
+    "message": "הצגת התוכן העיקרי"
+  },
+  "lighthouse-core/audits/metrics/interactive.js | description": {
+    "message": "הזמן עד לפעילות מלאה הוא משך הזמן שחולף עד שהדף מאפשר פעילות מלאה. [מידע נוסף](https://developers.google.com/web/tools/lighthouse/audits/consistently-interactive)."
+  },
+  "lighthouse-core/audits/metrics/interactive.js | title": {
+    "message": "זמן עד לאינטראקטיביות"
+  },
+  "lighthouse-core/audits/metrics/max-potential-fid.js | description": {
+    "message": "ההשהיה הפוטנציאלית המרבית שהמשתמשים יכולים לחוות לאחר קלט ראשוני היא משך הזמן (באלפיות שנייה) של המשימה הארוכה ביותר. [מידע נוסף](https://developers.google.com/web/updates/2018/05/first-input-delay)."
+  },
+  "lighthouse-core/audits/metrics/max-potential-fid.js | title": {
+    "message": "השהיה פוטנציאלית מרבית לאחר קלט ראשוני"
+  },
+  "lighthouse-core/audits/metrics/speed-index.js | description": {
+    "message": "מדד המהירות (Speed Index) מראה באיזו מהירות מוצג התוכן בדף [מידע נוסף](https://developers.google.com/web/tools/lighthouse/audits/speed-index)."
+  },
+  "lighthouse-core/audits/metrics/speed-index.js | title": {
+    "message": "מדד מהירות (Speed Index)"
+  },
+  "lighthouse-core/audits/metrics/total-blocking-time.js | description": {
+    "message": "משך הזמן המצטבר של כל פרקי הזמן מרגע הצגת התוכן הראשוני (FCP) ועד לפעילות מלאה, במקרים שבהם משך המשימה חורג מ-50 אלפיות שנייה. הערך מבוטא באלפיות שנייה."
+  },
+  "lighthouse-core/audits/metrics/total-blocking-time.js | title": {
+    "message": "זמן החסימה הכולל"
+  },
+  "lighthouse-core/audits/network-rtt.js | description": {
+    "message": "לזמני הלוך ושוב (RTT) ברשת יש השפעה גדולה על הביצועים. אם נדרש RTT ארוך בתקשורת עם מקור, זה סימן לכך שאפשר לשפר את הביצועים בעזרת שרתים שממוקמים קרוב יותר אל המשתמש. [מידע נוסף](https://hpbn.co/primer-on-latency-and-bandwidth/)."
+  },
+  "lighthouse-core/audits/network-rtt.js | title": {
+    "message": "זמני הלוך ושוב ברשת"
+  },
+  "lighthouse-core/audits/network-server-latency.js | description": {
+    "message": "זמני האחזור של שרתים יכולים להשפיע על ביצועי האינטרנט. אם נדרש זמן אחזור ארוך בתקשורת עם המקור, זה סימן לכך שהשרת עמוס או שביצועי הקצה העורפי שלו נמוכים. [מידע נוסף](https://hpbn.co/primer-on-web-performance/#analyzing-the-resource-waterfall)."
+  },
+  "lighthouse-core/audits/network-server-latency.js | title": {
+    "message": "זמני אחזור בקצה עורפי של שרת"
+  },
+  "lighthouse-core/audits/offline-start-url.js | description": {
+    "message": "קובץ שירות (service worker) מאפשר לאפליקציית האינטרנט שלך להיות אמינה יותר בתנאי רשת לא צפויים. [מידע נוסף](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)."
+  },
+  "lighthouse-core/audits/offline-start-url.js | failureTitle": {
+    "message": "`start_url` לא מגיב בסטטוס 200 כשהוא במצב לא מקוון"
+  },
+  "lighthouse-core/audits/offline-start-url.js | title": {
+    "message": "`start_url` מגיב בסטטוס 200 כשהוא במצב לא מקוון"
+  },
+  "lighthouse-core/audits/offline-start-url.js | warningCantStart": {
+    "message": "מערכת Lighthouse לא הצליחה לקרוא את `start_url` מהמניפסט. כתוצאה מכך, התבצעה הנחה ש-`start_url` היא כתובת ה-URL של המסמך. הודעת שגיאה: '{manifestWarning}'."
+  },
+  "lighthouse-core/audits/performance-budget.js | columnOverBudget": {
+    "message": "גובה החריגה מהתקציב"
+  },
+  "lighthouse-core/audits/performance-budget.js | description": {
+    "message": "הכמות והגודל של בקשות ברשת צריכים להיות מתחת ליעדים שהוגדרו בתקציב הביצועים הרלוונטי. [מידע נוסף](https://developers.google.com/web/tools/lighthouse/audits/budgets)."
+  },
+  "lighthouse-core/audits/performance-budget.js | requestCountOverBudget": {
+    "message": "{count,plural, =1{בקשה אחת}two{# בקשות}many{# בקשות}other{# בקשות}}"
+  },
+  "lighthouse-core/audits/performance-budget.js | title": {
+    "message": "תקציב ביצועים"
+  },
+  "lighthouse-core/audits/redirects-http.js | description": {
+    "message": "אם כבר הגדרת HTTPS, יש לוודא שכל תנועת ה-HTTP מופנית אוטומטית ל-HTTPS כדי להפעיל תכונות רשת מאובטחות לכל המשתמשים שלך. [מידע נוסף](https://developers.google.com/web/tools/lighthouse/audits/http-redirects-to-https)."
+  },
+  "lighthouse-core/audits/redirects-http.js | failureTitle": {
+    "message": "לא מפנה תנועת HTTP באופן אוטומטי אל HTTPS"
+  },
+  "lighthouse-core/audits/redirects-http.js | title": {
+    "message": "מפנה תנועת HTTP באופן אוטומטי אל HTTPS"
+  },
+  "lighthouse-core/audits/redirects.js | description": {
+    "message": "הפניות אוטומטיות מעכבות את טעינת הדף. [מידע נוסף](https://developers.google.com/web/tools/lighthouse/audits/redirects)."
+  },
+  "lighthouse-core/audits/redirects.js | title": {
+    "message": "יש להימנע מהפניות אוטומטיות מרובות"
+  },
+  "lighthouse-core/audits/resource-summary.js | description": {
+    "message": "כדי להגדיר תקציבים עבור הכמות והגודל של משאבי הדף, יש להוסיף קובץ budget.json. [מידע נוסף](https://developers.google.com/web/tools/lighthouse/audits/budgets)."
+  },
+  "lighthouse-core/audits/resource-summary.js | displayValue": {
+    "message": "{requestCount,plural, =1{בקשה אחת •KB‎‎ {byteCount, number, bytes}‏}two{# בקשות • KB {byteCount, number, bytes}}many{# בקשות • KB {byteCount, number, bytes}}other{# בקשות • KB {byteCount, number, bytes}}}"
+  },
+  "lighthouse-core/audits/resource-summary.js | title": {
+    "message": "יש לצמצם ככל האפשר את מספר הבקשות ואת גודל ההעברות"
+  },
+  "lighthouse-core/audits/seo/canonical.js | description": {
+    "message": "קישורים קנוניים מציעים את כתובת ה-URL שיש להציג בתוצאות החיפוש. [מידע נוסף](https://web.dev/canonical)."
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationConflict": {
+    "message": "התנגשויות בין כתובות URL מרובות ({urlList})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationDifferentDomain": {
+    "message": "הכתובת מפנה לדומיין אחר ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationInvalid": {
+    "message": "כתובת אתר לא חוקית ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationPointsElsewhere": {
+    "message": "הכתובת מפנה למיקום `hreflang` אחר ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationRelative": {
+    "message": "כתובת URL יחסית ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationRoot": {
+    "message": "מצביע אל כתובת ה-URL הבסיסית של הדומיין (דף הבית), במקום אל דף תוכן מתאים"
+  },
+  "lighthouse-core/audits/seo/canonical.js | failureTitle": {
+    "message": "למסמך אין `rel=canonical` חוקי"
+  },
+  "lighthouse-core/audits/seo/canonical.js | title": {
+    "message": "למסמך יש `rel=canonical` חוקי"
+  },
+  "lighthouse-core/audits/seo/font-size.js | description": {
+    "message": "גופן בגודל של פחות מ-12 פיקסלים הוא קטן מדי לקריאה: מבקרים עם מכשיר נייד ייאלצו לעשות תנועת צביטה של התקרבות לתצוגה על מנת לקרוא את הטקסט. ההמלצה היא שיותר מ-60% מהטקסט יהיה בגודל של 12 פיקסלים לפחות. [מידע נוסף](https://web.dev/font-size)."
+  },
+  "lighthouse-core/audits/seo/font-size.js | displayValue": {
+    "message": "טקסט קריא: {decimalProportion, number, extendedPercent}"
+  },
+  "lighthouse-core/audits/seo/font-size.js | explanationViewport": {
+    "message": "הטקסט לא קריא כי לא בוצעה אופטימיזציית מטא תג של אזור התצוגה בשביל מסכים של ניידים."
+  },
+  "lighthouse-core/audits/seo/font-size.js | explanationWithDisclaimer": {
+    "message": "הגודל של {decimalProportion, number, extendedPercent} מהטקסט קטן מדי (מבוסס על דגימה של {decimalProportionVisited, number, extendedPercent})."
+  },
+  "lighthouse-core/audits/seo/font-size.js | failureTitle": {
+    "message": "מידות הגופן במסך מקשות על הקריאה"
+  },
+  "lighthouse-core/audits/seo/font-size.js | title": {
+    "message": "במסמך נעשה שימוש בגופן בגודל קריא"
+  },
+  "lighthouse-core/audits/seo/hreflang.js | description": {
+    "message": "קישורי hreflang עוזרים למנועי חיפוש להבין איזו גרסה של הדף הם צריכים להציג בתוצאות החיפוש בשביל שפה מסוימת או אזור מסוים. [מידע נוסף](https://web.dev/hreflang)."
+  },
+  "lighthouse-core/audits/seo/hreflang.js | failureTitle": {
+    "message": "למסמך אין `hreflang` חוקי"
+  },
+  "lighthouse-core/audits/seo/hreflang.js | title": {
+    "message": "למסמך יש `hreflang` חוקי"
+  },
+  "lighthouse-core/audits/seo/http-status-code.js | description": {
+    "message": "כשלדפים יש קוד מצב HTTP לא תקין, עשויות להיות שגיאות בהוספה שלהם לאינדקס. [מידע נוסף](https://web.dev/http-status-code)."
+  },
+  "lighthouse-core/audits/seo/http-status-code.js | failureTitle": {
+    "message": "לדף יש קוד מצב HTTP המצביע על בעיה"
+  },
+  "lighthouse-core/audits/seo/http-status-code.js | title": {
+    "message": "קוד מצב ה-HTTP של הדף הוא 'הצלחה'"
+  },
+  "lighthouse-core/audits/seo/is-crawlable.js | description": {
+    "message": "מנועי חיפוש לא יכולים לכלול את הדפים בתוצאות החיפוש אם אין להם הרשאה לסרוק אותם. [מידע נוסף](https://web.dev/is-crawable)."
+  },
+  "lighthouse-core/audits/seo/is-crawlable.js | failureTitle": {
+    "message": "הוספת הדף לאינדקס חסומה"
+  },
+  "lighthouse-core/audits/seo/is-crawlable.js | title": {
+    "message": "הוספת הדף לאינדקס אינה חסומה"
+  },
+  "lighthouse-core/audits/seo/link-text.js | description": {
+    "message": "טקסט שמתאר את הקישורים עוזר למנועי חיפוש להבין במה עוסק התוכן. [מידע נוסף](https://web.dev/link-text)."
+  },
+  "lighthouse-core/audits/seo/link-text.js | displayValue": {
+    "message": "{itemCount,plural, =1{נמצא קישור אחד}two{נמצאו # קישורים}many{נמצאו # קישורים}other{נמצאו # קישורים}}"
+  },
+  "lighthouse-core/audits/seo/link-text.js | failureTitle": {
+    "message": "אין לקישורים טקסט תיאורי"
+  },
+  "lighthouse-core/audits/seo/link-text.js | title": {
+    "message": "לקישורים יש טקסט תיאורי"
+  },
+  "lighthouse-core/audits/seo/manual/structured-data.js | description": {
+    "message": "כדי לאמת את תקינות הנתונים המובְנים צריך להפעיל את [הכלי לבדיקת הנתונים המובְנים](https://search.google.com/structured-data/testing-tool/) ואת [הלינטר (Linter) לנתונים מובנְים](http://linter.structured-data.org/). [מידע נוסף](https://web.dev/structured-data)."
+  },
+  "lighthouse-core/audits/seo/manual/structured-data.js | title": {
+    "message": "הנתונים המובְנים חוקיים"
+  },
+  "lighthouse-core/audits/seo/meta-description.js | description": {
+    "message": "תיאורי מטא יכולים להופיע בתוצאות החיפוש כדי לספק סיכום תמציתי של תוכן הדף. [מידע נוסף](https://web.dev/meta-description)."
+  },
+  "lighthouse-core/audits/seo/meta-description.js | explanation": {
+    "message": "טקסט התיאור ריק."
+  },
+  "lighthouse-core/audits/seo/meta-description.js | failureTitle": {
+    "message": "אין למסמך מטא תיאור"
+  },
+  "lighthouse-core/audits/seo/meta-description.js | title": {
+    "message": "יש למסמך מטא תיאור"
+  },
+  "lighthouse-core/audits/seo/plugins.js | description": {
+    "message": "מנועי חיפוש לא יכולים להוסיף לאינדקס תוכן של פלאגין, ומכשירים רבים מגבילים יישומי פלאגין או לא תומכים בהם. [מידע נוסף](https://web.dev/plugins)."
+  },
+  "lighthouse-core/audits/seo/plugins.js | failureTitle": {
+    "message": "במסמך נעשה שימוש ביישומי פלאגין"
+  },
+  "lighthouse-core/audits/seo/plugins.js | title": {
+    "message": "אין במסמך שימוש ביישומי פלאגין"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | description": {
+    "message": "אם קובץ robots.txt אינו תקין, ייתכן שסורקים לא יוכלו להבין איך ברצונך שהאתר ייסרק או ייתווסף לאינדקס. [מידע נוסף](https://web.dev/robots-txt)."
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | displayValueHttpBadCode": {
+    "message": "הבקשה לקובץ robots.txt החזירה מצב HTTP‏: {statusCode}"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | displayValueValidationError": {
+    "message": "{itemCount,plural, =1{נמצאה שגיאה אחת}two{נמצאו # שגיאות}many{נמצאו # שגיאות}other{נמצאו # שגיאות}}"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | explanation": {
+    "message": "מערכת Lighthouse לא הצליחה להוריד קובץ robots.txt"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | failureTitle": {
+    "message": "robots.txt אינו חוקי"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | title": {
+    "message": "הקובץ robots.txt חוקי"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | description": {
+    "message": "כדי שיהיה קל להקיש על רכיבים אינטראקטיביים, כמו לחצנים וקישורים, בלי לגעת ברכיבים אחרים, הם צריכים להיות גדולים מספיק (48x48 פיקסלים) ועם ריווח גדול מספיק סביבם. [מידע נוסף](https://web.dev/tap-targets)."
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | displayValue": {
+    "message": "{decimalProportion, number, percent} מבין יעדי ההקשה הם בגודל תקין"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | explanationViewportMetaNotOptimized": {
+    "message": "רכיבי ההקשה קטנים מדי כי לא בוצעה אופטימיזציית מטא תגים של אזור התצוגה למסכים של ניידים"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | failureTitle": {
+    "message": "הגודל של רכיבי ההקשה הוגדר בצורה לא תקינה"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | overlappingTargetHeader": {
+    "message": "יעד חופף"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | tapTargetHeader": {
+    "message": "רכיב הקשה"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | title": {
+    "message": "הרכיבים להקשה הוגדרו בגודל המתאים"
+  },
+  "lighthouse-core/audits/service-worker.js | description": {
+    "message": "קובץ השירות (service worker) הוא הטכנולוגיה שמאפשרת לאפליקציה שלך להשתמש במספר תכונות Progressive Web App, כמו 'מצב לא מקוון', 'הוספה לדף הבית' ו'התראות'. [מידע נוסף](https://developers.google.com/web/tools/lighthouse/audits/registered-service-worker)."
+  },
+  "lighthouse-core/audits/service-worker.js | explanationBadManifest": {
+    "message": "דף זה נשלט על ידי קובץ שירות (service worker), אך לא נמצא `start_url` כי לא ניתן היה לנתח את המניפסט בתור JSON תקף"
+  },
+  "lighthouse-core/audits/service-worker.js | explanationBadStartUrl": {
+    "message": "דף זה נשלט על ידי קובץ שירות (service worker), אך ה-`start_url` ({startUrl}) לא נמצא בטווח ({scopeUrl}) של קובץ השירות"
+  },
+  "lighthouse-core/audits/service-worker.js | explanationNoManifest": {
+    "message": "דף זה נשלט על ידי קובץ שירות (service worker), אך לא נמצא `start_url` כי לא אוחזר מניפסט."
+  },
+  "lighthouse-core/audits/service-worker.js | explanationOutOfScope": {
+    "message": "למקור זה יש לפחות קובץ שירות (service worker) אחד, אך הדף ({pageUrl}) לא נמצא בטווח."
+  },
+  "lighthouse-core/audits/service-worker.js | failureTitle": {
+    "message": "לא רושם קובץ שירות (service worker) ששולט בדף וב-`start_url`"
+  },
+  "lighthouse-core/audits/service-worker.js | title": {
+    "message": "רושם קובץ שירות (service worker) ששולט בדף וב-`start_url`"
+  },
+  "lighthouse-core/audits/splash-screen.js | description": {
+    "message": "מסך פתיחה מעוצב מבטיח חוויה באיכות גבוהה כשמשתמשים מפעילים את האפליקציה שלך ממסכי הבית שלהם. [מידע נוסף](https://developers.google.com/web/tools/lighthouse/audits/custom-splash-screen)."
+  },
+  "lighthouse-core/audits/splash-screen.js | failureTitle": {
+    "message": "לא מוגדר עבור מסך פתיחה בהתאמה אישית"
+  },
+  "lighthouse-core/audits/splash-screen.js | title": {
+    "message": "מוגדר עבור מסך פתיחה בהתאמה אישית"
+  },
+  "lighthouse-core/audits/themed-omnibox.js | description": {
+    "message": "ניתן לעצב את סרגל הכתובות של הדפדפן כך שיתאים לאתר שלך. [מידע נוסף](https://developers.google.com/web/tools/lighthouse/audits/address-bar)."
+  },
+  "lighthouse-core/audits/themed-omnibox.js | failureTitle": {
+    "message": "לא מגדיר צבע עיצוב עבור סרגל הכתובות."
+  },
+  "lighthouse-core/audits/themed-omnibox.js | title": {
+    "message": "מגדיר צבע עיצוב עבור סרגל הכתובות."
+  },
+  "lighthouse-core/audits/third-party-summary.js | columnBlockingTime": {
+    "message": "משך החסימה של התהליכון הראשי"
+  },
+  "lighthouse-core/audits/third-party-summary.js | columnThirdParty": {
+    "message": "צד שלישי"
+  },
+  "lighthouse-core/audits/third-party-summary.js | description": {
+    "message": "קוד של צד שלישי עשוי להשפיע בצורה משמעותית על ביצועי הטעינה. מומלץ להגביל את הכמות של ספקי צד שלישי שאינם הכרחיים ולהשתדל לטעון קודים של צד שלישי רק אחרי שמסתיימת הטעינה של הדף. [מידע נוסף](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/loading-third-party-javascript/)."
+  },
+  "lighthouse-core/audits/third-party-summary.js | displayValue": {
+    "message": "קוד של צד שלישי חסם את התהליכון הראשי למשך {timeInMs, number, milliseconds} אלפיות השנייה"
+  },
+  "lighthouse-core/audits/third-party-summary.js | failureTitle": {
+    "message": "עליך להפחית את השפעת הקוד של צד שלישי"
+  },
+  "lighthouse-core/audits/third-party-summary.js | title": {
+    "message": "שימוש של צד שלישי"
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | description": {
+    "message": "'זמן עד בייט ראשון' (Time To First Byte) הוא פרק הזמן שחולף עד שהשרת שולח תגובה. [מידע נוסף](https://developers.google.com/web/tools/lighthouse/audits/ttfb)."
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | displayValue": {
+    "message": "טעינת מסמך השורש ארכה {timeInMs, number, milliseconds} אלפיות שנייה"
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | failureTitle": {
+    "message": "יש לקצר את זמני התגובה של השרת (TTFB)"
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | title": {
+    "message": "זמני התגובה של השרת ארוכים (TTFB)"
+  },
+  "lighthouse-core/audits/user-timings.js | columnDuration": {
+    "message": "משך זמן"
+  },
+  "lighthouse-core/audits/user-timings.js | columnStartTime": {
+    "message": "שעת התחלה"
+  },
+  "lighthouse-core/audits/user-timings.js | columnType": {
+    "message": "סוג"
+  },
+  "lighthouse-core/audits/user-timings.js | description": {
+    "message": "כדי למדוד את ביצועי האפליקציה בפועל במהלך חוויות משתמש חשובות, כדאי לשקול את האפשרות להוסיף לאפליקציה את User Timing API. [מידע נוסף](https://developers.google.com/web/tools/lighthouse/audits/user-timing)."
+  },
+  "lighthouse-core/audits/user-timings.js | displayValue": {
+    "message": "{itemCount,plural, =1{תזמון משתמש אחד}two{# תזמוני משתמש}many{# תזמוני משתמש}other{# תזמוני משתמש}}"
+  },
+  "lighthouse-core/audits/user-timings.js | title": {
+    "message": "סימונים ומדידות של User Timing"
+  },
+  "lighthouse-core/audits/uses-rel-preconnect.js | crossoriginWarning": {
+    "message": "נמצא רכיב <link> לקישור מראש בשביל \"{securityOrigin}\", אבל הדפדפן לא השתמש בו. יש לוודא שנעשה שימוש תקין במאפיין `crossorigin`."
+  },
+  "lighthouse-core/audits/uses-rel-preconnect.js | description": {
+    "message": "כדאי לשקול להוסיף את ההינטים של המשאבים `preconnect` או `dns-prefetch` כדי ליצור מראש קישורים אל מקורות חשובים של צד שלישי. [מידע נוסף](https://developers.google.com/web/fundamentals/performance/resource-prioritization#preconnect)."
+  },
+  "lighthouse-core/audits/uses-rel-preconnect.js | title": {
+    "message": "יש להתחבר מראש למקורות נדרשים"
+  },
+  "lighthouse-core/audits/uses-rel-preload.js | crossoriginWarning": {
+    "message": "נמצא ערך <link> של טעינה מראש בשביל \"{preloadURL}\", אבל הדפדפן לא השתמש בו. יש לוודא שנעשה שימוש תקין במאפיין `crossorigin`."
+  },
+  "lighthouse-core/audits/uses-rel-preload.js | description": {
+    "message": "כדאי לשקול את האפשרות להשתמש ב-`<link rel=preload>` כדי לקבוע את סדר העדיפויות של אחזור משאבים שנדרשים בשלב מאוחר יותר של טעינת הדף. [מידע נוסף](https://developers.google.com/web/tools/lighthouse/audits/preload)."
+  },
+  "lighthouse-core/audits/uses-rel-preload.js | title": {
+    "message": "יש לטעון מראש בקשות עיקריות"
+  },
+  "lighthouse-core/audits/viewport.js | description": {
+    "message": "כדי לבצע אופטימיזציה של האפליקציה למסכים של ניידים, עליך להוסיף את התג `<meta name=\"viewport\">`. [מידע נוסף](https://developers.google.com/web/tools/lighthouse/audits/has-viewport-meta-tag)."
+  },
+  "lighthouse-core/audits/viewport.js | explanationNoTag": {
+    "message": "לא נמצא תג `<meta name=\"viewport\">`"
+  },
+  "lighthouse-core/audits/viewport.js | failureTitle": {
+    "message": "אין תג `<meta name=\"viewport\">` עם `width` או `initial-scale`"
+  },
+  "lighthouse-core/audits/viewport.js | title": {
+    "message": "יש תג `<meta name=\"viewport\">` עם `width` או `initial-scale`"
+  },
+  "lighthouse-core/audits/without-javascript.js | description": {
+    "message": "האפליקציה שלך צריכה להציג תוכן כלשהו כשה-JavaScript מושבת, גם אם זו רק אזהרה למשתמש שנדרש JavaScript כדי להשתמש באפליקציה. [מידע נוסף](https://developers.google.com/web/tools/lighthouse/audits/no-js)."
+  },
+  "lighthouse-core/audits/without-javascript.js | explanation": {
+    "message": "אם הסקריפטים של גוף הדף לא זמינים, הוא צריך לעבד תוכן כלשהו."
+  },
+  "lighthouse-core/audits/without-javascript.js | failureTitle": {
+    "message": "לא מספק תוכן חלופי כש-JavaScript לא זמין"
+  },
+  "lighthouse-core/audits/without-javascript.js | title": {
+    "message": "מכיל תוכן כלשהו כש-JavaScript לא זמין"
+  },
+  "lighthouse-core/audits/works-offline.js | description": {
+    "message": "אם בונים Progressive Web App, מומלץ לשקול להשתמש בקובץ שירות (service worker) כדי שהאפליקציה תוכל לעבוד במצב לא מקוון. [מידע נוסף](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)."
+  },
+  "lighthouse-core/audits/works-offline.js | failureTitle": {
+    "message": "דף זה לא מגיב בסטטוס 200 כשהוא במצב לא מקוון"
+  },
+  "lighthouse-core/audits/works-offline.js | title": {
+    "message": "דף זה מגיב בסטטוס 200 כשהוא במצב לא מקוון"
+  },
+  "lighthouse-core/audits/works-offline.js | warningNoLoad": {
+    "message": "ייתכן שהדף לא נטען באופן לא מקוון בגלל שכתובת ה-URL לבדיקה ({requested}) הופנתה אל \"{final}\". מומלץ לבדוק את כתובת ה-URL השנייה באופן ישיר."
+  },
+  "lighthouse-core/config/default-config.js | a11yAriaGroupDescription": {
+    "message": "אלו הזדמנויות לשיפור השימוש ב-ARIA באפליקציה, והן יכולות לשפר את החוויה של משתמשים שנעזרים בטכנולוגיות לנגישות, כמו קוראי מסך."
+  },
+  "lighthouse-core/config/default-config.js | a11yAriaGroupTitle": {
+    "message": "ARIA"
+  },
+  "lighthouse-core/config/default-config.js | a11yAudioVideoGroupDescription": {
+    "message": "אלה הזדמנויות לספק תוכן חלופי לווידאו ואודיו. הפעולות האלה יכולות לשפר את החוויה של משתמשים עם לקויות שמיעה או ראייה."
+  },
+  "lighthouse-core/config/default-config.js | a11yAudioVideoGroupTitle": {
+    "message": "וידאו ואודיו"
+  },
+  "lighthouse-core/config/default-config.js | a11yBestPracticesGroupDescription": {
+    "message": "הפריטים האלה מדגישים שיטות מומלצות נפוצות בשביל נגישות."
+  },
+  "lighthouse-core/config/default-config.js | a11yBestPracticesGroupTitle": {
+    "message": "שיטות מומלצות"
+  },
+  "lighthouse-core/config/default-config.js | a11yCategoryDescription": {
+    "message": "הבדיקות האלה מדגישות הזדמנויות [לשפר את הנגישות של אפליקציית האינטרנט](https://developers.google.com/web/fundamentals/accessibility). אפשר לזהות באופן אוטומטי רק חלק מבעיות הנגישות, ולכן מומלץ לבצע גם בדיקות ידניות."
+  },
+  "lighthouse-core/config/default-config.js | a11yCategoryManualDescription": {
+    "message": "הפריטים האלה בודקים תחומים שלא ניתן לבדוק באמצעות כלי בדיקה אוטומטיים. מידע נוסף זמין במדריך שלנו שבו מוסבר [איך לערוך בדיקת נגישות](https://developers.google.com/web/fundamentals/accessibility/how-to-review)."
+  },
+  "lighthouse-core/config/default-config.js | a11yCategoryTitle": {
+    "message": "נגישות"
+  },
+  "lighthouse-core/config/default-config.js | a11yColorContrastGroupDescription": {
+    "message": "אלו הזדמנויות לשיפורים שיאפשרו לקרוא את התוכן בצורה קלה יותר."
+  },
+  "lighthouse-core/config/default-config.js | a11yColorContrastGroupTitle": {
+    "message": "ניגודיות"
+  },
+  "lighthouse-core/config/default-config.js | a11yLanguageGroupDescription": {
+    "message": "אלו הזדמנויות לשיפור של פענוח התוכן על-ידי משתמשים בלוקאלים שונים."
+  },
+  "lighthouse-core/config/default-config.js | a11yLanguageGroupTitle": {
+    "message": "התאמה לשוק המקומי והבינלאומי"
+  },
+  "lighthouse-core/config/default-config.js | a11yNamesLabelsGroupDescription": {
+    "message": "אלו הזדמנויות לשיפור הסמנטיקה של פקדים באפליקציה. הן יכולות לשפר את החוויה של משתמשים שנעזרים בטכנולוגיות לנגישות, כמו קורא מסך."
+  },
+  "lighthouse-core/config/default-config.js | a11yNamesLabelsGroupTitle": {
+    "message": "שמות ותוויות"
+  },
+  "lighthouse-core/config/default-config.js | a11yNavigationGroupDescription": {
+    "message": "אלו הזדמנויות לשיפור הניווט באפליקציה באמצעות מקלדת."
+  },
+  "lighthouse-core/config/default-config.js | a11yNavigationGroupTitle": {
+    "message": "ניווט"
+  },
+  "lighthouse-core/config/default-config.js | a11yTablesListsVideoGroupDescription": {
+    "message": "אלו הזדמנויות לשיפור החוויה של קריאת נתונים בטבלאות או רשימות באמצעות טכנולוגיה לנגישות, כמו קורא מסך."
+  },
+  "lighthouse-core/config/default-config.js | a11yTablesListsVideoGroupTitle": {
+    "message": "טבלאות ורשימות"
+  },
+  "lighthouse-core/config/default-config.js | bestPracticesCategoryTitle": {
+    "message": "שיטות מומלצות"
+  },
+  "lighthouse-core/config/default-config.js | budgetsGroupDescription": {
+    "message": "באמצעות תקציבי ביצועים ניתן להגדיר יעדי ביצועים עבור האתר."
+  },
+  "lighthouse-core/config/default-config.js | budgetsGroupTitle": {
+    "message": "תקציבים"
+  },
+  "lighthouse-core/config/default-config.js | diagnosticsGroupDescription": {
+    "message": "מידע נוסף לגבי ביצועי האפליקציה. למספרים האלה אין [השפעה ישירה](https://github.com/GoogleChrome/lighthouse/blob/d2ec9ffbb21de9ad1a0f86ed24575eda32c796f0/docs/scoring.md#how-are-the-scores-weighted) על ציון הביצועים."
+  },
+  "lighthouse-core/config/default-config.js | diagnosticsGroupTitle": {
+    "message": "ניתוחים"
+  },
+  "lighthouse-core/config/default-config.js | firstPaintImprovementsGroupDescription": {
+    "message": "היבט הביצועים הקריטי ביותר הוא מהירות העיבוד של פיקסלים במסך. ערכי מפתח: הצגת התוכן הראשוני, הצגת התוכן העיקרי"
+  },
+  "lighthouse-core/config/default-config.js | firstPaintImprovementsGroupTitle": {
+    "message": "שיפורים בעיבוד ראשון"
+  },
+  "lighthouse-core/config/default-config.js | loadOpportunitiesGroupDescription": {
+    "message": "ההצעות האלה יכולות לעזור לך להאיץ את טעינת הדף. אין להן [השפעה ישירה](https://github.com/GoogleChrome/lighthouse/blob/d2ec9ffbb21de9ad1a0f86ed24575eda32c796f0/docs/scoring.md#how-are-the-scores-weighted) על ציון הביצועים."
+  },
+  "lighthouse-core/config/default-config.js | loadOpportunitiesGroupTitle": {
+    "message": "הזדמנויות"
+  },
+  "lighthouse-core/config/default-config.js | metricGroupTitle": {
+    "message": "ערכים"
+  },
+  "lighthouse-core/config/default-config.js | overallImprovementsGroupDescription": {
+    "message": "צריך לשפר את חוויית הטעינה הכללית, כך שהדף יגיב ויהיה מוכן לשימוש במהירות האפשרית. ערכי מפתח: זמן עד לאינטראקטיביות (Time to Interactive), מדד מהירות (Speed Index)"
+  },
+  "lighthouse-core/config/default-config.js | overallImprovementsGroupTitle": {
+    "message": "סך השיפורים"
+  },
+  "lighthouse-core/config/default-config.js | performanceCategoryTitle": {
+    "message": "ביצועים"
+  },
+  "lighthouse-core/config/default-config.js | pwaCategoryDescription": {
+    "message": "בדיקות אלה נותנות תוקף להיבטים של Progressive Web App. [מידע נוסף](https://developers.google.com/web/progressive-web-apps/checklist)."
+  },
+  "lighthouse-core/config/default-config.js | pwaCategoryManualDescription": {
+    "message": "בדיקות אלה נדרשות עבור שורת הבסיס [רשימת משימות של PWA](https://developers.google.com/web/progressive-web-apps/checklist), אך הן לא נבדקות באופן אוטומטי על ידי Lighthouse. הן לא משפיעות על הניקוד שלך, אך חשוב לאמת אותן באופן ידני."
+  },
+  "lighthouse-core/config/default-config.js | pwaCategoryTitle": {
+    "message": "Progressive Web App"
+  },
+  "lighthouse-core/config/default-config.js | pwaFastReliableGroupTitle": {
+    "message": "מהיר ואמין"
+  },
+  "lighthouse-core/config/default-config.js | pwaInstallableGroupTitle": {
+    "message": "ניתן להתקנה"
+  },
+  "lighthouse-core/config/default-config.js | pwaOptimizedGroupTitle": {
+    "message": "מותאם ל-PWA"
+  },
+  "lighthouse-core/config/default-config.js | seoCategoryDescription": {
+    "message": "הבדיקות האלה עוזרות לוודא שהתוכן בדף עבר אופטימיזציה לשיפור הדירוג בתוצאות של מנועי חיפוש. יש גורמים נוספים שעשויים להשפיע על הדירוג בחיפוש, אבל מערכת Lighthouse לא בודקת אותם. [מידע נוסף](https://support.google.com/webmasters/answer/35769)."
+  },
+  "lighthouse-core/config/default-config.js | seoCategoryManualDescription": {
+    "message": "אפשר להפעיל באתר את המאמתים הנוספים האלה כדי לבדוק עוד שיטות מומלצות של אופטימיזציה למנועי חיפוש."
+  },
+  "lighthouse-core/config/default-config.js | seoCategoryTitle": {
+    "message": "אופטימיזציה למנועי חיפוש"
+  },
+  "lighthouse-core/config/default-config.js | seoContentGroupDescription": {
+    "message": "יש לכתוב את קוד ה-HTML באופן שיאפשר לסורקים להבין את תוכן האפליקציה בצורה טובה יותר."
+  },
+  "lighthouse-core/config/default-config.js | seoContentGroupTitle": {
+    "message": "שיטות מומלצות לגבי תוכן"
+  },
+  "lighthouse-core/config/default-config.js | seoCrawlingGroupDescription": {
+    "message": "כדי שהאפליקציה תופיע בתוצאות החיפוש, סורקים צריכים לקבל גישה אליה."
+  },
+  "lighthouse-core/config/default-config.js | seoCrawlingGroupTitle": {
+    "message": "סריקה והוספה לאינדקס"
+  },
+  "lighthouse-core/config/default-config.js | seoMobileGroupDescription": {
+    "message": "הדפים צריכים להתאים לניידים, כדי שמשתמשים לא יצטרכו לעשות תנועת צביטה או לשנות את המרחק מהתצוגה כדי לקרוא את דפי התוכן. [מידע נוסף](https://developers.google.com/search/mobile-sites/)."
+  },
+  "lighthouse-core/config/default-config.js | seoMobileGroupTitle": {
+    "message": "התאמה לניידים"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnCacheTTL": {
+    "message": "אורך חיים (TTL) של מטמון"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnLocation": {
+    "message": "מיקום"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnName": {
+    "message": "שם"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnRequests": {
+    "message": "בקשות"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnResourceType": {
+    "message": "סוג המשאב"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnSize": {
+    "message": "גודל"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnTimeSpent": {
+    "message": "משך הזמן שנדרש"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnTransferSize": {
+    "message": "גודל ההעברה"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnURL": {
+    "message": "כתובת אתר"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnWastedBytes": {
+    "message": "פוטנציאל חיסכון"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnWastedMs": {
+    "message": "פוטנציאל חיסכון"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | displayValueByteSavings": {
+    "message": "צמצום של ‎{wastedBytes, number, bytes} KB"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | displayValueMsSavings": {
+    "message": "פוטנציאל לקיצור זמן הטעינה ב-{wastedMs, number, milliseconds} אלפיות שנייה"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | documentResourceType": {
+    "message": "מסמך"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | fontResourceType": {
+    "message": "גופן"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | imageResourceType": {
+    "message": "תמונה"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | mediaResourceType": {
+    "message": "מדיה"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | ms": {
+    "message": "{timeInMs, number, milliseconds} אלפיות שנייה"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | otherResourceType": {
+    "message": "אחר"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | scriptResourceType": {
+    "message": "סקריפט"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | seconds": {
+    "message": "{timeInMs, number, seconds} שנ'"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | stylesheetResourceType": {
+    "message": "גליון סגנונות"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | thirdPartyResourceType": {
+    "message": "צד שלישי"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | totalResourceType": {
+    "message": "סה\"כ"
+  },
+  "lighthouse-core/lib/lh-error.js | badTraceRecording": {
+    "message": "משהו השתבש בתיעוד המעקב אחרי טעינת הדף. יש להריץ שוב את Lighthouse. ({errorCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | criTimeout": {
+    "message": "חלף הזמן הקצוב לתפוגה בהמתנה לחיבור הראשוני של פרוטוקול Debugger."
+  },
+  "lighthouse-core/lib/lh-error.js | didntCollectScreenshots": {
+    "message": "לא נאספו צילומי מסך ב-Chrome במהלך טעינת הדף. כדאי לוודא תחילה שיש תוכן גלוי בדף, ורק אז להריץ מחדש את Lighthouse. ({errorCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | dnsFailure": {
+    "message": "שרתי DNS לא הצליחו לפענח את הדומיין שצוין."
+  },
+  "lighthouse-core/lib/lh-error.js | erroredRequiredArtifact": {
+    "message": "בפעולת האיסוף של המשאב הנדרש {artifactName} הייתה שגיאה: {errorMessage}"
+  },
+  "lighthouse-core/lib/lh-error.js | internalChromeError": {
+    "message": "קרתה שגיאה פנימית של Chrome. יש להפעיל מחדש את Chrome ולנסות להריץ שוב את Lighthouse."
+  },
+  "lighthouse-core/lib/lh-error.js | missingRequiredArtifact": {
+    "message": "פעולת האיסוף של המשאב הנדרש {artifactName} לא בוצעה."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailed": {
+    "message": "מערכת Lighthouse לא הצליחה לטעון באופן מהימן את הדף שביקשת. יש לוודא שהבדיקה מתבצעת בכתובת ה-URL הנכונה ושהשרת מגיב באופן תקין לכל הבקשות."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedHung": {
+    "message": "מערכת Lighthouse לא הצליחה לטעון באופן מהימן את כתובת ה-URL שביקשת, כי הדף הפסיק להגיב."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedInsecure": {
+    "message": "לכתובת ה-URL שסיפקת אין אישור אבטחה חוקי. {securityMessages}"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedInterstitial": {
+    "message": "דפדפן Chrome מנע טעינה של דף והציג מסך מעברון במקומו. יש לוודא שהבדיקה מתבצעת בכתובת ה-URL הנכונה ושהשרת מגיב באופן תקין לכל הבקשות."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedWithDetails": {
+    "message": "מערכת Lighthouse לא הצליחה לטעון באופן מהימן את הדף שביקשת. יש לוודא שהבדיקה מתבצעת בכתובת ה-URL הנכונה ושהשרת מגיב באופן תקין לכל הבקשות. (פרטים: {errorDetails})"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedWithStatusCode": {
+    "message": "מערכת Lighthouse לא הצליחה לטעון באופן מהימן את הדף שביקשת. יש לוודא שהבדיקה מתבצעת בכתובת ה-URL הנכונה ושהשרת מגיב באופן תקין לכל הבקשות. (קוד סטטוס: {statusCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadTookTooLong": {
+    "message": "טעינת הדף ארכה זמן רב מדי. מומלץ ליישם את ההמלצות שבדוח כדי לקצר את זמן הטעינה של הדף, ואז לנסות להריץ שוב את Lighthouse. ({errorCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | protocolTimeout": {
+    "message": "משך ההמתנה לפרוטוקול DevTools חרג מהזמן המוקצב. (שיטה: {protocolMethod})"
+  },
+  "lighthouse-core/lib/lh-error.js | requestContentTimeout": {
+    "message": "אחזור תוכן של משאבים חרג מהזמן המוקצב"
+  },
+  "lighthouse-core/lib/lh-error.js | urlInvalid": {
+    "message": "נראה שכתובת ה-URL שסיפקת אינה חוקית."
+  },
+  "lighthouse-core/report/html/renderer/util.js | auditGroupExpandTooltip": {
+    "message": "הצגת בדיקות"
+  },
+  "lighthouse-core/report/html/renderer/util.js | crcInitialNavigation": {
+    "message": "ניווט התחלתי"
+  },
+  "lighthouse-core/report/html/renderer/util.js | crcLongestDurationLabel": {
+    "message": "זמן אחזור מקסימלי של נתיב קריטי:"
+  },
+  "lighthouse-core/report/html/renderer/util.js | errorLabel": {
+    "message": "שגיאה!"
+  },
+  "lighthouse-core/report/html/renderer/util.js | errorMissingAuditInfo": {
+    "message": "שגיאה בדוח: אין מידע על הבדיקה"
+  },
+  "lighthouse-core/report/html/renderer/util.js | labDataTitle": {
+    "message": "נתוני בדיקה"
+  },
+  "lighthouse-core/report/html/renderer/util.js | lsPerformanceCategoryDescription": {
+    "message": "ניתוח [Lighthouse](https://developers.google.com/web/tools/lighthouse/) של הדף הנוכחי באמולציה של רשת סלולרית. הערכים מהווים אומדן והם עשויים להשתנות."
+  },
+  "lighthouse-core/report/html/renderer/util.js | manualAuditsGroupTitle": {
+    "message": "פריטים נוספים שיש לבדוק באופן ידני"
+  },
+  "lighthouse-core/report/html/renderer/util.js | notApplicableAuditsGroupTitle": {
+    "message": "לא רלוונטי"
+  },
+  "lighthouse-core/report/html/renderer/util.js | opportunityResourceColumnLabel": {
+    "message": "הזדמנות"
+  },
+  "lighthouse-core/report/html/renderer/util.js | opportunitySavingsColumnLabel": {
+    "message": "אומדן חיסכון"
+  },
+  "lighthouse-core/report/html/renderer/util.js | passedAuditsGroupTitle": {
+    "message": "בדיקות עם ציון 'עובר'"
+  },
+  "lighthouse-core/report/html/renderer/util.js | snippetCollapseButtonLabel": {
+    "message": "כיווץ קטע הטקסט"
+  },
+  "lighthouse-core/report/html/renderer/util.js | snippetExpandButtonLabel": {
+    "message": "הרחבת קטע הטקסט"
+  },
+  "lighthouse-core/report/html/renderer/util.js | thirdPartyResourcesLabel": {
+    "message": "הצגה של משאבי צד שלישי"
+  },
+  "lighthouse-core/report/html/renderer/util.js | toplevelWarningsMessage": {
+    "message": "היו בעיות שהשפיעו על ההרצה הזו של Lighthouse:"
+  },
+  "lighthouse-core/report/html/renderer/util.js | varianceDisclaimer": {
+    "message": "הערכים מהווים אומדן והם עשויים להשתנות. ציון הביצועים [מבוסס רק על המדדים האלה](https://github.com/GoogleChrome/lighthouse/blob/d2ec9ffbb21de9ad1a0f86ed24575eda32c796f0/docs/scoring.md#how-are-the-scores-weighted)."
+  },
+  "lighthouse-core/report/html/renderer/util.js | warningAuditsGroupTitle": {
+    "message": "בדיקות שהסתיימו בציון 'עובר', אבל עם אזהרות"
+  },
+  "lighthouse-core/report/html/renderer/util.js | warningHeader": {
+    "message": "אזהרות: "
+  },
+  "stack-packs/packs/wordpress.js | efficient_animated_content": {
+    "message": "אפשר להעלות את ה-GIF לשירות שיאפשר להטמיע אותו כסרטון HTML5."
+  },
+  "stack-packs/packs/wordpress.js | offscreen_images": {
+    "message": "ניתן להתקין [פלאגין של WordPress לטעינה מדורגת](https://wordpress.org/plugins/search/lazy+load/) שמאפשר לדחות את הטעינה של רכיבים שאינם מופיעים מיד במסך. ניתן גם להשתמש בעיצוב שמספק את האפשרות הזו. אפשרות נוספת היא להשתמש ב[פלאגין של AMP](https://wordpress.org/plugins/amp/)."
+  },
+  "stack-packs/packs/wordpress.js | render_blocking_resources": {
+    "message": "יש כמה יישומי פלאגין של WordPress שיכולים לעזור לך [להטביע נכסים קריטיים](https://wordpress.org/plugins/search/critical+css/) או [לדחות טעינה של משאבים פחות חשובים](https://wordpress.org/plugins/search/defer+css+javascript/). חשוב: ייתכן שהאופטימיזציות המבוצעות על ידי יישומי הפלאגין האלה יגרמו לתקלות בתכונות של העיצוב או יישומי הפלאגין האחרים, ולכן כנראה שיהיה צורך לבצע שינויים בקוד."
+  },
+  "stack-packs/packs/wordpress.js | time_to_first_byte": {
+    "message": "עיצובים, יישומי פלאגין ומפרטי שרתים משפיעים על זמן התגובה של השרת. אפשר להשתמש בעיצוב שעבר אופטימיזציה, לבחור בקפידה פלאגין לאופטימיזציה ו/או לשדרג את השרת."
+  },
+  "stack-packs/packs/wordpress.js | total_byte_weight": {
+    "message": "אפשר להציג קטעים ברשימות הפוסטים (למשל, עם תג 'עוד'), לצמצם את מספר הפוסטים המוצגים בדף נתון, לחלק פוסטים ארוכים למספר דפים או להשתמש בפלאגין כדי לטעון תגובות בצורה מדורגת."
+  },
+  "stack-packs/packs/wordpress.js | unminified_css": {
+    "message": "יש כמה [יישומי פלאגין של WordPress](https://wordpress.org/plugins/search/minify+css/) שיכולים להאיץ את האתר על ידי שרשור, הקטנה ודחיסה של סגנונות. ניתן גם להשתמש בתהליך build כדי לבצע את ההקטנה מראש, אם אפשר."
+  },
+  "stack-packs/packs/wordpress.js | unminified_javascript": {
+    "message": "יש כמה [יישומי פלאגין של WordPress](https://wordpress.org/plugins/search/minify+javascript/) שיכולים להאיץ את האתר על ידי שרשור, הקטנה ודחיסה של סקריפטים. ניתן גם להשתמש בתהליך build כדי לבצע את ההקטנה מראש, אם אפשר."
+  },
+  "stack-packs/packs/wordpress.js | unused_css_rules": {
+    "message": "כדאי לשקול לצמצם את מספר [יישומי הפלאגין של WordPress](https://wordpress.org/plugins/) שטוענים תוכן CSS בלתי נחוץ בדף, או להשבית אותם. כדי לזהות יישומי פלאגין שמוסיפים תוכן CSS מיותר, אפשר להפעיל [כיסוי קוד](https://developers.google.com/web/updates/2017/04/devtools-release-notes#coverage) ב-Chrome DevTools. לפי כתובת ה-URL של גיליון הסגנונות, ניתן לזהות את העיצוב/הפלאגין שאחראים להוספת התוכן. יישומי הפלאגין הבעייתיים הם אלה שברשימת גיליונות הסגנונות שלהם יש כמות גדולה של כיסוי קוד באדום. פלאגין צריך להכניס גיליון סגנונות לתור רק אם נעשה בו שימוש בדף."
+  },
+  "stack-packs/packs/wordpress.js | unused_javascript": {
+    "message": "כדאי לשקול לצמצם את מספר [יישומי הפלאגין של WordPress](https://wordpress.org/plugins/) שטוענים תוכן JavaScript בלתי נחוץ בדף, או להשבית אותם. כדי לזהות יישומי פלאגין שמוסיפים תוכן JS מיותר, אפשר להפעיל [כיסוי קוד](https://developers.google.com/web/updates/2017/04/devtools-release-notes#coverage) ב-Chrome DevTools. לפי כתובת ה-URL של הסקריפט, ניתן לזהות את העיצוב/הפלאגין שאחראים להוספת התוכן. יישומי הפלאגין הבעייתיים הם אלה שברשימת הסקריפטים שלהם יש כמות גדולה של כיסוי קוד באדום. פלאגין צריך להכניס סקריפט לתור רק אם נעשה בו שימוש בדף."
+  },
+  "stack-packs/packs/wordpress.js | uses_long_cache_ttl": {
+    "message": "למידע על [שמירה במטמון הדפדפן ב-WordPress](https://codex.wordpress.org/WordPress_Optimization#Browser_Caching)."
+  },
+  "stack-packs/packs/wordpress.js | uses_optimized_images": {
+    "message": "כדאי לשקול להשתמש ב[פלאגין של WordPress לאופטימיזציית תמונות](https://wordpress.org/plugins/search/optimize+images/) שדוחס את התמונות בלי לפגוע באיכות שלהן."
+  },
+  "stack-packs/packs/wordpress.js | uses_responsive_images": {
+    "message": "העלאה של תמונות באופן ישיר דרך [ספריית המדיה](https://codex.wordpress.org/Media_Library_Screen) תאפשר לך לוודא שהתמונות זמינות במידות הדרושות. אחר כך אפשר להוסיף אותן מספריית המדיה או להשתמש בווידג'ט התמונות כדי לוודא שנעשה שימוש בתמונות במידות האופטימליות (כולל תמונות בשביל נקודות מעבר רספונסיביות). יש להימנע משימוש בתמונות ב`Full Size`, אלא אם המימדים מתאימים לשימוש שנעשה בהן. [מידע נוסף](https://codex.wordpress.org/Inserting_Images_into_Posts_and_Pages#Image_Size)."
+  },
+  "stack-packs/packs/wordpress.js | uses_text_compression": {
+    "message": "אפשר להפעיל דחיסת טקסט בהגדרות שרת האינטרנט."
+  },
+  "stack-packs/packs/wordpress.js | uses_webp_images": {
+    "message": "כדאי לשקול להשתמש ב[פלאגין](https://wordpress.org/plugins/search/convert+webp/) או בשירות שימירו את התמונות שהועלו לפורמטים האופטימליים באופן אוטומטי."
+  }
+}
diff --git a/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/hi.json b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/hi.json
new file mode 100644
index 0000000..f17c566
--- /dev/null
+++ b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/hi.json
@@ -0,0 +1,1541 @@
+{
+  "lighthouse-core/audits/accessibility/accesskeys.js | description": {
+    "message": "ऐक्सेस कुंजी से उपयोगकर्ता तेज़ी से पेज के किसी भाग पर फ़ोकस कर सकते हैं. सही नेविगेशन के लिए, हर ऐक्सेस कुंजी सबसे अलग होनी चाहिए. [ज़्यादा जानें](https://web.dev/accesskeys/)."
+  },
+  "lighthouse-core/audits/accessibility/accesskeys.js | failureTitle": {
+    "message": "`[accesskey]` मान सबसे अलग नहीं हैं"
+  },
+  "lighthouse-core/audits/accessibility/accesskeys.js | title": {
+    "message": "`[accesskey]` के मान सबसे अलग हैं"
+  },
+  "lighthouse-core/audits/accessibility/aria-allowed-attr.js | description": {
+    "message": "हर एआरआईए `role`, `aria-*` विशेषताओं के खास सबसेट पर काम करती है. इनमें मिलान न होने पर `aria-*` विशेषताएं गलत हो जाती हैं. [ज़्यादा जानें](https://web.dev/aria-allowed-attr/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-allowed-attr.js | failureTitle": {
+    "message": "`[aria-*]` विशेषताएं और उनकी भूमिकाएं आपस में मेल नहीं खातीं"
+  },
+  "lighthouse-core/audits/accessibility/aria-allowed-attr.js | title": {
+    "message": "`[aria-*]` विशेषताएं और उनकी भूमिकाएं एक-दूसरे से मेल खाती हैं"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-attr.js | description": {
+    "message": "कुछ ARIA भूमिकाओं में ऐसी विशेषताओं की ज़रूरत होती है जो स्क्रीन रीडर को एलिमेंट की स्थिति बताती हैं. [ज़्यादा जानें](https://web.dev/aria-required-attr/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-required-attr.js | failureTitle": {
+    "message": "`[role]`s में सभी ज़रूरी `[aria-*]` विशेषताएं नहीं हैं"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-attr.js | title": {
+    "message": "`[role]` के पास सभी ज़रूरी `[aria-*]` विशेषताएं हैं"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-children.js | description": {
+    "message": "कुछ ARIA पैरंट भूमिकाओं में खास चाइल्ड भूमिकाएं होनी चाहिए ताकि वे तय किए गए सुलभता फ़ंक्शन कर सकें. [ज़्यादा जानें](https://web.dev/aria-required-children/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-required-children.js | failureTitle": {
+    "message": "`[role]` वाले वे एलिमेंट नहीं मिले जिन्हें खास चिल्ड्रन `[role]` चाहिए होते हैं."
+  },
+  "lighthouse-core/audits/accessibility/aria-required-children.js | title": {
+    "message": "`[role]` वाले वे एलिमेंट मौजूद हैं जिन्हें खास चिल्ड्रन `[role]` चाहिए होते हैं."
+  },
+  "lighthouse-core/audits/accessibility/aria-required-parent.js | description": {
+    "message": "कुछ ARIA चाइल्ड रोल अपने तय सुलभता फ़ंक्शन को ठीक से कर पाएं. इसके लिए, उन्हें खास पैरंट रोल में शामिल होना चाहिए. [ज़्यादा जानें](https://web.dev/aria-required-parent/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-required-parent.js | failureTitle": {
+    "message": "`[role]` अपने ज़रूरी पैरंट एलिमेंट में शामिल नहीं हैं"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-parent.js | title": {
+    "message": "`[role]`अपने लिए ज़रूरी पैरंट एलिमेंट में शामिल हैं."
+  },
+  "lighthouse-core/audits/accessibility/aria-roles.js | description": {
+    "message": "ARIA भूमिकाओं में सही मान होने चाहिए, ताकि वे तय किए गए सुलभता फ़ंक्शन कर सकें. [ज़्यादा जानें](https://web.dev/aria-roles/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-roles.js | failureTitle": {
+    "message": "`[role]` मान सही नहीं हैं"
+  },
+  "lighthouse-core/audits/accessibility/aria-roles.js | title": {
+    "message": "`[role]` मान सही हैं"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr-value.js | description": {
+    "message": "स्क्रीन रीडर जैसी सहायक तकनीक, गलत मानों वाली ARIA विशेषताओं को समझ नहीं सकतीं. [ज़्यादा जानें](https://web.dev/aria-valid-attr-value/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr-value.js | failureTitle": {
+    "message": "`[aria-*]` विशेषताओं में सही मान नहीं हैं"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr-value.js | title": {
+    "message": "`[aria-*]` विशेषताओं के मान सही हैं"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr.js | description": {
+    "message": "स्क्रीन रीडर जैसी सहायक तकनीक, गलत नामों वाली ARIA विशेषताओं को समझ नहीं सकतीं. [ज़्यादा जानें](https://web.dev/aria-valid-attr/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr.js | failureTitle": {
+    "message": "`[aria-*]` विशेषताएं गलत हैं या उनकी वर्तनी गलत है"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr.js | title": {
+    "message": "`[aria-*]` विशेषताएं सही हैं और उनकी वर्तनी गलत नहीं है"
+  },
+  "lighthouse-core/audits/accessibility/audio-caption.js | description": {
+    "message": "ऑडियो एलिमेंट इस्तेमाल करने वाले जो लोग सुन नहीं पाते या जिन्हें कम सुनाई देता है, वे कैप्शन का इस्तेमाल करके एलिमेंट की जानकारी पढ़ सकते हैं. साथ ही, कैप्शन यह भी बताते हैं कि कौन बा़त कर रहा है, वे क्या बोल रहे हैं, और ऐसी ही दूसरी, बोली न जाने वाली जानकारी भी कैप्शन की मदद से लोगों को पता चलती है. [ज़्यादा जानें](https://web.dev/audio-caption/)."
+  },
+  "lighthouse-core/audits/accessibility/audio-caption.js | failureTitle": {
+    "message": "`<audio>` एलिमेंट में `[kind=\"captions\"]` के साथ `<track>` एलिमेंट नहीं है."
+  },
+  "lighthouse-core/audits/accessibility/audio-caption.js | title": {
+    "message": "`<audio>` एलिमेंट में `[kind=\"captions\"]` वाला एक `<track>` एलिमेंट है"
+  },
+  "lighthouse-core/audits/accessibility/axe-audit.js | failingElementsHeader": {
+    "message": "फ़ेल होने वाले एलिमेंट"
+  },
+  "lighthouse-core/audits/accessibility/button-name.js | description": {
+    "message": "अगर बटन का कोई ऐसा नाम नहीं है जिसे ऐक्सेस किया जा सकता है, तो स्क्रीन रीडर उसे \"बटन\" के रूप में बताते हैं. इस वजह से यह उन इस्तेमाल करने वालों के लिए किसी काम का नहीं रहता जो स्क्रीन रीडर से ही टेक्स्ट पढ़ या समझ सकते हैं. [ज़्यादा जानें](https://web.dev/button-name/)."
+  },
+  "lighthouse-core/audits/accessibility/button-name.js | failureTitle": {
+    "message": "बटन के नाम ऐक्सेस करने लायक नहीं हैं"
+  },
+  "lighthouse-core/audits/accessibility/button-name.js | title": {
+    "message": "बटनों का एक सुलभता नाम है"
+  },
+  "lighthouse-core/audits/accessibility/bypass.js | description": {
+    "message": "दोहराव वाली सामग्री को नज़रअंदाज करके आगे बढ़ने के तरीके जोड़ने से, कीबोर्ड इस्तेमाल करने वाले लोग पेज पर ज़्यादा अच्छे से नेविगेट कर सकते हैं. [ज़्यादा जानें](https://web.dev/bypass/)."
+  },
+  "lighthouse-core/audits/accessibility/bypass.js | failureTitle": {
+    "message": "पेज में 'हेडिंग', 'स्किप लिंक' या 'लैंडमार्क' क्षेत्र नहीं है"
+  },
+  "lighthouse-core/audits/accessibility/bypass.js | title": {
+    "message": "पेज में 'हेडिंग', 'स्किप लिंक' या 'लैंडमार्क' क्षेत्र हैं"
+  },
+  "lighthouse-core/audits/accessibility/color-contrast.js | description": {
+    "message": "इस्तेमाल करने वाले कई लोगों के लिए कम कंट्रास्ट वाला टेक्स्ट पढ़ना मुश्किल या नामुमकिन होता है. [ज़्यादा जानें](https://web.dev/color-contrast/)."
+  },
+  "lighthouse-core/audits/accessibility/color-contrast.js | failureTitle": {
+    "message": "बैकग्राउंड और फ़ोरग्राउंड रंगों में काफ़ी कंट्रास्ट अनुपात नहीं है."
+  },
+  "lighthouse-core/audits/accessibility/color-contrast.js | title": {
+    "message": "बैकग्राउंड और फ़ोरग्राउंड के रंगों का कंट्रास्ट अनुपात काफ़ी है"
+  },
+  "lighthouse-core/audits/accessibility/definition-list.js | description": {
+    "message": "जब परिभाषा सूचियां ठीक से मार्क अप नहीं की जातीं, तो स्क्रीन रीडर उलझन भरे या गलत आउटपुट दे सकते हैं. [ज़्यादा जानें](https://web.dev/definition-list/)."
+  },
+  "lighthouse-core/audits/accessibility/definition-list.js | failureTitle": {
+    "message": "`<dl>` में ठीक क्रम से लगाए गए `<dt>` और `<dd>` ग्रुप, `<script>` या `<template>` एलिमेंट नहीं हैं."
+  },
+  "lighthouse-core/audits/accessibility/definition-list.js | title": {
+    "message": "`<dl>` में सिर्फ़ ठीक क्रम से लगे हुए`<dt>` और `<dd>` ग्रुप, `<script>` या `<template>` एलिमेंट हैं."
+  },
+  "lighthouse-core/audits/accessibility/dlitem.js | description": {
+    "message": "परिभाषा सूची आइटम (`<dt>` और `<dd>`) को पैरंट `<dl>` एलिमेंट में रैप किया जाना चाहिए, ताकि यह पक्का किया जा सके कि स्क्रीन रीडर उन्हें ठीक तरीके से बोल सकते हैं. [ज़्यादा जानें](https://web.dev/dlitem/)."
+  },
+  "lighthouse-core/audits/accessibility/dlitem.js | failureTitle": {
+    "message": "परिभाषा सूची के आइटम `<dl>` एलिमेंट में रैप नहीं किए जाते"
+  },
+  "lighthouse-core/audits/accessibility/dlitem.js | title": {
+    "message": "परिभाषा सूची के आइटम `<dl>` एलिमेंट में रैप किए जाते हैं"
+  },
+  "lighthouse-core/audits/accessibility/document-title.js | description": {
+    "message": "शीर्षक से स्क्रीन रीडर उपयोगकर्ताओं को पेज की खास जानकारी मिलती है. सर्च इंजन के उपयोगकर्ता शीर्षक के भरोसे यह तय करते हैं कि कोई पेज उनकी खोज के हिसाब से सही है या नहीं. [ज़्यादा जानें](https://web.dev/document-title/)."
+  },
+  "lighthouse-core/audits/accessibility/document-title.js | failureTitle": {
+    "message": "दस्तावेज़ में कोई `<title>` एलिमेंट नहीं है"
+  },
+  "lighthouse-core/audits/accessibility/document-title.js | title": {
+    "message": "दस्तावेज़ में `<title>` एलिमेंट है"
+  },
+  "lighthouse-core/audits/accessibility/duplicate-id.js | description": {
+    "message": "सहायक तकनीकों को दूसरे इंस्टेंस अनदेखा करने से रोकने के लिए, आईडी विशेषता का मान सबसे अलग होना चाहिए. [ज़्यादा जानें](https://web.dev/duplicate-id/)."
+  },
+  "lighthouse-core/audits/accessibility/duplicate-id.js | failureTitle": {
+    "message": "पेज पर `[id]` विशेषताएं सबसे अलग नहीं हैं"
+  },
+  "lighthouse-core/audits/accessibility/duplicate-id.js | title": {
+    "message": "पेज पर `[id]` विशेषताएं सबसे अलग हैं"
+  },
+  "lighthouse-core/audits/accessibility/frame-title.js | description": {
+    "message": "स्क्रीन रीडर उपयोगकर्ता, फ़्रेम की सामग्री के बारे में जानने के लिए फ़्रेम के शीर्षकों का इस्तेमाल करते हैं. [ज़्यादा जानें](https://web.dev/frame-title/)."
+  },
+  "lighthouse-core/audits/accessibility/frame-title.js | failureTitle": {
+    "message": "`<frame>` या `<iframe>` एलिमेंट का कोई शीर्षक नहीं है"
+  },
+  "lighthouse-core/audits/accessibility/frame-title.js | title": {
+    "message": "`<frame>` या `<iframe>` एलिमेंट का एक शीर्षक है"
+  },
+  "lighthouse-core/audits/accessibility/html-has-lang.js | description": {
+    "message": "अगर कोई पेज, भाषा विशेषता तय नहीं करता है, तो स्क्रीन रीडर को लगता है कि पेज उस डिफ़ॉल्ट भाषा में है जो उपयोगकर्ता ने स्क्रीन रीडर सेट अप करते समय चुनी थी. अगर वह पेज डिफ़ॉल्ट भाषा में नहीं है, तो शायद स्क्रीन रीडर, पेज का टेक्स्ट ठीक से न बोल पाए. [ज़्यादा जानें](https://web.dev/html-has-lang/)."
+  },
+  "lighthouse-core/audits/accessibility/html-has-lang.js | failureTitle": {
+    "message": "`<html>` एलिमेंट में `[lang]` विशेषता नहीं है"
+  },
+  "lighthouse-core/audits/accessibility/html-has-lang.js | title": {
+    "message": "`<html>` एलिमेंट में `[lang]` विशेषता है"
+  },
+  "lighthouse-core/audits/accessibility/html-lang-valid.js | description": {
+    "message": "सही [BCP 47 भाषा ](https://www.w3.org/International/questions/qa-choosing-language-tags#question) तय करने से स्क्रीन रीडर को टेक्स्ट ठीक से बोलने में मदद मिलती है. [ज़्यादा जानें](https://web.dev/html-lang-valid/)."
+  },
+  "lighthouse-core/audits/accessibility/html-lang-valid.js | failureTitle": {
+    "message": "`<html>` एलिमेंट के पास अपनी `[lang]`विशेषता के लिए कोई सही मान नहीं है."
+  },
+  "lighthouse-core/audits/accessibility/html-lang-valid.js | title": {
+    "message": "`<html>` एलिमेंट के पास अपनी `[lang]` विशेषता के लिए एक सही मान है"
+  },
+  "lighthouse-core/audits/accessibility/image-alt.js | description": {
+    "message": "जानकारी वाले एलिमेंट का मकसद यह होना चाहिए कि उनमें छोटा और पूरी जानकारी देने वाला वैकल्पिक टेक्स्ट शामिल हो. डेकोरेटिव एलिमेंट, एक खाली ऑल्ट एट्रिब्यूट के साथ अनदेखे किया जा सकते हैं. [ज़्यादा जानें](https://web.dev/image-alt/)."
+  },
+  "lighthouse-core/audits/accessibility/image-alt.js | failureTitle": {
+    "message": "इमेज एलिमेंट में `[alt]` विशेषताएं नहीं हैं"
+  },
+  "lighthouse-core/audits/accessibility/image-alt.js | title": {
+    "message": "इमेज एलिमेंट में `[alt]` विशेषताएं शामिल हैं"
+  },
+  "lighthouse-core/audits/accessibility/input-image-alt.js | description": {
+    "message": "जब किसी इमेज को `<input>` बटन के रूप में इस्तेमाल किया जा रहा हो, तब वैकल्पिक टेक्स्ट देने से, स्क्रीन रीडर इस्तेमाल करने वाले लोगों को उस बटन के मकसद को समझने में मदद मिलती है. [ज़्यादा जानें](https://web.dev/input-image-alt/)."
+  },
+  "lighthouse-core/audits/accessibility/input-image-alt.js | failureTitle": {
+    "message": "`<input type=\"image\">` एलिमेंट में `[alt]` टेक्स्ट नहीं है"
+  },
+  "lighthouse-core/audits/accessibility/input-image-alt.js | title": {
+    "message": "`<input type=\"image\">` एलिमेंट में`[alt]` टेक्स्ट है"
+  },
+  "lighthouse-core/audits/accessibility/label.js | description": {
+    "message": "लेबल यह पक्का करते हैं कि स्क्रीन रीडर जैसी सहायक तकनीकें, फ़ॉर्म नियंत्रणों को सही तरीके से बोलें. [ज़्यादा जानें](https://web.dev/label/)."
+  },
+  "lighthouse-core/audits/accessibility/label.js | failureTitle": {
+    "message": "फ़ॉर्म एलिमेंट में जुड़े हुए लेबल नहीं हैं"
+  },
+  "lighthouse-core/audits/accessibility/label.js | title": {
+    "message": "फ़ॉर्म एलिमेंट में सहभागी लेबल हैं"
+  },
+  "lighthouse-core/audits/accessibility/layout-table.js | description": {
+    "message": "लेआउट के लिए इस्तेमाल की जाने वाली टेबल में th या कैप्शन वाले एलिमेंट जैसे, डेटा एलिमेंट या सारांश विशेषता शामिल नहीं होनी चाहिए, क्योंकि इससे स्क्रीन रीडर उपयोगकर्ताओं को उलझन हो सकती हैं. [ज़्यादा जानें](https://web.dev/layout-table/)."
+  },
+  "lighthouse-core/audits/accessibility/layout-table.js | failureTitle": {
+    "message": "प्रज़ेंटेशन के लिए इस्तेमाल होने वाले `<table>`एलिमेंट में `<th>`, `<caption>` या `[summary]` विशेषता का इस्तेमाल होता है."
+  },
+  "lighthouse-core/audits/accessibility/layout-table.js | title": {
+    "message": "प्रज़ेंटेशन के लिए इस्तेमाल होने वाले `<table>`एलिमेंट में `<th>`, `<caption>` या `[summary]` विशेषता का इस्तेमाल नहीं होता."
+  },
+  "lighthouse-core/audits/accessibility/link-name.js | description": {
+    "message": "जो लिंक टेक्स्ट (और इमेज के लिए इस्तेमाल किया वैकल्पिक टेक्स्ट) समझने लायक, सबसे अलग, और फ़ोकस करने लायक है, उससे स्क्रीन रीडर उपयोगकर्ताओं का नेविगेशन अनुभव बेहतर बनता है. [ज़्यादा जानें](https://web.dev/link-name/)."
+  },
+  "lighthouse-core/audits/accessibility/link-name.js | failureTitle": {
+    "message": "लिंक का समझने लायक नहीं है"
+  },
+  "lighthouse-core/audits/accessibility/link-name.js | title": {
+    "message": "लिंक का समझने लायक नाम है"
+  },
+  "lighthouse-core/audits/accessibility/list.js | description": {
+    "message": "स्क्रीन रीडर, सूचियों को एक खास तरीके से बोलते हैं. सूची की सही बनावट पक्की करने से स्क्रीन रीडर को आउटपुट देने में मदद मिलती है. [ज़्यादा जानें](https://web.dev/list/)."
+  },
+  "lighthouse-core/audits/accessibility/list.js | failureTitle": {
+    "message": "सूचियों में सिर्फ़ `<li>` एलिमेंट और स्क्रिप्ट के साथ काम करने वाले एलिमेंट (`<script>`और `<template>`) ही शामिल नहीं हैं."
+  },
+  "lighthouse-core/audits/accessibility/list.js | title": {
+    "message": "सूची में सिर्फ़ `<li>` एलिमेंट और स्क्रिप्ट के साथ काम करने वाले एलिमेंट शामिल हैं (`<script>` और `<template>`)."
+  },
+  "lighthouse-core/audits/accessibility/listitem.js | description": {
+    "message": "स्क्रीन रीडर के लिए ज़रूरी है कि उनमें `<ul>` या `<ol>` पैरंट में सूची आइटम (`<li>`) शामिल हों, ताकि उन्हें ठीक तरह से बोला जा सके. [ज़्यादा जानें](https://web.dev/listitem/)."
+  },
+  "lighthouse-core/audits/accessibility/listitem.js | failureTitle": {
+    "message": "सूची आइटम (`<li>`) `<ul>` या `<ol>` पैरंट एलिमेंट में शामिल नहीं हैं."
+  },
+  "lighthouse-core/audits/accessibility/listitem.js | title": {
+    "message": "सूची वाले आइटम (`<li>`) `<ul>` या `<ol>` पैरंट एलिमेंट में हैं"
+  },
+  "lighthouse-core/audits/accessibility/meta-refresh.js | description": {
+    "message": "उपयोगकर्ताओं को ऐसी उम्मीद नहीं होती कि कोई पेज अपने आप रीफ़्रेश हो जाएगा. इसके बाद, फ़ोकस वापस पेज के सबसे ऊपर चला जाएगा. इससे उन्हें परेशानी या उलझन हो सकती है. [ज़्यादा जानें](https://web.dev/meta-refresh/)."
+  },
+  "lighthouse-core/audits/accessibility/meta-refresh.js | failureTitle": {
+    "message": "यह दस्तावेज़ `<meta http-equiv=\"refresh\">` का इस्तेमाल करता है"
+  },
+  "lighthouse-core/audits/accessibility/meta-refresh.js | title": {
+    "message": "दस्तावेज़ `<meta http-equiv=\"refresh\">` का इस्तेमाल नहीं करते"
+  },
+  "lighthouse-core/audits/accessibility/meta-viewport.js | description": {
+    "message": "ज़ूम करने की सुविधा को बंद करने से उन उपयोगकर्ताओं को परेशानी होती है जिन्हें कम दिखाई देता है. ऐसे उपयोगकर्ता वेब पेज की सामग्री को ठीक तरह से देखने के लिए स्क्रीन को बड़ा करते हैं. [ज़्यादा जानें](https://web.dev/meta-viewport/)."
+  },
+  "lighthouse-core/audits/accessibility/meta-viewport.js | failureTitle": {
+    "message": "`[user-scalable=\"no\"]` का इस्तेमाल `<meta name=\"viewport\">` एलिमेंट में किया जाता है या `[maximum-scale]`विशेषता पांच से कम है."
+  },
+  "lighthouse-core/audits/accessibility/meta-viewport.js | title": {
+    "message": "`[user-scalable=\"no\"]` का इस्तेमाल `<meta name=\"viewport\">` एलिमेंट में नहीं किया जाता और `[maximum-scale]`विशेषता पाँच से कम नहीं है."
+  },
+  "lighthouse-core/audits/accessibility/object-alt.js | description": {
+    "message": "स्क्रीन रीडर ऐसी सामग्री का अनुवाद नहीं कर सकते जिसमें टेक्स्ट नहीं है. `<object>` एलिमेंट में वैकल्पिक टेक्स्ट जोड़ने से, स्क्रीन रीडर आसानी से उपयोगकर्ताओं को बात का मतलब समझा सकते हैं. [ज़्यादा जानें](https://web.dev/object-alt/)."
+  },
+  "lighthouse-core/audits/accessibility/object-alt.js | failureTitle": {
+    "message": "`<object>` एलिमेंट में `[alt]` टेक्स्ट नहीं है"
+  },
+  "lighthouse-core/audits/accessibility/object-alt.js | title": {
+    "message": "`<object>` एलिमेंट में`[alt]` टेक्स्ट है"
+  },
+  "lighthouse-core/audits/accessibility/tabindex.js | description": {
+    "message": "0 से ज़्यादा मान साफ़ तौर पर नेविगेशन क्रम को लागू करता है. हालांकि, यह तकनीकी रूप से सही है, लेकिन यह अक्सर उन इस्तेमाल करने वालों को निराश करता है जो सहायक तकनीकों पर भरोसा करते हैं. [ज़्यादा जानें](https://web.dev/tabindex/)."
+  },
+  "lighthouse-core/audits/accessibility/tabindex.js | failureTitle": {
+    "message": "कुछ एलिमेंट का `[tabindex]` मान 0 से ज़्यादा होता है"
+  },
+  "lighthouse-core/audits/accessibility/tabindex.js | title": {
+    "message": "किसी भी एलिमेंट का `[tabindex]` मान 0 से ज़्यादा नहीं हो सकता"
+  },
+  "lighthouse-core/audits/accessibility/td-headers-attr.js | description": {
+    "message": "स्क्रीन रीडर में ऐसी सुविधाएं होती हैं जिनसे टेबल में जाना आसान हो जाता है. `[headers]` विशेषता का इस्तेमाल करके `<td>` सेल की मौजूदगी पक्की करने के लिए उसी टेबल में मौजूद दूसरे सेल का हवाला दिया जाता है. इससे स्क्रीन रीडर उपयोगकर्ताओं के अनुभव को बेहतर बनाया जा सकता है. [ज़्यादा जानें](https://web.dev/td-headers-attr/)."
+  },
+  "lighthouse-core/audits/accessibility/td-headers-attr.js | failureTitle": {
+    "message": "`<table>` विशेषता का इस्तेमाल करने वाले `[headers]` एलिमेंट में मौजूद सेल, उसी टेबल में दूसरे सेल का हवाला देते हैं."
+  },
+  "lighthouse-core/audits/accessibility/td-headers-attr.js | title": {
+    "message": "`<table>` एलिमेंट में शामिल सेल जो `[headers]` विशेषता का इस्तेमाल करते हैं, वे सिर्फ़ उसी टेबल में शामिल सेल का हवाला देते हैं."
+  },
+  "lighthouse-core/audits/accessibility/th-has-data-cells.js | description": {
+    "message": "स्क्रीन रीडर में ऐसी सुविधाएं होती हैं जिनसे टेबल में जाना आसान हो जाता है. यह पक्का करें कि टेबल हेडर हमेशा कुछ सेल के सेट के बारे में बताते हों. इससे स्क्रीन रीडर के उपयोगकर्ताओं को बेहतर अनुभव मिल सकता है. [ज़्यादा जानें](https://web.dev/th-has-data-cells/)."
+  },
+  "lighthouse-core/audits/accessibility/th-has-data-cells.js | failureTitle": {
+    "message": "`<th>` एलिमेंट और `[role=\"columnheader\"/\"rowheader\"]` वाले एलिमेंट में वे डेटा सेल मौजूद नहीं हैं जो उनके ब्यौरे में शामिल हैं."
+  },
+  "lighthouse-core/audits/accessibility/th-has-data-cells.js | title": {
+    "message": "`<th>` एलिमेंट और `[role=\"columnheader\"/\"rowheader\"]` वाले एलिमेंट में वे डेटा सेल शामिल हैं जिनकी वे जानकारी देते हैं."
+  },
+  "lighthouse-core/audits/accessibility/valid-lang.js | description": {
+    "message": "एलिमेंट पर एक सही [BCP 47 भाषा ](https://www.w3.org/International/questions/qa-choosing-language-tags#question) तय करने से आप पक्का कर सकते हैं कि स्क्रीन रीडर, टेक्स्ट को सही से बोले. [ज़्यादा जानें](https://web.dev/valid-lang/)."
+  },
+  "lighthouse-core/audits/accessibility/valid-lang.js | failureTitle": {
+    "message": "`[lang]` विशेषताओं का कोई सही मान नहीं है"
+  },
+  "lighthouse-core/audits/accessibility/valid-lang.js | title": {
+    "message": "`[lang]` विशेषताओं का मान सही है"
+  },
+  "lighthouse-core/audits/accessibility/video-caption.js | description": {
+    "message": "वीडियो में कैप्शन उपलब्ध कराने पर वे उपयोगकर्ता आसानी से जानकारी समझ सकते हैं जो सुन नहीं पाते और जिन्हें कम सुनाई देता है. [ज़्यादा जानें](https://web.dev/video-caption/)."
+  },
+  "lighthouse-core/audits/accessibility/video-caption.js | failureTitle": {
+    "message": "`<video>` एलिमेंट में `[kind=\"captions\"]` वाला कोई `<track>` एलिमेंट नहीं है."
+  },
+  "lighthouse-core/audits/accessibility/video-caption.js | title": {
+    "message": "`<video>` एलिमेंट में `[kind=\"captions\"]` वाला एक `<track>` एलिमेंट है"
+  },
+  "lighthouse-core/audits/accessibility/video-description.js | description": {
+    "message": "ऑडियो के ब्यौरे में वीडियो से जुड़ी काम की ऐसी जानकारी दी जाती है जो बातचीत से नहीं दी जा सकती. जैसे, चेहरे के हावभाव और सीन. [ज़्यादा जानें](https://web.dev/video-description/)."
+  },
+  "lighthouse-core/audits/accessibility/video-description.js | failureTitle": {
+    "message": "`<video>` एलिमेंट में `[kind=\"description\"]` वाला कोई `<track>` एलिमेंट नहीं है."
+  },
+  "lighthouse-core/audits/accessibility/video-description.js | title": {
+    "message": "`<video>` एलिमेंट में `[kind=\"description\"]` वाला एक `<track>` एलिमेंट है"
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | description": {
+    "message": "उपयोगकर्ता जब होम स्क्रीन पर प्रगतिशील वेब ऐप जोड़ें, तो iOS पर वह अच्छे से नज़र आए, इसके लिए `apple-touch-icon` तय करें. यह ज़रूरी है कि यह आइकॉन किसी ऐसे 192px (या 180px) के चौकोर PNG की तरफ़ इशारा करे जिसके आर-पार न देखा जा सके. [ज़्यादा जानें](https://developers.google.com/web/fundamentals/design-and-ux/browser-customization/)."
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | failureTitle": {
+    "message": "एक सही `apple-touch-icon` नहीं उपलब्ध कराता"
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | precomposedWarning": {
+    "message": "`apple-touch-icon-precomposed` पुराना हो गया है; `apple-touch-icon` को प्राथमिकता दी जाती है."
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | title": {
+    "message": "एक सही `apple-touch-icon` देता है"
+  },
+  "lighthouse-core/audits/bootup-time.js | chromeExtensionsWarning": {
+    "message": "Chrome एक्सटेंशन ने इस पेज के लोड परफ़ॉर्मेंस पर नकारात्मक रूप से असर डाला है. 'गुप्त मोड' में या बिना किसी एक्सटेंशन के Chrome प्रोफ़ाइल से पेज ऑडिट करके देखें."
+  },
+  "lighthouse-core/audits/bootup-time.js | columnScriptEval": {
+    "message": "स्क्रिप्ट मूल्यांकन"
+  },
+  "lighthouse-core/audits/bootup-time.js | columnScriptParse": {
+    "message": "स्क्रिप्ट पार्स"
+  },
+  "lighthouse-core/audits/bootup-time.js | columnTotal": {
+    "message": "कुल सीपीयू समय"
+  },
+  "lighthouse-core/audits/bootup-time.js | description": {
+    "message": "JS को पार्स करने, कंपाइल करने, और एक्ज़ीक्यूट करने में लगने वाला समय कम करें. आप देखेंगे कि इसकी मदद से छोटे-छोटे JS पेलोड डिलीवर करने में मदद मिलती है. [ज़्यादा जानें](https://developers.google.com/web/tools/lighthouse/audits/bootup)."
+  },
+  "lighthouse-core/audits/bootup-time.js | failureTitle": {
+    "message": "JavaScript क्रियान्वयन समय कम करें"
+  },
+  "lighthouse-core/audits/bootup-time.js | title": {
+    "message": "JavaScript क्रियान्वयन समय"
+  },
+  "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | description": {
+    "message": "बड़ी GIFs ऐनिमेशन वाली सामग्री डिलीवर नहीं कर सकते. नेटवर्क बाइट बचाने के लिए GIF का इस्तेमाल करने के बजाय, ऐनिमेशन के लिए MPEG4/WebM वीडियो और स्टैटिक इमेज के लिए PNG/WebP का इस्तेमाल करें. [ज़्यादा जानें](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/replace-animated-gifs-with-video/)"
+  },
+  "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | title": {
+    "message": "ऐनिमेट की गई सामग्री के लिए वीडियो फ़ॉर्मेट का इस्तेमाल करें"
+  },
+  "lighthouse-core/audits/byte-efficiency/offscreen-images.js | description": {
+    "message": "इंटरैक्टिव में लगने वाला समय कम करने के लिए, सभी अहम संसाधन लोड हो जाने के बाद ऑफ़स्क्रीन और छिपी हुई इमेज को धीरे-धीरे लोड करें. [ज़्यादा जानें](https://developers.google.com/web/tools/lighthouse/audits/offscreen-images)."
+  },
+  "lighthouse-core/audits/byte-efficiency/offscreen-images.js | title": {
+    "message": "ऑफ़स्क्रीन इमेज टालें"
+  },
+  "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | description": {
+    "message": "संसाधन आपके पेज का फ़र्स्ट पेंट ब्लॉक कर रहे हैं. ज़रूरी JS/सीएसएस इनलाइन डिलीवर करने और सभी गैर-ज़रूरी JS/शैलियों को टाल दें. [ज़्यादा जानें](https://developers.google.com/web/tools/lighthouse/audits/blocking-resources)."
+  },
+  "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | title": {
+    "message": "रेंडर ब्लॉक करने वाले संसाधनों को खत्म करें"
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | description": {
+    "message": "बड़े नेटवर्क वाले पेलोड के लिए उपयोगकर्ताओं को रकम खर्च करनी होती है. साथ ही, उन पर लोड होने में ज़्यादा समय भी लगता है. [ज़्यादा जानें](https://developers.google.com/web/tools/lighthouse/audits/network-payloads)."
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | displayValue": {
+    "message": "कुल आकार {totalBytes, number, bytes} केबी था"
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | failureTitle": {
+    "message": "बहुत ज़्यादा नेटवर्क पेलोड से बचें"
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | title": {
+    "message": "भारी नेटवर्क पेलोड से बचाता है"
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-css.js | description": {
+    "message": "CSS फ़ाइलों को छोटा करने से नेटवर्क पेलोड आकार कम किए जा सकते हैं. [ज़्यादा जानें](https://developers.google.com/web/tools/lighthouse/audits/minify-css)."
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-css.js | title": {
+    "message": "CSS कम करें"
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | description": {
+    "message": "JavaScript फ़ाइलों को छोटा करने से पेलोड का आकार और स्क्रिप्ट पार्स करने में लगने वाला समय कम हो सकता है. [ज़्यादा जानें](https://developers.google.com/speed/docs/insights/MinifyResources)."
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | title": {
+    "message": "JavaScript का आकार कम करें"
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | description": {
+    "message": "स्टाइलशीट से इस्तेमाल न किए गए नियमों को हटाएं और पेज के ऊपरी हिस्से की सामग्री के लिए इस्तेमाल न होने वाले CSS को लोड होने से टालें. ऐसा करके, नेटवर्क गतिविधि में खर्च होने वाले गैर-ज़रूरी बाइट कम किए जा सकते हैं. [ज़्यादा जानें](https://developers.google.com/web/tools/lighthouse/audits/unused-css)."
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | title": {
+    "message": "इस्तेमाल नहीं किए गए CSS को हटाएं"
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-javascript.js | description": {
+    "message": "नेटवर्क गतिविधि में खर्च होने वाले बाइट में कमी करने के लिए इस्तेमाल नहीं किया गया JavaScript हटाएं."
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-javascript.js | title": {
+    "message": "इस्तेमाल नहीं किया गया JavaScript हटाएं"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | description": {
+    "message": "अगर कैश मेमोरी ज़्यादा समय तक रहेगी, तो लोगों के आपकी साइट पर लौटने की प्रक्रिया में तेज़ी आएगी. [ज़्यादा जानें](https://developers.google.com/web/tools/lighthouse/audits/cache-policy)."
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 संसाधन मिला}one{# संसाधन मिले}other{# संसाधन मिले}}"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | failureTitle": {
+    "message": "कुशल कैश नीति के साथ स्थिर एसेट ऑफ़र करें"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | title": {
+    "message": "स्थिर एसेट पर कुशल कैश नीति का इस्तेमाल करता है"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | description": {
+    "message": "ऑप्टिमाइज़ की गई इमेज तेज़ी से लोड होती हैं. साथ ही, इसमें कम सेल्युलर डेटा खर्च होता है. [ज़्यादा जानें](https://developers.google.com/web/tools/lighthouse/audits/optimize-images)."
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | title": {
+    "message": "इमेज को कुशलता से एन्कोड करें"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | description": {
+    "message": "ऐसी इमेज ऑफ़र करें जिनका आकार सही हो, ताकि सेल्युलर डेटा बचाया जा सके और लोड होने में लगने वाले समय को कम किया जा सके. [ज़्यादा जानें](https://developers.google.com/web/tools/lighthouse/audits/oversized-images)."
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | title": {
+    "message": "सही तरीके के आकार वाली इमेज"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | description": {
+    "message": "कुल नेटवर्क बाइट को कम से कम करने के लिए, टेक्स्ट आधारित संसाधन, कंप्रेशन (gzip, deflate या brotli) के साथ ऑफ़र किए जाने चाहिए. [ज़्यादा जानें](https://developers.google.com/web/tools/lighthouse/audits/text-compression)."
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | title": {
+    "message": "लेख कंप्रेशन चालू करें"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | description": {
+    "message": "JPEG 2000, JPEG XR, और WebP जैसे इमेज फ़ॉर्मैट, ज़्यादातर PNG या JPEG से बेहतर कंप्रेस करते हैं जिससे उपयोगकर्ता कम डेटा खर्च करके तेज़ डाउनलोड कर सकते हैं. [ज़्यादा जानें](https://developers.google.com/web/tools/lighthouse/audits/webp)."
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | title": {
+    "message": "इमेज अगली जेनरेशन के फ़ॉर्मेट में ऑफ़र करें"
+  },
+  "lighthouse-core/audits/content-width.js | description": {
+    "message": "आपके ऐप्लिकेशन की सामग्री की चौड़ाई व्यूपोर्ट की चौड़ाई से मेल नहीं खाती है, तो आपका ऐप्लिकेशन मोबाइल स्क्रीन पर ऑप्टिमाइज़ नहीं किया जा सकेगा. [ज़्यादा जानें](https://developers.google.com/web/tools/lighthouse/audits/content-sized-correctly-for-viewport)."
+  },
+  "lighthouse-core/audits/content-width.js | explanation": {
+    "message": "{innerWidth}px के व्यूपोर्ट का आकार {outerWidth}px की विंडो के आकार से मेल नहीं खाता है."
+  },
+  "lighthouse-core/audits/content-width.js | failureTitle": {
+    "message": "सामग्री का आकार व्यूपोर्ट (किसी वेब पेज के स्क्रीन पर दिखने वाले हिस्से) के मुताबिक नहीं है"
+  },
+  "lighthouse-core/audits/content-width.js | title": {
+    "message": "सामग्री का आकार व्यूपोर्ट (किसी वेब पेज के स्क्रीन पर दिखने वाले हिस्से) के मुताबिक है"
+  },
+  "lighthouse-core/audits/critical-request-chains.js | description": {
+    "message": "नीचे दी गई अहम अनुरोध शृंखलाएं बताती हैं कि किन संसाधनों को ज़्यादा प्राथमिकता से लोड किया गया है. शृंखलाओं की अवधि कम करें. इससे संसाधनों का डाउनलोड आकार कम हो जाएगा या पेज लोड को बेहतर बनाने के लिए गैर-ज़रूरी संसाधनों का डाउनलोड टल जाएगा. [ज़्यादा जानें](https://developers.google.com/web/tools/lighthouse/audits/critical-request-chains)."
+  },
+  "lighthouse-core/audits/critical-request-chains.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 शृंखला मिली}one{# शृंखलाएं मिलीं}other{# शृंखलाएं मिलीं}}"
+  },
+  "lighthouse-core/audits/critical-request-chains.js | title": {
+    "message": "अहम अनुरोधों की गहराई कम से कम करें"
+  },
+  "lighthouse-core/audits/deprecations.js | columnDeprecate": {
+    "message": "रुक गया है / चेतावनी"
+  },
+  "lighthouse-core/audits/deprecations.js | columnLine": {
+    "message": "लाइन"
+  },
+  "lighthouse-core/audits/deprecations.js | description": {
+    "message": "काम न करने वाले एपीआई आपके ब्राउज़र से हटा दिए जाएंगे. [ज़्यादा जानें](https://web.dev/deprecations)."
+  },
+  "lighthouse-core/audits/deprecations.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 चेतावनी मिली}one{# चेतावनियां मिलीं}other{# चेतावनियां मिलीं}}"
+  },
+  "lighthouse-core/audits/deprecations.js | failureTitle": {
+    "message": "रुके हुए एपीआई का इस्तेमाल करता है"
+  },
+  "lighthouse-core/audits/deprecations.js | title": {
+    "message": "रुके हुई एपीआई का इस्तेमाल नहीं किया जाता"
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | description": {
+    "message": "ऐप्लिकेशन की कैश मेमोरी अब काम नहीं करती. [ज़्यादा जानें](https://web.dev/appcache-manifest)."
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | displayValue": {
+    "message": "\"{AppCacheManifest}\" मिल गया"
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | failureTitle": {
+    "message": "ऐप्लिकेशन की कैश मेमोरी का इस्तेमाल किया जाता है"
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | title": {
+    "message": "ऐप्लिकेशन की कैश मेमोरी का इस्तेमाल नहीं किया जाता"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | description": {
+    "message": "doctype तय करने से, ब्राउज़र क्वर्क-मोड (पुराने वर्शन पर काम करने की सुविधा) पर स्विच नहीं करता है. [ज़्यादा जानें](https://web.dev/doctype)."
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationBadDoctype": {
+    "message": "Doctype का नाम अंग्रेज़ी के छोटे अक्षरों वाली स्ट्रिंग `html` में होना चाहिए"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationNoDoctype": {
+    "message": "दस्तावेज़ में doctype होना ज़रूरी है"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationPublicId": {
+    "message": "उम्मीद थी कि publicId खाली स्ट्रिंग होगी"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationSystemId": {
+    "message": "उम्मीद थी कि systemId खाली स्ट्रिंग होगी"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | failureTitle": {
+    "message": "पेज में HTML doctype नहीं है जिसकी वजह से क्वर्क-मोड (पुराने वर्शन पर काम करने की सुविधा) ट्रिगर हो रही है"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | title": {
+    "message": "पेज में एचटीएमएल doctype है"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | columnElement": {
+    "message": "तत्व"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | columnStatistic": {
+    "message": "आंकड़े"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | columnValue": {
+    "message": "मान"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | description": {
+    "message": "ब्राउज़र इंजीनियर यह सुझाव देते हैं कि पेज में ~1,500 से कम DOM एलिमेंट शामिल हों. सबसे सही आंकड़ा है 32 से कम एलिमेंट वाली ट्री डेप्थ और 60 से कम चिल्ड्रन/पैरंट एलिमेंट. ज़्यादा बड़े DOM से मेमोरी का इस्तेमाल बढ़ सकता है जिससे ज़्यादा लंबे [स्टाइल कैल्युलेशन](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations) हो सकते हैं और इनसे महंगे [लेआउट रीफ़्लो](https://developers.google.com/speed/articles/reflow) बन सकते हैं. [ज़्यादा जानें](https://web.dev/dom-size)."
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 ऐलिमेंट}one{# ऐलिमेंट}other{# ऐलिमेंट}}"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | failureTitle": {
+    "message": "बहुत ज़्यादा बड़े DOM आकार से बचें"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | statisticDOMDepth": {
+    "message": "सबसे ज़्यादा DOM गहराई"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | statisticDOMElements": {
+    "message": "कुल डीओएम ऐलिमेंट"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | statisticDOMWidth": {
+    "message": "ज़्यादातर बच्चों की चीजें"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | title": {
+    "message": "बहुत ज़्यादा बड़े DOM आकार से बचता है"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | columnRel": {
+    "message": "Rel"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | columnTarget": {
+    "message": "लक्ष्य"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | description": {
+    "message": "किसी बाहरी लिंक में `rel=\"noopener\"` या `rel=\"noreferrer\"` जोड़कर परफ़ॉर्मेंस बेहतर करें और सुरक्षा जोखिमों से बचें. [ज़्यादा जानें](https://web.dev/external-anchors-use-rel-noopener)."
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | failureTitle": {
+    "message": "जिन जगहों पर दो डोमेन से होकर जाना होता है वे सुरक्षित नहीं हैं"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | title": {
+    "message": "जिन जगहों पर दो डोमेन से होकर जाना होता है वे सुरक्षित हैं"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | warning": {
+    "message": "एंकर ({anchorHTML}) के भेजे जाने की जगह नहीं पता की जा सकी. अगर target=_blank का इस्तेमाल हाइपरलिंक की तरह नहीं हो रहा, तो इसे हटा दें."
+  },
+  "lighthouse-core/audits/dobetterweb/geolocation-on-start.js | description": {
+    "message": "उपयोगकर्ता ऐसी साइटों पर भरोसा नहीं करते या उनकी वजह से उलझन में रहते हैं जो बिना किसी संदर्भ के उनकी जगह की जानकारी पता करने का अनुरोध करती हैं. इसके बजाय, उपयोगकर्ता के जेस्चर के हिसाब से अनुरोध करें. [ज़्यादा जानें](https://web.dev/geolocation-on-start)."
+  },
+  "lighthouse-core/audits/dobetterweb/geolocation-on-start.js | failureTitle": {
+    "message": "पेज लोड पर भौगोलिक स्थान जानने का अनुरोध किया जाता है"
+  },
+  "lighthouse-core/audits/dobetterweb/geolocation-on-start.js | title": {
+    "message": "पेज लोड पर भौगोलिक स्थान जानने की मंज़ूरी का अनुरोध नहीं किया जाता"
+  },
+  "lighthouse-core/audits/dobetterweb/js-libraries.js | columnVersion": {
+    "message": "वर्शन"
+  },
+  "lighthouse-core/audits/dobetterweb/js-libraries.js | description": {
+    "message": "इस पेज पर पहचानी गई सभी फ़्रंट-एंड JavaScript लाइब्रेरी. [ज़्यादा जानें](https://web.dev/js-libraries)."
+  },
+  "lighthouse-core/audits/dobetterweb/js-libraries.js | title": {
+    "message": "पहचानी गई JavaScript लाइब्रेरी"
+  },
+  "lighthouse-core/audits/dobetterweb/no-document-write.js | description": {
+    "message": "धीमे कनेक्शन वाले उपयोगकर्ताओं के लिए, `document.write()` की दी गई बाहरी स्क्रिप्ट की वजह से पेज लोड होने में दस से ज़्यादा सेकंड की देरी हो सकती है. [ज़्यादा जानें](https://web.dev/no-document-write)."
+  },
+  "lighthouse-core/audits/dobetterweb/no-document-write.js | failureTitle": {
+    "message": "`document.write()` का इस्तेमाल होता है"
+  },
+  "lighthouse-core/audits/dobetterweb/no-document-write.js | title": {
+    "message": "`document.write()` का इस्तेमाल नहीं किया जाता"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | columnSeverity": {
+    "message": "सबसे ज़्यादा गंभीर"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | columnVersion": {
+    "message": "लाइब्रेरी वर्शन"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | columnVuln": {
+    "message": "जोखिम की संभावना की संख्या"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | description": {
+    "message": "तीसरे पक्ष की कुछ स्क्रिप्ट में सुरक्षा के ऐसे जोखिम हो सकते हैं जिनके बारे में लोगों को पता है. साथ ही, जिन्हें हमलावर आसानी से पहचानकर उनका फ़ायदा उठा सकते हैं. [ज़्यादा जानें](https://web.dev/no-vulnerable-libraries)."
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 जोखिम की संभावना का पता चला}one{# जोखिमों की संभावना का पता चला}other{# जोखिमों की संभावना का पता चला}}"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | failureTitle": {
+    "message": "ऐसी फ़्रंट-एंड JavaScript लाइब्रेरी का इस्तेमाल करता है जिनमें शामिल सुरक्षा जोखिमों के बारे में सबको पता होता है."
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | rowSeverityHigh": {
+    "message": "ज़्यादा"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | rowSeverityLow": {
+    "message": "कम"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | rowSeverityMedium": {
+    "message": "मीडियम"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | title": {
+    "message": "ऐसी फ़्रंट-एंड JavaScript लाइब्रेरी का इस्तेमाल नहीं करता जिनमें शामिल सुरक्षा जोखिमों के बारे में सबको पता होता है."
+  },
+  "lighthouse-core/audits/dobetterweb/notification-on-start.js | description": {
+    "message": "उपयोगकर्ता ऐसी साइटों पर भरोसा नहीं करते या उनकी वजह से उलझन में रहते हैं जो उन्हें बिना किसी संदर्भ के सूचनाएं भेजने का अनुरोध करती हैं. इसके बजाय, उपयोगकर्ता के जेस्चर के हिसाब से अनुरोध करें. [ज़्यादा जानें](https://web.dev/notification-on-start)."
+  },
+  "lighthouse-core/audits/dobetterweb/notification-on-start.js | failureTitle": {
+    "message": "पेज लोड पर सूचनाओं की अनुमति पाने का अनुरोध किया जाता है"
+  },
+  "lighthouse-core/audits/dobetterweb/notification-on-start.js | title": {
+    "message": "पेज लोड पर सूचना भेजने की मंज़ूरी का अनुरोध नहीं किया जाता"
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | columnFailingElem": {
+    "message": "फ़ेल होने वाले एलिमेंट"
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | description": {
+    "message": "पासवर्ड वाले फ़ील्ड में कुछ कॉपी करके चिपकाने की सुविधा न लागू करने का मतलब है एक अच्छी सुरक्षा नीति को कमज़ोर समझना. [ज़्यादा जानें](https://web.dev/password-inputs-can-be-pasted-into)."
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | failureTitle": {
+    "message": "इस्तेमाल करने वालों को पासवर्ड फ़ील्ड में पहले से कॉपी की गई जानकारी चिपकाने से रोकता है"
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | title": {
+    "message": "इस्तेमाल करने वालों को पासवर्ड फ़ील्ड में पहले से कॉपी की गई जानकारी चिपकाने देता है"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | columnProtocol": {
+    "message": "प्रोटोकॉल"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | description": {
+    "message": "HTTP/2 , HTTP/1.1 से ज़्यादा फ़ायदे ऑफ़र करता है जिनमें बाइनरी हैडर, मल्टीप्लेक्सिंग, और सर्वर पुश शामिल हैं. [ज़्यादा जानें](https://web.dev/uses-http2)."
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 अनुरोध HTTP/2 से सर्व नहीं किया गया}one{# अनुरोध HTTP/2 से सर्व नहीं किए गए}other{# अनुरोध HTTP/2 से सर्व नहीं किए गए}}"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | failureTitle": {
+    "message": "अपने सभी संसाधनों के लिए HTTP/2 का इस्तेमाल नहीं करता"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | title": {
+    "message": "अपने संसाधन के लिए HTTP/2 का इस्तेमाल किया जाता है"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-passive-event-listeners.js | description": {
+    "message": "अपने 'टच एंड व्हील' घटना श्रोता पर `passive` का निशान लगाएं, ताकि आपके पेज की स्क्रोल परफ़ॉर्मेंस को बेहतर किया जा सके. [ज़्यादा जानें](https://web.dev/uses-passive-event-listeners)."
+  },
+  "lighthouse-core/audits/dobetterweb/uses-passive-event-listeners.js | failureTitle": {
+    "message": "स्क्रोल परफ़ॉर्मेंस बेहतर करने के लिए पैसिव श्रोताओं का इस्तेमाल नहीं करता"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-passive-event-listeners.js | title": {
+    "message": "पैसिव श्रोताओं की मदद से स्क्रोल परफ़ॉर्मेंस बेहतर की जाती है"
+  },
+  "lighthouse-core/audits/errors-in-console.js | columnDesc": {
+    "message": "ब्यौरा"
+  },
+  "lighthouse-core/audits/errors-in-console.js | description": {
+    "message": "कंसोल में लॉग की गई गड़बड़ियां उन मुश्किलों की तरफ़ इशारा करती हैं जिनका समाधान किया जाना अभी बाकी है. ये गड़बड़ियां, नेटवर्क अनुरोधों के काम न करने और ब्राउज़र से जुड़ी दूसरी वजहों से हो सकती हैं. [ज़्यादा जानें](https://web.dev/errors-in-console)"
+  },
+  "lighthouse-core/audits/errors-in-console.js | failureTitle": {
+    "message": "ब्राउज़र की गड़बड़ियां कंसोल में लॉग की गईं"
+  },
+  "lighthouse-core/audits/errors-in-console.js | title": {
+    "message": "ब्राउज़र की किसी गड़बड़ी को कंसोल में लॉग नहीं किया गया"
+  },
+  "lighthouse-core/audits/font-display.js | description": {
+    "message": "यह पक्का करने के लिए कि वेबफ़ॉन्ट लोड होने के दौरान उपयोगकर्ता को टेक्स्ट दिखाई देता रहे, फ़ॉन्ट-डिसप्ले सीएसएस फ़ीचर का फ़ायदा लें. [ज़्यादा जानें](https://developers.google.com/web/updates/2016/02/font-display)."
+  },
+  "lighthouse-core/audits/font-display.js | failureTitle": {
+    "message": "पक्का करें कि वेबफ़ॉन्ट लोड होने के दौरान लेख दिखाई देता रहे"
+  },
+  "lighthouse-core/audits/font-display.js | title": {
+    "message": "वेबफ़ॉन्ट लोड होने के दौरान सभी लेख दिखाई देते रहते हैं"
+  },
+  "lighthouse-core/audits/font-display.js | undeclaredFontURLWarning": {
+    "message": "Lighthouse इस यूआरएल के लिए, फ़ॉन्ट-डिसप्ले की अपने आप जांच नहीं कर सका: {fontURL}"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | columnActual": {
+    "message": "चौड़ाई-ऊंचाई का अनुपात (असल)"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | columnDisplayed": {
+    "message": "चौड़ाई-ऊंचाई का अनुपात (डिसप्ले किया गया)"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | description": {
+    "message": "इमेज डिसप्ले डाइमेंशन, चौड़ाई-ऊंचाई के अनुपात जितने होने चाहिए. [ज़्यादा जानें](https://web.dev/image-aspect-ratio)."
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | failureTitle": {
+    "message": "चौड़ाई-ऊंचाई के गलत अनुपात वाली इमेज दिखाता है"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | title": {
+    "message": "चौड़ाई-ऊंचाई के सही अनुपात वाली इमेज दिखाता है"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | warningCompute": {
+    "message": "इमेज के आकार की जानकारी गलत है {url}"
+  },
+  "lighthouse-core/audits/installable-manifest.js | description": {
+    "message": "ब्राउज़र अपनी ओर से, उपयोगकर्ताओं को आपके ऐप्लिकेशन को उनकी होमस्क्रीन पर जोड़ने के लिए कह सकते हैं. इससे उपयोगकर्ताओं के साथ बेहतरी से जुड़ने में मदद मिलती है. [ज़्यादा जानें](https://developers.google.com/web/tools/lighthouse/audits/install-prompt)."
+  },
+  "lighthouse-core/audits/installable-manifest.js | failureTitle": {
+    "message": "वेब ऐप्लिकेशन का मेनिफ़ेस्ट, इंस्टॉल करने की ज़रूरतों को पूरा नहीं करता है"
+  },
+  "lighthouse-core/audits/installable-manifest.js | title": {
+    "message": "वेब ऐप्लिकेशन का मेनिफ़ेस्ट, इंस्टॉल करने की ज़रूरतों को पूरा करता है"
+  },
+  "lighthouse-core/audits/is-on-https.js | columnInsecureURL": {
+    "message": "असुरक्षित यूआरएल"
+  },
+  "lighthouse-core/audits/is-on-https.js | description": {
+    "message": "सभी साइटों को HTTPS से सुरक्षित किया जाना चाहिए, चाहे उनमें संवेदनशील डेटा हो या नहीं. HTTPS की वजह से अनचाहे लोग (घुसपैठिये), आपके ऐप्लिकेशन और उसके उपयोगकर्ताओं के बीच होने वाली बातों को न तो सुन पाएंगे और न ही उसके साथ किसी तरह की छेड़खानी कर पाएंगे. HTTP/2 और कई नए वेब प्लेटफ़ॉर्म एपीआई पर इस सुविधा के बिना साइटें नहीं बनाई जा सकतीं. [ज़्यादा जानें](https://web.dev/is-on-https)."
+  },
+  "lighthouse-core/audits/is-on-https.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 असुरक्षित अनुरोध मिला}one{# असुरक्षित अनुरोध मिले}other{# असुरक्षित अनुरोध मिले}}"
+  },
+  "lighthouse-core/audits/is-on-https.js | failureTitle": {
+    "message": "HTTPS का इस्तेमाल नहीं किया जाता"
+  },
+  "lighthouse-core/audits/is-on-https.js | title": {
+    "message": "HTTPS का इस्तेमाल करता है"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | description": {
+    "message": "सेल्युलर नेटवर्क पर तेज़ी से पेज लोड होने की सुविधा से मोबाइल इस्तेमाल करने वालों को अच्छा अनुभव मिलता है. [ज़्यादा जानें](https://developers.google.com/web/tools/lighthouse/audits/fast-3g)."
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | displayValueText": {
+    "message": "इंटरैक्शन {timeInMs, number, seconds} से. में शुरू हुआ"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | displayValueTextWithOverride": {
+    "message": "{timeInMs, number, seconds} से. में सिम्युलेट किए गए मोबाइल नेटवर्क पर इंटरैक्शन शुरू हुआ"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | explanationLoadSlow": {
+    "message": "आपका पेज बहुत धीरे लोड होता है और 10 सेकंड में इंटरैक्टिव (पेज लोड होने के दौरान उपयोगकर्ता के इनपुट जैसे कि क्लिक, टैप, और बटन दबाने का जवाब देने में लगने वाला समय) नहीं होता है. सुधार करने के तरीके जानने के लिए \"प्रदर्शन\" सेक्शन में अवसरों पर नज़र डालें और गड़बड़ी की जानकारी लें."
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | failureTitle": {
+    "message": "मोबाइल नेटवर्क पर पेज लोड होने की गति ज़रूरत के मुताबिक तेज़ नहीं है"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | title": {
+    "message": "मोबाइल नेटवर्क पर पेज लोड होने की गति ज़रूरत के मुताबिक तेज़ है"
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | columnCategory": {
+    "message": "श्रेणी"
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | description": {
+    "message": "JS को पार्स करने, कंपाइल करने और एक्ज़ीक्यूट करने में लगने वाला समय कम करने पर विचार करें. आप देखेंगे कि इसके ज़रिए छोटे-छोटे JS पेलोड डिलीवर करने में मदद मिलती है."
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | failureTitle": {
+    "message": "मुख्य थ्रेड के काम को कम करना"
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | title": {
+    "message": "मुख्य थ्रेड के काम को कम करता है"
+  },
+  "lighthouse-core/audits/manual/pwa-cross-browser.js | description": {
+    "message": "ज़्यादा से ज़्यादा उपयोगकर्ताओं तक पहुंचने के लिए, साइटों का सभी प्रमुख ब्राउज़र पर काम करना ज़रूरी है. [ज़्यादा जानें](https://developers.google.com/web/progressive-web-apps/checklist#site-works-cross-browser)."
+  },
+  "lighthouse-core/audits/manual/pwa-cross-browser.js | title": {
+    "message": "यह क्रॉस-ब्राउज़र वेबसाइट है जो अलग-अलग ब्राउज़र पर काम करती है"
+  },
+  "lighthouse-core/audits/manual/pwa-each-page-has-url.js | description": {
+    "message": "पक्का करें कि अलग-अलग पेज, यूआरएल के ज़रिए डीप लिंक के लायक हैं. साथ ही, वे ऐसे खास यूआरएल हैं जो सोशल मीडिया पर शेयर करने के मकसद को पूरा करते हैं. [ज़्यादा जानें](https://developers.google.com/web/progressive-web-apps/checklist#each-page-has-a-url)."
+  },
+  "lighthouse-core/audits/manual/pwa-each-page-has-url.js | title": {
+    "message": "हर पेज का एक यूआरएल होता है"
+  },
+  "lighthouse-core/audits/manual/pwa-page-transitions.js | description": {
+    "message": "नेटवर्क धीमा होने के बाद भी वेब ऐप्लिकेशन पर टैप करने पर ट्रांज़िशन की रफ़्तार तेज़ महसूस होनी चाहिए. यह आपके पेज की अच्छी परफ़ॉर्मेंस के लिए अहम है. [ज़्यादा जानें](https://developers.google.com/web/progressive-web-apps/checklist#page-transitions-dont-feel-like-they-block-on-the-network)."
+  },
+  "lighthouse-core/audits/manual/pwa-page-transitions.js | title": {
+    "message": "पेज ट्रांज़िशन को देखकर ऐसा नहीं लगना चाहिए जैसे वे नेटवर्क लोड होने का इंतज़ार कर रहे हैं"
+  },
+  "lighthouse-core/audits/metrics/estimated-input-latency.js | description": {
+    "message": "इनपुट के इंतज़ार के समय का अंदाज़ा, इस बात से लगाया जाता है कि पेज लोड होने की सबसे व्यस्त पांच सेकंड की विंडो के दौरान आपके ऐप्लिकेशन को इस्तेमाल करने वाले के इनपुट का जवाब देने में कितना समय लगेगा. इस समय का हिसाब मिलीसेकंड में लगाया जाता है. अगर इंतज़ार का समय 50 मिलीसेकंड से ज़्यादा हो, तो इस्तेमाल करने वाले आपके ऐप्लिकेशन को धीमा मान सकते हैं. [ज़्यादा जानें](https://developers.google.com/web/tools/lighthouse/audits/estimated-input-latency)."
+  },
+  "lighthouse-core/audits/metrics/estimated-input-latency.js | title": {
+    "message": "अनुमानित इनपुट प्रतीक्षा समय"
+  },
+  "lighthouse-core/audits/metrics/first-contentful-paint.js | description": {
+    "message": "फ़र्स्ट कॉन्टेंटफ़ुल पेंट से उस समय का पता चलता है जब पहले टेक्स्ट या इमेज को पेंट किया गया था. [ज़्यादा जानें](https://developers.google.com/web/tools/lighthouse/audits/first-contentful-paint)."
+  },
+  "lighthouse-core/audits/metrics/first-contentful-paint.js | title": {
+    "message": "उपयोगी सामग्री वाला पहला पेंट"
+  },
+  "lighthouse-core/audits/metrics/first-cpu-idle.js | description": {
+    "message": "इस्तेमाल में न होने वाले पहले सीपीयू (CPU) का आंकड़ा, वह समय बताता है जब पेज का मुख्य थ्रेड पहली बार इनपुट को संभालने के लिए काफ़ी होता है. [ज़्यादा जानें](https://developers.google.com/web/tools/lighthouse/audits/first-interactive)."
+  },
+  "lighthouse-core/audits/metrics/first-cpu-idle.js | title": {
+    "message": "पहला सीपीयू (CPU) इस्तेमाल में नहीं"
+  },
+  "lighthouse-core/audits/metrics/first-meaningful-paint.js | description": {
+    "message": "फ़र्स्ट मीनिंगफ़ुल पेंट, पेज की मुख्य सामग्री दिखाई देने का समय बताता है. [ज़्यादा जानें](https://developers.google.com/web/tools/lighthouse/audits/first-meaningful-paint)."
+  },
+  "lighthouse-core/audits/metrics/first-meaningful-paint.js | title": {
+    "message": "पहला सार्थक पेंट"
+  },
+  "lighthouse-core/audits/metrics/interactive.js | description": {
+    "message": "इंटरैक्टिव में लगने वाला समय, वह समय है जितनी देर में पेज पूरी तरह से इंटरैक्टिव हो जाता है. [ज़्यादा जानें](https://developers.google.com/web/tools/lighthouse/audits/consistently-interactive)."
+  },
+  "lighthouse-core/audits/metrics/interactive.js | title": {
+    "message": "इंटरएक्टिव में लगने वाला समय"
+  },
+  "lighthouse-core/audits/metrics/max-potential-fid.js | description": {
+    "message": "आपके उपयोगकर्ताओं को अनुभव होने वाले संभावित फ़र्स्ट इनपुट डिले में सबसे लंबे टास्क की अवधि शामिल होती है. यह वह डिले है जिसकी वजह से आपके उपयोगकर्ताओं को सबसे ज़्यादा देरी का सामना करना पड़ सकता है. यह अवधि मिलीसेकंड इकाई में बताई जाती है. [ज़्यादा जानें](https://developers.google.com/web/updates/2018/05/first-input-delay)."
+  },
+  "lighthouse-core/audits/metrics/max-potential-fid.js | title": {
+    "message": "सबसे ज़्यादा संभावित फ़र्स्ट इनपुट डिले"
+  },
+  "lighthouse-core/audits/metrics/speed-index.js | description": {
+    "message": "स्पीड इंडेक्स से पता चलता है कि किसी पेज की सामग्री, विज़ुअल रूप से कितनी तेज़ी से डाली गई है. [ज़्यादा जानें](https://developers.google.com/web/tools/lighthouse/audits/speed-index)."
+  },
+  "lighthouse-core/audits/metrics/speed-index.js | title": {
+    "message": "गति इंडेक्स"
+  },
+  "lighthouse-core/audits/metrics/total-blocking-time.js | description": {
+    "message": "टास्क में लगने वाले समय की अवधि 50 मि. से. से ज़्यादा होने पर एफ़सीपी और इंटरैक्टिव में लगने वाले समय के बीच के कुल समय. यह समय मिलिसेकंड इकाई में बताया जाता है."
+  },
+  "lighthouse-core/audits/metrics/total-blocking-time.js | title": {
+    "message": "ब्लॉक होने का कुल समय"
+  },
+  "lighthouse-core/audits/network-rtt.js | description": {
+    "message": "नेटवर्क के 'दोतरफ़ा यात्रा के समय' (आरटीटी) का परफ़ॉर्मेंस पर बहुत गहरा असर होता है. शुरुआत की जगह पर आरटीटी ज़्यादा होने से यह पता चलता है कि अगर सर्वर इस्तेमाल करने वालों के करीब होंगे, तो परफ़ॉर्मेंस बेहतर हो सकती है. [ज़्यादा जानें](https://hpbn.co/primer-on-latency-and-bandwidth/)."
+  },
+  "lighthouse-core/audits/network-rtt.js | title": {
+    "message": "नेटवर्क का दोतरफ़ा यात्रा का समय"
+  },
+  "lighthouse-core/audits/network-server-latency.js | description": {
+    "message": "सर्वर के इंतज़ार के समय का असर वेब परफ़ॉर्मेंस पर हो सकता है. शुरुआती जगह के सर्वर के 'इंतज़ार का समय' ज़्यादा होने से यह पता चलता है कि सर्वर ओवरलोड हो गया है या उसकी बैकएंड परफ़ॉर्मेंस खराब है. [ज़्यादा जानें](https://hpbn.co/primer-on-web-performance/#analyzing-the-resource-waterfall)."
+  },
+  "lighthouse-core/audits/network-server-latency.js | title": {
+    "message": "सर्वर बैकएंड के इंतज़ार का समय"
+  },
+  "lighthouse-core/audits/offline-start-url.js | description": {
+    "message": "सर्विस वर्कर की वजह से आपका वेब ऐप्लिकेशन ऑनलाइन, ऑफ़लाइन, और रुक-रुककर चलने वाले नेटवर्क कनेक्शन जैसी स्थितियों में भी अच्छे ढंग से काम करता है. [ज़्यादा जानें](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)."
+  },
+  "lighthouse-core/audits/offline-start-url.js | failureTitle": {
+    "message": "`start_url` ऑफ़लाइन होने पर, \"200\" कोड का जवाब नहीं देता है"
+  },
+  "lighthouse-core/audits/offline-start-url.js | title": {
+    "message": "`start_url` ऑफ़लाइन होने पर, \"200\" कोड का जवाब देता है"
+  },
+  "lighthouse-core/audits/offline-start-url.js | warningCantStart": {
+    "message": "Lighthouse, मेनिफ़ेस्ट फ़ाइल से `start_url` को नहीं ढूंढ सका. इसी वजह से, `start_url` को दस्तावेज़ का यूआरएल मान लिया गया. गड़बड़ी का मैसेज: '{manifestWarning}'."
+  },
+  "lighthouse-core/audits/performance-budget.js | columnOverBudget": {
+    "message": "बजट से ज़्यादा"
+  },
+  "lighthouse-core/audits/performance-budget.js | description": {
+    "message": "नेटवर्क अनुरोधों की संख्या और उनकी क्वालिटी, आपको दिए गए परफ़ॉर्मेंस बजट की ओर से सेट किए गए लक्ष्यों के हिसाब से होनी चाहिए. [ज़्यादा जानें](https://developers.google.com/web/tools/lighthouse/audits/budgets)."
+  },
+  "lighthouse-core/audits/performance-budget.js | requestCountOverBudget": {
+    "message": "{count,plural, =1{अनुरोध}one{# अनुरोध}other{# अनुरोध}}"
+  },
+  "lighthouse-core/audits/performance-budget.js | title": {
+    "message": "परफ़ॉर्मेंस बजट"
+  },
+  "lighthouse-core/audits/redirects-http.js | description": {
+    "message": "अगर आप एचटीटीपीएस पहले ही सेट अप कर चुके हैं, तो पक्का करें कि अपने सभी उपयोगकर्ताओं के लिए सुरक्षित वेब फ़ीचर चालू करने के मकसद से आप सभी एचटीटीपी ट्रैफ़िक को एचटीटीपीएस पर रीडायरेक्ट करें. [ज़्यादा जानें](https://developers.google.com/web/tools/lighthouse/audits/http-redirects-to-https)."
+  },
+  "lighthouse-core/audits/redirects-http.js | failureTitle": {
+    "message": "वेब पेज, एचटीटीपी ट्रैफ़िक को एचटीटीपीएस पर रीडायरेक्ट नहीं करता है"
+  },
+  "lighthouse-core/audits/redirects-http.js | title": {
+    "message": "वेब पेज, एचटीटीपी ट्रैफ़िक को एचटीटीपीएस पर रीडायरेक्ट करता है"
+  },
+  "lighthouse-core/audits/redirects.js | description": {
+    "message": "रीडायरेक्ट की वजह से पेज के लोड होने से लगने वाला समय और बढ़ जाता है. [ज़्यादा जानें](https://developers.google.com/web/tools/lighthouse/audits/redirects)."
+  },
+  "lighthouse-core/audits/redirects.js | title": {
+    "message": "एक से ज़्यादा पेज रीडायरेक्ट करने से बचें"
+  },
+  "lighthouse-core/audits/resource-summary.js | description": {
+    "message": "पेज संसाधनों की संख्या और आकार के बजट सेट करने के लिए, एक budget.json फ़ाइल जोड़ें. [ज़्यादा जानें](https://developers.google.com/web/tools/lighthouse/audits/budgets)."
+  },
+  "lighthouse-core/audits/resource-summary.js | displayValue": {
+    "message": "{requestCount,plural, =1{1 अनुरोध • {byteCount, number, bytes} केबी}one{# अनुरोध • {byteCount, number, bytes} केबी}other{# अनुरोध • {byteCount, number, bytes} केबी}}"
+  },
+  "lighthouse-core/audits/resource-summary.js | title": {
+    "message": "अनुरोधों की संख्या कम और ट्रांसफ़र का आकार छोटा रखें"
+  },
+  "lighthouse-core/audits/seo/canonical.js | description": {
+    "message": "कैननिकल लिंक, खोज नतीजों में दिखाए जाने वाले यूआरएल के बारे में बताते हैं. [ज़्यादा जानें](https://web.dev/canonical)."
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationConflict": {
+    "message": "कई कॉन्फ़्लिक्टिंग यूआरएल हैं ({urlList})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationDifferentDomain": {
+    "message": "किसी दूसरे डोमेन की तरफ़ इशारा करता है ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationInvalid": {
+    "message": "गलत यूआरएल ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationPointsElsewhere": {
+    "message": "किसी दूसरी `hreflang` जगह वाली विशेषता ({url}) की तरफ़ इशारा करता है"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationRelative": {
+    "message": "मिलता-जुलता यूआरएल ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationRoot": {
+    "message": "मिलती-जुलती सामग्री वाले पेज पर ले जाने के बजाय डोमेन के रूट यूआरएल (होम पेज) पर ले जाता है"
+  },
+  "lighthouse-core/audits/seo/canonical.js | failureTitle": {
+    "message": "दस्तावेज़ में सही `rel=canonical` नहीं है"
+  },
+  "lighthouse-core/audits/seo/canonical.js | title": {
+    "message": "दस्तावेज़ में सही `rel=canonical` शामिल है"
+  },
+  "lighthouse-core/audits/seo/font-size.js | description": {
+    "message": "पढ़ने के नज़रिए से, 12px से कम आकार वाले फ़ॉन्ट काफ़ी छोटे होते हैं. ऐसा होने पर, मोबाइल से वेबसाइट पर आने वालों को पढ़ने के लिए “पिंच करके ज़ूम करना” होगा. कोशिश करें कि पेज का 60% से ज़्यादा टेक्स्ट 12px या उससे बड़े आकार का हो. [ज़्यादा जानें](https://web.dev/font-size)."
+  },
+  "lighthouse-core/audits/seo/font-size.js | displayValue": {
+    "message": "{decimalProportion, number, extendedPercent} टेक्स्ट पढ़ने लायक है"
+  },
+  "lighthouse-core/audits/seo/font-size.js | explanationViewport": {
+    "message": "मोबाइल स्क्रीन के लिए कोई व्यूपोर्ट मेटा टैग ऑप्टिमाइज़ नहीं किए जाने की वजह से टेक्स्ट पढ़ने लायक नहीं है."
+  },
+  "lighthouse-core/audits/seo/font-size.js | explanationWithDisclaimer": {
+    "message": "टेक्स्ट का {decimalProportion, number, extendedPercent} बहुत छोटा है ({decimalProportionVisited, number, extendedPercent} नमूने पर आधारित)."
+  },
+  "lighthouse-core/audits/seo/font-size.js | failureTitle": {
+    "message": "दस्तावेज़ पढ़ने लायक फ़ॉन्ट आकारों का इस्तेमाल नहीं करता है"
+  },
+  "lighthouse-core/audits/seo/font-size.js | title": {
+    "message": "दस्तावेज़ पढ़ने लायक फ़ॉन्ट आकारों का इस्तेमाल करता है"
+  },
+  "lighthouse-core/audits/seo/hreflang.js | description": {
+    "message": "hreflang लिंक से सर्च इंजन को यह पता चलता है कि किसी खास भाषा या क्षेत्र के लिए पेज के किस वर्शन को खोज नतीजों में रखना चाहिए. [ज़्यादा जानें](https://web.dev/hreflang)."
+  },
+  "lighthouse-core/audits/seo/hreflang.js | failureTitle": {
+    "message": "दस्तावेज़ में सही `hreflang` नहीं है"
+  },
+  "lighthouse-core/audits/seo/hreflang.js | title": {
+    "message": "दस्तावेज़ में सही `hreflang` शामिल है"
+  },
+  "lighthouse-core/audits/seo/http-status-code.js | description": {
+    "message": "ऐसे पेज ठीक से इंडेक्स नहीं किए जा सकते जिनमें काम न करने वाले एचटीटीपी स्टेटस कोड हों. [ज़्यादा जानें](https://web.dev/http-status-code)."
+  },
+  "lighthouse-core/audits/seo/http-status-code.js | failureTitle": {
+    "message": "पेज में काम नहीं करने वाला एचटीटीपी स्थिति कोड है"
+  },
+  "lighthouse-core/audits/seo/http-status-code.js | title": {
+    "message": "पेज में काम करने वाला एचटीटीपी स्थिति कोड है"
+  },
+  "lighthouse-core/audits/seo/is-crawlable.js | description": {
+    "message": "अगर सर्च इंजन के पास आपके पेज क्रॉल करने की मंज़ूरी नहीं होती, तो वे खोज नतीजों में आपके पेज शामिल नहीं कर पाएंगे. [ज़्यादा जानें](https://web.dev/is-crawable)."
+  },
+  "lighthouse-core/audits/seo/is-crawlable.js | failureTitle": {
+    "message": "पेज को इंडेक्स करने से ब्लॉक किया गया है"
+  },
+  "lighthouse-core/audits/seo/is-crawlable.js | title": {
+    "message": "पेज को इंडेक्स करने से ब्लॉक नहीं किया गया है"
+  },
+  "lighthouse-core/audits/seo/link-text.js | description": {
+    "message": "लिंक की पूरी जानकारी देने वाले टेक्स्ट की मदद से सर्च इंजन आपकी सामग्री के बारे में समझ पाते हैं. [ज़्यादा जानें](https://web.dev/link-text)."
+  },
+  "lighthouse-core/audits/seo/link-text.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 लिंक मिला}one{# लिंक मिले}other{# लिंक मिले}}"
+  },
+  "lighthouse-core/audits/seo/link-text.js | failureTitle": {
+    "message": "लिंक में पूरी जानकारी देने वाला टेक्स्ट नहीं है"
+  },
+  "lighthouse-core/audits/seo/link-text.js | title": {
+    "message": "लिंक में पूरी जानकारी देने वाला टेक्स्ट है"
+  },
+  "lighthouse-core/audits/seo/manual/structured-data.js | description": {
+    "message": "स्ट्रक्चर्ड डेटा की पुष्टि करने के लिए [स्ट्रक्चर्ड डेटा टेस्टिंग टूल](https://search.google.com/structured-data/testing-tool/) और [ स्ट्रक्चर्ड डेटा लिंटर](http://linter.structured-data.org/) चलाएं. [ज़्यादा जानें](https://web.dev/structured-data)."
+  },
+  "lighthouse-core/audits/seo/manual/structured-data.js | title": {
+    "message": "स्ट्रक्चर्ड डेटा सही है"
+  },
+  "lighthouse-core/audits/seo/meta-description.js | description": {
+    "message": "खोज नतीजों में मुख्य जानकारी शामिल हो सकती है, ताकि पेज सामग्री के बारे में थोड़े शब्दों में खास जानकारी दी जा सके. [ज़्यादा जानें](https://web.dev/meta-description)."
+  },
+  "lighthouse-core/audits/seo/meta-description.js | explanation": {
+    "message": "ब्यौरे का टेक्स्ट खाली है."
+  },
+  "lighthouse-core/audits/seo/meta-description.js | failureTitle": {
+    "message": "दस्तावेज़ में संक्षिप्त विवरण नहीं है"
+  },
+  "lighthouse-core/audits/seo/meta-description.js | title": {
+    "message": "दस्तावेज़ में संक्षिप्त विवरण है"
+  },
+  "lighthouse-core/audits/seo/plugins.js | description": {
+    "message": "सर्च इंजन प्लग इन की सामग्री इंडेक्स नहीं कर सकते. साथ ही, कई डिवाइस प्लग इन पर पाबंदी लगाते हैं या वे उन पर काम नहीं करते. [ज़्यादा जानें](https://web.dev/plugins)."
+  },
+  "lighthouse-core/audits/seo/plugins.js | failureTitle": {
+    "message": "दस्तावेज़ प्लग इन का इस्तेमाल करता है"
+  },
+  "lighthouse-core/audits/seo/plugins.js | title": {
+    "message": "दस्तावेज़ प्लग इन से बचता है"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | description": {
+    "message": "अगर आपकी robots.txt फ़ाइल सही नहीं है, तो क्रॉलर यह नहीं समझ पाएंगे कि आप अपनी वेबसाइट को किस तरह क्रॉल या इंडेक्स करना चाहते हैं. [ज़्यादा जानें](https://web.dev/robots-txt)."
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | displayValueHttpBadCode": {
+    "message": "robots.txt के अनुरोध ने यह एचटीटीपी स्थिति लौटाई है: {statusCode}"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | displayValueValidationError": {
+    "message": "{itemCount,plural, =1{1 गड़बड़ी मिली}one{# गड़बड़ियां मिलीं}other{# गड़बड़ियां मिलीं}}"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | explanation": {
+    "message": "Lighthouse, robots.txt फ़ाइल डाउनलोड नहीं कर सका"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | failureTitle": {
+    "message": "robots.txt सही नहीं है"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | title": {
+    "message": "robots.txt सही है"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | description": {
+    "message": "बटन और लिंक जैसे इंटरैक्टिव एलिमेंट, आकार में बड़े (48x48px) होने चाहिए और इनके आस-पास बड़ी जगह होनी चाहिए. ऐसा करने से, दूसरे एलिमेंट को ओवरलैप किए बिना आसानी से उन पर टैप किया जा सकेगा. [ज़्यादा जानें](https://web.dev/tap-targets)."
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | displayValue": {
+    "message": "{decimalProportion, number, percent} टैप की जाने वाली जगहें सही आकार में हैं"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | explanationViewportMetaNotOptimized": {
+    "message": "मोबाइल स्क्रीन के लिए कोई व्यूपोर्ट मेटा टैग ऑप्टिमाइज़ नहीं किए जाने की वजह से टैप की जाने वाली जगहें काफ़ी छोटी हैं"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | failureTitle": {
+    "message": "टैप की जाने वाली जगहें सही आकार में नहीं हैं"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | overlappingTargetHeader": {
+    "message": "ओवरलैप करने वाली जगह"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | tapTargetHeader": {
+    "message": "टैप की जाने वाली जगह"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | title": {
+    "message": "टैप की जाने वाली जगहें सही आकार में हैं"
+  },
+  "lighthouse-core/audits/service-worker.js | description": {
+    "message": "सर्विस वर्कर एक ऐसी तकनीक है जो आपके ऐप्लिकेशन के लिए कई प्रगतिशील वेब ऐप फ़ीचर जैसे कि ऑफ़लाइन, होमस्क्रीन पर जोड़ें, और पुश नोटिफ़िकेशन को चालू करती है. [ज़्यादा जानें](https://developers.google.com/web/tools/lighthouse/audits/registered-service-worker)."
+  },
+  "lighthouse-core/audits/service-worker.js | explanationBadManifest": {
+    "message": "इस पेज का नियंत्रण सर्विस वर्कर के पास है. हालांकि, कोई `start_url` नहीं मिला, क्योंकि मेनिफ़ेस्ट को मान्य JSON के रूप में पार्स नहीं किया जा सका"
+  },
+  "lighthouse-core/audits/service-worker.js | explanationBadStartUrl": {
+    "message": "इस पेज का नियंत्रण सर्विस वर्कर के पास है. हालांकि, `start_url` ({startUrl}) सर्विस वर्कर के दायरे में नहीं है ({scopeUrl})"
+  },
+  "lighthouse-core/audits/service-worker.js | explanationNoManifest": {
+    "message": "इस पेज का नियंत्रण सर्विस वर्कर के पास है. हालांकि, कोई `start_url` नहीं मिला, क्योंकि कोई पेज पर कोई मेनिफ़ेस्ट ही नहीं था."
+  },
+  "lighthouse-core/audits/service-worker.js | explanationOutOfScope": {
+    "message": "इस मूल में एक या ज़्यादा सर्विस वर्कर हैं. हालांकि, पेज ({pageUrl}) दायरे में नहीं है."
+  },
+  "lighthouse-core/audits/service-worker.js | failureTitle": {
+    "message": "किसी ऐसे सर्विस वर्कर को रजिस्टर नहीं करता जो पेज और `start_url` को नियंत्रित करता है"
+  },
+  "lighthouse-core/audits/service-worker.js | title": {
+    "message": "किसी ऐसे सर्विस वर्कर को रजिस्टर करता है जो पेज और `start_url` को नियंत्रित करता है"
+  },
+  "lighthouse-core/audits/splash-screen.js | description": {
+    "message": "उपयोगकर्ता जब अपनी होमस्क्रीन से आपका ऐप्लिकेशन लॉन्च करते हैं, तो थीम वाली स्प्लैश स्क्रीन की वजह से इसका इस्तेमाल करने वालों को अच्छा अनुभव मिलता है. [ज़्यादा जानें](https://developers.google.com/web/tools/lighthouse/audits/custom-splash-screen)."
+  },
+  "lighthouse-core/audits/splash-screen.js | failureTitle": {
+    "message": "पसंद के मुताबिक स्प्लैश स्क्रीन के लिए कॉन्फ़िगर नहीं किया गया"
+  },
+  "lighthouse-core/audits/splash-screen.js | title": {
+    "message": "पसंद के मुताबिक स्प्लैश स्क्रीन के लिए कॉन्फ़िगर किया गया"
+  },
+  "lighthouse-core/audits/themed-omnibox.js | description": {
+    "message": "ब्राउज़र का पता बार आपकी वेबसाइट से मेल खाए, इसके लिए थीम इस्तेमाल कर सकते हैं. [ज़्यादा जानें](https://developers.google.com/web/tools/lighthouse/audits/address-bar)."
+  },
+  "lighthouse-core/audits/themed-omnibox.js | failureTitle": {
+    "message": "पता बार के लिए थीम का रंग सेट नहीं करता है."
+  },
+  "lighthouse-core/audits/themed-omnibox.js | title": {
+    "message": "पता बार के लिए थीम का रंग सेट करता है."
+  },
+  "lighthouse-core/audits/third-party-summary.js | columnBlockingTime": {
+    "message": "मुख्य थ्रेड ब्लॉक होने का समय"
+  },
+  "lighthouse-core/audits/third-party-summary.js | columnThirdParty": {
+    "message": "तीसरा पक्ष"
+  },
+  "lighthouse-core/audits/third-party-summary.js | description": {
+    "message": "तीसरे पक्ष के कोड आपके पेज की लोड परफ़ॉर्मेंस पर गहरा असर कर सकते हैं. ऐसी तीसरे-पक्ष की सेवा देने वाली कंपनियों का इस्तेमाल ज़्यादा न करें जिनके कोड अब आपके काम के नहीं हैं. साथ ही, तीसरे पक्ष का कोड तब लोड करें जब आपके पेज पर मुख्य लोडिंग का काम पूरा हो गया हो. [ज़्यादा जानें](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/loading-third-party-javascript/)."
+  },
+  "lighthouse-core/audits/third-party-summary.js | displayValue": {
+    "message": "तीसरे पक्ष के कोड ने {timeInMs, number, milliseconds} एमएस के लिए मुख्य थ्रेड को ब्लॉक कर दिया है"
+  },
+  "lighthouse-core/audits/third-party-summary.js | failureTitle": {
+    "message": "तीसरे पक्ष के कोड का असर कम करें"
+  },
+  "lighthouse-core/audits/third-party-summary.js | title": {
+    "message": "इसका इस्तेमाल तीसरा पक्ष करता है"
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | description": {
+    "message": "पहली बाइट का समय, उस समय की पहचान करता है जब आपका सर्वर कोई जवाब भेजता है. [ज़्यादा जानें](https://developers.google.com/web/tools/lighthouse/audits/ttfb)."
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | displayValue": {
+    "message": "रुट दस्तावेज़ बनने में {timeInMs, number, milliseconds} मि.से. का समय लगा"
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | failureTitle": {
+    "message": "सर्वर प्रतिक्रिया समय घटाएं (TTFB)"
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | title": {
+    "message": "सर्वर के जवाब देने के समय धीमे हैं (TTFB)"
+  },
+  "lighthouse-core/audits/user-timings.js | columnDuration": {
+    "message": "कुल समय"
+  },
+  "lighthouse-core/audits/user-timings.js | columnStartTime": {
+    "message": "शुरुआत का समय"
+  },
+  "lighthouse-core/audits/user-timings.js | columnType": {
+    "message": "प्रकार"
+  },
+  "lighthouse-core/audits/user-timings.js | description": {
+    "message": "मुख्य उपयोगकर्ता अनुभवों के दौरान, असली दुनिया के माप तैयार करने के लिए अपने ऐप्लिकेशन को 'उपयोगकर्ता समय एपीआई' की मदद से तैयार करें. [ज़्यादा जानें](https://developers.google.com/web/tools/lighthouse/audits/user-timing)."
+  },
+  "lighthouse-core/audits/user-timings.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 उपयोगकर्ता समय}one{# उपयोगकर्ता समय}other{# उपयोगकर्ता समय}}"
+  },
+  "lighthouse-core/audits/user-timings.js | title": {
+    "message": "उपयोगकर्ता समय अंक और मापन"
+  },
+  "lighthouse-core/audits/uses-rel-preconnect.js | crossoriginWarning": {
+    "message": "\"{securityOrigin}\" के लिए पहले से कनेक्ट किया गया <link> मिला, लेकिन ब्राउज़र ने इसका इस्तेमाल नहीं किया था. यह पक्का कर लें कि आप `crossorigin` विशेषता का इस्तेमाल ठीक से कर रहे हैं."
+  },
+  "lighthouse-core/audits/uses-rel-preconnect.js | description": {
+    "message": "तीसरे पक्ष के मूल से जल्दी कनेक्शन बनाने के लिए `preconnect` या `dns-prefetch` संसाधन संकेत जोड़ें. [ज़्यादा जानें](https://developers.google.com/web/fundamentals/performance/resource-prioritization#preconnect)."
+  },
+  "lighthouse-core/audits/uses-rel-preconnect.js | title": {
+    "message": "ज़रूरी मूल से प्री-कनेक्ट करें"
+  },
+  "lighthouse-core/audits/uses-rel-preload.js | crossoriginWarning": {
+    "message": "\"{preloadURL}\" के लिए पहले से लोड किया गया <link> मिला, लेकिन ब्राउज़र ने इसका इस्तेमाल नहीं किया था. यह पक्का कर लें कि आप `crossorigin` विशेषता का इस्तेमाल ठीक से कर रहे हैं."
+  },
+  "lighthouse-core/audits/uses-rel-preload.js | description": {
+    "message": "`<link rel=preload>` का इस्तेमाल करके उन संसाधनों को पाने को प्राथमिकता दें जिन्हें फ़िलहाल पेज लोड में 'बाद में चाहिए होंगे' का दर्जा दिया गया है. [ज़्यादा जानें](https://developers.google.com/web/tools/lighthouse/audits/preload)."
+  },
+  "lighthouse-core/audits/uses-rel-preload.js | title": {
+    "message": "प्रमुख अनुरोधों को पहले से लोड करें"
+  },
+  "lighthouse-core/audits/viewport.js | description": {
+    "message": "अपने ऐप्लिकेशन को किसी भी मोबाइल स्क्रीन पर ऑप्टिमाइज़ करने के लिए `<meta name=\"viewport\">` टैग जोड़ें. [ज़्यादा जानें](https://developers.google.com/web/tools/lighthouse/audits/has-viewport-meta-tag)."
+  },
+  "lighthouse-core/audits/viewport.js | explanationNoTag": {
+    "message": "कोई `<meta name=\"viewport\">` टैग नहीं मिला"
+  },
+  "lighthouse-core/audits/viewport.js | failureTitle": {
+    "message": "वेब पेज पर कोई `width` या `initial-scale` वाला `<meta name=\"viewport\">` टैग नहीं है"
+  },
+  "lighthouse-core/audits/viewport.js | title": {
+    "message": "वेब पेज पर `width` या `initial-scale` वाला `<meta name=\"viewport\">` टैग है"
+  },
+  "lighthouse-core/audits/without-javascript.js | description": {
+    "message": "JavaScript बंद होने पर भी आपके ऐप्लिकेशन की कुछ सामग्री दिखाई देनी चाहिए. भले ही वह उपयोगकर्ता को दी जाने वाली एक चेतावनी हो कि ऐप्लिकेशन को इस्तेमाल करने के लिए JavaScript ज़रूरी है. [ज़्यादा जानें](https://developers.google.com/web/tools/lighthouse/audits/no-js)."
+  },
+  "lighthouse-core/audits/without-javascript.js | explanation": {
+    "message": "अगर इसकी स्क्रिप्ट उपलब्ध नहीं हैं, तो पेज के मुख्य हिस्से को कुछ सामग्री रेंडर करनी चाहिए या उसकी इमेज बनानी चाहिए."
+  },
+  "lighthouse-core/audits/without-javascript.js | failureTitle": {
+    "message": "यह वेब पेज, JavaScript उपलब्ध न होने पर फ़ॉलबैक सामग्री मुहैया नहीं करवाता है"
+  },
+  "lighthouse-core/audits/without-javascript.js | title": {
+    "message": "यह वेब पेज, JavaScript उपलब्ध नहीं होने पर कुछ सामग्री दिखाता है"
+  },
+  "lighthouse-core/audits/works-offline.js | description": {
+    "message": "अगर आप एक प्रगतिशील वेब ऐप्लिकेशन बना रहे हैं, तो सर्विस वर्कर का इस्तेमाल करें, ताकि आपका ऐप्लिकेशन ऑफ़लाइन भी काम कर सके. [ज़्यादा जानें](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)."
+  },
+  "lighthouse-core/audits/works-offline.js | failureTitle": {
+    "message": "ऑफ़लाइन होने पर, मौजूदा पेज \"200\" कोड (एचटीटीपी स्टेटस कोड जिसका मतलब है कि एचटीटीपी स्तर पर ट्रांसमिशन ठीक है) का जवाब नहीं देता है"
+  },
+  "lighthouse-core/audits/works-offline.js | title": {
+    "message": "ऑफ़लाइन होने पर, मौजूदा पेज \"200\" कोड का जवाब देता है"
+  },
+  "lighthouse-core/audits/works-offline.js | warningNoLoad": {
+    "message": "ऐसा हो सकता है कि ऑफ़लाइन होने पर पेज इसलिए लोड नहीं हो रहा है, क्योंकि आपका टेस्ट यूआरएल ({requested}) को \"{final}\" की ओर रीडायरेक्ट किया गया था. टेस्टिंग के लिए सीधे दूसरी यूआरएल आज़माएं."
+  },
+  "lighthouse-core/config/default-config.js | a11yAriaGroupDescription": {
+    "message": "ये आपके ऐप्लिकेशन में ARIA के इस्तेमाल को बेहतर बनाने के अवसर हैं, जिससे उपयोगकर्ताओं का स्क्रीन रीडर जैसी सहायक तकनीक का अनुभव बेहतर हो सकता है."
+  },
+  "lighthouse-core/config/default-config.js | a11yAriaGroupTitle": {
+    "message": "ARIA"
+  },
+  "lighthouse-core/config/default-config.js | a11yAudioVideoGroupDescription": {
+    "message": "ये अवसर ऑडियो और वीडियो के लिए वैकल्पिक सामग्री मुहैया कराते हैं. इससे ऐसे इस्तेमाल करने वालों को बेहतर सुविधा मिल सकती है जो ठीक से सुन या देख नहीं पाते हैं."
+  },
+  "lighthouse-core/config/default-config.js | a11yAudioVideoGroupTitle": {
+    "message": "ऑडियो और वीडियो"
+  },
+  "lighthouse-core/config/default-config.js | a11yBestPracticesGroupDescription": {
+    "message": "ये आइटम सुलभता के सबसे अच्छे सामान्य तरीके हाइलाइट करते हैं."
+  },
+  "lighthouse-core/config/default-config.js | a11yBestPracticesGroupTitle": {
+    "message": "सबसे अच्छे तरीके"
+  },
+  "lighthouse-core/config/default-config.js | a11yCategoryDescription": {
+    "message": "ये सभी जांच आपको [आपके वेब ऐप्लिकेशन की सुलभता बेहतर करने](https://developers.google.com/web/fundamentals/accessibility) के अवसर देती हैं. सुलभता गड़बड़ियों के सिर्फ़ एक उपसेट के बारे में अपने आप पता लगाया जा सकता है, इसलिए हम मैन्युअल टेस्टिंग का सुझाव देते हैं."
+  },
+  "lighthouse-core/config/default-config.js | a11yCategoryManualDescription": {
+    "message": "ये आइटम ऐसे मामलों में भी काम करते हैं जहां अपने आप काम करने वाला टेस्टिंग टूल नाकाम रहता है. हमारी गाइड में जाकर [सुलभता समीक्षा करने](https://developers.google.com/web/fundamentals/accessibility/how-to-review) के बारे में ज़्यादा जानें."
+  },
+  "lighthouse-core/config/default-config.js | a11yCategoryTitle": {
+    "message": "सुलभता"
+  },
+  "lighthouse-core/config/default-config.js | a11yColorContrastGroupDescription": {
+    "message": "आपकी सामग्री को पढ़ने में आसान बनाने के अवसर मौजूद हैं."
+  },
+  "lighthouse-core/config/default-config.js | a11yColorContrastGroupTitle": {
+    "message": "कंट्रास्ट"
+  },
+  "lighthouse-core/config/default-config.js | a11yLanguageGroupDescription": {
+    "message": "इन अवसरों की मदद से कई भाषाओं में उपयोगकर्ताओं के ज़रिए आपकी सामग्री के प्रस्तुतिकरण को बेहतर बनाया जा सकता है."
+  },
+  "lighthouse-core/config/default-config.js | a11yLanguageGroupTitle": {
+    "message": "अंतरराष्ट्रीय और स्थानीय भाषा के अनुसार"
+  },
+  "lighthouse-core/config/default-config.js | a11yNamesLabelsGroupDescription": {
+    "message": "इन अवसरों से आपके ऐप्लिकेशन में नियंत्रणों के सीमेंटिक (शब्दार्थ विज्ञान) को बेहतर बनाया जा सकता है. इससे उपयोगकर्ता का स्क्रीन रीडर जैसी सहायक तकनीक का अनुभव बेहतर हो सकता है."
+  },
+  "lighthouse-core/config/default-config.js | a11yNamesLabelsGroupTitle": {
+    "message": "नाम और लेबल"
+  },
+  "lighthouse-core/config/default-config.js | a11yNavigationGroupDescription": {
+    "message": "ये अवसर आपके ऐप्लिकेशन में कीबोर्ड नेविगेशन को बेहतर बनाते हैं."
+  },
+  "lighthouse-core/config/default-config.js | a11yNavigationGroupTitle": {
+    "message": "नेविगेशन"
+  },
+  "lighthouse-core/config/default-config.js | a11yTablesListsVideoGroupDescription": {
+    "message": "ये अवसर स्क्रीन रीडर जैसी सहायक तकनीक का इस्तेमाल करके टेबल या सूची का डेटा पढ़ने की सुविधा बेहतर बनाते हैं."
+  },
+  "lighthouse-core/config/default-config.js | a11yTablesListsVideoGroupTitle": {
+    "message": "टेबल और सूचियां"
+  },
+  "lighthouse-core/config/default-config.js | bestPracticesCategoryTitle": {
+    "message": "सबसे अच्छे तरीके"
+  },
+  "lighthouse-core/config/default-config.js | budgetsGroupDescription": {
+    "message": "परफ़ॉर्मेंस बजट बनाकर आप अपनी साइट की परफ़ॉर्मेंस के मानक तय करते हैं."
+  },
+  "lighthouse-core/config/default-config.js | budgetsGroupTitle": {
+    "message": "बजट"
+  },
+  "lighthouse-core/config/default-config.js | diagnosticsGroupDescription": {
+    "message": "आपके ऐप्लिकेशन के परफ़ॉर्मेंस के बारे में ज़्यादा जानकारी. इन आंकड़ों का परफ़ॉर्मेंस स्कोर पर [सीधा असर](https://github.com/GoogleChrome/lighthouse/blob/d2ec9ffbb21de9ad1a0f86ed24575eda32c796f0/docs/scoring.md#how-are-the-scores-weighted) नहीं पड़ता."
+  },
+  "lighthouse-core/config/default-config.js | diagnosticsGroupTitle": {
+    "message": "निदान"
+  },
+  "lighthouse-core/config/default-config.js | firstPaintImprovementsGroupDescription": {
+    "message": "परफ़ॉर्मेंस का सबसे अहम पहलू यह है कि स्क्रीन पर पिक्सेल कितनी तेज़ी से रेंडर होते हैं. प्रमुख मेट्रिक: उपयोगी सामग्री वाला पहला पेंट, पहला उपयोगी पेंट"
+  },
+  "lighthouse-core/config/default-config.js | firstPaintImprovementsGroupTitle": {
+    "message": "पहले पेंट के सुधार"
+  },
+  "lighthouse-core/config/default-config.js | loadOpportunitiesGroupDescription": {
+    "message": "इन सुझावों से आप अपने पेज को तेज़ी से लोड करा सकते हैं. इनसे आपके परफ़ॉर्मेंस स्कोर पर [सीधा असर](https://github.com/GoogleChrome/lighthouse/blob/d2ec9ffbb21de9ad1a0f86ed24575eda32c796f0/docs/scoring.md#how-are-the-scores-weighted) नहीं होगा."
+  },
+  "lighthouse-core/config/default-config.js | loadOpportunitiesGroupTitle": {
+    "message": "अवसर"
+  },
+  "lighthouse-core/config/default-config.js | metricGroupTitle": {
+    "message": "मेट्रिक"
+  },
+  "lighthouse-core/config/default-config.js | overallImprovementsGroupDescription": {
+    "message": "पूरे लोडिंग अनुभव को बेहतर बनाएं ताकि पेज जवाब दे और जल्दी से जल्दी इस्तेमाल के लिए तैयार हो जाए. प्रमुख मेट्रिक: इंटरेक्टिव में लगने वाला समय, गति इंडेक्स"
+  },
+  "lighthouse-core/config/default-config.js | overallImprovementsGroupTitle": {
+    "message": "समस्त सुधार"
+  },
+  "lighthouse-core/config/default-config.js | performanceCategoryTitle": {
+    "message": "परफ़ॉर्मेंस"
+  },
+  "lighthouse-core/config/default-config.js | pwaCategoryDescription": {
+    "message": "ये जांच प्रगतिशील वेब ऐप्लिकेशन के पहलुओं की पुष्टि करती हैं. [ज़्यादा जानें](https://developers.google.com/web/progressive-web-apps/checklist)."
+  },
+  "lighthouse-core/config/default-config.js | pwaCategoryManualDescription": {
+    "message": "इस तरह की जांच, बेसलाइन [PWA चेकलिस्ट](https://developers.google.com/web/progressive-web-apps/checklist) के लिए ज़रूरी हैं, लेकिन Lighthouse इनकी जांच अपने आप नहीं करता है. वे आपके स्कोर पर असर नहीं डालते हैं, लेकिन इनकी मैन्युअल तरीके से पुष्टि करना ज़रूरी है."
+  },
+  "lighthouse-core/config/default-config.js | pwaCategoryTitle": {
+    "message": "प्रगतिशील वेब ऐप्लिकेशन"
+  },
+  "lighthouse-core/config/default-config.js | pwaFastReliableGroupTitle": {
+    "message": "तेज़ और भरोसेमंद"
+  },
+  "lighthouse-core/config/default-config.js | pwaInstallableGroupTitle": {
+    "message": "इंस्टॉल किया जा सकता है"
+  },
+  "lighthouse-core/config/default-config.js | pwaOptimizedGroupTitle": {
+    "message": "PWA ऑप्टिमाइज़ किया गया"
+  },
+  "lighthouse-core/config/default-config.js | seoCategoryDescription": {
+    "message": "ये जांच पक्का करती हैं कि आपका पेज, सर्च इंजन के नतीजे रैंक करने के लिए ऑप्टिमाइज़ किया हुआ है. दूसरी वजहों से Lighthouse जांच नहीं करता है. इसका असर आपकी खोज की रैंकिंग पर हो सकता है. [ज़्यादा जानें](https://support.google.com/webmasters/answer/35769)."
+  },
+  "lighthouse-core/config/default-config.js | seoCategoryManualDescription": {
+    "message": "SEO के दूसरे सबसे अच्छे तरीके देखने के लिए अपनी साइट पर पुष्टि करने वाले ये और भी टूल चलाएं."
+  },
+  "lighthouse-core/config/default-config.js | seoCategoryTitle": {
+    "message": "SEO"
+  },
+  "lighthouse-core/config/default-config.js | seoContentGroupDescription": {
+    "message": "अपने एचटीएमएल को इस तरह फ़ॉर्मैट करें जिससे क्रॉलर आपके ऐप्लिकेशन की सामग्री को बेहतर ढंग से समझ सकें."
+  },
+  "lighthouse-core/config/default-config.js | seoContentGroupTitle": {
+    "message": "सामग्री से जुड़े सबसे अच्छे तरीके"
+  },
+  "lighthouse-core/config/default-config.js | seoCrawlingGroupDescription": {
+    "message": "खोज नतीजों में दिखाई देने के लिए, क्रॉलर को आपके ऐप्लिकेशन का ऐक्सेस चाहिए."
+  },
+  "lighthouse-core/config/default-config.js | seoCrawlingGroupTitle": {
+    "message": "क्रॉल करना और इंडेक्स करना"
+  },
+  "lighthouse-core/config/default-config.js | seoMobileGroupDescription": {
+    "message": "यह पक्का करें कि आपके पेज मोबाइल फ़्रेंडली हों. इससे सामग्री वाले पेज पढ़ने के लिए उपयोगकर्ताओं को पिंच या ज़ूम नहीं करना पड़ेगा. [ज़्यादा जानें](https://developers.google.com/search/mobile-sites/)."
+  },
+  "lighthouse-core/config/default-config.js | seoMobileGroupTitle": {
+    "message": "मोबाइल फ़्रेंडली"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnCacheTTL": {
+    "message": "कैश TTL"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnLocation": {
+    "message": "जगह की जानकारी"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnName": {
+    "message": "नाम"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnRequests": {
+    "message": "अनुरोध"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnResourceType": {
+    "message": "संसाधन का प्रकार"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnSize": {
+    "message": "आकार"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnTimeSpent": {
+    "message": "बिताया गया समय"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnTransferSize": {
+    "message": "ट्रांसफ़र आकार"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnURL": {
+    "message": "यूआरएल"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnWastedBytes": {
+    "message": "संभावित बचत"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnWastedMs": {
+    "message": "संभावित बचत"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | displayValueByteSavings": {
+    "message": "{wastedBytes, number, bytes} केबी की संभावित बचत"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | displayValueMsSavings": {
+    "message": "{wastedMs, number, milliseconds} मि. से. की संभावित बचत"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | documentResourceType": {
+    "message": "दस्तावेज़"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | fontResourceType": {
+    "message": "फ़ॉन्ट"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | imageResourceType": {
+    "message": "इमेज"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | mediaResourceType": {
+    "message": "मीडिया"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | ms": {
+    "message": "{timeInMs, number, milliseconds} मि.से."
+  },
+  "lighthouse-core/lib/i18n/i18n.js | otherResourceType": {
+    "message": "कोई दूसरा विकल्प"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | scriptResourceType": {
+    "message": "स्क्रिप्ट"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | seconds": {
+    "message": "{timeInMs, number, seconds} से."
+  },
+  "lighthouse-core/lib/i18n/i18n.js | stylesheetResourceType": {
+    "message": "स्टाइलशीट"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | thirdPartyResourceType": {
+    "message": "तीसरा पक्ष"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | totalResourceType": {
+    "message": "कुल"
+  },
+  "lighthouse-core/lib/lh-error.js | badTraceRecording": {
+    "message": "आपके पेज लोड में ट्रेस की रिकॉर्डिंग करते समय कोई गड़बड़ी हुई. कृपया Lighthouse को फिर से चलाएं. ({errorCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | criTimeout": {
+    "message": "शुरुआती डीबगर प्रोटोकॉल कनेक्शन का इंतज़ार करते हुए समय खत्म हो गया."
+  },
+  "lighthouse-core/lib/lh-error.js | didntCollectScreenshots": {
+    "message": "Chrome ने पेज लोड के दौरान कोई भी स्क्रीन शॉट इकट्ठा नहीं किया. कृपया पक्का करें कि पेज पर सामग्री दिखाई दे रही है. इसके बाद, Lighthouse को फिर से चलाकर देखें. ({errorCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | dnsFailure": {
+    "message": "DNS सर्वर दिए गए डोमेन को हल नहीं कर सका."
+  },
+  "lighthouse-core/lib/lh-error.js | erroredRequiredArtifact": {
+    "message": "ज़रूरी {artifactName} इकट्ठा करने वाला संसाधन चलाने में गड़बड़ी हुई: {errorMessage}"
+  },
+  "lighthouse-core/lib/lh-error.js | internalChromeError": {
+    "message": "एक अंदरूनी Chrome गड़बड़ी हुई. कृपया Chrome को रीस्टार्ट करें और Lighthouse को फिर से चलाकर देखें."
+  },
+  "lighthouse-core/lib/lh-error.js | missingRequiredArtifact": {
+    "message": "ज़रूरी {artifactName} इकट्ठा करने वाला संसाधन नहीं चलाया जा सका."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailed": {
+    "message": "Lighthouse आपका अनुरोध किया गया पेज ठीक से लोड नहीं कर सका. पक्का करें कि आप सही यूआरएल को टेस्ट कर रहे हैं और सर्वर सभी अनुरोधों के लिए ठीक से काम कर रहा है."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedHung": {
+    "message": "Lighthouse उस यूआरएल को भरोसेमंद रूप से लोड नहीं कर सका जिसका आपने अनुरोध किया था क्योंकि पेज ने काम करना बंद कर दिया था."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedInsecure": {
+    "message": "आपके दिए यूआरएल में सही सुरक्षा सर्टिफ़िकेट नहीं है. {securityMessages}"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedInterstitial": {
+    "message": "Chrome ने वे पेज लोड नहीं किए जिन पर अचानक दिखने वाले विज्ञापन होते हैं. पक्का करें कि आप सही यूआरएल को टेस्ट कर रहे हैं और सर्वर सभी अनुरोधों के लिए ठीक से काम कर रहा है."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedWithDetails": {
+    "message": "Lighthouse आपका अनुरोध किया गया पेज ठीक से लोड नहीं कर सका. पक्का करें कि आप सही यूआरएल को टेस्ट कर रहे हैं और सर्वर सभी अनुरोधों के लिए ठीक से काम कर रहा है. (जानकारी: {errorDetails})"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedWithStatusCode": {
+    "message": "Lighthouse आपका अनुरोध किया गया पेज ठीक से लोड नहीं कर सका. पक्का करें कि आप सही यूआरएल को टेस्ट कर रहे हैं और सर्वर सभी अनुरोधों के लिए ठीक से काम कर रहा है. (स्थिति कोड: {statusCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadTookTooLong": {
+    "message": "आपके पेज को लोड होने में बहुत ज़्यादा समय लगा. अपने पेज के लोड होने का समय कम करने के लिए, कृपया रिपोर्ट में दिए गए अवसरों का फ़ायदा लें. इसके बाद, Lighthouse को फिर से चलाकर देखें. ({errorCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | protocolTimeout": {
+    "message": "DevTools प्रोटोकॉल जवाब के लिए इंतज़ार का समय, तय समय से ज़्यादा हो गया है. (तरीका:{protocolMethod})"
+  },
+  "lighthouse-core/lib/lh-error.js | requestContentTimeout": {
+    "message": "संसाधन की सामग्री लाने में दिए गए समय से ज़्यादा समय लगा"
+  },
+  "lighthouse-core/lib/lh-error.js | urlInvalid": {
+    "message": "आपका दिया हुआ यूआरएल गलत लगता है."
+  },
+  "lighthouse-core/report/html/renderer/util.js | auditGroupExpandTooltip": {
+    "message": "ऑडिट दिखाएं"
+  },
+  "lighthouse-core/report/html/renderer/util.js | crcInitialNavigation": {
+    "message": "शुरुआती नेविगेशन"
+  },
+  "lighthouse-core/report/html/renderer/util.js | crcLongestDurationLabel": {
+    "message": "पाथ का ज़्यादा से ज़्यादा अहम प्रतीक्षा समय:"
+  },
+  "lighthouse-core/report/html/renderer/util.js | errorLabel": {
+    "message": "गड़बड़ी!"
+  },
+  "lighthouse-core/report/html/renderer/util.js | errorMissingAuditInfo": {
+    "message": "गड़बड़ी की रिपोर्ट करें: कोई ऑडिट जानकारी नहीं"
+  },
+  "lighthouse-core/report/html/renderer/util.js | labDataTitle": {
+    "message": "किसी नई या दुबारा जाँची जाने वाली ऐप्लिकेशन के लिए तैयार किया गया डेटा"
+  },
+  "lighthouse-core/report/html/renderer/util.js | lsPerformanceCategoryDescription": {
+    "message": "एम्युलेट किए गए मोबाइल नेटवर्क पर मौजूद पेज का [Lighthouse](https://developers.google.com/web/tools/lighthouse/) विश्लेषण. मान अनुमान के हिसाब से लिखे गए हैं और इनमें अंतर हो सकता है."
+  },
+  "lighthouse-core/report/html/renderer/util.js | manualAuditsGroupTitle": {
+    "message": "मैन्युअल रूप से देखे जाने वाले और ज़्यादा आइटम"
+  },
+  "lighthouse-core/report/html/renderer/util.js | notApplicableAuditsGroupTitle": {
+    "message": "लागू नहीं"
+  },
+  "lighthouse-core/report/html/renderer/util.js | opportunityResourceColumnLabel": {
+    "message": "अवसर"
+  },
+  "lighthouse-core/report/html/renderer/util.js | opportunitySavingsColumnLabel": {
+    "message": "अनुमानित बचत"
+  },
+  "lighthouse-core/report/html/renderer/util.js | passedAuditsGroupTitle": {
+    "message": "पास हुए ऑडिट"
+  },
+  "lighthouse-core/report/html/renderer/util.js | snippetCollapseButtonLabel": {
+    "message": "स्निपेट को छोटा करें"
+  },
+  "lighthouse-core/report/html/renderer/util.js | snippetExpandButtonLabel": {
+    "message": "स्निपेट को बड़ा करें"
+  },
+  "lighthouse-core/report/html/renderer/util.js | thirdPartyResourcesLabel": {
+    "message": "तीसरे पक्ष के संसाधन दिखाएं"
+  },
+  "lighthouse-core/report/html/renderer/util.js | toplevelWarningsMessage": {
+    "message": "कुछ समस्याएं आने के कारण Lighthouse के इस रन पर असर पड़ा है:"
+  },
+  "lighthouse-core/report/html/renderer/util.js | varianceDisclaimer": {
+    "message": "मान अनुमान के हिसाब से लिखे गए हैं और इनमें अंतर हो सकता है. परफ़ॉर्मेंस स्कोर सिर्फ़ [इन मेट्रिक पर आधारित ](https://github.com/GoogleChrome/lighthouse/blob/d2ec9ffbb21de9ad1a0f86ed24575eda32c796f0/docs/scoring.md#how-are-the-scores-weighted) होता है."
+  },
+  "lighthouse-core/report/html/renderer/util.js | warningAuditsGroupTitle": {
+    "message": "चेतावनियों के साथ पास हुए ऑडिट"
+  },
+  "lighthouse-core/report/html/renderer/util.js | warningHeader": {
+    "message": "चेतावनियां: "
+  },
+  "stack-packs/packs/wordpress.js | efficient_animated_content": {
+    "message": "किसी ऐसी सेवा में अपनी GIF अपलोड करने पर विचार करें जो उसे HTML5 वीडियो में एम्बेड करने के लिए उपलब्ध कराएगी."
+  },
+  "stack-packs/packs/wordpress.js | offscreen_images": {
+    "message": "ऐसा [धीमे लोड होने वाले WordPress प्लग इन](https://wordpress.org/plugins/search/lazy+load/) इंस्टॉल करें जिसमें किसी भी ऑफ़स्क्रीन इमेज को अलग करने की सुविधा हो. अगर नहीं, तो किसी ऐसी थीम पर जाएं जो यह सुविधा मुहैया कराती हो. साथ ही, [एएमपी प्लग इन](https://wordpress.org/plugins/amp/) का इस्तेमाल करें."
+  },
+  "stack-packs/packs/wordpress.js | render_blocking_resources": {
+    "message": "ऐसे कई WordPress प्लग इन हैं जो [क्रिटिकल एसेट इनलाइन करने ](https://wordpress.org/plugins/search/critical+css/) या [कम ज़रूरी संसाधनों को डेफ़र करने](https://wordpress.org/plugins/search/defer+css+javascript/) में आपकी मदद कर सकते हैं. ध्यान रखें कि ऐसी प्लग इन से मिलने वाले ऑप्टिमाइज़ेशन आपकी थीम या प्लग इन की सुविधाएं बिगाड़ सकते हैं. इसलिए, आपको कोड में बदलावों को करने की ज़रुरत हो सकती है."
+  },
+  "stack-packs/packs/wordpress.js | time_to_first_byte": {
+    "message": "थीम, प्लगइन, और सर्वर की खास बातें सर्वर से जवाब मिलने के समय में योगदान करती हैं. ज़्यादा ऑप्टिमाइज़ की हुई थीम ढूंढने, एक ऑप्टिमाइज़ेशन प्लगइन को सावधानी से चुनने, और/या अपना सर्वर अपग्रेड करने पर विचार करें."
+  },
+  "stack-packs/packs/wordpress.js | total_byte_weight": {
+    "message": "अपनी पोस्ट सूचियों में खास हिस्से दिखाने पर विचार करें (जैसे 'ज़्यादा' टैग से), किसी पेज पर दिखाई गई पोस्ट की संख्या घटाने, अपनी लंबी पोस्ट को कई पेज में बाँटने या फिर टिप्पणियों को धीरे-धीरे लोड करने वाले प्लगइन का इस्तेमाल करने पर विचार करें."
+  },
+  "stack-packs/packs/wordpress.js | unminified_css": {
+    "message": "कई [WordPress प्लग इन](https://wordpress.org/plugins/search/minify+css/) आपकी साइट की गति को बढ़ा सकते हैं. ऐसा करने के लिए वे आपके स्टाइल को जोड़ते हैं, उन्हें छोटा करते हैं, और कंप्रेस करते हैं. ऐसा हो सकता है कि आप काट-छांट करने के लिए, एक बिल्ड प्रोसेस का इस्तेमाल भी करना चाहें, अगर ऐसा करना मुमकिन हो."
+  },
+  "stack-packs/packs/wordpress.js | unminified_javascript": {
+    "message": "कई [WordPress प्लग इन](https://wordpress.org/plugins/search/minify+javascript/) आपकी साइट की गति को बढ़ा सकते हैं. ऐसा करने के लिए वह आपकी स्क्रिप्ट को जोड़ते हैं, उन्हें छोटा करते हैं, और कंप्रेस करते हैं. ऐसा हो सकता है कि आप काट-छांट करने की इस प्रक्रिया के लिए, एक बिल्ड प्रोसेस का इस्तेमाल भी करना चाहें, अगर ऐसा करना मुमकिन हो."
+  },
+  "stack-packs/packs/wordpress.js | unused_css_rules": {
+    "message": "उन [WordPress प्लग इन](https://wordpress.org/plugins/) की संख्या कम करके या स्विच करके देखें जो आपके पेज में ऐसी सीएसएस लोड कर रहे हैं जिसका कभी इस्तेमाल नहीं हुआ. Chrome DevTools में [कोड कवरेज](https://developers.google.com/web/updates/2017/04/devtools-release-notes#coverage) चलाकर उन प्लग इन की पहचान करें जो आपके पेज में गैर-ज़रूरी सीएसएस जोड़ रहे हैं. आप स्क्रिप्ट के यूआरएल से पहचान सकते हैं कि ऐसा किस थीम/प्लग इन ने किया. ऐसे प्लग इन खोजें जिनके पास उस सूची की कई स्टाइल शीट हैं जिसमें कोड कवरेज में बहुत से लाल निशान हैं. प्लग इन को स्क्रिप्ट तभी क्यू में लगानी चाहिए, अगर पेज पर उसका वाकई इस्तेमाल किया गया हो."
+  },
+  "stack-packs/packs/wordpress.js | unused_javascript": {
+    "message": "उन [WordPress प्लग इन](https://wordpress.org/plugins/) की संख्या कम करके या स्विच करके देखें जो आपके पेज में ऐसी JavaScript लोड कर रहे हैं जिसका कभी इस्तेमाल नहीं हुआ. Chrome DevTools में [कोड कवरेज](https://developers.google.com/web/updates/2017/04/devtools-release-notes#coverage) चलाकर उन प्लग इन की पहचान करें जो आपके पेज में गैर-ज़रूरी JS जोड़ रहे हैं. आप स्क्रिप्ट के यूआरएल से पहचान सकते हैं कि ऐसा किस थीम/प्लग इन ने किया. ऐसे प्लग इन खोजें जिनके पास उस सूची में कई स्क्रिप्ट हैं जिसमें कोड कवरेज में बहुत से लाल निशान हैं. प्लग इन को स्क्रिप्ट तभी क्यू में लगानी चाहिए, अगर पेज पर उसका वाकई इस्तेमाल किया गया हो."
+  },
+  "stack-packs/packs/wordpress.js | uses_long_cache_ttl": {
+    "message": "[WordPress में ब्राउज़र कैशिंग](https://codex.wordpress.org/WordPress_Optimization#Browser_Caching) के बारे में पढ़ें."
+  },
+  "stack-packs/packs/wordpress.js | uses_optimized_images": {
+    "message": "ऐसे [इमेज ऑप्टिमाइज़ेशन WordPress प्लग इन](https://wordpress.org/plugins/search/optimize+images/) का इस्तेमाल करें जो आपकी क्वालिटी बरकरार रखते हुए आपकी इमेज कंप्रेस करता है."
+  },
+  "stack-packs/packs/wordpress.js | uses_responsive_images": {
+    "message": "[मीडिया लाइब्रेरी](https://codex.wordpress.org/Media_Library_Screen) की मदद से इमेज सीधे अपलोड करें, ताकि आप यह पक्का कर सकें कि आपके पास इमेज के वे आकार मौजूद हैं जिनकी आपको ज़रूरत पड़ेगी. इसके बाद, उन्हें डालने के लिए मीडिया लाइब्रेरी या इमेज विजेट का इस्तेमाल करें, ताकि आप यह पक्का कर सकें कि सबसे बेहतर इमेज आकारों का इस्तेमाल किया गया है (इसमें जवाब देने वाले ब्रेकपॉइंट की इमेज भी शामिल हैं). `Full Size` इमेज का इस्तेमाल तब तक न करें जब तक डाइमेंशन उनके इस्तेमाल के हिसाब से ठीक न हों. [ज़्यादा जानें](https://codex.wordpress.org/Inserting_Images_into_Posts_and_Pages#Image_Size)."
+  },
+  "stack-packs/packs/wordpress.js | uses_text_compression": {
+    "message": "आप अपने वेब सर्वर कॉन्फ़िगरेशन में टेक्स्ट कंप्रेस करने की सुविधा चालू कर सकते हैं."
+  },
+  "stack-packs/packs/wordpress.js | uses_webp_images": {
+    "message": "ऐसे [प्लग इन](https://wordpress.org/plugins/search/convert+webp/) या सेवा का इस्तेमाल करें जो आपकी अपलोड की गई इमेज को अपने आप ही सबसे सही फ़ॉर्मैट में बदल देगी."
+  }
+}
diff --git a/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/hr.json b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/hr.json
new file mode 100644
index 0000000..824fde1
--- /dev/null
+++ b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/hr.json
@@ -0,0 +1,1541 @@
+{
+  "lighthouse-core/audits/accessibility/accesskeys.js | description": {
+    "message": "Pristupne tipke omogućuju korisnicima da se brzo usredotoče na određeni dio stranice. Za pravilno kretanje svaka pristupna tipka mora biti jedinstvena. [Saznajte više](https://web.dev/accesskeys/)."
+  },
+  "lighthouse-core/audits/accessibility/accesskeys.js | failureTitle": {
+    "message": "Vrijednosti `[accesskey]` nisu jedinstvene"
+  },
+  "lighthouse-core/audits/accessibility/accesskeys.js | title": {
+    "message": "`[accesskey]` vrijednosti su jedinstvene"
+  },
+  "lighthouse-core/audits/accessibility/aria-allowed-attr.js | description": {
+    "message": "Svaki ARIA `role` podržava određeni podskup `aria-*` atributa. Njihovo nepodudaranje poništava `aria-*` atribute. [Saznajte više](https://web.dev/aria-allowed-attr/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-allowed-attr.js | failureTitle": {
+    "message": "Atributi `[aria-*]` ne podudaraju se sa svojim ulogama"
+  },
+  "lighthouse-core/audits/accessibility/aria-allowed-attr.js | title": {
+    "message": "Atributi `[aria-*]` podudaraju se sa svojim ulogama"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-attr.js | description": {
+    "message": "Neke uloge ARIA-e zahtijevaju atribute koji opisuju stanje elementa čitačima zaslona. [Saznajte više](https://web.dev/aria-required-attr/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-required-attr.js | failureTitle": {
+    "message": "Elementi `[role]` nemaju sve potrebne atribute `[aria-*]`"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-attr.js | title": {
+    "message": "`[role]` imaju sve obavezne atribute`[aria-*]`"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-children.js | description": {
+    "message": "Neke nadređene uloge ARIA moraju sadržavati posebne podređene uloge za izvršavanje svojih namijenjenih funkcija pristupačnosti. [Saznajte više](https://web.dev/aria-required-children/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-required-children.js | failureTitle": {
+    "message": "Nedostaju elementi s ulogom `[role]` koji zahtijevaju određene podređene elemente `[role]`."
+  },
+  "lighthouse-core/audits/accessibility/aria-required-children.js | title": {
+    "message": "Prisutni su elementi s ulogom `[role]` koji zahtijevaju određene podređene elemente `[role]`."
+  },
+  "lighthouse-core/audits/accessibility/aria-required-parent.js | description": {
+    "message": "Određene nadređene uloge moraju sadržavati neke podređene uloge ARIA kako bi mogle pravilno izvršavati namijenjene funkcije pristupačnosti. [Saznajte više](https://web.dev/aria-required-parent/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-required-parent.js | failureTitle": {
+    "message": "Potrebni nadređeni element ne sadrži `[role]`"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-parent.js | title": {
+    "message": "Potrebni nadređeni element sadrži `[role]`."
+  },
+  "lighthouse-core/audits/accessibility/aria-roles.js | description": {
+    "message": "Uloge ARIA moraju sadržavati valjane vrijednosti da bi se mogle izvršavati njihove namijenjene funkcije pristupačnosti. [Saznajte više](https://web.dev/aria-roles/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-roles.js | failureTitle": {
+    "message": "Vrijednosti `[role]` nisu valjane"
+  },
+  "lighthouse-core/audits/accessibility/aria-roles.js | title": {
+    "message": "Vrijednosti `[role]` su valjane"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr-value.js | description": {
+    "message": "Pomoćne tehnologije, poput čitača zaslona, ne mogu tumačiti atribute ARIA s nevažećim vrijednostima. [Saznajte više](https://web.dev/aria-valid-attr-value/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr-value.js | failureTitle": {
+    "message": "Atributi `[aria-*]` ne sadrže valjane vrijednosti"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr-value.js | title": {
+    "message": "Atributi `[aria-*]` sadrže valjane vrijednosti"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr.js | description": {
+    "message": "Pomoćne tehnologije, poput čitača zaslona, ne mogu tumačiti atribute ARIA s nevažećim nazivima. [Saznajte više](https://web.dev/aria-valid-attr/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr.js | failureTitle": {
+    "message": "Atributi `[aria-*]` nisu valjani ili su pogrešno napisani"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr.js | title": {
+    "message": "Atributi `[aria-*]` su valjani i nisu pogrešno napisani"
+  },
+  "lighthouse-core/audits/accessibility/audio-caption.js | description": {
+    "message": "Titlovi omogućuju gluhim i nagluhim korisnicima uporabu audioelemenata jer pružaju ključne informacije, primjerice tko govori, što govori i druge informacije osim govora. [Saznajte više](https://web.dev/audio-caption/)."
+  },
+  "lighthouse-core/audits/accessibility/audio-caption.js | failureTitle": {
+    "message": "Elementima `<audio>` nedostaje element `<track>` s `[kind=\"captions\"]`."
+  },
+  "lighthouse-core/audits/accessibility/audio-caption.js | title": {
+    "message": "Elementi `<audio>` sadržavaju element `<track>` s `[kind=\"captions\"]`"
+  },
+  "lighthouse-core/audits/accessibility/axe-audit.js | failingElementsHeader": {
+    "message": "Elementi koji nisu prošli provjeru"
+  },
+  "lighthouse-core/audits/accessibility/button-name.js | description": {
+    "message": "Kada gumb nema pristupačan naziv, čitači zaslona najavljuju ga kao \"gumb\" te je on neupotrebljiv za korisnike koji se oslanjaju na čitače zaslona. [Saznajte više](https://web.dev/button-name/)."
+  },
+  "lighthouse-core/audits/accessibility/button-name.js | failureTitle": {
+    "message": "Gumbi nemaju pristupačan naziv"
+  },
+  "lighthouse-core/audits/accessibility/button-name.js | title": {
+    "message": "Gumbi imaju pristupačan naziv"
+  },
+  "lighthouse-core/audits/accessibility/bypass.js | description": {
+    "message": "Dodavanje načina za zaobilaženje repetitivnog sadržaja omogućuje korisnicima tipkovnice učinkovitije kretanje po stranici. [Saznajte više](https://web.dev/bypass/)."
+  },
+  "lighthouse-core/audits/accessibility/bypass.js | failureTitle": {
+    "message": "Stranica ne sadrži naslov, vezu za preskakanje ili regiju kao orijentir"
+  },
+  "lighthouse-core/audits/accessibility/bypass.js | title": {
+    "message": "Stranica sadrži naslov, vezu za preskakanje ili regiju kao orijentir"
+  },
+  "lighthouse-core/audits/accessibility/color-contrast.js | description": {
+    "message": "Mnogim je korisnicima teško ili nemoguće čitati tekst niskog kontrasta. [Saznajte više](https://web.dev/color-contrast/)."
+  },
+  "lighthouse-core/audits/accessibility/color-contrast.js | failureTitle": {
+    "message": "Boje u pozadini i prednjem planu nemaju zadovoljavajući omjer kontrasta."
+  },
+  "lighthouse-core/audits/accessibility/color-contrast.js | title": {
+    "message": "Boje u pozadini i prednjem planu imaju zadovoljavajući omjer kontrasta"
+  },
+  "lighthouse-core/audits/accessibility/definition-list.js | description": {
+    "message": "Kada popisi definicija nisu valjano označeni, čitači zaslona mogu proizvesti zbunjujuć ili netočan izlaz. [Saznajte više](https://web.dev/definition-list/)."
+  },
+  "lighthouse-core/audits/accessibility/definition-list.js | failureTitle": {
+    "message": "Elementi `<dl>` ne sadrže samo pravilno naručene grupe `<dt>` i `<dd>`, elemente `<script>` ili `<template>`."
+  },
+  "lighthouse-core/audits/accessibility/definition-list.js | title": {
+    "message": "`<dl>` sadrži samo pravilno naručene grupe `<dt>` i `<dd>` `<script>` ili elemente `<template>`."
+  },
+  "lighthouse-core/audits/accessibility/dlitem.js | description": {
+    "message": "Stavke na popisu definicija (`<dt>` i `<dd>`) moraju biti sadržane u nadređenom elementu `<dl>` da bi ih čitači zaslona mogli pravilno najaviti. [Saznajte više](https://web.dev/dlitem/)."
+  },
+  "lighthouse-core/audits/accessibility/dlitem.js | failureTitle": {
+    "message": "Stavke na popisu definicija nisu upakirane u elemente `<dl>`"
+  },
+  "lighthouse-core/audits/accessibility/dlitem.js | title": {
+    "message": "Stavke na popisu definicija upakirane su u elemente `<dl>`"
+  },
+  "lighthouse-core/audits/accessibility/document-title.js | description": {
+    "message": "Naslov korisnicima čitača zaslona pruža pregled stranice, a korisnici tražilice značajno se na njega oslanjaju kako bi odredili je li neka stranica relevantna za njihovo pretraživanje. [Saznajte više](https://web.dev/document-title/)."
+  },
+  "lighthouse-core/audits/accessibility/document-title.js | failureTitle": {
+    "message": "Dokument ne sadrži element `<title>`"
+  },
+  "lighthouse-core/audits/accessibility/document-title.js | title": {
+    "message": "Dokument sadrži element `<title>`"
+  },
+  "lighthouse-core/audits/accessibility/duplicate-id.js | description": {
+    "message": "Vrijednost atributa ID mora biti jedinstvena kako bi se spriječilo da pomoćne tehnologije propuste druge instance. [Saznajte više](https://web.dev/duplicate-id/)."
+  },
+  "lighthouse-core/audits/accessibility/duplicate-id.js | failureTitle": {
+    "message": "Atributi `[id]` na stranici nisu jedinstveni."
+  },
+  "lighthouse-core/audits/accessibility/duplicate-id.js | title": {
+    "message": "Atributi `[id]` na stranici su jedinstveni"
+  },
+  "lighthouse-core/audits/accessibility/frame-title.js | description": {
+    "message": "Korisnici čitača zaslona oslanjaju se na naslove okvira za opisivanje sadržaja okvira. [Saznajte više](https://web.dev/frame-title/)."
+  },
+  "lighthouse-core/audits/accessibility/frame-title.js | failureTitle": {
+    "message": "Elementi `<frame>` ili `<iframe>` nemaju naslov"
+  },
+  "lighthouse-core/audits/accessibility/frame-title.js | title": {
+    "message": "Elementi `<frame>` ili `<iframe>` imaju naslov"
+  },
+  "lighthouse-core/audits/accessibility/html-has-lang.js | description": {
+    "message": "Ako za stranicu nije naveden atribut jezika, čitač zaslona pretpostavlja da je stranica na zadanom jeziku koji je korisnik odabrao prilikom postavljanja čitača zaslona. Ako stranica nije stvarno na zadanom jeziku, čitač zaslona možda neće ispravno najaviti tekst sa stranice. [Saznajte više](https://web.dev/html-has-lang/)."
+  },
+  "lighthouse-core/audits/accessibility/html-has-lang.js | failureTitle": {
+    "message": "Element `<html>` nema atribut `[lang]`"
+  },
+  "lighthouse-core/audits/accessibility/html-has-lang.js | title": {
+    "message": "Element `<html>` ima atribut `[lang]`"
+  },
+  "lighthouse-core/audits/accessibility/html-lang-valid.js | description": {
+    "message": "Navođenje valjanog [BCP 47 jezika](https://www.w3.org/International/questions/qa-choosing-language-tags#question) pomaže čitačima zaslona u pravilnom najavljivanju teksta. [Saznajte više](https://web.dev/html-lang-valid/)."
+  },
+  "lighthouse-core/audits/accessibility/html-lang-valid.js | failureTitle": {
+    "message": "Element `<html>` ne sadrži valjanu vrijednost za atribut `[lang]`."
+  },
+  "lighthouse-core/audits/accessibility/html-lang-valid.js | title": {
+    "message": "Element `<html>` ima valjanu vrijednost za svoj atribut `[lang]`"
+  },
+  "lighthouse-core/audits/accessibility/image-alt.js | description": {
+    "message": "Informativni elementi trebali bi sadržavati kratak, opisni zamjenski tekst. Ukrasni elementi mogu se zanemariti praznim atributom alt. [Saznajte više](https://web.dev/image-alt/)."
+  },
+  "lighthouse-core/audits/accessibility/image-alt.js | failureTitle": {
+    "message": "Elementi slike nemaju atribute `[alt]`"
+  },
+  "lighthouse-core/audits/accessibility/image-alt.js | title": {
+    "message": "Elementi slike imaju `[alt]` atribute"
+  },
+  "lighthouse-core/audits/accessibility/input-image-alt.js | description": {
+    "message": "Kada se slika upotrebljava kao gumb `<input>`, navođenje zamjenskog teksta može pomoći korisnicima čitača zaslona da shvate svrhu gumba. [Saznajte više](https://web.dev/input-image-alt/)."
+  },
+  "lighthouse-core/audits/accessibility/input-image-alt.js | failureTitle": {
+    "message": "Elementi `<input type=\"image\">` nemaju tekst`[alt]`"
+  },
+  "lighthouse-core/audits/accessibility/input-image-alt.js | title": {
+    "message": "Elementi `<input type=\"image\">` sadrže `[alt]` tekst"
+  },
+  "lighthouse-core/audits/accessibility/label.js | description": {
+    "message": "Oznake osiguravaju da pomoćne tehnologije, poput čitača zaslona, pravilno najavljuju kontrole oblika. [Saznajte više](https://web.dev/label/)."
+  },
+  "lighthouse-core/audits/accessibility/label.js | failureTitle": {
+    "message": "Elementi oblika ne sadrže povezane oznake"
+  },
+  "lighthouse-core/audits/accessibility/label.js | title": {
+    "message": "Elementi oblika imaju povezane oznake"
+  },
+  "lighthouse-core/audits/accessibility/layout-table.js | description": {
+    "message": "Tablica koja se upotrebljava u svrhe izgleda ne smije sadržavati elemente podataka kao što su elementi th ili opis ili atribut sažetka jer to može zbuniti korisnike čitača zaslona. [Saznajte više](https://web.dev/layout-table/)."
+  },
+  "lighthouse-core/audits/accessibility/layout-table.js | failureTitle": {
+    "message": "Prezentacijski elementi za `<table>` ne izbjegavaju upotrebu atributa `<th>`, `<caption>` ili `[summary]`."
+  },
+  "lighthouse-core/audits/accessibility/layout-table.js | title": {
+    "message": "Prezentacijski elementi za `<table>` izbjegavaju upotrebu `<th>`, `<caption>` ili atributa `[summary]`."
+  },
+  "lighthouse-core/audits/accessibility/link-name.js | description": {
+    "message": "Tekst veze (i zamjenski tekst za slike kada se upotrebljava kao veze) koji je prepoznatljiv, jedinstven i može se fokusirati omogućuje lakše kretanje korisnicima čitača zaslona. [Saznajte više](https://web.dev/link-name/)."
+  },
+  "lighthouse-core/audits/accessibility/link-name.js | failureTitle": {
+    "message": "Veze nemaju naziv koji je moguće raspoznati"
+  },
+  "lighthouse-core/audits/accessibility/link-name.js | title": {
+    "message": "Veze imaju naziv koji je moguće raspoznati"
+  },
+  "lighthouse-core/audits/accessibility/list.js | description": {
+    "message": "Čitači zaslona imaju poseban način najavljivanja popisa. Osiguravanje pravilne strukture popisa pomaže izlazu čitača zaslona. [Saznajte više](https://web.dev/list/)."
+  },
+  "lighthouse-core/audits/accessibility/list.js | failureTitle": {
+    "message": "Popisi ne sadrže samo elemente `<li>` i elemente koji podupiru skriptu (`<script>` i`<template>`)."
+  },
+  "lighthouse-core/audits/accessibility/list.js | title": {
+    "message": "Popisi sadrže samo elemente `<li>` i elemente koji podupiru skriptu (`<script>` i`<template>`)."
+  },
+  "lighthouse-core/audits/accessibility/listitem.js | description": {
+    "message": "Za čitače zaslona stavke na popisu (`<li>`) moraju biti sadržane unutar nadređenog `<ul>` ili `<ol>` kako bi ih se moglo pravilno najaviti. [Saznajte više](https://web.dev/listitem/)."
+  },
+  "lighthouse-core/audits/accessibility/listitem.js | failureTitle": {
+    "message": "Stavke popisa (`<li>`) nisu sadržane unutar nadređenih elemenata `<ul>` ili `<ol>`."
+  },
+  "lighthouse-core/audits/accessibility/listitem.js | title": {
+    "message": "Stavke popisa (`<li>`) sadržane su unutar nadređenih elemenata `<ul>` ili `<ol>`"
+  },
+  "lighthouse-core/audits/accessibility/meta-refresh.js | description": {
+    "message": "Korisnici ne očekuju automatsko osvježavanje stranice, pa se fokus vraća na vrh stranice. To može biti frustrirajuće i zbuniti korisnike. [Saznajte više](https://web.dev/meta-refresh/)."
+  },
+  "lighthouse-core/audits/accessibility/meta-refresh.js | failureTitle": {
+    "message": "Dokument upotrebljava `<meta http-equiv=\"refresh\">`"
+  },
+  "lighthouse-core/audits/accessibility/meta-refresh.js | title": {
+    "message": "Dokument ne upotrebljava `<meta http-equiv=\"refresh\">`"
+  },
+  "lighthouse-core/audits/accessibility/meta-viewport.js | description": {
+    "message": "Onemogućavanje zumiranja problematično je za slabovidne korisnike koji se oslanjaju na povećavanje zaslona kako bi pravilno vidjeli sadržaj web-stranice. [Saznajte više](https://web.dev/meta-viewport/)."
+  },
+  "lighthouse-core/audits/accessibility/meta-viewport.js | failureTitle": {
+    "message": "`[user-scalable=\"no\"]` se upotrebljava u elementu `<meta name=\"viewport\">` ili je atribut `[maximum-scale]` manji od pet."
+  },
+  "lighthouse-core/audits/accessibility/meta-viewport.js | title": {
+    "message": "`[user-scalable=\"no\"]` se ne upotrebljava u elementu `<meta name=\"viewport\">` i atribut `[maximum-scale]` nije manji od pet."
+  },
+  "lighthouse-core/audits/accessibility/object-alt.js | description": {
+    "message": "Čitači zaslona ne mogu prevesti sadržaj osim teksta. Dodavanje zamjenskog teksta elementima `<object>` pomaže čitačima zaslona u prenošenju značenja korisnicima. [Saznajte više](https://web.dev/object-alt/)."
+  },
+  "lighthouse-core/audits/accessibility/object-alt.js | failureTitle": {
+    "message": "Elementi `<object>` nemaju tekst`[alt]`"
+  },
+  "lighthouse-core/audits/accessibility/object-alt.js | title": {
+    "message": "Elementi `<object>` sadrže `[alt]` tekst"
+  },
+  "lighthouse-core/audits/accessibility/tabindex.js | description": {
+    "message": "Vrijednost viša od 0 podrazumijeva eksplicitno naređivanje kretanja. Iako je tehnički valjano, to često frustrira korisnike koji se oslanjaju na pomoćne tehnologije. [Saznajte više](https://web.dev/tabindex/)."
+  },
+  "lighthouse-core/audits/accessibility/tabindex.js | failureTitle": {
+    "message": "Neki elementi imaju vrijednost `[tabindex]` višu od 0"
+  },
+  "lighthouse-core/audits/accessibility/tabindex.js | title": {
+    "message": "Nijedan element nema vrijednost `[tabindex]` veću od 0"
+  },
+  "lighthouse-core/audits/accessibility/td-headers-attr.js | description": {
+    "message": "Čitači zaslona sadrže značajke za olakšavanje kretanja po tablicama. Potrebno je pripaziti da se ćelije `<td>` koje upotrebljavaju atribut `[headers]` odnose samo na druge ćelije u istoj tablici kako bi se korisnicima čitača zaslona omogućio bolji doživljaj. [Saznajte više](https://web.dev/td-headers-attr/)."
+  },
+  "lighthouse-core/audits/accessibility/td-headers-attr.js | failureTitle": {
+    "message": "Ćelije u elementu `<table>` koje upotrebljavaju atribut `[headers]` odnose se na druge ćelije te iste tablice."
+  },
+  "lighthouse-core/audits/accessibility/td-headers-attr.js | title": {
+    "message": "Ćelije u elementu `<table>`koje upotrebljavaju atribut `[headers]` odnose se samo na druge ćelije u toj istoj tablici."
+  },
+  "lighthouse-core/audits/accessibility/th-has-data-cells.js | description": {
+    "message": "Čitači zaslona sadrže značajke za olakšavanje kretanja po tablicama. Osiguravanje da se zaglavlja tablice uvijek odnose na neki skup ćelija može poboljšati doživljaj za korisnike čitača zaslona. [Saznajte više](https://web.dev/th-has-data-cells/)."
+  },
+  "lighthouse-core/audits/accessibility/th-has-data-cells.js | failureTitle": {
+    "message": "Elementi `<th>` i elementi s`[role=\"columnheader\"/\"rowheader\"]` nemaju podatkovne ćelije koje oni opisuju."
+  },
+  "lighthouse-core/audits/accessibility/th-has-data-cells.js | title": {
+    "message": "Elementi `<th>` i elementi s `[role=\"columnheader\"/\"rowheader\"]` imaju podatkovne ćelije koje opisuju."
+  },
+  "lighthouse-core/audits/accessibility/valid-lang.js | description": {
+    "message": "Navođenje valjanog [BCP 47 jezika](https://www.w3.org/International/questions/qa-choosing-language-tags#question) u elementima pomaže osigurati da čitač zaslona ispravno izgovara tekst. [Saznajte više](https://web.dev/valid-lang/)."
+  },
+  "lighthouse-core/audits/accessibility/valid-lang.js | failureTitle": {
+    "message": "Atributi `[lang]` ne sadrže valjanu vrijednost"
+  },
+  "lighthouse-core/audits/accessibility/valid-lang.js | title": {
+    "message": "Atributi `[lang]` imaju valjanu vrijednost"
+  },
+  "lighthouse-core/audits/accessibility/video-caption.js | description": {
+    "message": "Kada videozapis sadrži titlove, gluhim i nagluhim osobama jednostavnije je pristupiti njegovim informacijama. [Saznajte više](https://web.dev/video-caption/)."
+  },
+  "lighthouse-core/audits/accessibility/video-caption.js | failureTitle": {
+    "message": "Elementi `<video>` ne sadrže element `<track>` s `[kind=\"captions\"]`."
+  },
+  "lighthouse-core/audits/accessibility/video-caption.js | title": {
+    "message": "Elementi `<video>` sadržavaju element `<track>` s `[kind=\"captions\"]`"
+  },
+  "lighthouse-core/audits/accessibility/video-description.js | description": {
+    "message": "Audioopisi pružaju relevantne informacije za videozapise koje dijaloški okviri ne mogu pružiti, primjerice izraze lica i scene. [Saznajte više](https://web.dev/video-description/)."
+  },
+  "lighthouse-core/audits/accessibility/video-description.js | failureTitle": {
+    "message": "Elementi `<video>` ne sadrže element `<track>` s `[kind=\"description\"]`."
+  },
+  "lighthouse-core/audits/accessibility/video-description.js | title": {
+    "message": "Elementi `<video>` sadržavaju element `<track>` s `[kind=\"description\"]`"
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | description": {
+    "message": "Za idealan izgled na iOS-u kad korisnici na početni zaslon dodaju progresivnu web-aplikaciju definirajte `apple-touch-icon`. Mora ukazivati na neprozirni kvadratni PNG od 192 px (ili 180 px). [Saznajte više](https://developers.google.com/web/fundamentals/design-and-ux/browser-customization/)."
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | failureTitle": {
+    "message": "Ne pruža valjani `apple-touch-icon`"
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | precomposedWarning": {
+    "message": "`apple-touch-icon-precomposed` je zastario; prednost ima `apple-touch-icon`."
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | title": {
+    "message": "Ima valjanu ikonu `apple-touch-icon`"
+  },
+  "lighthouse-core/audits/bootup-time.js | chromeExtensionsWarning": {
+    "message": "Chromeova proširenja negativno su utjecala na izvedbu učitavanja ove stranice. Pokušajte pregledati stranicu anonimno ili putem Chromeovog profila bez proširenja."
+  },
+  "lighthouse-core/audits/bootup-time.js | columnScriptEval": {
+    "message": "Procjena skripte"
+  },
+  "lighthouse-core/audits/bootup-time.js | columnScriptParse": {
+    "message": "Raščlamba skripte"
+  },
+  "lighthouse-core/audits/bootup-time.js | columnTotal": {
+    "message": "Ukupno vrijeme CPU-a"
+  },
+  "lighthouse-core/audits/bootup-time.js | description": {
+    "message": "Savjetujemo vam da skratite vrijeme potrebno za raščlambu, kompiliranje i izvršavanje JS-a. Isporuka manjih JS-ova mogla bi vam pomoći da to postignete. [Saznajte više](https://developers.google.com/web/tools/lighthouse/audits/bootup)."
+  },
+  "lighthouse-core/audits/bootup-time.js | failureTitle": {
+    "message": "Skratite vrijeme izvršavanja JavaScripta"
+  },
+  "lighthouse-core/audits/bootup-time.js | title": {
+    "message": "Vrijeme izvršavanja JavaScripta"
+  },
+  "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | description": {
+    "message": "Veliki GIF-ovi nisu učinkoviti za prikaz animiranog sadržaja. Savjetujemo vam da umjesto GIF-a upotrebljavate MPEG4/WebM videozapise za animacije i PNG/WebP za statične slike da biste smanjili količinu mrežnih bajtova. [Saznajte više](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/replace-animated-gifs-with-video/)"
+  },
+  "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | title": {
+    "message": "Upotrebljavajte formate videozapisa za animirani sadržaj"
+  },
+  "lighthouse-core/audits/byte-efficiency/offscreen-images.js | description": {
+    "message": "Za slike izvan zaslona i skrivene slike savjetujemo odgođeno učitavanje nakon što se učitaju svi kritični resursi da biste skratili vrijeme do interaktivnosti. [Saznajte više](https://developers.google.com/web/tools/lighthouse/audits/offscreen-images)."
+  },
+  "lighthouse-core/audits/byte-efficiency/offscreen-images.js | title": {
+    "message": "Odgodite slike izvan zaslona"
+  },
+  "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | description": {
+    "message": "Resursi blokiraju prvo renderiranje vaše stranice. Savjetujemo vam da kljulan JS/CSS isporučite u tekstu te da da odgodite sve JS-ove/stilove koji nisu ključni. [Saznajte više](https://developers.google.com/web/tools/lighthouse/audits/blocking-resources)."
+  },
+  "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | title": {
+    "message": "Uklonite resurse koji blokiraju generiranje"
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | description": {
+    "message": "Veliki mrežni resursi korisnicima uzrokuju stvarne novčane troškove i usko koreliraju s dugim vremenom učitavanja. [Saznajte više](https://developers.google.com/web/tools/lighthouse/audits/network-payloads)."
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | displayValue": {
+    "message": "Ukupna veličina bila je {totalBytes, number, bytes} KB"
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | failureTitle": {
+    "message": "Izbjegavajte ogromne mrežne resurse"
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | title": {
+    "message": "Izbjegava ogromne mrežne resurse"
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-css.js | description": {
+    "message": "Umanjenjem CSS datoteka mogu se smanjiti veličine mrežnih resursa. [Saznajte više](https://developers.google.com/web/tools/lighthouse/audits/minify-css)."
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-css.js | title": {
+    "message": "Umanjite CSS"
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | description": {
+    "message": "Umanjenjem JavaScript datoteka mogu se smanjiti veličine resursa i skratiti vrijeme raščlambe skripte. [Saznajte više](https://developers.google.com/speed/docs/insights/MinifyResources)."
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | title": {
+    "message": "Umanjite JavaScript"
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | description": {
+    "message": "Uklonite nepotrebna pravila iz stilskih tablica i odgodite učitavanje CSS-a koji se ne koristi za sadržaj na vidljivom dijelu stranice kako biste smanjili nepotrebnu potrošnju bajtova u mrežnoj aktivnosti. [Saznajte više](https://developers.google.com/web/tools/lighthouse/audits/unused-css)."
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | title": {
+    "message": "Uklonite CSS koji se ne koristi"
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-javascript.js | description": {
+    "message": "Uklonite JavaScript koji se ne koristi da biste smanjili potrošnju bajtova u mrežnoj aktivnosti."
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-javascript.js | title": {
+    "message": "Uklonite nekorišteni JavaScript"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | description": {
+    "message": "Dugotrajno predmemoriranje može ubrzati ponovljene posjete vašoj stranici. [Saznajte više](https://developers.google.com/web/tools/lighthouse/audits/cache-policy)."
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | displayValue": {
+    "message": "{itemCount,plural, =1{Pronađen je jedan resurs}one{Pronađen je # resurs}few{Pronađena su # resursa}other{Pronađeno je # resursa}}"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | failureTitle": {
+    "message": "Poslužite statične elemente s pravilima učinkovitog predmemoriranja"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | title": {
+    "message": "Upotrebljava pravila učinkovitog predmemoriranja za statične elemente"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | description": {
+    "message": "Optimizirane slike učitavaju se brže i troše manje mobilnih podataka. [Saznajte više](https://developers.google.com/web/tools/lighthouse/audits/optimize-images)."
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | title": {
+    "message": "Kodirajte slike učinkovito"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | description": {
+    "message": "Poslužite slike prikladnih veličina da biste uštedjeli mobilne podatke i poboljšali vrijeme učitavanja. [Saznajte više](https://developers.google.com/web/tools/lighthouse/audits/oversized-images)."
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | title": {
+    "message": "Postavite slike u odgovarajućoj veličini"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | description": {
+    "message": "Tekstualni resursi trebaju se posluživati s kompresijom (gzip, deflate ili brotli) radi minimiziranja ukupne količine mrežnih bajtova. [Saznajte više](https://developers.google.com/web/tools/lighthouse/audits/text-compression)."
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | title": {
+    "message": "Omogućite sažimanje teksta"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | description": {
+    "message": "Formati slike kao što su JPEG 2000, JPEG XR i WebP često pružaju bolje sažimanje nego PNG ili JPEG, što znači brža preuzimanja i manju potrošnju podataka. [Saznajte više](https://developers.google.com/web/tools/lighthouse/audits/webp)."
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | title": {
+    "message": "Poslužite slike u modernim formatima"
+  },
+  "lighthouse-core/audits/content-width.js | description": {
+    "message": "Ako se širina sadržaja vaše aplikacije ne podudara s vidljivim dijelom, vaša aplikacija možda neće biti optimizirana za mobilne zaslone. [Saznajte više](https://developers.google.com/web/tools/lighthouse/audits/content-sized-correctly-for-viewport)."
+  },
+  "lighthouse-core/audits/content-width.js | explanation": {
+    "message": "Veličina vidljivog dijela od {innerWidth} px ne podudara se s veličinom prozora od {outerWidth} px."
+  },
+  "lighthouse-core/audits/content-width.js | failureTitle": {
+    "message": "Sadržaj nije ispravne veličine za vidljivi dio."
+  },
+  "lighthouse-core/audits/content-width.js | title": {
+    "message": "Sadržaj je ispravne veličine za vidljivi dio"
+  },
+  "lighthouse-core/audits/critical-request-chains.js | description": {
+    "message": "Lanci kritičkih zahtjeva u nastavku prikazuju koji se resursi učitavaju s visokim prioritetom. Savjetujemo vam da skratite duljinu lanaca, smanjite veličinu resursa za preuzimanje ili odgodite preuzimanje resursa koji nisu nužni kako biste poboljšali učitavanje stranice. [Saznajte više](https://developers.google.com/web/tools/lighthouse/audits/critical-request-chains)."
+  },
+  "lighthouse-core/audits/critical-request-chains.js | displayValue": {
+    "message": "{itemCount,plural, =1{Pronađen je jedan lanac}one{Pronađen je # lanac}few{Pronađena su # lanca}other{Pronađeno je # lanaca}}"
+  },
+  "lighthouse-core/audits/critical-request-chains.js | title": {
+    "message": "Minimizirajte dubinu kritičnih zahtjeva"
+  },
+  "lighthouse-core/audits/deprecations.js | columnDeprecate": {
+    "message": "Ukidanje / upozorenje"
+  },
+  "lighthouse-core/audits/deprecations.js | columnLine": {
+    "message": "Redak"
+  },
+  "lighthouse-core/audits/deprecations.js | description": {
+    "message": "Ukinuti API-ji na kraju će se ukloniti iz preglednika. [Saznajte više](https://web.dev/deprecations)."
+  },
+  "lighthouse-core/audits/deprecations.js | displayValue": {
+    "message": "{itemCount,plural, =1{Pronađeno je jedno upozorenje}one{Broj pronađenih upozorenja: #}few{Broj pronađenih upozorenja: #}other{Broj pronađenih upozorenja: #}}"
+  },
+  "lighthouse-core/audits/deprecations.js | failureTitle": {
+    "message": "Upotrebljava ukinute API-je"
+  },
+  "lighthouse-core/audits/deprecations.js | title": {
+    "message": "Izbjegava ukinute API-je"
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | description": {
+    "message": "Ukinuta je predmemorija aplikacije. [Saznajte više](https://web.dev/appcache-manifest)."
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | displayValue": {
+    "message": "„{AppCacheManifest}” je pronađen"
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | failureTitle": {
+    "message": "Upotrebljava predmemoriju aplikacije"
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | title": {
+    "message": "Izbjegava predmemoriju aplikacije"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | description": {
+    "message": "Specificiranje vrste dokumenta (doctype) sprječava preglednik da prijeđe u način rada sa starijim značajkama. [Saznajte više](https://web.dev/doctype)."
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationBadDoctype": {
+    "message": "Naziv vrste dokumenta (doctype) mora biti niz napisan malim slovima `html`"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationNoDoctype": {
+    "message": "URL mora sadržavati vrstu dokumenta."
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationPublicId": {
+    "message": "Očekivani javni ID bit će prazan niz"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationSystemId": {
+    "message": "Očekivani ID sustava bit će prazan niz"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | failureTitle": {
+    "message": "Stranici nedostaje vrsta dokumenta HTML, stoga pokreće način rada sa starijim značajkama"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | title": {
+    "message": "Stranica ima HTML vrstu dokumenta"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | columnElement": {
+    "message": "Element"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | columnStatistic": {
+    "message": "Statistika"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | columnValue": {
+    "message": "Vrijednost"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | description": {
+    "message": "Inženjeri za preglednike preporučuju da stranice sadrže manje od ~1500 DOM elemenata. Pravo mjesto jest drvo dubine < 32 elemenata te koje ima manje od 60 podređenih/nadređenih elemenata. Veliki DOM može povećati upotrebu memorije, uzrokovati duže [izračune stila](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations) te dovesti do skupih [preoblikovanja izgleda](https://developers.google.com/speed/articles/reflow). [Saznajte više](https://web.dev/dom-size)."
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | displayValue": {
+    "message": "{itemCount,plural, =1{Jedan element}one{# element}few{# elementa}other{# elemenata}}"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | failureTitle": {
+    "message": "Izbjegavajte pretjeranu veličinu DOM-a"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | statisticDOMDepth": {
+    "message": "Maksimalna dubina DOM-a"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | statisticDOMElements": {
+    "message": "Ukupan broj elemenata DOM-a"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | statisticDOMWidth": {
+    "message": "Maksimalni broj podređenih elemenata"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | title": {
+    "message": "Izbjegava pretjeranu veličinu DOM-a"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | columnRel": {
+    "message": "Rel"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | columnTarget": {
+    "message": "Cilj"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | description": {
+    "message": "Dodajte `rel=\"noopener\"` ili `rel=\"noreferrer\"` bilo kojoj eksternoj vezi da biste unaprijedili uspješnost i spriječili sigurnosne propuste. [Saznajte više](https://web.dev/external-anchors-use-rel-noopener)."
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | failureTitle": {
+    "message": "Veze na odredišta različitih polazišta nisu sigurne"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | title": {
+    "message": "Veze na odredišta različitih polazišta sigurne su"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | warning": {
+    "message": "Nije moguće odrediti odredište sidrenja za ({anchorHTML}). Ako se ne upotrebljava kao hiperveza, razmislite o tome da uklonite target=_blank."
+  },
+  "lighthouse-core/audits/dobetterweb/geolocation-on-start.js | description": {
+    "message": "Korisnici ne vjeruju web-lokacijama koje žele znati njihovu lokaciju bez konteksta ili ih takve web-lokacije zbunjuju. Razmislite o tome da umjesto toga zahtjev povežete s radnjama korisnika. [Saznajte više](https://web.dev/geolocation-on-start)."
+  },
+  "lighthouse-core/audits/dobetterweb/geolocation-on-start.js | failureTitle": {
+    "message": "Zahtijeva dopuštenje za geolociranje pri učitavanju stranice"
+  },
+  "lighthouse-core/audits/dobetterweb/geolocation-on-start.js | title": {
+    "message": "Izbjegava traženje dopuštenja za geolociranje pri učitavanju stranice"
+  },
+  "lighthouse-core/audits/dobetterweb/js-libraries.js | columnVersion": {
+    "message": "Verzija"
+  },
+  "lighthouse-core/audits/dobetterweb/js-libraries.js | description": {
+    "message": "Sve pristupne JavaScript biblioteke otkrivene na stranici. [Saznajte više](https://web.dev/js-libraries)."
+  },
+  "lighthouse-core/audits/dobetterweb/js-libraries.js | title": {
+    "message": "Pronađene JavaScript biblioteke"
+  },
+  "lighthouse-core/audits/dobetterweb/no-document-write.js | description": {
+    "message": "Ako korisnici imaju spore veze, vanjske skripte koje se dinamički ubacuju pomoću `document.write()` mogu odgoditi učitavanje stranice za desetke sekundi. [Saznajte više](https://web.dev/no-document-write)."
+  },
+  "lighthouse-core/audits/dobetterweb/no-document-write.js | failureTitle": {
+    "message": "Upotrebljava `document.write()`"
+  },
+  "lighthouse-core/audits/dobetterweb/no-document-write.js | title": {
+    "message": "Izbjegava `document.write()`"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | columnSeverity": {
+    "message": "Najviši stupanj ozbiljnosti"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | columnVersion": {
+    "message": "Verzija biblioteke"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | columnVuln": {
+    "message": "Broj propusta"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | description": {
+    "message": "Neke skripte treće strane mogu sadržavati poznate sigurnosne propuste te ih napadači mogu lako identificirati i iskoristiti. [Saznajte više](https://web.dev/no-vulnerable-libraries)."
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | displayValue": {
+    "message": "{itemCount,plural, =1{Otkriven je jedan sigurnosni propust}one{Broj otkrivenih sigurnosnih propusta: #}few{Broj otkrivenih sigurnosnih propusta: #}other{Broj otkrivenih sigurnosnih propusta: #}}"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | failureTitle": {
+    "message": "Uključuje pristupne JavaScript biblioteke s poznatim sigurnosnim propustima"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | rowSeverityHigh": {
+    "message": "Visok"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | rowSeverityLow": {
+    "message": "Nisko"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | rowSeverityMedium": {
+    "message": "Srednje"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | title": {
+    "message": "Izbjegava pristupne JavaScript biblioteke s poznatim sigurnosnim propustima"
+  },
+  "lighthouse-core/audits/dobetterweb/notification-on-start.js | description": {
+    "message": "Korisnici ne vjeruju web-lokacijama koje traže slanje obavijesti bez konteksta ili ih takve web-lokacije zbunjuju. Razmislite o tome da umjesto toga zahtjev povežete s pokretima korisnika. [Saznajte više](https://web.dev/notification-on-start)."
+  },
+  "lighthouse-core/audits/dobetterweb/notification-on-start.js | failureTitle": {
+    "message": "Zahtijeva dopuštenje za obavještavanje pri učitavanju stranice"
+  },
+  "lighthouse-core/audits/dobetterweb/notification-on-start.js | title": {
+    "message": "Izbjegava traženje dopuštenja za obavještavanje pri učitavanju stranice"
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | columnFailingElem": {
+    "message": "Elementi koji nisu prošli provjeru"
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | description": {
+    "message": "Sprječavanje lijepljenja zaporke narušava kvalitetu dobrih sigurnosnih pravila. [Saznajte više](https://web.dev/password-inputs-can-be-pasted-into)."
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | failureTitle": {
+    "message": "Onemogućuje korisnicima lijepljenje u polja za zaporku"
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | title": {
+    "message": "Omogućuje korisnicima lijepljenje u polja za zaporku"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | columnProtocol": {
+    "message": "Protokol"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | description": {
+    "message": "HTTP/2 ima brojne prednosti u odnosu na HTTP/1.1, uključujući binarna zaglavlja, multipleksiranja i oglašavanja poslužitelja. [Saznajte više](https://web.dev/uses-http2)."
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | displayValue": {
+    "message": "{itemCount,plural, =1{Jedan zahtjev koji nije poslužen protokolom HTTP/2}one{Broj zahtjeva koji nisu posluženi protokolom HTTP/2: #}few{Broj zahtjeva koji nisu posluženi protokolom HTTP/2: #}other{Broj zahtjeva koji nisu posluženi protokolom HTTP/2: #}}"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | failureTitle": {
+    "message": "Ne upotrebljava HTTP/2 za sve svoje resurse"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | title": {
+    "message": "Upotrebljava HTTP/2 za svoje resurse"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-passive-event-listeners.js | description": {
+    "message": "Razmislite o tome da svoje pasivne slušatelje događaja označite kao `passive` da biste poboljšali rezultate pretraživanja. [Saznajte više](https://web.dev/uses-passive-event-listeners)."
+  },
+  "lighthouse-core/audits/dobetterweb/uses-passive-event-listeners.js | failureTitle": {
+    "message": "Ne upotrebljava pasivne osluškivače za unaprjeđenje rezultata pretraživanja"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-passive-event-listeners.js | title": {
+    "message": "Upotrebljava pasivne osluškivače za unaprjeđenje rezultata pretraživanja"
+  },
+  "lighthouse-core/audits/errors-in-console.js | columnDesc": {
+    "message": "Opis"
+  },
+  "lighthouse-core/audits/errors-in-console.js | description": {
+    "message": "Pogreške zabilježene u konzoli ukazuju na neriješene probleme. Rezultat su neuspjelih mrežnih zahtjeva i ostalih pitanja povezanih s preglednikom. [Saznajte više](https://web.dev/errors-in-console)"
+  },
+  "lighthouse-core/audits/errors-in-console.js | failureTitle": {
+    "message": "Pogreške preglednika zabilježene su u konzoli"
+  },
+  "lighthouse-core/audits/errors-in-console.js | title": {
+    "message": "Na konzoli nema zabilježenih pogrešaka preglednika"
+  },
+  "lighthouse-core/audits/font-display.js | description": {
+    "message": "Iskoristite CSS značajku za prikaz fontova kako bi tekst bio vidljiv korisnicima dok se web-fontovi učitavaju. [Saznajte više](https://developers.google.com/web/updates/2016/02/font-display)."
+  },
+  "lighthouse-core/audits/font-display.js | failureTitle": {
+    "message": "Neka tekst ostaje vidljiv tijekom učitavanja web-fontova"
+  },
+  "lighthouse-core/audits/font-display.js | title": {
+    "message": "Sav tekst ostaje vidljiv tijekom učitavanja web-fontova"
+  },
+  "lighthouse-core/audits/font-display.js | undeclaredFontURLWarning": {
+    "message": "Lighthouse nije mogao automatski provjeriti vrijednost prikazanog fonta za sljedeći URL: {fontURL}."
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | columnActual": {
+    "message": "Omjer slike (stvarni)"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | columnDisplayed": {
+    "message": "Omjer slike (prikazane)"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | description": {
+    "message": "Dimenzije prikaza slike trebale bi odgovarati prirodnom omjeru slike. [Saznajte više](https://web.dev/image-aspect-ratio)."
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | failureTitle": {
+    "message": "Prikazuje slike netočnog omjera"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | title": {
+    "message": "Prikazuje slike točnog omjera"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | warningCompute": {
+    "message": "Nevažeće informacije o veličini slike {url}"
+  },
+  "lighthouse-core/audits/installable-manifest.js | description": {
+    "message": "Preglednici mogu proaktivno zatražiti od korisnika da dodaju vašu aplikaciju na početni zaslon, što može dovesti do veće angažiranosti. [Saznajte više](https://developers.google.com/web/tools/lighthouse/audits/install-prompt)."
+  },
+  "lighthouse-core/audits/installable-manifest.js | failureTitle": {
+    "message": "Manifest web-aplikacije ne udovoljava zahtjevima za instalaciju"
+  },
+  "lighthouse-core/audits/installable-manifest.js | title": {
+    "message": "Manifest web-aplikacije udovoljava zahtjevima za instalaciju"
+  },
+  "lighthouse-core/audits/is-on-https.js | columnInsecureURL": {
+    "message": "Nesiguran URL"
+  },
+  "lighthouse-core/audits/is-on-https.js | description": {
+    "message": "Sve web-lokacije trebale bi biti zaštićene HTTPS-om, čak i one koje ne obrađuju osjetljive podatke. HTTPS sprječava uljeze u neovlaštenom pristupu komunikacijama između vaše aplikacije i vaših korisnika te im onemogućuje pasivno slušanje tih komunikacija. Preduvjet je za HTTP/2 i API-je brojnih novih web-platformi. [Saznajte više](https://web.dev/is-on-https)."
+  },
+  "lighthouse-core/audits/is-on-https.js | displayValue": {
+    "message": "{itemCount,plural, =1{Pronađen je jedan zahtjev koji nije siguran}one{Broj pronađenih zahtjeva koji nisu sigurni: #}few{Broj pronađenih zahtjeva koji nisu sigurni: #}other{Broj pronađenih zahtjeva koji nisu sigurni: #}}"
+  },
+  "lighthouse-core/audits/is-on-https.js | failureTitle": {
+    "message": "Ne upotrebljava HTTPS"
+  },
+  "lighthouse-core/audits/is-on-https.js | title": {
+    "message": "Upotrebljava HTTPS"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | description": {
+    "message": "Brzo učitavanje stranice putem mobilne mreže omogućuje dobar doživljaj korisnicima na mobilnim uređajima. [Saznajte više](https://developers.google.com/web/tools/lighthouse/audits/fast-3g)."
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | displayValueText": {
+    "message": "Interaktivno u {timeInMs, number, seconds} s"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | displayValueTextWithOverride": {
+    "message": "Interaktivno na simuliranoj mobilnoj mreži za {timeInMs, number, seconds} s"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | explanationLoadSlow": {
+    "message": "Vaša stranica presporo se učitava i nije interaktivna unutar deset sekundi. U odjeljku \"Izvedba\" pogledajte prilike i dijagnostiku da biste saznali kako je poboljšati."
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | failureTitle": {
+    "message": "Učitavanje stranice nije dovoljno brzo na mobilnim mrežama"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | title": {
+    "message": "Učitavanje stranice dovoljno je brzo na mobilnim mrežama"
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | columnCategory": {
+    "message": "Kategorija"
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | description": {
+    "message": "Savjetujemo vam da skratite vrijeme potrebno za raščlambu, kompiliranje i izvršavanje JS-a. Isporuka manjih JS-ova mogla bi vam pomoći da to postignete."
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | failureTitle": {
+    "message": "Minimizirajte rad glavne niti"
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | title": {
+    "message": "Minimizira rad glavne niti"
+  },
+  "lighthouse-core/audits/manual/pwa-cross-browser.js | description": {
+    "message": "Da bi dosegle najveći broj korisnika, web-lokacije bi trebale funkcionirati u svakom značajnijem pregledniku. [Saznajte više](https://developers.google.com/web/progressive-web-apps/checklist#site-works-cross-browser)."
+  },
+  "lighthouse-core/audits/manual/pwa-cross-browser.js | title": {
+    "message": "Web-lokacija funkcionira na različitim preglednicima"
+  },
+  "lighthouse-core/audits/manual/pwa-each-page-has-url.js | description": {
+    "message": "Pobrinite se da su sve individualne stranice dubinski povezane putem URL-a i da su URL-ovi jedinstveni radi dijeljenja na društvenim medijima. [Saznajte više](https://developers.google.com/web/progressive-web-apps/checklist#each-page-has-a-url)."
+  },
+  "lighthouse-core/audits/manual/pwa-each-page-has-url.js | title": {
+    "message": "Svaka stranica ima URL"
+  },
+  "lighthouse-core/audits/manual/pwa-page-transitions.js | description": {
+    "message": "Pri dodirivanju stavki prijelazi bi trebali biti brzi, čak i na sporoj mreži, što je ključno za percepciju izvedbe. [Saznajte više](https://developers.google.com/web/progressive-web-apps/checklist#page-transitions-dont-feel-like-they-block-on-the-network)."
+  },
+  "lighthouse-core/audits/manual/pwa-page-transitions.js | title": {
+    "message": "Ne čini se da se prijelazi stranica blokiraju na mreži"
+  },
+  "lighthouse-core/audits/metrics/estimated-input-latency.js | description": {
+    "message": "Procijenjena latencija unosa procjena je vremena koje je potrebno da vaša aplikacija reagira na korisnički unos, u milisekundama, tijekom najintenzivnijih pet sekundi učitavanja stranice. Ako je latencija viša od 50 ms, korisnici mogu doživjeti vašu aplikaciju kao usporenu. [Saznajte više](https://developers.google.com/web/tools/lighthouse/audits/estimated-input-latency)."
+  },
+  "lighthouse-core/audits/metrics/estimated-input-latency.js | title": {
+    "message": "Procijenjena latencija unosa"
+  },
+  "lighthouse-core/audits/metrics/first-contentful-paint.js | description": {
+    "message": "Prvo renderiranje sadržaja označava vrijeme renderiranja prvog teksta ili slike. [Saznajte više](https://developers.google.com/web/tools/lighthouse/audits/first-contentful-paint)."
+  },
+  "lighthouse-core/audits/metrics/first-contentful-paint.js | title": {
+    "message": "Prvo bojenje sadržaja"
+  },
+  "lighthouse-core/audits/metrics/first-cpu-idle.js | description": {
+    "message": "Prvi procesor u mirovanju označava prvi trenutak u kojem je glavna nit stranice dovoljno neopterećena da bi obradila unos. [Saznajte više](https://developers.google.com/web/tools/lighthouse/audits/first-interactive)."
+  },
+  "lighthouse-core/audits/metrics/first-cpu-idle.js | title": {
+    "message": "Prvi procesor u mirovanju"
+  },
+  "lighthouse-core/audits/metrics/first-meaningful-paint.js | description": {
+    "message": "Prvo korisno renderiranje mjeri kada je vidljiv primarni sadržaj stranice. [Saznajte više](https://developers.google.com/web/tools/lighthouse/audits/first-meaningful-paint)."
+  },
+  "lighthouse-core/audits/metrics/first-meaningful-paint.js | title": {
+    "message": "Prvo smisleno bojenje"
+  },
+  "lighthouse-core/audits/metrics/interactive.js | description": {
+    "message": "Vrijeme do interaktivnosti količina je vremena koje je potrebno da stranica postane potpuno interaktivna. [Saznajte više](https://developers.google.com/web/tools/lighthouse/audits/consistently-interactive)."
+  },
+  "lighthouse-core/audits/metrics/interactive.js | title": {
+    "message": "Vrijeme do interaktivnosti"
+  },
+  "lighthouse-core/audits/metrics/max-potential-fid.js | description": {
+    "message": "Maksimalno potencijalno prvo kašnjenje unosa koje bi korisnik mogao doživjeti trajanje je, u milisekundama, najduljeg zadatka. [Saznajte više](https://developers.google.com/web/updates/2018/05/first-input-delay)."
+  },
+  "lighthouse-core/audits/metrics/max-potential-fid.js | title": {
+    "message": "Maks. potencijalno kašnjenje odgovora na prvi unos"
+  },
+  "lighthouse-core/audits/metrics/speed-index.js | description": {
+    "message": "Indeks brzine prikazuje koliko se brzo sadržaj stranice vidljivo popunjava. [Saznajte više](https://developers.google.com/web/tools/lighthouse/audits/speed-index)."
+  },
+  "lighthouse-core/audits/metrics/speed-index.js | title": {
+    "message": "Indeks brzine"
+  },
+  "lighthouse-core/audits/metrics/total-blocking-time.js | description": {
+    "message": "Zbroj svih razdoblja između PRS-a i vremena do interaktivnosti kada trajanje zadatka prelazi 50 ms, iskazano u milisekundama."
+  },
+  "lighthouse-core/audits/metrics/total-blocking-time.js | title": {
+    "message": "Ukupno vrijeme blokiranja"
+  },
+  "lighthouse-core/audits/network-rtt.js | description": {
+    "message": "Vrijeme od slanja upita do primanja odgovora (RTT) za mrežu ima velik utjecaj na izvedbu. Ako je RTT do polazišta visok, to je znak da bi poslužitelji bliže korisniku mogli poboljšati izvedbu. [Saznajte više](https://hpbn.co/primer-on-latency-and-bandwidth/)."
+  },
+  "lighthouse-core/audits/network-rtt.js | title": {
+    "message": "Vrijeme od slanja upita do primanja odgovora za mrežu"
+  },
+  "lighthouse-core/audits/network-server-latency.js | description": {
+    "message": "Latencije poslužitelja mogu utjecati na izvedbu na webu. Ako je latencija poslužitelja polazišta visoka, to je znak da je poslužitelj preopterećen ili da ima lošu pozadinsku izvedbu. [Saznajte više](https://hpbn.co/primer-on-web-performance/#analyzing-the-resource-waterfall)."
+  },
+  "lighthouse-core/audits/network-server-latency.js | title": {
+    "message": "Pozadinske latencije poslužitelja"
+  },
+  "lighthouse-core/audits/offline-start-url.js | description": {
+    "message": "Uslužni alat omogućava web-aplikaciji da bude pouzdana u nepredvidivim mrežnim uvjetima. [Saznajte više](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)."
+  },
+  "lighthouse-core/audits/offline-start-url.js | failureTitle": {
+    "message": "Za `start_url` ne prikazuje se kôd 200 kad je offline"
+  },
+  "lighthouse-core/audits/offline-start-url.js | title": {
+    "message": "Za `start_url` prikazuje se kôd 200 kad je offline"
+  },
+  "lighthouse-core/audits/offline-start-url.js | warningCantStart": {
+    "message": "Lighthouse nije mogao pročitati `start_url` iz manifesta. Zbog toga se pretpostavilo da je `start_url` URL dokumenta. Poruka pogreške: \"{manifestWarning}\"."
+  },
+  "lighthouse-core/audits/performance-budget.js | columnOverBudget": {
+    "message": "Više od proračuna"
+  },
+  "lighthouse-core/audits/performance-budget.js | description": {
+    "message": "Zahtjeve za količinom i veličinom mreže održavajte ispod ciljeva utvrđenih danim proračunom za izvršavanje. [Saznajte više](https://developers.google.com/web/tools/lighthouse/audits/budgets)."
+  },
+  "lighthouse-core/audits/performance-budget.js | requestCountOverBudget": {
+    "message": "{count,plural, =1{Jedan zahtjev}one{Broj zahtjeva: #}few{Broj zahtjeva: #}other{Broj zahtjeva: #}}"
+  },
+  "lighthouse-core/audits/performance-budget.js | title": {
+    "message": "Proračun za izvedbu"
+  },
+  "lighthouse-core/audits/redirects-http.js | description": {
+    "message": "Ako ste već postavili HTTPS, provjerite preusmjeravate li sav HTTP promet na HTTPS kako biste omogućili sigurne web-značajke za sve korisnike. [Saznajte više](https://developers.google.com/web/tools/lighthouse/audits/http-redirects-to-https)."
+  },
+  "lighthouse-core/audits/redirects-http.js | failureTitle": {
+    "message": "Ne preusmjerava HTTP promet na HTTPS"
+  },
+  "lighthouse-core/audits/redirects-http.js | title": {
+    "message": "Preusmjerava HTTP promet na HTTPS"
+  },
+  "lighthouse-core/audits/redirects.js | description": {
+    "message": "Preusmjeravanja uvode dodatna kašnjenja prije nego što se stranica može učitati. [Saznajte više](https://developers.google.com/web/tools/lighthouse/audits/redirects)."
+  },
+  "lighthouse-core/audits/redirects.js | title": {
+    "message": "Izbjegavajte višestruka preusmjeravanja stranica"
+  },
+  "lighthouse-core/audits/resource-summary.js | description": {
+    "message": "Da biste postavili proračune za količinu i veličinu resursa stranice, dodajte datoteku budget.json. [Saznajte više](https://developers.google.com/web/tools/lighthouse/audits/budgets)."
+  },
+  "lighthouse-core/audits/resource-summary.js | displayValue": {
+    "message": "{requestCount,plural, =1{Jedan zahtjev • {byteCount, number, bytes} KB}one{# zahtjev • {byteCount, number, bytes} KB}few{# zahtjeva • {byteCount, number, bytes} KB}other{# zahtjeva • {byteCount, number, bytes} KB}}"
+  },
+  "lighthouse-core/audits/resource-summary.js | title": {
+    "message": "Neka zahtjevi budu malobrojni, a veličine prijenosa male"
+  },
+  "lighthouse-core/audits/seo/canonical.js | description": {
+    "message": "Kanonske veze ukazuju na to koji URL prikazati u rezultatima pretraživanja. [Saznajte više](https://web.dev/canonical)."
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationConflict": {
+    "message": "Više URL-ova u sukobu ({urlList})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationDifferentDomain": {
+    "message": "Usmjerava na drugu domenu ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationInvalid": {
+    "message": "Nevažeći URL ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationPointsElsewhere": {
+    "message": "Usmjerava na drugu `hreflang` lokaciju ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationRelative": {
+    "message": "Relativni URL ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationRoot": {
+    "message": "Upućuje na korijenski URL domene (početnu stranicu), a ne na ekvivalentnu stranicu sadržaja"
+  },
+  "lighthouse-core/audits/seo/canonical.js | failureTitle": {
+    "message": "Dokument ne sadrži valjanu vezu `rel=canonical`"
+  },
+  "lighthouse-core/audits/seo/canonical.js | title": {
+    "message": "Dokument ima valjani `rel=canonical`"
+  },
+  "lighthouse-core/audits/seo/font-size.js | description": {
+    "message": "Fontovi manji od 12 px premali su da bi bili čitljivi, pa posjetitelji na mobilnim uređajima moraju zumirati prstima. Neka više od 60% teksta na stranici ima veličinu od najmanje 12px. [Saznajte više](https://web.dev/font-size)."
+  },
+  "lighthouse-core/audits/seo/font-size.js | displayValue": {
+    "message": "{decimalProportion, number, extendedPercent} čitljivog teksta"
+  },
+  "lighthouse-core/audits/seo/font-size.js | explanationViewport": {
+    "message": "Tekst nije čitljiv jer nijedna metaoznaka vidljivog dijela nije optimizirana za zaslone mobilnih uređaja."
+  },
+  "lighthouse-core/audits/seo/font-size.js | explanationWithDisclaimer": {
+    "message": "{decimalProportion, number, extendedPercent} teksta nije dovoljno veliko (na temelju uzorka od {decimalProportionVisited, number, extendedPercent})."
+  },
+  "lighthouse-core/audits/seo/font-size.js | failureTitle": {
+    "message": "Dokument ne sadrži čitljive veličine fontova"
+  },
+  "lighthouse-core/audits/seo/font-size.js | title": {
+    "message": "Dokument upotrebljava čitljive veličine fontova"
+  },
+  "lighthouse-core/audits/seo/hreflang.js | description": {
+    "message": "Veze s atributom hreflang govore tražilicama koju verziju stranice trebaju navesti u rezultatima pretraživanja za određeni jezik ili regiju. [Saznajte više](https://web.dev/hreflang)."
+  },
+  "lighthouse-core/audits/seo/hreflang.js | failureTitle": {
+    "message": "Dokument ne sadrži važeći `hreflang`"
+  },
+  "lighthouse-core/audits/seo/hreflang.js | title": {
+    "message": "Dokument ima valjani `hreflang`"
+  },
+  "lighthouse-core/audits/seo/http-status-code.js | description": {
+    "message": "Stranice s neuspješnim HTTP kodom statusa možda se neće pravilno indeksirati. [Saznajte više](https://web.dev/http-status-code)."
+  },
+  "lighthouse-core/audits/seo/http-status-code.js | failureTitle": {
+    "message": "Stranica ima neuspješan HTTP kôd statusa"
+  },
+  "lighthouse-core/audits/seo/http-status-code.js | title": {
+    "message": "Stranica ima uspješan HTTP kôd statusa"
+  },
+  "lighthouse-core/audits/seo/is-crawlable.js | description": {
+    "message": "Tražilice ne mogu uključiti vaše stranice u rezultate pretraživanja ako nemaju dopuštenje da ih pretraže i indeksiraju. [Saznajte više](https://web.dev/is-crawable)."
+  },
+  "lighthouse-core/audits/seo/is-crawlable.js | failureTitle": {
+    "message": "Indeksiranje je stranice blokirano"
+  },
+  "lighthouse-core/audits/seo/is-crawlable.js | title": {
+    "message": "Indeksiranje stranice nije blokirano"
+  },
+  "lighthouse-core/audits/seo/link-text.js | description": {
+    "message": "Opisni tekst veze pomaže tražilicama da razumiju vaš sadržaj. [Saznajte više](https://web.dev/link-text)."
+  },
+  "lighthouse-core/audits/seo/link-text.js | displayValue": {
+    "message": "{itemCount,plural, =1{Pronađena je jedna veza}one{Pronađena je # veza}few{Pronađene su # veze}other{Pronađeno je # veza}}"
+  },
+  "lighthouse-core/audits/seo/link-text.js | failureTitle": {
+    "message": "Veze nemaju opisni tekst"
+  },
+  "lighthouse-core/audits/seo/link-text.js | title": {
+    "message": "Veze sadrže deskriptivan tekst"
+  },
+  "lighthouse-core/audits/seo/manual/structured-data.js | description": {
+    "message": "Pokrenite [Alat za testiranje strukturiranih podataka](https://search.google.com/structured-data/testing-tool/) i [Datoteku za provjeru koda (linter) strukturiranih podataka](http://linter.structured-data.org/) da biste potvrdili strukturirane podatke. [Saznajte više](https://web.dev/structured-data)."
+  },
+  "lighthouse-core/audits/seo/manual/structured-data.js | title": {
+    "message": "Strukturirani su podaci važeći"
+  },
+  "lighthouse-core/audits/seo/meta-description.js | description": {
+    "message": "Metaopisi mogu se uključiti u rezultate pretraživanja kako bi se jezgrovito sažeo sadržaj stranice. [Saznajte više](https://web.dev/meta-description)."
+  },
+  "lighthouse-core/audits/seo/meta-description.js | explanation": {
+    "message": "Tekst opisa nema sadržaj."
+  },
+  "lighthouse-core/audits/seo/meta-description.js | failureTitle": {
+    "message": "Dokument ne sadrži metaopis"
+  },
+  "lighthouse-core/audits/seo/meta-description.js | title": {
+    "message": "Dokument sadrži metaopis"
+  },
+  "lighthouse-core/audits/seo/plugins.js | description": {
+    "message": "Tražilice ne mogu indeksirati sadržaj dodataka, pa mnogi uređaji ograničavaju dodatke ili ih ne podržavaju. [Saznajte više](https://web.dev/plugins)."
+  },
+  "lighthouse-core/audits/seo/plugins.js | failureTitle": {
+    "message": "Dokument upotrebljava dodatke"
+  },
+  "lighthouse-core/audits/seo/plugins.js | title": {
+    "message": "Dokument izbjegava dodatke"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | description": {
+    "message": "Ako je vaša robots.txt datoteka oštećena, alati za indeksiranje možda neće moći razumjeti kako želite da se vaša web-lokacija pretraži ili indeksira. [Saznajte više](https://web.dev/robots-txt)."
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | displayValueHttpBadCode": {
+    "message": "Zahtjevi za robots.txt vraćaju HTTP status: {statusCode}"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | displayValueValidationError": {
+    "message": "{itemCount,plural, =1{Pronađena je jedna pogreška}one{Pronađena je # pogreška}few{Pronađene su # pogreške}other{Pronađeno je # pogrešaka}}"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | explanation": {
+    "message": "Lighthouse nije uspio preuzeti robots.txt datoteku"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | failureTitle": {
+    "message": "robots.txt nije valjan"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | title": {
+    "message": "robots.txt je valjan"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | description": {
+    "message": "Interaktivni elementi kao što su gumbi i veze trebali bi biti dovoljno veliki (48 x 48 px) i oko njih bi trebalo biti dovoljno prostora da ih se može lako dodirnuti bez preklapanja s drugim elementima. [Saznajte više](https://web.dev/tap-targets)."
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | displayValue": {
+    "message": "{decimalProportion, number, percent} ciljeva dodira odgovarajuće veličine"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | explanationViewportMetaNotOptimized": {
+    "message": "Ciljevi dodira nisu dovoljno veliki jer nijedna metaoznaka vidljivog dijela nije optimizirana za zaslone mobilnih uređaja"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | failureTitle": {
+    "message": "Ciljevi dodira nisu odgovarajuće veličine"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | overlappingTargetHeader": {
+    "message": "Preklapanje cilja"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | tapTargetHeader": {
+    "message": "Cilj dodira"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | title": {
+    "message": "Ciljevi dodira odgovarajuće su veličine"
+  },
+  "lighthouse-core/audits/service-worker.js | description": {
+    "message": "Uslužni alat jest tehnologija koja aplikaciji omogućava korištenje brojnih značajki progresivne web-aplikacije, kao što je offline rad, dodavanje na početni zaslon i push obavijesti. [Saznajte više](https://developers.google.com/web/tools/lighthouse/audits/registered-service-worker)."
+  },
+  "lighthouse-core/audits/service-worker.js | explanationBadManifest": {
+    "message": "Ovom stranicom upravlja uslužni alat, no nije pronađen `start_url` jer manifest nije raščlanjen kao važeći JSON"
+  },
+  "lighthouse-core/audits/service-worker.js | explanationBadStartUrl": {
+    "message": "Ovom stranicom upravlja uslužni alat, no `start_url` ({startUrl}) nije u rasponu uslužnog alata ({scopeUrl})"
+  },
+  "lighthouse-core/audits/service-worker.js | explanationNoManifest": {
+    "message": "Ovom stranicom upravlja uslužni alat, no nije pronađen `start_url` jer nije dohvaćen manifest."
+  },
+  "lighthouse-core/audits/service-worker.js | explanationOutOfScope": {
+    "message": "Ova izvor ima jedan ili više uslužnih alata, no stranica ({pageUrl}) nije u rasponu."
+  },
+  "lighthouse-core/audits/service-worker.js | failureTitle": {
+    "message": "Ne registrira uslužni alat koji kontrolira stranicu i `start_url`"
+  },
+  "lighthouse-core/audits/service-worker.js | title": {
+    "message": "Registrira uslužni alat koji upravlja stranicom i `start_url`"
+  },
+  "lighthouse-core/audits/splash-screen.js | description": {
+    "message": "Tematski pozdravni zaslon pruža bolji doživljaj korisnicima koji pokreću vašu aplikaciju na početnom zaslonu. [Saznajte više](https://developers.google.com/web/tools/lighthouse/audits/custom-splash-screen)."
+  },
+  "lighthouse-core/audits/splash-screen.js | failureTitle": {
+    "message": "Nije konfigurirano za prilagođeni pozdravni zaslon"
+  },
+  "lighthouse-core/audits/splash-screen.js | title": {
+    "message": "Konfiguriran za prilagođeni pozdravni zaslon"
+  },
+  "lighthouse-core/audits/themed-omnibox.js | description": {
+    "message": "Adresna traka preglednika može se tematski podudarati s vašom web-lokacijom. [Saznajte više](https://developers.google.com/web/tools/lighthouse/audits/address-bar)."
+  },
+  "lighthouse-core/audits/themed-omnibox.js | failureTitle": {
+    "message": "Ne postavlja boju teme za adresnu traku."
+  },
+  "lighthouse-core/audits/themed-omnibox.js | title": {
+    "message": "Postavlja boju teme za adresnu traku."
+  },
+  "lighthouse-core/audits/third-party-summary.js | columnBlockingTime": {
+    "message": "Vrijeme blokiranja glavne niti"
+  },
+  "lighthouse-core/audits/third-party-summary.js | columnThirdParty": {
+    "message": "Treća strana"
+  },
+  "lighthouse-core/audits/third-party-summary.js | description": {
+    "message": "Kôd treće strane može znatno utjecati na uspješnost učitavanja. Ograničite broj suvišnih pružatelja treće strane i pokušajte učitati kôd treće strane nakon primarnog zavšetka učitavanja vaše stranice. [Saznajte više](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/loading-third-party-javascript/)."
+  },
+  "lighthouse-core/audits/third-party-summary.js | displayValue": {
+    "message": "Kôd treće strane blokirao je glavnu nit na {timeInMs, number, milliseconds} ms"
+  },
+  "lighthouse-core/audits/third-party-summary.js | failureTitle": {
+    "message": "Smanjite utjecaj koda trećih strana"
+  },
+  "lighthouse-core/audits/third-party-summary.js | title": {
+    "message": "Upotreba treće strane"
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | description": {
+    "message": "Vrijeme do prvog bajta navodi vrijeme u koje poslužitelj šalje odgovor. [Saznajte više](https://developers.google.com/web/tools/lighthouse/audits/ttfb)."
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | displayValue": {
+    "message": "Za korijenski dokument bilo je potrebno {timeInMs, number, milliseconds} ms"
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | failureTitle": {
+    "message": "Skratite vremena odgovora poslužitelja (TTFB)"
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | title": {
+    "message": "Poslužitelj odgovara sporo (TTFB)"
+  },
+  "lighthouse-core/audits/user-timings.js | columnDuration": {
+    "message": "Trajanje"
+  },
+  "lighthouse-core/audits/user-timings.js | columnStartTime": {
+    "message": "Vrijeme početka"
+  },
+  "lighthouse-core/audits/user-timings.js | columnType": {
+    "message": "Vrsta"
+  },
+  "lighthouse-core/audits/user-timings.js | description": {
+    "message": "Savjetujemo vam da na aplikaciju primijenite API za praćenje korisničkog vremena radi mjerenja izvedbe aplikacije u stvarnom vremenu tijekom važnih korisničkih doživljaja. [Saznajte više](https://developers.google.com/web/tools/lighthouse/audits/user-timing)."
+  },
+  "lighthouse-core/audits/user-timings.js | displayValue": {
+    "message": "{itemCount,plural, =1{Jedno praćenje korisničkog vremena}one{# praćenje korisničkog vremena}few{# praćenja korisničkog vremena}other{# praćenja korisničkog vremena}}"
+  },
+  "lighthouse-core/audits/user-timings.js | title": {
+    "message": "Oznake i izmjere Praćenja korisničkog vremena"
+  },
+  "lighthouse-core/audits/uses-rel-preconnect.js | crossoriginWarning": {
+    "message": "Pronađen je <link> za pretpovezivanje za „{securityOrigin}”, ali ga preglednik nije upotrijebio. Provjerite upotrebljavate li atribut `crossorigin` pravilno."
+  },
+  "lighthouse-core/audits/uses-rel-preconnect.js | description": {
+    "message": "Savjetujemo vam da dodate `preconnect` ili `dns-prefetch` prilagodbe resursa radi uspostavljanja ranih veza s važnim izvorima trećih strana. [Saznajte više](https://developers.google.com/web/fundamentals/performance/resource-prioritization#preconnect)."
+  },
+  "lighthouse-core/audits/uses-rel-preconnect.js | title": {
+    "message": "Rano se povežite s potrebnim izvorima"
+  },
+  "lighthouse-core/audits/uses-rel-preload.js | crossoriginWarning": {
+    "message": "Za „{preloadURL}” pronađen je <link> za predučitavanje, no preglednik ga nije upotrijebio. Provjerite upotrebljavate li atribut `crossorigin` pravilno."
+  },
+  "lighthouse-core/audits/uses-rel-preload.js | description": {
+    "message": "Savjetujemo vam da koristite `<link rel=preload>` da biste dali prednost dohvaćanju resursa koji se trenutačno traže kasnije u učitavanju stranice. [Saznajte više](https://developers.google.com/web/tools/lighthouse/audits/preload)."
+  },
+  "lighthouse-core/audits/uses-rel-preload.js | title": {
+    "message": "Unaprijed učitajte ključne zahtjeve"
+  },
+  "lighthouse-core/audits/viewport.js | description": {
+    "message": "Dodajte oznaku `<meta name=\"viewport\">` da biste optimizirali svoju aplikaciju za mobilne zaslone. [Saznajte više](https://developers.google.com/web/tools/lighthouse/audits/has-viewport-meta-tag)."
+  },
+  "lighthouse-core/audits/viewport.js | explanationNoTag": {
+    "message": "Nijedna oznaka `<meta name=\"viewport\">` nije pronađena"
+  },
+  "lighthouse-core/audits/viewport.js | failureTitle": {
+    "message": "Nema oznaku `<meta name=\"viewport\">` s `width` ili `initial-scale`"
+  },
+  "lighthouse-core/audits/viewport.js | title": {
+    "message": "Ima oznaku `<meta name=\"viewport\">` s `width` ili `initial-scale`"
+  },
+  "lighthouse-core/audits/without-javascript.js | description": {
+    "message": "Vaša aplikacija trebala bi prikazati bilo kakav sadržaj kada je onemogućen JavaScript, čak i ako je to samo upozorenje da je JavaScript obavezan za korištenje aplikacije. [Saznajte više](https://developers.google.com/web/tools/lighthouse/audits/no-js)."
+  },
+  "lighthouse-core/audits/without-javascript.js | explanation": {
+    "message": "Tijelo stranice trebalo bi generirati bilo kakav sadržaj ako skripte nisu dostupne."
+  },
+  "lighthouse-core/audits/without-javascript.js | failureTitle": {
+    "message": "Ne pruža zamjenski sadržaj kada JavaScript nije dostupan"
+  },
+  "lighthouse-core/audits/without-javascript.js | title": {
+    "message": "Prikazuje se bilo kakav sadržaj kada JavaScript nije dostupan"
+  },
+  "lighthouse-core/audits/works-offline.js | description": {
+    "message": "Ako razvijate progresivnu web-aplikaciju, razmislite o korištenju uslužnog alata tako da aplikacija može funkcionirati offline. [Saznajte više](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)."
+  },
+  "lighthouse-core/audits/works-offline.js | failureTitle": {
+    "message": "Za trenutačnu stranicu ne prikazuje se kôd 200 kad je offline"
+  },
+  "lighthouse-core/audits/works-offline.js | title": {
+    "message": "Za trenutačnu stranicu prikazuje se kôd 200 kad je offline"
+  },
+  "lighthouse-core/audits/works-offline.js | warningNoLoad": {
+    "message": "Stranica se možda ne učitava offline jer je vaš testni URL ({requested}) preusmjeren na \"{final}\". Pokušajte izravno testirati drugi URL."
+  },
+  "lighthouse-core/config/default-config.js | a11yAriaGroupDescription": {
+    "message": "To su prilike za poboljšanje uporabe sustava ARIA u vašoj aplikaciji, što može unaprijediti doživljaj za korisnike pomoćne tehnologije, primjerice čitača zaslona."
+  },
+  "lighthouse-core/config/default-config.js | a11yAriaGroupTitle": {
+    "message": "ARIA"
+  },
+  "lighthouse-core/config/default-config.js | a11yAudioVideoGroupDescription": {
+    "message": "Ovo su prilike za poboljšanje zamjenskog sadržaja za zvuk i videoprikaz. To može poboljšati doživljaj za korisnike s oštećenjem sluha ili vida."
+  },
+  "lighthouse-core/config/default-config.js | a11yAudioVideoGroupTitle": {
+    "message": "Zvuk i videoprikaz"
+  },
+  "lighthouse-core/config/default-config.js | a11yBestPracticesGroupDescription": {
+    "message": "Ove stavke ističu uobičajene najbolje primjere iz prakse za pristupačnost."
+  },
+  "lighthouse-core/config/default-config.js | a11yBestPracticesGroupTitle": {
+    "message": "Najbolji primjeri iz prakse"
+  },
+  "lighthouse-core/config/default-config.js | a11yCategoryDescription": {
+    "message": "Ove provjere ističu prilike za [poboljšanje pristupačnosti vaše web-aplikacije](https://developers.google.com/web/fundamentals/accessibility). Budući da se automatskom provjerom može otkriti samo dio poteškoća s pristupačnošću, savjetujemo i ručno testiranje."
+  },
+  "lighthouse-core/config/default-config.js | a11yCategoryManualDescription": {
+    "message": "Područja adresa za te stavke koja alat za automatizirano testiranje ne može pokriti. Saznajte više u našem vodiču o [provođenju pregleda pristupačnosti](https://developers.google.com/web/fundamentals/accessibility/how-to-review)."
+  },
+  "lighthouse-core/config/default-config.js | a11yCategoryTitle": {
+    "message": "Pristupačnost"
+  },
+  "lighthouse-core/config/default-config.js | a11yColorContrastGroupDescription": {
+    "message": "To su mogućnosti za poboljšanje čitljivosti vašeg sadržaja."
+  },
+  "lighthouse-core/config/default-config.js | a11yColorContrastGroupTitle": {
+    "message": "Kontrast"
+  },
+  "lighthouse-core/config/default-config.js | a11yLanguageGroupDescription": {
+    "message": "To su prilike da unaprijedite tumačenje svojeg sadržaja za korisnike na različitim jezicima."
+  },
+  "lighthouse-core/config/default-config.js | a11yLanguageGroupTitle": {
+    "message": "Internacionalizacija i lokalizacija"
+  },
+  "lighthouse-core/config/default-config.js | a11yNamesLabelsGroupDescription": {
+    "message": "To su prilike za poboljšanje semantike kontrola u vašoj aplikaciji. Na taj način možete poboljšati doživljaj za korisnike pomoćne tehnologije, primjerice čitača zaslona."
+  },
+  "lighthouse-core/config/default-config.js | a11yNamesLabelsGroupTitle": {
+    "message": "Nazivi i oznake"
+  },
+  "lighthouse-core/config/default-config.js | a11yNavigationGroupDescription": {
+    "message": "Ovo su prilike za poboljšanje kretanja tipkovnicom u vašoj aplikaciji."
+  },
+  "lighthouse-core/config/default-config.js | a11yNavigationGroupTitle": {
+    "message": "Kretanje"
+  },
+  "lighthouse-core/config/default-config.js | a11yTablesListsVideoGroupDescription": {
+    "message": "Ovo su prilike za poboljšanje doživljaja čitanja podataka u tablicama ili na popisima koristeći se pomoćnim tehnologijama, primjerice čitačem zaslona."
+  },
+  "lighthouse-core/config/default-config.js | a11yTablesListsVideoGroupTitle": {
+    "message": "Tablice i popisi"
+  },
+  "lighthouse-core/config/default-config.js | bestPracticesCategoryTitle": {
+    "message": "Najbolji primjeri iz prakse"
+  },
+  "lighthouse-core/config/default-config.js | budgetsGroupDescription": {
+    "message": "Proračuni za izvedbu postavljaju standarde izvedbe vaše stranice."
+  },
+  "lighthouse-core/config/default-config.js | budgetsGroupTitle": {
+    "message": "Proračuni"
+  },
+  "lighthouse-core/config/default-config.js | diagnosticsGroupDescription": {
+    "message": "Više informacija o izvedbi vaše aplikacije. Ovi brojevi ne [utječu izravno](https://github.com/GoogleChrome/lighthouse/blob/d2ec9ffbb21de9ad1a0f86ed24575eda32c796f0/docs/scoring.md#how-are-the-scores-weighted) na rezultat izvedbe."
+  },
+  "lighthouse-core/config/default-config.js | diagnosticsGroupTitle": {
+    "message": "Dijagnostika"
+  },
+  "lighthouse-core/config/default-config.js | firstPaintImprovementsGroupDescription": {
+    "message": "Najkritičniji je aspekt izvedbe brzina kojom se pikseli generiraju na zaslonu. Ključni mjerni podaci: Prvo bojenje sadržaja, Prvo smisleno bojenje"
+  },
+  "lighthouse-core/config/default-config.js | firstPaintImprovementsGroupTitle": {
+    "message": "Poboljšanja prvog bojenja"
+  },
+  "lighthouse-core/config/default-config.js | loadOpportunitiesGroupDescription": {
+    "message": "Ovi prijedlozi mogu vam pomoći da brže učitate stranicu. Oni ne [utječu izravno](https://github.com/GoogleChrome/lighthouse/blob/d2ec9ffbb21de9ad1a0f86ed24575eda32c796f0/docs/scoring.md#how-are-the-scores-weighted) na rezultat izvedbe."
+  },
+  "lighthouse-core/config/default-config.js | loadOpportunitiesGroupTitle": {
+    "message": "Prilike"
+  },
+  "lighthouse-core/config/default-config.js | metricGroupTitle": {
+    "message": "Mjerni podaci"
+  },
+  "lighthouse-core/config/default-config.js | overallImprovementsGroupDescription": {
+    "message": "Poboljšajte općeniti doživljaj učitavanja tako da stranica bude responzivna i spremna za upotrebu što je prije moguće. Ključni mjerni podaci: Vrijeme do interaktivnosti, Indeks brzine"
+  },
+  "lighthouse-core/config/default-config.js | overallImprovementsGroupTitle": {
+    "message": "Općenita poboljšanja"
+  },
+  "lighthouse-core/config/default-config.js | performanceCategoryTitle": {
+    "message": "Izvedba"
+  },
+  "lighthouse-core/config/default-config.js | pwaCategoryDescription": {
+    "message": "Te provjere potvrđuju aspekte progresivne web-aplikacije. [Saznajte više](https://developers.google.com/web/progressive-web-apps/checklist)."
+  },
+  "lighthouse-core/config/default-config.js | pwaCategoryManualDescription": {
+    "message": "Te su provjere potrebne za osnovni [PWA kontrolni popis](https://developers.google.com/web/progressive-web-apps/checklist), no Lighthouse ih ne izvodi automatski. One ne utječu na vaš rezultat, no važno je da ih ručno izvršite."
+  },
+  "lighthouse-core/config/default-config.js | pwaCategoryTitle": {
+    "message": "Progresivna web-aplikacija"
+  },
+  "lighthouse-core/config/default-config.js | pwaFastReliableGroupTitle": {
+    "message": "Brzo i pouzdano"
+  },
+  "lighthouse-core/config/default-config.js | pwaInstallableGroupTitle": {
+    "message": "Može se instalirati"
+  },
+  "lighthouse-core/config/default-config.js | pwaOptimizedGroupTitle": {
+    "message": "PWA je optimiziran"
+  },
+  "lighthouse-core/config/default-config.js | seoCategoryDescription": {
+    "message": "Ove provjere služe za optimizaciju vaše stranice za rangiranje rezultata tražilice. Lighthouse ne provjerava neke dodatne čimbenike koji mogu utjecati na vaše rangiranje u pretraživanju. [Saznajte više](https://support.google.com/webmasters/answer/35769)."
+  },
+  "lighthouse-core/config/default-config.js | seoCategoryManualDescription": {
+    "message": "Pokrenite ove dodatne validatore na svojoj web-lokaciji da biste pregledali dodatne najbolje primjere iz prakse za SEO."
+  },
+  "lighthouse-core/config/default-config.js | seoCategoryTitle": {
+    "message": "SEO"
+  },
+  "lighthouse-core/config/default-config.js | seoContentGroupDescription": {
+    "message": "Formatirajte HTML na način koji omogućuje alatima za indeksiranje da bolje razumiju sadržaj vaše aplikacije."
+  },
+  "lighthouse-core/config/default-config.js | seoContentGroupTitle": {
+    "message": "Najbolji primjeri sadržaja"
+  },
+  "lighthouse-core/config/default-config.js | seoCrawlingGroupDescription": {
+    "message": "Da bi se vaša aplikacija pojavila u rezultatima pretraživanja, omogućite alatima za indeksiranje da joj pristupe."
+  },
+  "lighthouse-core/config/default-config.js | seoCrawlingGroupTitle": {
+    "message": "Pretraživanje i indeksiranje"
+  },
+  "lighthouse-core/config/default-config.js | seoMobileGroupDescription": {
+    "message": "Prilagodite svoje stranice mobilnim uređajima kako ih korisnici ne bi trebali sami povećavati da bi čitali sadržaj. [Saznajte više](https://developers.google.com/search/mobile-sites/)."
+  },
+  "lighthouse-core/config/default-config.js | seoMobileGroupTitle": {
+    "message": "Prilagođeno mobilnim uređajima"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnCacheTTL": {
+    "message": "TTL predmemoriranja"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnLocation": {
+    "message": "Lokacija"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnName": {
+    "message": "Naziv"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnRequests": {
+    "message": "Zahtjevi"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnResourceType": {
+    "message": "Vrsta resursa"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnSize": {
+    "message": "Veličina"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnTimeSpent": {
+    "message": "Utrošeno vrijeme"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnTransferSize": {
+    "message": "Veličina prijenosa"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnURL": {
+    "message": "URL"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnWastedBytes": {
+    "message": "Potencijalna ušteda"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnWastedMs": {
+    "message": "Potencijalna ušteda"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | displayValueByteSavings": {
+    "message": "Potencijalna ušteda {wastedBytes, number, bytes} KB"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | displayValueMsSavings": {
+    "message": "Potencijalna ušteda {wastedMs, number, milliseconds} ms"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | documentResourceType": {
+    "message": "Dokument"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | fontResourceType": {
+    "message": "Font"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | imageResourceType": {
+    "message": "Slika"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | mediaResourceType": {
+    "message": "Mediji"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | ms": {
+    "message": "{timeInMs, number, milliseconds} ms"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | otherResourceType": {
+    "message": "Drugo"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | scriptResourceType": {
+    "message": "Skripta"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | seconds": {
+    "message": "{timeInMs, number, seconds} s"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | stylesheetResourceType": {
+    "message": "List stila"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | thirdPartyResourceType": {
+    "message": "Treća strana"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | totalResourceType": {
+    "message": "Ukupno"
+  },
+  "lighthouse-core/lib/lh-error.js | badTraceRecording": {
+    "message": "Nešto nije u redu sa snimanjem traga preko učitavanja stranice. Ponovno pokrenite Lighthouse. ({errorCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | criTimeout": {
+    "message": "Isteklo je vrijeme čekanja za inicijalnu vezu za protokol za otklanjanje pogrešaka."
+  },
+  "lighthouse-core/lib/lh-error.js | didntCollectScreenshots": {
+    "message": "Chrome nije prikupio nikakve snimke zaslona tijekom učitavanja stranice. Provjerite je li sadržaj vidljiv na stranici, a zatim pokušajte ponovno pokrenuti Lighthouse. ({errorCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | dnsFailure": {
+    "message": "DNS poslužitelji nisu mogli razriješiti navedenu domenu."
+  },
+  "lighthouse-core/lib/lh-error.js | erroredRequiredArtifact": {
+    "message": "Potrebni prikupljač {artifactName} naišao je na pogrešku: {errorMessage}"
+  },
+  "lighthouse-core/lib/lh-error.js | internalChromeError": {
+    "message": "Došlo je do interne pogreške u Chromeu. Ponovo pokrenite Chrome i pokušajte ponovo pokrenuti Lighthouse."
+  },
+  "lighthouse-core/lib/lh-error.js | missingRequiredArtifact": {
+    "message": "Nije se pokrenuo potrebni prikupljač {artifactName}."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailed": {
+    "message": "Lighthouse nije mogao pouzdano učitati stranicu koju ste zatražili. Provjerite testirate li ispravan URL i odgovara li poslužitelj pravilno na sve zahtjeve."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedHung": {
+    "message": "Lighthouse nije mogao pouzdano učitati URL koji ste zatražili jer je stranica prestala reagirati."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedInsecure": {
+    "message": "URL koji ste naveli nema valjani sigurnosni certifikat. {securityMessages}"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedInterstitial": {
+    "message": "Chrome je spriječio međuprostorno učitavanje stranice. Provjerite testirate li ispravan URL i odgovara li poslužitelj pravilno na sve zahtjeve."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedWithDetails": {
+    "message": "Lighthouse nije mogao pouzdano učitati stranicu koju ste zatražili. Provjerite testirate li ispravan URL i odgovara li poslužitelj pravilno na sve zahtjeve. (Pojedinosti: {errorDetails})"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedWithStatusCode": {
+    "message": "Lighthouse nije mogao pouzdano učitati stranicu koju ste zatražili. Provjerite testirate li ispravan URL i odgovara li poslužitelj pravilno na sve zahtjeve. (Statusni kôd: {statusCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadTookTooLong": {
+    "message": "Učitavanje stranice trajalo je predugo. Slijedite mogućnosti u izvješću da biste smanjili vrijeme učitavanja stranice, a zatim pokušajte ponovno pokrenuti Lighthouse. ({errorCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | protocolTimeout": {
+    "message": "Čekanje odgovora protokola DevTools premašilo je dodijeljeno vrijeme. (Način: {protocolMethod})"
+  },
+  "lighthouse-core/lib/lh-error.js | requestContentTimeout": {
+    "message": "Dohvaćanje sadržaja resursa premašilo je dodijeljeno vrijeme"
+  },
+  "lighthouse-core/lib/lh-error.js | urlInvalid": {
+    "message": "Čini se da URL koji ste naveli nije važeći."
+  },
+  "lighthouse-core/report/html/renderer/util.js | auditGroupExpandTooltip": {
+    "message": "Prikažite preglede"
+  },
+  "lighthouse-core/report/html/renderer/util.js | crcInitialNavigation": {
+    "message": "Početna navigacija"
+  },
+  "lighthouse-core/report/html/renderer/util.js | crcLongestDurationLabel": {
+    "message": "Maksimalna latencija kritičkog puta:"
+  },
+  "lighthouse-core/report/html/renderer/util.js | errorLabel": {
+    "message": "Pogreška!"
+  },
+  "lighthouse-core/report/html/renderer/util.js | errorMissingAuditInfo": {
+    "message": "Pogreška izvješća: nema podataka o pregledu"
+  },
+  "lighthouse-core/report/html/renderer/util.js | labDataTitle": {
+    "message": "Laboratorijski podaci"
+  },
+  "lighthouse-core/report/html/renderer/util.js | lsPerformanceCategoryDescription": {
+    "message": "[Lighthouse](https://developers.google.com/web/tools/lighthouse/) analiza trenutačne stranice na emuliranoj mobilnoj mreži. Vrijednosti se procjenjuju i mogu se razlikovati."
+  },
+  "lighthouse-core/report/html/renderer/util.js | manualAuditsGroupTitle": {
+    "message": "Dodatne stavke za ručnu provjeru"
+  },
+  "lighthouse-core/report/html/renderer/util.js | notApplicableAuditsGroupTitle": {
+    "message": "Nije primjenjivo"
+  },
+  "lighthouse-core/report/html/renderer/util.js | opportunityResourceColumnLabel": {
+    "message": "Prilika"
+  },
+  "lighthouse-core/report/html/renderer/util.js | opportunitySavingsColumnLabel": {
+    "message": "Procijenjena ušteda"
+  },
+  "lighthouse-core/report/html/renderer/util.js | passedAuditsGroupTitle": {
+    "message": "Uspješni pregledi"
+  },
+  "lighthouse-core/report/html/renderer/util.js | snippetCollapseButtonLabel": {
+    "message": "Sažmi isječak"
+  },
+  "lighthouse-core/report/html/renderer/util.js | snippetExpandButtonLabel": {
+    "message": "Proširi isječak"
+  },
+  "lighthouse-core/report/html/renderer/util.js | thirdPartyResourcesLabel": {
+    "message": "Pokaži resurse treće strane"
+  },
+  "lighthouse-core/report/html/renderer/util.js | toplevelWarningsMessage": {
+    "message": "Na ovo izvođenje Lighthousea utjecale su neke poteškoće:"
+  },
+  "lighthouse-core/report/html/renderer/util.js | varianceDisclaimer": {
+    "message": "Vrijednosti se procjenjuju i mogu se razlikovati. Rezultat izvedbe jest [, a temelji se samo na ovim mjernim podacima ](https://github.com/GoogleChrome/lighthouse/blob/d2ec9ffbb21de9ad1a0f86ed24575eda32c796f0/docs/scoring.md#how-are-the-scores-weighted)."
+  },
+  "lighthouse-core/report/html/renderer/util.js | warningAuditsGroupTitle": {
+    "message": "Uspješni pregledi no s upozorenjima"
+  },
+  "lighthouse-core/report/html/renderer/util.js | warningHeader": {
+    "message": "Upozorenja: "
+  },
+  "stack-packs/packs/wordpress.js | efficient_animated_content": {
+    "message": "Savjetujemo vam da prenesete GIF na uslugu na kojoj će se kodirati za ugrađivanje kao HTML5 videozapis."
+  },
+  "stack-packs/packs/wordpress.js | offscreen_images": {
+    "message": "Instalirajte [WordPressov dodatak za lijeno učitavanje](https://wordpress.org/plugins/search/lazy+load/) koji pruža mogućnost odgode slika koje nisu na zaslonu ili prijeđite na temu koja pruža tu funkciju. Savjetujemo vam i upotrebu [dodatka za AMP](https://wordpress.org/plugins/amp/)."
+  },
+  "stack-packs/packs/wordpress.js | render_blocking_resources": {
+    "message": "Brojni WordPressovi dodaci omogućuju vam da [ugradite kritične elemente](https://wordpress.org/plugins/search/critical+css/) ili [odgodite nevažnije resurse](https://wordpress.org/plugins/search/defer+css+javascript/). Upozoravamo da optimizacije koje pružaju ti dodaci mogu oštetiti značajke vaše teme ili dodataka, pa ćete vjerojatno trebati unijeti promjene u kôd."
+  },
+  "stack-packs/packs/wordpress.js | time_to_first_byte": {
+    "message": "Specifikacije za teme, dodatke i poslužitelj produljuju vrijeme odgovora poslužitelja. Savjetujemo vam da pronađete optimiziraniju temu, pažljivo odaberete dodatak za optimizaciju i/ili nadogradite poslužitelj."
+  },
+  "stack-packs/packs/wordpress.js | total_byte_weight": {
+    "message": "Savjetujemo vam da prikažete odlomke na popisu postova (na primjer pomoću više oznaka), smanjite broj postova koji se prikazuju na određenoj stranici, razlomite dugačke postove na više stranica ili koristite dodatak za lijeno učitavanje komentara."
+  },
+  "stack-packs/packs/wordpress.js | unminified_css": {
+    "message": "Brojni [WordPressovi dodaci](https://wordpress.org/plugins/search/minify+css/) mogu ubrzati vašu web-lokaciju ulančavanjem, umanjivanjem i komprimiranjem stilova. Umanjivanje je dobro izvršiti i unaprijed, tijekom postupka razvoja."
+  },
+  "stack-packs/packs/wordpress.js | unminified_javascript": {
+    "message": "Brojni [WordPressovi dodaci](https://wordpress.org/plugins/search/minify+javascript/) mogu ubrzati vašu web-lokaciju ulančavanjem, umanjivanjem i komprimiranjem skripti. Umanjivanje je dobro izvršiti i unaprijed, tijekom postupka razvoja."
+  },
+  "stack-packs/packs/wordpress.js | unused_css_rules": {
+    "message": "Savjetujemo vam da smanjite broj [WordPressovih dodataka](https://wordpress.org/plugins/) koji učitavaju CSS koji se ne koristi na vašoj stranici ili da ih isključite. Da biste pronašli dodatke koji dodaju suvišan CSS, pokrenite [pokrivenost koda](https://developers.google.com/web/updates/2017/04/devtools-release-notes#coverage) u alatu Chrome DevTools. Odgovornu temu ili dodatak možete pronaći u URL-u stilske tablice. Obratite pažnju na dodatke koji na popisu imaju mnogo stilskih tablica s mnogo crvenog u pokrivenosti koda. Dodatak bi trebao postaviti stilsku tablicu u red samo ako se ona doista upotrebljava na stranici."
+  },
+  "stack-packs/packs/wordpress.js | unused_javascript": {
+    "message": "Savjetujemo vam da smanjite broj [WordPressovih dodataka](https://wordpress.org/plugins/) koji učitavaju JavaScript koji se ne koristi na vašoj stranici ili da ih isključite. Da biste pronašli dodatke koji dodaju suvišan JS, pokrenite [pokrivenost koda](https://developers.google.com/web/updates/2017/04/devtools-release-notes#coverage) u alatu Chrome DevTools. Odgovornu temu ili dodatak možete pronaći u URL-u skripte. Obratite pažnju na dodatke koji na popisu imaju mnogo skripti s mnogo crvenog u pokrivenosti koda. Dodatak bi trebao postaviti skriptu u red samo ako se ona doista upotrebljava na stranici."
+  },
+  "stack-packs/packs/wordpress.js | uses_long_cache_ttl": {
+    "message": "Pročitajte više o [predmemoriranju koje preglednici obavljaju u WordPressu](https://codex.wordpress.org/WordPress_Optimization#Browser_Caching)."
+  },
+  "stack-packs/packs/wordpress.js | uses_optimized_images": {
+    "message": "Savjetujemo vam upotrebu [WordPressovog dodatka za optimizaciju slika](https://wordpress.org/plugins/search/optimize+images/) koji komprimira slike bez gubitka kvalitete."
+  },
+  "stack-packs/packs/wordpress.js | uses_responsive_images": {
+    "message": "Prenesite slike izravno pomoću  [medijske biblioteke](https://codex.wordpress.org/Media_Library_Screen) kako bi bile dostupne potrebne veličine slika, a zatim ih umetnite iz medijske biblioteke ili upotrijebite widget za slike da bi se koristile optimalne veličine slika (uključujući one za responzivne prijelomne točke). Izbjegavajte upotrebu slika `Full Size` osim ako dimenzije odgovaraju njihovoj upotrebi. [Saznajte više](https://codex.wordpress.org/Inserting_Images_into_Posts_and_Pages#Image_Size)."
+  },
+  "stack-packs/packs/wordpress.js | uses_text_compression": {
+    "message": "Možete omogućiti kompresiju teksta u konfiguraciji web-poslužitelja."
+  },
+  "stack-packs/packs/wordpress.js | uses_webp_images": {
+    "message": "Savjetujemo vam upotrebu [dodatka](https://wordpress.org/plugins/search/convert+webp/) ili usluge koji će automatski konvertirati prenesene slike u optimalne formate."
+  }
+}
diff --git a/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/hu.json b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/hu.json
new file mode 100644
index 0000000..159ede5
--- /dev/null
+++ b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/hu.json
@@ -0,0 +1,1541 @@
+{
+  "lighthouse-core/audits/accessibility/accesskeys.js | description": {
+    "message": "A hozzáférési kulcsok segítségével a felhasználók gyorsan fókuszálhatnak az oldal adott részére. A megfelelő navigáció érdekében az összes hozzáférési kulcsnak egyedinek kell lennie. [További információ](https://web.dev/accesskeys/)."
+  },
+  "lighthouse-core/audits/accessibility/accesskeys.js | failureTitle": {
+    "message": "A(z) `[accesskey]` értékek nem egyediek"
+  },
+  "lighthouse-core/audits/accessibility/accesskeys.js | title": {
+    "message": "A következő értékek egyediek: `[accesskey]`"
+  },
+  "lighthouse-core/audits/accessibility/aria-allowed-attr.js | description": {
+    "message": "Minden egyes ARIA `role` szerepkör `aria-*` attribútumok konkrét részhalmazát támogatja. A hibás párosításuk érvényteleníti a(z) `aria-*` attribútumokat. [További információ](https://web.dev/aria-allowed-attr/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-allowed-attr.js | failureTitle": {
+    "message": "Bizonyos `[aria-*]` attribútumok nem felelnek meg szerepkörüknek"
+  },
+  "lighthouse-core/audits/accessibility/aria-allowed-attr.js | title": {
+    "message": "A(z) `[aria-*]` attribútumok megfelelnek szerepüknek"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-attr.js | description": {
+    "message": "Bizonyos ARIA-szerepkörök kötelező attribútumokkal rendelkeznek, amelyek az elem állapotát írják le a képernyőolvasók számára. [További információ](https://web.dev/aria-required-attr/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-required-attr.js | failureTitle": {
+    "message": "A(z) `[role]` elemek nem rendelkeznek minden szükséges `[aria-*]` attribútummal"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-attr.js | title": {
+    "message": "A(z) `[role]` attribútumok minden szükséges `[aria-*]` attribútummal rendelkeznek"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-children.js | description": {
+    "message": "Bizonyos fölérendelt ARIA-szerepköröknek meghatározott alárendelt szerepköröket kell tartalmazniuk, hogy megfelelően teljesíthessék a kívánt kisegítő funkciójukat. [További információ](https://web.dev/aria-required-children/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-required-children.js | failureTitle": {
+    "message": "Hiányoznak a(z) `[role]` tartalmú leszármazottai azon `[role]` tartalmú elemeknek, melyek meghatározott leszármazott elemeket igényelnek"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-children.js | title": {
+    "message": "A meghatározott `[role]` tartalmú leszármazottakat igénylő `[role]` tartalmú elemek rendelkeznek a szükséges leszármazottakkal."
+  },
+  "lighthouse-core/audits/accessibility/aria-required-parent.js | description": {
+    "message": "Bizonyos alárendelt ARIA-szerepköröket meghatározott fölérendelt szerepköröknek kell tartalmazniuk, hogy megfelelően teljesíthessék a kívánt kisegítő funkciójukat. [További információ](https://web.dev/aria-required-parent/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-required-parent.js | failureTitle": {
+    "message": "A(z) `[role]` elemek nem a megfelelő szülőelemben vannak"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-parent.js | title": {
+    "message": "A(z) `[role]` elemek a megfelelő szülőelemben vannak"
+  },
+  "lighthouse-core/audits/accessibility/aria-roles.js | description": {
+    "message": "Az ARIA-szerepköröknek érvényes értékekkel kell rendelkezniük, hogy megfelelően teljesíthessék a kívánt kisegítő funkciójukat. [További információ](https://web.dev/aria-roles/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-roles.js | failureTitle": {
+    "message": "A(z) `[role]` értékek nem érvényesek"
+  },
+  "lighthouse-core/audits/accessibility/aria-roles.js | title": {
+    "message": "A(z) `[role]` értékek érvényesek"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr-value.js | description": {
+    "message": "A kisegítő technológiák (például a képernyőolvasók) nem tudják értelmezni az érvénytelen értékkel rendelkező ARIA-attribútumokat. [További információ](https://web.dev/aria-valid-attr-value/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr-value.js | failureTitle": {
+    "message": "A(z) `[aria-*]` attribútumoknak nincs érvényes értékük"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr-value.js | title": {
+    "message": "A(z) `[aria-*]` attribútumok érvényes értékkel rendelkeznek"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr.js | description": {
+    "message": "A kisegítő technológiák (például a képernyőolvasók) nem tudják értelmezni az érvénytelen névvel rendelkező ARIA-attribútumokat. [További információ](https://web.dev/aria-valid-attr/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr.js | failureTitle": {
+    "message": "A(z) `[aria-*]` attribútumok nem érvényesek vagy elgépelést tartalmaznak"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr.js | title": {
+    "message": "A(z) `[aria-*]` attribútumok érvényesek és nincsenek elgépelve"
+  },
+  "lighthouse-core/audits/accessibility/audio-caption.js | description": {
+    "message": "A feliratok a legfontosabb információk közlésével teszik használhatóvá az audioelemeket a siket és hallássérült felhasználók számára (például ki beszél, mit mond, valamint egyéb, nem beszédhez kötődő információk). [További információ](https://web.dev/audio-caption/)."
+  },
+  "lighthouse-core/audits/accessibility/audio-caption.js | failureTitle": {
+    "message": "A(z) `<audio>` elemek nem rendelkeznek `[kind=\"captions\"]` tartalmú `<track>` elemmel."
+  },
+  "lighthouse-core/audits/accessibility/audio-caption.js | title": {
+    "message": "A(z) `<audio>` elemekhez `[kind=\"captions\"]` tartalmú `<track>` elem tartozik"
+  },
+  "lighthouse-core/audits/accessibility/axe-audit.js | failingElementsHeader": {
+    "message": "Hibás elemek"
+  },
+  "lighthouse-core/audits/accessibility/button-name.js | description": {
+    "message": "Ha valamelyik gomb nem rendelkezik hozzáférhető névvel, a képernyőolvasók „gomb” néven olvassák fel, ami nem igazán hasznos a képernyőolvasóra hagyatkozó felhasználók számára. [További információ](https://web.dev/button-name/)."
+  },
+  "lighthouse-core/audits/accessibility/button-name.js | failureTitle": {
+    "message": "Bizonyos gombok nem rendelkeznek hozzáférhető névvel"
+  },
+  "lighthouse-core/audits/accessibility/button-name.js | title": {
+    "message": "A gombok rendelkeznek kisegítő névvel"
+  },
+  "lighthouse-core/audits/accessibility/bypass.js | description": {
+    "message": "Az ismétlődő tartalmakat megkerülő módszerek megvalósításával a billentyűzetet használó személyek hatékonyabban navigálhatnak az oldalon. [További információ](https://web.dev/bypass/)."
+  },
+  "lighthouse-core/audits/accessibility/bypass.js | failureTitle": {
+    "message": "Az oldal nem tartalmaz címsort, átugró linket vagy igazodásipont-régiót"
+  },
+  "lighthouse-core/audits/accessibility/bypass.js | title": {
+    "message": "Az oldal címsort, átugró linket vagy igazodásipont-régiót tartalmaz"
+  },
+  "lighthouse-core/audits/accessibility/color-contrast.js | description": {
+    "message": "Az alacsony kontrasztú szöveg sokak számára nehezen vagy egyáltalán nem olvasható. [További információ](https://web.dev/color-contrast/)."
+  },
+  "lighthouse-core/audits/accessibility/color-contrast.js | failureTitle": {
+    "message": "Nem megfelelő a háttér- és előtérszínek közötti kontrasztarány."
+  },
+  "lighthouse-core/audits/accessibility/color-contrast.js | title": {
+    "message": "Megfelelő a háttér- és előtérszínek közötti kontrasztarány"
+  },
+  "lighthouse-core/audits/accessibility/definition-list.js | description": {
+    "message": "Ha nem megfelelő a definíciós listák jelölése, a képernyőolvasók zavaros vagy pontatlan szöveget generálhatnak. [További információ](https://web.dev/definition-list/)."
+  },
+  "lighthouse-core/audits/accessibility/definition-list.js | failureTitle": {
+    "message": "A(z) `<dl>` elemek nem csak megfelelően rendezett `<dt>` és `<dd>` csoportokat, illetve `<script>` vagy `<template>` elemeket tartalmaznak."
+  },
+  "lighthouse-core/audits/accessibility/definition-list.js | title": {
+    "message": "A(z) `<dl>` elemek csak megfelelő sorrendű `<dt>` és `<dd>` csoportokat, illetve `<script>` vagy `<template>` elemeket tartalmaznak."
+  },
+  "lighthouse-core/audits/accessibility/dlitem.js | description": {
+    "message": "A definíciós listák elemeit (`<dt>` és `<dd>`) `<dl>` szülőelembe kell foglalni, hogy a képernyőolvasók megfelelően felolvashassák őket. [További információ](https://web.dev/dlitem/)."
+  },
+  "lighthouse-core/audits/accessibility/dlitem.js | failureTitle": {
+    "message": "A definíciós listák elemei nincsenek `<dl>` elemekben"
+  },
+  "lighthouse-core/audits/accessibility/dlitem.js | title": {
+    "message": "A definíciós listák elemei `<dl>` elemekben vannak"
+  },
+  "lighthouse-core/audits/accessibility/document-title.js | description": {
+    "message": "A cím áttekintést ad az oldalról a képernyőolvasót használó személyeknek, a keresőmotorok pedig nagymértékben hagyatkoznak rá annak meghatározásához, hogy az oldal releváns-e az adott kereséshez. [További információ](https://web.dev/document-title/)."
+  },
+  "lighthouse-core/audits/accessibility/document-title.js | failureTitle": {
+    "message": "A dokumentum nem rendelkezik `<title>` elemmel"
+  },
+  "lighthouse-core/audits/accessibility/document-title.js | title": {
+    "message": "A dokumentum tartalmaz `<title>` elemet"
+  },
+  "lighthouse-core/audits/accessibility/duplicate-id.js | description": {
+    "message": "Az „id” attribútum értékének egyedinek kell lennie, hogy a kisegítő technológiák ne hagyják figyelmen kívül a többi előfordulást. [További információ](https://web.dev/duplicate-id/)."
+  },
+  "lighthouse-core/audits/accessibility/duplicate-id.js | failureTitle": {
+    "message": "Az oldal `[id]` attribútumai nem egyediek"
+  },
+  "lighthouse-core/audits/accessibility/duplicate-id.js | title": {
+    "message": "Az oldalon található `[id]` attribútumok egyediek"
+  },
+  "lighthouse-core/audits/accessibility/frame-title.js | description": {
+    "message": "A képernyőolvasók a keretcímek alapján írják le a keretek tartalmát. [További információ](https://web.dev/frame-title/)."
+  },
+  "lighthouse-core/audits/accessibility/frame-title.js | failureTitle": {
+    "message": "A(z) `<frame>` és a(z) `<iframe>` elemeknek nincs címük"
+  },
+  "lighthouse-core/audits/accessibility/frame-title.js | title": {
+    "message": "Van címe a(z) `<frame>` és `<iframe>` elemeknek"
+  },
+  "lighthouse-core/audits/accessibility/html-has-lang.js | description": {
+    "message": "Ha az oldal nem határoz meg „lang” attribútumot, a képernyőolvasók azt feltételezik majd, hogy az oldal nyelve megegyezik azzal az alapértelmezett nyelvvel, amelyet a felhasználó a képernyőolvasó beállításakor választott. Ha az oldal tényleges nyelve eltér az alapértelmezett nyelvtől, akkor előfordulhat, hogy a képernyőolvasók helytelen kiejtéssel olvassák majd fel az oldal szövegét. [További információ](https://web.dev/html-has-lang/)."
+  },
+  "lighthouse-core/audits/accessibility/html-has-lang.js | failureTitle": {
+    "message": "A(z) `<html>` elem nem rendelkezik `[lang]` attribútummal"
+  },
+  "lighthouse-core/audits/accessibility/html-has-lang.js | title": {
+    "message": "A(z) `<html>` elemhez tartozik `[lang]` attribútum"
+  },
+  "lighthouse-core/audits/accessibility/html-lang-valid.js | description": {
+    "message": "Ha érvényes [BCP 47 által definiált nyelvet](https://www.w3.org/International/questions/qa-choosing-language-tags#question) használ, a képernyőolvasók könnyebben felolvassák a szövegeket. [További információ](https://web.dev/html-lang-valid/)."
+  },
+  "lighthouse-core/audits/accessibility/html-lang-valid.js | failureTitle": {
+    "message": "A(z) `<html>` elem `[lang]` attribútumának nincs érvényes értéke."
+  },
+  "lighthouse-core/audits/accessibility/html-lang-valid.js | title": {
+    "message": "A(z) `<html>` elem `[lang]` attribútumának értéke érvényes"
+  },
+  "lighthouse-core/audits/accessibility/image-alt.js | description": {
+    "message": "Rövid, beszédes alternatív szöveget használjon a tájékoztató elemekhez. A díszítőelemek figyelmen kívül hagyhatók üres „alt” attribútummal. [További információ](https://web.dev/image-alt/)."
+  },
+  "lighthouse-core/audits/accessibility/image-alt.js | failureTitle": {
+    "message": "A képelemekhez nem tartozik `[alt]` attribútum"
+  },
+  "lighthouse-core/audits/accessibility/image-alt.js | title": {
+    "message": "A képelemekhez tartozik `[alt]` attribútum"
+  },
+  "lighthouse-core/audits/accessibility/input-image-alt.js | description": {
+    "message": "Ha a(z) `<input>` típusú gombként használt képekhez alternatív szöveget is megad, segíthet a képernyőolvasót használó látogatóknak a gomb rendeltetésének megértésében. [További információ](https://web.dev/input-image-alt/)."
+  },
+  "lighthouse-core/audits/accessibility/input-image-alt.js | failureTitle": {
+    "message": "A(z) `<input type=\"image\">` elemekhez nem tartozik `[alt]` szöveg"
+  },
+  "lighthouse-core/audits/accessibility/input-image-alt.js | title": {
+    "message": "A(z) `<input type=\"image\">` elemek rendelkeznek `[alt]` szöveggel"
+  },
+  "lighthouse-core/audits/accessibility/label.js | description": {
+    "message": "A címkék biztosítják, hogy a kisegítő technológiák (pl. a képernyőolvasók) megfelelően jelezzék az űrlapvezérlőket. [További információ](https://web.dev/label/)."
+  },
+  "lighthouse-core/audits/accessibility/label.js | failureTitle": {
+    "message": "Bizonyos formátumelemek nem rendelkeznek társított címkékkel"
+  },
+  "lighthouse-core/audits/accessibility/label.js | title": {
+    "message": "A formátumelemekhez megfelelő címkék vannak társítva"
+  },
+  "lighthouse-core/audits/accessibility/layout-table.js | description": {
+    "message": "Az elrendezési célokat szolgáló táblázat ne tartalmazzon adatelemeket (pl. „th” vagy „caption” elemet, illetve „summary” attribútumot), mert zavarók lehetnek a képernyőolvasót használó személyek számára. [További információ](https://web.dev/layout-table/)."
+  },
+  "lighthouse-core/audits/accessibility/layout-table.js | failureTitle": {
+    "message": "A prezentációs `<table>` elemek nem kerülik a(z) `<th>`, a(z) `<caption>` vagy a(z) `[summary]` attribútum használatát."
+  },
+  "lighthouse-core/audits/accessibility/layout-table.js | title": {
+    "message": "A prezentációs `<table>` elemek kerülik a(z) `<th>`, a(z) `<caption>` vagy a(z) `[summary]` attribútum használatát."
+  },
+  "lighthouse-core/audits/accessibility/link-name.js | description": {
+    "message": "A felismerhető, egyedi és fókuszálható linkszövegek (és linkként használt képek alternatív szövegei) jobb navigációs élményt biztosítanak a képernyőolvasóra hagyatkozó felhasználók számára. [További információ](https://web.dev/link-name/)."
+  },
+  "lighthouse-core/audits/accessibility/link-name.js | failureTitle": {
+    "message": "A linkekhez nem tartozik felismerhető név"
+  },
+  "lighthouse-core/audits/accessibility/link-name.js | title": {
+    "message": "A linkekhez felismerhető név tartozik"
+  },
+  "lighthouse-core/audits/accessibility/list.js | description": {
+    "message": "A képernyőolvasók sajátos módon olvassák fel a listákat. A megfelelő listastruktúra biztosítása segíti a képernyőolvasók működését. [További információ](https://web.dev/list/)."
+  },
+  "lighthouse-core/audits/accessibility/list.js | failureTitle": {
+    "message": "A listák nem csak `<li>` elemeket és szkripttámogató elemeket (`<script>` és `<template>`) tartalmaznak."
+  },
+  "lighthouse-core/audits/accessibility/list.js | title": {
+    "message": "A listák csak `<li>` elemeket és szkripttámogató elemeket (`<script>`, `<template>`) tartalmaznak."
+  },
+  "lighthouse-core/audits/accessibility/listitem.js | description": {
+    "message": "A listaelemeket (`<li>`) fölérendelt `<ul>` vagy `<ol>` elemekben kell elhelyezni, hogy a képernyőolvasók megfelelően olvassák fel őket. [További információ](https://web.dev/listitem/)."
+  },
+  "lighthouse-core/audits/accessibility/listitem.js | failureTitle": {
+    "message": "A listaelemek (`<li>`) nem `<ul>` vagy `<ol>` szülőelemekben vannak."
+  },
+  "lighthouse-core/audits/accessibility/listitem.js | title": {
+    "message": "A listaelemek (`<li>`) `<ul>` vagy `<ol>` szülőelemekben vannak"
+  },
+  "lighthouse-core/audits/accessibility/meta-refresh.js | description": {
+    "message": "A felhasználók nem számítanak az oldal automatikus frissítésére, ráadásul a frissítés visszahelyezi a fókuszt az oldal tetejére. Ez frusztráló lehet, valamint összezavarhatja a felhasználót. [További információ](https://web.dev/meta-refresh/)."
+  },
+  "lighthouse-core/audits/accessibility/meta-refresh.js | failureTitle": {
+    "message": "A dokumentum `<meta http-equiv=\"refresh\">` címkét használ"
+  },
+  "lighthouse-core/audits/accessibility/meta-refresh.js | title": {
+    "message": "A dokumentum nem használja a(z) `<meta http-equiv=\"refresh\">` címkét"
+  },
+  "lighthouse-core/audits/accessibility/meta-viewport.js | description": {
+    "message": "A nagyítás letiltása problémát jelent a gyengén látó felhasználók számára, akik a képernyőnagyításra hagyatkoznak ahhoz, hogy megfelelően láthassák a weboldal tartalmát. [További információ](https://web.dev/meta-viewport/)."
+  },
+  "lighthouse-core/audits/accessibility/meta-viewport.js | failureTitle": {
+    "message": "A(z) `[user-scalable=\"no\"]` szerepel a(z) `<meta name=\"viewport\">` elemben, vagy a(z) `[maximum-scale]` attribútum 5-nél kisebb."
+  },
+  "lighthouse-core/audits/accessibility/meta-viewport.js | title": {
+    "message": "Nem használja a(z) `[user-scalable=\"no\"]` attribútumot a(z) `<meta name=\"viewport\">` elemben, a(z) `[maximum-scale]` attribútum pedig nem kevesebb 5-nél."
+  },
+  "lighthouse-core/audits/accessibility/object-alt.js | description": {
+    "message": "A képernyőolvasók nem tudják lefordítani a nem szövegalapú tartalmakat. Ha alternatív szöveget helyez el a(z) `<object>` elemekben, a képernyőolvasók kommunikálhatják az elemek jelentését a felhasználóknak. [További információ](https://web.dev/object-alt/)."
+  },
+  "lighthouse-core/audits/accessibility/object-alt.js | failureTitle": {
+    "message": "A(z) `<object>` elemekhez nem tartozik `[alt]` szöveg"
+  },
+  "lighthouse-core/audits/accessibility/object-alt.js | title": {
+    "message": "A(z) `<object>` elemek rendelkeznek `[alt]` szöveggel"
+  },
+  "lighthouse-core/audits/accessibility/tabindex.js | description": {
+    "message": "A 0-nál nagyobb érték explicit navigációs sorrendet jelent. Ez ugyan technikailag érvényes, azonban gyakran problémát jelent a kisegítő technológiákra hagyatkozó felhasználók számára. [További információ](https://web.dev/tabindex/)."
+  },
+  "lighthouse-core/audits/accessibility/tabindex.js | failureTitle": {
+    "message": "Bizonyos elemek `[tabindex]` attribútuma 0-nál nagyobb értékkel rendelkezik."
+  },
+  "lighthouse-core/audits/accessibility/tabindex.js | title": {
+    "message": "Egyetlen elem `[tabindex]` attribútumának sem 0-nál nagyobb az értéke"
+  },
+  "lighthouse-core/audits/accessibility/td-headers-attr.js | description": {
+    "message": "A képernyőolvasók olyan funkciókkal is rendelkeznek, amelyek megkönnyítik a táblázatokban való navigációt. Ha a(z) `[headers]` attribútumot használó `<td>` cellák csak a saját táblázatuk más celláira hivatkoznak, jobb felhasználói élményt nyújthat a képernyő felolvasása során. [További információ](https://web.dev/td-headers-attr/)."
+  },
+  "lighthouse-core/audits/accessibility/td-headers-attr.js | failureTitle": {
+    "message": "A(z) `<table>` elemben lévő, `[headers]` attribútumot használó cellák a saját táblázatuk celláira hivatkoznak."
+  },
+  "lighthouse-core/audits/accessibility/td-headers-attr.js | title": {
+    "message": "A(z) `<table>` elemben lévő, `[headers]` attribútumot használó cellák csak a saját táblázatuk celláira hivatkoznak."
+  },
+  "lighthouse-core/audits/accessibility/th-has-data-cells.js | description": {
+    "message": "A képernyőolvasók olyan funkciókkal is rendelkeznek, amelyek megkönnyítik a táblázatokban való navigációt. Ha biztosítja, hogy a táblák fejlécei mindig hivatkozzanak cellákra, megkönnyítheti az oldal használatát a képernyőolvasóra hagyatkozó felhasználók számára. [További információ](https://web.dev/th-has-data-cells/)."
+  },
+  "lighthouse-core/audits/accessibility/th-has-data-cells.js | failureTitle": {
+    "message": "A(z) `<th>` elemekhez és a(z) `[role=\"columnheader\"/\"rowheader\"]` tartalmú elemekhez nem tartoznak általuk leírt adatcellák."
+  },
+  "lighthouse-core/audits/accessibility/th-has-data-cells.js | title": {
+    "message": "A(z) `<th>` elemek és a(z) `[role=\"columnheader\"/\"rowheader\"]` tartalmú elemek rendelkeznek a leírt adatcellákkal."
+  },
+  "lighthouse-core/audits/accessibility/valid-lang.js | description": {
+    "message": "Ha az elemeken érvényes [BCP 47 által definiált nyelvet](https://www.w3.org/International/questions/qa-choosing-language-tags#question) határoz meg, akkor segíthet a képernyőolvasóknak a szöveg helyes kiejtésében. [További információ](https://web.dev/valid-lang/)."
+  },
+  "lighthouse-core/audits/accessibility/valid-lang.js | failureTitle": {
+    "message": "A(z) `[lang]` attribútumokhoz nem tartozik érvényes érték"
+  },
+  "lighthouse-core/audits/accessibility/valid-lang.js | title": {
+    "message": "A(z) `[lang]` attribútumok érvényes értékkel rendelkeznek"
+  },
+  "lighthouse-core/audits/accessibility/video-caption.js | description": {
+    "message": "Ha a videóhoz felirat tartozik, a siket és hallássérült felhasználók egyszerűbben hozzájuthatnak a videóban található információkhoz. [További információ](https://web.dev/video-caption/)."
+  },
+  "lighthouse-core/audits/accessibility/video-caption.js | failureTitle": {
+    "message": "A(z) `<video>` elemekhez nem tartozik `[kind=\"captions\"]` tartalmú `<track>` elem."
+  },
+  "lighthouse-core/audits/accessibility/video-caption.js | title": {
+    "message": "A(z) `<video>` elemekhez `[kind=\"captions\"]` tartalmú `<track>` elem tartozik"
+  },
+  "lighthouse-core/audits/accessibility/video-description.js | description": {
+    "message": "Az audiokommentárok olyan fontos információkat nyújtanak a videókhoz, amelyek a párbeszédekből nem derülnek ki (ilyen például az arckifejezések és a jelenetek leírása). [További információ](https://web.dev/video-description/)."
+  },
+  "lighthouse-core/audits/accessibility/video-description.js | failureTitle": {
+    "message": "A(z) `<video>` elemekhez nem tartozik `[kind=\"description\"]` tartalmú `<track>` elem."
+  },
+  "lighthouse-core/audits/accessibility/video-description.js | title": {
+    "message": "A(z) `<video>` elemekhez `[kind=\"description\"]` tartalmú `<track>` elem tartozik"
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | description": {
+    "message": "Ha azt szeretné, hogy a megjelenés ideális legyen iOS rendszeren, amikor a felhasználók progresszív webes alkalmazást adnak hozzá a kezdőképernyőhöz, határozzon meg egy `apple-touch-icon` elemet. Az ikonnak 192 képpont (vagy 180 képpont) méretű, nem átlátszó, négyzetes PNG-re kell mutatnia. [További információ](https://developers.google.com/web/fundamentals/design-and-ux/browser-customization/)."
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | failureTitle": {
+    "message": "Nincs érvényes `apple-touch-icon`"
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | precomposedWarning": {
+    "message": "A(z) `apple-touch-icon-precomposed` elavult; a(z) `apple-touch-icon` használandó helyette."
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | title": {
+    "message": "Érvényes `apple-touch-icon` elemet tartalmaz"
+  },
+  "lighthouse-core/audits/bootup-time.js | chromeExtensionsWarning": {
+    "message": "Egyes Chrome-bővítmények kedvezőtlenül befolyásolták az oldal betöltési teljesítményét. Próbálkozzon az oldal inkognitómódban vagy bővítmények nélküli Chrome-profilból történő ellenőrzésével."
+  },
+  "lighthouse-core/audits/bootup-time.js | columnScriptEval": {
+    "message": "Szkriptértékelés"
+  },
+  "lighthouse-core/audits/bootup-time.js | columnScriptParse": {
+    "message": "Szkriptelemzés"
+  },
+  "lighthouse-core/audits/bootup-time.js | columnTotal": {
+    "message": "Teljes processzoridő"
+  },
+  "lighthouse-core/audits/bootup-time.js | description": {
+    "message": "Érdemes csökkenteni a JavaScript értelmezésére, összeállítására és végrehajtására fordított időt. Ebben segíthet, ha kisebb méretű JavaScript-forrásokat továbbít. [További információ](https://developers.google.com/web/tools/lighthouse/audits/bootup)."
+  },
+  "lighthouse-core/audits/bootup-time.js | failureTitle": {
+    "message": "Csökkentse a JavaScript végrehajtási idejét"
+  },
+  "lighthouse-core/audits/bootup-time.js | title": {
+    "message": "JavaScript végrehajtási ideje"
+  },
+  "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | description": {
+    "message": "A túl nagy GIF-fájlokkal nem lehet hatékonyan animált tartalmakat nyújtani. Az adatforgalom csökkentésének érdekében a GIF-ek helyett érdemes az animációkhoz MPEG4-/WebM-videókat használnia, a statikus képekhez pedig PNG-/WebP-képeket. [További információ](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/replace-animated-gifs-with-video/)"
+  },
+  "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | title": {
+    "message": "Használjon videoformátumot az animált tartalmakhoz"
+  },
+  "lighthouse-core/audits/byte-efficiency/offscreen-images.js | description": {
+    "message": "Vegye fontolóra a képernyőn kívüli és rejtett képek késleltetett, kritikus források utáni betöltését, hogy az oldal hamarabb interaktívvá váljon. [További információ](https://developers.google.com/web/tools/lighthouse/audits/offscreen-images)."
+  },
+  "lighthouse-core/audits/byte-efficiency/offscreen-images.js | title": {
+    "message": "Késleltesse a képernyőn kívüli képek betöltését"
+  },
+  "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | description": {
+    "message": "Források blokkolják az oldal első vizuális válaszát. Javasoljuk, hogy a legfontosabb JavaScript-/CSS-elemeket beágyazva továbbítsa, a nem fontos JS-t/CSS-t pedig késleltesse [További információ](https://developers.google.com/web/tools/lighthouse/audits/blocking-resources)."
+  },
+  "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | title": {
+    "message": "Távolítsa el a megjelenítést gátló erőforrásokat"
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | description": {
+    "message": "A nagy hálózati terhelés tényleges anyagi költséget jelenthet a felhasználóknak, és jellemzően jelentősen megnöveli a betöltési időt. [További információ](https://developers.google.com/web/tools/lighthouse/audits/network-payloads)."
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | displayValue": {
+    "message": "A teljes méret {totalBytes, number, bytes} kB volt"
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | failureTitle": {
+    "message": "Kerülje a nagyon nagy hálózati hasznosadat-forgalmat"
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | title": {
+    "message": "A nagyon nagy hálózati terhelés elkerülése"
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-css.js | description": {
+    "message": "A CSS-fájlok minimalizálása csökkentheti a hálózaton továbbított adatok méretét. [További információ](https://developers.google.com/web/tools/lighthouse/audits/minify-css)."
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-css.js | title": {
+    "message": "Minimalizálja a CSS-fájlokat"
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | description": {
+    "message": "A JavaScript-fájlok minimalizálásával csökkenthető a továbbított adatok mérete és a szkriptek értelmezésére fordított idő. [További információ](https://developers.google.com/speed/docs/insights/MinifyResources)."
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | title": {
+    "message": "Minimalizálja a JavaScript-kódot"
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | description": {
+    "message": "A stíluslapok érvénytelen szabályainak eltávolításával és a hajtás feletti tartalomhoz nem használt CSS-kód betöltésének késleltetésével csökkentheti a hálózati tevékenység által felhasznált bájtmennyiséget. [További információ](https://developers.google.com/web/tools/lighthouse/audits/unused-css)."
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | title": {
+    "message": "Távolítsa el a nem használt CSS-kódot"
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-javascript.js | description": {
+    "message": "A nem használt JavaScript-kód eltávolítása a hálózati tevékenység adatforgalmának csökkentéséhez."
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-javascript.js | title": {
+    "message": "Távolítsa el a nem használt JavaScript-kódot"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | description": {
+    "message": "Ha a gyorsítótárak élettartama hosszú, gyorsabbá válnak a weboldal későbbi ismételt megnyitásai. [További információ](https://developers.google.com/web/tools/lighthouse/audits/cache-policy)."
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 erőforrás található}other{# erőforrás található}}"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | failureTitle": {
+    "message": "Jelenítse meg a statikus eszközöket hatékony gyorsítótár-házirend használatával"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | title": {
+    "message": "Használjon hatékony gyorsítótár-házirendet a statikus eszközöknél"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | description": {
+    "message": "Az optimalizált képek gyorsabban betöltődnek és kevesebb adatforgalmat generálnak. [További információ](https://developers.google.com/web/tools/lighthouse/audits/optimize-images)."
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | title": {
+    "message": "Kódolja hatékonyan a képeket"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | description": {
+    "message": "Használjon olyan képeket, amelyek megfelelő méretükkel elősegítik a mobiladat-forgalom csökkentését és a betöltési idő javulását. [További információ](https://developers.google.com/web/tools/lighthouse/audits/oversized-images)."
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | title": {
+    "message": "Méretezze megfelelően a képeket"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | description": {
+    "message": "A szövegalapú forrásokat tömörítéssel (gzip, Deflate vagy Brotli) célszerű továbbítani a hálózati adatforgalom minimalizálása érdekében. [További információ](https://developers.google.com/web/tools/lighthouse/audits/text-compression)."
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | title": {
+    "message": "Engedélyezze a szövegtömörítést"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | description": {
+    "message": "Az olyan képformátumok, mint a JPEG 2000, a JPEG XR és a WebP gyakran jobb tömörítést nyújtanak, mint a PNG és a JPEG, azaz kevesebb adatforgalom mellett gyorsabb letöltést biztosítanak. [További információ](https://developers.google.com/web/tools/lighthouse/audits/webp)."
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | title": {
+    "message": "Jelenítse meg a képeket következő generációs formátumokban"
+  },
+  "lighthouse-core/audits/content-width.js | description": {
+    "message": "Ha az alkalmazás tartalmának szélessége nem egyezik a megjelenítési terület szélességével, akkor lehet, hogy alkalmazása nincs optimalizálva a mobilok képernyőjére. [További információ](https://developers.google.com/web/tools/lighthouse/audits/content-sized-correctly-for-viewport)."
+  },
+  "lighthouse-core/audits/content-width.js | explanation": {
+    "message": "A megjelenítési terület mérete ({innerWidth} képpont) nem egyezik az ablak méretével ({outerWidth} képpont)."
+  },
+  "lighthouse-core/audits/content-width.js | failureTitle": {
+    "message": "A tartalom nincs megfelelően méretezve a megjelenítési területhez"
+  },
+  "lighthouse-core/audits/content-width.js | title": {
+    "message": "A tartalom megfelelően van méretezve a megjelenítési területhez"
+  },
+  "lighthouse-core/audits/critical-request-chains.js | description": {
+    "message": "Az alábbi kritikus kérésláncok megjelenítik, hogy milyen források töltődnek be magas prioritással. Az oldalbetöltés javítása érdekében fontolja meg a láncok hosszának csökkentését, a letöltött források méretének csökkentését, vagy a felesleges források letöltésének késleltetését. [További információ](https://developers.google.com/web/tools/lighthouse/audits/critical-request-chains)."
+  },
+  "lighthouse-core/audits/critical-request-chains.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 lánc található}other{# lánc található}}"
+  },
+  "lighthouse-core/audits/critical-request-chains.js | title": {
+    "message": "Minimalizálja a kritikus lekérdezések mélységét"
+  },
+  "lighthouse-core/audits/deprecations.js | columnDeprecate": {
+    "message": "Elavulás / Figyelmeztetés"
+  },
+  "lighthouse-core/audits/deprecations.js | columnLine": {
+    "message": "Sor"
+  },
+  "lighthouse-core/audits/deprecations.js | description": {
+    "message": "Az elavult API-k előbb-utóbb kikerülnek a böngészőből. [További információ](https://web.dev/deprecations)."
+  },
+  "lighthouse-core/audits/deprecations.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 figyelmeztetés}other{# figyelmeztetés}}"
+  },
+  "lighthouse-core/audits/deprecations.js | failureTitle": {
+    "message": "Elavult API-kat használ"
+  },
+  "lighthouse-core/audits/deprecations.js | title": {
+    "message": "Kerüli az elavult API-kat"
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | description": {
+    "message": "Az alkalmazás-gyorsítótár elavult. [További információ](https://web.dev/appcache-manifest)."
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | displayValue": {
+    "message": "A(z) „{AppCacheManifest}” van használatban"
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | failureTitle": {
+    "message": "Alkalmazás-gyorsítótárat használ"
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | title": {
+    "message": "Kerüli az alkalmazás-gyorsítótárat"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | description": {
+    "message": "A doctype meghatározásával elkerülhető, hogy a böngésző visszafelé kompatibilis módra váltson. [További információ](https://web.dev/doctype)."
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationBadDoctype": {
+    "message": "A doctype nevének a kisbetűs `html` szövegnek kell lennie"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationNoDoctype": {
+    "message": "A dokumentumnak doctype szakaszt kell tartalmaznia"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationPublicId": {
+    "message": "A publicId nem üres karakterlánc"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationSystemId": {
+    "message": "A systemId mező nem üres karakterlánc"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | failureTitle": {
+    "message": "Az oldalon nincs HTML doctype, ezért visszafelé kompatibilis módot indít"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | title": {
+    "message": "Az oldalon szerepel a HTML doctype"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | columnElement": {
+    "message": "Elem"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | columnStatistic": {
+    "message": "Jellemző"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | columnValue": {
+    "message": "Érték"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | description": {
+    "message": "A böngészők fejlesztői azt javasolják, hogy az oldalak legfeljebb kb. 1500 DOM-elemet tartalmazzanak. Ideális esetben 32-nél kisebb mélységű fa és 60-nál kevesebb gyermek/szülő elem van. A nagy méretű DOM megnöveli a memóriahasználatot, hosszabb ideig tartó [stílusszámítást](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations) igényel, valamint költséges [elrendezés-áttördeléssel](https://developers.google.com/speed/articles/reflow) jár. [További információ](https://web.dev/dom-size)."
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 elem}other{# elem}}"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | failureTitle": {
+    "message": "Kerülje a túl nagy DOM-méretet"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | statisticDOMDepth": {
+    "message": "Maximális DOM-mélység"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | statisticDOMElements": {
+    "message": "DOM-elemek száma"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | statisticDOMWidth": {
+    "message": "Alárendelt elemek maximális száma"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | title": {
+    "message": "Kerüli a túlzó DOM-méretet"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | columnRel": {
+    "message": "Rel"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | columnTarget": {
+    "message": "Cél"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | description": {
+    "message": "Adjon `rel=\"noopener\"` vagy `rel=\"noreferrer\"` címkét a külső linkekhez, hogy javíthassa a teljesítményt és elkerülhesse a sebezhetőségeket. [További információ](https://web.dev/external-anchors-use-rel-noopener)."
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | failureTitle": {
+    "message": "Az eredetközi célokra mutató linkek nem biztonságosak"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | title": {
+    "message": "Az eredetközi célokra mutató linkek biztonságosak"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | warning": {
+    "message": "A horgony célpontja nem meghatározható ({anchorHTML}). Ha nem hiperlinkről van szó, érdemes eltávolítania a target=_blank részt."
+  },
+  "lighthouse-core/audits/dobetterweb/geolocation-on-start.js | description": {
+    "message": "A tartózkodási helyre vonatkozó engedély váratlan kérése bizalmatlanságra adhat okot, valamint összezavarhatja a felhasználókat. Érdemes inkább felhasználói műveletekhez kötni a kérést. [További információ](https://web.dev/geolocation-on-start)."
+  },
+  "lighthouse-core/audits/dobetterweb/geolocation-on-start.js | failureTitle": {
+    "message": "Oldalbetöltéskor a földrajzi helyre vonatkozó engedélyt kéri"
+  },
+  "lighthouse-core/audits/dobetterweb/geolocation-on-start.js | title": {
+    "message": "Kerüli a földrajzi helyre vonatkozó engedély kérését oldalbetöltéskor"
+  },
+  "lighthouse-core/audits/dobetterweb/js-libraries.js | columnVersion": {
+    "message": "Verzió"
+  },
+  "lighthouse-core/audits/dobetterweb/js-libraries.js | description": {
+    "message": "Az oldalon észlelt minden front-end JavaScript-függvénytár. [További információ](https://web.dev/js-libraries)."
+  },
+  "lighthouse-core/audits/dobetterweb/js-libraries.js | title": {
+    "message": "Észlelt JavaScript-függvénytárak"
+  },
+  "lighthouse-core/audits/dobetterweb/no-document-write.js | description": {
+    "message": "A külső szkriptek `document.write()` segítségével történő dinamikus beillesztése több tíz másodperccel lassíthatja az oldalbetöltést a lassú kapcsolaton csatlakozó felhasználók esetében. [További információ](https://web.dev/no-document-write)."
+  },
+  "lighthouse-core/audits/dobetterweb/no-document-write.js | failureTitle": {
+    "message": "A(z) `document.write()` metódust használja"
+  },
+  "lighthouse-core/audits/dobetterweb/no-document-write.js | title": {
+    "message": "Kerüli a(z) `document.write()` használatát"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | columnSeverity": {
+    "message": "Legmagasabb súlyosság"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | columnVersion": {
+    "message": "Függvénytár verziója"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | columnVuln": {
+    "message": "Sebezhetőségek száma"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | description": {
+    "message": "A harmadik felektől származó szkriptek ismert sebezhetőségeket tartalmazhatnak, melyeket a támadók könnyedén felismerhetnek és kihasználhatnak. [További információ](https://web.dev/no-vulnerable-libraries)."
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 észlelt sebezhetőség}other{# észlelt sebezhetőség}}"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | failureTitle": {
+    "message": "Ismert sebezhetőségeket tartalmazó front-end JavaScript-függvénytárakat használ"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | rowSeverityHigh": {
+    "message": "Magas"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | rowSeverityLow": {
+    "message": "Alacsony"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | rowSeverityMedium": {
+    "message": "Közepes"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | title": {
+    "message": "Kerüli az ismert sebezhetőségeket tartalmazó front-end JavaScript-függvénytárakat"
+  },
+  "lighthouse-core/audits/dobetterweb/notification-on-start.js | description": {
+    "message": "Az értesítésekre vonatkozó engedély váratlan kérése bizalmatlanságra adhat okot, valamint összezavarhatja a felhasználókat. Érdemes inkább felhasználói műveletekhez kötni a kérést. [További információ](https://web.dev/notification-on-start)."
+  },
+  "lighthouse-core/audits/dobetterweb/notification-on-start.js | failureTitle": {
+    "message": "Oldalbetöltéskor az értesítésekre vonatkozó engedélyt kéri"
+  },
+  "lighthouse-core/audits/dobetterweb/notification-on-start.js | title": {
+    "message": "Kerüli az értesítésekre vonatkozó engedély kérését oldalbetöltéskor"
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | columnFailingElem": {
+    "message": "Hibás elemek"
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | description": {
+    "message": "A jelszóbeillesztés megakadályozása rossz biztonsági gyakorlat. [További információ](https://web.dev/password-inputs-can-be-pasted-into)."
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | failureTitle": {
+    "message": "Megakadályozza, hogy a felhasználók szöveget illesszenek be a jelszómezőkbe"
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | title": {
+    "message": "Lehetővé teszi, hogy a felhasználók beillesszenek a jelszómezőkbe"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | columnProtocol": {
+    "message": "Protokoll"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | description": {
+    "message": "A HTTP/2 számos előnyt nyújt a HTTP/1.1-hez képest, például bináris fejléceket, multiplexelést és előzetes adatküldést (server push). [További információ](https://web.dev/uses-http2)."
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 nem HTTP/2-t használó kérés}other{# nem HTTP/2-t használó kérés}}"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | failureTitle": {
+    "message": "Nem minden forráshoz használ HTTP/2-t"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | title": {
+    "message": "HTTP/2-t használ a saját forrásokhoz"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-passive-event-listeners.js | description": {
+    "message": "Fontolja meg az érintési és görgetési eseményfigyelők megjelölését mint `passive`, hogy javuljon az oldal görgetést érintő teljesítménye. [További információ](https://web.dev/uses-passive-event-listeners)."
+  },
+  "lighthouse-core/audits/dobetterweb/uses-passive-event-listeners.js | failureTitle": {
+    "message": "Nem használ passzív figyelőket a görgetés teljesítményének javításához"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-passive-event-listeners.js | title": {
+    "message": "Passzív figyelőket alkalmaz a görgetés teljesítményének javításához"
+  },
+  "lighthouse-core/audits/errors-in-console.js | columnDesc": {
+    "message": "Leírás"
+  },
+  "lighthouse-core/audits/errors-in-console.js | description": {
+    "message": "A konzolon megjelenő hibák megoldatlan problémákat jeleznek. Okaik lehetnek sikertelen hálózati kérések, valamint más böngészős tényezők is. [További információ](https://web.dev/errors-in-console)"
+  },
+  "lighthouse-core/audits/errors-in-console.js | failureTitle": {
+    "message": "A böngészőhibák a konzolon láthatók"
+  },
+  "lighthouse-core/audits/errors-in-console.js | title": {
+    "message": "Nem került böngészőhiba a konzolra"
+  },
+  "lighthouse-core/audits/font-display.js | description": {
+    "message": "Használja a CSS font-display leíróját, hogy a szövegek a webes betűtípusok betöltése közben is biztosan láthatók legyenek a felhasználók számára. [További információ](https://developers.google.com/web/updates/2016/02/font-display)."
+  },
+  "lighthouse-core/audits/font-display.js | failureTitle": {
+    "message": "Biztosítsa, hogy a szöveg látható marad a webes betűtípusok betöltése során"
+  },
+  "lighthouse-core/audits/font-display.js | title": {
+    "message": "Az összes szöveg látható marad a webes betűtípusok betöltésekor"
+  },
+  "lighthouse-core/audits/font-display.js | undeclaredFontURLWarning": {
+    "message": "A Lighthouse nem tudta automatikusan ellenőrizni a következő URL font-display értékét: {fontURL}"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | columnActual": {
+    "message": "Képarány (tényleges)"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | columnDisplayed": {
+    "message": "Képarány (megjelenített)"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | description": {
+    "message": "A képmegjelenítési méretek ideális esetben természetes képarányt alkalmaznak. [További információ](https://web.dev/image-aspect-ratio)."
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | failureTitle": {
+    "message": "Hibás képaránnyal jeleníti meg a képeket"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | title": {
+    "message": "Helyes képaránnyal jeleníti meg a képeket"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | warningCompute": {
+    "message": "Érvénytelen képméretezési információ {url}"
+  },
+  "lighthouse-core/audits/installable-manifest.js | description": {
+    "message": "A böngészők proaktív módon kérhetik a felhasználókat, hogy adják hozzá az Ön alkalmazását a kezdőképernyőjükhöz, ami erősebb elköteleződéshez vezethet. [További információ](https://developers.google.com/web/tools/lighthouse/audits/install-prompt)."
+  },
+  "lighthouse-core/audits/installable-manifest.js | failureTitle": {
+    "message": "Az internetes alkalmazás manifestje nem felel meg a telepíthetőségi követelményeknek"
+  },
+  "lighthouse-core/audits/installable-manifest.js | title": {
+    "message": "Az internetes alkalmazás manifestje megfelel a telepíthetőségi követelményeknek"
+  },
+  "lighthouse-core/audits/is-on-https.js | columnInsecureURL": {
+    "message": "Nem biztonságos URL"
+  },
+  "lighthouse-core/audits/is-on-https.js | description": {
+    "message": "Minden webhelyet HTTPS-sel kell védeni, még akkor is, ha nem kezelnek bizalmas adatokat A HTTPS megakadályozza, hogy behatolók módosítsák vagy megfigyeljék az alkalmazás és a felhasználók közötti kommunikációt. Ezt a protokollt megköveteli a HTTP/2, valamint számos új webes API is. [További információ](https://web.dev/is-on-https)."
+  },
+  "lighthouse-core/audits/is-on-https.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 nem biztonságos kérés}other{# nem biztonságos kérés}}"
+  },
+  "lighthouse-core/audits/is-on-https.js | failureTitle": {
+    "message": "Nem használ HTTPS-t"
+  },
+  "lighthouse-core/audits/is-on-https.js | title": {
+    "message": "HTTPS-t használ"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | description": {
+    "message": "A mobilhálózatokon is gyors oldalbetöltés jobb mobilos felhasználói élményt jelent. [További információ](https://developers.google.com/web/tools/lighthouse/audits/fast-3g)."
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | displayValueText": {
+    "message": "{timeInMs, number, seconds} mp az interaktívvá válásig"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | displayValueTextWithOverride": {
+    "message": "Interaktívvá válás szimulált mobilhálózaton: {timeInMs, number, seconds} mp"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | explanationLoadSlow": {
+    "message": "Az oldal túl lassan töltődik be, és nem válik interaktívvá tíz másodpercen belül. A probléma elhárításához tekintse meg a „Teljesítmény” szakaszban lévő lehetőségeket és diagnosztikákat."
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | failureTitle": {
+    "message": "Az oldalbetöltés nem elég gyors mobilhálózatokon"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | title": {
+    "message": "Az oldalbetöltés kellően gyors mobilhálózatokon"
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | columnCategory": {
+    "message": "Kategória"
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | description": {
+    "message": "Érdemes csökkenteni a JS elemzésére, összeállítására és végrehajtására fordított időt. Ebben segítségére lehet a kisebb JS-hasznosadat-forgalom."
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | failureTitle": {
+    "message": "Minimalizálja a fő szál terhelését"
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | title": {
+    "message": "Minimalizálja a fő szál terhelését"
+  },
+  "lighthouse-core/audits/manual/pwa-cross-browser.js | description": {
+    "message": "A lehető legtöbb felhasználó elérése érdekében a webhelyeknek minden elterjedtebb böngészőben működniük kell. [További információ](https://developers.google.com/web/progressive-web-apps/checklist#site-works-cross-browser)."
+  },
+  "lighthouse-core/audits/manual/pwa-cross-browser.js | title": {
+    "message": "A webhely többféle böngészőben is működik"
+  },
+  "lighthouse-core/audits/manual/pwa-each-page-has-url.js | description": {
+    "message": "Lássa el az egyes oldalakat mélylinkként használható URL-ekkel, és ügyeljen arra, hogy ezek az URL-ek egyediek legyenek a közösségi médiában való megosztás céljából. [További információ](https://developers.google.com/web/progressive-web-apps/checklist#each-page-has-a-url)."
+  },
+  "lighthouse-core/audits/manual/pwa-each-page-has-url.js | title": {
+    "message": "Minden oldal rendelkezik URL-címmel"
+  },
+  "lighthouse-core/audits/manual/pwa-page-transitions.js | description": {
+    "message": "A koppintgatás során az átmeneteknek még lassú hálózaton is gyorsnak kell lenniük – ez az egyik legfontosabb tényező az észlelt teljesítmény tekintetében. [További információ](https://developers.google.com/web/progressive-web-apps/checklist#page-transitions-dont-feel-like-they-block-on-the-network)."
+  },
+  "lighthouse-core/audits/manual/pwa-page-transitions.js | title": {
+    "message": "Az oldalak közti váltásnak nem szabadna akadályozni a hálózati forgalmat"
+  },
+  "lighthouse-core/audits/metrics/estimated-input-latency.js | description": {
+    "message": "A becsült bemeneti késés annak a becsült értéke, hogy az alkalmazás mennyi idő alatt reagál – ezredmásodpercben (ms) megadva – a felhasználói interakciókra az oldalbetöltés legforgalmasabb 5 másodperces időkeretében. Ha a várakozási idő meghaladja az 50 ms-ot, a felhasználók lassúnak érezhetik az alkalmazást. [További információ](https://developers.google.com/web/tools/lighthouse/audits/estimated-input-latency)."
+  },
+  "lighthouse-core/audits/metrics/estimated-input-latency.js | title": {
+    "message": "Becsült bemeneti késés"
+  },
+  "lighthouse-core/audits/metrics/first-contentful-paint.js | description": {
+    "message": "Az első vizuális tartalomválasz azt az időpontot jelöli, amikor a rendszer megkezdi az első szöveg vagy kép megjelenítését. [További információ](https://developers.google.com/web/tools/lighthouse/audits/first-contentful-paint)."
+  },
+  "lighthouse-core/audits/metrics/first-contentful-paint.js | title": {
+    "message": "Első, tartalommal rendelkező leképezés"
+  },
+  "lighthouse-core/audits/metrics/first-cpu-idle.js | description": {
+    "message": "Az első processzor-üresjárat mutató az első olyan alkalmat jelöli, amikor az oldal főszálának aktivitása elég alacsonnyá vált ahhoz, hogy kezelni tudja a felhasználói interakciókat. [További információ](https://developers.google.com/web/tools/lighthouse/audits/first-interactive)."
+  },
+  "lighthouse-core/audits/metrics/first-cpu-idle.js | title": {
+    "message": "Első processzor-üresjárat"
+  },
+  "lighthouse-core/audits/metrics/first-meaningful-paint.js | description": {
+    "message": "Az első releváns vizuális válasz azt méri, hogy mikor válik láthatóvá az oldal elsődleges tartalma. [További információ](https://developers.google.com/web/tools/lighthouse/audits/first-meaningful-paint)."
+  },
+  "lighthouse-core/audits/metrics/first-meaningful-paint.js | title": {
+    "message": "Első releváns leképezés"
+  },
+  "lighthouse-core/audits/metrics/interactive.js | description": {
+    "message": "Az interaktivitásig eltelt idő az az idő, amely ahhoz szükséges, hogy az oldal teljesen interaktívvá váljon. [További információ](https://developers.google.com/web/tools/lighthouse/audits/consistently-interactive)."
+  },
+  "lighthouse-core/audits/metrics/interactive.js | title": {
+    "message": "Interaktivitásig eltelt idő"
+  },
+  "lighthouse-core/audits/metrics/max-potential-fid.js | description": {
+    "message": "Az első interakciótól számított maximális potenciális válaszkésés a leghosszabb feladat időtartama ezredmásodpercben. [További információ](https://developers.google.com/web/updates/2018/05/first-input-delay)."
+  },
+  "lighthouse-core/audits/metrics/max-potential-fid.js | title": {
+    "message": "Első interakciótól számított max. potenciális késés"
+  },
+  "lighthouse-core/audits/metrics/speed-index.js | description": {
+    "message": "A Sebességindex mutató azt jelzi, hogy az adott oldal tartalmai milyen gyorsan válnak láthatóvá. [További információ](https://developers.google.com/web/tools/lighthouse/audits/speed-index)."
+  },
+  "lighthouse-core/audits/metrics/speed-index.js | title": {
+    "message": "Sebességindex"
+  },
+  "lighthouse-core/audits/metrics/total-blocking-time.js | description": {
+    "message": "Az első vizuális tartalomválasz és az interaktivitásig eltelt idő közötti minden (50 ms-nál hosszabb feladatot jelentő) periódus időtartamának összege milliszekundumban kifejezve."
+  },
+  "lighthouse-core/audits/metrics/total-blocking-time.js | title": {
+    "message": "Blokkolás összideje"
+  },
+  "lighthouse-core/audits/network-rtt.js | description": {
+    "message": "A hálózati oda-vissza út ideje (round trip time, RTT) nagy hatással van a teljesítményre. Ha túl magas az RTT értéke valamelyik eredet esetében, az azt jelenti, hogy a felhasználóhoz közelebbi szerverek javíthatják a teljesítményt. [További információ](https://hpbn.co/primer-on-latency-and-bandwidth/)."
+  },
+  "lighthouse-core/audits/network-rtt.js | title": {
+    "message": "Oda-visszautak ideje a hálózaton"
+  },
+  "lighthouse-core/audits/network-server-latency.js | description": {
+    "message": "A szerverek várakozási ideje hatással lehet a webes teljesítményre. Túlterhelést vagy nem megfelelő back-end teljesítmény jelez, ha az eredetszerver várakozási ideje túl magas. [További információ](https://hpbn.co/primer-on-web-performance/#analyzing-the-resource-waterfall)."
+  },
+  "lighthouse-core/audits/network-server-latency.js | title": {
+    "message": "Várakozási idő a háttérszervereknél"
+  },
+  "lighthouse-core/audits/offline-start-url.js | description": {
+    "message": "A szolgáltató munkatársnak köszönhetően internetes alkalmazása előre nem látható hálózati körülmények mellett is megbízhatóan fog működni. [További információ](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)."
+  },
+  "lighthouse-core/audits/offline-start-url.js | failureTitle": {
+    "message": "A(z) `start_url` nem 200-as állapotkódot küld vissza, amikor offline állapotban van"
+  },
+  "lighthouse-core/audits/offline-start-url.js | title": {
+    "message": "A(z) `start_url` 200-as állapotkódot küld vissza, amikor offline állapotban van"
+  },
+  "lighthouse-core/audits/offline-start-url.js | warningCantStart": {
+    "message": "A Lighthouse nem tudta olvasni a manifest `start_url` elemét. Ennek következtében azt feltételezi, hogy a(z) `start_url` a dokumentum URL-címe. Hibaüzenet: „{manifestWarning}”."
+  },
+  "lighthouse-core/audits/performance-budget.js | columnOverBudget": {
+    "message": "Büdzsén kívül"
+  },
+  "lighthouse-core/audits/performance-budget.js | description": {
+    "message": "A hálózati kérések száma és mérete maradjon a megadott teljesítménybüdzsé célpontjai alatt. [További információ](https://developers.google.com/web/tools/lighthouse/audits/budgets)."
+  },
+  "lighthouse-core/audits/performance-budget.js | requestCountOverBudget": {
+    "message": "{count,plural, =1{1 kérés}other{# kérés}}"
+  },
+  "lighthouse-core/audits/performance-budget.js | title": {
+    "message": "Teljesítménybüdzsé"
+  },
+  "lighthouse-core/audits/redirects-http.js | description": {
+    "message": "Ha már beállította a HTTPS protokollt, gondoskodjon a teljes HTTP-forgalom HTTPS-re történő átirányításáról, hogy a biztonságos webes funkciók az összes felhasználó számára rendelkezésre álljanak. [További információ](https://developers.google.com/web/tools/lighthouse/audits/http-redirects-to-https)."
+  },
+  "lighthouse-core/audits/redirects-http.js | failureTitle": {
+    "message": "Nem irányítja át a HTTP-forgalmat HTTPS-re"
+  },
+  "lighthouse-core/audits/redirects-http.js | title": {
+    "message": "Átirányítja a HTTP-forgalmat HTTPS-re"
+  },
+  "lighthouse-core/audits/redirects.js | description": {
+    "message": "Az átirányítások további késlekedéssel hosszabbítják meg az oldalbetöltéshez szükséges időt. [További információ](https://developers.google.com/web/tools/lighthouse/audits/redirects)."
+  },
+  "lighthouse-core/audits/redirects.js | title": {
+    "message": "Kerülje a többszörös oldalátirányítást"
+  },
+  "lighthouse-core/audits/resource-summary.js | description": {
+    "message": "Az oldal forrásainak mennyiségére és méretére vonatkozó büdzséket budget.json fájl hozzáadásával határozhatja meg. [További információ](https://developers.google.com/web/tools/lighthouse/audits/budgets)."
+  },
+  "lighthouse-core/audits/resource-summary.js | displayValue": {
+    "message": "{requestCount,plural, =1{1 kérelem • {byteCount, number, bytes} KB}other{# kérelem • {byteCount, number, bytes} KB}}"
+  },
+  "lighthouse-core/audits/resource-summary.js | title": {
+    "message": "A kérések száma legyen kevés, az átvitelek pedig kis méretűek"
+  },
+  "lighthouse-core/audits/seo/canonical.js | description": {
+    "message": "A gyűjtőlinkek a keresési eredményként megjelenítendő URL-re tesznek javaslatot. [További információ](https://web.dev/canonical)."
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationConflict": {
+    "message": "Több ütköző URL ({urlList})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationDifferentDomain": {
+    "message": "Más domainre mutat ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationInvalid": {
+    "message": "Érvénytelen URL ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationPointsElsewhere": {
+    "message": "Másik `hreflang` helyre mutat ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationRelative": {
+    "message": "Relatív URL ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationRoot": {
+    "message": "A domain gyökér-URL-jére (a kezdőlapra) mutat egyenértékű tartalommal rendelkező oldal helyett"
+  },
+  "lighthouse-core/audits/seo/canonical.js | failureTitle": {
+    "message": "A dokumentumhoz nem tartozik érvényes `rel=canonical`"
+  },
+  "lighthouse-core/audits/seo/canonical.js | title": {
+    "message": "A dokumentum érvényes `rel=canonical` attribútumot tartalmaz"
+  },
+  "lighthouse-core/audits/seo/font-size.js | description": {
+    "message": "A 12 képpontnál kisebb betűméretek nehezen láthatók, ezért a mobilhasználóknak a szöveget elolvasásához fel kell nagyítaniuk a képernyő tartalmát. Törekedjen arra, hogy az oldal szövegének legalább 60%-a minimum 12 képpontos betűmérettel jelenjen meg. [További információ](https://web.dev/font-size)."
+  },
+  "lighthouse-core/audits/seo/font-size.js | displayValue": {
+    "message": "{decimalProportion, number, extendedPercent}-nyi olvasható szöveg"
+  },
+  "lighthouse-core/audits/seo/font-size.js | explanationViewport": {
+    "message": "A szöveg olvashatatlan, ugyanis a látható terület metacímkéje nincs optimalizálva a mobilképernyőkre"
+  },
+  "lighthouse-core/audits/seo/font-size.js | explanationWithDisclaimer": {
+    "message": "A szöveg {decimalProportion, number, extendedPercent}-a túl kicsi (az összes szöveg {decimalProportionVisited, number, extendedPercent}-a alapján)."
+  },
+  "lighthouse-core/audits/seo/font-size.js | failureTitle": {
+    "message": "A dokumentum olvashatatlan betűméreteket használ"
+  },
+  "lighthouse-core/audits/seo/font-size.js | title": {
+    "message": "A dokumentum olvasható betűméreteket tartalmaz"
+  },
+  "lighthouse-core/audits/seo/hreflang.js | description": {
+    "message": "A hreflang linkek azt mondják meg a keresőmotoroknak, hogy nyelvtől vagy régiótól függően az oldal melyik változatát kell megjeleníteniük a keresési találatokban. [További információ](https://web.dev/hreflang)."
+  },
+  "lighthouse-core/audits/seo/hreflang.js | failureTitle": {
+    "message": "A dokumentum nem rendelkezik érvényes `hreflang` attribútummal"
+  },
+  "lighthouse-core/audits/seo/hreflang.js | title": {
+    "message": "A dokumentum érvényes `hreflang` attribútumot tartalmaz"
+  },
+  "lighthouse-core/audits/seo/http-status-code.js | description": {
+    "message": "A sikertelenséget jelző HTTP-állapotkóddal rendelkező oldalak indexelése eredménytelen lehet. [További információ](https://web.dev/http-status-code)."
+  },
+  "lighthouse-core/audits/seo/http-status-code.js | failureTitle": {
+    "message": "Az oldal sikertelenséget jelző HTTP-állapotkóddal rendelkezik"
+  },
+  "lighthouse-core/audits/seo/http-status-code.js | title": {
+    "message": "Az oldal sikerességet jelző HTTP-állapotkóddal rendelkezik"
+  },
+  "lighthouse-core/audits/seo/is-crawlable.js | description": {
+    "message": "A keresőmotorok azokat az oldalakat nem tudják keresési eredményként megjeleníteni, amelyek feltérképezésére nincs engedélyük. [További információ](https://web.dev/is-crawable)."
+  },
+  "lighthouse-core/audits/seo/is-crawlable.js | failureTitle": {
+    "message": "Az oldal indexelését letiltották"
+  },
+  "lighthouse-core/audits/seo/is-crawlable.js | title": {
+    "message": "Az oldalnál nincs letiltva az indexelés"
+  },
+  "lighthouse-core/audits/seo/link-text.js | description": {
+    "message": "A leíró jellegű linkszövegek segítenek a keresőmotoroknak a tartalmak értelmezésében. [További információ](https://web.dev/link-text)."
+  },
+  "lighthouse-core/audits/seo/link-text.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 link található}other{# link található}}"
+  },
+  "lighthouse-core/audits/seo/link-text.js | failureTitle": {
+    "message": "A linkek nem rendelkeznek leíró jellegű szöveggel"
+  },
+  "lighthouse-core/audits/seo/link-text.js | title": {
+    "message": "A linkek leíró jellegű szöveggel rendelkeznek"
+  },
+  "lighthouse-core/audits/seo/manual/structured-data.js | description": {
+    "message": "Ellenőrizze a strukturált adatok érvényességét a [Strukturált adatok tesztelőeszköz](https://search.google.com/structured-data/testing-tool/) és a [Structured Data Linter](http://linter.structured-data.org/) segítségével. [További információ](https://web.dev/structured-data)."
+  },
+  "lighthouse-core/audits/seo/manual/structured-data.js | title": {
+    "message": "A strukturált adatok érvényesek"
+  },
+  "lighthouse-core/audits/seo/meta-description.js | description": {
+    "message": "Az oldaltartalom tömör összefoglalásának érdekében metaleírások szerepelhetnek a keresési eredményekben. [További információ](https://web.dev/meta-description)."
+  },
+  "lighthouse-core/audits/seo/meta-description.js | explanation": {
+    "message": "A Leírás mező üres."
+  },
+  "lighthouse-core/audits/seo/meta-description.js | failureTitle": {
+    "message": "A dokumentum nem rendelkezik metaleírással"
+  },
+  "lighthouse-core/audits/seo/meta-description.js | title": {
+    "message": "A dokumentum rendelkezik metaleírással"
+  },
+  "lighthouse-core/audits/seo/plugins.js | description": {
+    "message": "Sok eszköz korlátozza vagy nem támogatja a beépülő modulokat, a keresőmotorok pedig nem tudják indexelni a modulok által megjelenített tartalmakat. [További információ](https://web.dev/plugins)."
+  },
+  "lighthouse-core/audits/seo/plugins.js | failureTitle": {
+    "message": "A dokumentum beépülő modulokat használ"
+  },
+  "lighthouse-core/audits/seo/plugins.js | title": {
+    "message": "A dokumentum nem használ beépülő modulokat"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | description": {
+    "message": "Ha a robots.txt fájl formázása rossz, előfordulhat, hogy a feltérképező robotok nem tudják értelmezni, hogy Ön hogyan szeretné feltérképeztetni vagy indexeltetni a webhelyét. [További információ](https://web.dev/robots-txt)."
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | displayValueHttpBadCode": {
+    "message": "A robots.txt fájlra irányuló kérés a következő HTTP-állapotkóddal tért vissza: {statusCode}"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | displayValueValidationError": {
+    "message": "{itemCount,plural, =1{1 hiba található}other{# hiba található}}"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | explanation": {
+    "message": "A Lighthouse nem tudta letölteni a robots.txt fájlt"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | failureTitle": {
+    "message": "A robots.txt fájl nem érvényes"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | title": {
+    "message": "A robots.txt fájl érvényes"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | description": {
+    "message": "Az interaktív elemeknek (például a gomboknak és a linkeknek) elég nagynak kell lenniük (48 × 48 képpont), és elég helynek kell lennie közöttük, hogy könnyen rájuk lehessen koppintani a szomszédos elemek megérintése nélkül. [További információ](https://web.dev/tap-targets)."
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | displayValue": {
+    "message": "{decimalProportion, number, percent}-nyi megfelelően méretezett koppintható elem"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | explanationViewportMetaNotOptimized": {
+    "message": "A koppintási célok túl kicsik, ugyanis a látható terület metacímkéje nincs optimalizálva a mobilképernyőkre"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | failureTitle": {
+    "message": "A koppintási célok mérete nem megfelelő"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | overlappingTargetHeader": {
+    "message": "Átfedésben lévő cél"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | tapTargetHeader": {
+    "message": "Koppintási cél"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | title": {
+    "message": "A koppintási célok mérete megfelelő"
+  },
+  "lighthouse-core/audits/service-worker.js | description": {
+    "message": "A szolgáltató munkatárs elnevezésű technológia lehető teszi az alkalmazás számára a progresszív webes alkalmazások funkcióinak használatát. Ilyen funkció például az offline működés, a kezdőképernyőhöz való hozzáadás és a leküldött (push) értesítések. [További információ](https://developers.google.com/web/tools/lighthouse/audits/registered-service-worker)."
+  },
+  "lighthouse-core/audits/service-worker.js | explanationBadManifest": {
+    "message": "Az oldalt szolgáltató munkatárs vezérli, azonban a(z) `start_url` nem található, ugyanis nem sikerült a manifest érvényes JSON-ként való elemzése"
+  },
+  "lighthouse-core/audits/service-worker.js | explanationBadStartUrl": {
+    "message": "Az oldalt szolgáltató munkatárs vezérli, azonban a(z) `start_url` ({startUrl}) nincs a szolgáltató munkatárs hatókörében ({scopeUrl})"
+  },
+  "lighthouse-core/audits/service-worker.js | explanationNoManifest": {
+    "message": "Az oldalt szolgáltató munkatárs vezérli, azonban a(z) `start_url` nem található, mert nem sikerült lekérni a manifestfájlt."
+  },
+  "lighthouse-core/audits/service-worker.js | explanationOutOfScope": {
+    "message": "Ez a forrás rendelkezik legalább egy szolgáltató munkatárssal, azonban az oldal ({pageUrl}) nincs a hatókörükben."
+  },
+  "lighthouse-core/audits/service-worker.js | failureTitle": {
+    "message": "Nem regisztrál szolgáltató munkatársat, amely vezérli az oldalt és a(z) `start_url` URL-t"
+  },
+  "lighthouse-core/audits/service-worker.js | title": {
+    "message": "Olyan szolgáltató munkatársat regisztrál, amely vezérli az oldalt és a(z) `start_url` URL-t"
+  },
+  "lighthouse-core/audits/splash-screen.js | description": {
+    "message": "A saját témájú betöltési képernyő jó felhasználói élményt eredményez, amikor a kezdőképernyőről indítják el az alkalmazást. [További információ](https://developers.google.com/web/tools/lighthouse/audits/custom-splash-screen)."
+  },
+  "lighthouse-core/audits/splash-screen.js | failureTitle": {
+    "message": "Nincs beállítva egyéni betöltési képernyő"
+  },
+  "lighthouse-core/audits/splash-screen.js | title": {
+    "message": "Be van állítva egyéni betöltési képernyő"
+  },
+  "lighthouse-core/audits/themed-omnibox.js | description": {
+    "message": "A böngésző címsávjához megadható a webhelyhez illő téma. [További információ](https://developers.google.com/web/tools/lighthouse/audits/address-bar)."
+  },
+  "lighthouse-core/audits/themed-omnibox.js | failureTitle": {
+    "message": "Nem állítja be a téma színét a címsávon."
+  },
+  "lighthouse-core/audits/themed-omnibox.js | title": {
+    "message": "A téma színét állítja be a címsávon."
+  },
+  "lighthouse-core/audits/third-party-summary.js | columnBlockingTime": {
+    "message": "Fő szál akadályozásának időtartama"
+  },
+  "lighthouse-core/audits/third-party-summary.js | columnThirdParty": {
+    "message": "Harmadik fél"
+  },
+  "lighthouse-core/audits/third-party-summary.js | description": {
+    "message": "A harmadik felektől származó kódok jelentős hatással lehetnek a betöltés teljesítményére. Minél kevesebb harmadik féltől származó kódot használjon, és lehetőleg azután töltse be őket, hogy az oldal nagyrészt már betöltődött. [További információ](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/loading-third-party-javascript/)."
+  },
+  "lighthouse-core/audits/third-party-summary.js | displayValue": {
+    "message": "Harmadik féltől származó kód {timeInMs, number, milliseconds} ms-ig akadályozta a fő szál végrehajtását"
+  },
+  "lighthouse-core/audits/third-party-summary.js | failureTitle": {
+    "message": "Csökkentse a harmadik felek kódjai által kiváltott hatást"
+  },
+  "lighthouse-core/audits/third-party-summary.js | title": {
+    "message": "Harmadik féltől származó kód használata"
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | description": {
+    "message": "Az első bájtig eltelt idő azt mutatja, hogy a szerver mikor küldött választ. [További információ](https://developers.google.com/web/tools/lighthouse/audits/ttfb)."
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | displayValue": {
+    "message": "{timeInMs, number, milliseconds} ms a gyökérdokumentumhoz"
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | failureTitle": {
+    "message": "Csökkentse a szerver válaszidejét (TTFB)"
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | title": {
+    "message": "Alacsony a szerver válaszideje (TTFB)"
+  },
+  "lighthouse-core/audits/user-timings.js | columnDuration": {
+    "message": "Időtartam"
+  },
+  "lighthouse-core/audits/user-timings.js | columnStartTime": {
+    "message": "Kezdés ideje"
+  },
+  "lighthouse-core/audits/user-timings.js | columnType": {
+    "message": "Típus"
+  },
+  "lighthouse-core/audits/user-timings.js | description": {
+    "message": "Érdemes lehet felhasználnia alkalmazásában a User Timing API-t, amellyel valós használat során mért teljesítményadatokat kaphat a legfontosabb felhasználói műveletekről. [További információ](https://developers.google.com/web/tools/lighthouse/audits/user-timing)."
+  },
+  "lighthouse-core/audits/user-timings.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 felhasználói időmérés}other{# felhasználói időmérés}}"
+  },
+  "lighthouse-core/audits/user-timings.js | title": {
+    "message": "Felhasználói időzítőjelek és intézkedések"
+  },
+  "lighthouse-core/audits/uses-rel-preconnect.js | crossoriginWarning": {
+    "message": "Előcsatlakozási <link> található a(z) {securityOrigin} címre vonatkozóan, de a böngésző nem használta. Ellenőrizze, hogy megfelelően használja-e a(z) `crossorigin` attribútumot."
+  },
+  "lighthouse-core/audits/uses-rel-preconnect.js | description": {
+    "message": "Vegye fontolóra `preconnect` vagy `dns-prefetch` erőforrástipp hozzáadását, hogy korai kapcsolatokat hozhasson létre harmadik felekhez tartozó fontos forrásokkal. [További információ](https://developers.google.com/web/fundamentals/performance/resource-prioritization#preconnect)."
+  },
+  "lighthouse-core/audits/uses-rel-preconnect.js | title": {
+    "message": "Csatlakozzon előre a szükséges forrásokhoz"
+  },
+  "lighthouse-core/audits/uses-rel-preload.js | crossoriginWarning": {
+    "message": "Előtöltési <link> található a(z) {preloadURL} címre vonatkozóan, de a böngésző nem használta. Ellenőrizze, hogy megfelelően használja-e a(z) `crossorigin` attribútumot."
+  },
+  "lighthouse-core/audits/uses-rel-preload.js | description": {
+    "message": "Fontolja meg a(z) `<link rel=preload>` használatát, hogy prioritással tölthesse be azokat a forrásokat, melyeket az aktuális oldalbetöltés egyébként későbbre sorolt. [További információ](https://developers.google.com/web/tools/lighthouse/audits/preload)."
+  },
+  "lighthouse-core/audits/uses-rel-preload.js | title": {
+    "message": "Töltse be előre a kulcsfontosságú kéréseket"
+  },
+  "lighthouse-core/audits/viewport.js | description": {
+    "message": "Adjon hozzá `<meta name=\"viewport\">` címkét, amellyel mobilképernyőkre optimalizálhatja az alkalmazást. [További információ](https://developers.google.com/web/tools/lighthouse/audits/has-viewport-meta-tag)."
+  },
+  "lighthouse-core/audits/viewport.js | explanationNoTag": {
+    "message": "Nem található `<meta name=\"viewport\">` címke"
+  },
+  "lighthouse-core/audits/viewport.js | failureTitle": {
+    "message": "Nincs `width` vagy `initial-scale` beállítással rendelkező `<meta name=\"viewport\">` címkéje"
+  },
+  "lighthouse-core/audits/viewport.js | title": {
+    "message": "Van `width` vagy `initial-scale` beállítással rendelkező `<meta name=\"viewport\">` címkéje"
+  },
+  "lighthouse-core/audits/without-javascript.js | description": {
+    "message": "Az alkalmazásnak akkor is meg kellene jelenítenie valamilyen tartalmat, ha a JavaScript le van tiltva. Ez akár egy figyelmeztetés is lehet, mely szerint JavaScript szükséges az alkalmazás használatához. [További információ](https://developers.google.com/web/tools/lighthouse/audits/no-js)."
+  },
+  "lighthouse-core/audits/without-javascript.js | explanation": {
+    "message": "Az oldal törzsében meg kellene jelennie valamilyen tartalomnak, ha a szkriptek nem használhatók."
+  },
+  "lighthouse-core/audits/without-javascript.js | failureTitle": {
+    "message": "Nem biztosít tartalék tartalmat, ha a JavaScript nem használható"
+  },
+  "lighthouse-core/audits/without-javascript.js | title": {
+    "message": "Vannak benne tartalmak akkor is, amikor a JavaScript nem használható"
+  },
+  "lighthouse-core/audits/works-offline.js | description": {
+    "message": "Ha progresszív webes alkalmazást készít, fontolja meg szolgáltató munkatárs használatát, így alkalmazása offline állapotban is működni fog. [További információ](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)."
+  },
+  "lighthouse-core/audits/works-offline.js | failureTitle": {
+    "message": "A jelenlegi oldal nem 200-as állapotkódot küld vissza, amikor offline állapotban van"
+  },
+  "lighthouse-core/audits/works-offline.js | title": {
+    "message": "A jelenlegi oldal 200-as állapotkódot küld vissza, amikor offline állapotban van"
+  },
+  "lighthouse-core/audits/works-offline.js | warningNoLoad": {
+    "message": "Előfordulhat, hogy az oldal offline állapotban nem töltődik be, mert a teszt-URL-t ({requested}) a rendszer a következő címre irányította át: „{final}”. Próbálkozzon a második URL közvetlen ellenőrzésével."
+  },
+  "lighthouse-core/config/default-config.js | a11yAriaGroupDescription": {
+    "message": "Ezek a lehetőségek segíthetnek az ARIA alkalmazásban való használatának javításában, ami jobb felhasználói élményt biztosíthat a kisegítő technológiákat (például képernyőolvasót) használó személyeknek."
+  },
+  "lighthouse-core/config/default-config.js | a11yAriaGroupTitle": {
+    "message": "ARIA"
+  },
+  "lighthouse-core/config/default-config.js | a11yAudioVideoGroupDescription": {
+    "message": "Több lehetőség van, melyek révén alternatív tartalmakat biztosíthat videókhoz és hanganyagokhoz. Ezzel javíthatja a hallás- és látássérült felhasználók élményét."
+  },
+  "lighthouse-core/config/default-config.js | a11yAudioVideoGroupTitle": {
+    "message": "Hang- és videohívások"
+  },
+  "lighthouse-core/config/default-config.js | a11yBestPracticesGroupDescription": {
+    "message": "Itt a kisegítő lehetőségekkel kapcsolatos bevált módszereket találja."
+  },
+  "lighthouse-core/config/default-config.js | a11yBestPracticesGroupTitle": {
+    "message": "Bevált módszerek"
+  },
+  "lighthouse-core/config/default-config.js | a11yCategoryDescription": {
+    "message": "Ezek az ellenőrzések olyan lehetőségeket emelnek ki, melyekkel javíthatók a [webalkalmazás kisegítő lehetőségei](https://developers.google.com/web/fundamentals/accessibility). A kisegítő lehetőségekkel kapcsolatos problémáknak csak egy része észlelhető automatikusan, ezért a manuális ellenőrzés is ajánlott."
+  },
+  "lighthouse-core/config/default-config.js | a11yCategoryManualDescription": {
+    "message": "Az alábbiak automatikus tesztelőeszközzel nem ellenőrizhető területekre vonatkoznak. További információt a [kisegítő lehetőségek felülvizsgálatáról](https://developers.google.com/web/fundamentals/accessibility/how-to-review) szóló útmutatónkban talál."
+  },
+  "lighthouse-core/config/default-config.js | a11yCategoryTitle": {
+    "message": "Kisegítő lehetőségek"
+  },
+  "lighthouse-core/config/default-config.js | a11yColorContrastGroupDescription": {
+    "message": "Ezek a lehetőségek a tartalom olvashatóságát segítik."
+  },
+  "lighthouse-core/config/default-config.js | a11yColorContrastGroupTitle": {
+    "message": "Kontraszt"
+  },
+  "lighthouse-core/config/default-config.js | a11yLanguageGroupDescription": {
+    "message": "Ezek a lehetőségek a tartalom különböző országokban élő felhasználók általi értelmezését segítik."
+  },
+  "lighthouse-core/config/default-config.js | a11yLanguageGroupTitle": {
+    "message": "Nemzetközi megoldások és honosítás"
+  },
+  "lighthouse-core/config/default-config.js | a11yNamesLabelsGroupDescription": {
+    "message": "Ezek a lehetőségek az alkalmazás szemantikai jellemzőinek fejlesztését segítik. Javíthatják a kisegítő technológiákat (például képernyőolvasót) használó személyek felhasználói élményét."
+  },
+  "lighthouse-core/config/default-config.js | a11yNamesLabelsGroupTitle": {
+    "message": "Nevek és címkék"
+  },
+  "lighthouse-core/config/default-config.js | a11yNavigationGroupDescription": {
+    "message": "Több lehetőség is van a billentyűzettel való navigáció fejlesztésére az alkalmazásban."
+  },
+  "lighthouse-core/config/default-config.js | a11yNavigationGroupTitle": {
+    "message": "Navigáció"
+  },
+  "lighthouse-core/config/default-config.js | a11yTablesListsVideoGroupDescription": {
+    "message": "Ezek a lehetőségek a táblázatos és listaformátumú adatok olvasási élményét javítják olyan kisegítő technológiák használata esetén, mint a képernyőolvasó."
+  },
+  "lighthouse-core/config/default-config.js | a11yTablesListsVideoGroupTitle": {
+    "message": "Táblázatok és listák"
+  },
+  "lighthouse-core/config/default-config.js | bestPracticesCategoryTitle": {
+    "message": "Bevált módszerek"
+  },
+  "lighthouse-core/config/default-config.js | budgetsGroupDescription": {
+    "message": "A teljesítménybüdzsék elvárásokat határoznak meg a webhely teljesítményére vonatkozóan."
+  },
+  "lighthouse-core/config/default-config.js | budgetsGroupTitle": {
+    "message": "Büdzsék"
+  },
+  "lighthouse-core/config/default-config.js | diagnosticsGroupDescription": {
+    "message": "További információ alkalmazása teljesítményéről. Ezek a számok [nem befolyásolják közvetlenül](https://github.com/GoogleChrome/lighthouse/blob/d2ec9ffbb21de9ad1a0f86ed24575eda32c796f0/docs/scoring.md#how-are-the-scores-weighted) a teljesítménypontszámot."
+  },
+  "lighthouse-core/config/default-config.js | diagnosticsGroupTitle": {
+    "message": "Diagnosztika"
+  },
+  "lighthouse-core/config/default-config.js | firstPaintImprovementsGroupDescription": {
+    "message": "A teljesítmény legfontosabb szempontja az, hogy milyen gyorsan jelennek meg a képpontok a képernyőn. Legfontosabb mutatók: Első, tartalommal rendelkező leképezés, Első releváns leképezés"
+  },
+  "lighthouse-core/config/default-config.js | firstPaintImprovementsGroupTitle": {
+    "message": "Az első leképezést érintő fejlesztések"
+  },
+  "lighthouse-core/config/default-config.js | loadOpportunitiesGroupDescription": {
+    "message": "Ezek a javaslatok segíthetnek az oldalbetöltés felgyorsításában. Mindazonáltal a teljesítménypontszámra [nincs közvetlen hatásuk](https://github.com/GoogleChrome/lighthouse/blob/d2ec9ffbb21de9ad1a0f86ed24575eda32c796f0/docs/scoring.md#how-are-the-scores-weighted)."
+  },
+  "lighthouse-core/config/default-config.js | loadOpportunitiesGroupTitle": {
+    "message": "Lehetőségek"
+  },
+  "lighthouse-core/config/default-config.js | metricGroupTitle": {
+    "message": "Mutatók"
+  },
+  "lighthouse-core/config/default-config.js | overallImprovementsGroupDescription": {
+    "message": "Növelje az átfogó betöltési élményt annak érdekében, hogy az oldal reszponzív legyen, és a lehető legrövidebb időn belül használhatóvá váljon. Főbb mutatók: interaktivitásig eltelt idő, sebességindex"
+  },
+  "lighthouse-core/config/default-config.js | overallImprovementsGroupTitle": {
+    "message": "Átfogó javítások"
+  },
+  "lighthouse-core/config/default-config.js | performanceCategoryTitle": {
+    "message": "Teljesítmény"
+  },
+  "lighthouse-core/config/default-config.js | pwaCategoryDescription": {
+    "message": "Ezek az ellenőrzések különböző szempontokból érvényesítik a progresszív webes alkalmazásokat. [További információ](https://developers.google.com/web/progressive-web-apps/checklist)."
+  },
+  "lighthouse-core/config/default-config.js | pwaCategoryManualDescription": {
+    "message": "Ezek az ellenőrzések kötelezők a [progresszív webes alkalmazások alapvető ellenőrzőlistáján](https://developers.google.com/web/progressive-web-apps/checklist), de a Lighthouse nem végzi el őket automatikusan. Az ellenőrzések a kapott pontszámot nem befolyásolják, de fontos a manuális végrehajtásuk."
+  },
+  "lighthouse-core/config/default-config.js | pwaCategoryTitle": {
+    "message": "Progresszív webes alkalmazás"
+  },
+  "lighthouse-core/config/default-config.js | pwaFastReliableGroupTitle": {
+    "message": "Gyors és megbízható"
+  },
+  "lighthouse-core/config/default-config.js | pwaInstallableGroupTitle": {
+    "message": "Telepíthető"
+  },
+  "lighthouse-core/config/default-config.js | pwaOptimizedGroupTitle": {
+    "message": "PWA-optimalizálás"
+  },
+  "lighthouse-core/config/default-config.js | seoCategoryDescription": {
+    "message": "Ezekkel az ellenőrzésekkel győződhet meg arról, hogy oldala megfelelően optimalizált-e a keresőmotorok találati rangsorolásához. Vannak olyan egyéb, a Lighthouse által nem ellenőrzött tényezők is, amelyek befolyásolhatják a keresésekben elért helyezést. [További információ](https://support.google.com/webmasters/answer/35769)."
+  },
+  "lighthouse-core/config/default-config.js | seoCategoryManualDescription": {
+    "message": "Ha ezeket a további érvényesítőket is futtatja webhelyén, egyéb bevált SEO-módszereket is ellenőrizhet."
+  },
+  "lighthouse-core/config/default-config.js | seoCategoryTitle": {
+    "message": "Keresőoptimalizálás"
+  },
+  "lighthouse-core/config/default-config.js | seoContentGroupDescription": {
+    "message": "Formázza úgy a HTML-kódot, hogy a feltérképező robotok jobban megérthessék az alkalmazás tartalmait."
+  },
+  "lighthouse-core/config/default-config.js | seoContentGroupTitle": {
+    "message": "Tartalommal kapcsolatos bevált módszerek"
+  },
+  "lighthouse-core/config/default-config.js | seoCrawlingGroupDescription": {
+    "message": "A feltérképező robotoknak hozzáférésre van szükségük az alkalmazáshoz annak érdekében, hogy a webhely megjelenhessen a keresési találatok között."
+  },
+  "lighthouse-core/config/default-config.js | seoCrawlingGroupTitle": {
+    "message": "Feltérképezés és indexelés"
+  },
+  "lighthouse-core/config/default-config.js | seoMobileGroupDescription": {
+    "message": "Ha mobilbarát oldalakat készít, a tartalmak felnagyítás nélkül is olvashatók lesznek. [További információ](https://developers.google.com/search/mobile-sites/)."
+  },
+  "lighthouse-core/config/default-config.js | seoMobileGroupTitle": {
+    "message": "Mobilbarát"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnCacheTTL": {
+    "message": "Gyorsítótár-TTL"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnLocation": {
+    "message": "Hely"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnName": {
+    "message": "Név"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnRequests": {
+    "message": "Kérések"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnResourceType": {
+    "message": "Forrás típusa"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnSize": {
+    "message": "Méret"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnTimeSpent": {
+    "message": "Eltöltött idő"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnTransferSize": {
+    "message": "Átviteli méret"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnURL": {
+    "message": "URL"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnWastedBytes": {
+    "message": "Potenciális megtakarítás"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnWastedMs": {
+    "message": "Potenciális megtakarítás"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | displayValueByteSavings": {
+    "message": "Potenciálisan {wastedBytes, number, bytes} KB megtakarítás"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | displayValueMsSavings": {
+    "message": "Potenciálisan {wastedMs, number, milliseconds} ms megtakarítás"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | documentResourceType": {
+    "message": "Dokumentum"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | fontResourceType": {
+    "message": "Betűtípus"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | imageResourceType": {
+    "message": "Kép"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | mediaResourceType": {
+    "message": "Média"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | ms": {
+    "message": "{timeInMs, number, milliseconds} ms"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | otherResourceType": {
+    "message": "Egyéb"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | scriptResourceType": {
+    "message": "Szkript"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | seconds": {
+    "message": "{timeInMs, number, seconds} mp"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | stylesheetResourceType": {
+    "message": "Stíluslap"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | thirdPartyResourceType": {
+    "message": "Harmadik féltől származó"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | totalResourceType": {
+    "message": "Összes"
+  },
+  "lighthouse-core/lib/lh-error.js | badTraceRecording": {
+    "message": "Hiba történt az oldalbetöltés nyomának rögzítése során. Futtassa újra a Lighthouse szolgáltatást. ({errorCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | criTimeout": {
+    "message": "Időtúllépés a hibaelhárító protokoll kezdeti kapcsolatára való várakozás során."
+  },
+  "lighthouse-core/lib/lh-error.js | didntCollectScreenshots": {
+    "message": "A Chrome nem gyűjtött képernyőképeket az oldal betöltése során. Ellenőrizze, hogy van-e látható tartalom az oldalon, majd próbálja újra futtatni a Lighthouse szolgáltatást. ({errorCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | dnsFailure": {
+    "message": "A DNS-szerverek nem tudták értelmezni a megadott domaint."
+  },
+  "lighthouse-core/lib/lh-error.js | erroredRequiredArtifact": {
+    "message": "A szükséges {artifactName} begyűjtő hibába ütközött: {errorMessage}"
+  },
+  "lighthouse-core/lib/lh-error.js | internalChromeError": {
+    "message": "Belső Chrome-hiba történt. Indítsa újra a Chrome-ot, és próbálja újra futtatni a Lighthouse szolgáltatást."
+  },
+  "lighthouse-core/lib/lh-error.js | missingRequiredArtifact": {
+    "message": "A kötelező {artifactName} nem futott le."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailed": {
+    "message": "A Lighthouse nem tudta megfelelően betölteni a kért oldalt. Győződjön meg arról, hogy a helyes URL-t teszteli, és a szerver megfelelően válaszol az összes kérelemre."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedHung": {
+    "message": "A Lighthouse nem tudta megfelelően betölteni a kért URL-t, mert az oldal nem válaszol."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedInsecure": {
+    "message": "A megadott URL-hez nem tartozik érvényes biztonsági tanúsítvány. {securityMessages}"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedInterstitial": {
+    "message": "A Chrome közbeiktatott képernyő megjelenítésével megakadályozta az oldal betöltését. Ellenőrizze, hogy a helyes URL-t teszteli-e, és hogy a szerver minden kérésre megfelelően reagál-e."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedWithDetails": {
+    "message": "A Lighthouse nem tudta megbízhatóan betölteni a kért oldalt. Ellenőrizze, hogy a helyes URL-t teszteli-e, és hogy a szerver minden kérésre megfelelően reagál-e. (Részletek: {errorDetails})"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedWithStatusCode": {
+    "message": "A Lighthouse nem tudta megbízhatóan betölteni a kért oldalt. Ellenőrizze, hogy a helyes URL-t teszteli-e, és hogy a szerver minden kérésre megfelelően reagál-e. (Állapotkód: {statusCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadTookTooLong": {
+    "message": "Túl sokáig tartott az oldal betöltése. Csökkentse az oldalbetöltési időt a jelentésben leírt lehetőségeket követve, majd futtassa újra a Lighthouse-t. ({errorCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | protocolTimeout": {
+    "message": "A DevTools protokoll válaszára való várakozás túllépte a megengedett időt. (Módszer: {protocolMethod})"
+  },
+  "lighthouse-core/lib/lh-error.js | requestContentTimeout": {
+    "message": "A tartalom lekérése túllépte a megengedett időt"
+  },
+  "lighthouse-core/lib/lh-error.js | urlInvalid": {
+    "message": "Úgy tűnik, a megadott URL érvénytelen."
+  },
+  "lighthouse-core/report/html/renderer/util.js | auditGroupExpandTooltip": {
+    "message": "Ellenőrzések megjelenítése"
+  },
+  "lighthouse-core/report/html/renderer/util.js | crcInitialNavigation": {
+    "message": "Kezdeti navigáció"
+  },
+  "lighthouse-core/report/html/renderer/util.js | crcLongestDurationLabel": {
+    "message": "Kritikus elérési út maximális várakozási ideje:"
+  },
+  "lighthouse-core/report/html/renderer/util.js | errorLabel": {
+    "message": "Hiba!"
+  },
+  "lighthouse-core/report/html/renderer/util.js | errorMissingAuditInfo": {
+    "message": "Jelentési hiba: nincs ellenőrzési információ"
+  },
+  "lighthouse-core/report/html/renderer/util.js | labDataTitle": {
+    "message": "Laboradatok"
+  },
+  "lighthouse-core/report/html/renderer/util.js | lsPerformanceCategoryDescription": {
+    "message": "Az aktuális oldal [Lighthouse](https://developers.google.com/web/tools/lighthouse/)-elemzése emulált mobilhálózaton. Az értékek becsültek és változhatnak."
+  },
+  "lighthouse-core/report/html/renderer/util.js | manualAuditsGroupTitle": {
+    "message": "További manuálisan elemzendő elemek"
+  },
+  "lighthouse-core/report/html/renderer/util.js | notApplicableAuditsGroupTitle": {
+    "message": "Nem alkalmazható"
+  },
+  "lighthouse-core/report/html/renderer/util.js | opportunityResourceColumnLabel": {
+    "message": "Lehetőség"
+  },
+  "lighthouse-core/report/html/renderer/util.js | opportunitySavingsColumnLabel": {
+    "message": "Becsült megtakarítás"
+  },
+  "lighthouse-core/report/html/renderer/util.js | passedAuditsGroupTitle": {
+    "message": "Sikeresen teljesített ellenőrzések"
+  },
+  "lighthouse-core/report/html/renderer/util.js | snippetCollapseButtonLabel": {
+    "message": "Kódrészlet összecsukása"
+  },
+  "lighthouse-core/report/html/renderer/util.js | snippetExpandButtonLabel": {
+    "message": "Kódrészlet kibontása"
+  },
+  "lighthouse-core/report/html/renderer/util.js | thirdPartyResourcesLabel": {
+    "message": "Harmadik féltől származó források megjelenítése"
+  },
+  "lighthouse-core/report/html/renderer/util.js | toplevelWarningsMessage": {
+    "message": "A Lighthouse-futtatást befolyásoló problémák fordultak elő:"
+  },
+  "lighthouse-core/report/html/renderer/util.js | varianceDisclaimer": {
+    "message": "Az értékek becsültek és változhatnak. A teljesítménypontszám [csak ezeken a mutatókon alapszik](https://github.com/GoogleChrome/lighthouse/blob/d2ec9ffbb21de9ad1a0f86ed24575eda32c796f0/docs/scoring.md#how-are-the-scores-weighted)."
+  },
+  "lighthouse-core/report/html/renderer/util.js | warningAuditsGroupTitle": {
+    "message": "Átment az ellenőrzéseken – figyelmeztetésekkel"
+  },
+  "lighthouse-core/report/html/renderer/util.js | warningHeader": {
+    "message": "Figyelmeztetések: "
+  },
+  "stack-packs/packs/wordpress.js | efficient_animated_content": {
+    "message": "Fontolja meg a GIF-fájlok olyan szolgáltatóhoz való feltöltését, amely lehetővé teszi a fájlok HTML5-videóként történő beágyazását."
+  },
+  "stack-packs/packs/wordpress.js | offscreen_images": {
+    "message": "Telepítsen [lusta betöltést biztosító WordPress-bővítményt](https://wordpress.org/plugins/search/lazy+load/), amely lehetőséget ad a képernyőn kívül eső képek késleltetett betöltésére – vagy váltson olyan témára, amely rendelkezik ezzel a funkcióval. Fontolja meg az [AMP-bővítmény](https://wordpress.org/plugins/amp/) használatát is."
+  },
+  "stack-packs/packs/wordpress.js | render_blocking_resources": {
+    "message": "Számos WordPress-bővítmény segíthet a [kritikus elemek beágyazásában](https://wordpress.org/plugins/search/critical+css/) és a [kevésbé fontos források](https://wordpress.org/plugins/search/defer+css+javascript/) késleltetésében. Fontos, hogy az ilyen jellegű bővítmények által nyújtott optimalizációk működésképtelenné tehetik a témák vagy más bővítmények funkcióit, ezért valószínűleg módosítania kell majd a meglévő kódot."
+  },
+  "stack-packs/packs/wordpress.js | time_to_first_byte": {
+    "message": "A témák, a bővítmények és a szerver specifikációi mind befolyásolják a szerver válaszidejét. Érdemes lehet jobban optimalizált témát keresnie, megfelelő optimalizáló bővítményt választania és/vagy nagyobb teljesítményű szerverre váltania."
+  },
+  "stack-packs/packs/wordpress.js | total_byte_weight": {
+    "message": "Fontolja meg kivonatok megjelenítését a bejegyzéslistákban (pl. a more címkével), az oldalanként megjelenített bejegyzések számának csökkentését, a hosszabb bejegyzések több oldalra tördelését, valamint a hozzászólások lusta betöltését bővítmény segítségével."
+  },
+  "stack-packs/packs/wordpress.js | unminified_css": {
+    "message": "Számos [WordPress-bővítmény](https://wordpress.org/plugins/search/minify+css/) gyorsíthat webhelyén a stíluslapok egyesítésével, minimalizálásával és tömörítésével. Ha lehetséges, a minimalizálást érdemes buildfolyamat használatával előre elvégezni."
+  },
+  "stack-packs/packs/wordpress.js | unminified_javascript": {
+    "message": "Számos [WordPress-bővítmény](https://wordpress.org/plugins/search/minify+javascript/) gyorsíthat webhelyén a szkriptek egyesítésével, minimalizálásával és tömörítésével. Ha lehetséges, a minimalizálást érdemes buildfolyamat használatával előre elvégezni."
+  },
+  "stack-packs/packs/wordpress.js | unused_css_rules": {
+    "message": "Fontolja meg a nem használt CSS-t betöltő [WordPress-bővítmények](https://wordpress.org/plugins/) lecserélését, vagy számuk csökkentését. A felesleges CSS-t elhelyező bővítmények azonosításában a Chrome DevTools [kódlefedettség](https://developers.google.com/web/updates/2017/04/devtools-release-notes#coverage) eszköze is segíthet. A felelős téma vagy bővítmény a stíluslap URL-je alapján azonosítható. Keressen olyan bővítményeket, amelyeknek több stíluslapjában is sok piros szín szerepel a kódlefedettségi listán. Ideális esetben a bővítmények csak az oldalon ténylegesen használt stíluslapokat állítják sorba."
+  },
+  "stack-packs/packs/wordpress.js | unused_javascript": {
+    "message": "Fontolja meg a nem használt JavaScriptet betöltő [WordPress-bővítmények](https://wordpress.org/plugins/) lecserélését vagy számuk csökkentését. A felesleges JavaScriptet elhelyező bővítmények azonosításában a Chrome DevTools [kódlefedettség](https://developers.google.com/web/updates/2017/04/devtools-release-notes#coverage) eszköze is segíthet. A felelős téma vagy bővítmény a szkript URL-je alapján azonosítható. Keressen olyan bővítményeket, amelyeknek több szkriptjében is sok piros szín szerepel a kódlefedettségi listán. Ideális esetben a bővítmények csak az oldalon ténylegesen használt szkripteket állítják sorba."
+  },
+  "stack-packs/packs/wordpress.js | uses_long_cache_ttl": {
+    "message": "További információ a [WordPress böngészős gyorsítótárazásáról](https://codex.wordpress.org/WordPress_Optimization#Browser_Caching)."
+  },
+  "stack-packs/packs/wordpress.js | uses_optimized_images": {
+    "message": "Fontolja meg olyan [képoptimalizáló WordPress-bővítmény](https://wordpress.org/plugins/search/optimize+images/) használatát, mellyel minőségromlás nélkül tömöríthetők a képek."
+  },
+  "stack-packs/packs/wordpress.js | uses_responsive_images": {
+    "message": "A képeket közvetlenül a [Media Library](https://codex.wordpress.org/Media_Library_Screen) felületén töltse fel, hogy biztosan minden szükséges képméret rendelkezésre álljon, ezután pedig innen szúrja be őket, vagy használja az Image Widgetet, hogy biztosan az optimális képméreteket alkalmazza (a reszponzív töréspontok esetében is) `Full Size` képeket csak akkor használjon, ha méretük megfelel a felhasználás módjának. [További információ](https://codex.wordpress.org/Inserting_Images_into_Posts_and_Pages#Image_Size)."
+  },
+  "stack-packs/packs/wordpress.js | uses_text_compression": {
+    "message": "A szövegtömörítést a webszerver konfigurációjában engedélyezheti."
+  },
+  "stack-packs/packs/wordpress.js | uses_webp_images": {
+    "message": "Érdemes olyan [bővítményt](https://wordpress.org/plugins/search/convert+webp/) vagy szolgáltatást használnia, amely automatikusan az optimális formátumba konvertálja a feltöltött képeket."
+  }
+}
diff --git a/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/id.json b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/id.json
new file mode 100644
index 0000000..ef079ba
--- /dev/null
+++ b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/id.json
@@ -0,0 +1,1541 @@
+{
+  "lighthouse-core/audits/accessibility/accesskeys.js | description": {
+    "message": "Kunci akses memungkinkan pengguna memfokuskan bagian halaman dengan cepat. Untuk navigasi yang tepat, setiap kunci akses harus unik. [Pelajari lebih lanjut](https://web.dev/accesskeys/)."
+  },
+  "lighthouse-core/audits/accessibility/accesskeys.js | failureTitle": {
+    "message": "Nilai `[accesskey]` tidak unik."
+  },
+  "lighthouse-core/audits/accessibility/accesskeys.js | title": {
+    "message": "Nilai `[accesskey]` bersifat unik"
+  },
+  "lighthouse-core/audits/accessibility/aria-allowed-attr.js | description": {
+    "message": "Setiap ARIA `role` mendukung subset tertentu dari atribut `aria-*`. Membatalkan pencocokan ini akan membuat atribut `aria-*` menjadi tidak valid. [Pelajari lebih lanjut](https://web.dev/aria-allowed-attr/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-allowed-attr.js | failureTitle": {
+    "message": "Atribut `[aria-*]` tidak cocok dengan perannya"
+  },
+  "lighthouse-core/audits/accessibility/aria-allowed-attr.js | title": {
+    "message": "Atribut `[aria-*]` cocok dengan perannya"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-attr.js | description": {
+    "message": "Beberapa peran ARIA memiliki atribut wajib yang menjelaskan status elemen ke pembaca layar. [Pelajari lebih lanjut](https://web.dev/aria-required-attr/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-required-attr.js | failureTitle": {
+    "message": "`[role]` tidak memiliki semua atribut `[aria-*]` yang diperlukan"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-attr.js | title": {
+    "message": "`[role]` memiliki semua atribut `[aria-*]` yang diperlukan"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-children.js | description": {
+    "message": "Beberapa peran induk ARIA harus memuat peran turunan tertentu agar dapat menjalankan fungsi aksesibilitas yang diinginkan. [Pelajari lebih lanjut](https://web.dev/aria-required-children/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-required-children.js | failureTitle": {
+    "message": "Tidak ada elemen dengan `[role]` yang memerlukan `[role]` turunan tertentu."
+  },
+  "lighthouse-core/audits/accessibility/aria-required-children.js | title": {
+    "message": "Elemen dengan `[role]` yang memerlukan `[role]` turunan tertentu sudah ada."
+  },
+  "lighthouse-core/audits/accessibility/aria-required-parent.js | description": {
+    "message": "Beberapa peran turunan ARIA harus dimuat oleh peran induk tertentu agar dapat menjalankan fungsi aksesibilitas yang diinginkan dengan tepat. [Pelajari lebih lanjut](https://web.dev/aria-required-parent/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-required-parent.js | failureTitle": {
+    "message": "`[role]` tidak dimuat oleh elemen induk wajibnya"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-parent.js | title": {
+    "message": "`[role]` dimuat oleh elemen induk wajibnya"
+  },
+  "lighthouse-core/audits/accessibility/aria-roles.js | description": {
+    "message": "Peran ARIA harus memiliki nilai yang valid agar dapat menjalankan fungsi aksesibilitas yang diinginkan. [Pelajari lebih lanjut](https://web.dev/aria-roles/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-roles.js | failureTitle": {
+    "message": "Nilai `[role]` tidak valid"
+  },
+  "lighthouse-core/audits/accessibility/aria-roles.js | title": {
+    "message": "Nilai `[role]` valid"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr-value.js | description": {
+    "message": "Teknologi asistif, seperti pembaca layar, tidak dapat menafsirkan atribut ARIA dengan nilai yang tidak valid. [Pelajari lebih lanjut](https://web.dev/aria-valid-attr-value/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr-value.js | failureTitle": {
+    "message": "Atribut `[aria-*]` tidak memiliki nilai yang valid"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr-value.js | title": {
+    "message": "Atribut `[aria-*]` memiliki nilai yang valid"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr.js | description": {
+    "message": "Teknologi asistif, seperti pembaca layar, tidak dapat menafsirkan atribut ARIA dengan nama yang tidak valid. [Pelajari lebih lanjut](https://web.dev/aria-valid-attr/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr.js | failureTitle": {
+    "message": "Atribut `[aria-*]` tidak valid atau salah eja"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr.js | title": {
+    "message": "Atribut `[aria-*]` valid dan tidak salah eja"
+  },
+  "lighthouse-core/audits/accessibility/audio-caption.js | description": {
+    "message": "Teks membuat elemen audio mudah digunakan oleh pengguna yang menyandang gangguan pendengaran atau tunarungu, sehingga memberikan informasi penting seperti siapa yang berbicara, apa yang diucapkan, dan informasi non-lisan lainnya. [Pelajari lebih lanjut](https://web.dev/audio-caption/)."
+  },
+  "lighthouse-core/audits/accessibility/audio-caption.js | failureTitle": {
+    "message": "Elemen `<audio>` tidak memiliki elemen `<track>` dengan `[kind=\"captions\"]`."
+  },
+  "lighthouse-core/audits/accessibility/audio-caption.js | title": {
+    "message": "Elemen `<audio>` memuat elemen `<track>` dengan `[kind=\"captions\"]`"
+  },
+  "lighthouse-core/audits/accessibility/axe-audit.js | failingElementsHeader": {
+    "message": "Elemen yang Gagal"
+  },
+  "lighthouse-core/audits/accessibility/button-name.js | description": {
+    "message": "Jika tombol tidak memiliki nama yang dapat diakses, pembaca layar akan mengucapkannya sebagai \"tombol\", sehingga tidak dapat digunakan oleh pengguna yang mengandalkan pembaca layar. [Pelajari lebih lanjut](https://web.dev/button-name/)."
+  },
+  "lighthouse-core/audits/accessibility/button-name.js | failureTitle": {
+    "message": "Tombol tidak memiliki nama yang dapat diakses"
+  },
+  "lighthouse-core/audits/accessibility/button-name.js | title": {
+    "message": "Tombol memiliki nama yang dapat diakses"
+  },
+  "lighthouse-core/audits/accessibility/bypass.js | description": {
+    "message": "Dengan menambahkan cara untuk mengabaikan konten berulang, pengguna keyboard dapat membuka halaman dengan lebih efisien. [Pelajari lebih lanjut](https://web.dev/bypass/)."
+  },
+  "lighthouse-core/audits/accessibility/bypass.js | failureTitle": {
+    "message": "Halaman ini tidak memuat judul, link lewati, atau wilayah landmark"
+  },
+  "lighthouse-core/audits/accessibility/bypass.js | title": {
+    "message": "Halaman ini memuat judul, link lewati, atau wilayah landmark"
+  },
+  "lighthouse-core/audits/accessibility/color-contrast.js | description": {
+    "message": "Teks yang memiliki kontras rendah sulit atau tidak mungkin dibaca oleh kebanyakan pengguna. [Pelajari lebih lanjut](https://web.dev/color-contrast/)."
+  },
+  "lighthouse-core/audits/accessibility/color-contrast.js | failureTitle": {
+    "message": "Warna latar belakang dan latar depan tidak memiliki rasio kontras yang cukup."
+  },
+  "lighthouse-core/audits/accessibility/color-contrast.js | title": {
+    "message": "Warna latar belakang dan latar depan memiliki rasio kontras yang cukup"
+  },
+  "lighthouse-core/audits/accessibility/definition-list.js | description": {
+    "message": "Jika daftar definisi tidak di-markup dengan tepat, pembaca layar dapat menghasilkan output yang membingungkan atau tidak akurat. [Pelajari lebih lanjut](https://web.dev/definition-list/)."
+  },
+  "lighthouse-core/audits/accessibility/definition-list.js | failureTitle": {
+    "message": "`<dl>` tidak memuat grup `<dt>` dan `<dd>`, `<script>`, atau elemen `<template>` yang diurutkan dengan tepat."
+  },
+  "lighthouse-core/audits/accessibility/definition-list.js | title": {
+    "message": "`<dl>` hanya memuat grup `<dt>` dan `<dd>`, `<script>`, atau elemen `<template>` yang diurutkan dengan tepat."
+  },
+  "lighthouse-core/audits/accessibility/dlitem.js | description": {
+    "message": "Item daftar definisi (`<dt>` dan `<dd>`) harus tergabung dalam elemen `<dl>` induk untuk memastikan bahwa pembaca layar dapat mengucapkannya dengan tepat. [Pelajari lebih lanjut](https://web.dev/dlitem/)."
+  },
+  "lighthouse-core/audits/accessibility/dlitem.js | failureTitle": {
+    "message": "Item daftar definisi tidak tergabung dalam elemen `<dl>`"
+  },
+  "lighthouse-core/audits/accessibility/dlitem.js | title": {
+    "message": "Item daftar definisi tergabung dalam elemen `<dl>`"
+  },
+  "lighthouse-core/audits/accessibility/document-title.js | description": {
+    "message": "Judul ini memberi pengguna pembaca layar ringkasan halaman, dan pengguna mesin telusur sangat mengandalkannya untuk menentukan apakah halaman relevan dengan penelusurannya atau tidak. [Pelajari lebih lanjut](https://web.dev/document-title/)."
+  },
+  "lighthouse-core/audits/accessibility/document-title.js | failureTitle": {
+    "message": "Dokumen tidak memiliki elemen `<title>`"
+  },
+  "lighthouse-core/audits/accessibility/document-title.js | title": {
+    "message": "Dokumen memiliki elemen `<title>`"
+  },
+  "lighthouse-core/audits/accessibility/duplicate-id.js | description": {
+    "message": "Nilai atribut ID harus unik untuk mencegah instance lain terabaikan oleh teknologi asistif. [Pelajari lebih lanjut](https://web.dev/duplicate-id/)."
+  },
+  "lighthouse-core/audits/accessibility/duplicate-id.js | failureTitle": {
+    "message": "Atribut `[id]` di halaman ini tidak unik"
+  },
+  "lighthouse-core/audits/accessibility/duplicate-id.js | title": {
+    "message": "Atribut `[id]` di halaman ini unik"
+  },
+  "lighthouse-core/audits/accessibility/frame-title.js | description": {
+    "message": "Pengguna pembaca layar mengandalkan judul bingkai untuk menjelaskan isi bingkai. [Pelajari lebih lanjut](https://web.dev/frame-title/)."
+  },
+  "lighthouse-core/audits/accessibility/frame-title.js | failureTitle": {
+    "message": "Elemen `<frame>` atau `<iframe>` tidak memiliki judul"
+  },
+  "lighthouse-core/audits/accessibility/frame-title.js | title": {
+    "message": "Elemen `<frame>` atau `<iframe>` memiliki judul"
+  },
+  "lighthouse-core/audits/accessibility/html-has-lang.js | description": {
+    "message": "Jika halaman tidak menentukan atribut bahasa, pembaca layar akan mengasumsikan bahwa halaman menggunakan bahasa default yang dipilih pengguna saat menyiapkan pembaca layar. Jika halaman tidak dalam bahasa default, pembaca layar mungkin tidak dapat mengucapkan teks di halaman tersebut dengan benar. [Pelajari lebih lanjut](https://web.dev/html-has-lang/)."
+  },
+  "lighthouse-core/audits/accessibility/html-has-lang.js | failureTitle": {
+    "message": "Elemen `<html>` tidak memiliki atribut `[lang]`"
+  },
+  "lighthouse-core/audits/accessibility/html-has-lang.js | title": {
+    "message": "Elemen `<html>` memiliki atribut `[lang]`"
+  },
+  "lighthouse-core/audits/accessibility/html-lang-valid.js | description": {
+    "message": "Menentukan [bahasa BCP 47](https://www.w3.org/International/questions/qa-choosing-language-tags#question) yang valid akan membantu pembaca layar mengucapkan teks dengan tepat. [Pelajari lebih lanjut](https://web.dev/html-lang-valid/)."
+  },
+  "lighthouse-core/audits/accessibility/html-lang-valid.js | failureTitle": {
+    "message": "Elemen `<html>` tidak memiliki nilai yang valid untuk atribut `[lang]`-nya."
+  },
+  "lighthouse-core/audits/accessibility/html-lang-valid.js | title": {
+    "message": "Elemen `<html>` memiliki nilai yang valid untuk atribut `[lang]`-nya"
+  },
+  "lighthouse-core/audits/accessibility/image-alt.js | description": {
+    "message": "Elemen informatif harus memberikan teks alternatif yang singkat dan deskriptif. Elemen dekoratif dapat diabaikan dengan atribut alt kosong. [Pelajari lebih lanjut](https://web.dev/image-alt/)."
+  },
+  "lighthouse-core/audits/accessibility/image-alt.js | failureTitle": {
+    "message": "Elemen gambar tidak memiliki atribut `[alt]`"
+  },
+  "lighthouse-core/audits/accessibility/image-alt.js | title": {
+    "message": "Elemen halaman memiliki atribut `[alt]`"
+  },
+  "lighthouse-core/audits/accessibility/input-image-alt.js | description": {
+    "message": "Saat suatu gambar digunakan sebagai tombol `<input>`, menyediakan teks alternatif dapat membantu pengguna pembaca layar memahami fungsi tombol tersebut. [Pelajari lebih lanjut](https://web.dev/input-image-alt/)."
+  },
+  "lighthouse-core/audits/accessibility/input-image-alt.js | failureTitle": {
+    "message": "Elemen `<input type=\"image\">` tidak memiliki teks `[alt]`"
+  },
+  "lighthouse-core/audits/accessibility/input-image-alt.js | title": {
+    "message": "Elemen `<input type=\"image\">` memiliki teks `[alt]`"
+  },
+  "lighthouse-core/audits/accessibility/label.js | description": {
+    "message": "Label memastikan bahwa kontrol bentuk diucapkan dengan tepat oleh teknologi asistif, seperti pembaca layar. [Pelajari lebih lanjut](https://web.dev/label/)."
+  },
+  "lighthouse-core/audits/accessibility/label.js | failureTitle": {
+    "message": "Elemen formulir tidak memiliki label yang terkait"
+  },
+  "lighthouse-core/audits/accessibility/label.js | title": {
+    "message": "Elemen formulir memiliki label yang terkait"
+  },
+  "lighthouse-core/audits/accessibility/layout-table.js | description": {
+    "message": "Tabel yang digunakan untuk tujuan tata letak sebaiknya tidak mencakup elemen data, seperti elemen th atau teks atau atribut ringkasan karena hal ini dapat menyebabkan pengalaman yang membingungkan bagi pengguna pembaca layar. [Pelajari lebih lanjut](https://web.dev/layout-table/)."
+  },
+  "lighthouse-core/audits/accessibility/layout-table.js | failureTitle": {
+    "message": "Elemen `<table>` presentasional tidak menghindari penggunaan atribut `<th>`, `<caption>`, atau `[summary]`."
+  },
+  "lighthouse-core/audits/accessibility/layout-table.js | title": {
+    "message": "Elemen `<table>` yang bersifat presentasional menghindari penggunaan atribut `<th>`, `<caption>`, atau `[summary]`."
+  },
+  "lighthouse-core/audits/accessibility/link-name.js | description": {
+    "message": "Teks link (dan teks alternatif untuk gambar, saat digunakan sebagai link) yang mudah dilihat, unik, dan dapat difokuskan menyempurnakan pengalaman navigasi bagi pengguna pembaca layar. [Pelajari lebih lanjut](https://web.dev/link-name/)."
+  },
+  "lighthouse-core/audits/accessibility/link-name.js | failureTitle": {
+    "message": "Link tidak memiliki nama yang dapat dikenali"
+  },
+  "lighthouse-core/audits/accessibility/link-name.js | title": {
+    "message": "Link memiliki nama yang dapat dikenali"
+  },
+  "lighthouse-core/audits/accessibility/list.js | description": {
+    "message": "Pembaca layar memiliki cara tertentu untuk membacakan daftar. Memastikan struktur daftar dengan tepat akan membantu output pembaca layar. [Pelajari lebih lanjut](https://web.dev/list/)."
+  },
+  "lighthouse-core/audits/accessibility/list.js | failureTitle": {
+    "message": "Daftar tidak hanya berisi elemen `<li>` dan skrip yang mendukung elemen (`<script>` dan `<template>`)."
+  },
+  "lighthouse-core/audits/accessibility/list.js | title": {
+    "message": "Daftar hanya memuat elemen `<li>` dan skrip yang mendukung elemen (`<script>` dan `<template>`)."
+  },
+  "lighthouse-core/audits/accessibility/listitem.js | description": {
+    "message": "Pembaca layar mengharuskan item daftar (`<li>`) untuk dimuat dalam `<ul>` atau `<ol>` induk agar dapat diucapkan dengan tepat. [Pelajari lebih lanjut](https://web.dev/listitem/)."
+  },
+  "lighthouse-core/audits/accessibility/listitem.js | failureTitle": {
+    "message": "Daftar item (`<li>`) tidak dimuat dalam elemen induk `<ul>` atau `<ol>`."
+  },
+  "lighthouse-core/audits/accessibility/listitem.js | title": {
+    "message": "Item daftar (`<li>`) dimuat dalam elemen induk `<ul>` atau `<ol>`"
+  },
+  "lighthouse-core/audits/accessibility/meta-refresh.js | description": {
+    "message": "Pengguna tidak mengharapkan halaman dimuat ulang secara otomatis, karena tindakan tersebut akan memindahkan fokus kembali ke bagian atas halaman. Hal ini dapat menimbulkan pengalaman yang menjengkelkan atau membingungkan. [Pelajari lebih lanjut](https://web.dev/meta-refresh/)."
+  },
+  "lighthouse-core/audits/accessibility/meta-refresh.js | failureTitle": {
+    "message": "Dokumen menggunakan `<meta http-equiv=\"refresh\">`"
+  },
+  "lighthouse-core/audits/accessibility/meta-refresh.js | title": {
+    "message": "Dokumen tidak menggunakan `<meta http-equiv=\"refresh\">`"
+  },
+  "lighthouse-core/audits/accessibility/meta-viewport.js | description": {
+    "message": "Menonaktifkan zoom akan menimbulkan masalah bagi pengguna dengan gangguan penglihatan yang mengandalkan pembesaran layar untuk melihat konten halaman dengan tepat. [Pelajari lebih lanjut](https://web.dev/meta-viewport/)."
+  },
+  "lighthouse-core/audits/accessibility/meta-viewport.js | failureTitle": {
+    "message": "`[user-scalable=\"no\"]` digunakan dalam elemen `<meta name=\"viewport\">` atau atribut `[maximum-scale]` kurang dari 5."
+  },
+  "lighthouse-core/audits/accessibility/meta-viewport.js | title": {
+    "message": "`[user-scalable=\"no\"]` tidak digunakan dalam elemen `<meta name=\"viewport\">` dan atribut `[maximum-scale]` tidak kurang dari 5."
+  },
+  "lighthouse-core/audits/accessibility/object-alt.js | description": {
+    "message": "Pembaca layar tidak dapat menerjemahkan konten yang bukan teks. Menambahkan teks alternatif ke elemen `<object>` membantu pembaca layar menyampaikan makna kepada pengguna. [Pelajari lebih lanjut](https://web.dev/object-alt/)."
+  },
+  "lighthouse-core/audits/accessibility/object-alt.js | failureTitle": {
+    "message": "Elemen `<object>` tidak memiliki teks `[alt]`"
+  },
+  "lighthouse-core/audits/accessibility/object-alt.js | title": {
+    "message": "Elemen `<object>` memiliki teks `[alt]`"
+  },
+  "lighthouse-core/audits/accessibility/tabindex.js | description": {
+    "message": "Nilai yang lebih besar dari 0 menunjukkan pengurutan navigasi eksplisit. Walaupun secara teknis valid, hal ini sering menciptakan pengalaman yang membingungkan bagi pengguna yang mengandalkan teknologi asistif. [Pelajari lebih lanjut](https://web.dev/tabindex/)."
+  },
+  "lighthouse-core/audits/accessibility/tabindex.js | failureTitle": {
+    "message": "Beberapa elemen memiliki nilai `[tabindex]` yang lebih besar dari 0"
+  },
+  "lighthouse-core/audits/accessibility/tabindex.js | title": {
+    "message": "Tidak ada elemen yang memiliki nilai `[tabindex]` lebih besar dari 0"
+  },
+  "lighthouse-core/audits/accessibility/td-headers-attr.js | description": {
+    "message": "Pembaca layar memiliki fitur yang memudahkan navigasi tabel. Memastikan sel `<td>` yang menggunakan atribut `[headers]` hanya merujuk ke sel lain dalam tabel yang sama dapat menyempurnakan pengalaman bagi pengguna pembaca layar. [Pelajari lebih lanjut](https://web.dev/td-headers-attr/)."
+  },
+  "lighthouse-core/audits/accessibility/td-headers-attr.js | failureTitle": {
+    "message": "Sel dalam elemen `<table>` yang menggunakan atribut `[headers]` merujuk ke sel lain dalam tabel yang sama."
+  },
+  "lighthouse-core/audits/accessibility/td-headers-attr.js | title": {
+    "message": "Sel di elemen `<table>` yang menggunakan atribut `[headers]` hanya merujuk ke sel lain dari tabel yang sama."
+  },
+  "lighthouse-core/audits/accessibility/th-has-data-cells.js | description": {
+    "message": "Pembaca layar memiliki fitur yang memudahkan navigasi tabel. Memastikan header tabel selalu merujuk ke sekumpulan sel dapat menyempurnakan pengalaman bagi pengguna pembaca layar. [Pelajari lebih lanjut](https://web.dev/th-has-data-cells/)."
+  },
+  "lighthouse-core/audits/accessibility/th-has-data-cells.js | failureTitle": {
+    "message": "Elemen `<th>` dan elemen dengan `[role=\"columnheader\"/\"rowheader\"]` tidak memiliki sel data yang dideskripsikannya."
+  },
+  "lighthouse-core/audits/accessibility/th-has-data-cells.js | title": {
+    "message": "Elemen `<th>` dan elemen dengan `[role=\"columnheader\"/\"rowheader\"]` memiliki sel data yang dideskripsikan."
+  },
+  "lighthouse-core/audits/accessibility/valid-lang.js | description": {
+    "message": "Menentukan [bahasa BCP 47](https://www.w3.org/International/questions/qa-choosing-language-tags#question) yang valid pada elemen membantu memastikan bahwa teks diucapkan dengan benar oleh pembaca layar. [Pelajari lebih lanjut](https://web.dev/valid-lang/)."
+  },
+  "lighthouse-core/audits/accessibility/valid-lang.js | failureTitle": {
+    "message": "Atribut `[lang]` tidak memiliki nilai yang valid"
+  },
+  "lighthouse-core/audits/accessibility/valid-lang.js | title": {
+    "message": "Atribut `[lang]` memiliki nilai yang valid"
+  },
+  "lighthouse-core/audits/accessibility/video-caption.js | description": {
+    "message": "Video yang menyediakan teks akan memudahkan pengguna yang menyandang gangguan pendengaran dan tunarungu untuk mengakses informasinya. [Pelajari lebih lanjut](https://web.dev/video-caption/)."
+  },
+  "lighthouse-core/audits/accessibility/video-caption.js | failureTitle": {
+    "message": "Elemen `<video>` tidak memuat elemen `<track>` dengan `[kind=\"captions\"]`."
+  },
+  "lighthouse-core/audits/accessibility/video-caption.js | title": {
+    "message": "Elemen `<video>` memuat elemen `<track>` dengan `[kind=\"captions\"]`"
+  },
+  "lighthouse-core/audits/accessibility/video-description.js | description": {
+    "message": "Deskripsi audio memberikan informasi yang relevan untuk video yang tidak dapat diberikan melalui dialog, seperti ekspresi wajah dan adegan. [Pelajari lebih lanjut](https://web.dev/video-description/)."
+  },
+  "lighthouse-core/audits/accessibility/video-description.js | failureTitle": {
+    "message": "Elemen `<video>` tidak memuat elemen `<track>` dengan `[kind=\"description\"]`."
+  },
+  "lighthouse-core/audits/accessibility/video-description.js | title": {
+    "message": "Elemen `<video>` memuat elemen `<track>` dengan `[kind=\"description\"]`"
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | description": {
+    "message": "Untuk tampilan ideal pada iOS saat pengguna menambahkan progressive web app ke layar utama, tentukan `apple-touch-icon`. Ikon harus mengarah ke PNG persegi 192 piksel (atau 180 piksel) yang tidak transparan. [Pelajari Lebih Lanjut](https://developers.google.com/web/fundamentals/design-and-ux/browser-customization/)."
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | failureTitle": {
+    "message": "Tidak menyediakan `apple-touch-icon` yang valid"
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | precomposedWarning": {
+    "message": "`apple-touch-icon-precomposed` sudah usang; `apple-touch-icon` dipilih."
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | title": {
+    "message": "Memberikan `apple-touch-icon` yang valid"
+  },
+  "lighthouse-core/audits/bootup-time.js | chromeExtensionsWarning": {
+    "message": "Ekstensi Chrome berpengaruh negatif terhadap performa pemuatan halaman ini. Coba audit halaman dalam mode samaran atau dari profil Chrome tanpa ekstensi."
+  },
+  "lighthouse-core/audits/bootup-time.js | columnScriptEval": {
+    "message": "Evaluasi Skrip"
+  },
+  "lighthouse-core/audits/bootup-time.js | columnScriptParse": {
+    "message": "Penguraian Skrip"
+  },
+  "lighthouse-core/audits/bootup-time.js | columnTotal": {
+    "message": "Waktu CPU Total"
+  },
+  "lighthouse-core/audits/bootup-time.js | description": {
+    "message": "Sebaiknya kurangi waktu yang dihabiskan untuk mengurai, mengompilasi, dan mengeksekusi JS. Coba kirim payload JS yang lebih kecil untuk membantu mengurangi waktu. [Pelajari lebih lanjut](https://developers.google.com/web/tools/lighthouse/audits/bootup)."
+  },
+  "lighthouse-core/audits/bootup-time.js | failureTitle": {
+    "message": "Mengurangi waktu eksekusi JavaScript"
+  },
+  "lighthouse-core/audits/bootup-time.js | title": {
+    "message": "Waktu eksekusi JavaScript"
+  },
+  "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | description": {
+    "message": "GIF berukuran besar tidak efisien untuk menayangkan konten animasi. Sebaiknya gunakan video MPEG4/WebM sebagai animasi dan PNG/WebP sebagai gambar statis untuk menggantikan GIF guna menghemat byte jaringan. [Pelajari lebih lanjut](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/replace-animated-gifs-with-video/)"
+  },
+  "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | title": {
+    "message": "Gunakan format video untuk konten animasi"
+  },
+  "lighthouse-core/audits/byte-efficiency/offscreen-images.js | description": {
+    "message": "Sebaiknya lakukan pemuatan lambat di balik layar dan gambar tersembunyi setelah semua resource kritis selesai dimuat guna mengurangi waktu untuk interaktif. [Pelajari lebih lanjut](https://developers.google.com/web/tools/lighthouse/audits/offscreen-images)."
+  },
+  "lighthouse-core/audits/byte-efficiency/offscreen-images.js | title": {
+    "message": "Tunda gambar di balik layar"
+  },
+  "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | description": {
+    "message": "Resource memblokir first paint halaman. Sebaiknya kirim inline JS/CSS kritis dan tunda semua JS/gaya yang tidak kritis. [Pelajari lebih lanjut](https://developers.google.com/web/tools/lighthouse/audits/blocking-resources)."
+  },
+  "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | title": {
+    "message": "Hilangkan resource yang memblokir render"
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | description": {
+    "message": "Payload jaringan yang besar menimbulkan biaya yang tinggi bagi pengguna dan berkorelasi erat dengan waktu pemuatan yang lama. [Pelajari lebih lanjut](https://developers.google.com/web/tools/lighthouse/audits/network-payloads)."
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | displayValue": {
+    "message": "Total ukuran adalah {totalBytes, number, bytes} KB"
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | failureTitle": {
+    "message": "Menghindari payload jaringan yang sangat besar"
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | title": {
+    "message": "Menghindari payload jaringan yang sangat besar"
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-css.js | description": {
+    "message": "Meminifikasi file CSS dapat mengurangi ukuran payload jaringan. [Pelajari lebih lanjut](https://developers.google.com/web/tools/lighthouse/audits/minify-css)."
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-css.js | title": {
+    "message": "Kecilkan CSS"
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | description": {
+    "message": "Meminifikasi file JavaScript dapat mengurangi ukuran payload dan waktu penguraian skrip. [Pelajari lebih lanjut](https://developers.google.com/speed/docs/insights/MinifyResources)."
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | title": {
+    "message": "Kecilkan ukuran JavaScript"
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | description": {
+    "message": "Hapus aturan yang tidak berlaku dari stylesheet dan tunda pemuatan CSS yang tidak digunakan untuk konten paruh atas, guna mengurangi byte yang tidak perlu yang digunakan oleh aktivitas jaringan. [Pelajari lebih lanjut](https://developers.google.com/web/tools/lighthouse/audits/unused-css)."
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | title": {
+    "message": "Hapus CSS yang tidak digunakan"
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-javascript.js | description": {
+    "message": "Menghapus JavaScript yang tidak digunakan untuk mengurangi byte yang digunakan oleh aktivitas jaringan."
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-javascript.js | title": {
+    "message": "Hapus JavaScript yang tidak digunakan"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | description": {
+    "message": "Durasi cache yang panjang dapat mempercepat kunjungan berulang ke halaman Anda. [Pelajari lebih lanjut](https://developers.google.com/web/tools/lighthouse/audits/cache-policy)."
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 resource ditemukan}other{# resource ditemukan}}"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | failureTitle": {
+    "message": "Tayangkan aset statis dengan kebijakan cache yang efisien"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | title": {
+    "message": "Menggunakan kebijakan cache yang efisien pada aset statis"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | description": {
+    "message": "Gambar yang dioptimalkan dimuat lebih cepat dan menghabiskan lebih sedikit data seluler. [Pelajari lebih lanjut](https://developers.google.com/web/tools/lighthouse/audits/optimize-images)."
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | title": {
+    "message": "Enkode gambar secara efisien"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | description": {
+    "message": "Menayangkan gambar yang berukuran sesuai untuk menghemat kuota dan meningkatkan waktu pemuatan. [Pelajari lebih lanjut](https://developers.google.com/web/tools/lighthouse/audits/oversized-images)."
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | title": {
+    "message": "Ubah ukuran gambar dengan tepat"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | description": {
+    "message": "Resource berbasis teks harus ditayangkan dengan kompresi (gzip, deflate, atau brotli) untuk meminimalkan total byte jaringan. [Pelajari lebih lanjut](https://developers.google.com/web/tools/lighthouse/audits/text-compression)."
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | title": {
+    "message": "Aktifkan kompresi teks"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | description": {
+    "message": "Format gambar seperti JPEG 2000, JPEG XR, dan WebP biasanya memberikan kompresi yang lebih baik daripada PNG atau JPEG, sehingga download lebih cepat dan konsumsi data lebih kecil. [Pelajari lebih lanjut](https://developers.google.com/web/tools/lighthouse/audits/webp)."
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | title": {
+    "message": "Tayangkan gambar dalam format generasi berikutnya"
+  },
+  "lighthouse-core/audits/content-width.js | description": {
+    "message": "Jika lebar konten aplikasi Anda tidak cocok dengan lebar area pandang, aplikasi mungkin tidak dioptimalkan untuk layar perangkat seluler. [Pelajari lebih lanjut](https://developers.google.com/web/tools/lighthouse/audits/content-sized-correctly-for-viewport)."
+  },
+  "lighthouse-core/audits/content-width.js | explanation": {
+    "message": "Ukuran area pandang {innerWidth} piksel tidak cocok dengan ukuran jendela {outerWidth} piksel."
+  },
+  "lighthouse-core/audits/content-width.js | failureTitle": {
+    "message": "Ukuran konten untuk area pandang tidak tepat"
+  },
+  "lighthouse-core/audits/content-width.js | title": {
+    "message": "Ukuran konten untuk area pandang sudah tepat"
+  },
+  "lighthouse-core/audits/critical-request-chains.js | description": {
+    "message": "Rantai Permintaan Penting di bawah menampilkan resource apa saja yang dimuat dengan prioritas tinggi. Sebaiknya kurangi panjang rantai, kurangi ukuran download resource, atau tunda download resource yang tidak penting untuk mempercepat pemuatan halaman. [Pelajari lebih lanjut](https://developers.google.com/web/tools/lighthouse/audits/critical-request-chains)."
+  },
+  "lighthouse-core/audits/critical-request-chains.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 rantai ditemukan}other{# rantai ditemukan}}"
+  },
+  "lighthouse-core/audits/critical-request-chains.js | title": {
+    "message": "Minimalkan Kedalaman Permintaan Penting"
+  },
+  "lighthouse-core/audits/deprecations.js | columnDeprecate": {
+    "message": "Penghentian/Peringatan"
+  },
+  "lighthouse-core/audits/deprecations.js | columnLine": {
+    "message": "Baris"
+  },
+  "lighthouse-core/audits/deprecations.js | description": {
+    "message": "API yang tidak digunakan lagi pada akhirnya akan dihapus dari browser. [Pelajari lebih lanjut](https://web.dev/deprecations)."
+  },
+  "lighthouse-core/audits/deprecations.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 peringatan ditemukan}other{# peringatan ditemukan}}"
+  },
+  "lighthouse-core/audits/deprecations.js | failureTitle": {
+    "message": "Menggunakan API yang tidak digunakan lagi"
+  },
+  "lighthouse-core/audits/deprecations.js | title": {
+    "message": "Menghindari API yang tidak digunakan lagi"
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | description": {
+    "message": "Cache Aplikasi tidak digunakan lagi. [Pelajari lebih lanjut](https://web.dev/appcache-manifest)."
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | displayValue": {
+    "message": "Menemukan \"{AppCacheManifest}\""
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | failureTitle": {
+    "message": "Menggunakan Cache Aplikasi"
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | title": {
+    "message": "Menghindari Cache Aplikasi"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | description": {
+    "message": "Menentukan doctype akan mencegah browser beralih ke quirks mode. [Pelajari lebih lanjut](https://web.dev/doctype)."
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationBadDoctype": {
+    "message": "Nama doctype harus berupa string huruf kecil `html`"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationNoDoctype": {
+    "message": "Dokumen harus berisi doctype"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationPublicId": {
+    "message": "PublicId diperkirakan menjadi string kosong"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationSystemId": {
+    "message": "SystemId diperkirakan menjadi string kosong"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | failureTitle": {
+    "message": "Halaman tidak memiliki doctype HTML sehingga memicu quirks mode"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | title": {
+    "message": "Halaman memiliki doctype HTML"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | columnElement": {
+    "message": "Elemen"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | columnStatistic": {
+    "message": "Statistik"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | columnValue": {
+    "message": "Nilai"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | description": {
+    "message": "Engineer browser merekomendasikan halaman yang berisi kurang dari ~ 1.500 elemen DOM. Ukuran yang pas adalah suatu kedalaman hierarki yang terdiri dari <32 elemen dan kurang dari 60 elemen turunan/induk. DOM yang besar dapat meningkatkan penggunaan memori, menyebabkan [penghitungan gaya](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations) yang lebih lama, dan menghasilkan [penyesuaian tata letak](https://developers.google.com/speed/articles/reflow) yang mahal. [Pelajari lebih lanjut](https://web.dev/dom-size)."
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 elemen}other{# elemen}}"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | failureTitle": {
+    "message": "Menghindari ukuran DOM yang berlebihan"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | statisticDOMDepth": {
+    "message": "Kedalaman DOM Maksimum"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | statisticDOMElements": {
+    "message": "Elemen DOM Total"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | statisticDOMWidth": {
+    "message": "Elemen Turunan Maksimum"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | title": {
+    "message": "Menghindari ukuran DOM yang berlebihan"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | columnRel": {
+    "message": "Rel"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | columnTarget": {
+    "message": "Target"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | description": {
+    "message": "Tambahkan `rel=\"noopener\"` atau `rel=\"noreferrer\"` ke link eksternal mana pun untuk menyempurnakan performa dan mencegah kerentanan keamanan. [Pelajari lebih lanjut](https://web.dev/external-anchors-use-rel-noopener)."
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | failureTitle": {
+    "message": "Link ke tujuan lintas asal tidak aman"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | title": {
+    "message": "Link ke tujuan lintas asal aman"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | warning": {
+    "message": "Tidak dapat menentukan tujuan untuk anchor ({anchorHTML}). Jika tidak digunakan sebagai hyperlink, sebaiknya hapus target=_blank."
+  },
+  "lighthouse-core/audits/dobetterweb/geolocation-on-start.js | description": {
+    "message": "Pengguna tidak percaya atau bingung dengan situs yang meminta lokasi mereka tanpa konteks. Sebaiknya kaitkan permintaan dengan tindakan pengguna. [Pelajari lebih lanjut](https://web.dev/geolocation-on-start)."
+  },
+  "lighthouse-core/audits/dobetterweb/geolocation-on-start.js | failureTitle": {
+    "message": "Meminta izin geolokasi pada pemuatan halaman"
+  },
+  "lighthouse-core/audits/dobetterweb/geolocation-on-start.js | title": {
+    "message": "Menghindari meminta izin geolokasi pada pemuatan halaman"
+  },
+  "lighthouse-core/audits/dobetterweb/js-libraries.js | columnVersion": {
+    "message": "Versi"
+  },
+  "lighthouse-core/audits/dobetterweb/js-libraries.js | description": {
+    "message": "Semua library JavaScript front-end terdeteksi di halaman. [Pelajari lebih lanjut](https://web.dev/js-libraries)."
+  },
+  "lighthouse-core/audits/dobetterweb/js-libraries.js | title": {
+    "message": "Library JavaScript yang terdeteksi"
+  },
+  "lighthouse-core/audits/dobetterweb/no-document-write.js | description": {
+    "message": "Untuk pengguna dengan koneksi lambat, skrip eksternal secara dinamis dimasukkan melalui `document.write()` dapat menunda pemuatan halaman selama puluhan detik. [Pelajari lebih lanjut](https://web.dev/no-document-write)."
+  },
+  "lighthouse-core/audits/dobetterweb/no-document-write.js | failureTitle": {
+    "message": "Menggunakan `document.write()`"
+  },
+  "lighthouse-core/audits/dobetterweb/no-document-write.js | title": {
+    "message": "Menghindari `document.write()`"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | columnSeverity": {
+    "message": "Keparahan Tertinggi"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | columnVersion": {
+    "message": "Versi Library"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | columnVuln": {
+    "message": "Jumlah Kerentanan"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | description": {
+    "message": "Beberapa skrip pihak ketiga dapat berisi kerentanan keamanan umum yang mudah diidentifikasi dan dimanfaatkan oleh penyerang. [Pelajari lebih lanjut](https://web.dev/no-vulnerable-libraries)."
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 kerentanan terdeteksi}other{# kerentanan terdeteksi}}"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | failureTitle": {
+    "message": "Menyertakan library JavaScript front-end yang memiliki kerentanan keamanan umum"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | rowSeverityHigh": {
+    "message": "Tinggi"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | rowSeverityLow": {
+    "message": "Rendah"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | rowSeverityMedium": {
+    "message": "Sedang"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | title": {
+    "message": "Menghindari library JavaScript front-end yang memiliki kerentanan keamanan umum"
+  },
+  "lighthouse-core/audits/dobetterweb/notification-on-start.js | description": {
+    "message": "Pengguna tidak percaya atau bingung dengan situs yang meminta untuk mengirim pemberitahuan tanpa konteks. Sebaiknya kaitkan permintaan dengan gestur pengguna. [Pelajari lebih lanjut](https://web.dev/notification-on-start)."
+  },
+  "lighthouse-core/audits/dobetterweb/notification-on-start.js | failureTitle": {
+    "message": "Meminta izin notifikasi pada pemuatan halaman"
+  },
+  "lighthouse-core/audits/dobetterweb/notification-on-start.js | title": {
+    "message": "Menghindari meminta izin notifikasi pada pemuatan halaman"
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | columnFailingElem": {
+    "message": "Elemen yang Gagal"
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | description": {
+    "message": "Mencegah menempelkan sandi akan merusak kebijakan keamanan yang baik. [Pelajari lebih lanjut](https://web.dev/password-inputs-can-be-pasted-into)."
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | failureTitle": {
+    "message": "Mencegah pengguna menempelkan sesuatu ke kolom sandi."
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | title": {
+    "message": "Mengizinkan pengguna menempelkan sesuatu ke kolom sandi"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | columnProtocol": {
+    "message": "Protokol"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | description": {
+    "message": "HTTP/2 menawarkan banyak manfaat dibandingkan HTTP/1.1, termasuk header biner, multiplexing, dan push server. [Pelajari lebih lanjut](https://web.dev/uses-http2)."
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 permintaan tidak dilayani melalui HTTP/2}other{# permintaan tidak dilayani melalui HTTP/2}}"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | failureTitle": {
+    "message": "Tidak menggunakan HTTP/2 untuk semua resourcenya"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | title": {
+    "message": "Menggunakan HTTP/2 untuk resource miliknya sendiri"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-passive-event-listeners.js | description": {
+    "message": "Sebaiknya tandai sentuhan Anda dan pemroses peristiwa gulir sebagai `passive` untuk menyempurnakan performa scroll halaman Anda. [Pelajari lebih lanjut](https://web.dev/uses-passive-event-listeners)."
+  },
+  "lighthouse-core/audits/dobetterweb/uses-passive-event-listeners.js | failureTitle": {
+    "message": "Tidak menggunakan pemroses pasif untuk menyempurnakan performa scroll"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-passive-event-listeners.js | title": {
+    "message": "Menggunakan pemroses pasif untuk menyempurnakan performa scroll"
+  },
+  "lighthouse-core/audits/errors-in-console.js | columnDesc": {
+    "message": "Deskripsi"
+  },
+  "lighthouse-core/audits/errors-in-console.js | description": {
+    "message": "Error yang dicatat di konsol menunjukkan masalah yang belum terselesaikan. Error dapat berasal dari permintaan jaringan yang gagal dan masalah browser lainnya. [Pelajari lebih lanjut](https://web.dev/errors-in-console)"
+  },
+  "lighthouse-core/audits/errors-in-console.js | failureTitle": {
+    "message": "Error browser dicatat di konsol"
+  },
+  "lighthouse-core/audits/errors-in-console.js | title": {
+    "message": "Tidak ada error browser yang dicatat ke konsol"
+  },
+  "lighthouse-core/audits/font-display.js | description": {
+    "message": "Memanfaatkan fitur CSS tampilan font untuk memastikan teks terlihat oleh pengguna saat font web sedang dimuat. [Pelajari lebih lanjut](https://developers.google.com/web/updates/2016/02/font-display)."
+  },
+  "lighthouse-core/audits/font-display.js | failureTitle": {
+    "message": "Pastikan teks tetap terlihat selama pemuatan font web"
+  },
+  "lighthouse-core/audits/font-display.js | title": {
+    "message": "Semua teks tetap terlihat selama pemuatan font web"
+  },
+  "lighthouse-core/audits/font-display.js | undeclaredFontURLWarning": {
+    "message": "Lighthouse tidak dapat secara otomatis memeriksa nilai tampilan font untuk URL berikut: {fontURL}."
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | columnActual": {
+    "message": "Rasio Tinggi Lebar (Aktual)"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | columnDisplayed": {
+    "message": "Rasio Tinggi Lebar (Ditampilkan)"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | description": {
+    "message": "Dimensi tampilan gambar harus cocok dengan rasio tinggi lebar natural. [Pelajari lebih lanjut](https://web.dev/image-aspect-ratio)."
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | failureTitle": {
+    "message": "Menampilkan gambar dengan rasio tinggi lebar yang salah"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | title": {
+    "message": "Menampilkan gambar dengan rasio tinggi lebar yang benar"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | warningCompute": {
+    "message": "Informasi ukuran gambar {url} tidak valid"
+  },
+  "lighthouse-core/audits/installable-manifest.js | description": {
+    "message": "Browser dapat secara proaktif meminta pengguna untuk menambahkan aplikasi Anda ke layar utama mereka sehingga interaksi menjadi lebih tinggi. [Pelajari lebih lanjut](https://developers.google.com/web/tools/lighthouse/audits/install-prompt)."
+  },
+  "lighthouse-core/audits/installable-manifest.js | failureTitle": {
+    "message": "Manifes aplikasi web tidak memenuhi persyaratan kemampuan penginstalan"
+  },
+  "lighthouse-core/audits/installable-manifest.js | title": {
+    "message": "Manifes aplikasi web memenuhi persyaratan kemampuan penginstalan"
+  },
+  "lighthouse-core/audits/is-on-https.js | columnInsecureURL": {
+    "message": "URL yang tidak aman"
+  },
+  "lighthouse-core/audits/is-on-https.js | description": {
+    "message": "Semua situs harus dilindungi dengan HTTPS, termasuk situs-situs yang tidak menangani data sensitif. HTTPS mencegah penyusup merusak atau mendengarkan komunikasi secara pasif antara aplikasi dan pengguna, serta merupakan prasyarat untuk HTTP/2 dan banyak API platform web baru. [Pelajari lebih lanjut](https://web.dev/is-on-https)."
+  },
+  "lighthouse-core/audits/is-on-https.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 permintaan tidak aman ditemukan}other{# permintaan tidak aman ditemukan}}"
+  },
+  "lighthouse-core/audits/is-on-https.js | failureTitle": {
+    "message": "Tidak menggunakan HTTPS"
+  },
+  "lighthouse-core/audits/is-on-https.js | title": {
+    "message": "Menggunakan HTTPS"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | description": {
+    "message": "Pemuatan halaman yang cepat melalui jaringan seluler menjamin pengalaman pengguna seluler yang baik. [Pelajari lebih lanjut](https://developers.google.com/web/tools/lighthouse/audits/fast-3g)."
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | displayValueText": {
+    "message": "Interaktif di {timeInMs, number, seconds} dtk"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | displayValueTextWithOverride": {
+    "message": "Interaktif di jaringan seluler tersimulasi pada {timeInMs, number, seconds} dtk"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | explanationLoadSlow": {
+    "message": "Pemuatan halaman terlalu lambat dan tidak interaktif selama 10 detik. Lihat peluang dan diagnostik dalam bagian \"Performa\" untuk mempelajari cara meningkatkan kecepatan pemuatan."
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | failureTitle": {
+    "message": "Pemuatan halaman tidak cukup cepat pada jaringan seluler"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | title": {
+    "message": "Pemuatan halaman cukup cepat pada jaringan seluler"
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | columnCategory": {
+    "message": "Kategori"
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | description": {
+    "message": "Pertimbangkan mengurangi waktu yang dihabiskan untuk mengurai, mengompilasi, dan mengeksekusi JS. Anda mungkin menemukan bahwa mengirim payload JS yang lebih kecil akan membantu mengurangi waktu."
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | failureTitle": {
+    "message": "Minimalkan pekerjaan thread utama"
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | title": {
+    "message": "Meminimalkan pekerjaan thread utama"
+  },
+  "lighthouse-core/audits/manual/pwa-cross-browser.js | description": {
+    "message": "Untuk menjangkau jumlah pengguna terbanyak, situs harus berjalan di seluruh browser utama. [Pelajari lebih lanjut](https://developers.google.com/web/progressive-web-apps/checklist#site-works-cross-browser)."
+  },
+  "lighthouse-core/audits/manual/pwa-cross-browser.js | title": {
+    "message": "Situs dapat berjalan lintas-browser"
+  },
+  "lighthouse-core/audits/manual/pwa-each-page-has-url.js | description": {
+    "message": "Pastikan halaman individu dapat dijadikan deep link melalui URL, dan URL tersebut unik agar dapat dibagikan di media sosial. [Pelajari lebih lanjut](https://developers.google.com/web/progressive-web-apps/checklist#each-page-has-a-url)."
+  },
+  "lighthouse-core/audits/manual/pwa-each-page-has-url.js | title": {
+    "message": "Setiap halaman memiliki URL"
+  },
+  "lighthouse-core/audits/manual/pwa-page-transitions.js | description": {
+    "message": "Transisi harus terasa cepat ketika Anda mengetuk-ngetuk, bahkan saat jaringan lambat, hal ini merupakan kunci performa yang komprehensif. [Pelajari lebih lanjut](https://developers.google.com/web/progressive-web-apps/checklist#page-transitions-dont-feel-like-they-block-on-the-network)."
+  },
+  "lighthouse-core/audits/manual/pwa-page-transitions.js | title": {
+    "message": "Transisi halaman sepertinya tidak diblokir di jaringan"
+  },
+  "lighthouse-core/audits/metrics/estimated-input-latency.js | description": {
+    "message": "Perkiraan Latensi Masukan adalah perkiraan durasi yang diperlukan aplikasi untuk merespons masukan pengguna, dalam milidetik, selama durasi 5 detik tersibuk saat pemuatan halaman. Jika latensi di atas 50 md, pengguna dapat menganggap aplikasi Anda lambat. [Pelajari lebih lanjut](https://developers.google.com/web/tools/lighthouse/audits/estimated-input-latency)."
+  },
+  "lighthouse-core/audits/metrics/estimated-input-latency.js | title": {
+    "message": "Perkiraan Latensi Masukan"
+  },
+  "lighthouse-core/audits/metrics/first-contentful-paint.js | description": {
+    "message": "First Contentful Paint menandai waktu saat teks atau gambar pertama di-paint. [Pelajari lebih lanjut](https://developers.google.com/web/tools/lighthouse/audits/first-contentful-paint)."
+  },
+  "lighthouse-core/audits/metrics/first-contentful-paint.js | title": {
+    "message": "First Contentful Paint"
+  },
+  "lighthouse-core/audits/metrics/first-cpu-idle.js | description": {
+    "message": "CPU Pertama Tidak Ada Aktivitas menandai waktu pertama kalinya thread utama halaman menjadi agak tenang untuk menangani masukan. [Pelajari lebih lanjut](https://developers.google.com/web/tools/lighthouse/audits/first-interactive)."
+  },
+  "lighthouse-core/audits/metrics/first-cpu-idle.js | title": {
+    "message": "CPU Pertama Tidak Ada Aktivitas"
+  },
+  "lighthouse-core/audits/metrics/first-meaningful-paint.js | description": {
+    "message": "First Meaningful Paint mengukur waktu saat konten utama halaman terlihat. [Pelajari lebih lanjut](https://developers.google.com/web/tools/lighthouse/audits/first-meaningful-paint)."
+  },
+  "lighthouse-core/audits/metrics/first-meaningful-paint.js | title": {
+    "message": "First Meaningful Paint"
+  },
+  "lighthouse-core/audits/metrics/interactive.js | description": {
+    "message": "Waktu untuk interaktif adalah lamanya waktu yang diperlukan halaman untuk menjadi interaktif sepenuhnya. [Pelajari lebih lanjut](https://developers.google.com/web/tools/lighthouse/audits/consistently-interactive)."
+  },
+  "lighthouse-core/audits/metrics/interactive.js | title": {
+    "message": "Waktu untuk Interaktif"
+  },
+  "lighthouse-core/audits/metrics/max-potential-fid.js | description": {
+    "message": "Potensi maksimal Penundaan Input Pertama yang dapat dialami pengguna Anda adalah durasi tugas terpanjang, yang dinyatakan dalam milidetik. [Pelajari lebih lanjut](https://developers.google.com/web/updates/2018/05/first-input-delay)."
+  },
+  "lighthouse-core/audits/metrics/max-potential-fid.js | title": {
+    "message": "Potensi Maksimal Penundaan Input Pertama"
+  },
+  "lighthouse-core/audits/metrics/speed-index.js | description": {
+    "message": "Indeks Kecepatan menunjukkan seberapa cepat konten halaman terlihat terisi lengkap. [Pelajari lebih lanjut](https://developers.google.com/web/tools/lighthouse/audits/speed-index)."
+  },
+  "lighthouse-core/audits/metrics/speed-index.js | title": {
+    "message": "Indeks Kecepatan"
+  },
+  "lighthouse-core/audits/metrics/total-blocking-time.js | description": {
+    "message": "Jumlah semua jangka waktu antara FCP dan Waktu untuk Interaktif, ketika durasi tugas melebihi 50 md, dinyatakan dalam milidetik."
+  },
+  "lighthouse-core/audits/metrics/total-blocking-time.js | title": {
+    "message": "Total Waktu Pemblokiran"
+  },
+  "lighthouse-core/audits/network-rtt.js | description": {
+    "message": "Waktu round trip (RTT) jaringan berdampak besar pada performa. RTT ke asal yang tinggi merupakan indikasi bahwa server yang berjarak lebih dekat ke pengguna dapat meningkatkan performa. [Pelajari lebih lanjut](https://hpbn.co/primer-on-latency-and-bandwidth/)."
+  },
+  "lighthouse-core/audits/network-rtt.js | title": {
+    "message": "Waktu Round Trip Jaringan"
+  },
+  "lighthouse-core/audits/network-server-latency.js | description": {
+    "message": "Latensi server dapat memengaruhi performa web. Latensi server untuk suatu asal yang tinggi merupakan indikasi bahwa server kelebihan muatan atau memiliki performa backend yang buruk. [Pelajari lebih lanjut](https://hpbn.co/primer-on-web-performance/#analyzing-the-resource-waterfall)."
+  },
+  "lighthouse-core/audits/network-server-latency.js | title": {
+    "message": "Latensi Backend Server"
+  },
+  "lighthouse-core/audits/offline-start-url.js | description": {
+    "message": "Pekerja layanan memungkinkan aplikasi web dapat diandalkan dalam kondisi jaringan yang tidak terduga. [Pelajari lebih lanjut](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)."
+  },
+  "lighthouse-core/audits/offline-start-url.js | failureTitle": {
+    "message": "`start_url` tidak merespons dengan kode 200 saat offline"
+  },
+  "lighthouse-core/audits/offline-start-url.js | title": {
+    "message": "`start_url` merespons dengan kode 200 saat offline"
+  },
+  "lighthouse-core/audits/offline-start-url.js | warningCantStart": {
+    "message": "Lighthouse tidak dapat membaca `start_url` dari manifes tersebut. Oleh karena itu, `start_url` dianggap sebagai URL dokumen. Pesan error: '{manifestWarning}'."
+  },
+  "lighthouse-core/audits/performance-budget.js | columnOverBudget": {
+    "message": "Melebihi Anggaran"
+  },
+  "lighthouse-core/audits/performance-budget.js | description": {
+    "message": "Pertahankan jumlah dan ukuran permintaan jaringan di bawah target yang ditetapkan oleh anggaran performa yang disediakan. [Pelajari lebih lanjut](https://developers.google.com/web/tools/lighthouse/audits/budgets)."
+  },
+  "lighthouse-core/audits/performance-budget.js | requestCountOverBudget": {
+    "message": "{count,plural, =1{1 permintaan}other{# permintaan}}"
+  },
+  "lighthouse-core/audits/performance-budget.js | title": {
+    "message": "Anggaran performa"
+  },
+  "lighthouse-core/audits/redirects-http.js | description": {
+    "message": "Jika Anda sudah menyiapkan HTTPS, pastikan mengalihkan semua traffic HTTP ke HTTPS agar dapat menyediakan fitur web yang aman bagi semua pengguna. [Pelajari lebih lanjut](https://developers.google.com/web/tools/lighthouse/audits/http-redirects-to-https)."
+  },
+  "lighthouse-core/audits/redirects-http.js | failureTitle": {
+    "message": "Tidak mengalihkan traffic HTTP ke HTTPS"
+  },
+  "lighthouse-core/audits/redirects-http.js | title": {
+    "message": "Mengalihkan traffic HTTP ke HTTPS"
+  },
+  "lighthouse-core/audits/redirects.js | description": {
+    "message": "Pengalihan mencakup penundaan tambahan sebelum halaman dapat dimuat. [Pelajari lebih lanjut](https://developers.google.com/web/tools/lighthouse/audits/redirects)."
+  },
+  "lighthouse-core/audits/redirects.js | title": {
+    "message": "Hindari pengalihan lebih dari satu halaman"
+  },
+  "lighthouse-core/audits/resource-summary.js | description": {
+    "message": "Untuk mengatur anggaran jumlah dan ukuran resource halaman, tambahkan file budget.json. [Pelajari lebih lanjut](https://developers.google.com/web/tools/lighthouse/audits/budgets)."
+  },
+  "lighthouse-core/audits/resource-summary.js | displayValue": {
+    "message": "{requestCount,plural, =1{1 permintaan • {byteCount, number, bytes} KB}other{# permintaan • {byteCount, number, bytes} KB}}"
+  },
+  "lighthouse-core/audits/resource-summary.js | title": {
+    "message": "Pertahankan jumlah permintaan tetap rendah dan ukuran transfer tetap kecil"
+  },
+  "lighthouse-core/audits/seo/canonical.js | description": {
+    "message": "Link kanonis menyarankan URL yang akan ditampilkan dalam hasil penelusuran. [Pelajari lebih lanjut](https://web.dev/canonical)."
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationConflict": {
+    "message": "Ada beberapa URL yang bertentangan ({urlList})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationDifferentDomain": {
+    "message": "Mengarahkan ke domain yang berbeda ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationInvalid": {
+    "message": "URL tidak valid ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationPointsElsewhere": {
+    "message": "Mengarahkan ke lokasi `hreflang` lain ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationRelative": {
+    "message": "URL relatif ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationRoot": {
+    "message": "Mengarah ke URL root domain (halaman beranda), bukan ke halaman yang setara untuk konten itu"
+  },
+  "lighthouse-core/audits/seo/canonical.js | failureTitle": {
+    "message": "Dokumen tidak memiliki `rel=canonical` yang valid"
+  },
+  "lighthouse-core/audits/seo/canonical.js | title": {
+    "message": "Dokumen memiliki `rel=canonical` yang valid"
+  },
+  "lighthouse-core/audits/seo/font-size.js | description": {
+    "message": "Ukuran font di bawah 12 piksel terlalu kecil untuk dapat dibaca dan memaksa pengunjung seluler “mencubit untuk memperbesar\" agar dapat membacanya. Usahakan untuk menampilkan >60% teks halaman dalam ukuran ≥12 piksel. [Pelajari lebih lanjut](https://web.dev/font-size)."
+  },
+  "lighthouse-core/audits/seo/font-size.js | displayValue": {
+    "message": "Teks yang dapat dibaca {decimalProportion, number, extendedPercent}"
+  },
+  "lighthouse-core/audits/seo/font-size.js | explanationViewport": {
+    "message": "Teks tidak terbaca karena tidak ada tag meta viewport yang dioptimalkan untuk layar seluler."
+  },
+  "lighthouse-core/audits/seo/font-size.js | explanationWithDisclaimer": {
+    "message": "{decimalProportion, number, extendedPercent} teks terlalu kecil (berdasarkan sampel {decimalProportionVisited, number, extendedPercent})."
+  },
+  "lighthouse-core/audits/seo/font-size.js | failureTitle": {
+    "message": "Dokumen tidak menggunakan ukuran font yang terbaca"
+  },
+  "lighthouse-core/audits/seo/font-size.js | title": {
+    "message": "Dokumen menggunakan ukuran font yang terbaca"
+  },
+  "lighthouse-core/audits/seo/hreflang.js | description": {
+    "message": "Link hreflang memberi tahu mesin telusur versi halaman yang harus dicantumkan dalam hasil penelusuran untuk wilayah atau bahasa tertentu. [Pelajari lebih lanjut](https://web.dev/hreflang)."
+  },
+  "lighthouse-core/audits/seo/hreflang.js | failureTitle": {
+    "message": "Dokumen tidak memiliki `hreflang` yang valid"
+  },
+  "lighthouse-core/audits/seo/hreflang.js | title": {
+    "message": "Dokumen memiliki `hreflang` yang valid"
+  },
+  "lighthouse-core/audits/seo/http-status-code.js | description": {
+    "message": "Halaman dengan kode status HTTP yang tidak berhasil mungkin tidak akan diindeks dengan tepat. [Pelajari lebih lanjut](https://web.dev/http-status-code)."
+  },
+  "lighthouse-core/audits/seo/http-status-code.js | failureTitle": {
+    "message": "Halaman memiliki kode status HTTP yang tidak berhasil"
+  },
+  "lighthouse-core/audits/seo/http-status-code.js | title": {
+    "message": "Halaman memiliki kode status HTTP yang berhasil"
+  },
+  "lighthouse-core/audits/seo/is-crawlable.js | description": {
+    "message": "Mesin telusur tidak dapat menyertakan halaman Anda dalam hasil penelusuran jika tidak memiliki izin untuk meng-crawl halaman tersebut. [Pelajari lebih lanjut](https://web.dev/is-crawable)."
+  },
+  "lighthouse-core/audits/seo/is-crawlable.js | failureTitle": {
+    "message": "Halaman diblokir dari pengindeksan"
+  },
+  "lighthouse-core/audits/seo/is-crawlable.js | title": {
+    "message": "Halaman tidak diblokir dari pengindeksan"
+  },
+  "lighthouse-core/audits/seo/link-text.js | description": {
+    "message": "Teks link deskriptif membantu mesin telusur memahami konten Anda. [Pelajari lebih lanjut](https://web.dev/link-text)."
+  },
+  "lighthouse-core/audits/seo/link-text.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 link ditemukan}other{# link ditemukan}}"
+  },
+  "lighthouse-core/audits/seo/link-text.js | failureTitle": {
+    "message": "Link tidak memiliki teks deskriptif"
+  },
+  "lighthouse-core/audits/seo/link-text.js | title": {
+    "message": "Link memiliki teks deskriptif"
+  },
+  "lighthouse-core/audits/seo/manual/structured-data.js | description": {
+    "message": "Jalankan [Fitur Pengujian Data Terstruktur](https://search.google.com/structured-data/testing-tool/) dan [Linter Data Terstruktur](http://linter.structured-data.org/) untuk memvalidasi data terstruktur. [Pelajari lebih lanjut](https://web.dev/structured-data)."
+  },
+  "lighthouse-core/audits/seo/manual/structured-data.js | title": {
+    "message": "Data terstruktur valid"
+  },
+  "lighthouse-core/audits/seo/meta-description.js | description": {
+    "message": "Deskripsi meta mungkin disertakan dalam hasil penelusuran untuk merangkum isi halaman dengan singkat. [Pelajari lebih lanjut](https://web.dev/meta-description)."
+  },
+  "lighthouse-core/audits/seo/meta-description.js | explanation": {
+    "message": "Teks deskripsi kosong."
+  },
+  "lighthouse-core/audits/seo/meta-description.js | failureTitle": {
+    "message": "Dokumen tidak memiliki deskripsi meta"
+  },
+  "lighthouse-core/audits/seo/meta-description.js | title": {
+    "message": "Dokumen memiliki deskripsi meta"
+  },
+  "lighthouse-core/audits/seo/plugins.js | description": {
+    "message": "Mesin telusur tidak dapat mengindeks konten plugin, dan banyak perangkat yang membatasi plugin atau tidak mendukungnya. [Pelajari lebih lanjut](https://web.dev/plugins)."
+  },
+  "lighthouse-core/audits/seo/plugins.js | failureTitle": {
+    "message": "Dokumen menggunakan plugin"
+  },
+  "lighthouse-core/audits/seo/plugins.js | title": {
+    "message": "Dokumen menghindari plugin"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | description": {
+    "message": "Jika file robots.txt Anda salah format, crawler mungkin tidak dapat memahami cara crawling atau pengindeksan situs yang Anda inginkan. [Pelajari lebih lanjut](https://web.dev/robots-txt)."
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | displayValueHttpBadCode": {
+    "message": "Permintaan untuk robots.txt menampilkan status HTTP: {statusCode}"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | displayValueValidationError": {
+    "message": "{itemCount,plural, =1{1 error ditemukan}other{# error ditemukan}}"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | explanation": {
+    "message": "Lighthouse tidak dapat mendownload file robots.txt"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | failureTitle": {
+    "message": "robots.txt tidak valid"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | title": {
+    "message": "robots.txt valid"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | description": {
+    "message": "Elemen interaktif seperti tombol dan link harus berukuran cukup besar (48x48 piksel), dan memiliki cukup ruang di sekelilingnya, agar cukup mudah diketuk tanpa tumpang-tindih dengan elemen lain. [Pelajari lebih lanjut](https://web.dev/tap-targets)."
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | displayValue": {
+    "message": "{decimalProportion, number, percent} target ketuk memiliki ukuran yang tepat"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | explanationViewportMetaNotOptimized": {
+    "message": "Target ketuk terlalu kecil karena tidak ada tag meta viewport yang dioptimalkan untuk layar seluler"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | failureTitle": {
+    "message": "Target ketuk tidak memiliki ukuran yang tepat"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | overlappingTargetHeader": {
+    "message": "Target Tumpang-Tindih"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | tapTargetHeader": {
+    "message": "Target Ketuk"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | title": {
+    "message": "Target ketuk memiliki ukuran yang tepat"
+  },
+  "lighthouse-core/audits/service-worker.js | description": {
+    "message": "Pekerja layanan adalah teknologi yang memungkinkan aplikasi Anda menggunakan banyak fitur Progressive Web App, seperti fitur offline, tambahkan ke layar utama, dan notifikasi push. [Pelajari lebih lanjut](https://developers.google.com/web/tools/lighthouse/audits/registered-service-worker)."
+  },
+  "lighthouse-core/audits/service-worker.js | explanationBadManifest": {
+    "message": "Halaman ini dikontrol oleh pekerja layanan, tetapi `start_url` tidak ditemukan karena manifes gagal diurai sebagai JSON yang valid"
+  },
+  "lighthouse-core/audits/service-worker.js | explanationBadStartUrl": {
+    "message": "Halaman ini dikontrol oleh pekerja layanan, tetapi `start_url` ({startUrl}) tidak termasuk dalam cakupan pekerja layanan ({scopeUrl})"
+  },
+  "lighthouse-core/audits/service-worker.js | explanationNoManifest": {
+    "message": "Halaman ini dikontrol oleh pekerja layanan, tetapi `start_url` tidak ditemukan karena tidak ada manifes yang diambil."
+  },
+  "lighthouse-core/audits/service-worker.js | explanationOutOfScope": {
+    "message": "Asal memiliki satu pekerja layanan atau lebih, tetapi halaman ({pageUrl}) tidak termasuk dalam cakupan."
+  },
+  "lighthouse-core/audits/service-worker.js | failureTitle": {
+    "message": "Tidak mendaftarkan pekerja layanan yang mengontrol halaman dan `start_url`"
+  },
+  "lighthouse-core/audits/service-worker.js | title": {
+    "message": "Mendaftarkan pekerja layanan yang mengontrol halaman dan `start_url`"
+  },
+  "lighthouse-core/audits/splash-screen.js | description": {
+    "message": "Layar pembuka yang diberi tema akan memberikan pengalaman berkualitas tinggi saat pengguna meluncurkan aplikasi dari layar utama. [Pelajari lebih lanjut](https://developers.google.com/web/tools/lighthouse/audits/custom-splash-screen)."
+  },
+  "lighthouse-core/audits/splash-screen.js | failureTitle": {
+    "message": "Tidak dikonfigurasi untuk layar pembuka khusus"
+  },
+  "lighthouse-core/audits/splash-screen.js | title": {
+    "message": "Dikonfigurasi untuk layar pembuka khusus"
+  },
+  "lighthouse-core/audits/themed-omnibox.js | description": {
+    "message": "Kolom URL browser dapat diberi tema agar cocok dengan situs Anda. [Pelajari lebih lanjut](https://developers.google.com/web/tools/lighthouse/audits/address-bar)."
+  },
+  "lighthouse-core/audits/themed-omnibox.js | failureTitle": {
+    "message": "Tidak menyetel warna tema untuk kolom URL."
+  },
+  "lighthouse-core/audits/themed-omnibox.js | title": {
+    "message": "Menyetel warna tema untuk kolom URL."
+  },
+  "lighthouse-core/audits/third-party-summary.js | columnBlockingTime": {
+    "message": "Waktu Pemblokiran Thread Utama"
+  },
+  "lighthouse-core/audits/third-party-summary.js | columnThirdParty": {
+    "message": "Pihak Ketiga"
+  },
+  "lighthouse-core/audits/third-party-summary.js | description": {
+    "message": "Kode pihak ketiga dapat memberikan dampak signifikan terhadap performa muatan. Batasi jumlah penyedia pihak ketiga yang berlebihan dan coba muat kode pihak ketiga terutama setelah halaman selesai memuat. [Pelajari lebih lanjut](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/loading-third-party-javascript/)."
+  },
+  "lighthouse-core/audits/third-party-summary.js | displayValue": {
+    "message": "Kode pihak ketiga memblokir thread utama untuk {timeInMs, number, milliseconds} ms"
+  },
+  "lighthouse-core/audits/third-party-summary.js | failureTitle": {
+    "message": "Kurangi dampak kode pihak ketiga"
+  },
+  "lighthouse-core/audits/third-party-summary.js | title": {
+    "message": "Penggunaan oleh Pihak Ketiga"
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | description": {
+    "message": "Time To First Byte mengidentifikasi waktu saat server mengirim respons. [Pelajari lebih lanjut](https://developers.google.com/web/tools/lighthouse/audits/ttfb)."
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | displayValue": {
+    "message": "Dokumen root memerlukan waktu {timeInMs, number, milliseconds} md"
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | failureTitle": {
+    "message": "Mengurangi waktu respons server (TTFB)"
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | title": {
+    "message": "Waktu respons server sedikit (TTFB)"
+  },
+  "lighthouse-core/audits/user-timings.js | columnDuration": {
+    "message": "Durasi"
+  },
+  "lighthouse-core/audits/user-timings.js | columnStartTime": {
+    "message": "Waktu Mulai"
+  },
+  "lighthouse-core/audits/user-timings.js | columnType": {
+    "message": "Jenis"
+  },
+  "lighthouse-core/audits/user-timings.js | description": {
+    "message": "Sebaiknya lengkapi aplikasi Anda dengan User Timing API untuk mengukur performa aplikasi Anda yang sebenarnya selama pengalaman pengguna utama. [Pelajari lebih lanjut](https://developers.google.com/web/tools/lighthouse/audits/user-timing)."
+  },
+  "lighthouse-core/audits/user-timings.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 waktu pengguna}other{# waktu pengguna}}"
+  },
+  "lighthouse-core/audits/user-timings.js | title": {
+    "message": "Tanda dan ukuran Waktu Pengguna"
+  },
+  "lighthouse-core/audits/uses-rel-preconnect.js | crossoriginWarning": {
+    "message": "Sebuah <link> prakoneksi ditemukan untuk {securityOrigin}, tetapi tidak digunakan oleh browser. Pastikan Anda menggunakan atribut `crossorigin` dengan tepat."
+  },
+  "lighthouse-core/audits/uses-rel-preconnect.js | description": {
+    "message": "Sebaiknya tambahkan petunjuk resource `preconnect` atau `dns-prefetch` guna membuat sambungan lebih awal ke asal pihak ketiga yang penting. [Pelajari lebih lanjut](https://developers.google.com/web/fundamentals/performance/resource-prioritization#preconnect)."
+  },
+  "lighthouse-core/audits/uses-rel-preconnect.js | title": {
+    "message": "Sambungkan terlebih dahulu ke nama domain yang diperlukan"
+  },
+  "lighthouse-core/audits/uses-rel-preload.js | crossoriginWarning": {
+    "message": "Sebuah <link> pramuat ditemukan untuk {preloadURL}, tetapi tidak digunakan oleh browser. Pastikan Anda menggunakan atribut `crossorigin` dengan tepat."
+  },
+  "lighthouse-core/audits/uses-rel-preload.js | description": {
+    "message": "Sebaiknya gunakan `<link rel=preload>` untuk memprioritaskan pengambilan resource yang saat ini diminta selama pemuatan halaman. [Pelajari lebih lanjut](https://developers.google.com/web/tools/lighthouse/audits/preload)."
+  },
+  "lighthouse-core/audits/uses-rel-preload.js | title": {
+    "message": "Muat permintaan utama terlebih dahulu"
+  },
+  "lighthouse-core/audits/viewport.js | description": {
+    "message": "Tambahkan tag `<meta name=\"viewport\">` guna mengoptimalkan aplikasi Anda untuk layar perangkat seluler. [Pelajari lebih lanjut](https://developers.google.com/web/tools/lighthouse/audits/has-viewport-meta-tag)."
+  },
+  "lighthouse-core/audits/viewport.js | explanationNoTag": {
+    "message": "Tag `<meta name=\"viewport\">` tidak ditemukan"
+  },
+  "lighthouse-core/audits/viewport.js | failureTitle": {
+    "message": "Tidak memiliki tag `<meta name=\"viewport\">` dengan `width` atau `initial-scale`"
+  },
+  "lighthouse-core/audits/viewport.js | title": {
+    "message": "Memiliki tag `<meta name=\"viewport\">` dengan `width` atau `initial-scale`"
+  },
+  "lighthouse-core/audits/without-javascript.js | description": {
+    "message": "Aplikasi Anda harus menampilkan beberapa konten saat JavaScript nonaktif, meskipun hanya berupa peringatan kepada pengguna bahwa JavaScript diperlukan untuk menggunakan aplikasi. [Pelajari lebih lanjut](https://developers.google.com/web/tools/lighthouse/audits/no-js)."
+  },
+  "lighthouse-core/audits/without-javascript.js | explanation": {
+    "message": "Isi halaman harus merender beberapa konten jika skripnya tidak tersedia."
+  },
+  "lighthouse-core/audits/without-javascript.js | failureTitle": {
+    "message": "Tidak menyediakan konten pengganti saat JavaScript tidak tersedia"
+  },
+  "lighthouse-core/audits/without-javascript.js | title": {
+    "message": "Berisi beberapa konten saat JavaScript tidak tersedia"
+  },
+  "lighthouse-core/audits/works-offline.js | description": {
+    "message": "Jika Anda membuat build Progressive Web App, pertimbangkan untuk menggunakan pekerja layanan agar aplikasi dapat berfungsi secara offline. [Pelajari lebih lanjut](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)."
+  },
+  "lighthouse-core/audits/works-offline.js | failureTitle": {
+    "message": "Halaman saat ini tidak merespons dengan kode 200 saat offline"
+  },
+  "lighthouse-core/audits/works-offline.js | title": {
+    "message": "Halaman saat ini merespons dengan kode 200 saat offline"
+  },
+  "lighthouse-core/audits/works-offline.js | warningNoLoad": {
+    "message": "Halaman tersebut mungkin tidak dimuat secara offline karena URL uji Anda ({requested}) tidak dialihkan ke \"{final}\". Coba uji URL kedua secara langsung."
+  },
+  "lighthouse-core/config/default-config.js | a11yAriaGroupDescription": {
+    "message": "Ini adalah peluang untuk meningkatkan penggunaan ARIA pada aplikasi Anda, yang dapat meningkatkan pengalaman bagi pengguna teknologi asistif, seperti pembaca layar."
+  },
+  "lighthouse-core/config/default-config.js | a11yAriaGroupTitle": {
+    "message": "ARIA"
+  },
+  "lighthouse-core/config/default-config.js | a11yAudioVideoGroupDescription": {
+    "message": "Ini adalah peluang untuk memberikan konten alternatif untuk audio dan video. Hal ini dapat meningkatkan pengalaman bagi pengguna yang menyandang gangguan penglihatan atau pendengaran."
+  },
+  "lighthouse-core/config/default-config.js | a11yAudioVideoGroupTitle": {
+    "message": "Audio dan video"
+  },
+  "lighthouse-core/config/default-config.js | a11yBestPracticesGroupDescription": {
+    "message": "Item berikut memperjelas praktik terbaik yang umum untuk aksesibilitas."
+  },
+  "lighthouse-core/config/default-config.js | a11yBestPracticesGroupTitle": {
+    "message": "Praktik terbaik"
+  },
+  "lighthouse-core/config/default-config.js | a11yCategoryDescription": {
+    "message": "Pemeriksaan ini menandai peluang untuk [menyempurnakan aksesibilitas aplikasi web Anda](https://developers.google.com/web/fundamentals/accessibility). Hanya sejumlah kecil masalah aksesibilitas yang dapat terdeteksi secara otomatis, sehingga pengujian manual juga dianjurkan."
+  },
+  "lighthouse-core/config/default-config.js | a11yCategoryManualDescription": {
+    "message": "Item berikut ini menangani area yang tidak dapat dicakup oleh fitur pengujian otomatis. Pelajari lebih lanjut dalam panduan kami tentang [menjalankan tinjauan aksesibilitas](https://developers.google.com/web/fundamentals/accessibility/how-to-review)."
+  },
+  "lighthouse-core/config/default-config.js | a11yCategoryTitle": {
+    "message": "Aksesibilitas"
+  },
+  "lighthouse-core/config/default-config.js | a11yColorContrastGroupDescription": {
+    "message": "Ini adalah peluang untuk meningkatkan keterbacaan konten Anda."
+  },
+  "lighthouse-core/config/default-config.js | a11yColorContrastGroupTitle": {
+    "message": "Kontras"
+  },
+  "lighthouse-core/config/default-config.js | a11yLanguageGroupDescription": {
+    "message": "Ini adalah peluang untuk menyempurnakan interpretasi konten Anda oleh pengguna dalam lokal yang berbeda."
+  },
+  "lighthouse-core/config/default-config.js | a11yLanguageGroupTitle": {
+    "message": "Internasionalisasi dan pelokalan"
+  },
+  "lighthouse-core/config/default-config.js | a11yNamesLabelsGroupDescription": {
+    "message": "Ini adalah peluang untuk meningkatkan semantik kontrol dalam aplikasi Anda. Hal ini dapat menyempurnakan pengalaman bagi pengguna teknologi asistif, seperti pembaca layar."
+  },
+  "lighthouse-core/config/default-config.js | a11yNamesLabelsGroupTitle": {
+    "message": "Nama dan label"
+  },
+  "lighthouse-core/config/default-config.js | a11yNavigationGroupDescription": {
+    "message": "Ini adalah peluang untuk menyempurnakan navigasi keyboard pada aplikasi Anda."
+  },
+  "lighthouse-core/config/default-config.js | a11yNavigationGroupTitle": {
+    "message": "Navigasi"
+  },
+  "lighthouse-core/config/default-config.js | a11yTablesListsVideoGroupDescription": {
+    "message": "Ini adalah peluang untuk meningkatkan pengalaman membaca data dalam format tabel atau daftar menggunakan teknologi asistif, seperti pembaca layar."
+  },
+  "lighthouse-core/config/default-config.js | a11yTablesListsVideoGroupTitle": {
+    "message": "Tabel dan daftar"
+  },
+  "lighthouse-core/config/default-config.js | bestPracticesCategoryTitle": {
+    "message": "Praktik Terbaik"
+  },
+  "lighthouse-core/config/default-config.js | budgetsGroupDescription": {
+    "message": "Anggaran performa menetapkan standar performa situs Anda."
+  },
+  "lighthouse-core/config/default-config.js | budgetsGroupTitle": {
+    "message": "Anggaran"
+  },
+  "lighthouse-core/config/default-config.js | diagnosticsGroupDescription": {
+    "message": "Informasi selengkapnya tentang performa aplikasi Anda. Angka ini tidak [secara langsung memengaruhi](https://github.com/GoogleChrome/lighthouse/blob/d2ec9ffbb21de9ad1a0f86ed24575eda32c796f0/docs/scoring.md#how-are-the-scores-weighted) skor Performa."
+  },
+  "lighthouse-core/config/default-config.js | diagnosticsGroupTitle": {
+    "message": "Diagnostik"
+  },
+  "lighthouse-core/config/default-config.js | firstPaintImprovementsGroupDescription": {
+    "message": "Aspek terpenting dari performa adalah seberapa cepat piksel dirender di layar. Metrik utama: First Contentful Paint, First Meaningful Paint"
+  },
+  "lighthouse-core/config/default-config.js | firstPaintImprovementsGroupTitle": {
+    "message": "Penyempurnaan First Paint"
+  },
+  "lighthouse-core/config/default-config.js | loadOpportunitiesGroupDescription": {
+    "message": "Saran ini dapat membantu pemuatan halaman menjadi lebih cepat. Saran tersebut tidak [secara langsung memengaruhi](https://github.com/GoogleChrome/lighthouse/blob/d2ec9ffbb21de9ad1a0f86ed24575eda32c796f0/docs/scoring.md#how-are-the-scores-weighted) skor Performa."
+  },
+  "lighthouse-core/config/default-config.js | loadOpportunitiesGroupTitle": {
+    "message": "Peluang"
+  },
+  "lighthouse-core/config/default-config.js | metricGroupTitle": {
+    "message": "Metrik"
+  },
+  "lighthouse-core/config/default-config.js | overallImprovementsGroupDescription": {
+    "message": "Menyempurnakan pengalaman pemuatan halaman keseluruhan, sehingga halaman responsif dan siap untuk digunakan secepatnya. Metrik utama: Waktu untuk Interaktif, Indeks Kecepatan"
+  },
+  "lighthouse-core/config/default-config.js | overallImprovementsGroupTitle": {
+    "message": "Penyempurnaan Keseluruhan"
+  },
+  "lighthouse-core/config/default-config.js | performanceCategoryTitle": {
+    "message": "Performa"
+  },
+  "lighthouse-core/config/default-config.js | pwaCategoryDescription": {
+    "message": "Pemeriksaan ini memvalidasi aspek-aspek Progressive Web App. [Pelajari lebih lanjut](https://developers.google.com/web/progressive-web-apps/checklist)."
+  },
+  "lighthouse-core/config/default-config.js | pwaCategoryManualDescription": {
+    "message": "Pemeriksaan ini diperlukan oleh [Checklist PWA](https://developers.google.com/web/progressive-web-apps/checklist) untuk dasar pengukuran tetapi tidak otomatis diperiksa oleh Lighthouse. Pemeriksaan tersebut tidak memengaruhi skor, tetapi penting karena hal ini berarti Anda memverifikasi situs-situs secara manual."
+  },
+  "lighthouse-core/config/default-config.js | pwaCategoryTitle": {
+    "message": "Progressive Web App"
+  },
+  "lighthouse-core/config/default-config.js | pwaFastReliableGroupTitle": {
+    "message": "Cepat dan dapat diandalkan"
+  },
+  "lighthouse-core/config/default-config.js | pwaInstallableGroupTitle": {
+    "message": "Dapat Diinstal"
+  },
+  "lighthouse-core/config/default-config.js | pwaOptimizedGroupTitle": {
+    "message": "PWA yang Dioptimalkan"
+  },
+  "lighthouse-core/config/default-config.js | seoCategoryDescription": {
+    "message": "Pemeriksaan ini memastikan bahwa halaman Anda dioptimalkan untuk pemeringkatan hasil mesin telusur. Ada faktor lain yang tidak diperiksa Lighthouse yang dapat memengaruhi pemeringkatan penelusuran Anda. [Pelajari lebih lanjut](https://support.google.com/webmasters/answer/35769)."
+  },
+  "lighthouse-core/config/default-config.js | seoCategoryManualDescription": {
+    "message": "Jalankan validator tambahan ini di situs Anda untuk memeriksa praktik terbaik SEO lainnya."
+  },
+  "lighthouse-core/config/default-config.js | seoCategoryTitle": {
+    "message": "SEO"
+  },
+  "lighthouse-core/config/default-config.js | seoContentGroupDescription": {
+    "message": "Format HTML Anda dengan cara yang memungkinkan crawler untuk lebih memahami konten aplikasi Anda."
+  },
+  "lighthouse-core/config/default-config.js | seoContentGroupTitle": {
+    "message": "Praktik Terbaik Konten"
+  },
+  "lighthouse-core/config/default-config.js | seoCrawlingGroupDescription": {
+    "message": "Agar muncul di hasil penelusuran, crawler perlu mengakses aplikasi Anda."
+  },
+  "lighthouse-core/config/default-config.js | seoCrawlingGroupTitle": {
+    "message": "Crawling dan Pengindeksan"
+  },
+  "lighthouse-core/config/default-config.js | seoMobileGroupDescription": {
+    "message": "Pastikan halaman Anda mobile-friendly agar pengguna tidak perlu mencubit atau memperbesar untuk membaca halaman konten. [Pelajari lebih lanjut](https://developers.google.com/search/mobile-sites/)."
+  },
+  "lighthouse-core/config/default-config.js | seoMobileGroupTitle": {
+    "message": "Mobile Friendly"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnCacheTTL": {
+    "message": "TTL Cache"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnLocation": {
+    "message": "Lokasi"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnName": {
+    "message": "Nama"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnRequests": {
+    "message": "Permintaan"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnResourceType": {
+    "message": "Jenis Resource"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnSize": {
+    "message": "Ukuran"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnTimeSpent": {
+    "message": "Waktu yang Dihabiskan"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnTransferSize": {
+    "message": "Ukuran Transfer"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnURL": {
+    "message": "URL"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnWastedBytes": {
+    "message": "Potensi Penghematan"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnWastedMs": {
+    "message": "Potensi Penghematan"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | displayValueByteSavings": {
+    "message": "Potensi penghematan sebesar {wastedBytes, number, bytes} KB"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | displayValueMsSavings": {
+    "message": "Potensi penghematan {wastedMs, number, milliseconds} md"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | documentResourceType": {
+    "message": "Dokumen"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | fontResourceType": {
+    "message": "Font"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | imageResourceType": {
+    "message": "Gambar"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | mediaResourceType": {
+    "message": "Media"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | ms": {
+    "message": "{timeInMs, number, milliseconds} md"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | otherResourceType": {
+    "message": "Lainnya"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | scriptResourceType": {
+    "message": "Skrip"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | seconds": {
+    "message": "{timeInMs, number, seconds} dtk"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | stylesheetResourceType": {
+    "message": "Stylesheet"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | thirdPartyResourceType": {
+    "message": "Pihak ketiga"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | totalResourceType": {
+    "message": "Total"
+  },
+  "lighthouse-core/lib/lh-error.js | badTraceRecording": {
+    "message": "Terjadi kesalahan saat merekam jejak selama pemuatan halaman Anda. Harap jalankan Lighthouse kembali. ({errorCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | criTimeout": {
+    "message": "Waktu tunggu untuk sambungan Protokol Debugger awal berakhir."
+  },
+  "lighthouse-core/lib/lh-error.js | didntCollectScreenshots": {
+    "message": "Chrome tidak mengumpulkan screenshot apa pun selama pemuatan halaman. Pastikan terdapat konten yang terlihat pada halaman, kemudian coba jalankan kembali Lighthouse. ({errorCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | dnsFailure": {
+    "message": "Server DNS tidak dapat menetapkan domain yang disediakan."
+  },
+  "lighthouse-core/lib/lh-error.js | erroredRequiredArtifact": {
+    "message": "Terjadi error pada pengumpul {artifactName} wajib: {errorMessage}"
+  },
+  "lighthouse-core/lib/lh-error.js | internalChromeError": {
+    "message": "Terjadi error Chrome internal. Harap mulai ulang Chrome dan coba jalankan kembali Lighthouse."
+  },
+  "lighthouse-core/lib/lh-error.js | missingRequiredArtifact": {
+    "message": "Pengumpul {artifactName} yang diperlukan tidak berjalan."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailed": {
+    "message": "Lighthouse tidak dapat memuat halaman yang Anda minta dengan lancar. Pastikan Anda menguji URL yang benar dan server merespons semua permintaan dengan baik."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedHung": {
+    "message": "Lighthouse tidak dapat memuat URL yang Anda minta dengan lancar karena halaman berhenti merespons."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedInsecure": {
+    "message": "URL yang Anda berikan tidak memiliki sertifikat keamanan yang valid. {securityMessages}"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedInterstitial": {
+    "message": "Chrome mencegah pemuatan halaman dengan interstisial. Pastikan Anda menguji URL yang benar dan server merespons semua permintaan dengan baik."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedWithDetails": {
+    "message": "Lighthouse tidak dapat memuat halaman yang Anda minta dengan lancar. Pastikan Anda menguji URL yang benar dan server merespons semua permintaan dengan baik. (Detail: {errorDetails})"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedWithStatusCode": {
+    "message": "Lighthouse tidak dapat memuat halaman yang Anda minta dengan lancar. Pastikan Anda menguji URL yang benar dan server merespons semua permintaan dengan baik. (Kode status: {statusCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadTookTooLong": {
+    "message": "Waktu pemuatan halaman Anda terlalu lama. Harap ikuti peluang dalam laporan untuk mengurangi waktu muat halaman Anda, kemudian coba jalankan kembali Lighthouse. ({errorCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | protocolTimeout": {
+    "message": "Waktu tunggu respons protokol DevTools telah melampaui waktu yang dialokasikan. (Metode: {protocolMethod})"
+  },
+  "lighthouse-core/lib/lh-error.js | requestContentTimeout": {
+    "message": "Pengambilan konten resource telah melampaui waktu yang dialokasikan"
+  },
+  "lighthouse-core/lib/lh-error.js | urlInvalid": {
+    "message": "URL yang Anda berikan tampaknya tidak valid."
+  },
+  "lighthouse-core/report/html/renderer/util.js | auditGroupExpandTooltip": {
+    "message": "Tampilkan audit"
+  },
+  "lighthouse-core/report/html/renderer/util.js | crcInitialNavigation": {
+    "message": "Navigasi Awal"
+  },
+  "lighthouse-core/report/html/renderer/util.js | crcLongestDurationLabel": {
+    "message": "Latensi lokasi kritis maksimal:"
+  },
+  "lighthouse-core/report/html/renderer/util.js | errorLabel": {
+    "message": "Error!"
+  },
+  "lighthouse-core/report/html/renderer/util.js | errorMissingAuditInfo": {
+    "message": "Error laporan: tidak ada informasi audit"
+  },
+  "lighthouse-core/report/html/renderer/util.js | labDataTitle": {
+    "message": "Data Lab"
+  },
+  "lighthouse-core/report/html/renderer/util.js | lsPerformanceCategoryDescription": {
+    "message": "Analisis [Lighthouse](https://developers.google.com/web/tools/lighthouse/) untuk halaman saat ini di jaringan seluler teremulasi. Nilai adalah hasil perkiraan dan dapat berbeda-beda."
+  },
+  "lighthouse-core/report/html/renderer/util.js | manualAuditsGroupTitle": {
+    "message": "Item tambahan untuk diperiksa secara manual"
+  },
+  "lighthouse-core/report/html/renderer/util.js | notApplicableAuditsGroupTitle": {
+    "message": "Tidak berlaku"
+  },
+  "lighthouse-core/report/html/renderer/util.js | opportunityResourceColumnLabel": {
+    "message": "Peluang"
+  },
+  "lighthouse-core/report/html/renderer/util.js | opportunitySavingsColumnLabel": {
+    "message": "Perkiraan Penghematan"
+  },
+  "lighthouse-core/report/html/renderer/util.js | passedAuditsGroupTitle": {
+    "message": "Lulus audit"
+  },
+  "lighthouse-core/report/html/renderer/util.js | snippetCollapseButtonLabel": {
+    "message": "Ciutkan cuplikan"
+  },
+  "lighthouse-core/report/html/renderer/util.js | snippetExpandButtonLabel": {
+    "message": "Luaskan cuplikan"
+  },
+  "lighthouse-core/report/html/renderer/util.js | thirdPartyResourcesLabel": {
+    "message": "Tampilkan resource pihak ketiga"
+  },
+  "lighthouse-core/report/html/renderer/util.js | toplevelWarningsMessage": {
+    "message": "Ada masalah yang memengaruhi jalannya Lighthouse ini:"
+  },
+  "lighthouse-core/report/html/renderer/util.js | varianceDisclaimer": {
+    "message": "Nilai adalah hasil perkiraan dan dapat berbeda-beda. Skor performa [hanya berdasarkan metrik-metrik ini](https://github.com/GoogleChrome/lighthouse/blob/d2ec9ffbb21de9ad1a0f86ed24575eda32c796f0/docs/scoring.md#how-are-the-scores-weighted)."
+  },
+  "lighthouse-core/report/html/renderer/util.js | warningAuditsGroupTitle": {
+    "message": "Lulus audit tetapi dengan peringatan"
+  },
+  "lighthouse-core/report/html/renderer/util.js | warningHeader": {
+    "message": "Peringatan: "
+  },
+  "stack-packs/packs/wordpress.js | efficient_animated_content": {
+    "message": "Sebaiknya upload GIF ke server yang akan menyediakannya untuk disematkan sebagai video HTML5."
+  },
+  "stack-packs/packs/wordpress.js | offscreen_images": {
+    "message": "Instal [plugin pemuatan lambat di WordPress ](https://wordpress.org/plugins/search/lazy+load/) yang menyediakan kemampuan untuk menunda pemuatan gambar di bagian halaman yang belum ditampilkan, atau beralihlah ke tema yang menyediakan fungsi tersebut. Sebaiknya juga gunakan [plugin AMP](https://wordpress.org/plugins/amp/)."
+  },
+  "stack-packs/packs/wordpress.js | render_blocking_resources": {
+    "message": "Terdapat sejumlah plugin di WordPress yang dapat membantu Anda [menyejajarkan aset penting](https://wordpress.org/plugins/search/critical+css/) atau [menunda resource yang tidak penting](https://wordpress.org/plugins/search/defer+css+javascript/). Harap berhati-hati karena pengoptimalan yang disediakan oleh plugin ini dapat merusak fitur tema atau plugin, sehingga Anda cenderung perlu mengubah kode."
+  },
+  "stack-packs/packs/wordpress.js | time_to_first_byte": {
+    "message": "Semua spesifikasi tema, plugin, dan server berkontribusi pada waktu respons server. Sebaiknya cari tema yang lebih optimal, pilih plugin pengoptimalan dengan hati-hati, dan/atau upgrade server Anda."
+  },
+  "stack-packs/packs/wordpress.js | total_byte_weight": {
+    "message": "Sebaiknya tampilkan kutipan dalam daftar postingan (misalnya melalui tag lainnya), kurangi jumlah postingan yang ditampilkan pada halaman yang ada, bagi postingan panjang menjadi beberapa halaman, atau gunakan plugin untuk menunda pemuatan (lazy-load) komentar."
+  },
+  "stack-packs/packs/wordpress.js | unminified_css": {
+    "message": "Sejumlah [plugin WordPress](https://wordpress.org/plugins/search/minify+css/) dapat mempercepat situs Anda dengan menggabungkan, meminifikasi, dan mengompresi gaya Anda. Anda juga dapat menggunakan proses pembuatan build untuk melakukan minifikasi di tahap awal jika memungkinkan."
+  },
+  "stack-packs/packs/wordpress.js | unminified_javascript": {
+    "message": "Sejumlah [plugin WordPress](https://wordpress.org/plugins/search/minify+javascript/) dapat mempercepat situs Anda dengan menggabungkan, meminifikasi, dan mengompresi skrip. Anda juga dapat menggunakan proses pembuatan build untuk melakukan minifikasi di awal jika mungkin."
+  },
+  "stack-packs/packs/wordpress.js | unused_css_rules": {
+    "message": "Sebaiknya kurangi atau ubah jumlah [plugin WordPress](https://wordpress.org/plugins/) yang memuat CSS yang tidak digunakan di halaman Anda. Untuk mengidentifikasi plugin yang menambahkan CSS tidak relevan, coba jalankan [cakupan kode](https://developers.google.com/web/updates/2017/04/devtools-release-notes#coverage) di Chrome DevTools. Anda dapat mengidentifikasi tema/plugin yang bertanggung jawab dari URL stylesheet. Cari plugin yang memiliki banyak stylesheet dalam daftar yang memiliki banyak warna merah dalam cakupan kode. Plugin sebaiknya hanya menambahkan stylesheet ke antrean jika memang benar digunakan di halaman."
+  },
+  "stack-packs/packs/wordpress.js | unused_javascript": {
+    "message": "Sebaiknya kurangi atau ubah jumlah [plugin WordPress](https://wordpress.org/plugins/) yang memuat JavaScript yang tidak digunakan di halaman Anda. Untuk mengidentifikasi plugin yang menambahkan JS tidak relevan, coba jalankan [cakupan kode](https://developers.google.com/web/updates/2017/04/devtools-release-notes#coverage) di Chrome DevTools. Anda dapat mengidentifikasi tema/plugin yang bertanggung jawab dari URL skrip. Cari plugin dengan banyak skrip dalam daftar yang memiliki banyak warna merah dalam cakupan kode. Plugin sebaiknya hanya menambahkan skrip ke dalam antrean jika memang benar digunakan di halaman."
+  },
+  "stack-packs/packs/wordpress.js | uses_long_cache_ttl": {
+    "message": "Baca [Cache Browser di WordPress](https://codex.wordpress.org/WordPress_Optimization#Browser_Caching)."
+  },
+  "stack-packs/packs/wordpress.js | uses_optimized_images": {
+    "message": "Sebaiknya gunakan [plugin WordPress untuk pengoptimalan gambar](https://wordpress.org/plugins/search/optimize+images/) yang mengompresi gambar Anda dengan tetap mempertahankan kualitas."
+  },
+  "stack-packs/packs/wordpress.js | uses_responsive_images": {
+    "message": "Upload gambar langsung melalui [koleksi media](https://codex.wordpress.org/Media_Library_Screen) untuk memastikan ukuran gambar yang diperlukan tersedia, lalu masukkan koleksi media atau gunakan widget gambar untuk memastikan ukuran gambar optimal digunakan (termasuk untuk titik henti sementara responsif). Hindari menggunakan gambar `Full Size`, kecuali dimensinya memungkinkan untuk digunakan. [Pelajari Lebih Lanjut](https://codex.wordpress.org/Inserting_Images_into_Posts_and_Pages#Image_Size)."
+  },
+  "stack-packs/packs/wordpress.js | uses_text_compression": {
+    "message": "Anda dapat mengaktifkan kompresi teks di konfigurasi server web."
+  },
+  "stack-packs/packs/wordpress.js | uses_webp_images": {
+    "message": "Sebaiknya gunakan [plugin](https://wordpress.org/plugins/search/convert+webp/) atau layanan yang otomatis mengonversi gambar yang diupload ke format optimal."
+  }
+}
diff --git a/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/it.json b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/it.json
new file mode 100644
index 0000000..3819490e2
--- /dev/null
+++ b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/it.json
@@ -0,0 +1,1541 @@
+{
+  "lighthouse-core/audits/accessibility/accesskeys.js | description": {
+    "message": "Le chiavi di accesso consentono agli utenti di impostare rapidamente lo stato attivo su una parte della pagina. Per assicurare una navigazione corretta, ogni chiave di accesso deve essere univoca. [Ulteriori informazioni](https://web.dev/accesskeys/)."
+  },
+  "lighthouse-core/audits/accessibility/accesskeys.js | failureTitle": {
+    "message": "I valori `[accesskey]` non sono univoci"
+  },
+  "lighthouse-core/audits/accessibility/accesskeys.js | title": {
+    "message": "I valori `[accesskey]` sono univoci"
+  },
+  "lighthouse-core/audits/accessibility/aria-allowed-attr.js | description": {
+    "message": "Ogni elemento `role` di ARIA supporta un determinato sottoinsieme di attributi `aria-*`. Se non dovessero corrispondere, gli attributi `aria-*` non saranno considerati validi. [Ulteriori informazioni](https://web.dev/aria-allowed-attr/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-allowed-attr.js | failureTitle": {
+    "message": "Gli attributi `[aria-*]` non corrispondono ai rispettivi ruoli"
+  },
+  "lighthouse-core/audits/accessibility/aria-allowed-attr.js | title": {
+    "message": "Gli attributi `[aria-*]` corrispondono ai rispettivi ruoli"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-attr.js | description": {
+    "message": "Alcuni ruoli di ARIA hanno attributi obbligatori che descrivono lo stato dell'elemento agli screen reader. [Ulteriori informazioni](https://web.dev/aria-required-attr/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-required-attr.js | failureTitle": {
+    "message": "Gli elementi `[role]` non hanno tutti gli attributi `[aria-*]` obbligatori"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-attr.js | title": {
+    "message": "Gli elementi `[role]` hanno tutti gli attributi `[aria-*]` obbligatori"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-children.js | description": {
+    "message": "Alcuni ruoli principali di ARIA devono contenere specifici ruoli secondari per poter eseguire le funzionalità per l'accessibilità previste. [Ulteriori informazioni](https://web.dev/aria-required-children/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-required-children.js | failureTitle": {
+    "message": "Mancano gli elementi con `[role]` che richiedono specifici`[role]` secondari."
+  },
+  "lighthouse-core/audits/accessibility/aria-required-children.js | title": {
+    "message": "Sono presenti elementi con `[role]` che richiedono specifici elementi `[role]` secondari"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-parent.js | description": {
+    "message": "Alcuni ruoli secondari di ARIA devono essere contenuti in specifici ruoli principali per poter eseguire in modo corretto le funzionalità per l'accessibilità previste. [Ulteriori informazioni](https://web.dev/aria-required-parent/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-required-parent.js | failureTitle": {
+    "message": "Gli elementi `[role]` non sono contenuti nei rispettivi elementi principali obbligatori"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-parent.js | title": {
+    "message": "Gli elementi `[role]` sono contenuti nei rispettivi elementi principali obbligatori"
+  },
+  "lighthouse-core/audits/accessibility/aria-roles.js | description": {
+    "message": "I ruoli di ARIA devono contenere valori validi per poter eseguire le funzionalità per l'accessibilità previste. [Ulteriori informazioni](https://web.dev/aria-roles/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-roles.js | failureTitle": {
+    "message": "I valori `[role]` non sono validi"
+  },
+  "lighthouse-core/audits/accessibility/aria-roles.js | title": {
+    "message": "I valori `[role]` sono validi"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr-value.js | description": {
+    "message": "Le tecnologie di ausilio per la disabilità, come gli screen reader, non sono in grado di interpretare gli attributi di ARIA con valori non validi. [Ulteriori informazioni](https://web.dev/aria-valid-attr-value/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr-value.js | failureTitle": {
+    "message": "Gli attributi `[aria-*]` non hanno valori validi"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr-value.js | title": {
+    "message": "Gli attributi `[aria-*]` hanno valori validi"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr.js | description": {
+    "message": "Le tecnologie di ausilio per la disabilità, come gli screen reader, non sono in grado di interpretare gli attributi di ARIA con nomi non validi. [Ulteriori informazioni](https://web.dev/aria-valid-attr/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr.js | failureTitle": {
+    "message": "Gli attributi `[aria-*]` non sono validi o contengono errori ortografici"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr.js | title": {
+    "message": "Gli attributi `[aria-*]` sono validi e non contengono errori ortografici"
+  },
+  "lighthouse-core/audits/accessibility/audio-caption.js | description": {
+    "message": "I sottotitoli forniscono informazioni essenziali relative agli elementi audio, come chi sta parlando, il contenuto del dialogo e altre informazioni di contorno utilizzabili da non udenti e utenti con problemi di udito. [Ulteriori informazioni](https://web.dev/audio-caption/)."
+  },
+  "lighthouse-core/audits/accessibility/audio-caption.js | failureTitle": {
+    "message": "Negli elementi `<audio>` manca un elemento `<track>` con `[kind=\"captions\"]`."
+  },
+  "lighthouse-core/audits/accessibility/audio-caption.js | title": {
+    "message": "Gli elementi `<audio>` contengono un elemento `<track>` con `[kind=\"captions\"]`"
+  },
+  "lighthouse-core/audits/accessibility/axe-audit.js | failingElementsHeader": {
+    "message": "Elementi respinti"
+  },
+  "lighthouse-core/audits/accessibility/button-name.js | description": {
+    "message": "Quando un pulsante non ha un nome accessibile, gli screen reader lo descrivono semplicemente come \"pulsante\", rendendolo inutilizzabile per gli utenti che si affidano agli screen reader. [Ulteriori informazioni](https://web.dev/button-name/)."
+  },
+  "lighthouse-core/audits/accessibility/button-name.js | failureTitle": {
+    "message": "I pulsanti non hanno nomi accessibili"
+  },
+  "lighthouse-core/audits/accessibility/button-name.js | title": {
+    "message": "I pulsanti hanno un nome accessibile"
+  },
+  "lighthouse-core/audits/accessibility/bypass.js | description": {
+    "message": "Se aggiungi metodi per ignorare contenuti ripetitivi, la navigazione della pagina diventa più efficiente per chi usa la tastiera. [Ulteriori informazioni](https://web.dev/bypass/)."
+  },
+  "lighthouse-core/audits/accessibility/bypass.js | failureTitle": {
+    "message": "La pagina non contiene alcun titolo, skip link o area di riferimento"
+  },
+  "lighthouse-core/audits/accessibility/bypass.js | title": {
+    "message": "La pagina contiene un titolo, uno skip link o un'area di riferimento"
+  },
+  "lighthouse-core/audits/accessibility/color-contrast.js | description": {
+    "message": "Il testo a basso contrasto è difficile, se non impossibile, da leggere per molti utenti. [Ulteriori informazioni](https://web.dev/color-contrast/)."
+  },
+  "lighthouse-core/audits/accessibility/color-contrast.js | failureTitle": {
+    "message": "Il rapporto di contrasto tra i colori di sfondo e primo piano non è sufficiente."
+  },
+  "lighthouse-core/audits/accessibility/color-contrast.js | title": {
+    "message": "Il rapporto di contrasto tra i colori di sfondo e primo piano è sufficiente"
+  },
+  "lighthouse-core/audits/accessibility/definition-list.js | description": {
+    "message": "Se il markup degli elenchi di definizioni non è stato eseguito in modo corretto, gli screen reader possono generare risultati ambigui o imprecisi. [Ulteriori informazioni](https://web.dev/definition-list/)."
+  },
+  "lighthouse-core/audits/accessibility/definition-list.js | failureTitle": {
+    "message": "Gli elementi `<dl>` non contengono solo gruppi `<dt>` e `<dd>` ed elementi `<script>` o `<template>` nell'ordine corretto."
+  },
+  "lighthouse-core/audits/accessibility/definition-list.js | title": {
+    "message": "Gli elementi `<dl>` contengono solo gruppi `<dt>` e `<dd>` ed elementi `<script>` o `<template>` nell'ordine corretto."
+  },
+  "lighthouse-core/audits/accessibility/dlitem.js | description": {
+    "message": "Gli elementi dell'elenco di definizioni (`<dt>` e `<dd>`) devono essere aggregati in un elemento `<dl>` principale affinché gli screen reader possano descriverli correttamente. [Ulteriori informazioni](https://web.dev/dlitem/)."
+  },
+  "lighthouse-core/audits/accessibility/dlitem.js | failureTitle": {
+    "message": "Gli elementi dell'elenco di definizioni non sono aggregati negli elementi `<dl>`"
+  },
+  "lighthouse-core/audits/accessibility/dlitem.js | title": {
+    "message": "Gli elementi dell'elenco di definizioni sono aggregati negli elementi `<dl>`"
+  },
+  "lighthouse-core/audits/accessibility/document-title.js | description": {
+    "message": "Il titolo fornisce agli utenti di screen reader una panoramica della pagina, mentre per gli utenti di motori di ricerca è utile per stabilire se una pagina è attinente alla loro ricerca. [Ulteriori informazioni](https://web.dev/document-title/)."
+  },
+  "lighthouse-core/audits/accessibility/document-title.js | failureTitle": {
+    "message": "Il documento non ha un elemento `<title>`"
+  },
+  "lighthouse-core/audits/accessibility/document-title.js | title": {
+    "message": "Il documento ha un elemento `<title>`"
+  },
+  "lighthouse-core/audits/accessibility/duplicate-id.js | description": {
+    "message": "Il valore di un attributo id deve essere univoco per evitare che altre istanze vengano ignorate dalle tecnologie di ausilio per la disabilità. [Ulteriori informazioni](https://web.dev/duplicate-id/)."
+  },
+  "lighthouse-core/audits/accessibility/duplicate-id.js | failureTitle": {
+    "message": "Gli attributi `[id]` nella pagina non sono univoci"
+  },
+  "lighthouse-core/audits/accessibility/duplicate-id.js | title": {
+    "message": "Gli attributi `[id]` nella pagina sono univoci"
+  },
+  "lighthouse-core/audits/accessibility/frame-title.js | description": {
+    "message": "Gli screen reader si affidano ai titoli dei frame per descrivere i contenuti dei frame agli utenti. [Ulteriori informazioni](https://web.dev/frame-title/)."
+  },
+  "lighthouse-core/audits/accessibility/frame-title.js | failureTitle": {
+    "message": "Gli elementi `<frame>` o `<iframe>` non hanno un titolo"
+  },
+  "lighthouse-core/audits/accessibility/frame-title.js | title": {
+    "message": "Gli elementi `<frame>` o `<iframe>` hanno un titolo"
+  },
+  "lighthouse-core/audits/accessibility/html-has-lang.js | description": {
+    "message": "Se per una pagina non viene specificato alcun attributo lang, lo screen reader presuppone che la lingua della pagina sia quella predefinita scelta dall'utente durante la configurazione dello screen reader. Se la lingua della pagina non è effettivamente quella predefinita, lo screen reader potrebbe non pronunciare correttamente il testo della pagina. [Ulteriori informazioni](https://web.dev/html-has-lang/)."
+  },
+  "lighthouse-core/audits/accessibility/html-has-lang.js | failureTitle": {
+    "message": "L'elemento `<html>` non ha un attributo `[lang]`"
+  },
+  "lighthouse-core/audits/accessibility/html-has-lang.js | title": {
+    "message": "L'elemento `<html>` ha un attributo `[lang]`"
+  },
+  "lighthouse-core/audits/accessibility/html-lang-valid.js | description": {
+    "message": "La specifica di una [lingua BCP 47](https://www.w3.org/International/questions/qa-choosing-language-tags#question) valida consente agli screen reader di pronunciare correttamente il testo. [Ulteriori informazioni](https://web.dev/html-lang-valid/)."
+  },
+  "lighthouse-core/audits/accessibility/html-lang-valid.js | failureTitle": {
+    "message": "L'attributo `[lang]` dell'elemento `<html>` non ha un valore valido."
+  },
+  "lighthouse-core/audits/accessibility/html-lang-valid.js | title": {
+    "message": "L'attributo `[lang]` dell'elemento `<html>` ha un valore valido"
+  },
+  "lighthouse-core/audits/accessibility/image-alt.js | description": {
+    "message": "Gli elementi informativi dovrebbero mostrare testo alternativo breve e descrittivo. Gli elementi decorativi possono essere ignorati con un attributo alt vuoto. [Ulteriori informazioni](https://web.dev/image-alt/)."
+  },
+  "lighthouse-core/audits/accessibility/image-alt.js | failureTitle": {
+    "message": "Gli elementi immagine non hanno attributi `[alt]`"
+  },
+  "lighthouse-core/audits/accessibility/image-alt.js | title": {
+    "message": "Gli elementi immagine hanno attributi `[alt]`"
+  },
+  "lighthouse-core/audits/accessibility/input-image-alt.js | description": {
+    "message": "Quando viene utilizzata un'immagine come pulsante `<input>`, fornire del testo alternativo può aiutare gli utenti di screen reader a comprendere lo scopo del pulsante. [Ulteriori informazioni](https://web.dev/input-image-alt/)."
+  },
+  "lighthouse-core/audits/accessibility/input-image-alt.js | failureTitle": {
+    "message": "Gli elementi `<input type=\"image\">` non hanno testo `[alt]`"
+  },
+  "lighthouse-core/audits/accessibility/input-image-alt.js | title": {
+    "message": "Gli elementi `<input type=\"image\">` hanno testo `[alt]`"
+  },
+  "lighthouse-core/audits/accessibility/label.js | description": {
+    "message": "Le etichette consentono di assicurarsi che i comandi dei moduli vengano descritti in modo corretto dalle tecnologie di ausilio per la disabilità, come gli screen reader. [Ulteriori informazioni](https://web.dev/label/)."
+  },
+  "lighthouse-core/audits/accessibility/label.js | failureTitle": {
+    "message": "Gli elementi del modulo non hanno le corrispondenti etichette"
+  },
+  "lighthouse-core/audits/accessibility/label.js | title": {
+    "message": "Gli elementi del modulo sono associati a etichette"
+  },
+  "lighthouse-core/audits/accessibility/layout-table.js | description": {
+    "message": "Una tabella utilizzata per il layout non deve includere elementi di dati, come elementi th, elementi didascalia o l'attributo riepilogo, per evitare di confondere gli utenti di screen reader. [Ulteriori informazioni](https://web.dev/layout-table/)."
+  },
+  "lighthouse-core/audits/accessibility/layout-table.js | failureTitle": {
+    "message": "Gli elementi `<table>` della presentazione non evitano di utilizzare `<th>`, `<caption>` o l'attributo`[summary]`."
+  },
+  "lighthouse-core/audits/accessibility/layout-table.js | title": {
+    "message": "Gli elementi `<table>` della presentazione evitano di utilizzare `<th>`, `<caption>` o l'attributo `[summary]`."
+  },
+  "lighthouse-core/audits/accessibility/link-name.js | description": {
+    "message": "Un testo dei link (incluso il testo alternativo delle immagini, se usate come link) distinguibile, univoco e per cui sia impostabile lo stato attivo migliora l'esperienza di navigazione per gli utenti di screen reader. [Ulteriori informazioni](https://web.dev/link-name/)."
+  },
+  "lighthouse-core/audits/accessibility/link-name.js | failureTitle": {
+    "message": "Il nome dei link non è distinguibile"
+  },
+  "lighthouse-core/audits/accessibility/link-name.js | title": {
+    "message": "I link hanno un nome distinguibile"
+  },
+  "lighthouse-core/audits/accessibility/list.js | description": {
+    "message": "Gli screen reader descrivono gli elenchi in un determinato modo. Una struttura dell'elenco corretta agevola il compito dello screen reader. [Ulteriori informazioni](https://web.dev/list/)."
+  },
+  "lighthouse-core/audits/accessibility/list.js | failureTitle": {
+    "message": "Gli elenchi non contengono solo elementi `<li>` ed elementi che supportano script (`<script>` e `<template>`)."
+  },
+  "lighthouse-core/audits/accessibility/list.js | title": {
+    "message": "Gli elenchi contengono solo elementi `<li>` ed elementi che supportano gli script (`<script>` e `<template>`)."
+  },
+  "lighthouse-core/audits/accessibility/listitem.js | description": {
+    "message": "Gli screen reader richiedono che gli elementi dell'elenco (`<li>`) siano contenuti in un elemento `<ul>` o `<ol>` principale per poterli descrivere in modo corretto. [Ulteriori informazioni](https://web.dev/listitem/)."
+  },
+  "lighthouse-core/audits/accessibility/listitem.js | failureTitle": {
+    "message": "Gli elementi dell'elenco (`<li>`) non sono contenuti in elementi principali `<ul>` o `<ol>`."
+  },
+  "lighthouse-core/audits/accessibility/listitem.js | title": {
+    "message": "Gli elementi dell'elenco (`<li>`) sono contenuti in elementi principali `<ul>` o `<ol>`"
+  },
+  "lighthouse-core/audits/accessibility/meta-refresh.js | description": {
+    "message": "L'aggiornamento automatico della pagina è un evento imprevisto per l'utente e, una volta verificatosi, imposta di nuovo lo stato attivo sulla parte superiore della pagina. Ciò può costituire motivo di frustrazione o confusione per l'utente. [Ulteriori informazioni](https://web.dev/meta-refresh/)."
+  },
+  "lighthouse-core/audits/accessibility/meta-refresh.js | failureTitle": {
+    "message": "Il documento usa `<meta http-equiv=\"refresh\">`"
+  },
+  "lighthouse-core/audits/accessibility/meta-refresh.js | title": {
+    "message": "Il documento non usa `<meta http-equiv=\"refresh\">`"
+  },
+  "lighthouse-core/audits/accessibility/meta-viewport.js | description": {
+    "message": "Disattivare lo zoom è problematico per gli utenti ipovedenti che si affidano all'ingrandimento dello schermo per vedere in modo chiaro i contenuti di una pagina web. [Ulteriori informazioni](https://web.dev/meta-viewport/)."
+  },
+  "lighthouse-core/audits/accessibility/meta-viewport.js | failureTitle": {
+    "message": "`[user-scalable=\"no\"]` viene usato nell'elemento `<meta name=\"viewport\">` o l'attributo `[maximum-scale]` è inferiore a 5."
+  },
+  "lighthouse-core/audits/accessibility/meta-viewport.js | title": {
+    "message": "`[user-scalable=\"no\"]` non viene usato nell'elemento `<meta name=\"viewport\">` e l'attributo `[maximum-scale]` non è inferiore a 5."
+  },
+  "lighthouse-core/audits/accessibility/object-alt.js | description": {
+    "message": "Gli screen reader non possono tradurre contenuti non testuali. Aggiungere testo alternativo agli elementi `<object>` aiuta gli screen reader a comunicare il significato agli utenti. [Ulteriori informazioni](https://web.dev/object-alt/)."
+  },
+  "lighthouse-core/audits/accessibility/object-alt.js | failureTitle": {
+    "message": "Gli elementi `<object>` non hanno testo `[alt]`"
+  },
+  "lighthouse-core/audits/accessibility/object-alt.js | title": {
+    "message": "Gli elementi `<object>` hanno testo `[alt]`"
+  },
+  "lighthouse-core/audits/accessibility/tabindex.js | description": {
+    "message": "Un valore maggiore di 0 implica un ordine di navigazione esplicito. Sebbene sia tecnicamente valido, spesso genera un'esperienza frustrante per gli utenti che usano tecnologie di ausilio per la disabilità. [Ulteriori informazioni](https://web.dev/tabindex/)."
+  },
+  "lighthouse-core/audits/accessibility/tabindex.js | failureTitle": {
+    "message": "Alcuni elementi hanno un valore `[tabindex]` maggiore di 0"
+  },
+  "lighthouse-core/audits/accessibility/tabindex.js | title": {
+    "message": "Nessun elemento ha un valore `[tabindex]` maggiore di 0"
+  },
+  "lighthouse-core/audits/accessibility/td-headers-attr.js | description": {
+    "message": "Gli screen reader sono dotati di funzionalità che semplificano lo spostamento nelle tabelle. Se ti assicuri che le celle `<td>` che usano l'attributo `[headers]` facciano riferimento esclusivamente ad altre celle nella stessa tabella puoi migliorare l'esperienza degli utenti di screen reader. [Ulteriori informazioni](https://web.dev/td-headers-attr/)."
+  },
+  "lighthouse-core/audits/accessibility/td-headers-attr.js | failureTitle": {
+    "message": "Le celle in un elemento `<table>` che utilizzano l'attributo `[headers]` fanno riferimento ad altre celle della stessa tabella."
+  },
+  "lighthouse-core/audits/accessibility/td-headers-attr.js | title": {
+    "message": "Le celle in un elemento `<table>` che utilizzano l'attributo `[headers]` fanno riferimento esclusivamente ad altre celle della stessa tabella."
+  },
+  "lighthouse-core/audits/accessibility/th-has-data-cells.js | description": {
+    "message": "Gli screen reader sono dotati di funzionalità che semplificano lo spostamento nelle tabelle. Se ti assicuri che le intestazioni delle tabelle facciano sempre riferimento a un insieme di celle puoi migliorare l'esperienza degli utenti di screen reader. [Ulteriori informazioni](https://web.dev/th-has-data-cells/)."
+  },
+  "lighthouse-core/audits/accessibility/th-has-data-cells.js | failureTitle": {
+    "message": "Gli elementi `<th>` e gli elementi con `[role=\"columnheader\"/\"rowheader\"]` non hanno le celle di dati da essi descritte."
+  },
+  "lighthouse-core/audits/accessibility/th-has-data-cells.js | title": {
+    "message": "Gli elementi `<th>` e gli elementi con ruolo `[role=\"columnheader\"/\"rowheader\"]` hanno le celle di dati da essi descritte."
+  },
+  "lighthouse-core/audits/accessibility/valid-lang.js | description": {
+    "message": "La specifica di una [lingua BCP 47](https://www.w3.org/International/questions/qa-choosing-language-tags#question) valida per gli elementi consente di assicurarsi che il testo sia pronunciato correttamente dallo screen reader. [Ulteriori informazioni](https://web.dev/valid-lang/)."
+  },
+  "lighthouse-core/audits/accessibility/valid-lang.js | failureTitle": {
+    "message": "Gli attributi `[lang]` non hanno un valore valido"
+  },
+  "lighthouse-core/audits/accessibility/valid-lang.js | title": {
+    "message": "Gli attributi `[lang]` hanno un valore valido"
+  },
+  "lighthouse-core/audits/accessibility/video-caption.js | description": {
+    "message": "Se un video ha i sottotitoli, per i non udenti o gli utenti con problemi di udito è più facile accedere alle relative informazioni. [Ulteriori informazioni](https://web.dev/video-caption/)."
+  },
+  "lighthouse-core/audits/accessibility/video-caption.js | failureTitle": {
+    "message": "Gli elementi `<video>` non contengono un elemento `<track>` con `[kind=\"captions\"]`."
+  },
+  "lighthouse-core/audits/accessibility/video-caption.js | title": {
+    "message": "Gli elementi `<video>` contengono un elemento `<track>` con `[kind=\"captions\"]`"
+  },
+  "lighthouse-core/audits/accessibility/video-description.js | description": {
+    "message": "Le descrizioni audio forniscono informazioni importanti che il dialogo non può trasmettere, come espressioni facciali e scene. [Ulteriori informazioni](https://web.dev/video-description/)."
+  },
+  "lighthouse-core/audits/accessibility/video-description.js | failureTitle": {
+    "message": "Gli elementi `<video>` non contengono un elemento `<track>` con `[kind=\"description\"]`."
+  },
+  "lighthouse-core/audits/accessibility/video-description.js | title": {
+    "message": "Gli elementi `<video>` contengono un elemento `<track>` con `[kind=\"description\"]`"
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | description": {
+    "message": "Per una visualizzazione ottimale su iOS quando gli utenti aggiungono un'applicazione web progressiva alla schermata Home, definisci un elemento `apple-touch-icon`, che deve rimandare a un'immagine PNG quadrata di 192 px (o 180 px) non trasparente. [Ulteriori informazioni](https://developers.google.com/web/fundamentals/design-and-ux/browser-customization/)."
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | failureTitle": {
+    "message": "Non fornisce un valore `apple-touch-icon` valido"
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | precomposedWarning": {
+    "message": "Il valore `apple-touch-icon-precomposed` è obsoleto, pertanto è preferibile usare `apple-touch-icon`."
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | title": {
+    "message": "Fornisce un valore `apple-touch-icon` valido"
+  },
+  "lighthouse-core/audits/bootup-time.js | chromeExtensionsWarning": {
+    "message": "Le estensioni di Chrome incidono negativamente sulle prestazioni di caricamento di questa pagina. Prova a controllare la pagina in modalità di navigazione in incognito o da un profilo Chrome senza estensioni."
+  },
+  "lighthouse-core/audits/bootup-time.js | columnScriptEval": {
+    "message": "Valutazione degli script"
+  },
+  "lighthouse-core/audits/bootup-time.js | columnScriptParse": {
+    "message": "Analisi script"
+  },
+  "lighthouse-core/audits/bootup-time.js | columnTotal": {
+    "message": "Tempo di CPU totale"
+  },
+  "lighthouse-core/audits/bootup-time.js | description": {
+    "message": "Potresti ridurre i tempi di analisi, compilazione ed esecuzione di JavaScript. A tale scopo potrebbe essere utile pubblicare payload JavaScript di dimensioni inferiori. [Ulteriori informazioni](https://developers.google.com/web/tools/lighthouse/audits/bootup)."
+  },
+  "lighthouse-core/audits/bootup-time.js | failureTitle": {
+    "message": "Riduci il tempo di esecuzione di JavaScript"
+  },
+  "lighthouse-core/audits/bootup-time.js | title": {
+    "message": "Tempo di esecuzione JavaScript"
+  },
+  "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | description": {
+    "message": "I file GIF di grandi dimensioni non sono efficaci per la pubblicazione di contenuti animati. Anziché il formato GIF potresti usare video MPEG4/WebM per le animazioni e PNG/WebP per le immagini statiche. In questo modo userai meno byte di rete. [Ulteriori informazioni](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/replace-animated-gifs-with-video/)"
+  },
+  "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | title": {
+    "message": "Usa formati video per i contenuti animati"
+  },
+  "lighthouse-core/audits/byte-efficiency/offscreen-images.js | description": {
+    "message": "Potresti usare il caricamento lento per le immagini fuori schermo e nascoste al termine del caricamento di tutte le risorse fondamentali per ridurre il tempo necessario per la completa interattività. [Ulteriori informazioni](https://developers.google.com/web/tools/lighthouse/audits/offscreen-images)."
+  },
+  "lighthouse-core/audits/byte-efficiency/offscreen-images.js | title": {
+    "message": "Rimanda immagini fuori schermo"
+  },
+  "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | description": {
+    "message": "Alcune risorse bloccano la prima visualizzazione della pagina. Potresti pubblicare le risorse JS/CSS fondamentali incorporate e rimandare tutte le risorse JS/styles non fondamentali. [Ulteriori informazioni](https://developers.google.com/web/tools/lighthouse/audits/blocking-resources)."
+  },
+  "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | title": {
+    "message": "Elimina le risorse di blocco della visualizzazione"
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | description": {
+    "message": "I payload di rete di grandi dimensioni comportano costi reali per gli utenti e sono strettamente correlati a lunghi tempi di caricamento. [Ulteriori informazioni](https://developers.google.com/web/tools/lighthouse/audits/network-payloads)."
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | displayValue": {
+    "message": "Dimensioni totali: {totalBytes, number, bytes} kB"
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | failureTitle": {
+    "message": "Evita payload di rete enormi"
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | title": {
+    "message": "Vengono evitati payload di rete enormi"
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-css.js | description": {
+    "message": "Minimizza i file CSS per ridurre le dimensioni dei payload di rete. [Ulteriori informazioni](https://developers.google.com/web/tools/lighthouse/audits/minify-css)."
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-css.js | title": {
+    "message": "Minimizza CSS"
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | description": {
+    "message": "Minimizza i file JavaScript per ridurre le dimensioni dei payload e i tempi di analisi degli script. [Ulteriori informazioni](https://developers.google.com/speed/docs/insights/MinifyResources)."
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | title": {
+    "message": "Minimizza JavaScript"
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | description": {
+    "message": "Rimuovi le regole non valide dai fogli di stile e rimanda il caricamento dei CSS non utilizzati per i contenuti above the fold per ridurre i byte inutili consumati dall'attività di rete. [Ulteriori informazioni](https://developers.google.com/web/tools/lighthouse/audits/unused-css)."
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | title": {
+    "message": "Rimuovi il CSS inutilizzato"
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-javascript.js | description": {
+    "message": "Rimuovi il codice JavaScript inutilizzato per ridurre i byte consumati dall'attività di rete."
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-javascript.js | title": {
+    "message": "Rimuovi il codice JavaScript inutilizzato"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | description": {
+    "message": "La memorizzazione nella cache per un lungo periodo di tempo può velocizzare le visite abituali alla tua pagina. [Ulteriori informazioni](https://developers.google.com/web/tools/lighthouse/audits/cache-policy)."
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 risorsa trovata}other{# risorse trovate}}"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | failureTitle": {
+    "message": "Pubblica le risorse statiche con criteri della cache efficaci"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | title": {
+    "message": "Vengono usati criteri della cache efficaci per le risorse statiche"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | description": {
+    "message": "Le immagini ottimizzate vengono caricate più velocemente e consumano meno traffico della rete dati. [Ulteriori informazioni](https://developers.google.com/web/tools/lighthouse/audits/optimize-images)."
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | title": {
+    "message": "Codifica in modo efficace le immagini"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | description": {
+    "message": "Pubblica immagini di dimensioni adeguate per consumare meno traffico della rete dati e ridurre i tempi di caricamento. [Ulteriori informazioni](https://developers.google.com/web/tools/lighthouse/audits/oversized-images)."
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | title": {
+    "message": "Usa immagini di dimensioni adeguate"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | description": {
+    "message": "Le risorse basate sul testo dovrebbero essere pubblicate con compressione (gzip, deflate o brotli) per ridurre al minimo il numero totale di byte di rete. [Ulteriori informazioni](https://developers.google.com/web/tools/lighthouse/audits/text-compression)."
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | title": {
+    "message": "Attiva la compressione del testo"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | description": {
+    "message": "I formati delle immagini come JPEG 2000, JPEG XR e WebP spesso consentono una compressione migliore rispetto a quella dei formati PNG o JPEG, che comporta download più veloci e un minor consumo di dati. [Ulteriori informazioni](https://developers.google.com/web/tools/lighthouse/audits/webp)."
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | title": {
+    "message": "Pubblica immagini in formati più recenti"
+  },
+  "lighthouse-core/audits/content-width.js | description": {
+    "message": "Se la larghezza dei contenuti dell'app non corrisponde alla larghezza dell'area visibile, l'app potrebbe non essere ottimizzata per gli schermi dei dispositivi mobili. [Ulteriori informazioni](https://developers.google.com/web/tools/lighthouse/audits/content-sized-correctly-for-viewport)."
+  },
+  "lighthouse-core/audits/content-width.js | explanation": {
+    "message": "Le dimensioni di {innerWidth} px dell'area visibile non corrispondono alle dimensioni di {outerWidth} px della finestra."
+  },
+  "lighthouse-core/audits/content-width.js | failureTitle": {
+    "message": "Le dimensioni dei contenuti non sono corrette per l'area visibile"
+  },
+  "lighthouse-core/audits/content-width.js | title": {
+    "message": "Le dimensioni dei contenuti sono corrette per l'area visibile"
+  },
+  "lighthouse-core/audits/critical-request-chains.js | description": {
+    "message": "Nella sezione Catene di richieste fondamentali indicata di seguito vengono mostrate le risorse caricate con priorità elevata. Potresti ridurre la lunghezza delle catene e le dimensioni del download delle risorse oppure rimandare il download delle risorse non necessarie per velocizzare il caricamento della pagina. [Ulteriori informazioni](https://developers.google.com/web/tools/lighthouse/audits/critical-request-chains)."
+  },
+  "lighthouse-core/audits/critical-request-chains.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 catena trovata}other{# catene trovate}}"
+  },
+  "lighthouse-core/audits/critical-request-chains.js | title": {
+    "message": "Riduci al minimo la profondità delle richieste fondamentali"
+  },
+  "lighthouse-core/audits/deprecations.js | columnDeprecate": {
+    "message": "Ritiro/avviso"
+  },
+  "lighthouse-core/audits/deprecations.js | columnLine": {
+    "message": "Riga"
+  },
+  "lighthouse-core/audits/deprecations.js | description": {
+    "message": "Le API obsolete verranno rimosse dal browser prima o poi. [Ulteriori informazioni](https://web.dev/deprecations)."
+  },
+  "lighthouse-core/audits/deprecations.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 avviso trovato}other{# avvisi trovati}}"
+  },
+  "lighthouse-core/audits/deprecations.js | failureTitle": {
+    "message": "Usa API obsolete"
+  },
+  "lighthouse-core/audits/deprecations.js | title": {
+    "message": "Evita le API obsolete"
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | description": {
+    "message": "L'API Cache applicazione è obsoleta. [Ulteriori informazioni](https://web.dev/appcache-manifest)."
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | displayValue": {
+    "message": "\"{AppCacheManifest}\" trovato"
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | failureTitle": {
+    "message": "Usa l'API Cache applicazione"
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | title": {
+    "message": "Evita l'API Cache applicazione"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | description": {
+    "message": "La specifica di un doctype impedisce al browser di passare alla modalità non standard. [Ulteriori informazioni](https://web.dev/doctype)."
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationBadDoctype": {
+    "message": "Il nome del doctype deve essere la stringa minuscola `html`"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationNoDoctype": {
+    "message": "Il documento deve contenere un doctype"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationPublicId": {
+    "message": "Il campo publicId dovrebbe essere vuoto"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationSystemId": {
+    "message": "Il campo systemId dovrebbe essere vuoto"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | failureTitle": {
+    "message": "Nella pagina manca il doctype HTML e viene quindi attivata la modalità non standard"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | title": {
+    "message": "La pagina ha il doctype HTML"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | columnElement": {
+    "message": "Elemento"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | columnStatistic": {
+    "message": "Statistica"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | columnValue": {
+    "message": "Valore"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | description": {
+    "message": "Gli ingegneri che si occupano dei browser consigliano di usare meno di ~1500 elementi DOM per le pagine. L'ideale sarebbe una struttura ad albero con profondità di < 32 elementi e meno di 60 elementi secondari/principali. Un DOM di grandi dimensioni può aumentare l'utilizzo di memoria, causare [calcoli di stile](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations) più lunghi e generare costosi [adattamenti dinamici del layout](https://developers.google.com/speed/articles/reflow). [Ulteriori informazioni](https://web.dev/dom-size)."
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 elemento}other{# elementi}}"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | failureTitle": {
+    "message": "Evita di usare un DOM di dimensioni eccessive"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | statisticDOMDepth": {
+    "message": "Profondità massima DOM"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | statisticDOMElements": {
+    "message": "Elementi DOM totali"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | statisticDOMWidth": {
+    "message": "Elementi secondari massimi"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | title": {
+    "message": "Viene evitato un DOM di dimensioni eccessive"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | columnRel": {
+    "message": "Rel"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | columnTarget": {
+    "message": "Target"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | description": {
+    "message": "Aggiungi `rel=\"noopener\"` o `rel=\"noreferrer\"` a eventuali link esterni per migliorare le prestazioni ed evitare vulnerabilità di sicurezza. [Ulteriori informazioni](https://web.dev/external-anchors-use-rel-noopener)."
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | failureTitle": {
+    "message": "I link che rimandano a destinazioni multiorigine non sono sicuri"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | title": {
+    "message": "I link che rimandano a destinazioni multiorigine sono sicuri"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | warning": {
+    "message": "Impossibile stabilire la destinazione dell'ancoraggio ({anchorHTML}). Se non viene usato come link ipertestuale, potresti rimuovere target=_blank."
+  },
+  "lighthouse-core/audits/dobetterweb/geolocation-on-start.js | description": {
+    "message": "Gli utenti sono sospettosi nei confronti dei siti che chiedono la loro posizione senza contesto o sono confusi da tali siti. Potresti associare la richiesta a un'azione dell'utente. [Ulteriori informazioni](https://web.dev/geolocation-on-start)."
+  },
+  "lighthouse-core/audits/dobetterweb/geolocation-on-start.js | failureTitle": {
+    "message": "Chiede l'autorizzazione alla geolocalizzazione durante il caricamento della pagina"
+  },
+  "lighthouse-core/audits/dobetterweb/geolocation-on-start.js | title": {
+    "message": "Evita di chiedere l'autorizzazione alla geolocalizzazione durante il caricamento della pagina"
+  },
+  "lighthouse-core/audits/dobetterweb/js-libraries.js | columnVersion": {
+    "message": "Versione"
+  },
+  "lighthouse-core/audits/dobetterweb/js-libraries.js | description": {
+    "message": "Tutte le librerie JavaScript front-end rilevate nella pagina. [Ulteriori informazioni](https://web.dev/js-libraries)."
+  },
+  "lighthouse-core/audits/dobetterweb/js-libraries.js | title": {
+    "message": "Librerie JavaScript rilevate"
+  },
+  "lighthouse-core/audits/dobetterweb/no-document-write.js | description": {
+    "message": "Per gli utenti con connessioni lente, gli script esterni inseriti in modo dinamico tramite `document.write()` potrebbero ritardare il caricamento della pagina di decine di secondi. [Ulteriori informazioni](https://web.dev/no-document-write)."
+  },
+  "lighthouse-core/audits/dobetterweb/no-document-write.js | failureTitle": {
+    "message": "Usa `document.write()`"
+  },
+  "lighthouse-core/audits/dobetterweb/no-document-write.js | title": {
+    "message": "Evita `document.write()`"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | columnSeverity": {
+    "message": "Massima gravità"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | columnVersion": {
+    "message": "Versione libreria"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | columnVuln": {
+    "message": "Numero di vulnerabilità"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | description": {
+    "message": "Alcuni script di terze parti potrebbero contenere vulnerabilità di sicurezza note facilmente identificate e sfruttate dai malintenzionati. [Ulteriori informazioni](https://web.dev/no-vulnerable-libraries)."
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 vulnerabilità rilevata}other{# vulnerabilità rilevate}}"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | failureTitle": {
+    "message": "Include librerie JavaScript front-end con vulnerabilità di sicurezza note"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | rowSeverityHigh": {
+    "message": "Alta"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | rowSeverityLow": {
+    "message": "Bassa"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | rowSeverityMedium": {
+    "message": "Media"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | title": {
+    "message": "Evita librerie JavaScript front-end con vulnerabilità di sicurezza note"
+  },
+  "lighthouse-core/audits/dobetterweb/notification-on-start.js | description": {
+    "message": "Gli utenti sono sospettosi nei confronti dei siti che chiedono di inviare notifiche senza contesto o sono confusi da tali siti. Potresti associare la richiesta ai gesti dell'utente. [Ulteriori informazioni](https://web.dev/notification-on-start)."
+  },
+  "lighthouse-core/audits/dobetterweb/notification-on-start.js | failureTitle": {
+    "message": "Chiede l'autorizzazione di accesso alle notifiche durante il caricamento della pagina"
+  },
+  "lighthouse-core/audits/dobetterweb/notification-on-start.js | title": {
+    "message": "Evita di chiedere l'autorizzazione di accesso alle notifiche durante il caricamento della pagina"
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | columnFailingElem": {
+    "message": "Elementi che non consentono di incollare"
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | description": {
+    "message": "Impedire di incollare le password pregiudica l'efficacia delle norme di sicurezza. [Ulteriori informazioni](https://web.dev/password-inputs-can-be-pasted-into)."
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | failureTitle": {
+    "message": "Impedisce agli utenti di incollare contenuti nei campi delle password"
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | title": {
+    "message": "Consente agli utenti di incollare contenuti nei campi delle password"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | columnProtocol": {
+    "message": "Protocollo"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | description": {
+    "message": "HTTP/2 offre tanti vantaggi rispetto a HTTP/1.1, tra cui intestazioni binarie, multiplexing e push del server. [Ulteriori informazioni](https://web.dev/uses-http2)."
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 richiesta non pubblicata tramite HTTP/2}other{# richieste non pubblicate tramite HTTP/2}}"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | failureTitle": {
+    "message": "Non usa HTTP/2 per tutte le sue risorse"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | title": {
+    "message": "Usa HTTP/2 per le proprie risorse"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-passive-event-listeners.js | description": {
+    "message": "Potresti contrassegnare i listener di eventi di tocco e rotellina come `passive` per migliorare le prestazioni di scorrimento della pagina. [Ulteriori informazioni](https://web.dev/uses-passive-event-listeners)."
+  },
+  "lighthouse-core/audits/dobetterweb/uses-passive-event-listeners.js | failureTitle": {
+    "message": "Non usa listener passivi per migliorare le prestazioni dello scorrimento"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-passive-event-listeners.js | title": {
+    "message": "Usa listener passivi per migliorare le prestazioni dello scorrimento"
+  },
+  "lighthouse-core/audits/errors-in-console.js | columnDesc": {
+    "message": "Descrizione"
+  },
+  "lighthouse-core/audits/errors-in-console.js | description": {
+    "message": "Gli errori registrati nella console indicano la presenza di problemi irrisolti che potrebbero riguardare richieste di rete non andate a buon fine e altri problemi del browser. [Ulteriori informazioni](https://web.dev/errors-in-console)"
+  },
+  "lighthouse-core/audits/errors-in-console.js | failureTitle": {
+    "message": "Gli errori del browser sono stati registrati nella console"
+  },
+  "lighthouse-core/audits/errors-in-console.js | title": {
+    "message": "Nessun errore del browser registrato nella console"
+  },
+  "lighthouse-core/audits/font-display.js | description": {
+    "message": "Usa la funzionalità CSS font-display per assicurarti che il testo sia visibile agli utenti durante il caricamento dei caratteri web. [Ulteriori informazioni](https://developers.google.com/web/updates/2016/02/font-display)."
+  },
+  "lighthouse-core/audits/font-display.js | failureTitle": {
+    "message": "Assicurati che il testo rimanga visibile durante il caricamento dei caratteri web"
+  },
+  "lighthouse-core/audits/font-display.js | title": {
+    "message": "Tutto il testo rimane visibile durante il caricamento dei caratteri web"
+  },
+  "lighthouse-core/audits/font-display.js | undeclaredFontURLWarning": {
+    "message": "Impossibile controllare automaticamente in Lighthouse il valore font-display del seguente URL: {fontURL}."
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | columnActual": {
+    "message": "Proporzioni (effettive)"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | columnDisplayed": {
+    "message": "Proporzioni (visualizzate)"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | description": {
+    "message": "Le dimensioni di visualizzazione delle immagini dovrebbero corrispondere alle proporzioni naturali. [Ulteriori informazioni](https://web.dev/image-aspect-ratio)."
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | failureTitle": {
+    "message": "Visualizza immagini con proporzioni errate"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | title": {
+    "message": "Visualizza immagini con proporzioni corrette"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | warningCompute": {
+    "message": "Informazioni sulle dimensioni dell'immagine {url} non valide"
+  },
+  "lighthouse-core/audits/installable-manifest.js | description": {
+    "message": "I browser possono chiedere proattivamente agli utenti di aggiungere la tua app alla schermata Home, che potrebbe comportare un maggiore coinvolgimento. [Ulteriori informazioni](https://developers.google.com/web/tools/lighthouse/audits/install-prompt)."
+  },
+  "lighthouse-core/audits/installable-manifest.js | failureTitle": {
+    "message": "Il file manifest dell'applicazione web non soddisfa i requisiti di installabilità"
+  },
+  "lighthouse-core/audits/installable-manifest.js | title": {
+    "message": "Il file manifest dell'applicazione web soddisfa i requisiti di installabilità"
+  },
+  "lighthouse-core/audits/is-on-https.js | columnInsecureURL": {
+    "message": "URL non sicuro"
+  },
+  "lighthouse-core/audits/is-on-https.js | description": {
+    "message": "Tutti i siti dovrebbero essere protetti con HTTPS, anche quelli che non trattano dati sensibili. HTTPS impedisce agli intrusi di manomettere o ascoltare passivamente le comunicazioni tra la tua app e i tuoi utenti ed è un prerequisito per HTTP/2 e tante nuove API delle piattaforme web. [Ulteriori informazioni](https://web.dev/is-on-https)."
+  },
+  "lighthouse-core/audits/is-on-https.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 richiesta non sicura trovata}other{# richieste non sicure trovate}}"
+  },
+  "lighthouse-core/audits/is-on-https.js | failureTitle": {
+    "message": "Non usa HTTPS"
+  },
+  "lighthouse-core/audits/is-on-https.js | title": {
+    "message": "Usa HTTPS"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | description": {
+    "message": "Il caricamento veloce delle pagine su una rete cellulare assicura una buona esperienza utente sui dispositivi mobili. [Ulteriori informazioni](https://developers.google.com/web/tools/lighthouse/audits/fast-3g)."
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | displayValueText": {
+    "message": "Interattiva a {timeInMs, number, seconds} s"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | displayValueTextWithOverride": {
+    "message": "Interattiva su una rete mobile simulata a {timeInMs, number, seconds} s"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | explanationLoadSlow": {
+    "message": "La pagina viene caricata troppo lentamente e non diventa interattiva entro 10 secondi. Controlla le opportunità e i dati diagnostici della sezione \"Prestazioni\" per avere informazioni su come migliorare."
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | failureTitle": {
+    "message": "Il caricamento della pagina non è abbastanza veloce sulle reti mobili"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | title": {
+    "message": "Il caricamento della pagina è abbastanza veloce sulle reti mobili"
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | columnCategory": {
+    "message": "Categoria"
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | description": {
+    "message": "Potresti ridurre i tempi di analisi, compilazione ed esecuzione di JS. A tale scopo potrebbe essere utile pubblicare payload JS di dimensioni inferiori."
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | failureTitle": {
+    "message": "Riduci al minimo il lavoro del thread principale"
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | title": {
+    "message": "Il lavoro del thread principale è ridotto al minimo"
+  },
+  "lighthouse-core/audits/manual/pwa-cross-browser.js | description": {
+    "message": "Per raggiungere il maggior numero di utenti, i siti dovrebbero funzionare su ogni browser più usato. [Ulteriori informazioni](https://developers.google.com/web/progressive-web-apps/checklist#site-works-cross-browser)."
+  },
+  "lighthouse-core/audits/manual/pwa-cross-browser.js | title": {
+    "message": "Il sito funziona su più browser"
+  },
+  "lighthouse-core/audits/manual/pwa-each-page-has-url.js | description": {
+    "message": "Assicurati che le singole pagine siano collegabili tramite link diretti sotto forma di URL e che gli URL siano univoci per la condivisione sui social media. [Ulteriori informazioni](https://developers.google.com/web/progressive-web-apps/checklist#each-page-has-a-url)."
+  },
+  "lighthouse-core/audits/manual/pwa-each-page-has-url.js | title": {
+    "message": "Ogni pagina ha un URL"
+  },
+  "lighthouse-core/audits/manual/pwa-page-transitions.js | description": {
+    "message": "Le transizioni dovrebbero sembrare rapide mentre esegui i tocchi, anche con una rete lenta. Questo fattore incide sulle prestazioni percepite. [Ulteriori informazioni](https://developers.google.com/web/progressive-web-apps/checklist#page-transitions-dont-feel-like-they-block-on-the-network)."
+  },
+  "lighthouse-core/audits/manual/pwa-page-transitions.js | title": {
+    "message": "Non sembra che le transizioni di pagina si blocchino sulla rete"
+  },
+  "lighthouse-core/audits/metrics/estimated-input-latency.js | description": {
+    "message": "La metrica Latenza input stimata fornisce una stima del tempo impiegato dall'app, espresso in millisecondi, per rispondere all'input dell'utente durante il periodo di 5 s più impegnativo del caricamento della pagina. Se la latenza è superiore a 50 ms, gli utenti potrebbero considerare lenta la tua app. [Ulteriori informazioni](https://developers.google.com/web/tools/lighthouse/audits/estimated-input-latency)."
+  },
+  "lighthouse-core/audits/metrics/estimated-input-latency.js | title": {
+    "message": "Latenza input stimata"
+  },
+  "lighthouse-core/audits/metrics/first-contentful-paint.js | description": {
+    "message": "La metrica First Contentful Paint (prima visualizzazione con contenuti) indica il momento in cui vengono visualizzati il primo testo o la prima immagine. [Ulteriori informazioni](https://developers.google.com/web/tools/lighthouse/audits/first-contentful-paint)."
+  },
+  "lighthouse-core/audits/metrics/first-contentful-paint.js | title": {
+    "message": "Visualizzazione dei primi contenuti"
+  },
+  "lighthouse-core/audits/metrics/first-cpu-idle.js | description": {
+    "message": "La metrica Prima inattività CPU indica la prima volta in cui il thread principale della pagina è abbastanza tranquillo da poter gestire l'input. [Ulteriori informazioni](https://developers.google.com/web/tools/lighthouse/audits/first-interactive)."
+  },
+  "lighthouse-core/audits/metrics/first-cpu-idle.js | title": {
+    "message": "Prima inattività CPU"
+  },
+  "lighthouse-core/audits/metrics/first-meaningful-paint.js | description": {
+    "message": "La metrica First Meaningful Paint (visualizzazione primo elemento utile) indica quando diventano visibili i contenuti principali di una pagina. [Ulteriori informazioni](https://developers.google.com/web/tools/lighthouse/audits/first-meaningful-paint)."
+  },
+  "lighthouse-core/audits/metrics/first-meaningful-paint.js | title": {
+    "message": "Visualizzazione primi contenuti utili"
+  },
+  "lighthouse-core/audits/metrics/interactive.js | description": {
+    "message": "La metrica Tempo all'interattività indica il tempo necessario affinché la pagina diventi completamente interattiva. [Ulteriori informazioni](https://developers.google.com/web/tools/lighthouse/audits/consistently-interactive)."
+  },
+  "lighthouse-core/audits/metrics/interactive.js | title": {
+    "message": "Tempo per interattività"
+  },
+  "lighthouse-core/audits/metrics/max-potential-fid.js | description": {
+    "message": "Il potenziale ritardo prima interazione massimo che i tuoi utenti potrebbero riscontrare è la durata, in millisecondi, del task più lungo. [Ulteriori informazioni](https://developers.google.com/web/updates/2018/05/first-input-delay)."
+  },
+  "lighthouse-core/audits/metrics/max-potential-fid.js | title": {
+    "message": "Ritardo prima interazione potenziale max"
+  },
+  "lighthouse-core/audits/metrics/speed-index.js | description": {
+    "message": "La metrica Indice velocità mostra la velocità con cui diventano visibili i contenuti di una pagina. [Ulteriori informazioni](https://developers.google.com/web/tools/lighthouse/audits/speed-index)."
+  },
+  "lighthouse-core/audits/metrics/speed-index.js | title": {
+    "message": "Indice velocità"
+  },
+  "lighthouse-core/audits/metrics/total-blocking-time.js | description": {
+    "message": "Somma di tutti i periodi di tempo, espressi in millisecondi, tra FCP e Tempo all'interattività, quando la durata del task ha superato 50 ms."
+  },
+  "lighthouse-core/audits/metrics/total-blocking-time.js | title": {
+    "message": "Tempo di blocco totale"
+  },
+  "lighthouse-core/audits/network-rtt.js | description": {
+    "message": "I tempi di round trip della rete (RTT) influiscono notevolmente sulle prestazioni. Quando l'RTT verso un'origine è elevato, significa che i server più vicini all'utente potrebbero migliorare le prestazioni. [Ulteriori informazioni](https://hpbn.co/primer-on-latency-and-bandwidth/)."
+  },
+  "lighthouse-core/audits/network-rtt.js | title": {
+    "message": "Tempi di round trip della rete"
+  },
+  "lighthouse-core/audits/network-server-latency.js | description": {
+    "message": "Le latenze dei server possono influire sulle prestazioni del Web. Quando la latenza del server di un'origine è elevata, significa che il server è sovraccarico oppure ha prestazioni di backend scadenti. [Ulteriori informazioni](https://hpbn.co/primer-on-web-performance/#analyzing-the-resource-waterfall)."
+  },
+  "lighthouse-core/audits/network-server-latency.js | title": {
+    "message": "Latenze server backend"
+  },
+  "lighthouse-core/audits/offline-start-url.js | description": {
+    "message": "Un service worker rende la tua applicazione web affidabile in condizioni di rete imprevedibili. [Ulteriori informazioni](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)."
+  },
+  "lighthouse-core/audits/offline-start-url.js | failureTitle": {
+    "message": "`start_url` non risponde con un codice 200 quando è offline"
+  },
+  "lighthouse-core/audits/offline-start-url.js | title": {
+    "message": "`start_url` risponde con un codice 200 quando è offline"
+  },
+  "lighthouse-core/audits/offline-start-url.js | warningCantStart": {
+    "message": "Impossibile leggere `start_url` dal file manifest in Lighthouse. Di conseguenza si presume che `start_url` sia l'URL del documento. Messaggio di errore: \"{manifestWarning}\"."
+  },
+  "lighthouse-core/audits/performance-budget.js | columnOverBudget": {
+    "message": "Oltre il budget"
+  },
+  "lighthouse-core/audits/performance-budget.js | description": {
+    "message": "Mantieni la quantità e le dimensioni delle richieste di rete al di sotto dei target impostati tramite il budget per le prestazioni fornito. [Ulteriori informazioni](https://developers.google.com/web/tools/lighthouse/audits/budgets)."
+  },
+  "lighthouse-core/audits/performance-budget.js | requestCountOverBudget": {
+    "message": "{count,plural, =1{1 richiesta}other{# richieste}}"
+  },
+  "lighthouse-core/audits/performance-budget.js | title": {
+    "message": "Budget per le prestazioni"
+  },
+  "lighthouse-core/audits/redirects-http.js | description": {
+    "message": "Se hai già configurato HTTPS, assicurati di reindirizzare tutto il traffico HTTP a HTTPS per attivare funzionalità web sicure per tutti i tuoi utenti. [Ulteriori informazioni](https://developers.google.com/web/tools/lighthouse/audits/http-redirects-to-https)."
+  },
+  "lighthouse-core/audits/redirects-http.js | failureTitle": {
+    "message": "Non reindirizza il traffico HTTP a HTTPS"
+  },
+  "lighthouse-core/audits/redirects-http.js | title": {
+    "message": "Reindirizza il traffico HTTP a HTTPS"
+  },
+  "lighthouse-core/audits/redirects.js | description": {
+    "message": "I reindirizzamenti comportano ulteriori ritardi prima del caricamento della pagina. [Ulteriori informazioni](https://developers.google.com/web/tools/lighthouse/audits/redirects)."
+  },
+  "lighthouse-core/audits/redirects.js | title": {
+    "message": "Evita i reindirizzamenti tra più pagine"
+  },
+  "lighthouse-core/audits/resource-summary.js | description": {
+    "message": "Per impostare budget relativi alla quantità e alle dimensioni delle risorse della pagina, aggiungi un file budget.json. [Ulteriori informazioni](https://developers.google.com/web/tools/lighthouse/audits/budgets)."
+  },
+  "lighthouse-core/audits/resource-summary.js | displayValue": {
+    "message": "{requestCount,plural, =1{1 richiesta • {byteCount, number, bytes} kB}other{# richieste • {byteCount, number, bytes} kB}}"
+  },
+  "lighthouse-core/audits/resource-summary.js | title": {
+    "message": "Mantieni un numero ridotto di richieste e dimensioni di trasferimento limitate"
+  },
+  "lighthouse-core/audits/seo/canonical.js | description": {
+    "message": "I link canonici suggeriscono quale URL mostrare nei risultati di ricerca. [Ulteriori informazioni](https://web.dev/canonical)."
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationConflict": {
+    "message": "Diversi URL in conflitto ({urlList})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationDifferentDomain": {
+    "message": "Rimanda a un altro dominio ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationInvalid": {
+    "message": "URL non valido ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationPointsElsewhere": {
+    "message": "Rimanda a un'altra posizione `hreflang` ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationRelative": {
+    "message": "URL relativo ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationRoot": {
+    "message": "Indirizza all'URL principale del dominio (la home page), anziché a una pagina di contenuto equivalente"
+  },
+  "lighthouse-core/audits/seo/canonical.js | failureTitle": {
+    "message": "Il documento non ha un valore `rel=canonical` valido"
+  },
+  "lighthouse-core/audits/seo/canonical.js | title": {
+    "message": "Il documento ha un elemento `rel=canonical` valido"
+  },
+  "lighthouse-core/audits/seo/font-size.js | description": {
+    "message": "Le dimensioni dei caratteri minori di 12 px sono troppo piccole per essere leggibili e richiederebbero ai visitatori di dispositivi mobili di \"pizzicare per eseguire lo zoom\" e poter leggere la pagina. Cerca di avere più del 60% del testo della pagina con una dimensione uguale o superiore a 12 px. [Ulteriori informazioni](https://web.dev/font-size)."
+  },
+  "lighthouse-core/audits/seo/font-size.js | displayValue": {
+    "message": "{decimalProportion, number, extendedPercent} del testo leggibile"
+  },
+  "lighthouse-core/audits/seo/font-size.js | explanationViewport": {
+    "message": "Il testo è illeggibile perché non esiste un meta tag viewport ottimizzato per gli schermi dei dispositivi mobili."
+  },
+  "lighthouse-core/audits/seo/font-size.js | explanationWithDisclaimer": {
+    "message": "Il {decimalProportion, number, extendedPercent} del testo è troppo piccolo (in base a un campione del {decimalProportionVisited, number, extendedPercent})."
+  },
+  "lighthouse-core/audits/seo/font-size.js | failureTitle": {
+    "message": "Il documento non usa dimensioni dei caratteri leggibili"
+  },
+  "lighthouse-core/audits/seo/font-size.js | title": {
+    "message": "Il documento utilizza dimensioni dei caratteri leggibili"
+  },
+  "lighthouse-core/audits/seo/hreflang.js | description": {
+    "message": "I link hreflang indicano ai motori di ricerca quale versione di una pagina devono elencare nei risultati di ricerca per una determinata lingua o area geografica. [Ulteriori informazioni](https://web.dev/hreflang)."
+  },
+  "lighthouse-core/audits/seo/hreflang.js | failureTitle": {
+    "message": "Il documento non ha un elemento `hreflang` valido"
+  },
+  "lighthouse-core/audits/seo/hreflang.js | title": {
+    "message": "Il documento ha un elemento `hreflang` valido"
+  },
+  "lighthouse-core/audits/seo/http-status-code.js | description": {
+    "message": "Le pagine con codici di stato HTTP non validi potrebbero non essere indicizzate correttamente. [Ulteriori informazioni](https://web.dev/http-status-code)."
+  },
+  "lighthouse-core/audits/seo/http-status-code.js | failureTitle": {
+    "message": "La pagina ha un codice di stato HTTP non valido"
+  },
+  "lighthouse-core/audits/seo/http-status-code.js | title": {
+    "message": "La pagina ha un codice di stato HTTP valido"
+  },
+  "lighthouse-core/audits/seo/is-crawlable.js | description": {
+    "message": "I motori di ricerca non sono in grado di includere le pagine nei risultati di ricerca se non dispongono dell'autorizzazione per eseguirne la scansione. [Ulteriori informazioni](https://web.dev/is-crawable)."
+  },
+  "lighthouse-core/audits/seo/is-crawlable.js | failureTitle": {
+    "message": "L'indicizzazione della pagina è bloccata"
+  },
+  "lighthouse-core/audits/seo/is-crawlable.js | title": {
+    "message": "L'indicizzazione della pagina non è bloccata"
+  },
+  "lighthouse-core/audits/seo/link-text.js | description": {
+    "message": "Il testo descrittivo dei link aiuta i motori di ricerca a comprendere i tuoi contenuti. [Ulteriori informazioni](https://web.dev/link-text)."
+  },
+  "lighthouse-core/audits/seo/link-text.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 link trovato}other{# link trovati}}"
+  },
+  "lighthouse-core/audits/seo/link-text.js | failureTitle": {
+    "message": "I link non contengono testo descrittivo"
+  },
+  "lighthouse-core/audits/seo/link-text.js | title": {
+    "message": "I link hanno un testo descrittivo"
+  },
+  "lighthouse-core/audits/seo/manual/structured-data.js | description": {
+    "message": "Esegui lo [Strumento di test per i dati strutturati](https://search.google.com/structured-data/testing-tool/) e [Structured Data Linter](http://linter.structured-data.org/) per convalidare i dati strutturati. [Ulteriori informazioni](https://web.dev/structured-data)."
+  },
+  "lighthouse-core/audits/seo/manual/structured-data.js | title": {
+    "message": "Dati strutturati validi"
+  },
+  "lighthouse-core/audits/seo/meta-description.js | description": {
+    "message": "Le meta descrizioni possono essere incluse nei risultati di ricerca per riassumere brevemente i contenuti della pagina. [Ulteriori informazioni](https://web.dev/meta-description)."
+  },
+  "lighthouse-core/audits/seo/meta-description.js | explanation": {
+    "message": "Il testo della descrizione è vuoto."
+  },
+  "lighthouse-core/audits/seo/meta-description.js | failureTitle": {
+    "message": "Il documento non ha una meta descrizione"
+  },
+  "lighthouse-core/audits/seo/meta-description.js | title": {
+    "message": "Il documento ha una meta descrizione"
+  },
+  "lighthouse-core/audits/seo/plugins.js | description": {
+    "message": "I motori di ricerca non possono indicizzare i contenuti dei plug-in e molti dispositivi limitano i plug-in o non li supportano. [Ulteriori informazioni](https://web.dev/plugins)."
+  },
+  "lighthouse-core/audits/seo/plugins.js | failureTitle": {
+    "message": "Il documento utilizza plug-in"
+  },
+  "lighthouse-core/audits/seo/plugins.js | title": {
+    "message": "Il documento non fa uso di plug-in"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | description": {
+    "message": "Se il file robots.txt non è valido, i crawler potrebbero non essere in grado di capire come vuoi che il tuo sito web venga sottoposto a scansione o indicizzato. [Ulteriori informazioni](https://web.dev/robots-txt)."
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | displayValueHttpBadCode": {
+    "message": "La richiesta per robots.txt ha restituito uno stato HTTP: {statusCode}"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | displayValueValidationError": {
+    "message": "{itemCount,plural, =1{1 errore trovato}other{# errori trovati}}"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | explanation": {
+    "message": "Lighthouse non può completare il download del file robots.txt"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | failureTitle": {
+    "message": "robots.txt non è valido"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | title": {
+    "message": "robots.txt è valido"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | description": {
+    "message": "Gli elementi interattivi come pulsanti e link dovrebbero essere abbastanza grandi (48 x 48 px) e avere abbastanza spazio intorno a loro, per essere facili da toccare senza sovrapporsi ad altri elementi. [Ulteriori informazioni](https://web.dev/tap-targets)."
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | displayValue": {
+    "message": "Il {decimalProportion, number, percent} dei target dei tocchi ha dimensioni appropriate"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | explanationViewportMetaNotOptimized": {
+    "message": "I target dei tocchi sono troppo piccoli perché non esiste un meta tag viewport ottimizzato per gli schermi dei dispositivi mobili"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | failureTitle": {
+    "message": "I target dei tocchi non sono dimensionati in modo appropriato"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | overlappingTargetHeader": {
+    "message": "Target sovrapposto"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | tapTargetHeader": {
+    "message": "Target dei tocchi"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | title": {
+    "message": "I target dei tocchi sono dimensionati in modo appropriato"
+  },
+  "lighthouse-core/audits/service-worker.js | description": {
+    "message": "Il service worker è la tecnologia che consente alla tua app di usare tante funzionalità delle applicazioni web progressive, ad esempio il funzionamento offline, l'aggiunta alla schermata Home e le notifiche push. [Ulteriori informazioni](https://developers.google.com/web/tools/lighthouse/audits/registered-service-worker)."
+  },
+  "lighthouse-core/audits/service-worker.js | explanationBadManifest": {
+    "message": "Questa pagina è controllata tramite un service worker, ma non è stato trovato alcun elemento `start_url` perché non è stato possibile analizzare il file manifest come JSON valido"
+  },
+  "lighthouse-core/audits/service-worker.js | explanationBadStartUrl": {
+    "message": "Questa pagina è controllata tramite un service worker, ma `start_url` ({startUrl}) non rientra nell'ambito del service worker ({scopeUrl})"
+  },
+  "lighthouse-core/audits/service-worker.js | explanationNoManifest": {
+    "message": "Questa pagina è controllata tramite un service worker, ma non è stato trovato alcun elemento `start_url` perché non è stato recuperato alcun file manifest."
+  },
+  "lighthouse-core/audits/service-worker.js | explanationOutOfScope": {
+    "message": "Questa origine contiene uno o più service worker, ma la pagina ({pageUrl}) non rientra nell'ambito."
+  },
+  "lighthouse-core/audits/service-worker.js | failureTitle": {
+    "message": "Non registra un service worker che controlla la pagina e `start_url`"
+  },
+  "lighthouse-core/audits/service-worker.js | title": {
+    "message": "Registra un service worker che controlla la pagina e `start_url`"
+  },
+  "lighthouse-core/audits/splash-screen.js | description": {
+    "message": "Una schermata iniziale a tema assicura un'esperienza di alta qualità quando gli utenti avviano la tua app dalla schermata Home. [Ulteriori informazioni](https://developers.google.com/web/tools/lighthouse/audits/custom-splash-screen)."
+  },
+  "lighthouse-core/audits/splash-screen.js | failureTitle": {
+    "message": "Non è configurato con una schermata iniziale personalizzata"
+  },
+  "lighthouse-core/audits/splash-screen.js | title": {
+    "message": "Configurato con una schermata iniziale personalizzata"
+  },
+  "lighthouse-core/audits/themed-omnibox.js | description": {
+    "message": "È possibile impostare per la barra degli indirizzi del browser un tema corrispondente a quello del tuo sito. [Ulteriori informazioni](https://developers.google.com/web/tools/lighthouse/audits/address-bar)."
+  },
+  "lighthouse-core/audits/themed-omnibox.js | failureTitle": {
+    "message": "Non imposta un colore tema per la barra degli indirizzi."
+  },
+  "lighthouse-core/audits/themed-omnibox.js | title": {
+    "message": "Imposta un colore tema per la barra degli indirizzi."
+  },
+  "lighthouse-core/audits/third-party-summary.js | columnBlockingTime": {
+    "message": "Durata blocco thread principale"
+  },
+  "lighthouse-core/audits/third-party-summary.js | columnThirdParty": {
+    "message": "Terza parte"
+  },
+  "lighthouse-core/audits/third-party-summary.js | description": {
+    "message": "Il codice di terze parti può incidere notevolmente sulle prestazioni del caricamento. Limita il numero di provider di terze parti superflui e prova a caricare il codice di terze parti al termine del caricamento della pagina. [Ulteriori informazioni](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/loading-third-party-javascript/)."
+  },
+  "lighthouse-core/audits/third-party-summary.js | displayValue": {
+    "message": "Il codice di terze parti ha bloccato il thread principale per {timeInMs, number, milliseconds} ms"
+  },
+  "lighthouse-core/audits/third-party-summary.js | failureTitle": {
+    "message": "Riduci l'impatto del codice di terze parti"
+  },
+  "lighthouse-core/audits/third-party-summary.js | title": {
+    "message": "Uso di terze parti"
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | description": {
+    "message": "La metrica Tempo per primo byte identifica il momento in cui il server invia una risposta. [Ulteriori informazioni](https://developers.google.com/web/tools/lighthouse/audits/ttfb)."
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | displayValue": {
+    "message": "Il documento radice ha richiesto {timeInMs, number, milliseconds} ms"
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | failureTitle": {
+    "message": "Riduci i tempi di risposta del server (TTFB)"
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | title": {
+    "message": "I tempi di risposta del server sono brevi (TTFB)"
+  },
+  "lighthouse-core/audits/user-timings.js | columnDuration": {
+    "message": "Durata"
+  },
+  "lighthouse-core/audits/user-timings.js | columnStartTime": {
+    "message": "Inizio"
+  },
+  "lighthouse-core/audits/user-timings.js | columnType": {
+    "message": "Tipo"
+  },
+  "lighthouse-core/audits/user-timings.js | description": {
+    "message": "Potresti dotare la tua app dell'API User Timing per misurare le prestazioni reali dell'app durante le esperienze utente chiave. [Ulteriori informazioni](https://developers.google.com/web/tools/lighthouse/audits/user-timing)."
+  },
+  "lighthouse-core/audits/user-timings.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 tempo utente}other{# tempi utente}}"
+  },
+  "lighthouse-core/audits/user-timings.js | title": {
+    "message": "Indicatori e misure User Timing"
+  },
+  "lighthouse-core/audits/uses-rel-preconnect.js | crossoriginWarning": {
+    "message": "È stato trovato un elemento <link> di preconnessione per \"{securityOrigin}\", ma non è stato utilizzato dal browser. Verifica che l'attributo `crossorigin` sia utilizzato in modo corretto."
+  },
+  "lighthouse-core/audits/uses-rel-preconnect.js | description": {
+    "message": "Potresti aggiungere hint delle risorse `preconnect` o `dns-prefetch` per collegarti anticipatamente a importanti origini di terze parti. [Ulteriori informazioni](https://developers.google.com/web/fundamentals/performance/resource-prioritization#preconnect)."
+  },
+  "lighthouse-core/audits/uses-rel-preconnect.js | title": {
+    "message": "Precollegati alle origini necessarie"
+  },
+  "lighthouse-core/audits/uses-rel-preload.js | crossoriginWarning": {
+    "message": "È stato trovato un elemento <link> di precaricamento per \"{preloadURL}\", ma non è stato utilizzato dal browser. Verifica che l'attributo `crossorigin` sia utilizzato in modo corretto."
+  },
+  "lighthouse-core/audits/uses-rel-preload.js | description": {
+    "message": "Potresti usare `<link rel=preload>` per dare la priorità al recupero delle risorse attualmente richieste in un secondo momento nel caricamento della pagina. [Ulteriori informazioni](https://developers.google.com/web/tools/lighthouse/audits/preload)."
+  },
+  "lighthouse-core/audits/uses-rel-preload.js | title": {
+    "message": "Precarica le richieste fondamentali"
+  },
+  "lighthouse-core/audits/viewport.js | description": {
+    "message": "Aggiungi un tag `<meta name=\"viewport\">` per ottimizzare la tua app per gli schermi dei dispositivi mobili. [Ulteriori informazioni](https://developers.google.com/web/tools/lighthouse/audits/has-viewport-meta-tag)."
+  },
+  "lighthouse-core/audits/viewport.js | explanationNoTag": {
+    "message": "Nessun tag `<meta name=\"viewport\">` trovato"
+  },
+  "lighthouse-core/audits/viewport.js | failureTitle": {
+    "message": "Non ha un tag `<meta name=\"viewport\">` con `width` o `initial-scale`"
+  },
+  "lighthouse-core/audits/viewport.js | title": {
+    "message": "Ha un tag `<meta name=\"viewport\">` con `width` o `initial-scale`"
+  },
+  "lighthouse-core/audits/without-javascript.js | description": {
+    "message": "Nella tua app dovresti visualizzare alcuni contenuti quando JavaScript è disattivato, anche soltanto un avviso che comunica all'utente che è necessario JavaScript per usare l'app. [Ulteriori informazioni](https://developers.google.com/web/tools/lighthouse/audits/no-js)."
+  },
+  "lighthouse-core/audits/without-javascript.js | explanation": {
+    "message": "Nel corpo della pagina dovrebbero essere visualizzati alcuni contenuti se gli script della pagina non sono disponibili."
+  },
+  "lighthouse-core/audits/without-javascript.js | failureTitle": {
+    "message": "Non fornisce contenuti di riserva quando JavaScript non è disponibile"
+  },
+  "lighthouse-core/audits/without-javascript.js | title": {
+    "message": "Ha alcuni contenuti quando JavaScript non è disponibile"
+  },
+  "lighthouse-core/audits/works-offline.js | description": {
+    "message": "Se devi creare un'applicazione web progressiva, potresti usare un service worker per far funzionare la tua app offline. [Ulteriori informazioni](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)."
+  },
+  "lighthouse-core/audits/works-offline.js | failureTitle": {
+    "message": "La pagina attuale non risponde con un codice 200 quando è offline"
+  },
+  "lighthouse-core/audits/works-offline.js | title": {
+    "message": "La pagina attuale risponde con un codice 200 quando è offline"
+  },
+  "lighthouse-core/audits/works-offline.js | warningNoLoad": {
+    "message": "La pagina potrebbe non essere caricata offline perché l'URL di prova ({requested}) è stato reindirizzato a \"{final}\". Prova a testare direttamente il secondo URL."
+  },
+  "lighthouse-core/config/default-config.js | a11yAriaGroupDescription": {
+    "message": "Si tratta di opportunità per facilitare l'uso di ARIA nella tua applicazione e migliorare l'esperienza per gli utenti di tecnologie per la disabilità, come uno screen reader."
+  },
+  "lighthouse-core/config/default-config.js | a11yAriaGroupTitle": {
+    "message": "ARIA"
+  },
+  "lighthouse-core/config/default-config.js | a11yAudioVideoGroupDescription": {
+    "message": "Si tratta di opportunità per fornire contenuti alternativi per audio e video. Ciò può migliorare l'esperienza per gli utenti con problemi di udito o di vista."
+  },
+  "lighthouse-core/config/default-config.js | a11yAudioVideoGroupTitle": {
+    "message": "Audio e video"
+  },
+  "lighthouse-core/config/default-config.js | a11yBestPracticesGroupDescription": {
+    "message": "Questi elementi evidenziano le best practice di accessibilità comuni."
+  },
+  "lighthouse-core/config/default-config.js | a11yBestPracticesGroupTitle": {
+    "message": "Best practice"
+  },
+  "lighthouse-core/config/default-config.js | a11yCategoryDescription": {
+    "message": "Questi controlli mettono in evidenza le opportunità per [migliorare l'accessibilità della tua applicazione web](https://developers.google.com/web/fundamentals/accessibility). È possibile rilevare automaticamente soltanto un sottoinsieme di problemi di accessibilità, pertanto sono consigliati anche i test manuali."
+  },
+  "lighthouse-core/config/default-config.js | a11yCategoryManualDescription": {
+    "message": "Questi elementi riguardano aree che uno strumento di test automatizzato non può coprire. Leggi ulteriori informazioni nella nostra guida su come [effettuare un esame di accessibilità](https://developers.google.com/web/fundamentals/accessibility/how-to-review)."
+  },
+  "lighthouse-core/config/default-config.js | a11yCategoryTitle": {
+    "message": "Accessibilità"
+  },
+  "lighthouse-core/config/default-config.js | a11yColorContrastGroupDescription": {
+    "message": "Si tratta di opportunità per migliorare la leggibilità dei contenuti."
+  },
+  "lighthouse-core/config/default-config.js | a11yColorContrastGroupTitle": {
+    "message": "Contrasto"
+  },
+  "lighthouse-core/config/default-config.js | a11yLanguageGroupDescription": {
+    "message": "Si tratta di opportunità per migliorare l'interpretazione data ai tuoi contenuti da utenti di lingua diversa."
+  },
+  "lighthouse-core/config/default-config.js | a11yLanguageGroupTitle": {
+    "message": "Internazionalizzazione e localizzazione"
+  },
+  "lighthouse-core/config/default-config.js | a11yNamesLabelsGroupDescription": {
+    "message": "Si tratta di opportunità per migliorare la semantica dei comandi della tua applicazione. Ciò può migliorare l'esperienza per gli utenti di tecnologie per la disabilità, come uno screen reader."
+  },
+  "lighthouse-core/config/default-config.js | a11yNamesLabelsGroupTitle": {
+    "message": "Nomi ed etichette"
+  },
+  "lighthouse-core/config/default-config.js | a11yNavigationGroupDescription": {
+    "message": "Si tratta di opportunità per migliorare la navigazione da tastiera nella tua applicazione."
+  },
+  "lighthouse-core/config/default-config.js | a11yNavigationGroupTitle": {
+    "message": "Navigazione"
+  },
+  "lighthouse-core/config/default-config.js | a11yTablesListsVideoGroupDescription": {
+    "message": "Si tratta di opportunità per migliorare l'esperienza di lettura dei dati nelle tabelle o negli elenchi per gli utenti di tecnologie per la disabilità, come uno screen reader."
+  },
+  "lighthouse-core/config/default-config.js | a11yTablesListsVideoGroupTitle": {
+    "message": "Tabelle ed elenchi"
+  },
+  "lighthouse-core/config/default-config.js | bestPracticesCategoryTitle": {
+    "message": "Best practice"
+  },
+  "lighthouse-core/config/default-config.js | budgetsGroupDescription": {
+    "message": "I budget per le prestazioni consentono di stabilire gli standard per le prestazioni del tuo sito."
+  },
+  "lighthouse-core/config/default-config.js | budgetsGroupTitle": {
+    "message": "Budget"
+  },
+  "lighthouse-core/config/default-config.js | diagnosticsGroupDescription": {
+    "message": "Ulteriori informazioni sulle prestazioni della tua applicazione. Questi valori non [incidono direttamente](https://github.com/GoogleChrome/lighthouse/blob/d2ec9ffbb21de9ad1a0f86ed24575eda32c796f0/docs/scoring.md#how-are-the-scores-weighted) sul punteggio Prestazioni."
+  },
+  "lighthouse-core/config/default-config.js | diagnosticsGroupTitle": {
+    "message": "Diagnostica"
+  },
+  "lighthouse-core/config/default-config.js | firstPaintImprovementsGroupDescription": {
+    "message": "L'aspetto più importante delle prestazioni è la velocità di visualizzazione dei pixel sullo schermo. Metriche chiave: Visualizzazione dei primi contenuti, Visualizzazione primi contenuti utili"
+  },
+  "lighthouse-core/config/default-config.js | firstPaintImprovementsGroupTitle": {
+    "message": "Miglioramenti della prima visualizzazione"
+  },
+  "lighthouse-core/config/default-config.js | loadOpportunitiesGroupDescription": {
+    "message": "Questi suggerimenti possono aiutarti a velocizzare il caricamento della pagina. Non [incidono direttamente](https://github.com/GoogleChrome/lighthouse/blob/d2ec9ffbb21de9ad1a0f86ed24575eda32c796f0/docs/scoring.md#how-are-the-scores-weighted) sul punteggio Prestazioni."
+  },
+  "lighthouse-core/config/default-config.js | loadOpportunitiesGroupTitle": {
+    "message": "Opportunità"
+  },
+  "lighthouse-core/config/default-config.js | metricGroupTitle": {
+    "message": "Metriche"
+  },
+  "lighthouse-core/config/default-config.js | overallImprovementsGroupDescription": {
+    "message": "Migliora l'esperienza di caricamento generale per fare in modo che la pagina diventi reattiva e pronta all'uso nel più breve tempo possibile. Metriche chiave: Tempo per interattività, Indice velocità"
+  },
+  "lighthouse-core/config/default-config.js | overallImprovementsGroupTitle": {
+    "message": "Miglioramenti generali"
+  },
+  "lighthouse-core/config/default-config.js | performanceCategoryTitle": {
+    "message": "Prestazioni"
+  },
+  "lighthouse-core/config/default-config.js | pwaCategoryDescription": {
+    "message": "Questi controlli consentono di convalidare gli aspetti di un'applicazione web progressiva. [Ulteriori informazioni](https://developers.google.com/web/progressive-web-apps/checklist)."
+  },
+  "lighthouse-core/config/default-config.js | pwaCategoryManualDescription": {
+    "message": "Questi controlli sono richiesti in base all'[Elenco di controllo PWA](https://developers.google.com/web/progressive-web-apps/checklist) di riferimento, ma non vengono eseguiti automaticamente da Lighthouse. Non incidono sul tuo punteggio, ma è importante verificarli manualmente."
+  },
+  "lighthouse-core/config/default-config.js | pwaCategoryTitle": {
+    "message": "Applicazione web progressiva"
+  },
+  "lighthouse-core/config/default-config.js | pwaFastReliableGroupTitle": {
+    "message": "Veloce e affidabile"
+  },
+  "lighthouse-core/config/default-config.js | pwaInstallableGroupTitle": {
+    "message": "Installabile"
+  },
+  "lighthouse-core/config/default-config.js | pwaOptimizedGroupTitle": {
+    "message": "Ottimizzato per PWA"
+  },
+  "lighthouse-core/config/default-config.js | seoCategoryDescription": {
+    "message": "Questi controlli assicurano che la pagina sia ottimizzata per il ranking dei risultati del motore di ricerca. Ci sono altri fattori che Lighthouse non controlla che potrebbero incidere sul ranking nella ricerca. [Ulteriori informazioni](https://support.google.com/webmasters/answer/35769)."
+  },
+  "lighthouse-core/config/default-config.js | seoCategoryManualDescription": {
+    "message": "Esegui questi altri strumenti di convalida sul tuo sito per controllare ulteriori best practice per SEO."
+  },
+  "lighthouse-core/config/default-config.js | seoCategoryTitle": {
+    "message": "SEO"
+  },
+  "lighthouse-core/config/default-config.js | seoContentGroupDescription": {
+    "message": "Formatta il tuo codice HTML in modo che i crawler possano comprendere meglio i contenuti della tua app."
+  },
+  "lighthouse-core/config/default-config.js | seoContentGroupTitle": {
+    "message": "Best practice per i contenuti"
+  },
+  "lighthouse-core/config/default-config.js | seoCrawlingGroupDescription": {
+    "message": "Per poter mostrare la tua app nei risultati di ricerca, i crawler devono potervi accedere."
+  },
+  "lighthouse-core/config/default-config.js | seoCrawlingGroupTitle": {
+    "message": "Scansione e indicizzazione"
+  },
+  "lighthouse-core/config/default-config.js | seoMobileGroupDescription": {
+    "message": "Assicurati che le tue pagine siano ottimizzate per i dispositivi mobili in modo che gli utenti non debbano pizzicare o aumentare lo zoom per riuscire a leggere i contenuti delle pagine. [Ulteriori informazioni](https://developers.google.com/search/mobile-sites/)."
+  },
+  "lighthouse-core/config/default-config.js | seoMobileGroupTitle": {
+    "message": "Ottimizzata per i dispositivi mobili"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnCacheTTL": {
+    "message": "TTL cache"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnLocation": {
+    "message": "Posizione"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnName": {
+    "message": "Nome"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnRequests": {
+    "message": "Richieste"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnResourceType": {
+    "message": "Tipo di risorsa"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnSize": {
+    "message": "Dimensioni"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnTimeSpent": {
+    "message": "Tempo trascorso"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnTransferSize": {
+    "message": "Dimensioni trasferimento"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnURL": {
+    "message": "URL"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnWastedBytes": {
+    "message": "Potenziali riduzioni"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnWastedMs": {
+    "message": "Potenziali riduzioni"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | displayValueByteSavings": {
+    "message": "Potenziali riduzioni di {wastedBytes, number, bytes} kB"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | displayValueMsSavings": {
+    "message": "Potenziali riduzioni di {wastedMs, number, milliseconds} ms"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | documentResourceType": {
+    "message": "Documento"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | fontResourceType": {
+    "message": "Carattere"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | imageResourceType": {
+    "message": "Immagine"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | mediaResourceType": {
+    "message": "Contenuti multimediali"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | ms": {
+    "message": "{timeInMs, number, milliseconds} ms"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | otherResourceType": {
+    "message": "Altro"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | scriptResourceType": {
+    "message": "Script"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | seconds": {
+    "message": "{timeInMs, number, seconds} s"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | stylesheetResourceType": {
+    "message": "Foglio di stile"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | thirdPartyResourceType": {
+    "message": "Terze parti"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | totalResourceType": {
+    "message": "Totale"
+  },
+  "lighthouse-core/lib/lh-error.js | badTraceRecording": {
+    "message": "Si è verificato un problema con la registrazione della traccia durante il caricamento della pagina. Esegui di nuovo Lighthouse. ({errorCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | criTimeout": {
+    "message": "Timeout durante l'attesa della connessione iniziale al protocollo del debugger."
+  },
+  "lighthouse-core/lib/lh-error.js | didntCollectScreenshots": {
+    "message": "Chrome non ha raccolto nessuno screenshot durante il caricamento pagina. Assicurati che nella pagina siano presenti contenuti visibili, quindi riprova a eseguire Lighthouse. ({errorCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | dnsFailure": {
+    "message": "I server DNS non sono stati in grado di risolvere il dominio fornito."
+  },
+  "lighthouse-core/lib/lh-error.js | erroredRequiredArtifact": {
+    "message": "Il gatherer {artifactName} richiesto ha riscontrato un errore: {errorMessage}"
+  },
+  "lighthouse-core/lib/lh-error.js | internalChromeError": {
+    "message": "Errore interno di Chrome. Riavvia Chrome e prova a eseguire di nuovo Lighthouse."
+  },
+  "lighthouse-core/lib/lh-error.js | missingRequiredArtifact": {
+    "message": "Il gatherer {artifactName} richiesto non è stato eseguito."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailed": {
+    "message": "Lighthouse non può completare il caricamento della pagina richiesta. Assicurati che l'URL verificato sia quello corretto e che il server stia rispondendo opportunamente a tutte le richieste."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedHung": {
+    "message": "Lighthouse non può completare il caricamento dell'URL richiesto perché la pagina non risponde più."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedInsecure": {
+    "message": "L'URL fornito non ha un certificato di sicurezza valido. {securityMessages}"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedInterstitial": {
+    "message": "Chrome ha impedito il caricamento della pagina con un interstitial. Assicurati che l'URL verificato sia quello corretto e che il server stia rispondendo opportunamente a tutte le richieste."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedWithDetails": {
+    "message": "Impossibile caricare la pagina richiesta in modo affidabile in Lighthouse. Assicurati che l'URL verificato sia quello corretto e che il server stia rispondendo opportunamente a tutte le richieste. Informazioni dettagliate: {errorDetails}"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedWithStatusCode": {
+    "message": "Impossibile caricare la pagina richiesta in modo affidabile in Lighthouse. Assicurati che l'URL verificato sia quello corretto e che il server stia rispondendo opportunamente a tutte le richieste. (Codice di stato: {statusCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadTookTooLong": {
+    "message": "Il caricamento della tua pagina ha richiesto troppo tempo. Segui le opportunità fornite nel rapporto per ridurre il tempo di caricamento della pagina e prova a eseguire di nuovo Lighthouse. ({errorCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | protocolTimeout": {
+    "message": "Il tempo di attesa allocato per ricevere una risposta dal protocollo DevTools è scaduto. (Metodo: {protocolMethod})"
+  },
+  "lighthouse-core/lib/lh-error.js | requestContentTimeout": {
+    "message": "Il tempo allocato per il recupero dei contenuti della risorsa è scaduto"
+  },
+  "lighthouse-core/lib/lh-error.js | urlInvalid": {
+    "message": "L'URL fornito non è valido."
+  },
+  "lighthouse-core/report/html/renderer/util.js | auditGroupExpandTooltip": {
+    "message": "Mostra controlli"
+  },
+  "lighthouse-core/report/html/renderer/util.js | crcInitialNavigation": {
+    "message": "Navigazione iniziale"
+  },
+  "lighthouse-core/report/html/renderer/util.js | crcLongestDurationLabel": {
+    "message": "Latenza massima del percorso critico:"
+  },
+  "lighthouse-core/report/html/renderer/util.js | errorLabel": {
+    "message": "Errore"
+  },
+  "lighthouse-core/report/html/renderer/util.js | errorMissingAuditInfo": {
+    "message": "Errore segnalato: nessuna informazione sul controllo"
+  },
+  "lighthouse-core/report/html/renderer/util.js | labDataTitle": {
+    "message": "Dati di prova controllati"
+  },
+  "lighthouse-core/report/html/renderer/util.js | lsPerformanceCategoryDescription": {
+    "message": "Analisi [Lighthouse](https://developers.google.com/web/tools/lighthouse/) della pagina corrente su una rete mobile emulata. I valori sono delle stime e potrebbero variare."
+  },
+  "lighthouse-core/report/html/renderer/util.js | manualAuditsGroupTitle": {
+    "message": "Ulteriori elementi da controllare manualmente"
+  },
+  "lighthouse-core/report/html/renderer/util.js | notApplicableAuditsGroupTitle": {
+    "message": "Non applicabile"
+  },
+  "lighthouse-core/report/html/renderer/util.js | opportunityResourceColumnLabel": {
+    "message": "Opportunità"
+  },
+  "lighthouse-core/report/html/renderer/util.js | opportunitySavingsColumnLabel": {
+    "message": "Risparmi stimati"
+  },
+  "lighthouse-core/report/html/renderer/util.js | passedAuditsGroupTitle": {
+    "message": "Controlli superati"
+  },
+  "lighthouse-core/report/html/renderer/util.js | snippetCollapseButtonLabel": {
+    "message": "Comprimi snippet"
+  },
+  "lighthouse-core/report/html/renderer/util.js | snippetExpandButtonLabel": {
+    "message": "Espandi snippet"
+  },
+  "lighthouse-core/report/html/renderer/util.js | thirdPartyResourcesLabel": {
+    "message": "Mostra risorse di terze parti"
+  },
+  "lighthouse-core/report/html/renderer/util.js | toplevelWarningsMessage": {
+    "message": "Si sono verificati dei problemi che incidono su questa esecuzione di Lighthouse:"
+  },
+  "lighthouse-core/report/html/renderer/util.js | varianceDisclaimer": {
+    "message": "I valori sono delle stime e potrebbero variare. Il punteggio relativo alle prestazioni è [basato soltanto su queste metriche](https://github.com/GoogleChrome/lighthouse/blob/d2ec9ffbb21de9ad1a0f86ed24575eda32c796f0/docs/scoring.md#how-are-the-scores-weighted)."
+  },
+  "lighthouse-core/report/html/renderer/util.js | warningAuditsGroupTitle": {
+    "message": "Controlli superati ma con avvisi"
+  },
+  "lighthouse-core/report/html/renderer/util.js | warningHeader": {
+    "message": "Avvisi: "
+  },
+  "stack-packs/packs/wordpress.js | efficient_animated_content": {
+    "message": "Prendi in considerazione la possibilità di caricare la tua GIF su un servizio che la renda disponibile per l'incorporamento come video HTML5."
+  },
+  "stack-packs/packs/wordpress.js | offscreen_images": {
+    "message": "Installa un [plug-in di WordPress per il caricamento lento](https://wordpress.org/plugins/search/lazy+load/) che consenta di rimandare qualsiasi immagine fuori schermo oppure passa a un tema che offra questa funzionalità. Potresti anche usare [il plug-in AMP](https://wordpress.org/plugins/amp/)."
+  },
+  "stack-packs/packs/wordpress.js | render_blocking_resources": {
+    "message": "Esistono diversi plug-in di WordPress che possono esserti utili per [incorporare le risorse di importanza critica](https://wordpress.org/plugins/search/critical+css/) o [rimandare le risorse meno importanti](https://wordpress.org/plugins/search/defer+css+javascript/). Fai attenzione perché le ottimizzazioni offerte da questi plug-in potrebbero interrompere le funzionalità del tuo tema o dei tuoi plug-in, pertanto potresti dover modificare il codice."
+  },
+  "stack-packs/packs/wordpress.js | time_to_first_byte": {
+    "message": "Le specifiche del server, i plug-in e i temi contribuiscono al tempo di risposta del server. Prendi in considerazione l'idea di utilizzare un tema più ottimizzato, selezionando con cura un plug-in per l'ottimizzazione e/o eseguendo l'upgrade del server."
+  },
+  "stack-packs/packs/wordpress.js | total_byte_weight": {
+    "message": "Prendi in considerazione la possibilità di mostrare degli estratti nell'elenco dei tuoi post (ad esempio utilizzando il tag more), riducendo il numero di post che vengono mostrati su una determinata pagina, spezzando i post più lunghi su più pagine o utilizzando un plug-in per il caricamento differito dei commenti."
+  },
+  "stack-packs/packs/wordpress.js | unminified_css": {
+    "message": "Esistono diversi [plug-in di WordPress](https://wordpress.org/plugins/search/minify+css/) in grado di velocizzare il tuo sito concatenando, minimizzando e comprimendo i tuoi stili. Puoi anche utilizzare una procedura di progettazione per eseguire la minimizzazione in anticipo, se possibile."
+  },
+  "stack-packs/packs/wordpress.js | unminified_javascript": {
+    "message": "Esistono diversi [plug-in di WordPress](https://wordpress.org/plugins/search/minify+javascript/) in grado di velocizzare il tuo sito concatenando, minimizzando e comprimendo i tuoi script. Puoi anche utilizzare una procedura di progettazione per eseguire la minimizzazione in anticipo, se possibile."
+  },
+  "stack-packs/packs/wordpress.js | unused_css_rules": {
+    "message": "Potresti ridurre, o cambiare, il numero di [plug-in di WordPress](https://wordpress.org/plugins/) che caricano file CSS inutilizzati nella tua pagina. Per individuare i plug-in che aggiungono CSS estraneo, prova a eseguire il [code coverage](https://developers.google.com/web/updates/2017/04/devtools-release-notes#coverage) in Chrome DevTools. Puoi individuare il tema o il plug-in responsabile nell'URL del foglio di stile. Cerca i plug-in che nell'elenco hanno diversi fogli di stile con molto rosso nel code coverage. Un plug-in dovrebbe aggiungere in coda un foglio di stile solo se viene effettivamente utilizzato nella pagina."
+  },
+  "stack-packs/packs/wordpress.js | unused_javascript": {
+    "message": "Potresti ridurre, o cambiare, il numero di [plug-in di WordPress](https://wordpress.org/plugins/) che caricano file JavaScript inutilizzati nella tua pagina. Per individuare i plug-in che aggiungono JavaScript estraneo, prova a eseguire il [code coverage](https://developers.google.com/web/updates/2017/04/devtools-release-notes#coverage) in Chrome DevTools. Puoi individuare il tema o il plug-in responsabile nell'URL dello script. Cerca i plug-in che nell'elenco hanno diversi script con molto rosso nel code coverage. Un plug-in dovrebbe aggiungere in coda uno script solo se viene effettivamente utilizzato nella pagina."
+  },
+  "stack-packs/packs/wordpress.js | uses_long_cache_ttl": {
+    "message": "Leggi informazioni sulla [memorizzazione nella cache del browser in WordPress](https://codex.wordpress.org/WordPress_Optimization#Browser_Caching)."
+  },
+  "stack-packs/packs/wordpress.js | uses_optimized_images": {
+    "message": "Potresti usare un [plug-in di WordPress per l'ottimizzazione delle immagini](https://wordpress.org/plugins/search/optimize+images/) in grado di comprimere le tue immagini preservandone la qualità."
+  },
+  "stack-packs/packs/wordpress.js | uses_responsive_images": {
+    "message": "Carica le immagini direttamente tramite la [libreria multimediale](https://codex.wordpress.org/Media_Library_Screen) per assicurarti che siano disponibili le dimensioni delle immagini richieste, quindi inseriscile dalla libreria multimediale o utilizza il widget per immagini per assicurarti che vengano utilizzate le dimensioni ottimali (incluse quelle per i punti di interruzione adattabili). Evita di utilizzare immagini `Full Size`, a meno che le dimensioni siano adatte all'utilizzo previsto. [Ulteriori informazioni](https://codex.wordpress.org/Inserting_Images_into_Posts_and_Pages#Image_Size)."
+  },
+  "stack-packs/packs/wordpress.js | uses_text_compression": {
+    "message": "Puoi attivare la compressione del testo nella configurazione del server web."
+  },
+  "stack-packs/packs/wordpress.js | uses_webp_images": {
+    "message": "Potresti usare un [plug-in](https://wordpress.org/plugins/search/convert+webp/) o un servizio che converta automaticamente le immagini caricate nei formati ottimali."
+  }
+}
diff --git a/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/ja.json b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/ja.json
new file mode 100644
index 0000000..6fa3930
--- /dev/null
+++ b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/ja.json
@@ -0,0 +1,1541 @@
+{
+  "lighthouse-core/audits/accessibility/accesskeys.js | description": {
+    "message": "アクセスキーは、ユーザーがページの特定の部分にすばやくフォーカスを移動するときに使います。正しく操作できるよう、各アクセスキーは一意にする必要があります。[詳細](https://web.dev/accesskeys/)"
+  },
+  "lighthouse-core/audits/accessibility/accesskeys.js | failureTitle": {
+    "message": "`[accesskey]` の値が一意ではありません"
+  },
+  "lighthouse-core/audits/accessibility/accesskeys.js | title": {
+    "message": "`[accesskey]` の値は一意です"
+  },
+  "lighthouse-core/audits/accessibility/aria-allowed-attr.js | description": {
+    "message": "各 ARIA `role` は、`aria-*` 属性の特定のサブセットに対応しています。これらが一致しない場合、`aria-*` 属性は無効になります。[詳細](https://web.dev/aria-allowed-attr/)"
+  },
+  "lighthouse-core/audits/accessibility/aria-allowed-attr.js | failureTitle": {
+    "message": "`[aria-*]` 属性は役割と一致していません"
+  },
+  "lighthouse-core/audits/accessibility/aria-allowed-attr.js | title": {
+    "message": "`[aria-*]` 属性は役割と一致しています"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-attr.js | description": {
+    "message": "一部の ARIA 役割には、スクリーン リーダーに要素の状態を伝える必須の属性があります。[詳細](https://web.dev/aria-required-attr/)"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-attr.js | failureTitle": {
+    "message": "`[role]` に必須の `[aria-*]` 属性が一部指定されていません"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-attr.js | title": {
+    "message": "`[role]` に必須の `[aria-*]` 属性がすべて指定されています"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-children.js | description": {
+    "message": "目的のユーザー補助機能を実行するには、一部の ARIA 親役割に特定の子役割を含める必要があります。[詳細](https://web.dev/aria-required-children/)"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-children.js | failureTitle": {
+    "message": "特定の子 `[role]` を必要とする `[role]` を指定した要素が見つかりません。"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-children.js | title": {
+    "message": "特定の子 `[role]` を必要とする `[role]` を指定した要素があります"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-parent.js | description": {
+    "message": "目的のユーザー補助機能を正しく実行するには、一部の ARIA 子役割を特定の親役割に含める必要があります。[詳細](https://web.dev/aria-required-parent/)"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-parent.js | failureTitle": {
+    "message": "`[role]` が必須の親要素に含まれていません"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-parent.js | title": {
+    "message": "`[role]` は必須の親要素に含まれています"
+  },
+  "lighthouse-core/audits/accessibility/aria-roles.js | description": {
+    "message": "目的のユーザー補助機能を実行するには、ARIA 役割に有効な値を指定してください。[詳細](https://web.dev/aria-roles/)"
+  },
+  "lighthouse-core/audits/accessibility/aria-roles.js | failureTitle": {
+    "message": "`[role]` の値は無効です"
+  },
+  "lighthouse-core/audits/accessibility/aria-roles.js | title": {
+    "message": "`[role]` の値は有効です"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr-value.js | description": {
+    "message": "支援技術(スクリーン リーダーなど)で、無効な値が指定された ARIA 属性を解釈できません。[詳細](https://web.dev/aria-valid-attr-value/)"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr-value.js | failureTitle": {
+    "message": "`[aria-*]` 属性に有効な値が指定されていません"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr-value.js | title": {
+    "message": "`[aria-*]` 属性に有効な値が指定されています"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr.js | description": {
+    "message": "支援技術(スクリーン リーダーなど)で、無効な名前が指定された ARIA 属性を解釈できません。[詳細](https://web.dev/aria-valid-attr/)"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr.js | failureTitle": {
+    "message": "`[aria-*]` 属性は無効か、スペルミスがあります"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr.js | title": {
+    "message": "`[aria-*]` 属性は有効で、スペルミスもありません"
+  },
+  "lighthouse-core/audits/accessibility/audio-caption.js | description": {
+    "message": "字幕を使用すると、聴覚障がいのあるユーザーが音声要素を利用できるようになります。話している人物やその内容、その他の会話以外の情報など、重要な情報を字幕で伝えることができます。[詳細](https://web.dev/audio-caption/)"
+  },
+  "lighthouse-core/audits/accessibility/audio-caption.js | failureTitle": {
+    "message": "`<audio>` 要素に `[kind=\"captions\"]` が指定された `<track>` 要素がありません。"
+  },
+  "lighthouse-core/audits/accessibility/audio-caption.js | title": {
+    "message": "`<audio>` 要素に `[kind=\"captions\"]` が指定された `<track>` 要素が含まれています"
+  },
+  "lighthouse-core/audits/accessibility/axe-audit.js | failingElementsHeader": {
+    "message": "問題のある要素"
+  },
+  "lighthouse-core/audits/accessibility/button-name.js | description": {
+    "message": "ボタンにユーザー補助機能名が指定されていない場合、スクリーン リーダーでは「ボタン」と読み上げられるため、スクリーン リーダーを使用しているユーザーはボタンの用途がわからず、使用することができなくなります。[詳細](https://web.dev/button-name/)"
+  },
+  "lighthouse-core/audits/accessibility/button-name.js | failureTitle": {
+    "message": "ボタンにユーザー補助機能名が指定されていません"
+  },
+  "lighthouse-core/audits/accessibility/button-name.js | title": {
+    "message": "ボタンにユーザー補助機能名が指定されています"
+  },
+  "lighthouse-core/audits/accessibility/bypass.js | description": {
+    "message": "重複するコンテンツをスキップする手段を追加すると、キーボードを使ったページの移動を効率化できます。[詳細](https://web.dev/bypass/)"
+  },
+  "lighthouse-core/audits/accessibility/bypass.js | failureTitle": {
+    "message": "ページに見出し、スキップリンク、またはランドマーク領域が設定されていません"
+  },
+  "lighthouse-core/audits/accessibility/bypass.js | title": {
+    "message": "ページに見出し、スキップリンク、またはランドマーク領域が設定されています"
+  },
+  "lighthouse-core/audits/accessibility/color-contrast.js | description": {
+    "message": "低コントラストのテキストを使用すると、多くのユーザーは読むことが困難または不可能になります。[詳細](https://web.dev/color-contrast/)"
+  },
+  "lighthouse-core/audits/accessibility/color-contrast.js | failureTitle": {
+    "message": "背景色と前景色には十分なコントラスト比がありません"
+  },
+  "lighthouse-core/audits/accessibility/color-contrast.js | title": {
+    "message": "背景色と前景色には十分なコントラスト比があります"
+  },
+  "lighthouse-core/audits/accessibility/definition-list.js | description": {
+    "message": "定義リストが適切にマークアップされていないと、スクリーン リーダーで、誤解を招く内容や不正確な内容が読み上げられる可能性があります。[詳細](https://web.dev/definition-list/)"
+  },
+  "lighthouse-core/audits/accessibility/definition-list.js | failureTitle": {
+    "message": "`<dl>` には、正しく順序付けられた `<dt>` および `<dd>` グループ、`<script>` または `<template>` 要素以外も含まれています。"
+  },
+  "lighthouse-core/audits/accessibility/definition-list.js | title": {
+    "message": "`<dl>` には、正しく順序付けられた `<dt>` および `<dd>` グループ、`<script>` または `<template>` 要素のみが含まれています。"
+  },
+  "lighthouse-core/audits/accessibility/dlitem.js | description": {
+    "message": "スクリーン リーダーで正しく読み上げられるようにするには、定義リストの項目(`<dt>` と `<dd>`)を親の `<dl>` 要素でラップする必要があります。[詳細](https://web.dev/dlitem/)"
+  },
+  "lighthouse-core/audits/accessibility/dlitem.js | failureTitle": {
+    "message": "定義リストの項目が `<dl>` 要素でラップされていません"
+  },
+  "lighthouse-core/audits/accessibility/dlitem.js | title": {
+    "message": "定義リストの項目は `<dl>` 要素でラップされています"
+  },
+  "lighthouse-core/audits/accessibility/document-title.js | description": {
+    "message": "タイトルを指定すると、スクリーン リーダーのユーザーがページの概要を把握できるようになります。検索エンジンの使用時には、検索語句に関連するページかどうかを判断するための重要な要素となります。[詳細](https://web.dev/document-title/)"
+  },
+  "lighthouse-core/audits/accessibility/document-title.js | failureTitle": {
+    "message": "ドキュメントに `<title>` 要素が指定されていません"
+  },
+  "lighthouse-core/audits/accessibility/document-title.js | title": {
+    "message": "ドキュメントに `<title>` 要素が指定されています"
+  },
+  "lighthouse-core/audits/accessibility/duplicate-id.js | description": {
+    "message": "他のインスタンスが支援技術によって見落とされることのないように、id 属性の値は一意にする必要があります。[詳細](https://web.dev/duplicate-id/)"
+  },
+  "lighthouse-core/audits/accessibility/duplicate-id.js | failureTitle": {
+    "message": "ページの `[id]` 属性が一意ではありません"
+  },
+  "lighthouse-core/audits/accessibility/duplicate-id.js | title": {
+    "message": "ページの `[id]` 属性は一意です"
+  },
+  "lighthouse-core/audits/accessibility/frame-title.js | description": {
+    "message": "スクリーン リーダーでは、フレームのコンテンツを説明するためにフレームのタイトルが使用されます。[詳細](https://web.dev/frame-title/)"
+  },
+  "lighthouse-core/audits/accessibility/frame-title.js | failureTitle": {
+    "message": "`<frame>` または `<iframe>` の要素にタイトルが指定されていません"
+  },
+  "lighthouse-core/audits/accessibility/frame-title.js | title": {
+    "message": "`<frame>` または `<iframe>` の要素にタイトルが指定されています"
+  },
+  "lighthouse-core/audits/accessibility/html-has-lang.js | description": {
+    "message": "ページで lang 属性が指定されていない場合、スクリーン リーダーは、スクリーン リーダーの設定時にユーザーが選択したデフォルト言語がページで使用されているものと見なします。そのページでデフォルト言語が実際には使用されていない場合、スクリーン リーダーはページのテキストを正しく読み上げられない可能性があります。[詳細](https://web.dev/html-has-lang/)"
+  },
+  "lighthouse-core/audits/accessibility/html-has-lang.js | failureTitle": {
+    "message": "`<html>` 要素に `[lang]` 属性が指定されていません"
+  },
+  "lighthouse-core/audits/accessibility/html-has-lang.js | title": {
+    "message": "`<html>` 要素に `[lang]` 属性が指定されています"
+  },
+  "lighthouse-core/audits/accessibility/html-lang-valid.js | description": {
+    "message": "有効な [BCP 47 言語](https://www.w3.org/International/questions/qa-choosing-language-tags#question)を指定すると、スクリーン リーダーでテキストが正しく読み上げられるようになります。[詳細](https://web.dev/html-lang-valid/)"
+  },
+  "lighthouse-core/audits/accessibility/html-lang-valid.js | failureTitle": {
+    "message": "`<html>` 要素の `[lang]` 属性に有効な値が指定されていません。"
+  },
+  "lighthouse-core/audits/accessibility/html-lang-valid.js | title": {
+    "message": "`<html>` 要素の `[lang]` 属性に有効な値が指定されています"
+  },
+  "lighthouse-core/audits/accessibility/image-alt.js | description": {
+    "message": "説明的要素は、簡潔でわかりやすい代替テキストにする必要があります。装飾的要素は、alt 属性が空の場合は無視される可能性があります。[詳細](https://web.dev/image-alt/)"
+  },
+  "lighthouse-core/audits/accessibility/image-alt.js | failureTitle": {
+    "message": "画像要素に `[alt]` 属性が指定されていません"
+  },
+  "lighthouse-core/audits/accessibility/image-alt.js | title": {
+    "message": "画像要素に `[alt]` 属性が指定されています"
+  },
+  "lighthouse-core/audits/accessibility/input-image-alt.js | description": {
+    "message": "画像を `<input>` ボタンとして使用している場合は、代替テキストを指定すると、スクリーン リーダーのユーザーがボタンの用途を理解しやすくなります。[詳細](https://web.dev/input-image-alt/)"
+  },
+  "lighthouse-core/audits/accessibility/input-image-alt.js | failureTitle": {
+    "message": "`<input type=\"image\">` 要素に `[alt]` テキストが指定されていません"
+  },
+  "lighthouse-core/audits/accessibility/input-image-alt.js | title": {
+    "message": "`<input type=\"image\">` 要素に `[alt]` テキストが指定されています"
+  },
+  "lighthouse-core/audits/accessibility/label.js | description": {
+    "message": "ラベルを使用すると、フォームの各コントロールが支援技術(スクリーン リーダーなど)によって正しく読み上げられるようになります。[詳細](https://web.dev/label/)"
+  },
+  "lighthouse-core/audits/accessibility/label.js | failureTitle": {
+    "message": "フォームの要素にラベルが関連付けられていません"
+  },
+  "lighthouse-core/audits/accessibility/label.js | title": {
+    "message": "フォームの要素にラベルが関連付けられています"
+  },
+  "lighthouse-core/audits/accessibility/layout-table.js | description": {
+    "message": "レイアウト目的で表を使用している場合は、th 要素、caption 要素、summary 属性などのデータ要素を含めないでください。スクリーン リーダーを操作しにくくなる可能性があります。[詳細](https://web.dev/layout-table/)"
+  },
+  "lighthouse-core/audits/accessibility/layout-table.js | failureTitle": {
+    "message": "レイアウト用の `<table>` 要素で、`<th>`、`<caption>`、または `[summary]` 属性が使用されています。"
+  },
+  "lighthouse-core/audits/accessibility/layout-table.js | title": {
+    "message": "レイアウト用の `<table>` 要素で、`<th>`、`<caption>`、または `[summary]` 属性は使用されていません。"
+  },
+  "lighthouse-core/audits/accessibility/link-name.js | description": {
+    "message": "識別可能、フォーカス可能な一意のリンクテキスト(および画像をリンクとして使用している場合はその代替テキスト)を使用すると、スクリーン リーダーでのナビゲーションの操作性が向上します。[詳細](https://web.dev/link-name/)"
+  },
+  "lighthouse-core/audits/accessibility/link-name.js | failureTitle": {
+    "message": "リンクに識別可能な名前が指定されていません"
+  },
+  "lighthouse-core/audits/accessibility/link-name.js | title": {
+    "message": "リンクに識別可能な名前が指定されています"
+  },
+  "lighthouse-core/audits/accessibility/list.js | description": {
+    "message": "スクリーン リーダーでは、特殊な方法でリストが読み上げられます。適切に読み上げられるようにするには、正しいリスト構造を指定する必要があります。[詳細](https://web.dev/list/)"
+  },
+  "lighthouse-core/audits/accessibility/list.js | failureTitle": {
+    "message": "リストには、`<li>` 要素と、スクリプト対応要素(`<script>` と `<template>`)以外も含まれています。"
+  },
+  "lighthouse-core/audits/accessibility/list.js | title": {
+    "message": "リストには、`<li>` 要素と、スクリプト対応要素(`<script>` と `<template>`)のみが含まれています。"
+  },
+  "lighthouse-core/audits/accessibility/listitem.js | description": {
+    "message": "スクリーン リーダーで正しく読み上げられるようにするには、リスト項目(`<li>`)を親の `<ul>` または `<ol>` に含める必要があります。[詳細](https://web.dev/listitem/)"
+  },
+  "lighthouse-core/audits/accessibility/listitem.js | failureTitle": {
+    "message": "リスト項目(`<li>`)が `<ul>` または `<ol>` の親要素に含まれていません。"
+  },
+  "lighthouse-core/audits/accessibility/listitem.js | title": {
+    "message": "リスト項目(`<li>`)は `<ul>` または `<ol>` の親要素に含まれています"
+  },
+  "lighthouse-core/audits/accessibility/meta-refresh.js | description": {
+    "message": "ユーザーはページが自動的に更新されると思っていないため、自動更新によってフォーカスがページ上部に戻ると、ユーザーの利便性が低下する可能性があります。[詳細](https://web.dev/meta-refresh/)"
+  },
+  "lighthouse-core/audits/accessibility/meta-refresh.js | failureTitle": {
+    "message": "ドキュメントで `<meta http-equiv=\"refresh\">` が使用されています"
+  },
+  "lighthouse-core/audits/accessibility/meta-refresh.js | title": {
+    "message": "ドキュメントで `<meta http-equiv=\"refresh\">` が使用されていません"
+  },
+  "lighthouse-core/audits/accessibility/meta-viewport.js | description": {
+    "message": "ズーム機能を無効にすると、画面の拡大操作を利用する視力の弱いユーザーがウェブページのコンテンツを確認できなくなります。[詳細](https://web.dev/meta-viewport/)"
+  },
+  "lighthouse-core/audits/accessibility/meta-viewport.js | failureTitle": {
+    "message": "`[user-scalable=\"no\"]` が `<meta name=\"viewport\">` 要素で使用されているか、`[maximum-scale]` 属性が 5 未満に指定されています。"
+  },
+  "lighthouse-core/audits/accessibility/meta-viewport.js | title": {
+    "message": "`[user-scalable=\"no\"]` は `<meta name=\"viewport\">` 要素で使用されておらず、`[maximum-scale]` 属性も 5 未満ではありません。"
+  },
+  "lighthouse-core/audits/accessibility/object-alt.js | description": {
+    "message": "スクリーン リーダーは、テキスト以外のコンテンツを解釈できません。`<object>` 要素に代替テキストを追加すると、スクリーン リーダーを使用するユーザーが意味を把握するのに役立ちます。[詳細](https://web.dev/object-alt/)"
+  },
+  "lighthouse-core/audits/accessibility/object-alt.js | failureTitle": {
+    "message": "`<object>` 要素に `[alt]` テキストが指定されていません"
+  },
+  "lighthouse-core/audits/accessibility/object-alt.js | title": {
+    "message": "`<object>` 要素に `[alt]` テキストが指定されています"
+  },
+  "lighthouse-core/audits/accessibility/tabindex.js | description": {
+    "message": "値が 0 より大きい場合は、明示的なナビゲーション順序を示します。技術的には有効ですが、多くの場合、支援技術を使用しているユーザーにとって利便性が低下します。[詳細](https://web.dev/tabindex/)"
+  },
+  "lighthouse-core/audits/accessibility/tabindex.js | failureTitle": {
+    "message": "一部の要素で `[tabindex]` に 0 より大きい値が指定されています"
+  },
+  "lighthouse-core/audits/accessibility/tabindex.js | title": {
+    "message": "`[tabindex]` に 0 より大きい値を指定している要素はありません"
+  },
+  "lighthouse-core/audits/accessibility/td-headers-attr.js | description": {
+    "message": "スクリーン リーダーには、表内の移動を補助する機能があります。`[headers]` 属性を使用している `<td>` セルが同じ表の他のセルのみを参照するように設定すると、スクリーン リーダーの利便性が向上する可能性があります。[詳細](https://web.dev/td-headers-attr/)"
+  },
+  "lighthouse-core/audits/accessibility/td-headers-attr.js | failureTitle": {
+    "message": "`[headers]` 属性を使用している `<table>` 要素内のセルは、同じ表の他のセルを参照しています。"
+  },
+  "lighthouse-core/audits/accessibility/td-headers-attr.js | title": {
+    "message": "`[headers]` 属性を使用している `<table>` 要素内のセルは、同じ表の他のセルのみを参照しています。"
+  },
+  "lighthouse-core/audits/accessibility/th-has-data-cells.js | description": {
+    "message": "スクリーン リーダーには、表内の移動を補助する機能があります。表のヘッダーが常に一部のセルを参照するように設定すると、スクリーン リーダーの利便性が向上する可能性があります。[詳細](https://web.dev/th-has-data-cells/)"
+  },
+  "lighthouse-core/audits/accessibility/th-has-data-cells.js | failureTitle": {
+    "message": "`<th>` 要素および `[role=\"columnheader\"/\"rowheader\"]` が指定された要素に、記述されたデータセルがありません。"
+  },
+  "lighthouse-core/audits/accessibility/th-has-data-cells.js | title": {
+    "message": "`<th>` 要素および `[role=\"columnheader\"/\"rowheader\"]` が指定された要素に、記述されたデータセルがあります。"
+  },
+  "lighthouse-core/audits/accessibility/valid-lang.js | description": {
+    "message": "要素に有効な [BCP 47 言語](https://www.w3.org/International/questions/qa-choosing-language-tags#question)を指定すると、スクリーン リーダーでテキストが正しく読み上げられるようになります。[詳細](https://web.dev/valid-lang/)"
+  },
+  "lighthouse-core/audits/accessibility/valid-lang.js | failureTitle": {
+    "message": "`[lang]` 属性に有効な値が指定されていません"
+  },
+  "lighthouse-core/audits/accessibility/valid-lang.js | title": {
+    "message": "`[lang]` 属性に有効な値が指定されています"
+  },
+  "lighthouse-core/audits/accessibility/video-caption.js | description": {
+    "message": "動画に字幕を設定すると、聴覚障がいのあるユーザーが情報にアクセスしやすくなります。[詳細](https://web.dev/video-caption/)"
+  },
+  "lighthouse-core/audits/accessibility/video-caption.js | failureTitle": {
+    "message": "`<video>` 要素に、`[kind=\"captions\"]` が指定された `<track>` 要素が含まれていません。"
+  },
+  "lighthouse-core/audits/accessibility/video-caption.js | title": {
+    "message": "`<video>` 要素に `[kind=\"captions\"]` が指定された `<track>` 要素が含まれています"
+  },
+  "lighthouse-core/audits/accessibility/video-description.js | description": {
+    "message": "音声による説明を使用すると、顔の表情や場面といった、会話で伝えることのできない動画の関連情報を提供できます。[詳細](https://web.dev/video-description/)"
+  },
+  "lighthouse-core/audits/accessibility/video-description.js | failureTitle": {
+    "message": "`<video>` 要素に、`[kind=\"description\"]` が指定された `<track>` 要素が含まれていません。"
+  },
+  "lighthouse-core/audits/accessibility/video-description.js | title": {
+    "message": "`<video>` 要素に `[kind=\"description\"]` が指定された `<track>` 要素が含まれています"
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | description": {
+    "message": "ユーザーがプログレッシブ ウェブアプリを iOS のホーム画面に追加したとき、アプリが希望どおりのデザインで表示されるようにするには、`apple-touch-icon` を定義します。参照先は不透明な 192 ピクセル(または 180 ピクセル)の正方形の PNG 画像とする必要があります。[詳細](https://developers.google.com/web/fundamentals/design-and-ux/browser-customization/)"
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | failureTitle": {
+    "message": "有効な `apple-touch-icon` が提供されていません"
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | precomposedWarning": {
+    "message": "`apple-touch-icon-precomposed` は古いバージョンです。`apple-touch-icon` を使用することをおすすめします。"
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | title": {
+    "message": "有効な `apple-touch-icon` が提供されています"
+  },
+  "lighthouse-core/audits/bootup-time.js | chromeExtensionsWarning": {
+    "message": "Chrome 拡張機能がこのページの読み込みに悪影響を及ぼしています。シークレット モードで、または拡張機能なしの Chrome プロファイルからページを監査してみてください。"
+  },
+  "lighthouse-core/audits/bootup-time.js | columnScriptEval": {
+    "message": "スクリプトの評価"
+  },
+  "lighthouse-core/audits/bootup-time.js | columnScriptParse": {
+    "message": "スクリプトの解析"
+  },
+  "lighthouse-core/audits/bootup-time.js | columnTotal": {
+    "message": "合計 CPU 時間"
+  },
+  "lighthouse-core/audits/bootup-time.js | description": {
+    "message": "JavaScript の解析、コンパイル、実行にかかる時間の短縮をご検討ください。配信する JavaScript ペイロードのサイズを抑えると効果が見込めます。[詳細](https://developers.google.com/web/tools/lighthouse/audits/bootup)"
+  },
+  "lighthouse-core/audits/bootup-time.js | failureTitle": {
+    "message": "JavaScript の実行にかかる時間の低減"
+  },
+  "lighthouse-core/audits/bootup-time.js | title": {
+    "message": "JavaScript の実行にかかる時間"
+  },
+  "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | description": {
+    "message": "サイズの大きい GIF は、アニメーション コンテンツの配信方法として効率的ではありません。ネットワークの通信量を抑えるため、GIF を使用する代わりに、アニメーションには MPEG4/WebM 動画、静止画像には PNG/WebP を使用することをご検討ください。[詳細](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/replace-animated-gifs-with-video/)"
+  },
+  "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | title": {
+    "message": "アニメーション コンテンツでの動画フォーマットの使用"
+  },
+  "lighthouse-core/audits/byte-efficiency/offscreen-images.js | description": {
+    "message": "オフスクリーンの非表示の画像は、重要なリソースをすべて読み込んだ後に遅れて読み込むようにして、操作可能になるまでの時間を短縮することをご検討ください。[詳細](https://developers.google.com/web/tools/lighthouse/audits/offscreen-images)"
+  },
+  "lighthouse-core/audits/byte-efficiency/offscreen-images.js | title": {
+    "message": "オフスクリーン画像の遅延読み込み"
+  },
+  "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | description": {
+    "message": "ページの初回ペイントをリソースがブロックしています。重要な JavaScript や CSS はインラインで配信し、それ以外の JavaScript やスタイルはすべて遅らせることをご検討ください。[詳細](https://developers.google.com/web/tools/lighthouse/audits/blocking-resources)"
+  },
+  "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | title": {
+    "message": "レンダリングを妨げるリソースの除外"
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | description": {
+    "message": "ネットワーク ペイロードのサイズが大きいと、ユーザーの金銭的負担が大きくなり、多くの場合、読み込み時間が長くなります。[詳細](https://developers.google.com/web/tools/lighthouse/audits/network-payloads)"
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | displayValue": {
+    "message": "合計サイズは {totalBytes, number, bytes} KB でした"
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | failureTitle": {
+    "message": "過大なネットワーク ペイロードの回避"
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | title": {
+    "message": "過大なネットワーク ペイロードの回避"
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-css.js | description": {
+    "message": "CSS ファイルを最小化すると、ネットワーク ペイロードのサイズを抑えることができます。[詳細](https://developers.google.com/web/tools/lighthouse/audits/minify-css)"
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-css.js | title": {
+    "message": "CSS の最小化"
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | description": {
+    "message": "JavaScript ファイルを最小化すると、ペイロード サイズとスクリプトの解析時間を抑えることができます。[詳細](https://developers.google.com/speed/docs/insights/MinifyResources)"
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | title": {
+    "message": "JavaScript の最小化"
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | description": {
+    "message": "スタイルシートから古いルールを削除し、スクロールせずに見える範囲のコンテンツに使用されていない CSS の読み込みを遅延させると、データ通信量を減らすことができます。[詳細](https://developers.google.com/web/tools/lighthouse/audits/unused-css)"
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | title": {
+    "message": "使用していない CSS を削除してください"
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-javascript.js | description": {
+    "message": "使用していない JavaScript を削除して、データ通信量を減らしてください。"
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-javascript.js | title": {
+    "message": "使用していない JavaScript の削除"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | description": {
+    "message": "キャッシュの有効期間を長くすると、再訪問したユーザーへのページの読み込み速度を向上できます。[詳細](https://developers.google.com/web/tools/lighthouse/audits/cache-policy)"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 件のリソースが見つかりました}other{# 件のリソースが見つかりました}}"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | failureTitle": {
+    "message": "静的なアセットと効率的なキャッシュ ポリシーの配信"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | title": {
+    "message": "静的なアセットでの効率的なキャッシュ ポリシーの使用"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | description": {
+    "message": "画像を最適化すると、読み込み時間を短縮しモバイルデータ量を抑えることができます。[詳細](https://developers.google.com/web/tools/lighthouse/audits/optimize-images)"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | title": {
+    "message": "効率的な画像フォーマット"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | description": {
+    "message": "適切なサイズの画像を配信して、モバイルデータ量を節約し読み込み時間を短縮してください。[詳細](https://developers.google.com/web/tools/lighthouse/audits/oversized-images)"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | title": {
+    "message": "適切なサイズの画像"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | description": {
+    "message": "テキストベースのリソースは圧縮(gzip、deflate、または brotli)して配信し、ネットワークの全体的な通信量を最小限に抑えてください。[詳細](https://developers.google.com/web/tools/lighthouse/audits/text-compression)"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | title": {
+    "message": "テキスト圧縮の有効化"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | description": {
+    "message": "JPEG 2000、JPEG XR、WebP などの画像フォーマットは、PNG や JPEG より圧縮性能が高く、ダウンロード時間やデータ使用量を抑えることができます。[詳細](https://developers.google.com/web/tools/lighthouse/audits/webp)"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | title": {
+    "message": "次世代フォーマットでの画像の配信"
+  },
+  "lighthouse-core/audits/content-width.js | description": {
+    "message": "アプリのコンテンツの幅がビューポートの幅と一致しない場合、アプリがモバイル画面に合わせて最適化されない可能性があります。[詳細](https://developers.google.com/web/tools/lighthouse/audits/content-sized-correctly-for-viewport)"
+  },
+  "lighthouse-core/audits/content-width.js | explanation": {
+    "message": "ビューポートのサイズ({innerWidth} ピクセル)がウィンドウのサイズ({outerWidth} ピクセル)と一致していません。"
+  },
+  "lighthouse-core/audits/content-width.js | failureTitle": {
+    "message": "コンテンツのサイズとビューポートのサイズが一致していません"
+  },
+  "lighthouse-core/audits/content-width.js | title": {
+    "message": "コンテンツのサイズとビューポートのサイズが一致しています"
+  },
+  "lighthouse-core/audits/critical-request-chains.js | description": {
+    "message": "下のクリティカル リクエスト チェーンでは、高い優先度で読み込まれたリソースを確認できます。チェーンの長さを縮小する、リソースのダウンロード サイズを抑える、不要なリソースのダウンロードを遅らせるなどの手段を行って、ページの読み込み速度を改善することをご検討ください。[詳細](https://developers.google.com/web/tools/lighthouse/audits/critical-request-chains)"
+  },
+  "lighthouse-core/audits/critical-request-chains.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 件のチェーンが見つかりました}other{# 件のチェーンが見つかりました}}"
+  },
+  "lighthouse-core/audits/critical-request-chains.js | title": {
+    "message": "クリティカルなリクエストの深さの最小化"
+  },
+  "lighthouse-core/audits/deprecations.js | columnDeprecate": {
+    "message": "非推奨 / 警告"
+  },
+  "lighthouse-core/audits/deprecations.js | columnLine": {
+    "message": "行"
+  },
+  "lighthouse-core/audits/deprecations.js | description": {
+    "message": "サポートの終了した API は最終的にブラウザから削除されます。[詳細](https://web.dev/deprecations)"
+  },
+  "lighthouse-core/audits/deprecations.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 件の警告が見つかりました}other{# 件の警告が見つかりました}}"
+  },
+  "lighthouse-core/audits/deprecations.js | failureTitle": {
+    "message": "サポートを終了した API が使用されています"
+  },
+  "lighthouse-core/audits/deprecations.js | title": {
+    "message": "サポートを終了した API は使用されていません"
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | description": {
+    "message": "アプリケーション キャッシュはサポートを終了しました。[詳細](https://web.dev/appcache-manifest)"
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | displayValue": {
+    "message": "「{AppCacheManifest}」が見つかりました"
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | failureTitle": {
+    "message": "アプリケーション キャッシュを使用しています"
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | title": {
+    "message": "アプリケーション キャッシュは使用していません"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | description": {
+    "message": "doctype を指定すると、ブラウザは後方互換モードに切り替えることができなくなります。[詳細](https://web.dev/doctype)"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationBadDoctype": {
+    "message": "doctype 名には `html` を小文字の文字列で指定する必要があります"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationNoDoctype": {
+    "message": "ドキュメントには doctype を指定する必要があります"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationPublicId": {
+    "message": "publicId は空の文字列であることが想定されています"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationSystemId": {
+    "message": "systemId は空の文字列であることが想定されています"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | failureTitle": {
+    "message": "ページに HTML doctype が指定されていないため、後方互換モードに切り替わります"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | title": {
+    "message": "ページに HTML doctype が指定されています"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | columnElement": {
+    "message": "要素"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | columnStatistic": {
+    "message": "統計情報"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | columnValue": {
+    "message": "値"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | description": {
+    "message": "ブラウザ エンジニアは、ページに含まれる DOM の要素数が 1,500 個を超えないようにすることを推奨しています。ツリーの深さは 32 要素まで、子や親の要素数は 60 個までにするのが最適です。DOM サイズが大きいと、メモリの使用量が増え、[スタイルの計算](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations)に時間がかかり、[レイアウトのリフロー](https://developers.google.com/speed/articles/reflow)というコストが発生する可能性があります。[詳細](https://web.dev/dom-size)"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 件の要素}other{# 件の要素}}"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | failureTitle": {
+    "message": "過大な DOM サイズの回避"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | statisticDOMDepth": {
+    "message": "DOM の最大深さ"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | statisticDOMElements": {
+    "message": "合計 DOM 要素数"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | statisticDOMWidth": {
+    "message": "子要素の上限数"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | title": {
+    "message": "過大な DOM サイズの回避"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | columnRel": {
+    "message": "rel"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | columnTarget": {
+    "message": "リンク先"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | description": {
+    "message": "パフォーマンスを向上し、セキュリティの脆弱性が生じないようにするには、`rel=\"noopener\"` または `rel=\"noreferrer\"` を外部リンクに追加します。[詳細](https://web.dev/external-anchors-use-rel-noopener)"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | failureTitle": {
+    "message": "クロスオリジンへのリンクは安全ではありません"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | title": {
+    "message": "クロスオリジンへのリンクは安全です"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | warning": {
+    "message": "アンカー({anchorHTML})のリンク先を特定できません。ハイパーリンクとして使用していない場合は、target=_blank を削除することをご検討ください。"
+  },
+  "lighthouse-core/audits/dobetterweb/geolocation-on-start.js | description": {
+    "message": "サイトから脈絡なしに位置情報の許可を求められると、ユーザーは不信感を抱き、困惑します。リクエストはユーザーの操作と関連付けて行うようにしてください。[詳細](https://web.dev/geolocation-on-start)"
+  },
+  "lighthouse-core/audits/dobetterweb/geolocation-on-start.js | failureTitle": {
+    "message": "ページの読み込み時に位置情報の許可がリクエストされます"
+  },
+  "lighthouse-core/audits/dobetterweb/geolocation-on-start.js | title": {
+    "message": "ページの読み込み時に位置情報の許可はリクエストされません"
+  },
+  "lighthouse-core/audits/dobetterweb/js-libraries.js | columnVersion": {
+    "message": "バージョン"
+  },
+  "lighthouse-core/audits/dobetterweb/js-libraries.js | description": {
+    "message": "ページで検出されたすべてのフロントエンドの JavaScript ライブラリです。[詳細](https://web.dev/js-libraries)"
+  },
+  "lighthouse-core/audits/dobetterweb/js-libraries.js | title": {
+    "message": "JavaScript ライブラリが検出されました"
+  },
+  "lighthouse-core/audits/dobetterweb/no-document-write.js | description": {
+    "message": "接続速度が遅い環境のユーザーの場合、`document.write()` で動的に挿入される外部スクリプトによってページの読み込みが数十秒遅れる可能性があります。[詳細](https://web.dev/no-document-write)"
+  },
+  "lighthouse-core/audits/dobetterweb/no-document-write.js | failureTitle": {
+    "message": "`document.write()` が使用されています"
+  },
+  "lighthouse-core/audits/dobetterweb/no-document-write.js | title": {
+    "message": "`document.write()` は使用されていません"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | columnSeverity": {
+    "message": "最も高い重大度"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | columnVersion": {
+    "message": "ライブラリのバージョン"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | columnVuln": {
+    "message": "脆弱性の件数"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | description": {
+    "message": "一部の第三者スクリプトには、悪意のあるユーザーによって簡単に特定され利用されるような、既知のセキュリティの脆弱性が含まれていることがあります。[詳細](https://web.dev/no-vulnerable-libraries)"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 件の脆弱性が検出されました}other{# 件の脆弱性が検出されました}}"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | failureTitle": {
+    "message": "既知のセキュリティの脆弱性を含んだフロントエンドの JavaScript ライブラリが含まれています"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | rowSeverityHigh": {
+    "message": "高"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | rowSeverityLow": {
+    "message": "低"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | rowSeverityMedium": {
+    "message": "中"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | title": {
+    "message": "既知のセキュリティの脆弱性を含んだフロントエンドの JavaScript ライブラリは除外されています"
+  },
+  "lighthouse-core/audits/dobetterweb/notification-on-start.js | description": {
+    "message": "サイトから脈絡なしに通知の送信許可を求められると、ユーザーは不信感を抱き、困惑します。リクエストはユーザーの操作と関連付けて行うようにしてください。[詳細](https://web.dev/notification-on-start)"
+  },
+  "lighthouse-core/audits/dobetterweb/notification-on-start.js | failureTitle": {
+    "message": "ページの読み込み時に通知の許可がリクエストされます"
+  },
+  "lighthouse-core/audits/dobetterweb/notification-on-start.js | title": {
+    "message": "ページの読み込み時に通知の許可はリクエストされません"
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | columnFailingElem": {
+    "message": "問題のある要素"
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | description": {
+    "message": "パスワードの貼り付けを禁止すると、良好なセキュリティ ポリシーが損なわれます。[詳細](https://web.dev/password-inputs-can-be-pasted-into)"
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | failureTitle": {
+    "message": "ユーザーはパスワード欄に貼り付けできません"
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | title": {
+    "message": "ユーザーはパスワード欄に貼り付けできます"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | columnProtocol": {
+    "message": "プロトコル"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | description": {
+    "message": "HTTP/2 には、バイナリ ヘッダー、多重化、サーバー プッシュなど、HTTP/1.1 と比べて多くのメリットがあります。[詳細](https://web.dev/uses-http2)"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | displayValue": {
+    "message": "{itemCount,plural, =1{HTTP/2 経由で配信されなかったリクエストが 1 件あります}other{HTTP/2 経由で配信されなかったリクエストが # 件あります}}"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | failureTitle": {
+    "message": "ページリソースの一部で HTTP/2 が使用されていません"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | title": {
+    "message": "ページ独自のリソースで HTTP/2 が使用されています"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-passive-event-listeners.js | description": {
+    "message": "ページのスクロール パフォーマンスを高めるには、touch および wheel イベント リスナーを `passive` として指定することをご検討ください。[詳細](https://web.dev/uses-passive-event-listeners)"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-passive-event-listeners.js | failureTitle": {
+    "message": "スクロール パフォーマンスを高める受動的なリスナーが使用されていません"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-passive-event-listeners.js | title": {
+    "message": "スクロール パフォーマンスを高める受動的なリスナーが使用されています"
+  },
+  "lighthouse-core/audits/errors-in-console.js | columnDesc": {
+    "message": "説明"
+  },
+  "lighthouse-core/audits/errors-in-console.js | description": {
+    "message": "コンソールに記録されたエラーは未解決の問題を表します。これらはネットワーク リクエストの失敗や他のブラウザの問題が原因で表示される可能性があります。[詳細](https://web.dev/errors-in-console)"
+  },
+  "lighthouse-core/audits/errors-in-console.js | failureTitle": {
+    "message": "ブラウザのエラーがコンソールに記録されました"
+  },
+  "lighthouse-core/audits/errors-in-console.js | title": {
+    "message": "コンソールに記録されたブラウザのエラーはありません"
+  },
+  "lighthouse-core/audits/font-display.js | description": {
+    "message": "フォント表示の CSS 機能を使用して、Web フォントの読み込み中にユーザーがテキストを読めるようにしてください。[詳細](https://developers.google.com/web/updates/2016/02/font-display)"
+  },
+  "lighthouse-core/audits/font-display.js | failureTitle": {
+    "message": "ウェブフォント読み込み中のテキストの表示"
+  },
+  "lighthouse-core/audits/font-display.js | title": {
+    "message": "ウェブフォント読み込み中の全テキストの表示"
+  },
+  "lighthouse-core/audits/font-display.js | undeclaredFontURLWarning": {
+    "message": "次の URL の font-display の値を Lighthouse で確認できませんでした: {fontURL}"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | columnActual": {
+    "message": "アスペクト比(実際)"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | columnDisplayed": {
+    "message": "アスペクト比(表示)"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | description": {
+    "message": "画像は本来のアスペクト比で表示する必要があります。[詳細](https://web.dev/image-aspect-ratio)"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | failureTitle": {
+    "message": "不適切なアスペクト比の画像が表示されています"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | title": {
+    "message": "正しいアスペクト比の画像が表示されています"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | warningCompute": {
+    "message": "画像サイズに関する情報({url})が正しくありません"
+  },
+  "lighthouse-core/audits/installable-manifest.js | description": {
+    "message": "ブラウザではホーム画面へのアプリの追加を促すメッセージを事前にユーザーに表示できます。これによりエンゲージメントが向上します。[詳細](https://developers.google.com/web/tools/lighthouse/audits/install-prompt)"
+  },
+  "lighthouse-core/audits/installable-manifest.js | failureTitle": {
+    "message": "ウェブアプリのマニフェストはインストール可能となる要件を満たしていません"
+  },
+  "lighthouse-core/audits/installable-manifest.js | title": {
+    "message": "ウェブアプリのマニフェストはインストール可能となる要件を満たしています"
+  },
+  "lighthouse-core/audits/is-on-https.js | columnInsecureURL": {
+    "message": "安全でない URL"
+  },
+  "lighthouse-core/audits/is-on-https.js | description": {
+    "message": "すべてのサイトは、機密性の高い情報を扱っていない場合でも、HTTPS で保護する必要があります。HTTPS は、侵入者があなたのアプリとユーザー間の通信を改ざんしたり、傍受したりするのを防ぎます。HTTPS は、HTTP/2 や多くの新しいウェブ プラットフォーム API を使用するための前提条件となります。[詳細](https://web.dev/is-on-https)"
+  },
+  "lighthouse-core/audits/is-on-https.js | displayValue": {
+    "message": "{itemCount,plural, =1{安全でないリクエストが 1 件見つかりました}other{安全でないリクエストが # 件見つかりました}}"
+  },
+  "lighthouse-core/audits/is-on-https.js | failureTitle": {
+    "message": "HTTPS が使用されていません"
+  },
+  "lighthouse-core/audits/is-on-https.js | title": {
+    "message": "HTTPS を使用しています"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | description": {
+    "message": "モバイル ネットワークでのページ読み込みを速くすることで、優れたモバイル ユーザー エクスペリエンスが実現されます。[詳細](https://developers.google.com/web/tools/lighthouse/audits/fast-3g)"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | displayValueText": {
+    "message": "操作可能になるまでの時間: {timeInMs, number, seconds} 秒"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | displayValueTextWithOverride": {
+    "message": "モバイル ネットワークのシミュレーションで操作可能になるまでの時間: {timeInMs, number, seconds} 秒"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | explanationLoadSlow": {
+    "message": "ページの読み込みが遅すぎます。応答に 10 秒以上かかっています。改善方法については、[パフォーマンス] に表示される最適化案と診断結果をご確認ください。"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | failureTitle": {
+    "message": "ページ読み込みはモバイル ネットワークで十分な速度で実行されません"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | title": {
+    "message": "ページ読み込みはモバイル ネットワークで十分な速度で実行されます"
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | columnCategory": {
+    "message": "カテゴリ"
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | description": {
+    "message": "JS の解析、コンパイル、実行にかかる時間の短縮をご検討ください。配信する JS ペイロードのサイズを抑えると効果が見込めます。"
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | failureTitle": {
+    "message": "メインスレッド処理の最小化"
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | title": {
+    "message": "メインスレッド処理の最小化"
+  },
+  "lighthouse-core/audits/manual/pwa-cross-browser.js | description": {
+    "message": "ユーザー数を最大限に増やすには、サイトがすべての主要ブラウザで機能するようにします。[詳細](https://developers.google.com/web/progressive-web-apps/checklist#site-works-cross-browser)"
+  },
+  "lighthouse-core/audits/manual/pwa-cross-browser.js | title": {
+    "message": "サイトがクロスブラウザに対応している"
+  },
+  "lighthouse-core/audits/manual/pwa-each-page-has-url.js | description": {
+    "message": "ソーシャル メディアで共有できるように、個々のページが URL によるディープリンクに対応していることと、それらの URL が固有であることを確認してください。[詳細](https://developers.google.com/web/progressive-web-apps/checklist#each-page-has-a-url)"
+  },
+  "lighthouse-core/audits/manual/pwa-each-page-has-url.js | title": {
+    "message": "ページごとに 1 つの URL を使用している"
+  },
+  "lighthouse-core/audits/manual/pwa-page-transitions.js | description": {
+    "message": "遅いネットワークであってもタップしたときに画面がすばやく切り替われば、パフォーマンスが悪いと感じにくくなります。[詳細](https://developers.google.com/web/progressive-web-apps/checklist#page-transitions-dont-feel-like-they-block-on-the-network)"
+  },
+  "lighthouse-core/audits/manual/pwa-page-transitions.js | title": {
+    "message": "ページの切り替え時、ネットワークが遅いという印象を与えない"
+  },
+  "lighthouse-core/audits/metrics/estimated-input-latency.js | description": {
+    "message": "入力の推定待ち時間とは、ページ読み込みの最もビジーな 5 秒間における、ユーザーの入力に対するアプリの推定応答時間(ミリ秒単位)です。待ち時間が 50 ミリ秒より長い場合、ユーザーはアプリの反応が悪いと感じる可能性があります。[詳細](https://developers.google.com/web/tools/lighthouse/audits/estimated-input-latency)"
+  },
+  "lighthouse-core/audits/metrics/estimated-input-latency.js | title": {
+    "message": "入力の推定待ち時間"
+  },
+  "lighthouse-core/audits/metrics/first-contentful-paint.js | description": {
+    "message": "コンテンツの初回ペイントは、テキストまたは画像が初めてペイントされるまでにかかった時間です。[詳細](https://developers.google.com/web/tools/lighthouse/audits/first-contentful-paint)"
+  },
+  "lighthouse-core/audits/metrics/first-contentful-paint.js | title": {
+    "message": "コンテンツの初回ペイント"
+  },
+  "lighthouse-core/audits/metrics/first-cpu-idle.js | description": {
+    "message": "CPU の初回アイドルは、ページのメインスレッド処理が静止し、初めて入力の処理が可能になるまでにかかった時間です。[詳細](https://developers.google.com/web/tools/lighthouse/audits/first-interactive)"
+  },
+  "lighthouse-core/audits/metrics/first-cpu-idle.js | title": {
+    "message": "CPU の初回アイドル"
+  },
+  "lighthouse-core/audits/metrics/first-meaningful-paint.js | description": {
+    "message": "意味のあるコンテンツの初回ペイントは、ページの主要なコンテンツが可視化されるまでにかかった時間です。[詳細](https://developers.google.com/web/tools/lighthouse/audits/first-meaningful-paint)"
+  },
+  "lighthouse-core/audits/metrics/first-meaningful-paint.js | title": {
+    "message": "意味のあるコンテンツの初回ペイント"
+  },
+  "lighthouse-core/audits/metrics/interactive.js | description": {
+    "message": "操作可能になるまでの時間とは、ページが完全に操作可能になるのに要する時間です。[詳細](https://developers.google.com/web/tools/lighthouse/audits/consistently-interactive)"
+  },
+  "lighthouse-core/audits/metrics/interactive.js | title": {
+    "message": "インタラクティブになるまでの時間"
+  },
+  "lighthouse-core/audits/metrics/max-potential-fid.js | description": {
+    "message": "ユーザーに発生する可能性がある初回入力遅延の最大推定時間とは、最も長いタスクの時間(ミリ秒単位)です。[詳細](https://developers.google.com/web/updates/2018/05/first-input-delay)"
+  },
+  "lighthouse-core/audits/metrics/max-potential-fid.js | title": {
+    "message": "初回入力遅延の最大推定時間"
+  },
+  "lighthouse-core/audits/metrics/speed-index.js | description": {
+    "message": "速度インデックスは、ページのコンテンツが取り込まれて表示される速さを表します。[詳細](https://developers.google.com/web/tools/lighthouse/audits/speed-index)"
+  },
+  "lighthouse-core/audits/metrics/speed-index.js | title": {
+    "message": "速度インデックス"
+  },
+  "lighthouse-core/audits/metrics/total-blocking-time.js | description": {
+    "message": "タスクの時間が 50 ミリ秒を上回った場合の、コンテンツの初回ペイントから操作可能になるまでのすべての時間の合計を、ミリ秒単位で表します。"
+  },
+  "lighthouse-core/audits/metrics/total-blocking-time.js | title": {
+    "message": "合計ブロック時間"
+  },
+  "lighthouse-core/audits/network-rtt.js | description": {
+    "message": "ネットワークのラウンドトリップ時間(RTT)はパフォーマンスに大きく影響します。発信元への RTT が高い場合は、サーバーの場所をユーザーの近くにするとパフォーマンスを改善できることを示しています。[詳細](https://hpbn.co/primer-on-latency-and-bandwidth/)"
+  },
+  "lighthouse-core/audits/network-rtt.js | title": {
+    "message": "ネットワークのラウンドトリップ時間"
+  },
+  "lighthouse-core/audits/network-server-latency.js | description": {
+    "message": "サーバーの待ち時間はウェブ パフォーマンスに影響することがあります。発信元のサーバーのレイテンシが高い場合は、サーバーが過負荷であるか、サーバーのバックエンド パフォーマンスが低いことを示しています。[詳細](https://hpbn.co/primer-on-web-performance/#analyzing-the-resource-waterfall)"
+  },
+  "lighthouse-core/audits/network-server-latency.js | title": {
+    "message": "サーバーのバックエンド待ち時間"
+  },
+  "lighthouse-core/audits/offline-start-url.js | description": {
+    "message": "Service Worker によって、ネットワークが予期しない状態になったときでもウェブアプリの安定した動作が可能になります。[詳細](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)"
+  },
+  "lighthouse-core/audits/offline-start-url.js | failureTitle": {
+    "message": "`start_url` は、オフライン時にステータス 200 の応答を返しません"
+  },
+  "lighthouse-core/audits/offline-start-url.js | title": {
+    "message": "`start_url` は、オフライン時にステータス 200 の応答を返します"
+  },
+  "lighthouse-core/audits/offline-start-url.js | warningCantStart": {
+    "message": "Lighthouse でマニフェストから `start_url` を読み取れませんでした。その結果、`start_url` はドキュメントの URL と認識されています。エラー メッセージ: 「{manifestWarning}」。"
+  },
+  "lighthouse-core/audits/performance-budget.js | columnOverBudget": {
+    "message": "予算超過"
+  },
+  "lighthouse-core/audits/performance-budget.js | description": {
+    "message": "ネットワーク リクエストの数とサイズが、指定したパフォーマンス予算の設定目標内に収まるよう維持します。[詳細](https://developers.google.com/web/tools/lighthouse/audits/budgets)"
+  },
+  "lighthouse-core/audits/performance-budget.js | requestCountOverBudget": {
+    "message": "{count,plural, =1{1 件のリクエスト}other{# 件のリクエスト}}"
+  },
+  "lighthouse-core/audits/performance-budget.js | title": {
+    "message": "パフォーマンス予算"
+  },
+  "lighthouse-core/audits/redirects-http.js | description": {
+    "message": "HTTPS を設定済みの場合は、すべてのユーザーに安全なウェブ機能を提供できるように、すべての HTTP トラフィックが HTTPS にリダイレクトされることを確認してください。[詳細](https://developers.google.com/web/tools/lighthouse/audits/http-redirects-to-https)"
+  },
+  "lighthouse-core/audits/redirects-http.js | failureTitle": {
+    "message": "HTTP トラフィックは HTTPS にリダイレクトされません"
+  },
+  "lighthouse-core/audits/redirects-http.js | title": {
+    "message": "HTTP トラフィックは HTTPS にリダイレクトされます"
+  },
+  "lighthouse-core/audits/redirects.js | description": {
+    "message": "リダイレクトを行うと、ページの読み込みにさらに時間がかかる可能性があります。[詳細](https://developers.google.com/web/tools/lighthouse/audits/redirects)"
+  },
+  "lighthouse-core/audits/redirects.js | title": {
+    "message": "複数のページ リダイレクトの回避"
+  },
+  "lighthouse-core/audits/resource-summary.js | description": {
+    "message": "ページリソースの数とサイズの予算を設定するには、budget.json ファイルを追加します。[詳細](https://developers.google.com/web/tools/lighthouse/audits/budgets)"
+  },
+  "lighthouse-core/audits/resource-summary.js | displayValue": {
+    "message": "{requestCount,plural, =1{1 件のリクエスト • {byteCount, number, bytes} KB}other{# 件のリクエスト • {byteCount, number, bytes} KB}}"
+  },
+  "lighthouse-core/audits/resource-summary.js | title": {
+    "message": "リクエスト数を少なく、転送サイズを小さく維持してください"
+  },
+  "lighthouse-core/audits/seo/canonical.js | description": {
+    "message": "正規リンクで、検索結果に表示する URL を指定します。[詳細](https://web.dev/canonical)"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationConflict": {
+    "message": "複数の URL が競合しています({urlList})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationDifferentDomain": {
+    "message": "別のドメイン({url})を指しています"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationInvalid": {
+    "message": "URL({url})が無効です"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationPointsElsewhere": {
+    "message": "別の `hreflang` 位置({url})を指しています"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationRelative": {
+    "message": "相対 URL({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationRoot": {
+    "message": "コンテンツの同等のページではなく、ドメインのルート URL(ホームページ)を参照しています。"
+  },
+  "lighthouse-core/audits/seo/canonical.js | failureTitle": {
+    "message": "ドキュメントに有効な `rel=canonical` が指定されていません"
+  },
+  "lighthouse-core/audits/seo/canonical.js | title": {
+    "message": "ドキュメントに有効な `rel=canonical` が指定されています"
+  },
+  "lighthouse-core/audits/seo/font-size.js | description": {
+    "message": "12 px より小さいフォントサイズは小さすぎて判読できず、モバイル ユーザーには「ピンチしてズーム」の操作が必要になります。60% を超えるページ テキストでフォント サイズが 12 px 以上になるようにしてください。[詳細](https://web.dev/font-size)"
+  },
+  "lighthouse-core/audits/seo/font-size.js | displayValue": {
+    "message": "判読可能なテキスト: {decimalProportion, number, extendedPercent}"
+  },
+  "lighthouse-core/audits/seo/font-size.js | explanationViewport": {
+    "message": "テキストが判読できません。モバイル スクリーン向けに最適化されたビューポート メタタグがありません。"
+  },
+  "lighthouse-core/audits/seo/font-size.js | explanationWithDisclaimer": {
+    "message": "{decimalProportion, number, extendedPercent} のテキストが小さすぎます({decimalProportionVisited, number, extendedPercent} のサンプルを基準とします)。"
+  },
+  "lighthouse-core/audits/seo/font-size.js | failureTitle": {
+    "message": "ドキュメントで判読可能なフォントサイズが使用されていません"
+  },
+  "lighthouse-core/audits/seo/font-size.js | title": {
+    "message": "ドキュメントで判読可能なフォントサイズが使用されています"
+  },
+  "lighthouse-core/audits/seo/hreflang.js | description": {
+    "message": "hreflang リンクを利用して、所定の言語や地域の検索結果に掲載する必要があるページのバージョンを検索エンジンに伝えます。[詳細](https://web.dev/hreflang)"
+  },
+  "lighthouse-core/audits/seo/hreflang.js | failureTitle": {
+    "message": "ドキュメントに有効な `hreflang` が指定されていません"
+  },
+  "lighthouse-core/audits/seo/hreflang.js | title": {
+    "message": "ドキュメントに有効な `hreflang` が指定されています"
+  },
+  "lighthouse-core/audits/seo/http-status-code.js | description": {
+    "message": "HTTP ステータス コードが正しくないページはインデックスに適切に登録されていない可能性があります。[詳細](https://web.dev/http-status-code)"
+  },
+  "lighthouse-core/audits/seo/http-status-code.js | failureTitle": {
+    "message": "ページに設定されている HTTP ステータス コードが正しくありません"
+  },
+  "lighthouse-core/audits/seo/http-status-code.js | title": {
+    "message": "ページに適切な HTTP ステータス コードが指定されています"
+  },
+  "lighthouse-core/audits/seo/is-crawlable.js | description": {
+    "message": "ページのクロールを許可しない場合、検索エンジンはそのページを検索結果に追加できません。[詳細](https://web.dev/is-crawable)"
+  },
+  "lighthouse-core/audits/seo/is-crawlable.js | failureTitle": {
+    "message": "ページのインデックス登録を行えません"
+  },
+  "lighthouse-core/audits/seo/is-crawlable.js | title": {
+    "message": "ページのインデックス登録はブロックされていません"
+  },
+  "lighthouse-core/audits/seo/link-text.js | description": {
+    "message": "リンクテキストをわかりやすくすると、検索エンジンがコンテンツを認識しやすくなります。[詳細](https://web.dev/link-text)"
+  },
+  "lighthouse-core/audits/seo/link-text.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 件のリンクが見つかりました}other{# 件のリンクが見つかりました}}"
+  },
+  "lighthouse-core/audits/seo/link-text.js | failureTitle": {
+    "message": "リンクにわかりやすいテキストが設定されていません"
+  },
+  "lighthouse-core/audits/seo/link-text.js | title": {
+    "message": "リンクにわかりやすいテキストが設定されています"
+  },
+  "lighthouse-core/audits/seo/manual/structured-data.js | description": {
+    "message": "[構造化データ テストツール](https://search.google.com/structured-data/testing-tool/)と[構造化データ用 Linter](http://linter.structured-data.org/) を実行して構造化データを検証してください。[詳細](https://web.dev/structured-data)"
+  },
+  "lighthouse-core/audits/seo/manual/structured-data.js | title": {
+    "message": "構造化データが無効です"
+  },
+  "lighthouse-core/audits/seo/meta-description.js | description": {
+    "message": "メタ ディスクリプションを検索結果に追加すると、ページ コンテンツの内容を簡潔にまとめることができます。[詳細](https://web.dev/meta-description)"
+  },
+  "lighthouse-core/audits/seo/meta-description.js | explanation": {
+    "message": "説明のテキストが空です。"
+  },
+  "lighthouse-core/audits/seo/meta-description.js | failureTitle": {
+    "message": "ドキュメントにメタ ディスクリプションが指定されていません"
+  },
+  "lighthouse-core/audits/seo/meta-description.js | title": {
+    "message": "ドキュメントにメタ ディスクリプションが指定されています"
+  },
+  "lighthouse-core/audits/seo/plugins.js | description": {
+    "message": "検索エンジンはプラグイン コンテンツをインデックスに登録できません。多くのデバイスで、プラグインが制限され、プラグインがサポートされていないこともあります。[詳細](https://web.dev/plugins)"
+  },
+  "lighthouse-core/audits/seo/plugins.js | failureTitle": {
+    "message": "ドキュメントでプラグインを使用しています"
+  },
+  "lighthouse-core/audits/seo/plugins.js | title": {
+    "message": "ドキュメントではプラグインを使用できません"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | description": {
+    "message": "robots.txt ファイルの形式が間違っていると、ウェブサイトのクロールやインデックス登録について指定した設定をクローラが認識できない可能性があります。[詳細](https://web.dev/robots-txt)"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | displayValueHttpBadCode": {
+    "message": "robots.txt のリクエストで返された HTTP ステータス: {statusCode}"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | displayValueValidationError": {
+    "message": "{itemCount,plural, =1{1 件のエラーが見つかりました}other{# 件のエラーが見つかりました}}"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | explanation": {
+    "message": "Lighthouse は robots.txt ファイルをダウンロードできませんでした"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | failureTitle": {
+    "message": "robots.txt が無効です"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | title": {
+    "message": "robots.txt は有効です"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | description": {
+    "message": "ボタンやリンクなどの操作可能な要素は十分な大きさ(48x48 px)に設定し、他の要素と重ならずに簡単にタップできるよう、要素の周囲にスペースを取る必要があります。[詳細](https://web.dev/tap-targets)"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | displayValue": {
+    "message": "{decimalProportion, number, percent} でタップ ターゲットが適切なサイズに設定されています"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | explanationViewportMetaNotOptimized": {
+    "message": "タップ ターゲットが小さすぎます。モバイル スクリーン向けに最適化されたビューポート メタタグがありません。"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | failureTitle": {
+    "message": "タップ ターゲットのサイズが適切に設定されていません"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | overlappingTargetHeader": {
+    "message": "重複するターゲット"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | tapTargetHeader": {
+    "message": "タップ ターゲット"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | title": {
+    "message": "タップ ターゲットのサイズは適切に設定されています"
+  },
+  "lighthouse-core/audits/service-worker.js | description": {
+    "message": "Service Worker は、多くのプログレッシブ ウェブアプリ機能(オフライン、ホーム画面への追加、プッシュ通知など)をアプリで使用できるようにするための技術です。[詳細](https://developers.google.com/web/tools/lighthouse/audits/registered-service-worker)"
+  },
+  "lighthouse-core/audits/service-worker.js | explanationBadManifest": {
+    "message": "このページは Service Worker によって制御されていますが、マニフェストが有効な JSON としてパースされなかったため、`start_url` は見つかりませんでした"
+  },
+  "lighthouse-core/audits/service-worker.js | explanationBadStartUrl": {
+    "message": "このページは Service Worker によって制御されていますが、`start_url`({startUrl})が Service Worker のスコープ({scopeUrl})内にありません"
+  },
+  "lighthouse-core/audits/service-worker.js | explanationNoManifest": {
+    "message": "このページは Service Worker によって制御されていますが、マニフェストが取得されなかったため、`start_url` は見つかりませんでした。"
+  },
+  "lighthouse-core/audits/service-worker.js | explanationOutOfScope": {
+    "message": "この発信元には Service Worker が存在しますが、ページ({pageUrl})がスコープ内にありません。"
+  },
+  "lighthouse-core/audits/service-worker.js | failureTitle": {
+    "message": "ページと `start_url` を制御する Service Worker が登録されていません"
+  },
+  "lighthouse-core/audits/service-worker.js | title": {
+    "message": "ページと `start_url` を制御する Service Worker が登録されています"
+  },
+  "lighthouse-core/audits/splash-screen.js | description": {
+    "message": "テーマのあるスプラッシュ画面を設定すると、ホーム画面からのアプリの起動時に、質の良いアプリであることをユーザーにアピールできます。[詳細](https://developers.google.com/web/tools/lighthouse/audits/custom-splash-screen)"
+  },
+  "lighthouse-core/audits/splash-screen.js | failureTitle": {
+    "message": "カスタムのスプラッシュ画面が設定されていません"
+  },
+  "lighthouse-core/audits/splash-screen.js | title": {
+    "message": "カスタムのスプラッシュ画面が設定されています"
+  },
+  "lighthouse-core/audits/themed-omnibox.js | description": {
+    "message": "ブラウザのアドレスバーにサイトに合わせたテーマを設定できます。[詳細](https://developers.google.com/web/tools/lighthouse/audits/address-bar)"
+  },
+  "lighthouse-core/audits/themed-omnibox.js | failureTitle": {
+    "message": "アドレスバーにテーマの色が設定されていません。"
+  },
+  "lighthouse-core/audits/themed-omnibox.js | title": {
+    "message": "アドレスバーにテーマの色が設定されています。"
+  },
+  "lighthouse-core/audits/third-party-summary.js | columnBlockingTime": {
+    "message": "メインスレッドのブロック時間"
+  },
+  "lighthouse-core/audits/third-party-summary.js | columnThirdParty": {
+    "message": "第三者"
+  },
+  "lighthouse-core/audits/third-party-summary.js | description": {
+    "message": "第三者コードによって、読み込み速度が著しく低下する可能性があります。重複する第三者プロバイダの数を制限したうえで、ページのメインの部分を読み込み終えた後に第三者コードを読み込んでみてください。[詳細](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/loading-third-party-javascript/)"
+  },
+  "lighthouse-core/audits/third-party-summary.js | displayValue": {
+    "message": "第三者コードによってメインスレッドが {timeInMs, number, milliseconds} ミリ秒間ブロックされました"
+  },
+  "lighthouse-core/audits/third-party-summary.js | failureTitle": {
+    "message": "第三者コードの影響を抑えてください"
+  },
+  "lighthouse-core/audits/third-party-summary.js | title": {
+    "message": "第三者コードの利用"
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | description": {
+    "message": "最初の 1 バイトまでの時間は、サーバーが応答を返すまでにかかった時間を表しています。[詳細](https://developers.google.com/web/tools/lighthouse/audits/ttfb)"
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | displayValue": {
+    "message": "ルート ドキュメントの読み込みに {timeInMs, number, milliseconds} ミリ秒かかりました"
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | failureTitle": {
+    "message": "サーバー応答時間の短縮(TTFB)"
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | title": {
+    "message": "サーバーの応答時間が遅い(TTFB)"
+  },
+  "lighthouse-core/audits/user-timings.js | columnDuration": {
+    "message": "継続時間"
+  },
+  "lighthouse-core/audits/user-timings.js | columnStartTime": {
+    "message": "開始時間"
+  },
+  "lighthouse-core/audits/user-timings.js | columnType": {
+    "message": "タイプ"
+  },
+  "lighthouse-core/audits/user-timings.js | description": {
+    "message": "User Timing API を使用してアプリをインストルメント化し、主要なユーザー エクスペリエンスでのアプリの実際のパフォーマンスを測定できるようにしてください。[詳細](https://developers.google.com/web/tools/lighthouse/audits/user-timing)"
+  },
+  "lighthouse-core/audits/user-timings.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 件のカスタム速度}other{# 件のカスタム速度}}"
+  },
+  "lighthouse-core/audits/user-timings.js | title": {
+    "message": "カスタム速度の記録と計測"
+  },
+  "lighthouse-core/audits/uses-rel-preconnect.js | crossoriginWarning": {
+    "message": "「{securityOrigin}」で事前接続の <link> が見つかりましたが、ブラウザで使用されませんでした。`crossorigin` 属性を適切に使用していることをご確認ください。"
+  },
+  "lighthouse-core/audits/uses-rel-preconnect.js | description": {
+    "message": "重要な第三者ドメインへの接続を早期に確立できるように、`preconnect` または `dns-prefetch` のリソースヒントを追加することを検討してください。[詳細](https://developers.google.com/web/fundamentals/performance/resource-prioritization#preconnect)"
+  },
+  "lighthouse-core/audits/uses-rel-preconnect.js | title": {
+    "message": "必須のドメインへの事前接続"
+  },
+  "lighthouse-core/audits/uses-rel-preload.js | crossoriginWarning": {
+    "message": "「{preloadURL}」のプリロード <link> が見つかりましたが、ブラウザで使用されませんでした。`crossorigin` 属性を適切に使用していることをご確認ください。"
+  },
+  "lighthouse-core/audits/uses-rel-preload.js | description": {
+    "message": "`<link rel=preload>` を使用して、現在ページ読み込みの後のほうでリクエストしているリソースを優先的に取得することをご検討ください。[詳細](https://developers.google.com/web/tools/lighthouse/audits/preload)"
+  },
+  "lighthouse-core/audits/uses-rel-preload.js | title": {
+    "message": "キー リクエストのプリロード"
+  },
+  "lighthouse-core/audits/viewport.js | description": {
+    "message": "モバイル画面用にアプリを最適化するには、`<meta name=\"viewport\">` タグを追加してください。[詳細](https://developers.google.com/web/tools/lighthouse/audits/has-viewport-meta-tag)"
+  },
+  "lighthouse-core/audits/viewport.js | explanationNoTag": {
+    "message": "`<meta name=\"viewport\">` タグが見つかりません"
+  },
+  "lighthouse-core/audits/viewport.js | failureTitle": {
+    "message": "`width` または `initial-scale` を指定した `<meta name=\"viewport\">` タグがありません"
+  },
+  "lighthouse-core/audits/viewport.js | title": {
+    "message": "`width` または `initial-scale` を指定した `<meta name=\"viewport\">` タグがあります"
+  },
+  "lighthouse-core/audits/without-javascript.js | description": {
+    "message": "JavaScript が無効になっている場合でも、アプリではなんらかのコンテンツを表示する必要があります。「アプリの使用には JavaScript が必要」という旨の警告を表示するだけでもかまいません。[詳細](https://developers.google.com/web/tools/lighthouse/audits/no-js)"
+  },
+  "lighthouse-core/audits/without-javascript.js | explanation": {
+    "message": "スクリプトを利用できない場合でも、ページの本文にはなんらかのコンテンツを表示する必要があります。"
+  },
+  "lighthouse-core/audits/without-javascript.js | failureTitle": {
+    "message": "JavaScript を利用できない場合の代替コンテンツが提供されていません"
+  },
+  "lighthouse-core/audits/without-javascript.js | title": {
+    "message": "JavaScript を利用できない場合のコンテンツが含まれています"
+  },
+  "lighthouse-core/audits/works-offline.js | description": {
+    "message": "プログレッシブ ウェブアプリを作成している場合は、アプリがオフラインでも動作するように、Service Worker の使用を検討してください。[詳細](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)"
+  },
+  "lighthouse-core/audits/works-offline.js | failureTitle": {
+    "message": "現在のページは、オフライン時にステータス 200 の応答を返しません"
+  },
+  "lighthouse-core/audits/works-offline.js | title": {
+    "message": "現在のページは、オフライン時にステータス 200 の応答を返します"
+  },
+  "lighthouse-core/audits/works-offline.js | warningNoLoad": {
+    "message": "テスト URL({requested})が「{final}」にリダイレクトされているため、このページはオフラインで読み込まれない可能性があります。2 番目の URL を直接テストしてみてください。"
+  },
+  "lighthouse-core/config/default-config.js | a11yAriaGroupDescription": {
+    "message": "ここには、アプリでの ARIA の使用方法に関する改善点が表示されます。修正すると、支援技術(スクリーン リーダーなど)の利便性が向上する可能性があります。"
+  },
+  "lighthouse-core/config/default-config.js | a11yAriaGroupTitle": {
+    "message": "ARIA"
+  },
+  "lighthouse-core/config/default-config.js | a11yAudioVideoGroupDescription": {
+    "message": "ここで、音声と動画の代替コンテンツを提供できます。代替コンテンツを提供すると、聴覚や視覚に障がいがあるユーザーの利便性が向上する可能性があります。"
+  },
+  "lighthouse-core/config/default-config.js | a11yAudioVideoGroupTitle": {
+    "message": "音声と動画"
+  },
+  "lighthouse-core/config/default-config.js | a11yBestPracticesGroupDescription": {
+    "message": "ここで、一般的なユーザー補助機能のおすすめの方法を確認できます。"
+  },
+  "lighthouse-core/config/default-config.js | a11yBestPracticesGroupTitle": {
+    "message": "おすすめの方法"
+  },
+  "lighthouse-core/config/default-config.js | a11yCategoryDescription": {
+    "message": "これらのチェックにより、[ウェブアプリのユーザー補助機能の改善点](https://developers.google.com/web/fundamentals/accessibility)が明確になります。自動的に検出できるユーザー補助の問題は一部に過ぎないため、手動テストも実施することをおすすめします。"
+  },
+  "lighthouse-core/config/default-config.js | a11yCategoryManualDescription": {
+    "message": "ここに、自動テストツールではカバーできない範囲に対処する項目が表示されます。詳しくは、[ユーザー補助機能の審査を実施する](https://developers.google.com/web/fundamentals/accessibility/how-to-review)方法についてのガイドをご覧ください。"
+  },
+  "lighthouse-core/config/default-config.js | a11yCategoryTitle": {
+    "message": "ユーザー補助"
+  },
+  "lighthouse-core/config/default-config.js | a11yColorContrastGroupDescription": {
+    "message": "ここには、コンテンツの読みやすさに関する改善点が表示されます。"
+  },
+  "lighthouse-core/config/default-config.js | a11yColorContrastGroupTitle": {
+    "message": "コントラスト"
+  },
+  "lighthouse-core/config/default-config.js | a11yLanguageGroupDescription": {
+    "message": "ここには、地域ユーザー別のコンテンツの解釈に関する改善点が表示されます。"
+  },
+  "lighthouse-core/config/default-config.js | a11yLanguageGroupTitle": {
+    "message": "多言語対応とローカライズ"
+  },
+  "lighthouse-core/config/default-config.js | a11yNamesLabelsGroupDescription": {
+    "message": "ここには、アプリ内のコントロールのセマンティクスに関する改善点が表示されます。修正すると、支援技術(スクリーン リーダーなど)の利便性が向上する可能性があります。"
+  },
+  "lighthouse-core/config/default-config.js | a11yNamesLabelsGroupTitle": {
+    "message": "名前とラベル"
+  },
+  "lighthouse-core/config/default-config.js | a11yNavigationGroupDescription": {
+    "message": "ここには、アプリのキーボード操作性に関する改善点が表示されます。"
+  },
+  "lighthouse-core/config/default-config.js | a11yNavigationGroupTitle": {
+    "message": "操作性"
+  },
+  "lighthouse-core/config/default-config.js | a11yTablesListsVideoGroupDescription": {
+    "message": "ここには、支援技術(スクリーン リーダーなど)を使用した表やリストのデータの読み取りの利便性に関する改善点が表示されます。"
+  },
+  "lighthouse-core/config/default-config.js | a11yTablesListsVideoGroupTitle": {
+    "message": "表とリスト"
+  },
+  "lighthouse-core/config/default-config.js | bestPracticesCategoryTitle": {
+    "message": "おすすめの方法"
+  },
+  "lighthouse-core/config/default-config.js | budgetsGroupDescription": {
+    "message": "パフォーマンス予算は、サイトのパフォーマンスに関する基準を設定します。"
+  },
+  "lighthouse-core/config/default-config.js | budgetsGroupTitle": {
+    "message": "予算(リソースの上限)"
+  },
+  "lighthouse-core/config/default-config.js | diagnosticsGroupDescription": {
+    "message": "アプリケーションのパフォーマンスに関する詳細。これらの数値は、パフォーマンス スコアには[直接影響](https://github.com/GoogleChrome/lighthouse/blob/d2ec9ffbb21de9ad1a0f86ed24575eda32c796f0/docs/scoring.md#how-are-the-scores-weighted)しません。"
+  },
+  "lighthouse-core/config/default-config.js | diagnosticsGroupTitle": {
+    "message": "診断"
+  },
+  "lighthouse-core/config/default-config.js | firstPaintImprovementsGroupDescription": {
+    "message": "パフォーマンスの最も重要な点は、ピクセルをどのくらい速く画面にレンダリングできるかです。主要な指標: コンテンツの初回ペイント、意味のあるコンテンツの初回ペイント"
+  },
+  "lighthouse-core/config/default-config.js | firstPaintImprovementsGroupTitle": {
+    "message": "初回ペイントの改善点"
+  },
+  "lighthouse-core/config/default-config.js | loadOpportunitiesGroupDescription": {
+    "message": "これらの提案を実施すると、ページの読み込み時間を短縮できる可能性があります。なお、パフォーマンス スコアには[直接影響](https://github.com/GoogleChrome/lighthouse/blob/d2ec9ffbb21de9ad1a0f86ed24575eda32c796f0/docs/scoring.md#how-are-the-scores-weighted)しません。"
+  },
+  "lighthouse-core/config/default-config.js | loadOpportunitiesGroupTitle": {
+    "message": "改善できる項目"
+  },
+  "lighthouse-core/config/default-config.js | metricGroupTitle": {
+    "message": "指標"
+  },
+  "lighthouse-core/config/default-config.js | overallImprovementsGroupDescription": {
+    "message": "読み込みの全体的なパフォーマンスを改善して、ページの反応性や操作性を高めましょう。主要な指標: インタラクティブになるまでの時間、速度インデックス"
+  },
+  "lighthouse-core/config/default-config.js | overallImprovementsGroupTitle": {
+    "message": "全体的な改善点"
+  },
+  "lighthouse-core/config/default-config.js | performanceCategoryTitle": {
+    "message": "パフォーマンス"
+  },
+  "lighthouse-core/config/default-config.js | pwaCategoryDescription": {
+    "message": "これらのチェックではプログレッシブ ウェブアプリのさまざまな側面が検証されます。[詳細](https://developers.google.com/web/progressive-web-apps/checklist)"
+  },
+  "lighthouse-core/config/default-config.js | pwaCategoryManualDescription": {
+    "message": "これらのチェック項目は基本の [PWA チェックリスト](https://developers.google.com/web/progressive-web-apps/checklist)で必須とされていますが、Lighthouse では自動的にチェックされません。スコアには影響しませんが、手動で確認することが重要です。"
+  },
+  "lighthouse-core/config/default-config.js | pwaCategoryTitle": {
+    "message": "プログレッシブ ウェブアプリ"
+  },
+  "lighthouse-core/config/default-config.js | pwaFastReliableGroupTitle": {
+    "message": "スピードと高い信頼性"
+  },
+  "lighthouse-core/config/default-config.js | pwaInstallableGroupTitle": {
+    "message": "インストール対応"
+  },
+  "lighthouse-core/config/default-config.js | pwaOptimizedGroupTitle": {
+    "message": "PWA の最適化"
+  },
+  "lighthouse-core/config/default-config.js | seoCategoryDescription": {
+    "message": "これらのチェックを実行することで、ページが検索エンジンの検索結果ランキングに対し最適化されていることを確認できます。Lighthouse ではチェックされない、検索結果ランキングに影響する可能性がある他の要因もあります。[詳細](https://support.google.com/webmasters/answer/35769)"
+  },
+  "lighthouse-core/config/default-config.js | seoCategoryManualDescription": {
+    "message": "サイトでこれらの他の検証ツールを実行し、SEO のその他のおすすめの方法をご確認ください。"
+  },
+  "lighthouse-core/config/default-config.js | seoCategoryTitle": {
+    "message": "SEO"
+  },
+  "lighthouse-core/config/default-config.js | seoContentGroupDescription": {
+    "message": "クローラがアプリのコンテンツを正確に読み取れるように HTML を適切な形式で記述します。"
+  },
+  "lighthouse-core/config/default-config.js | seoContentGroupTitle": {
+    "message": "コンテンツ制作のおすすめの方法"
+  },
+  "lighthouse-core/config/default-config.js | seoCrawlingGroupDescription": {
+    "message": "検索結果に表示するには、クローラがアプリにアクセスできるようにする必要があります。"
+  },
+  "lighthouse-core/config/default-config.js | seoCrawlingGroupTitle": {
+    "message": "クロールとインデックス登録"
+  },
+  "lighthouse-core/config/default-config.js | seoMobileGroupDescription": {
+    "message": "ページをスマホ対応にして、ピンチ操作や拡大操作なしでコンテンツを読めるようにします。[詳細](https://developers.google.com/search/mobile-sites/)"
+  },
+  "lighthouse-core/config/default-config.js | seoMobileGroupTitle": {
+    "message": "スマホ対応"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnCacheTTL": {
+    "message": "キャッシュの TTL"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnLocation": {
+    "message": "場所"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnName": {
+    "message": "名前"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnRequests": {
+    "message": "リクエスト"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnResourceType": {
+    "message": "リソースの種類"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnSize": {
+    "message": "サイズ"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnTimeSpent": {
+    "message": "かかった時間"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnTransferSize": {
+    "message": "転送サイズ"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnURL": {
+    "message": "URL"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnWastedBytes": {
+    "message": "減らせるデータ量"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnWastedMs": {
+    "message": "短縮できる時間"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | displayValueByteSavings": {
+    "message": "{wastedBytes, number, bytes} KB 減らせます"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | displayValueMsSavings": {
+    "message": "{wastedMs, number, milliseconds} ミリ秒短縮できます"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | documentResourceType": {
+    "message": "ドキュメント"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | fontResourceType": {
+    "message": "フォント"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | imageResourceType": {
+    "message": "画像"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | mediaResourceType": {
+    "message": "メディア"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | ms": {
+    "message": "{timeInMs, number, milliseconds} ミリ秒"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | otherResourceType": {
+    "message": "その他"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | scriptResourceType": {
+    "message": "スクリプト"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | seconds": {
+    "message": "{timeInMs, number, seconds} 秒"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | stylesheetResourceType": {
+    "message": "スタイルシート"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | thirdPartyResourceType": {
+    "message": "第三者"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | totalResourceType": {
+    "message": "合計"
+  },
+  "lighthouse-core/lib/lh-error.js | badTraceRecording": {
+    "message": "ページを読み込む際のトレースの記録中にエラーが発生しました。もう一度 Lighthouse を実行してください。({errorCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | criTimeout": {
+    "message": "Debugger プロトコル接続の開始中にタイムアウトが発生しました。"
+  },
+  "lighthouse-core/lib/lh-error.js | didntCollectScreenshots": {
+    "message": "Chrome でページの読み込み中にスクリーンショットが収集されませんでした。ページにコンテンツが表示されていることを確認してから、Lighthouse を再実行してください。({errorCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | dnsFailure": {
+    "message": "DNS サーバーは指定したドメインを解決できませんでした。"
+  },
+  "lighthouse-core/lib/lh-error.js | erroredRequiredArtifact": {
+    "message": "必須の {artifactName} の収集でエラー({errorMessage})が発生しました"
+  },
+  "lighthouse-core/lib/lh-error.js | internalChromeError": {
+    "message": "Chrome 内部エラーが発生しました。Chrome を再起動して Lighthouse を再実行してください。"
+  },
+  "lighthouse-core/lib/lh-error.js | missingRequiredArtifact": {
+    "message": "必須の {artifactName} の収集は行われませんでした。"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailed": {
+    "message": "リクエストしたページを Lighthouse で正確に読み込めませんでした。正しい URL でテストを行い、すべてのリクエストに対してサーバーからの応答が適切であることを確認してください。"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedHung": {
+    "message": "ページからの応答が停止されたため、リクエストした URL を Lighthouse で正確に読み込めませんでした。"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedInsecure": {
+    "message": "指定した URL には有効なセキュリティ証明書がありません。{securityMessages}"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedInterstitial": {
+    "message": "Chrome によりページ読み込みが停止され、中間ページが表示されました。テスト対象の URL が正しいこと、サーバーがすべてのリクエストに適切に応答していることを確認してください。"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedWithDetails": {
+    "message": "リクエストしたページを Lighthouse で正確に読み込めませんでした。テスト対象の URL が正しいこと、サーバーがすべてのリクエストに適切に応答していることを確認してください。(詳細: {errorDetails})"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedWithStatusCode": {
+    "message": "リクエストしたページを Lighthouse で正確に読み込めませんでした。テスト対象の URL が正しいこと、サーバーがすべてのリクエストに適切に応答していることを確認してください。(ステータス コード: {statusCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadTookTooLong": {
+    "message": "ページの読み込み時間が長すぎます。ページの読み込み時間を短縮するには、レポートに示される提案を実施してください。その後で、Lighthouse を再実行してください。({errorCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | protocolTimeout": {
+    "message": "DevTools プロトコルからの応答の待ち時間が、割り当てられた時間を超えました。(メソッド: {protocolMethod})"
+  },
+  "lighthouse-core/lib/lh-error.js | requestContentTimeout": {
+    "message": "リソース コンテンツの取得時間が、割り当てられた時間を超えました"
+  },
+  "lighthouse-core/lib/lh-error.js | urlInvalid": {
+    "message": "指定した URL は無効の可能性があります。"
+  },
+  "lighthouse-core/report/html/renderer/util.js | auditGroupExpandTooltip": {
+    "message": "監査を表示"
+  },
+  "lighthouse-core/report/html/renderer/util.js | crcInitialNavigation": {
+    "message": "最初の移動先"
+  },
+  "lighthouse-core/report/html/renderer/util.js | crcLongestDurationLabel": {
+    "message": "クリティカル パスの最大待ち時間:"
+  },
+  "lighthouse-core/report/html/renderer/util.js | errorLabel": {
+    "message": "エラー"
+  },
+  "lighthouse-core/report/html/renderer/util.js | errorMissingAuditInfo": {
+    "message": "レポートエラー: 監査情報はありません"
+  },
+  "lighthouse-core/report/html/renderer/util.js | labDataTitle": {
+    "message": "ラボデータ"
+  },
+  "lighthouse-core/report/html/renderer/util.js | lsPerformanceCategoryDescription": {
+    "message": "エミュレート済みモバイル ネットワークでの現在のページに関する [Lighthouse](https://developers.google.com/web/tools/lighthouse/) 分析です。推定値のため変動する可能性があります。"
+  },
+  "lighthouse-core/report/html/renderer/util.js | manualAuditsGroupTitle": {
+    "message": "個別の検証が必要な他の項目"
+  },
+  "lighthouse-core/report/html/renderer/util.js | notApplicableAuditsGroupTitle": {
+    "message": "該当なし"
+  },
+  "lighthouse-core/report/html/renderer/util.js | opportunityResourceColumnLabel": {
+    "message": "改善できる項目"
+  },
+  "lighthouse-core/report/html/renderer/util.js | opportunitySavingsColumnLabel": {
+    "message": "短縮できる時間(推定)"
+  },
+  "lighthouse-core/report/html/renderer/util.js | passedAuditsGroupTitle": {
+    "message": "合格した監査"
+  },
+  "lighthouse-core/report/html/renderer/util.js | snippetCollapseButtonLabel": {
+    "message": "スニペットを折りたたむ"
+  },
+  "lighthouse-core/report/html/renderer/util.js | snippetExpandButtonLabel": {
+    "message": "スニペットを展開"
+  },
+  "lighthouse-core/report/html/renderer/util.js | thirdPartyResourcesLabel": {
+    "message": "第三者リソースを表示"
+  },
+  "lighthouse-core/report/html/renderer/util.js | toplevelWarningsMessage": {
+    "message": "Lighthouse の実行に影響する問題が発生しました。"
+  },
+  "lighthouse-core/report/html/renderer/util.js | varianceDisclaimer": {
+    "message": "推定値のため変動する可能性があります。パフォーマンス スコアは、[こちらの指標のみを基準に算出](https://github.com/GoogleChrome/lighthouse/blob/d2ec9ffbb21de9ad1a0f86ed24575eda32c796f0/docs/scoring.md#how-are-the-scores-weighted)されます。"
+  },
+  "lighthouse-core/report/html/renderer/util.js | warningAuditsGroupTitle": {
+    "message": "監査には合格しましたが警告があります"
+  },
+  "lighthouse-core/report/html/renderer/util.js | warningHeader": {
+    "message": "警告: "
+  },
+  "stack-packs/packs/wordpress.js | efficient_animated_content": {
+    "message": "GIF を HTML5 動画として埋め込み可能なサービスにアップロードすることをご検討ください。"
+  },
+  "stack-packs/packs/wordpress.js | offscreen_images": {
+    "message": "[WordPress の遅延読み込みプラグイン](https://wordpress.org/plugins/search/lazy+load/)をインストールすると、画面外の画像の読み込みを遅らせたり、遅延読み込み機能のあるテーマに切り替えたりできます。[AMP プラグイン](https://wordpress.org/plugins/amp/)の使用もご検討ください。"
+  },
+  "stack-packs/packs/wordpress.js | render_blocking_resources": {
+    "message": "[重要なアセットをインラインで読み込む](https://wordpress.org/plugins/search/critical+css/)または[重要度が低いリソースの読み込みを遅らせる](https://wordpress.org/plugins/search/defer+css+javascript/)ために役立つ、さまざまな WordPress プラグインがあります。ただし、これらのプラグインの最適化処理によって、テーマやプラグインの機能が阻害されることがあります。その場合は、コードを変更する必要があります。"
+  },
+  "stack-packs/packs/wordpress.js | time_to_first_byte": {
+    "message": "テーマ、プラグイン、サーバー仕様はすべてサーバーの応答時間に影響します。より最適化されたテーマを探す、最適化プラグインを慎重に選ぶ、サーバーをアップグレードすることをおすすめします。"
+  },
+  "stack-packs/packs/wordpress.js | total_byte_weight": {
+    "message": "「詳しく読む」タグなどを使用して投稿リストに抜粋を表示する、ページに表示する投稿の数を減らす、長い投稿を複数のページに分けて表示する、またはコメントを遅延読み込みするプラグインを使用することをご検討ください。"
+  },
+  "stack-packs/packs/wordpress.js | unminified_css": {
+    "message": "スタイルを結合、軽量化、圧縮してサイトの動作を速くする、さまざまな [WordPress プラグイン](https://wordpress.org/plugins/search/minify+css/)があります。可能な場合は、ビルド処理で事前に軽量化しておくこともおすすめします。"
+  },
+  "stack-packs/packs/wordpress.js | unminified_javascript": {
+    "message": "スクリプトを結合、軽量化、圧縮してサイトの動作を速くする、さまざまな [WordPress プラグイン](https://wordpress.org/plugins/search/minify+javascript/)があります。可能な場合は、ビルド処理で事前に軽量化しておくこともおすすめします。"
+  },
+  "stack-packs/packs/wordpress.js | unused_css_rules": {
+    "message": "ページで使用されていない CSS を読み込む [WordPress プラグイン](https://wordpress.org/plugins/)の数を減らすか、他のプラグインに切り替えることをご検討ください。不要な CSS を読み込んでいるプラグインを特定するには、Chrome DevTools で[コードの Coverage](https://developers.google.com/web/updates/2017/04/devtools-release-notes#coverage) を確認します。スタイルシートの URL から、それを使用しているテーマやプラグインを特定できます。多くのスタイルシートを使用しているプラグイン(コードの Coverage で赤色の部分が多いもの)をリストで探します。プラグインによってキューに追加されるスタイルシートは、実際にページで使用されるもののみにする必要があります。"
+  },
+  "stack-packs/packs/wordpress.js | unused_javascript": {
+    "message": "ページで使用されていない JavaScript を読み込む [WordPress プラグイン](https://wordpress.org/plugins/)の数を減らすか、他のプラグインに切り替えることをご検討ください。不要な JavaScript を読み込んでいるプラグインを特定するには、Chrome DevTools で[コードの Coverage](https://developers.google.com/web/updates/2017/04/devtools-release-notes#coverage) を確認します。スクリプトの URL から、該当のテーマやプラグインを特定できます。多くのスクリプトを使用しているプラグイン(コードの Coverage で赤色の部分が多いもの)をリストで探します。プラグインによってキューに追加されるスクリプトは、実際にページで使用されるもののみにする必要があります。"
+  },
+  "stack-packs/packs/wordpress.js | uses_long_cache_ttl": {
+    "message": "[WordPress のブラウザ キャッシング](https://codex.wordpress.org/WordPress_Optimization#Browser_Caching)についてご確認ください。"
+  },
+  "stack-packs/packs/wordpress.js | uses_optimized_images": {
+    "message": "画質を落とさずに画像を圧縮できる [WordPress の画像最適化プラグイン](https://wordpress.org/plugins/search/optimize+images/)の使用をご検討ください。"
+  },
+  "stack-packs/packs/wordpress.js | uses_responsive_images": {
+    "message": "[メディア ライブラリ](https://codex.wordpress.org/Media_Library_Screen)から直接画像をアップロードして必要な画像サイズを利用できるようにしたうえで、メディア ライブラリから挿入するか、画像ウィジェットを使用して、最適な画像サイズ(レスポンシブ ブレークポイントのサイズを含む)が使用されるようにします。「`Full Size`」の画像は、十分なスペースがある場合を除いて使用しないようにします。[詳細](https://codex.wordpress.org/Inserting_Images_into_Posts_and_Pages#Image_Size)"
+  },
+  "stack-packs/packs/wordpress.js | uses_text_compression": {
+    "message": "ウェブサーバーの設定でテキスト圧縮を有効にできます。"
+  },
+  "stack-packs/packs/wordpress.js | uses_webp_images": {
+    "message": "アップロードした画像を最適なフォーマットに自動変換する[プラグイン](https://wordpress.org/plugins/search/convert+webp/)またはサービスの使用をご検討ください。"
+  }
+}
diff --git a/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/ko.json b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/ko.json
new file mode 100644
index 0000000..b661ce51
--- /dev/null
+++ b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/ko.json
@@ -0,0 +1,1541 @@
+{
+  "lighthouse-core/audits/accessibility/accesskeys.js | description": {
+    "message": "액세스 키를 사용하면 사용자가 페이지의 특정 부분에 신속하게 포커스를 맞출 수 있습니다. 정상적으로 탐색하려면 모든 액세스 키가 고유해야 합니다. [자세히 알아보기](https://web.dev/accesskeys/)"
+  },
+  "lighthouse-core/audits/accessibility/accesskeys.js | failureTitle": {
+    "message": "`[accesskey]` 값이 고유하지 않음"
+  },
+  "lighthouse-core/audits/accessibility/accesskeys.js | title": {
+    "message": "`[accesskey]` 값이 고유합니다"
+  },
+  "lighthouse-core/audits/accessibility/aria-allowed-attr.js | description": {
+    "message": "각 ARIA `role`은(는) `aria-*` 속성으로 구성된 특정 하위 세트를 지원합니다. 이 두 가지가 일치하지 않으면 `aria-*` 속성이 유효하지 않게 됩니다. [자세히 알아보기](https://web.dev/aria-allowed-attr/)"
+  },
+  "lighthouse-core/audits/accessibility/aria-allowed-attr.js | failureTitle": {
+    "message": "`[aria-*]` 속성이 역할과 일치하지 않음"
+  },
+  "lighthouse-core/audits/accessibility/aria-allowed-attr.js | title": {
+    "message": "`[aria-*]` 속성이 역할과 일치함"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-attr.js | description": {
+    "message": "일부 ARIA 역할에는 스크린 리더에 관한 요소의 상태를 설명하는 속성이 필요합니다. [자세히 알아보기](https://web.dev/aria-required-attr/)"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-attr.js | failureTitle": {
+    "message": "`[role]`에 필요한 `[aria-*]` 속성이 일부 포함되지 않음"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-attr.js | title": {
+    "message": "`[role]`에 필요한 모든 `[aria-*]` 속성이 있음"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-children.js | description": {
+    "message": "일부 ARIA 상위 역할에서 의도한 접근성 기능을 실행하려면 특정 하위 역할을 포함하고 있어야 합니다. [자세히 알아보기](https://web.dev/aria-required-children/)"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-children.js | failureTitle": {
+    "message": "특정 하위 `[role]`이(가) 필요한 `[role]` 지원 요소가 누락됨"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-children.js | title": {
+    "message": "특정 하위 `[role]`이(가) 필요한 `[role]` 지원 요소가 존재함"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-parent.js | description": {
+    "message": "일부 ARIA 하위 역할에서 의도한 접근성 기능을 올바르게 실행하려면 특정 상위 역할에 포함되어 있어야 합니다. [자세히 알아보기](https://web.dev/aria-required-parent/)"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-parent.js | failureTitle": {
+    "message": "`[role]`이(가) 필수 상위 요소에 포함되지 않음"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-parent.js | title": {
+    "message": "`[role]`이(가) 필수 상위 요소에 포함됨"
+  },
+  "lighthouse-core/audits/accessibility/aria-roles.js | description": {
+    "message": "ARIA 역할에서 의도한 접근성 기능을 실행하려면 유효한 값을 포함하고 있어야 합니다. [자세히 알아보기](https://web.dev/aria-roles/)"
+  },
+  "lighthouse-core/audits/accessibility/aria-roles.js | failureTitle": {
+    "message": "`[role]` 값이 유효하지 않음"
+  },
+  "lighthouse-core/audits/accessibility/aria-roles.js | title": {
+    "message": "`[role]` 값이 유효함"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr-value.js | description": {
+    "message": "스크린 리더와 같은 보조 기술은 잘못된 값이 있는 ARIA 속성을 해석하지 못합니다. [자세히 알아보기](https://web.dev/aria-valid-attr-value/)"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr-value.js | failureTitle": {
+    "message": "`[aria-*]` 속성에 유효한 값이 없음"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr-value.js | title": {
+    "message": "`[aria-*]` 속성에 유효한 값이 있음"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr.js | description": {
+    "message": "스크린 리더와 같은 보조 기술은 잘못된 이름이 있는 ARIA 속성을 해석하지 못합니다. [자세히 알아보기](https://web.dev/aria-valid-attr/)"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr.js | failureTitle": {
+    "message": "`[aria-*]` 속성이 유효하지 않거나 맞춤법 오류가 있음"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr.js | title": {
+    "message": "`[aria-*]` 속성이 유효하며 맞춤법 오류가 없음"
+  },
+  "lighthouse-core/audits/accessibility/audio-caption.js | description": {
+    "message": "자막이 있으면 청각장애인이나 청각에 문제가 있는 사용자도 오디오 요소를 사용할 수 있게 되며 말하고 있는 사람, 말하는 내용, 기타 비음성적 정보와 같은 중요 정보가 제공됩니다. [자세히 알아보기](https://web.dev/audio-caption/)"
+  },
+  "lighthouse-core/audits/accessibility/audio-caption.js | failureTitle": {
+    "message": "`<audio>` 요소에서 `[kind=\"captions\"]` 지원 `<track>` 요소가 누락됨"
+  },
+  "lighthouse-core/audits/accessibility/audio-caption.js | title": {
+    "message": "`<audio>` 요소에 `[kind=\"captions\"]` 지원 `<track>` 요소가 포함됨"
+  },
+  "lighthouse-core/audits/accessibility/axe-audit.js | failingElementsHeader": {
+    "message": "통과하지 못한 요소"
+  },
+  "lighthouse-core/audits/accessibility/button-name.js | description": {
+    "message": "버튼에 접근 가능한 이름이 없는 경우 스크린 리더에서 '버튼'으로만 읽기 때문에 스크린 리더에 의존하는 사용자에게는 해당 버튼이 유용하지 않게 됩니다. [자세히 알아보기](https://web.dev/button-name/)"
+  },
+  "lighthouse-core/audits/accessibility/button-name.js | failureTitle": {
+    "message": "버튼에 접근 가능한 이름이 없습니다"
+  },
+  "lighthouse-core/audits/accessibility/button-name.js | title": {
+    "message": "버튼에 접근 가능한 이름이 있습니다"
+  },
+  "lighthouse-core/audits/accessibility/bypass.js | description": {
+    "message": "반복적인 콘텐츠를 건너뛸 방법을 추가하면 키보드 사용자가 페이지를 더 효율적으로 탐색할 수 있습니다. [자세히 알아보기](https://web.dev/bypass/)"
+  },
+  "lighthouse-core/audits/accessibility/bypass.js | failureTitle": {
+    "message": "페이지에 제목, 링크 건너뛰기, 랜드마크 영역이 포함되어 있지 않습니다"
+  },
+  "lighthouse-core/audits/accessibility/bypass.js | title": {
+    "message": "페이지에 제목, 링크 건너뛰기, 랜드마크 영역이 포함되어 있습니다"
+  },
+  "lighthouse-core/audits/accessibility/color-contrast.js | description": {
+    "message": "많은 사용자가 저대비 텍스트를 읽는 데 어려움을 겪거나 전혀 읽지 못합니다. [자세히 알아보기](https://web.dev/color-contrast/)"
+  },
+  "lighthouse-core/audits/accessibility/color-contrast.js | failureTitle": {
+    "message": "백그라운드 및 포그라운드 색상의 대비율이 충분하지 않습니다"
+  },
+  "lighthouse-core/audits/accessibility/color-contrast.js | title": {
+    "message": "백그라운드 및 포그라운드 색상의 대비율이 충분합니다"
+  },
+  "lighthouse-core/audits/accessibility/definition-list.js | description": {
+    "message": "정의 목록이 올바르게 표시되지 않으면 스크린 리더에서 혼란스럽거나 정확하지 않은 내용을 말할 수 있습니다. [자세히 알아보기](https://web.dev/definition-list/)"
+  },
+  "lighthouse-core/audits/accessibility/definition-list.js | failureTitle": {
+    "message": "`<dl>`에 순서가 올바른 `<dt>` 및 `<dd>` 그룹, `<script>` 또는 `<template>` 요소만 포함되지 않음"
+  },
+  "lighthouse-core/audits/accessibility/definition-list.js | title": {
+    "message": "`<dl>`에 순서가 올바른 `<dt>` 및 `<dd>` 그룹, `<script>` 또는 `<template>` 요소만 포함됨"
+  },
+  "lighthouse-core/audits/accessibility/dlitem.js | description": {
+    "message": "스크린 리더에서 정의 목록 항목(`<dt>` 및 `<dd>`)을 올바르게 읽으려면 정의 목록 항목이 상위 `<dl>` 요소에 래핑되어 있어야 합니다. [자세히 알아보기](https://web.dev/dlitem/)"
+  },
+  "lighthouse-core/audits/accessibility/dlitem.js | failureTitle": {
+    "message": "정의 목록 항목이 `<dl>` 요소에서 래핑되어 있지 않음"
+  },
+  "lighthouse-core/audits/accessibility/dlitem.js | title": {
+    "message": "정의 목록 항목이 `<dl>` 요소에서 래핑되어 있음"
+  },
+  "lighthouse-core/audits/accessibility/document-title.js | description": {
+    "message": "제목을 사용하면 스크린 리더 사용자에게는 페이지의 개요를 제공할 수 있습니다. 검색엔진 사용자는 제목으로 페이지가 자신의 검색어와 관련되어 있는지 여부를 판단합니다. [자세히 알아보기](https://web.dev/document-title/)"
+  },
+  "lighthouse-core/audits/accessibility/document-title.js | failureTitle": {
+    "message": "문서에 `<title>` 요소가 없음"
+  },
+  "lighthouse-core/audits/accessibility/document-title.js | title": {
+    "message": "문서에 `<title>` 요소가 있음"
+  },
+  "lighthouse-core/audits/accessibility/duplicate-id.js | description": {
+    "message": "보조 기술에서 다른 인스턴스를 놓치지 않도록 하려면 ID 속성값이 고유해야 합니다. [자세히 알아보기](https://web.dev/duplicate-id/)"
+  },
+  "lighthouse-core/audits/accessibility/duplicate-id.js | failureTitle": {
+    "message": "페이지에 있는 `[id]` 속성이 고유하지 않음"
+  },
+  "lighthouse-core/audits/accessibility/duplicate-id.js | title": {
+    "message": "페이지에 있는 `[id]` 속성이 고유함"
+  },
+  "lighthouse-core/audits/accessibility/frame-title.js | description": {
+    "message": "스크린 리더 사용자는 프레임 콘텐츠를 설명해 주는 프레임 제목을 사용합니다. [자세히 알아보기](https://web.dev/frame-title/)"
+  },
+  "lighthouse-core/audits/accessibility/frame-title.js | failureTitle": {
+    "message": "`<frame>` 또는 `<iframe>` 요소에 제목이 없음"
+  },
+  "lighthouse-core/audits/accessibility/frame-title.js | title": {
+    "message": "`<frame>` 또는 `<iframe>` 요소에 제목이 있음"
+  },
+  "lighthouse-core/audits/accessibility/html-has-lang.js | description": {
+    "message": "페이지에서 lang 속성을 지정하지 않는 경우 스크린 리더는 사용자가 스크린 리더를 설정할 때 선택한 기본 언어로 페이지가 작성되어 있다고 가정합니다. 페이지가 기본 언어로 작성되어 있지 않으면 스크린 리더에서 페이지에 있는 텍스트를 제대로 읽어줄 수 없습니다. [자세히 알아보기](https://web.dev/html-has-lang/)"
+  },
+  "lighthouse-core/audits/accessibility/html-has-lang.js | failureTitle": {
+    "message": "`<html>` 요소에 `[lang]` 속성이 없음"
+  },
+  "lighthouse-core/audits/accessibility/html-has-lang.js | title": {
+    "message": "`<html>` 요소에 `[lang]` 속성이 있음"
+  },
+  "lighthouse-core/audits/accessibility/html-lang-valid.js | description": {
+    "message": "유효한 [BCP 47 언어](https://www.w3.org/International/questions/qa-choosing-language-tags#question)를 지정하면 스크린 리더에서 텍스트를 올바르게 읽는 데 도움이 됩니다. [자세히 알아보기](https://web.dev/html-lang-valid/)"
+  },
+  "lighthouse-core/audits/accessibility/html-lang-valid.js | failureTitle": {
+    "message": "`<html>` 요소의 `[lang]` 속성에 유효한 값이 없음"
+  },
+  "lighthouse-core/audits/accessibility/html-lang-valid.js | title": {
+    "message": "`<html>` 요소에 `[lang]` 속성의 유효한 값이 있음"
+  },
+  "lighthouse-core/audits/accessibility/image-alt.js | description": {
+    "message": "정보 요소는 짧아야 하며 설명을 제공하는 대체 텍스트를 목표로 해야 합니다. 장식 요소는 Alt 속성이 비어 있는 경우 무시될 수 있습니다. [자세히 알아보기](https://web.dev/image-alt/)"
+  },
+  "lighthouse-core/audits/accessibility/image-alt.js | failureTitle": {
+    "message": "이미지 요소에 `[alt]` 속성 없음"
+  },
+  "lighthouse-core/audits/accessibility/image-alt.js | title": {
+    "message": "이미지 요소에 `[alt]` 속성이 있음"
+  },
+  "lighthouse-core/audits/accessibility/input-image-alt.js | description": {
+    "message": "이미지가 `<input>` 버튼으로 사용되는 경우 대체 텍스트를 제공하면 스크린 리더 사용자가 버튼의 목적을 쉽게 이해하는 데 도움이 됩니다. [자세히 알아보기](https://web.dev/input-image-alt/)"
+  },
+  "lighthouse-core/audits/accessibility/input-image-alt.js | failureTitle": {
+    "message": "`<input type=\"image\">` 요소에 `[alt]` 텍스트가 없음"
+  },
+  "lighthouse-core/audits/accessibility/input-image-alt.js | title": {
+    "message": "`<input type=\"image\">` 요소에 `[alt]` 텍스트가 있음"
+  },
+  "lighthouse-core/audits/accessibility/label.js | description": {
+    "message": "라벨을 사용하면 스크린 리더와 같은 보조 기술에서 양식 컨트롤을 올바르게 읽을 수 있습니다. [자세히 알아보기](https://web.dev/label/)"
+  },
+  "lighthouse-core/audits/accessibility/label.js | failureTitle": {
+    "message": "양식 요소에 관련 라벨이 포함되어 있지 않습니다"
+  },
+  "lighthouse-core/audits/accessibility/label.js | title": {
+    "message": "양식 요소에 관련 라벨이 포함되어 있습니다"
+  },
+  "lighthouse-core/audits/accessibility/layout-table.js | description": {
+    "message": "스크린 리더 사용자에게 혼란스러운 환경이 생길 수 있으므로 레이아웃 용도로 사용되는 표에는 th 또는 caption 요소와 같은 데이터 요소나 summary 속성이 포함되지 않아야 합니다. [자세히 알아보기](https://web.dev/layout-table/)"
+  },
+  "lighthouse-core/audits/accessibility/layout-table.js | failureTitle": {
+    "message": "프레젠테이션 `<table>` 요소에서 `<th>`, `<caption>` 또는 `[summary]` 속성의 사용이 지양되지 않음"
+  },
+  "lighthouse-core/audits/accessibility/layout-table.js | title": {
+    "message": "프레젠테이션 `<table>` 요소에서 `<th>`, `<caption>` 또는 `[summary]` 속성을 가급적 사용하지 않음"
+  },
+  "lighthouse-core/audits/accessibility/link-name.js | description": {
+    "message": "인식하기 쉽고, 고유하고, 초점을 맞추기 쉬운 링크 텍스트(및 이미지가 링크로 사용되는 경우 이미지의 대체 텍스트)를 사용하면 스크린 리더 사용자의 탐색 환경을 개선할 수 있습니다. [자세히 알아보기](https://web.dev/link-name/)"
+  },
+  "lighthouse-core/audits/accessibility/link-name.js | failureTitle": {
+    "message": "링크에 인식 가능한 이름이 포함되어 있지 않습니다"
+  },
+  "lighthouse-core/audits/accessibility/link-name.js | title": {
+    "message": "링크에 인식 가능한 이름이 포함되어 있습니다"
+  },
+  "lighthouse-core/audits/accessibility/list.js | description": {
+    "message": "스크린 리더에는 목록을 읽는 특정 방식이 있습니다. 목록 구조를 적절히 작성하면 스크린 리더 출력에 도움이 됩니다. [자세히 알아보기](https://web.dev/list/)"
+  },
+  "lighthouse-core/audits/accessibility/list.js | failureTitle": {
+    "message": "목록에 `<li>` 요소와 스크립트 지원 요소(`<script>` 및 `<template>`)만 포함되지 않음"
+  },
+  "lighthouse-core/audits/accessibility/list.js | title": {
+    "message": "목록에 `<li>` 요소와 요소 지원 스크립트(`<script>` 및 `<template>`)만 포함됨"
+  },
+  "lighthouse-core/audits/accessibility/listitem.js | description": {
+    "message": "스크린 리더에서 목록 항목(`<li>`)을 올바르게 읽으려면 목록 항목이 상위 `<ul>` 또는 `<ol>`에 포함되어 있어야 합니다. [자세히 알아보기](https://web.dev/listitem/)"
+  },
+  "lighthouse-core/audits/accessibility/listitem.js | failureTitle": {
+    "message": "목록 항목(`<li>`)이 `<ul>` 또는 `<ol>` 상위 요소 내에 포함되지 않음"
+  },
+  "lighthouse-core/audits/accessibility/listitem.js | title": {
+    "message": "목록 항목(`<li>`)이 `<ul>` 또는 `<ol>` 상위 요소 내에 포함되어 있음"
+  },
+  "lighthouse-core/audits/accessibility/meta-refresh.js | description": {
+    "message": "사용자는 페이지가 자동으로 새로고침된다고 예상하지 못하기 때문에 페이지가 자동으로 새로고침되면 초점이 다시 페이지 상단에 맞춰집니다. 이로 인해 불쾌하거나 혼란스러운 상황이 발생할 수 있습니다. [자세히 알아보기](https://web.dev/meta-refresh/)"
+  },
+  "lighthouse-core/audits/accessibility/meta-refresh.js | failureTitle": {
+    "message": "문서에서 `<meta http-equiv=\"refresh\">` 사용됨"
+  },
+  "lighthouse-core/audits/accessibility/meta-refresh.js | title": {
+    "message": "문서에서 `<meta http-equiv=\"refresh\">`이(가) 사용되지 않음"
+  },
+  "lighthouse-core/audits/accessibility/meta-viewport.js | description": {
+    "message": "확대/축소를 사용 중지하면 저시력으로 인해 웹페이지의 콘텐츠를 제대로 확인하기 위해 화면 확대를 사용하는 사용자에게 문제가 될 수 있습니다. [자세히 알아보기](https://web.dev/meta-viewport/)"
+  },
+  "lighthouse-core/audits/accessibility/meta-viewport.js | failureTitle": {
+    "message": "`[user-scalable=\"no\"]`이(가) `<meta name=\"viewport\">` 요소에서 사용되거나 `[maximum-scale]` 속성이 5보다 작음"
+  },
+  "lighthouse-core/audits/accessibility/meta-viewport.js | title": {
+    "message": "`[user-scalable=\"no\"]`은(는) `<meta name=\"viewport\">` 요소에 사용되지 않으며 `[maximum-scale]` 속성이 5보다 작지 않음"
+  },
+  "lighthouse-core/audits/accessibility/object-alt.js | description": {
+    "message": "스크린 리더는 텍스트가 아닌 콘텐츠를 번역할 수 없습니다. `<object>` 요소에 Alt 텍스트를 추가하면 스크린 리더에서 사용자에게 텍스트의 의미를 전달하는 데 도움이 됩니다. [자세히 알아보기](https://web.dev/object-alt/)"
+  },
+  "lighthouse-core/audits/accessibility/object-alt.js | failureTitle": {
+    "message": "`<object>` 요소에 `[alt]` 텍스트가 없음"
+  },
+  "lighthouse-core/audits/accessibility/object-alt.js | title": {
+    "message": "`<object>` 요소에 `[alt]` 텍스트가 있음"
+  },
+  "lighthouse-core/audits/accessibility/tabindex.js | description": {
+    "message": "0보다 큰 값은 명시적인 탐색 순서를 나타냅니다. 기술적으로는 유효하나 보조 기술에 의존하는 사용자에게 불편한 환경이 생기는 경우가 많습니다. [자세히 알아보기](https://web.dev/tabindex/)"
+  },
+  "lighthouse-core/audits/accessibility/tabindex.js | failureTitle": {
+    "message": "일부 요소의 `[tabindex]` 값이 0보다 큼"
+  },
+  "lighthouse-core/audits/accessibility/tabindex.js | title": {
+    "message": "`[tabindex]` 값이 0보다 큰 요소가 없음"
+  },
+  "lighthouse-core/audits/accessibility/td-headers-attr.js | description": {
+    "message": "스크린 리더에는 표를 좀 더 쉽게 탐색하는 기능이 있습니다. `[headers]` 속성을 사용하는 `<td>` 셀이 동일한 테이블에 있는 다른 셀만 참조하게 하면 스크린 리더 사용자 환경을 개선할 수 있습니다. [자세히 알아보기](https://web.dev/td-headers-attr/)"
+  },
+  "lighthouse-core/audits/accessibility/td-headers-attr.js | failureTitle": {
+    "message": "`[headers]` 속성을 사용하는 `<table>` 요소의 셀이 동일한 테이블의 다른 셀을 참조함"
+  },
+  "lighthouse-core/audits/accessibility/td-headers-attr.js | title": {
+    "message": "`[headers]` 속성을 사용하는 `<table>` 요소의 셀은 동일한 테이블의 다른 셀만 참조함"
+  },
+  "lighthouse-core/audits/accessibility/th-has-data-cells.js | description": {
+    "message": "스크린 리더에는 표를 좀 더 쉽게 탐색하는 기능이 있습니다. 표 헤더에서 항상 셀 세트 일부를 참조하게 하면 스크린 리더 사용자 환경이 개선될 수 있습니다. [자세히 알아보기](https://web.dev/th-has-data-cells/)"
+  },
+  "lighthouse-core/audits/accessibility/th-has-data-cells.js | failureTitle": {
+    "message": "`<th>` 요소와 `[role=\"columnheader\"/\"rowheader\"]` 지원 요소가 설명하는 데이터 셀이 해당 요소에 포함되지 않음"
+  },
+  "lighthouse-core/audits/accessibility/th-has-data-cells.js | title": {
+    "message": "`<th>` 요소와 `[role=\"columnheader\"/\"rowheader\"]` 지원 요소가 설명하는 데이터 셀이 해당 요소에 포함됨"
+  },
+  "lighthouse-core/audits/accessibility/valid-lang.js | description": {
+    "message": "요소에 유효한 [BCP 47 언어](https://www.w3.org/International/questions/qa-choosing-language-tags#question)를 지정하면 스크린 리더에서 텍스트를 올바르게 읽는 데 도움이 됩니다. [자세히 알아보기](https://web.dev/valid-lang/)"
+  },
+  "lighthouse-core/audits/accessibility/valid-lang.js | failureTitle": {
+    "message": "`[lang]` 속성에 유효한 값이 없음"
+  },
+  "lighthouse-core/audits/accessibility/valid-lang.js | title": {
+    "message": "`[lang]` 속성에 유효한 값이 있음"
+  },
+  "lighthouse-core/audits/accessibility/video-caption.js | description": {
+    "message": "동영상에 자막이 제공되면 청각장애인이나 난청이 있는 사용자가 동영상의 정보에 더 쉽게 접근할 수 있습니다. [자세히 알아보기](https://web.dev/video-caption/)"
+  },
+  "lighthouse-core/audits/accessibility/video-caption.js | failureTitle": {
+    "message": "`<video>` 요소에 `[kind=\"captions\"]` 지원 `<track>` 요소가 포함되지 않음"
+  },
+  "lighthouse-core/audits/accessibility/video-caption.js | title": {
+    "message": "`<video>` 요소에 `[kind=\"captions\"]` 지원 `<track>` 요소가 포함됨"
+  },
+  "lighthouse-core/audits/accessibility/video-description.js | description": {
+    "message": "오디오 설명은 표정 및 장면과 같이 대화에서 제공할 수 없는 동영상에 관한 정보를 제공합니다. [자세히 알아보기](https://web.dev/video-description/)"
+  },
+  "lighthouse-core/audits/accessibility/video-description.js | failureTitle": {
+    "message": "`<video>` 요소에 `[kind=\"description\"]` 지원 `<track>` 요소가 포함되지 않음"
+  },
+  "lighthouse-core/audits/accessibility/video-description.js | title": {
+    "message": "`<video>` 요소에 `[kind=\"description\"]` 지원 `<track>` 요소가 포함됨"
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | description": {
+    "message": "프로그레시브 웹 앱을 홈 화면에 추가했을 때 iOS에서 제대로 표시되려면 `apple-touch-icon`을(를) 정의해야 합니다. 투명하지 않은 192px 또는 180px 정사각형 PNG로 설정되어야 합니다. [자세히 알아보기](https://developers.google.com/web/fundamentals/design-and-ux/browser-customization/)"
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | failureTitle": {
+    "message": "유효한 `apple-touch-icon`이(가) 제공되지 않음"
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | precomposedWarning": {
+    "message": "`apple-touch-icon-precomposed`이(가) 최신 버전이 아니므로 `apple-touch-icon`이(가) 적합합니다."
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | title": {
+    "message": "유효한 `apple-touch-icon` 제공"
+  },
+  "lighthouse-core/audits/bootup-time.js | chromeExtensionsWarning": {
+    "message": "Chrome 확장 프로그램이 이 페이지의 로드 성능에 부정적인 영향을 미쳤습니다. 시크릿 모드나 확장 프로그램이 없는 Chrome 프로필에서 페이지를 검사해 보세요."
+  },
+  "lighthouse-core/audits/bootup-time.js | columnScriptEval": {
+    "message": "스크립트 평가"
+  },
+  "lighthouse-core/audits/bootup-time.js | columnScriptParse": {
+    "message": "스크립트 파싱"
+  },
+  "lighthouse-core/audits/bootup-time.js | columnTotal": {
+    "message": "총 CPU 시간"
+  },
+  "lighthouse-core/audits/bootup-time.js | description": {
+    "message": "JS 파싱, 컴파일, 실행에 소요되는 시간을 줄여 보세요. 용량이 적은 JS 페이로드를 제공하면 도움이 될 수 있습니다. [자세히 알아보기](https://developers.google.com/web/tools/lighthouse/audits/bootup)"
+  },
+  "lighthouse-core/audits/bootup-time.js | failureTitle": {
+    "message": "자바스크립트 실행 시간 단축"
+  },
+  "lighthouse-core/audits/bootup-time.js | title": {
+    "message": "자바스크립트 실행 시간"
+  },
+  "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | description": {
+    "message": "대용량의 GIF는 애니메이션 콘텐츠를 전달하는 데 비효율적입니다. 애니메이션에는 MPEG4/WebM 동영상을, 정적인 이미지에는 GIF 대신 PNG/WebP를 사용하여 네트워크 바이트를 절약하세요. [자세히 알아보기](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/replace-animated-gifs-with-video/)"
+  },
+  "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | title": {
+    "message": "애니메이션 콘텐츠에 동영상 형식 사용하기"
+  },
+  "lighthouse-core/audits/byte-efficiency/offscreen-images.js | description": {
+    "message": "중요한 리소스의 로드가 모두 완료된 후에는 오프스크린 및 숨겨진 이미지를 지연 로드함으로써 상호작용 시간을 줄이는 것이 좋습니다. [자세히 알아보기](https://developers.google.com/web/tools/lighthouse/audits/offscreen-images)"
+  },
+  "lighthouse-core/audits/byte-efficiency/offscreen-images.js | title": {
+    "message": "오프스크린 이미지 지연하기"
+  },
+  "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | description": {
+    "message": "리소스가 페이지의 첫 페인트를 차단하고 있습니다. 중요한 JS/CSS를 인라인으로 전달하고 중요하지 않은 모든 JS/Style을 지연하는 것이 좋습니다. [자세히 알아보기](https://developers.google.com/web/tools/lighthouse/audits/blocking-resources)"
+  },
+  "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | title": {
+    "message": "렌더링 차단 리소스 제거하기"
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | description": {
+    "message": "네트워크 페이로드가 커지면 사용자에게 실제 비용 부담이 되며 로드 시간이 길어질 수 있습니다. [자세히 알아보기](https://developers.google.com/web/tools/lighthouse/audits/network-payloads)"
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | displayValue": {
+    "message": "총 크기: {totalBytes, number, bytes}KB"
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | failureTitle": {
+    "message": "네트워크 페이로드가 커지지 않도록 관리하기"
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | title": {
+    "message": "대규모 네트워크 페이로드 방지하기"
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-css.js | description": {
+    "message": "CSS 파일을 축소하면 네트워크 페이로드 크기를 줄일 수 있습니다. [자세히 알아보기](https://developers.google.com/web/tools/lighthouse/audits/minify-css)"
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-css.js | title": {
+    "message": "CSS 축소하기"
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | description": {
+    "message": "자바스크립트 파일을 축소하면 페이로드 크기와 스크립트 파싱 시간을 줄일 수 있습니다. [자세히 알아보기](https://developers.google.com/speed/docs/insights/MinifyResources)"
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | title": {
+    "message": "자바스크립트 줄이기"
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | description": {
+    "message": "스타일시트에서 사용하지 않는 규칙을 삭제하고 스크롤 없이 볼 수 있는 부분에 사용되지 않는 CSS의 로드를 지연시켜 네트워크 활동에 소비되는 불필요한 바이트를 줄이세요. [자세히 알아보기](https://developers.google.com/web/tools/lighthouse/audits/unused-css)"
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | title": {
+    "message": "사용하지 않는 CSS 제거"
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-javascript.js | description": {
+    "message": "사용하지 않는 자바스크립트를 삭제하고 네트워크 활동에 소비되는 바이트를 줄이세요."
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-javascript.js | title": {
+    "message": "사용하지 않는 자바스크립트 삭제하기"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | description": {
+    "message": "캐시 수명이 길면 페이지를 반복해서 방문하는 속도가 빨라질 수 있습니다. [자세히 알아보기](https://developers.google.com/web/tools/lighthouse/audits/cache-policy)"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | displayValue": {
+    "message": "{itemCount,plural, =1{리소스 1개 발견됨}other{리소스 #개 발견됨}}"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | failureTitle": {
+    "message": "효율적인 캐시 정책을 사용하여 정적인 애셋 제공하기"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | title": {
+    "message": "정적인 애셋에 효율적인 캐시 정책 사용하기"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | description": {
+    "message": "최적화된 이미지는 빠르게 로드되며 모바일 데이터를 적게 소비합니다. [자세히 알아보기](https://developers.google.com/web/tools/lighthouse/audits/optimize-images)"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | title": {
+    "message": "효율적으로 이미지 인코딩하기"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | description": {
+    "message": "적절한 크기의 이미지를 게재하여 모바일 데이터를 절약하고 로드 시간을 단축하세요. [자세히 알아보기](https://developers.google.com/web/tools/lighthouse/audits/oversized-images)"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | title": {
+    "message": "이미지 크기 적절하게 설정하기"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | description": {
+    "message": "총 네트워크 바이트를 최소화하려면 텍스트 기반 리소스를 압축(gzip, deflate, brotli)하여 제공해야 합니다. [자세히 알아보기](https://developers.google.com/web/tools/lighthouse/audits/text-compression)"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | title": {
+    "message": "텍스트 압축 사용"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | description": {
+    "message": "JPEG 2000, JPEG XR, WebP와 같은 이미지 형식을 사용하면 PNG 또는 JPEG보다 압축률이 높으므로 다운로드 속도가 빠르고 데이터 소비량도 줄어듭니다. [자세히 알아보기](https://developers.google.com/web/tools/lighthouse/audits/webp)"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | title": {
+    "message": "차세대 형식을 사용해 이미지 제공하기"
+  },
+  "lighthouse-core/audits/content-width.js | description": {
+    "message": "앱 콘텐츠의 너비가 표시 영역의 너비와 일치하지 않을 경우 앱이 휴대기기 화면에 최적화되지 않을 수 있습니다. [자세히 알아보기](https://developers.google.com/web/tools/lighthouse/audits/content-sized-correctly-for-viewport)"
+  },
+  "lighthouse-core/audits/content-width.js | explanation": {
+    "message": "{innerWidth}px의 표시 영역 크기는 {outerWidth}px인 창 크기와 일치하지 않습니다."
+  },
+  "lighthouse-core/audits/content-width.js | failureTitle": {
+    "message": "콘텐츠의 크기가 표시 영역에 알맞지 않음"
+  },
+  "lighthouse-core/audits/content-width.js | title": {
+    "message": "콘텐츠의 크기가 표시 영역에 알맞음"
+  },
+  "lighthouse-core/audits/critical-request-chains.js | description": {
+    "message": "다음의 크리티컬 요청 체인은 로드 시 우선순위가 높은 리소스를 보여줍니다. 체인의 길이를 줄이고, 리소스의 다운로드 크기를 줄이거나 불필요한 리소스의 다운로드를 지연하여 페이지 로드 속도를 높이는 것이 좋습니다. [자세히 알아보기](https://developers.google.com/web/tools/lighthouse/audits/critical-request-chains)"
+  },
+  "lighthouse-core/audits/critical-request-chains.js | displayValue": {
+    "message": "{itemCount,plural, =1{1개 체인 발견됨}other{#개 체인 발견됨}}"
+  },
+  "lighthouse-core/audits/critical-request-chains.js | title": {
+    "message": "중요 요청 깊이 최소화하기"
+  },
+  "lighthouse-core/audits/deprecations.js | columnDeprecate": {
+    "message": "지원 중단/경고"
+  },
+  "lighthouse-core/audits/deprecations.js | columnLine": {
+    "message": "행"
+  },
+  "lighthouse-core/audits/deprecations.js | description": {
+    "message": "이후에 지원 중단된 API는 브라우저에서 삭제됩니다. [자세히 알아보기](https://web.dev/deprecations)"
+  },
+  "lighthouse-core/audits/deprecations.js | displayValue": {
+    "message": "{itemCount,plural, =1{경고 1개가 발견됨}other{경고 #개가 발견됨}}"
+  },
+  "lighthouse-core/audits/deprecations.js | failureTitle": {
+    "message": "지원 중단된 API 사용"
+  },
+  "lighthouse-core/audits/deprecations.js | title": {
+    "message": "지원 중단 API 사용하지 않기"
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | description": {
+    "message": "애플리케이션 캐시는 지원이 중단되었습니다. [자세히 알아보기](https://web.dev/appcache-manifest)"
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | displayValue": {
+    "message": "검색된 ‘{AppCacheManifest}’"
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | failureTitle": {
+    "message": "애플리케이션 캐시 사용"
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | title": {
+    "message": "애플리케이션 캐시 사용하지 않기"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | description": {
+    "message": "Doctype을 지정하면 브라우저가 쿼크 모드로 전환할 수 없습니다. [자세히 알아보기](https://web.dev/doctype)"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationBadDoctype": {
+    "message": "Doctype 이름은 소문자 문자열 `html`이어야 합니다."
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationNoDoctype": {
+    "message": "문서에는 Doctype이 포함되어 있어야 합니다."
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationPublicId": {
+    "message": "publicId가 빈 문자열일 것으로 예상됨"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationSystemId": {
+    "message": "systemId가 빈 문자열일 것으로 예상됨"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | failureTitle": {
+    "message": "페이지에 HTML Doctype이 없으므로 쿼크 모드가 트리거됨"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | title": {
+    "message": "페이지에 HTML Doctype 있음"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | columnElement": {
+    "message": "요소"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | columnStatistic": {
+    "message": "통계"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | columnValue": {
+    "message": "값"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | description": {
+    "message": "브라우저 엔지니어들은 페이지에 1,500개 미만의 DOM 요소를 포함하는 것을 권장합니다. 최적값은 트리 깊이가 요소 32개 미만이고 하위/상위 요소 60개 미만일 때입니다. DOM이 크면 메모리 사용량이 늘어나고 [스타일 계산](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations) 시간이 길어질 수 있으며 큰 비용이 드는 [레이아웃 리플로우](https://developers.google.com/speed/articles/reflow)가 발생할 수 있습니다. [자세히 알아보기](https://web.dev/dom-size)"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | displayValue": {
+    "message": "{itemCount,plural, =1{요소 1개}other{요소 #개}}"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | failureTitle": {
+    "message": "과도한 DOM 크기 지양하기"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | statisticDOMDepth": {
+    "message": "최대 DOM 깊이"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | statisticDOMElements": {
+    "message": "총 DOM 요소 개수"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | statisticDOMWidth": {
+    "message": "최대 하위 요소"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | title": {
+    "message": "과도한 DOM 크기 지양하기"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | columnRel": {
+    "message": "Rel"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | columnTarget": {
+    "message": "타겟"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | description": {
+    "message": "성능을 개선하고 보안 취약점을 예방하려면 `rel=\"noopener\"` 또는 `rel=\"noreferrer\"`을(를) 외부 링크에 추가합니다. [자세히 알아보기](https://web.dev/external-anchors-use-rel-noopener)"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | failureTitle": {
+    "message": "교차 도메인 대상 링크가 안전하지 않음"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | title": {
+    "message": "교차 도메인 대상 링크가 안전함"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | warning": {
+    "message": "앵커({anchorHTML})의 대상을 확인하지 못했습니다. 하이퍼링크로 사용되지 않는 경우 target=_blank를 삭제하는 것이 좋습니다."
+  },
+  "lighthouse-core/audits/dobetterweb/geolocation-on-start.js | description": {
+    "message": "사용자가 컨텍스트 없이 위치 정보를 요청한 사이트를 신뢰할 수 없거나 이로 인해 혼란스러운 상태입니다. 대신 사용자 작업 요청 입력을 고려해 보세요. [자세히 알아보기](https://web.dev/geolocation-on-start)"
+  },
+  "lighthouse-core/audits/dobetterweb/geolocation-on-start.js | failureTitle": {
+    "message": "페이지 로드 시 위치정보 권한 요청"
+  },
+  "lighthouse-core/audits/dobetterweb/geolocation-on-start.js | title": {
+    "message": "페이지 로드 시 위치정보 권한 요청 방지하기"
+  },
+  "lighthouse-core/audits/dobetterweb/js-libraries.js | columnVersion": {
+    "message": "버전"
+  },
+  "lighthouse-core/audits/dobetterweb/js-libraries.js | description": {
+    "message": "페이지에서 감지된 모든 프런트 엔드 JavaScript 라이브러리입니다. [자세히 알아보기](https://web.dev/js-libraries)"
+  },
+  "lighthouse-core/audits/dobetterweb/js-libraries.js | title": {
+    "message": "감지된 JavaScript 라이브러리"
+  },
+  "lighthouse-core/audits/dobetterweb/no-document-write.js | description": {
+    "message": "연결이 느린 사용자의 경우 `document.write()`에서 동적으로 삽입된 외부 스크립트로 인해 페이지 로드가 몇십 초까지 지연될 수 있습니다. [자세히 알아보기](https://web.dev/no-document-write)"
+  },
+  "lighthouse-core/audits/dobetterweb/no-document-write.js | failureTitle": {
+    "message": "`document.write()`을(를) 사용함"
+  },
+  "lighthouse-core/audits/dobetterweb/no-document-write.js | title": {
+    "message": "`document.write()` 지양하기"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | columnSeverity": {
+    "message": "높은 심각도순"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | columnVersion": {
+    "message": "라이브러리 버전"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | columnVuln": {
+    "message": "취약점 수"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | description": {
+    "message": "일부 타사 스크립트에는 공격자가 쉽게 식별하고 공격할 수 있는 알려진 보안 취약점이 포함되어 있을 수 있습니다. [자세히 알아보기](https://web.dev/no-vulnerable-libraries)"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | displayValue": {
+    "message": "{itemCount,plural, =1{취약점 1개가 감지됨}other{취약점 #개가 감지됨}}"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | failureTitle": {
+    "message": "알려진 보안 취약점이 있는 프런트 엔드 JavaScript 라이브러리가 포함됨"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | rowSeverityHigh": {
+    "message": "높음"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | rowSeverityLow": {
+    "message": "낮음"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | rowSeverityMedium": {
+    "message": "보통"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | title": {
+    "message": "알려진 보안 취약점이 있는 프런트 엔드 JavaScript 라이브러리를 사용하지 않음"
+  },
+  "lighthouse-core/audits/dobetterweb/notification-on-start.js | description": {
+    "message": "사용자가 컨텍스트 없이 알림 전송을 요청한 사이트를 신뢰할 수 없거나 이로 인해 혼란스러운 상태입니다. 대신 사용자 동작에 대한 요청 입력을 고려해 보세요. [자세히 알아보기](https://web.dev/notification-on-start)"
+  },
+  "lighthouse-core/audits/dobetterweb/notification-on-start.js | failureTitle": {
+    "message": "페이지 로드 시 알림 권한 요청"
+  },
+  "lighthouse-core/audits/dobetterweb/notification-on-start.js | title": {
+    "message": "페이지 로드 시 알림 권한 요청 방지하기"
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | columnFailingElem": {
+    "message": "통과하지 못한 요소"
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | description": {
+    "message": "비밀번호 붙여넣기 방지로 인해 타당한 보안 정책이 저해됩니다. [자세히 알아보기](https://web.dev/password-inputs-can-be-pasted-into)"
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | failureTitle": {
+    "message": "사용자가 비밀번호 입력란에 내용을 붙여넣지 못하도록 차단"
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | title": {
+    "message": "사용자가 비밀번호 입력란에 붙여넣을 수 있도록 허용"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | columnProtocol": {
+    "message": "프로토콜"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | description": {
+    "message": "HTTP/2는 HTTP/1.1에 비해 바이너리 헤더, 멀티플렉싱, 서버 푸시 등의 다양한 이점을 제공합니다. [자세히 알아보기](https://web.dev/uses-http2)"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | displayValue": {
+    "message": "{itemCount,plural, =1{HTTP/2를 통해 게재되지 않는 요청 1건}other{HTTP/2를 통해 게재되지 않는 요청 #건}}"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | failureTitle": {
+    "message": "모든 리소스에 HTTP/2를 사용하지 않음"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | title": {
+    "message": "자체 리소스에 HTTP/2 사용"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-passive-event-listeners.js | description": {
+    "message": "터치 및 휠 이벤트 리스너를 `passive`(으)로 표시하면 페이지 스크롤 성능을 개선할 수 있습니다. [자세히 알아보기](https://web.dev/uses-passive-event-listeners)"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-passive-event-listeners.js | failureTitle": {
+    "message": "스크롤 성능 개선에 패시브 리스너를 사용하지 않음"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-passive-event-listeners.js | title": {
+    "message": "스크롤 성능 개선에 패시브 리스너 사용"
+  },
+  "lighthouse-core/audits/errors-in-console.js | columnDesc": {
+    "message": "설명"
+  },
+  "lighthouse-core/audits/errors-in-console.js | description": {
+    "message": "콘솔에 로그된 오류는 해결되지 않은 문제를 의미합니다. 네트워크 요청 실패를 비롯한 기타 브라우저 문제로 인해 발생할 수 있습니다. [자세히 알아보기](https://web.dev/errors-in-console)"
+  },
+  "lighthouse-core/audits/errors-in-console.js | failureTitle": {
+    "message": "브라우저 오류가 콘솔에 로그됨"
+  },
+  "lighthouse-core/audits/errors-in-console.js | title": {
+    "message": "콘솔에 로그된 브라우저 오류 없음"
+  },
+  "lighthouse-core/audits/font-display.js | description": {
+    "message": "웹폰트가 로드되는 동안 사용자에게 텍스트가 표시되도록 글꼴 표시 CSS 기능을 사용합니다. [자세히 알아보기](https://developers.google.com/web/updates/2016/02/font-display)"
+  },
+  "lighthouse-core/audits/font-display.js | failureTitle": {
+    "message": "웹폰트가 로드되는 동안 텍스트가 계속 표시되는지 확인하기"
+  },
+  "lighthouse-core/audits/font-display.js | title": {
+    "message": "웹폰트가 로드되는 동안 모든 텍스트가 계속 표시됩니다"
+  },
+  "lighthouse-core/audits/font-display.js | undeclaredFontURLWarning": {
+    "message": "Lighthouse에서 다음 URL의 글꼴 표시 값을 자동으로 확인하지 못했습니다. {fontURL}"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | columnActual": {
+    "message": "가로세로 비율(실제)"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | columnDisplayed": {
+    "message": "가로세로 비율(표시됨)"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | description": {
+    "message": "이미지 표시 측정기준은 원래 가로세로 비율과 일치해야 합니다. [자세히 알아보기](https://web.dev/image-aspect-ratio)"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | failureTitle": {
+    "message": "이미지를 올바르지 않은 가로세로 비율로 표시"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | title": {
+    "message": "이미지를 올바른 가로세로 비율로 표시"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | warningCompute": {
+    "message": "잘못된 이미지 크기 정보 {url}"
+  },
+  "lighthouse-core/audits/installable-manifest.js | description": {
+    "message": "브라우저는 사용자에게 홈 화면에 앱을 추가하라는 메시지를 사전에 표시할 수 있으며 이렇게 하면 참여도가 높아질 수 있습니다. [자세히 알아보기](https://developers.google.com/web/tools/lighthouse/audits/install-prompt)"
+  },
+  "lighthouse-core/audits/installable-manifest.js | failureTitle": {
+    "message": "웹 앱 매니페스트가 설치 가능 요건을 충족하지 않음"
+  },
+  "lighthouse-core/audits/installable-manifest.js | title": {
+    "message": "웹 앱 매니페스트가 설치 가능 요건을 충족함"
+  },
+  "lighthouse-core/audits/is-on-https.js | columnInsecureURL": {
+    "message": "안전하지 않은 URL"
+  },
+  "lighthouse-core/audits/is-on-https.js | description": {
+    "message": "민감한 데이터를 다루지 않는 사이트를 포함한 모든 사이트는 HTTPS로 보호해야 합니다. HTTPS는 침입자가 앱과 사용자 사이의 통신을 조작하거나 통신에 대해 패시브 리스너를 사용하지 못하도록 방지하며 HTTP/2와 여러 신규 웹 플랫폼 API의 필수 요건이기도 합니다. [자세히 알아보기](https://web.dev/is-on-https)"
+  },
+  "lighthouse-core/audits/is-on-https.js | displayValue": {
+    "message": "{itemCount,plural, =1{안전하지 않은 요청 1건 검색됨}other{안전하지 않은 요청 #건 검색됨}}"
+  },
+  "lighthouse-core/audits/is-on-https.js | failureTitle": {
+    "message": "HTTPS 사용하지 않음"
+  },
+  "lighthouse-core/audits/is-on-https.js | title": {
+    "message": "HTTPS 사용"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | description": {
+    "message": "셀룰러 네트워크에서 페이지 로드가 빠르면 우수한 모바일 사용자 환경을 제공할 수 있습니다. [자세히 알아보기](https://developers.google.com/web/tools/lighthouse/audits/fast-3g)"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | displayValueText": {
+    "message": "페이지와 상호작용할 수 있게 될 때까지 걸린 시간: {timeInMs, number, seconds}초"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | displayValueTextWithOverride": {
+    "message": "시뮬레이션된 모바일 네트워크에서 페이지와 상호작용할 수 있게 될 때까지 걸린 시간: {timeInMs, number, seconds}초"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | explanationLoadSlow": {
+    "message": "페이지가 너무 느리게 로드되므로 10초 이내에 사용할 수 없습니다. '성능' 섹션에서 추천 내용과 진단을 확인하고 개선 방안을 알아보세요."
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | failureTitle": {
+    "message": "모바일 네트워크에서 페이지 로딩이 충분히 빠르지 않음"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | title": {
+    "message": "모바일 네트워크에서 페이지 로드가 충분히 빠름"
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | columnCategory": {
+    "message": "카테고리"
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | description": {
+    "message": "JS 파싱, 컴파일, 실행에 소요되는 시간을 줄이세요. 용량이 적은 JS 페이로드를 제공하면 도움이 될 수 있습니다."
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | failureTitle": {
+    "message": "기본 스레드 작업 최소화하기"
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | title": {
+    "message": "기본 스레드 작업 최소화하기"
+  },
+  "lighthouse-core/audits/manual/pwa-cross-browser.js | description": {
+    "message": "최대한 많은 사용자가 이용할 수 있으려면 사이트가 모든 주요 브라우저에서 작동해야 합니다. [자세히 알아보기](https://developers.google.com/web/progressive-web-apps/checklist#site-works-cross-browser)"
+  },
+  "lighthouse-core/audits/manual/pwa-cross-browser.js | title": {
+    "message": "사이트가 다양한 브라우저에서 작동함"
+  },
+  "lighthouse-core/audits/manual/pwa-each-page-has-url.js | description": {
+    "message": "페이지를 소셜 미디어에 공유하려면 개별 페이지가 URL을 통해 딥 링크로 연결될 수 있어야 하며 페이지별로 URL이 달라야 합니다. [자세히 알아보기](https://developers.google.com/web/progressive-web-apps/checklist#each-page-has-a-url)"
+  },
+  "lighthouse-core/audits/manual/pwa-each-page-has-url.js | title": {
+    "message": "페이지마다 URL이 있음"
+  },
+  "lighthouse-core/audits/manual/pwa-page-transitions.js | description": {
+    "message": "탭을 했을 때 느린 네트워크에서도 전환이 빠르게 느껴져야 하며 이는 체감 성능의 핵심입니다. [자세히 알아보기](https://developers.google.com/web/progressive-web-apps/checklist#page-transitions-dont-feel-like-they-block-on-the-network)"
+  },
+  "lighthouse-core/audits/manual/pwa-page-transitions.js | title": {
+    "message": "페이지 전환 시 네트워크에서 막히는 느낌이 들지 않음"
+  },
+  "lighthouse-core/audits/metrics/estimated-input-latency.js | description": {
+    "message": "예상 입력 대기시간은 페이지 로드가 가장 많은 5초 동안 앱이 사용자 입력에 응답하는 데 걸리는 시간(밀리초)의 추정치입니다. 지연 시간이 50밀리초보다 길면 사용자가 앱이 느리다고 인식할 수 있습니다. [자세히 알아보기](https://developers.google.com/web/tools/lighthouse/audits/estimated-input-latency)"
+  },
+  "lighthouse-core/audits/metrics/estimated-input-latency.js | title": {
+    "message": "예상 입력 대기시간"
+  },
+  "lighthouse-core/audits/metrics/first-contentful-paint.js | description": {
+    "message": "콘텐츠가 포함된 첫 페인트는 첫 번째 텍스트 또는 이미지가 표시되는 시간을 나타냅니다. [자세히 알아보기](https://developers.google.com/web/tools/lighthouse/audits/first-contentful-paint)"
+  },
+  "lighthouse-core/audits/metrics/first-contentful-paint.js | title": {
+    "message": "최초 만족 페인트"
+  },
+  "lighthouse-core/audits/metrics/first-cpu-idle.js | description": {
+    "message": "최초 CPU 유휴 상태는 페이지의 기본 스레드가 입력을 처리할 수 있을 만큼 조용한 상태가 된 첫 번째 시간을 표시합니다. [자세히 알아보기](https://developers.google.com/web/tools/lighthouse/audits/first-interactive)"
+  },
+  "lighthouse-core/audits/metrics/first-cpu-idle.js | title": {
+    "message": "최초 CPU 유휴 상태"
+  },
+  "lighthouse-core/audits/metrics/first-meaningful-paint.js | description": {
+    "message": "유의미한 첫 페인트는 페이지의 기본 콘텐츠가 표시되는 경우를 측정합니다. [자세히 알아보기](https://developers.google.com/web/tools/lighthouse/audits/first-meaningful-paint)"
+  },
+  "lighthouse-core/audits/metrics/first-meaningful-paint.js | title": {
+    "message": "최초 유의미 페인트"
+  },
+  "lighthouse-core/audits/metrics/interactive.js | description": {
+    "message": "사용할 수 있을 때까지 걸리는 시간은 완전히 페이지와 상호작용할 수 있게 될 때까지 걸리는 시간입니다. [자세히 알아보기](https://developers.google.com/web/tools/lighthouse/audits/consistently-interactive)"
+  },
+  "lighthouse-core/audits/metrics/interactive.js | title": {
+    "message": "상호작용 시간"
+  },
+  "lighthouse-core/audits/metrics/max-potential-fid.js | description": {
+    "message": "사용자가 경험할 수 있는 최대 첫 입력 지연 예상 시간은 가장 긴 작업의 길이(밀리초)입니다. [자세히 알아보기](https://developers.google.com/web/updates/2018/05/first-input-delay)"
+  },
+  "lighthouse-core/audits/metrics/max-potential-fid.js | title": {
+    "message": "최대 첫 입력 지연 예상 시간"
+  },
+  "lighthouse-core/audits/metrics/speed-index.js | description": {
+    "message": "속도 색인은 페이지 콘텐츠가 얼마나 빨리 표시되는지 보여줍니다. [자세히 알아보기](https://developers.google.com/web/tools/lighthouse/audits/speed-index)"
+  },
+  "lighthouse-core/audits/metrics/speed-index.js | title": {
+    "message": "속도 색인"
+  },
+  "lighthouse-core/audits/metrics/total-blocking-time.js | description": {
+    "message": "FCP와 상호작용 시간 사이의 모든 시간의 합으로 작업 지속 시간이 50ms를 넘으면 밀리초 단위로 표현됩니다."
+  },
+  "lighthouse-core/audits/metrics/total-blocking-time.js | title": {
+    "message": "총 차단 시간"
+  },
+  "lighthouse-core/audits/network-rtt.js | description": {
+    "message": "네트워크 왕복 시간(RTT)이 성능에 큰 영향을 줍니다. 출발지로의 RTT가 크면 서버가 사용자에게 가까울 때 성능이 향상될 수 있음을 나타냅니다. [자세히 알아보기](https://hpbn.co/primer-on-latency-and-bandwidth/)"
+  },
+  "lighthouse-core/audits/network-rtt.js | title": {
+    "message": "네트워크 왕복 시간"
+  },
+  "lighthouse-core/audits/network-server-latency.js | description": {
+    "message": "서버 지연 시간은 웹 성능에 영향을 줄 수 있습니다. 출발지의 서버 지연 시간이 길면 서버에 과부하가 걸렸거나 백엔드 성능이 낮음을 나타냅니다. [자세히 알아보기](https://hpbn.co/primer-on-web-performance/#analyzing-the-resource-waterfall)"
+  },
+  "lighthouse-core/audits/network-server-latency.js | title": {
+    "message": "서버 백엔드 지연 시간"
+  },
+  "lighthouse-core/audits/offline-start-url.js | description": {
+    "message": "서비스 워커를 사용하면 예측 불가능한 네트워크 상태에서도 웹 앱이 안정적으로 작동할 수 있습니다. [자세히 알아보기](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)"
+  },
+  "lighthouse-core/audits/offline-start-url.js | failureTitle": {
+    "message": "`start_url`이(가) 오프라인 시 200으로 응답하지 않음"
+  },
+  "lighthouse-core/audits/offline-start-url.js | title": {
+    "message": "`start_url`이(가) 오프라인 시 200으로 응답함"
+  },
+  "lighthouse-core/audits/offline-start-url.js | warningCantStart": {
+    "message": "Lighthouse가 매니페스트에서 `start_url`을(를) 읽지 못했습니다. 그 결과 `start_url`은(는) 문서 URL인 것으로 간주되었습니다. 오류 메시지는 '{manifestWarning}'입니다."
+  },
+  "lighthouse-core/audits/performance-budget.js | columnOverBudget": {
+    "message": "예산 초과"
+  },
+  "lighthouse-core/audits/performance-budget.js | description": {
+    "message": "네트워크 요청의 양과 크기는 제공된 성능 예산에 따라 설정된 목표치 아래로 유지하세요. [자세히 알아보기](https://developers.google.com/web/tools/lighthouse/audits/budgets)"
+  },
+  "lighthouse-core/audits/performance-budget.js | requestCountOverBudget": {
+    "message": "{count,plural, =1{요청 1건}other{요청 #건}}"
+  },
+  "lighthouse-core/audits/performance-budget.js | title": {
+    "message": "성능 예산"
+  },
+  "lighthouse-core/audits/redirects-http.js | description": {
+    "message": "HTTPS를 이미 설정한 경우 모든 사용자가 안전한 웹 기능을 사용하기 위해서는 모든 HTTP 트래픽이 HTTPS로 리디렉션되어야 합니다. [자세히 알아보기](https://developers.google.com/web/tools/lighthouse/audits/http-redirects-to-https)"
+  },
+  "lighthouse-core/audits/redirects-http.js | failureTitle": {
+    "message": "HTTP 트래픽을 HTTPS로 리디렉션하지 않음"
+  },
+  "lighthouse-core/audits/redirects-http.js | title": {
+    "message": "HTTP 트래픽을 HTTPS로 리디렉션함"
+  },
+  "lighthouse-core/audits/redirects.js | description": {
+    "message": "리디렉션을 사용하면 페이지가 로드되기 전 추가적인 지연이 발생합니다. [자세히 알아보기](https://developers.google.com/web/tools/lighthouse/audits/redirects)"
+  },
+  "lighthouse-core/audits/redirects.js | title": {
+    "message": "여러 차례의 페이지 리디렉션 피하기"
+  },
+  "lighthouse-core/audits/resource-summary.js | description": {
+    "message": "페이지 리소스의 수량과 크기와 관련해 예산을 설정하려면 budget.json 파일을 추가하세요. [자세히 알아보기](https://developers.google.com/web/tools/lighthouse/audits/budgets)"
+  },
+  "lighthouse-core/audits/resource-summary.js | displayValue": {
+    "message": "{requestCount,plural, =1{요청 1건 • {byteCount, number, bytes}KB}other{요청 #건 • {byteCount, number, bytes}KB}}"
+  },
+  "lighthouse-core/audits/resource-summary.js | title": {
+    "message": "요청 수는 낮게, 전송 크기는 작게 유지하기"
+  },
+  "lighthouse-core/audits/seo/canonical.js | description": {
+    "message": "표준 링크는 검색결과에 어떤 URL을 표시할지 알려줍니다. [자세히 알아보기](https://web.dev/canonical)"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationConflict": {
+    "message": "여러 개의 URL({urlList})이 충돌됨"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationDifferentDomain": {
+    "message": "다른 도메인({url})을 가리킵니다."
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationInvalid": {
+    "message": "잘못된 URL({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationPointsElsewhere": {
+    "message": "다른 `hreflang` 위치({url})를 가리킵니다."
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationRelative": {
+    "message": "상대 URL({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationRoot": {
+    "message": "콘텐츠 페이지가 아닌 도메인의 루트 URL(홈페이지)을 가리킴"
+  },
+  "lighthouse-core/audits/seo/canonical.js | failureTitle": {
+    "message": "문서에 유효한 `rel=canonical` 없음"
+  },
+  "lighthouse-core/audits/seo/canonical.js | title": {
+    "message": "문서에 유효한 `rel=canonical` 있음"
+  },
+  "lighthouse-core/audits/seo/font-size.js | description": {
+    "message": "12px보다 글꼴 크기가 작으면 읽기 어렵기 때문에 모바일 방문자가 '손가락으로 확대'해야만 읽을 수 있습니다. 페이지 텍스트의 60% 이상을 12px 이상으로 유지하도록 노력하세요. [자세히 알아보기](https://web.dev/font-size)"
+  },
+  "lighthouse-core/audits/seo/font-size.js | displayValue": {
+    "message": "{decimalProportion, number, extendedPercent} 읽기 쉬운 텍스트"
+  },
+  "lighthouse-core/audits/seo/font-size.js | explanationViewport": {
+    "message": "모바일 화면에 최적화된 표시 영역 메타 태그가 없어서 텍스트를 알아볼 수 없음"
+  },
+  "lighthouse-core/audits/seo/font-size.js | explanationWithDisclaimer": {
+    "message": "텍스트의 {decimalProportion, number, extendedPercent} 값이 너무 작습니다({decimalProportionVisited, number, extendedPercent} 샘플 기준)."
+  },
+  "lighthouse-core/audits/seo/font-size.js | failureTitle": {
+    "message": "문서에서 읽기 쉬운 글꼴 크기를 사용하지 않음"
+  },
+  "lighthouse-core/audits/seo/font-size.js | title": {
+    "message": "문서가 읽기 쉬운 글꼴 크기를 사용함"
+  },
+  "lighthouse-core/audits/seo/hreflang.js | description": {
+    "message": "hreflang 링크는 검색엔진에 특정 언어나 지역에서 페이지의 어떤 버전을 검색결과로 표시해야 할지 알려줍니다. [자세히 알아보기](https://web.dev/hreflang)"
+  },
+  "lighthouse-core/audits/seo/hreflang.js | failureTitle": {
+    "message": "문서에 유효한 `hreflang` 없음"
+  },
+  "lighthouse-core/audits/seo/hreflang.js | title": {
+    "message": "문서에 유효한 `hreflang` 있음"
+  },
+  "lighthouse-core/audits/seo/http-status-code.js | description": {
+    "message": "실패한 HTTP 상태 코드가 있는 페이지는 제대로 색인이 생성되지 않을 수 있습니다. [자세히 알아보기](https://web.dev/http-status-code)"
+  },
+  "lighthouse-core/audits/seo/http-status-code.js | failureTitle": {
+    "message": "페이지에 실패한 HTTP 상태 코드가 있음"
+  },
+  "lighthouse-core/audits/seo/http-status-code.js | title": {
+    "message": "페이지에 성공적인 HTTP 상태 코드가 있음"
+  },
+  "lighthouse-core/audits/seo/is-crawlable.js | description": {
+    "message": "검색엔진이 페이지를 크롤링할 권한이 없으면 검색결과에 포함할 수 없습니다. [자세히 알아보기](https://web.dev/is-crawable)"
+  },
+  "lighthouse-core/audits/seo/is-crawlable.js | failureTitle": {
+    "message": "페이지의 색인 생성이 차단됨"
+  },
+  "lighthouse-core/audits/seo/is-crawlable.js | title": {
+    "message": "페이지의 색인 생성이 차단되지 않음"
+  },
+  "lighthouse-core/audits/seo/link-text.js | description": {
+    "message": "구체적인 링크 텍스트는 검색엔진에서 콘텐츠를 이해하는 데 도움이 됩니다. [자세히 알아보기](https://web.dev/link-text)"
+  },
+  "lighthouse-core/audits/seo/link-text.js | displayValue": {
+    "message": "{itemCount,plural, =1{링크 1개 찾음}other{링크 #개 찾음}}"
+  },
+  "lighthouse-core/audits/seo/link-text.js | failureTitle": {
+    "message": "링크에 설명 텍스트가 없음"
+  },
+  "lighthouse-core/audits/seo/link-text.js | title": {
+    "message": "링크에 설명 텍스트가 있음"
+  },
+  "lighthouse-core/audits/seo/manual/structured-data.js | description": {
+    "message": "[구조화된 데이터용 테스트 도구](https://search.google.com/structured-data/testing-tool/)와 [구조화된 데이터 Linter](http://linter.structured-data.org/)를 실행하여 구조화된 데이터를 검증합니다. [자세히 알아보기](https://web.dev/structured-data)"
+  },
+  "lighthouse-core/audits/seo/manual/structured-data.js | title": {
+    "message": "구조화된 데이터가 유효함"
+  },
+  "lighthouse-core/audits/seo/meta-description.js | description": {
+    "message": "검색결과에 페이지 콘텐츠를 간략하게 요약하기 위한 메타 설명이 포함될 수 있습니다. [자세히 알아보기](https://web.dev/meta-description)"
+  },
+  "lighthouse-core/audits/seo/meta-description.js | explanation": {
+    "message": "설명 텍스트가 비어 있습니다."
+  },
+  "lighthouse-core/audits/seo/meta-description.js | failureTitle": {
+    "message": "문서에 메타 설명이 없음"
+  },
+  "lighthouse-core/audits/seo/meta-description.js | title": {
+    "message": "문서에 메타 설명이 있음"
+  },
+  "lighthouse-core/audits/seo/plugins.js | description": {
+    "message": "검색엔진은 플러그인 콘텐츠의 색인을 생성할 수 없고 플러그인을 제한하거나 지원하지 않는 기기도 많습니다. [자세히 알아보기](https://web.dev/plugins)"
+  },
+  "lighthouse-core/audits/seo/plugins.js | failureTitle": {
+    "message": "문서가 플러그인을 사용함"
+  },
+  "lighthouse-core/audits/seo/plugins.js | title": {
+    "message": "문서에서 플러그인을 사용할 수 없음"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | description": {
+    "message": "robots.txt 파일 형식이 잘못된 경우 크롤러가 웹사이트를 어떻게 크롤링하고 색인을 생성해야 할지 파악하지 못할 수 있습니다. [자세히 알아보기](https://web.dev/robots-txt)"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | displayValueHttpBadCode": {
+    "message": "robots.txt 요청에 반환된 HTTP 상태: {statusCode}"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | displayValueValidationError": {
+    "message": "{itemCount,plural, =1{오류 1개 발견}other{오류 #개 발견}}"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | explanation": {
+    "message": "Lighthouse에서 robots.txt 파일을 다운로드할 수 없음"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | failureTitle": {
+    "message": "robots.txt가 유효하지 않음"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | title": {
+    "message": "robots.txt가 유효함"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | description": {
+    "message": "버튼이나 링크 같은 상호작용 요소는 충분히 커야 하며(48 x 48px), 주변에 충분한 공간이 있고 다른 요소와 겹치지 않아 쉽게 탭할 수 있어야 합니다. [자세히 알아보기](https://web.dev/tap-targets)"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | displayValue": {
+    "message": "{decimalProportion, number, percent} 탭 타겟 크기가 적절함"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | explanationViewportMetaNotOptimized": {
+    "message": "모바일 화면에 최적화된 표시 영역 메타 태그가 없어서 탭 타겟이 너무 작음"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | failureTitle": {
+    "message": "탭 타겟 크기가 적절하지 않음"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | overlappingTargetHeader": {
+    "message": "타겟이 중복됨"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | tapTargetHeader": {
+    "message": "탭 타겟"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | title": {
+    "message": "탭 타겟의 크기가 적절함"
+  },
+  "lighthouse-core/audits/service-worker.js | description": {
+    "message": "서비스 워커는 앱에서 오프라인, 홈 화면에 추가, 푸시 알림 등 다양한 프로그레시브 웹 앱 기능을 사용할 수 있도록 설정하는 기술입니다. [자세히 알아보기](https://developers.google.com/web/tools/lighthouse/audits/registered-service-worker)"
+  },
+  "lighthouse-core/audits/service-worker.js | explanationBadManifest": {
+    "message": "이 페이지는 서비스 워커로 인해 제어되지만 매니페스트가 유효한 JSON으로 파싱하는 데 실패했으므로 `start_url`을(를) 찾지 못했습니다."
+  },
+  "lighthouse-core/audits/service-worker.js | explanationBadStartUrl": {
+    "message": "이 페이지는 서비스 워커로 인해 제어되지만 `start_url`({startUrl})이(가) 서비스 워커의 범위({scopeUrl})에 있지 않습니다."
+  },
+  "lighthouse-core/audits/service-worker.js | explanationNoManifest": {
+    "message": "이 페이지는 서비스 워커로 인해 제어되지만 가져온 매니페스트가 없으므로 `start_url`을(를) 찾지 못했습니다."
+  },
+  "lighthouse-core/audits/service-worker.js | explanationOutOfScope": {
+    "message": "이 원본에 하나 이상의 서비스 워커가 있지만 페이지({pageUrl})가 범위 내에 있지 않습니다."
+  },
+  "lighthouse-core/audits/service-worker.js | failureTitle": {
+    "message": "페이지와 `start_url`을(를) 제어하는 서비스 워커를 등록하지 않음"
+  },
+  "lighthouse-core/audits/service-worker.js | title": {
+    "message": "페이지와`start_url`을(를) 제어하는 서비스 워커를 등록함"
+  },
+  "lighthouse-core/audits/splash-screen.js | description": {
+    "message": "테마 스플래시 화면을 사용하면 사용자가 홈 화면에서 앱을 실행했을 때 고품질의 환경을 경험할 수 있습니다. [자세히 알아보기](https://developers.google.com/web/tools/lighthouse/audits/custom-splash-screen)"
+  },
+  "lighthouse-core/audits/splash-screen.js | failureTitle": {
+    "message": "맞춤 스플래시 화면에 맞게 구성되지 않음"
+  },
+  "lighthouse-core/audits/splash-screen.js | title": {
+    "message": "맞춤 스플래시 화면에 맞게 구성됨"
+  },
+  "lighthouse-core/audits/themed-omnibox.js | description": {
+    "message": "브라우저 주소 표시줄에는 사이트와 맞는 테마를 설정할 수 있습니다. [자세히 알아보기](https://developers.google.com/web/tools/lighthouse/audits/address-bar)"
+  },
+  "lighthouse-core/audits/themed-omnibox.js | failureTitle": {
+    "message": "주소 표시줄의 테마 색상을 설정하지 않음"
+  },
+  "lighthouse-core/audits/themed-omnibox.js | title": {
+    "message": "주소 표시줄의 테마 색상을 설정함"
+  },
+  "lighthouse-core/audits/third-party-summary.js | columnBlockingTime": {
+    "message": "기본 스레드 차단 시간"
+  },
+  "lighthouse-core/audits/third-party-summary.js | columnThirdParty": {
+    "message": "타사"
+  },
+  "lighthouse-core/audits/third-party-summary.js | description": {
+    "message": "타사 코드는 로드 성능에 크게 영향을 미칠 수 있습니다. 페이지에서 먼저 로딩을 끝낸 후 중복되는 타사 공급업체의 수를 제한하고 타사 코드를 로드해 보세요. [자세히 알아보기](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/loading-third-party-javascript/)"
+  },
+  "lighthouse-core/audits/third-party-summary.js | displayValue": {
+    "message": "타사 코드가 {timeInMs, number, milliseconds} ms 동안 기본 스레드를 차단했습니다."
+  },
+  "lighthouse-core/audits/third-party-summary.js | failureTitle": {
+    "message": "타사 코드의 영향을 줄임"
+  },
+  "lighthouse-core/audits/third-party-summary.js | title": {
+    "message": "타사 사용"
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | description": {
+    "message": "Time To First Byte는 서버가 응답을 보내는 시간을 식별합니다. [자세히 알아보기](https://developers.google.com/web/tools/lighthouse/audits/ttfb)"
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | displayValue": {
+    "message": "루트 문서에 {timeInMs, number, milliseconds} ms 소요됨"
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | failureTitle": {
+    "message": "서버 응답 시간(TTFB) 단축"
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | title": {
+    "message": "서버 응답 시간 낮음(TTFB)"
+  },
+  "lighthouse-core/audits/user-timings.js | columnDuration": {
+    "message": "시간"
+  },
+  "lighthouse-core/audits/user-timings.js | columnStartTime": {
+    "message": "시작 시간"
+  },
+  "lighthouse-core/audits/user-timings.js | columnType": {
+    "message": "유형"
+  },
+  "lighthouse-core/audits/user-timings.js | description": {
+    "message": "앱에서 User Timing API를 사용하여 중요 사용자 경험이 이루어지는 동안의 실제 성능을 측정하세요. [자세히 알아보기](https://developers.google.com/web/tools/lighthouse/audits/user-timing)"
+  },
+  "lighthouse-core/audits/user-timings.js | displayValue": {
+    "message": "{itemCount,plural, =1{사용자 시간 1회}other{사용자 시간 #회}}"
+  },
+  "lighthouse-core/audits/user-timings.js | title": {
+    "message": "사용자 타이밍 표시 및 측정 값"
+  },
+  "lighthouse-core/audits/uses-rel-preconnect.js | crossoriginWarning": {
+    "message": "‘{securityOrigin}’에 사전 연결 <link>가 있으나 브라우저에서 사용되지 않습니다. `crossorigin` 속성을 올바르게 사용하고 있는지 확인하세요."
+  },
+  "lighthouse-core/audits/uses-rel-preconnect.js | description": {
+    "message": "`preconnect` 또는 `dns-prefetch` 리소스 힌트를 추가하여 중요한 타사 원본에 대한 조기 연결을 수립하는 것이 좋습니다. [자세히 알아보기](https://developers.google.com/web/fundamentals/performance/resource-prioritization#preconnect)"
+  },
+  "lighthouse-core/audits/uses-rel-preconnect.js | title": {
+    "message": "필수 원본 미리 연결하기"
+  },
+  "lighthouse-core/audits/uses-rel-preload.js | crossoriginWarning": {
+    "message": "'{preloadURL}'에 사전 로드 <link>가 있으나 브라우저에서 사용되지 않습니다. `crossorigin` 속성을 올바르게 사용하고 있는지 확인하세요."
+  },
+  "lighthouse-core/audits/uses-rel-preload.js | description": {
+    "message": "`<link rel=preload>`을(를) 사용하여 현재 요청되는 리소스를 페이지 로드에 나중에 가져올 때 우선순위를 정하는 것이 좋습니다. [자세히 알아보기](https://developers.google.com/web/tools/lighthouse/audits/preload)"
+  },
+  "lighthouse-core/audits/uses-rel-preload.js | title": {
+    "message": "중요한 요청을 미리 로드하기"
+  },
+  "lighthouse-core/audits/viewport.js | description": {
+    "message": "휴대기기 화면에 앱을 최적화하려면 `<meta name=\"viewport\">` 태그를 추가합니다. [자세히 알아보기](https://developers.google.com/web/tools/lighthouse/audits/has-viewport-meta-tag)"
+  },
+  "lighthouse-core/audits/viewport.js | explanationNoTag": {
+    "message": "`<meta name=\"viewport\">` 태그 없음"
+  },
+  "lighthouse-core/audits/viewport.js | failureTitle": {
+    "message": "`width` 또는 `initial-scale`이(가) 포함된 `<meta name=\"viewport\">` 태그가 없음"
+  },
+  "lighthouse-core/audits/viewport.js | title": {
+    "message": "`width` 또는 `initial-scale`이(가) 포함된 `<meta name=\"viewport\">` 태그가 있음"
+  },
+  "lighthouse-core/audits/without-javascript.js | description": {
+    "message": "JavaScript가 사용 중지되었더라도 사용자에게 앱을 사용하려면 JavaScript가 필요하다는 경고 등의 일부 콘텐츠는 앱에 표시되어야 합니다. [자세히 알아보기](https://developers.google.com/web/tools/lighthouse/audits/no-js)"
+  },
+  "lighthouse-core/audits/without-javascript.js | explanation": {
+    "message": "스크립트를 사용할 수 없는 경우 페이지 본문에서 일부 콘텐츠를 렌더링해야 합니다."
+  },
+  "lighthouse-core/audits/without-javascript.js | failureTitle": {
+    "message": "JavaScript를 사용할 수 없는 경우 대체 콘텐츠를 제공하지 않음"
+  },
+  "lighthouse-core/audits/without-javascript.js | title": {
+    "message": "JavaScript를 사용할 수 없는 경우에도 일부 콘텐츠를 포함함"
+  },
+  "lighthouse-core/audits/works-offline.js | description": {
+    "message": "프로그레시브 웹 앱을 빌드할 경우 앱이 오프라인에서도 작동할 수 있도록 서비스 워커를 사용하는 것이 좋습니다. [자세히 알아보기](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)"
+  },
+  "lighthouse-core/audits/works-offline.js | failureTitle": {
+    "message": "현재 페이지가 오프라인 시 200으로 응답하지 않음"
+  },
+  "lighthouse-core/audits/works-offline.js | title": {
+    "message": "현재 페이지가 오프라인 시 200으로 응답함"
+  },
+  "lighthouse-core/audits/works-offline.js | warningNoLoad": {
+    "message": "테스트 URL({requested})이 '{final}'(으)로 리디렉션되므로 이 페이지가 오프라인 상태에서는 로드되지 않을 수 있습니다. 두 번째 URL로 직접 테스트해 보세요."
+  },
+  "lighthouse-core/config/default-config.js | a11yAriaGroupDescription": {
+    "message": "애플리케이션의 ARIA 사용을 개선하도록 추천된 사항입니다. 이를 통해 스크린 리더와 같은 지원 기술을 사용하는 사용자의 환경을 개선할 수 있습니다."
+  },
+  "lighthouse-core/config/default-config.js | a11yAriaGroupTitle": {
+    "message": "ARIA"
+  },
+  "lighthouse-core/config/default-config.js | a11yAudioVideoGroupDescription": {
+    "message": "오디오 및 비디오의 대체 콘텐츠를 제공하도록 추천된 사항입니다. 이를 통해 청각 장애나 시각 장애가 있는 사용자의 환경을 개선할 수 있습니다."
+  },
+  "lighthouse-core/config/default-config.js | a11yAudioVideoGroupTitle": {
+    "message": "오디오 및 동영상"
+  },
+  "lighthouse-core/config/default-config.js | a11yBestPracticesGroupDescription": {
+    "message": "일반적인 접근성 권장사항을 강조표시합니다."
+  },
+  "lighthouse-core/config/default-config.js | a11yBestPracticesGroupTitle": {
+    "message": "권장사항"
+  },
+  "lighthouse-core/config/default-config.js | a11yCategoryDescription": {
+    "message": "이 검사에서는 [웹 앱의 접근성을 개선](https://developers.google.com/web/fundamentals/accessibility)하도록 추천된 사항을 강조합니다. 접근성 문제의 일부만 자동으로 감지되므로 직접 테스트하는 것도 좋습니다."
+  },
+  "lighthouse-core/config/default-config.js | a11yCategoryManualDescription": {
+    "message": "자동화된 테스트 도구가 처리할 수 없는 영역을 다루는 항목입니다. [접근성 검토 실시](https://developers.google.com/web/fundamentals/accessibility/how-to-review)에 관한 가이드에서 자세히 알아보세요."
+  },
+  "lighthouse-core/config/default-config.js | a11yCategoryTitle": {
+    "message": "접근성"
+  },
+  "lighthouse-core/config/default-config.js | a11yColorContrastGroupDescription": {
+    "message": "콘텐츠의 가독성을 개선할 추천 내용입니다."
+  },
+  "lighthouse-core/config/default-config.js | a11yColorContrastGroupTitle": {
+    "message": "대비"
+  },
+  "lighthouse-core/config/default-config.js | a11yLanguageGroupDescription": {
+    "message": "다른 언어를 사용하는 사용자가 콘텐츠를 더 쉽게 이해할 수 있게 개선하도록 추천된 사항입니다."
+  },
+  "lighthouse-core/config/default-config.js | a11yLanguageGroupTitle": {
+    "message": "다국어화 및 현지화"
+  },
+  "lighthouse-core/config/default-config.js | a11yNamesLabelsGroupDescription": {
+    "message": "애플리케이션 컨트롤의 의미 해석을 개선하도록 추천된 사항입니다. 이를 통해 스크린 리더와 같은 지원 기술을 사용하는 사용자의 환경을 개선할 수 있습니다."
+  },
+  "lighthouse-core/config/default-config.js | a11yNamesLabelsGroupTitle": {
+    "message": "이름 및 라벨"
+  },
+  "lighthouse-core/config/default-config.js | a11yNavigationGroupDescription": {
+    "message": "애플리케이션에서 키보드 탐색을 개선하도록 추천된 사항입니다."
+  },
+  "lighthouse-core/config/default-config.js | a11yNavigationGroupTitle": {
+    "message": "탐색"
+  },
+  "lighthouse-core/config/default-config.js | a11yTablesListsVideoGroupDescription": {
+    "message": "다음은 스크린 리더와 같은 보조 기술을 사용하여 표나 목록 데이터를 읽는 환경을 개선하도록 추천된 사항입니다."
+  },
+  "lighthouse-core/config/default-config.js | a11yTablesListsVideoGroupTitle": {
+    "message": "표와 목록"
+  },
+  "lighthouse-core/config/default-config.js | bestPracticesCategoryTitle": {
+    "message": "권장사항"
+  },
+  "lighthouse-core/config/default-config.js | budgetsGroupDescription": {
+    "message": "성능 예산은 사이트 성능의 표준을 설정합니다."
+  },
+  "lighthouse-core/config/default-config.js | budgetsGroupTitle": {
+    "message": "예산"
+  },
+  "lighthouse-core/config/default-config.js | diagnosticsGroupDescription": {
+    "message": "애플리케이션 성능과 관련된 추가 정보입니다. 이러한 숫자는 성능 점수에 [직접적인 영향](https://github.com/GoogleChrome/lighthouse/blob/d2ec9ffbb21de9ad1a0f86ed24575eda32c796f0/docs/scoring.md#how-are-the-scores-weighted)을 미치지 않습니다."
+  },
+  "lighthouse-core/config/default-config.js | diagnosticsGroupTitle": {
+    "message": "진단"
+  },
+  "lighthouse-core/config/default-config.js | firstPaintImprovementsGroupDescription": {
+    "message": "성능에서 가장 중요한 측면은 픽셀이 화면에 렌더링되는 속도입니다. 주요 측정항목: 최초 만족 페인트, 최초 유의미 페인트"
+  },
+  "lighthouse-core/config/default-config.js | firstPaintImprovementsGroupTitle": {
+    "message": "최초 페인트 개선"
+  },
+  "lighthouse-core/config/default-config.js | loadOpportunitiesGroupDescription": {
+    "message": "이러한 권장사항은 페이지를 더 빠르게 로드하는 데 도움이 될 수 있습니다. 성능 점수에는 [직접적인 영향](https://github.com/GoogleChrome/lighthouse/blob/d2ec9ffbb21de9ad1a0f86ed24575eda32c796f0/docs/scoring.md#how-are-the-scores-weighted)을 미치지 않습니다."
+  },
+  "lighthouse-core/config/default-config.js | loadOpportunitiesGroupTitle": {
+    "message": "추천"
+  },
+  "lighthouse-core/config/default-config.js | metricGroupTitle": {
+    "message": "측정항목"
+  },
+  "lighthouse-core/config/default-config.js | overallImprovementsGroupDescription": {
+    "message": "페이지가 빠르게 반응하고 가능한 한 빨리 사용할 수 있는 준비가 되도록 전반적인 로드 환경을 강화하세요. 주요 측정항목: 상호작용 시간, 속도 색인"
+  },
+  "lighthouse-core/config/default-config.js | overallImprovementsGroupTitle": {
+    "message": "전반적인 개선사항"
+  },
+  "lighthouse-core/config/default-config.js | performanceCategoryTitle": {
+    "message": "성능"
+  },
+  "lighthouse-core/config/default-config.js | pwaCategoryDescription": {
+    "message": "이 검사는 프로그레시브 웹 앱의 요소를 검사합니다. [자세히 알아보기](https://developers.google.com/web/progressive-web-apps/checklist)"
+  },
+  "lighthouse-core/config/default-config.js | pwaCategoryManualDescription": {
+    "message": "이 검사는 기준 [PWA 체크리스트](https://developers.google.com/web/progressive-web-apps/checklist)의 필수 항목이지만 Lighthouse에서 자동으로 확인되지는 않습니다. 점수에 영향을 미치지는 않지만 직접 확인하는 것이 중요합니다."
+  },
+  "lighthouse-core/config/default-config.js | pwaCategoryTitle": {
+    "message": "프로그레시브 웹 앱"
+  },
+  "lighthouse-core/config/default-config.js | pwaFastReliableGroupTitle": {
+    "message": "속도와 안정성"
+  },
+  "lighthouse-core/config/default-config.js | pwaInstallableGroupTitle": {
+    "message": "설치 가능"
+  },
+  "lighthouse-core/config/default-config.js | pwaOptimizedGroupTitle": {
+    "message": "PWA 최적화됨"
+  },
+  "lighthouse-core/config/default-config.js | seoCategoryDescription": {
+    "message": "이와 같은 검사를 통해 페이지가 검색엔진 결과 순위에 최적화되도록 할 수 있습니다. Lighthouse에서 점검하지 않는 추가적인 요소가 검색 순위에 영향을 줄 수도 있습니다. [자세히 알아보기](https://support.google.com/webmasters/answer/35769)"
+  },
+  "lighthouse-core/config/default-config.js | seoCategoryManualDescription": {
+    "message": "사이트에서 이러한 추가 검증 도구를 실행하여 추가적인 검색엔진 최적화 권장사항을 확인합니다."
+  },
+  "lighthouse-core/config/default-config.js | seoCategoryTitle": {
+    "message": "검색엔진 최적화"
+  },
+  "lighthouse-core/config/default-config.js | seoContentGroupDescription": {
+    "message": "크롤러가 앱 콘텐츠를 효과적으로 파악할 수 있도록 HTML 형식을 지정하세요."
+  },
+  "lighthouse-core/config/default-config.js | seoContentGroupTitle": {
+    "message": "콘텐츠 권장사항"
+  },
+  "lighthouse-core/config/default-config.js | seoCrawlingGroupDescription": {
+    "message": "검색결과에 표시하려면 크롤러가 앱에 액세스할 수 있어야 합니다."
+  },
+  "lighthouse-core/config/default-config.js | seoCrawlingGroupTitle": {
+    "message": "크롤링 및 색인 생성"
+  },
+  "lighthouse-core/config/default-config.js | seoMobileGroupDescription": {
+    "message": "사용자가 콘텐츠를 읽기 위해 페이지를 확대하거나 축소할 필요가 없도록 모바일 친화적인 페이지를 지원하세요. [자세히 알아보기](https://developers.google.com/search/mobile-sites/)"
+  },
+  "lighthouse-core/config/default-config.js | seoMobileGroupTitle": {
+    "message": "모바일 친화적"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnCacheTTL": {
+    "message": "캐시 TTL"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnLocation": {
+    "message": "위치"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnName": {
+    "message": "이름"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnRequests": {
+    "message": "요청"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnResourceType": {
+    "message": "리소스 유형"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnSize": {
+    "message": "크기"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnTimeSpent": {
+    "message": "소요 시간"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnTransferSize": {
+    "message": "전송 크기"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnURL": {
+    "message": "URL"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnWastedBytes": {
+    "message": "가능한 절감 효과"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnWastedMs": {
+    "message": "가능한 절감 효과"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | displayValueByteSavings": {
+    "message": "절감 가능치: {wastedBytes, number, bytes} KB"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | displayValueMsSavings": {
+    "message": "절감 가능치: {wastedMs, number, milliseconds} 밀리초"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | documentResourceType": {
+    "message": "문서"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | fontResourceType": {
+    "message": "글꼴"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | imageResourceType": {
+    "message": "이미지"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | mediaResourceType": {
+    "message": "미디어"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | ms": {
+    "message": "{timeInMs, number, milliseconds} 밀리초"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | otherResourceType": {
+    "message": "기타"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | scriptResourceType": {
+    "message": "스크립트"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | seconds": {
+    "message": "{timeInMs, number, seconds} 초"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | stylesheetResourceType": {
+    "message": "스타일시트"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | thirdPartyResourceType": {
+    "message": "타사"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | totalResourceType": {
+    "message": "합계"
+  },
+  "lighthouse-core/lib/lh-error.js | badTraceRecording": {
+    "message": "페이지 로드 중 처리한 추적을 기록하던 중 문제가 발생했습니다. Lighthouse를 다시 실행하세요. ({errorCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | criTimeout": {
+    "message": "초기 디버거 프로토콜 연결 대기 시간이 초과되었습니다."
+  },
+  "lighthouse-core/lib/lh-error.js | didntCollectScreenshots": {
+    "message": "Chrome이 페이지 로드 중 스크린샷을 수집하지 않았습니다. 페이지에 표시된 콘텐츠가 있는지 확인한 다음 Lighthouse를 다시 실행해 보세요. ({errorCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | dnsFailure": {
+    "message": "DNS 서버에서 제공된 도메인을 해결하지 못했습니다."
+  },
+  "lighthouse-core/lib/lh-error.js | erroredRequiredArtifact": {
+    "message": "필수 {artifactName} 수집기에 다음 오류가 발생했습니다. {errorMessage}"
+  },
+  "lighthouse-core/lib/lh-error.js | internalChromeError": {
+    "message": "Chrome 내부 오류가 발생했습니다. Chrome을 다시 시작한 다음 Lighthouse를 다시 실행해 주세요."
+  },
+  "lighthouse-core/lib/lh-error.js | missingRequiredArtifact": {
+    "message": "필수 {artifactName} 수집기가 실행되지 않았습니다."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailed": {
+    "message": "Lighthouse에서 사용자가 요청한 페이지를 안정적으로 로드하지 못했습니다. 올바른 URL을 테스트하고 있으며 서버에서 모든 요청에 적절하게 응답하고 있는지 확인하세요."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedHung": {
+    "message": "페이지 응답이 중지되었기 때문에 Lighthouse에서 사용자가 요청한 URL을 안정적으로 로드하지 못했습니다."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedInsecure": {
+    "message": "제공한 URL에 유효한 보안 인증서가 포함되어 있지 않습니다. {securityMessages}"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedInterstitial": {
+    "message": "Chrome에서 전면 광고가 있는 페이지를 로드하지 못하도록 했습니다. 올바른 URL로 테스트하고 있으며 서버가 모든 요청에 적절하게 응답하고 있는지 확인하세요."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedWithDetails": {
+    "message": "Lighthouse에서 사용자가 요청한 페이지를 안정적으로 로드하지 못했습니다. 올바른 URL로 테스트하고 있으며 서버가 모든 요청에 적절하게 응답하고 있는지 확인하세요. (세부정보: {errorDetails})"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedWithStatusCode": {
+    "message": "Lighthouse에서 사용자가 요청한 페이지를 안정적으로 로드하지 못했습니다. 올바른 URL로 테스트하고 있으며 서버가 모든 요청에 적절하게 응답하고 있는지 확인하세요. (상태 코드: {statusCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadTookTooLong": {
+    "message": "페이지 로드에 시간이 너무 오래 걸립니다. 보고서의 추천에 따라 페이지 로드 시간을 줄인 다음 Lighthouse를 다시 실행해 보세요. ({errorCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | protocolTimeout": {
+    "message": "DevTools 프로토콜 응답 대기가 할당된 시간을 초과했습니다. (메서드: {protocolMethod})"
+  },
+  "lighthouse-core/lib/lh-error.js | requestContentTimeout": {
+    "message": "리소스 콘텐츠 가져오기 시간이 할당된 시간을 초과했습니다"
+  },
+  "lighthouse-core/lib/lh-error.js | urlInvalid": {
+    "message": "사용자가 제공한 URL이 잘못되었습니다."
+  },
+  "lighthouse-core/report/html/renderer/util.js | auditGroupExpandTooltip": {
+    "message": "감사 보기"
+  },
+  "lighthouse-core/report/html/renderer/util.js | crcInitialNavigation": {
+    "message": "초기 탐색"
+  },
+  "lighthouse-core/report/html/renderer/util.js | crcLongestDurationLabel": {
+    "message": "최상 경로 최대 지연 시간:"
+  },
+  "lighthouse-core/report/html/renderer/util.js | errorLabel": {
+    "message": "오류!"
+  },
+  "lighthouse-core/report/html/renderer/util.js | errorMissingAuditInfo": {
+    "message": "보고 오류: 감사 정보 없음"
+  },
+  "lighthouse-core/report/html/renderer/util.js | labDataTitle": {
+    "message": "실험실 데이터"
+  },
+  "lighthouse-core/report/html/renderer/util.js | lsPerformanceCategoryDescription": {
+    "message": "에뮬레이션된 모바일 네트워크에서 분석한 현재 페이지의 [Lighthouse](https://developers.google.com/web/tools/lighthouse/) 결과입니다. 값은 추정치이며 달라질 수 있습니다."
+  },
+  "lighthouse-core/report/html/renderer/util.js | manualAuditsGroupTitle": {
+    "message": "직접 확인해야 하는 추가 항목"
+  },
+  "lighthouse-core/report/html/renderer/util.js | notApplicableAuditsGroupTitle": {
+    "message": "해당 사항 없음"
+  },
+  "lighthouse-core/report/html/renderer/util.js | opportunityResourceColumnLabel": {
+    "message": "추천"
+  },
+  "lighthouse-core/report/html/renderer/util.js | opportunitySavingsColumnLabel": {
+    "message": "예상 절감치"
+  },
+  "lighthouse-core/report/html/renderer/util.js | passedAuditsGroupTitle": {
+    "message": "통과한 감사"
+  },
+  "lighthouse-core/report/html/renderer/util.js | snippetCollapseButtonLabel": {
+    "message": "스니펫 접기"
+  },
+  "lighthouse-core/report/html/renderer/util.js | snippetExpandButtonLabel": {
+    "message": "스니펫 펼치기"
+  },
+  "lighthouse-core/report/html/renderer/util.js | thirdPartyResourcesLabel": {
+    "message": "타사 리소스 표시"
+  },
+  "lighthouse-core/report/html/renderer/util.js | toplevelWarningsMessage": {
+    "message": "Lighthouse 실행에 영향을 미치는 문제가 발생했습니다."
+  },
+  "lighthouse-core/report/html/renderer/util.js | varianceDisclaimer": {
+    "message": "값은 추정치이며 달라질 수 있습니다. 성능 점수는 [이 측정항목만을 기준](https://github.com/GoogleChrome/lighthouse/blob/d2ec9ffbb21de9ad1a0f86ed24575eda32c796f0/docs/scoring.md#how-are-the-scores-weighted)으로 합니다."
+  },
+  "lighthouse-core/report/html/renderer/util.js | warningAuditsGroupTitle": {
+    "message": "감사를 통과했으나 경고를 받음"
+  },
+  "lighthouse-core/report/html/renderer/util.js | warningHeader": {
+    "message": "경고: "
+  },
+  "stack-packs/packs/wordpress.js | efficient_animated_content": {
+    "message": "GIF를 HTML5 동영상으로 삽입할 수 있게 해주는 서비스에 GIF를 업로드하는 것이 좋습니다."
+  },
+  "stack-packs/packs/wordpress.js | offscreen_images": {
+    "message": "[지연 로드 WordPress 플러그인](https://wordpress.org/plugins/search/lazy+load/)을 설치하면 화면에 모든 오프스크린 이미지를 지연하거나 이 기능을 제공하는 테마로 전환할 수 있습니다. [AMP 플러그인](https://wordpress.org/plugins/amp/) 사용도 고려해 보세요."
+  },
+  "stack-packs/packs/wordpress.js | render_blocking_resources": {
+    "message": "[중요한 애셋을 인라인](https://wordpress.org/plugins/search/critical+css/)하거나 [덜 중요한 리소스를 지연](https://wordpress.org/plugins/search/defer+css+javascript/)할 수 있게 도와주는 다양한 WordPress 플러그인이 있습니다. 이러한 플러그인에서 제공하는 최적화로 인해 내가 사용하는 테마 또는 플러그인의 기능이 깨질 수 있으므로 코드를 변경해야 할 가능성이 큽니다."
+  },
+  "stack-packs/packs/wordpress.js | time_to_first_byte": {
+    "message": "테마, 플러그인, 서버 사양은 모두 서버 응답 시간을 길어지게 만듭니다. 보다 최적화된 테마를 찾고, 최적화 플러그인을 신중하게 선택하고, 서버 업그레이드를 고려해 보세요."
+  },
+  "stack-packs/packs/wordpress.js | total_byte_weight": {
+    "message": "게시물 목록에 발췌문을 표시하거나(예: 더 많은 태그 사용), 특정 페이지에 표시되는 게시물의 개수를 줄이거나, 길이가 긴 게시물을 여러 페이지로 나누거나, 플러그인을 사용하여 댓글을 지연 로드하는 것이 좋습니다."
+  },
+  "stack-packs/packs/wordpress.js | unminified_css": {
+    "message": "다양한 [WordPress 플러그인](https://wordpress.org/plugins/search/minify+css/)을 사용해 스타일을 연결, 축소, 압축함으로써 사이트 속도를 높일 수 있습니다. 또한 가능한 경우 빌드 프로세스를 사용하여 축소 작업을 미리 실행할 수도 있습니다."
+  },
+  "stack-packs/packs/wordpress.js | unminified_javascript": {
+    "message": "다양한 [WordPress 플러그인](https://wordpress.org/plugins/search/minify+javascript/)을 사용해 스크립트를 연결, 축소, 압축함으로써 사이트 속도를 높일 수 있습니다. 또한 가능한 경우 빌드 프로세스를 사용하여 축소 작업을 미리 실행할 수도 있습니다."
+  },
+  "stack-packs/packs/wordpress.js | unused_css_rules": {
+    "message": "페이지에서 사용되지 않는 CSS를 로드하는 [WordPress 플러그인](https://wordpress.org/plugins/) 개수를 줄이거나 전환하는 것이 좋습니다. 과도한 CSS를 부가하는 플러그인이 무엇인지 확인하려면 Chrome DevTools의 [코드 범위](https://developers.google.com/web/updates/2017/04/devtools-release-notes#coverage)를 실행해 보세요. 스타일시트의 URL에서 관련된 테마 또는 플러그인을 확인할 수 있습니다. 목록에서 코드 범위에 빨간색이 길게 표시된 스타일시트가 있는 플러그인을 찾아보세요. 실제로 페이지에서 사용되는 플러그인은 대기열에 하나의 스타일시트만 포함해야 합니다."
+  },
+  "stack-packs/packs/wordpress.js | unused_javascript": {
+    "message": "페이지에서 사용되지 않는 JavaScript를 로드하는 [WordPress 플러그인](https://wordpress.org/plugins/) 개수를 줄이거나 전환하는 것이 좋습니다. 과도한 JS를 부가하는 플러그인이 무엇인지 확인하려면 Chrome DevTools의 [코드 범위](https://developers.google.com/web/updates/2017/04/devtools-release-notes#coverage)를 실행해 보세요. 스크립트의 URL에서 관련 테마 또는 플러그인을 확인할 수 있습니다. 목록에서 코드 범위에 빨간색이 길게 표시된 스크립트가 있는 플러그인을 찾아보세요. 실제로 페이지에서 사용되는 플러그인은 대기열에 하나의 스크립트만 포함해야 합니다."
+  },
+  "stack-packs/packs/wordpress.js | uses_long_cache_ttl": {
+    "message": "[WordPress 브라우저 캐싱](https://codex.wordpress.org/WordPress_Optimization#Browser_Caching)에 관해 자세히 알아보세요."
+  },
+  "stack-packs/packs/wordpress.js | uses_optimized_images": {
+    "message": "품질은 그대로 유지하면서 이미지를 압축해주는 [이미지 최적화 WordPress 플러그인](https://wordpress.org/plugins/search/optimize+images/)을 사용해 보세요."
+  },
+  "stack-packs/packs/wordpress.js | uses_responsive_images": {
+    "message": "필수 이미지 크기를 사용할 수 있도록 [미디어 라이브러리](https://codex.wordpress.org/Media_Library_Screen)에서 직접 이미지를 업로드하세요. 그런 다음 미디어 라이브러리에서 이미지를 삽입하거나 이미지 위젯을 사용하여 최적의 이미지 크기를 사용하는지 확인하세요(반응형 중단점용 이미지 포함). 이미지 크기가 용도에 적합하지 않다면 `Full Size` 이미지는 사용하지 않는 것이 좋습니다. [자세히 알아보기](https://codex.wordpress.org/Inserting_Images_into_Posts_and_Pages#Image_Size)"
+  },
+  "stack-packs/packs/wordpress.js | uses_text_compression": {
+    "message": "웹 서버 구성에서 텍스트 압축을 사용 설정할 수 있습니다."
+  },
+  "stack-packs/packs/wordpress.js | uses_webp_images": {
+    "message": "업로드한 이미지를 최적화된 양식으로 자동 변환해주는 [플러그인](https://wordpress.org/plugins/search/convert+webp/) 또는 서비스를 사용하는 것이 좋습니다."
+  }
+}
diff --git a/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/lt.json b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/lt.json
new file mode 100644
index 0000000..1b21175
--- /dev/null
+++ b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/lt.json
@@ -0,0 +1,1541 @@
+{
+  "lighthouse-core/audits/accessibility/accesskeys.js | description": {
+    "message": "Naudodami prieigos raktus naudotojai gali greitai suaktyvinti puslapio dalį. Kad naršymas veiktų tinkamai, kiekvienas prieigos raktas turi būti unikalus. [Sužinokite daugiau](https://web.dev/accesskeys/)."
+  },
+  "lighthouse-core/audits/accessibility/accesskeys.js | failureTitle": {
+    "message": "Elemento „`[accesskey]`“ vertės nėra unikalios"
+  },
+  "lighthouse-core/audits/accessibility/accesskeys.js | title": {
+    "message": "„`[accesskey]`“ vertės yra unikalios"
+  },
+  "lighthouse-core/audits/accessibility/aria-allowed-attr.js | description": {
+    "message": "Kiekviename ARIA elemente „`role`“ palaikoma tik dalis konkrečių atributų „`aria-*`“. Jei jie nebus suderinti, atributai „`aria-*`“ taps netinkami. [Sužinokite daugiau](https://web.dev/aria-allowed-attr/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-allowed-attr.js | failureTitle": {
+    "message": "Atributai „`[aria-*]`“ neatitinka savo vaidmenų"
+  },
+  "lighthouse-core/audits/accessibility/aria-allowed-attr.js | title": {
+    "message": "Atributai „`[aria-*]`“ atitinka savo vaidmenis"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-attr.js | description": {
+    "message": "Kai kuriems ARIA vaidmenims reikia atributų, aprašančių elementų būseną ekrano skaitytuvams. [Sužinokite daugiau](https://web.dev/aria-required-attr/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-required-attr.js | failureTitle": {
+    "message": "Elementuose „`[role]`“ nėra visų privalomų atributų „`[aria-*]`“"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-attr.js | title": {
+    "message": "Elementuose „`[role]`“ yra visi būtini atributai „`[aria-*]`“"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-children.js | description": {
+    "message": "Kai kuriuose ARIA pirminiuose vaidmenyse turi būti konkrečių antrinių vaidmenų, kad būtų galima atlikti numatytas pritaikomumo funkcijas. [Sužinokite daugiau](https://web.dev/aria-required-children/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-required-children.js | failureTitle": {
+    "message": "Trūksta elementų su atributu „`[role]`“, kuriam reikia konkrečių antrinių elementų „`[role]`“."
+  },
+  "lighthouse-core/audits/accessibility/aria-required-children.js | title": {
+    "message": "Elementai su atributu „`[role]`“, kuriam reikia konkrečių antrinių elementų „`[role]`“ yra pateikti"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-parent.js | description": {
+    "message": "Kai kurie ARIA antriniai vaidmenys turi būti konkrečiuose pirminiuose vaidmenyse, kad būtų tinkamai vykdomos numatytosios pritaikomumo funkcijos. [Sužinokite daugiau](https://web.dev/aria-required-parent/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-required-parent.js | failureTitle": {
+    "message": "Elementų „`[role]`“ nėra būtiname pirminiame elemente"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-parent.js | title": {
+    "message": "Elementai „`[role]`“ yra būtiname pirminiame elemente"
+  },
+  "lighthouse-core/audits/accessibility/aria-roles.js | description": {
+    "message": "ARIA vaidmenų vertės turi būti tinkamos, kad būtų galima atlikti numatytas pritaikomumo funkcijas. [Sužinokite daugiau](https://web.dev/aria-roles/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-roles.js | failureTitle": {
+    "message": "Elemento „`[role]`“ vertės yra netinkamos"
+  },
+  "lighthouse-core/audits/accessibility/aria-roles.js | title": {
+    "message": "Elemento „`[role]`“ vertės yra tinkamos"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr-value.js | description": {
+    "message": "Pagalbinės technologijos, pvz., ekrano skaitytuvai, negali interpretuoti ARIA atributų su netinkamomis vertėmis. [Sužinokite daugiau](https://web.dev/aria-valid-attr-value/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr-value.js | failureTitle": {
+    "message": "Atributuose „`[aria-*]`“ nėra tinkamų verčių"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr-value.js | title": {
+    "message": "Atributų „`[aria-*]`“ vertės yra tinkamos"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr.js | description": {
+    "message": "Pagalbinės technologijos, pvz., ekrano skaitytuvai, negali tinkamai interpretuoti ARIA atributų su netinkamais pavadinimais. [Sužinokite daugiau](https://web.dev/aria-valid-attr/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr.js | failureTitle": {
+    "message": "Atributai „`[aria-*]`“ netinkami arba yra rašybos klaidų"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr.js | title": {
+    "message": "Atributai „`[aria-*]`“ yra tinkami, rašybos klaidų nėra"
+  },
+  "lighthouse-core/audits/accessibility/audio-caption.js | description": {
+    "message": "Nurodžius antraštes garso įrašų elementus gali naudoti kurtieji arba sutrikusios klausos naudotojai. Jiems teikiama svarbi informacija, pvz., kas kalba, kas sakoma ir kita nekalbinė informacija. [Sužinokite daugiau](https://web.dev/audio-caption/)."
+  },
+  "lighthouse-core/audits/accessibility/audio-caption.js | failureTitle": {
+    "message": "Elementuose „`<audio>`“ trūksta elemento „`<track>`“ su atributu „`[kind=\"captions\"]`“."
+  },
+  "lighthouse-core/audits/accessibility/audio-caption.js | title": {
+    "message": "Elementuose „`<audio>`“ yra elementas „`<track>`“ su atributu „`[kind=\"captions\"]`“"
+  },
+  "lighthouse-core/audits/accessibility/axe-audit.js | failingElementsHeader": {
+    "message": "Netinkami elementai"
+  },
+  "lighthouse-core/audits/accessibility/button-name.js | description": {
+    "message": "Kai nenurodytas neįgaliesiems pritaikytas mygtuko pavadinimas, ekrano skaitytuvai apie jį praneša kaip „button“ (mygtukas), todėl jo negali naudoti ekrano skaitytuvo naudotojai. [Sužinokite daugiau](https://web.dev/button-name/)."
+  },
+  "lighthouse-core/audits/accessibility/button-name.js | failureTitle": {
+    "message": "Nenurodyti neįgaliesiems pritaikyti mygtukų pavadinimai"
+  },
+  "lighthouse-core/audits/accessibility/button-name.js | title": {
+    "message": "Mygtukų pavadinimai pritaikyti neįgaliesiems"
+  },
+  "lighthouse-core/audits/accessibility/bypass.js | description": {
+    "message": "Pridėjus būdų apeiti pasikartojantį turinį, klaviatūros naudotojai galės efektyviau naršyti puslapį. [Sužinokite daugiau](https://web.dev/bypass/)."
+  },
+  "lighthouse-core/audits/accessibility/bypass.js | failureTitle": {
+    "message": "Puslapyje nėra antraštės, praleidimo nuorodos arba orientyro regiono"
+  },
+  "lighthouse-core/audits/accessibility/bypass.js | title": {
+    "message": "Puslapyje yra antraštė, praleidžiama nuoroda arba orientyro regionas"
+  },
+  "lighthouse-core/audits/accessibility/color-contrast.js | description": {
+    "message": "Mažo kontrasto tekstą daugumai naudotojų yra sudėtinga arba neįmanoma perskaityti. [Sužinokite daugiau](https://web.dev/color-contrast/)."
+  },
+  "lighthouse-core/audits/accessibility/color-contrast.js | failureTitle": {
+    "message": "Nepakankamas fono ir priekinio fono spalvų kontrasto santykis."
+  },
+  "lighthouse-core/audits/accessibility/color-contrast.js | title": {
+    "message": "Fono ir priekinio plano spalvų kontrasto santykis pakankamas"
+  },
+  "lighthouse-core/audits/accessibility/definition-list.js | description": {
+    "message": "Kai aprašo sąrašai netinkamai pažymėti, ekrano skaitytuvai gali pateikti klaidinančią arba netikslią išvestį. [Sužinokite daugiau](https://web.dev/definition-list/)."
+  },
+  "lighthouse-core/audits/accessibility/definition-list.js | failureTitle": {
+    "message": "Elementuose „`<dl>`“ nurodytos ne tik tinkamai surikiuotos grupės „`<dt>`“ ir „`<dd>`“ bei elementai „`<script>`“ arba „`<template>`“."
+  },
+  "lighthouse-core/audits/accessibility/definition-list.js | title": {
+    "message": "Elementuose „`<dl>`“ nurodytos tik tinkamai surikiuotos grupės „`<dt>`“ ir „`<dd>`“ ir elementai „`<script>`“ arba „`<template>`“."
+  },
+  "lighthouse-core/audits/accessibility/dlitem.js | description": {
+    "message": "Aprašo sąrašo elementai („`<dt>`“ ir „`<dd>`“) turi būti sujungti pirminiame elemente „`<dl>`“, kad ekrano skaitytuvai galėtų apie juos tinkamai pranešti. [Sužinokite daugiau](https://web.dev/dlitem/)."
+  },
+  "lighthouse-core/audits/accessibility/dlitem.js | failureTitle": {
+    "message": "Aprašo sąrašo elementai nesujungti elementuose „`<dl>`“"
+  },
+  "lighthouse-core/audits/accessibility/dlitem.js | title": {
+    "message": "Aprašo sąrašo elementai sujungti elementuose „`<dl>`“"
+  },
+  "lighthouse-core/audits/accessibility/document-title.js | description": {
+    "message": "Pagal pavadinimą ekrano skaitytuvo naudotojai sužino, apie ką yra puslapio turinys, o paieškos variklio naudotojai gali nuspręsti, ar puslapis atitinka jų paiešką. [Sužinokite daugiau](https://web.dev/document-title/)."
+  },
+  "lighthouse-core/audits/accessibility/document-title.js | failureTitle": {
+    "message": "Dokumente nėra elemento „`<title>`“"
+  },
+  "lighthouse-core/audits/accessibility/document-title.js | title": {
+    "message": "Dokumente yra elementas „`<title>`“"
+  },
+  "lighthouse-core/audits/accessibility/duplicate-id.js | description": {
+    "message": "Atributo „id“ vertė turi būti unikali, kad pagalbinės technologijos nepraleistų kitų objektų. [Sužinokite daugiau](https://web.dev/duplicate-id/)."
+  },
+  "lighthouse-core/audits/accessibility/duplicate-id.js | failureTitle": {
+    "message": "Puslapio atributai „`[id]`“ nėra unikalūs"
+  },
+  "lighthouse-core/audits/accessibility/duplicate-id.js | title": {
+    "message": "Puslapio atributai „`[id]`“ yra unikalūs"
+  },
+  "lighthouse-core/audits/accessibility/frame-title.js | description": {
+    "message": "Pagal rėmelių pavadinimus ekrano skaitytuvų naudotojai sužino, koks yra rėmelių turinys. [Sužinokite daugiau](https://web.dev/frame-title/)."
+  },
+  "lighthouse-core/audits/accessibility/frame-title.js | failureTitle": {
+    "message": "Elementas „`<frame>`“ arba „`<iframe>`“ neturi pavadinimo"
+  },
+  "lighthouse-core/audits/accessibility/frame-title.js | title": {
+    "message": "Elementai „`<frame>`“ arba „`<iframe>`“ turi pavadinimą"
+  },
+  "lighthouse-core/audits/accessibility/html-has-lang.js | description": {
+    "message": "Jei puslapyje nenurodytas atributas „lang“, ekrano skaitytuvas manys, kad puslapio kalba atitinka naudotojo pasirinktą numatytąją kalbą, kai buvo nustatomas ekrano skaitytuvas. Jei puslapio kalba neatitinka numatytosios kalbos, gali būti, kad ekrano skaitytuvas netinkamai skaitys puslapio tekstą. [Sužinokite daugiau](https://web.dev/html-has-lang/)."
+  },
+  "lighthouse-core/audits/accessibility/html-has-lang.js | failureTitle": {
+    "message": "Elemente „`<html>`“ nėra atributo „`[lang]`“"
+  },
+  "lighthouse-core/audits/accessibility/html-has-lang.js | title": {
+    "message": "Elemente „`<html>`“ yra atributas „`[lang]`“"
+  },
+  "lighthouse-core/audits/accessibility/html-lang-valid.js | description": {
+    "message": "Nurodžius tinkamą [BCP 47 kalbą](https://www.w3.org/International/questions/qa-choosing-language-tags#question) ekrano skaitytuvai gali tinkamai pranešti tekstą. [Sužinokite daugiau](https://web.dev/html-lang-valid/)."
+  },
+  "lighthouse-core/audits/accessibility/html-lang-valid.js | failureTitle": {
+    "message": "Elemente „`<html>`“ nenurodyta tinkama atributo „`[lang]`“ vertė."
+  },
+  "lighthouse-core/audits/accessibility/html-lang-valid.js | title": {
+    "message": "Elemento „`<html>`“ atributo „`[lang]`“ vertė yra tinkama"
+  },
+  "lighthouse-core/audits/accessibility/image-alt.js | description": {
+    "message": "Informaciniuose elementuose turėtų būti pateiktas trumpas, aprašomasis alternatyvus tekstas. Dekoratyvinių elementų galima nepaisyti nurodžius tuščią alternatyvų atributą. [Sužinokite daugiau](https://web.dev/image-alt/)."
+  },
+  "lighthouse-core/audits/accessibility/image-alt.js | failureTitle": {
+    "message": "Vaizdo elementuose nėra atributų „`[alt]`“"
+  },
+  "lighthouse-core/audits/accessibility/image-alt.js | title": {
+    "message": "Vaizdo elementuose yra atributų „`[alt]`“"
+  },
+  "lighthouse-core/audits/accessibility/input-image-alt.js | description": {
+    "message": "Kai vaizdas naudojamas kaip mygtukas „`<input>`“, pateikus alternatyvų tekstą ekrano skaitytuvo naudotojams bus lengviau suprasti mygtuko tikslą. [Sužinokite daugiau](https://web.dev/input-image-alt/)."
+  },
+  "lighthouse-core/audits/accessibility/input-image-alt.js | failureTitle": {
+    "message": "Elementuose „`<input type=\"image\">`“ nėra „`[alt]`“ teksto"
+  },
+  "lighthouse-core/audits/accessibility/input-image-alt.js | title": {
+    "message": "Elementuose „`<input type=\"image\">`“ yra „`[alt]`“ teksto"
+  },
+  "lighthouse-core/audits/accessibility/label.js | description": {
+    "message": "Etiketės užtikrina, kad pagalbinės technologijos, pvz., ekrano skaitytuvai, tinkamai praneštų apie formų valdiklius. [Sužinokite daugiau](https://web.dev/label/)."
+  },
+  "lighthouse-core/audits/accessibility/label.js | failureTitle": {
+    "message": "Nėra susietų formos elementų etikečių"
+  },
+  "lighthouse-core/audits/accessibility/label.js | title": {
+    "message": "Formos elementuose yra atitinkamų etikečių"
+  },
+  "lighthouse-core/audits/accessibility/layout-table.js | description": {
+    "message": "Lentelėje, kuri naudojama išdėstymo tikslais, neturėtų būti duomenų elementų, pvz., elementų „th“ ar „caption“ arba atributo „summary“, nes taip ekrano skaitytuvų naudotojams gali būti teikiama trikdanti patirtis. [Sužinokite daugiau](https://web.dev/layout-table/)."
+  },
+  "lighthouse-core/audits/accessibility/layout-table.js | failureTitle": {
+    "message": "Pristatomuose elementuose „`<table>`“ nevengiama naudoti atributų „`<th>`“, „`<caption>`“ arba „`[summary]`“."
+  },
+  "lighthouse-core/audits/accessibility/layout-table.js | title": {
+    "message": "Pristatomuose elementuose „`<table>`“ vengiama naudoti atributus „`<th>`“, „`<caption>`“ ar „`[summary]`“."
+  },
+  "lighthouse-core/audits/accessibility/link-name.js | description": {
+    "message": "Aiškus ir unikalus nuorodos tekstas (ir alternatyvusis vaizdų tekstas, kai jie naudojami kaip nuorodos), į kurį lengva sutelkti dėmesį, pagerina naršymo patirtį ekrano skaitytuvų naudotojams. [Sužinokite daugiau](https://web.dev/link-name/)."
+  },
+  "lighthouse-core/audits/accessibility/link-name.js | failureTitle": {
+    "message": "Nėra aiškių nuorodų pavadinimų"
+  },
+  "lighthouse-core/audits/accessibility/link-name.js | title": {
+    "message": "Nuorodų pavadinimai aiškūs"
+  },
+  "lighthouse-core/audits/accessibility/list.js | description": {
+    "message": "Ekrano skaitytuvai apie sąrašus praneša tam tikru būdu. Tinkama sąrašo struktūra padeda ekrano skaitytuvams pateikti tinkamą išvestį. [Sužinokite daugiau](https://web.dev/list/)."
+  },
+  "lighthouse-core/audits/accessibility/list.js | failureTitle": {
+    "message": "Sąrašuose pateikiami ne tik elementai „`<li>`“ ir scenarijaus palaikymo elementai („`<script>`“ ir „`<template>`“)."
+  },
+  "lighthouse-core/audits/accessibility/list.js | title": {
+    "message": "Sąrašuose pateikiami tik elementai „`<li>`“ ir scenarijaus palaikymo elementai („`<script>`“ ir „`<template>`“)."
+  },
+  "lighthouse-core/audits/accessibility/listitem.js | description": {
+    "message": "Naudojant ekrano skaitytuvus reikia, kad sąrašo elementai („`<li>`“) būtų pirminiame elemente „`<ul>`“ arba „`<ol>`“, kad apie juos būtų galima tinkamai pranešti. [Sužinokite daugiau](https://web.dev/listitem/)."
+  },
+  "lighthouse-core/audits/accessibility/listitem.js | failureTitle": {
+    "message": "Sąrašo elementų („`<li>`“) nėra pirminiuose elementuose „`<ul>`“ arba „`<ol>`“."
+  },
+  "lighthouse-core/audits/accessibility/listitem.js | title": {
+    "message": "Sąrašo elementai („`<li>`“) yra pirminiuose elementuose „`<ul>`“ arba „`<ol>`“"
+  },
+  "lighthouse-core/audits/accessibility/meta-refresh.js | description": {
+    "message": "Naudotojai nesitiki, kad puslapis bus atnaujintas automatiškai. Tai atlikus dėmesys vėl sutelkiamas į puslapio viršų. Dėl to galima erzinanti arba klaidinanti patirtis. [Sužinokite daugiau](https://web.dev/meta-refresh/)."
+  },
+  "lighthouse-core/audits/accessibility/meta-refresh.js | failureTitle": {
+    "message": "Dokumente naudojama metažyma „`<meta http-equiv=\"refresh\">`“"
+  },
+  "lighthouse-core/audits/accessibility/meta-refresh.js | title": {
+    "message": "Dokumente nenaudojama metažyma „`<meta http-equiv=\"refresh\">`“"
+  },
+  "lighthouse-core/audits/accessibility/meta-viewport.js | description": {
+    "message": "Išjungus mastelio keitimą gali kilti problemų sutrikusio regėjimo naudotojams, kurie padidina ekraną, kad tinkamai matytų tinklalapio turinį. [Sužinokite daugiau](https://web.dev/meta-viewport/)."
+  },
+  "lighthouse-core/audits/accessibility/meta-viewport.js | failureTitle": {
+    "message": "Atributas „`[user-scalable=\"no\"]`“ naudojamas elemente „`<meta name=\"viewport\">`“ arba atributas „`[maximum-scale]`“ yra mažesnis nei 5."
+  },
+  "lighthouse-core/audits/accessibility/meta-viewport.js | title": {
+    "message": "Atributas „`[user-scalable=\"no\"]`“ nenaudojamas elemente „`<meta name=\"viewport\">`“, o atributas „`[maximum-scale]`“ yra ne mažesnis nei 5."
+  },
+  "lighthouse-core/audits/accessibility/object-alt.js | description": {
+    "message": "Ekrano skaitytuvai negali išversti turinio, kuris nėra tekstas. Prie elementų „`<object>`“ pridėjus alternatyviojo teksto, ekrano skaitytuvai naudotojams geriau perteikia reiškmę. [Sužinokite daugiau](https://web.dev/object-alt/)."
+  },
+  "lighthouse-core/audits/accessibility/object-alt.js | failureTitle": {
+    "message": "Elementuose „`<object>`“ nėra „`[alt]`“ teksto"
+  },
+  "lighthouse-core/audits/accessibility/object-alt.js | title": {
+    "message": "Elementuose „`<object>`“ yra „`[alt]`“ teksto"
+  },
+  "lighthouse-core/audits/accessibility/tabindex.js | description": {
+    "message": "Didesnė nei 0 vertė aiškiai nurodo naršymo tvarką. Iš tiesų tai yra tinkamas sprendimas, tačiau tai dažnai gali erzinti pagalbinių technologijų naudotojus. [Sužinokite daugiau](https://web.dev/tabindex/)."
+  },
+  "lighthouse-core/audits/accessibility/tabindex.js | failureTitle": {
+    "message": "Kai kurių elementų „`[tabindex]`“ vertė yra didesnė nei 0"
+  },
+  "lighthouse-core/audits/accessibility/tabindex.js | title": {
+    "message": "Nėra elemento su didesne nei 0 „`[tabindex]`“ verte"
+  },
+  "lighthouse-core/audits/accessibility/td-headers-attr.js | description": {
+    "message": "Ekrano skaitytuvuose naudojamos funkcijos, padedančios lengviau naršyti lenteles. Užtikrinus, kad langeliai „`<td>`“, kuriuose naudojamas atributas „`[headers]`“, nurodo tik langelius toje pačioje lentelėje, gali būti pagerinta ekrano skaitytuvų naudotojų patirtis. [Sužinokite daugiau](https://web.dev/td-headers-attr/)."
+  },
+  "lighthouse-core/audits/accessibility/td-headers-attr.js | failureTitle": {
+    "message": "Langeliai elemente „`<table>`“, kuriuose naudojamas atributas „`[headers]`“, nurodo tik kitus tos pačios lentelės langelius."
+  },
+  "lighthouse-core/audits/accessibility/td-headers-attr.js | title": {
+    "message": "Langeliai elemente „`<table>`“, kuriuose naudojamas atributas „`[headers]`“, nurodo tik kitus tos pačios lentelės langelius."
+  },
+  "lighthouse-core/audits/accessibility/th-has-data-cells.js | description": {
+    "message": "Ekrano skaitytuvuose naudojamos funkcijos, padedančios lengviau naršyti lenteles. Užtikrinus, kad lentelės antraštės visada nurodo tam tikrą langelių rinkinį, gali būti pagerinta ekrano skaitytuvų naudotojų patirtis. [Sužinokite daugiau](https://web.dev/th-has-data-cells/)."
+  },
+  "lighthouse-core/audits/accessibility/th-has-data-cells.js | failureTitle": {
+    "message": "Elementuose „`<th>`“ ir elementuose su atributu „`[role=\"columnheader\"/\"rowheader\"]`“ nėra duomenų langelių, kuriuos jie aprašo."
+  },
+  "lighthouse-core/audits/accessibility/th-has-data-cells.js | title": {
+    "message": "Elementuose „`<th>`“ ir elementuose su atributu „`[role=\"columnheader\"/\"rowheader\"]`“ yra duomenų langelių, kuriuos jie aprašo."
+  },
+  "lighthouse-core/audits/accessibility/valid-lang.js | description": {
+    "message": "Nurodžius tinkamą elementų [BCP 47 kalbą](https://www.w3.org/International/questions/qa-choosing-language-tags#question), užtikrinama, kad ekrano skaitytuvas tinkamai ištars tekstą. [Sužinokite daugiau](https://web.dev/valid-lang/)."
+  },
+  "lighthouse-core/audits/accessibility/valid-lang.js | failureTitle": {
+    "message": "Atributuose „`[lang]`“ nėra tinkamos vertės"
+  },
+  "lighthouse-core/audits/accessibility/valid-lang.js | title": {
+    "message": "Atributų „`[lang]`“ vertė tinkama"
+  },
+  "lighthouse-core/audits/accessibility/video-caption.js | description": {
+    "message": "Kai pateikiama vaizdo įrašo antraštė, kurtiems ir sutrikusios klausos naudotojams lengviau suprasti pateikiamą informaciją. [Sužinokite daugiau](https://web.dev/video-caption/)."
+  },
+  "lighthouse-core/audits/accessibility/video-caption.js | failureTitle": {
+    "message": "Elementuose „`<video>`“ nėra elemento „`<track>`“ su atributu „`[kind=\"captions\"]`“."
+  },
+  "lighthouse-core/audits/accessibility/video-caption.js | title": {
+    "message": "Elementuose „`<video>`“ yra elementas „`<track>`“ su atributu „`[kind=\"captions\"]`“"
+  },
+  "lighthouse-core/audits/accessibility/video-description.js | description": {
+    "message": "Garso įrašų aprašai teikia reikiamą informaciją apie vaizdo įrašus, kurios negalima pateikti dialoge, pvz., susijusios su veido išraiškomis ir scenomis. [Sužinokite daugiau](https://web.dev/video-description/)."
+  },
+  "lighthouse-core/audits/accessibility/video-description.js | failureTitle": {
+    "message": "Elementuose „`<video>`“ nėra elemento „`<track>`“ su atributu „`[kind=\"description\"]`“."
+  },
+  "lighthouse-core/audits/accessibility/video-description.js | title": {
+    "message": "Elementuose „`<video>`“ yra elementas „`<track>`“ su atributu „`[kind=\"description\"]`“"
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | description": {
+    "message": "Kad būtų tinkamai rodoma sistemoje „iOS“, kai naudotojai prideda laipsniškąją žiniatinklio programą prie pagrindinio ekrano, nurodykite `apple-touch-icon`. Ji turi nukreipti į neskaidrų 192 tšk. (arba 180 tšk.) kvadratinį PNG failą. [Sužinokite daugiau](https://developers.google.com/web/fundamentals/design-and-ux/browser-customization/)"
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | failureTitle": {
+    "message": "Nepateikiama tinkama piktograma „`apple-touch-icon`“"
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | precomposedWarning": {
+    "message": "„`apple-touch-icon-precomposed`“ paseno, verčiau naudokite „`apple-touch-icon`“."
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | title": {
+    "message": "Pateikiama tinkama piktograma „`apple-touch-icon`“"
+  },
+  "lighthouse-core/audits/bootup-time.js | chromeExtensionsWarning": {
+    "message": "„Chrome“ plėtiniai neigiamai paveikė šio puslapio įkėlimo našumą. Pabandykite patikrinti puslapį inkognito režimu arba naudodami „Chrome“ profilį be plėtinių."
+  },
+  "lighthouse-core/audits/bootup-time.js | columnScriptEval": {
+    "message": "Scenarijaus įvertinimas"
+  },
+  "lighthouse-core/audits/bootup-time.js | columnScriptParse": {
+    "message": "Scenarijaus analizė"
+  },
+  "lighthouse-core/audits/bootup-time.js | columnTotal": {
+    "message": "Bendras centrinio procesoriaus laikas"
+  },
+  "lighthouse-core/audits/bootup-time.js | description": {
+    "message": "Apsvarstykite galimybę sutrumpinti JS analizei, kompiliavimui ir vykdymui skiriamą laiką. Mažesnės JS naudingosios apkrovos gali padėti tai padaryti. [Sužinokite daugiau](https://developers.google.com/web/tools/lighthouse/audits/bootup)."
+  },
+  "lighthouse-core/audits/bootup-time.js | failureTitle": {
+    "message": "Sutrumpinkite „JavaScript“ vykdymo laiką"
+  },
+  "lighthouse-core/audits/bootup-time.js | title": {
+    "message": "„JavaScript“ vykdymo laikas"
+  },
+  "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | description": {
+    "message": "Dideli GIF failai nėra efektyvus animuoto turinio pateikimo būdas. Kad sutaupytumėte tinklo baitų, vietoje GIF failų galite naudoti MPEG4 ar „WebM“ vaizdo įrašų animacijai ir PNG ar „WebP“ statiniams vaizdams pateikti. [Sužinokite daugiau](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/replace-animated-gifs-with-video/)"
+  },
+  "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | title": {
+    "message": "Naudokite vaizdo įrašo formatus animuotam turiniui pateikti"
+  },
+  "lighthouse-core/audits/byte-efficiency/offscreen-images.js | description": {
+    "message": "Apsvarstykite galimybę įkelti ne ekraninius ir paslėptus vaizdus tik tada, kai bus įkelti visi svarbiausi ištekliai, kad sutrumpėtų laikas iki sąveikos. [Sužinokite daugiau](https://developers.google.com/web/tools/lighthouse/audits/offscreen-images)."
+  },
+  "lighthouse-core/audits/byte-efficiency/offscreen-images.js | title": {
+    "message": "Atidėkite ne ekraninius vaizdus"
+  },
+  "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | description": {
+    "message": "Šaltiniai blokuoja puslapio pirmą žymėjimą. Apsvarstykite galimybę pateikti svarbiausius JS ar CSS kaip eilutinius elementus ir atidėti visus nesvarbius JS ar stilius. [Sužinokite daugiau](https://developers.google.com/web/tools/lighthouse/audits/blocking-resources)."
+  },
+  "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | title": {
+    "message": "Pašalinkite pateikimą blokuojančius išteklius"
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | description": {
+    "message": "Naudotojai turi mokėti už dideles tinklo naudingąsias apkrovas, be to, jos glaudžiai susijusios su ilgu įkėlimo laiku. [Sužinokite daugiau](https://developers.google.com/web/tools/lighthouse/audits/network-payloads)."
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | displayValue": {
+    "message": "Bendras dydis: {totalBytes, number, bytes} KB"
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | failureTitle": {
+    "message": "Išvenkite didelių tinklo naudingųjų apkrovų"
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | title": {
+    "message": "Išvengiama didelių tinklo naudingųjų apkrovų"
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-css.js | description": {
+    "message": "Sumažinus CSS failų dydį, gali sumažėti tinklo naudingosios apkrovos. [Sužinokite daugiau](https://developers.google.com/web/tools/lighthouse/audits/minify-css)."
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-css.js | title": {
+    "message": "Sumažinkite CSS failus"
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | description": {
+    "message": "Sumažinus „JavaScript“ failus, galima sumažinti naudingąsias apkrovas ir sutrumpinti scenarijaus analizavimo laiką. [Sužinokite daugiau](https://developers.google.com/speed/docs/insights/MinifyResources)."
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | title": {
+    "message": "Sumažinkite „JavaScript“"
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | description": {
+    "message": "Pašalinkite neveikiančias taisykles iš stiliaus failų ir atidėkite CSS kalbos, nenaudojamos turiniui virš matomos ribos, įkėlimą, kad tinklo veikla sunaudotų mažiau baitų. [Sužinokite daugiau](https://developers.google.com/web/tools/lighthouse/audits/unused-css)."
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | title": {
+    "message": "Pašalinkite nevartojamą CSS kalbą"
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-javascript.js | description": {
+    "message": "Pašalinkite nenaudojamą „JavaScript“, kad tinklo veikla sunaudotų mažiau baitų."
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-javascript.js | title": {
+    "message": "Pašalinkite nenaudojamą „JavaScript“"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | description": {
+    "message": "Jei talpykla galios ilgiau, greičiau sulauksite pakartotinių apsilankymų puslapyje. [Sužinokite daugiau](https://developers.google.com/web/tools/lighthouse/audits/cache-policy)."
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | displayValue": {
+    "message": "{itemCount,plural, =1{Rastas 1 išteklius}one{Rastas # išteklius}few{Rasti # ištekliai}many{Rasta # ištekliaus}other{Rasta # išteklių}}"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | failureTitle": {
+    "message": "Statiniams ištekliams taikykite efektyvią talpyklos politiką"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | title": {
+    "message": "Naudojama efektyvi statinių išteklių talpyklos politika"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | description": {
+    "message": "Optimizuoti vaizdai įkeliami greičiau ir sunaudoja mažiau mobiliojo ryšio duomenų. [Sužinokite daugiau](https://developers.google.com/web/tools/lighthouse/audits/optimize-images)."
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | title": {
+    "message": "Efektyviai koduokite vaizdus"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | description": {
+    "message": "Teikite tinkamo dydžio vaizdus, kad būtų taupomi mobiliojo ryšio duomenys ir puslapis būtų įkeliamas greičiau. [Sužinokite daugiau](https://developers.google.com/web/tools/lighthouse/audits/oversized-images)."
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | title": {
+    "message": "Pasirinkite tinkamo dydžio vaizdus"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | description": {
+    "message": "Tekstinius išteklius reikėtų suglaudinti (naudojant „Gzip“, „Deflate“ arba „Brotli“), kad bendrai būtų sunaudojama kuo mažiau tinklo baitų. [Sužinokite daugiau](https://developers.google.com/web/tools/lighthouse/audits/text-compression)."
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | title": {
+    "message": "Įgalinkite teksto glaudinimą"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | description": {
+    "message": "Tokių formatų kaip JPEG 2000, JPEG XR ir „WebP“ vaizdai dažniausiai glaudinami geriau nei PNG ar JPEG vaizdai, todėl yra atsisiunčiami greičiau ir sunaudoja mažiau duomenų. [Sužinokite daugiau](https://developers.google.com/web/tools/lighthouse/audits/webp)."
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | title": {
+    "message": "Pateikite naujos kartos formatų vaizdus"
+  },
+  "lighthouse-core/audits/content-width.js | description": {
+    "message": "Jei programos turinio plotis nesutampa su peržiūros srities pločiu, jūsų programa gali būti neoptimizuota mobiliųjų įrenginių ekranams. [Sužinokite daugiau](https://developers.google.com/web/tools/lighthouse/audits/content-sized-correctly-for-viewport)"
+  },
+  "lighthouse-core/audits/content-width.js | explanation": {
+    "message": "{innerWidth} tšk. peržiūros sritis neatitinka {outerWidth} tšk. lango dydžio."
+  },
+  "lighthouse-core/audits/content-width.js | failureTitle": {
+    "message": "Turinys nėra tinkamo dydžio peržiūros sričiai"
+  },
+  "lighthouse-core/audits/content-width.js | title": {
+    "message": "Turinys yra tinkamo dydžio peržiūros sričiai"
+  },
+  "lighthouse-core/audits/critical-request-chains.js | description": {
+    "message": "Toliau pateiktose svarbiausių užklausų grandinėse nurodoma, kurie ištekliai įkelti nurodant aukštą prioritetą. Kad puslapio įkėlimas būtų sklandesnis, apsvarstykite galimybę sutrumpinti grandines, sumažinti atsisiunčiamų išteklių dydį arba atidėti nebūtinų išteklių atsisiuntimą. [Sužinokite daugiau](https://developers.google.com/web/tools/lighthouse/audits/critical-request-chains)."
+  },
+  "lighthouse-core/audits/critical-request-chains.js | displayValue": {
+    "message": "{itemCount,plural, =1{Rasta 1 grandinė}one{Rasta # grandinė}few{Rastos # grandinės}many{Rasta # grandinės}other{Rasta # grandinių}}"
+  },
+  "lighthouse-core/audits/critical-request-chains.js | title": {
+    "message": "Sumažinkite svarbiausių užklausų gylį"
+  },
+  "lighthouse-core/audits/deprecations.js | columnDeprecate": {
+    "message": "Naudojimo nutraukimas / įspėjimas"
+  },
+  "lighthouse-core/audits/deprecations.js | columnLine": {
+    "message": "Linija"
+  },
+  "lighthouse-core/audits/deprecations.js | description": {
+    "message": "Nebenaudojamos API galiausiai bus pašalintos iš naršyklės. [Sužinokite daugiau](https://web.dev/deprecations)."
+  },
+  "lighthouse-core/audits/deprecations.js | displayValue": {
+    "message": "{itemCount,plural, =1{Rastas 1 įspėjimas}one{Rastas # įspėjimas}few{Rasti # įspėjimai}many{Rasta # įspėjimo}other{Rasta # įspėjimų}}"
+  },
+  "lighthouse-core/audits/deprecations.js | failureTitle": {
+    "message": "Naudojamos pasenusios API"
+  },
+  "lighthouse-core/audits/deprecations.js | title": {
+    "message": "Vengiama nebenaudojamų API"
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | description": {
+    "message": "Programos talpykla nebenaudojama. [Sužinokite daugiau](https://web.dev/appcache-manifest)."
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | displayValue": {
+    "message": "Rastas elementas „{AppCacheManifest}“"
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | failureTitle": {
+    "message": "Naudojama programos talpykla"
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | title": {
+    "message": "Vengiama naudoti programos talpyklą"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | description": {
+    "message": "Nurodžius DOCTYPE, naršyklė neperjungia į seno standarto tinklalapių palaikymo režimą. [Sužinokite daugiau](https://web.dev/doctype)"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationBadDoctype": {
+    "message": "DOCTYPE pavadinimas turi būti mažosiomis raidėmis nurodyta eilutė „`html`“"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationNoDoctype": {
+    "message": "Dokumente turi būti nurodytas DOCTYPE"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationPublicId": {
+    "message": "Laukas „publicId“ turėtų būti tuščias"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationSystemId": {
+    "message": "Laukas „systemId“ turėtų būti tuščias"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | failureTitle": {
+    "message": "Puslapyje trūksta HTML DOCTYPE, todėl aktyvinamas seno standarto tinklalapių palaikymo režimas"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | title": {
+    "message": "Puslapyje yra HTML DOCTYPE"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | columnElement": {
+    "message": "Elementas"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | columnStatistic": {
+    "message": "Statistika"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | columnValue": {
+    "message": "Vertė"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | description": {
+    "message": "Naršyklių inžinieriai rekomenduoja puslapiuose naudoti ne daugiau kaip apytiksliai 1,5 tūkst. DOM elementų. Optimaliausias medžio gylis – mažiau nei 32 elementai ir mažiau nei 60 antrinių bei pirminių elementų. Dėl didelio DOM elementų skaičiaus gali būti sunaudojama daugiau atminties, ilgiau [skaičiuojami stiliai](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations) ir gali reikėti brangių [išdėstymo perskaičiavimų](https://developers.google.com/speed/articles/reflow). [Sužinokite daugiau](https://web.dev/dom-size)."
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 elementas}one{# elementas}few{# elementai}many{# elemento}other{# elementų}}"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | failureTitle": {
+    "message": "Venkite per didelių DOM"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | statisticDOMDepth": {
+    "message": "Maksimalus DOM gylis"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | statisticDOMElements": {
+    "message": "Bendras DOM elementų skaičius"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | statisticDOMWidth": {
+    "message": "Maksimalus antrinių elementų skaičius"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | title": {
+    "message": "Išvengiama per didelių DOM"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | columnRel": {
+    "message": "Atributas „rel“"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | columnTarget": {
+    "message": "Taikymas"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | description": {
+    "message": "Pridėkite fragmentus „`rel=\"noopener\"`“ arba „`rel=\"noreferrer\"`“ prie bet kurių išorinių nuorodų, kad pagerintumėte našumą ir išvengtumėte saugos pažeidimų. [Sužinokite daugiau](https://web.dev/external-anchors-use-rel-noopener)."
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | failureTitle": {
+    "message": "Nuorodos į mišrios kilmės paskirties vietas yra nesaugios"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | title": {
+    "message": "Nuorodos į mišrios kilmės paskirties vietas yra saugios"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | warning": {
+    "message": "Nepavyko nustatyti prieraišo ({anchorHTML}) paskirties vietos. Jei jo nenaudojate kaip hipersaito, apsvarstykite galimybę pašalinti atributą „target=_blank“."
+  },
+  "lighthouse-core/audits/dobetterweb/geolocation-on-start.js | description": {
+    "message": "Naudotojai gali būti įtarūs arba sumišę, jei svetainėse bus prašoma suteikti leidimą pasiekti vietovės duomenis be jokio konteksto. Apsvarstykite galimybę susieti užklausą su naudotojų veiksmu. [Sužinokite daugiau](https://web.dev/geolocation-on-start)."
+  },
+  "lighthouse-core/audits/dobetterweb/geolocation-on-start.js | failureTitle": {
+    "message": "Įkeliant puslapį pateikiama užklausa dėl pranešimų leidimo"
+  },
+  "lighthouse-core/audits/dobetterweb/geolocation-on-start.js | title": {
+    "message": "Įkeliant puslapį vengiama pateikti užklausą dėl leidimo nustatyti geografinę vietovę"
+  },
+  "lighthouse-core/audits/dobetterweb/js-libraries.js | columnVersion": {
+    "message": "Versija"
+  },
+  "lighthouse-core/audits/dobetterweb/js-libraries.js | description": {
+    "message": "Puslapyje aptiktos visos „JavaScript“ sąsajos bibliotekos. [Sužinokite daugiau](https://web.dev/js-libraries)"
+  },
+  "lighthouse-core/audits/dobetterweb/js-libraries.js | title": {
+    "message": "Aptikta „JavaScript“ bibliotekų"
+  },
+  "lighthouse-core/audits/dobetterweb/no-document-write.js | description": {
+    "message": "Esant lėtam ryšiui, išoriniai scenarijai, dinamiškai įterpiami naudojant „`document.write()`“, gali atidėti puslapio įkėlimą dešimtimis sekundžių. [Sužinokite daugiau](https://web.dev/no-document-write)."
+  },
+  "lighthouse-core/audits/dobetterweb/no-document-write.js | failureTitle": {
+    "message": "Naudojamas „`document.write()`“"
+  },
+  "lighthouse-core/audits/dobetterweb/no-document-write.js | title": {
+    "message": "Vengiama naudoti „`document.write()`“"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | columnSeverity": {
+    "message": "Rimčiausias pažeidimas"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | columnVersion": {
+    "message": "Bibliotekos versija"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | columnVuln": {
+    "message": "Pažeidimų skaičius"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | description": {
+    "message": "Kai kuriuose trečiųjų šalių scenarijuose gali būti žinomų saugos pažeidimų, kuriuos užpuolėjai gali lengvai nustatyti ir jais pasinaudoti. [Sužinokite daugiau](https://web.dev/no-vulnerable-libraries)."
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | displayValue": {
+    "message": "{itemCount,plural, =1{Aptiktas 1 pažeidimas}one{Aptiktas # pažeidimas}few{Aptikti # pažeidimai}many{Aptikta # pažeidimo}other{Aptikta # pažeidimų}}"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | failureTitle": {
+    "message": "Puslapyje yra „JavaScript“ sąsajos bibliotekų, kuriose yra žinomų saugos pažeidimų"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | rowSeverityHigh": {
+    "message": "Didelis"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | rowSeverityLow": {
+    "message": "Mažas"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | rowSeverityMedium": {
+    "message": "Vidutinis"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | title": {
+    "message": "Vengiama „JavaScript“ sąsajos bibliotekų, kuriose yra žinomų saugos pažeidimų"
+  },
+  "lighthouse-core/audits/dobetterweb/notification-on-start.js | description": {
+    "message": "Naudotojai gali būti įtarūs arba sumišę, jei svetainėse bus prašoma suteikti pranešimų leidimą be jokio konteksto. Apsvarstykite galimybę susieti užklausą su naudotojų gestais. [Sužinokite daugiau](https://web.dev/notification-on-start)."
+  },
+  "lighthouse-core/audits/dobetterweb/notification-on-start.js | failureTitle": {
+    "message": "Įkeliant puslapį pateikiama užklausa dėl pranešimų leidimo"
+  },
+  "lighthouse-core/audits/dobetterweb/notification-on-start.js | title": {
+    "message": "Įkeliant puslapį vengiama pateikti užklausą dėl pranešimų leidimo"
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | columnFailingElem": {
+    "message": "Netinkami elementai"
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | description": {
+    "message": "Neleidžiant įklijuoti slaptažodžių, pažeidžiama tinkamos saugos politika. [Sužinokite daugiau](https://web.dev/password-inputs-can-be-pasted-into)."
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | failureTitle": {
+    "message": "Naudotojams neleidžiama įklijuoti teksto į slaptažodžių laukus"
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | title": {
+    "message": "Naudotojams leidžiama įklijuoti tekstą į slaptažodžių laukus"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | columnProtocol": {
+    "message": "Protokolas"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | description": {
+    "message": "Naudodami HTTP/2 gaunate daugiau privalumų, nei naudodami HTTP/1.1, pvz., dvigubas antraštes, tankinimą ir serverio įkėlimo funkciją. [Sužinokite daugiau](https://web.dev/uses-http2)."
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 užklausa nepateikta naudojant HTTP/2}one{# užklausa nepateikta naudojant HTTP/2}few{# užklausos nepateiktos naudojant HTTP/2}many{# užklausos nepateikta naudojant HTTP/2}other{# užklausų nepateikta naudojant HTTP/2}}"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | failureTitle": {
+    "message": "Nenaudojamas HTTP/2 visuose šaltiniuose"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | title": {
+    "message": "Naudojamas HTTP/2 puslapio šaltiniuose"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-passive-event-listeners.js | description": {
+    "message": "Apsvarstykite galimybę pažymėti lietimo ir pelės ratuko sukimo įvykių apdorojimą kaip „`passive`“, kad pagerintumėte puslapio slinkimo našumą. [Sužinokite daugiau](https://web.dev/uses-passive-event-listeners)."
+  },
+  "lighthouse-core/audits/dobetterweb/uses-passive-event-listeners.js | failureTitle": {
+    "message": "Nenaudojamos pasyvios apdorojimo priemonės siekiant pagerinti slinkimo našumą"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-passive-event-listeners.js | title": {
+    "message": "Naudojamos pasyvios apdorojimo priemonės siekiant pagerinti slinkimo našumą"
+  },
+  "lighthouse-core/audits/errors-in-console.js | columnDesc": {
+    "message": "Aprašas"
+  },
+  "lighthouse-core/audits/errors-in-console.js | description": {
+    "message": "Pulte užregistruotos klaidos nurodo, kad esama neišspręstų problemų. Jos galėjo kilti nepavykus pateikti tinklo užklausų arba dėl kitų naršyklės problemų. [Sužinokite daugiau](https://web.dev/errors-in-console)"
+  },
+  "lighthouse-core/audits/errors-in-console.js | failureTitle": {
+    "message": "Naršyklės klaidos registruojamos pulte"
+  },
+  "lighthouse-core/audits/errors-in-console.js | title": {
+    "message": "Pulte neužregistruota naršyklės klaidų"
+  },
+  "lighthouse-core/audits/font-display.js | description": {
+    "message": "Pasinaudokite šriftų pateikimo CSS funkcija, kad tekstas būtų matomas naudotojui, kol įkeliami žiniatinklio šriftai. [Sužinokite daugiau](https://developers.google.com/web/updates/2016/02/font-display)."
+  },
+  "lighthouse-core/audits/font-display.js | failureTitle": {
+    "message": "Užtikrinkite, kad įkeliant žiniatinklio šriftą būtų matomas tekstas"
+  },
+  "lighthouse-core/audits/font-display.js | title": {
+    "message": "Įkeliant žiniatinklio šriftą matomas visas tekstas"
+  },
+  "lighthouse-core/audits/font-display.js | undeclaredFontURLWarning": {
+    "message": "„Lighthouse“ nepavyko automatiškai patikrinti toliau nurodyto URL šriftų pateikimo vertės: {fontURL}."
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | columnActual": {
+    "message": "Formato koeficientas (faktinis)"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | columnDisplayed": {
+    "message": "Formato koeficientas (rodomas)"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | description": {
+    "message": "Rodomo vaizdo matmenys turi atitikti natūralų formato koeficientą. [Sužinokite daugiau](https://web.dev/image-aspect-ratio)."
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | failureTitle": {
+    "message": "Rodomi vaizdai su netinkamu formato koeficientu"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | title": {
+    "message": "Rodomi vaizdai su tinkamu formato koeficientu"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | warningCompute": {
+    "message": "Netinkama vaizdo dydžio informacija: {url}"
+  },
+  "lighthouse-core/audits/installable-manifest.js | description": {
+    "message": "Naršyklės gali aktyviai raginti naudotojus pridėti jūsų programą prie pagrindinio ekrano, tai paskatintų geresnį įtraukimą. [Sužinokite daugiau](https://developers.google.com/web/tools/lighthouse/audits/install-prompt)"
+  },
+  "lighthouse-core/audits/installable-manifest.js | failureTitle": {
+    "message": "Žiniatinklio programos aprašas neatitinka diegiamumo reikalavimų."
+  },
+  "lighthouse-core/audits/installable-manifest.js | title": {
+    "message": "Žiniatinklio programos aprašas atitinka diegiamumo reikalavimus"
+  },
+  "lighthouse-core/audits/is-on-https.js | columnInsecureURL": {
+    "message": "Nesaugus URL"
+  },
+  "lighthouse-core/audits/is-on-https.js | description": {
+    "message": "Visos svetainės turėtų būti apsaugotos naudojant HTTPS, net ir tos, kuriose nėra neskelbtinų duomenų. Naudojant HTTPS įsibrovėliams neleidžiama gadinti ar pasyviai klausytis jūsų programos ir jos naudotojų komunikacijos, be to, jį privaloma naudoti HTTP/2 ir daugelyje naujų žiniatinklio platformų API. [Sužinokite daugiau](https://web.dev/is-on-https)."
+  },
+  "lighthouse-core/audits/is-on-https.js | displayValue": {
+    "message": "{itemCount,plural, =1{Rasta 1 nesaugi užklausa}one{Rasta # nesaugi užklausa}few{Rastos # nesaugios užklausos}many{Rasta # nesaugos užklausos}other{Rasta # nesaugių užklausų}}"
+  },
+  "lighthouse-core/audits/is-on-https.js | failureTitle": {
+    "message": "Nenaudojamas HTTPS"
+  },
+  "lighthouse-core/audits/is-on-https.js | title": {
+    "message": "Naudojamas HTTPS"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | description": {
+    "message": "Spartus puslapių įkėlimas mobiliojo ryšio tinkle užtikrina gerą mobiliųjų įrenginių naudotojų patirtį. [Sužinokite daugiau](https://developers.google.com/web/tools/lighthouse/audits/fast-3g)."
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | displayValueText": {
+    "message": "Laikas iki sąveikos – {timeInMs, number, seconds} sek."
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | displayValueTextWithOverride": {
+    "message": "Laikas iki sąveikos imituojamame mobiliojo ryšio tinkle – {timeInMs, number, seconds} sek."
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | explanationLoadSlow": {
+    "message": "Puslapis įkeliamas per lėtai ir nėra interaktyvus 10 sekundžių. Peržiūrėkite galimybes ir diagnostiką skiltyje „Našumas“, kad sužinotumėte, kaip pagerinti situaciją."
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | failureTitle": {
+    "message": "Puslapis įkeliamas nepakankamai sparčiai mobiliojo ryšio tinkluose"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | title": {
+    "message": "Puslapis įkeliamas pakankamai sparčiai mobiliojo ryšio tinkluose"
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | columnCategory": {
+    "message": "Kategorija"
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | description": {
+    "message": "Apsvarstykite, ar neverta sutrumpinti JS analizei, kompiliavimui ir vykdymui skiriamo laiko. Mažesnės JS naudingosios apkrovos gali padėti tai padaryti."
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | failureTitle": {
+    "message": "Pagrindinės grupės veikimo sutrumpinimas"
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | title": {
+    "message": "Sutrumpinamas pagrindinės grupės veikimas"
+  },
+  "lighthouse-core/audits/manual/pwa-cross-browser.js | description": {
+    "message": "Norint pasiekti daugiausia naudotojų, svetainės turi veikti visose svarbiausiose naršyklėse. [Sužinokite daugiau](https://developers.google.com/web/progressive-web-apps/checklist#site-works-cross-browser)"
+  },
+  "lighthouse-core/audits/manual/pwa-cross-browser.js | title": {
+    "message": "Svetainė veikia skirtingose naršyklėse"
+  },
+  "lighthouse-core/audits/manual/pwa-each-page-has-url.js | description": {
+    "message": "Užtikrinkite, kad atskiri puslapiai būtų susiejami giliąja nuoroda naudojant URL ir kad URL yra unikalūs pagal bendrinimo visuomeninėje medijoje tikslą. [Sužinokite daugiau](https://developers.google.com/web/progressive-web-apps/checklist#each-page-has-a-url)"
+  },
+  "lighthouse-core/audits/manual/pwa-each-page-has-url.js | title": {
+    "message": "Kiekvienas puslapis turi URL"
+  },
+  "lighthouse-core/audits/manual/pwa-page-transitions.js | description": {
+    "message": "Palietus aplink perėjimai turi būti sklandūs, net esant lėtam interneto ryšiui, tai labai svarbu norint suprasti našumą. [Sužinokite daugiau](https://developers.google.com/web/progressive-web-apps/checklist#page-transitions-dont-feel-like-they-block-on-the-network)"
+  },
+  "lighthouse-core/audits/manual/pwa-page-transitions.js | title": {
+    "message": "Neatrodo, kad puslapio perėjimai būtų blokuojami tinklo"
+  },
+  "lighthouse-core/audits/metrics/estimated-input-latency.js | description": {
+    "message": "Įvertinta įvesties delsa yra įvertintas laikas milisekundėmis, per kurį programa atsako į naudotojo įvestį per labiausiai užimtas puslapio įkėlimo 5 sekundes. Jei delsa ilgesnė nei 50 ms, naudotojams gali atrodyti, kad programa veikia lėtai. [Sužinokite daugiau](https://developers.google.com/web/tools/lighthouse/audits/estimated-input-latency)."
+  },
+  "lighthouse-core/audits/metrics/estimated-input-latency.js | title": {
+    "message": "Įvertinta įvesties delsa"
+  },
+  "lighthouse-core/audits/metrics/first-contentful-paint.js | description": {
+    "message": "Pirmas turiningas žymėjimas nurodo laiką, kada pažymimas pirmasis tekstas ar vaizdas. [Sužinokite daugiau](https://developers.google.com/web/tools/lighthouse/audits/first-contentful-paint)."
+  },
+  "lighthouse-core/audits/metrics/first-contentful-paint.js | title": {
+    "message": "Pirmasis „Contentful“ parodymas"
+  },
+  "lighthouse-core/audits/metrics/first-cpu-idle.js | description": {
+    "message": "Pirmas centrinio procesoriaus neaktyvumo laikas nurodo pirmą kartą, kai pagrindinė puslapio grupė buvo pakankamai neaktyvi, kad galėtų apdoroti įvestį. [Sužinokite daugiau](https://developers.google.com/web/tools/lighthouse/audits/first-interactive)."
+  },
+  "lighthouse-core/audits/metrics/first-cpu-idle.js | title": {
+    "message": "Pirmas cent. procesoriaus laisvas laikas"
+  },
+  "lighthouse-core/audits/metrics/first-meaningful-paint.js | description": {
+    "message": "Pirmasis reikšmingas parodymas nurodo, kada parodomas pagrindinis puslapio turinys. [Sužinokite daugiau](https://developers.google.com/web/tools/lighthouse/audits/first-meaningful-paint)."
+  },
+  "lighthouse-core/audits/metrics/first-meaningful-paint.js | title": {
+    "message": "Pirmasis reikšmingas parodymas"
+  },
+  "lighthouse-core/audits/metrics/interactive.js | description": {
+    "message": "Laikas iki sąveikos yra vertė, nurodanti, kiek laiko reikia, kol puslapis tampa visiškai interaktyvus. [Sužinokite daugiau](https://developers.google.com/web/tools/lighthouse/audits/consistently-interactive)."
+  },
+  "lighthouse-core/audits/metrics/interactive.js | title": {
+    "message": "Laikas iki sąveikos"
+  },
+  "lighthouse-core/audits/metrics/max-potential-fid.js | description": {
+    "message": "Didžiausia potenciali naudotojų patiriama pirmosios įvesties delsa yra ilgiausios užduoties trukmė milisekundėmis. [Sužinokite daugiau](https://developers.google.com/web/updates/2018/05/first-input-delay)."
+  },
+  "lighthouse-core/audits/metrics/max-potential-fid.js | title": {
+    "message": "Maksimali potenciali pirmosios įvesties delsa"
+  },
+  "lighthouse-core/audits/metrics/speed-index.js | description": {
+    "message": "Greičio rodiklis parodo, kaip greitai pavaizduojamas puslapio turinys. [Sužinokite daugiau](https://developers.google.com/web/tools/lighthouse/audits/speed-index)."
+  },
+  "lighthouse-core/audits/metrics/speed-index.js | title": {
+    "message": "Greičio rodiklis"
+  },
+  "lighthouse-core/audits/metrics/total-blocking-time.js | description": {
+    "message": "Visų laikotarpių tarp PTŽ ir laiko iki sąveikos suma milisekundėmis, kai užduoties atlikimo laikas viršija 50 ms."
+  },
+  "lighthouse-core/audits/metrics/total-blocking-time.js | title": {
+    "message": "Bendras blokavimo laikas"
+  },
+  "lighthouse-core/audits/network-rtt.js | description": {
+    "message": "Abipusis tinklo laikas (RTT) turi didelės įtakos našumui. Didelė RTT į šaltinį vertė nurodo, kad arčiau naudotojo esantys serveriai galėtų padidinti našumą. [Sužinokite daugiau](https://hpbn.co/primer-on-latency-and-bandwidth/)."
+  },
+  "lighthouse-core/audits/network-rtt.js | title": {
+    "message": "Abipusis tinklo laikas"
+  },
+  "lighthouse-core/audits/network-server-latency.js | description": {
+    "message": "Serverio delsa gali turėti įtakos žiniatinklio našumui. Didelė šaltinio serverio delsa nurodo, kad serveris per daug apkrautas arba mažas vidinės pusės našumas. [Sužinokite daugiau](https://hpbn.co/primer-on-web-performance/#analyzing-the-resource-waterfall)."
+  },
+  "lighthouse-core/audits/network-server-latency.js | title": {
+    "message": "Serverio vidinės pusės delsa"
+  },
+  "lighthouse-core/audits/offline-start-url.js | description": {
+    "message": "Pagalbinis „JavaScript“ failas įgalina žiniatinklio programą veikti patikimai nenuspėjamomis tinklo sąlygomis. [Sužinokite daugiau](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)"
+  },
+  "lighthouse-core/audits/offline-start-url.js | failureTitle": {
+    "message": "Kai neprisijungta prie interneto, `start_url` neatsako rodydamas klaidos kodą 200."
+  },
+  "lighthouse-core/audits/offline-start-url.js | title": {
+    "message": "Kai neprisijungta prie interneto, `start_url` atsako rodydamas klaidos kodą 200."
+  },
+  "lighthouse-core/audits/offline-start-url.js | warningCantStart": {
+    "message": "„Lighthouse“ nepavyko nuskaityti `start_url` iš aprašo. Dėl to `start_url` buvo laikomas dokumento URL. Klaidos pranešimas: „{manifestWarning}“."
+  },
+  "lighthouse-core/audits/performance-budget.js | columnOverBudget": {
+    "message": "Viršijo biudžetą"
+  },
+  "lighthouse-core/audits/performance-budget.js | description": {
+    "message": "Tinklo užklausų kiekis ir dydis neturi viršyti tikslinių verčių, nustatytų našumo biudžete. [Sužinokite daugiau](https://developers.google.com/web/tools/lighthouse/audits/budgets)."
+  },
+  "lighthouse-core/audits/performance-budget.js | requestCountOverBudget": {
+    "message": "{count,plural, =1{1 užklausa}one{# užklausa}few{# užklausos}many{# užklausos}other{# užklausų}}"
+  },
+  "lighthouse-core/audits/performance-budget.js | title": {
+    "message": "Našumo biudžetas"
+  },
+  "lighthouse-core/audits/redirects-http.js | description": {
+    "message": "Jei jau nustatėte HTTPS, būtinai peradresuokite visą HTTP srautą į HTTPS, kad visi naudotojai galėtų naudotis saugiomis žiniatinklio funkcijomis. [Sužinokite daugiau](https://developers.google.com/web/tools/lighthouse/audits/http-redirects-to-https)"
+  },
+  "lighthouse-core/audits/redirects-http.js | failureTitle": {
+    "message": "Nenukreipia HTTP srauto į HTTPS"
+  },
+  "lighthouse-core/audits/redirects-http.js | title": {
+    "message": "Nukreipia HTTP srautą į HTTPS"
+  },
+  "lighthouse-core/audits/redirects.js | description": {
+    "message": "Peradresuojant puslapio įkėlimo delsos laikas dar labiau pailgėja. [Sužinokite daugiau](https://developers.google.com/web/tools/lighthouse/audits/redirects)."
+  },
+  "lighthouse-core/audits/redirects.js | title": {
+    "message": "Venkite kelių puslapio peradresavimų"
+  },
+  "lighthouse-core/audits/resource-summary.js | description": {
+    "message": "Kad nustatytumėte puslapio išteklių kiekio ir dydžio biudžetus, pridėkite biudžeto .json failą. [Sužinokite daugiau](https://developers.google.com/web/tools/lighthouse/audits/budgets)."
+  },
+  "lighthouse-core/audits/resource-summary.js | displayValue": {
+    "message": "{requestCount,plural, =1{1 užklausa • {byteCount, number, bytes} KB}one{# užklausa • {byteCount, number, bytes} KB}few{# užklausos • {byteCount, number, bytes} KB}many{# užklausos • {byteCount, number, bytes} KB}other{# užklausų • {byteCount, number, bytes} KB}}"
+  },
+  "lighthouse-core/audits/resource-summary.js | title": {
+    "message": "Pasistenkite neteikti daug užklausų ir neperkelti daug duomenų"
+  },
+  "lighthouse-core/audits/seo/canonical.js | description": {
+    "message": "Standartizuotos nuorodos siūlo, kurį URL rodyti paieškos rezultatuose. [Sužinokite daugiau](https://web.dev/canonical)."
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationConflict": {
+    "message": "Keli nesuderinami URL ({urlList})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationDifferentDomain": {
+    "message": "Nukreipia į kitą domeną ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationInvalid": {
+    "message": "Negaliojantis URL ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationPointsElsewhere": {
+    "message": "Nukreipia į kitą „`hreflang`“ vietą ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationRelative": {
+    "message": "Susijęs URL ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationRoot": {
+    "message": "Nukreipiama į domeno šakninį URL (pagrindinį puslapį) vietoje atitinkamo turinio puslapio"
+  },
+  "lighthouse-core/audits/seo/canonical.js | failureTitle": {
+    "message": "Dokumente nėra tinkamo atributo „`rel=canonical`“"
+  },
+  "lighthouse-core/audits/seo/canonical.js | title": {
+    "message": "Dokumente yra tinkamas atributas „`rel=canonical`“"
+  },
+  "lighthouse-core/audits/seo/font-size.js | description": {
+    "message": "Mažesnis nei 12 piks. šriftas yra per mažas, kad būtų įskaitomas, todėl mobiliuosius įrenginius naudojantys lankytojai turi keisti mastelį suėmę pirštais, kad galėtų perskaityti. Pasistenkite, kad daugiau nei 60 proc. puslapio teksto šrifto dydis būtų 12 piks. arba didesnis. [Sužinokite daugiau](https://web.dev/font-size)."
+  },
+  "lighthouse-core/audits/seo/font-size.js | displayValue": {
+    "message": "{decimalProportion, number, extendedPercent} aiškaus teksto"
+  },
+  "lighthouse-core/audits/seo/font-size.js | explanationViewport": {
+    "message": "Tekstas neįskaitomas, nes nėra mobiliųjų įrenginių ekranams optimizuotos peržiūros srities metažymos"
+  },
+  "lighthouse-core/audits/seo/font-size.js | explanationWithDisclaimer": {
+    "message": "{decimalProportion, number, extendedPercent} teksto yra per mažo dydžio (atsižvelgiant į pavyzdį – {decimalProportionVisited, number, extendedPercent})."
+  },
+  "lighthouse-core/audits/seo/font-size.js | failureTitle": {
+    "message": "Dokumente naudojami neįskaitomo dydžio šriftai"
+  },
+  "lighthouse-core/audits/seo/font-size.js | title": {
+    "message": "Dokumente naudojami aiškaus dydžio šriftai"
+  },
+  "lighthouse-core/audits/seo/hreflang.js | description": {
+    "message": "„hreflang“ nuorodos nurodo paieškos varikliams, kokią puslapio versiją jie turėtų pateikti paieškos rezultatuose pagal nurodytą kalbą ar regioną. [Sužinokite daugiau](https://web.dev/hreflang)."
+  },
+  "lighthouse-core/audits/seo/hreflang.js | failureTitle": {
+    "message": "Dokumente nėra tinkamo atributo „`hreflang`“"
+  },
+  "lighthouse-core/audits/seo/hreflang.js | title": {
+    "message": "Dokumente yra tinkamas atributas „`hreflang`“"
+  },
+  "lighthouse-core/audits/seo/http-status-code.js | description": {
+    "message": "Puslapiai, kurių HTTP būsenos kodų nepavyko pateikti, gali būti indeksuojami netinkamai. [Sužinokite daugiau](https://web.dev/http-status-code)."
+  },
+  "lighthouse-core/audits/seo/http-status-code.js | failureTitle": {
+    "message": "Nepavyko pateikti puslapio HTTP būsenos kodo"
+  },
+  "lighthouse-core/audits/seo/http-status-code.js | title": {
+    "message": "Sėkmingai pateiktas puslapio HTTP būsenos kodas"
+  },
+  "lighthouse-core/audits/seo/is-crawlable.js | description": {
+    "message": "Paieškos varikliai negali įtraukti puslapių į paieškos rezultatus, jei neturi leidimo jų tikrinti. [Sužinokite daugiau](https://web.dev/is-crawable)."
+  },
+  "lighthouse-core/audits/seo/is-crawlable.js | failureTitle": {
+    "message": "Puslapio indeksavimas blokuojamas"
+  },
+  "lighthouse-core/audits/seo/is-crawlable.js | title": {
+    "message": "Puslapio indeksavimas nėra užblokuotas"
+  },
+  "lighthouse-core/audits/seo/link-text.js | description": {
+    "message": "Pagal aprašomąjį nuorodų tekstą paieškos varikliai gali lengviau suprasti jūsų turinį. [Sužinokite daugiau](https://web.dev/link-text)."
+  },
+  "lighthouse-core/audits/seo/link-text.js | displayValue": {
+    "message": "{itemCount,plural, =1{Rasta 1 nuoroda}one{Rasta # nuoroda}few{Rastos # nuorodos}many{Rasta # nuorodos}other{Rasta # nuorodų}}"
+  },
+  "lighthouse-core/audits/seo/link-text.js | failureTitle": {
+    "message": "Nuorodose nėra aprašomojo teksto"
+  },
+  "lighthouse-core/audits/seo/link-text.js | title": {
+    "message": "Nuorodose yra aprašomojo teksto"
+  },
+  "lighthouse-core/audits/seo/manual/structured-data.js | description": {
+    "message": "Paleiskite [struktūrinių duomenų bandymo įrankį](https://search.google.com/structured-data/testing-tool/) ir [„Structured Data Linter“](http://linter.structured-data.org/), kad būtų patvirtinti struktūriniai duomenys. [Sužinokite daugiau](https://web.dev/structured-data)."
+  },
+  "lighthouse-core/audits/seo/manual/structured-data.js | title": {
+    "message": "Struktūriniai duomenys tinkami"
+  },
+  "lighthouse-core/audits/seo/meta-description.js | description": {
+    "message": "Norint glaustai apibendrinti puslapio turinį, į paieškos rezultatus galima įtraukti metaaprašų. [Sužinokite daugiau](https://web.dev/meta-description)."
+  },
+  "lighthouse-core/audits/seo/meta-description.js | explanation": {
+    "message": "Nepateiktas aprašomasis tekstas."
+  },
+  "lighthouse-core/audits/seo/meta-description.js | failureTitle": {
+    "message": "Dokumente nėra metaaprašo"
+  },
+  "lighthouse-core/audits/seo/meta-description.js | title": {
+    "message": "Dokumente yra metaaprašas"
+  },
+  "lighthouse-core/audits/seo/plugins.js | description": {
+    "message": "Paieškos varikliai negali indeksuoti papildinių turinio ir daug įrenginių riboja papildinius arba jų nepalaiko. [Sužinokite daugiau](https://web.dev/plugins)."
+  },
+  "lighthouse-core/audits/seo/plugins.js | failureTitle": {
+    "message": "Dokumente naudojami papildiniai"
+  },
+  "lighthouse-core/audits/seo/plugins.js | title": {
+    "message": "Dokumente vengiama papildinių"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | description": {
+    "message": "Jei failas „robots.txt“ netinkamai suformatuotas, tikrintuvai gali nesuprasti, kaip norite tikrinti ar indeksuoti svetainę. [Sužinokite daugiau](https://web.dev/robots-txt)"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | displayValueHttpBadCode": {
+    "message": "Pateikus „robots.txt“ užklausą gauta HTTP būsena: {statusCode}"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | displayValueValidationError": {
+    "message": "{itemCount,plural, =1{Rasta 1 klaida}one{Rasta # klaida}few{Rastos # klaidos}many{Rasta # klaidos}other{Rasta # klaidų}}"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | explanation": {
+    "message": "„Lighthouse“ nepavyko atsisiųsti failo robots.txt"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | failureTitle": {
+    "message": "Failas robots.txt netinkamas"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | title": {
+    "message": "robots.txt tinkamas"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | description": {
+    "message": "Interaktyvūs elementai, pvz., mygtukai ir nuorodos, turi būti pakankamai dideli (48 x 48 piks.) ir aplink juos turi būti pakankamai vietos, kad būtų galima lengvai paliesti ir kad jie nepersidengtų su kitais elementais. [Sužinokite daugiau](https://web.dev/tap-targets)."
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | displayValue": {
+    "message": "{decimalProportion, number, percent} tinkamo dydžio liečiamų objektų"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | explanationViewportMetaNotOptimized": {
+    "message": "Liečiami objektai per maži, nes nėra mobiliųjų įrenginių ekranams optimizuotos peržiūros srities metažymos"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | failureTitle": {
+    "message": "Liečiami objektai netinkamo dydžio"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | overlappingTargetHeader": {
+    "message": "Persidengiantis objektas"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | tapTargetHeader": {
+    "message": "Liečiamas objektas"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | title": {
+    "message": "Liečiami objektai tinkamo dydžio"
+  },
+  "lighthouse-core/audits/service-worker.js | description": {
+    "message": "Pagalbinis „JavaScript“ failas – tai technologija, įgalinanti jūsų programą naudoti daug laipsniškosios žiniatinklio programos funkcijų, pvz., naudoti neprisijungus, pridėti prie pagrindinio ekrano ar naudoti iš karto gaunamus pranešimus. [Sužinokite daugiau](https://developers.google.com/web/tools/lighthouse/audits/registered-service-worker)"
+  },
+  "lighthouse-core/audits/service-worker.js | explanationBadManifest": {
+    "message": "Šis puslapis valdomas naudojant pagalbinį „JavaScript“ failą, tačiau `start_url` nerasta, nes aprašo nepavyko analizuoti kaip galiojančio JSON"
+  },
+  "lighthouse-core/audits/service-worker.js | explanationBadStartUrl": {
+    "message": "Šs puslapis valdomas naudojant pagalbinį „JavaScript“ failą, tačiau `start_url` ({startUrl}) nepatenka į pagalbinio „JavaScript“ failo aprėptį ({scopeUrl})"
+  },
+  "lighthouse-core/audits/service-worker.js | explanationNoManifest": {
+    "message": "Šis puslapis valdomas naudojant pagalbinį „JavaScript“ failą, tačiau neaptikta `start_url`, nes neįkeltas joks aprašas."
+  },
+  "lighthouse-core/audits/service-worker.js | explanationOutOfScope": {
+    "message": "Šiame pradiniame puslapyje yra vienas ar daugiau pagalbinių „JavaScript“ failų, tačiau puslapis ({pageUrl}) neįtrauktas."
+  },
+  "lighthouse-core/audits/service-worker.js | failureTitle": {
+    "message": "Neregistruojamas pagalbinis „JavaScript“ failas, naudojamas puslapiams ir `start_url` valdyti"
+  },
+  "lighthouse-core/audits/service-worker.js | title": {
+    "message": "Registruojamas pagalbinis „JavaScript“ failas, naudojamas puslapiams ir `start_url` valdyti"
+  },
+  "lighthouse-core/audits/splash-screen.js | description": {
+    "message": "Teminis prisistatymo langas užtikrina kokybišką patirtį naudotojui paleidžiant jūsų programą iš pagrindinio ekrano. [Sužinokite daugiau](https://developers.google.com/web/tools/lighthouse/audits/custom-splash-screen)"
+  },
+  "lighthouse-core/audits/splash-screen.js | failureTitle": {
+    "message": "Nesukonfigūruota tinkintam prisistatymo langui"
+  },
+  "lighthouse-core/audits/splash-screen.js | title": {
+    "message": "Sukonfigūruota tinkintam prisistatymo langui"
+  },
+  "lighthouse-core/audits/themed-omnibox.js | description": {
+    "message": "Naršyklės adreso juostos temos negalima pakeisti taip, kad atitiktų svetainės temą. [Sužinokite daugiau](https://developers.google.com/web/tools/lighthouse/audits/address-bar)"
+  },
+  "lighthouse-core/audits/themed-omnibox.js | failureTitle": {
+    "message": "Nenustatoma adreso juostos temos spalva."
+  },
+  "lighthouse-core/audits/themed-omnibox.js | title": {
+    "message": "Nustatoma adreso juostos temos spalva."
+  },
+  "lighthouse-core/audits/third-party-summary.js | columnBlockingTime": {
+    "message": "Pagrindinės grupės blokavimo laikas"
+  },
+  "lighthouse-core/audits/third-party-summary.js | columnThirdParty": {
+    "message": "Trečioji šalis"
+  },
+  "lighthouse-core/audits/third-party-summary.js | description": {
+    "message": "Trečiosios šalies kodas gali smarkiai paveikti įkėlimo našumą. Apribokite trečiosios šalies teikėjų skaičių ir pabandykite įkelti trečiosios šalies kodą, kai puslapis bus įkeltas. [Sužinokite daugiau](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/loading-third-party-javascript/)."
+  },
+  "lighthouse-core/audits/third-party-summary.js | displayValue": {
+    "message": "Trečiosios šalies kodas {timeInMs, number, milliseconds} ms užblokavo pagrindinę grupę"
+  },
+  "lighthouse-core/audits/third-party-summary.js | failureTitle": {
+    "message": "Sumažina trečiosios šalies kodo poveikį"
+  },
+  "lighthouse-core/audits/third-party-summary.js | title": {
+    "message": "Trečiosios šalies naudojimas"
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | description": {
+    "message": "Laikas iki pirmojo baito nurodo laiką, per kurį serveris atsako. [Sužinokite daugiau](https://developers.google.com/web/tools/lighthouse/audits/ttfb)."
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | displayValue": {
+    "message": "Šakninio dokumento įkėlimas užtruko {timeInMs, number, milliseconds} ms"
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | failureTitle": {
+    "message": "Serverio atsako laiko sutrumpinimas (TTFB)"
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | title": {
+    "message": "Serverio atsako laikas yra trumpas (TTFB)"
+  },
+  "lighthouse-core/audits/user-timings.js | columnDuration": {
+    "message": "Trukmė"
+  },
+  "lighthouse-core/audits/user-timings.js | columnStartTime": {
+    "message": "Pradžios laikas"
+  },
+  "lighthouse-core/audits/user-timings.js | columnType": {
+    "message": "Tipas"
+  },
+  "lighthouse-core/audits/user-timings.js | description": {
+    "message": "Apsvarstykite galimybę apdoroti programą naudojant naudotojo laiko API ir įvertinti programos realų našumą, kai naudotojas naudoja pagrindines funkcijas. [Sužinokite daugiau](https://developers.google.com/web/tools/lighthouse/audits/user-timing)."
+  },
+  "lighthouse-core/audits/user-timings.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 naudotojo laikas}one{# naudotojo laikas}few{# naudotojo laikai}many{# naudotojo laiko}other{# naudotojo laikų}}"
+  },
+  "lighthouse-core/audits/user-timings.js | title": {
+    "message": "Naudotojo laiko žymės ir matavimas"
+  },
+  "lighthouse-core/audits/uses-rel-preconnect.js | crossoriginWarning": {
+    "message": "Rasta atributo „{securityOrigin}“ išankstinio sujungimo nuoroda „<link>“, bet naršyklė jos nenaudojo. Patikrinkite, ar atributas „`crossorigin`“ naudojamas tinkamai."
+  },
+  "lighthouse-core/audits/uses-rel-preconnect.js | description": {
+    "message": "Apsvarstykite galimybę pridėti `preconnect` arba `dns-prefetch` ištekliaus nurodymus, kad ryšys su svarbiais trečiųjų šalių šaltiniais būtų užmezgamas iš anksto. [Sužinokite daugiau](https://developers.google.com/web/fundamentals/performance/resource-prioritization#preconnect)"
+  },
+  "lighthouse-core/audits/uses-rel-preconnect.js | title": {
+    "message": "Iš anksto prisijunkite prie reikiamų šaltinių"
+  },
+  "lighthouse-core/audits/uses-rel-preload.js | crossoriginWarning": {
+    "message": "Rasta atributo „{preloadURL}“ išankstinio įkėlimo nuoroda „<link>“, bet naršyklė jos nenaudojo. Patikrinkite, ar atributas „`crossorigin`“ naudojamas tinkamai."
+  },
+  "lighthouse-core/audits/uses-rel-preload.js | description": {
+    "message": "Apsvarstykite galimybę naudoti „`<link rel=preload>`“ ir suteikti pirmenybę gaunamiems ištekliams, kurių užklausos šiuo metu teikiamos vėliau įkeliant puslapį. [Sužinokite daugiau](https://developers.google.com/web/tools/lighthouse/audits/preload)."
+  },
+  "lighthouse-core/audits/uses-rel-preload.js | title": {
+    "message": "Iš anksto įkelkite svarbiausias užklausas"
+  },
+  "lighthouse-core/audits/viewport.js | description": {
+    "message": "Pridedama žyma `<meta name=\"viewport\">`, siekiant optimizuoti programą mobiliųjų ekranams. [Sužinokite daugiau](https://developers.google.com/web/tools/lighthouse/audits/has-viewport-meta-tag)"
+  },
+  "lighthouse-core/audits/viewport.js | explanationNoTag": {
+    "message": "Žyma `<meta name=\"viewport\">` nerasta"
+  },
+  "lighthouse-core/audits/viewport.js | failureTitle": {
+    "message": "Nėra žymos `<meta name=\"viewport\">` su `width` arba `initial-scale`"
+  },
+  "lighthouse-core/audits/viewport.js | title": {
+    "message": "Yra žyma `<meta name=\"viewport\">` su `width` arba `initial-scale`"
+  },
+  "lighthouse-core/audits/without-javascript.js | description": {
+    "message": "Kai „JavaScript“ išjungta, jūsų programoje turėtų būti rodoma turinio, net jei tai tik įspėjimas naudotojui, kad „JavaScript“ būtina norint naudoti programą. [Sužinokite daugiau](https://developers.google.com/web/tools/lighthouse/audits/no-js)"
+  },
+  "lighthouse-core/audits/without-javascript.js | explanation": {
+    "message": "Puslapio pagrindinėje dalyje turi būti pateikta turinio, jei scenarijus nepasiekiamas."
+  },
+  "lighthouse-core/audits/without-javascript.js | failureTitle": {
+    "message": "Atsarginis turinys neteikiamas, kai „JavaScript“ nepasiekiama"
+  },
+  "lighthouse-core/audits/without-javascript.js | title": {
+    "message": "Yra turinio, kai „JavaScript“ nepasiekiama"
+  },
+  "lighthouse-core/audits/works-offline.js | description": {
+    "message": "Jei kuriate laipsniškąją žiniatinklio programą, apsvarstykite galimybę naudoti pagalbinį „JavaScript“ failą, kad programa veiktų neprisijungus. [Sužinokite daugiau](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)"
+  },
+  "lighthouse-core/audits/works-offline.js | failureTitle": {
+    "message": "Kai neprisijungta prie interneto, dabartinis puslapis neatsako rodydamas klaidos kodą 200."
+  },
+  "lighthouse-core/audits/works-offline.js | title": {
+    "message": "Kai neprisijungta prie interneto, dabartinis puslapis atsako rodydamas klaidos kodą 200."
+  },
+  "lighthouse-core/audits/works-offline.js | warningNoLoad": {
+    "message": "Puslapis gali būti neįkeliamas neprisijungus, nes bandomasis URL ({requested}) peradresavo į {final}. Išbandykite antrąjį URL tiesiogiai."
+  },
+  "lighthouse-core/config/default-config.js | a11yAriaGroupDescription": {
+    "message": "Tai yra galimybės, skirtos pagerinti ARIA naudojimą programoje. Jos gali pagerinti pagalbinių technologijų, pvz., ekrano skaitytuvų, naudotojų patirtį."
+  },
+  "lighthouse-core/config/default-config.js | a11yAriaGroupTitle": {
+    "message": "ARIA"
+  },
+  "lighthouse-core/config/default-config.js | a11yAudioVideoGroupDescription": {
+    "message": "Tai yra galimybės, skirtos alternatyviam garso ir vaizdo įrašų turiniui teikti. Tai gali pagerinti klausos ar regėjimo sutrikimų turinčių naudotojų patirtį."
+  },
+  "lighthouse-core/config/default-config.js | a11yAudioVideoGroupTitle": {
+    "message": "Garsas ir vaizdas"
+  },
+  "lighthouse-core/config/default-config.js | a11yBestPracticesGroupDescription": {
+    "message": "Šie elementai paryškina dažniausiai naudojamus pritaikomumo geriausios praktikos metodus."
+  },
+  "lighthouse-core/config/default-config.js | a11yBestPracticesGroupTitle": {
+    "message": "Geriausia praktika"
+  },
+  "lighthouse-core/config/default-config.js | a11yCategoryDescription": {
+    "message": "Atlikę šias patikras sužinosite, kaip galite [geriau pritaikyti žiniatinklio programą](https://developers.google.com/web/fundamentals/accessibility). Automatiškai galima aptikti tik dalį pritaikomumo problemų, todėl rekomenduojama atlikti ir neautomatinį tikrinimą."
+  },
+  "lighthouse-core/config/default-config.js | a11yCategoryManualDescription": {
+    "message": "Šie elementai apima sritis, kurių automatinio bandymo įrankis negali aprėpti. Mūsų vadove sužinokite daugiau apie tai, kaip [atlikti pritaikomumo peržiūrą](https://developers.google.com/web/fundamentals/accessibility/how-to-review)."
+  },
+  "lighthouse-core/config/default-config.js | a11yCategoryTitle": {
+    "message": "Pritaikomumas"
+  },
+  "lighthouse-core/config/default-config.js | a11yColorContrastGroupDescription": {
+    "message": "Tai yra galimybės, kaip pagerinti turinio skaitomumą."
+  },
+  "lighthouse-core/config/default-config.js | a11yColorContrastGroupTitle": {
+    "message": "Kontrastas"
+  },
+  "lighthouse-core/config/default-config.js | a11yLanguageGroupDescription": {
+    "message": "Tai yra galimybės, skirtos pagerinti, kaip skirtingų lokalių naudotojai interpretuoja jūsų turinį."
+  },
+  "lighthouse-core/config/default-config.js | a11yLanguageGroupTitle": {
+    "message": "Internacionalizavimas ir lokalizavimas"
+  },
+  "lighthouse-core/config/default-config.js | a11yNamesLabelsGroupDescription": {
+    "message": "Tai yra galimybės, skirtos pagerinti programos valdiklių semantiką. Tai gali pagerinti pagalbinių technologijų, pvz., ekrano skaitytuvų, naudotojų patirtį."
+  },
+  "lighthouse-core/config/default-config.js | a11yNamesLabelsGroupTitle": {
+    "message": "Pavadinimai ir etiketės"
+  },
+  "lighthouse-core/config/default-config.js | a11yNavigationGroupDescription": {
+    "message": "Tai yra galimybės, skirtos pagerinti naršymą klaviatūra programoje."
+  },
+  "lighthouse-core/config/default-config.js | a11yNavigationGroupTitle": {
+    "message": "Naršymas"
+  },
+  "lighthouse-core/config/default-config.js | a11yTablesListsVideoGroupDescription": {
+    "message": "Tai yra galimybės, skirtos pagerinti lentelėse ar sąrašuose pateiktų duomenų skaitymą naudojant pagalbines technologijas, pvz., ekrano skaitytuvą."
+  },
+  "lighthouse-core/config/default-config.js | a11yTablesListsVideoGroupTitle": {
+    "message": "Lentelės ir sąrašai"
+  },
+  "lighthouse-core/config/default-config.js | bestPracticesCategoryTitle": {
+    "message": "Geriausios praktikos pavyzdžiai"
+  },
+  "lighthouse-core/config/default-config.js | budgetsGroupDescription": {
+    "message": "Nuo kategorijoje „Našumas“ nustatyto biudžeto priklauso svetainės našumas."
+  },
+  "lighthouse-core/config/default-config.js | budgetsGroupTitle": {
+    "message": "Biudžetai"
+  },
+  "lighthouse-core/config/default-config.js | diagnosticsGroupDescription": {
+    "message": "Daugiau informacijos apie programos našumą. Šie skaičiai [tiesiogiai nepaveikia](https://github.com/GoogleChrome/lighthouse/blob/d2ec9ffbb21de9ad1a0f86ed24575eda32c796f0/docs/scoring.md#how-are-the-scores-weighted) našumo įvertinimo."
+  },
+  "lighthouse-core/config/default-config.js | diagnosticsGroupTitle": {
+    "message": "Diagnostika"
+  },
+  "lighthouse-core/config/default-config.js | firstPaintImprovementsGroupDescription": {
+    "message": "Svarbiausias našumo rodiklis – kaip greitai taškai pateikiami ekrane. Svarbiausia metrika: pirmasis „Contentful“ parodymas, pirmasis reikšmingas parodymas"
+  },
+  "lighthouse-core/config/default-config.js | firstPaintImprovementsGroupTitle": {
+    "message": "Pirmojo parodymo patobulinimai"
+  },
+  "lighthouse-core/config/default-config.js | loadOpportunitiesGroupDescription": {
+    "message": "Pasinaudojus šiais pasiūlymais puslapis gali būti įkeliamas greičiau. Tai [tiesiogiai nepaveiks](https://github.com/GoogleChrome/lighthouse/blob/d2ec9ffbb21de9ad1a0f86ed24575eda32c796f0/docs/scoring.md#how-are-the-scores-weighted) našumo įvertinimo."
+  },
+  "lighthouse-core/config/default-config.js | loadOpportunitiesGroupTitle": {
+    "message": "Galimybės"
+  },
+  "lighthouse-core/config/default-config.js | metricGroupTitle": {
+    "message": "Metrika"
+  },
+  "lighthouse-core/config/default-config.js | overallImprovementsGroupDescription": {
+    "message": "Pagerinkite bendrą įkėlimo našumą, kad puslapis reaguotų ir būtų parengtas naudoti kuo greičiau. Svarbiausia metrika: laikas iki sąveikos, greičio rodiklis"
+  },
+  "lighthouse-core/config/default-config.js | overallImprovementsGroupTitle": {
+    "message": "Bendri patobulinimai"
+  },
+  "lighthouse-core/config/default-config.js | performanceCategoryTitle": {
+    "message": "Našumas"
+  },
+  "lighthouse-core/config/default-config.js | pwaCategoryDescription": {
+    "message": "Per šias patikras vertinami laipsniškosios žiniatinklio programos aspektai. [Sužinokite daugiau](https://developers.google.com/web/progressive-web-apps/checklist)"
+  },
+  "lighthouse-core/config/default-config.js | pwaCategoryManualDescription": {
+    "message": "Šios patikros būtinos pagal pradinį [LŽP kontrolinį sąrašą](https://developers.google.com/web/progressive-web-apps/checklist), tačiau „Lighthouse“ jų neatlieka automatiškai. Jos neturi įtakos jūsų rezultatui, tačiau svarbu, kad patvirtintumėte patys."
+  },
+  "lighthouse-core/config/default-config.js | pwaCategoryTitle": {
+    "message": "Laipsniškoji žiniatinklio programa"
+  },
+  "lighthouse-core/config/default-config.js | pwaFastReliableGroupTitle": {
+    "message": "Sparčios ir patikimos"
+  },
+  "lighthouse-core/config/default-config.js | pwaInstallableGroupTitle": {
+    "message": "Galima įdiegti"
+  },
+  "lighthouse-core/config/default-config.js | pwaOptimizedGroupTitle": {
+    "message": "Optimizuota PWA"
+  },
+  "lighthouse-core/config/default-config.js | seoCategoryDescription": {
+    "message": "Šios patikros užtikrina, kad jūsų puslapis optimizuotas paieškos variklio rezultatams reitinguoti. Yra papildomų veiksnių, galinčių paveikti paieškos reitingavimą, kurių „Lighthouse“ netikrina. [Sužinokite daugiau](https://support.google.com/webmasters/answer/35769)."
+  },
+  "lighthouse-core/config/default-config.js | seoCategoryManualDescription": {
+    "message": "Paleiskite šias papildomas patvirtinimo priemones svetainėje, kad patikrintumėte papildomus PVO geriausios praktikos metodus."
+  },
+  "lighthouse-core/config/default-config.js | seoCategoryTitle": {
+    "message": "PVO"
+  },
+  "lighthouse-core/config/default-config.js | seoContentGroupDescription": {
+    "message": "Formatuokite HTML taip, kad tikrintuvai galėtų geriau suprasti programos turinį."
+  },
+  "lighthouse-core/config/default-config.js | seoContentGroupTitle": {
+    "message": "Geriausios turinio praktikos pavyzdžiai"
+  },
+  "lighthouse-core/config/default-config.js | seoCrawlingGroupDescription": {
+    "message": "Kad programa būtų rodoma paieškos rezultatuose, tikrintuvams reikalinga prieiga prie jos."
+  },
+  "lighthouse-core/config/default-config.js | seoCrawlingGroupTitle": {
+    "message": "Tikrinimas ir indeksavimas"
+  },
+  "lighthouse-core/config/default-config.js | seoMobileGroupDescription": {
+    "message": "Įsitikinkite, kad puslapiai yra pritaikyti mobiliesiems, kad naudotojams nereikėtų suėmus artinti ar keisti mastelio norint perskaityti puslapių turinį. [Sužinokite daugiau](https://developers.google.com/search/mobile-sites/)."
+  },
+  "lighthouse-core/config/default-config.js | seoMobileGroupTitle": {
+    "message": "Pritaikyta mobiliesiems"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnCacheTTL": {
+    "message": "Talpyklos TTL"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnLocation": {
+    "message": "Vietovė"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnName": {
+    "message": "Pavadinimas"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnRequests": {
+    "message": "Užklausos"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnResourceType": {
+    "message": "Ištekliaus tipas"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnSize": {
+    "message": "Dydis"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnTimeSpent": {
+    "message": "Sugaištas laikas"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnTransferSize": {
+    "message": "Failų perkėlimo dydis"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnURL": {
+    "message": "URL"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnWastedBytes": {
+    "message": "Galima sutaupyti"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnWastedMs": {
+    "message": "Galima sutaupyti"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | displayValueByteSavings": {
+    "message": "Galima sutaupyti {wastedBytes, number, bytes} KB"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | displayValueMsSavings": {
+    "message": "Galima sutaupyti {wastedMs, number, milliseconds} ms"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | documentResourceType": {
+    "message": "Dokumentas"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | fontResourceType": {
+    "message": "Šriftas"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | imageResourceType": {
+    "message": "Vaizdas"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | mediaResourceType": {
+    "message": "Medija"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | ms": {
+    "message": "{timeInMs, number, milliseconds} ms"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | otherResourceType": {
+    "message": "Kita"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | scriptResourceType": {
+    "message": "Scenarijus"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | seconds": {
+    "message": "{timeInMs, number, seconds} sek."
+  },
+  "lighthouse-core/lib/i18n/i18n.js | stylesheetResourceType": {
+    "message": "Stiliaus failas"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | thirdPartyResourceType": {
+    "message": "Trečioji šalis"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | totalResourceType": {
+    "message": "Iš viso"
+  },
+  "lighthouse-core/lib/lh-error.js | badTraceRecording": {
+    "message": "Įkeliant puslapį kilo su pėdsako įrašymu susijusi problema. Dar kartą paleiskite „Lighthouse“. ({errorCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | criTimeout": {
+    "message": "Laukiant, kol bus inicijuotas derintuvės protokolo ryšys, baigėsi skirtasis laikas."
+  },
+  "lighthouse-core/lib/lh-error.js | didntCollectScreenshots": {
+    "message": "Įkeliant puslapį „Chrome“ nesukūrė ekrano kopijų. Užtikrinkite, kad puslapyje yra matomo turinio, tada pabandykite iš naujo paleisti „Lighthouse“. ({errorCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | dnsFailure": {
+    "message": "DNS serveriams nepavyko nustatyti pateikto domeno."
+  },
+  "lighthouse-core/lib/lh-error.js | erroredRequiredArtifact": {
+    "message": "Įvyko su reikiamo ištekliaus „{artifactName}“ rinkimo priemone susijusi klaida: {errorMessage}"
+  },
+  "lighthouse-core/lib/lh-error.js | internalChromeError": {
+    "message": "Įvyko vidinės „Chrome“ klaida. Iš naujo paleiskite „Chrome“ ir pabandykite iš naujo paleisti „Lighthouse“."
+  },
+  "lighthouse-core/lib/lh-error.js | missingRequiredArtifact": {
+    "message": "Reikiamo ištekliaus „{artifactName}“ rinkimo priemonė nebuvo paleista."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailed": {
+    "message": "„Lighthouse“ nepavyko patikimai įkelti puslapio, kurio užklausą pateikėte. Įsitikinkite, kad testuojate tinkamą URL ir kad serveris tinkamai atsako į visas užklausas."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedHung": {
+    "message": "„Lighthouse“ nepavyko patikimai įkelti URL, kurio užklausą pateikėte, nes puslapis nebeatsako."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedInsecure": {
+    "message": "Pateiktame URL nėra tinkamo saugos sertifikato: {securityMessages}"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedInterstitial": {
+    "message": "„Chrome“ neleido įkelti puslapio ir buvo parodytas tarpinis ekranas. Įsitikinkite, kad tikrinate tinkamą URL ir kad serveris tinkamai atsako į visas užklausas."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedWithDetails": {
+    "message": "„Lighthouse“ nepavyko patikimai įkelti puslapio, kurio užklausą pateikėte. Įsitikinkite, kad tikrinate tinkamą URL ir kad serveris tinkamai atsako į visas užklausas. (Išsami informacija: {errorDetails})"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedWithStatusCode": {
+    "message": "„Lighthouse“ nepavyko patikimai įkelti puslapio, kurio užklausą pateikėte. Įsitikinkite, kad tikrinate tinkamą URL ir kad serveris tinkamai atsako į visas užklausas. (Būsenos kodas: {statusCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadTookTooLong": {
+    "message": "Puslapis buvo įkeliamas per ilgai. Pasinaudokite ataskaitoje pateiktomis galimybėmis ir sumažinkite puslapio įkėlimo laiką, tada pabandykite iš naujo paleisti „Lighthouse“. ({errorCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | protocolTimeout": {
+    "message": "Laukiama, kol „DevTools“ protokolo atsakymas viršys skirtąjį laiką. (Metodas: {protocolMethod})"
+  },
+  "lighthouse-core/lib/lh-error.js | requestContentTimeout": {
+    "message": "Šaltinio turinio gavimas viršijo skirtąjį laiką"
+  },
+  "lighthouse-core/lib/lh-error.js | urlInvalid": {
+    "message": "Panašu, kad pateiktas URL netinkamas."
+  },
+  "lighthouse-core/report/html/renderer/util.js | auditGroupExpandTooltip": {
+    "message": "Rodyti patikras"
+  },
+  "lighthouse-core/report/html/renderer/util.js | crcInitialNavigation": {
+    "message": "Pradinis naršymas"
+  },
+  "lighthouse-core/report/html/renderer/util.js | crcLongestDurationLabel": {
+    "message": "Didžiausia svarbiausio kelio delsa:"
+  },
+  "lighthouse-core/report/html/renderer/util.js | errorLabel": {
+    "message": "Klaida!"
+  },
+  "lighthouse-core/report/html/renderer/util.js | errorMissingAuditInfo": {
+    "message": "Ataskaitos klaida: nėra patikros informacijos"
+  },
+  "lighthouse-core/report/html/renderer/util.js | labDataTitle": {
+    "message": "Laboratorijos duomenys"
+  },
+  "lighthouse-core/report/html/renderer/util.js | lsPerformanceCategoryDescription": {
+    "message": "[„Lighthouse“](https://developers.google.com/web/tools/lighthouse/) dabartinio puslapio analizė emuliuotame mobiliojo ryšio tinkle. Vertės yra apytikslės ir gali skirtis."
+  },
+  "lighthouse-core/report/html/renderer/util.js | manualAuditsGroupTitle": {
+    "message": "Papildomi elementai, kuriuos reikia patikrinti neautomatiškai"
+  },
+  "lighthouse-core/report/html/renderer/util.js | notApplicableAuditsGroupTitle": {
+    "message": "Netaikoma"
+  },
+  "lighthouse-core/report/html/renderer/util.js | opportunityResourceColumnLabel": {
+    "message": "Galimybė"
+  },
+  "lighthouse-core/report/html/renderer/util.js | opportunitySavingsColumnLabel": {
+    "message": "Numatomos santaupos"
+  },
+  "lighthouse-core/report/html/renderer/util.js | passedAuditsGroupTitle": {
+    "message": "Sėkmingos patikros"
+  },
+  "lighthouse-core/report/html/renderer/util.js | snippetCollapseButtonLabel": {
+    "message": "Sutraukti fragmentą"
+  },
+  "lighthouse-core/report/html/renderer/util.js | snippetExpandButtonLabel": {
+    "message": "Išplėsti fragmentą"
+  },
+  "lighthouse-core/report/html/renderer/util.js | thirdPartyResourcesLabel": {
+    "message": "Rodyti trečiųjų šalių išteklius"
+  },
+  "lighthouse-core/report/html/renderer/util.js | toplevelWarningsMessage": {
+    "message": "Paleidžiant „Lighthouse“ kilo problemų."
+  },
+  "lighthouse-core/report/html/renderer/util.js | varianceDisclaimer": {
+    "message": "Vertės yra apytikslės ir gali skirtis. Našumo įvertinimas nustatomas [tik pagal šias metrikas](https://github.com/GoogleChrome/lighthouse/blob/d2ec9ffbb21de9ad1a0f86ed24575eda32c796f0/docs/scoring.md#how-are-the-scores-weighted)."
+  },
+  "lighthouse-core/report/html/renderer/util.js | warningAuditsGroupTitle": {
+    "message": "Sėkmingos patikros, bet pateikta įspėjimų"
+  },
+  "lighthouse-core/report/html/renderer/util.js | warningHeader": {
+    "message": "Įspėjimai: "
+  },
+  "stack-packs/packs/wordpress.js | efficient_animated_content": {
+    "message": "Apsvarstykite galimybę įkelti savo GIF į paslaugą, kuri leis jį įterpti kaip HTML5 vaizdo įrašą."
+  },
+  "stack-packs/packs/wordpress.js | offscreen_images": {
+    "message": "Įdiekite [atidėtojo įkėlimo „WordPress“ papildinį](https://wordpress.org/plugins/search/lazy+load/), leidžiantį atidėti bet kokius ne ekraninius vaizdus, arba perjunkite į šią funkciją teikiančią temą. Be to, apsvarstykite galimybę naudoti [AMP papildinį](https://wordpress.org/plugins/amp/)."
+  },
+  "stack-packs/packs/wordpress.js | render_blocking_resources": {
+    "message": "Yra įvairių „WordPress“ papildinių, kuriuos naudodami galite [įterpti svarbių išteklių](https://wordpress.org/plugins/search/critical+css/) arba [atidėti mažiau svarbius šaltinius](https://wordpress.org/plugins/search/defer+css+javascript/). Atminkite, kad dėl šių papildinių teikiamo optimizavimo gali būti pažeistos jūsų temos ar papildinių funkcijos, todėl tikriausiai turėsite atlikti kodo pakeitimų."
+  },
+  "stack-packs/packs/wordpress.js | time_to_first_byte": {
+    "message": "Temos, papildiniai ir serverio specifikacijos – visa tai turi įtakos serverio atsako laikui. Galbūt vertėtų surasti geriau optimizuotą temą, atidžiai pasirinkti optimizavimo papildinį ir (arba) naujovinti serverį."
+  },
+  "stack-packs/packs/wordpress.js | total_byte_weight": {
+    "message": "Apsvarstykite galimybę rodyti ištraukas įrašų sąrašuose (pvz., naudodami daugiau elementų žymą), sumažinti nurodytame puslapyje rodomų įrašų skaičių, suskaidyti ilgus įrašus į kelis puslapius arba naudoti komentarų atidėtojo įkėlimo papildinį."
+  },
+  "stack-packs/packs/wordpress.js | unminified_css": {
+    "message": "Įvairūs [„WordPress“ papildiniai](https://wordpress.org/plugins/search/minify+css/) gali padėti svetainei sparčiau veikti sujungdami, sumažindami ar suglaudindami stilius. Be to, galbūt norėsite pasinaudoti kūrimo procesu, kad sumažintumėte iš anksto (jei tai įmanoma)."
+  },
+  "stack-packs/packs/wordpress.js | unminified_javascript": {
+    "message": "Įvairūs [„WordPress“ papildiniai](https://wordpress.org/plugins/search/minify+javascript/) gali padėti svetainei sparčiau veikti sujungdami, sumažindami ar suglaudindami scenarijus. Be to, galbūt norėsite pasinaudoti kūrimo procesu, kad sumažintumėte iš anksto (jei tai įmanoma)."
+  },
+  "stack-packs/packs/wordpress.js | unused_css_rules": {
+    "message": "Apsvarstykite galimybę sumažinti [„WordPress“ papildinių](https://wordpress.org/plugins/), įkeliančių nenaudojamą CSS kalbą jūsų puslapyje, skaičių arba juos pakeisti. Kad nustatytumėte papildinius, pridedančius nesusijusios CSS kalbos, pabandykite vykdyti [kodo aprėpties procesą](https://developers.google.com/web/updates/2017/04/devtools-release-notes#coverage) naudodami „Chrome DevTools“. Susijusią temą / papildinį galite nustatyti pagal stiliaus failo URL. Ieškokite papildinių, kurių sąraše pateikta daug stiliaus failų, kurių kodo aprėptyje yra daug raudonos spalvos. Papildinys įtraukti stiliaus failą į eilę turėtų tik tokiu atveju, jei jis tikrai naudojamas puslapyje."
+  },
+  "stack-packs/packs/wordpress.js | unused_javascript": {
+    "message": "Apsvarstykite galimybę sumažinti [„WordPress“ papildinių](https://wordpress.org/plugins/), įkeliančių nenaudojamą „JavaScript“ jūsų puslapyje, skaičių arba juos pakeisti. Kad nustatytumėte papildinius, pridedančius nesusijusios JS, pabandykite vykdyti [kodo aprėpties procesą](https://developers.google.com/web/updates/2017/04/devtools-release-notes#coverage) naudodami „Chrome DevTools“. Susijusią temą / papildinį galite nustatyti pagal scenarijaus URL. Ieškokite papildinių, kurių sąraše pateikta daug scenarijų, kurių kodo aprėptyje yra daug raudonos spalvos. Papildinys įtraukti scenarijų į eilę turėtų tik tokiu atveju, jei jis tikrai naudojamas puslapyje."
+  },
+  "stack-packs/packs/wordpress.js | uses_long_cache_ttl": {
+    "message": "Skaitykite apie [naršyklės saugojimo talpykloje funkciją sistemoje „WordPress“](https://codex.wordpress.org/WordPress_Optimization#Browser_Caching)."
+  },
+  "stack-packs/packs/wordpress.js | uses_optimized_images": {
+    "message": "Apsvarstykite galimybę naudoti [vaizdų optimizavimo „WordPress“ papildinį](https://wordpress.org/plugins/search/optimize+images/), leidžiantį suglaudinti vaizdus išlaikant kokybę."
+  },
+  "stack-packs/packs/wordpress.js | uses_responsive_images": {
+    "message": "Įkelkite vaizdus tiesiai per [medijos biblioteką](https://codex.wordpress.org/Media_Library_Screen), kad būtų pasiekiami reikiami vaizdų dydžiai, tada įterpkite juos iš medijos bibliotekos arba naudokite vaizdų valdiklį, kad užtikrintumėte, jog naudojami optimalaus dydžio vaizdai (įskaitant tuos, kurie naudojami interaktyviems atskaitos taškams). Stenkitės nenaudoti vaizdų „`Full Size`“, nebent galima naudoti tokių matmenų vaizdus. [Sužinokite daugiau](https://codex.wordpress.org/Inserting_Images_into_Posts_and_Pages#Image_Size)."
+  },
+  "stack-packs/packs/wordpress.js | uses_text_compression": {
+    "message": "Galite įgalinti teksto glaudinimą žiniatinklio serverio konfigūracijoje."
+  },
+  "stack-packs/packs/wordpress.js | uses_webp_images": {
+    "message": "Apsvarstykite galimybę naudoti [papildinį](https://wordpress.org/plugins/search/convert+webp/) arba paslaugą, kuri automatiškai konvertuotų įkeltus vaizdus į optimalius formatus."
+  }
+}
diff --git a/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/lv.json b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/lv.json
new file mode 100644
index 0000000..c56f0b7
--- /dev/null
+++ b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/lv.json
@@ -0,0 +1,1541 @@
+{
+  "lighthouse-core/audits/accessibility/accesskeys.js | description": {
+    "message": "Piekļuves atslēgas ļauj lietotājiem ātri pievērsties lapas daļai. Lai navigācija būtu pareiza, katrai piekļuves atslēgai ir jābūt unikālai. [Uzziniet vairāk](https://web.dev/accesskeys/)."
+  },
+  "lighthouse-core/audits/accessibility/accesskeys.js | failureTitle": {
+    "message": "Atribūtu `[accesskey]` vērtības nav unikālas"
+  },
+  "lighthouse-core/audits/accessibility/accesskeys.js | title": {
+    "message": "Atribūta “`[accesskey]`” vērtības ir unikālas"
+  },
+  "lighthouse-core/audits/accessibility/aria-allowed-attr.js | description": {
+    "message": "Katrs ARIA elements “`role`” atbalsta konkrētu atribūtu “`aria-*`” apakškopu. Ja tie netiek norādīti pareizi, atribūti “`aria-*`” nav derīgi. [Uzziniet vairāk](https://web.dev/aria-allowed-attr/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-allowed-attr.js | failureTitle": {
+    "message": "Atribūti `[aria-*]` neatbilst savām lomām"
+  },
+  "lighthouse-core/audits/accessibility/aria-allowed-attr.js | title": {
+    "message": "Atribūti `[aria-*]` atbilst savām lomām"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-attr.js | description": {
+    "message": "Dažām ARIA lomām ir obligāti atribūti, kas ekrāna lasītājiem norāda elementa statusu. [Uzziniet vairāk](https://web.dev/aria-required-attr/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-required-attr.js | failureTitle": {
+    "message": "Elementiem `[role]` nav visu pieprasīto atribūtu `[aria-*]`"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-attr.js | title": {
+    "message": "Visiem elementiem `[role]` ir nepieciešamie atribūti `[aria-*]`"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-children.js | description": {
+    "message": "Dažām ARIA vecāklomām ir jāietver konkrētas pakārtotās lomas, lai varētu nodrošināt pieejamības funkcijas. [Uzziniet vairāk](https://web.dev/aria-required-children/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-required-children.js | failureTitle": {
+    "message": "Trūkst elementu ar elementiem `[role]`, kuriem ir nepieciešamas konkrētas bērna lomas (`[role]`)"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-children.js | title": {
+    "message": "Elementi ar atribūtiem `[role]`, kuriem ir nepieciešamas konkrētas bērna lomas (`[role]`), ir klātesoši"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-parent.js | description": {
+    "message": "Dažām ARIA pakārtotajām lomām ir jābūt ietvertām konkrētās vecāklomās, lai varētu nodrošināt pieejamības funkcijas. [Uzziniet vairāk](https://web.dev/aria-required-parent/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-required-parent.js | failureTitle": {
+    "message": "Atribūts `[role]` neietver pieprasīto vecākelementu"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-parent.js | title": {
+    "message": "Atribūtā `[role]` ir ietverts pieprasītais vecākelements"
+  },
+  "lighthouse-core/audits/accessibility/aria-roles.js | description": {
+    "message": "ARIA lomām ir nepieciešamas derīgas vērtības, lai varētu nodrošināt pieejamības funkcijas. [Uzziniet vairāk](https://web.dev/aria-roles/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-roles.js | failureTitle": {
+    "message": "Atribūta `[role]` vērtības nav derīgas"
+  },
+  "lighthouse-core/audits/accessibility/aria-roles.js | title": {
+    "message": "Atribūta `[role]` vērtības ir derīgas"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr-value.js | description": {
+    "message": "Palīgtehnoloģijas, piemēram, ekrāna lasītāji, nevar interpretēt ARIA atribūtus ar nederīgām vērtībām. [Uzziniet vairāk](https://web.dev/aria-valid-attr-value/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr-value.js | failureTitle": {
+    "message": "Atribūtiem `[aria-*]` nav derīgu vērtību"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr-value.js | title": {
+    "message": "Atribūtiem `[aria-*]` ir derīgas vērtības"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr.js | description": {
+    "message": "Palīgtehnoloģijas, piemēram, ekrāna lasītāji, nevar interpretēt ARIA atribūtus ar nederīgiem nosaukumiem. [Uzziniet vairāk](https://web.dev/aria-valid-attr/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr.js | failureTitle": {
+    "message": "Atribūti `[aria-*]` nav derīgi vai ir kļūdaini uzrakstīti"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr.js | title": {
+    "message": "Atribūti `[aria-*]` ir derīgi un pareizi uzrakstīti"
+  },
+  "lighthouse-core/audits/accessibility/audio-caption.js | description": {
+    "message": "Izmantojot subtitrus, nedzirdīgi lietotāji vai lietotāji ar dzirdes traucējumiem var piekļūt audio elementiem, kuri nodrošina būtisku informāciju, piemēram, runātājus, sarunu saturu, kā arī citu informāciju, kas nav sarunas. [Uzziniet vairāk](https://web.dev/audio-caption/)."
+  },
+  "lighthouse-core/audits/accessibility/audio-caption.js | failureTitle": {
+    "message": "Elementos `<audio>` trūkst elementu `<track>` ar parametru `[kind=\"captions\"]`"
+  },
+  "lighthouse-core/audits/accessibility/audio-caption.js | title": {
+    "message": "Elementi `<audio>` ietver elementu `<track>` ar parametru `[kind=\"captions\"]`"
+  },
+  "lighthouse-core/audits/accessibility/axe-audit.js | failingElementsHeader": {
+    "message": "Nederīgi elementi"
+  },
+  "lighthouse-core/audits/accessibility/button-name.js | description": {
+    "message": "Ja pogai nav atbilstoša nosaukuma, ko var nolasīt ekrāna lasītāji, tad ekrāna lasītāji to atskaņo kā “Poga”. Tādējādi lietotāji, kuri izmanto ekrāna lasītājus, nesapratīs tās nozīmi. [Uzziniet vairāk](https://web.dev/button-name/)."
+  },
+  "lighthouse-core/audits/accessibility/button-name.js | failureTitle": {
+    "message": "Pogām nav piekļūstamības principiem atbilstošu nosaukumu"
+  },
+  "lighthouse-core/audits/accessibility/button-name.js | title": {
+    "message": "Pogām ir piekļūstamības principiem atbilstoši nosaukumi"
+  },
+  "lighthouse-core/audits/accessibility/bypass.js | description": {
+    "message": "Ja nodrošināsiet iespēju apiet atkārtotu saturu, tastatūras lietotāji varēs labāk pārvietoties lapā. [Uzziniet vairāk](https://web.dev/bypass/)."
+  },
+  "lighthouse-core/audits/accessibility/bypass.js | failureTitle": {
+    "message": "Lapā nav virsraksta, izlaišanas saites vai orientieru daļas"
+  },
+  "lighthouse-core/audits/accessibility/bypass.js | title": {
+    "message": "Lapā ir virsraksts, izlaišanas saite vai orientieru daļa"
+  },
+  "lighthouse-core/audits/accessibility/color-contrast.js | description": {
+    "message": "Daudziem lasītājiem ir grūti vai pat neiespējami izlasīt tekstu ar zemu kontrastu. [Uzziniet vairāk](https://web.dev/color-contrast/)."
+  },
+  "lighthouse-core/audits/accessibility/color-contrast.js | failureTitle": {
+    "message": "Fona un priekšplāna krāsu kontrasta koeficients nav pietiekams."
+  },
+  "lighthouse-core/audits/accessibility/color-contrast.js | title": {
+    "message": "Fona un priekšplāna krāsām ir pietiekams kontrasta koeficients"
+  },
+  "lighthouse-core/audits/accessibility/definition-list.js | description": {
+    "message": "Ja definīciju saraksti nav marķēti pareizi, ekrāna lasītāju atskaņotais saturs var būt mulsinošs vai neprecīzs. [Uzziniet vairāk](https://web.dev/definition-list/)."
+  },
+  "lighthouse-core/audits/accessibility/definition-list.js | failureTitle": {
+    "message": "Atribūtā `<dl>` nav ietvertas tikai pareizā secībā sakārtotas elementu `<dt>` un `<dd>` grupas, elements `<script>` vai elements `<template>`"
+  },
+  "lighthouse-core/audits/accessibility/definition-list.js | title": {
+    "message": "Atribūtā `<dl>` ir ietvertas tikai pareizā secībā sakārtotas elementu `<dt>` un `<dd>` grupas, elements `<script>` vai elements `<template>`"
+  },
+  "lighthouse-core/audits/accessibility/dlitem.js | description": {
+    "message": "Definīciju saraksta vienumiem (`<dt>` un `<dd>`) ir jābūt ietvertiem vecākelementā `<dl>`, lai ekrāna lasītāji tos varētu pareizi atskaņot. [Uzziniet vairāk](https://web.dev/dlitem/)."
+  },
+  "lighthouse-core/audits/accessibility/dlitem.js | failureTitle": {
+    "message": "Definīciju saraksta vienumi netiek apvienoti elementos `<dl>`"
+  },
+  "lighthouse-core/audits/accessibility/dlitem.js | title": {
+    "message": "Definīciju saraksta vienumi tiek apvienoti elementos `<dl>`"
+  },
+  "lighthouse-core/audits/accessibility/document-title.js | description": {
+    "message": "Nosaukums sniedz lapas kopsavilkumu ekrāna lasītāja lietotājiem, un meklētājprogrammas lietotāji ļoti paļaujas uz to, lai noteiktu, vai lapa ir atbilstoša viņu meklēšanai. [Uzziniet vairāk](https://web.dev/document-title/)."
+  },
+  "lighthouse-core/audits/accessibility/document-title.js | failureTitle": {
+    "message": "Dokumentā nav elementa `<title>`"
+  },
+  "lighthouse-core/audits/accessibility/document-title.js | title": {
+    "message": "Dokumentā ir ietverts elements `<title>`"
+  },
+  "lighthouse-core/audits/accessibility/duplicate-id.js | description": {
+    "message": "ID atribūta vērtībai ir jābūt unikālai, lai palīgtehnoloģijas neizlaistu citas instances. [Uzziniet vairāk](https://web.dev/duplicate-id/)."
+  },
+  "lighthouse-core/audits/accessibility/duplicate-id.js | failureTitle": {
+    "message": "Atribūti `[id]` lapā nav unikāli"
+  },
+  "lighthouse-core/audits/accessibility/duplicate-id.js | title": {
+    "message": "Atribūti `[id]` lapā ir unikāli"
+  },
+  "lighthouse-core/audits/accessibility/frame-title.js | description": {
+    "message": "Ekrāna lasītāji izmanto ietvaru nosaukumus, lai raksturotu ietvaru saturu. [Uzziniet vairāk](https://web.dev/frame-title/)."
+  },
+  "lighthouse-core/audits/accessibility/frame-title.js | failureTitle": {
+    "message": "Elementiem `<frame>` vai `<iframe>` nav nosaukuma"
+  },
+  "lighthouse-core/audits/accessibility/frame-title.js | title": {
+    "message": "Elementiem `<frame>` vai `<iframe>` ir nosaukums"
+  },
+  "lighthouse-core/audits/accessibility/html-has-lang.js | description": {
+    "message": "Ja lapā nav norādīts atribūts “lang”, ekrāna lasītājā tiek pieņemts, ka lapas saturs ir noklusējuma valodā, kuru lietotājs izvēlējās, iestatot ekrāna lasītāju. Ja lapas saturs nav noklusējuma valodā, iespējams, ekrāna lasītājs tekstu neatskaņos pareizi. [Uzziniet vairāk](https://web.dev/html-has-lang/)."
+  },
+  "lighthouse-core/audits/accessibility/html-has-lang.js | failureTitle": {
+    "message": "Tagam `<html>` nav derīga atribūta `[lang]`"
+  },
+  "lighthouse-core/audits/accessibility/html-has-lang.js | title": {
+    "message": "Tagam `<html>` ir atribūts `[lang]`"
+  },
+  "lighthouse-core/audits/accessibility/html-lang-valid.js | description": {
+    "message": "Ja norādīsiet derīgu [BCP 47 valodu](https://www.w3.org/International/questions/qa-choosing-language-tags#question) ), ekrāna lasītāji pareizi atskaņos tekstu. [Uzziniet vairāk](https://web.dev/html-lang-valid/)."
+  },
+  "lighthouse-core/audits/accessibility/html-lang-valid.js | failureTitle": {
+    "message": "Tagam `<html>` nav derīgas vērtības tā atribūtam `[lang]`"
+  },
+  "lighthouse-core/audits/accessibility/html-lang-valid.js | title": {
+    "message": "Elementam `<html>` ir derīga tā atribūta `[lang]` vērtība"
+  },
+  "lighthouse-core/audits/accessibility/image-alt.js | description": {
+    "message": "Informatīvajiem elementiem ir nepieciešams īss, aprakstošs alternatīvais teksts. Dekoratīvajiem elementiem alternatīvo atribūtu var atstāt tukšu. [Uzziniet vairāk](https://web.dev/image-alt/)."
+  },
+  "lighthouse-core/audits/accessibility/image-alt.js | failureTitle": {
+    "message": "Attēlu elementiem nav atribūtu `[alt]`"
+  },
+  "lighthouse-core/audits/accessibility/image-alt.js | title": {
+    "message": "Attēlu elementiem ir atribūti `[alt]`"
+  },
+  "lighthouse-core/audits/accessibility/input-image-alt.js | description": {
+    "message": "Ja attēls tiek izmantots kā poga `<input>`, alternatīvais teksts var sniegt informāciju par pogas nozīmi lietotājiem, kuri izmanto ekrāna lasītāju. [Uzziniet vairāk](https://web.dev/input-image-alt/)."
+  },
+  "lighthouse-core/audits/accessibility/input-image-alt.js | failureTitle": {
+    "message": "Elementiem `<input type=\"image\">` nav teksta `[alt]`"
+  },
+  "lighthouse-core/audits/accessibility/input-image-alt.js | title": {
+    "message": "Elementi `<input type=\"image\">` ietver tekstu `[alt]`"
+  },
+  "lighthouse-core/audits/accessibility/label.js | description": {
+    "message": "Ja norādīsiet iezīmes, palīgtehnoloģijas, piemēram, ekrāna lasītāji, varēs pareizi atskaņot veidlapu vadīklas. [Uzziniet vairāk](https://web.dev/label/)."
+  },
+  "lighthouse-core/audits/accessibility/label.js | failureTitle": {
+    "message": "Veidlapu elementiem nav saistīto iezīmju"
+  },
+  "lighthouse-core/audits/accessibility/label.js | title": {
+    "message": "Veidlapu elementiem ir saistītas iezīmes"
+  },
+  "lighthouse-core/audits/accessibility/layout-table.js | description": {
+    "message": "Tabulā, kas tiek izmantota izkārtojumam, nav ieteicams iekļaut datu elementus, piemēram, elementus “th” vai “caption”, kā arī atribūtu “summary”, jo tā var mulsināt lietotājus, kuri izmanto ekrāna lasītājus. [Uzziniet vairāk](https://web.dev/layout-table/)."
+  },
+  "lighthouse-core/audits/accessibility/layout-table.js | failureTitle": {
+    "message": "Attēlojumam paredzētajos elementos `<table>` tiek izmantots atribūts `<th>`, `<caption>` vai `[summary]`"
+  },
+  "lighthouse-core/audits/accessibility/layout-table.js | title": {
+    "message": "Attēlojumam paredzētajos elementos `<table>` netiek izmantots atribūts `<th>`, `<caption>` vai `[summary]`"
+  },
+  "lighthouse-core/audits/accessibility/link-name.js | description": {
+    "message": "Atšķirams, unikāls un aktivizējams saites teksts (un alternatīvais teksts attēliem, kas tiek izmantoti kā saites) nodrošina labākas navigācijas iespējas lietotājiem, kuri izmanto ekrāna lasītājus. [Uzziniet vairāk](https://web.dev/link-name/)."
+  },
+  "lighthouse-core/audits/accessibility/link-name.js | failureTitle": {
+    "message": "Saitēm nav atšķirama nosaukuma"
+  },
+  "lighthouse-core/audits/accessibility/link-name.js | title": {
+    "message": "Saitēm ir atšķirams nosaukums"
+  },
+  "lighthouse-core/audits/accessibility/list.js | description": {
+    "message": "Ekrāna lasītāji nolasa sarakstus īpašā veidā. Ja saraksta struktūra ir pareiza, tiek atvieglota satura atskaņošana ekrāna lasītājā. [Uzziniet vairāk](https://web.dev/list/)."
+  },
+  "lighthouse-core/audits/accessibility/list.js | failureTitle": {
+    "message": "Saraksti neietver tikai tos elementus `<li>` un skriptus, kas atbalsta elementus (`<script>` un `<template>`)"
+  },
+  "lighthouse-core/audits/accessibility/list.js | title": {
+    "message": "Saraksti ietver tikai elementus `<li>` un skriptus, kas atbalsta elementus (`<script>` un `<template>`)"
+  },
+  "lighthouse-core/audits/accessibility/listitem.js | description": {
+    "message": "Lai ekrāna lasītāji varētu pareizi atskaņot saraksta vienumus (`<li>`), tiem ir jābūt ietvertiem vecākelementos `<ul>` vai `<ol>`. [Uzziniet vairāk](https://web.dev/listitem/)."
+  },
+  "lighthouse-core/audits/accessibility/listitem.js | failureTitle": {
+    "message": "Saraksta vienumi (`<li>`) nav ietverti vecākelementos `<ul>` vai `<ol>`"
+  },
+  "lighthouse-core/audits/accessibility/listitem.js | title": {
+    "message": "Saraksta vienumi (`<li>`) ir ietverti vecākelementos `<ul>` vai `<ol>`"
+  },
+  "lighthouse-core/audits/accessibility/meta-refresh.js | description": {
+    "message": "Lietotāji negaida, ka lapa tiks automātiski atsvaidzināta, un tādējādi atkal tiks pāriets uz lapas augšdaļu. Tas var būt kaitinoši vai mulsinoši. [Uzziniet vairāk](https://web.dev/meta-refresh/)."
+  },
+  "lighthouse-core/audits/accessibility/meta-refresh.js | failureTitle": {
+    "message": "Dokumentā tiek izmantots metatags `<meta http-equiv=\"refresh\">`"
+  },
+  "lighthouse-core/audits/accessibility/meta-refresh.js | title": {
+    "message": "Dokumentā netiek izmantots metatags “`<meta http-equiv=\"refresh\">`”"
+  },
+  "lighthouse-core/audits/accessibility/meta-viewport.js | description": {
+    "message": "Ja tālummaiņa ir atspējota, lietotājiem ar redzes traucējumiem, kuri izmanto ekrāna palielinājumu, ir grūtības piekļūt tīmekļa lapas saturam. [Uzziniet vairāk](https://web.dev/meta-viewport/)."
+  },
+  "lighthouse-core/audits/accessibility/meta-viewport.js | failureTitle": {
+    "message": "Parametrs `[user-scalable=\"no\"]` tiek lietots elementā `<meta name=\"viewport\">`, vai atribūts `[maximum-scale]` ir mazāks par 5"
+  },
+  "lighthouse-core/audits/accessibility/meta-viewport.js | title": {
+    "message": "Atribūts `[user-scalable=\"no\"]` netiek izmantots elementā `<meta name=\"viewport\">`, un atribūts `[maximum-scale]` nav mazāks par 5"
+  },
+  "lighthouse-core/audits/accessibility/object-alt.js | description": {
+    "message": "Ekrāna lasītāji nevar tulkot saturu, kas nav teksts. Ja elementiem `<object>` pievienosiet alternatīvo tekstu, ekrāna lasītāji varēs lietotājiem paziņot teksta nozīmi. [Uzziniet vairāk](https://web.dev/object-alt/)."
+  },
+  "lighthouse-core/audits/accessibility/object-alt.js | failureTitle": {
+    "message": "Elementiem `<object>` nav teksta `[alt]`"
+  },
+  "lighthouse-core/audits/accessibility/object-alt.js | title": {
+    "message": "Elementi `<object>` ietver tekstu `[alt]`"
+  },
+  "lighthouse-core/audits/accessibility/tabindex.js | description": {
+    "message": "Ja vērtība ir lielāka par “0”, navigācijas secība ir noteikta. Lai gan tehniski šis risinājums ir derīgs, bieži vien tas mulsina lietotājus, kuri izmanto palīgtehnoloģijas. [Uzziniet vairāk](https://web.dev/tabindex/)."
+  },
+  "lighthouse-core/audits/accessibility/tabindex.js | failureTitle": {
+    "message": "Dažiem elementiem atribūta “`[tabindex]`” vērtība ir lielāka par 0"
+  },
+  "lighthouse-core/audits/accessibility/tabindex.js | title": {
+    "message": "Nevienam elementam nav atribūta `[tabindex]` vērtības, kas augstāka par 0"
+  },
+  "lighthouse-core/audits/accessibility/td-headers-attr.js | description": {
+    "message": "Ekrāna lasītāju funkcijas atvieglo pārvietošanos tabulās. Ja elementa `<td>` šūnās, kas izmanto atribūtu `[headers]`, ir atsauces tikai uz citām šūnām tajā pašā tabulā, tiek nodrošināta labāka pieredze lietotājiem, kuri izmanto ekrāna lasītājus. [Uzziniet vairāk](https://web.dev/td-headers-attr/)."
+  },
+  "lighthouse-core/audits/accessibility/td-headers-attr.js | failureTitle": {
+    "message": "Elementa `<table>` šūnās, kas izmanto atribūtu `[headers]`, ir atsauces uz citām šūnām tajā pašā tabulā"
+  },
+  "lighthouse-core/audits/accessibility/td-headers-attr.js | title": {
+    "message": "Elementa `<table>` šūnās, kas izmanto atribūtu `[headers]` ir atsauces tikai uz citām šūnām tajā pašā tabulā"
+  },
+  "lighthouse-core/audits/accessibility/th-has-data-cells.js | description": {
+    "message": "Ekrāna lasītāju funkcijas atvieglo pārvietošanos tabulās. Ja tabulu virsrakstos vienmēr ir atsauces uz citām šūnām, tas var nodrošināt labāku pieredzi lietotājiem, kuri izmanto ekrāna lasītājus. [Uzziniet vairāk](https://web.dev/th-has-data-cells/)."
+  },
+  "lighthouse-core/audits/accessibility/th-has-data-cells.js | failureTitle": {
+    "message": "Elementi `<th>` un elementi ar atribūtu `[role=\"columnheader\"/\"rowheader\"]` neietver to aprakstītās datu šūnas"
+  },
+  "lighthouse-core/audits/accessibility/th-has-data-cells.js | title": {
+    "message": "Elementi `<th>` un elementi ar atribūtu `[role=\"columnheader\"/\"rowheader\"]` ietver to aprakstītās datu šūnas"
+  },
+  "lighthouse-core/audits/accessibility/valid-lang.js | description": {
+    "message": "Ja elementos norādīsiet derīgu [BCP 47 valodu](https://www.w3.org/International/questions/qa-choosing-language-tags#question), ekrāna lasītājs pareizi atskaņos tekstu. [Uzziniet vairāk](https://web.dev/valid-lang/)."
+  },
+  "lighthouse-core/audits/accessibility/valid-lang.js | failureTitle": {
+    "message": "Atribūtiem `[lang]` nav derīgas vērtības"
+  },
+  "lighthouse-core/audits/accessibility/valid-lang.js | title": {
+    "message": "Atribūtiem `[lang]` ir derīga vērtība"
+  },
+  "lighthouse-core/audits/accessibility/video-caption.js | description": {
+    "message": "Ja videoklipam ir subtitri, nedzirdīgi lietotāji un lietotāji ar dzirdes traucējumiem varēs vieglāk piekļūt informācijai. [Uzziniet vairāk](https://web.dev/video-caption/)."
+  },
+  "lighthouse-core/audits/accessibility/video-caption.js | failureTitle": {
+    "message": "Elementi `<video>` neietver elementu `<track>` ar parametru `[kind=\"captions\"]`"
+  },
+  "lighthouse-core/audits/accessibility/video-caption.js | title": {
+    "message": "Elementi `<video>` ietver elementu `<track>` ar parametru `[kind=\"captions\"]`"
+  },
+  "lighthouse-core/audits/accessibility/video-description.js | description": {
+    "message": "Audio aprakstos ir noderīga, videoklipos neiekļauta informācija, piemēram, sejas izteiksmes un ainas. [Uzziniet vairāk](https://web.dev/video-description/)."
+  },
+  "lighthouse-core/audits/accessibility/video-description.js | failureTitle": {
+    "message": "Elementi `<video>` neietver elementu `<track>` ar parametru `[kind=\"description\"]`"
+  },
+  "lighthouse-core/audits/accessibility/video-description.js | title": {
+    "message": "Elementi `<video>` ietver elementu `<track>` ar parametru `[kind=\"description\"]`"
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | description": {
+    "message": "Lai iegūtu ideālu izskatu iOS ierīcē, lietotājiem pievienojot progresīvo tīmekļa lietotni sākuma ekrānam, definējiet atribūtu `apple-touch-icon`. Tam ir jānorāda uz necaurspīdīgu 192 pikseļu (vai 180 pikseļu) kvadrātveida PNG. [Uzziniet vairāk](https://developers.google.com/web/fundamentals/design-and-ux/browser-customization/)."
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | failureTitle": {
+    "message": "Netiek nodrošināts derīgs atribūts “`apple-touch-icon`”"
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | precomposedWarning": {
+    "message": "Atribūts “`apple-touch-icon-precomposed`” ir novecojis; ieteicams izmantot atribūtu “`apple-touch-icon`”."
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | title": {
+    "message": "Nodrošina derīgu atribūtu “`apple-touch-icon`”"
+  },
+  "lighthouse-core/audits/bootup-time.js | chromeExtensionsWarning": {
+    "message": "Chrome paplašinājumi negatīvi ietekmē šīs lapas ielādes veiktspēju. Mēģiniet lapas pārbaudi veikt inkognito režīmā vai no Chrome profila bez paplašinājumiem."
+  },
+  "lighthouse-core/audits/bootup-time.js | columnScriptEval": {
+    "message": "Skripta novērtēšana"
+  },
+  "lighthouse-core/audits/bootup-time.js | columnScriptParse": {
+    "message": "Skriptu parsēšana"
+  },
+  "lighthouse-core/audits/bootup-time.js | columnTotal": {
+    "message": "Kopējais centrālā procesora laiks"
+  },
+  "lighthouse-core/audits/bootup-time.js | description": {
+    "message": "Ieteicams samazināt laiku, kas tiek izmantots JS parsēšanai, kompilēšanai un izpildei. Iespējams, konstatēsiet, ka ir noderīgi izmantot mazākas JS lietderīgās slodzes. [Uzziniet vairāk](https://developers.google.com/web/tools/lighthouse/audits/bootup)."
+  },
+  "lighthouse-core/audits/bootup-time.js | failureTitle": {
+    "message": "JavaScript izpildes laika samazināšana"
+  },
+  "lighthouse-core/audits/bootup-time.js | title": {
+    "message": "JavaScript izpildes laiks"
+  },
+  "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | description": {
+    "message": "Lieli GIF attēli nav efektīvi animēta satura rādīšanai. Animācijām ieteicams izmantot MPEG4/WebM video, bet statiskiem attēliem — PNG/WebP, nevis GIF, lai samazinātu tīkla lietojumu (baitos). [Uzziniet vairāk](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/replace-animated-gifs-with-video/)."
+  },
+  "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | title": {
+    "message": "Izmantojiet video failu formātus animētam saturam"
+  },
+  "lighthouse-core/audits/byte-efficiency/offscreen-images.js | description": {
+    "message": "Lai samazinātu laiku līdz interaktivitātei, ārpus ekrāna attēlus un paslēptos attēlus ar lēnu ielādi ieteicams atlikt līdz visu svarīgo resursu ielādes pabeigšanai. [Uzziniet vairāk](https://developers.google.com/web/tools/lighthouse/audits/offscreen-images)."
+  },
+  "lighthouse-core/audits/byte-efficiency/offscreen-images.js | title": {
+    "message": "Ārpus ekrāna esošo attēlu atlikšana"
+  },
+  "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | description": {
+    "message": "Resursi bloķē jūsu lapas pirmo satura atveidojumu. Ieteicams rādīt svarīgos JS/CSS iekļautā veidā un atteikties no visiem nesvarīgajiem JS/stiliem. [Uzziniet vairāk](https://developers.google.com/web/tools/lighthouse/audits/blocking-resources)."
+  },
+  "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | title": {
+    "message": "Samaziniet resursus, kas bloķē renderēšanu"
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | description": {
+    "message": "Lielas tīkla lietderīgās slodzes izmaksā lietotājiem īstu naudu un ir cieši saistītas ar ilgu ielādes laiku. [Uzziniet vairāk](https://developers.google.com/web/tools/lighthouse/audits/network-payloads)."
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | displayValue": {
+    "message": "Kopējais lielums bija {totalBytes, number, bytes} KB."
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | failureTitle": {
+    "message": "Pārāk lielas tīkla lietderīgās slodzes nepieļaušana"
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | title": {
+    "message": "Nepieļauj pārāk lielu tīkla lietderīgo slodzi"
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-css.js | description": {
+    "message": "Samazinot CSS failus, var samazināties tīkla lietderīgā slodze. [Uzziniet vairāk](https://developers.google.com/web/tools/lighthouse/audits/minify-css)."
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-css.js | title": {
+    "message": "Samaziniet CSS"
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | description": {
+    "message": "Samazinot JavaScript failus, var samazināties lietderīgās slodzes apjomi un skriptu parsēšanas laiks. [Uzziniet vairāk](https://developers.google.com/speed/docs/insights/MinifyResources)."
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | title": {
+    "message": "JavaScript·samazināšana"
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | description": {
+    "message": "Noņemiet stila lapās kārtulas, kas nedarbojas, un atlieciet pirmajā ekrāna saturā neizmantotā CSS ielādi, lai samazinātu tīkla aktivitātes nevajadzīgi izmantoto baitu apjomu. [Uzziniet vairāk](https://developers.google.com/web/tools/lighthouse/audits/unused-css)."
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | title": {
+    "message": "Noņemt neizmantoto CSS"
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-javascript.js | description": {
+    "message": "Noņemiet neizmantoto JavaScript, lai samazinātu tīkla aktivitātes izmantoto baitu apjomu."
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-javascript.js | title": {
+    "message": "Noņemiet neizmantoto JavaScript"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | description": {
+    "message": "Iestatot ilgu kešatmiņas mūžu, lapas atkārtoti apmeklējumi varētu paātrināties. [Uzziniet vairāk](https://developers.google.com/web/tools/lighthouse/audits/cache-policy)."
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | displayValue": {
+    "message": "{itemCount,plural, =1{Atrasts 1 resurss}zero{Atrasti # resursi}one{Atrasts # resurss}other{Atrasti # resursi}}"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | failureTitle": {
+    "message": "Statisko elementu noteikšana, izmantojot efektīvu kešatmiņas politiku"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | title": {
+    "message": "Efektīvas kešatmiņas politikas izmantošana statiskiem elementiem"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | description": {
+    "message": "Optimizēti attēli tiek ielādēti ātrāk un izmanto mazāku mobilo datu apjomu. [Uzziniet vairāk](https://developers.google.com/web/tools/lighthouse/audits/optimize-images)."
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | title": {
+    "message": "Efektīva attēlu kodēšana"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | description": {
+    "message": "Rādiet atbilstoša izmēra attēlus, lai tiktu izmantots mazāks mobilo datu apjoms un tiktu uzlabots ielādes laiks. [Uzziniet vairāk](https://developers.google.com/web/tools/lighthouse/audits/oversized-images)."
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | title": {
+    "message": "Atbilstoša lieluma attēli"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | description": {
+    "message": "Lai samazinātu kopējo tīkla lietojumu (baitos), ieteicams izmantot saspiešanu (Gzip, Deflate vai Brotli). [Uzziniet vairāk](https://developers.google.com/web/tools/lighthouse/audits/text-compression)."
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | title": {
+    "message": "Iespējojiet teksta saspiešanu"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | description": {
+    "message": "Tādi attēlu formāti kā JPEG 2000, JPEG XR un WebP bieži ir veiksmīgāk saspiežami nekā PNG vai JPEG. Tas nozīmē ātrāku lejupielādi un mazāku datu patēriņu. [Uzziniet vairāk](https://developers.google.com/web/tools/lighthouse/audits/webp)."
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | title": {
+    "message": "Rādiet attēlus nākamās paaudzes formātos"
+  },
+  "lighthouse-core/audits/content-width.js | description": {
+    "message": "Ja lietotnes satura platums neatbilst skatvietas platumam, lietotne var nebūt optimizēta mobilo ierīču ekrāniem. [Uzziniet vairāk](https://developers.google.com/web/tools/lighthouse/audits/content-sized-correctly-for-viewport)."
+  },
+  "lighthouse-core/audits/content-width.js | explanation": {
+    "message": "Skatvietas izmērs ({innerWidth} px) neatbilst loga izmēram ({outerWidth} px)."
+  },
+  "lighthouse-core/audits/content-width.js | failureTitle": {
+    "message": "Satura izmērs nav pareizs, salīdzinot ar skatvietu"
+  },
+  "lighthouse-core/audits/content-width.js | title": {
+    "message": "Satura izmērs ir pareizs, salīdzinot ar skatvietu"
+  },
+  "lighthouse-core/audits/critical-request-chains.js | description": {
+    "message": "Metrika “Kritisko pieprasījumu ķēdes” tālāk parāda, kuri resursi ir ielādēti ar augstāko prioritāti. Lai uzlabotu lapas ielādi, ieteicams samazināt ķēžu garumu, samazināt resursu lejupielādes apjomu vai atlikt nevajadzīgo resursu lejupielādi. [Uzziniet vairāk](https://developers.google.com/web/tools/lighthouse/audits/critical-request-chains)."
+  },
+  "lighthouse-core/audits/critical-request-chains.js | displayValue": {
+    "message": "{itemCount,plural, =1{Atrasta 1 ķēde}zero{Atrastas # ķēdes}one{Atrasta # ķēde}other{Atrastas # ķēdes}}"
+  },
+  "lighthouse-core/audits/critical-request-chains.js | title": {
+    "message": "Kritisko pieprasījumu dziļuma samazināšana"
+  },
+  "lighthouse-core/audits/deprecations.js | columnDeprecate": {
+    "message": "Pārtraukšana/brīdinājums"
+  },
+  "lighthouse-core/audits/deprecations.js | columnLine": {
+    "message": "Rindiņa"
+  },
+  "lighthouse-core/audits/deprecations.js | description": {
+    "message": "Novecojušas saskarnes API laika gaitā tiks noņemtas no pārlūkprogrammas. [Uzziniet vairāk](https://web.dev/deprecations)."
+  },
+  "lighthouse-core/audits/deprecations.js | displayValue": {
+    "message": "{itemCount,plural, =1{Atrasts 1 brīdinājums}zero{Atrasti # brīdinājumi}one{Atrasts # brīdinājums}other{Atrasti # brīdinājumi}}"
+  },
+  "lighthouse-core/audits/deprecations.js | failureTitle": {
+    "message": "Tiek izmantotas novecojušas saskarnes API"
+  },
+  "lighthouse-core/audits/deprecations.js | title": {
+    "message": "Nav atļautas novecojušas saskarnes API"
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | description": {
+    "message": "Lietojumprogrammas kešatmiņa ir novecojusi. [Uzziniet vairāk](https://web.dev/appcache-manifest)."
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | displayValue": {
+    "message": "Atrasts parametrs “{AppCacheManifest}”"
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | failureTitle": {
+    "message": "Tiek izmantota lietojumprogrammas kešatmiņa"
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | title": {
+    "message": "Netiek izmantota lietojumprogrammas kešatmiņa"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | description": {
+    "message": "Ja norādāt DOCTYPE, pārlūkprogramma nevar pārslēgties uz saderības režīmu. [Uzziniet vairāk](https://web.dev/doctype)."
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationBadDoctype": {
+    "message": "DOCTYPE nosaukumam jābūt mazo burtu virknei “`html`”."
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationNoDoctype": {
+    "message": "Dokumentam ir jāietver DOCTYPE."
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationPublicId": {
+    "message": "Paredzamais publiskais ID būs tukša virkne."
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationSystemId": {
+    "message": "Paredzamais sistēmas ID būs tukša virkne."
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | failureTitle": {
+    "message": "Lapai trūkst HTML DOCTYPE, tāpēc tiek aktivizēts saderības režīms"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | title": {
+    "message": "Lapā ir HTML DOCTYPE"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | columnElement": {
+    "message": "Elements"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | columnStatistic": {
+    "message": "Statistikas dati"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | columnValue": {
+    "message": "Vērtība"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | description": {
+    "message": "Pārlūkprogrammas inženieri iesaka, lai lapā nebūtu vairāk par 1500 DOM elementiem. Ieteicams, lai koka dziļums nepārsniegtu 32 elementus un 60 bērnelementus/vecākelementus. Liels DOM elements var palielināt atmiņas lietojumu, radīt ilgākus [stila aprēķinus](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations) un izraisīt [izkārtojuma plūduma sakārtošanu](https://developers.google.com/speed/articles/reflow). [Uzziniet vairāk](https://web.dev/dom-size)."
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 elements}zero{# elementu}one{# elements}other{# elementi}}"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | failureTitle": {
+    "message": "Pārāk lielu DOM izmēru nepieļaušana"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | statisticDOMDepth": {
+    "message": "Maksimālais DOM dziļums"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | statisticDOMElements": {
+    "message": "DOM elementu kopskaits"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | statisticDOMWidth": {
+    "message": "Maksimālais pakārtoto elementu skaits"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | title": {
+    "message": "Nepieļauj pārāk lielus DOM izmērus"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | columnRel": {
+    "message": "Rel"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | columnTarget": {
+    "message": "Mērķis"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | description": {
+    "message": "Pievienojiet parametru `rel=\"noopener\"` vai `rel=\"noreferrer\"` jebkurām ārējām saitēm, lai uzlabotu veiktspēju un novērstu drošības ievainojamību. [Uzziniet vairāk](https://web.dev/external-anchors-use-rel-noopener)."
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | failureTitle": {
+    "message": "Saites uz savstarpējās izcelsmes galamērķiem nav drošas"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | title": {
+    "message": "Saites uz savstarpējās izcelsmes galamērķiem ir drošas"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | warning": {
+    "message": "Nevar noteikt enkura ({anchorHTML}) galamērķi. Ja to neizmantojat kā hipersaiti, apsveriet galamērķa noņemšanu (target=_blank)."
+  },
+  "lighthouse-core/audits/dobetterweb/geolocation-on-start.js | description": {
+    "message": "Lietotājus mulsina un rada neuzticību vietnes, kas pieprasa viņu atrašanās vietu bez konteksta. Tā vietā ieteicams saistīt pieprasījumu ar lietotāja darbību. [Uzziniet vairāk](https://web.dev/geolocation-on-start)."
+  },
+  "lighthouse-core/audits/dobetterweb/geolocation-on-start.js | failureTitle": {
+    "message": "Tiek pieprasīta ģeogrāfiskās atrašanās vietas noteikšanas atļauja lapas ielādei"
+  },
+  "lighthouse-core/audits/dobetterweb/geolocation-on-start.js | title": {
+    "message": "Netiek pieprasīta ģeogrāfiskās atrašanās vietas noteikšanas atļauja lapas ielādei"
+  },
+  "lighthouse-core/audits/dobetterweb/js-libraries.js | columnVersion": {
+    "message": "Versija"
+  },
+  "lighthouse-core/audits/dobetterweb/js-libraries.js | description": {
+    "message": "Šajā lapā tika noteiktas visas JavaScript priekšgalsistēmas bibliotēkas. [Uzziniet vairāk](https://web.dev/js-libraries)."
+  },
+  "lighthouse-core/audits/dobetterweb/js-libraries.js | title": {
+    "message": "Noteiktās JavaScript bibliotēkas"
+  },
+  "lighthouse-core/audits/dobetterweb/no-document-write.js | description": {
+    "message": "Lietotājiem, kuriem ir lēns savienojums, ārējie skripti, kas ir dinamiski ievadīti, izmantojot elementu “`document.write()`”, var ievērojami aizkavēt lapas ielādi. [Uzziniet vairāk](https://web.dev/no-document-write)."
+  },
+  "lighthouse-core/audits/dobetterweb/no-document-write.js | failureTitle": {
+    "message": "Tiek izmantots elements “`document.write()`”"
+  },
+  "lighthouse-core/audits/dobetterweb/no-document-write.js | title": {
+    "message": "Netiek izmantots elements “`document.write()`”"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | columnSeverity": {
+    "message": "Vislielākā nozīme"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | columnVersion": {
+    "message": "Bibliotēkas versija"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | columnVuln": {
+    "message": "Ievainojamības gadījumu skaits"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | description": {
+    "message": "Dažos trešo pušu skriptos var būt zināma drošības ievainojamība, kuras uzbrucēji viegli identificē un izmanto. [Uzziniet vairāk](https://web.dev/no-vulnerable-libraries)."
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | displayValue": {
+    "message": "{itemCount,plural, =1{Konstatēta 1 ievainojamība}zero{Konstatētas # ievainojamības}one{Konstatēta # ievainojamība}other{Konstatētas # ievainojamības}}"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | failureTitle": {
+    "message": "Ietver JavaScript priekšgalsistēmas bibliotēkas ar zināmu drošības ievainojamību"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | rowSeverityHigh": {
+    "message": "Augsts"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | rowSeverityLow": {
+    "message": "Zems"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | rowSeverityMedium": {
+    "message": "Vidējs"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | title": {
+    "message": "Nepieļauj JavaScript priekšgalsistēmas bibliotēkas ar zināmām drošības ievainojamībām"
+  },
+  "lighthouse-core/audits/dobetterweb/notification-on-start.js | description": {
+    "message": "Lietotājus mulsina un viņiem rada neuzticību vietnes, kas pieprasa sūtīt paziņojumus bez konteksta. Tā vietā ieteicams saistīt pieprasījumu ar lietotāja žestiem. [Uzziniet vairāk](https://web.dev/notification-on-start)."
+  },
+  "lighthouse-core/audits/dobetterweb/notification-on-start.js | failureTitle": {
+    "message": "Tiek pieprasīta paziņojumu atļauja lapas ielādei"
+  },
+  "lighthouse-core/audits/dobetterweb/notification-on-start.js | title": {
+    "message": "Netiek pieprasīta paziņojumu atļauja lapas ielādei"
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | columnFailingElem": {
+    "message": "Nederīgi elementi"
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | description": {
+    "message": "Paroles ielīmēšanas novēršana neatbilst labai drošības politikai. [Uzziniet vairāk](https://web.dev/password-inputs-can-be-pasted-into)."
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | failureTitle": {
+    "message": "Neļauj lietotājiem ielīmēt paroles laukos"
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | title": {
+    "message": "Ļauj lietotājiem ielīmēt paroles laukos"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | columnProtocol": {
+    "message": "Protokols"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | description": {
+    "message": "HTTP/2 piedāvā daudzas priekšrocības salīdzinājumā ar HTTP/1.1, tostarp binārās galvenes, multipleksēšanu un servera tiešu darbību (server push). [Uzziniet vairāk](https://web.dev/uses-http2)."
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 pieprasījums nav parādīts, izmantojot HTTP/2}zero{# pieprasījumi nav parādīti, izmantojot HTTP/2}one{# pieprasījums nav parādīts, izmantojot HTTP/2}other{# pieprasījumi nav parādīti, izmantojot HTTP/2}}"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | failureTitle": {
+    "message": "Netiek izmantots protokols HTTP/2 visiem tā resursiem"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | title": {
+    "message": "Tiek izmantots protokols HTTP/2 tā resursiem"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-passive-event-listeners.js | description": {
+    "message": "Llai uzlabotu savas lapas ritināšanas veiktspēju, ieteicams atzīmēt pieskārienu un peles ritentiņa notikumu uztvērējus kā “`passive`”. [Uzziniet vairāk](https://web.dev/uses-passive-event-listeners)."
+  },
+  "lighthouse-core/audits/dobetterweb/uses-passive-event-listeners.js | failureTitle": {
+    "message": "Netiek izmantoti pasīvie klausītāji, lai uzlabotu ritināšanas veiktspēju"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-passive-event-listeners.js | title": {
+    "message": "Tiek izmantoti pasīvie klausītāji, lai uzlabotu ritināšanas veiktspēju"
+  },
+  "lighthouse-core/audits/errors-in-console.js | columnDesc": {
+    "message": "Apraksts"
+  },
+  "lighthouse-core/audits/errors-in-console.js | description": {
+    "message": "Konsolē reģistrētās kļūdas norāda uz neatrisinātām problēmām. Tās var rasties no tīkla pieprasījuma kļūmēm un citām pārlūkprogrammas problēmām. [Uzzināt vairāk](https://web.dev/errors-in-console)"
+  },
+  "lighthouse-core/audits/errors-in-console.js | failureTitle": {
+    "message": "Pārlūkprogrammas kļūdas tika reģistrētas konsolē"
+  },
+  "lighthouse-core/audits/errors-in-console.js | title": {
+    "message": "Neviena pārlūkprogrammas kļūda nav reģistrēta konsolē"
+  },
+  "lighthouse-core/audits/font-display.js | description": {
+    "message": "Izmantojiet fonta rādīšanas CSS funkciju, lai lietotāji tīmekļa fontu ielādes laikā varētu redzēt tekstu. [Uzziniet vairāk](https://developers.google.com/web/updates/2016/02/font-display)."
+  },
+  "lighthouse-core/audits/font-display.js | failureTitle": {
+    "message": "Visa teksta redzamības nodrošināšana tīmekļa fonta ielādes laikā"
+  },
+  "lighthouse-core/audits/font-display.js | title": {
+    "message": "Tīmekļa fonta ielādes laikā viss teksts paliek redzams"
+  },
+  "lighthouse-core/audits/font-display.js | undeclaredFontURLWarning": {
+    "message": "Lighthouse nevarēja automātiski pārbaudīt šī URL fonta attēlojuma vērtību: {fontURL}."
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | columnActual": {
+    "message": "Malu attiecība (faktiskā)"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | columnDisplayed": {
+    "message": "Malu attiecība (attēlotā)"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | description": {
+    "message": "Attēla parādīšanas izmēriem jāatbilst dabiskajai malu attiecībai. [Uzziniet vairāk](https://web.dev/image-aspect-ratio)."
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | failureTitle": {
+    "message": "Tiek rādīti attēli ar nepareizu malu attiecību"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | title": {
+    "message": "Tiek rādīti attēli ar pareizu malu attiecību"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | warningCompute": {
+    "message": "Nederīga attēla lieluma informācija: {url}"
+  },
+  "lighthouse-core/audits/installable-manifest.js | description": {
+    "message": "Pārlūkprogrammās var aktīvi rādīt lietotājiem uzvednes ar ierosinājumu pievienot jūsu lietotni sākuma ekrānam. Tādējādi var izdoties palielināt iesaisti. [Uzziniet vairāk](https://developers.google.com/web/tools/lighthouse/audits/install-prompt)."
+  },
+  "lighthouse-core/audits/installable-manifest.js | failureTitle": {
+    "message": "Tīmekļa lietotnes manifests neatbilst instalējamības prasībām"
+  },
+  "lighthouse-core/audits/installable-manifest.js | title": {
+    "message": "Tīmekļa lietotnes manifests atbilst instalējamības prasībām"
+  },
+  "lighthouse-core/audits/is-on-https.js | columnInsecureURL": {
+    "message": "Nedrošs URL"
+  },
+  "lighthouse-core/audits/is-on-https.js | description": {
+    "message": "Visas vietnes ir jāaizsargā ar protokolu HTTPS, pat ja tajās netiek apstrādāti sensitīvi dati. HTTPS neļauj iebrucējiem manipulēt vai pasīvi uztvert sakarus starp jūsu lietotni un lietotājiem, un tas ir HTTP/2 un daudzu jaunu tīmekļa platformu saskarņu API priekšnoteikums. [Uzziniet vairāk](https://web.dev/is-on-https)."
+  },
+  "lighthouse-core/audits/is-on-https.js | displayValue": {
+    "message": "{itemCount,plural, =1{Noteikts 1 nedrošs pieprasījums}zero{Noteikti # nedroši pieprasījumi}one{Noteikts # nedrošs pieprasījums}other{Noteikti # nedroši pieprasījumi}}"
+  },
+  "lighthouse-core/audits/is-on-https.js | failureTitle": {
+    "message": "Netiek izmantots protokols HTTPS"
+  },
+  "lighthouse-core/audits/is-on-https.js | title": {
+    "message": "Tiek izmantots protokols HTTPS"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | description": {
+    "message": "Ātra lapas ielāde, izmantojot mobilo datu tīklu, nodrošina labu pieredzi mobilo ierīču lietotājiem. [Uzziniet vairāk](https://developers.google.com/web/tools/lighthouse/audits/fast-3g)."
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | displayValueText": {
+    "message": "Interaktīvais laiks: {timeInMs, number, seconds} s"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | displayValueTextWithOverride": {
+    "message": "Interaktīvs simulētā mobilajā tīklā {timeInMs, number, seconds} sekunžu laikā"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | explanationLoadSlow": {
+    "message": "Lapas ielāde ir pārāk lēna — laiks līdz interaktivitātei pārsniedz 10 sekundes. Lai uzzinātu, kā uzlabot situāciju, skatiet sadaļā “Veiktspēja” norādītās iespējas un diagnostiku."
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | failureTitle": {
+    "message": "Lapas ielāde nav pietiekami ātra mobilajos tīklos"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | title": {
+    "message": "Lapas ielāde ir pietiekami ātra mobilajos tīklos"
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | columnCategory": {
+    "message": "Kategorija"
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | description": {
+    "message": "Ieteicams samazināt laiku, kas tiek izmantots JS parsēšanai, kompilēšanai un izpildei. Iespējams, konstatēsiet, ka ir noderīgi izmantot mazākas JS lietderīgās slodzes."
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | failureTitle": {
+    "message": "Samaziniet galvenā pavediena darbu"
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | title": {
+    "message": "Galvenā pavediena darba samazināšana"
+  },
+  "lighthouse-core/audits/manual/pwa-cross-browser.js | description": {
+    "message": "Lai sasniegtu pēc iespējas vairāk lietotāju, ieteicams izstrādāt vietnes, kas darbojas visās lielākajās pārlūkprogrammās. [Uzziniet vairāk](https://developers.google.com/web/progressive-web-apps/checklist#site-works-cross-browser)."
+  },
+  "lighthouse-core/audits/manual/pwa-cross-browser.js | title": {
+    "message": "Vietne darbojas dažādās pārlūkprogrammās"
+  },
+  "lighthouse-core/audits/manual/pwa-each-page-has-url.js | description": {
+    "message": "Nodrošiniet, lai lietotāji varētu veidot un atvērt dziļās saites uz atsevišķām lapām, izmantojot URL. Turklāt URL jābūt unikāliem, lai varētu kopīgot lapas sociālajos saziņas līdzekļos. [Uzziniet vairāk](https://developers.google.com/web/progressive-web-apps/checklist#each-page-has-a-url)."
+  },
+  "lighthouse-core/audits/manual/pwa-each-page-has-url.js | title": {
+    "message": "Katrai lapai ir URL"
+  },
+  "lighthouse-core/audits/manual/pwa-page-transitions.js | description": {
+    "message": "Ieteicams, lai pārejas būtu ātras pat tad, ja tīkls ir lēns. Pāreju ātrums stipri ietekmē lietotāju priekšstatu par lietotnes veiktspēju. [Uzziniet vairāk](https://developers.google.com/web/progressive-web-apps/checklist#page-transitions-dont-feel-like-they-block-on-the-network)."
+  },
+  "lighthouse-core/audits/manual/pwa-page-transitions.js | title": {
+    "message": "Tīklā nerodas sajūta, ka lēna ielāde bloķētu pārejas starp lapām"
+  },
+  "lighthouse-core/audits/metrics/estimated-input-latency.js | description": {
+    "message": "Paredzētais ievades latentums aptuveni norāda, pēc cik ilga laika (milisekundēs) uz lietotāja ievadi reaģēs jūsu lietotne aizņemtākajā lapas ielādes 5 s periodā. Ja latentums pārsniedz 50 ms, iespējams, lietotājiem liksies, ka jūsu lietotne strādā ar traucējumiem. [Uzziniet vairāk](https://developers.google.com/web/tools/lighthouse/audits/estimated-input-latency)."
+  },
+  "lighthouse-core/audits/metrics/estimated-input-latency.js | title": {
+    "message": "Paredzētais ievades latentums"
+  },
+  "lighthouse-core/audits/metrics/first-contentful-paint.js | description": {
+    "message": "Metrika \"Pirmais satura marķējums\" atzīmē laiku, kad tiek marķēts pirmais teksts vai attēls. [Uzziniet vairāk](https://developers.google.com/web/tools/lighthouse/audits/first-contentful-paint)."
+  },
+  "lighthouse-core/audits/metrics/first-contentful-paint.js | title": {
+    "message": "Pirmais saturīgais satura atveidojums"
+  },
+  "lighthouse-core/audits/metrics/first-cpu-idle.js | description": {
+    "message": "Metrika “Pirmā CPU dīkstāve” norāda laiku, kad lapas galvenais pavediens ir kļuvis pietiekami mazs, lai varētu apstrādāt ievadi. [Uzziniet vairāk](https://developers.google.com/web/tools/lighthouse/audits/first-interactive)."
+  },
+  "lighthouse-core/audits/metrics/first-cpu-idle.js | title": {
+    "message": "Pirmā CPU dīkstāve"
+  },
+  "lighthouse-core/audits/metrics/first-meaningful-paint.js | description": {
+    "message": "Metrika “Pirmais nozīmīgais satura atveidojums” norāda, kad kļūst redzams lapas galvenais saturs. [Uzziniet vairāk](https://developers.google.com/web/tools/lighthouse/audits/first-meaningful-paint)."
+  },
+  "lighthouse-core/audits/metrics/first-meaningful-paint.js | title": {
+    "message": "Pirmais nozīmīgais satura atveidojums"
+  },
+  "lighthouse-core/audits/metrics/interactive.js | description": {
+    "message": "Laiks līdz interaktivitātei ir laika apjoms, kas nepieciešams, lai lapa kļūtu pilnībā interaktīva. [Uzziniet vairāk](https://developers.google.com/web/tools/lighthouse/audits/consistently-interactive)."
+  },
+  "lighthouse-core/audits/metrics/interactive.js | title": {
+    "message": "Laiks līdz interaktivitātei"
+  },
+  "lighthouse-core/audits/metrics/max-potential-fid.js | description": {
+    "message": "Iespējamā maksimālā pirmās ievades aizkave, ar ko jūsu lietotāji var saskarties, ir ilgākā uzdevuma ilgums milisekundēs. [Uzziniet vairāk](https://developers.google.com/web/updates/2018/05/first-input-delay)."
+  },
+  "lighthouse-core/audits/metrics/max-potential-fid.js | title": {
+    "message": "Maks. potenciālā pirmā ievades aizkave"
+  },
+  "lighthouse-core/audits/metrics/speed-index.js | description": {
+    "message": "Ātruma rādītājs norāda, cik ātri tiek parādīts lapas saturs. [Uzziniet vairāk](https://developers.google.com/web/tools/lighthouse/audits/speed-index)."
+  },
+  "lighthouse-core/audits/metrics/speed-index.js | title": {
+    "message": "Ātruma rādītājs"
+  },
+  "lighthouse-core/audits/metrics/total-blocking-time.js | description": {
+    "message": "Visu laika periodu summa (no PSM līdz “Laiks līdz interaktivitātei”), kad uzdevuma ilgums pārsniedz 50 ms (izteikts milisekundēs)."
+  },
+  "lighthouse-core/audits/metrics/total-blocking-time.js | title": {
+    "message": "Kopējais bloķēšanas laiks"
+  },
+  "lighthouse-core/audits/network-rtt.js | description": {
+    "message": "Tīkla aprites laiks (RTT) spēcīgi ietekmē veiktspēju. Ja aprites laiks uz sākumpunktu ir augsts, tas norāda, ka serveru veiktspēja, kas atrodas tuvāk lietotājam, var tikt uzlabota. [Uzziniet vairāk](https://hpbn.co/primer-on-latency-and-bandwidth/)."
+  },
+  "lighthouse-core/audits/network-rtt.js | title": {
+    "message": "Tīkla aprites laiks"
+  },
+  "lighthouse-core/audits/network-server-latency.js | description": {
+    "message": "Tīmekļa veiktspēju var ietekmēt servera latentums. Ja sākumpunkta servera latentums ir augsts, tas norāda, ka serveris ir pārslogots vai arī tam ir vāja aizmugursistēmas veiktspēja. [Uzziniet vairāk](https://hpbn.co/primer-on-web-performance/#analyzing-the-resource-waterfall)."
+  },
+  "lighthouse-core/audits/network-server-latency.js | title": {
+    "message": "Servera aizmugursistēmas latentums"
+  },
+  "lighthouse-core/audits/offline-start-url.js | description": {
+    "message": "Izmantojot pakalpojumu skriptu, varat nodrošināt uzticamu tīmekļa lietotnes darbību neparedzamos tīkla apstākļos. [Uzziniet vairāk](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)."
+  },
+  "lighthouse-core/audits/offline-start-url.js | failureTitle": {
+    "message": "`start_url` bezsaistē nereaģē ar statusa kodu 200"
+  },
+  "lighthouse-core/audits/offline-start-url.js | title": {
+    "message": "`start_url` bezsaistē reaģē ar statusa kodu 200"
+  },
+  "lighthouse-core/audits/offline-start-url.js | warningCantStart": {
+    "message": "Rīkā Lighthouse neizdevās no manifesta nolasīt `start_url`. Tāpēc tika pieņemts, ka `start_url` ir dokumenta URL. Kļūdas ziņojums: “{manifestWarning}”."
+  },
+  "lighthouse-core/audits/performance-budget.js | columnOverBudget": {
+    "message": "Pārsniegts budžets"
+  },
+  "lighthouse-core/audits/performance-budget.js | description": {
+    "message": "Saglabājiet tīkla pieprasījumu daudzumu un lielumu zem mērķiem, kas noteikti sniegtajā izpildes budžetā. [Uzziniet vairāk](https://developers.google.com/web/tools/lighthouse/audits/budgets)."
+  },
+  "lighthouse-core/audits/performance-budget.js | requestCountOverBudget": {
+    "message": "{count,plural, =1{1 pieprasījums}zero{# pieprasījumi}one{# pieprasījums}other{# pieprasījumi}}"
+  },
+  "lighthouse-core/audits/performance-budget.js | title": {
+    "message": "Izpildes budžets"
+  },
+  "lighthouse-core/audits/redirects-http.js | description": {
+    "message": "Ja HTTPS protokols jau ir iestatīts, noteikti novirziet visu HTTP datplūsmu uz HTTPS, lai visiem lietotājiem iespējotu droša tīmekļa funkcijas. [Uzziniet vairāk](https://developers.google.com/web/tools/lighthouse/audits/http-redirects-to-https)."
+  },
+  "lighthouse-core/audits/redirects-http.js | failureTitle": {
+    "message": "HTTP datplūsma netiek novirzīta uz HTTPS lapām"
+  },
+  "lighthouse-core/audits/redirects-http.js | title": {
+    "message": "HTTP datplūsma tiek novirzīta uz HTTPS lapām"
+  },
+  "lighthouse-core/audits/redirects.js | description": {
+    "message": "Novirzīšana rada papildu aizkaves pirms lapas ielādes. [Uzziniet vairāk](https://developers.google.com/web/tools/lighthouse/audits/redirects)."
+  },
+  "lighthouse-core/audits/redirects.js | title": {
+    "message": "Nepieļaujiet vairākas lapas novirzīšanas"
+  },
+  "lighthouse-core/audits/resource-summary.js | description": {
+    "message": "Lai iestatītu lapas resursu daudzuma un lieluma budžetus, pievienojiet failu budget.json. [Uzziniet vairāk](https://developers.google.com/web/tools/lighthouse/audits/budgets)."
+  },
+  "lighthouse-core/audits/resource-summary.js | displayValue": {
+    "message": "{requestCount,plural, =1{1 pieprasījums • {byteCount, number, bytes} KB}zero{# pieprasījumu • {byteCount, number, bytes} KB}one{# pieprasījums • {byteCount, number, bytes} KB}other{# pieprasījumi • {byteCount, number, bytes} KB}}"
+  },
+  "lighthouse-core/audits/resource-summary.js | title": {
+    "message": "Uzturiet nelielu pieprasījumu skaitu un mazu pārsūtīšanas failu lielumu"
+  },
+  "lighthouse-core/audits/seo/canonical.js | description": {
+    "message": "Kanoniskās saites iesaka, kurus URL rādīt meklēšanas rezultātos. [Uzziniet vairāk](https://web.dev/canonical)."
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationConflict": {
+    "message": "Vairāki konfliktējoši URL ({urlList})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationDifferentDomain": {
+    "message": "Norāda uz citu domēnu ({url})."
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationInvalid": {
+    "message": "Nederīgs URL ({url})."
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationPointsElsewhere": {
+    "message": "Norāda uz citu atribūta “`hreflang`” atrašanās vietu ({url})."
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationRelative": {
+    "message": "Atbilstošs URL ({url})."
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationRoot": {
+    "message": "Ekvivalenta satura lapas vietā norāda uz domēna saknes piekļuves URL (sākumlapu)"
+  },
+  "lighthouse-core/audits/seo/canonical.js | failureTitle": {
+    "message": "Dokumentā nav derīga atribūta “`rel=canonical`”"
+  },
+  "lighthouse-core/audits/seo/canonical.js | title": {
+    "message": "Dokumentam ir derīgs atribūts “`rel=canonical`”"
+  },
+  "lighthouse-core/audits/seo/font-size.js | description": {
+    "message": "Fonta izmērs, kas ir mazāks par 12 pikseļiem, ir pārāk mazs, lai būtu salasāms, un mobilo ierīču lietotāji ir spiesti tuvināt tekstu, lai varētu to salasīt. Centieties, lai vairāk nekā 60% lapas teksta būtu vismaz 12 pikseļu vai lielāka izmēra. [Uzziniet vairāk](https://web.dev/font-size)."
+  },
+  "lighthouse-core/audits/seo/font-size.js | displayValue": {
+    "message": "{decimalProportion, number, extendedPercent} salasāms teksts"
+  },
+  "lighthouse-core/audits/seo/font-size.js | explanationViewport": {
+    "message": "Teksts nav salasāms, jo mobilo ierīču ekrāniem nav optimizēts skatvietas metatags."
+  },
+  "lighthouse-core/audits/seo/font-size.js | explanationWithDisclaimer": {
+    "message": "{decimalProportion, number, extendedPercent} ir pārāk mazs teksta izmērs (pamatojoties uz {decimalProportionVisited, number, extendedPercent} paraugu)."
+  },
+  "lighthouse-core/audits/seo/font-size.js | failureTitle": {
+    "message": "Dokumentā netiek izmantoti salasāmi fonta izmēri"
+  },
+  "lighthouse-core/audits/seo/font-size.js | title": {
+    "message": "Dokumentā izmantoti salasāmi fonta izmēri"
+  },
+  "lighthouse-core/audits/seo/hreflang.js | description": {
+    "message": "Atribūta “hreflang” saites norāda meklētājprogrammām, kuru lapas versiju iekļaut meklēšanas rezultātu sarakstā konkrētai valodai vai reģionam. [Uzziniet vairāk](https://web.dev/hreflang)."
+  },
+  "lighthouse-core/audits/seo/hreflang.js | failureTitle": {
+    "message": "Dokumentā nav derīga atribūta “`hreflang`”"
+  },
+  "lighthouse-core/audits/seo/hreflang.js | title": {
+    "message": "Dokumentam ir derīgs atribūts “`hreflang`”"
+  },
+  "lighthouse-core/audits/seo/http-status-code.js | description": {
+    "message": "Lapas ar nesekmīgu HTTP statusa kodu var tikt indeksētas nepareizi. [Uzziniet vairāk](https://web.dev/http-status-code)."
+  },
+  "lighthouse-core/audits/seo/http-status-code.js | failureTitle": {
+    "message": "Lapai ir nesekmīgs HTTP statusa kods"
+  },
+  "lighthouse-core/audits/seo/http-status-code.js | title": {
+    "message": "Lapai ir sekmīgs HTTP statusa kods"
+  },
+  "lighthouse-core/audits/seo/is-crawlable.js | description": {
+    "message": "Meklētājprogrammas nevar iekļaut jūsu lapas meklēšanas rezultātos, ja tām nav atļaujas pārmeklēt lapas. [Uzziniet vairāk](https://web.dev/is-crawable)."
+  },
+  "lighthouse-core/audits/seo/is-crawlable.js | failureTitle": {
+    "message": "Lapā ir bloķēta indeksēšana"
+  },
+  "lighthouse-core/audits/seo/is-crawlable.js | title": {
+    "message": "Lapa ir pieejama indeksēšanai"
+  },
+  "lighthouse-core/audits/seo/link-text.js | description": {
+    "message": "Saites aprakstošais teksts palīdz meklētājprogrammām saprast jūsu saturu. [Uzziniet vairāk](https://web.dev/link-text)."
+  },
+  "lighthouse-core/audits/seo/link-text.js | displayValue": {
+    "message": "{itemCount,plural, =1{Atrasta 1 saite}zero{Atrastas # saites}one{Atrasta # saite}other{Atrastas # saites}}"
+  },
+  "lighthouse-core/audits/seo/link-text.js | failureTitle": {
+    "message": "Saitēm nav aprakstoša teksta"
+  },
+  "lighthouse-core/audits/seo/link-text.js | title": {
+    "message": "Saitēm ir aprakstošs teksts"
+  },
+  "lighthouse-core/audits/seo/manual/structured-data.js | description": {
+    "message": "Lai validētu strukturētos datus, palaidiet [strukturētu datu testēšanas rīku](https://search.google.com/structured-data/testing-tool/) un rīku [Structured Data Linter](http://linter.structured-data.org/). [Uzziniet vairāk](https://web.dev/structured-data)."
+  },
+  "lighthouse-core/audits/seo/manual/structured-data.js | title": {
+    "message": "Strukturētie dati ir derīgi"
+  },
+  "lighthouse-core/audits/seo/meta-description.js | description": {
+    "message": "Meklēšanas rezultātos var tikt iekļauti metaapraksti, lai sniegtu īsu kopsavilkumu par lapas saturu. [Uzziniet vairāk](https://web.dev/meta-description)."
+  },
+  "lighthouse-core/audits/seo/meta-description.js | explanation": {
+    "message": "Apraksta teksts ir tukšs."
+  },
+  "lighthouse-core/audits/seo/meta-description.js | failureTitle": {
+    "message": "Dokumentā nav metaapraksta"
+  },
+  "lighthouse-core/audits/seo/meta-description.js | title": {
+    "message": "Dokumentā ir metaapraksts"
+  },
+  "lighthouse-core/audits/seo/plugins.js | description": {
+    "message": "Meklētājprogrammas nevar indeksēt spraudņu saturu, un daudzās ierīcēs spraudņi ir ierobežoti vai netiek atbalstīti. [Uzziniet vairāk](https://web.dev/plugins)."
+  },
+  "lighthouse-core/audits/seo/plugins.js | failureTitle": {
+    "message": "Dokumentā tiek izmantoti spraudņi"
+  },
+  "lighthouse-core/audits/seo/plugins.js | title": {
+    "message": "Dokumentā netiek pieļauti spraudņi"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | description": {
+    "message": "Ja jūsu robots.txt fails ir nepareizi veidots, rāpuļprogrammas, iespējams, nevarēs saprast, kā vajadzētu pārmeklēt vai indeksēt tīmekļa vietni atbilstoši jūsu vēlmēm. [Uzziniet vairāk](https://web.dev/robots-txt)."
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | displayValueHttpBadCode": {
+    "message": "Atbildē uz robots.txt pieprasījumu tika atgriezts HTTP statuss {statusCode}"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | displayValueValidationError": {
+    "message": "{itemCount,plural, =1{Tika atrasta 1 kļūda}zero{Tika atrastas # kļūdas}one{Tika atrasta # kļūda}other{Tika atrastas # kļūdas}}"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | explanation": {
+    "message": "Lighthouse nevarēja ielādēt robots.txt failu"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | failureTitle": {
+    "message": "robots.txt nav derīgs"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | title": {
+    "message": "robots.txt ir derīgs"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | description": {
+    "message": "Interaktīvajiem elementiem, piemēram, pogām un saitēm, ir jābūt pietiekami lieliem (48 x 48 pikseļi), un tiem apkārt ir jābūt pietiekami daudz brīvas vietas, lai tiem varētu viegli pieskarties, neaizskarot citus elementus. [Uzziniet vairāk](https://web.dev/tap-targets)."
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | displayValue": {
+    "message": "{decimalProportion, number, percent} pieskārienu mērķu izmērs ir atbilstošs."
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | explanationViewportMetaNotOptimized": {
+    "message": "Pieskārienu mērķu izmērs ir pārāk mazs, jo mobilo ierīču ekrāniem nav optimizēts skatvietas metatags"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | failureTitle": {
+    "message": "Pieskārienu mērķi nav atbilstoša izmēra"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | overlappingTargetHeader": {
+    "message": "Mērķis, kas pārklājas"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | tapTargetHeader": {
+    "message": "Pieskārienu mērķis"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | title": {
+    "message": "Pieskārienu mērķi ir pietiekami liela izmēra"
+  },
+  "lighthouse-core/audits/service-worker.js | description": {
+    "message": "Pakalpojuma skripts ir tehnoloģija, kas palīdz nodrošināt daudzas progresīvo tīmekļa lietotņu funkcijas, piemēram, lietotnes izmantošanu bezsaistē, pievienošanu sākuma ekrānam un informatīvos paziņojumus. [Uzziniet vairāk](https://developers.google.com/web/tools/lighthouse/audits/registered-service-worker)."
+  },
+  "lighthouse-core/audits/service-worker.js | explanationBadManifest": {
+    "message": "Lapu kontrolē pakalpojumu skripts, taču netika atrasts `start_url`, jo neizdevās analizēt manifestu kā derīgu JSON failu"
+  },
+  "lighthouse-core/audits/service-worker.js | explanationBadStartUrl": {
+    "message": "Lapu kontrolē pakalpojumu skripts, taču vietrādis URL `start_url` ({startUrl}) nav ietverts pakalpojumu skripta tvērumā ({scopeUrl})"
+  },
+  "lighthouse-core/audits/service-worker.js | explanationNoManifest": {
+    "message": "Lapu kontrolē pakalpojumu skripts, taču netika atrasts `start_url`, jo manifests netika ienests."
+  },
+  "lighthouse-core/audits/service-worker.js | explanationOutOfScope": {
+    "message": "Šim sākumpunktam ir viens vai vairāki pakalpojumu skripti, taču attiecīgā lapa ({pageUrl}) nav tvērumā."
+  },
+  "lighthouse-core/audits/service-worker.js | failureTitle": {
+    "message": "Nav reģistrēts pakalpojumu skripts, kas kontrolētu lapu un `start_url`"
+  },
+  "lighthouse-core/audits/service-worker.js | title": {
+    "message": "Ir reģistrēts pakalpojumu skripts, kas kontrolē lapu un `start_url`"
+  },
+  "lighthouse-core/audits/splash-screen.js | description": {
+    "message": "Uzplaiksnījuma ekrāns ar piemērotu motīvu nodrošina labu pieredzi, lietotājiem palaižot lietotni no sākuma ekrāna. [Uzziniet vairāk](https://developers.google.com/web/tools/lighthouse/audits/custom-splash-screen)."
+  },
+  "lighthouse-core/audits/splash-screen.js | failureTitle": {
+    "message": "Nav konfigurēta ar pielāgotu uzplaiksnījuma ekrānu"
+  },
+  "lighthouse-core/audits/splash-screen.js | title": {
+    "message": "Konfigurēta ar pielāgotu uzplaiksnījuma ekrānu"
+  },
+  "lighthouse-core/audits/themed-omnibox.js | description": {
+    "message": "Pārlūkprogrammas adreses joslu var noformēt atbilstoši jūsu vietnes motīvam. [Uzziniet vairāk](https://developers.google.com/web/tools/lighthouse/audits/address-bar)."
+  },
+  "lighthouse-core/audits/themed-omnibox.js | failureTitle": {
+    "message": "Lapa neiestata adreses joslas motīva krāsu."
+  },
+  "lighthouse-core/audits/themed-omnibox.js | title": {
+    "message": "Lapa iestata adreses joslas motīva krāsu."
+  },
+  "lighthouse-core/audits/third-party-summary.js | columnBlockingTime": {
+    "message": "Galvenā pavediena bloķēšanas laiks"
+  },
+  "lighthouse-core/audits/third-party-summary.js | columnThirdParty": {
+    "message": "Trešā puse"
+  },
+  "lighthouse-core/audits/third-party-summary.js | description": {
+    "message": "Trešās puses kods var ievērojami ietekmēt ielādes veiktspēju. Ierobežojiet lieko trešo pušu pakalpojumu sniedzēju skaitu un mēģiniet ielādēt trešās puses kodu pēc tam, kad jūsu lapa būs ielādēta. [Uzziniet vairāk](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/loading-third-party-javascript/)."
+  },
+  "lighthouse-core/audits/third-party-summary.js | displayValue": {
+    "message": "Trešās puses kods bloķēja galveno pavedienu uz {timeInMs, number, milliseconds} ms"
+  },
+  "lighthouse-core/audits/third-party-summary.js | failureTitle": {
+    "message": "Samaziniet trešo pušu koda ietekmi"
+  },
+  "lighthouse-core/audits/third-party-summary.js | title": {
+    "message": "Trešo pušu lietojums"
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | description": {
+    "message": "Metrika “Laiks līdz pirmajam baitam” norāda laiku, kad jūsu serveris nosūta atbildi. [Uzziniet vairāk](https://developers.google.com/web/tools/lighthouse/audits/ttfb)."
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | displayValue": {
+    "message": "Saknes dokumentam nepieciešamais laiks: {timeInMs, number, milliseconds} ms"
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | failureTitle": {
+    "message": "Servera atbildes laika samazināšana (TTFB)"
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | title": {
+    "message": "Servera atbildes laiks ir mazs (TTFB)"
+  },
+  "lighthouse-core/audits/user-timings.js | columnDuration": {
+    "message": "Ilgums"
+  },
+  "lighthouse-core/audits/user-timings.js | columnStartTime": {
+    "message": "Sākuma laiks"
+  },
+  "lighthouse-core/audits/user-timings.js | columnType": {
+    "message": "Veids"
+  },
+  "lighthouse-core/audits/user-timings.js | description": {
+    "message": "Ieteicams pievienot lietotnei “Lietotāja laika API”, lai noteiktu lietotnes aktuālo veiktspēju lietotāju pamata darbības laikā. [Uzziniet vairāk](https://developers.google.com/web/tools/lighthouse/audits/user-timing)."
+  },
+  "lighthouse-core/audits/user-timings.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 lietotāja laiks}zero{# lietotāju laiks}one{# lietotāja laiks}other{# lietotāju laiks}}"
+  },
+  "lighthouse-core/audits/user-timings.js | title": {
+    "message": "Lietotāju laika atzīmes un mērījumi"
+  },
+  "lighthouse-core/audits/uses-rel-preconnect.js | crossoriginWarning": {
+    "message": "Elementam “{securityOrigin}” tika atrasta iepriekšējas pieslēgšanās parametrs <link>, taču pārlūkprogramma to neizmantoja. Pārbaudiet, vai pareizi izmantojat atribūtu “`crossorigin`”."
+  },
+  "lighthouse-core/audits/uses-rel-preconnect.js | description": {
+    "message": "Ieteicams pievienot “`preconnect`” vai “`dns-prefetch`” resursa norādes, lai savlaicīgi izveidotu savienojumus ar svarīgiem trešo pušu sākumpunktiem. [Uzziniet vairāk](https://developers.google.com/web/fundamentals/performance/resource-prioritization#preconnect)."
+  },
+  "lighthouse-core/audits/uses-rel-preconnect.js | title": {
+    "message": "Veiciet iepriekšēju pieslēgšanu obligātajiem sākumpunktiem"
+  },
+  "lighthouse-core/audits/uses-rel-preload.js | crossoriginWarning": {
+    "message": "Saitei “{preloadURL}” tika atrasts iepriekšējas ielādes parametrs <link>, taču pārlūkprogramma to neizmantoja. Pārbaudiet, vai pareizi izmantojat atribūtu “`crossorigin`”."
+  },
+  "lighthouse-core/audits/uses-rel-preload.js | description": {
+    "message": "Ieteicams izmantot atribūtu `<link rel=preload>`, lai noteiktu prioritāti tādu resursu iegūšanai, kas pašlaik lapas ielādē tiek pieprasīti vēlāk. [Uzziniet vairāk](https://developers.google.com/web/tools/lighthouse/audits/preload)."
+  },
+  "lighthouse-core/audits/uses-rel-preload.js | title": {
+    "message": "Veiciet svarīgāko pieprasījumu iepriekšēju ielādi"
+  },
+  "lighthouse-core/audits/viewport.js | description": {
+    "message": "Pievienojiet tagu `<meta name=\"viewport\">`, lai optimizētu lietotni mobilo ierīču ekrāniem. [Uzziniet vairāk](https://developers.google.com/web/tools/lighthouse/audits/has-viewport-meta-tag)."
+  },
+  "lighthouse-core/audits/viewport.js | explanationNoTag": {
+    "message": "Netika atrasts tags `<meta name=\"viewport\">`"
+  },
+  "lighthouse-core/audits/viewport.js | failureTitle": {
+    "message": "Nav taga `<meta name=\"viewport\">` ar `width` vai `initial-scale`"
+  },
+  "lighthouse-core/audits/viewport.js | title": {
+    "message": "Ir tags `<meta name=\"viewport\">` ar `width` vai `initial-scale`"
+  },
+  "lighthouse-core/audits/without-javascript.js | description": {
+    "message": "Ja JavaScript ir atspējots, lietotnē jāparāda zināms saturs — kaut vai tikai brīdinājums, ka lietotnes izmantošanai nepieciešams JavaScript. [Uzziniet vairāk](https://developers.google.com/web/tools/lighthouse/audits/no-js)."
+  },
+  "lighthouse-core/audits/without-javascript.js | explanation": {
+    "message": "Ja lapas skripti nav pieejami, lapas pamattekstā jātiek vismaz daļēji attēlotam saturam."
+  },
+  "lighthouse-core/audits/without-javascript.js | failureTitle": {
+    "message": "Ja JavaScript nav pieejams, netiek sniegts atkāpšanās saturs"
+  },
+  "lighthouse-core/audits/without-javascript.js | title": {
+    "message": "Ja JavaScript nav pieejams, lapas saturs zināmā mērā tiek parādīts"
+  },
+  "lighthouse-core/audits/works-offline.js | description": {
+    "message": "Ja izstrādājat progresīvo tīmekļa lietotni, apsveriet iespēju izmantot pakalpojumu skriptu, lai lietotne varētu darboties bezsaistē. [Uzziniet vairāk](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)."
+  },
+  "lighthouse-core/audits/works-offline.js | failureTitle": {
+    "message": "Pašreizējā lapa bezsaistē nereaģē ar statusa kodu 200"
+  },
+  "lighthouse-core/audits/works-offline.js | title": {
+    "message": "Pašreizējā lapa bezsaistē reaģē ar statusa kodu 200"
+  },
+  "lighthouse-core/audits/works-offline.js | warningNoLoad": {
+    "message": "Iespējams, lapa bezsaistē netiek ielādēta, jo tika veikta novirzīšana no jūsu testa URL ({requested}) uz \"{final}\". Mēģiniet tieši testēt otro URL."
+  },
+  "lighthouse-core/config/default-config.js | a11yAriaGroupDescription": {
+    "message": "Šie ieteikumi ļauj uzlabot ARIA lietojumu jūsu lietojumprogrammā. Tādējādi varat uzlabot pieredzi lietotājiem, kuri izmanto palīgtehnoloģijas, piemēram, ekrāna lasītājus."
+  },
+  "lighthouse-core/config/default-config.js | a11yAriaGroupTitle": {
+    "message": "ARIA"
+  },
+  "lighthouse-core/config/default-config.js | a11yAudioVideoGroupDescription": {
+    "message": "Šie ieteikumi ļauj nodrošināt papildu audio vai video saturu. Tādējādi var uzlabot pieredzi lietotājiem ar dzirdes vai redzes traucējumiem."
+  },
+  "lighthouse-core/config/default-config.js | a11yAudioVideoGroupTitle": {
+    "message": "Audio un video"
+  },
+  "lighthouse-core/config/default-config.js | a11yBestPracticesGroupDescription": {
+    "message": "Šie vienumi parāda izplatītas pieejamības paraugprakses."
+  },
+  "lighthouse-core/config/default-config.js | a11yBestPracticesGroupTitle": {
+    "message": "Paraugprakse"
+  },
+  "lighthouse-core/config/default-config.js | a11yCategoryDescription": {
+    "message": "Šīs atzīmes parāda iespējas [uzlabot jūsu tīmekļa lietotnes pieejamību](https://developers.google.com/web/fundamentals/accessibility). Automātiski var noteikt tikai pieejamības problēmu apakškopu, tāpēc ir ieteicama arī manuālā testēšana."
+  },
+  "lighthouse-core/config/default-config.js | a11yCategoryManualDescription": {
+    "message": "Šie vienumi norāda uz vietām, kurām automātiskais testēšanas rīks nevar piekļūt. Uzziniet vairāk mūsu ceļvedī par [pieejamības pārskata veikšanu](https://developers.google.com/web/fundamentals/accessibility/how-to-review)."
+  },
+  "lighthouse-core/config/default-config.js | a11yCategoryTitle": {
+    "message": "Pieejamība"
+  },
+  "lighthouse-core/config/default-config.js | a11yColorContrastGroupDescription": {
+    "message": "Šie ieteikumi ļauj uzlabot satura lasāmību."
+  },
+  "lighthouse-core/config/default-config.js | a11yColorContrastGroupTitle": {
+    "message": "Kontrasts"
+  },
+  "lighthouse-core/config/default-config.js | a11yLanguageGroupDescription": {
+    "message": "Šie ieteikumi lietotājiem, kuri izmanto dažādas lokalizācijas, ļauj labāk izprast jūsu saturu."
+  },
+  "lighthouse-core/config/default-config.js | a11yLanguageGroupTitle": {
+    "message": "Internacionalizācija un lokalizēšana"
+  },
+  "lighthouse-core/config/default-config.js | a11yNamesLabelsGroupDescription": {
+    "message": "Šie ieteikumi ļauj uzlabot lietojumprogrammas vadīklu semantiku. Tādējādi var nodrošināt labāku pieredzi lietotājiem, kuri izmanto palīgtehnoloģijas, piemēram, ekrāna lasītājus."
+  },
+  "lighthouse-core/config/default-config.js | a11yNamesLabelsGroupTitle": {
+    "message": "Nosaukumi un iezīmes"
+  },
+  "lighthouse-core/config/default-config.js | a11yNavigationGroupDescription": {
+    "message": "Šie ieteikumi ļauj uzlabot jūsu lietotnes tastatūras navigāciju."
+  },
+  "lighthouse-core/config/default-config.js | a11yNavigationGroupTitle": {
+    "message": "Navigācija"
+  },
+  "lighthouse-core/config/default-config.js | a11yTablesListsVideoGroupDescription": {
+    "message": "Šie ieteikumi ļauj uzlabot tabulas vai sarakstu datu lasīšanu, izmantojot palīgtehnoloģijas, piemēram, ekrāna lasītājus."
+  },
+  "lighthouse-core/config/default-config.js | a11yTablesListsVideoGroupTitle": {
+    "message": "Tabulas un saraksti"
+  },
+  "lighthouse-core/config/default-config.js | bestPracticesCategoryTitle": {
+    "message": "Paraugprakse"
+  },
+  "lighthouse-core/config/default-config.js | budgetsGroupDescription": {
+    "message": "Izpildes budžets nosaka jūsu vietnes veiktspējas standartus."
+  },
+  "lighthouse-core/config/default-config.js | budgetsGroupTitle": {
+    "message": "Budžeti"
+  },
+  "lighthouse-core/config/default-config.js | diagnosticsGroupDescription": {
+    "message": "Plašāka informācija par jūsu lietojumprogrammas veiktspēju. Šie skaitļi [tieši neietekmē](https://github.com/GoogleChrome/lighthouse/blob/d2ec9ffbb21de9ad1a0f86ed24575eda32c796f0/docs/scoring.md#how-are-the-scores-weighted) veiktspējas rezultātu"
+  },
+  "lighthouse-core/config/default-config.js | diagnosticsGroupTitle": {
+    "message": "Diagnostika"
+  },
+  "lighthouse-core/config/default-config.js | firstPaintImprovementsGroupDescription": {
+    "message": "Vissvarīgākais veiktspējas aspekts ir pikseļu renderēšanas ātrums ekrānā. Galvenās metrikas: “Pirmais saturīgais satura atveidojums”, “Pirmais nozīmīgais satura atveidojums”"
+  },
+  "lighthouse-core/config/default-config.js | firstPaintImprovementsGroupTitle": {
+    "message": "Pirmā satura atveidojuma uzlabojumi"
+  },
+  "lighthouse-core/config/default-config.js | loadOpportunitiesGroupDescription": {
+    "message": "Šie ieteikumi var palīdzēt ātrāk ielādēt jūsu lapu. Tie [tieša veidā neietekmē](https://github.com/GoogleChrome/lighthouse/blob/d2ec9ffbb21de9ad1a0f86ed24575eda32c796f0/docs/scoring.md#how-are-the-scores-weighted) veiktspējas rezultātu."
+  },
+  "lighthouse-core/config/default-config.js | loadOpportunitiesGroupTitle": {
+    "message": "Iespējas"
+  },
+  "lighthouse-core/config/default-config.js | metricGroupTitle": {
+    "message": "Metrikas"
+  },
+  "lighthouse-core/config/default-config.js | overallImprovementsGroupDescription": {
+    "message": "Uzlabojiet vispārējo ielādes darbību, lai lapa reaģētu un būtu gatava izmantošanai pēc iespējas ātrāk. Galvenās metrikas: “Laiks līdz interaktivitātei”, “Ātruma rādītājs”"
+  },
+  "lighthouse-core/config/default-config.js | overallImprovementsGroupTitle": {
+    "message": "Vispārēji uzlabojumi"
+  },
+  "lighthouse-core/config/default-config.js | performanceCategoryTitle": {
+    "message": "Veiktspēja"
+  },
+  "lighthouse-core/config/default-config.js | pwaCategoryDescription": {
+    "message": "Veicot šīs pārbaudes, varat validēt progresīvo tīmekļa lietotņu aspektus. [Uzziniet vairāk](https://developers.google.com/web/progressive-web-apps/checklist)."
+  },
+  "lighthouse-core/config/default-config.js | pwaCategoryManualDescription": {
+    "message": "Šīs pārbaudes ir vajadzīgas saskaņā ar standarta [PWA kontrolsarakstu](https://developers.google.com/web/progressive-web-apps/checklist), taču Lighthouse neveic tās automātiski. Tās neietekmē jūsu rezultātu, taču ir svarīgi pārbaudīt šos lietotnes aspektus manuāli."
+  },
+  "lighthouse-core/config/default-config.js | pwaCategoryTitle": {
+    "message": "Progresīvā tīmekļa lietotne"
+  },
+  "lighthouse-core/config/default-config.js | pwaFastReliableGroupTitle": {
+    "message": "Ātrums un uzticamība"
+  },
+  "lighthouse-core/config/default-config.js | pwaInstallableGroupTitle": {
+    "message": "Instalēšana"
+  },
+  "lighthouse-core/config/default-config.js | pwaOptimizedGroupTitle": {
+    "message": "PTL optimizācija"
+  },
+  "lighthouse-core/config/default-config.js | seoCategoryDescription": {
+    "message": "Šīs atzīmes nodrošina, ka jūsu lapa ir optimizēta meklētājprogrammu rezultātu ranžēšanai. Pastāv papildu faktori, kurus Lighthouse neatzīmē, bet tie var ietekmēt jūsu meklēšanas rezultātu ranžēšanu. [Uzziniet vairāk](https://support.google.com/webmasters/answer/35769)."
+  },
+  "lighthouse-core/config/default-config.js | seoCategoryManualDescription": {
+    "message": "Palaidiet savā vietnē šos papildu apstiprināšanas rīkus, lai aplūkotu papildu MPO paraugpraksi."
+  },
+  "lighthouse-core/config/default-config.js | seoCategoryTitle": {
+    "message": "MPO"
+  },
+  "lighthouse-core/config/default-config.js | seoContentGroupDescription": {
+    "message": "Formatējiet savu HTML tā, lai rāpuļprogrammas varētu labāk saprast jūsu lietotnes saturu."
+  },
+  "lighthouse-core/config/default-config.js | seoContentGroupTitle": {
+    "message": "Satura paraugprakse"
+  },
+  "lighthouse-core/config/default-config.js | seoCrawlingGroupDescription": {
+    "message": "Rāpuļprogrammām ir nepieciešama piekļuve jūsu lietotnei, lai nodrošinātu parādīšanu meklēšanas rezultātos."
+  },
+  "lighthouse-core/config/default-config.js | seoCrawlingGroupTitle": {
+    "message": "Pārmeklēšana un indeksēšana"
+  },
+  "lighthouse-core/config/default-config.js | seoMobileGroupDescription": {
+    "message": "Jūsu lapām ir jābūt piemērotām mobilajām ierīcēm, lai lietotājiem nebūtu jāizmanto savilkšana vai tuvināšana lapu satura lasīšanai. [Uzziniet vairāk](https://developers.google.com/search/mobile-sites/)."
+  },
+  "lighthouse-core/config/default-config.js | seoMobileGroupTitle": {
+    "message": "Piemērota mobilajām ierīcēm"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnCacheTTL": {
+    "message": "Kešatmiņas TTL vērtība"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnLocation": {
+    "message": "Atrašanās vieta"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnName": {
+    "message": "Vārds"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnRequests": {
+    "message": "Pieprasījumi"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnResourceType": {
+    "message": "Resursu veids"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnSize": {
+    "message": "Izmērs"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnTimeSpent": {
+    "message": "Iztērētais laiks"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnTransferSize": {
+    "message": "Pārsūtīto failu lielums"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnURL": {
+    "message": "URL"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnWastedBytes": {
+    "message": "Potenciālie ietaupījumi"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnWastedMs": {
+    "message": "Potenciālie ietaupījumi"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | displayValueByteSavings": {
+    "message": "Potenciālais ietaupījums: {wastedBytes, number, bytes} KB"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | displayValueMsSavings": {
+    "message": "Potenciālais ietaupījums: {wastedMs, number, milliseconds} ms"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | documentResourceType": {
+    "message": "Dokuments"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | fontResourceType": {
+    "message": "Fonts"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | imageResourceType": {
+    "message": "Attēls"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | mediaResourceType": {
+    "message": "Multivide"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | ms": {
+    "message": "{timeInMs, number, milliseconds} ms"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | otherResourceType": {
+    "message": "Cits"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | scriptResourceType": {
+    "message": "Skripts"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | seconds": {
+    "message": "{timeInMs, number, seconds} s"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | stylesheetResourceType": {
+    "message": "Stilu lapa"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | thirdPartyResourceType": {
+    "message": "Trešā puse"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | totalResourceType": {
+    "message": "Kopā"
+  },
+  "lighthouse-core/lib/lh-error.js | badTraceRecording": {
+    "message": "Nevarēja reģistrēt lapas ielādes trasējumu. Lūdzu, vēlreiz palaidiet Lighthouse. ({errorCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | criTimeout": {
+    "message": "Gaidot sākotnējā atkļūdotāja protokola savienojumu, radās noildze."
+  },
+  "lighthouse-core/lib/lh-error.js | didntCollectScreenshots": {
+    "message": "Lapas ielādes laikā pārlūkprogramma Chrome nav apkopojusi nevienu ekrānuzņēmumu. Lūdzu, nodrošiniet, ka saturs ir redzams lapā, un pēc tam mēģiniet atkārtoti palaist Lighthouse. ({errorCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | dnsFailure": {
+    "message": "DNS serveri nevarēja atrast norādīto domēnu."
+  },
+  "lighthouse-core/lib/lh-error.js | erroredRequiredArtifact": {
+    "message": "Nepieciešamajam parametra “{artifactName}” vācējam radās kļūda: {errorMessage}."
+  },
+  "lighthouse-core/lib/lh-error.js | internalChromeError": {
+    "message": "Radās iekšēja Chrome kļūda. Lūdzu, restartējiet Chrome un mēģiniet atkārtoti palaist Lighthouse."
+  },
+  "lighthouse-core/lib/lh-error.js | missingRequiredArtifact": {
+    "message": "Nepieciešamais parametra “{artifactName}” vācējs nedarbojās."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailed": {
+    "message": "Lighthouse nevarēja droši ielādēt jūsu pieprasīto lapu. Pārliecinieties, ka testējat pareizo URL un serveris pareizi reaģē uz visiem pieprasījumiem."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedHung": {
+    "message": "Lighthouse nevarēja droši ielādēt jūsu pieprasīto URL, jo lapa pārstāja reaģēt."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedInsecure": {
+    "message": "Jūsu norādītajam URL nav derīga drošības sertifikāta. {securityMessages}"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedInterstitial": {
+    "message": "Pārlūkprogramma Chrome neļāva ielādēt lapu ar iespiestu reklāmu. Nodrošiniet, ka pārbaudāt pareizo URL un ka serveris pareizi reaģē uz visiem pieprasījumiem."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedWithDetails": {
+    "message": "Lighthouse nevarēja uzticami ielādēt jūsu pieprasīto lapu. Nodrošiniet, ka pārbaudāt pareizo URL un ka serveris pareizi reaģē uz visiem pieprasījumiem. (Detalizēta informācija: {errorDetails})"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedWithStatusCode": {
+    "message": "Lighthouse nevarēja uzticami ielādēt jūsu pieprasīto lapu. Nodrošiniet, ka pārbaudāt pareizo URL un ka serveris pareizi reaģē uz visiem pieprasījumiem. (Statusa kods: {statusCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadTookTooLong": {
+    "message": "Lapas ielādei bija nepieciešams pārāk ilgs laiks. Lūdzu, izmantojiet pārskatā sniegtās iespējas, lai samazinātu lapas ielādes laiku, un pēc tam mēģiniet atkārtoti palaist Lighthouse. ({errorCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | protocolTimeout": {
+    "message": "Gaidot DevTools protokola atbildi, ir pārsniegts atvēlētais laiks. (Veids: {protocolMethod})"
+  },
+  "lighthouse-core/lib/lh-error.js | requestContentTimeout": {
+    "message": "Resursu satura izgūšanai ir nepieciešams ilgāks laiks, nekā pieļaujams"
+  },
+  "lighthouse-core/lib/lh-error.js | urlInvalid": {
+    "message": "Šķiet, ka jūsu norādītais URL nav derīgs."
+  },
+  "lighthouse-core/report/html/renderer/util.js | auditGroupExpandTooltip": {
+    "message": "Rādīt pārbaudes"
+  },
+  "lighthouse-core/report/html/renderer/util.js | crcInitialNavigation": {
+    "message": "Sākotnējā navigācija"
+  },
+  "lighthouse-core/report/html/renderer/util.js | crcLongestDurationLabel": {
+    "message": "Maksimālais kritiskais ceļa latentums:"
+  },
+  "lighthouse-core/report/html/renderer/util.js | errorLabel": {
+    "message": "Kļūda!"
+  },
+  "lighthouse-core/report/html/renderer/util.js | errorMissingAuditInfo": {
+    "message": "Pārskata kļūda: nav pārbaudes informācijas"
+  },
+  "lighthouse-core/report/html/renderer/util.js | labDataTitle": {
+    "message": "Laboratorijas dati"
+  },
+  "lighthouse-core/report/html/renderer/util.js | lsPerformanceCategoryDescription": {
+    "message": "[Lighthouse](https://developers.google.com/web/tools/lighthouse/) pašreizējās lapas analīze emulētajā mobilajā tīklā. Vērtības ir aptuvenas un var atšķirties."
+  },
+  "lighthouse-core/report/html/renderer/util.js | manualAuditsGroupTitle": {
+    "message": "Papildu vienumi manuālai pārbaudei"
+  },
+  "lighthouse-core/report/html/renderer/util.js | notApplicableAuditsGroupTitle": {
+    "message": "Nav piemērojams"
+  },
+  "lighthouse-core/report/html/renderer/util.js | opportunityResourceColumnLabel": {
+    "message": "Iespēja"
+  },
+  "lighthouse-core/report/html/renderer/util.js | opportunitySavingsColumnLabel": {
+    "message": "Aptuvenais ietaupījums"
+  },
+  "lighthouse-core/report/html/renderer/util.js | passedAuditsGroupTitle": {
+    "message": "Izpildītās pārbaudes"
+  },
+  "lighthouse-core/report/html/renderer/util.js | snippetCollapseButtonLabel": {
+    "message": "Sakļaut fragmentu"
+  },
+  "lighthouse-core/report/html/renderer/util.js | snippetExpandButtonLabel": {
+    "message": "Izvērst fragmentu"
+  },
+  "lighthouse-core/report/html/renderer/util.js | thirdPartyResourcesLabel": {
+    "message": "Parādīt trešās puses resursus"
+  },
+  "lighthouse-core/report/html/renderer/util.js | toplevelWarningsMessage": {
+    "message": "Radās problēmas, kas ietekmēja šo Lighthouse palaišanu:"
+  },
+  "lighthouse-core/report/html/renderer/util.js | varianceDisclaimer": {
+    "message": "Vērtības ir aptuvenas un var atšķirties. Veiktspējas rezultāts tiek [tiek pamatots tikai uz šīm metrikām](https://github.com/GoogleChrome/lighthouse/blob/d2ec9ffbb21de9ad1a0f86ed24575eda32c796f0/docs/scoring.md#how-are-the-scores-weighted)."
+  },
+  "lighthouse-core/report/html/renderer/util.js | warningAuditsGroupTitle": {
+    "message": "Veiktās pārbaudes ar brīdinājumiem"
+  },
+  "lighthouse-core/report/html/renderer/util.js | warningHeader": {
+    "message": "Brīdinājumi: "
+  },
+  "stack-packs/packs/wordpress.js | efficient_animated_content": {
+    "message": "Apsveriet iespēju augšupielādēt GIF attēlu pakalpojumā, kuru varēs izmantot, lai iegultu GIF attēlu kā HTML5 videoklipu."
+  },
+  "stack-packs/packs/wordpress.js | offscreen_images": {
+    "message": "Instalējiet [atliktās ielādes WordPress spraudni](https://wordpress.org/plugins/search/lazy+load/), kas sniedz iespēju atlikt jebkādus ārpus ekrāna esošus attēlus vai mainīt motīvu uz tādu, kurā šī funkcija tiek nodrošināta. Ieteicams izmantot arī [AMP spraudni](https://wordpress.org/plugins/amp/)."
+  },
+  "stack-packs/packs/wordpress.js | render_blocking_resources": {
+    "message": "Ir vairāki WordPress spraudņi, kas var palīdzēt [iekļaut būtiskus līdzekļus](https://wordpress.org/plugins/search/critical+css/) vai [atlikt mazāk svarīgus resursus](https://wordpress.org/plugins/search/defer+css+javascript/). Ņemiet vērā, ka šo spraudņu nodrošinātā optimizācija var traucēt funkciju darbībai jūsu motīvā vai spraudņos, tādēļ, visticamāk, jums būs jāveic koda izmaiņas."
+  },
+  "stack-packs/packs/wordpress.js | time_to_first_byte": {
+    "message": "Motīvi, spraudņi un servera specifikācijas ietekmē servera atbildes laiku. Apsveriet iespēju atrast optimizētāku motīvu, rūpīgi izvēlēties optimizācijas spraudni un/vai jaunināt serveri."
+  },
+  "stack-packs/packs/wordpress.js | total_byte_weight": {
+    "message": "Apsveriet iespēju rādīt fragmentus ziņu sarakstos (piemēram, izmantojot tagu “more”), samazināt attiecīgajā lapā rādāmo ziņu skaitu, sadalīt garas ziņas vairākās lapās vai izmantot spraudni, lai atliktu komentāru ielādi."
+  },
+  "stack-packs/packs/wordpress.js | unminified_css": {
+    "message": "Vairāki [WordPress spraudņi](https://wordpress.org/plugins/search/minify+css/) var paātrināt jūsu vietnes darbību, savienojot, samazinot un saspiežot stilus. Ja iespējams, varat arī veikt šo samazināšanu iepriekš izveides procesā."
+  },
+  "stack-packs/packs/wordpress.js | unminified_javascript": {
+    "message": "Vairāki [WordPress spraudņi](https://wordpress.org/plugins/search/minify+javascript/) var paātrināt jūsu vietnes darbību, savienojot, samazinot un saspiežot skriptus. Ja iespējams, varat veikt šo samazināšanu jau iepriekš izveides procesā."
+  },
+  "stack-packs/packs/wordpress.js | unused_css_rules": {
+    "message": "Ieteicams samazināt vai mainīt tādu [WordPress spraudņu](https://wordpress.org/plugins/) skaitu, kuri ielādē nelietotu CSS kodu jūsu lapā. Lai identificētu spraudņus, kuri pievieno lieku CSS kodu, mēģiniet izpildīt [koda pārklājumu](https://developers.google.com/web/updates/2017/04/devtools-release-notes#coverage), izmantojot Chrome DevTools. Saistīto motīvu/spraudni varat identificēt stila lapas vietrādī URL. Meklējiet spraudņus, kuriem sarakstā ir daudz stila lapu ar daudz sarkanām atzīmēm koda pārklājumā. Spraudnim ir jāievieto rindā stilu lapa tikai tad, ja tā faktiski tiek izmantota lapā."
+  },
+  "stack-packs/packs/wordpress.js | unused_javascript": {
+    "message": "Ieteicams samazināt vai mainīt tādu [WordPress spraudņu](https://wordpress.org/plugins/) skaitu, kuri ielādē nelietotu JavaScript kodu jūsu lapā. Lai identificētu spraudņus, kuri pievieno lieku JS kodu, mēģiniet izpildīt [koda pārklājumu](https://developers.google.com/web/updates/2017/04/devtools-release-notes#coverage), izmantojot Chrome DevTools. Saistīto motīvu/spraudni varat identificēt skripta vietrādī URL. Meklējiet spraudņus, kuriem sarakstā ir daudz skriptu ar daudz sarkanām atzīmēm koda pārklājumā. Spraudnim ir jāievieto rindā skripts tikai tad, ja tas faktiski tiek izmantots lapā."
+  },
+  "stack-packs/packs/wordpress.js | uses_long_cache_ttl": {
+    "message": "Uzziniet par [pārlūkprogrammas datu saglabāšanu kešatmiņā programmatūrā WordPress](https://codex.wordpress.org/WordPress_Optimization#Browser_Caching)."
+  },
+  "stack-packs/packs/wordpress.js | uses_optimized_images": {
+    "message": "Ieteicams izmantot [attēlu optimizācijas WordPress spraudni](https://wordpress.org/plugins/search/optimize+images/), kas saspiež attēlus, vienlaikus saglabājot kvalitāti."
+  },
+  "stack-packs/packs/wordpress.js | uses_responsive_images": {
+    "message": "Tieši augšupielādējiet attēlus, izmantojot [multivides bibliotēku](https://codex.wordpress.org/Media_Library_Screen), lai nodrošinātu nepieciešamo attēlu lielumu pieejamību. Pēc tam ievietojiet attēlus no multivides bibliotēkas vai izmantojiet attēlu logrīku, lai tiktu izmantoti optimāli attēlu lielumi (tostarp reaģējošām robežvērtībām paredzētie). Neizmantojiet `Full Size` attēlus, ja to izmēri neatbilst to lietojumam. [Uzziniet vairāk](https://codex.wordpress.org/Inserting_Images_into_Posts_and_Pages#Image_Size)."
+  },
+  "stack-packs/packs/wordpress.js | uses_text_compression": {
+    "message": "Varat iespējot teksta saspiešanu tīmekļa servera konfigurācijā."
+  },
+  "stack-packs/packs/wordpress.js | uses_webp_images": {
+    "message": "Ieteicams izmantot [spraudni](https://wordpress.org/plugins/search/convert+webp/) vai pakalpojumu, kurā jūsu augšupielādētie attēli tiks automātiski pārveidoti optimālos formātos."
+  }
+}
diff --git a/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/nl.json b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/nl.json
new file mode 100644
index 0000000..4b76fe1
--- /dev/null
+++ b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/nl.json
@@ -0,0 +1,1541 @@
+{
+  "lighthouse-core/audits/accessibility/accesskeys.js | description": {
+    "message": "Met toegangstoetsen kunnen gebruikers snel de focus op een gedeelte van de pagina plaatsen. Voor correcte navigatie moet elke toegangstoets uniek zijn. [Meer informatie](https://web.dev/accesskeys/)"
+  },
+  "lighthouse-core/audits/accessibility/accesskeys.js | failureTitle": {
+    "message": "`[accesskey]`-waarden zijn niet uniek"
+  },
+  "lighthouse-core/audits/accessibility/accesskeys.js | title": {
+    "message": "`[accesskey]`-waarden zijn uniek"
+  },
+  "lighthouse-core/audits/accessibility/aria-allowed-attr.js | description": {
+    "message": "Elke ARIA-`role` ondersteunt een specifieke subset van `aria-*`-kenmerken. Als deze verkeerd worden gekoppeld, worden de `aria-*`-kenmerken ongeldig. [Meer informatie](https://web.dev/aria-allowed-attr/)"
+  },
+  "lighthouse-core/audits/accessibility/aria-allowed-attr.js | failureTitle": {
+    "message": "`[aria-*]`-kenmerken komen niet overeen met hun rollen"
+  },
+  "lighthouse-core/audits/accessibility/aria-allowed-attr.js | title": {
+    "message": "`[aria-*]`-kenmerken komen overeen met hun rollen"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-attr.js | description": {
+    "message": "Sommige ARIA-rollen hebben vereiste kenmerken die de status van het element beschrijven voor schermlezers. [Meer informatie](https://web.dev/aria-required-attr/)"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-attr.js | failureTitle": {
+    "message": "`[role]`-elementen bevatten niet alle vereiste `[aria-*]`-kenmerken"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-attr.js | title": {
+    "message": "`[role]`-elementen bevatten alle vereiste `[aria-*]`-kenmerken"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-children.js | description": {
+    "message": "Sommige bovenliggende ARIA-rollen moeten specifieke onderliggende rollen bevatten om de beoogde toegankelijkheidsfuncties uit te voeren. [Meer informatie](https://web.dev/aria-required-children/)"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-children.js | failureTitle": {
+    "message": "Er ontbreken elementen met `[role]` die specifieke onderliggende `[role]`-elementen vereisen."
+  },
+  "lighthouse-core/audits/accessibility/aria-required-children.js | title": {
+    "message": "Er zijn elementen met `[role]` aanwezig die specifieke onderliggende `[role]`-elementen vereisen."
+  },
+  "lighthouse-core/audits/accessibility/aria-required-parent.js | description": {
+    "message": "Sommige onderliggende ARIA-rollen moeten zijn opgenomen in specifieke bovenliggende rollen om de beoogde toegankelijkheidsfuncties op de juiste manier uit te voeren. [Meer informatie](https://web.dev/aria-required-parent/)"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-parent.js | failureTitle": {
+    "message": "`[role]`-elementen zijn niet opgenomen in het vereiste bovenliggende element"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-parent.js | title": {
+    "message": "`[role]`-elementen zijn opgenomen in het vereiste bovenliggende element"
+  },
+  "lighthouse-core/audits/accessibility/aria-roles.js | description": {
+    "message": "ARIA-rollen moeten geldige waarden hebben om hun beoogde toegankelijkheidsfuncties uit te voeren. [Meer informatie](https://web.dev/aria-roles/)"
+  },
+  "lighthouse-core/audits/accessibility/aria-roles.js | failureTitle": {
+    "message": "`[role]`-waarden zijn niet geldig"
+  },
+  "lighthouse-core/audits/accessibility/aria-roles.js | title": {
+    "message": "`[role]`-waarden zijn geldig"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr-value.js | description": {
+    "message": "ARIA-kenmerken met ongeldige waarden kunnen niet worden geïnterpreteerd door hulptechnologieën, zoals schermlezers. [Meer informatie](https://web.dev/aria-valid-attr-value/)"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr-value.js | failureTitle": {
+    "message": "`[aria-*]`-kenmerken hebben geen geldige waarden"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr-value.js | title": {
+    "message": "`[aria-*]`-kenmerken bevatten geldige waarden"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr.js | description": {
+    "message": "ARIA-kenmerken met ongeldige namen kunnen niet worden geïnterpreteerd door hulptechnologieën, zoals schermlezers. [Meer informatie](https://web.dev/aria-valid-attr/)"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr.js | failureTitle": {
+    "message": "`[aria-*]`-kenmerken zijn niet geldig of zijn verkeerd gespeld"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr.js | title": {
+    "message": "`[aria-*]`-kenmerken zijn geldig en niet verkeerd gespeld"
+  },
+  "lighthouse-core/audits/accessibility/audio-caption.js | description": {
+    "message": "Ondertiteling maakt audio-elementen bruikbaar voor doven en slechthorenden en geeft essentiële informatie zoals wie praat, wat de persoon zegt en andere niet-gesproken informatie. [Meer informatie](https://web.dev/audio-caption/)"
+  },
+  "lighthouse-core/audits/accessibility/audio-caption.js | failureTitle": {
+    "message": "Voor `<audio>`-elementen ontbreekt een `<track>`-element met `[kind=\"captions\"]`."
+  },
+  "lighthouse-core/audits/accessibility/audio-caption.js | title": {
+    "message": "`<audio>`-elementen bevatten een `<track>`-element met `[kind=\"captions\"]`"
+  },
+  "lighthouse-core/audits/accessibility/axe-audit.js | failingElementsHeader": {
+    "message": "Mislukte elementen"
+  },
+  "lighthouse-core/audits/accessibility/button-name.js | description": {
+    "message": "Wanneer een knop geen toegankelijke naam heeft, kondigen schermlezers deze aan als 'knop', waardoor de knop onbruikbaar wordt voor gebruikers die afhankelijk zijn van schermlezers. [Meer informatie](https://web.dev/button-name/)"
+  },
+  "lighthouse-core/audits/accessibility/button-name.js | failureTitle": {
+    "message": "Knoppen hebben geen toegankelijke naam"
+  },
+  "lighthouse-core/audits/accessibility/button-name.js | title": {
+    "message": "Knoppen hebben een toegankelijke naam"
+  },
+  "lighthouse-core/audits/accessibility/bypass.js | description": {
+    "message": "Als je manieren toevoegt om herhaalde content te omzeilen, kunnen toetsenbordgebruikers efficiënter navigeren op de pagina. [Meer informatie](https://web.dev/bypass/)"
+  },
+  "lighthouse-core/audits/accessibility/bypass.js | failureTitle": {
+    "message": "De pagina bevat geen kop, link voor overslaan of herkenningspuntregio"
+  },
+  "lighthouse-core/audits/accessibility/bypass.js | title": {
+    "message": "De pagina bevat een kop, link voor overslaan of herkenningspuntregio"
+  },
+  "lighthouse-core/audits/accessibility/color-contrast.js | description": {
+    "message": "Voor veel gebruikers is tekst met weinig contrast moeilijk of onmogelijk te lezen. [Meer informatie](https://web.dev/color-contrast/)"
+  },
+  "lighthouse-core/audits/accessibility/color-contrast.js | failureTitle": {
+    "message": "De contrastverhouding van achtergrond- en voorgrondkleuren is niet voldoende"
+  },
+  "lighthouse-core/audits/accessibility/color-contrast.js | title": {
+    "message": "De contrastverhouding van achtergrond- en voorgrondkleuren is voldoende"
+  },
+  "lighthouse-core/audits/accessibility/definition-list.js | description": {
+    "message": "Wanneer definitielijsten niet juist zijn opgemaakt, kunnen schermlezers verwarrende of onjuiste uitvoer produceren. [Meer informatie](https://web.dev/definition-list/)"
+  },
+  "lighthouse-core/audits/accessibility/definition-list.js | failureTitle": {
+    "message": "`<dl>`-elementen bevatten niet alleen juist geordende `<dt>`- en `<dd>`-groepen, `<script>` of `<template>`-elementen."
+  },
+  "lighthouse-core/audits/accessibility/definition-list.js | title": {
+    "message": "`<dl>`-elementen bevatten alleen juist geordende`<dt>`- en `<dd>`-groepen,`<script>` of `<template>`-elementen."
+  },
+  "lighthouse-core/audits/accessibility/dlitem.js | description": {
+    "message": "Definitielijstitems (`<dt>` en `<dd>`) moeten zijn verpakt in een bovenliggend `<dl>`-element om ervoor te zorgen dat schermlezers ze juist kunnen aankondigen. [Meer informatie](https://web.dev/dlitem/)"
+  },
+  "lighthouse-core/audits/accessibility/dlitem.js | failureTitle": {
+    "message": "Definitielijstitems zijn niet verpakt in `<dl>`-elementen"
+  },
+  "lighthouse-core/audits/accessibility/dlitem.js | title": {
+    "message": "Definitielijstitems zijn verpakt in `<dl>`-elementen"
+  },
+  "lighthouse-core/audits/accessibility/document-title.js | description": {
+    "message": "De titel geeft gebruikers van een schermlezer een overzicht van de pagina. Gebruikers van een zoekmachine vertrouwen in hoge mate hierop om te bepalen of een pagina relevant is voor hun zoekopdracht. [Meer informatie](https://web.dev/document-title/)"
+  },
+  "lighthouse-core/audits/accessibility/document-title.js | failureTitle": {
+    "message": "Document bevat geen `<title>`-element"
+  },
+  "lighthouse-core/audits/accessibility/document-title.js | title": {
+    "message": "Document bevat een `<title>`-element"
+  },
+  "lighthouse-core/audits/accessibility/duplicate-id.js | description": {
+    "message": "De waarde van een id-kenmerk moet uniek zijn om te voorkomen dat andere instanties over het hoofd worden gezien door hulptechnologieën. [Meer informatie](https://web.dev/duplicate-id/)"
+  },
+  "lighthouse-core/audits/accessibility/duplicate-id.js | failureTitle": {
+    "message": "De `[id]`-kenmerken op de pagina zijn niet uniek"
+  },
+  "lighthouse-core/audits/accessibility/duplicate-id.js | title": {
+    "message": "De `[id]`-kenmerken op de pagina zijn uniek"
+  },
+  "lighthouse-core/audits/accessibility/frame-title.js | description": {
+    "message": "Gebruikers van een schermlezer zijn afhankelijk van frametitels die de content van de frames beschrijven. [Meer informatie](https://web.dev/frame-title/)"
+  },
+  "lighthouse-core/audits/accessibility/frame-title.js | failureTitle": {
+    "message": "`<frame>`- of `<iframe>`-elementen hebben geen titel"
+  },
+  "lighthouse-core/audits/accessibility/frame-title.js | title": {
+    "message": "`<frame>`- of `<iframe>`-elementen hebben een titel"
+  },
+  "lighthouse-core/audits/accessibility/html-has-lang.js | description": {
+    "message": "Als de pagina geen lang-kenmerk specificeert, neemt een schermlezer aan dat de pagina is geschreven in de standaardtaal die de gebruiker heeft gekozen toen de schermlezer werd ingesteld. Als de pagina niet in de standaardtaal is geschreven, kan de schermlezer de tekst van de pagina mogelijk niet juist aankondigen. [Meer informatie](https://web.dev/html-has-lang/)"
+  },
+  "lighthouse-core/audits/accessibility/html-has-lang.js | failureTitle": {
+    "message": "`<html>`-element bevat geen `[lang]`-kenmerk"
+  },
+  "lighthouse-core/audits/accessibility/html-has-lang.js | title": {
+    "message": "`<html>`-element bevat een `[lang]`-kenmerk"
+  },
+  "lighthouse-core/audits/accessibility/html-lang-valid.js | description": {
+    "message": "Als je een geldige [BCP 47-taal](https://www.w3.org/International/questions/qa-choosing-language-tags#question) opgeeft, kunnen schermlezers de tekst juist aankondigen. [Meer informatie](https://web.dev/html-lang-valid/)"
+  },
+  "lighthouse-core/audits/accessibility/html-lang-valid.js | failureTitle": {
+    "message": "`<html>`-element bevat geen geldige waarde voor het `[lang]`-kenmerk."
+  },
+  "lighthouse-core/audits/accessibility/html-lang-valid.js | title": {
+    "message": "`<html>`-element bevat een geldige waarde voor het`[lang]`-kenmerk"
+  },
+  "lighthouse-core/audits/accessibility/image-alt.js | description": {
+    "message": "Voor informatieve elementen moet een korte, beschrijvende alternatieve tekst worden gebruikt. Decoratieve elementen kunnen worden genegeerd met een leeg alt-kenmerk. [Meer informatie](https://web.dev/image-alt/)"
+  },
+  "lighthouse-core/audits/accessibility/image-alt.js | failureTitle": {
+    "message": "Afbeeldingselementen hebben geen `[alt]`-kenmerken"
+  },
+  "lighthouse-core/audits/accessibility/image-alt.js | title": {
+    "message": "Afbeeldingselementen bevatten `[alt]`-kenmerken"
+  },
+  "lighthouse-core/audits/accessibility/input-image-alt.js | description": {
+    "message": "Wanneer een afbeelding wordt gebruikt als `<input>`-knop en je hiervoor alternatieve tekst opgeeft, kunnen gebruikers van een schermlezer beter begrijpen wat het doel van de knop is. [Meer informatie](https://web.dev/input-image-alt/)"
+  },
+  "lighthouse-core/audits/accessibility/input-image-alt.js | failureTitle": {
+    "message": "`<input type=\"image\">`-elementen bevatten geen `[alt]`-tekst"
+  },
+  "lighthouse-core/audits/accessibility/input-image-alt.js | title": {
+    "message": "`<input type=\"image\">`-elementen bevatten `[alt]`-tekst"
+  },
+  "lighthouse-core/audits/accessibility/label.js | description": {
+    "message": "Labels zorgen ervoor dat formulieropties juist worden aangekondigd door hulptechnologieën, zoals schermlezers. [Meer informatie](https://web.dev/label/)"
+  },
+  "lighthouse-core/audits/accessibility/label.js | failureTitle": {
+    "message": "Formulierelementen hebben geen bijbehorende labels"
+  },
+  "lighthouse-core/audits/accessibility/label.js | title": {
+    "message": "Formulierelementen hebben bijbehorende labels"
+  },
+  "lighthouse-core/audits/accessibility/layout-table.js | description": {
+    "message": "Een tabel die wordt gebruikt voor lay-outdoeleinden, mag geen gegevenselementen (zoals th- of caption-elementen of het summary-kenmerk) bevatten omdat dit verwarrend kan zijn voor gebruikers van een schermlezer. [Meer informatie](https://web.dev/layout-table/)"
+  },
+  "lighthouse-core/audits/accessibility/layout-table.js | failureTitle": {
+    "message": "`<table>`-presentatie-elementen vermijden niet het gebruik van `<th>`, `<caption>` of het `[summary]`-kenmerk."
+  },
+  "lighthouse-core/audits/accessibility/layout-table.js | title": {
+    "message": "In `<table>`-presentatie-elementen wordt het gebruik van `<th>`, `<caption>` of het `[summary]`-kenmerk vermeden."
+  },
+  "lighthouse-core/audits/accessibility/link-name.js | description": {
+    "message": "Met linktekst (en alternatieve tekst voor afbeeldingen, indien gebruikt als links) die herkenbaar, uniek en focusbaar is, verbeter je de navigatiefunctionaliteit voor gebruikers van een schermlezer. [Meer informatie](https://web.dev/link-name/)"
+  },
+  "lighthouse-core/audits/accessibility/link-name.js | failureTitle": {
+    "message": "Links hebben geen herkenbare naam"
+  },
+  "lighthouse-core/audits/accessibility/link-name.js | title": {
+    "message": "Links hebben een herkenbare naam"
+  },
+  "lighthouse-core/audits/accessibility/list.js | description": {
+    "message": "Schermlezers hebben een specifieke manier om lijsten aan te kondigen. Met een juiste lijststructuur verbetert de uitvoer van schermlezers. [Meer informatie](https://web.dev/list/)"
+  },
+  "lighthouse-core/audits/accessibility/list.js | failureTitle": {
+    "message": "Lijsten bevatten niet alleen `<li>`-elementen en elementen voor scriptondersteuning (`<script>` en `<template>`)."
+  },
+  "lighthouse-core/audits/accessibility/list.js | title": {
+    "message": "Lijsten bevatten alleen `<li>`-elementen en elementen voor scriptondersteuning (`<script>` en `<template>`)."
+  },
+  "lighthouse-core/audits/accessibility/listitem.js | description": {
+    "message": "Voor schermlezers moeten lijstitems (`<li>`) binnen een bovenliggende `<ul>` of `<ol>` worden geplaatst om juist te worden aangekondigd. [Meer informatie](https://web.dev/listitem/)"
+  },
+  "lighthouse-core/audits/accessibility/listitem.js | failureTitle": {
+    "message": "Lijstitems (`<li>`) zijn niet opgenomen in `<ul>` of bovenliggende `<ol>`-elementen."
+  },
+  "lighthouse-core/audits/accessibility/listitem.js | title": {
+    "message": "Lijstitems (`<li>`) zijn tussen bovenliggende `<ul>`- of `<ol>`-elementen geplaatst"
+  },
+  "lighthouse-core/audits/accessibility/meta-refresh.js | description": {
+    "message": "Gebruikers verwachten niet dat een pagina automatisch wordt vernieuwd. Als dit wel gebeurt, wordt de focus teruggezet op de bovenkant van de pagina. Dit kan vervelend of verwarrend zijn voor gebruikers. [Meer informatie](https://web.dev/meta-refresh/)"
+  },
+  "lighthouse-core/audits/accessibility/meta-refresh.js | failureTitle": {
+    "message": "Het document gebruikt `<meta http-equiv=\"refresh\">`"
+  },
+  "lighthouse-core/audits/accessibility/meta-refresh.js | title": {
+    "message": "Het document gebruikt `<meta http-equiv=\"refresh\">` niet"
+  },
+  "lighthouse-core/audits/accessibility/meta-viewport.js | description": {
+    "message": "Uitschakeling van de zoomfunctie is problematisch voor slechtzienden die afhankelijk zijn van schermvergroting om de content van een webpagina te zien. [Meer informatie](https://web.dev/meta-viewport/)"
+  },
+  "lighthouse-core/audits/accessibility/meta-viewport.js | failureTitle": {
+    "message": "`[user-scalable=\"no\"]` wordt gebruikt in het `<meta name=\"viewport\">`-element of het `[maximum-scale]`-kenmerk is minder dan 5."
+  },
+  "lighthouse-core/audits/accessibility/meta-viewport.js | title": {
+    "message": "`[user-scalable=\"no\"]` wordt niet gebruikt in het `<meta name=\"viewport\">`-element en het `[maximum-scale]`-kenmerk is niet minder dan 5."
+  },
+  "lighthouse-core/audits/accessibility/object-alt.js | description": {
+    "message": "Schermlezers kunnen geen andere content dan tekst vertalen. Als je alt-tekst aan `<object>`-elementen toevoegt, kunnen schermlezers de betekenis overbrengen aan gebruikers. [Meer informatie](https://web.dev/object-alt/)"
+  },
+  "lighthouse-core/audits/accessibility/object-alt.js | failureTitle": {
+    "message": "`<object>`-elementen bevatten geen `[alt]`-tekst"
+  },
+  "lighthouse-core/audits/accessibility/object-alt.js | title": {
+    "message": "`<object>`-elementen bevatten `[alt]`-tekst"
+  },
+  "lighthouse-core/audits/accessibility/tabindex.js | description": {
+    "message": "Een waarde groter dan 0 impliceert een expliciete navigatievolgorde. Hoewel dit technisch geldig is, is dit vaak vervelend voor gebruikers die afhankelijk zijn van hulptechnologieën. [Meer informatie](https://web.dev/tabindex/)"
+  },
+  "lighthouse-core/audits/accessibility/tabindex.js | failureTitle": {
+    "message": "Sommige elementen hebben een `[tabindex]`-waarde die groter is dan 0"
+  },
+  "lighthouse-core/audits/accessibility/tabindex.js | title": {
+    "message": "Geen element dat een `[tabindex]`-waarde heeft die groter is dan 0"
+  },
+  "lighthouse-core/audits/accessibility/td-headers-attr.js | description": {
+    "message": "Schermlezers hebben functies waarmee gemakkelijker kan worden genavigeerd in tabellen. Als je zorgt dat `<td>`-cellen die het `[headers]`-kenmerk gebruiken, alleen verwijzen naar andere cellen in dezelfde tabel, kun je de functionaliteit verbeteren voor gebruikers van een schermlezer. [Meer informatie](https://web.dev/td-headers-attr/)"
+  },
+  "lighthouse-core/audits/accessibility/td-headers-attr.js | failureTitle": {
+    "message": "Cellen in een `<table>`-element die het `[headers]`-kenmerk gebruiken, verwijzen naar andere cellen in dezelfde tabel."
+  },
+  "lighthouse-core/audits/accessibility/td-headers-attr.js | title": {
+    "message": "Cellen in een `<table>`-element die het `[headers]`-kenmerk gebruiken, verwijzen alleen naar andere cellen in diezelfde tabel."
+  },
+  "lighthouse-core/audits/accessibility/th-has-data-cells.js | description": {
+    "message": "Schermlezers hebben functies waarmee gemakkelijker kan worden genavigeerd in tabellen. Als je zorgt dat tabelheaders altijd verwijzen naar een bepaalde reeks cellen, kun je de functionaliteit verbeteren voor gebruikers van een schermlezer. [Meer informatie](https://web.dev/th-has-data-cells/)"
+  },
+  "lighthouse-core/audits/accessibility/th-has-data-cells.js | failureTitle": {
+    "message": "`<th>`-elementen en elementen met `[role=\"columnheader\"/\"rowheader\"]` bevatten niet de gegevenscellen die ze beschrijven."
+  },
+  "lighthouse-core/audits/accessibility/th-has-data-cells.js | title": {
+    "message": "`<th>`-elementen en elementen met `[role=\"columnheader\"/\"rowheader\"]` bevatten de gegevenscellen die ze beschrijven."
+  },
+  "lighthouse-core/audits/accessibility/valid-lang.js | description": {
+    "message": "Als je een geldige [BCP 47-taal](https://www.w3.org/International/questions/qa-choosing-language-tags#question) voor elementen opgeeft, kan de tekst juist wordt uitgesproken door een schermlezer. [Meer informatie](https://web.dev/valid-lang/)"
+  },
+  "lighthouse-core/audits/accessibility/valid-lang.js | failureTitle": {
+    "message": "`[lang]`-kenmerken hebben geen geldige waarde"
+  },
+  "lighthouse-core/audits/accessibility/valid-lang.js | title": {
+    "message": "`[lang]`-kenmerken bevatten een geldige waarde"
+  },
+  "lighthouse-core/audits/accessibility/video-caption.js | description": {
+    "message": "Video's met ondertiteling bieden doven en slechthorenden betere toegang tot de bijbehorende informatie. [Meer informatie](https://web.dev/video-caption/)"
+  },
+  "lighthouse-core/audits/accessibility/video-caption.js | failureTitle": {
+    "message": "`<video>`-elementen bevatten geen `<track>`-element met `[kind=\"captions\"]`."
+  },
+  "lighthouse-core/audits/accessibility/video-caption.js | title": {
+    "message": "`<video>`-elementen bevatten een `<track>`-element met `[kind=\"captions\"]`"
+  },
+  "lighthouse-core/audits/accessibility/video-description.js | description": {
+    "message": "Audiobeschrijvingen bieden relevante informatie over video's die dialoog niet kan bieden, zoals gezichtsuitdrukkingen en scènes. [Meer informatie](https://web.dev/video-description/)"
+  },
+  "lighthouse-core/audits/accessibility/video-description.js | failureTitle": {
+    "message": "`<video>`-elementen bevatten geen `<track>`-element met `[kind=\"description\"]`."
+  },
+  "lighthouse-core/audits/accessibility/video-description.js | title": {
+    "message": "`<video>`-elementen bevatten een `<track>`-element met `[kind=\"description\"]`"
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | description": {
+    "message": "Definieer een `apple-touch-icon` voor een ideale weergave op iOS wanneer gebruikers een progressive web-app aan het startscherm toevoegen. Deze moet verwijzen naar een niet-transparante vierkante PNG van 192px (of 180px). [Meer informatie](https://developers.google.com/web/fundamentals/design-and-ux/browser-customization/)"
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | failureTitle": {
+    "message": "Geeft geen geldig `apple-touch-icon` op"
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | precomposedWarning": {
+    "message": "`apple-touch-icon-precomposed` is verouderd; `apple-touch-icon` krijgt de voorkeur."
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | title": {
+    "message": "Verstrekt een geldige `apple-touch-icon`"
+  },
+  "lighthouse-core/audits/bootup-time.js | chromeExtensionsWarning": {
+    "message": "Chrome-extensies hadden een negatieve invloed op de laadprestaties van deze pagina. Controleer de pagina in de incognitomodus of via een Chrome-profiel zonder extensies."
+  },
+  "lighthouse-core/audits/bootup-time.js | columnScriptEval": {
+    "message": "Scriptevaluatie"
+  },
+  "lighthouse-core/audits/bootup-time.js | columnScriptParse": {
+    "message": "Script parseren"
+  },
+  "lighthouse-core/audits/bootup-time.js | columnTotal": {
+    "message": "Totale CPU-tijd"
+  },
+  "lighthouse-core/audits/bootup-time.js | description": {
+    "message": "Overweeg de tijd te verminderen die aan parseren, compileren en uitvoeren van JS wordt besteed. Het leveren van kleinere JS-payloads kan hierbij helpen. [Meer informatie](https://developers.google.com/web/tools/lighthouse/audits/bootup)"
+  },
+  "lighthouse-core/audits/bootup-time.js | failureTitle": {
+    "message": "Verkort de JavaScript-uitvoeringstijd"
+  },
+  "lighthouse-core/audits/bootup-time.js | title": {
+    "message": "JavaScript-uitvoeringstijd"
+  },
+  "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | description": {
+    "message": "Grote gif's zijn niet efficiënt om content met animaties te leveren. Overweeg het gebruik van MPEG4-/WebM-video's voor animaties en PNG/WebP voor statische afbeeldingen in plaats van gif's om netwerkbytes te besparen. [Meer informatie](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/replace-animated-gifs-with-video/)"
+  },
+  "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | title": {
+    "message": "Gebruik video-indelingen voor content met animaties"
+  },
+  "lighthouse-core/audits/byte-efficiency/offscreen-images.js | description": {
+    "message": "Overweeg om afbeeldingen die niet in beeld zijn en verborgen afbeeldingen via 'lazy loading' te laden nadat alle kritieke bronnen zijn geladen om zo de tijd tot interactief te verlagen. [Meer informatie](https://developers.google.com/web/tools/lighthouse/audits/offscreen-images)"
+  },
+  "lighthouse-core/audits/byte-efficiency/offscreen-images.js | title": {
+    "message": "Laad afbeeldingen die niet in beeld zijn nog niet"
+  },
+  "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | description": {
+    "message": "Bronnen blokkeren de eerste weergave (FP) voor je pagina. Overweeg kritieke JS/css inline te leveren en alle niet-kritieke JS/stijlen uit te stellen. [Meer informatie](https://developers.google.com/web/tools/lighthouse/audits/blocking-resources)"
+  },
+  "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | title": {
+    "message": "Verwijder bronnen die de weergave blokkeren"
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | description": {
+    "message": "Grote netwerkpayloads kosten gebruikers effectief geld en hebben vaak lange laadtijden. [Meer informatie](https://developers.google.com/web/tools/lighthouse/audits/network-payloads)"
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | displayValue": {
+    "message": "Totale grootte was {totalBytes, number, bytes} KB"
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | failureTitle": {
+    "message": "Vermijd enorme netwerkpayloads"
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | title": {
+    "message": "Vermijdt enorme netwerkpayloads"
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-css.js | description": {
+    "message": "Als je css-bestanden verkleint, kun je de omvang van netwerkpayloads verkleinen. [Meer informatie](https://developers.google.com/web/tools/lighthouse/audits/minify-css)"
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-css.js | title": {
+    "message": "Verklein de css"
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | description": {
+    "message": "Als je JavaScript-bestanden verkleint, kunnen de omvang van de payload en de parseringstijd van het script worden verkleind. [Meer informatie](https://developers.google.com/speed/docs/insights/MinifyResources)"
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | title": {
+    "message": "Verklein JavaScript"
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | description": {
+    "message": "Verwijder overbodig geworden regels uit stylesheets en stel het laden van ongebruikte css uit voor content boven de vouw zodat er minder onnodige bytes worden verbruikt door netwerkactiviteit. [Meer informatie](https://developers.google.com/web/tools/lighthouse/audits/unused-css)"
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | title": {
+    "message": "Ongebruikte css verwijderen"
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-javascript.js | description": {
+    "message": "Verwijder ongebruikt JavaScript om het aantal bytes te verminderen dat wordt verbruikt door netwerkactiviteit."
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-javascript.js | title": {
+    "message": "Verwijder ongebruikt JavaScript"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | description": {
+    "message": "Een lange levensduur voor het cachegeheugen kan herhaalde bezoeken aan je pagina versnellen. [Meer informatie](https://developers.google.com/web/tools/lighthouse/audits/cache-policy)"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 bron gevonden}other{# bronnen gevonden}}"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | failureTitle": {
+    "message": "Lever statische items met een efficiënt cachebeleid"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | title": {
+    "message": "Gebruikt een efficiënt cachebeleid voor statische items"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | description": {
+    "message": "Geoptimaliseerde afbeeldingen worden sneller geladen en verbruiken minder mobiele data. [Meer informatie](https://developers.google.com/web/tools/lighthouse/audits/optimize-images)"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | title": {
+    "message": "Codeer afbeeldingen op een efficiënte manier"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | description": {
+    "message": "Lever afbeeldingen met het juiste formaat om mobiele data te besparen en de laadtijd te verbeteren. [Meer informatie](https://developers.google.com/web/tools/lighthouse/audits/oversized-images)"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | title": {
+    "message": "Geef afbeeldingen het juiste formaat"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | description": {
+    "message": "Tekstgebaseerde bronnen moeten worden geleverd met compressie (gzip, deflate of brotli) om het totale aantal netwerkbytes te minimaliseren. [Meer informatie](https://developers.google.com/web/tools/lighthouse/audits/text-compression)"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | title": {
+    "message": "Schakel tekstcompressie in"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | description": {
+    "message": "Afbeeldingsindelingen zoals JPEG 2000, JPEG XR en WebP bieden vaak betere compressie dan PNG of JPEG. Dit resulteert in snellere downloads en minder dataverbruik. [Meer informatie](https://developers.google.com/web/tools/lighthouse/audits/webp)"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | title": {
+    "message": "Lever afbeeldingen in moderne indelingen"
+  },
+  "lighthouse-core/audits/content-width.js | description": {
+    "message": "Als de breedte van de content van je app niet overeenkomt met de breedte van het kijkvenster, is je app mogelijk niet geoptimaliseerd voor mobiele schermen. [Meer informatie](https://developers.google.com/web/tools/lighthouse/audits/content-sized-correctly-for-viewport)"
+  },
+  "lighthouse-core/audits/content-width.js | explanation": {
+    "message": "Het kijkvensterformaat van {innerWidth}px komt niet overeen met het vensterformaat van {outerWidth}px."
+  },
+  "lighthouse-core/audits/content-width.js | failureTitle": {
+    "message": "De content heeft niet het juiste formaat voor het kijkvenster"
+  },
+  "lighthouse-core/audits/content-width.js | title": {
+    "message": "De content heeft het juiste formaat voor het kijkvenster"
+  },
+  "lighthouse-core/audits/critical-request-chains.js | description": {
+    "message": "De onderstaande kritieke verzoekketens laten zien welke bronnen met een hoge prioriteit worden geladen. Overweeg de lengte van ketens te verkleinen, de downloadgrootte van bronnen te beperken of het downloaden van onnodige bronnen uit te stellen om de laadtijd van de pagina te verbeteren. [Meer informatie](https://developers.google.com/web/tools/lighthouse/audits/critical-request-chains)"
+  },
+  "lighthouse-core/audits/critical-request-chains.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 keten gevonden}other{# ketens gevonden}}"
+  },
+  "lighthouse-core/audits/critical-request-chains.js | title": {
+    "message": "Minimaliseer de diepte van kritieke verzoeken"
+  },
+  "lighthouse-core/audits/deprecations.js | columnDeprecate": {
+    "message": "Beëindiging / Waarschuwing"
+  },
+  "lighthouse-core/audits/deprecations.js | columnLine": {
+    "message": "Lijn"
+  },
+  "lighthouse-core/audits/deprecations.js | description": {
+    "message": "Beëindigde API's worden uiteindelijk verwijderd uit de browser. [Meer informatie](https://web.dev/deprecations)"
+  },
+  "lighthouse-core/audits/deprecations.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 waarschuwing gevonden}other{# waarschuwingen gevonden}}"
+  },
+  "lighthouse-core/audits/deprecations.js | failureTitle": {
+    "message": "Gebruikt beëindigde API's"
+  },
+  "lighthouse-core/audits/deprecations.js | title": {
+    "message": "Vermijdt beëindigde API's"
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | description": {
+    "message": "Applicatiecache is beëindigd. [Meer informatie](https://web.dev/appcache-manifest)"
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | displayValue": {
+    "message": "'{AppCacheManifest}' gevonden"
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | failureTitle": {
+    "message": "Gebruikt applicatiecache"
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | title": {
+    "message": "Vermijdt applicatiecache"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | description": {
+    "message": "Door een doctype op te geven, voorkom je dat de browser overschakelt naar de quirks-modus. [Meer informatie](https://web.dev/doctype)"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationBadDoctype": {
+    "message": "De naam van het doctype moet de tekenreeks `html` in kleine letters zijn"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationNoDoctype": {
+    "message": "Document moet een doctype bevatten"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationPublicId": {
+    "message": "Verwachtte een lege tekenreeks voor publicId"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationSystemId": {
+    "message": "Verwachtte een lege tekenreeks voor systemId"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | failureTitle": {
+    "message": "Pagina heeft geen html-doctype en activeert dus de quirks-modus"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | title": {
+    "message": "Pagina bevat html-doctype"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | columnElement": {
+    "message": "Element"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | columnStatistic": {
+    "message": "Statistiek"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | columnValue": {
+    "message": "Waarde"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | description": {
+    "message": "Ontwikkelaars van browsers raden aan dat pagina's minder dan ~1.500 DOM-elementen bevatten. De ideale hoeveelheid bestaat uit vertakkingen met < 32 elementen en minder dan 60 onder-/bovenliggende elementen. Een grote DOM kan het geheugengebruik vergroten, en [stijlberekeningen](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations) en kostbare [dynamische aanpassingen in de vormgeving](https://developers.google.com/speed/articles/reflow) veroorzaken. [Meer informatie](https://web.dev/dom-size)"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 element}other{# elementen}}"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | failureTitle": {
+    "message": "Vermijd een overmatig grote DOM"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | statisticDOMDepth": {
+    "message": "Maximum DOM-diepte"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | statisticDOMElements": {
+    "message": "Totaal aantal DOM-elementen"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | statisticDOMWidth": {
+    "message": "Maximum aantal onderliggende elementen"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | title": {
+    "message": "Vermijdt een overmatige grote DOM"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | columnRel": {
+    "message": "Rel"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | columnTarget": {
+    "message": "Doel"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | description": {
+    "message": "Voeg `rel=\"noopener\"` of `rel=\"noreferrer\"` toe aan eventuele externe links om de prestaties te verbeteren en kwetsbaarheden in de beveiliging te voorkomen. [Meer informatie](https://web.dev/external-anchors-use-rel-noopener)"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | failureTitle": {
+    "message": "Links naar cross-origin-bestemmingen zijn onveilig"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | title": {
+    "message": "Links naar cross-origin-bestemmingen zijn veilig"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | warning": {
+    "message": "Kan geen bestemming bepalen voor ankeradvertentie ({anchorHTML}). Als deze niet wordt gebruikt als hyperlink, overweeg dan om target=_blank te verwijderen."
+  },
+  "lighthouse-core/audits/dobetterweb/geolocation-on-start.js | description": {
+    "message": "Gebruikers wantrouwen of raken in de war van sites die vragen om hun locatie zonder context. Overweeg het verzoek in plaats daarvan te koppelen aan gebruikershandelingen. [Meer informatie](https://web.dev/geolocation-on-start)"
+  },
+  "lighthouse-core/audits/dobetterweb/geolocation-on-start.js | failureTitle": {
+    "message": "Verzoekt om de geolocatierechten bij laden van pagina"
+  },
+  "lighthouse-core/audits/dobetterweb/geolocation-on-start.js | title": {
+    "message": "Vermijdt verzoeken om de geolocatierechten bij laden van pagina"
+  },
+  "lighthouse-core/audits/dobetterweb/js-libraries.js | columnVersion": {
+    "message": "Versie"
+  },
+  "lighthouse-core/audits/dobetterweb/js-libraries.js | description": {
+    "message": "Alle front end JavaScript-bibliotheken op de pagina gedetecteerd. [Meer informatie](https://web.dev/js-libraries)"
+  },
+  "lighthouse-core/audits/dobetterweb/js-libraries.js | title": {
+    "message": "Gedetecteerde JavaScript-bibliotheken"
+  },
+  "lighthouse-core/audits/dobetterweb/no-document-write.js | description": {
+    "message": "Externe scripts die dynamisch worden geïnjecteerd via `document.write()` kunnen bij gebruikers met een langzame verbinding het laden van de pagina met tientallen seconden vertragen. [Meer informatie](https://web.dev/no-document-write)"
+  },
+  "lighthouse-core/audits/dobetterweb/no-document-write.js | failureTitle": {
+    "message": "Gebruikt `document.write()`"
+  },
+  "lighthouse-core/audits/dobetterweb/no-document-write.js | title": {
+    "message": "Vermijdt `document.write()`"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | columnSeverity": {
+    "message": "Meest ernstig"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | columnVersion": {
+    "message": "Bibliotheekversie"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | columnVuln": {
+    "message": "Aantal kwetsbaarheden"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | description": {
+    "message": "Sommige scripts van derden kunnen bekende beveiligingskwetsbaarheden bevatten die makkelijk te identificeren en door aanvallers te gebruiken zijn. [Meer informatie](https://web.dev/no-vulnerable-libraries)"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 kwetsbaarheid gedetecteerd}other{# kwetsbaarheden gedetecteerd}}"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | failureTitle": {
+    "message": "Omvat front end JavaScript-bibliotheken met bekende beveiligingskwetsbaarheden"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | rowSeverityHigh": {
+    "message": "Hoog"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | rowSeverityLow": {
+    "message": "Laag"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | rowSeverityMedium": {
+    "message": "Normaal"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | title": {
+    "message": "Vermijdt front end JavaScript-bibliotheken met bekende beveiligingskwetsbaarheden"
+  },
+  "lighthouse-core/audits/dobetterweb/notification-on-start.js | description": {
+    "message": "Gebruikers wantrouwen of raken in de war van sites die vragen om het versturen van meldingen zonder context. Overweeg het verzoek in plaats daarvan te koppelen aan gebruikersgebaren. [Meer informatie](https://web.dev/notification-on-start)"
+  },
+  "lighthouse-core/audits/dobetterweb/notification-on-start.js | failureTitle": {
+    "message": "Verzoekt om de meldingsrechten bij laden van pagina"
+  },
+  "lighthouse-core/audits/dobetterweb/notification-on-start.js | title": {
+    "message": "Vermijdt verzoeken om de meldingsrechten bij laden van pagina"
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | columnFailingElem": {
+    "message": "Mislukte elementen"
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | description": {
+    "message": "Verhindering van het plakken van wachtwoorden ondermijnt een goed beveiligingsbeleid. [Meer informatie](https://web.dev/password-inputs-can-be-pasted-into)"
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | failureTitle": {
+    "message": "Voorkomt dat gebruikers kunnen plakken in wachtwoordvelden"
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | title": {
+    "message": "Laat gebruikers plakken in wachtwoordvelden"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | columnProtocol": {
+    "message": "Protocol"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | description": {
+    "message": "HTTP/2 beschikt over veel voordelen ten opzichte van HTTP/1.1, waaronder binaire headers, multiplexing en serverpush. [Meer informatie](https://web.dev/uses-http2)"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 verzoek niet weergegeven via HTTP/2}other{# verzoeken niet weergegeven via HTTP/2}}"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | failureTitle": {
+    "message": "Gebruikt HTTP/2 niet voor alle bronnen"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | title": {
+    "message": "Gebruikt HTTP/2 voor de eigen bronnen"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-passive-event-listeners.js | description": {
+    "message": "Overweeg je touch- en event-listeners te markeren als `passive` om de scrollprestaties van je pagina te verbeteren. [Meer informatie](https://web.dev/uses-passive-event-listeners)"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-passive-event-listeners.js | failureTitle": {
+    "message": "Gebruikt geen passieve listeners om scrollprestaties te verbeteren"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-passive-event-listeners.js | title": {
+    "message": "Gebruikt passieve listeners voor de verbetering van de scrollprestaties"
+  },
+  "lighthouse-core/audits/errors-in-console.js | columnDesc": {
+    "message": "Beschrijving"
+  },
+  "lighthouse-core/audits/errors-in-console.js | description": {
+    "message": "Fouten die op de console worden geregistreerd, geven aan dat er onopgeloste problemen zijn. Ze kunnen afkomstig zijn van niet-uitgevoerde netwerkverzoeken en andere problemen met de browser. [Meer informatie](https://web.dev/errors-in-console)"
+  },
+  "lighthouse-core/audits/errors-in-console.js | failureTitle": {
+    "message": "Er zijn browserfouten gelogd op de console"
+  },
+  "lighthouse-core/audits/errors-in-console.js | title": {
+    "message": "Er zijn geen browserfouten gelogd op de console"
+  },
+  "lighthouse-core/audits/font-display.js | description": {
+    "message": "Maak gebruik van de css-functie 'font-display' om ervoor te zorgen dat tekst zichtbaar is voor gebruikers terwijl weblettertypen worden geladen. [Meer informatie](https://developers.google.com/web/updates/2016/02/font-display)"
+  },
+  "lighthouse-core/audits/font-display.js | failureTitle": {
+    "message": "Zorg ervoor dat tekst zichtbaar blijft tijdens het laden van weblettertypen"
+  },
+  "lighthouse-core/audits/font-display.js | title": {
+    "message": "Alle tekst blijft zichtbaar tijdens het laden van weblettertypen"
+  },
+  "lighthouse-core/audits/font-display.js | undeclaredFontURLWarning": {
+    "message": "Lighthouse kan de waarde voor de lettertypeweergave niet automatisch controleren voor de volgende URL: {fontURL}."
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | columnActual": {
+    "message": "Beeldverhouding (werkelijk)"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | columnDisplayed": {
+    "message": "Beeldverhouding (weergegeven)"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | description": {
+    "message": "De weergaveafmetingen van afbeeldingen moeten overeenkomen met de natuurlijke beeldverhouding. [Meer informatie](https://web.dev/image-aspect-ratio)"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | failureTitle": {
+    "message": "Geeft afbeeldingen weer met een onjuiste beeldverhouding"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | title": {
+    "message": "Geeft afbeeldingen weer met een juiste beeldverhouding"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | warningCompute": {
+    "message": "Ongeldige informatie over afbeeldingsformaat {url}"
+  },
+  "lighthouse-core/audits/installable-manifest.js | description": {
+    "message": "Browsers kunnen gebruikers proactief vragen je app aan hun startscherm toe te voegen. Dit kan leiden tot grotere betrokkenheid. [Meer informatie](https://developers.google.com/web/tools/lighthouse/audits/install-prompt)"
+  },
+  "lighthouse-core/audits/installable-manifest.js | failureTitle": {
+    "message": "Het manifest van de web-app voldoet niet aan de vereisten voor installeerbaarheid"
+  },
+  "lighthouse-core/audits/installable-manifest.js | title": {
+    "message": "Het manifest van de web-app voldoet aan de vereisten voor installeerbaarheid"
+  },
+  "lighthouse-core/audits/is-on-https.js | columnInsecureURL": {
+    "message": "Niet-beveiligde URL"
+  },
+  "lighthouse-core/audits/is-on-https.js | description": {
+    "message": "Alle sites moeten worden beschermd met HTTPS, zelfs sites die geen gevoelige gegevens verwerken. HTTPS voorkomt dat indringers de communicatie tussen je app en je gebruikers manipuleren of hier passief naar luisteren en is een vereiste voor HTTP/2 en veel nieuwe webplatform-API's. [Meer informatie](https://web.dev/is-on-https)"
+  },
+  "lighthouse-core/audits/is-on-https.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 niet-beveiligd verzoek gevonden}other{# niet-beveiligde verzoeken gevonden}}"
+  },
+  "lighthouse-core/audits/is-on-https.js | failureTitle": {
+    "message": "Gebruikt geen HTTPS"
+  },
+  "lighthouse-core/audits/is-on-https.js | title": {
+    "message": "Gebruikt HTTPS"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | description": {
+    "message": "Snel laden van een pagina via een mobiel netwerk zorgt voor een goede mobiele gebruikerservaring. [Meer informatie](https://developers.google.com/web/tools/lighthouse/audits/fast-3g)"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | displayValueText": {
+    "message": "Interactief na {timeInMs, number, seconds} s"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | displayValueTextWithOverride": {
+    "message": "Interactief op gesimuleerd mobiel netwerk binnen {timeInMs, number, seconds} s"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | explanationLoadSlow": {
+    "message": "Je pagina wordt te langzaam geladen en is niet binnen tien seconden interactief. Bekijk de mogelijkheden en diagnostische gegevens in het gedeelte Prestaties voor meer informatie over verbeteringen."
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | failureTitle": {
+    "message": "De pagina wordt niet snel genoeg geladen via mobiele netwerken"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | title": {
+    "message": "De pagina wordt snel genoeg geladen via mobiele netwerken"
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | columnCategory": {
+    "message": "Categorie"
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | description": {
+    "message": "Overweeg minder tijd te besteden aan het parseren, compileren en uitvoeren van JS. Het leveren van kleinere JS-payloads kan hierbij helpen."
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | failureTitle": {
+    "message": "Primaire threadbewerkingen minimaliseren"
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | title": {
+    "message": "Primaire threadbewerkingen minimaliseren"
+  },
+  "lighthouse-core/audits/manual/pwa-cross-browser.js | description": {
+    "message": "Sites moeten werken in alle grote browsers om zoveel mogelijk gebruikers te bereiken. [Meer informatie](https://developers.google.com/web/progressive-web-apps/checklist#site-works-cross-browser)"
+  },
+  "lighthouse-core/audits/manual/pwa-cross-browser.js | title": {
+    "message": "De site werkt in verschillende browsers"
+  },
+  "lighthouse-core/audits/manual/pwa-each-page-has-url.js | description": {
+    "message": "Zorg ervoor dat deep links voor afzonderlijke pagina's via een URL kunnen worden opgenomen en dat URL's uniek zijn zodat ze op social media kunnen worden gedeeld. [Meer informatie](https://developers.google.com/web/progressive-web-apps/checklist#each-page-has-a-url)"
+  },
+  "lighthouse-core/audits/manual/pwa-each-page-has-url.js | title": {
+    "message": "Elke pagina heeft een URL"
+  },
+  "lighthouse-core/audits/manual/pwa-page-transitions.js | description": {
+    "message": "Overgangen moeten snel aanvoelen terwijl je op een pagina tikt, zelfs bij gebruik van een langzaam netwerk. Dit is een sleutel tot waargenomen prestaties. [Meer informatie](https://developers.google.com/web/progressive-web-apps/checklist#page-transitions-dont-feel-like-they-block-on-the-network)"
+  },
+  "lighthouse-core/audits/manual/pwa-page-transitions.js | title": {
+    "message": "Paginaovergangen voelen niet alsof ze vastlopen op het netwerk"
+  },
+  "lighthouse-core/audits/metrics/estimated-input-latency.js | description": {
+    "message": "Geschatte wachttijd voor invoer is een schatting van de tijd die je app nodig heeft om te reageren op gebruikersinvoer (in milliseconden) gemeten voor de drukste periode van 5 seconden tijdens het laden van de pagina. Als de wachttijd langer dan 50 ms is, kunnen gebruikers je app als traag beschouwen. [Meer informatie](https://developers.google.com/web/tools/lighthouse/audits/estimated-input-latency)"
+  },
+  "lighthouse-core/audits/metrics/estimated-input-latency.js | title": {
+    "message": "Geschatte invoerwachttijd"
+  },
+  "lighthouse-core/audits/metrics/first-contentful-paint.js | description": {
+    "message": "'Eerste tekenbewerking met content' (FCP) geeft het tijdstip aan waarop de eerste tekst of afbeelding wordt weergegeven. [Meer informatie](https://developers.google.com/web/tools/lighthouse/audits/first-contentful-paint)"
+  },
+  "lighthouse-core/audits/metrics/first-contentful-paint.js | title": {
+    "message": "Eerste weergave met content (FCP)"
+  },
+  "lighthouse-core/audits/metrics/first-cpu-idle.js | description": {
+    "message": "'Eerste keer dat CPU inactief was' geeft de eerste keer aan dat de primaire thread van de pagina rustig genoeg was om invoer te verwerken. [Meer informatie](https://developers.google.com/web/tools/lighthouse/audits/first-interactive)"
+  },
+  "lighthouse-core/audits/metrics/first-cpu-idle.js | title": {
+    "message": "Eerste keer dat CPU inactief was"
+  },
+  "lighthouse-core/audits/metrics/first-meaningful-paint.js | description": {
+    "message": "'Eerste nuttige weergave' (FMP) meet wanneer de primaire content van een pagina zichtbaar is. [Meer informatie](https://developers.google.com/web/tools/lighthouse/audits/first-meaningful-paint)"
+  },
+  "lighthouse-core/audits/metrics/first-meaningful-paint.js | title": {
+    "message": "Eerste nuttige weergave (FMP)"
+  },
+  "lighthouse-core/audits/metrics/interactive.js | description": {
+    "message": "Tijd tot interactief is de hoeveelheid tijd die nodig is voordat een pagina volledig interactief is. [Meer informatie](https://developers.google.com/web/tools/lighthouse/audits/consistently-interactive)"
+  },
+  "lighthouse-core/audits/metrics/interactive.js | title": {
+    "message": "Tijd tot interactief"
+  },
+  "lighthouse-core/audits/metrics/max-potential-fid.js | description": {
+    "message": "De maximale potentiële vertraging voor de eerste invoer die gebruikers kunnen ervaren, is de duur (in milliseconden) van de langste taak. [Meer informatie](https://developers.google.com/web/updates/2018/05/first-input-delay)"
+  },
+  "lighthouse-core/audits/metrics/max-potential-fid.js | title": {
+    "message": "Max. potentiële eerste invoervertraging"
+  },
+  "lighthouse-core/audits/metrics/speed-index.js | description": {
+    "message": "Snelheidsindex laat zien hoe snel de content van een pagina zichtbaar is. [Meer informatie](https://developers.google.com/web/tools/lighthouse/audits/speed-index)"
+  },
+  "lighthouse-core/audits/metrics/speed-index.js | title": {
+    "message": "Snelheidsindex"
+  },
+  "lighthouse-core/audits/metrics/total-blocking-time.js | description": {
+    "message": "Som van alle perioden tussen 'Eerste tekenbewerking met content' (FCP) en 'Tijd tot interactief', wanneer de taaklengte langer duurt dan 50 ms, aangegeven in milliseconden."
+  },
+  "lighthouse-core/audits/metrics/total-blocking-time.js | title": {
+    "message": "Totale geblokkeerde tijd"
+  },
+  "lighthouse-core/audits/network-rtt.js | description": {
+    "message": "Retourtijden (RTT) van netwerken hebben een grote invloed op de prestaties. Een hoge RTT naar een beginpunt geeft aan dat de prestaties van servers dichter bij de gebruiker kunnen worden verbeterd. [Meer informatie](https://hpbn.co/primer-on-latency-and-bandwidth/)"
+  },
+  "lighthouse-core/audits/network-rtt.js | title": {
+    "message": "Retourtijden van netwerk"
+  },
+  "lighthouse-core/audits/network-server-latency.js | description": {
+    "message": "Serverwachttijden kunnen invloed hebben op webprestaties. Als de serverwachttijd van een beginpunt hoog is, is dit een indicatie dat de server overbelast is of slechte backend-prestaties levert. [Meer informatie](https://hpbn.co/primer-on-web-performance/#analyzing-the-resource-waterfall)"
+  },
+  "lighthouse-core/audits/network-server-latency.js | title": {
+    "message": "Wachttijden van server-backend"
+  },
+  "lighthouse-core/audits/offline-start-url.js | description": {
+    "message": "Met een service worker kan je web-app betrouwbaar functioneren bij onvoorspelbare netwerkomstandigheden. [Meer informatie](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)"
+  },
+  "lighthouse-core/audits/offline-start-url.js | failureTitle": {
+    "message": "`start_url` retourneert geen 200-statuscode wanneer de pagina offline is"
+  },
+  "lighthouse-core/audits/offline-start-url.js | title": {
+    "message": "`start_url` retourneert een 200-statuscode wanneer de pagina offline is"
+  },
+  "lighthouse-core/audits/offline-start-url.js | warningCantStart": {
+    "message": "Lighthouse kan de `start_url` in het manifest niet lezen. Daarom is aangenomen dat de `start_url` de URL van het document is. Foutmelding: '{manifestWarning}'."
+  },
+  "lighthouse-core/audits/performance-budget.js | columnOverBudget": {
+    "message": "Over het budget"
+  },
+  "lighthouse-core/audits/performance-budget.js | description": {
+    "message": "Houd de hoeveelheid en grootte van netwerkverzoeken onder de door het verstrekte prestatiebudget ingestelde doelen. [Meer informatie](https://developers.google.com/web/tools/lighthouse/audits/budgets)"
+  },
+  "lighthouse-core/audits/performance-budget.js | requestCountOverBudget": {
+    "message": "{count,plural, =1{1 verzoek}other{# verzoeken}}"
+  },
+  "lighthouse-core/audits/performance-budget.js | title": {
+    "message": "Prestatiebudget"
+  },
+  "lighthouse-core/audits/redirects-http.js | description": {
+    "message": "Als je HTTPS al hebt ingesteld, zorg je ervoor dat je al het HTTP-verkeer omleidt naar HTTPS om beveiligde webfuncties voor alle gebruikers te activeren. [Meer informatie](https://developers.google.com/web/tools/lighthouse/audits/http-redirects-to-https)"
+  },
+  "lighthouse-core/audits/redirects-http.js | failureTitle": {
+    "message": "Hiermee wordt HTTP-verkeer niet omgeleid naar HTTPS"
+  },
+  "lighthouse-core/audits/redirects-http.js | title": {
+    "message": "Hiermee wordt HTTP-verkeer omgeleid naar HTTPS"
+  },
+  "lighthouse-core/audits/redirects.js | description": {
+    "message": "Omleidingen zorgen voor extra vertraging voordat de pagina kan worden geladen. [Meer informatie](https://developers.google.com/web/tools/lighthouse/audits/redirects)"
+  },
+  "lighthouse-core/audits/redirects.js | title": {
+    "message": "Vermijd meerdere pagina-omleidingen"
+  },
+  "lighthouse-core/audits/resource-summary.js | description": {
+    "message": "Voeg een budget.json-bestand toe om budgetten in te stellen voor de hoeveelheid en grootte van paginabronnen. [Meer informatie](https://developers.google.com/web/tools/lighthouse/audits/budgets)"
+  },
+  "lighthouse-core/audits/resource-summary.js | displayValue": {
+    "message": "{requestCount,plural, =1{1 verzoek • {byteCount, number, bytes} KB}other{# verzoeken • {byteCount, number, bytes} KB}}"
+  },
+  "lighthouse-core/audits/resource-summary.js | title": {
+    "message": "Houd het aantal verzoeken laag en de overdrachtsgrootte klein"
+  },
+  "lighthouse-core/audits/seo/canonical.js | description": {
+    "message": "Canonieke links geven een suggestie voor welke URL moet worden weergegeven in de zoekresultaten. [Meer informatie](https://web.dev/canonical)"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationConflict": {
+    "message": "Meerdere conflicterende URL's ({urlList})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationDifferentDomain": {
+    "message": "Wijst naar een ander domein ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationInvalid": {
+    "message": "Ongeldige URL ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationPointsElsewhere": {
+    "message": "Wijst naar een andere `hreflang`-locatie ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationRelative": {
+    "message": "Relatieve URL ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationRoot": {
+    "message": "Verwijst naar de root-URL van het domein (de homepage), in plaats van een equivalente pagina van de content"
+  },
+  "lighthouse-core/audits/seo/canonical.js | failureTitle": {
+    "message": "Document bevat geen geldig `rel=canonical`"
+  },
+  "lighthouse-core/audits/seo/canonical.js | title": {
+    "message": "Document bevat een geldige `rel=canonical`"
+  },
+  "lighthouse-core/audits/seo/font-size.js | description": {
+    "message": "Lettergrootten kleiner dan 12 pixels zijn te klein om leesbaar te zijn en leiden ertoe dat mobiele bezoekers hun 'vingers moeten 'samenknijpen' om te zoomen voordat ze de tekst kunnen lezen. Probeer om meer dan 60% van de paginatekst gelijk aan of groter dan 12 pixels te maken. [Meer informatie](https://web.dev/font-size)"
+  },
+  "lighthouse-core/audits/seo/font-size.js | displayValue": {
+    "message": "{decimalProportion, number, extendedPercent} leesbare tekst"
+  },
+  "lighthouse-core/audits/seo/font-size.js | explanationViewport": {
+    "message": "Tekst is onleesbaar omdat er geen kijkvenstermetatag is geoptimaliseerd voor mobiele schermen."
+  },
+  "lighthouse-core/audits/seo/font-size.js | explanationWithDisclaimer": {
+    "message": "{decimalProportion, number, extendedPercent} van de tekst is te klein (op basis van een voorbeeld van {decimalProportionVisited, number, extendedPercent})."
+  },
+  "lighthouse-core/audits/seo/font-size.js | failureTitle": {
+    "message": "Document gebruikt geen leesbare lettergrootten"
+  },
+  "lighthouse-core/audits/seo/font-size.js | title": {
+    "message": "Document gebruikt leesbare lettergrootten"
+  },
+  "lighthouse-core/audits/seo/hreflang.js | description": {
+    "message": "hreflang-links laten zoekmachines weten welke versie van een pagina ze moeten vermelden in zoekresultaten voor een bepaalde taal of regio. [Meer informatie](https://web.dev/hreflang)"
+  },
+  "lighthouse-core/audits/seo/hreflang.js | failureTitle": {
+    "message": "Document bevat geen geldige `hreflang`"
+  },
+  "lighthouse-core/audits/seo/hreflang.js | title": {
+    "message": "Document bevat een geldige `hreflang`"
+  },
+  "lighthouse-core/audits/seo/http-status-code.js | description": {
+    "message": "Pagina's met ongeldige HTTP-statuscodes worden mogelijk niet juist geïndexeerd. [Meer informatie](https://web.dev/http-status-code)"
+  },
+  "lighthouse-core/audits/seo/http-status-code.js | failureTitle": {
+    "message": "Pagina bevat ongeldige HTTP-statuscode"
+  },
+  "lighthouse-core/audits/seo/http-status-code.js | title": {
+    "message": "Pagina bevat geldige HTTP-statuscode"
+  },
+  "lighthouse-core/audits/seo/is-crawlable.js | description": {
+    "message": "Zoekmachines kunnen je pagina's niet opnemen in zoekresultaten als de zoekmachines geen rechten hebben om ze te crawlen. [Meer informatie](https://web.dev/is-crawable)"
+  },
+  "lighthouse-core/audits/seo/is-crawlable.js | failureTitle": {
+    "message": "Pagina is geblokkeerd tegen indexeren"
+  },
+  "lighthouse-core/audits/seo/is-crawlable.js | title": {
+    "message": "Pagina is niet geblokkeerd tegen indexeren"
+  },
+  "lighthouse-core/audits/seo/link-text.js | description": {
+    "message": "Aan de hand van beschrijvende linktekst kunnen zoekmachines je content begrijpen. [Meer informatie](https://web.dev/link-text)"
+  },
+  "lighthouse-core/audits/seo/link-text.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 link gevonden}other{# links gevonden}}"
+  },
+  "lighthouse-core/audits/seo/link-text.js | failureTitle": {
+    "message": "Links bevatten geen beschrijvende tekst"
+  },
+  "lighthouse-core/audits/seo/link-text.js | title": {
+    "message": "Links bevatten beschrijvende tekst"
+  },
+  "lighthouse-core/audits/seo/manual/structured-data.js | description": {
+    "message": "Voer de [Tool voor het testen van gestructureerde gegevens](https://search.google.com/structured-data/testing-tool/) en de [Linter voor gestructureerde gegevens](http://linter.structured-data.org/) uit om gestructureerde gegevens te valideren. [Meer informatie](https://web.dev/structured-data)"
+  },
+  "lighthouse-core/audits/seo/manual/structured-data.js | title": {
+    "message": "De gestructureerde gegevens zijn geldig"
+  },
+  "lighthouse-core/audits/seo/meta-description.js | description": {
+    "message": "Er kunnen metabeschrijvingen worden opgenomen in zoekresultaten voor een korte samenvatting van paginacontent. [Meer informatie](https://web.dev/meta-description)"
+  },
+  "lighthouse-core/audits/seo/meta-description.js | explanation": {
+    "message": "Beschrijvingstekst is leeg."
+  },
+  "lighthouse-core/audits/seo/meta-description.js | failureTitle": {
+    "message": "Document bevat geen metabeschrijving"
+  },
+  "lighthouse-core/audits/seo/meta-description.js | title": {
+    "message": "Document bevat een metabeschrijving"
+  },
+  "lighthouse-core/audits/seo/plugins.js | description": {
+    "message": "Zoekmachines kunnen content van plug-ins niet indexeren en veel apparaten beperken plug-ins of ondersteunen deze niet. [Meer informatie](https://web.dev/plugins)"
+  },
+  "lighthouse-core/audits/seo/plugins.js | failureTitle": {
+    "message": "Document gebruikt plug-ins"
+  },
+  "lighthouse-core/audits/seo/plugins.js | title": {
+    "message": "Document vermijdt plug-ins"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | description": {
+    "message": "Als je robots.txt-bestand niet juist is opgemaakt, begrijpen crawlers mogelijk niet hoe je wilt dat je website wordt gecrawld of geïndexeerd. [Meer informatie](https://web.dev/robots-txt)"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | displayValueHttpBadCode": {
+    "message": "Verzoek voor robots.txt heeft volgende HTTP-status geretourneerd: {statusCode}"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | displayValueValidationError": {
+    "message": "{itemCount,plural, =1{1 fout gevonden}other{# fouten gevonden}}"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | explanation": {
+    "message": "Lighthouse kan geen robots.txt-bestand downloaden"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | failureTitle": {
+    "message": "robots.txt is niet geldig"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | title": {
+    "message": "robots.txt is geldig"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | description": {
+    "message": "Interactieve elementen, zoals knoppen en links, moeten groot genoeg zijn (48 x 48 pixels) en moeten voldoende ruimte eromheen hebben, zodat er makkelijk op getikt kan worden zonder dat andere elementen worden aangeraakt. [Meer informatie](https://web.dev/tap-targets)"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | displayValue": {
+    "message": "{decimalProportion, number, percent} van de tikdoelen heeft een geschikt formaat"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | explanationViewportMetaNotOptimized": {
+    "message": "Tikdoelen zijn te klein, omdat er geen kijkvenstermetatag is geoptimaliseerd voor mobiele schermen"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | failureTitle": {
+    "message": "Tikdoelen hebben niet het juiste formaat"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | overlappingTargetHeader": {
+    "message": "Overlappend doel"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | tapTargetHeader": {
+    "message": "Tikdoel"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | title": {
+    "message": "Tikdoelen hebben het juiste formaat"
+  },
+  "lighthouse-core/audits/service-worker.js | description": {
+    "message": "De service worker is de technologie waarmee je app veel functies van progressive web-apps kan gebruiken, zoals offline functionaliteit, toevoegen aan het startscherm en pushmeldingen. [Meer informatie](https://developers.google.com/web/tools/lighthouse/audits/registered-service-worker)"
+  },
+  "lighthouse-core/audits/service-worker.js | explanationBadManifest": {
+    "message": "Deze pagina wordt beheerd door een service worker, maar er is geen `start_url` gevonden omdat het manifest niet kan worden geparseerd als geldig json-bestand"
+  },
+  "lighthouse-core/audits/service-worker.js | explanationBadStartUrl": {
+    "message": "Deze pagina wordt beheerd door een service worker, maar de `start_url` ({startUrl}) valt niet binnen het bereik van de service worker ({scopeUrl})"
+  },
+  "lighthouse-core/audits/service-worker.js | explanationNoManifest": {
+    "message": "Deze pagina wordt beheerd door een service worker, maar er is geen `start_url` gevonden omdat er geen manifest is opgehaald."
+  },
+  "lighthouse-core/audits/service-worker.js | explanationOutOfScope": {
+    "message": "Deze herkomst heeft een of meer service workers, maar de pagina ({pageUrl}) valt niet binnen het bereik."
+  },
+  "lighthouse-core/audits/service-worker.js | failureTitle": {
+    "message": "Registreert geen service worker die de pagina en `start_url` beheert"
+  },
+  "lighthouse-core/audits/service-worker.js | title": {
+    "message": "Registreert een service worker die de pagina en `start_url` beheert"
+  },
+  "lighthouse-core/audits/splash-screen.js | description": {
+    "message": "Een startscherm met een thema zorgt voor een gebruikerservaring van hoge kwaliteit wanneer gebruikers je app starten vanaf hun startscherm. [Meer informatie](https://developers.google.com/web/tools/lighthouse/audits/custom-splash-screen)"
+  },
+  "lighthouse-core/audits/splash-screen.js | failureTitle": {
+    "message": "Is niet geconfigureerd voor een aangepast startscherm"
+  },
+  "lighthouse-core/audits/splash-screen.js | title": {
+    "message": "Is geconfigureerd voor een aangepast startscherm"
+  },
+  "lighthouse-core/audits/themed-omnibox.js | description": {
+    "message": "Het thema van de adresbalk van de browser kan worden aangepast aan je site. [Meer informatie](https://developers.google.com/web/tools/lighthouse/audits/address-bar)"
+  },
+  "lighthouse-core/audits/themed-omnibox.js | failureTitle": {
+    "message": "Hiermee wordt geen themakleur voor de adresbalk ingesteld."
+  },
+  "lighthouse-core/audits/themed-omnibox.js | title": {
+    "message": "Hiermee wordt een themakleur voor de adresbalk ingesteld."
+  },
+  "lighthouse-core/audits/third-party-summary.js | columnBlockingTime": {
+    "message": "Tijd dat primaire thread is geblokkeerd"
+  },
+  "lighthouse-core/audits/third-party-summary.js | columnThirdParty": {
+    "message": "Derden"
+  },
+  "lighthouse-core/audits/third-party-summary.js | description": {
+    "message": "Code van derden kan van grote invloed zijn op de laadprestaties. Beperk het aantal overbodige externe providers en probeer code van derden te laden nadat je pagina primair is geladen. [Meer informatie](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/loading-third-party-javascript/)"
+  },
+  "lighthouse-core/audits/third-party-summary.js | displayValue": {
+    "message": "Code van derden heeft de primaire thread gedurende {timeInMs, number, milliseconds} ms geblokkeerd"
+  },
+  "lighthouse-core/audits/third-party-summary.js | failureTitle": {
+    "message": "De impact van code van derden beperken"
+  },
+  "lighthouse-core/audits/third-party-summary.js | title": {
+    "message": "Gebruik door derden"
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | description": {
+    "message": "'Tijd tot eerste byte' identificeert het tijdstip waarop je server een reactie stuurt. [Meer informatie](https://developers.google.com/web/tools/lighthouse/audits/ttfb)"
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | displayValue": {
+    "message": "Hoofddocument duurde {timeInMs, number, milliseconds} ms"
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | failureTitle": {
+    "message": "Beperk serverreactietijden (TTFB)"
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | title": {
+    "message": "Serverreactietijden zijn laag (TTFB)"
+  },
+  "lighthouse-core/audits/user-timings.js | columnDuration": {
+    "message": "Duur"
+  },
+  "lighthouse-core/audits/user-timings.js | columnStartTime": {
+    "message": "Begintijd"
+  },
+  "lighthouse-core/audits/user-timings.js | columnType": {
+    "message": "Type"
+  },
+  "lighthouse-core/audits/user-timings.js | description": {
+    "message": "Overweeg je app te voorzien van de API voor gebruikerstiming om de daadwerkelijke prestaties van je app tijdens belangrijke gebruikerservaringen te meten. [Meer informatie](https://developers.google.com/web/tools/lighthouse/audits/user-timing)"
+  },
+  "lighthouse-core/audits/user-timings.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 gebruikerstiming}other{# gebruikerstimings}}"
+  },
+  "lighthouse-core/audits/user-timings.js | title": {
+    "message": "Markeringen en metingen voor gebruikerstiming"
+  },
+  "lighthouse-core/audits/uses-rel-preconnect.js | crossoriginWarning": {
+    "message": "Er is een <link> voor vooraf verbinden gevonden voor {securityOrigin} maar deze is niet gebruikt door de browser. Controleer of je het `crossorigin`-kenmerk juist gebruikt."
+  },
+  "lighthouse-core/audits/uses-rel-preconnect.js | description": {
+    "message": "Overweeg hints voor `preconnect` of `dns-prefetch` van bronnen toe te voegen om vroege verbindingen met belangrijke externe herkomsten tot stand te brengen. [Meer informatie](https://developers.google.com/web/fundamentals/performance/resource-prioritization#preconnect)"
+  },
+  "lighthouse-core/audits/uses-rel-preconnect.js | title": {
+    "message": "Maak vooraf verbinding met vereiste herkomsten"
+  },
+  "lighthouse-core/audits/uses-rel-preload.js | crossoriginWarning": {
+    "message": "Er is een <link> voor vooraf laden gevonden voor {preloadURL} maar deze is niet gebruikt door de browser. Controleer of je het `crossorigin`-kenmerk juist gebruikt."
+  },
+  "lighthouse-core/audits/uses-rel-preload.js | description": {
+    "message": "Overweeg `<link rel=preload>` te gebruiken om prioriteit te geven aan het ophalen van bronnen die momenteel later tijdens het laden van de pagina worden opgehaald. [Meer informatie](https://developers.google.com/web/tools/lighthouse/audits/preload)"
+  },
+  "lighthouse-core/audits/uses-rel-preload.js | title": {
+    "message": "Laad belangrijke verzoeken vooraf"
+  },
+  "lighthouse-core/audits/viewport.js | description": {
+    "message": "Voeg een `<meta name=\"viewport\">`-tag toe om je app te optimaliseren voor mobiele schermen. [Meer informatie](https://developers.google.com/web/tools/lighthouse/audits/has-viewport-meta-tag)"
+  },
+  "lighthouse-core/audits/viewport.js | explanationNoTag": {
+    "message": "Geen `<meta name=\"viewport\">`-tag gevonden"
+  },
+  "lighthouse-core/audits/viewport.js | failureTitle": {
+    "message": "Bevat geen `<meta name=\"viewport\">`-tag met `width` of `initial-scale`"
+  },
+  "lighthouse-core/audits/viewport.js | title": {
+    "message": "Bevat een `<meta name=\"viewport\">`-tag met `width` of `initial-scale`"
+  },
+  "lighthouse-core/audits/without-javascript.js | description": {
+    "message": "Je app moet wat content weergeven wanneer JavaScript is uitgeschakeld, zelfs als het alleen maar een waarschuwing aan de gebruiker is dat JavaScript is vereist om de app te gebruiken. [Meer informatie](https://developers.google.com/web/tools/lighthouse/audits/no-js)"
+  },
+  "lighthouse-core/audits/without-javascript.js | explanation": {
+    "message": "Het hoofdgedeelte van de pagina moet wat content weergeven als de bijbehorende scripts niet beschikbaar zijn."
+  },
+  "lighthouse-core/audits/without-javascript.js | failureTitle": {
+    "message": "Biedt geen reservecontent wanneer JavaScript niet beschikbaar is"
+  },
+  "lighthouse-core/audits/without-javascript.js | title": {
+    "message": "Bevat wat content wanneer JavaScript niet beschikbaar is"
+  },
+  "lighthouse-core/audits/works-offline.js | description": {
+    "message": "Als je een progressive web-app bouwt, kun je overwegen een service worker te gebruiken zodat je app offline kan worden gebruikt. [Meer informatie](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)"
+  },
+  "lighthouse-core/audits/works-offline.js | failureTitle": {
+    "message": "De huidige pagina retourneert geen 200-statuscode wanneer de pagina offline is"
+  },
+  "lighthouse-core/audits/works-offline.js | title": {
+    "message": "De huidige pagina retourneert een 200-statuscode wanneer de pagina offline is"
+  },
+  "lighthouse-core/audits/works-offline.js | warningNoLoad": {
+    "message": "De pagina wordt mogelijk niet geladen omdat je test-URL ({requested}) is omgeleid naar '{final}'. Test de tweede URL rechtstreeks."
+  },
+  "lighthouse-core/config/default-config.js | a11yAriaGroupDescription": {
+    "message": "Dit zijn suggesties om het gebruik van ARIA in je app te verbeteren, wat kan leiden tot betere functionaliteit voor gebruikers van hulptechnologie, zoals een schermlezer."
+  },
+  "lighthouse-core/config/default-config.js | a11yAriaGroupTitle": {
+    "message": "ARIA"
+  },
+  "lighthouse-core/config/default-config.js | a11yAudioVideoGroupDescription": {
+    "message": "Dit zijn mogelijkheden om alternatieve content voor audio en video te bieden. Dit verbetert mogelijk de functionaliteit voor gebruikers met een visuele of gehoorbeperking."
+  },
+  "lighthouse-core/config/default-config.js | a11yAudioVideoGroupTitle": {
+    "message": "Audio en video"
+  },
+  "lighthouse-core/config/default-config.js | a11yBestPracticesGroupDescription": {
+    "message": "Deze items geven praktische tips voor algemene toegankelijkheid aan."
+  },
+  "lighthouse-core/config/default-config.js | a11yBestPracticesGroupTitle": {
+    "message": "Praktische tips"
+  },
+  "lighthouse-core/config/default-config.js | a11yCategoryDescription": {
+    "message": "Deze controles geven mogelijkheden aan om [de toegang tot je web-app te verbeteren](https://developers.google.com/web/fundamentals/accessibility). Alleen een subset van toegankelijkheidsproblemen kan automatisch worden gedetecteerd. Daarom wordt handmatig testen ook aangeraden."
+  },
+  "lighthouse-core/config/default-config.js | a11yCategoryManualDescription": {
+    "message": "Deze items gaan over gebieden die niet kunnen worden getest met een automatische testtool. Bekijk meer informatie in onze gids over [het uitvoeren van een toegankelijkheidscontrole](https://developers.google.com/web/fundamentals/accessibility/how-to-review)."
+  },
+  "lighthouse-core/config/default-config.js | a11yCategoryTitle": {
+    "message": "Toegankelijkheid"
+  },
+  "lighthouse-core/config/default-config.js | a11yColorContrastGroupDescription": {
+    "message": "Dit zijn suggesties om de leesbaarheid van je content te verbeteren."
+  },
+  "lighthouse-core/config/default-config.js | a11yColorContrastGroupTitle": {
+    "message": "Contrast"
+  },
+  "lighthouse-core/config/default-config.js | a11yLanguageGroupDescription": {
+    "message": "Dit zijn suggesties om de interpretatie van je content door gebruikers in verschillende landen te verbeteren."
+  },
+  "lighthouse-core/config/default-config.js | a11yLanguageGroupTitle": {
+    "message": "Internationalisering en lokalisatie"
+  },
+  "lighthouse-core/config/default-config.js | a11yNamesLabelsGroupDescription": {
+    "message": "Dit zijn suggesties om de semantiek van de opties in je app te verbeteren. Zo kun je de functionaliteit verbeteren voor gebruikers van hulptechnologie, zoals een schermlezer."
+  },
+  "lighthouse-core/config/default-config.js | a11yNamesLabelsGroupTitle": {
+    "message": "Namen en labels"
+  },
+  "lighthouse-core/config/default-config.js | a11yNavigationGroupDescription": {
+    "message": "Dit zijn de mogelijkheden om toetsenbordnavigatie in je app te verbeteren."
+  },
+  "lighthouse-core/config/default-config.js | a11yNavigationGroupTitle": {
+    "message": "Navigatie"
+  },
+  "lighthouse-core/config/default-config.js | a11yTablesListsVideoGroupDescription": {
+    "message": "Dit zijn mogelijkheden om de functionaliteit voor het lezen van gegevens in tabellen of lijsten te verbeteren met hulptechnologie, zoals een schermlezer."
+  },
+  "lighthouse-core/config/default-config.js | a11yTablesListsVideoGroupTitle": {
+    "message": "Tabellen en lijsten"
+  },
+  "lighthouse-core/config/default-config.js | bestPracticesCategoryTitle": {
+    "message": "Praktische tips"
+  },
+  "lighthouse-core/config/default-config.js | budgetsGroupDescription": {
+    "message": "Prestatiebudgetten stellen normen in voor de prestaties van je site."
+  },
+  "lighthouse-core/config/default-config.js | budgetsGroupTitle": {
+    "message": "Budgetten"
+  },
+  "lighthouse-core/config/default-config.js | diagnosticsGroupDescription": {
+    "message": "Meer informatie over de prestaties van je app. Deze cijfers hebben geen [directe invloed](https://github.com/GoogleChrome/lighthouse/blob/d2ec9ffbb21de9ad1a0f86ed24575eda32c796f0/docs/scoring.md#how-are-the-scores-weighted) op de prestatiescore."
+  },
+  "lighthouse-core/config/default-config.js | diagnosticsGroupTitle": {
+    "message": "Diagnostische gegevens"
+  },
+  "lighthouse-core/config/default-config.js | firstPaintImprovementsGroupDescription": {
+    "message": "Het meest essentiële aspect van de prestaties is hoe snel pixels worden weergegeven op het scherm. Belangrijkste statistieken: eerste weergave met content (FCP), eerste nuttige weergave (FMP)"
+  },
+  "lighthouse-core/config/default-config.js | firstPaintImprovementsGroupTitle": {
+    "message": "Verbeteringen voor eerste weergave"
+  },
+  "lighthouse-core/config/default-config.js | loadOpportunitiesGroupDescription": {
+    "message": "Deze suggesties kunnen helpen je pagina sneller te laden. Ze hebben geen [directe invloed](https://github.com/GoogleChrome/lighthouse/blob/d2ec9ffbb21de9ad1a0f86ed24575eda32c796f0/docs/scoring.md#how-are-the-scores-weighted) op de prestatiescore."
+  },
+  "lighthouse-core/config/default-config.js | loadOpportunitiesGroupTitle": {
+    "message": "Aanbevelingen"
+  },
+  "lighthouse-core/config/default-config.js | metricGroupTitle": {
+    "message": "Statistieken"
+  },
+  "lighthouse-core/config/default-config.js | overallImprovementsGroupDescription": {
+    "message": "Verbeter de algemene laadfunctionaliteit, zodat de pagina zo snel mogelijk reageert en gebruiksklaar is. Belangrijkste statistieken: Tijd tot interactief, Snelheidsindex"
+  },
+  "lighthouse-core/config/default-config.js | overallImprovementsGroupTitle": {
+    "message": "Algemene verbeteringen"
+  },
+  "lighthouse-core/config/default-config.js | performanceCategoryTitle": {
+    "message": "Prestaties"
+  },
+  "lighthouse-core/config/default-config.js | pwaCategoryDescription": {
+    "message": "Deze controles valideren de aspecten van een progressive web-app. [Meer informatie](https://developers.google.com/web/progressive-web-apps/checklist)"
+  },
+  "lighthouse-core/config/default-config.js | pwaCategoryManualDescription": {
+    "message": "Deze controles worden vereist door de baseline [PWA-checklist](https://developers.google.com/web/progressive-web-apps/checklist) maar worden niet automatisch gecontroleerd door Lighthouse. Ze zijn niet van invloed op je score, maar het is wel belangrijk dat je ze handmatig verifieert."
+  },
+  "lighthouse-core/config/default-config.js | pwaCategoryTitle": {
+    "message": "Progressive web-app"
+  },
+  "lighthouse-core/config/default-config.js | pwaFastReliableGroupTitle": {
+    "message": "Snel en betrouwbaar"
+  },
+  "lighthouse-core/config/default-config.js | pwaInstallableGroupTitle": {
+    "message": "Installeerbaar"
+  },
+  "lighthouse-core/config/default-config.js | pwaOptimizedGroupTitle": {
+    "message": "Geoptimaliseerd voor PWA"
+  },
+  "lighthouse-core/config/default-config.js | seoCategoryDescription": {
+    "message": "Deze controles zorgen ervoor dat je pagina is geoptimaliseerd voor positionering in zoekmachineresultaten. Er zijn aanvullende factoren waarop Lighthouse niet controleert, die van invloed kunnen zijn op je positie in de zoekresultaten. [Meer informatie](https://support.google.com/webmasters/answer/35769)"
+  },
+  "lighthouse-core/config/default-config.js | seoCategoryManualDescription": {
+    "message": "Voer deze extra validators op je site uit om aanvullende praktische tips voor SEO te controleren."
+  },
+  "lighthouse-core/config/default-config.js | seoCategoryTitle": {
+    "message": "SEO"
+  },
+  "lighthouse-core/config/default-config.js | seoContentGroupDescription": {
+    "message": "Maak je html zo op dat crawlers de content van je app beter begrijpen."
+  },
+  "lighthouse-core/config/default-config.js | seoContentGroupTitle": {
+    "message": "Praktische tips voor content"
+  },
+  "lighthouse-core/config/default-config.js | seoCrawlingGroupDescription": {
+    "message": "Crawlers hebben toegang nodig tot je app om je website in zoekresultaten weer te geven."
+  },
+  "lighthouse-core/config/default-config.js | seoCrawlingGroupTitle": {
+    "message": "Crawlen en indexeren"
+  },
+  "lighthouse-core/config/default-config.js | seoMobileGroupDescription": {
+    "message": "Zorg dat je pagina's geschikt zijn voor mobiele apparaten zodat gebruikers niet hun vingers hoeven samen te knijpen of moeten zoomen om de contentpagina's te lezen. [Meer informatie](https://developers.google.com/search/mobile-sites/)"
+  },
+  "lighthouse-core/config/default-config.js | seoMobileGroupTitle": {
+    "message": "Geschikt voor mobiele apparaten"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnCacheTTL": {
+    "message": "Cache-TTL"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnLocation": {
+    "message": "Locatie"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnName": {
+    "message": "Naam"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnRequests": {
+    "message": "Verzoeken"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnResourceType": {
+    "message": "Brontype"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnSize": {
+    "message": "Formaat"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnTimeSpent": {
+    "message": "Bestede tijd"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnTransferSize": {
+    "message": "Overdrachtgrootte"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnURL": {
+    "message": "URL"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnWastedBytes": {
+    "message": "Potentiële besparingen"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnWastedMs": {
+    "message": "Potentiële besparingen"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | displayValueByteSavings": {
+    "message": "Potentiële besparing van {wastedBytes, number, bytes} KB"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | displayValueMsSavings": {
+    "message": "Potentiële besparing van {wastedMs, number, milliseconds} ms"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | documentResourceType": {
+    "message": "Document"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | fontResourceType": {
+    "message": "Lettertype"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | imageResourceType": {
+    "message": "Afbeelding"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | mediaResourceType": {
+    "message": "Media"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | ms": {
+    "message": "{timeInMs, number, milliseconds} ms"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | otherResourceType": {
+    "message": "Anders"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | scriptResourceType": {
+    "message": "Script"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | seconds": {
+    "message": "{timeInMs, number, seconds} s"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | stylesheetResourceType": {
+    "message": "Stylesheet"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | thirdPartyResourceType": {
+    "message": "Derden"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | totalResourceType": {
+    "message": "Totaal"
+  },
+  "lighthouse-core/lib/lh-error.js | badTraceRecording": {
+    "message": "Er is een fout opgetreden bij het opnemen van het netwerkspoor voor het laden van je pagina. Voer Lighthouse opnieuw uit. ({errorCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | criTimeout": {
+    "message": "Time-out tijdens wachten op eerste verbinding met Debugger-protocol."
+  },
+  "lighthouse-core/lib/lh-error.js | didntCollectScreenshots": {
+    "message": "Chrome heeft geen screenshots verzameld tijdens het laden van de pagina. Zorg dat er content zichtbaar is op de pagina en voer Lighthouse daarna opnieuw uit. ({errorCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | dnsFailure": {
+    "message": "DNS-servers kunnen het opgegeven domein niet omzetten."
+  },
+  "lighthouse-core/lib/lh-error.js | erroredRequiredArtifact": {
+    "message": "Er is een fout opgetreden in de vereiste {artifactName}-verzamelaar: {errorMessage}"
+  },
+  "lighthouse-core/lib/lh-error.js | internalChromeError": {
+    "message": "Er is een interne Chrome-fout opgetreden. Start Chrome opnieuw op en probeer Lighthouse nogmaals uit te voeren."
+  },
+  "lighthouse-core/lib/lh-error.js | missingRequiredArtifact": {
+    "message": "Vereiste {artifactName}-verzamelaar is niet uitgevoerd."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailed": {
+    "message": "Lighthouse kan de door jou aangevraagde pagina niet goed laden. Zorg ervoor dat je de juiste URL test en dat de server correct reageert op alle verzoeken."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedHung": {
+    "message": "Lighthouse kan de door jou aangevraagde URL niet goed laden omdat de pagina niet meer reageert."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedInsecure": {
+    "message": "De URL die je hebt opgegeven, bevat geen geldig beveiligingscertificaat. {securityMessages}"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedInterstitial": {
+    "message": "Chrome heeft laden van pagina met interstitial voorkomen. Zorg dat je de juiste URL test en de server correct reageert op alle verzoeken."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedWithDetails": {
+    "message": "Lighthouse kan de aangevraagde pagina niet goed laden. Zorg dat je de juiste URL test en de server correct reageert op alle verzoeken. (Details: {errorDetails})"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedWithStatusCode": {
+    "message": "Lighthouse kan de aangevraagde pagina niet goed laden. Zorg dat je de juiste URL test en de server correct reageert op alle verzoeken. (Statuscode: {statusCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadTookTooLong": {
+    "message": "Het laden van je pagina duurde te lang. Volg de suggesties in het rapport om de laadtijd van je pagina te beperken. Voer Lighthouse daarna opnieuw uit. ({errorCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | protocolTimeout": {
+    "message": "Tijdens het wachten op een reactie van het DevTools-protocol is de toegewezen tijd overschreden. (Methode: {protocolMethod})"
+  },
+  "lighthouse-core/lib/lh-error.js | requestContentTimeout": {
+    "message": "Voor het ophalen van broncontent is de toegewezen tijd overschreden"
+  },
+  "lighthouse-core/lib/lh-error.js | urlInvalid": {
+    "message": "Het lijkt erop dat je een ongeldige URL hebt opgegeven."
+  },
+  "lighthouse-core/report/html/renderer/util.js | auditGroupExpandTooltip": {
+    "message": "Controles weergeven"
+  },
+  "lighthouse-core/report/html/renderer/util.js | crcInitialNavigation": {
+    "message": "Beginnavigatie"
+  },
+  "lighthouse-core/report/html/renderer/util.js | crcLongestDurationLabel": {
+    "message": "Maximum wachttijd voor kritiek pad:"
+  },
+  "lighthouse-core/report/html/renderer/util.js | errorLabel": {
+    "message": "Fout"
+  },
+  "lighthouse-core/report/html/renderer/util.js | errorMissingAuditInfo": {
+    "message": "Rapportfout: geen controlegegevens"
+  },
+  "lighthouse-core/report/html/renderer/util.js | labDataTitle": {
+    "message": "Labgegevens"
+  },
+  "lighthouse-core/report/html/renderer/util.js | lsPerformanceCategoryDescription": {
+    "message": "Analyse met [Lighthouse](https://developers.google.com/web/tools/lighthouse/) van de huidige pagina via een geëmuleerd mobiel netwerk. Waarden worden geschat en kunnen variëren."
+  },
+  "lighthouse-core/report/html/renderer/util.js | manualAuditsGroupTitle": {
+    "message": "Aanvullende items om handmatig te controleren"
+  },
+  "lighthouse-core/report/html/renderer/util.js | notApplicableAuditsGroupTitle": {
+    "message": "N.v.t."
+  },
+  "lighthouse-core/report/html/renderer/util.js | opportunityResourceColumnLabel": {
+    "message": "Aanbeveling"
+  },
+  "lighthouse-core/report/html/renderer/util.js | opportunitySavingsColumnLabel": {
+    "message": "Geschatte besparing"
+  },
+  "lighthouse-core/report/html/renderer/util.js | passedAuditsGroupTitle": {
+    "message": "Geslaagde controles"
+  },
+  "lighthouse-core/report/html/renderer/util.js | snippetCollapseButtonLabel": {
+    "message": "Fragment samenvouwen"
+  },
+  "lighthouse-core/report/html/renderer/util.js | snippetExpandButtonLabel": {
+    "message": "Fragment uitvouwen"
+  },
+  "lighthouse-core/report/html/renderer/util.js | thirdPartyResourcesLabel": {
+    "message": "Bronnen van derden weergeven"
+  },
+  "lighthouse-core/report/html/renderer/util.js | toplevelWarningsMessage": {
+    "message": "Er zijn problemen opgetreden bij deze uitvoering van Lighthouse:"
+  },
+  "lighthouse-core/report/html/renderer/util.js | varianceDisclaimer": {
+    "message": "Waarden worden geschat en kunnen variëren. De prestatiescore is [alleen gebaseerd op deze statistieken](https://github.com/GoogleChrome/lighthouse/blob/d2ec9ffbb21de9ad1a0f86ed24575eda32c796f0/docs/scoring.md#how-are-the-scores-weighted)."
+  },
+  "lighthouse-core/report/html/renderer/util.js | warningAuditsGroupTitle": {
+    "message": "Geslaagd voor controles maar met waarschuwingen"
+  },
+  "lighthouse-core/report/html/renderer/util.js | warningHeader": {
+    "message": "Waarschuwingen: "
+  },
+  "stack-packs/packs/wordpress.js | efficient_animated_content": {
+    "message": "Overweeg je gif te uploaden naar een service waarmee het mogelijk is de gif in te sluiten als html5-video."
+  },
+  "stack-packs/packs/wordpress.js | offscreen_images": {
+    "message": "Installeer een [WordPress-plug-in voor lazy loading](https://wordpress.org/plugins/search/lazy+load/) waarmee afbeeldingen die niet in beeld zijn, kunnen worden uitgesteld, of schakel over naar een thema met deze functionaliteit. Je kunt ook overwegen [de AMP-plug-in](https://wordpress.org/plugins/amp/) te gebruiken."
+  },
+  "stack-packs/packs/wordpress.js | render_blocking_resources": {
+    "message": "Er zijn een aantal WordPress-plug-ins om [kritieke items inline te plaatsen](https://wordpress.org/plugins/search/critical+css/) of [minder belangrijke bronnen uit te stellen](https://wordpress.org/plugins/search/defer+css+javascript/). Bedenk wel dat de optimalisatie die deze plug-ins bieden, bepaalde functies van je thema of plug-ins kunnen verstoren. Het is daarom goed mogelijk dat je de code moet wijzigen."
+  },
+  "stack-packs/packs/wordpress.js | time_to_first_byte": {
+    "message": "Thema's, plug-ins en serverspecificaties zijn allemaal van invloed op de reactietijd van de server. Overweeg een thema te gebruiken dat beter is geoptimaliseerd, kies met zorg een optimalisatieplug-in en/of upgrade je server."
+  },
+  "stack-packs/packs/wordpress.js | total_byte_weight": {
+    "message": "Overweeg fragmenten te tonen in je postlijsten (bijvoorbeeld via de tag 'more'), zodat er per pagina minder posts worden weergegeven. Ook kun je lange posts verdelen over meerdere pagina's of een plug-in voor lazy loading van reacties gebruiken."
+  },
+  "stack-packs/packs/wordpress.js | unminified_css": {
+    "message": "Er zijn een aantal [WordPress-plug-ins](https://wordpress.org/plugins/search/minify+css/) die stijlen inkorten, verkleinen en comprimeren en je site sneller maken. Mogelijk kun je een ontwerpproces gebruiken dat deze verkleining van tevoren toepast."
+  },
+  "stack-packs/packs/wordpress.js | unminified_javascript": {
+    "message": "Er zijn een aantal [WordPress-plug-ins](https://wordpress.org/plugins/search/minify+javascript/) die je site sneller kunnen maken door je scripts in te korten, te verkleinen of te comprimeren. Indien mogelijk is het bovendien handig zulke verkleining al mee te nemen in het ontwerpproces."
+  },
+  "stack-packs/packs/wordpress.js | unused_css_rules": {
+    "message": "Overweeg gebruik te maken van minder of andere [WordPress-plug-ins](https://wordpress.org/plugins/) die ongebruikte css laden op je pagina. Voer [codedekking](https://developers.google.com/web/updates/2017/04/devtools-release-notes#coverage) uit in Chrome DevTools als je plug-ins wilt identificeren die extra css toevoegen. Via de URL van de stylesheet kun je identificeren welk thema/welke plug-in verantwoordelijk is. Ga in de lijst op zoek naar plug-ins met veel stylesheets en veel rood in de codedekking. Een plug-in zou een stylesheet alleen in de wachtrij moeten plaatsen als deze daadwerkelijk wordt gebruikt op de pagina."
+  },
+  "stack-packs/packs/wordpress.js | unused_javascript": {
+    "message": "Overweeg gebruik te maken van minder of andere [WordPress-plug-ins](https://wordpress.org/plugins/) die ongebruikt JavaScript laden op je pagina. Voer [codedekking](https://developers.google.com/web/updates/2017/04/devtools-release-notes#coverage) uit in Chrome DevTools als je plug-ins wilt identificeren die extra JS toevoegen. Via de URL van het script kun je identificeren welk thema/welke plug-in verantwoordelijk is. Ga in de lijst op zoek naar plug-ins met veel scripts en veel rood in de codedekking. Een plug-in zou een script alleen in de wachtrij moeten plaatsen als het daadwerkelijk wordt gebruikt op de pagina."
+  },
+  "stack-packs/packs/wordpress.js | uses_long_cache_ttl": {
+    "message": "Lees meer over [browsercaching in WordPress](https://codex.wordpress.org/WordPress_Optimization#Browser_Caching)."
+  },
+  "stack-packs/packs/wordpress.js | uses_optimized_images": {
+    "message": "Overweeg een [beeldoptimalisatieplug-in voor WordPress](https://wordpress.org/plugins/search/optimize+images/) te gebruiken om je afbeeldingen te comprimeren terwijl de beeldkwaliteit behouden blijft."
+  },
+  "stack-packs/packs/wordpress.js | uses_responsive_images": {
+    "message": "Upload afbeeldingen rechtstreeks via de [mediabibliotheek](https://codex.wordpress.org/Media_Library_Screen) om er zeker van te zijn dat de vereiste afbeeldingsformaten beschikbaar zijn. Voeg de afbeeldingen vervolgens in vanuit de mediabibliotheek. Ook kun je de afbeeldingswidget gebruiken om ervoor te zorgen dat de optimale afbeeldingsformaten worden gebruikt (inclusief voor responsieve breakpoints). Vermijd `Full Size`-afbeeldingen, tenzij de afmetingen geschikt zijn voor waar ze worden geplaatst. [Meer informatie](https://codex.wordpress.org/Inserting_Images_into_Posts_and_Pages#Image_Size)"
+  },
+  "stack-packs/packs/wordpress.js | uses_text_compression": {
+    "message": "Je kunt tekstcompressie inschakelen bij je webserverinstellingen."
+  },
+  "stack-packs/packs/wordpress.js | uses_webp_images": {
+    "message": "Overweeg een [plug-in](https://wordpress.org/plugins/search/convert+webp/) of service te gebruiken die je geüploade afbeeldingen automatisch converteert naar de optimale formaten."
+  }
+}
diff --git a/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/no.json b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/no.json
new file mode 100644
index 0000000..9702b2e
--- /dev/null
+++ b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/no.json
@@ -0,0 +1,1541 @@
+{
+  "lighthouse-core/audits/accessibility/accesskeys.js | description": {
+    "message": "Med tilgangsnøkler kan brukere raskt fokusere på deler av siden. Hver tilgangsnøkkel må være unik for at navigeringen skal fungere riktig. [Finn ut mer](https://web.dev/accesskeys/)."
+  },
+  "lighthouse-core/audits/accessibility/accesskeys.js | failureTitle": {
+    "message": "`[accesskey]`-verdier er ikke unike"
+  },
+  "lighthouse-core/audits/accessibility/accesskeys.js | title": {
+    "message": "`[accesskey]`-verdiene er unike"
+  },
+  "lighthouse-core/audits/accessibility/aria-allowed-attr.js | description": {
+    "message": "Hver ARIA-`role` støtter en spesifikk undergruppe av `aria-*`-attributter. Manglende samsvar mellom disse gjør `aria-*`-attributtene ugyldige. [Finn ut mer](https://web.dev/aria-allowed-attr/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-allowed-attr.js | failureTitle": {
+    "message": "`[aria-*]`-attributter samsvarer ikke med rollene sine"
+  },
+  "lighthouse-core/audits/accessibility/aria-allowed-attr.js | title": {
+    "message": "`[aria-*]`-attributtene samsvarer med rollene sine"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-attr.js | description": {
+    "message": "Noen ARIA-roller har obligatoriske attributter som beskriver elementenes tilstand for skjermlesere. [Finn ut mer](https://web.dev/aria-required-attr/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-required-attr.js | failureTitle": {
+    "message": "`[role]`-elementer har ikke alle de obligatoriske `[aria-*]`-attributtene"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-attr.js | title": {
+    "message": "`[role]`-elementene har alle de obligatoriske `[aria-*]`-attributtene"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-children.js | description": {
+    "message": "Noen overordnede ARIA-roller må inneholde spesifikke underordnede roller for å utføre de tiltenkte tilgjengelighetsfunksjonene. [Finn ut mer](https://web.dev/aria-required-children/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-required-children.js | failureTitle": {
+    "message": "Elementer med `[role]` som krever spesifikke underordnede `[role]`-elementer, mangler."
+  },
+  "lighthouse-core/audits/accessibility/aria-required-children.js | title": {
+    "message": "Det finnes elementer med `[role]` som krever spesifikke underordnede `[role]`-elementer."
+  },
+  "lighthouse-core/audits/accessibility/aria-required-parent.js | description": {
+    "message": "Noen underordnede ARIA-roller må ligge innenfor de spesifikke overordnede rollene for å utføre de tiltenkte tilgjengelighetsfunksjonene på riktig måte. [Finn ut mer](https://web.dev/aria-required-parent/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-required-parent.js | failureTitle": {
+    "message": "`[role]`-elementer ligger ikke i de obligatoriske overordnede elementene"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-parent.js | title": {
+    "message": "`[role]`-elementer ligger i de obligatoriske overordnede elementene"
+  },
+  "lighthouse-core/audits/accessibility/aria-roles.js | description": {
+    "message": "ARIA-roller må ha gyldige verdier for å utføre de tiltenkte tilgjengelighetsfunksjonene. [Finn ut mer](https://web.dev/aria-roles/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-roles.js | failureTitle": {
+    "message": "`[role]`-verdiene er ikke gyldige"
+  },
+  "lighthouse-core/audits/accessibility/aria-roles.js | title": {
+    "message": "`[role]`-verdiene er gyldige"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr-value.js | description": {
+    "message": "Assisterende teknologi, for eksempel skjermlesere, kan ikke tolke ARIA-attributter med ugyldige verdier. [Finn ut mer](https://web.dev/aria-valid-attr-value/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr-value.js | failureTitle": {
+    "message": "`[aria-*]`-attributter har ikke gyldige verdier"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr-value.js | title": {
+    "message": "`[aria-*]`-attributtene har gyldige verdier"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr.js | description": {
+    "message": "Assisterende teknologi, som skjermlesere, kan ikke tolke ARIA-attributter med ugyldige navn. [Finn ut mer](https://web.dev/aria-valid-attr/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr.js | failureTitle": {
+    "message": "`[aria-*]`-attributter er ugyldige eller feilstavet"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr.js | title": {
+    "message": "`[aria-*]`-attributtene er gyldige og ikke feilstavet"
+  },
+  "lighthouse-core/audits/accessibility/audio-caption.js | description": {
+    "message": "Når du inkluderer teksting, kan døve og hørselshemmede brukere også dra nytte av lydelementer, siden de får se kritisk informasjon, for eksempel om hvem som snakker, hva de sier, og annen informasjon som ikke er talerelatert. [Finn ut mer](https://web.dev/audio-caption/)."
+  },
+  "lighthouse-core/audits/accessibility/audio-caption.js | failureTitle": {
+    "message": "`<audio>`-elementer mangler et `<track>`-element med `[kind=\"captions\"]`."
+  },
+  "lighthouse-core/audits/accessibility/audio-caption.js | title": {
+    "message": "`<audio>`-elementer inneholder et `<track>`-element med `[kind=\"captions\"]`"
+  },
+  "lighthouse-core/audits/accessibility/axe-audit.js | failingElementsHeader": {
+    "message": "Elementer som ikke besto kontrollen"
+  },
+  "lighthouse-core/audits/accessibility/button-name.js | description": {
+    "message": "Når knapper ikke har tilgjengelige navn, beskriver skjermlesere dem som «knapp». Dermed er de ubrukelige for brukere som er avhengige av skjermlesere. [Finn ut mer](https://web.dev/button-name/)."
+  },
+  "lighthouse-core/audits/accessibility/button-name.js | failureTitle": {
+    "message": "Knapper har ikke tilgjengelige navn"
+  },
+  "lighthouse-core/audits/accessibility/button-name.js | title": {
+    "message": "Knappene har tilgjengelige navn"
+  },
+  "lighthouse-core/audits/accessibility/bypass.js | description": {
+    "message": "Hvis du legger til måter å hoppe over repeterende innhold på, kan tastaturbrukere navigere mer effektivt på siden. [Finn ut mer](https://web.dev/bypass/)."
+  },
+  "lighthouse-core/audits/accessibility/bypass.js | failureTitle": {
+    "message": "Siden mangler overskrift, landemerkeregion eller link for å hoppe over innhold"
+  },
+  "lighthouse-core/audits/accessibility/bypass.js | title": {
+    "message": "Siden inneholder en overskrift, en landemerkeregion eller en link for å hoppe over innhold"
+  },
+  "lighthouse-core/audits/accessibility/color-contrast.js | description": {
+    "message": "Tekst med lav kontrast er vanskelig eller umulig å lese for mange brukere. [Finn ut mer](https://web.dev/color-contrast/)."
+  },
+  "lighthouse-core/audits/accessibility/color-contrast.js | failureTitle": {
+    "message": "Kontrastforholdet mellom bakgrunns- og forgrunnsfarger er ikke tilstrekkelig."
+  },
+  "lighthouse-core/audits/accessibility/color-contrast.js | title": {
+    "message": "Kontrastforholdet mellom bakgrunns- og forgrunnsfargene er tilstrekkelig"
+  },
+  "lighthouse-core/audits/accessibility/definition-list.js | description": {
+    "message": "Når definisjonslister ikke er riktig kodet, kan resultatene fra skjermlesere bli forvirrende eller unøyaktige. [Finn ut mer](https://web.dev/definition-list/)."
+  },
+  "lighthouse-core/audits/accessibility/definition-list.js | failureTitle": {
+    "message": "`<dl>`-elementer inneholder ikke bare velordnede `<dt>`- og `<dd>`-grupper og `<script>`- eller `<template>`-elementer."
+  },
+  "lighthouse-core/audits/accessibility/definition-list.js | title": {
+    "message": "`<dl>`-elementene inneholder bare velordnede `<dt>`- og `<dd>`-grupper og `<script>`- eller `<template>`-elementer."
+  },
+  "lighthouse-core/audits/accessibility/dlitem.js | description": {
+    "message": "Elementer i definisjonslister (`<dt>` og `<dd>`) må være omsluttet av et overordnet `<dl>`-element for å sørge for at skjermlesere kan lese dem opp riktig. [Finn ut mer](https://web.dev/dlitem/)."
+  },
+  "lighthouse-core/audits/accessibility/dlitem.js | failureTitle": {
+    "message": "Elementer i definisjonslister er ikke omsluttet av `<dl>`-elementer"
+  },
+  "lighthouse-core/audits/accessibility/dlitem.js | title": {
+    "message": "Elementene i definisjonslister er omsluttet av `<dl>`-elementer"
+  },
+  "lighthouse-core/audits/accessibility/document-title.js | description": {
+    "message": "Tittelen gir brukere av skjermlesere oversikt over siden, og søkemotorbrukere er svært avhengige av den for å avgjøre om siden er relevant for søket deres. [Finn ut mer](https://web.dev/document-title/)."
+  },
+  "lighthouse-core/audits/accessibility/document-title.js | failureTitle": {
+    "message": "Dokumentet har ikke noe `<title>`-element"
+  },
+  "lighthouse-core/audits/accessibility/document-title.js | title": {
+    "message": "Dokumentet har et `<title>`-element"
+  },
+  "lighthouse-core/audits/accessibility/duplicate-id.js | description": {
+    "message": "ID-attributter må ha unike verdier for å unngå at andre forekomster blir oversett av assisterende teknologi. [Finn ut mer](https://web.dev/duplicate-id/)."
+  },
+  "lighthouse-core/audits/accessibility/duplicate-id.js | failureTitle": {
+    "message": "`[id]`-attributter på siden er ikke unike"
+  },
+  "lighthouse-core/audits/accessibility/duplicate-id.js | title": {
+    "message": "`[id]`-attributtene på siden er unike"
+  },
+  "lighthouse-core/audits/accessibility/frame-title.js | description": {
+    "message": "Brukere av skjermlesere er avhengige av titler for «frame»/«iframe»-elementer for å forstå innholdet i dem. [Finn ut mer](https://web.dev/frame-title/)."
+  },
+  "lighthouse-core/audits/accessibility/frame-title.js | failureTitle": {
+    "message": "`<frame>`- eller `<iframe>`-elementer mangler tittel"
+  },
+  "lighthouse-core/audits/accessibility/frame-title.js | title": {
+    "message": "`<frame>`- og `<iframe>`-elementer har titler"
+  },
+  "lighthouse-core/audits/accessibility/html-has-lang.js | description": {
+    "message": "Hvis en side ikke angir noe «lang»-attributt, antar skjermlesere at siden er på standardspråket brukeren valgte ved konfigurering av skjermleseren. Hvis siden ikke faktisk er på standardspråket, kan det hende skjermleseren leser teksten på siden feil. [Finn ut mer](https://web.dev/html-has-lang/)."
+  },
+  "lighthouse-core/audits/accessibility/html-has-lang.js | failureTitle": {
+    "message": "`<html>`-elementet har ikke noe gyldig `[lang]`-attributt"
+  },
+  "lighthouse-core/audits/accessibility/html-has-lang.js | title": {
+    "message": "`<html>`-elementet har et `[lang]`-attributt"
+  },
+  "lighthouse-core/audits/accessibility/html-lang-valid.js | description": {
+    "message": "Ved å angi et gyldig [BCP 47-språk](https://www.w3.org/International/questions/qa-choosing-language-tags#question) hjelper du skjermlesere med å lese opp teksten riktig. [Finn ut mer](https://web.dev/html-lang-valid/)."
+  },
+  "lighthouse-core/audits/accessibility/html-lang-valid.js | failureTitle": {
+    "message": "`<html>`-elementet har ikke noen gyldig verdi for `[lang]`-attributtet."
+  },
+  "lighthouse-core/audits/accessibility/html-lang-valid.js | title": {
+    "message": "`<html>`-elementet har en gyldig verdi for `[lang]`-attributtet"
+  },
+  "lighthouse-core/audits/accessibility/image-alt.js | description": {
+    "message": "Informative elementer bør ta sikte på korte og beskrivende alternative tekster. Dekorative elementer kan ignoreres med tomme alt-attributter. [Finn ut mer](https://web.dev/image-alt/)."
+  },
+  "lighthouse-core/audits/accessibility/image-alt.js | failureTitle": {
+    "message": "Bildeelementer har ikke `[alt]`-attributter"
+  },
+  "lighthouse-core/audits/accessibility/image-alt.js | title": {
+    "message": "Bildeelementene har `[alt]`-attributter"
+  },
+  "lighthouse-core/audits/accessibility/input-image-alt.js | description": {
+    "message": "Når et bilde brukes som `<input>`-knapp, bør du oppgi en alternativ tekst som hjelper brukere av skjermlesere med å forstå hva knappen er til. [Finn ut mer](https://web.dev/input-image-alt/)."
+  },
+  "lighthouse-core/audits/accessibility/input-image-alt.js | failureTitle": {
+    "message": "`<input type=\"image\">`-elementer har ikke `[alt]`-tekst"
+  },
+  "lighthouse-core/audits/accessibility/input-image-alt.js | title": {
+    "message": "`<input type=\"image\">`-elementer har `[alt]`-tekst"
+  },
+  "lighthouse-core/audits/accessibility/label.js | description": {
+    "message": "Etiketter sørger for at skjemakontroller leses opp på riktig måte av assisterende teknologi, som skjermlesere. [Finn ut mer](https://web.dev/label/)."
+  },
+  "lighthouse-core/audits/accessibility/label.js | failureTitle": {
+    "message": "Skjemaelementer har ikke tilknyttede etiketter"
+  },
+  "lighthouse-core/audits/accessibility/label.js | title": {
+    "message": "Skjemaelementene har tilknyttede etiketter"
+  },
+  "lighthouse-core/audits/accessibility/layout-table.js | description": {
+    "message": "Tabeller som brukes til layoutformål, skal ikke inneholde dataelementer, som th-elementer, caption-elementer eller summary-attributtet, da disse kan skape en forvirrende opplevelse for brukere av skjermlesere. [Finn ut mer](https://web.dev/layout-table/)."
+  },
+  "lighthouse-core/audits/accessibility/layout-table.js | failureTitle": {
+    "message": "Presentasjonsmessige `<table>`-elementer unngår ikke å bruke `<th>`, `<caption>` eller `[summary]`-attributtet."
+  },
+  "lighthouse-core/audits/accessibility/layout-table.js | title": {
+    "message": "Presentasjonsmessige `<table>`-elementer unngår å bruke `<th>`, `<caption>` og `[summary]`-attributtet."
+  },
+  "lighthouse-core/audits/accessibility/link-name.js | description": {
+    "message": "Når du bruker linktekst (og alternativ tekst for bilder som brukes som linker) som er tydelig, unik og mulig å sette fokus på, blir navigeringsopplevelsen bedre for brukere av skjermlesere. [Finn ut mer](https://web.dev/link-name/)."
+  },
+  "lighthouse-core/audits/accessibility/link-name.js | failureTitle": {
+    "message": "Linker har ikke tydelige navn"
+  },
+  "lighthouse-core/audits/accessibility/link-name.js | title": {
+    "message": "Linkene har tydelige navn"
+  },
+  "lighthouse-core/audits/accessibility/list.js | description": {
+    "message": "Skjermlesere har en spesifikk måte å lese opp lister på. Du kan øke kvaliteten på resultatene fra skjermlesere ved å bruke en god listestruktur. [Finn ut mer](https://web.dev/list/)."
+  },
+  "lighthouse-core/audits/accessibility/list.js | failureTitle": {
+    "message": "Lister inneholder ikke kun `<li>`-elementer og elementer som støtter skript (`<script>` og `<template>`)."
+  },
+  "lighthouse-core/audits/accessibility/list.js | title": {
+    "message": "Listene inneholder bare `<li>`-elementer og elementer som støtter skript (`<script>` og `<template>`)."
+  },
+  "lighthouse-core/audits/accessibility/listitem.js | description": {
+    "message": "Skjermlesere krever at listeelementer (`<li>`) ligger i et overordnet `<ul>`- eller `<ol>`-element – ellers kan de ikke leses opp på riktig måte. [Finn ut mer](https://web.dev/listitem/)."
+  },
+  "lighthouse-core/audits/accessibility/listitem.js | failureTitle": {
+    "message": "Listeelementer (`<li>`) ligger ikke i overordnede `<ul>`- eller `<ol>`-elementer."
+  },
+  "lighthouse-core/audits/accessibility/listitem.js | title": {
+    "message": "Listeelementene (`<li>`) ligger i overordnede `<ul>`- eller `<ol>`-elementer"
+  },
+  "lighthouse-core/audits/accessibility/meta-refresh.js | description": {
+    "message": "Brukere forventer ikke at sider oppdateres automatisk, så hvis dette skjer, flyttes fokuset tilbake til toppen av siden. Dette kan føre til frustrasjon eller forvirring. [Finn ut mer](https://web.dev/meta-refresh/)."
+  },
+  "lighthouse-core/audits/accessibility/meta-refresh.js | failureTitle": {
+    "message": "Dokumentet bruker `<meta http-equiv=\"refresh\">`"
+  },
+  "lighthouse-core/audits/accessibility/meta-refresh.js | title": {
+    "message": "Dokumentet bruker ikke `<meta http-equiv=\"refresh\">`"
+  },
+  "lighthouse-core/audits/accessibility/meta-viewport.js | description": {
+    "message": "Deaktivering av zoom er problematisk for brukere med nedsatt synsevne som har behov for å forstørre skjermen for å se innholdet på nettsider. [Finn ut mer](https://web.dev/meta-viewport/)."
+  },
+  "lighthouse-core/audits/accessibility/meta-viewport.js | failureTitle": {
+    "message": "`[user-scalable=\"no\"]` brukes i `<meta name=\"viewport\">`-elementet, eller `[maximum-scale]`-attributtet er mindre enn 5."
+  },
+  "lighthouse-core/audits/accessibility/meta-viewport.js | title": {
+    "message": "`[user-scalable=\"no\"]` brukes ikke i `<meta name=\"viewport\">`-elementet, og `[maximum-scale]`-attributtet er ikke mindre enn 5."
+  },
+  "lighthouse-core/audits/accessibility/object-alt.js | description": {
+    "message": "Skjermlesere kan ikke oversette innhold som ikke er tekst. Ved å legge til alternativ tekst i `<object>`-elementer hjelper du skjermlesere med å formidle mening til brukerne. [Finn ut mer](https://web.dev/object-alt/)."
+  },
+  "lighthouse-core/audits/accessibility/object-alt.js | failureTitle": {
+    "message": "`<object>`-elementer har ikke `[alt]`-tekst"
+  },
+  "lighthouse-core/audits/accessibility/object-alt.js | title": {
+    "message": "`<object>`-elementer har `[alt]`-tekst"
+  },
+  "lighthouse-core/audits/accessibility/tabindex.js | description": {
+    "message": "Større verdier enn 0 antyder en eksplisitt navigeringsrekkefølge. Selv om dette teknisk sett er gyldig, kan det ofte være frustrerende for brukere som er avhengige av assisterende teknologi. [Finn ut mer](https://web.dev/tabindex/)."
+  },
+  "lighthouse-core/audits/accessibility/tabindex.js | failureTitle": {
+    "message": "Noen elementer har en `[tabindex]`-verdi som er større enn 0"
+  },
+  "lighthouse-core/audits/accessibility/tabindex.js | title": {
+    "message": "Ingen elementer har en `[tabindex]`-verdi som er større enn 0"
+  },
+  "lighthouse-core/audits/accessibility/td-headers-attr.js | description": {
+    "message": "Skjermlesere har funksjonalitet som gjør det enklere å navigere i tabeller. Ved å sørge for at `<td>`-celler som bruker `[headers]`-attributtet, kun refererer til andre celler i den samme tabellen, kan du gjøre opplevelsen bedre for brukere av skjermlesere. [Finn ut mer](https://web.dev/td-headers-attr/)."
+  },
+  "lighthouse-core/audits/accessibility/td-headers-attr.js | failureTitle": {
+    "message": "Celler som er en del av et `<table>`-element og bruker `[headers]`-attributtet, refererer bare til andre celler i den samme tabellen."
+  },
+  "lighthouse-core/audits/accessibility/td-headers-attr.js | title": {
+    "message": "Celler som er en del av et `<table>`-element som bruker `[headers]`-attributtet, refererer bare til andre celler i den samme tabellen."
+  },
+  "lighthouse-core/audits/accessibility/th-has-data-cells.js | description": {
+    "message": "Skjermlesere har funksjonalitet som gjør det enklere å navigere i tabeller. Ved å sørge for at tabelloverskrifter alltid refererer til spesifikke cellesett, kan du gjøre opplevelsen bedre for brukere av skjermlesere. [Finn ut mer](https://web.dev/th-has-data-cells/)."
+  },
+  "lighthouse-core/audits/accessibility/th-has-data-cells.js | failureTitle": {
+    "message": "`<th>`-elementer og elementer med `[role=\"columnheader\"/\"rowheader\"]` har ikke datacellene de beskriver."
+  },
+  "lighthouse-core/audits/accessibility/th-has-data-cells.js | title": {
+    "message": "`<th>`-elementene og elementene med `[role=\"columnheader\"/\"rowheader\"]` har datacellene de beskriver."
+  },
+  "lighthouse-core/audits/accessibility/valid-lang.js | description": {
+    "message": "Ved å angi et gyldig [BCP 47-språk](https://www.w3.org/International/questions/qa-choosing-language-tags#question) i elementer bidrar du til at skjermlesere leser opp teksten riktig. [Finn ut mer](https://web.dev/valid-lang/)."
+  },
+  "lighthouse-core/audits/accessibility/valid-lang.js | failureTitle": {
+    "message": "`[lang]`-attributter mangler gyldige verdier"
+  },
+  "lighthouse-core/audits/accessibility/valid-lang.js | title": {
+    "message": "`[lang]`-attributtene har gyldige verdier"
+  },
+  "lighthouse-core/audits/accessibility/video-caption.js | description": {
+    "message": "Når videoer har teksting, blir det lettere for døve og hørselshemmede brukere å få med seg informasjonen i dem. [Finn ut mer](https://web.dev/video-caption/)."
+  },
+  "lighthouse-core/audits/accessibility/video-caption.js | failureTitle": {
+    "message": "`<video>`-elementer mangler et `<track>`-element med `[kind=\"captions\"]`."
+  },
+  "lighthouse-core/audits/accessibility/video-caption.js | title": {
+    "message": "`<video>`-elementer inneholder et `<track>`-element med `[kind=\"captions\"]`"
+  },
+  "lighthouse-core/audits/accessibility/video-description.js | description": {
+    "message": "Lydbeskrivelser gir relevant videoinformasjon som dialog ikke kan formidle, for eksempel ansiktsuttrykk og scener. [Finn ut mer](https://web.dev/video-description/)."
+  },
+  "lighthouse-core/audits/accessibility/video-description.js | failureTitle": {
+    "message": "`<video>`-elementer mangler et `<track>`-element med `[kind=\"description\"]`."
+  },
+  "lighthouse-core/audits/accessibility/video-description.js | title": {
+    "message": "`<video>`-elementer inneholder et `<track>`-element med `[kind=\"description\"]`"
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | description": {
+    "message": "For å oppnå det ideelle utseendet på iOS når brukere legger til progressive nettprogrammer på startskjermen, definer et `apple-touch-icon`. Det må peke til et ugjennomsiktig, kvadratisk PNG-bilde med sidelengde på 192 (eller 180) piksler. [Finn ut mer](https://developers.google.com/web/fundamentals/design-and-ux/browser-customization/)."
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | failureTitle": {
+    "message": "Har ikke noe gyldig `apple-touch-icon`"
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | precomposedWarning": {
+    "message": "`apple-touch-icon-precomposed` er utdatert – `apple-touch-icon` foretrekkes."
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | title": {
+    "message": "Har et gyldig `apple-touch-icon`"
+  },
+  "lighthouse-core/audits/bootup-time.js | chromeExtensionsWarning": {
+    "message": "Chrome-utvidelser gjør innlastingen av denne siden tregere. Prøv å revidere siden i inkognitomodus eller fra en Chrome-profil uten utvidelser."
+  },
+  "lighthouse-core/audits/bootup-time.js | columnScriptEval": {
+    "message": "Skriptevaluering"
+  },
+  "lighthouse-core/audits/bootup-time.js | columnScriptParse": {
+    "message": "Skriptparsing"
+  },
+  "lighthouse-core/audits/bootup-time.js | columnTotal": {
+    "message": "Total CPU-tid"
+  },
+  "lighthouse-core/audits/bootup-time.js | description": {
+    "message": "Vurder å redusere tiden som brukes til parsing, kompilering og kjøring av JavaScript. Levering av mindre JS-ressurser kan bidra til dette. [Finn ut mer](https://developers.google.com/web/tools/lighthouse/audits/bootup)."
+  },
+  "lighthouse-core/audits/bootup-time.js | failureTitle": {
+    "message": "Reduser JavaScript-kjøretiden"
+  },
+  "lighthouse-core/audits/bootup-time.js | title": {
+    "message": "JavaScript-kjøretid"
+  },
+  "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | description": {
+    "message": "Store GIF-er er mindre effektive for visning av animert innhold. I stedet for GIF bør du vurdere å bruke MPEG4/WebM-videoer for animasjon og PNG/WebP for statiske bilder, da dette belaster nettverket mindre. [Finn ut mer](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/replace-animated-gifs-with-video/)"
+  },
+  "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | title": {
+    "message": "Bruk videoformat for animert innhold"
+  },
+  "lighthouse-core/audits/byte-efficiency/offscreen-images.js | description": {
+    "message": "Vurder «lat» innlasting av bilder som er utenfor skjermen eller skjult, etter at alle kritiske ressurser er ferdig innlastet, for å redusere tiden det tar før siden blir interaktiv. [Finn ut mer](https://developers.google.com/web/tools/lighthouse/audits/offscreen-images)."
+  },
+  "lighthouse-core/audits/byte-efficiency/offscreen-images.js | title": {
+    "message": "Utsett bilder utenfor skjermen"
+  },
+  "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | description": {
+    "message": "Ressurser blokkerer første opptegning (FP) av siden. Vurder å levere kritisk JS/CSS innebygd og utsette all JS/CSS som ikke er kritisk. [Finn ut mer](https://developers.google.com/web/tools/lighthouse/audits/blocking-resources)."
+  },
+  "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | title": {
+    "message": "Eliminer ressurser som blokkerer gjengivelse"
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | description": {
+    "message": "Store nettverksressurser koster brukerne ekte penger og er hovedgrunnen til lange innlastingstider. [Finn ut mer](https://developers.google.com/web/tools/lighthouse/audits/network-payloads)."
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | displayValue": {
+    "message": "Den totale størrelsen var {totalBytes, number, bytes} kB"
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | failureTitle": {
+    "message": "Unngå enorme nettverksressurser"
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | title": {
+    "message": "Unngår enorme nettverksbelastninger"
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-css.js | description": {
+    "message": "Forminskede CSS-filer kan redusere nettverksbelastningen. [Finn ut mer](https://developers.google.com/web/tools/lighthouse/audits/minify-css)."
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-css.js | title": {
+    "message": "Forminsk CSS"
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | description": {
+    "message": "Forminskede JavaScript-filer kan redusere mengden data som må overføres, og parsetiden for skript. [Finn ut mer](https://developers.google.com/speed/docs/insights/MinifyResources)."
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | title": {
+    "message": "Forminsk JavaScript"
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | description": {
+    "message": "Fjern overflødige regler fra stilark og utsett å laste inn CSS som ikke brukes på innholdet i den synlige delen av nettsiden. Da reduserer du antall byte som går med til unødvendig nettverksaktivitet. [Finn ut mer](https://developers.google.com/web/tools/lighthouse/audits/unused-css)."
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | title": {
+    "message": "Fjern ubrukt CSS"
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-javascript.js | description": {
+    "message": "Fjern ubrukt JavaScript for å redusere antall byte som brukes av nettverksaktiviteten."
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-javascript.js | title": {
+    "message": "Fjern ubrukt JavaScript"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | description": {
+    "message": "En lang bufferlevetid kan gjøre at gjentatte besøk på siden din går raskere. [Finn ut mer](https://developers.google.com/web/tools/lighthouse/audits/cache-policy)."
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 ressurs funnet}other{# ressurser funnet}}"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | failureTitle": {
+    "message": "Vis statiske ressurser med effektive buffer-retningslinjer"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | title": {
+    "message": "Bruker effektive buffer-retningslinjer på statiske ressurser"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | description": {
+    "message": "Optimaliserte bilder lastes inn raskere og bruker mindre mobildata. [Finn ut mer](https://developers.google.com/web/tools/lighthouse/audits/optimize-images)."
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | title": {
+    "message": "Effektiviser omgjøring av bilder til kode"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | description": {
+    "message": "Vis bilder som har passende størrelse, for å spare mobildata og redusere innlastingstiden. [Finn ut mer](https://developers.google.com/web/tools/lighthouse/audits/oversized-images)."
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | title": {
+    "message": "Velg riktige bildestørrelser"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | description": {
+    "message": "Tekstbaserte ressurser bør leveres komprimert (gzip, deflate eller brotli) for å minimere antall byte som sendes over nettverket. [Finn ut mer](https://developers.google.com/web/tools/lighthouse/audits/text-compression)."
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | title": {
+    "message": "Aktiver tekstkomprimering"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | description": {
+    "message": "Bildeformater som JPEG 2000, JPEG XR og WebP gir ofte bedre komprimering enn PNG eller JPEG, noe som betyr raskere nedlasting og mindre databruk. [Finn ut mer](https://developers.google.com/web/tools/lighthouse/audits/webp)."
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | title": {
+    "message": "Bruk nyere bildeformater"
+  },
+  "lighthouse-core/audits/content-width.js | description": {
+    "message": "Hvis bredden på appinnholdet ikke samsvarer med bredden på det synlige området, er appen kanskje ikke optimalisert for mobilskjermer. [Finn ut mer](https://developers.google.com/web/tools/lighthouse/audits/content-sized-correctly-for-viewport)."
+  },
+  "lighthouse-core/audits/content-width.js | explanation": {
+    "message": "Det synlige områdets størrelse på {innerWidth} px samsvarer ikke med vindusstørrelsen på {outerWidth} px."
+  },
+  "lighthouse-core/audits/content-width.js | failureTitle": {
+    "message": "Innholdet har ikke riktig størrelse i forhold til det synlige området"
+  },
+  "lighthouse-core/audits/content-width.js | title": {
+    "message": "Innholdet har riktig størrelse i forhold til det synlige området"
+  },
+  "lighthouse-core/audits/critical-request-chains.js | description": {
+    "message": "De kritiske forespørselskjedene nedenfor viser hvilke ressurser som lastes inn med høy prioritet. Vurder å redusere lengden på kjedene, redusere nedlastingsstørrelsen på ressursene eller utsette nedlasting av unødvendige ressurser for å bedre sideinnlastingen. [Finn ut mer](https://developers.google.com/web/tools/lighthouse/audits/critical-request-chains)."
+  },
+  "lighthouse-core/audits/critical-request-chains.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 kjede funnet}other{# kjeder funnet}}"
+  },
+  "lighthouse-core/audits/critical-request-chains.js | title": {
+    "message": "Minimer dybden på kritiske forespørsler"
+  },
+  "lighthouse-core/audits/deprecations.js | columnDeprecate": {
+    "message": "Avvikling/varsel"
+  },
+  "lighthouse-core/audits/deprecations.js | columnLine": {
+    "message": "Linje"
+  },
+  "lighthouse-core/audits/deprecations.js | description": {
+    "message": "Avviklede API-er kommer etter hvert til å bli fjernet fra nettleseren. [Finn ut mer](https://web.dev/deprecations)."
+  },
+  "lighthouse-core/audits/deprecations.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 varsel er funnet}other{# varsler er funnet}}"
+  },
+  "lighthouse-core/audits/deprecations.js | failureTitle": {
+    "message": "Bruker avviklede API-er"
+  },
+  "lighthouse-core/audits/deprecations.js | title": {
+    "message": "Unngår å bruke avviklede API-er"
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | description": {
+    "message": "Programbufferen er avviklet. [Finn ut mer](https://web.dev/appcache-manifest)."
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | displayValue": {
+    "message": "Fant «{AppCacheManifest}»"
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | failureTitle": {
+    "message": "Bruker programbufferen"
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | title": {
+    "message": "Unngår å bruke programbufferen"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | description": {
+    "message": "Ved å angi en doctype forhindrer du nettleseren fra å bytte til modus for bred kompatibilitet. [Finn ut mer](https://web.dev/doctype)."
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationBadDoctype": {
+    "message": "Doctype-navnet må være strengen `html` med små bokstaver"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationNoDoctype": {
+    "message": "Dokumentet må ha en doctype"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationPublicId": {
+    "message": "Forventet at publicId skulle være en tom streng"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationSystemId": {
+    "message": "Forventet at systemId skulle være en tom streng"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | failureTitle": {
+    "message": "Siden har ikke HTML som doctype og utløser derfor modus for bred kompatibilitet."
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | title": {
+    "message": "Siden har HTML som doctype"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | columnElement": {
+    "message": "Element"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | columnStatistic": {
+    "message": "Statistikk"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | columnValue": {
+    "message": "Verdi"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | description": {
+    "message": "Nettleseringeniører anbefaler å ha mindre enn 1500 DOM-elementer på nettsider. Ideelt bør treet være mindre enn 32 elementer dypt, og det bør være færre enn 60 underordnede/overordnede elementer. Store DOM-er kan øke minnebruken, forårsake lengre [stilberegninger](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations) og utløse kostbare [dynamiske tilpasninger av layouten](https://developers.google.com/speed/articles/reflow). [Finn ut mer](https://web.dev/dom-size)."
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 element}other{# elementer}}"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | failureTitle": {
+    "message": "Unngå for stor DOM-struktur"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | statisticDOMDepth": {
+    "message": "Maksimal DOM-dybde"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | statisticDOMElements": {
+    "message": "Totalt antall DOM-elementer"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | statisticDOMWidth": {
+    "message": "Maksimalt antall underordnede elementer"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | title": {
+    "message": "Unngå for stor DOM-struktur"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | columnRel": {
+    "message": "Rel"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | columnTarget": {
+    "message": "Mål"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | description": {
+    "message": "Legg til `rel=\"noopener\"` eller `rel=\"noreferrer\"` i eksterne linker for å øke ytelsen og forhindre sikkerhetssårbarheter. [Finn ut mer](https://web.dev/external-anchors-use-rel-noopener)."
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | failureTitle": {
+    "message": "Linker til opphavsuavhengige destinasjoner er utrygge"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | title": {
+    "message": "Linker til opphavsuavhengige destinasjoner er trygge"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | warning": {
+    "message": "Kunne ikke avgjøre destinasjonen for ankeret ({anchorHTML}). Hvis ankeret ikke brukes som hyperlink, vurder å fjerne target=_blank."
+  },
+  "lighthouse-core/audits/dobetterweb/geolocation-on-start.js | description": {
+    "message": "Brukere er mistroiske overfor eller blir forvirret av nettsteder som spør om posisjonen deres uten kontekst. Vurder å knytte forespørselen opp mot en brukerhandling i stedet. [Finn ut mer](https://web.dev/geolocation-on-start)."
+  },
+  "lighthouse-core/audits/dobetterweb/geolocation-on-start.js | failureTitle": {
+    "message": "Spør om geolokaliseringstillatelsen ved sideinnlasting"
+  },
+  "lighthouse-core/audits/dobetterweb/geolocation-on-start.js | title": {
+    "message": "Unngår å spørre om geolokaliseringstillatelsen ved sideinnlasting"
+  },
+  "lighthouse-core/audits/dobetterweb/js-libraries.js | columnVersion": {
+    "message": "Versjon"
+  },
+  "lighthouse-core/audits/dobetterweb/js-libraries.js | description": {
+    "message": "Alle JavaScript-grensesnittsbiblioteker som ble funnet på siden. [Finn ut mer](https://web.dev/js-libraries)."
+  },
+  "lighthouse-core/audits/dobetterweb/js-libraries.js | title": {
+    "message": "JavaScript-biblioteker som ble oppdaget"
+  },
+  "lighthouse-core/audits/dobetterweb/no-document-write.js | description": {
+    "message": "For brukere som har trege tilkoblinger, kan eksterne skript som injiseres dynamisk via `document.write()`, forsinke sideinnlastingen med flere titalls sekunder. [Finn ut mer](https://web.dev/no-document-write)."
+  },
+  "lighthouse-core/audits/dobetterweb/no-document-write.js | failureTitle": {
+    "message": "Bruker `document.write()`"
+  },
+  "lighthouse-core/audits/dobetterweb/no-document-write.js | title": {
+    "message": "Unngår `document.write()`"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | columnSeverity": {
+    "message": "Høyeste alvorlighetsgrad"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | columnVersion": {
+    "message": "Bibliotekversjon"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | columnVuln": {
+    "message": "Antall sårbarheter"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | description": {
+    "message": "Noen tredjepartsskript kan inneholde kjente sikkerhetssårbarheter som enkelt kan identifiseres og utnyttes av angripere. [Finn ut mer](https://web.dev/no-vulnerable-libraries)."
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 sårbarhet er oppdaget}other{# sårbarheter er oppdaget}}"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | failureTitle": {
+    "message": "Inkluderer JavaScript-grensesnittsbiblioteker med kjente sikkerhetssårbarheter"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | rowSeverityHigh": {
+    "message": "Høy"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | rowSeverityLow": {
+    "message": "Lav"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | rowSeverityMedium": {
+    "message": "Middels"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | title": {
+    "message": "Unngår JavaScript-grensesnittsbiblioteker med kjente sikkerhetssårbarheter"
+  },
+  "lighthouse-core/audits/dobetterweb/notification-on-start.js | description": {
+    "message": "Brukere er mistroiske overfor eller blir forvirret av nettsteder som spør om å få sende varsler uten kontekst. Vurder å knytte forespørselen opp mot brukerbevegelser i stedet. [Finn ut mer](https://web.dev/notification-on-start)."
+  },
+  "lighthouse-core/audits/dobetterweb/notification-on-start.js | failureTitle": {
+    "message": "Spør om varseltillatelsen ved sideinnlasting"
+  },
+  "lighthouse-core/audits/dobetterweb/notification-on-start.js | title": {
+    "message": "Unngår å spørre om varseltillatelsen ved sideinnlasting"
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | columnFailingElem": {
+    "message": "Elementer som ikke besto kontrollen"
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | description": {
+    "message": "Å hindre brukere i å lime inn passord underminerer gode retningslinjer for sikkerhet. [Finn ut mer](https://web.dev/password-inputs-can-be-pasted-into)."
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | failureTitle": {
+    "message": "Forhindrer brukere fra å lime inn i passordfelt"
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | title": {
+    "message": "Brukerne kan lime inn i passordfelt"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | columnProtocol": {
+    "message": "Protokoll"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | description": {
+    "message": "HTTP/2 har mange fordeler sammenlignet med HTTP/1.1, blant annet binære headers, multipleksing og aktiv meldingslevering fra tjener. [Finn ut mer](https://web.dev/uses-http2)."
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 forespørsel ble ikke vist via HTTP/2}other{# forespørsler ble ikke vist via HTTP/2}}"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | failureTitle": {
+    "message": "Bruker ikke HTTP/2 for alle ressursene"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | title": {
+    "message": "Bruker HTTP/2 til sine egne ressurser"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-passive-event-listeners.js | description": {
+    "message": "Vurder å markere aktivitetslytterne for berøring og musehjul som `passive` for å oppnå bedre ytelse ved rulling på siden. [Finn ut mer](https://web.dev/uses-passive-event-listeners)."
+  },
+  "lighthouse-core/audits/dobetterweb/uses-passive-event-listeners.js | failureTitle": {
+    "message": "Bruker ikke passive lyttere for å oppnå bedre ytelse ved rulling på siden"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-passive-event-listeners.js | title": {
+    "message": "Bruker passive lyttere for å oppnå bedre ytelse ved rulling på siden"
+  },
+  "lighthouse-core/audits/errors-in-console.js | columnDesc": {
+    "message": "Beskrivelse"
+  },
+  "lighthouse-core/audits/errors-in-console.js | description": {
+    "message": "Feil som loggføres i konsollen, tyder på uløste problemer. De kan stamme fra mislykkede nettverksforespørsler og andre nettleserproblemer. [Finn ut mer](https://web.dev/errors-in-console)"
+  },
+  "lighthouse-core/audits/errors-in-console.js | failureTitle": {
+    "message": "Nettleserfeil ble loggført i konsollen"
+  },
+  "lighthouse-core/audits/errors-in-console.js | title": {
+    "message": "Ingen nettleserfeil ble loggført i konsollen"
+  },
+  "lighthouse-core/audits/font-display.js | description": {
+    "message": "Bruk CSS-funksjonen font-display til å forsikre deg om at brukerne ser teksten mens skrifttypene for nettet lastes inn. [Finn ut mer](https://developers.google.com/web/updates/2016/02/font-display)."
+  },
+  "lighthouse-core/audits/font-display.js | failureTitle": {
+    "message": "Sørg for at teksten forblir synlig under innlasting av skrifttyper for nettet"
+  },
+  "lighthouse-core/audits/font-display.js | title": {
+    "message": "All tekst forblir synlig under innlasting av skrifttype for nettet"
+  },
+  "lighthouse-core/audits/font-display.js | undeclaredFontURLWarning": {
+    "message": "Lighthouse kunne ikke automatisk kontrollere verdien av font-display for denne nettadressen: {fontURL}."
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | columnActual": {
+    "message": "Høyde/bredde-forhold (faktisk)"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | columnDisplayed": {
+    "message": "Høyde/bredde-forhold (vist)"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | description": {
+    "message": "Visningsstørrelsen for bilder bør samsvare med det naturlige høyde/bredde-forholdet. [Finn ut mer](https://web.dev/image-aspect-ratio)."
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | failureTitle": {
+    "message": "Viser bilder med feil høyde/bredde-forhold"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | title": {
+    "message": "Viser bilder med riktig høyde/bredde-forhold"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | warningCompute": {
+    "message": "Ugyldig informasjon om bildestørrelse – {url}"
+  },
+  "lighthouse-core/audits/installable-manifest.js | description": {
+    "message": "Nettlesere kan aktivt spørre brukere om de vil legge til appen på startskjermen sin. Det kan føre til økt interaksjon. [Finn ut mer](https://developers.google.com/web/tools/lighthouse/audits/install-prompt)."
+  },
+  "lighthouse-core/audits/installable-manifest.js | failureTitle": {
+    "message": "Manifestet til nettprogrammet oppfyller ikke kravene til installerbarhet"
+  },
+  "lighthouse-core/audits/installable-manifest.js | title": {
+    "message": "Manifestet til nettprogrammet oppfyller kravene til installerbarhet"
+  },
+  "lighthouse-core/audits/is-on-https.js | columnInsecureURL": {
+    "message": "Utrygg nettadresse"
+  },
+  "lighthouse-core/audits/is-on-https.js | description": {
+    "message": "Alle nettsteder bør være beskyttet med HTTPS, selv de som ikke håndterer sensitive opplysninger. HTTPS forhindrer inntrengere fra å tukle med eller lytte passivt til kommunikasjonen mellom appen din og brukerne dine og er en forutsetning for å kunne bruke HTTP/2 og mange nye nettplattform-API-er. [Finn ut mer](https://web.dev/is-on-https)."
+  },
+  "lighthouse-core/audits/is-on-https.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 utrygg forespørsel er funnet}other{# utrygge forespørsler er funnet}}"
+  },
+  "lighthouse-core/audits/is-on-https.js | failureTitle": {
+    "message": "Bruker ikke HTTPS"
+  },
+  "lighthouse-core/audits/is-on-https.js | title": {
+    "message": "Bruker HTTPS"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | description": {
+    "message": "Når sider lastes inn raskt over mobilnettverk, gir det en god brukeropplevelse på mobilenheter. [Finn ut mer](https://developers.google.com/web/tools/lighthouse/audits/fast-3g)."
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | displayValueText": {
+    "message": "Interaktiv etter {timeInMs, number, seconds} s"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | displayValueTextWithOverride": {
+    "message": "Siden ble interaktiv på det simulerte mobilnettverket etter {timeInMs, number, seconds} s"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | explanationLoadSlow": {
+    "message": "Siden lastes inn for sakte og blir ikke interaktiv i løpet av 10 sekunder. Se på mulighetene og diagnostikken i delen «Ytelse» for å finne ut hva som kan forbedres."
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | failureTitle": {
+    "message": "Siden lastes ikke inn raskt nok over mobilnettverk"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | title": {
+    "message": "Siden lastes inn raskt nok over mobilnettverk"
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | columnCategory": {
+    "message": "Kategori"
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | description": {
+    "message": "Vurder å redusere tiden som brukes til parsing, kompilering og kjøring i JS. Levering av mindre JS-ressurser kan bidra til dette."
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | failureTitle": {
+    "message": "Minimer arbeidet på hovedtråden"
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | title": {
+    "message": "Minimerer arbeidet på hovedtråden"
+  },
+  "lighthouse-core/audits/manual/pwa-cross-browser.js | description": {
+    "message": "For å nå så mange brukere som mulig bør nettsteder fungere i alle de vanligste nettleserne. [Finn ut mer](https://developers.google.com/web/progressive-web-apps/checklist#site-works-cross-browser)."
+  },
+  "lighthouse-core/audits/manual/pwa-cross-browser.js | title": {
+    "message": "Nettstedet fungerer i ulike nettlesere"
+  },
+  "lighthouse-core/audits/manual/pwa-each-page-has-url.js | description": {
+    "message": "Sørg for at individuelle sider kan dyplinkes via nettadresser, og at nettadressene er unike, slik at de kan deles på sosiale medier. [Finn ut mer](https://developers.google.com/web/progressive-web-apps/checklist#each-page-has-a-url)."
+  },
+  "lighthouse-core/audits/manual/pwa-each-page-has-url.js | title": {
+    "message": "Hver side har en nettadresse"
+  },
+  "lighthouse-core/audits/manual/pwa-page-transitions.js | description": {
+    "message": "Overganger skal føles smidige når du trykker deg rundt, selv på et tregt nettverk. Dette er sentralt for den opplevde ytelsen. [Finn ut mer](https://developers.google.com/web/progressive-web-apps/checklist#page-transitions-dont-feel-like-they-block-on-the-network)."
+  },
+  "lighthouse-core/audits/manual/pwa-page-transitions.js | title": {
+    "message": "Sideoverganger føles ikke som om de blokkerer på nettverket"
+  },
+  "lighthouse-core/audits/metrics/estimated-input-latency.js | description": {
+    "message": "Beregnet inndataforsinkelse er et estimat av hvor lang tid (i millisekunder) det tar for appen å svare på brukerinndata i det travleste 5-sekunders tidsrommet mens siden lastes inn. Hvis tidsforsinkelsen er høyere enn 50 ms, kan brukere oppleve appen som treg. [Finn ut mer](https://developers.google.com/web/tools/lighthouse/audits/estimated-input-latency)."
+  },
+  "lighthouse-core/audits/metrics/estimated-input-latency.js | title": {
+    "message": "Anslått tidsforsinkelse for inndata"
+  },
+  "lighthouse-core/audits/metrics/first-contentful-paint.js | description": {
+    "message": "Den første innholdsrike opptegningen (FCP) markerer den første gangen tekst eller bilder tegnes opp. [Finn ut mer](https://developers.google.com/web/tools/lighthouse/audits/first-contentful-paint)."
+  },
+  "lighthouse-core/audits/metrics/first-contentful-paint.js | title": {
+    "message": "Første innholdsrike opptegning"
+  },
+  "lighthouse-core/audits/metrics/first-cpu-idle.js | description": {
+    "message": "Første prosessor ledig markerer den første gangen sidens hovedtråd er stille nok til å klare å håndtere inndata. [Finn ut mer](https://developers.google.com/web/tools/lighthouse/audits/first-interactive)."
+  },
+  "lighthouse-core/audits/metrics/first-cpu-idle.js | title": {
+    "message": "Første prosessor ledig"
+  },
+  "lighthouse-core/audits/metrics/first-meaningful-paint.js | description": {
+    "message": "Første vesentlige opptegning måler når hovedinnholdet på en side er synlig. [Finn ut mer](https://developers.google.com/web/tools/lighthouse/audits/first-meaningful-paint)."
+  },
+  "lighthouse-core/audits/metrics/first-meaningful-paint.js | title": {
+    "message": "Første vesentlige opptegning"
+  },
+  "lighthouse-core/audits/metrics/interactive.js | description": {
+    "message": "Tid til interaktiv vil si hvor lang tid det tar før siden blir helt interaktiv. [Finn ut mer](https://developers.google.com/web/tools/lighthouse/audits/consistently-interactive)."
+  },
+  "lighthouse-core/audits/metrics/interactive.js | title": {
+    "message": "Tid til interaktiv"
+  },
+  "lighthouse-core/audits/metrics/max-potential-fid.js | description": {
+    "message": "Den maksimale potensielle forsinkelsen for første inndata som brukerne dine kan oppleve, er varigheten (i millisekunder) av den lengste oppgaven. [Finn ut mer](https://developers.google.com/web/updates/2018/05/first-input-delay)."
+  },
+  "lighthouse-core/audits/metrics/max-potential-fid.js | title": {
+    "message": "Maks forsinkelse for første inndata"
+  },
+  "lighthouse-core/audits/metrics/speed-index.js | description": {
+    "message": "Hastighetsindeksen viser hvor raskt innholdet på siden blir synlig. [Finn ut mer](https://developers.google.com/web/tools/lighthouse/audits/speed-index)."
+  },
+  "lighthouse-core/audits/metrics/speed-index.js | title": {
+    "message": "Hastighetsindeks"
+  },
+  "lighthouse-core/audits/metrics/total-blocking-time.js | description": {
+    "message": "Summen av alle tidsperiodene mellom første innholdsrike opptegning (FCP) og tid til interaktiv, når oppgavelengden har overskredet 50 ms, uttrykt i millisekunder."
+  },
+  "lighthouse-core/audits/metrics/total-blocking-time.js | title": {
+    "message": "Total blokkeringstid"
+  },
+  "lighthouse-core/audits/network-rtt.js | description": {
+    "message": "Rundturstidene (RTT) for nettverket har stor innvirkning på ytelsen. Hvis RTT-en til et bestemt opprinnelsessted er høy, tyder det på at tjenere som befinner seg nærmere brukeren, muligens kan gi bedre ytelse. [Finn ut mer](https://hpbn.co/primer-on-latency-and-bandwidth/)."
+  },
+  "lighthouse-core/audits/network-rtt.js | title": {
+    "message": "Rundturstider for nettverket"
+  },
+  "lighthouse-core/audits/network-server-latency.js | description": {
+    "message": "Tidsforsinkelser fra tjeneren kan påvirke nettytelsen. Hvis tjeneren for et bestemt opprinnelsessted har høy tidsforsinkelse, tyder det på at tjeneren er overbelastet eller har dårlig ytelse i tjenerdelen. [Finn ut mer](https://hpbn.co/primer-on-web-performance/#analyzing-the-resource-waterfall)."
+  },
+  "lighthouse-core/audits/network-server-latency.js | title": {
+    "message": "Forsinkelser i tjenerdelen"
+  },
+  "lighthouse-core/audits/offline-start-url.js | description": {
+    "message": "Med en tjenestearbeider kan nettprogrammet ditt vært pålitelig under uforutsigbare nettverksforhold. [Finn ut mer](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)."
+  },
+  "lighthouse-core/audits/offline-start-url.js | failureTitle": {
+    "message": "`start_url` svarer ikke med 200 når siden er uten nett"
+  },
+  "lighthouse-core/audits/offline-start-url.js | title": {
+    "message": "`start_url` svarer med 200 når siden er uten nett"
+  },
+  "lighthouse-core/audits/offline-start-url.js | warningCantStart": {
+    "message": "Lighthouse kunne ikke lese `start_url` i manifestet. Derfor ble det antatt at `start_url` var dokumentets nettadresse. Feilmelding: «{manifestWarning}»."
+  },
+  "lighthouse-core/audits/performance-budget.js | columnOverBudget": {
+    "message": "Over budsjett"
+  },
+  "lighthouse-core/audits/performance-budget.js | description": {
+    "message": "Sørg for at antall nettverksforespørsler og størrelsen på disse er lavere enn målene som er angitt i det aktuelle ytelsesbudsjettet. [Finn ut mer](https://developers.google.com/web/tools/lighthouse/audits/budgets)."
+  },
+  "lighthouse-core/audits/performance-budget.js | requestCountOverBudget": {
+    "message": "{count,plural, =1{1 forespørsel}other{# forespørsler}}"
+  },
+  "lighthouse-core/audits/performance-budget.js | title": {
+    "message": "Ytelsesbudsjett"
+  },
+  "lighthouse-core/audits/redirects-http.js | description": {
+    "message": "Hvis du allerede har satt opp HTTPS, må du sørge for at du viderekobler all HTTP-trafikk til HTTPS, slik at du gir alle brukerne dine tilgang til sikker nettfunksjonalitet. [Finn ut mer](https://developers.google.com/web/tools/lighthouse/audits/http-redirects-to-https)."
+  },
+  "lighthouse-core/audits/redirects-http.js | failureTitle": {
+    "message": "Viderekobler ikke HTTP-trafikk til HTTPS"
+  },
+  "lighthouse-core/audits/redirects-http.js | title": {
+    "message": "Viderekobler HTTP-trafikk til HTTPS"
+  },
+  "lighthouse-core/audits/redirects.js | description": {
+    "message": "Viderekoblinger fører til flere forsinkelser før siden kan lastes inn. [Finn ut mer](https://developers.google.com/web/tools/lighthouse/audits/redirects)."
+  },
+  "lighthouse-core/audits/redirects.js | title": {
+    "message": "Unngå flere viderekoblinger av siden"
+  },
+  "lighthouse-core/audits/resource-summary.js | description": {
+    "message": "For å angi budsjetter for antall sideressurser og størrelsen på disse, legg til en budget.json-fil. [Finn ut mer](https://developers.google.com/web/tools/lighthouse/audits/budgets)."
+  },
+  "lighthouse-core/audits/resource-summary.js | displayValue": {
+    "message": "{requestCount,plural, =1{1 forespørsel • {byteCount, number, bytes} kB}other{# forespørsler • {byteCount, number, bytes} kB}}"
+  },
+  "lighthouse-core/audits/resource-summary.js | title": {
+    "message": "Minimer antall forespørsler og størrelsen på overføringer"
+  },
+  "lighthouse-core/audits/seo/canonical.js | description": {
+    "message": "Kanoniske linker foreslår hvilken nettadresse som skal vises i søkeresultater. [Finn ut mer](https://web.dev/canonical)."
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationConflict": {
+    "message": "Flere motstridende nettadresser ({urlList})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationDifferentDomain": {
+    "message": "Peker til et annet domene ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationInvalid": {
+    "message": "Ugyldig nettadresse ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationPointsElsewhere": {
+    "message": "Peker til en annen `hreflang`-plassering ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationRelative": {
+    "message": "Relativ nettadresse ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationRoot": {
+    "message": "Peker til domenets rotadresse (startsiden) i stedet for en tilsvarende side med innhold"
+  },
+  "lighthouse-core/audits/seo/canonical.js | failureTitle": {
+    "message": "Dokumentet har ikke noe gyldig `rel=canonical`-element"
+  },
+  "lighthouse-core/audits/seo/canonical.js | title": {
+    "message": "Dokumentet har en gyldig `rel=canonical`-link"
+  },
+  "lighthouse-core/audits/seo/font-size.js | description": {
+    "message": "Skriftstørrelser på mindre enn 12 px er for små til å være leselige og gjør at besøkende på mobil må «klype for å zoome» for å klare å lese teksten. Prøv å sørge for at mer enn 60 % av teksten på siden er 12 px eller større. [Finn ut mer](https://web.dev/font-size)."
+  },
+  "lighthouse-core/audits/seo/font-size.js | displayValue": {
+    "message": "{decimalProportion, number, extendedPercent} lesbar tekst"
+  },
+  "lighthouse-core/audits/seo/font-size.js | explanationViewport": {
+    "message": "Teksten er uleselig fordi det ikke er noen viewport-metatag som er optimalisert for mobilskjermer."
+  },
+  "lighthouse-core/audits/seo/font-size.js | explanationWithDisclaimer": {
+    "message": "{decimalProportion, number, extendedPercent} av teksten er for liten (basert på et utvalg på {decimalProportionVisited, number, extendedPercent} av siden)."
+  },
+  "lighthouse-core/audits/seo/font-size.js | failureTitle": {
+    "message": "Dokumentet bruker ikke leselige skriftstørrelser"
+  },
+  "lighthouse-core/audits/seo/font-size.js | title": {
+    "message": "Dokumentet bruker leselige skriftstørrelser"
+  },
+  "lighthouse-core/audits/seo/hreflang.js | description": {
+    "message": "hreflang-linker forteller søkemotorer hvilken sideversjon som skal føres opp i søkeresultatene for bestemte språk eller regioner. [Finn ut mer](https://web.dev/hreflang)."
+  },
+  "lighthouse-core/audits/seo/hreflang.js | failureTitle": {
+    "message": "Dokumentet har ikke noe gyldig `hreflang`-attributt"
+  },
+  "lighthouse-core/audits/seo/hreflang.js | title": {
+    "message": "Dokumentet har et gyldig `hreflang`-attributt"
+  },
+  "lighthouse-core/audits/seo/http-status-code.js | description": {
+    "message": "Sider med HTTP-statuskoder som indikerer mislykkede forespørsler, indekseres kanskje ikke skikkelig. [Finn ut mer](https://web.dev/http-status-code)."
+  },
+  "lighthouse-core/audits/seo/http-status-code.js | failureTitle": {
+    "message": "Sidens HTTP-statuskode indikerer mislykket forespørsel"
+  },
+  "lighthouse-core/audits/seo/http-status-code.js | title": {
+    "message": "Sidens HTTP-statuskode er gyldig"
+  },
+  "lighthouse-core/audits/seo/is-crawlable.js | description": {
+    "message": "Søkemotorer kan ikke ta med sidene dine i søkeresultatene hvis de ikke har tillatelse til å gjennomsøke dem. [Finn ut mer](https://web.dev/is-crawable)."
+  },
+  "lighthouse-core/audits/seo/is-crawlable.js | failureTitle": {
+    "message": "Siden er blokkert for indeksering"
+  },
+  "lighthouse-core/audits/seo/is-crawlable.js | title": {
+    "message": "Siden er ikke blokkert for indeksering"
+  },
+  "lighthouse-core/audits/seo/link-text.js | description": {
+    "message": "Beskrivende linktekst hjelper søkemotorer med å forstå innholdet. [Finn ut mer](https://web.dev/link-text)."
+  },
+  "lighthouse-core/audits/seo/link-text.js | displayValue": {
+    "message": "{itemCount,plural, =1{Fant 1 link}other{Fant # linker}}"
+  },
+  "lighthouse-core/audits/seo/link-text.js | failureTitle": {
+    "message": "Linker har ikke beskrivende tekst"
+  },
+  "lighthouse-core/audits/seo/link-text.js | title": {
+    "message": "Linkene har beskrivende tekst"
+  },
+  "lighthouse-core/audits/seo/manual/structured-data.js | description": {
+    "message": "Kjør [Testverktøy for strukturerte data](https://search.google.com/structured-data/testing-tool/) og [Structured Data Linter](http://linter.structured-data.org/) for å validere strukturerte data. [Finn ut mer](https://web.dev/structured-data)."
+  },
+  "lighthouse-core/audits/seo/manual/structured-data.js | title": {
+    "message": "Strukturerte data er gyldige"
+  },
+  "lighthouse-core/audits/seo/meta-description.js | description": {
+    "message": "Metabeskrivelser kan tas med i søkeresultater for å oppsummere sideinnholdet kort og konsist. [Finn ut mer](https://web.dev/meta-description)."
+  },
+  "lighthouse-core/audits/seo/meta-description.js | explanation": {
+    "message": "Beskrivelsesteksten er tom."
+  },
+  "lighthouse-core/audits/seo/meta-description.js | failureTitle": {
+    "message": "Dokumentet har ingen metabeskrivelse"
+  },
+  "lighthouse-core/audits/seo/meta-description.js | title": {
+    "message": "Dokumentet har en metabeskrivelse"
+  },
+  "lighthouse-core/audits/seo/plugins.js | description": {
+    "message": "Søkemotorer kan ikke indeksere innholdet i programtillegg, og mange enheter begrenser programtillegg eller støtter dem ikke. [Finn ut mer](https://web.dev/plugins)."
+  },
+  "lighthouse-core/audits/seo/plugins.js | failureTitle": {
+    "message": "Dokumentet bruker programtillegg"
+  },
+  "lighthouse-core/audits/seo/plugins.js | title": {
+    "message": "Dokumentet bruker ikke programtillegg"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | description": {
+    "message": "Hvis robots.txt-filen har feil format, kan det hende at søkeroboter ikke forstår hvordan du vil at nettstedet ditt skal gjennomsøkes eller indekseres. [Finn ut mer](https://web.dev/robots-txt)."
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | displayValueHttpBadCode": {
+    "message": "Forespørselen om robots.txt returnerte HTTP-statusen: {statusCode}"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | displayValueValidationError": {
+    "message": "{itemCount,plural, =1{Fant 1 feil}other{Fant # feil}}"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | explanation": {
+    "message": "Lighthouse kunne ikke laste ned noen robots.txt-fil"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | failureTitle": {
+    "message": "robots.txt er ikke gyldig"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | title": {
+    "message": "robots.txt er gyldig"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | description": {
+    "message": "Interaktive elementer, som knapper og linker, må være store nok (48 x 48 px) og ha nok plass rundt seg til at det er lett å trykke på dem uten at de overlapper andre elementer. [Finn ut mer](https://web.dev/tap-targets)."
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | displayValue": {
+    "message": "{decimalProportion, number, percent} av de trykkbare elementene er store nok"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | explanationViewportMetaNotOptimized": {
+    "message": "De trykkbare elementene er for små fordi det ikke er noen viewport-metatag som er optimalisert for mobilskjermer"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | failureTitle": {
+    "message": "Trykkbare elementer er ikke store nok"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | overlappingTargetHeader": {
+    "message": "Overlappende trykkbart element"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | tapTargetHeader": {
+    "message": "Trykkbart element"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | title": {
+    "message": "Trykkbare elementer er store nok"
+  },
+  "lighthouse-core/audits/service-worker.js | description": {
+    "message": "Tjenestearbeideren er teknologien som gjør at appen din kan bruke mange funksjoner for progressive nettprogrammer, f.eks. muligheten til å bruke appen uten nett, legge den til på startskjermen og sende pushvarslinger. [Finn ut mer](https://developers.google.com/web/tools/lighthouse/audits/registered-service-worker)."
+  },
+  "lighthouse-core/audits/service-worker.js | explanationBadManifest": {
+    "message": "Denne siden styres av en tjenestearbeider, men ingen `start_url` ble funnet fordi manifestet ikke kunne parses som gyldig JSON"
+  },
+  "lighthouse-core/audits/service-worker.js | explanationBadStartUrl": {
+    "message": "Denne siden styres av en tjenestearbeider, men `start_url` ({startUrl}) ligger utenfor tjenestearbeiderens omfang ({scopeUrl})"
+  },
+  "lighthouse-core/audits/service-worker.js | explanationNoManifest": {
+    "message": "Denne siden styres av en tjenestearbeider, men ingen `start_url` ble funnet fordi manifestet ikke ble hentet."
+  },
+  "lighthouse-core/audits/service-worker.js | explanationOutOfScope": {
+    "message": "Denne plasseringen har én eller flere tjenestearbeidere, men siden ({pageUrl}) ligger utenfor omfanget."
+  },
+  "lighthouse-core/audits/service-worker.js | failureTitle": {
+    "message": "Registrerer ikke en tjenestearbeider som styrer siden og `start_url`"
+  },
+  "lighthouse-core/audits/service-worker.js | title": {
+    "message": "Registrerer en tjenestearbeider som styrer siden og `start_url`"
+  },
+  "lighthouse-core/audits/splash-screen.js | description": {
+    "message": "Tematiske splash-skjermer gjør at brukerne får en kvalitetsopplevelse når de starter appen fra startskjermen. [Finn ut mer](https://developers.google.com/web/tools/lighthouse/audits/custom-splash-screen)."
+  },
+  "lighthouse-core/audits/splash-screen.js | failureTitle": {
+    "message": "Er ikke konfigurert med tilpasset splash-skjerm"
+  },
+  "lighthouse-core/audits/splash-screen.js | title": {
+    "message": "Konfigurert med tilpasset splash-skjerm"
+  },
+  "lighthouse-core/audits/themed-omnibox.js | description": {
+    "message": "Adressefeltet i nettleseren kan gis et tema for å stå i stil med nettstedet ditt. [Finn ut mer](https://developers.google.com/web/tools/lighthouse/audits/address-bar)."
+  },
+  "lighthouse-core/audits/themed-omnibox.js | failureTitle": {
+    "message": "Angir ikke en temafarge for adressefeltet."
+  },
+  "lighthouse-core/audits/themed-omnibox.js | title": {
+    "message": "Angir en temafarge for adressefeltet."
+  },
+  "lighthouse-core/audits/third-party-summary.js | columnBlockingTime": {
+    "message": "Blokkeringstid i hovedtråden"
+  },
+  "lighthouse-core/audits/third-party-summary.js | columnThirdParty": {
+    "message": "Tredjepart"
+  },
+  "lighthouse-core/audits/third-party-summary.js | description": {
+    "message": "Tredjepartskode kan ha betydelig innvirkning på hvor lang tid det tar å laste inn siden. Begrens antallet overflødige tredjepartsleverandører, og prøv å laste inn tredjepartskode etter at siden for det meste er ferdig innlastet. [Finn ut mer](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/loading-third-party-javascript/)."
+  },
+  "lighthouse-core/audits/third-party-summary.js | displayValue": {
+    "message": "Tredjepartskode blokkerte hovedtråden i {timeInMs, number, milliseconds} ms"
+  },
+  "lighthouse-core/audits/third-party-summary.js | failureTitle": {
+    "message": "Reduser innvirkningen av tredjepartskode"
+  },
+  "lighthouse-core/audits/third-party-summary.js | title": {
+    "message": "Tredjepartsbruk"
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | description": {
+    "message": "Tid til første byte identifiserer tidspunktet da tjeneren sendte et svar. [Finn ut mer](https://developers.google.com/web/tools/lighthouse/audits/ttfb)."
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | displayValue": {
+    "message": "Root-dokumentet brukte {timeInMs, number, milliseconds} ms"
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | failureTitle": {
+    "message": "Reduser responstiden for tjener (TTFB)"
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | title": {
+    "message": "Svartiden til tjeneren er lav (TTFB)"
+  },
+  "lighthouse-core/audits/user-timings.js | columnDuration": {
+    "message": "Varighet"
+  },
+  "lighthouse-core/audits/user-timings.js | columnStartTime": {
+    "message": "Starttid"
+  },
+  "lighthouse-core/audits/user-timings.js | columnType": {
+    "message": "Type"
+  },
+  "lighthouse-core/audits/user-timings.js | description": {
+    "message": "Vurder å utstyre appen din med brukertiming-API-et for å måle appens reelle ytelse under viktige brukeropplevelser. [Finn ut mer](https://developers.google.com/web/tools/lighthouse/audits/user-timing)."
+  },
+  "lighthouse-core/audits/user-timings.js | displayValue": {
+    "message": "{itemCount,plural, =1{ 1 brukertiming}other{# brukertiminger}}"
+  },
+  "lighthouse-core/audits/user-timings.js | title": {
+    "message": "User Timing – merker og intervaller"
+  },
+  "lighthouse-core/audits/uses-rel-preconnect.js | crossoriginWarning": {
+    "message": "Det ble funnet en <link> for forhåndstilkobling for {securityOrigin}, men denne ble ikke brukt av nettleseren. Kontrollér at du bruker `crossorigin`-attributtet riktig."
+  },
+  "lighthouse-core/audits/uses-rel-preconnect.js | description": {
+    "message": "Vurder å legge til `preconnect`- eller `dns-prefetch`-ressurshint for å opprette tidlige tilkoblinger til viktige tredjepartsplasseringer. [Finn ut mer](https://developers.google.com/web/fundamentals/performance/resource-prioritization#preconnect)."
+  },
+  "lighthouse-core/audits/uses-rel-preconnect.js | title": {
+    "message": "Opprett forhåndstilkobling til nødvendige domenenavn"
+  },
+  "lighthouse-core/audits/uses-rel-preload.js | crossoriginWarning": {
+    "message": "Det ble funnet en <link> for forhåndsinnlasting for {preloadURL}, men denne ble ikke brukt av nettleseren. Kontrollér at du bruker `crossorigin`-attributtet riktig."
+  },
+  "lighthouse-core/audits/uses-rel-preload.js | description": {
+    "message": "Vurder å bruke `<link rel=preload>` for å prioritere henting av ressurser som for øyeblikket blir forespurt senere i sideinnlastingen. [Finn ut mer](https://developers.google.com/web/tools/lighthouse/audits/preload)."
+  },
+  "lighthouse-core/audits/uses-rel-preload.js | title": {
+    "message": "Forhåndsinnlast (preload) nøkkelforespørsler"
+  },
+  "lighthouse-core/audits/viewport.js | description": {
+    "message": "Legg til en `<meta name=\"viewport\">`-tag for å optimalisere appen for mobilskjermer. [Finn ut mer](https://developers.google.com/web/tools/lighthouse/audits/has-viewport-meta-tag)."
+  },
+  "lighthouse-core/audits/viewport.js | explanationNoTag": {
+    "message": "Fant ingen `<meta name=\"viewport\">`-tag"
+  },
+  "lighthouse-core/audits/viewport.js | failureTitle": {
+    "message": "Har ingen `<meta name=\"viewport\">`-tag med `width` eller `initial-scale`"
+  },
+  "lighthouse-core/audits/viewport.js | title": {
+    "message": "Har en `<meta name=\"viewport\">`-tag med `width` eller `initial-scale`"
+  },
+  "lighthouse-core/audits/without-javascript.js | description": {
+    "message": "Appen bør vise noe innhold når JavaScript er deaktivert, selv om det bare er en advarsel til brukeren om at JavaScript kreves for å bruke appen. [Finn ut mer](https://developers.google.com/web/tools/lighthouse/audits/no-js)."
+  },
+  "lighthouse-core/audits/without-javascript.js | explanation": {
+    "message": "Sidekroppen bør vise noe innhold hvis skriptene ikke er tilgjengelige."
+  },
+  "lighthouse-core/audits/without-javascript.js | failureTitle": {
+    "message": "Tilbyr ikke reserveinnhold når JavaScript ikke er tilgjengelig"
+  },
+  "lighthouse-core/audits/without-javascript.js | title": {
+    "message": "Inneholder noe innhold når JavaScript ikke er tilgjengelig"
+  },
+  "lighthouse-core/audits/works-offline.js | description": {
+    "message": "Hvis du utvikler et progressivt nettprogram, kan du vurdere å bruke en tjenestearbeider, så appen fungerer uten nett. [Finn ut mer](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)."
+  },
+  "lighthouse-core/audits/works-offline.js | failureTitle": {
+    "message": "Den gjeldende siden svarer ikke med 200 når den er uten nett"
+  },
+  "lighthouse-core/audits/works-offline.js | title": {
+    "message": "Den gjeldende siden svarer med 200 når den er uten nett"
+  },
+  "lighthouse-core/audits/works-offline.js | warningNoLoad": {
+    "message": "Siden lastes kanskje ikke inn uten nett, fordi testnettadressen ({requested}) ble viderekoblet til «{final}». Prøv å teste den andre nettadressen direkte."
+  },
+  "lighthouse-core/config/default-config.js | a11yAriaGroupDescription": {
+    "message": "Dette er muligheter til å forbedre bruken av ARIA i programmet ditt, noe som kan gjøre opplevelsen bedre for brukere av assisterende teknologi, som skjermlesere."
+  },
+  "lighthouse-core/config/default-config.js | a11yAriaGroupTitle": {
+    "message": "ARIA"
+  },
+  "lighthouse-core/config/default-config.js | a11yAudioVideoGroupDescription": {
+    "message": "Dette er muligheter til å tilby alternativt innhold for lyd og video. Dette kan gjøre opplevelsen bedre for brukere med nedsatt syn eller hørsel."
+  },
+  "lighthouse-core/config/default-config.js | a11yAudioVideoGroupTitle": {
+    "message": "Lyd og video"
+  },
+  "lighthouse-core/config/default-config.js | a11yBestPracticesGroupDescription": {
+    "message": "Disse punktene fremhever de vanligste anbefalte fremgangsmåtene for å sikre god tilgjengelighet."
+  },
+  "lighthouse-core/config/default-config.js | a11yBestPracticesGroupTitle": {
+    "message": "Anbefalte fremgangsmåter"
+  },
+  "lighthouse-core/config/default-config.js | a11yCategoryDescription": {
+    "message": "Disse kontrollene fremhever muligheter til [å gjøre nettprogrammet ditt mer tilgjengelig](https://developers.google.com/web/fundamentals/accessibility). Kun et utvalg av tilgjengelighetsproblemer kan oppdages automatisk, så du bør teste manuelt i tillegg."
+  },
+  "lighthouse-core/config/default-config.js | a11yCategoryManualDescription": {
+    "message": "Disse punktene tar for seg områder som ikke kan dekkes av automatiske testverktøy. Finn ut mer i veiledningen vår om [å utføre tilgjengelighetsgjennomganger](https://developers.google.com/web/fundamentals/accessibility/how-to-review)."
+  },
+  "lighthouse-core/config/default-config.js | a11yCategoryTitle": {
+    "message": "Tilgjengelighet"
+  },
+  "lighthouse-core/config/default-config.js | a11yColorContrastGroupDescription": {
+    "message": "Dette er muligheter til å gjøre innholdet mer leselig."
+  },
+  "lighthouse-core/config/default-config.js | a11yColorContrastGroupTitle": {
+    "message": "Kontrast"
+  },
+  "lighthouse-core/config/default-config.js | a11yLanguageGroupDescription": {
+    "message": "Dette er muligheter til å gjøre innholdet lettere å tolke for brukere med forskjellige lokaliteter."
+  },
+  "lighthouse-core/config/default-config.js | a11yLanguageGroupTitle": {
+    "message": "Internasjonalisering og lokalisering"
+  },
+  "lighthouse-core/config/default-config.js | a11yNamesLabelsGroupDescription": {
+    "message": "Dette er muligheter til å gjøre kontrollene i programmet mer semantiske. Dette kan gjøre opplevelsen bedre for brukere av assisterende teknologi, som skjermlesere."
+  },
+  "lighthouse-core/config/default-config.js | a11yNamesLabelsGroupTitle": {
+    "message": "Navn og etiketter"
+  },
+  "lighthouse-core/config/default-config.js | a11yNavigationGroupDescription": {
+    "message": "Dette er muligheter til å gjøre tastaturnavigeringen i programmet ditt bedre."
+  },
+  "lighthouse-core/config/default-config.js | a11yNavigationGroupTitle": {
+    "message": "Navigering"
+  },
+  "lighthouse-core/config/default-config.js | a11yTablesListsVideoGroupDescription": {
+    "message": "Dette er muligheter til å gi en bedre opplevelse når assisterende teknologi, som skjermlesere, brukes til å lese data i tabeller eller lister."
+  },
+  "lighthouse-core/config/default-config.js | a11yTablesListsVideoGroupTitle": {
+    "message": "Tabeller og lister"
+  },
+  "lighthouse-core/config/default-config.js | bestPracticesCategoryTitle": {
+    "message": "Gode fremgangsmåter"
+  },
+  "lighthouse-core/config/default-config.js | budgetsGroupDescription": {
+    "message": "Ytelsesbudsjetter angir standarder for ytelsen på nettstedet."
+  },
+  "lighthouse-core/config/default-config.js | budgetsGroupTitle": {
+    "message": "Budsjetter"
+  },
+  "lighthouse-core/config/default-config.js | diagnosticsGroupDescription": {
+    "message": "Mer informasjon om ytelsen til appen din. Disse tallene har ingen [direkte innvirkning](https://github.com/GoogleChrome/lighthouse/blob/d2ec9ffbb21de9ad1a0f86ed24575eda32c796f0/docs/scoring.md#how-are-the-scores-weighted) på ytelsespoengsummen."
+  },
+  "lighthouse-core/config/default-config.js | diagnosticsGroupTitle": {
+    "message": "Diagnostikk"
+  },
+  "lighthouse-core/config/default-config.js | firstPaintImprovementsGroupDescription": {
+    "message": "Det mest kritiske aspektet for ytelse er hvor raskt piksler blir gjengitt på skjermen. Nøkkelberegninger: Første innholdsrike opptegning, Første vesentlige opptegning"
+  },
+  "lighthouse-core/config/default-config.js | firstPaintImprovementsGroupTitle": {
+    "message": "Forbedringer av første opptegning"
+  },
+  "lighthouse-core/config/default-config.js | loadOpportunitiesGroupDescription": {
+    "message": "Disse forslagene kan bidra til at siden lastes inn raskere. De har ingen [direkte innvirkning](https://github.com/GoogleChrome/lighthouse/blob/d2ec9ffbb21de9ad1a0f86ed24575eda32c796f0/docs/scoring.md#how-are-the-scores-weighted) på ytelsespoengsummen."
+  },
+  "lighthouse-core/config/default-config.js | loadOpportunitiesGroupTitle": {
+    "message": "Muligheter"
+  },
+  "lighthouse-core/config/default-config.js | metricGroupTitle": {
+    "message": "Beregninger"
+  },
+  "lighthouse-core/config/default-config.js | overallImprovementsGroupDescription": {
+    "message": "Gjør den totale innlastingsopplevelsen bedre, slik at siden reagerer og er klar til bruk så snart som mulig. Nøkkelberegninger: Tid til interaktiv, Hastighetsindeks"
+  },
+  "lighthouse-core/config/default-config.js | overallImprovementsGroupTitle": {
+    "message": "Forbedringsmuligheter"
+  },
+  "lighthouse-core/config/default-config.js | performanceCategoryTitle": {
+    "message": "Resultater"
+  },
+  "lighthouse-core/config/default-config.js | pwaCategoryDescription": {
+    "message": "Disse kontrollene validerer ulike aspekter av progressive nettprogrammer. [Finn ut mer](https://developers.google.com/web/progressive-web-apps/checklist)."
+  },
+  "lighthouse-core/config/default-config.js | pwaCategoryManualDescription": {
+    "message": "Disse kontrollene kreves av den grunnleggende [sjekklisten for progressive nettprogrammer](https://developers.google.com/web/progressive-web-apps/checklist), men kontrolleres ikke automatisk av Lighthouse. De påvirker ikke poengsummen din, men det er viktig at du verifiserer dem manuelt."
+  },
+  "lighthouse-core/config/default-config.js | pwaCategoryTitle": {
+    "message": "Progressivt nettprogram"
+  },
+  "lighthouse-core/config/default-config.js | pwaFastReliableGroupTitle": {
+    "message": "Rask og pålitelig"
+  },
+  "lighthouse-core/config/default-config.js | pwaInstallableGroupTitle": {
+    "message": "Kan installeres"
+  },
+  "lighthouse-core/config/default-config.js | pwaOptimizedGroupTitle": {
+    "message": "PWA-optimalisert"
+  },
+  "lighthouse-core/config/default-config.js | seoCategoryDescription": {
+    "message": "Disse kontrollene sørger for at siden din er optimalisert for god rangering i resultatene fra søkemotorer. Det finnes flere faktorer som Lighthouse ikke kontrollerer, men som kan påvirke søkerangeringen. [Finn ut mer](https://support.google.com/webmasters/answer/35769)."
+  },
+  "lighthouse-core/config/default-config.js | seoCategoryManualDescription": {
+    "message": "Kjør disse tilleggsvalideringene på nettstedet ditt for å sjekke flere anbefalte fremgangsmåter for SEO."
+  },
+  "lighthouse-core/config/default-config.js | seoCategoryTitle": {
+    "message": "SEO"
+  },
+  "lighthouse-core/config/default-config.js | seoContentGroupDescription": {
+    "message": "Formatér HTML-koden din på en måte som gjør det enklere for søkeroboter å forstå innholdet i appen."
+  },
+  "lighthouse-core/config/default-config.js | seoContentGroupTitle": {
+    "message": "Anbefalte fremgangsmåter for innhold"
+  },
+  "lighthouse-core/config/default-config.js | seoCrawlingGroupDescription": {
+    "message": "Søkeroboter trenger tilgang til appen din for at den skal vises i søkeresultater."
+  },
+  "lighthouse-core/config/default-config.js | seoCrawlingGroupTitle": {
+    "message": "Gjennomsøking og indeksering"
+  },
+  "lighthouse-core/config/default-config.js | seoMobileGroupDescription": {
+    "message": "Sørg for at sidene dine er mobilvennlige, så brukere ikke trenger å klype eller zoome inn for å lese innholdssidene. [Finn ut mer](https://developers.google.com/search/mobile-sites/)."
+  },
+  "lighthouse-core/config/default-config.js | seoMobileGroupTitle": {
+    "message": "Mobilvennlig"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnCacheTTL": {
+    "message": "Buffer-TTL"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnLocation": {
+    "message": "Posisjon"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnName": {
+    "message": "Navn"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnRequests": {
+    "message": "Forespørsler"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnResourceType": {
+    "message": "Ressurstype"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnSize": {
+    "message": "Størrelse"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnTimeSpent": {
+    "message": "Brukt tid"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnTransferSize": {
+    "message": "Overføringsstørrelse"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnURL": {
+    "message": "Nettadresse"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnWastedBytes": {
+    "message": "Potensielle besparelser"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnWastedMs": {
+    "message": "Potensielle besparelser"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | displayValueByteSavings": {
+    "message": "Potensielle besparelser på {wastedBytes, number, bytes} kB"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | displayValueMsSavings": {
+    "message": "Potensielle besparelser på {wastedMs, number, milliseconds} ms"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | documentResourceType": {
+    "message": "Dokument"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | fontResourceType": {
+    "message": "Skrifttype"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | imageResourceType": {
+    "message": "Bilde"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | mediaResourceType": {
+    "message": "Medier"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | ms": {
+    "message": "{timeInMs, number, milliseconds} ms"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | otherResourceType": {
+    "message": "Annet"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | scriptResourceType": {
+    "message": "Skript"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | seconds": {
+    "message": "{timeInMs, number, seconds} s"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | stylesheetResourceType": {
+    "message": "Stilark"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | thirdPartyResourceType": {
+    "message": "Tredjepart"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | totalResourceType": {
+    "message": "Totalt"
+  },
+  "lighthouse-core/lib/lh-error.js | badTraceRecording": {
+    "message": "Noe gikk galt med sporingsregistreringen for sideinnlastingen. Kjør Lighthouse på nytt. ({errorCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | criTimeout": {
+    "message": "Tidsavbrudd under venting på første tilkobling fra feilsøkingsprogramprotokollen."
+  },
+  "lighthouse-core/lib/lh-error.js | didntCollectScreenshots": {
+    "message": "Chrome samlet ingen skjermdumper under innlasting av siden. Sørg for at det finnes synlig innhold på siden, og prøv deretter å kjøre Lighthouse på nytt. ({errorCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | dnsFailure": {
+    "message": "DNS-tjenerne kunne ikke oversette domenet du oppga."
+  },
+  "lighthouse-core/lib/lh-error.js | erroredRequiredArtifact": {
+    "message": "Den obligatoriske {artifactName}-samleren støtte på en feil: {errorMessage}"
+  },
+  "lighthouse-core/lib/lh-error.js | internalChromeError": {
+    "message": "Det oppsto en intern Chrome-feil. Start Chrome på nytt, og prøv å kjøre Lighthouse igjen."
+  },
+  "lighthouse-core/lib/lh-error.js | missingRequiredArtifact": {
+    "message": "Den obligatoriske {artifactName}-samleren ble ikke kjørt."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailed": {
+    "message": "Lighthouse kunne ikke laste inn den forespurte siden på en pålitelig måte. Sjekk at du tester riktig nettadresse, og at tjeneren svarer ordentlig på alle forespørsler."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedHung": {
+    "message": "Lighthouse kunne ikke laste inn den forespurte nettadressen på en pålitelig måte, fordi siden sluttet å svare."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedInsecure": {
+    "message": "Nettadressen du oppga, har ikke noe gyldig sikkerhetssertifikat. {securityMessages}"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedInterstitial": {
+    "message": "Chrome forhindret siden fra å lastes inn og viste en interstitial-skjerm i stedet. Sjekk at du tester riktig nettadresse, og at tjeneren svarer ordentlig på alle forespørsler."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedWithDetails": {
+    "message": "Lighthouse kunne ikke laste inn den forespurte siden på en pålitelig måte. Sjekk at du tester riktig nettadresse, og at tjeneren svarer ordentlig på alle forespørsler. (Detaljer: {errorDetails})"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedWithStatusCode": {
+    "message": "Lighthouse kunne ikke laste inn den forespurte siden på en pålitelig måte. Sjekk at du tester riktig nettadresse, og at tjeneren svarer ordentlig på alle forespørsler. (Statuskode: {statusCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadTookTooLong": {
+    "message": "Det tok for lang tid å laste inn siden. Følg tipsene i rapporten for å redusere sideinnlastingstiden, og prøv deretter å kjøre Lighthouse på nytt. ({errorCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | protocolTimeout": {
+    "message": "Venting på DevTools-protokollsvar har overskredet den kvoterte tiden. (Metode: {protocolMethod})"
+  },
+  "lighthouse-core/lib/lh-error.js | requestContentTimeout": {
+    "message": "Henting av ressursinnhold har overskredet den kvoterte tiden"
+  },
+  "lighthouse-core/lib/lh-error.js | urlInvalid": {
+    "message": "Nettadressen du oppga, ser ut til å være ugyldig."
+  },
+  "lighthouse-core/report/html/renderer/util.js | auditGroupExpandTooltip": {
+    "message": "Vis revisjoner"
+  },
+  "lighthouse-core/report/html/renderer/util.js | crcInitialNavigation": {
+    "message": "Navigasjonsstart"
+  },
+  "lighthouse-core/report/html/renderer/util.js | crcLongestDurationLabel": {
+    "message": "Maksimum kritisk baneforsinkelse:"
+  },
+  "lighthouse-core/report/html/renderer/util.js | errorLabel": {
+    "message": "Feil!"
+  },
+  "lighthouse-core/report/html/renderer/util.js | errorMissingAuditInfo": {
+    "message": "Rapportfeil: ingen revisjonsinformasjon"
+  },
+  "lighthouse-core/report/html/renderer/util.js | labDataTitle": {
+    "message": "Prøvefunksjonsdata"
+  },
+  "lighthouse-core/report/html/renderer/util.js | lsPerformanceCategoryDescription": {
+    "message": "[Lighthouse](https://developers.google.com/web/tools/lighthouse/)-analyse av den nåværende siden på et emulert mobilnettverk. Verdiene er anslått og kan variere."
+  },
+  "lighthouse-core/report/html/renderer/util.js | manualAuditsGroupTitle": {
+    "message": "Tilleggselementer for manuell kontroll"
+  },
+  "lighthouse-core/report/html/renderer/util.js | notApplicableAuditsGroupTitle": {
+    "message": "Ikke relevant"
+  },
+  "lighthouse-core/report/html/renderer/util.js | opportunityResourceColumnLabel": {
+    "message": "Mulighet"
+  },
+  "lighthouse-core/report/html/renderer/util.js | opportunitySavingsColumnLabel": {
+    "message": "Estimerte besparelser"
+  },
+  "lighthouse-core/report/html/renderer/util.js | passedAuditsGroupTitle": {
+    "message": "Beståtte revisjoner"
+  },
+  "lighthouse-core/report/html/renderer/util.js | snippetCollapseButtonLabel": {
+    "message": "Skjul fragment"
+  },
+  "lighthouse-core/report/html/renderer/util.js | snippetExpandButtonLabel": {
+    "message": "Vis fragment"
+  },
+  "lighthouse-core/report/html/renderer/util.js | thirdPartyResourcesLabel": {
+    "message": "Vis tredjepartsressurser"
+  },
+  "lighthouse-core/report/html/renderer/util.js | toplevelWarningsMessage": {
+    "message": "Det oppsto problemer som påvirker denne kjøringen av Lighthouse:"
+  },
+  "lighthouse-core/report/html/renderer/util.js | varianceDisclaimer": {
+    "message": "Verdiene er anslått og kan variere. Ytelsespoengsummen er [kun basert på disse verdiene](https://github.com/GoogleChrome/lighthouse/blob/d2ec9ffbb21de9ad1a0f86ed24575eda32c796f0/docs/scoring.md#how-are-the-scores-weighted)."
+  },
+  "lighthouse-core/report/html/renderer/util.js | warningAuditsGroupTitle": {
+    "message": "Revisjoner som er bestått, men med advarsler"
+  },
+  "lighthouse-core/report/html/renderer/util.js | warningHeader": {
+    "message": "Advarsler: "
+  },
+  "stack-packs/packs/wordpress.js | efficient_animated_content": {
+    "message": "Vurder å laste opp GIF-filen til en tjeneste som gjør det mulig å bygge den inn som en HTML5-video."
+  },
+  "stack-packs/packs/wordpress.js | offscreen_images": {
+    "message": "Installer et [WordPress-programtillegg for utsatt innlasting](https://wordpress.org/plugins/search/lazy+load/) som gjør det mulig å utsette innlasting av bilder som ikke er på skjermen, eller bytt til et tema som gir denne funksjonaliteten. Vurder også å bruke [AMP-programtillegget](https://wordpress.org/plugins/amp/)."
+  },
+  "stack-packs/packs/wordpress.js | render_blocking_resources": {
+    "message": "Det finnes en rekke WordPress-programtillegg som kan hjelpe deg med å [bygge inn kritiske elementer direkte på siden](https://wordpress.org/plugins/search/critical+css/) eller [utsette innlasting av mindre viktige ressurser](https://wordpress.org/plugins/search/defer+css+javascript/). Vær obs på at optimalisering som gjøres av disse programtilleggene, kan ødelegge funksjonalitet i temaet ditt eller programtilleggene dine, så du må sannsynligvis gjøre kodeendringer."
+  },
+  "stack-packs/packs/wordpress.js | time_to_first_byte": {
+    "message": "Både temaer, programtillegg og tjenerspesifikasjoner virker inn på tjenerens responstid. Vurder å finne et mer optimalisert tema, velge et programtillegg for optimalisering nøye og/eller oppgradere tjeneren."
+  },
+  "stack-packs/packs/wordpress.js | total_byte_weight": {
+    "message": "Vurder å vise utdrag på innleggslistene (f.eks. via Mer-taggen), redusere antall innlegg som vises på en gitt side, fordele lange innlegg på flere sider eller bruke et programtillegg for utsatt innlasting av kommentarer."
+  },
+  "stack-packs/packs/wordpress.js | unminified_css": {
+    "message": "En rekke [WordPress-programtillegg](https://wordpress.org/plugins/search/minify+css/) kan gjøre nettstedet ditt raskere ved å slå sammen, forminske og komprimere stilarkene dine. Det kan også være lurt å bruke en byggeprosess til å gjøre denne forminskningen på forhånd hvis mulig."
+  },
+  "stack-packs/packs/wordpress.js | unminified_javascript": {
+    "message": "En rekke [WordPress-programtillegg](https://wordpress.org/plugins/search/minify+javascript/) kan gjøre nettstedet ditt raskere ved å slå sammen, forminske og komprimere skriptene dine. Det kan også være lurt å bruke en byggeprosess til å gjøre denne forminskningen på forhånd hvis mulig."
+  },
+  "stack-packs/packs/wordpress.js | unused_css_rules": {
+    "message": "Vurder å redusere eller endre antall [WordPress-programtillegg](https://wordpress.org/plugins/) som laster inn ubrukt CSS på siden. For å identifisere programtillegg som legger til overflødig CSS, prøv å kjøre [kodedekning](https://developers.google.com/web/updates/2017/04/devtools-release-notes#coverage) i Chrome DevTools. Du kan finne det ansvarlige temaet eller programtillegget i nettadressen til stilarket. Se opp for programtillegg som har mange stilark på listen, og som viser mye rødt i kodedekningen. Programtillegg bør bare legge stilark i kø hvis de faktisk brukes på siden."
+  },
+  "stack-packs/packs/wordpress.js | unused_javascript": {
+    "message": "Vurder å redusere eller endre antall [WordPress-programtillegg](https://wordpress.org/plugins/) som laster inn ubrukt JavaScript på siden. For å identifisere programtillegg som legger til overflødig JavaScript, prøv å kjøre [kodedekning](https://developers.google.com/web/updates/2017/04/devtools-release-notes#coverage) i Chrome DevTools. Du kan finne det ansvarlige temaet eller programtillegget i nettadressen til skriptet. Se opp for programtillegg som har mange skript på listen, og som viser mye rødt i kodedekningen. Programtillegg bør bare legge skript i kø hvis de faktisk brukes på siden."
+  },
+  "stack-packs/packs/wordpress.js | uses_long_cache_ttl": {
+    "message": "Les om [nettleserbufring i WordPress](https://codex.wordpress.org/WordPress_Optimization#Browser_Caching)."
+  },
+  "stack-packs/packs/wordpress.js | uses_optimized_images": {
+    "message": "Vurder å bruke et [WordPress-programtillegg for bildeoptimalisering](https://wordpress.org/plugins/search/optimize+images/) som komprimerer bildene uten at det går ut over kvaliteten."
+  },
+  "stack-packs/packs/wordpress.js | uses_responsive_images": {
+    "message": "Last opp bilder direkte gjennom [mediebiblioteket](https://codex.wordpress.org/Media_Library_Screen) for å sikre at de nødvendige bildestørrelsene er tilgjengelige, og sett dem deretter inn fra mediebiblioteket eller bruk bildemodulen for å sikre at de optimale bildestørrelsene brukes (inkludert dem som brukes for responsive stoppunkter). Unngå å bruke `Full Size`-bilder med mindre størrelsen er tilstrekkelig for bruksområdet. [Finn ut mer](https://codex.wordpress.org/Inserting_Images_into_Posts_and_Pages#Image_Size)."
+  },
+  "stack-packs/packs/wordpress.js | uses_text_compression": {
+    "message": "Du kan slå på tekstkomprimering i oppsettet av nettjeneren."
+  },
+  "stack-packs/packs/wordpress.js | uses_webp_images": {
+    "message": "Vurder å bruke et [programtillegg](https://wordpress.org/plugins/search/convert+webp/) eller en tjeneste som automatisk konverterer opplastede bilder til de optimale formatene."
+  }
+}
diff --git a/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/pl.json b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/pl.json
new file mode 100644
index 0000000..e2c34a3
--- /dev/null
+++ b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/pl.json
@@ -0,0 +1,1541 @@
+{
+  "lighthouse-core/audits/accessibility/accesskeys.js | description": {
+    "message": "Klawisze dostępu umożliwiają szybkie ustawienie fokusu na określonej części strony. Aby nawigacja działała dobrze, każdy klawisz dostępu musi być unikalny. [Więcej informacji](https://web.dev/accesskeys/)"
+  },
+  "lighthouse-core/audits/accessibility/accesskeys.js | failureTitle": {
+    "message": "Wartości `[accesskey]` nie są unikalne"
+  },
+  "lighthouse-core/audits/accessibility/accesskeys.js | title": {
+    "message": "Wartości `[accesskey]` są unikalne"
+  },
+  "lighthouse-core/audits/accessibility/aria-allowed-attr.js | description": {
+    "message": "Każda `role` ARIA obsługuje podzbiór atrybutów `aria-*`. Brak ich dopasowania skutkuje niepoprawnością atrybutów `aria-*`. [Więcej informacji](https://web.dev/aria-allowed-attr/)"
+  },
+  "lighthouse-core/audits/accessibility/aria-allowed-attr.js | failureTitle": {
+    "message": "Atrybuty `[aria-*]` nie pasują do swoich ról"
+  },
+  "lighthouse-core/audits/accessibility/aria-allowed-attr.js | title": {
+    "message": "Atrybuty `[aria-*]` odpowiadają swoim rolom"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-attr.js | description": {
+    "message": "Niektóre role ARIA mają atrybuty wymagane, które opisują stan elementu na potrzeby czytników ekranu. [Więcej informacji](https://web.dev/aria-required-attr/)"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-attr.js | failureTitle": {
+    "message": "Elementy z atrybutem `[role]` nie mają wszystkich wymaganych atrybutów `[aria-*]`"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-attr.js | title": {
+    "message": "Elementy `[role]` mają wszystkie wymagane atrybuty `[aria-*]`"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-children.js | description": {
+    "message": "Niektóre role nadrzędne ARIA muszą zawierać określone role podrzędne, by poprawnie realizować funkcje ułatwień dostępu. [Więcej informacji](https://web.dev/aria-required-children/)"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-children.js | failureTitle": {
+    "message": "Elementy z atrybutem `[role]` wymagają elementów podrzędnych z określonym atrybutem `[role]`, których brak."
+  },
+  "lighthouse-core/audits/accessibility/aria-required-children.js | title": {
+    "message": "Obecne są elementy z atrybutem `[role]`, które wymagają elementów podrzędnych z określonym atrybutem `[role]`"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-parent.js | description": {
+    "message": "Niektóre role podrzędne ARIA muszą znajdować się wewnątrz określonych ról nadrzędnych, by poprawnie realizować funkcje ułatwień dostępu. [Więcej informacji](https://web.dev/aria-required-parent/)"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-parent.js | failureTitle": {
+    "message": "Elementy `[role]` nie znajdują się wewnątrz wymaganych elementów nadrzędnych"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-parent.js | title": {
+    "message": "Elementy `[role]` znajdują się wewnątrz wymaganych elementów nadrzędnych"
+  },
+  "lighthouse-core/audits/accessibility/aria-roles.js | description": {
+    "message": "Role ARIA muszą mieć prawidłowe wartości, by poprawnie realizować funkcje ułatwień dostępu. [Więcej informacji](https://web.dev/aria-roles/)"
+  },
+  "lighthouse-core/audits/accessibility/aria-roles.js | failureTitle": {
+    "message": "Wartości `[role]` są nieprawidłowe"
+  },
+  "lighthouse-core/audits/accessibility/aria-roles.js | title": {
+    "message": "Wartości `[role]` są prawidłowe"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr-value.js | description": {
+    "message": "Technologie wspomagające, takie jak czytniki ekranu, nie potrafią interpretować atrybutów ARIA o nieprawidłowej wartości. [Więcej informacji](https://web.dev/aria-valid-attr-value/)"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr-value.js | failureTitle": {
+    "message": "Atrybuty `[aria-*]` nie mają prawidłowych wartości"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr-value.js | title": {
+    "message": "Atrybuty `[aria-*]` mają prawidłowe wartości"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr.js | description": {
+    "message": "Technologie wspomagające, takie jak czytniki ekranu, nie potrafią interpretować atrybutów ARIA o nieprawidłowych nazwach. [Więcej informacji](https://web.dev/aria-valid-attr/)"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr.js | failureTitle": {
+    "message": "Atrybuty `[aria-*]` są nieprawidłowe lub są w nich literówki"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr.js | title": {
+    "message": "Atrybuty `[aria-*]` są prawidłowe i nie ma w nich literówek"
+  },
+  "lighthouse-core/audits/accessibility/audio-caption.js | description": {
+    "message": "Dzięki napisom z elementów audio mogą korzystać osoby niesłyszące i słabosłyszące. Napisy zawierają ważne informacje na przykład o tym, kto i co mówi, a także informacje niedotyczące mowy. [Więcej informacji](https://web.dev/audio-caption/)"
+  },
+  "lighthouse-core/audits/accessibility/audio-caption.js | failureTitle": {
+    "message": "Elementy `<audio>` nie mają elementu `<track>` z atrybutem `[kind=\"captions\"]`."
+  },
+  "lighthouse-core/audits/accessibility/audio-caption.js | title": {
+    "message": "Elementy `<audio>` zawierają element `<track>` z atrybutem `[kind=\"captions\"]`"
+  },
+  "lighthouse-core/audits/accessibility/axe-audit.js | failingElementsHeader": {
+    "message": "Nieprawidłowe elementy"
+  },
+  "lighthouse-core/audits/accessibility/button-name.js | description": {
+    "message": "Gdy przycisk nie ma nazwy na potrzeby ułatwień dostępu, czytniki ekranu określają go jako „przycisk”, przez co jest on bezużyteczny dla ich użytkowników. [Więcej informacji](https://web.dev/button-name/)"
+  },
+  "lighthouse-core/audits/accessibility/button-name.js | failureTitle": {
+    "message": "Przyciski nie mają nazw dostępnych dla czytników ekranu"
+  },
+  "lighthouse-core/audits/accessibility/button-name.js | title": {
+    "message": "Przyciski mają nazwy dostępne dla czytników ekranu"
+  },
+  "lighthouse-core/audits/accessibility/bypass.js | description": {
+    "message": "Dodanie sposobu na ominięcie powtarzających się treści ułatwia nawigację na stronie za pomocą klawiatury. [Więcej informacji](https://web.dev/bypass/)"
+  },
+  "lighthouse-core/audits/accessibility/bypass.js | failureTitle": {
+    "message": "Strona nie zawiera nagłówka, linku pomijającego ani regionu orientacyjnego"
+  },
+  "lighthouse-core/audits/accessibility/bypass.js | title": {
+    "message": "Strona zawiera nagłówek, link pomijający lub region orientacyjny"
+  },
+  "lighthouse-core/audits/accessibility/color-contrast.js | description": {
+    "message": "Wielu użytkowników ma problemy z czytaniem tekstu o niskim kontraście. [Więcej informacji](https://web.dev/color-contrast/)"
+  },
+  "lighthouse-core/audits/accessibility/color-contrast.js | failureTitle": {
+    "message": "Kolory tła i pierwszego planu mają niewystarczający współczynnik kontrastu."
+  },
+  "lighthouse-core/audits/accessibility/color-contrast.js | title": {
+    "message": "Kolory tła i pierwszego planu mają wystarczający współczynnik kontrastu"
+  },
+  "lighthouse-core/audits/accessibility/definition-list.js | description": {
+    "message": "Gdy listy definicji nie mają właściwej struktury, czytniki ekranu mogą odczytywać je niedokładnie lub błędnie. [Więcej informacji](https://web.dev/definition-list/)"
+  },
+  "lighthouse-core/audits/accessibility/definition-list.js | failureTitle": {
+    "message": "Elementy `<dl>` nie zawierają tylko właściwie uporządkowanych grup elementów `<dt>` i `<dd>` oraz elementów `<script>` lub `<template>`."
+  },
+  "lighthouse-core/audits/accessibility/definition-list.js | title": {
+    "message": "Elementy `<dl>` zawierają tylko właściwie uporządkowane grupy elementów `<dt>` i `<dd>` oraz elementy `<script>` lub `<template>`."
+  },
+  "lighthouse-core/audits/accessibility/dlitem.js | description": {
+    "message": "Elementy listy definicji (`<dt>` i `<dd>`) muszą znajdować się wewnątrz nadrzędnego elementu `<dl>`, by mogły je poprawnie odczytać czytniki ekranu. [Więcej informacji](https://web.dev/dlitem/)"
+  },
+  "lighthouse-core/audits/accessibility/dlitem.js | failureTitle": {
+    "message": "Elementy listy definicji nie znajdują się wewnątrz elementów `<dl>`"
+  },
+  "lighthouse-core/audits/accessibility/dlitem.js | title": {
+    "message": "Elementy listy definicji znajdują się wewnątrz elementów `<dl>`"
+  },
+  "lighthouse-core/audits/accessibility/document-title.js | description": {
+    "message": "Tytuł informuje użytkowników czytnika ekranu o ogólnej zawartości strony, a użytkownicy wyszukiwarki mogą dowiedzieć się z niego, czy strona zawiera szukane informacje. [Więcej informacji](https://web.dev/document-title/)"
+  },
+  "lighthouse-core/audits/accessibility/document-title.js | failureTitle": {
+    "message": "W dokumencie nie ma elementu `<title>`"
+  },
+  "lighthouse-core/audits/accessibility/document-title.js | title": {
+    "message": "Dokument zawiera element `<title>`"
+  },
+  "lighthouse-core/audits/accessibility/duplicate-id.js | description": {
+    "message": "Wartość atrybutu id musi być unikalna, by inne wystąpienia nie zostały pominięte przez technologie wspomagające. [Więcej informacji](https://web.dev/duplicate-id/)"
+  },
+  "lighthouse-core/audits/accessibility/duplicate-id.js | failureTitle": {
+    "message": "Atrybuty `[id]` na stronie nie są unikalne"
+  },
+  "lighthouse-core/audits/accessibility/duplicate-id.js | title": {
+    "message": "Atrybuty `[id]` na stronie są unikalne"
+  },
+  "lighthouse-core/audits/accessibility/frame-title.js | description": {
+    "message": "Tytuły ramek służą użytkownikom czytników ekranu jako opisy zawartości ramek. [Więcej informacji](https://web.dev/frame-title/)"
+  },
+  "lighthouse-core/audits/accessibility/frame-title.js | failureTitle": {
+    "message": "Element `<frame>` lub `<iframe>` nie ma tytułu"
+  },
+  "lighthouse-core/audits/accessibility/frame-title.js | title": {
+    "message": "Elementy `<frame>` i `<iframe>` mają tytuł"
+  },
+  "lighthouse-core/audits/accessibility/html-has-lang.js | description": {
+    "message": "Jeśli strona nie ma atrybutu lang, czytnik ekranu przyjmuje, że strona jest w języku domyślnym, który użytkownik wybrał podczas konfigurowania czytnika. Jeśli strona nie jest w języku domyślnym, czytnik ekranu może niepoprawnie wymawiać tekst strony. [Więcej informacji](https://web.dev/html-has-lang/)"
+  },
+  "lighthouse-core/audits/accessibility/html-has-lang.js | failureTitle": {
+    "message": "Element `<html>` nie ma atrybutu `[lang]`"
+  },
+  "lighthouse-core/audits/accessibility/html-has-lang.js | title": {
+    "message": "Element `<html>` ma atrybut `[lang]`"
+  },
+  "lighthouse-core/audits/accessibility/html-lang-valid.js | description": {
+    "message": "Określenie prawidłowego [języka w formacie BCP 47](https://www.w3.org/International/questions/qa-choosing-language-tags#question) pomaga czytnikom ekranu prawidłowo wymawiać tekst. [Więcej informacji](https://web.dev/html-lang-valid/)"
+  },
+  "lighthouse-core/audits/accessibility/html-lang-valid.js | failureTitle": {
+    "message": "Element `<html>` nie ma prawidłowej wartości atrybutu `[lang]`."
+  },
+  "lighthouse-core/audits/accessibility/html-lang-valid.js | title": {
+    "message": "Element `<html>` ma prawidłową wartość atrybutu `[lang]`"
+  },
+  "lighthouse-core/audits/accessibility/image-alt.js | description": {
+    "message": "Elementy informacyjne powinny mieć krótki, opisowy tekst zastępczy. Elementy dekoracyjne można zignorować, podając pusty atrybut alt. [Więcej informacji](https://web.dev/image-alt/)"
+  },
+  "lighthouse-core/audits/accessibility/image-alt.js | failureTitle": {
+    "message": "Elementy graficzne nie mają atrybutów `[alt]`"
+  },
+  "lighthouse-core/audits/accessibility/image-alt.js | title": {
+    "message": "Elementy graficzne mają atrybuty `[alt]`"
+  },
+  "lighthouse-core/audits/accessibility/input-image-alt.js | description": {
+    "message": "Gdy jako przycisk `<input>` używany jest obraz, warto dodać tekst zastępczy, by ułatwić użytkownikom czytnika ekranu zrozumienie, do czego służy ten przycisk. [Więcej informacji](https://web.dev/input-image-alt/)"
+  },
+  "lighthouse-core/audits/accessibility/input-image-alt.js | failureTitle": {
+    "message": "Elementy `<input type=\"image\">` nie mają tekstu `[alt]`"
+  },
+  "lighthouse-core/audits/accessibility/input-image-alt.js | title": {
+    "message": "Elementy `<input type=\"image\">` mają tekst `[alt]`"
+  },
+  "lighthouse-core/audits/accessibility/label.js | description": {
+    "message": "Etykiety zapewniają prawidłowe odczytywanie kontrolek formularzy przez technologie wspomagające takie jak czytniki ekranu. [Więcej informacji](https://web.dev/label/)"
+  },
+  "lighthouse-core/audits/accessibility/label.js | failureTitle": {
+    "message": "Z elementami formularzy nie są powiązane etykiety"
+  },
+  "lighthouse-core/audits/accessibility/label.js | title": {
+    "message": "Z elementami formularzy są powiązane etykiety"
+  },
+  "lighthouse-core/audits/accessibility/layout-table.js | description": {
+    "message": "Tabela używana do tworzenia układu graficznego nie powinna zawierać elementów danych, takich jak elementy th czy caption albo atrybut summary, ponieważ mogą one utrudniać korzystanie z czytnika ekranu. [Więcej informacji](https://web.dev/layout-table/)"
+  },
+  "lighthouse-core/audits/accessibility/layout-table.js | failureTitle": {
+    "message": "W prezentacyjnych elementach `<table>` są używane elementy `<th>` lub `<caption>` albo atrybut `[summary]`."
+  },
+  "lighthouse-core/audits/accessibility/layout-table.js | title": {
+    "message": "W prezentacyjnych elementach `<table>` nie są używane elementy `<th>` i `<caption>` ani atrybut `[summary]`."
+  },
+  "lighthouse-core/audits/accessibility/link-name.js | description": {
+    "message": "Tekst linków (i tekst zastępczy obrazów używanych jako linki), który jest charakterystyczny, unikalny i możliwy do wybrania, ułatwia nawigację użytkownikom czytników ekranu. [Więcej informacji](https://web.dev/link-name/)"
+  },
+  "lighthouse-core/audits/accessibility/link-name.js | failureTitle": {
+    "message": "Linki nie mają wyróżniających je nazw"
+  },
+  "lighthouse-core/audits/accessibility/link-name.js | title": {
+    "message": "Linki mają wyróżniające je nazwy"
+  },
+  "lighthouse-core/audits/accessibility/list.js | description": {
+    "message": "Czytniki ekranu odczytują listy w specjalny sposób. Właściwa struktura list pomaga czytnikom poprawnie odczytać tekst. [Więcej informacji](https://web.dev/list/)"
+  },
+  "lighthouse-core/audits/accessibility/list.js | failureTitle": {
+    "message": "Listy nie zawierają tylko elementów `<li>` i elementów skryptowych (`<script>` i `<template>`)."
+  },
+  "lighthouse-core/audits/accessibility/list.js | title": {
+    "message": "Listy zawierają tylko elementy `<li>` i elementy skryptowe (`<script>` i `<template>`)."
+  },
+  "lighthouse-core/audits/accessibility/listitem.js | description": {
+    "message": "Elementy list (`<li>`) muszą być zawarte w elementach nadrzędnych `<ul>` lub `<ol>`, by czytniki ekranu mogły je poprawnie odczytać. [Więcej informacji](https://web.dev/listitem/)"
+  },
+  "lighthouse-core/audits/accessibility/listitem.js | failureTitle": {
+    "message": "Elementy list (`<li>`) nie znajdują się wewnątrz elementów nadrzędnych `<ul>` lub `<ol>`."
+  },
+  "lighthouse-core/audits/accessibility/listitem.js | title": {
+    "message": "Elementy list (`<li>`) znajdują się wewnątrz elementów nadrzędnych `<ul>` lub `<ol>`"
+  },
+  "lighthouse-core/audits/accessibility/meta-refresh.js | description": {
+    "message": "Użytkownicy nie spodziewają się automatycznego odświeżania strony – powoduje ono powrót zaznaczenia na jej początek. Może to dezorientować i irytować użytkowników. [Więcej informacji](https://web.dev/meta-refresh/)"
+  },
+  "lighthouse-core/audits/accessibility/meta-refresh.js | failureTitle": {
+    "message": "Dokument używa tagu `<meta http-equiv=\"refresh\">`"
+  },
+  "lighthouse-core/audits/accessibility/meta-refresh.js | title": {
+    "message": "Dokument nie używa tagu `<meta http-equiv=\"refresh\">`"
+  },
+  "lighthouse-core/audits/accessibility/meta-viewport.js | description": {
+    "message": "Wyłączenie powiększania to problem dla użytkowników niedowidzących, którzy muszą korzystać z powiększenia ekranu, by dobrze widzieć zawartość stron internetowych. [Więcej informacji](https://web.dev/meta-viewport/)"
+  },
+  "lighthouse-core/audits/accessibility/meta-viewport.js | failureTitle": {
+    "message": "W elemencie `<meta name=\"viewport\">` jest używany atrybut `[user-scalable=\"no\"]` lub atrybut `[maximum-scale]` ma wartość mniejszą niż 5."
+  },
+  "lighthouse-core/audits/accessibility/meta-viewport.js | title": {
+    "message": "W elemencie `<meta name=\"viewport\">` nie jest używany atrybut `[user-scalable=\"no\"]`, a atrybut `[maximum-scale]` ma wartość nie mniejszą niż 5."
+  },
+  "lighthouse-core/audits/accessibility/object-alt.js | description": {
+    "message": "Czytniki ekranu nie potrafią tłumaczyć treści innych niż tekst. Dodanie do elementów `<object>` tekstu zastępczego pomaga czytnikom ekranu w przekazywaniu użytkownikom właściwego znaczenia. [Więcej informacji](https://web.dev/object-alt/)"
+  },
+  "lighthouse-core/audits/accessibility/object-alt.js | failureTitle": {
+    "message": "Elementy `<object>` nie mają tekstu `[alt]`"
+  },
+  "lighthouse-core/audits/accessibility/object-alt.js | title": {
+    "message": "Elementy `<object>` mają tekst `[alt]`"
+  },
+  "lighthouse-core/audits/accessibility/tabindex.js | description": {
+    "message": "Wartość większa niż 0 implikuje określoną wprost kolejność nawigacji. Chociaż takie rozwiązanie jest technicznie poprawne, często powoduje frustrację użytkowników technologii wspomagających. [Więcej informacji](https://web.dev/tabindex/)"
+  },
+  "lighthouse-core/audits/accessibility/tabindex.js | failureTitle": {
+    "message": "Niektóre elementy mają atrybut `[tabindex]` o wartości większej niż 0"
+  },
+  "lighthouse-core/audits/accessibility/tabindex.js | title": {
+    "message": "Żaden element nie ma wartości atrybutu `[tabindex]` większej niż 0"
+  },
+  "lighthouse-core/audits/accessibility/td-headers-attr.js | description": {
+    "message": "Czytniki ekranu mają funkcje, które ułatwiają nawigację w tabelach. Gdy komórki `<td>` używające atrybutu `[headers]` odwołują się tylko do innych komórek w tej samej tabeli, użytkownicy czytników ekranu mogą wygodniej korzystać z tabel. [Więcej informacji](https://web.dev/td-headers-attr/)"
+  },
+  "lighthouse-core/audits/accessibility/td-headers-attr.js | failureTitle": {
+    "message": "Komórki w elemencie `<table>`, które używają atrybutu `[headers]`, odwołują się do innych komórek w tej samej tabeli."
+  },
+  "lighthouse-core/audits/accessibility/td-headers-attr.js | title": {
+    "message": "Komórki w elemencie `<table>`, które używają atrybutu `[headers]`, odwołują się tylko do innych komórek w tej samej tabeli."
+  },
+  "lighthouse-core/audits/accessibility/th-has-data-cells.js | description": {
+    "message": "Czytniki ekranu mają funkcje, które ułatwiają nawigację w tabelach. Gdy nagłówki tabel zawsze odwołują się do jakiegoś zbioru komórek, użytkownicy czytników ekranu mogą wygodniej korzystać z tabel. [Więcej informacji](https://web.dev/th-has-data-cells/)"
+  },
+  "lighthouse-core/audits/accessibility/th-has-data-cells.js | failureTitle": {
+    "message": "Nie istnieją komórki danych opisywane przez elementy `<th>` i elementy z atrybutem `[role=\"columnheader\"/\"rowheader\"]`."
+  },
+  "lighthouse-core/audits/accessibility/th-has-data-cells.js | title": {
+    "message": "Istnieją komórki danych opisywane przez elementy `<th>` i elementy z atrybutem `[role=\"columnheader\"/\"rowheader\"]`."
+  },
+  "lighthouse-core/audits/accessibility/valid-lang.js | description": {
+    "message": "Określenie w elementach prawidłowego [tagu języka w formacie BCP 47](https://www.w3.org/International/questions/qa-choosing-language-tags#question) pomaga zapewnić prawidłową wymowę tekstu przez czytnik ekranu. [Więcej informacji](https://web.dev/valid-lang/)"
+  },
+  "lighthouse-core/audits/accessibility/valid-lang.js | failureTitle": {
+    "message": "Atrybuty `[lang]` nie mają prawidłowej wartości"
+  },
+  "lighthouse-core/audits/accessibility/valid-lang.js | title": {
+    "message": "Atrybuty `[lang]` mają prawidłową wartość"
+  },
+  "lighthouse-core/audits/accessibility/video-caption.js | description": {
+    "message": "Filmy z napisami są bardziej dostępne dla osób niesłyszących i niedosłyszących. [Więcej informacji](https://web.dev/video-caption/)"
+  },
+  "lighthouse-core/audits/accessibility/video-caption.js | failureTitle": {
+    "message": "Elementy `<video>` nie zawierają elementu `<track>` z atrybutem `[kind=\"captions\"]`."
+  },
+  "lighthouse-core/audits/accessibility/video-caption.js | title": {
+    "message": "Elementy `<video>` zawierają element `<track>` z atrybutem `[kind=\"captions\"]`"
+  },
+  "lighthouse-core/audits/accessibility/video-description.js | description": {
+    "message": "Audiodeskrypcja dostarcza ważnych informacji, których nie ma w dialogach – na przykład o wyrazie twarzy i scenerii. [Więcej informacji](https://web.dev/video-description/)"
+  },
+  "lighthouse-core/audits/accessibility/video-description.js | failureTitle": {
+    "message": "Elementy `<video>` nie zawierają elementu `<track>` z atrybutem `[kind=\"description\"]`."
+  },
+  "lighthouse-core/audits/accessibility/video-description.js | title": {
+    "message": "Elementy `<video>` zawierają element `<track>` z atrybutem `[kind=\"description\"]`"
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | description": {
+    "message": "Zdefiniuj element `apple-touch-icon`, by Twoja progresywna aplikacja internetowa wyglądała idealnie na iOS, gdy użytkownicy dodadzą ją do ekranu głównego. Element musi wskazywać kwadratowy obraz PNG o rozmiarze 192 (lub 180) pikseli bez przezroczystości. [Więcej informacji](https://developers.google.com/web/fundamentals/design-and-ux/browser-customization/)"
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | failureTitle": {
+    "message": "Nie dostarcza prawidłowego atrybutu `apple-touch-icon`"
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | precomposedWarning": {
+    "message": "Atrybut `apple-touch-icon-precomposed` jest przestarzały. Preferowany jest `apple-touch-icon`."
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | title": {
+    "message": "Dostarcza prawidłowy atrybut `apple-touch-icon`"
+  },
+  "lighthouse-core/audits/bootup-time.js | chromeExtensionsWarning": {
+    "message": "Rozszerzenia Chrome pogorszyły szybkość ładowania tej strony. Przeprowadź audyt strony w trybie incognito lub w profilu Chrome bez rozszerzeń."
+  },
+  "lighthouse-core/audits/bootup-time.js | columnScriptEval": {
+    "message": "Ocena skryptu"
+  },
+  "lighthouse-core/audits/bootup-time.js | columnScriptParse": {
+    "message": "Analiza skryptów"
+  },
+  "lighthouse-core/audits/bootup-time.js | columnTotal": {
+    "message": "Łączny czas pracy procesora"
+  },
+  "lighthouse-core/audits/bootup-time.js | description": {
+    "message": "Pomyśl o skróceniu czasu poświęcanego na analizowanie, kompilowanie i wykonywanie kodu JS. Może w tym pomóc dostarczanie mniejszych ładunków JS. [Więcej informacji](https://developers.google.com/web/tools/lighthouse/audits/bootup)"
+  },
+  "lighthouse-core/audits/bootup-time.js | failureTitle": {
+    "message": "Skróć czas wykonywania JavaScriptu"
+  },
+  "lighthouse-core/audits/bootup-time.js | title": {
+    "message": "Czas wykonania JavaScriptu"
+  },
+  "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | description": {
+    "message": "Duże pliki GIF są nieefektywnym sposobem dostarczania animacji. Proponujemy użyć zamiast nich filmów MPEG4/WebM (animacje) lub plików PNG/WebP (obrazy statyczne), by zmniejszyć ilość przesyłanych danych. [Więcej informacji](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/replace-animated-gifs-with-video/)"
+  },
+  "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | title": {
+    "message": "Użyj formatów wideo dla animacji"
+  },
+  "lighthouse-core/audits/byte-efficiency/offscreen-images.js | description": {
+    "message": "Aby skrócić czas do pełnej interaktywności, warto skorzystać z leniwego ładowania. Dzięki temu najpierw będą ładowane wszystkie zasoby kluczowe, a dopiero potem obrazy ukryte i znajdujące się poza ekranem. [Więcej informacji](https://developers.google.com/web/tools/lighthouse/audits/offscreen-images)"
+  },
+  "lighthouse-core/audits/byte-efficiency/offscreen-images.js | title": {
+    "message": "Odłóż ładowanie obrazów poza ekranem"
+  },
+  "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | description": {
+    "message": "Zasoby blokują pierwsze wyrenderowanie strony. Sugerujemy umieszczenie krytycznego kodu JS/CSS w kodzie strony i opóźnienie ładowania wszystkich niekrytycznych plików JS i stylów. [Więcej informacji](https://developers.google.com/web/tools/lighthouse/audits/blocking-resources)"
+  },
+  "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | title": {
+    "message": "Wyeliminuj zasoby blokujące renderowanie"
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | description": {
+    "message": "Duże ładunki sieciowe powodują wyższe koszty dla użytkowników i są mocno powiązane z długim czasem ładowania. [Więcej informacji](https://developers.google.com/web/tools/lighthouse/audits/network-payloads)"
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | displayValue": {
+    "message": "Łączny rozmiar to {totalBytes, number, bytes} KB"
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | failureTitle": {
+    "message": "Unikaj bardzo dużych ładunków sieciowych"
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | title": {
+    "message": "Unikaj bardzo dużych ładunków sieciowych"
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-css.js | description": {
+    "message": "Minifikacja plików CSS może zmniejszyć ładunki sieciowe. [Więcej informacji](https://developers.google.com/web/tools/lighthouse/audits/minify-css)"
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-css.js | title": {
+    "message": "Minifikuj CSS"
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | description": {
+    "message": "Minifikacja plików JavaScript może zmniejszyć ładunki i skrócić czas analizowania skryptów. [Więcej informacji](https://developers.google.com/speed/docs/insights/MinifyResources)"
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | title": {
+    "message": "Minifikuj JavaScript"
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | description": {
+    "message": "Usuń nieużywane reguły z arkuszy stylów i opóźnij ładowanie kodu CSS, który nie jest używany w części strony widocznej na ekranie bez przewijania, by zmniejszyć ilość danych niepotrzebnie przesyłanych w sieci. [Więcej informacji](https://developers.google.com/web/tools/lighthouse/audits/unused-css)"
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | title": {
+    "message": "Usuń nieużywany kod CSS"
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-javascript.js | description": {
+    "message": "Usuń nieużywany kod JavaScript, by zmniejszyć ilość danych przesyłanych w sieci."
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-javascript.js | title": {
+    "message": "Usuń nieużywany JavaScript"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | description": {
+    "message": "Długi czas przechowywania w pamięci podręcznej może przyśpieszyć ponowne otwarcie strony. [Więcej informacji](https://developers.google.com/web/tools/lighthouse/audits/cache-policy)"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | displayValue": {
+    "message": "{itemCount,plural, =1{Znaleziono 1 zasób}few{Znaleziono # zasoby}many{Znaleziono # zasobów}other{Znaleziono # zasobu}}"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | failureTitle": {
+    "message": "Wyświetlaj zasoby statyczne, stosując efektywne zasady pamięci podręcznej"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | title": {
+    "message": "Stosuje efektywne zasady pamięci podręcznej dla zasobów statycznych"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | description": {
+    "message": "Zoptymalizowane obrazy ładują się szybciej i wykorzystują mniej komórkowej transmisji danych. [Więcej informacji](https://developers.google.com/web/tools/lighthouse/audits/optimize-images)"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | title": {
+    "message": "Użyj efektywnego kodowania obrazów"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | description": {
+    "message": "Wyświetlaj obrazy o odpowiednim rozmiarze, by oszczędzać komórkową transmisję danych i przyśpieszyć ładowanie. [Więcej informacji](https://developers.google.com/web/tools/lighthouse/audits/oversized-images)"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | title": {
+    "message": "Zmień rozmiar obrazów"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | description": {
+    "message": "Zasoby tekstowe powinny być kompresowane (gzip, deflate lub brotli), by zminimalizować ilość danych przesyłanych w sieci. [Więcej informacji](https://developers.google.com/web/tools/lighthouse/audits/text-compression)"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | title": {
+    "message": "Włącz kompresję tekstu"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | description": {
+    "message": "Takie formaty obrazów jak JPEG 2000, JPEG XR i WebP często zapewniają lepszą kompresję niż PNG czy JPEG, co przekłada się na szybsze pobieranie i mniejsze wykorzystanie danych. [Więcej informacji](https://developers.google.com/web/tools/lighthouse/audits/webp)"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | title": {
+    "message": "Wyświetlaj obrazy w formatach nowej generacji"
+  },
+  "lighthouse-core/audits/content-width.js | description": {
+    "message": "Jeśli szerokość zawartości aplikacji nie odpowiada szerokości widocznego obszaru, aplikacja może nie być zoptymalizowana pod kątem ekranów urządzeń mobilnych. [Więcej informacji](https://developers.google.com/web/tools/lighthouse/audits/content-sized-correctly-for-viewport)"
+  },
+  "lighthouse-core/audits/content-width.js | explanation": {
+    "message": "Rozmiar widocznego obszaru ({innerWidth} piks.) nie odpowiada rozmiarowi okna ({outerWidth} piks.)."
+  },
+  "lighthouse-core/audits/content-width.js | failureTitle": {
+    "message": "Zawartość nie jest odpowiednio dopasowana do widocznego obszaru"
+  },
+  "lighthouse-core/audits/content-width.js | title": {
+    "message": "Zawartość jest odpowiednio dopasowana do widocznego obszaru"
+  },
+  "lighthouse-core/audits/critical-request-chains.js | description": {
+    "message": "Poniższe łańcuchy żądań krytycznych pokazują zasoby ładowane z wysokim priorytetem. Aby przyśpieszyć ładowanie strony, możesz skrócić łańcuchy, zmniejszyć rozmiar pobieranych zasobów lub opóźnić pobieranie zasobów, które nie są niezbędne. [Więcej informacji](https://developers.google.com/web/tools/lighthouse/audits/critical-request-chains)"
+  },
+  "lighthouse-core/audits/critical-request-chains.js | displayValue": {
+    "message": "{itemCount,plural, =1{Znaleziono 1 łańcuch}few{Znaleziono # łańcuchy}many{Znaleziono # łańcuchów}other{Znaleziono # łańcucha}}"
+  },
+  "lighthouse-core/audits/critical-request-chains.js | title": {
+    "message": "Zminimalizuj głębię żądań krytycznych"
+  },
+  "lighthouse-core/audits/deprecations.js | columnDeprecate": {
+    "message": "Wycofanie/ostrzeżenie"
+  },
+  "lighthouse-core/audits/deprecations.js | columnLine": {
+    "message": "Wiersz"
+  },
+  "lighthouse-core/audits/deprecations.js | description": {
+    "message": "Wycofane interfejsy API zostaną w przyszłości usunięte z przeglądarki. [Więcej informacji](https://web.dev/deprecations)"
+  },
+  "lighthouse-core/audits/deprecations.js | displayValue": {
+    "message": "{itemCount,plural, =1{Znaleziono 1 ostrzeżenie}few{Znaleziono # ostrzeżenia}many{Znaleziono # ostrzeżeń}other{Znaleziono # ostrzeżenia}}"
+  },
+  "lighthouse-core/audits/deprecations.js | failureTitle": {
+    "message": "Używa wycofanych interfejsów API"
+  },
+  "lighthouse-core/audits/deprecations.js | title": {
+    "message": "Nie używa wycofanych interfejsów API"
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | description": {
+    "message": "Pamięć podręczna aplikacji została wycofana. [Więcej informacji](https://web.dev/appcache-manifest)"
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | displayValue": {
+    "message": "Znaleziono „{AppCacheManifest}”"
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | failureTitle": {
+    "message": "Używa pamięci podręcznej aplikacji"
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | title": {
+    "message": "Nie używa pamięci podręcznej aplikacji"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | description": {
+    "message": "Podanie definicji doctype zapobiega przełączaniu przeglądarki w tryb osobliwości. [Więcej informacji](https://web.dev/doctype)"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationBadDoctype": {
+    "message": "Nazwa określona w doctype musi być ciągiem małych liter `html`"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationNoDoctype": {
+    "message": "Dokument musi zawierać deklarację doctype"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationPublicId": {
+    "message": "Oczekiwano pustego ciągu w polu publicId"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationSystemId": {
+    "message": "Oczekiwano pustego ciągu w polu systemId"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | failureTitle": {
+    "message": "Strona nie zawiera elementu HTML doctype, przez co aktywuje tryb osobliwości"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | title": {
+    "message": "Strona ma deklarację doctype HTML"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | columnElement": {
+    "message": "Element"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | columnStatistic": {
+    "message": "Statystyki"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | columnValue": {
+    "message": "Wartość"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | description": {
+    "message": "Twórcy przeglądarek zalecają, by strony zawierały mniej niż około 1500 elementów DOM. Optymalne jest drzewo o głębokości mniejszej niż 32 elementy i zawierające mniej niż 60 elementów podrzędnych/nadrzędnych. Duży DOM może zwiększyć wykorzystanie pamięci, wydłużyć [obliczanie stylów](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations) i powodować kosztowne [przeformatowania układu](https://developers.google.com/speed/articles/reflow). [Więcej informacji](https://web.dev/dom-size)"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 element}few{# elementy}many{# elementów}other{# elementu}}"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | failureTitle": {
+    "message": "Unikaj zbyt dużego DOM"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | statisticDOMDepth": {
+    "message": "Maksymalna głębokość DOM"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | statisticDOMElements": {
+    "message": "Łączna liczba elementów DOM"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | statisticDOMWidth": {
+    "message": "Maksymalna liczba elementów podrzędnych"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | title": {
+    "message": "Unika zbyt dużego DOM"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | columnRel": {
+    "message": "Rel"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | columnTarget": {
+    "message": "Cel"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | description": {
+    "message": "Dodaj atrybut `rel=\"noopener\"` lub `rel=\"noreferrer\"` do wszystkich linków zewnętrznych, by przyśpieszyć działanie i zapobiec lukom w zabezpieczeniach. [Więcej informacji](https://web.dev/external-anchors-use-rel-noopener)"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | failureTitle": {
+    "message": "Linki do innych domen są niebezpieczne"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | title": {
+    "message": "Linki do innych domen są bezpieczne"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | warning": {
+    "message": "Nie można ustalić miejsca docelowego dla kotwicy ({anchorHTML}). Jeśli nie jest używana jako hiperlink, sugerujemy usunięcie atrybutu target=_blank."
+  },
+  "lighthouse-core/audits/dobetterweb/geolocation-on-start.js | description": {
+    "message": "Witryny, które bez kontekstu pytają o zgodę na dostęp do lokalizacji, nie budzą zaufania użytkowników lub ich dezorientują. Sugerujemy powiązanie wyświetlenia tej prośby z działaniem użytkownika. [Więcej informacji](https://web.dev/geolocation-on-start)"
+  },
+  "lighthouse-core/audits/dobetterweb/geolocation-on-start.js | failureTitle": {
+    "message": "Pyta o zgodę na geolokalizację podczas wczytywania strony"
+  },
+  "lighthouse-core/audits/dobetterweb/geolocation-on-start.js | title": {
+    "message": "Nie pyta o zgodę na geolokalizację podczas wczytywania strony"
+  },
+  "lighthouse-core/audits/dobetterweb/js-libraries.js | columnVersion": {
+    "message": "Wersja"
+  },
+  "lighthouse-core/audits/dobetterweb/js-libraries.js | description": {
+    "message": "Wszystkie biblioteki JavaScript interfejsu użytkownika wykryte na stronie. [Więcej informacji](https://web.dev/js-libraries)"
+  },
+  "lighthouse-core/audits/dobetterweb/js-libraries.js | title": {
+    "message": "Wykryte biblioteki JavaScript"
+  },
+  "lighthouse-core/audits/dobetterweb/no-document-write.js | description": {
+    "message": "W przypadku wolnego połączenia sieciowego skrypty zewnętrzne dodawane dynamicznie przy użyciu instrukcji `document.write()` mogą opóźnić wczytanie strony o dziesiątki sekund. [Więcej informacji](https://web.dev/no-document-write)"
+  },
+  "lighthouse-core/audits/dobetterweb/no-document-write.js | failureTitle": {
+    "message": "Używa instrukcji `document.write()`"
+  },
+  "lighthouse-core/audits/dobetterweb/no-document-write.js | title": {
+    "message": "Nie używa instrukcji `document.write()`"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | columnSeverity": {
+    "message": "Najwyższy poziom zagrożenia"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | columnVersion": {
+    "message": "Wersja biblioteki"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | columnVuln": {
+    "message": "Liczba luk w zabezpieczeniach"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | description": {
+    "message": "Niektóre skrypty spoza witryny mogą mieć znane luki w zabezpieczeniach, które mogą łatwo odkryć i wykorzystać hakerzy. [Więcej informacji](https://web.dev/no-vulnerable-libraries)"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | displayValue": {
+    "message": "{itemCount,plural, =1{Wykryto 1 lukę w zabezpieczeniach}few{Wykryto # luki w zabezpieczeniach}many{Wykryto # luk w zabezpieczeniach}other{Wykryto # luki w zabezpieczeniach}}"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | failureTitle": {
+    "message": "Używa bibliotek JavaScript interfejsu użytkownika, które mają znane luki w zabezpieczeniach"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | rowSeverityHigh": {
+    "message": "Wysoki"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | rowSeverityLow": {
+    "message": "Niski"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | rowSeverityMedium": {
+    "message": "Średni"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | title": {
+    "message": "Nie używa bibliotek JavaScript interfejsu użytkownika, które mają znane luki w zabezpieczeniach"
+  },
+  "lighthouse-core/audits/dobetterweb/notification-on-start.js | description": {
+    "message": "Witryny, które bez kontekstu pytają o zgodę na wyświetlanie powiadomień, nie budzą zaufania użytkowników lub ich dezorientują. Sugerujemy powiązanie wyświetlenia tej prośby z gestami użytkownika. [Więcej informacji](https://web.dev/notification-on-start)"
+  },
+  "lighthouse-core/audits/dobetterweb/notification-on-start.js | failureTitle": {
+    "message": "Pyta o zgodę na wyświetlanie powiadomień podczas wczytywania strony"
+  },
+  "lighthouse-core/audits/dobetterweb/notification-on-start.js | title": {
+    "message": "Nie pyta o zgodę na wyświetlanie powiadomień podczas wczytywania strony"
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | columnFailingElem": {
+    "message": "Nieprawidłowe elementy"
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | description": {
+    "message": "Uniemożliwianie wklejania haseł jest sprzeczne z dobrymi zasadami bezpieczeństwa. [Więcej informacji](https://web.dev/password-inputs-can-be-pasted-into)"
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | failureTitle": {
+    "message": "Uniemożliwia wklejanie tekstu w polach haseł"
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | title": {
+    "message": "Pozwala wklejać tekst w polach haseł"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | columnProtocol": {
+    "message": "Protokół"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | description": {
+    "message": "HTTP/2 ma wiele funkcji niedostępnych w HTTP/1.1, m.in. nagłówki binarne, multipleksowanie i komunikaty push z serwera. [Więcej informacji](https://web.dev/uses-http2)"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 żądanie nieprzesłane przez HTTP/2}few{# żądania nieprzesłane przez HTTP/2}many{# żądań nieprzesłanych przez HTTP/2}other{# żądania nieprzesłanego przez HTTP/2}}"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | failureTitle": {
+    "message": "Nie używa HTTP/2 dla wszystkich swoich zasobów"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | title": {
+    "message": "Używa HTTP/2 dla własnych zasobów"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-passive-event-listeners.js | description": {
+    "message": "Proponujemy oznaczenie detektorów zdarzeń dotyku i kółka myszy jako `passive`, by poprawić działanie przewijania strony. [Więcej informacji](https://web.dev/uses-passive-event-listeners)"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-passive-event-listeners.js | failureTitle": {
+    "message": "Nie używa pasywnych detektorów do poprawy działania przewijania"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-passive-event-listeners.js | title": {
+    "message": "Używa detektorów pasywnych do poprawy działania przewijania"
+  },
+  "lighthouse-core/audits/errors-in-console.js | columnDesc": {
+    "message": "Opis"
+  },
+  "lighthouse-core/audits/errors-in-console.js | description": {
+    "message": "Błędy zarejestrowane w konsoli wskazują na nierozwiązane problemy. Mogą być spowodowane nieudanymi żądaniami sieciowymi i innymi problemami w przeglądarce. [Więcej informacji](https://web.dev/errors-in-console)"
+  },
+  "lighthouse-core/audits/errors-in-console.js | failureTitle": {
+    "message": "Błędy przeglądarki zostały zarejestrowane w konsoli"
+  },
+  "lighthouse-core/audits/errors-in-console.js | title": {
+    "message": "W konsoli nie zostały zarejestrowane żadne błędy przeglądarki"
+  },
+  "lighthouse-core/audits/font-display.js | description": {
+    "message": "Użyj funkcji CSS „font-display”, by zapewnić widoczność tekstu dla użytkownika podczas ładowania czcionek internetowych. [Więcej informacji](https://developers.google.com/web/updates/2016/02/font-display)"
+  },
+  "lighthouse-core/audits/font-display.js | failureTitle": {
+    "message": "Zapewnij widoczność tekstu podczas ładowania czcionek internetowych"
+  },
+  "lighthouse-core/audits/font-display.js | title": {
+    "message": "Cały tekst pozostaje widoczny podczas ładowania czcionek internetowych"
+  },
+  "lighthouse-core/audits/font-display.js | undeclaredFontURLWarning": {
+    "message": "Narzędziu Lighthouse nie udało się automatycznie sprawdzić wartości font-display dla tego adresu URL: {fontURL}."
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | columnActual": {
+    "message": "Współczynnik proporcji (rzeczywisty)"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | columnDisplayed": {
+    "message": "Współczynnik proporcji (wyświetlany)"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | description": {
+    "message": "Wymiary wyświetlanego obrazu muszą odpowiadać naturalnemu współczynnikowi proporcji. [Więcej informacji](https://web.dev/image-aspect-ratio)"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | failureTitle": {
+    "message": "Wyświetla obrazy o niepoprawnym współczynniku proporcji"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | title": {
+    "message": "Wyświetla obrazy o poprawnym współczynniku proporcji"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | warningCompute": {
+    "message": "Nieprawidłowa informacja o rozmiarze obrazu {url}"
+  },
+  "lighthouse-core/audits/installable-manifest.js | description": {
+    "message": "Przeglądarki mogą aktywnie prosić użytkowników o dodanie Twojej aplikacji do ekranu głównego, co może przekładać się na większe zaangażowanie. [Więcej informacji](https://developers.google.com/web/tools/lighthouse/audits/install-prompt)"
+  },
+  "lighthouse-core/audits/installable-manifest.js | failureTitle": {
+    "message": "Plik manifestu aplikacji internetowej nie spełnia wymagań instalowalności"
+  },
+  "lighthouse-core/audits/installable-manifest.js | title": {
+    "message": "Plik manifestu aplikacji internetowej spełnia wymagania instalowalności"
+  },
+  "lighthouse-core/audits/is-on-https.js | columnInsecureURL": {
+    "message": "Niezabezpieczony URL"
+  },
+  "lighthouse-core/audits/is-on-https.js | description": {
+    "message": "Wszystkie witryny powinny być zabezpieczone przy użyciu HTTPS – również te, które nie obsługują danych wrażliwych. HTTPS uniemożliwia intruzom modyfikowanie i podsłuchiwanie komunikacji między aplikacją a użytkownikami. HTTP/2 i liczne nowe interfejsy API platformy WWW wymagają używania HTTPS. [Więcej informacji](https://web.dev/is-on-https)"
+  },
+  "lighthouse-core/audits/is-on-https.js | displayValue": {
+    "message": "{itemCount,plural, =1{Wykryto 1 niezabezpieczone żądanie}few{Wykryto # niezabezpieczone żądania}many{Wykryto # niezabezpieczonych żądań}other{Wykryto # niezabezpieczonego żądania}}"
+  },
+  "lighthouse-core/audits/is-on-https.js | failureTitle": {
+    "message": "Nie używa HTTPS"
+  },
+  "lighthouse-core/audits/is-on-https.js | title": {
+    "message": "Używa HTTPS"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | description": {
+    "message": "Szybkie wczytywanie stron przez sieć komórkową zapewnia dobre wrażenia użytkowników telefonów. [Więcej informacji](https://developers.google.com/web/tools/lighthouse/audits/fast-3g)"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | displayValueText": {
+    "message": "Interaktywna po {timeInMs, number, seconds} s"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | displayValueTextWithOverride": {
+    "message": "Interaktywna w symulowanej sieci komórkowej po {timeInMs, number, seconds} s"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | explanationLoadSlow": {
+    "message": "Strona wczytuje się zbyt wolno i nie jest interaktywna w ciągu 10 sekund. Zapoznaj się z możliwościami usprawnień i diagnostyką w sekcji „Wydajność”, by dowiedzieć się, co możesz poprawić."
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | failureTitle": {
+    "message": "Wczytywanie strony przez sieć komórkową nie jest dostatecznie szybkie"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | title": {
+    "message": "Wczytywanie strony przez sieć komórkową jest dostatecznie szybkie"
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | columnCategory": {
+    "message": "Kategoria"
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | description": {
+    "message": "Pomyśl o skróceniu czasu poświęcanego na analizowanie, kompilowanie i wykonywanie kodu JS. Może w tym pomóc dostarczanie mniejszych ładunków JS."
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | failureTitle": {
+    "message": "Zminimalizuj aktywność głównego wątku"
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | title": {
+    "message": "Minimalizuje aktywność głównego wątku"
+  },
+  "lighthouse-core/audits/manual/pwa-cross-browser.js | description": {
+    "message": "Witryny powinny działać w każdej popularnej przeglądarce, by mogło do nich dotrzeć jak najwięcej użytkowników. [Więcej informacji](https://developers.google.com/web/progressive-web-apps/checklist#site-works-cross-browser)"
+  },
+  "lighthouse-core/audits/manual/pwa-cross-browser.js | title": {
+    "message": "Witryna działa w różnych przeglądarkach"
+  },
+  "lighthouse-core/audits/manual/pwa-each-page-has-url.js | description": {
+    "message": "Upewnij się, że do poszczególnych stron można dotrzeć za pomocą precyzyjnych linków w postaci adresów URL i że adresy URL są unikalne na potrzeby udostępniania w mediach społecznościowych. [Więcej informacji](https://developers.google.com/web/progressive-web-apps/checklist#each-page-has-a-url)"
+  },
+  "lighthouse-core/audits/manual/pwa-each-page-has-url.js | title": {
+    "message": "Każda strona ma swój URL"
+  },
+  "lighthouse-core/audits/manual/pwa-page-transitions.js | description": {
+    "message": "Przejścia po kliknięciu powinny być płynne, nawet jeśli sieć jest wolna. Ma to kluczowe znaczenie dla postrzegania szybkości działania aplikacji. [Więcej informacji](https://developers.google.com/web/progressive-web-apps/checklist#page-transitions-dont-feel-like-they-block-on-the-network)"
+  },
+  "lighthouse-core/audits/manual/pwa-page-transitions.js | title": {
+    "message": "Przejścia między stronami nie sprawiają wrażenia, jakby zacinały się z powodu opóźnień w sieci"
+  },
+  "lighthouse-core/audits/metrics/estimated-input-latency.js | description": {
+    "message": "Szacowane opóźnienie reakcji jest szacunkowym czasem (w milisekundach), po którym aplikacja reaguje na działanie użytkownika w trakcie najbardziej intensywnego, pięciosekundowego okresu ładowania strony. Jeśli opóźnienie jest większe niż 50 ms, użytkownicy mogą uznać aplikację za powolną. [Więcej informacji](https://developers.google.com/web/tools/lighthouse/audits/estimated-input-latency)"
+  },
+  "lighthouse-core/audits/metrics/estimated-input-latency.js | title": {
+    "message": "Szacowane opóźnienie reakcji"
+  },
+  "lighthouse-core/audits/metrics/first-contentful-paint.js | description": {
+    "message": "Pierwsze wyrenderowanie treści oznacza czas wyrenderowania pierwszego tekstu lub obrazu. [Więcej informacji](https://developers.google.com/web/tools/lighthouse/audits/first-contentful-paint)"
+  },
+  "lighthouse-core/audits/metrics/first-contentful-paint.js | title": {
+    "message": "Pierwsze wyrenderowanie treści"
+  },
+  "lighthouse-core/audits/metrics/first-cpu-idle.js | description": {
+    "message": "CPU bezczynny po raz pierwszy oznacza czas, gdy wątek główny na stronie jest po raz pierwszy na tyle mało obciążony, że może obsługiwać działania użytkownika. [Więcej informacji](https://developers.google.com/web/tools/lighthouse/audits/first-interactive)"
+  },
+  "lighthouse-core/audits/metrics/first-cpu-idle.js | title": {
+    "message": "CPU bezczynny po raz pierwszy"
+  },
+  "lighthouse-core/audits/metrics/first-meaningful-paint.js | description": {
+    "message": "Pierwsze wyrenderowanie elementu znaczącego oznacza czas pojawienia się na ekranie głównej zawartości strony. [Więcej informacji](https://developers.google.com/web/tools/lighthouse/audits/first-meaningful-paint)"
+  },
+  "lighthouse-core/audits/metrics/first-meaningful-paint.js | title": {
+    "message": "Pierwsze wyrenderowanie elementu znaczącego"
+  },
+  "lighthouse-core/audits/metrics/interactive.js | description": {
+    "message": "Czas do pełnej interaktywności to czas, po którym strona staje się w pełni interaktywna. [Więcej informacji](https://developers.google.com/web/tools/lighthouse/audits/consistently-interactive)"
+  },
+  "lighthouse-core/audits/metrics/interactive.js | title": {
+    "message": "Czas do pełnej interaktywności"
+  },
+  "lighthouse-core/audits/metrics/max-potential-fid.js | description": {
+    "message": "Maksymalne opóźnienie przy pierwszym działaniu, którego mogą doświadczyć użytkownicy, to czas wykonywania (w milisekundach) najdłuższego zadania. [Więcej informacji](https://developers.google.com/web/updates/2018/05/first-input-delay)"
+  },
+  "lighthouse-core/audits/metrics/max-potential-fid.js | title": {
+    "message": "Maks. potencjalne opóźnienie przy 1. działaniu"
+  },
+  "lighthouse-core/audits/metrics/speed-index.js | description": {
+    "message": "Indeks szybkości wskazuje, jak szybko strona zapełnia się widocznymi treściami. [Więcej informacji](https://developers.google.com/web/tools/lighthouse/audits/speed-index)"
+  },
+  "lighthouse-core/audits/metrics/speed-index.js | title": {
+    "message": "Indeks szybkości"
+  },
+  "lighthouse-core/audits/metrics/total-blocking-time.js | description": {
+    "message": "Wyrażona w milisekundach suma wszystkich okresów między pierwszym wyrenderowaniem treści a czasem do pełnej interaktywności, gdy długość zadania przekroczyła 50 ms."
+  },
+  "lighthouse-core/audits/metrics/total-blocking-time.js | title": {
+    "message": "Łączny czas zablokowania"
+  },
+  "lighthouse-core/audits/network-rtt.js | description": {
+    "message": "Czas błądzenia w sieci (RTT) ma duży wpływ na szybkość działania. Jeśli RTT do źródła jest duży, serwery znajdujące się bliżej użytkownika mogą przyśpieszyć działanie. [Więcej informacji](https://hpbn.co/primer-on-latency-and-bandwidth/)"
+  },
+  "lighthouse-core/audits/network-rtt.js | title": {
+    "message": "Czasy błądzenia w sieci (Network Round Trip Times)"
+  },
+  "lighthouse-core/audits/network-server-latency.js | description": {
+    "message": "Opóźnienie serwera może wpływać na szybkość stron internetowych. Jeśli opóźnienie serwera źródłowego jest duże, serwer może być przeciążony lub mieć mało wydajny backend. [Więcej informacji](https://hpbn.co/primer-on-web-performance/#analyzing-the-resource-waterfall)"
+  },
+  "lighthouse-core/audits/network-server-latency.js | title": {
+    "message": "Opóźnienia backendu serwera"
+  },
+  "lighthouse-core/audits/offline-start-url.js | description": {
+    "message": "Skrypt service worker pozwala aplikacji działać stabilnie w nieprzewidywalnych warunkach sieciowych. [Więcej informacji](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)"
+  },
+  "lighthouse-core/audits/offline-start-url.js | failureTitle": {
+    "message": "`start_url` nie wyświetla błędu 200, kiedy jest offline"
+  },
+  "lighthouse-core/audits/offline-start-url.js | title": {
+    "message": "`start_url` wyświetla błąd 200, kiedy jest offline"
+  },
+  "lighthouse-core/audits/offline-start-url.js | warningCantStart": {
+    "message": "Narzędziu Lighthouse nie udało się odczytać elementu `start_url` z pliku manifestu. Dlatego uznano, że `start_url` to URL dokumentu. Komunikat o błędzie: „{manifestWarning}”."
+  },
+  "lighthouse-core/audits/performance-budget.js | columnOverBudget": {
+    "message": "Przekroczenie budżetu"
+  },
+  "lighthouse-core/audits/performance-budget.js | description": {
+    "message": "Liczba ani rozmiar żądań sieciowych nie mogą przekraczać wartości określonych przez podany budżet wydajności. [Więcej informacji](https://developers.google.com/web/tools/lighthouse/audits/budgets)"
+  },
+  "lighthouse-core/audits/performance-budget.js | requestCountOverBudget": {
+    "message": "{count,plural, =1{1 żądanie}few{# żądania}many{# żądań}other{# żądania}}"
+  },
+  "lighthouse-core/audits/performance-budget.js | title": {
+    "message": "Budżet wydajności"
+  },
+  "lighthouse-core/audits/redirects-http.js | description": {
+    "message": "Jeśli HTTPS jest już skonfigurowany, upewnij się, że cały ruch HTTP jest przekierowywany do HTTPS, by wszyscy użytkownicy mogli korzystać z bezpiecznych funkcji. [Więcej informacji](https://developers.google.com/web/tools/lighthouse/audits/http-redirects-to-https)"
+  },
+  "lighthouse-core/audits/redirects-http.js | failureTitle": {
+    "message": "Nie przekierowuje ruchu HTTP do HTTPS"
+  },
+  "lighthouse-core/audits/redirects-http.js | title": {
+    "message": "Przekierowuje ruch HTTP do HTTPS"
+  },
+  "lighthouse-core/audits/redirects.js | description": {
+    "message": "Przekierowania wprowadzają dodatkowe opóźnienia przed rozpoczęciem ładowania strony. [Więcej informacji](https://developers.google.com/web/tools/lighthouse/audits/redirects)"
+  },
+  "lighthouse-core/audits/redirects.js | title": {
+    "message": "Unikaj wielokrotnych przekierowań"
+  },
+  "lighthouse-core/audits/resource-summary.js | description": {
+    "message": "Aby określić budżety dla liczby i rozmiaru zasobów strony, dodaj plik budget.json. [Więcej informacji](https://developers.google.com/web/tools/lighthouse/audits/budgets)"
+  },
+  "lighthouse-core/audits/resource-summary.js | displayValue": {
+    "message": "{requestCount,plural, =1{1 żądanie • {byteCount, number, bytes} KB}few{# żądania • {byteCount, number, bytes} KB}many{# żądań • {byteCount, number, bytes} KB}other{# żądania • {byteCount, number, bytes} KB}}"
+  },
+  "lighthouse-core/audits/resource-summary.js | title": {
+    "message": "Liczba żądań i ilość przesyłanych danych powinny być małe"
+  },
+  "lighthouse-core/audits/seo/canonical.js | description": {
+    "message": "Linki kanoniczne sugerują URL, który ma być pokazywany w wynikach wyszukiwania. [Więcej informacji](https://web.dev/canonical)"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationConflict": {
+    "message": "Niezgodne ze sobą adresy URL ({urlList})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationDifferentDomain": {
+    "message": "Wskazuje inną domenę ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationInvalid": {
+    "message": "Nieprawidłowy URL ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationPointsElsewhere": {
+    "message": "Wskazuje inną lokalizację atrybutu `hreflang` ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationRelative": {
+    "message": "Względny URL ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationRoot": {
+    "message": "Wskazuje główny URL domeny (stronę główną) zamiast odpowiedniej strony z treścią"
+  },
+  "lighthouse-core/audits/seo/canonical.js | failureTitle": {
+    "message": "Dokument nie zawiera prawidłowego atrybutu `rel=canonical`"
+  },
+  "lighthouse-core/audits/seo/canonical.js | title": {
+    "message": "Dokument ma prawidłowy atrybut `rel=canonical`"
+  },
+  "lighthouse-core/audits/seo/font-size.js | description": {
+    "message": "Na urządzeniach mobilnych czcionka o rozmiarze mniejszym niż 12 pikseli jest nieczytelna, dlatego użytkownicy muszą powiększać ekran, by odczytać tekst. Ponad 60% tekstu na stronie powinno mieć rozmiar co najmniej 12 pikseli. [Więcej informacji](https://web.dev/font-size)"
+  },
+  "lighthouse-core/audits/seo/font-size.js | displayValue": {
+    "message": "{decimalProportion, number, extendedPercent} czytelnego tekstu"
+  },
+  "lighthouse-core/audits/seo/font-size.js | explanationViewport": {
+    "message": "Tekst jest nieczytelny z powodu braku metatagu viewport zoptymalizowanego na potrzeby ekranów telefonów."
+  },
+  "lighthouse-core/audits/seo/font-size.js | explanationWithDisclaimer": {
+    "message": "{decimalProportion, number, extendedPercent} tekstu jest zbyt małe (na podstawie próbki {decimalProportionVisited, number, extendedPercent})."
+  },
+  "lighthouse-core/audits/seo/font-size.js | failureTitle": {
+    "message": "W dokumencie nie są używane czytelne rozmiary czcionek"
+  },
+  "lighthouse-core/audits/seo/font-size.js | title": {
+    "message": "W dokumencie używane są czytelne rozmiary czcionek"
+  },
+  "lighthouse-core/audits/seo/hreflang.js | description": {
+    "message": "Linki hreflang informują wyszukiwarki, którą wersję strony pokazywać w wynikach wyszukiwania dla danego języka lub regionu. [Więcej informacji](https://web.dev/hreflang)"
+  },
+  "lighthouse-core/audits/seo/hreflang.js | failureTitle": {
+    "message": "Dokument nie ma prawidłowego atrybutu `hreflang`"
+  },
+  "lighthouse-core/audits/seo/hreflang.js | title": {
+    "message": "Dokument ma prawidłowy atrybut `hreflang`"
+  },
+  "lighthouse-core/audits/seo/http-status-code.js | description": {
+    "message": "Strony z kodem stanu HTTP oznaczającym niepowodzenie mogą nie być indeksowane poprawnie. [Więcej informacji](https://web.dev/http-status-code)"
+  },
+  "lighthouse-core/audits/seo/http-status-code.js | failureTitle": {
+    "message": "Strona ma kod stanu HTTP oznaczający niepowodzenie"
+  },
+  "lighthouse-core/audits/seo/http-status-code.js | title": {
+    "message": "Strona ma kod stanu HTTP oznaczający powodzenie"
+  },
+  "lighthouse-core/audits/seo/is-crawlable.js | description": {
+    "message": "Wyszukiwarki nie mogą umieszczać Twoich stron w wynikach wyszukiwania, jeśli nie mają uprawnień, by je indeksować. [Więcej informacji](https://web.dev/is-crawable)"
+  },
+  "lighthouse-core/audits/seo/is-crawlable.js | failureTitle": {
+    "message": "Zablokowano indeksowanie strony"
+  },
+  "lighthouse-core/audits/seo/is-crawlable.js | title": {
+    "message": "Indeksowanie strony nie jest zablokowane"
+  },
+  "lighthouse-core/audits/seo/link-text.js | description": {
+    "message": "Opisowy tekst linków ułatwia wyszukiwarkom zrozumienie zawartości stron. [Więcej informacji](https://web.dev/link-text)"
+  },
+  "lighthouse-core/audits/seo/link-text.js | displayValue": {
+    "message": "{itemCount,plural, =1{Znaleziono 1 link}few{Znaleziono # linki}many{Znaleziono # linków}other{Znaleziono # linku}}"
+  },
+  "lighthouse-core/audits/seo/link-text.js | failureTitle": {
+    "message": "Linki nie mają opisowego tekstu"
+  },
+  "lighthouse-core/audits/seo/link-text.js | title": {
+    "message": "Linki mają tekst opisowy"
+  },
+  "lighthouse-core/audits/seo/manual/structured-data.js | description": {
+    "message": "Uruchom [Narzędzie do testowania uporządkowanych danych](https://search.google.com/structured-data/testing-tool/) i narzędzie [Structured Data Linter](http://linter.structured-data.org/), by sprawdzić uporządkowane dane. [Więcej informacji](https://web.dev/structured-data)"
+  },
+  "lighthouse-core/audits/seo/manual/structured-data.js | title": {
+    "message": "Uporządkowane dane są prawidłowe"
+  },
+  "lighthouse-core/audits/seo/meta-description.js | description": {
+    "message": "Metaopis można umieścić w wynikach wyszukiwania, by krótko podsumować zawartość strony. [Więcej informacji](https://web.dev/meta-description)"
+  },
+  "lighthouse-core/audits/seo/meta-description.js | explanation": {
+    "message": "Tekst opisu jest pusty."
+  },
+  "lighthouse-core/audits/seo/meta-description.js | failureTitle": {
+    "message": "Dokument nie ma metaopisu"
+  },
+  "lighthouse-core/audits/seo/meta-description.js | title": {
+    "message": "Dokument ma metaopis"
+  },
+  "lighthouse-core/audits/seo/plugins.js | description": {
+    "message": "Wyszukiwarki nie potrafią indeksować treści z wtyczek, a wiele urządzeń nie obsługuje wtyczek lub ogranicza ich działanie. [Więcej informacji](https://web.dev/plugins)"
+  },
+  "lighthouse-core/audits/seo/plugins.js | failureTitle": {
+    "message": "Dokument używa wtyczek"
+  },
+  "lighthouse-core/audits/seo/plugins.js | title": {
+    "message": "Dokument nie wymaga wtyczek"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | description": {
+    "message": "Jeśli plik robots.txt ma nieprawidłowy format, roboty indeksujące mogą nie wiedzieć, jak mają indeksować witrynę. [Więcej informacji](https://web.dev/robots-txt)"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | displayValueHttpBadCode": {
+    "message": "Żądanie pliku robots.txt zwróciło stan HTTP: {statusCode}"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | displayValueValidationError": {
+    "message": "{itemCount,plural, =1{Znaleziono 1 błąd}few{Znaleziono # błędy}many{Znaleziono # błędów}other{Znaleziono # błędu}}"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | explanation": {
+    "message": "Lighthouse nie udało się pobrać pliku robots.txt"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | failureTitle": {
+    "message": "Plik robots.txt jest nieprawidłowy"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | title": {
+    "message": "Plik robots.txt jest prawidłowy"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | description": {
+    "message": "Elementy interaktywne, takie jak przyciski i linki, powinny być dostatecznie duże (48 x 48 pikseli) i mieć wokół siebie odpowiednią ilość miejsca, by można było je łatwo dotknąć, nie zahaczając o inne elementy. [Więcej informacji](https://web.dev/tap-targets)"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | displayValue": {
+    "message": "{decimalProportion, number, percent} elementów dotykowych ma odpowiednią wielkość"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | explanationViewportMetaNotOptimized": {
+    "message": "Elementy dotykowe są zbyt małe z powodu braku metatagu viewport zoptymalizowanego na potrzeby ekranów telefonów"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | failureTitle": {
+    "message": "Elementy dotykowe nie mają odpowiedniej wielkości"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | overlappingTargetHeader": {
+    "message": "Pokrywające się elementy dotykowe"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | tapTargetHeader": {
+    "message": "Element dotykowy"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | title": {
+    "message": "Elementy dotykowe mają odpowiednią wielkość"
+  },
+  "lighthouse-core/audits/service-worker.js | description": {
+    "message": "Skrypt service worker pozwala aplikacji na korzystanie z wielu funkcji progresywnych aplikacji internetowych – takich jak działanie offline, dodawanie do ekranu głównego czy powiadomienia push. [Więcej informacji](https://developers.google.com/web/tools/lighthouse/audits/registered-service-worker)"
+  },
+  "lighthouse-core/audits/service-worker.js | explanationBadManifest": {
+    "message": "Stroną steruje skrypt service worker, ale nie znaleziono elementu `start_url`, ponieważ nie udało się przetworzyć pliku manifestu jako prawidłowego pliku JSON"
+  },
+  "lighthouse-core/audits/service-worker.js | explanationBadStartUrl": {
+    "message": "Tą stroną steruje skrypt service worker, ale element `start_url` ({startUrl}) nie znajduje się w jego zakresie ({scopeUrl})"
+  },
+  "lighthouse-core/audits/service-worker.js | explanationNoManifest": {
+    "message": "Tą stroną steruje skrypt service worker, ale nie znaleziono elementu `start_url`, ponieważ nie został pobrany żaden plik manifestu."
+  },
+  "lighthouse-core/audits/service-worker.js | explanationOutOfScope": {
+    "message": "Ta witryna zawiera co najmniej jeden skrypt service worker, ale strona ({pageUrl}) nie jest w zakresie."
+  },
+  "lighthouse-core/audits/service-worker.js | failureTitle": {
+    "message": "Nie rejestruje skryptu service worker, który steruje stroną i elementem `start_url`"
+  },
+  "lighthouse-core/audits/service-worker.js | title": {
+    "message": "Rejestruje skrypt service worker, który steruje stroną i elementem `start_url`"
+  },
+  "lighthouse-core/audits/splash-screen.js | description": {
+    "message": "Ekran powitalny z niestandardowym motywem zapewnia użytkownikom lepsze wrażenia podczas otwierania aplikacji z ekranu głównego. [Więcej informacji](https://developers.google.com/web/tools/lighthouse/audits/custom-splash-screen)"
+  },
+  "lighthouse-core/audits/splash-screen.js | failureTitle": {
+    "message": "Nie skonfigurowano niestandardowego ekranu powitalnego"
+  },
+  "lighthouse-core/audits/splash-screen.js | title": {
+    "message": "Skonfigurowano niestandardowy ekran powitalny"
+  },
+  "lighthouse-core/audits/themed-omnibox.js | description": {
+    "message": "Motyw paska adresu w przeglądarce możesz dopasować do swojej witryny. [Więcej informacji](https://developers.google.com/web/tools/lighthouse/audits/address-bar)"
+  },
+  "lighthouse-core/audits/themed-omnibox.js | failureTitle": {
+    "message": "Nie ustawia motywu kolorystycznego paska adresu."
+  },
+  "lighthouse-core/audits/themed-omnibox.js | title": {
+    "message": "Ustawia motyw kolorystyczny paska adresu."
+  },
+  "lighthouse-core/audits/third-party-summary.js | columnBlockingTime": {
+    "message": "Czas blokowania głównego wątku"
+  },
+  "lighthouse-core/audits/third-party-summary.js | columnThirdParty": {
+    "message": "Dostawca zewnętrzny"
+  },
+  "lighthouse-core/audits/third-party-summary.js | description": {
+    "message": "Kod spoza witryny może znacznie spowalniać wczytywanie stron. Ogranicz liczbę zewnętrznych dostawców kodu i spróbuj wczytywać kod spoza witryny dopiero po zakończeniu wczytywania podstawowej strony. [Więcej informacji](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/loading-third-party-javascript/)"
+  },
+  "lighthouse-core/audits/third-party-summary.js | displayValue": {
+    "message": "Kod spoza witryny zablokował główny wątek na {timeInMs, number, milliseconds} ms"
+  },
+  "lighthouse-core/audits/third-party-summary.js | failureTitle": {
+    "message": "Ogranicz wpływ kodu spoza witryny"
+  },
+  "lighthouse-core/audits/third-party-summary.js | title": {
+    "message": "Używanie kodu spoza witryny"
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | description": {
+    "message": "Czas do pierwszego bajta oznacza czas wysłania odpowiedzi przez serwer. [Więcej informacji](https://developers.google.com/web/tools/lighthouse/audits/ttfb)"
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | displayValue": {
+    "message": "Czas odpowiedzi głównego dokumentu: {timeInMs, number, milliseconds} ms"
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | failureTitle": {
+    "message": "Skróć czasy reakcji serwera (TTFB)"
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | title": {
+    "message": "Czasy odpowiedzi serwera są krótkie (TTFB)"
+  },
+  "lighthouse-core/audits/user-timings.js | columnDuration": {
+    "message": "Czas trwania"
+  },
+  "lighthouse-core/audits/user-timings.js | columnStartTime": {
+    "message": "Czas rozpoczęcia"
+  },
+  "lighthouse-core/audits/user-timings.js | columnType": {
+    "message": "Typ"
+  },
+  "lighthouse-core/audits/user-timings.js | description": {
+    "message": "Do aplikacji możesz dodać obsługę interfejsu User Timing API, by mierzyć rzeczywistą szybkość aplikacji z punktu widzenia użytkownika. [Więcej informacji](https://developers.google.com/web/tools/lighthouse/audits/user-timing)"
+  },
+  "lighthouse-core/audits/user-timings.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 czas działań użytkownika}few{# czasy działań użytkownika}many{# czasów działań użytkownika}other{# czasu działań użytkownika}}"
+  },
+  "lighthouse-core/audits/user-timings.js | title": {
+    "message": "Znaczniki i odcinki Czasu działań użytkownika"
+  },
+  "lighthouse-core/audits/uses-rel-preconnect.js | crossoriginWarning": {
+    "message": "Znaleziono element <link> typu preconnect dla „{securityOrigin}”, który nie jest używany przez przeglądarkę. Sprawdź, czy poprawnie używasz atrybutu `crossorigin`."
+  },
+  "lighthouse-core/audits/uses-rel-preconnect.js | description": {
+    "message": "Rozważ dodanie wskazówek `preconnect` lub `dns-prefetch`, by wcześniej nawiązać połączenia z ważnymi źródłami w innych domenach. [Więcej informacji](https://developers.google.com/web/fundamentals/performance/resource-prioritization#preconnect)"
+  },
+  "lighthouse-core/audits/uses-rel-preconnect.js | title": {
+    "message": "Wcześniej nawiąż połączenia z wymaganymi źródłami"
+  },
+  "lighthouse-core/audits/uses-rel-preload.js | crossoriginWarning": {
+    "message": "Znaleziono element <link> wstępnego wczytywania dla „{preloadURL}”, który nie jest używany przez przeglądarkę. Sprawdź, czy poprawnie używasz atrybutu `crossorigin`."
+  },
+  "lighthouse-core/audits/uses-rel-preload.js | description": {
+    "message": "Pomyśl o użyciu elementu `<link rel=preload>`, by szybciej pobierały się zasoby, które są obecnie żądane na dalszym etapie ładowania strony. [Więcej informacji](https://developers.google.com/web/tools/lighthouse/audits/preload)"
+  },
+  "lighthouse-core/audits/uses-rel-preload.js | title": {
+    "message": "Załaduj wstępnie kluczowe żądania"
+  },
+  "lighthouse-core/audits/viewport.js | description": {
+    "message": "Dodaj tag `<meta name=\"viewport\">`, by zoptymalizować aplikację pod kątem ekranów urządzeń mobilnych. [Więcej informacji](https://developers.google.com/web/tools/lighthouse/audits/has-viewport-meta-tag)"
+  },
+  "lighthouse-core/audits/viewport.js | explanationNoTag": {
+    "message": "Nie znaleziono tagu `<meta name=\"viewport\">`"
+  },
+  "lighthouse-core/audits/viewport.js | failureTitle": {
+    "message": "Nie zawiera tagu `<meta name=\"viewport\">` z elementem `width` lub `initial-scale`"
+  },
+  "lighthouse-core/audits/viewport.js | title": {
+    "message": "Zawiera tag `<meta name=\"viewport\">` z elementem `width` lub `initial-scale`"
+  },
+  "lighthouse-core/audits/without-javascript.js | description": {
+    "message": "Aplikacja powinna wyświetlać jakieś treści, jeśli JavaScript jest wyłączony. Wystarczy nawet ostrzeżenie, że JavaScript jest wymagany do korzystania z aplikacji. [Więcej informacji](https://developers.google.com/web/tools/lighthouse/audits/no-js)"
+  },
+  "lighthouse-core/audits/without-javascript.js | explanation": {
+    "message": "Główna część strony powinna renderować jakieś treści, kiedy jej skrypty są niedostępne"
+  },
+  "lighthouse-core/audits/without-javascript.js | failureTitle": {
+    "message": "Nie zawiera treści zastępczych na wypadek niedostępności JavaScriptu"
+  },
+  "lighthouse-core/audits/without-javascript.js | title": {
+    "message": "Zawiera jakieś treści na wypadek niedostępności JavaScriptu"
+  },
+  "lighthouse-core/audits/works-offline.js | description": {
+    "message": "Jeśli tworzysz progresywną aplikację internetową, rozważ użycie skryptu service worker, który pozwoli na działanie aplikacji w trybie offline. [Więcej informacji](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)"
+  },
+  "lighthouse-core/audits/works-offline.js | failureTitle": {
+    "message": "Strona nie wyświetla błędu 200, kiedy jest offline"
+  },
+  "lighthouse-core/audits/works-offline.js | title": {
+    "message": "Bieżąca strona wyświetla błąd 200, kiedy jest offline"
+  },
+  "lighthouse-core/audits/works-offline.js | warningNoLoad": {
+    "message": "Strona może nie wczytywać się offline, ponieważ testowy URL ({requested}) został przekierowany pod adres „{final}”. Przetestuj drugi URL bezpośrednio."
+  },
+  "lighthouse-core/config/default-config.js | a11yAriaGroupDescription": {
+    "message": "To są możliwości lepszego wykorzystania atrybutów ARIA w Twojej aplikacji, by była ona wygodniejsza dla użytkowników technologii wspomagających, takich jak czytniki ekranu."
+  },
+  "lighthouse-core/config/default-config.js | a11yAriaGroupTitle": {
+    "message": "ARIA"
+  },
+  "lighthouse-core/config/default-config.js | a11yAudioVideoGroupDescription": {
+    "message": "To są możliwości dostarczenia alternatywnej treści dla audio i wideo. Dzięki temu treści mogą stać się bardziej przystępne dla osób niedowidzących i niedosłyszących."
+  },
+  "lighthouse-core/config/default-config.js | a11yAudioVideoGroupTitle": {
+    "message": "Dźwięk i obraz"
+  },
+  "lighthouse-core/config/default-config.js | a11yBestPracticesGroupDescription": {
+    "message": "Te pozycje wskazują typowe sprawdzone metody ułatwień dostępu."
+  },
+  "lighthouse-core/config/default-config.js | a11yBestPracticesGroupTitle": {
+    "message": "Sprawdzone metody"
+  },
+  "lighthouse-core/config/default-config.js | a11yCategoryDescription": {
+    "message": "Te testy wskazują możliwości [poprawy ułatwień dostępu Twojej aplikacji internetowej](https://developers.google.com/web/fundamentals/accessibility). Ponieważ wykryć automatycznie można tylko część problemów z ułatwieniami dostępu, wskazane jest przeprowadzenie też testów ręcznych."
+  },
+  "lighthouse-core/config/default-config.js | a11yCategoryManualDescription": {
+    "message": "Te pozycje dotyczą obszarów, których narzędzie do testów automatycznych nie może zbadać. Więcej informacji w naszym przewodniku po [prowadzeniu przeglądu ułatwień dostępu](https://developers.google.com/web/fundamentals/accessibility/how-to-review)."
+  },
+  "lighthouse-core/config/default-config.js | a11yCategoryTitle": {
+    "message": "Ułatwienia dostępu"
+  },
+  "lighthouse-core/config/default-config.js | a11yColorContrastGroupDescription": {
+    "message": "To są możliwości poprawy czytelności treści."
+  },
+  "lighthouse-core/config/default-config.js | a11yColorContrastGroupTitle": {
+    "message": "Kontrast"
+  },
+  "lighthouse-core/config/default-config.js | a11yLanguageGroupDescription": {
+    "message": "To są możliwości ulepszenia interpretacji treści przez użytkowników mających różne ustawienia języka."
+  },
+  "lighthouse-core/config/default-config.js | a11yLanguageGroupTitle": {
+    "message": "Internacjonalizacja i lokalizacja"
+  },
+  "lighthouse-core/config/default-config.js | a11yNamesLabelsGroupDescription": {
+    "message": "To są możliwości ulepszenia semantyki kontrolek aplikacji. Dzięki temu treści mogą stać się bardziej przystępne dla użytkowników technologii wspomagających, takich jak czytniki ekranu."
+  },
+  "lighthouse-core/config/default-config.js | a11yNamesLabelsGroupTitle": {
+    "message": "Nazwy i etykiety"
+  },
+  "lighthouse-core/config/default-config.js | a11yNavigationGroupDescription": {
+    "message": "To są możliwości ulepszenia nawigacji za pomocą klawiatury w Twojej aplikacji."
+  },
+  "lighthouse-core/config/default-config.js | a11yNavigationGroupTitle": {
+    "message": "Nawigacja"
+  },
+  "lighthouse-core/config/default-config.js | a11yTablesListsVideoGroupDescription": {
+    "message": "To są możliwości lepszego odczytywania danych z tabel i list za pomocą technologii wspomagających, takich jak czytnik ekranu."
+  },
+  "lighthouse-core/config/default-config.js | a11yTablesListsVideoGroupTitle": {
+    "message": "Tabele i listy"
+  },
+  "lighthouse-core/config/default-config.js | bestPracticesCategoryTitle": {
+    "message": "Sprawdzone metody"
+  },
+  "lighthouse-core/config/default-config.js | budgetsGroupDescription": {
+    "message": "Budżety wydajności są podstawą do określania standardów wydajności witryny."
+  },
+  "lighthouse-core/config/default-config.js | budgetsGroupTitle": {
+    "message": "Budżety"
+  },
+  "lighthouse-core/config/default-config.js | diagnosticsGroupDescription": {
+    "message": "Więcej o wydajności aplikacji. Te liczby nie mają [bezpośredniego wpływu](https://github.com/GoogleChrome/lighthouse/blob/d2ec9ffbb21de9ad1a0f86ed24575eda32c796f0/docs/scoring.md#how-are-the-scores-weighted) na wyniki w kategorii Wydajność."
+  },
+  "lighthouse-core/config/default-config.js | diagnosticsGroupTitle": {
+    "message": "Diagnostyka"
+  },
+  "lighthouse-core/config/default-config.js | firstPaintImprovementsGroupDescription": {
+    "message": "Najważniejszym aspektem wydajności jest to, jak szybko piksele zostaną wyświetlone na ekranie. Kluczowe wskaźniki: Pierwsze wyrenderowanie treści, Pierwsze wyrenderowanie elementu znaczącego"
+  },
+  "lighthouse-core/config/default-config.js | firstPaintImprovementsGroupTitle": {
+    "message": "Ulepszenia pierwszego renderowania"
+  },
+  "lighthouse-core/config/default-config.js | loadOpportunitiesGroupDescription": {
+    "message": "Te sugestie mogą pomóc przyśpieszyć wczytywanie strony. Nie mają one [bezpośredniego wpływu](https://github.com/GoogleChrome/lighthouse/blob/d2ec9ffbb21de9ad1a0f86ed24575eda32c796f0/docs/scoring.md#how-are-the-scores-weighted) na wynik w kategorii Wydajność."
+  },
+  "lighthouse-core/config/default-config.js | loadOpportunitiesGroupTitle": {
+    "message": "Możliwości"
+  },
+  "lighthouse-core/config/default-config.js | metricGroupTitle": {
+    "message": "Dane"
+  },
+  "lighthouse-core/config/default-config.js | overallImprovementsGroupDescription": {
+    "message": "Usprawnij całe ładowanie, by strona jak najszybciej była gotowa do używania i reagowała na działania użytkownika. Główne wskaźniki: Czas do pełnej interaktywności, Indeks szybkości"
+  },
+  "lighthouse-core/config/default-config.js | overallImprovementsGroupTitle": {
+    "message": "Ogólne usprawnienia"
+  },
+  "lighthouse-core/config/default-config.js | performanceCategoryTitle": {
+    "message": "Wydajność"
+  },
+  "lighthouse-core/config/default-config.js | pwaCategoryDescription": {
+    "message": "Te testy służą do sprawdzenia różnych aspektów progresywnej aplikacji internetowej. [Więcej informacji](https://developers.google.com/web/progressive-web-apps/checklist)"
+  },
+  "lighthouse-core/config/default-config.js | pwaCategoryManualDescription": {
+    "message": "Te testy są wymagane w ramach podstawowej [listy kontrolnej PWA](https://developers.google.com/web/progressive-web-apps/checklist), ale narzędzie Lighthouse nie przeprowadza ich automatycznie. Nie mają wpływu na wynik, ale należy pamiętać o wykonaniu ich ręcznie."
+  },
+  "lighthouse-core/config/default-config.js | pwaCategoryTitle": {
+    "message": "Progresywna aplikacja internetowa"
+  },
+  "lighthouse-core/config/default-config.js | pwaFastReliableGroupTitle": {
+    "message": "Szybka i niezawodna"
+  },
+  "lighthouse-core/config/default-config.js | pwaInstallableGroupTitle": {
+    "message": "Możliwa do zainstalowania"
+  },
+  "lighthouse-core/config/default-config.js | pwaOptimizedGroupTitle": {
+    "message": "Optymalizacja dla PWA"
+  },
+  "lighthouse-core/config/default-config.js | seoCategoryDescription": {
+    "message": "Te testy sprawdzają, czy strona jest zoptymalizowana pod kątem rankingu wyników wyszukiwarki. Na ranking mogą wpływać inne czynniki, których Lighthouse nie sprawdza. [Więcej informacji](https://support.google.com/webmasters/answer/35769)"
+  },
+  "lighthouse-core/config/default-config.js | seoCategoryManualDescription": {
+    "message": "Uruchom te dodatkowe walidatory w swojej witrynie, by skontrolować więcej sprawdzonych metod SEO."
+  },
+  "lighthouse-core/config/default-config.js | seoCategoryTitle": {
+    "message": "SEO"
+  },
+  "lighthouse-core/config/default-config.js | seoContentGroupDescription": {
+    "message": "Dostosuj kod HTML w taki sposób, by roboty lepiej rozumiały zawartość aplikacji."
+  },
+  "lighthouse-core/config/default-config.js | seoContentGroupTitle": {
+    "message": "Sprawdzone metody publikowania treści"
+  },
+  "lighthouse-core/config/default-config.js | seoCrawlingGroupDescription": {
+    "message": "Jeśli Twoja aplikacja ma pojawiać się w wynikach wyszukiwania, muszą mieć do niej dostęp roboty."
+  },
+  "lighthouse-core/config/default-config.js | seoCrawlingGroupTitle": {
+    "message": "Skanowanie i indeksowanie"
+  },
+  "lighthouse-core/config/default-config.js | seoMobileGroupDescription": {
+    "message": "Dostosuj strony do komórek, by użytkownicy nie musieli pomniejszać ani powiększać ekranu, gdy będą chcieli coś przeczytać. [Więcej informacji](https://developers.google.com/search/mobile-sites/)"
+  },
+  "lighthouse-core/config/default-config.js | seoMobileGroupTitle": {
+    "message": "Na komórki"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnCacheTTL": {
+    "message": "Czas przechowywania danych w pamięci podręcznej"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnLocation": {
+    "message": "Lokalizacja"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnName": {
+    "message": "Nazwa"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnRequests": {
+    "message": "Żądania"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnResourceType": {
+    "message": "Typ zasobu"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnSize": {
+    "message": "Rozmiar"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnTimeSpent": {
+    "message": "Spędzony czas"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnTransferSize": {
+    "message": "Rozmiar przesłanych danych"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnURL": {
+    "message": "URL"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnWastedBytes": {
+    "message": "Potencjalne oszczędności"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnWastedMs": {
+    "message": "Potencjalne oszczędności"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | displayValueByteSavings": {
+    "message": "Potencjalne przyspieszenie o {wastedBytes, number, bytes} KB"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | displayValueMsSavings": {
+    "message": "Potencjalne przyspieszenie o {wastedMs, number, milliseconds} ms"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | documentResourceType": {
+    "message": "Dokument"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | fontResourceType": {
+    "message": "Czcionka"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | imageResourceType": {
+    "message": "Obraz"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | mediaResourceType": {
+    "message": "Multimedia"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | ms": {
+    "message": "{timeInMs, number, milliseconds} ms"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | otherResourceType": {
+    "message": "Inne"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | scriptResourceType": {
+    "message": "Skrypt"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | seconds": {
+    "message": "{timeInMs, number, seconds} s"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | stylesheetResourceType": {
+    "message": "Arkusz stylów"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | thirdPartyResourceType": {
+    "message": "Zewnętrzne"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | totalResourceType": {
+    "message": "Razem"
+  },
+  "lighthouse-core/lib/lh-error.js | badTraceRecording": {
+    "message": "Podczas rejestrowania śladu wczytywania strony wystąpił błąd. Uruchom Lighthouse ponownie. ({errorCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | criTimeout": {
+    "message": "Upłynął czas oczekiwania na wstępne połączenie z Protokołem debugującym."
+  },
+  "lighthouse-core/lib/lh-error.js | didntCollectScreenshots": {
+    "message": "Podczas wczytywania strony w Chrome nie zostały utworzone zrzuty ekranu. Zapewnij widoczność treści na stronie, a potem uruchom Lighthouse jeszcze raz. ({errorCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | dnsFailure": {
+    "message": "Serwery DNS nie potrafiły ustalić adresu podanej domeny."
+  },
+  "lighthouse-core/lib/lh-error.js | erroredRequiredArtifact": {
+    "message": "Wystąpił błąd wymaganego elementu zbierającego {artifactName}: {errorMessage}"
+  },
+  "lighthouse-core/lib/lh-error.js | internalChromeError": {
+    "message": "Wystąpił wewnętrzny błąd Chrome. Uruchom ponownie Chrome, a następnie Lighthouse."
+  },
+  "lighthouse-core/lib/lh-error.js | missingRequiredArtifact": {
+    "message": "Wymagany element zbierający {artifactName} nie został uruchomiony."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailed": {
+    "message": "Narzędziu Lighthouse nie udało się całkowicie wczytać żądanej strony. Upewnij się, że testujesz właściwy URL, a serwer poprawnie odpowiada na wszystkie żądania."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedHung": {
+    "message": "Narzędziu Lighthouse nie udało się całkowicie wczytać żądanego URL-a, ponieważ strona przestała odpowiadać."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedInsecure": {
+    "message": "Podany URL nie ma prawidłowego certyfikatu bezpieczeństwa. {securityMessages}"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedInterstitial": {
+    "message": "Przeglądarka Chrome zablokowała wczytywanie strony i wyświetliła komunikat pełnoekranowy. Upewnij się, że testujesz właściwy URL, a serwer poprawnie odpowiada na wszystkie żądania."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedWithDetails": {
+    "message": "Narzędziu Lighthouse nie udało się całkowicie wczytać żądanej strony. Upewnij się, że testujesz właściwy URL, a serwer poprawnie odpowiada na wszystkie żądania. Szczegóły: {errorDetails}"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedWithStatusCode": {
+    "message": "Narzędziu Lighthouse nie udało się całkowicie wczytać żądanej strony. Upewnij się, że testujesz właściwy URL, a serwer poprawnie odpowiada na wszystkie żądania. Kod stanu: {statusCode}"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadTookTooLong": {
+    "message": "Wczytywanie strony trwało zbyt długo. Skorzystaj z możliwości przyspieszenia wczytywania strony podanych w raporcie, a następnie ponownie uruchom Lighthouse. ({errorCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | protocolTimeout": {
+    "message": "Przekroczono przydzielony czas oczekiwania na odpowiedź protokołu DevTools. Metoda: {protocolMethod}"
+  },
+  "lighthouse-core/lib/lh-error.js | requestContentTimeout": {
+    "message": "Przekroczono czas przydzielony na pobranie zasobów"
+  },
+  "lighthouse-core/lib/lh-error.js | urlInvalid": {
+    "message": "Podany URL jest nieprawidłowy."
+  },
+  "lighthouse-core/report/html/renderer/util.js | auditGroupExpandTooltip": {
+    "message": "Pokaż audyty"
+  },
+  "lighthouse-core/report/html/renderer/util.js | crcInitialNavigation": {
+    "message": "Początkowa nawigacja"
+  },
+  "lighthouse-core/report/html/renderer/util.js | crcLongestDurationLabel": {
+    "message": "Maksymalne opóźnienie ścieżki krytycznej:"
+  },
+  "lighthouse-core/report/html/renderer/util.js | errorLabel": {
+    "message": "Błąd"
+  },
+  "lighthouse-core/report/html/renderer/util.js | errorMissingAuditInfo": {
+    "message": "Błąd raportu: brak informacji o audycie"
+  },
+  "lighthouse-core/report/html/renderer/util.js | labDataTitle": {
+    "message": "Dane laboratoryjne"
+  },
+  "lighthouse-core/report/html/renderer/util.js | lsPerformanceCategoryDescription": {
+    "message": "Bieżąca strona została przeanalizowana przez narzędzie [Lighthouse](https://developers.google.com/web/tools/lighthouse/) wraz z emulacją sieci komórkowej. Wartości są szacunkowe i mogą się zmieniać."
+  },
+  "lighthouse-core/report/html/renderer/util.js | manualAuditsGroupTitle": {
+    "message": "Dodatkowe elementy do ręcznego sprawdzenia"
+  },
+  "lighthouse-core/report/html/renderer/util.js | notApplicableAuditsGroupTitle": {
+    "message": "Nie dotyczy"
+  },
+  "lighthouse-core/report/html/renderer/util.js | opportunityResourceColumnLabel": {
+    "message": "Możliwość"
+  },
+  "lighthouse-core/report/html/renderer/util.js | opportunitySavingsColumnLabel": {
+    "message": "Szacowane oszczędności"
+  },
+  "lighthouse-core/report/html/renderer/util.js | passedAuditsGroupTitle": {
+    "message": "Zaliczone audyty"
+  },
+  "lighthouse-core/report/html/renderer/util.js | snippetCollapseButtonLabel": {
+    "message": "Zwiń fragment"
+  },
+  "lighthouse-core/report/html/renderer/util.js | snippetExpandButtonLabel": {
+    "message": "Rozwiń fragment"
+  },
+  "lighthouse-core/report/html/renderer/util.js | thirdPartyResourcesLabel": {
+    "message": "Pokaż zasoby zewnętrzne"
+  },
+  "lighthouse-core/report/html/renderer/util.js | toplevelWarningsMessage": {
+    "message": "Podczas tego uruchomienia Lighthouse wystąpiły problemy:"
+  },
+  "lighthouse-core/report/html/renderer/util.js | varianceDisclaimer": {
+    "message": "Wartości są szacunkowe i mogą się zmieniać. Wynik wydajności jest [oparty tylko na tych danych](https://github.com/GoogleChrome/lighthouse/blob/d2ec9ffbb21de9ad1a0f86ed24575eda32c796f0/docs/scoring.md#how-are-the-scores-weighted)."
+  },
+  "lighthouse-core/report/html/renderer/util.js | warningAuditsGroupTitle": {
+    "message": "Audyty zaliczone z ostrzeżeniami"
+  },
+  "lighthouse-core/report/html/renderer/util.js | warningHeader": {
+    "message": "Ostrzeżenia "
+  },
+  "stack-packs/packs/wordpress.js | efficient_animated_content": {
+    "message": "Możesz przesłać plik GIF do usługi, która umożliwi umieszczanie go jako pliku wideo HTML5."
+  },
+  "stack-packs/packs/wordpress.js | offscreen_images": {
+    "message": "Zainstaluj [wtyczkę WordPressa do leniwego ładowania](https://wordpress.org/plugins/search/lazy+load/), która umożliwia odłożenie ładowania obrazów niewyświetlanych na ekranie, albo wybierz motyw, który ma tę funkcję. Warto też skorzystać z [wtyczki AMP](https://wordpress.org/plugins/amp/)."
+  },
+  "stack-packs/packs/wordpress.js | render_blocking_resources": {
+    "message": "Jest wiele wtyczek WordPressa, które mogą pomóc Ci [umieścić w tekście najważniejsze zasoby](https://wordpress.org/plugins/search/critical+css/) lub [opóźnić wczytywanie mniej ważnych zasobów](https://wordpress.org/plugins/search/defer+css+javascript/). Pamiętaj, że optymalizacje dostarczane przez te wtyczki mogą uszkodzić funkcje Twojego motywu lub innych wtyczek i konieczne może być wprowadzenie zmian w kodzie."
+  },
+  "stack-packs/packs/wordpress.js | time_to_first_byte": {
+    "message": "Motywy, wtyczki i specyfikacje serwera są nie bez znaczenia dla jego czasu reakcji. Być może warto znaleźć lepiej zoptymalizowany motyw, starannie wybierając wtyczkę optymalizującą, i przejść na nowszą wersję serwera."
+  },
+  "stack-packs/packs/wordpress.js | total_byte_weight": {
+    "message": "Korzystne może być wyświetlanie fragmentów na liście postów (np. przy użyciu tagu more), zmniejszenie liczby postów wyświetlanych na danej stronie, podział długich postów na kilka stron lub użycie wtyczki umożliwiającej opóźnione wczytywanie komentarzy."
+  },
+  "stack-packs/packs/wordpress.js | unminified_css": {
+    "message": "Kilka [wtyczek WordPressa](https://wordpress.org/plugins/search/minify+css/) może przyśpieszyć działanie strony dzięki konkatenacji, minifikacji i kompresji stylów. Jeśli masz taką możliwość, przeprowadż minifikację, zanim opublikujesz skrypty."
+  },
+  "stack-packs/packs/wordpress.js | unminified_javascript": {
+    "message": "Kilka [wtyczek WordPressa](https://wordpress.org/plugins/search/minify+javascript/) może przyśpieszyć działanie strony dzięki konkatenacji, minifikacji i kompresji skryptów. Jeśli masz taką możliwość, przeprowadź minifikację, zanim opublikujesz skrypty."
+  },
+  "stack-packs/packs/wordpress.js | unused_css_rules": {
+    "message": "Dobrym rozwiązaniem może być ograniczenie liczby [wtyczek WordPressa](https://wordpress.org/plugins/) wczytujących na stronie nieużywany kod CSS albo zmiana tych wtyczek na inne. Aby zidentyfikować wtyczki, które dodają nieistotny kod CSS, uruchom [zasięg kodu](https://developers.google.com/web/updates/2017/04/devtools-release-notes#coverage) w Chrome DevTools. Możesz zidentyfikować taki motyw/wtyczkę w adresie URL arkusza stylów. Szukaj wtyczek, które mają na liście wiele arkuszy stylów z dużą ilością czerwonego koloru w zasięgu kodu. Wtyczka powinna umieszczać arkusz stylów w kolejce tylko wtedy, gdy rzeczywiście jest on używany na stronie."
+  },
+  "stack-packs/packs/wordpress.js | unused_javascript": {
+    "message": "Dobrym rozwiązaniem może być ograniczenie liczby [wtyczek WordPressa](https://wordpress.org/plugins/) wczytujących na stronie nieużywany kod JavaScript albo zmiana tych wtyczek na inne. Aby zidentyfikować wtyczki, które dodają nieistotny kod JS, uruchom [zasięg kodu](https://developers.google.com/web/updates/2017/04/devtools-release-notes#coverage) w Chrome DevTools. Możesz zidentyfikować taki motyw/wtyczkę w adresie URL skryptu. Szukaj wtyczek, które mają na liście wiele skryptów z dużą ilością czerwonego koloru w zasięgu kodu. Wtyczka powinna umieszczać skrypt w kolejce, tylko jeśli rzeczywiście jest on używany na stronie."
+  },
+  "stack-packs/packs/wordpress.js | uses_long_cache_ttl": {
+    "message": "Dowiedz się więcej o [pamięci podręcznej przeglądarki w WordPressie](https://codex.wordpress.org/WordPress_Optimization#Browser_Caching)."
+  },
+  "stack-packs/packs/wordpress.js | uses_optimized_images": {
+    "message": "Pomocna może być [wtyczka WordPressa do optymalizacji obrazów](https://wordpress.org/plugins/search/optimize+images/), która kompresuje obrazy, zachowując ich jakość."
+  },
+  "stack-packs/packs/wordpress.js | uses_responsive_images": {
+    "message": "Przesyłaj obrazy bezpośrednio przez [bibliotekę multimediów](https://codex.wordpress.org/Media_Library_Screen), by mieć pewność, że wymagane rozmiary obrazów są dostępne, a następnie wstawiaj je z biblioteki multimediów lub używaj widżetu obrazów, by zapewnić użycie optymalnych rozmiarów obrazów (także w dynamicznych punktach przerwania). Unikaj używania obrazów `Full Size`, chyba że wymiary są adekwatne do danego zastosowania. [Więcej informacji](https://codex.wordpress.org/Inserting_Images_into_Posts_and_Pages#Image_Size)"
+  },
+  "stack-packs/packs/wordpress.js | uses_text_compression": {
+    "message": "Możesz włączyć kompresję tekstu w konfiguracji swojego serwera WWW."
+  },
+  "stack-packs/packs/wordpress.js | uses_webp_images": {
+    "message": "Możesz skorzystać z [wtyczki](https://wordpress.org/plugins/search/convert+webp/) lub usługi, która będzie automatycznie konwertować przesłane obrazy do optymalnych formatów."
+  }
+}
diff --git a/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/pt-PT.json b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/pt-PT.json
new file mode 100644
index 0000000..f7fe89e
--- /dev/null
+++ b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/pt-PT.json
@@ -0,0 +1,1541 @@
+{
+  "lighthouse-core/audits/accessibility/accesskeys.js | description": {
+    "message": "As chaves de acesso permitem que os utilizadores se concentrem rapidamente numa parte da página. Para uma navegação adequada, cada chave de acesso tem de ser exclusiva. [Saiba mais](https://web.dev/accesskeys/)."
+  },
+  "lighthouse-core/audits/accessibility/accesskeys.js | failureTitle": {
+    "message": "Os valores `[accesskey]` não são exclusivos"
+  },
+  "lighthouse-core/audits/accessibility/accesskeys.js | title": {
+    "message": "Os valores `[accesskey]` são exclusivos"
+  },
+  "lighthouse-core/audits/accessibility/aria-allowed-attr.js | description": {
+    "message": "Cada ARIA `role` suporta um subconjunto específico de atributos `aria-*`. A não correspondência destes invalida os atributos `aria-*`. [Saiba mais](https://web.dev/aria-allowed-attr/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-allowed-attr.js | failureTitle": {
+    "message": "Os atributos `[aria-*]` não correspondem às respetivas funções"
+  },
+  "lighthouse-core/audits/accessibility/aria-allowed-attr.js | title": {
+    "message": "Os atributos `[aria-*]` correspondem às respetivas funções"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-attr.js | description": {
+    "message": "Algumas funções ARIA têm atributos obrigatórios que descrevem o estado do elemento para os leitores de ecrã. [Saiba mais](https://web.dev/aria-required-attr/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-required-attr.js | failureTitle": {
+    "message": "Os `[role]`s não têm todos os atributos `[aria-*]` obrigatórios"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-attr.js | title": {
+    "message": "Os `[role]`s têm todos os atributos `[aria-*]` obrigatórios"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-children.js | description": {
+    "message": "Algumas funções superiores ARIA têm de conter funções secundárias específicas para desempenhar as respetivas funções de acessibilidade previstas. [Saiba mais](https://web.dev/aria-required-children/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-required-children.js | failureTitle": {
+    "message": "Os elementos com `[role]` que exigem `[role]`s secundários específicos estão em falta."
+  },
+  "lighthouse-core/audits/accessibility/aria-required-children.js | title": {
+    "message": "Os elementos com `[role]` que exigem `[role]`s secundários específicos estão presentes"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-parent.js | description": {
+    "message": "Algumas funções secundárias ARIA têm de ser contidas por funções superiores específicas para desempenharem adequadamente as respetivas funções de acessibilidade pretendidas. [Saiba mais](https://web.dev/aria-required-parent/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-required-parent.js | failureTitle": {
+    "message": "Os `[role]`s não são contidos pelo respetivo elemento superior obrigatório"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-parent.js | title": {
+    "message": "Os `[role]`s são contidos pelo respetivo elemento superior obrigatório"
+  },
+  "lighthouse-core/audits/accessibility/aria-roles.js | description": {
+    "message": "As funções ARIA têm de possuir valores válidos para desempenhar as funções de acessibilidade previstas. [Saiba mais](https://web.dev/aria-roles/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-roles.js | failureTitle": {
+    "message": "Os valores `[role]` não são válidos"
+  },
+  "lighthouse-core/audits/accessibility/aria-roles.js | title": {
+    "message": "Os valores `[role]` são válidos"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr-value.js | description": {
+    "message": "As tecnologias de assistência, que incluem os leitores de ecrã, não conseguem interpretar atributos ARIA com valores inválidos. [Saiba mais](https://web.dev/aria-valid-attr-value/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr-value.js | failureTitle": {
+    "message": "Os atributos `[aria-*]` não têm valores válidos"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr-value.js | title": {
+    "message": "Os atributos `[aria-*]` têm valores válidos"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr.js | description": {
+    "message": "As tecnologias de assistência, que incluem os leitores de ecrã, não conseguem interpretar atributos ARIA com nomes inválidos. [Saiba mais](https://web.dev/aria-valid-attr/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr.js | failureTitle": {
+    "message": "Os atributos `[aria-*]` não são válidos ou têm erros ortográficos"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr.js | title": {
+    "message": "Os atributos `[aria-*]` são válidos e não têm erros ortográficos"
+  },
+  "lighthouse-core/audits/accessibility/audio-caption.js | description": {
+    "message": "As legendas tornam os elementos áudio utilizáveis para os utilizadores surdos ou com problemas de audição, ao facultar informações essenciais, como quem está a falar, o que está a dizer e outras informações não verbais. [Saiba mais](https://web.dev/audio-caption/)."
+  },
+  "lighthouse-core/audits/accessibility/audio-caption.js | failureTitle": {
+    "message": "Os elementos `<audio>` têm um elemento `<track>` em falta com `[kind=\"captions\"]`."
+  },
+  "lighthouse-core/audits/accessibility/audio-caption.js | title": {
+    "message": "Os elementos `<audio>` contêm um elemento `<track>` com `[kind=\"captions\"]`"
+  },
+  "lighthouse-core/audits/accessibility/axe-audit.js | failingElementsHeader": {
+    "message": "Elementos reprovados"
+  },
+  "lighthouse-core/audits/accessibility/button-name.js | description": {
+    "message": "Quando um botão não tem um nome acessível, os leitores de ecrã anunciam-no como \"botão\", tornando-o inutilizável para os utilizadores que dependem de leitores de ecrã. [Saiba mais](https://web.dev/button-name/)."
+  },
+  "lighthouse-core/audits/accessibility/button-name.js | failureTitle": {
+    "message": "Os botões não têm um nome acessível"
+  },
+  "lighthouse-core/audits/accessibility/button-name.js | title": {
+    "message": "Os botões têm um nome acessível"
+  },
+  "lighthouse-core/audits/accessibility/bypass.js | description": {
+    "message": "Adicionar formas de ignorar conteúdo repetitivo permite que os utilizadores com teclado naveguem na página de forma mais eficiente. [Saiba mais](https://web.dev/bypass/)."
+  },
+  "lighthouse-core/audits/accessibility/bypass.js | failureTitle": {
+    "message": "A página não contém um título, um link para ignorar ou uma região de ponto de referência"
+  },
+  "lighthouse-core/audits/accessibility/bypass.js | title": {
+    "message": "A página contém um título, um link para ignorar ou uma região de ponto de referência"
+  },
+  "lighthouse-core/audits/accessibility/color-contrast.js | description": {
+    "message": "O texto de baixo contraste é difícil ou impossível de ler para muitos utilizadores. [Saiba mais](https://web.dev/color-contrast/)."
+  },
+  "lighthouse-core/audits/accessibility/color-contrast.js | failureTitle": {
+    "message": "As cores de primeiro e de segundo plano não têm uma relação de contraste suficiente"
+  },
+  "lighthouse-core/audits/accessibility/color-contrast.js | title": {
+    "message": "As cores de segundo plano e de primeiro plano têm uma relação de contraste suficiente"
+  },
+  "lighthouse-core/audits/accessibility/definition-list.js | description": {
+    "message": "Quando as listas de definição não estão devidamente marcadas, os leitores de ecrã podem produzir um resultado confuso ou impreciso. [Saiba mais](https://web.dev/definition-list/)."
+  },
+  "lighthouse-core/audits/accessibility/definition-list.js | failureTitle": {
+    "message": "Os `<dl>`s não contêm grupos de `<dt>` e `<dd>` apenas devidamente ordenados, nem elementos `<script>` ou `<template>`."
+  },
+  "lighthouse-core/audits/accessibility/definition-list.js | title": {
+    "message": "Os `<dl>` contêm grupos de `<dt>` e `<dd>` bem como elementos `<script>` ou `<template>`."
+  },
+  "lighthouse-core/audits/accessibility/dlitem.js | description": {
+    "message": "Os itens de lista de definição (`<dt>` e `<dd>`) têm de estar unidos num elemento `<dl>` superior de modo a garantir que os leitores de ecrã os possam anunciar adequadamente. [Saiba mais](https://web.dev/dlitem/)."
+  },
+  "lighthouse-core/audits/accessibility/dlitem.js | failureTitle": {
+    "message": "Os itens de lista de definição não estão unidos em elementos `<dl>`"
+  },
+  "lighthouse-core/audits/accessibility/dlitem.js | title": {
+    "message": "Os itens de lista de definição estão unidos em elementos `<dl>`"
+  },
+  "lighthouse-core/audits/accessibility/document-title.js | description": {
+    "message": "O título proporciona aos utilizadores de leitores de ecrã uma vista geral da página, sendo que os utilizadores de motores de pesquisa dependem dele para determinar se uma página é relevante para a respetiva pesquisa. [Saiba mais](https://web.dev/document-title/)."
+  },
+  "lighthouse-core/audits/accessibility/document-title.js | failureTitle": {
+    "message": "O documento não tem um elemento `<title>`"
+  },
+  "lighthouse-core/audits/accessibility/document-title.js | title": {
+    "message": "O documento tem um elemento `<title>`"
+  },
+  "lighthouse-core/audits/accessibility/duplicate-id.js | description": {
+    "message": "O valor de um atributo id tem de ser exclusivo para evitar que outras instâncias sejam ignoradas pelas tecnologias de assistência. [Saiba mais](https://web.dev/duplicate-id/)."
+  },
+  "lighthouse-core/audits/accessibility/duplicate-id.js | failureTitle": {
+    "message": "Os atributos `[id]` na página não são exclusivos"
+  },
+  "lighthouse-core/audits/accessibility/duplicate-id.js | title": {
+    "message": "Os atributos `[id]` na página são exclusivos"
+  },
+  "lighthouse-core/audits/accessibility/frame-title.js | description": {
+    "message": "Os utilizadores com leitores de ecrã dependem dos títulos de frames para descrever o conteúdo dos frames. [Saiba mais](https://web.dev/frame-title/)."
+  },
+  "lighthouse-core/audits/accessibility/frame-title.js | failureTitle": {
+    "message": "Os elementos `<frame>` ou `<iframe>` não têm um título"
+  },
+  "lighthouse-core/audits/accessibility/frame-title.js | title": {
+    "message": "Os elementos `<frame>` ou `<iframe>` têm um título"
+  },
+  "lighthouse-core/audits/accessibility/html-has-lang.js | description": {
+    "message": "Se uma página não especificar um atributo lang, um leitor de ecrã parte do princípio de que a página está no idioma predefinido que o utilizador escolheu quando configurou o leitor de ecrã. Se a página não estiver realmente no idioma predefinido, o leitor de ecrã pode não anunciar corretamente o texto da página. [Saiba mais](https://web.dev/html-has-lang/)."
+  },
+  "lighthouse-core/audits/accessibility/html-has-lang.js | failureTitle": {
+    "message": "O elemento `<html>` não tem um atributo `[lang]`"
+  },
+  "lighthouse-core/audits/accessibility/html-has-lang.js | title": {
+    "message": "O elemento `<html>` tem um atributo `[lang]`"
+  },
+  "lighthouse-core/audits/accessibility/html-lang-valid.js | description": {
+    "message": "Especificar um idioma [BCP 47](https://www.w3.org/International/questions/qa-choosing-language-tags#question) válido ajuda os leitores de ecrã a anunciar texto adequadamente. [Saiba mais](https://web.dev/html-lang-valid/)."
+  },
+  "lighthouse-core/audits/accessibility/html-lang-valid.js | failureTitle": {
+    "message": "O elemento `<html>` tem um valor válido para o respetivo atributo `[lang]`."
+  },
+  "lighthouse-core/audits/accessibility/html-lang-valid.js | title": {
+    "message": "O elemento `<html>` tem um valor válido para o respetivo atributo `[lang]`"
+  },
+  "lighthouse-core/audits/accessibility/image-alt.js | description": {
+    "message": "Os elementos informativos devem procurar incluir texto curto, descritivo e alternativo. Os elementos decorativos podem ser ignorados com um atributo alternativo vazio. [Saiba mais](https://web.dev/image-alt/)."
+  },
+  "lighthouse-core/audits/accessibility/image-alt.js | failureTitle": {
+    "message": "Os elementos de imagem não têm atributos `[alt]`"
+  },
+  "lighthouse-core/audits/accessibility/image-alt.js | title": {
+    "message": "Os elementos de imagem têm atributos `[alt]`"
+  },
+  "lighthouse-core/audits/accessibility/input-image-alt.js | description": {
+    "message": "Quando uma imagem está a ser utilizada como um botão `<input>`, facultar texto alternativo pode ajudar os utilizadores com leitores de ecrã a compreender a finalidade do botão. [Saiba mais](https://web.dev/input-image-alt/)."
+  },
+  "lighthouse-core/audits/accessibility/input-image-alt.js | failureTitle": {
+    "message": "Os elementos `<input type=\"image\">` não têm texto `[alt]`"
+  },
+  "lighthouse-core/audits/accessibility/input-image-alt.js | title": {
+    "message": "Os elementos `<input type=\"image\">` têm texto de `[alt]`"
+  },
+  "lighthouse-core/audits/accessibility/label.js | description": {
+    "message": "As etiquetas garantem que os controlos de formulários são anunciados adequadamente pelas tecnologias de assistência, que incluem os leitores de ecrã. [Saiba mais](https://web.dev/label/)."
+  },
+  "lighthouse-core/audits/accessibility/label.js | failureTitle": {
+    "message": "Os elementos de formulário não têm etiquetas associadas"
+  },
+  "lighthouse-core/audits/accessibility/label.js | title": {
+    "message": "Os elementos de formulário têm etiquetas associadas"
+  },
+  "lighthouse-core/audits/accessibility/layout-table.js | description": {
+    "message": "Uma tabela utilizada para esquemas não deve incluir elementos de dados, como os elementos th ou de legenda ou o atributo resumo, porque esta situação pode criar uma experiência confusa para os utilizadores com leitores de ecrã. [Saiba mais](https://web.dev/layout-table/)."
+  },
+  "lighthouse-core/audits/accessibility/layout-table.js | failureTitle": {
+    "message": "Os elementos `<table>` de apresentação não evitam a utilização de `<th>`, `<caption>` nem do atributo `[summary]`."
+  },
+  "lighthouse-core/audits/accessibility/layout-table.js | title": {
+    "message": "Os elementos `<table>` de apresentação evitam a utilização de `<th>`, `<caption>` ou do atributo `[summary]`."
+  },
+  "lighthouse-core/audits/accessibility/link-name.js | description": {
+    "message": "O texto de link (e texto alternativo para imagens, quando utilizado como link) que seja percetível, exclusivo e ajustável melhora a experiência de navegação dos utilizadores de leitores de ecrã. [Saiba mais](https://web.dev/link-name/)."
+  },
+  "lighthouse-core/audits/accessibility/link-name.js | failureTitle": {
+    "message": "Os links não têm um nome percetível"
+  },
+  "lighthouse-core/audits/accessibility/link-name.js | title": {
+    "message": "Os links têm um nome percetível"
+  },
+  "lighthouse-core/audits/accessibility/list.js | description": {
+    "message": "Os leitores de ecrã têm uma forma específica de anunciar listas. Garantir uma estrutura de listas adequada é benéfico para o resultado do leitor de ecrã. [Saiba mais](https://web.dev/list/)."
+  },
+  "lighthouse-core/audits/accessibility/list.js | failureTitle": {
+    "message": "As listas não contêm apenas elementos `<li>` e elementos de suporte de script (`<script>` e `<template>`)."
+  },
+  "lighthouse-core/audits/accessibility/list.js | title": {
+    "message": "As listas contêm apenas elementos `<li>` e elementos de suporte de script (`<script>` e `<template>`)."
+  },
+  "lighthouse-core/audits/accessibility/listitem.js | description": {
+    "message": "Os leitores de ecrã necessitam que os itens de lista (`<li>`) sejam contidos num `<ul>` ou `<ol>` superior para serem adequadamente anunciados. [Saiba mais](https://web.dev/listitem/)."
+  },
+  "lighthouse-core/audits/accessibility/listitem.js | failureTitle": {
+    "message": "Os itens de lista (`<li>`) não estão incluídos nos elementos superiores `<ul>` ou `<ol>`."
+  },
+  "lighthouse-core/audits/accessibility/listitem.js | title": {
+    "message": "Os itens de lista (`<li>`) estão incluídos nos elementos superiores `<ul>` ou `<ol>`"
+  },
+  "lighthouse-core/audits/accessibility/meta-refresh.js | description": {
+    "message": "Os utilizadores não esperam que uma página se atualize automaticamente e, se tal acontecer, vai desviar o foco para a parte superior da página. Esta situação pode criar uma experiência frustrante ou confusa. [Saiba mais](https://web.dev/meta-refresh/)."
+  },
+  "lighthouse-core/audits/accessibility/meta-refresh.js | failureTitle": {
+    "message": "O documento utiliza `<meta http-equiv=\"refresh\">`"
+  },
+  "lighthouse-core/audits/accessibility/meta-refresh.js | title": {
+    "message": "O documento não utiliza `<meta http-equiv=\"refresh\">`"
+  },
+  "lighthouse-core/audits/accessibility/meta-viewport.js | description": {
+    "message": "Desativar o zoom é problemático para os utilizadores com visão reduzida que dependem da ampliação do ecrã para ver adequadamente o conteúdo de uma página Web. [Saiba mais](https://web.dev/meta-viewport/)."
+  },
+  "lighthouse-core/audits/accessibility/meta-viewport.js | failureTitle": {
+    "message": "O `[user-scalable=\"no\"]` é utilizado no elemento `<meta name=\"viewport\">` ou o atributo `[maximum-scale]` é inferior a 5."
+  },
+  "lighthouse-core/audits/accessibility/meta-viewport.js | title": {
+    "message": "O `[user-scalable=\"no\"]` não é utilizado no elemento `<meta name=\"viewport\">` e o atributo `[maximum-scale]` não é inferior a 5."
+  },
+  "lighthouse-core/audits/accessibility/object-alt.js | description": {
+    "message": "Os leitores de ecrã não conseguem traduzir conteúdo que não seja de texto. Adicionar texto alternativo a elementos `<object>` ajuda os leitores de ecrã a transmitir significado aos utilizadores. [Saiba mais](https://web.dev/object-alt/)."
+  },
+  "lighthouse-core/audits/accessibility/object-alt.js | failureTitle": {
+    "message": "Os elementos `<object>` não têm texto `[alt]`"
+  },
+  "lighthouse-core/audits/accessibility/object-alt.js | title": {
+    "message": "Os elementos `<object>` têm texto de `[alt]`"
+  },
+  "lighthouse-core/audits/accessibility/tabindex.js | description": {
+    "message": "Um valor superior a 0 implica uma ordenação de navegação explícita. Embora seja tecnicamente válida, esta situação costuma criar experiências frustrantes para os utilizadores que dependem de tecnologias de assistência. [Saiba mais](https://web.dev/tabindex/)."
+  },
+  "lighthouse-core/audits/accessibility/tabindex.js | failureTitle": {
+    "message": "Alguns elementos têm um valor `[tabindex]` superior a 0"
+  },
+  "lighthouse-core/audits/accessibility/tabindex.js | title": {
+    "message": "Nenhum elemento tem um valor `[tabindex]` superior a 0"
+  },
+  "lighthouse-core/audits/accessibility/td-headers-attr.js | description": {
+    "message": "Os leitores de ecrã têm funcionalidades para facilitar a navegação em tabelas. Garantir que as células `<td>` que utilizam o atributo `[headers]` apenas referenciam outras células na mesma tabela pode melhorar a experiência para os utilizadores com leitores de ecrã. [Saiba mais](https://web.dev/td-headers-attr/)."
+  },
+  "lighthouse-core/audits/accessibility/td-headers-attr.js | failureTitle": {
+    "message": "As células num elemento `<table>` que utilizam o atributo `[headers]` referem-se a outras células dessa mesma tabela."
+  },
+  "lighthouse-core/audits/accessibility/td-headers-attr.js | title": {
+    "message": "As células num elemento `<table>` que utilizam o atributo `[headers]` apenas referenciam outras células dessa mesma tabela."
+  },
+  "lighthouse-core/audits/accessibility/th-has-data-cells.js | description": {
+    "message": "Os leitores de ecrã têm funcionalidades para facilitar a navegação em tabelas. Garantir que os cabeçalhos de tabelas referenciam sempre algum conjunto de células pode melhorar a experiência dos utilizadores com leitores de ecrã. [Saiba mais](https://web.dev/th-has-data-cells/)."
+  },
+  "lighthouse-core/audits/accessibility/th-has-data-cells.js | failureTitle": {
+    "message": "Os elementos `<th>` e os elementos com `[role=\"columnheader\"/\"rowheader\"]` não têm as células de dados que descrevem."
+  },
+  "lighthouse-core/audits/accessibility/th-has-data-cells.js | title": {
+    "message": "Os elementos `<th>` e os elementos com `[role=\"columnheader\"/\"rowheader\"]` têm as células de dados que descrevem."
+  },
+  "lighthouse-core/audits/accessibility/valid-lang.js | description": {
+    "message": "Especificar um idioma [BCP 47](https://www.w3.org/International/questions/qa-choosing-language-tags#question) válido para elementos ajuda a garantir que o texto é pronunciado corretamente por um leitor de ecrã. [Saiba mais](https://web.dev/valid-lang/)."
+  },
+  "lighthouse-core/audits/accessibility/valid-lang.js | failureTitle": {
+    "message": "Os atributos `[lang]` não têm um valor válido"
+  },
+  "lighthouse-core/audits/accessibility/valid-lang.js | title": {
+    "message": "Os atributos `[lang]` têm um valor válido"
+  },
+  "lighthouse-core/audits/accessibility/video-caption.js | description": {
+    "message": "Quando um vídeo oferece uma legenda, é mais fácil para os utilizadores surdos e com problemas de audição aceder às informações. [Saiba mais](https://web.dev/video-caption/)."
+  },
+  "lighthouse-core/audits/accessibility/video-caption.js | failureTitle": {
+    "message": "Os elementos `<video>` não contêm um elemento `<track>` com `[kind=\"captions\"]`."
+  },
+  "lighthouse-core/audits/accessibility/video-caption.js | title": {
+    "message": "Os elementos `<video>` contêm um elemento `<track>` com `[kind=\"captions\"]`"
+  },
+  "lighthouse-core/audits/accessibility/video-description.js | description": {
+    "message": "As descrições de áudio proporcionam informações relevantes que os diálogos não conseguem proporcionar nos vídeos, como expressões faciais e cenas. [Saiba mais](https://web.dev/video-description/)."
+  },
+  "lighthouse-core/audits/accessibility/video-description.js | failureTitle": {
+    "message": "Os elementos `<video>` não contêm um elemento `<track>` com `[kind=\"description\"]`."
+  },
+  "lighthouse-core/audits/accessibility/video-description.js | title": {
+    "message": "Os elementos `<video>` contêm um elemento `<track>` com `[kind=\"description\"]`"
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | description": {
+    "message": "Para um aspeto ideal no iOS quando os utilizadores adicionam uma progressive web app ao ecrã principal, defina um `apple-touch-icon`. Deve apontar para um PNG quadrado não transparente de 192 px (ou 180 px). [Saiba mais](https://developers.google.com/web/fundamentals/design-and-ux/browser-customization/)."
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | failureTitle": {
+    "message": "Não fornece um `apple-touch-icon` válido"
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | precomposedWarning": {
+    "message": "O `apple-touch-icon-precomposed` está desatualizado; recomendamos o `apple-touch-icon`."
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | title": {
+    "message": "Fornece um `apple-touch-icon` válido"
+  },
+  "lighthouse-core/audits/bootup-time.js | chromeExtensionsWarning": {
+    "message": "As extensões do Chrome afetam negativamente o desempenho de carregamento desta página. Experimente efetuar uma auditoria à página no modo de navegação anónima ou com um perfil do Chrome sem extensões."
+  },
+  "lighthouse-core/audits/bootup-time.js | columnScriptEval": {
+    "message": "Avaliação do script"
+  },
+  "lighthouse-core/audits/bootup-time.js | columnScriptParse": {
+    "message": "Análise do script"
+  },
+  "lighthouse-core/audits/bootup-time.js | columnTotal": {
+    "message": "Tempo total da CPU"
+  },
+  "lighthouse-core/audits/bootup-time.js | description": {
+    "message": "Considere reduzir o tempo despendido a analisar, compilar e executar JS. Poderá descobrir que é útil fornecer payloads de JS mais pequenos. [Saiba mais](https://developers.google.com/web/tools/lighthouse/audits/bootup)."
+  },
+  "lighthouse-core/audits/bootup-time.js | failureTitle": {
+    "message": "Reduza o tempo de execução de JavaScript"
+  },
+  "lighthouse-core/audits/bootup-time.js | title": {
+    "message": "Tempo de execução de JavaScript"
+  },
+  "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | description": {
+    "message": "Os GIFs grandes são ineficientes para publicação de conteúdo animado. Para poupar bytes de rede, considere utilizar vídeos MPEG4/WebM para animações e ficheiros PNG/WebP para imagens estáticas em vez de GIFs. [Saiba mais](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/replace-animated-gifs-with-video/)"
+  },
+  "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | title": {
+    "message": "Utilize formatos de vídeo para conteúdo animado"
+  },
+  "lighthouse-core/audits/byte-efficiency/offscreen-images.js | description": {
+    "message": "Considere utilizar imagens de carregamento lento não visíveis e ocultas após a conclusão do carregamento de todos os recursos críticos, para reduzir o tempo até à interação. [Saiba mais](https://developers.google.com/web/tools/lighthouse/audits/offscreen-images)."
+  },
+  "lighthouse-core/audits/byte-efficiency/offscreen-images.js | title": {
+    "message": "Adie as imagens não visíveis"
+  },
+  "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | description": {
+    "message": "Os recursos estão a bloquear o primeiro preenchimento da página. Considere publicar JS/CSS críticos inline e adiar todos os JS/estilos não críticos. [Saiba mais](https://developers.google.com/web/tools/lighthouse/audits/blocking-resources)."
+  },
+  "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | title": {
+    "message": "Elimine recursos que bloqueiam o processamento"
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | description": {
+    "message": "Os grandes payloads de rede têm custos reais para os utilizadores e estão fortemente correlacionados com tempos de carregamento demorados. [Saiba mais](https://developers.google.com/web/tools/lighthouse/audits/network-payloads)."
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | displayValue": {
+    "message": "O tamanho total era {totalBytes, number, bytes} KB."
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | failureTitle": {
+    "message": "Evite enormes payloads de rede"
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | title": {
+    "message": "Evita enormes payloads de rede"
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-css.js | description": {
+    "message": "Reduzir os ficheiros CSS pode reduzir os tamanhos dos payloads de rede. [Saiba mais](https://developers.google.com/web/tools/lighthouse/audits/minify-css)."
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-css.js | title": {
+    "message": "Reduza o CSS"
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | description": {
+    "message": "Reduzir os ficheiros JavaScript pode reduzir os tamanhos dos payloads e o tempo de análise de scripts. [Saiba mais](https://developers.google.com/speed/docs/insights/MinifyResources)."
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | title": {
+    "message": "Reduza o JavaScript"
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | description": {
+    "message": "Remova as regras vazias das folhas de estilo e adie o carregamento de CSS não utilizado para conteúdo na parte superior para reduzir a quantidade de bytes desnecessários consumidos pela atividade da rede. [Saiba mais](https://developers.google.com/web/tools/lighthouse/audits/unused-css)."
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | title": {
+    "message": "Remova o CSS não utilizado"
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-javascript.js | description": {
+    "message": "Remova o JavaScript não utilizado para reduzir os bytes consumidos pela atividade da rede."
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-javascript.js | title": {
+    "message": "Remova o JavaScript não utilizado"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | description": {
+    "message": "Uma longa duração total da cache pode acelerar as visitas repetidas à sua página. [Saiba mais](https://developers.google.com/web/tools/lighthouse/audits/cache-policy)."
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 recurso encontrado}other{# recursos encontrados}}"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | failureTitle": {
+    "message": "Publique recursos estáticos com uma política de cache eficiente"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | title": {
+    "message": "Utiliza uma política de cache eficiente em recursos estáticos"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | description": {
+    "message": "As imagens otimizadas são carregadas mais rapidamente e consomem menos dados móveis. [Saiba mais](https://developers.google.com/web/tools/lighthouse/audits/optimize-images)."
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | title": {
+    "message": "Codifique as imagens de forma eficiente"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | description": {
+    "message": "Publique imagens com um tamanho adequado para poupar dados móveis e melhorar o tempo de carregamento. [Saiba mais](https://developers.google.com/web/tools/lighthouse/audits/oversized-images)."
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | title": {
+    "message": "Dimensione adequadamente as imagens"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | description": {
+    "message": "Os recursos baseados em texto devem ser publicados com compressão (gzip, Deflate ou Brotli) para reduzir o total de bytes de rede. [Saiba mais](https://developers.google.com/web/tools/lighthouse/audits/text-compression)."
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | title": {
+    "message": "Ative a compressão de texto"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | description": {
+    "message": "Muitas vezes, os formatos de imagem como JPEG 2000, JPEG XR e WebP proporcionam uma melhor compressão do que os formatos PNG ou JPEG, o que se traduz em transferências mais rápidas e num menor consumo de dados. [Saiba mais](https://developers.google.com/web/tools/lighthouse/audits/webp)."
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | title": {
+    "message": "Publique imagens em formatos de última geração"
+  },
+  "lighthouse-core/audits/content-width.js | description": {
+    "message": "Se a largura do conteúdo da sua aplicação não corresponder à largura da área visível, a sua aplicação poderá não estar otimizada para ecrãs de dispositivos móveis. [Saiba mais](https://developers.google.com/web/tools/lighthouse/audits/content-sized-correctly-for-viewport)."
+  },
+  "lighthouse-core/audits/content-width.js | explanation": {
+    "message": "O tamanho da área visível de {innerWidth} px não corresponde ao tamanho da janela de {outerWidth} px."
+  },
+  "lighthouse-core/audits/content-width.js | failureTitle": {
+    "message": "O conteúdo não é dimensionado corretamente para a área visível"
+  },
+  "lighthouse-core/audits/content-width.js | title": {
+    "message": "O conteúdo é dimensionado corretamente para a área visível"
+  },
+  "lighthouse-core/audits/critical-request-chains.js | description": {
+    "message": "As Cadeias de pedidos críticos abaixo apresentam os recursos que são carregados com uma prioridade elevada. Considere reduzir o tamanho das cadeias, reduzir o tamanho de transferência dos recursos ou adiar a transferência de recursos desnecessários para melhorar o carregamento de página. [Saiba mais](https://developers.google.com/web/tools/lighthouse/audits/critical-request-chains)."
+  },
+  "lighthouse-core/audits/critical-request-chains.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 cadeia encontrada}other{# cadeias encontradas}}"
+  },
+  "lighthouse-core/audits/critical-request-chains.js | title": {
+    "message": "Reduza a profundidade de pedidos críticos"
+  },
+  "lighthouse-core/audits/deprecations.js | columnDeprecate": {
+    "message": "Descontinuação/aviso"
+  },
+  "lighthouse-core/audits/deprecations.js | columnLine": {
+    "message": "Linha"
+  },
+  "lighthouse-core/audits/deprecations.js | description": {
+    "message": "As APIs descontinuadas serão eventualmente removidas do navegador. [Saiba mais](https://web.dev/deprecations)."
+  },
+  "lighthouse-core/audits/deprecations.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 aviso encontrado}other{# avisos encontrados}}"
+  },
+  "lighthouse-core/audits/deprecations.js | failureTitle": {
+    "message": "Utiliza APIs descontinuadas"
+  },
+  "lighthouse-core/audits/deprecations.js | title": {
+    "message": "Evita APIs descontinuadas"
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | description": {
+    "message": "A cache da aplicação foi descontinuada. [Saiba mais](https://web.dev/appcache-manifest)."
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | displayValue": {
+    "message": "\"{AppCacheManifest}\" encontrado"
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | failureTitle": {
+    "message": "Utiliza a cache da aplicação"
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | title": {
+    "message": "Evita a cache da aplicação"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | description": {
+    "message": "Especificar um doctype impede que o navegador mude para o modo quirks. [Saiba mais](https://web.dev/doctype)."
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationBadDoctype": {
+    "message": "O nome do doctype deve ser a string `html` minúscula"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationNoDoctype": {
+    "message": "O documento deve conter um doctype"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationPublicId": {
+    "message": "Era esperado que o PublicId fosse uma string vazia"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationSystemId": {
+    "message": "Era esperado que o SystemId fosse uma string vazia."
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | failureTitle": {
+    "message": "A página não possui o doctype HTML, o que faz com que o modo quirks seja acionado"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | title": {
+    "message": "A página possui o doctype HTML"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | columnElement": {
+    "message": "Elemento"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | columnStatistic": {
+    "message": "Estatística"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | columnValue": {
+    "message": "Valor"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | description": {
+    "message": "Os engenheiros de navegadores recomendam que as páginas contenham menos de ~1500 elementos DOM. O ideal é uma árvore com uma profundidade < 32 elementos e menos de 60 elementos superiores/secundários. Um DOM grande pode aumentar a utilização da memória, gerar [cálculos de estilo](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations) mais demorados e produzir [ajustes de esquema](https://developers.google.com/speed/articles/reflow) dispendiosos. [Saiba mais](https://web.dev/dom-size)."
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 elemento}other{# elementos}}"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | failureTitle": {
+    "message": "Evite um tamanho excessivo do DOM"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | statisticDOMDepth": {
+    "message": "Profundidade máxima do DOM"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | statisticDOMElements": {
+    "message": "Total de elementos DOM"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | statisticDOMWidth": {
+    "message": "Máximo de elementos secundários"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | title": {
+    "message": "Evita um tamanho excessivo do DOM"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | columnRel": {
+    "message": "Rel"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | columnTarget": {
+    "message": "Alvo"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | description": {
+    "message": "Adicione `rel=\"noopener\"` ou `rel=\"noreferrer\"` a quaisquer links externos para melhorar o desempenho e prevenir vulnerabilidades de segurança. [Saiba mais](https://web.dev/external-anchors-use-rel-noopener)."
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | failureTitle": {
+    "message": "Os links para destinos de origem cruzada não são seguros"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | title": {
+    "message": "Os links para destinos de origem cruzada são seguros"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | warning": {
+    "message": "Não é possível determinar o destino da âncora ({anchorHTML}). Se não for utilizado como uma hiperligação, considere remover o target=_blank."
+  },
+  "lighthouse-core/audits/dobetterweb/geolocation-on-start.js | description": {
+    "message": "Os utilizadores desconfiam ou ficam confusos perante os sites que solicitam a sua localização sem contexto. Em vez disso, considere associar o pedido a uma ação do utilizador. [Saiba mais](https://web.dev/geolocation-on-start)."
+  },
+  "lighthouse-core/audits/dobetterweb/geolocation-on-start.js | failureTitle": {
+    "message": "Solicita a autorização de geolocalização no carregamento da página"
+  },
+  "lighthouse-core/audits/dobetterweb/geolocation-on-start.js | title": {
+    "message": "Evita a solicitação da autorização de geolocalização no carregamento da página"
+  },
+  "lighthouse-core/audits/dobetterweb/js-libraries.js | columnVersion": {
+    "message": "Versão"
+  },
+  "lighthouse-core/audits/dobetterweb/js-libraries.js | description": {
+    "message": "Todas as bibliotecas de interface JavaScript detetadas na página. [Saiba mais](https://web.dev/js-libraries)."
+  },
+  "lighthouse-core/audits/dobetterweb/js-libraries.js | title": {
+    "message": "Bibliotecas JavaScript detetadas"
+  },
+  "lighthouse-core/audits/dobetterweb/no-document-write.js | description": {
+    "message": "No caso de utilizadores com ligações lentas, os scripts externos inseridos dinamicamente através de `document.write()` podem atrasar o carregamento da página em dezenas de segundos. [Saiba mais](https://web.dev/no-document-write)."
+  },
+  "lighthouse-core/audits/dobetterweb/no-document-write.js | failureTitle": {
+    "message": "Utiliza `document.write()`"
+  },
+  "lighthouse-core/audits/dobetterweb/no-document-write.js | title": {
+    "message": "Evita `document.write()`"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | columnSeverity": {
+    "message": "Gravidade mais alta"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | columnVersion": {
+    "message": "Versão da biblioteca"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | columnVuln": {
+    "message": "Contagem de vulnerabilidades"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | description": {
+    "message": "Alguns scripts de terceiros podem conter vulnerabilidades de segurança conhecidas que são facilmente identificadas e exploradas pelos atacantes. [Saiba mais](https://web.dev/no-vulnerable-libraries)."
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 vulnerabilidade detetada}other{# vulnerabilidades detetadas}}"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | failureTitle": {
+    "message": "Inclui bibliotecas de interface JavaScript com vulnerabilidades de segurança conhecidas"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | rowSeverityHigh": {
+    "message": "Alto"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | rowSeverityLow": {
+    "message": "Baixo"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | rowSeverityMedium": {
+    "message": "Médio"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | title": {
+    "message": "Evita bibliotecas de interface JavaScript com vulnerabilidades de segurança conhecidas"
+  },
+  "lighthouse-core/audits/dobetterweb/notification-on-start.js | description": {
+    "message": "Os utilizadores desconfiam ou ficam confusos perante os sites que solicitam o envio de notificações sem contexto. Em vez disso, considere associar o pedido aos gestos do utilizador. [Saiba mais](https://web.dev/notification-on-start)."
+  },
+  "lighthouse-core/audits/dobetterweb/notification-on-start.js | failureTitle": {
+    "message": "Solicita a autorização de notificações no carregamento da página"
+  },
+  "lighthouse-core/audits/dobetterweb/notification-on-start.js | title": {
+    "message": "Evita a solicitação da autorização de notificações no carregamento da página"
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | columnFailingElem": {
+    "message": "Elementos reprovados"
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | description": {
+    "message": "Impedir a colagem de palavras-passe compromete o cumprimento de uma política de segurança adequada. [Saiba mais](https://web.dev/password-inputs-can-be-pasted-into)."
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | failureTitle": {
+    "message": "Impede que os utilizadores colem conteúdo nos campos de palavra-passe"
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | title": {
+    "message": "Permite que os utilizadores colem nos campos de palavra-passe"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | columnProtocol": {
+    "message": "Protocolo"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | description": {
+    "message": "O HTTP/2 oferece muitas vantagens em relação ao HTTP/1.1, incluindo cabeçalhos binários, multiplexação e push de servidor. [Saiba mais](https://web.dev/uses-http2)."
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 pedido não publicado através de HTTP/2}other{# pedidos não publicados através de HTTP/2}}"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | failureTitle": {
+    "message": "Não utiliza o HTTP/2 para todos os respetivos recursos"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | title": {
+    "message": "Utiliza HTTP/2 para os seus próprios recursos"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-passive-event-listeners.js | description": {
+    "message": "Considere marcar os seus event listeners de toque e roda como `passive` para melhorar o desempenho de deslocamento da sua página. [Saiba mais](https://web.dev/uses-passive-event-listeners)."
+  },
+  "lighthouse-core/audits/dobetterweb/uses-passive-event-listeners.js | failureTitle": {
+    "message": "Não utiliza ouvintes passivos para melhorar o desempenho do deslocamento"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-passive-event-listeners.js | title": {
+    "message": "Utiliza ouvintes passivos para melhorar o desempenho do deslocamento"
+  },
+  "lighthouse-core/audits/errors-in-console.js | columnDesc": {
+    "message": "Descrição"
+  },
+  "lighthouse-core/audits/errors-in-console.js | description": {
+    "message": "Os erros registados na consola indicam problemas não resolvidos. Estes podem ser provenientes de falhas de pedidos de rede e outras questões do navegador. [Saiba mais](https://web.dev/errors-in-console)."
+  },
+  "lighthouse-core/audits/errors-in-console.js | failureTitle": {
+    "message": "Os erros do navegador foram registados na consola"
+  },
+  "lighthouse-core/audits/errors-in-console.js | title": {
+    "message": "Nenhum erro do navegador registado na consola"
+  },
+  "lighthouse-core/audits/font-display.js | description": {
+    "message": "Tire partido da funcionalidade CSS de apresentação de tipos de letra para garantir que o texto é visível para o utilizador enquanto os tipos de letra para Websites são carregados. [Saiba mais](https://developers.google.com/web/updates/2016/02/font-display)."
+  },
+  "lighthouse-core/audits/font-display.js | failureTitle": {
+    "message": "Garanta que o texto permanece visível durante o carregamento de tipos de letra para Websites"
+  },
+  "lighthouse-core/audits/font-display.js | title": {
+    "message": "Todo o texto permanece visível durante os carregamentos de tipos de letra para Websites"
+  },
+  "lighthouse-core/audits/font-display.js | undeclaredFontURLWarning": {
+    "message": "O Lighthouse não conseguiu verificar automaticamente o valor de apresentação de tipos de letra para o seguinte URL: {fontURL}."
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | columnActual": {
+    "message": "Proporção (atual)"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | columnDisplayed": {
+    "message": "Formato (apresentado)"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | description": {
+    "message": "As dimensões de apresentação das imagens devem corresponder à proporção natural. [Saiba mais](https://web.dev/image-aspect-ratio)."
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | failureTitle": {
+    "message": "Apresenta imagens com uma proporção incorreta"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | title": {
+    "message": "Apresenta imagens com uma proporção correta"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | warningCompute": {
+    "message": "Informações inválidas de dimensionamento de imagens {url}"
+  },
+  "lighthouse-core/audits/installable-manifest.js | description": {
+    "message": "Os navegadores podem solicitar proativamente aos utilizadores que adicionem a sua aplicação ao respetivo ecrã principal, o que pode levar a uma maior interação. [Saiba mais](https://developers.google.com/web/tools/lighthouse/audits/install-prompt)."
+  },
+  "lighthouse-core/audits/installable-manifest.js | failureTitle": {
+    "message": "O manifesto da aplicação para a Web não cumpre os requisitos de capacidade de instalação"
+  },
+  "lighthouse-core/audits/installable-manifest.js | title": {
+    "message": "O manifesto da aplicação para a Web cumpre os requisitos de capacidade de instalação"
+  },
+  "lighthouse-core/audits/is-on-https.js | columnInsecureURL": {
+    "message": "URL inseguro"
+  },
+  "lighthouse-core/audits/is-on-https.js | description": {
+    "message": "Todos os sites devem ser protegidos com HTTPS, mesmo aqueles que não lidam com dados confidenciais. O HTTPS evita que os intrusos adulterem ou escutem passivamente as comunicações entre a sua aplicação e os seus utilizadores, e é um pré-requisito para o HTTP/2 e muitas novas APIs de plataformas Web. [Saiba mais](https://web.dev/is-on-https)."
+  },
+  "lighthouse-core/audits/is-on-https.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 pedido inseguro encontrado}other{# pedidos inseguros encontrados}}"
+  },
+  "lighthouse-core/audits/is-on-https.js | failureTitle": {
+    "message": "Não utiliza HTTPS"
+  },
+  "lighthouse-core/audits/is-on-https.js | title": {
+    "message": "Utiliza HTTPS"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | description": {
+    "message": "Um rápido carregamento da página numa rede móvel assegura uma boa experiência do utilizador móvel. [Saiba mais](https://developers.google.com/web/tools/lighthouse/audits/fast-3g)."
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | displayValueText": {
+    "message": "Interativa em {timeInMs, number, seconds} s"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | displayValueTextWithOverride": {
+    "message": "Interativa numa rede móvel simulada em {timeInMs, number, seconds} s"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | explanationLoadSlow": {
+    "message": "A sua página é carregada muito lentamente e não fica interativa após 10 segundos. Veja as oportunidades e os diagnósticos na secção \"Desempenho\" para saber como melhorar."
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | failureTitle": {
+    "message": "O carregamento da página não é suficientemente rápido em redes móveis"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | title": {
+    "message": "O carregamento da página é suficientemente rápido em redes móveis"
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | columnCategory": {
+    "message": "Categoria"
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | description": {
+    "message": "Considere reduzir o tempo despendido a analisar, compilar e executar JS. Poderá descobrir que é útil fornecer payloads de JS mais pequenos."
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | failureTitle": {
+    "message": "Reduzir as operações do thread principal"
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | title": {
+    "message": "Reduz as operações do thread principal"
+  },
+  "lighthouse-core/audits/manual/pwa-cross-browser.js | description": {
+    "message": "Para alcançar o maior número possível de utilizadores, os sites devem funcionar em todos os navegadores principais. [Saiba mais](https://developers.google.com/web/progressive-web-apps/checklist#site-works-cross-browser)."
+  },
+  "lighthouse-core/audits/manual/pwa-cross-browser.js | title": {
+    "message": "O site funciona em vários navegadores"
+  },
+  "lighthouse-core/audits/manual/pwa-each-page-has-url.js | description": {
+    "message": "Certifique-se de que as páginas individuais têm links diretos através de URLs e que os URLs são exclusivos para a finalidade de serem partilhados em redes sociais. [Saiba mais](https://developers.google.com/web/progressive-web-apps/checklist#each-page-has-a-url)."
+  },
+  "lighthouse-core/audits/manual/pwa-each-page-has-url.js | title": {
+    "message": "Cada página tem um URL"
+  },
+  "lighthouse-core/audits/manual/pwa-page-transitions.js | description": {
+    "message": "As transições devem parecer rápidas à medida que toca em qualquer local, mesmo numa rede lenta, o que é essencial para o desempenho percecionado. [Saiba mais](https://developers.google.com/web/progressive-web-apps/checklist#page-transitions-dont-feel-like-they-block-on-the-network)."
+  },
+  "lighthouse-core/audits/manual/pwa-page-transitions.js | title": {
+    "message": "As transições da página não parecem ficar bloqueadas na rede"
+  },
+  "lighthouse-core/audits/metrics/estimated-input-latency.js | description": {
+    "message": "A Latência de entrada estimada é uma estimativa do tempo que a sua aplicação demora a responder a ações do utilizador, em milissegundos, durante a janela dos 5 segundos mais ativos do carregamento da página. Se a latência for superior a 50 ms, os utilizadores podem considerar que a sua aplicação é lenta. [Saiba mais](https://developers.google.com/web/tools/lighthouse/audits/estimated-input-latency)."
+  },
+  "lighthouse-core/audits/metrics/estimated-input-latency.js | title": {
+    "message": "Latência estimada das ações"
+  },
+  "lighthouse-core/audits/metrics/first-contentful-paint.js | description": {
+    "message": "O Primeiro preenchimento com conteúdo assinala o momento de preenchimento com o primeiro texto ou a primeira imagem. [Saiba mais](https://developers.google.com/web/tools/lighthouse/audits/first-contentful-paint)."
+  },
+  "lighthouse-core/audits/metrics/first-contentful-paint.js | title": {
+    "message": "Primeiro preenchimento com conteúdo"
+  },
+  "lighthouse-core/audits/metrics/first-cpu-idle.js | description": {
+    "message": "A métrica Primeira CPU inativa indica quando é que o thread principal da página está suficientemente inativo pela primeira vez para processar ações. [Saiba mais](https://developers.google.com/web/tools/lighthouse/audits/first-interactive)."
+  },
+  "lighthouse-core/audits/metrics/first-cpu-idle.js | title": {
+    "message": "Primeira CPU inativa"
+  },
+  "lighthouse-core/audits/metrics/first-meaningful-paint.js | description": {
+    "message": "A métrica Primeiro preenchimento significativo mede quando é que o conteúdo principal de uma página fica visível. [Saiba mais](https://developers.google.com/web/tools/lighthouse/audits/first-meaningful-paint)."
+  },
+  "lighthouse-core/audits/metrics/first-meaningful-paint.js | title": {
+    "message": "Primeiro preenchimento significativo"
+  },
+  "lighthouse-core/audits/metrics/interactive.js | description": {
+    "message": "O Tempo até à interação é a quantidade de tempo que a página demora a ficar totalmente interativa. [Saiba mais](https://developers.google.com/web/tools/lighthouse/audits/consistently-interactive)."
+  },
+  "lighthouse-core/audits/metrics/interactive.js | title": {
+    "message": "Tempo até à interação"
+  },
+  "lighthouse-core/audits/metrics/max-potential-fid.js | description": {
+    "message": "O máximo potencial do primeiro atraso de entrada que pode afetar os utilizadores é a duração, em milissegundos, da tarefa mais longa. [Saiba mais](https://developers.google.com/web/updates/2018/05/first-input-delay)."
+  },
+  "lighthouse-core/audits/metrics/max-potential-fid.js | title": {
+    "message": "Máximo potencial de primeiro atraso de entrada"
+  },
+  "lighthouse-core/audits/metrics/speed-index.js | description": {
+    "message": "A métrica Índice de velocidade apresenta a rapidez de preenchimento visível dos conteúdos de uma página. [Saiba mais](https://developers.google.com/web/tools/lighthouse/audits/speed-index)."
+  },
+  "lighthouse-core/audits/metrics/speed-index.js | title": {
+    "message": "Índice de velocidade"
+  },
+  "lighthouse-core/audits/metrics/total-blocking-time.js | description": {
+    "message": "A soma de todos os períodos de tempo entre o FCP e o Tempo até à interação, quando a duração da tarefa é superior a 50 ms, expressa em milissegundos."
+  },
+  "lighthouse-core/audits/metrics/total-blocking-time.js | title": {
+    "message": "Tempo de bloqueio total"
+  },
+  "lighthouse-core/audits/network-rtt.js | description": {
+    "message": "Os tempos de ida e volta da rede (RTT) têm um grande impacto no desempenho. Se o RTT para uma origem for elevado, é uma indicação de que os servidores mais próximos do utilizador podem melhorar o desempenho. [Saiba mais](https://hpbn.co/primer-on-latency-and-bandwidth/)."
+  },
+  "lighthouse-core/audits/network-rtt.js | title": {
+    "message": "Tempos de ida e volta da rede"
+  },
+  "lighthouse-core/audits/network-server-latency.js | description": {
+    "message": "As latências do servidor podem afetar o desempenho Web. Se a latência do servidor de uma origem for elevada, é uma indicação de que o servidor está sobrecarregado ou tem um fraco desempenho de back-end. [Saiba mais](https://hpbn.co/primer-on-web-performance/#analyzing-the-resource-waterfall)."
+  },
+  "lighthouse-core/audits/network-server-latency.js | title": {
+    "message": "Latências de back-end do servidor"
+  },
+  "lighthouse-core/audits/offline-start-url.js | description": {
+    "message": "Um service worker permite que a sua aplicação para a Web seja fiável em condições de rede imprevisíveis. [Saiba mais](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)."
+  },
+  "lighthouse-core/audits/offline-start-url.js | failureTitle": {
+    "message": "`start_url` não responde com um 200 quando está offline"
+  },
+  "lighthouse-core/audits/offline-start-url.js | title": {
+    "message": "`start_url` responde com um 200 quando está offline"
+  },
+  "lighthouse-core/audits/offline-start-url.js | warningCantStart": {
+    "message": "O Lighthouse não conseguiu ler o `start_url` do manifesto. Como resultado, o `start_url` foi assumido como o URL do documento. Mensagem de erro: \"{manifestWarning}\"."
+  },
+  "lighthouse-core/audits/performance-budget.js | columnOverBudget": {
+    "message": "Superior ao orçamento"
+  },
+  "lighthouse-core/audits/performance-budget.js | description": {
+    "message": "Mantenha a quantidade e o tamanho dos pedidos de rede abaixo dos alvos estabelecidos pelo orçamento de desempenho fornecido. [Saiba mais](https://developers.google.com/web/tools/lighthouse/audits/budgets)."
+  },
+  "lighthouse-core/audits/performance-budget.js | requestCountOverBudget": {
+    "message": "{count,plural, =1{1 pedido}other{# pedidos}}"
+  },
+  "lighthouse-core/audits/performance-budget.js | title": {
+    "message": "Orçamento de desempenho"
+  },
+  "lighthouse-core/audits/redirects-http.js | description": {
+    "message": "Se já tiver configurado o HTTPS, certifique-se de que redireciona todo o tráfego HTTP para HTTPS de modo a ativar as funcionalidades Web seguras para todos os seus utilizadores. [Saiba mais](https://developers.google.com/web/tools/lighthouse/audits/http-redirects-to-https)."
+  },
+  "lighthouse-core/audits/redirects-http.js | failureTitle": {
+    "message": "Não redireciona o tráfego HTTP para HTTPS"
+  },
+  "lighthouse-core/audits/redirects-http.js | title": {
+    "message": "Redireciona o tráfego HTTP para HTTPS"
+  },
+  "lighthouse-core/audits/redirects.js | description": {
+    "message": "A auditoria Redirecionamentos introduz atrasos adicionais antes do carregamento da página. [Saiba mais](https://developers.google.com/web/tools/lighthouse/audits/redirects)."
+  },
+  "lighthouse-core/audits/redirects.js | title": {
+    "message": "Evite vários redirecionamentos de página"
+  },
+  "lighthouse-core/audits/resource-summary.js | description": {
+    "message": "Adicione um ficheiro budget.json para definir orçamentos para a quantidade e tamanho dos recursos da página. [Saiba mais](https://developers.google.com/web/tools/lighthouse/audits/budgets)."
+  },
+  "lighthouse-core/audits/resource-summary.js | displayValue": {
+    "message": "{requestCount,plural, =1{1 pedido • {byteCount, number, bytes} KB}other{# pedidos • {byteCount, number, bytes} KB}}"
+  },
+  "lighthouse-core/audits/resource-summary.js | title": {
+    "message": "Mantenha a contagem dos pedidos baixa e os tamanhos de transferência pequenos"
+  },
+  "lighthouse-core/audits/seo/canonical.js | description": {
+    "message": "Os links canónicos sugerem o URL a apresentar nos resultados da pesquisa. [Saiba mais](https://web.dev/canonical)."
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationConflict": {
+    "message": "Vários URLs em conflito ({urlList})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationDifferentDomain": {
+    "message": "Aponta para um domínio diferente ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationInvalid": {
+    "message": "URL inválido ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationPointsElsewhere": {
+    "message": "Aponta para outra localização `hreflang` ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationRelative": {
+    "message": "URL relativo ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationRoot": {
+    "message": "Aponta para o URL raiz do domínio (a página inicial), em vez de uma página de conteúdo equivalente."
+  },
+  "lighthouse-core/audits/seo/canonical.js | failureTitle": {
+    "message": "O documento não tem um `rel=canonical` válido"
+  },
+  "lighthouse-core/audits/seo/canonical.js | title": {
+    "message": "O documento tem um `rel=canonical` válido"
+  },
+  "lighthouse-core/audits/seo/font-size.js | description": {
+    "message": "Os tamanhos de tipo de letra inferiores a 12 px são demasiado pequenos para serem legíveis e requerem que os visitantes de dispositivos móveis \"juntem os dedos para aumentar o zoom” para conseguirem ler. Tente ter > 60% de texto da página ≥ 12 px. [Saiba mais](https://web.dev/font-size)."
+  },
+  "lighthouse-core/audits/seo/font-size.js | displayValue": {
+    "message": "{decimalProportion, number, extendedPercent} de texto legível"
+  },
+  "lighthouse-core/audits/seo/font-size.js | explanationViewport": {
+    "message": "O texto é ilegível porque não existe nenhuma metatag de área visível otimizada para ecrãs de dispositivos móveis."
+  },
+  "lighthouse-core/audits/seo/font-size.js | explanationWithDisclaimer": {
+    "message": "{decimalProportion, number, extendedPercent} do texto é demasiado pequeno (com base na amostra de {decimalProportionVisited, number, extendedPercent})."
+  },
+  "lighthouse-core/audits/seo/font-size.js | failureTitle": {
+    "message": "O documento não utiliza tamanhos de tipo de letra legíveis"
+  },
+  "lighthouse-core/audits/seo/font-size.js | title": {
+    "message": "O documento utiliza tamanhos de tipo de letra legíveis"
+  },
+  "lighthouse-core/audits/seo/hreflang.js | description": {
+    "message": "Os links hreflang indicam aos motores de pesquisa a versão de uma página que devem apresentar nos resultados da pesquisa para um determinado idioma ou região. [Saiba mais](https://web.dev/hreflang)."
+  },
+  "lighthouse-core/audits/seo/hreflang.js | failureTitle": {
+    "message": "O documento não tem um `hreflang` válido"
+  },
+  "lighthouse-core/audits/seo/hreflang.js | title": {
+    "message": "O documento tem um `hreflang` válido"
+  },
+  "lighthouse-core/audits/seo/http-status-code.js | description": {
+    "message": "As páginas com códigos de estado HTTP não executados com êxito podem não ser indexadas corretamente. [Saiba mais](https://web.dev/http-status-code)."
+  },
+  "lighthouse-core/audits/seo/http-status-code.js | failureTitle": {
+    "message": "A página tem código de estado HTTP não executado com êxito"
+  },
+  "lighthouse-core/audits/seo/http-status-code.js | title": {
+    "message": "A página tem código de estado HTTP executado com êxito"
+  },
+  "lighthouse-core/audits/seo/is-crawlable.js | description": {
+    "message": "Os motores de pesquisa não podem incluir as suas páginas nos resultados da pesquisa se não tiverem autorização para as rastrear. [Saiba mais](https://web.dev/is-crawable)."
+  },
+  "lighthouse-core/audits/seo/is-crawlable.js | failureTitle": {
+    "message": "A página está impedida de ser indexada"
+  },
+  "lighthouse-core/audits/seo/is-crawlable.js | title": {
+    "message": "A página não está impedida de ser indexada"
+  },
+  "lighthouse-core/audits/seo/link-text.js | description": {
+    "message": "O texto descritivo dos links ajuda os motores de pesquisa a compreender o conteúdo. [Saiba mais](https://web.dev/link-text)."
+  },
+  "lighthouse-core/audits/seo/link-text.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 link encontrado}other{# links encontrados}}"
+  },
+  "lighthouse-core/audits/seo/link-text.js | failureTitle": {
+    "message": "Os links não têm texto descritivo"
+  },
+  "lighthouse-core/audits/seo/link-text.js | title": {
+    "message": "Os links têm texto descritivo"
+  },
+  "lighthouse-core/audits/seo/manual/structured-data.js | description": {
+    "message": "Execute a [Ferramenta de teste de dados estruturados](https://search.google.com/structured-data/testing-tool/) e o [Linter de dados estruturados](http://linter.structured-data.org/) para validar dados estruturados. [Saiba mais](https://web.dev/structured-data)."
+  },
+  "lighthouse-core/audits/seo/manual/structured-data.js | title": {
+    "message": "Os dados estruturados são válidos"
+  },
+  "lighthouse-core/audits/seo/meta-description.js | description": {
+    "message": "As meta descrições podem ser incluídas nos resultados da pesquisa para resumir concisamente o conteúdo da página. [Saiba mais](https://web.dev/meta-description)."
+  },
+  "lighthouse-core/audits/seo/meta-description.js | explanation": {
+    "message": "O texto da descrição está vazio."
+  },
+  "lighthouse-core/audits/seo/meta-description.js | failureTitle": {
+    "message": "O documento não tem uma meta descrição"
+  },
+  "lighthouse-core/audits/seo/meta-description.js | title": {
+    "message": "O documento tem uma meta descrição"
+  },
+  "lighthouse-core/audits/seo/plugins.js | description": {
+    "message": "Não é possível aos motores de pesquisa indexar o conteúdo de plug-ins e muitos dispositivos restringem plug-ins ou não os suportam. [Saiba mais](https://web.dev/plugins)."
+  },
+  "lighthouse-core/audits/seo/plugins.js | failureTitle": {
+    "message": "O documento utiliza plug-ins"
+  },
+  "lighthouse-core/audits/seo/plugins.js | title": {
+    "message": "O documento evita plug-ins"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | description": {
+    "message": "Se o ficheiro robots.txt estiver mal formado, os motores de rastreio podem não conseguir compreender como pretende que o seu Website seja rastreado ou indexado. [Saiba mais](https://web.dev/robots-txt)."
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | displayValueHttpBadCode": {
+    "message": "O pedido de robots.txt devolveu o seguinte estado de HTTP: {statusCode}"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | displayValueValidationError": {
+    "message": "{itemCount,plural, =1{1 erro encontrado}other{# erros encontrados}}"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | explanation": {
+    "message": "O Lighthouse não conseguiu transferir um ficheiro robots.txt."
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | failureTitle": {
+    "message": "O ficheiro robots.txt não é válido"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | title": {
+    "message": "O ficheiro robots.txt é válido"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | description": {
+    "message": "Os elementos interativos, como botões e links, devem ser suficientemente grandes (48 x 48 px) e ter espaço suficiente à volta para serem fáceis de tocar sem que se sobreponham a outros elementos. [Saiba mais](https://web.dev/tap-targets)."
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | displayValue": {
+    "message": "Os alvos táteis foram dimensionados corretamente com um tamanho de {decimalProportion, number, percent}"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | explanationViewportMetaNotOptimized": {
+    "message": "Os alvos táteis são demasiado pequenos porque não existe nenhuma metatag de área visível otimizada para ecrãs de dispositivos móveis."
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | failureTitle": {
+    "message": "Os alvos táteis não estão dimensionados corretamente"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | overlappingTargetHeader": {
+    "message": "Alvo sobreposto"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | tapTargetHeader": {
+    "message": "Alvo tátil"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | title": {
+    "message": "Os alvos táteis estão dimensionados corretamente"
+  },
+  "lighthouse-core/audits/service-worker.js | description": {
+    "message": "O service worker é a tecnologia que permite que a sua aplicação utilize muitas funcionalidades de progressive web app, tais como offline, adicionar ao ecrã principal e envios de notificações. [Saiba mais](https://developers.google.com/web/tools/lighthouse/audits/registered-service-worker)."
+  },
+  "lighthouse-core/audits/service-worker.js | explanationBadManifest": {
+    "message": "Esta página é controlada por um service worker, no entanto, não foi encontrado nenhum `start_url` porque o manifesto falhou ao analisar como um JSON válido."
+  },
+  "lighthouse-core/audits/service-worker.js | explanationBadStartUrl": {
+    "message": "Esta página é controlada por um service worker, no entanto, o `start_url` ({startUrl}) não está no âmbito do service worker ({scopeUrl})."
+  },
+  "lighthouse-core/audits/service-worker.js | explanationNoManifest": {
+    "message": "Esta página é controlada por um service worker, no entanto, não foi encontrado nenhum `start_url` porque não foi obtido nenhum manifesto."
+  },
+  "lighthouse-core/audits/service-worker.js | explanationOutOfScope": {
+    "message": "Esta origem tem um ou mais service workers, no entanto, a página ({pageUrl}) não está no âmbito."
+  },
+  "lighthouse-core/audits/service-worker.js | failureTitle": {
+    "message": "Não regista um service worker que controla a página e `start_url`"
+  },
+  "lighthouse-core/audits/service-worker.js | title": {
+    "message": "Regista um service worker que controla a página e `start_url`"
+  },
+  "lighthouse-core/audits/splash-screen.js | description": {
+    "message": "Um ecrã inicial temático garante uma experiência de alta qualidade quando os utilizadores iniciam a aplicação a partir dos respetivos ecrãs principais. [Saiba mais](https://developers.google.com/web/tools/lighthouse/audits/custom-splash-screen)."
+  },
+  "lighthouse-core/audits/splash-screen.js | failureTitle": {
+    "message": "Não está configurado para um ecrã inicial personalizado"
+  },
+  "lighthouse-core/audits/splash-screen.js | title": {
+    "message": "Configurado para um ecrã inicial personalizado"
+  },
+  "lighthouse-core/audits/themed-omnibox.js | description": {
+    "message": "A barra de endereço do navegador pode ter um tema que corresponda ao seu site. [Saiba mais](https://developers.google.com/web/tools/lighthouse/audits/address-bar)."
+  },
+  "lighthouse-core/audits/themed-omnibox.js | failureTitle": {
+    "message": "Não define uma cor do tema para a barra de endereço."
+  },
+  "lighthouse-core/audits/themed-omnibox.js | title": {
+    "message": "Define uma cor do tema para a barra de endereço"
+  },
+  "lighthouse-core/audits/third-party-summary.js | columnBlockingTime": {
+    "message": "Tempo de bloqueio do thread principal"
+  },
+  "lighthouse-core/audits/third-party-summary.js | columnThirdParty": {
+    "message": "Terceiros"
+  },
+  "lighthouse-core/audits/third-party-summary.js | description": {
+    "message": "O código de terceiros pode afetar significativamente o desempenho de carregamento. Limite o número de fornecedores terceiros redundantes e tente carregar o código de terceiros após a conclusão do carregamento da sua página. [Saiba mais](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/loading-third-party-javascript/)."
+  },
+  "lighthouse-core/audits/third-party-summary.js | displayValue": {
+    "message": "O código de terceiros bloqueou o thread principal durante {timeInMs, number, milliseconds} ms."
+  },
+  "lighthouse-core/audits/third-party-summary.js | failureTitle": {
+    "message": "Reduza o impacto do código de terceiros"
+  },
+  "lighthouse-core/audits/third-party-summary.js | title": {
+    "message": "Utilização de terceiros"
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | description": {
+    "message": "A auditoria Tempo até ao primeiro byte indica o tempo de envio de uma resposta pelo seu servidor. [Saiba mais](https://developers.google.com/web/tools/lighthouse/audits/ttfb)."
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | displayValue": {
+    "message": "O documento de raiz demorou {timeInMs, number, milliseconds} ms"
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | failureTitle": {
+    "message": "Reduza os tempos de resposta do servidor (TTFB)"
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | title": {
+    "message": "Os tempos de resposta do servidor são curtos (TTFB)"
+  },
+  "lighthouse-core/audits/user-timings.js | columnDuration": {
+    "message": "Duração"
+  },
+  "lighthouse-core/audits/user-timings.js | columnStartTime": {
+    "message": "Hora de início"
+  },
+  "lighthouse-core/audits/user-timings.js | columnType": {
+    "message": "Tipo"
+  },
+  "lighthouse-core/audits/user-timings.js | description": {
+    "message": "Pondere a possibilidade de complementar a sua aplicação com a API Tempos do utilizador para analisar o desempenho real da aplicação durante as principais experiências do utilizador. [Saiba mais](https://developers.google.com/web/tools/lighthouse/audits/user-timing)."
+  },
+  "lighthouse-core/audits/user-timings.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 tempo do utilizador}other{# tempos do utilizador}}"
+  },
+  "lighthouse-core/audits/user-timings.js | title": {
+    "message": "Marcas e medições de Tempos do utilizador"
+  },
+  "lighthouse-core/audits/uses-rel-preconnect.js | crossoriginWarning": {
+    "message": "Foi encontrado um <link> de pré-ligação para \"{securityOrigin}\", mas este não foi utilizado pelo navegador. Confirme se está a utilizar o atributo `crossorigin` adequadamente."
+  },
+  "lighthouse-core/audits/uses-rel-preconnect.js | description": {
+    "message": "Considere adicionar instruções para recursos de `preconnect` ou `dns-prefetch` para estabelecer ligações antecipadamente a origens de terceiros importantes. [Saiba mais](https://developers.google.com/web/fundamentals/performance/resource-prioritization#preconnect)."
+  },
+  "lighthouse-core/audits/uses-rel-preconnect.js | title": {
+    "message": "Efetue a pré-ligação às origens necessárias"
+  },
+  "lighthouse-core/audits/uses-rel-preload.js | crossoriginWarning": {
+    "message": "Foi encontrado um <link> de pré-carregamento para \"{preloadURL}\", mas este não foi utilizado pelo navegador. Confirme se está a utilizar o atributo `crossorigin` adequadamente."
+  },
+  "lighthouse-core/audits/uses-rel-preload.js | description": {
+    "message": "Considere utilizar `<link rel=preload>` para dar prioridade à obtenção de recursos que são atualmente solicitados mais tarde no carregamento de página. [Saiba mais](https://developers.google.com/web/tools/lighthouse/audits/preload)."
+  },
+  "lighthouse-core/audits/uses-rel-preload.js | title": {
+    "message": "Pré-carregue pedidos-chave"
+  },
+  "lighthouse-core/audits/viewport.js | description": {
+    "message": "Adicione uma etiqueta `<meta name=\"viewport\">` para otimizar a sua aplicação para ecrãs de dispositivos móveis. [Saiba mais](https://developers.google.com/web/tools/lighthouse/audits/has-viewport-meta-tag)."
+  },
+  "lighthouse-core/audits/viewport.js | explanationNoTag": {
+    "message": "Nenhuma etiqueta `<meta name=\"viewport\">` encontrada."
+  },
+  "lighthouse-core/audits/viewport.js | failureTitle": {
+    "message": "Não tem uma etiqueta `<meta name=\"viewport\">` com `width` ou `initial-scale`"
+  },
+  "lighthouse-core/audits/viewport.js | title": {
+    "message": "Tem uma etiqueta `<meta name=\"viewport\">` com `width` ou `initial-scale`"
+  },
+  "lighthouse-core/audits/without-javascript.js | description": {
+    "message": "A sua aplicação deve apresentar algum conteúdo quando o JavaScript está desativado, mesmo que seja apenas um aviso ao utilizador de que o JavaScript é necessário para utilizar a aplicação. [Saiba mais](https://developers.google.com/web/tools/lighthouse/audits/no-js)."
+  },
+  "lighthouse-core/audits/without-javascript.js | explanation": {
+    "message": "O corpo da página deve renderizar algum conteúdo se os respetivos scripts não estiverem disponíveis."
+  },
+  "lighthouse-core/audits/without-javascript.js | failureTitle": {
+    "message": "Não fornece conteúdo obsoleto quando o JavaScript não está disponível"
+  },
+  "lighthouse-core/audits/without-javascript.js | title": {
+    "message": "Contém algum conteúdo quando o JavaScript não está disponível"
+  },
+  "lighthouse-core/audits/works-offline.js | description": {
+    "message": "Se estiver a criar uma progressive web app, considere utilizar um service worker para que a sua aplicação possa funcionar offline. [Saiba mais](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)."
+  },
+  "lighthouse-core/audits/works-offline.js | failureTitle": {
+    "message": "A página atual não responde com um 200 quando está offline"
+  },
+  "lighthouse-core/audits/works-offline.js | title": {
+    "message": "A página atual responde com um 200 quando está offline"
+  },
+  "lighthouse-core/audits/works-offline.js | warningNoLoad": {
+    "message": "A página pode não estar a ser carregada offline porque o seu URL de teste ({requested}) foi redirecionado para \"{final}\". Experimente testar o segundo URL diretamente."
+  },
+  "lighthouse-core/config/default-config.js | a11yAriaGroupDescription": {
+    "message": "Estas são oportunidades para otimizar a utilização do ARIA na sua aplicação, que pode melhorar a experiência dos utilizadores de tecnologias de assistência, como os de leitores de ecrã."
+  },
+  "lighthouse-core/config/default-config.js | a11yAriaGroupTitle": {
+    "message": "ARIA"
+  },
+  "lighthouse-core/config/default-config.js | a11yAudioVideoGroupDescription": {
+    "message": "Estas são oportunidades para fornecer conteúdo alternativo para áudio e vídeo. Pode melhorar a experiência dos utilizadores com deficiências auditivas ou visuais."
+  },
+  "lighthouse-core/config/default-config.js | a11yAudioVideoGroupTitle": {
+    "message": "Áudio e vídeo"
+  },
+  "lighthouse-core/config/default-config.js | a11yBestPracticesGroupDescription": {
+    "message": "Estes itens realçam as práticas recomendadas de acessibilidade comuns."
+  },
+  "lighthouse-core/config/default-config.js | a11yBestPracticesGroupTitle": {
+    "message": "Práticas recomendadas"
+  },
+  "lighthouse-core/config/default-config.js | a11yCategoryDescription": {
+    "message": "Estas verificações realçam as oportunidades de [melhorar a acessibilidade da sua aplicação Web](https://developers.google.com/web/fundamentals/accessibility). Apenas um subconjunto de problemas de acessibilidade pode ser detetado automaticamente, pelo que é recomendado efetuar também testes manuais."
+  },
+  "lighthouse-core/config/default-config.js | a11yCategoryManualDescription": {
+    "message": "Estes itens destinam-se a áreas não abrangidas por uma ferramenta de teste automatizada. Saiba mais no nosso guia sobre como [efetuar uma revisão de acessibilidade](https://developers.google.com/web/fundamentals/accessibility/how-to-review)."
+  },
+  "lighthouse-core/config/default-config.js | a11yCategoryTitle": {
+    "message": "Acessibilidade"
+  },
+  "lighthouse-core/config/default-config.js | a11yColorContrastGroupDescription": {
+    "message": "Estas são oportunidades para melhorar a legibilidade do seu conteúdo."
+  },
+  "lighthouse-core/config/default-config.js | a11yColorContrastGroupTitle": {
+    "message": "Contraste"
+  },
+  "lighthouse-core/config/default-config.js | a11yLanguageGroupDescription": {
+    "message": "Estas são oportunidades para melhorar a interpretação do seu conteúdo por parte dos utilizadores em locais diferentes."
+  },
+  "lighthouse-core/config/default-config.js | a11yLanguageGroupTitle": {
+    "message": "Internacionalização e localização"
+  },
+  "lighthouse-core/config/default-config.js | a11yNamesLabelsGroupDescription": {
+    "message": "Estas são oportunidades para melhorar a semântica dos controlos na sua aplicação. Desta forma, poderá melhorar a experiência dos utilizadores de tecnologia de assistência, como os de leitores de ecrã."
+  },
+  "lighthouse-core/config/default-config.js | a11yNamesLabelsGroupTitle": {
+    "message": "Nomes e etiquetas"
+  },
+  "lighthouse-core/config/default-config.js | a11yNavigationGroupDescription": {
+    "message": "Estas são oportunidades para melhorar a navegação do teclado na sua aplicação."
+  },
+  "lighthouse-core/config/default-config.js | a11yNavigationGroupTitle": {
+    "message": "Navegação"
+  },
+  "lighthouse-core/config/default-config.js | a11yTablesListsVideoGroupDescription": {
+    "message": "Estas são oportunidades para melhorar a experiência de leitura de dados em tabelas ou listas com tecnologia de assistência, como os leitores de ecrã."
+  },
+  "lighthouse-core/config/default-config.js | a11yTablesListsVideoGroupTitle": {
+    "message": "Tabelas e listas"
+  },
+  "lighthouse-core/config/default-config.js | bestPracticesCategoryTitle": {
+    "message": "Práticas recomendadas"
+  },
+  "lighthouse-core/config/default-config.js | budgetsGroupDescription": {
+    "message": "Os orçamentos de desempenho definem padrões para o desempenho do seu site."
+  },
+  "lighthouse-core/config/default-config.js | budgetsGroupTitle": {
+    "message": "Orçamentos"
+  },
+  "lighthouse-core/config/default-config.js | diagnosticsGroupDescription": {
+    "message": "Mais informações sobre o desempenho da sua aplicação. Estes números não [afetam diretamente](https://github.com/GoogleChrome/lighthouse/blob/d2ec9ffbb21de9ad1a0f86ed24575eda32c796f0/docs/scoring.md#how-are-the-scores-weighted) a pontuação de desempenho."
+  },
+  "lighthouse-core/config/default-config.js | diagnosticsGroupTitle": {
+    "message": "Diagnósticos"
+  },
+  "lighthouse-core/config/default-config.js | firstPaintImprovementsGroupDescription": {
+    "message": "O aspeto mais importante do desempenho é a rapidez de renderização dos píxeis no ecrã. Métricas principais: Primeiro preenchimento com conteúdo, Primeiro preenchimento significativo."
+  },
+  "lighthouse-core/config/default-config.js | firstPaintImprovementsGroupTitle": {
+    "message": "Melhorias no primeiro preenchimento"
+  },
+  "lighthouse-core/config/default-config.js | loadOpportunitiesGroupDescription": {
+    "message": "Estas sugestões podem ajudar a sua página a ser carregada mais rapidamente. As mesmas não [afetam diretamente](https://github.com/GoogleChrome/lighthouse/blob/d2ec9ffbb21de9ad1a0f86ed24575eda32c796f0/docs/scoring.md#how-are-the-scores-weighted) a pontuação de desempenho."
+  },
+  "lighthouse-core/config/default-config.js | loadOpportunitiesGroupTitle": {
+    "message": "Oportunidades"
+  },
+  "lighthouse-core/config/default-config.js | metricGroupTitle": {
+    "message": "Métricas"
+  },
+  "lighthouse-core/config/default-config.js | overallImprovementsGroupDescription": {
+    "message": "Melhore a experiência de carregamento geral para que a página responda e fique pronta a utilizar logo que possível. Métricas principais: Tempo até à interação, Índice de velocidade."
+  },
+  "lighthouse-core/config/default-config.js | overallImprovementsGroupTitle": {
+    "message": "Melhorias gerais"
+  },
+  "lighthouse-core/config/default-config.js | performanceCategoryTitle": {
+    "message": "Desempenho"
+  },
+  "lighthouse-core/config/default-config.js | pwaCategoryDescription": {
+    "message": "Estas verificações validam os aspetos de uma progressive web app. [Saiba mais](https://developers.google.com/web/progressive-web-apps/checklist)."
+  },
+  "lighthouse-core/config/default-config.js | pwaCategoryManualDescription": {
+    "message": "A [Lista de verificação de PWA](https://developers.google.com/web/progressive-web-apps/checklist) de referência requer estas verificações, mas as mesmas não são verificadas automaticamente pelo Lighthouse. Não afetam a sua pontuação, mas é importante que as valide manualmente."
+  },
+  "lighthouse-core/config/default-config.js | pwaCategoryTitle": {
+    "message": "Progressive web app"
+  },
+  "lighthouse-core/config/default-config.js | pwaFastReliableGroupTitle": {
+    "message": "Rápido e fiável"
+  },
+  "lighthouse-core/config/default-config.js | pwaInstallableGroupTitle": {
+    "message": "Instalável"
+  },
+  "lighthouse-core/config/default-config.js | pwaOptimizedGroupTitle": {
+    "message": "PWA otimizada"
+  },
+  "lighthouse-core/config/default-config.js | seoCategoryDescription": {
+    "message": "Estas verificações asseguram que a página está otimizada para a classificação de resultados dos motores de pesquisa. Existem fatores adicionais, que o Lighthouse não verifica, que podem afetar a classificação de pesquisa. [Saiba mais](https://support.google.com/webmasters/answer/35769)."
+  },
+  "lighthouse-core/config/default-config.js | seoCategoryManualDescription": {
+    "message": "Execute estes verificadores adicionais no seu site para consultar mais práticas recomendadas de SEO."
+  },
+  "lighthouse-core/config/default-config.js | seoCategoryTitle": {
+    "message": "SEO"
+  },
+  "lighthouse-core/config/default-config.js | seoContentGroupDescription": {
+    "message": "Formate o HTML de uma forma que permita aos motores de rastreio compreender melhor o conteúdo da aplicação."
+  },
+  "lighthouse-core/config/default-config.js | seoContentGroupTitle": {
+    "message": "Práticas recomendadas para conteúdo"
+  },
+  "lighthouse-core/config/default-config.js | seoCrawlingGroupDescription": {
+    "message": "Para ser apresentada nos resultados da pesquisa, os motores de rastreio necessitam de acesso à sua aplicação."
+  },
+  "lighthouse-core/config/default-config.js | seoCrawlingGroupTitle": {
+    "message": "Rastreio e indexação"
+  },
+  "lighthouse-core/config/default-config.js | seoMobileGroupDescription": {
+    "message": "Certifique-se de que as suas páginas são compatíveis com dispositivos móveis, de modo a que os utilizadores não tenham de juntar os dedos ou aumentar o zoom para lerem as páginas de conteúdo. [Saiba mais](https://developers.google.com/search/mobile-sites/)."
+  },
+  "lighthouse-core/config/default-config.js | seoMobileGroupTitle": {
+    "message": "Compatível com dispositivos móveis"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnCacheTTL": {
+    "message": "TTL da cache"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnLocation": {
+    "message": "Localização"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnName": {
+    "message": "Nome"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnRequests": {
+    "message": "Pedidos"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnResourceType": {
+    "message": "Tipo de recurso"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnSize": {
+    "message": "Tamanho"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnTimeSpent": {
+    "message": "Tempo gasto"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnTransferSize": {
+    "message": "Tamanho da transferência"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnURL": {
+    "message": "URL"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnWastedBytes": {
+    "message": "Poupança potencial"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnWastedMs": {
+    "message": "Poupança potencial"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | displayValueByteSavings": {
+    "message": "Poupança potencial de {wastedBytes, number, bytes} KB"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | displayValueMsSavings": {
+    "message": "Poupança potencial de {wastedMs, number, milliseconds} ms"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | documentResourceType": {
+    "message": "Documento"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | fontResourceType": {
+    "message": "Tipo de letra"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | imageResourceType": {
+    "message": "Imagem"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | mediaResourceType": {
+    "message": "Multimédia"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | ms": {
+    "message": "{timeInMs, number, milliseconds} ms"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | otherResourceType": {
+    "message": "Outro"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | scriptResourceType": {
+    "message": "Script"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | seconds": {
+    "message": "{timeInMs, number, seconds} s"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | stylesheetResourceType": {
+    "message": "Folha de estilos"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | thirdPartyResourceType": {
+    "message": "Terceiros"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | totalResourceType": {
+    "message": "Total"
+  },
+  "lighthouse-core/lib/lh-error.js | badTraceRecording": {
+    "message": "Ocorreu um erro ao registar o rastreio durante o carregamento da sua página. Volte a executar o Lighthouse. ({errorCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | criTimeout": {
+    "message": "Atingido o tempo limite de espera pela ligação inicial do protocolo do depurador."
+  },
+  "lighthouse-core/lib/lh-error.js | didntCollectScreenshots": {
+    "message": "O Chrome não recolheu quaisquer capturas de ecrã durante o carregamento da página. Certifique-se de que existe conteúdo visível na página e, em seguida, experimente executar novamente o Lighthouse. ({errorCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | dnsFailure": {
+    "message": "Os servidores DNS não conseguiram resolver o domínio fornecido."
+  },
+  "lighthouse-core/lib/lh-error.js | erroredRequiredArtifact": {
+    "message": "O coletor {artifactName} obrigatório encontrou o seguinte erro: {errorMessage}"
+  },
+  "lighthouse-core/lib/lh-error.js | internalChromeError": {
+    "message": "Ocorreu um erro interno do Chrome. Reinicie o Chrome e experimente executar novamente o Lighthouse."
+  },
+  "lighthouse-core/lib/lh-error.js | missingRequiredArtifact": {
+    "message": "O coletor {artifactName} obrigatório não foi executado."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailed": {
+    "message": "O Lighthouse não conseguiu carregar com fiabilidade a página que solicitou. Certifique-se de que está a testar o URL correto e que o servidor está a responder adequadamente a todos os pedidos."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedHung": {
+    "message": "O Lighthouse não conseguiu carregar com fiabilidade o URL que solicitou porque a página deixou de responder."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedInsecure": {
+    "message": "O URL que forneceu não tem um certificado de segurança válido. {securityMessages}"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedInterstitial": {
+    "message": "O Chrome impediu o carregamento da página com um anúncio intercalar. Certifique-se de que está a testar o URL correto e que o servidor está a responder adequadamente a todos os pedidos."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedWithDetails": {
+    "message": "O Lighthouse não conseguiu carregar com fiabilidade a página que solicitou. Certifique-se de que está a testar o URL correto e que o servidor está a responder adequadamente a todos os pedidos. (Detalhes: {errorDetails})"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedWithStatusCode": {
+    "message": "O Lighthouse não conseguiu carregar com fiabilidade a página que solicitou. Certifique-se de que está a testar o URL correto e que o servidor está a responder adequadamente a todos os pedidos. (Código de estado: {statusCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadTookTooLong": {
+    "message": "A sua página demorou demasiado tempo a ser carregada. Siga as oportunidades no relatório para reduzir o tempo de carregamento da página e, em seguida, experimente executar novamente o Lighthouse. ({errorCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | protocolTimeout": {
+    "message": "A espera pela resposta do protocolo DevTools excedeu o tempo atribuído. (Método: {protocolMethod})"
+  },
+  "lighthouse-core/lib/lh-error.js | requestContentTimeout": {
+    "message": "A obtenção de conteúdo de recursos excedeu o tempo atribuído."
+  },
+  "lighthouse-core/lib/lh-error.js | urlInvalid": {
+    "message": "O URL que forneceu parece ser inválido."
+  },
+  "lighthouse-core/report/html/renderer/util.js | auditGroupExpandTooltip": {
+    "message": "Mostrar auditorias"
+  },
+  "lighthouse-core/report/html/renderer/util.js | crcInitialNavigation": {
+    "message": "Navegação inicial"
+  },
+  "lighthouse-core/report/html/renderer/util.js | crcLongestDurationLabel": {
+    "message": "Latência crítica máxima do caminho:"
+  },
+  "lighthouse-core/report/html/renderer/util.js | errorLabel": {
+    "message": "Erro!"
+  },
+  "lighthouse-core/report/html/renderer/util.js | errorMissingAuditInfo": {
+    "message": "Erro de relatório: sem informações de auditoria"
+  },
+  "lighthouse-core/report/html/renderer/util.js | labDataTitle": {
+    "message": "Dados laboratoriais"
+  },
+  "lighthouse-core/report/html/renderer/util.js | lsPerformanceCategoryDescription": {
+    "message": "A análise do [Lighthouse](https://developers.google.com/web/tools/lighthouse/) da página atual numa rede móvel emulada. Os valores são o resultado de uma estimativa e podem variar."
+  },
+  "lighthouse-core/report/html/renderer/util.js | manualAuditsGroupTitle": {
+    "message": "Itens adicionais a verificar manualmente"
+  },
+  "lighthouse-core/report/html/renderer/util.js | notApplicableAuditsGroupTitle": {
+    "message": "Não aplicável"
+  },
+  "lighthouse-core/report/html/renderer/util.js | opportunityResourceColumnLabel": {
+    "message": "Oportunidade"
+  },
+  "lighthouse-core/report/html/renderer/util.js | opportunitySavingsColumnLabel": {
+    "message": "Poupança estimada"
+  },
+  "lighthouse-core/report/html/renderer/util.js | passedAuditsGroupTitle": {
+    "message": "Auditorias aprovadas"
+  },
+  "lighthouse-core/report/html/renderer/util.js | snippetCollapseButtonLabel": {
+    "message": "Reduzir fragmento"
+  },
+  "lighthouse-core/report/html/renderer/util.js | snippetExpandButtonLabel": {
+    "message": "Expandir fragmento"
+  },
+  "lighthouse-core/report/html/renderer/util.js | thirdPartyResourcesLabel": {
+    "message": "Mostrar recursos de terceiros"
+  },
+  "lighthouse-core/report/html/renderer/util.js | toplevelWarningsMessage": {
+    "message": "Ocorreram problemas que afetaram esta execução do Lighthouse:"
+  },
+  "lighthouse-core/report/html/renderer/util.js | varianceDisclaimer": {
+    "message": "Os valores são o resultado de uma estimativa e podem variar. A pontuação de desempenho é [baseada apenas nestas métricas](https://github.com/GoogleChrome/lighthouse/blob/d2ec9ffbb21de9ad1a0f86ed24575eda32c796f0/docs/scoring.md#how-are-the-scores-weighted)."
+  },
+  "lighthouse-core/report/html/renderer/util.js | warningAuditsGroupTitle": {
+    "message": "As auditorias foram concluídas com êxito, mas com avisos"
+  },
+  "lighthouse-core/report/html/renderer/util.js | warningHeader": {
+    "message": "Avisos: "
+  },
+  "stack-packs/packs/wordpress.js | efficient_animated_content": {
+    "message": "Considere carregar o GIF para um serviço que o disponibilizará para incorporação como vídeo HTML5."
+  },
+  "stack-packs/packs/wordpress.js | offscreen_images": {
+    "message": "Instale um [plug-in do WordPress de carregamento lento](https://wordpress.org/plugins/search/lazy+load/) com capacidade para adiar imagens não visíveis ou para mudar para um tema com essa funcionalidade. Considere ainda a utilização do [plug-in de AMP](https://wordpress.org/plugins/amp/)."
+  },
+  "stack-packs/packs/wordpress.js | render_blocking_resources": {
+    "message": "Há vários plug-ins do WordPress que o podem ajudar a [colocar recursos críticos inline](https://wordpress.org/plugins/search/critical+css/) ou [adiar recursos menos importantes](https://wordpress.org/plugins/search/defer+css+javascript/). Tenha em atenção que as otimizações oferecidas por estes plug-ins podem quebrar funcionalidades do seu tema ou plug-ins, pelo que poderá ser necessário efetuar alterações ao código."
+  },
+  "stack-packs/packs/wordpress.js | time_to_first_byte": {
+    "message": "As especificações dos temas, plug-ins e servidor, no seu conjunto, contribuem para o tempo de resposta do servidor. Considere procurar um tema mais otimizado, selecionar cuidadosamente um plug-in de otimização e/ou atualizar o servidor."
+  },
+  "stack-packs/packs/wordpress.js | total_byte_weight": {
+    "message": "Considere mostrar excertos nas suas listas de publicações (por exemplo, através da etiqueta de mais), reduzir o número de publicações apresentadas numa determinada página, dividir as publicações longas em várias páginas ou utilizar um plug-in para tornar o carregamento de comentários lento."
+  },
+  "stack-packs/packs/wordpress.js | unminified_css": {
+    "message": "Um número de [plug-ins do WordPress](https://wordpress.org/plugins/search/minify+css/) pode acelerar o seu site ao concatenar, reduzir e comprimir os seus estilos. Poderá ainda utilizar um processo de criação para proceder previamente à redução se possível."
+  },
+  "stack-packs/packs/wordpress.js | unminified_javascript": {
+    "message": "Um número de [plug-ins do WordPress](https://wordpress.org/plugins/search/minify+javascript/) pode acelerar o seu site ao concatenar, reduzir e comprimir os seus scripts. Poderá ainda utilizar um processo de criação para proceder previamente à redução se possível."
+  },
+  "stack-packs/packs/wordpress.js | unused_css_rules": {
+    "message": "Considere reduzir ou mudar o número de [plug-ins do WordPress](https://wordpress.org/plugins/) que carregam CSS não utilizadas na sua página. Para identificar plug-ins que estejam a adicionar CSS não reconhecido, experimente realizar a [cobertura de código](https://developers.google.com/web/updates/2017/04/devtools-release-notes#coverage) nas DevTools do Chrome. Pode identificar o tema/plug-in responsável a partir do URL da folha de estilos. Esteja atento a plug-ins que tenham muitas folhas de estilo na lista com muito vermelho na cobertura do código. Um plug-in só deve ter uma folha de estilos na fila de espera se esta for realmente utilizada na página."
+  },
+  "stack-packs/packs/wordpress.js | unused_javascript": {
+    "message": "Considere reduzir ou mudar o número de [plug-ins do WordPress](https://wordpress.org/plugins/) que carregam JavaScript não utilizado na sua página. Para identificar plug-ins que estejam a adicionar JS não reconhecido, experimente realizar a [cobertura de código](https://developers.google.com/web/updates/2017/04/devtools-release-notes#coverage) nas DevTools do Chrome. Pode identificar o tema/plug-in responsável a partir do URL do script. Esteja atento a plug-ins que tenham muitos scripts na lista com muito vermelho na cobertura do código. Um plug-in só deve ter um script na fila de espera se este for realmente utilizado na página."
+  },
+  "stack-packs/packs/wordpress.js | uses_long_cache_ttl": {
+    "message": "Leia sobre [Colocação do navegador em cache no WordPress](https://codex.wordpress.org/WordPress_Optimization#Browser_Caching)."
+  },
+  "stack-packs/packs/wordpress.js | uses_optimized_images": {
+    "message": "Considere utilizar um [plug-in do WordPress de otimização da imagem](https://wordpress.org/plugins/search/optimize+images/) que comprima as imagens, ao mesmo tempo que mantém a qualidade."
+  },
+  "stack-packs/packs/wordpress.js | uses_responsive_images": {
+    "message": "Carregue imagens diretamente a partir da [biblioteca de multimédia](https://codex.wordpress.org/Media_Library_Screen) para garantir que estão disponíveis os tamanhos de imagem necessários e, em seguida, introduza-as a partir da biblioteca de multimédia ou utilize o widget de imagens para garantir que são utilizados os tamanhos ideais das imagens (incluindo as referentes a breakpoints adaptáveis). Evite utilizar imagens de `Full Size`, a menos que as dimensões sejam adequadas à utilização. [Saiba mais](https://codex.wordpress.org/Inserting_Images_into_Posts_and_Pages#Image_Size)."
+  },
+  "stack-packs/packs/wordpress.js | uses_text_compression": {
+    "message": "Pode ativar a compressão de texto na configuração do servidor Web."
+  },
+  "stack-packs/packs/wordpress.js | uses_webp_images": {
+    "message": "Considere utilizar um [plug-in](https://wordpress.org/plugins/search/convert+webp/) ou serviço que converta automaticamente as imagens carregadas nos formatos ideais."
+  }
+}
diff --git a/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/pt.json b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/pt.json
new file mode 100644
index 0000000..7171cff
--- /dev/null
+++ b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/pt.json
@@ -0,0 +1,1541 @@
+{
+  "lighthouse-core/audits/accessibility/accesskeys.js | description": {
+    "message": "As chaves de acesso permitem ao usuário focar rapidamente determinada parte da página. Para haver uma navegação adequada, cada chave de acesso precisa ser única. [Saiba mais](https://web.dev/accesskeys/)."
+  },
+  "lighthouse-core/audits/accessibility/accesskeys.js | failureTitle": {
+    "message": "Os valores de `[accesskey]` não são únicos"
+  },
+  "lighthouse-core/audits/accessibility/accesskeys.js | title": {
+    "message": "Valores de `[accesskey]` são exclusivos"
+  },
+  "lighthouse-core/audits/accessibility/aria-allowed-attr.js | description": {
+    "message": "Cada `role` ARIA é compatível com um subconjunto específico de atributos `aria-*`. A falta de correspondência entre eles invalida os atributos `aria-*`. [Saiba mais](https://web.dev/aria-allowed-attr/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-allowed-attr.js | failureTitle": {
+    "message": "Os atributos `[aria-*]` não correspondem às próprias funções"
+  },
+  "lighthouse-core/audits/accessibility/aria-allowed-attr.js | title": {
+    "message": "Os atributos `[aria-*]` correspondem às próprias funções"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-attr.js | description": {
+    "message": "Algumas funções ARIA têm atributos obrigatórios que descrevem o estado do elemento para leitores de tela. [Saiba mais](https://web.dev/aria-required-attr/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-required-attr.js | failureTitle": {
+    "message": "`[role]`s não têm todos os atributos `[aria-*]` obrigatórios"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-attr.js | title": {
+    "message": "`[role]`s têm todos os atributos `[aria-*]` obrigatórios"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-children.js | description": {
+    "message": "Algumas funções ARIA mães precisam ter funções filhas específicas para cumprir as tarefas de acessibilidade pretendidas. [Saiba mais](https://web.dev/aria-required-children/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-required-children.js | failureTitle": {
+    "message": "Os elementos com `[role]` que exigem `[role]`s filhos específicos não estão presentes."
+  },
+  "lighthouse-core/audits/accessibility/aria-required-children.js | title": {
+    "message": "Os elementos com `[role]` que exigem `[role]`s filhos específicos estão presentes"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-parent.js | description": {
+    "message": "Algumas funções ARIA filhas precisam fazer parte das funções mães específicas para cumprir as tarefas de acessibilidade pretendidas. [Saiba mais](https://web.dev/aria-required-parent/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-required-parent.js | failureTitle": {
+    "message": "`[role]`s não fazem parte do elemento pai obrigatório"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-parent.js | title": {
+    "message": "`[role]`s fazem parte do elemento pai obrigatório"
+  },
+  "lighthouse-core/audits/accessibility/aria-roles.js | description": {
+    "message": "As funções ARIA precisam ter valores válidos para que realizem as tarefas de acessibilidade pretendidas. [Saiba mais](https://web.dev/aria-roles/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-roles.js | failureTitle": {
+    "message": "Os valores de `[role]` não são válidos"
+  },
+  "lighthouse-core/audits/accessibility/aria-roles.js | title": {
+    "message": "Os valores de `[role]` são válidos"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr-value.js | description": {
+    "message": "Tecnologias assistivas, como leitores de tela, não conseguem interpretar atributos ARIA com valores inválidos. [Saiba mais](https://web.dev/aria-valid-attr-value/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr-value.js | failureTitle": {
+    "message": "Os atributos `[aria-*]` não têm valores válidos"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr-value.js | title": {
+    "message": "Os atributos `[aria-*]` têm valores válidos"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr.js | description": {
+    "message": "As tecnologias assistivas, como leitores de tela, não conseguem interpretar atributos ARIA com nomes inválidos. [Saiba mais](https://web.dev/aria-valid-attr/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr.js | failureTitle": {
+    "message": "Os atributos `[aria-*]` não são válidos nem contêm erros de ortografia"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr.js | title": {
+    "message": "Os atributos `[aria-*]` são válidos e não contêm erros de ortografia"
+  },
+  "lighthouse-core/audits/accessibility/audio-caption.js | description": {
+    "message": "As legendas tornam os elementos de áudio úteis para pessoas surdas ou deficientes auditivas, disponibilizando informações essenciais, como quem está falando, o que a pessoa está dizendo e outras informações não relacionadas à fala. [Saiba mais](https://web.dev/audio-caption/)."
+  },
+  "lighthouse-core/audits/accessibility/audio-caption.js | failureTitle": {
+    "message": "Os elementos `<audio>` estão sem um elemento `<track>` com `[kind=\"captions\"]`."
+  },
+  "lighthouse-core/audits/accessibility/audio-caption.js | title": {
+    "message": "Os elementos `<audio>` contêm um elemento `<track>` com `[kind=\"captions\"]`"
+  },
+  "lighthouse-core/audits/accessibility/axe-audit.js | failingElementsHeader": {
+    "message": "Elementos com falha"
+  },
+  "lighthouse-core/audits/accessibility/button-name.js | description": {
+    "message": "Quando um botão não tem um nome acessível, os leitores de tela o enunciam como \"botão\", o que o inutiliza para usuários que dependem desses leitores. [Saiba mais](https://web.dev/button-name/)."
+  },
+  "lighthouse-core/audits/accessibility/button-name.js | failureTitle": {
+    "message": "Os botões não têm um nome acessível"
+  },
+  "lighthouse-core/audits/accessibility/button-name.js | title": {
+    "message": "Os botões têm um nome acessível"
+  },
+  "lighthouse-core/audits/accessibility/bypass.js | description": {
+    "message": "A adição de maneiras de ignorar conteúdo repetido permite ao usuário do teclado navegar pela página com mais eficiência. [Saiba mais](https://web.dev/bypass/)."
+  },
+  "lighthouse-core/audits/accessibility/bypass.js | failureTitle": {
+    "message": "A página não contém um cabeçalho, link de salto ou região de ponto de referência"
+  },
+  "lighthouse-core/audits/accessibility/bypass.js | title": {
+    "message": "A página contém um título, um link de salto ou uma região de ponto de referência"
+  },
+  "lighthouse-core/audits/accessibility/color-contrast.js | description": {
+    "message": "Para muitos usuários, é difícil ou impossível ler textos com baixo contraste. [Saiba mais](https://web.dev/color-contrast/)."
+  },
+  "lighthouse-core/audits/accessibility/color-contrast.js | failureTitle": {
+    "message": "As cores de primeiro e segundo plano não têm uma taxa de contraste suficiente."
+  },
+  "lighthouse-core/audits/accessibility/color-contrast.js | title": {
+    "message": "As cores de primeiro e segundo plano têm uma taxa de contraste suficiente"
+  },
+  "lighthouse-core/audits/accessibility/definition-list.js | description": {
+    "message": "Quando listas de definição não são marcadas corretamente, os leitores de tela podem produzir resultados confusos ou imprecisos. [Saiba mais](https://web.dev/definition-list/)."
+  },
+  "lighthouse-core/audits/accessibility/definition-list.js | failureTitle": {
+    "message": "`<dl>`s não contêm apenas grupos `<dt>` e `<dd>` devidamente organizados e elementos `<script>` ou `<template>`."
+  },
+  "lighthouse-core/audits/accessibility/definition-list.js | title": {
+    "message": "`<dl>`s contêm apenas os grupos `<dt>` e `<dd>` devidamente organizados ou os elementos `<script>` ou `<template>`."
+  },
+  "lighthouse-core/audits/accessibility/dlitem.js | description": {
+    "message": "Os itens da lista de definição (`<dt>` e `<dd>`) precisam ficar unidos em um elemento `<dl>` pai para garantir que os leitores de tela consigam enunciá-los corretamente. [Saiba mais](https://web.dev/dlitem/)."
+  },
+  "lighthouse-core/audits/accessibility/dlitem.js | failureTitle": {
+    "message": "Os itens da lista de definição não estão unidos em elementos `<dl>`"
+  },
+  "lighthouse-core/audits/accessibility/dlitem.js | title": {
+    "message": "Os itens da lista de definição estão unidos em elementos `<dl>`"
+  },
+  "lighthouse-core/audits/accessibility/document-title.js | description": {
+    "message": "O título oferece ao usuário do leitor de tela uma visão geral da página, além de ser extremamente útil para que os usuários de mecanismos de pesquisa determinem se uma página é relevante à pesquisa deles. [Saiba mais](https://web.dev/document-title/)."
+  },
+  "lighthouse-core/audits/accessibility/document-title.js | failureTitle": {
+    "message": "O documento não tem um elemento `<title>`"
+  },
+  "lighthouse-core/audits/accessibility/document-title.js | title": {
+    "message": "O documento tem um elemento `<title>`"
+  },
+  "lighthouse-core/audits/accessibility/duplicate-id.js | description": {
+    "message": "O valor de um atributo \"id\" precisa ser único para evitar que outras instâncias sejam ignoradas por tecnologias assistivas. [Saiba mais](https://web.dev/duplicate-id/)."
+  },
+  "lighthouse-core/audits/accessibility/duplicate-id.js | failureTitle": {
+    "message": "Os atributos `[id]` da página não são únicos"
+  },
+  "lighthouse-core/audits/accessibility/duplicate-id.js | title": {
+    "message": "Os atributos `[id]` da página são únicos"
+  },
+  "lighthouse-core/audits/accessibility/frame-title.js | description": {
+    "message": "Os usuários de leitores de tela utilizam títulos para descrever o conteúdo de frames. [Saiba mais](https://web.dev/frame-title/)."
+  },
+  "lighthouse-core/audits/accessibility/frame-title.js | failureTitle": {
+    "message": "Os elementos `<frame>` ou `<iframe>` não têm um título"
+  },
+  "lighthouse-core/audits/accessibility/frame-title.js | title": {
+    "message": "Os elementos `<frame>` ou `<iframe>` têm um título"
+  },
+  "lighthouse-core/audits/accessibility/html-has-lang.js | description": {
+    "message": "Se uma página não especificar um atributo lang, o leitor de tela presumirá que a página está no idioma padrão que o usuário escolheu ao configurar esse leitor. Se a página não estiver no idioma padrão, o leitor de tela poderá ler o texto dela incorretamente. [Saiba mais](https://web.dev/html-has-lang/)."
+  },
+  "lighthouse-core/audits/accessibility/html-has-lang.js | failureTitle": {
+    "message": "O elemento `<html>` não tem um atributo `[lang]`"
+  },
+  "lighthouse-core/audits/accessibility/html-has-lang.js | title": {
+    "message": "O elemento `<html>` tem um atributo `[lang]`"
+  },
+  "lighthouse-core/audits/accessibility/html-lang-valid.js | description": {
+    "message": "A especificação de um [idioma BCP 47](https://www.w3.org/International/questions/qa-choosing-language-tags#question) válido ajuda os leitores de tela a enunciar o texto corretamente. [Saiba mais](https://web.dev/html-lang-valid/)."
+  },
+  "lighthouse-core/audits/accessibility/html-lang-valid.js | failureTitle": {
+    "message": "O elemento `<html>` não tem um valor válido para o atributo `[lang]`."
+  },
+  "lighthouse-core/audits/accessibility/html-lang-valid.js | title": {
+    "message": "O elemento `<html>` tem um valor válido para o atributo `[lang]`"
+  },
+  "lighthouse-core/audits/accessibility/image-alt.js | description": {
+    "message": "O texto dos elementos informativos precisa ser alternativo, breve e descritivo. Os elementos decorativos podem ser ignorados com um atributo alternativo vazio. [Saiba mais](https://web.dev/image-alt/)."
+  },
+  "lighthouse-core/audits/accessibility/image-alt.js | failureTitle": {
+    "message": "Os elementos de imagem não têm atributos `[alt]`"
+  },
+  "lighthouse-core/audits/accessibility/image-alt.js | title": {
+    "message": "Os elementos de imagem têm atributos `[alt]`"
+  },
+  "lighthouse-core/audits/accessibility/input-image-alt.js | description": {
+    "message": "Quando uma imagem for usada como um botão `<input>`, a oferta de texto alternativo poderá ajudar o usuário do leitor de tela a entender a finalidade do botão. [Saiba mais](https://web.dev/input-image-alt/)."
+  },
+  "lighthouse-core/audits/accessibility/input-image-alt.js | failureTitle": {
+    "message": "Os elementos `<input type=\"image\">` não têm texto `[alt]`"
+  },
+  "lighthouse-core/audits/accessibility/input-image-alt.js | title": {
+    "message": "Os elementos `<input type=\"image\">` têm texto `[alt]`"
+  },
+  "lighthouse-core/audits/accessibility/label.js | description": {
+    "message": "As etiquetas garantem que os controles de formulário sejam enunciados corretamente por tecnologias assistivas, como leitores de tela. [Saiba mais](https://web.dev/label/)."
+  },
+  "lighthouse-core/audits/accessibility/label.js | failureTitle": {
+    "message": "Os elementos de formulário não têm etiquetas associadas"
+  },
+  "lighthouse-core/audits/accessibility/label.js | title": {
+    "message": "Os elementos de formulário têm etiquetas associadas"
+  },
+  "lighthouse-core/audits/accessibility/layout-table.js | description": {
+    "message": "Não inclua elementos de dados, como os elementos \"th\" ou \"caption\", nem o atributo \"summary\" em uma tabela utilizada para fins de layout, já que isso pode gerar uma experiência confusa para os usuários de leitores de telas. [Saiba mais](https://web.dev/layout-table/)."
+  },
+  "lighthouse-core/audits/accessibility/layout-table.js | failureTitle": {
+    "message": "Os elementos `<table>` de apresentação não evitam o uso de `<th>`, `<caption>` ou do atributo `[summary]`."
+  },
+  "lighthouse-core/audits/accessibility/layout-table.js | title": {
+    "message": "Os elementos `<table>` de apresentação evitam o uso de `<th>`, `<caption>` ou do atributo `[summary]`."
+  },
+  "lighthouse-core/audits/accessibility/link-name.js | description": {
+    "message": "Textos de link (e textos alternativos de imagens, quando utilizados como link) compreensíveis, únicos e focalizáveis melhoram a experiência de navegação para usuários de leitores de tela. [Saiba mais](https://web.dev/link-name/)."
+  },
+  "lighthouse-core/audits/accessibility/link-name.js | failureTitle": {
+    "message": "Os links não têm um nome compreensível"
+  },
+  "lighthouse-core/audits/accessibility/link-name.js | title": {
+    "message": "Os links têm um nome compreensível"
+  },
+  "lighthouse-core/audits/accessibility/list.js | description": {
+    "message": "Os leitores de tela têm uma maneira específica de enunciar listas. Uma estrutura de lista adequada melhora os resultados do leitor de tela. [Saiba mais](https://web.dev/list/)."
+  },
+  "lighthouse-core/audits/accessibility/list.js | failureTitle": {
+    "message": "As listas não contêm apenas elementos `<li>` e elementos compatíveis com script (`<script>` e `<template>`)."
+  },
+  "lighthouse-core/audits/accessibility/list.js | title": {
+    "message": "As listas contêm somente elementos `<li>` e elementos compatíveis com script (`<script>` e `<template>`)."
+  },
+  "lighthouse-core/audits/accessibility/listitem.js | description": {
+    "message": "Os leitores de tela exigem que os itens de lista (`<li>`) estejam contidos em um `<ul>` ou `<ol>` pai para serem enunciados corretamente. [Saiba mais](https://web.dev/listitem/)."
+  },
+  "lighthouse-core/audits/accessibility/listitem.js | failureTitle": {
+    "message": "Os itens de lista (`<li>`) não estão contidos nos elementos pai `<ul>` ou `<ol>`."
+  },
+  "lighthouse-core/audits/accessibility/listitem.js | title": {
+    "message": "Os itens de lista (`<li>`) estão contidos nos elementos pai `<ul>` ou `<ol>`"
+  },
+  "lighthouse-core/audits/accessibility/meta-refresh.js | description": {
+    "message": "O usuário não espera a atualização automática da página, o que move o foco novamente para a parte superior dela. Isso pode causar uma experiência confusa ou frustrante. [Saiba mais](https://web.dev/meta-refresh/)."
+  },
+  "lighthouse-core/audits/accessibility/meta-refresh.js | failureTitle": {
+    "message": "O documento usa `<meta http-equiv=\"refresh\">`"
+  },
+  "lighthouse-core/audits/accessibility/meta-refresh.js | title": {
+    "message": "O documento não usa `<meta http-equiv=\"refresh\">`"
+  },
+  "lighthouse-core/audits/accessibility/meta-viewport.js | description": {
+    "message": "A desativação do zoom gera problemas para usuários com baixa visão que utilizam a ampliação de tela para enxergar corretamente o conteúdo de uma página da Web. [Saiba mais](https://web.dev/meta-viewport/)."
+  },
+  "lighthouse-core/audits/accessibility/meta-viewport.js | failureTitle": {
+    "message": "`[user-scalable=\"no\"]` é usado no elemento `<meta name=\"viewport\">` ou o atributo `[maximum-scale]` é menor que 5."
+  },
+  "lighthouse-core/audits/accessibility/meta-viewport.js | title": {
+    "message": "`[user-scalable=\"no\"]` não é usado no elemento `<meta name=\"viewport\">`, e o atributo `[maximum-scale]` não é menor que 5."
+  },
+  "lighthouse-core/audits/accessibility/object-alt.js | description": {
+    "message": "Os leitores de tela não traduzem conteúdo não textual. A adição de texto alternativo aos elementos `<object>` ajuda os leitores de tela a transmitir o significado para os usuários. [Saiba mais](https://web.dev/object-alt/)."
+  },
+  "lighthouse-core/audits/accessibility/object-alt.js | failureTitle": {
+    "message": "Os elementos `<object>` não têm texto `[alt]`"
+  },
+  "lighthouse-core/audits/accessibility/object-alt.js | title": {
+    "message": "Os elementos `<object>` têm texto `[alt]`"
+  },
+  "lighthouse-core/audits/accessibility/tabindex.js | description": {
+    "message": "Um valor maior que 0 indica uma ordem explícita de navegação. Embora tecnicamente válido, isso costuma gerar experiências frustrantes para os usuários que utilizam tecnologias assistivas. [Saiba mais](https://web.dev/tabindex/)."
+  },
+  "lighthouse-core/audits/accessibility/tabindex.js | failureTitle": {
+    "message": "Alguns elementos têm um valor de `[tabindex]` maior que 0"
+  },
+  "lighthouse-core/audits/accessibility/tabindex.js | title": {
+    "message": "Nenhum elemento tem um valor de `[tabindex]` maior que 0"
+  },
+  "lighthouse-core/audits/accessibility/td-headers-attr.js | description": {
+    "message": "Os leitores de tela têm recursos para facilitar a navegação em tabelas. Para melhorar a experiência dos usuários de leitores de tela, as células `<td>` que usam o atributo `[headers]` precisam referenciar apenas outras células na mesma tabela. [Saiba mais](https://web.dev/td-headers-attr/)."
+  },
+  "lighthouse-core/audits/accessibility/td-headers-attr.js | failureTitle": {
+    "message": "As células de um elemento `<table>` que usa o atributo `[headers]` se referem às outras células dessa mesma tabela."
+  },
+  "lighthouse-core/audits/accessibility/td-headers-attr.js | title": {
+    "message": "As células em um elemento `<table>` que usam o atributo `[headers]` se referem apenas às outras células da mesma tabela."
+  },
+  "lighthouse-core/audits/accessibility/th-has-data-cells.js | description": {
+    "message": "Os leitores de tela têm recursos para facilitar a navegação em tabelas. Garantir que os cabeçalhos das tabelas se refiram sempre a alguns conjuntos de células pode melhorar a experiência dos usuários de leitores de tela. [Saiba mais](https://web.dev/th-has-data-cells/)."
+  },
+  "lighthouse-core/audits/accessibility/th-has-data-cells.js | failureTitle": {
+    "message": "Os elementos `<th>` e os elementos com `[role=\"columnheader\"/\"rowheader\"]` não têm as células de dados descritas."
+  },
+  "lighthouse-core/audits/accessibility/th-has-data-cells.js | title": {
+    "message": "Os elementos `<th>` e os elementos com `[role=\"columnheader\"/\"rowheader\"]` têm as células de dados descritas."
+  },
+  "lighthouse-core/audits/accessibility/valid-lang.js | description": {
+    "message": "A especificação de um [idioma BCP 47](https://www.w3.org/International/questions/qa-choosing-language-tags#question) válido nos elementos ajuda a garantir que o texto seja pronunciado corretamente pelo leitor de tela. [Saiba mais](https://web.dev/valid-lang/)."
+  },
+  "lighthouse-core/audits/accessibility/valid-lang.js | failureTitle": {
+    "message": "Os atributos `[lang]` não têm um valor válido"
+  },
+  "lighthouse-core/audits/accessibility/valid-lang.js | title": {
+    "message": "Os atributos `[lang]` têm um valor válido"
+  },
+  "lighthouse-core/audits/accessibility/video-caption.js | description": {
+    "message": "Quando um vídeo é acompanhado de legendas, as pessoas surdas e deficientes auditivas têm mais facilidade para acessar as informações dele. [Saiba mais](https://web.dev/video-caption/)."
+  },
+  "lighthouse-core/audits/accessibility/video-caption.js | failureTitle": {
+    "message": "Os elementos `<video>` não contêm um elemento `<track>` com `[kind=\"captions\"]`."
+  },
+  "lighthouse-core/audits/accessibility/video-caption.js | title": {
+    "message": "Os elementos `<video>` contêm um elemento `<track>` com `[kind=\"captions\"]`"
+  },
+  "lighthouse-core/audits/accessibility/video-description.js | description": {
+    "message": "As descrições de áudio trazem informações importantes que não podem ser transmitidas por meio do diálogo nos vídeos, por exemplo, expressões faciais e cenários. [Saiba mais](https://web.dev/video-description/)."
+  },
+  "lighthouse-core/audits/accessibility/video-description.js | failureTitle": {
+    "message": "Os elementos `<video>` não contêm um elemento `<track>` com `[kind=\"description\"]`."
+  },
+  "lighthouse-core/audits/accessibility/video-description.js | title": {
+    "message": "Os elementos `<video>` contêm um elemento `<track>` com `[kind=\"description\"]`"
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | description": {
+    "message": "Para ter uma exibição ideal no iOS quando o usuário adiciona um Progressive Web App à tela inicial, defina um `apple-touch-icon`. Ele precisa apontar para um PNG quadrado não transparente de 192 px (ou 180 px). [Saiba mais](https://developers.google.com/web/fundamentals/design-and-ux/browser-customization/)."
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | failureTitle": {
+    "message": "Não oferece um `apple-touch-icon` válido"
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | precomposedWarning": {
+    "message": "`apple-touch-icon-precomposed` está desatualizado. Use `apple-touch-icon`."
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | title": {
+    "message": "Disponibiliza um `apple-touch-icon` válido"
+  },
+  "lighthouse-core/audits/bootup-time.js | chromeExtensionsWarning": {
+    "message": "As extensões do Chrome afetaram negativamente o desempenho de carregamento desta página. Tente fazer a auditoria da página no modo de navegação anônima ou em um perfil do Chrome sem extensões."
+  },
+  "lighthouse-core/audits/bootup-time.js | columnScriptEval": {
+    "message": "Avaliação de script"
+  },
+  "lighthouse-core/audits/bootup-time.js | columnScriptParse": {
+    "message": "Análise de script"
+  },
+  "lighthouse-core/audits/bootup-time.js | columnTotal": {
+    "message": "Tempo total de CPU"
+  },
+  "lighthouse-core/audits/bootup-time.js | description": {
+    "message": "Diminua o tempo gasto na análise, compilação e execução de JS. Você perceberá que exibir payloads de JS menores ajuda a fazer isso. [Saiba mais](https://developers.google.com/web/tools/lighthouse/audits/bootup)."
+  },
+  "lighthouse-core/audits/bootup-time.js | failureTitle": {
+    "message": "Reduza o tempo de execução de JavaScript"
+  },
+  "lighthouse-core/audits/bootup-time.js | title": {
+    "message": "Tempo de execução de JavaScript"
+  },
+  "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | description": {
+    "message": "GIFs grandes não são eficientes para exibir conteúdo animado. Use vídeos MPEG4/WebM para animações e PNG/WebP para imagens estáticas em vez de GIF para economizar bytes de rede. [Saiba mais](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/replace-animated-gifs-with-video/)"
+  },
+  "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | title": {
+    "message": "Use formatos de vídeo para conteúdo animado"
+  },
+  "lighthouse-core/audits/byte-efficiency/offscreen-images.js | description": {
+    "message": "A fim de reduzir o tempo para interação da página, faça o carregamento lento de imagens fora da tela e ocultas quando todos os recursos críticos já estiverem carregados. [Saiba mais](https://developers.google.com/web/tools/lighthouse/audits/offscreen-images)."
+  },
+  "lighthouse-core/audits/byte-efficiency/offscreen-images.js | title": {
+    "message": "Adie imagens fora da tela"
+  },
+  "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | description": {
+    "message": "Os recursos estão bloqueando a primeira exibição da sua página. Exiba JS/CSS crítico inline e adie todos os JS/estilos não críticos. [Saiba mais](https://developers.google.com/web/tools/lighthouse/audits/blocking-resources)."
+  },
+  "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | title": {
+    "message": "Elimine recursos que impedem a renderização"
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | description": {
+    "message": "Grandes payloads de rede geram custos para o usuário e estão diretamente relacionados a tempos de carregamento maiores. [Saiba mais](https://developers.google.com/web/tools/lighthouse/audits/network-payloads)."
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | displayValue": {
+    "message": "O tamanho total foi de {totalBytes, number, bytes} KB"
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | failureTitle": {
+    "message": "Evite payloads de rede muito grandes"
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | title": {
+    "message": "Evita payloads de rede muito grandes"
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-css.js | description": {
+    "message": "A redução de arquivos CSS pode diminuir o tamanho do payload de rede. [Saiba mais](https://developers.google.com/web/tools/lighthouse/audits/minify-css)."
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-css.js | title": {
+    "message": "Reduza o CSS"
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | description": {
+    "message": "A redução de arquivos JavaScript pode diminuir o tamanho de payloads e o tempo de análise de scripts. [Saiba mais](https://developers.google.com/speed/docs/insights/MinifyResources)."
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | title": {
+    "message": "Reduza o JavaScript"
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | description": {
+    "message": "Remova as regras inativas das folhas de estilo e adie o carregamento de CSS não usado para conteúdo acima da dobra, a fim de reduzir o consumo desnecessário de bytes da atividade da rede. [Saiba mais](https://developers.google.com/web/tools/lighthouse/audits/unused-css)."
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | title": {
+    "message": "Remova CSS não utilizado"
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-javascript.js | description": {
+    "message": "Remova o JavaScript não utilizado para reduzir o consumo de bytes da atividade de rede."
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-javascript.js | title": {
+    "message": "Remova o JavaScript não utilizado"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | description": {
+    "message": "Um cache com ciclo de vida longo pode acelerar visitas repetidas à sua página. [Saiba mais](https://developers.google.com/web/tools/lighthouse/audits/cache-policy)."
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 recurso encontrado}one{# recurso encontrado}other{# recursos encontrados}}"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | failureTitle": {
+    "message": "Disponibilize recursos estáticos com uma política de cache eficiente"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | title": {
+    "message": "Usa uma política de cache eficiente em recursos estáticos"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | description": {
+    "message": "Imagens otimizadas são carregadas mais rapidamente e consomem menos dados da rede celular. [Saiba mais](https://developers.google.com/web/tools/lighthouse/audits/optimize-images)."
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | title": {
+    "message": "Codifique as imagens com eficiência"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | description": {
+    "message": "Veicule imagens que tenham o tamanho adequado para economizar dados da rede celular e melhorar o tempo de carregamento. [Saiba mais](https://developers.google.com/web/tools/lighthouse/audits/oversized-images)."
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | title": {
+    "message": "Defina um tamanho adequado para as imagens"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | description": {
+    "message": "Os recursos baseados em texto precisam ser veiculados com compactação (gzip, deflate ou brotli) para minimizar o total de bytes da rede. [Saiba mais](https://developers.google.com/web/tools/lighthouse/audits/text-compression)."
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | title": {
+    "message": "Ative a compactação de texto"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | description": {
+    "message": "Formatos de imagem como JPEG 2000, JPEG XR e WebP geralmente oferecem uma melhor compactação do que PNG ou JPEG, o que significa downloads mais rápidos e menor consumo de dados. [Saiba mais](https://developers.google.com/web/tools/lighthouse/audits/webp)."
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | title": {
+    "message": "Disponibilize imagens em formatos de última geração"
+  },
+  "lighthouse-core/audits/content-width.js | description": {
+    "message": "Se a largura do conteúdo do seu app não corresponder à largura da janela de visualização, não será possível otimizar o app para telas de dispositivos móveis. [Saiba mais](https://developers.google.com/web/tools/lighthouse/audits/content-sized-correctly-for-viewport)."
+  },
+  "lighthouse-core/audits/content-width.js | explanation": {
+    "message": "O tamanho da janela de visualização de {innerWidth} px não corresponde ao tamanho da janela {outerWidth} px."
+  },
+  "lighthouse-core/audits/content-width.js | failureTitle": {
+    "message": "O conteúdo não está no tamanho correto para a janela de visualização"
+  },
+  "lighthouse-core/audits/content-width.js | title": {
+    "message": "O conteúdo está no tamanho correto para a janela de visualização"
+  },
+  "lighthouse-core/audits/critical-request-chains.js | description": {
+    "message": "As cadeias de solicitação críticas abaixo mostram quais recursos são carregados com prioridade alta. Diminua o tamanho das cadeias, reduza o tamanho do download de recursos ou adie o download de recursos desnecessários para melhorar o carregamento de página. [Saiba mais](https://developers.google.com/web/tools/lighthouse/audits/critical-request-chains)."
+  },
+  "lighthouse-core/audits/critical-request-chains.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 rede encontrada}one{# rede encontrada}other{# redes encontradas}}"
+  },
+  "lighthouse-core/audits/critical-request-chains.js | title": {
+    "message": "Reduza a profundidade de solicitações críticas"
+  },
+  "lighthouse-core/audits/deprecations.js | columnDeprecate": {
+    "message": "Suspensão de uso/aviso"
+  },
+  "lighthouse-core/audits/deprecations.js | columnLine": {
+    "message": "Linha"
+  },
+  "lighthouse-core/audits/deprecations.js | description": {
+    "message": "As APIs obsoletas acabarão sendo removidas do navegador. [Saiba mais](https://web.dev/deprecations)."
+  },
+  "lighthouse-core/audits/deprecations.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 aviso encontrado}one{# aviso encontrado}other{# avisos encontrados}}"
+  },
+  "lighthouse-core/audits/deprecations.js | failureTitle": {
+    "message": "Utiliza APIs obsoletas"
+  },
+  "lighthouse-core/audits/deprecations.js | title": {
+    "message": "Evita APIs obsoletas"
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | description": {
+    "message": "O cache de aplicativo está obsoleto. [Saiba mais](https://web.dev/appcache-manifest)."
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | displayValue": {
+    "message": "\"{AppCacheManifest}\" encontrado"
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | failureTitle": {
+    "message": "Usa cache de aplicativo"
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | title": {
+    "message": "Evita o cache de aplicativo"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | description": {
+    "message": "A especificação de um doctype evita que o navegador alterne para o modo quirks. [Saiba mais](https://web.dev/doctype)."
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationBadDoctype": {
+    "message": "O nome do doctype precisa ser o `html` da string em letra minúscula"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationNoDoctype": {
+    "message": "O documento precisa conter um doctype"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationPublicId": {
+    "message": "O ID público deveria ser uma string vazia"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationSystemId": {
+    "message": "O ID do sistema deveria ser uma string vazia"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | failureTitle": {
+    "message": "A página não tem o doctype HTML e, assim, aciona o modo quirks"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | title": {
+    "message": "A página tem o doctype HTML"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | columnElement": {
+    "message": "Elemento"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | columnStatistic": {
+    "message": "Estatística"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | columnValue": {
+    "message": "Valor"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | description": {
+    "message": "Os engenheiros do navegador recomendam páginas com menos de ~1.500 elementos DOM. A posição ideal é uma profundidade de árvore com menos de 32 elementos e menos de 60 elementos filhos/pais. Um DOM grande pode aumentar o uso da memória, causar [cálculos de estilo](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations) mais longos e produzir [reflows de layout](https://developers.google.com/speed/articles/reflow) dispendiosos. [Saiba mais](https://web.dev/dom-size)."
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 elemento}one{# elemento}other{# elementos}}"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | failureTitle": {
+    "message": "Evite DOM de tamanho excessivo"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | statisticDOMDepth": {
+    "message": "Profundidade máxima de DOM"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | statisticDOMElements": {
+    "message": "Total de elementos DOM"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | statisticDOMWidth": {
+    "message": "Máximo de elementos filhos"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | title": {
+    "message": "Evita DOM de tamanho excessivo"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | columnRel": {
+    "message": "Rel"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | columnTarget": {
+    "message": "Destino"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | description": {
+    "message": "Adicione `rel=\"noopener\"` ou `rel=\"noreferrer\"` a qualquer link externo para melhorar o desempenho e evitar vulnerabilidades de segurança. [Saiba mais](https://web.dev/external-anchors-use-rel-noopener)."
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | failureTitle": {
+    "message": "Links para destinos de origem cruzada não são seguros"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | title": {
+    "message": "Links para destinos de origem cruzada são seguros"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | warning": {
+    "message": "Não é possível determinar o destino do item fixo ({anchorHTML}). Se não for usado como um hiperlink, remova target=_blank."
+  },
+  "lighthouse-core/audits/dobetterweb/geolocation-on-start.js | description": {
+    "message": "Os usuários não confiam ou ficam confusos com sites que solicitam a localização sem contexto. Vincule a solicitação a uma ação do usuário. [Saiba mais](https://web.dev/geolocation-on-start)."
+  },
+  "lighthouse-core/audits/dobetterweb/geolocation-on-start.js | failureTitle": {
+    "message": "Solicita a permissão de geolocalização no carregamento de página"
+  },
+  "lighthouse-core/audits/dobetterweb/geolocation-on-start.js | title": {
+    "message": "Evita o pedido da permissão de geolocalização no carregamento de página"
+  },
+  "lighthouse-core/audits/dobetterweb/js-libraries.js | columnVersion": {
+    "message": "Versão"
+  },
+  "lighthouse-core/audits/dobetterweb/js-libraries.js | description": {
+    "message": "Todas as bibliotecas JavaScript de front-end detectadas na página. [Saiba mais](https://web.dev/js-libraries)."
+  },
+  "lighthouse-core/audits/dobetterweb/js-libraries.js | title": {
+    "message": "Bibliotecas JavaScript detectadas"
+  },
+  "lighthouse-core/audits/dobetterweb/no-document-write.js | description": {
+    "message": "Para usuários em conexões lentas, os scripts externos injetados dinamicamente via `document.write()` podem atrasar o carregamento de página em dezenas de segundos. [Saiba mais](https://web.dev/no-document-write)."
+  },
+  "lighthouse-core/audits/dobetterweb/no-document-write.js | failureTitle": {
+    "message": "Usa `document.write()`"
+  },
+  "lighthouse-core/audits/dobetterweb/no-document-write.js | title": {
+    "message": "Evita `document.write()`"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | columnSeverity": {
+    "message": "Maior gravidade"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | columnVersion": {
+    "message": "Versão da biblioteca"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | columnVuln": {
+    "message": "Contagem de vulnerabilidades"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | description": {
+    "message": "Alguns scripts de terceiros podem conter vulnerabilidades de segurança conhecidas, facilmente identificadas e exploradas por invasores. [Saiba mais](https://web.dev/no-vulnerable-libraries)."
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 vulnerabilidade detectada}one{# vulnerabilidade detectada}other{# vulnerabilidades detectadas}}"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | failureTitle": {
+    "message": "Inclui bibliotecas JavaScript de front-end com vulnerabilidades de segurança conhecidas"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | rowSeverityHigh": {
+    "message": "Alto"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | rowSeverityLow": {
+    "message": "Baixo"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | rowSeverityMedium": {
+    "message": "Médio"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | title": {
+    "message": "Evita bibliotecas JavaScript de front-end com vulnerabilidades de segurança conhecidas"
+  },
+  "lighthouse-core/audits/dobetterweb/notification-on-start.js | description": {
+    "message": "Os usuários não confiam ou ficam confusos com sites que solicitam o envio de notificações sem contexto. Vincule a solicitação a gestos do usuário. [Saiba mais](https://web.dev/notification-on-start)."
+  },
+  "lighthouse-core/audits/dobetterweb/notification-on-start.js | failureTitle": {
+    "message": "Solicita a permissão de notificação no carregamento de página"
+  },
+  "lighthouse-core/audits/dobetterweb/notification-on-start.js | title": {
+    "message": "Evita o pedido da permissão de notificação no carregamento de página"
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | columnFailingElem": {
+    "message": "Elementos com falha"
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | description": {
+    "message": "Impedir a colagem da senha prejudica a política de boa segurança. [Saiba mais](https://web.dev/password-inputs-can-be-pasted-into)."
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | failureTitle": {
+    "message": "Evita que o usuário cole nos campos de senha"
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | title": {
+    "message": "Permite que o usuário cole nos campos de senha"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | columnProtocol": {
+    "message": "Protocolo"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | description": {
+    "message": "HTTP/2 oferece muitos benefícios com relação ao HTTP/1.1, incluindo cabeçalhos binários, multiplexação e push do servidor. [Saiba mais](https://web.dev/uses-http2)."
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 solicitação não veiculada via HTTP/2}one{# solicitação não veiculada via HTTP/2}other{# solicitações não veiculadas via HTTP/2}}"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | failureTitle": {
+    "message": "Não utiliza HTTP/2 para todos os recursos"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | title": {
+    "message": "Usa HTTP/2 para os próprios recursos"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-passive-event-listeners.js | description": {
+    "message": "Marque os listeners de eventos de toque e rolagem como `passive` para melhorar o desempenho de rolagem da página. [Saiba mais](https://web.dev/uses-passive-event-listeners)."
+  },
+  "lighthouse-core/audits/dobetterweb/uses-passive-event-listeners.js | failureTitle": {
+    "message": "Não utiliza listeners passivos para melhorar o desempenho de rolagem"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-passive-event-listeners.js | title": {
+    "message": "Utiliza listeners passivos para melhorar o desempenho de rolagem"
+  },
+  "lighthouse-core/audits/errors-in-console.js | columnDesc": {
+    "message": "Descrição"
+  },
+  "lighthouse-core/audits/errors-in-console.js | description": {
+    "message": "Os erros registrados no console indicam problemas não resolvidos. Eles podem ocorrer devido a falhas de solicitação de rede e outras questões relacionadas ao navegador. [Saiba mais](https://web.dev/errors-in-console)"
+  },
+  "lighthouse-core/audits/errors-in-console.js | failureTitle": {
+    "message": "Erros do navegador foram registrados no console"
+  },
+  "lighthouse-core/audits/errors-in-console.js | title": {
+    "message": "Nenhum erro do navegador registrado no console"
+  },
+  "lighthouse-core/audits/font-display.js | description": {
+    "message": "Use o recurso CSS de exibição de fonte para garantir que o texto possa ser visto pelo usuário enquanto as webfonts são carregadas. [Saiba mais](https://developers.google.com/web/updates/2016/02/font-display)."
+  },
+  "lighthouse-core/audits/font-display.js | failureTitle": {
+    "message": "Garanta que o texto continue visível durante o carregamento da webfont"
+  },
+  "lighthouse-core/audits/font-display.js | title": {
+    "message": "Todo o texto continua visível durante o carregamento da webfont"
+  },
+  "lighthouse-core/audits/font-display.js | undeclaredFontURLWarning": {
+    "message": "O Lighthouse não conseguiu verificar automaticamente o valor de exibição da fonte para o seguinte URL: {fontURL}."
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | columnActual": {
+    "message": "Proporção (real)"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | columnDisplayed": {
+    "message": "Proporção (exibida)"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | description": {
+    "message": "As dimensões de exibição da imagem devem corresponder à proporção. [Saiba mais](https://web.dev/image-aspect-ratio)."
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | failureTitle": {
+    "message": "Exibe imagens com a proporção incorreta"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | title": {
+    "message": "Exibe imagens com a proporção correta"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | warningCompute": {
+    "message": "Informações inválidas para tamanho de imagem {url}"
+  },
+  "lighthouse-core/audits/installable-manifest.js | description": {
+    "message": "Os navegadores podem solicitar automaticamente aos usuários que adicionem o app à tela inicial deles, o que pode aumentar a interação. [Saiba mais](https://developers.google.com/web/tools/lighthouse/audits/install-prompt)."
+  },
+  "lighthouse-core/audits/installable-manifest.js | failureTitle": {
+    "message": "O manifesto do app da Web não atende os requisitos de instabilidade."
+  },
+  "lighthouse-core/audits/installable-manifest.js | title": {
+    "message": "O manifesto do app de Web atende aos requisitos de instabilidade."
+  },
+  "lighthouse-core/audits/is-on-https.js | columnInsecureURL": {
+    "message": "URL não seguro"
+  },
+  "lighthouse-core/audits/is-on-https.js | description": {
+    "message": "Todos os sites devem ser protegidos com HTTPS, mesmo aqueles que não lidam com dados confidenciais. O HTTPS evita que invasores falsifiquem ou escutem passivamente a comunicação entre o app e o usuário, além de ser um pré-requisito para HTTP/2 e muitas novas APIs para plataforma da Web. [Saiba mais](https://web.dev/is-on-https)."
+  },
+  "lighthouse-core/audits/is-on-https.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 solicitação não segura encontrada}one{# solicitação não segura encontrada}other{# solicitações não seguras encontradas}}"
+  },
+  "lighthouse-core/audits/is-on-https.js | failureTitle": {
+    "message": "Não utiliza HTTPS"
+  },
+  "lighthouse-core/audits/is-on-https.js | title": {
+    "message": "Utiliza HTTPS"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | description": {
+    "message": "Um carregamento de página rápido em uma rede celular garante uma boa experiência do usuário em dispositivos móveis. [Saiba mais](https://developers.google.com/web/tools/lighthouse/audits/fast-3g)."
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | displayValueText": {
+    "message": "Interativa em {timeInMs, number, seconds} s"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | displayValueTextWithOverride": {
+    "message": "Interativa na rede móvel simulada em {timeInMs, number, seconds} s"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | explanationLoadSlow": {
+    "message": "Esta página está carregando muito lentamente e está há 10 segundos sem interagir. Consulte a seção \"Desempenho\" e veja oportunidades e diagnósticos para saber como melhorar o desempenho."
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | failureTitle": {
+    "message": "A velocidade de carregamento da página não é suficiente em redes móveis"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | title": {
+    "message": "A velocidade de carregamento da página é suficiente em redes móveis"
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | columnCategory": {
+    "message": "Categoria"
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | description": {
+    "message": "Reduza o tempo gasto com análise, compilação e execução de JS. Você perceberá que exibir payloads de JS menores ajuda a fazer isso."
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | failureTitle": {
+    "message": "Minimize o trabalho da thread principal"
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | title": {
+    "message": "Minimiza o trabalho da thread principal"
+  },
+  "lighthouse-core/audits/manual/pwa-cross-browser.js | description": {
+    "message": "Os sites precisam funcionar em todos os principais navegadores para que sejam acessíveis ao maior número de usuários. [Saiba mais](https://developers.google.com/web/progressive-web-apps/checklist#site-works-cross-browser)."
+  },
+  "lighthouse-core/audits/manual/pwa-cross-browser.js | title": {
+    "message": "O site funciona em diferentes navegadores"
+  },
+  "lighthouse-core/audits/manual/pwa-each-page-has-url.js | description": {
+    "message": "É necessário que as páginas individuais permitam links diretos via URL e que os URLs sejam exclusivos para o propósito de compartilhamento em mídias sociais. [Saiba mais](https://developers.google.com/web/progressive-web-apps/checklist#each-page-has-a-url)."
+  },
+  "lighthouse-core/audits/manual/pwa-each-page-has-url.js | title": {
+    "message": "Cada página tem um URL."
+  },
+  "lighthouse-core/audits/manual/pwa-page-transitions.js | description": {
+    "message": "As transições precisam ser dinâmicas durante a navegação por toque, mesmo em uma conexão de rede lenta. Isso é essencial para a percepção de desempenho. [Saiba mais](https://developers.google.com/web/progressive-web-apps/checklist#page-transitions-dont-feel-like-they-block-on-the-network)."
+  },
+  "lighthouse-core/audits/manual/pwa-page-transitions.js | title": {
+    "message": "As transições de página não devem parecer bloqueadas pelo carregamento da rede."
+  },
+  "lighthouse-core/audits/metrics/estimated-input-latency.js | description": {
+    "message": "\"Latência de entrada estimada\" é uma estimativa de quanto tempo o app leva para responder à entrada do usuário, em milésimos de segundo, durante a janela de carregamento de página mais movimentada de cinco segundos. Se a latência for maior que 50 ms, o usuário poderá notar lentidão no app. [Saiba mais](https://developers.google.com/web/tools/lighthouse/audits/estimated-input-latency)."
+  },
+  "lighthouse-core/audits/metrics/estimated-input-latency.js | title": {
+    "message": "Latência de entrada estimada"
+  },
+  "lighthouse-core/audits/metrics/first-contentful-paint.js | description": {
+    "message": "\"Primeira exibição de conteúdo\" marca o momento em que o primeiro texto ou imagem é disponibilizado. [Saiba mais](https://developers.google.com/web/tools/lighthouse/audits/first-contentful-paint)."
+  },
+  "lighthouse-core/audits/metrics/first-contentful-paint.js | title": {
+    "message": "Primeiro aparecimento com conteúdo"
+  },
+  "lighthouse-core/audits/metrics/first-cpu-idle.js | description": {
+    "message": "\"Primeira CPU ociosa\" marca a primeira vez que o thread principal da página fica silencioso o suficiente para lidar com a entrada. [Saiba mais](https://developers.google.com/web/tools/lighthouse/audits/first-interactive)."
+  },
+  "lighthouse-core/audits/metrics/first-cpu-idle.js | title": {
+    "message": "Primeira CPU ociosa"
+  },
+  "lighthouse-core/audits/metrics/first-meaningful-paint.js | description": {
+    "message": "\"Primeira exibição significativa\" marca o momento em que o conteúdo principal de uma página se torna visível. [Saiba mais](https://developers.google.com/web/tools/lighthouse/audits/first-meaningful-paint)."
+  },
+  "lighthouse-core/audits/metrics/first-meaningful-paint.js | title": {
+    "message": "Primeira exibição importante"
+  },
+  "lighthouse-core/audits/metrics/interactive.js | description": {
+    "message": "\"Tempo para interação da página\" é o período necessário para que ela fique totalmente interativa. [Saiba mais](https://developers.google.com/web/tools/lighthouse/audits/consistently-interactive)."
+  },
+  "lighthouse-core/audits/metrics/interactive.js | title": {
+    "message": "Tempo até ficar interativa"
+  },
+  "lighthouse-core/audits/metrics/max-potential-fid.js | description": {
+    "message": "A possível latência máxima na primeira entrada que seus usuários notariam seria a duração, em milésimos de segundo, da tarefa mais longa. [Saiba mais](https://developers.google.com/web/updates/2018/05/first-input-delay)."
+  },
+  "lighthouse-core/audits/metrics/max-potential-fid.js | title": {
+    "message": "Possível latência máxima na primeira entrada"
+  },
+  "lighthouse-core/audits/metrics/speed-index.js | description": {
+    "message": "\"Índice de velocidade\" mostra a rapidez com que o conteúdo de uma página é preenchido visivelmente. [Saiba mais](https://developers.google.com/web/tools/lighthouse/audits/speed-index)."
+  },
+  "lighthouse-core/audits/metrics/speed-index.js | title": {
+    "message": "Índice de velocidade"
+  },
+  "lighthouse-core/audits/metrics/total-blocking-time.js | description": {
+    "message": "Soma de todos os períodos entre \"FCP\" e \"Tempo para interação da página\", quando a duração da tarefa ultrapassa 50 ms, expressa em milésimos de segundo."
+  },
+  "lighthouse-core/audits/metrics/total-blocking-time.js | title": {
+    "message": "Tempo total de bloqueio"
+  },
+  "lighthouse-core/audits/network-rtt.js | description": {
+    "message": "O tempo de retorno (RTT, na sigla em inglês) da rede tem um grande impacto no desempenho. Se o RTT para uma origem é alto, significa que os servidores mais próximos do usuário poderiam melhorar o desempenho. [Saiba mais](https://hpbn.co/primer-on-latency-and-bandwidth/)."
+  },
+  "lighthouse-core/audits/network-rtt.js | title": {
+    "message": "Tempos de retorno da rede"
+  },
+  "lighthouse-core/audits/network-server-latency.js | description": {
+    "message": "As latências de servidor podem afetar o desempenho na Web. Se a latência do servidor de uma origem for alta, isso indica que ele está sobrecarregado ou que o back-end apresenta um desempenho ruim. [Saiba mais](https://hpbn.co/primer-on-web-performance/#analyzing-the-resource-waterfall)."
+  },
+  "lighthouse-core/audits/network-server-latency.js | title": {
+    "message": "Latências do back-end do servidor"
+  },
+  "lighthouse-core/audits/offline-start-url.js | description": {
+    "message": "Um service worker permite que seu app da Web funcione de maneira confiável em condições imprevisíveis de rede. [Saiba mais](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)."
+  },
+  "lighthouse-core/audits/offline-start-url.js | failureTitle": {
+    "message": "`start_url` não responde com um código 200 quando off-line."
+  },
+  "lighthouse-core/audits/offline-start-url.js | title": {
+    "message": "`start_url` responde com um código 200 quando off-line."
+  },
+  "lighthouse-core/audits/offline-start-url.js | warningCantStart": {
+    "message": "A propriedade `start_url` não pode ser lida pelo Lighthouse no manifesto. Como resultado, a URL do documento foi considerada como `start_url`. Mensagem de erro: \"{manifestWarning}\"."
+  },
+  "lighthouse-core/audits/performance-budget.js | columnOverBudget": {
+    "message": "Acima do orçamento"
+  },
+  "lighthouse-core/audits/performance-budget.js | description": {
+    "message": "Mantenha a quantidade e o tamanho de solicitações de rede de acordo com os destinos definidos pelo orçamento de desempenho informado. [Saiba mais](https://developers.google.com/web/tools/lighthouse/audits/budgets)."
+  },
+  "lighthouse-core/audits/performance-budget.js | requestCountOverBudget": {
+    "message": "{count,plural, =1{1 solicitação}one{# solicitação}other{# solicitações}}"
+  },
+  "lighthouse-core/audits/performance-budget.js | title": {
+    "message": "Orçamento de desempenho"
+  },
+  "lighthouse-core/audits/redirects-http.js | description": {
+    "message": "Se você já definiu o HTTPS, redirecione todo o tráfego HTTP para HTTPS para garantir recursos da Web para todos os seus usuários. [Saiba mais](https://developers.google.com/web/tools/lighthouse/audits/http-redirects-to-https)."
+  },
+  "lighthouse-core/audits/redirects-http.js | failureTitle": {
+    "message": "O tráfego HTTP não é redirecionado para HTTPS"
+  },
+  "lighthouse-core/audits/redirects-http.js | title": {
+    "message": "O tráfego HTTP é redirecionado para HTTPS"
+  },
+  "lighthouse-core/audits/redirects.js | description": {
+    "message": "Os redirecionamentos causam mais atrasos antes do carregamento da página. [Saiba mais](https://developers.google.com/web/tools/lighthouse/audits/redirects)."
+  },
+  "lighthouse-core/audits/redirects.js | title": {
+    "message": "Evite redirecionamentos múltiplos de página"
+  },
+  "lighthouse-core/audits/resource-summary.js | description": {
+    "message": "Para definir orçamentos para a quantidade e o tamanho dos recursos da página, adicione um arquivo budget.json. [Saiba mais](https://developers.google.com/web/tools/lighthouse/audits/budgets)."
+  },
+  "lighthouse-core/audits/resource-summary.js | displayValue": {
+    "message": "{requestCount,plural, =1{1 solicitação de • {byteCount, number, bytes} KB}one{# solicitação de • {byteCount, number, bytes} KB}other{# solicitações de • {byteCount, number, bytes} KB}}"
+  },
+  "lighthouse-core/audits/resource-summary.js | title": {
+    "message": "Mantenha as contagens de solicitações baixas e os tamanhos de transferência pequenos"
+  },
+  "lighthouse-core/audits/seo/canonical.js | description": {
+    "message": "Os links canônicos sugerem o URL a ser exibido nos resultados da pesquisa. [Saiba mais](https://web.dev/canonical)."
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationConflict": {
+    "message": "Vários URLs com conflito ({urlList})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationDifferentDomain": {
+    "message": "Aponta para um domínio diferente ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationInvalid": {
+    "message": "URL inválido ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationPointsElsewhere": {
+    "message": "Aponta para outro local de `hreflang` ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationRelative": {
+    "message": "URL relativo ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationRoot": {
+    "message": "Aponta para o URL raiz do domínio (a página inicial), em vez de uma página de conteúdo equivalente"
+  },
+  "lighthouse-core/audits/seo/canonical.js | failureTitle": {
+    "message": "O documento não tem um `rel=canonical` válido"
+  },
+  "lighthouse-core/audits/seo/canonical.js | title": {
+    "message": "O documento tem um `rel=canonical` válido"
+  },
+  "lighthouse-core/audits/seo/font-size.js | description": {
+    "message": "Fontes menores que 12 px não são legíveis e exigem que os visitantes que utilizam dispositivos móveis façam um gesto de pinça para aumentar o zoom e conseguir ler. Faça o possível para ter mais de 60% do texto da página com pelo menos 12 px. [Saiba mais](https://web.dev/font-size)."
+  },
+  "lighthouse-core/audits/seo/font-size.js | displayValue": {
+    "message": "{decimalProportion, number, extendedPercent} do texto legível"
+  },
+  "lighthouse-core/audits/seo/font-size.js | explanationViewport": {
+    "message": "O texto é ilegível porque não há nenhuma metatag de janela de visualização otimizada para telas de dispositivos móveis."
+  },
+  "lighthouse-core/audits/seo/font-size.js | explanationWithDisclaimer": {
+    "message": "{decimalProportion, number, extendedPercent} do texto é muito pequeno (com base na amostra de {decimalProportionVisited, number, extendedPercent})."
+  },
+  "lighthouse-core/audits/seo/font-size.js | failureTitle": {
+    "message": "O documento não usa tamanhos de fonte legíveis"
+  },
+  "lighthouse-core/audits/seo/font-size.js | title": {
+    "message": "O documento usa tamanhos de fonte legíveis"
+  },
+  "lighthouse-core/audits/seo/hreflang.js | description": {
+    "message": "Os links hreflang informam aos mecanismos de pesquisa qual versão de uma página deve ser listada nos resultados de pesquisa para um determinado idioma ou região. [Saiba mais](https://web.dev/hreflang)."
+  },
+  "lighthouse-core/audits/seo/hreflang.js | failureTitle": {
+    "message": "O documento não tem um `hreflang` válido"
+  },
+  "lighthouse-core/audits/seo/hreflang.js | title": {
+    "message": "O documento tem um `hreflang` válido"
+  },
+  "lighthouse-core/audits/seo/http-status-code.js | description": {
+    "message": "As páginas com falha no código de status HTTP talvez não sejam indexadas corretamente. [Saiba mais](https://web.dev/http-status-code)."
+  },
+  "lighthouse-core/audits/seo/http-status-code.js | failureTitle": {
+    "message": "A página tem uma falha no código de status HTTP"
+  },
+  "lighthouse-core/audits/seo/http-status-code.js | title": {
+    "message": "A página tem um código de status HTTP bem-sucedido"
+  },
+  "lighthouse-core/audits/seo/is-crawlable.js | description": {
+    "message": "Os mecanismos de pesquisa não poderão incluir suas páginas nos resultados se não tiverem permissão para rastreá-las. [Saiba mais](https://web.dev/is-crawable)."
+  },
+  "lighthouse-core/audits/seo/is-crawlable.js | failureTitle": {
+    "message": "A página está bloqueada para indexação"
+  },
+  "lighthouse-core/audits/seo/is-crawlable.js | title": {
+    "message": "A página não está bloqueada para indexação"
+  },
+  "lighthouse-core/audits/seo/link-text.js | description": {
+    "message": "O texto com link descritivo ajuda os mecanismos de pesquisa a entender o conteúdo. [Saiba mais](https://web.dev/link-text)."
+  },
+  "lighthouse-core/audits/seo/link-text.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 link encontrado}one{# link encontrado}other{# links encontrados}}"
+  },
+  "lighthouse-core/audits/seo/link-text.js | failureTitle": {
+    "message": "Os links não têm texto descritivo"
+  },
+  "lighthouse-core/audits/seo/link-text.js | title": {
+    "message": "Os links têm texto descritivo"
+  },
+  "lighthouse-core/audits/seo/manual/structured-data.js | description": {
+    "message": "Execute a [Ferramenta de teste de dados estruturados](https://search.google.com/structured-data/testing-tool/) e a [Structured Data Linter](http://linter.structured-data.org/) para validar os dados estruturados. [Saiba mais](https://web.dev/structured-data)."
+  },
+  "lighthouse-core/audits/seo/manual/structured-data.js | title": {
+    "message": "Os dados estruturados são válidos"
+  },
+  "lighthouse-core/audits/seo/meta-description.js | description": {
+    "message": "Metadescrições podem ser incluídas nos resultados da pesquisa para resumir concisamente o conteúdo da página. [Saiba mais](https://web.dev/meta-description)."
+  },
+  "lighthouse-core/audits/seo/meta-description.js | explanation": {
+    "message": "O campo de texto da descrição está vazio."
+  },
+  "lighthouse-core/audits/seo/meta-description.js | failureTitle": {
+    "message": "O documento não tem uma metadescrição"
+  },
+  "lighthouse-core/audits/seo/meta-description.js | title": {
+    "message": "O documento tem uma metadescrição"
+  },
+  "lighthouse-core/audits/seo/plugins.js | description": {
+    "message": "Mecanismos de pesquisa não podem indexar conteúdo de plug-in, e muitos dispositivos restringem plug-ins ou não são compatíveis com eles. [Saiba mais](https://web.dev/plugins)."
+  },
+  "lighthouse-core/audits/seo/plugins.js | failureTitle": {
+    "message": "O documento usa plug-ins"
+  },
+  "lighthouse-core/audits/seo/plugins.js | title": {
+    "message": "O documento evita plug-ins"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | description": {
+    "message": "Se o arquivo robots.txt for inválido, talvez não seja possível aos rastreadores entender como você quer que seu site seja rastreado ou indexado. [Saiba mais](https://web.dev/robots-txt)."
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | displayValueHttpBadCode": {
+    "message": "A solicitação para robots.txt retornou o status HTTP: {statusCode}"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | displayValueValidationError": {
+    "message": "{itemCount,plural, =1{1 erro encontrado}one{# erro encontrado}other{# erros encontrados}}"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | explanation": {
+    "message": "O Lighthouse não fez o download de um arquivo robots.txt"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | failureTitle": {
+    "message": "robots.txt não é válido"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | title": {
+    "message": "robots.txt é válido"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | description": {
+    "message": "Os elementos interativos, como botões e links, precisam ser grandes o bastante (48x48 px) e ter espaço suficiente ao redor para poderem ser tocados sem sobreposição com outros elementos. [Saiba mais](https://web.dev/tap-targets)."
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | displayValue": {
+    "message": "{decimalProportion, number, percent} de áreas de toque dimensionadas corretamente"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | explanationViewportMetaNotOptimized": {
+    "message": "As áreas de toque são muito pequenas porque não há nenhuma metatag de janela de visualização otimizada para telas de dispositivos móveis"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | failureTitle": {
+    "message": "As áreas de toque não estão dimensionadas corretamente"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | overlappingTargetHeader": {
+    "message": "Área com sobreposição"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | tapTargetHeader": {
+    "message": "Área de toque"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | title": {
+    "message": "As áreas de toque estão dimensionadas corretamente"
+  },
+  "lighthouse-core/audits/service-worker.js | description": {
+    "message": "O service worker é a tecnologia que permite que seu app use muitos recursos do Progressive Web App, como disponibilidade off-line, adicionar à tela inicial, e notificações de push. [Saiba mais](https://developers.google.com/web/tools/lighthouse/audits/registered-service-worker)."
+  },
+  "lighthouse-core/audits/service-worker.js | explanationBadManifest": {
+    "message": "Esta página é controlada por um service worker, no entanto, nenhum `start_url` foi encontrado porque o manifesto não foi analisado como um JSON válido."
+  },
+  "lighthouse-core/audits/service-worker.js | explanationBadStartUrl": {
+    "message": "Esta página é controlada por um service worker, no entanto, a `start_url` ({startUrl}) não está no escopo dele ({scopeUrl})"
+  },
+  "lighthouse-core/audits/service-worker.js | explanationNoManifest": {
+    "message": "Esta página é controlada por um service worker, no entanto, nenhuma `start_url` foi encontrada porque nenhum manifesto foi recuperado."
+  },
+  "lighthouse-core/audits/service-worker.js | explanationOutOfScope": {
+    "message": "Esta origem tem um ou mais service workers, no entanto, a página ({pageUrl}) não está em escopo."
+  },
+  "lighthouse-core/audits/service-worker.js | failureTitle": {
+    "message": "Não há registro de um service worker que controle a página e `start_url`"
+  },
+  "lighthouse-core/audits/service-worker.js | title": {
+    "message": "Há registro de um service worker que controla a página e `start_url`"
+  },
+  "lighthouse-core/audits/splash-screen.js | description": {
+    "message": "Uma tela de apresentação personalizada garante uma experiência de alta qualidade quando os usuários abrem o aplicativo na tela inicial. [Saiba mais](https://developers.google.com/web/tools/lighthouse/audits/custom-splash-screen)."
+  },
+  "lighthouse-core/audits/splash-screen.js | failureTitle": {
+    "message": "Não foi configurado para uma tela de apresentação personalizada"
+  },
+  "lighthouse-core/audits/splash-screen.js | title": {
+    "message": "Configurado para uma tela de apresentação personalizada"
+  },
+  "lighthouse-core/audits/themed-omnibox.js | description": {
+    "message": "É possível atribuir um tema relacionado ao seu site à barra de endereço do navegador. [Saiba mais](https://developers.google.com/web/tools/lighthouse/audits/address-bar)."
+  },
+  "lighthouse-core/audits/themed-omnibox.js | failureTitle": {
+    "message": "Não foi definida uma cor de tema para a barra de endereços."
+  },
+  "lighthouse-core/audits/themed-omnibox.js | title": {
+    "message": "Foi definida uma cor de tema para a barra de endereços."
+  },
+  "lighthouse-core/audits/third-party-summary.js | columnBlockingTime": {
+    "message": "Tempo de bloqueio da linha de execução principal"
+  },
+  "lighthouse-core/audits/third-party-summary.js | columnThirdParty": {
+    "message": "Terceiros"
+  },
+  "lighthouse-core/audits/third-party-summary.js | description": {
+    "message": "Código de terceiros pode afetar significativamente o desempenho de carregamento. Limite o número de provedores terceiros redundantes e carregue o código de terceiros depois que a página tiver sido carregada. [Saiba mais](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/loading-third-party-javascript/)."
+  },
+  "lighthouse-core/audits/third-party-summary.js | displayValue": {
+    "message": "A linha de execução principal foi bloqueada por {timeInMs, number, milliseconds} ms pelo código de terceiros"
+  },
+  "lighthouse-core/audits/third-party-summary.js | failureTitle": {
+    "message": "Reduza o impacto de códigos de terceiros"
+  },
+  "lighthouse-core/audits/third-party-summary.js | title": {
+    "message": "Uso de terceiros"
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | description": {
+    "message": "\"Tempo até o primeiro byte\" identifica o momento em que o servidor envia uma resposta. [Saiba mais](https://developers.google.com/web/tools/lighthouse/audits/ttfb)."
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | displayValue": {
+    "message": "O documento raiz levou {timeInMs, number, milliseconds} ms"
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | failureTitle": {
+    "message": "Reduza os tempos de resposta do servidor (TTFB)"
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | title": {
+    "message": "Os tempos de resposta do servidor são baixos (TTFB)"
+  },
+  "lighthouse-core/audits/user-timings.js | columnDuration": {
+    "message": "Duração"
+  },
+  "lighthouse-core/audits/user-timings.js | columnStartTime": {
+    "message": "Horário de início"
+  },
+  "lighthouse-core/audits/user-timings.js | columnType": {
+    "message": "Tipo"
+  },
+  "lighthouse-core/audits/user-timings.js | description": {
+    "message": "Instrumente seu app com a API User Timing para avaliar o desempenho real do app durante as principais experiências do usuário. [Saiba mais](https://developers.google.com/web/tools/lighthouse/audits/user-timing)."
+  },
+  "lighthouse-core/audits/user-timings.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 velocidade do usuário}one{# velocidade do usuário}other{# velocidades do usuário}}"
+  },
+  "lighthouse-core/audits/user-timings.js | title": {
+    "message": "Marcações e medições de User Timing"
+  },
+  "lighthouse-core/audits/uses-rel-preconnect.js | crossoriginWarning": {
+    "message": "Um <link> de pré-conexão foi encontrado para \"{securityOrigin}\", mas não foi utilizado pelo navegador. Verifique se você está usando o atributo `crossorigin` corretamente."
+  },
+  "lighthouse-core/audits/uses-rel-preconnect.js | description": {
+    "message": "Adicione dicas de recursos de `preconnect` ou `dns-prefetch` para estabelecer conexões antecipadas a origens importantes de terceiros. [Saiba mais](https://developers.google.com/web/fundamentals/performance/resource-prioritization#preconnect)."
+  },
+  "lighthouse-core/audits/uses-rel-preconnect.js | title": {
+    "message": "Pré-conecte às origens necessárias"
+  },
+  "lighthouse-core/audits/uses-rel-preload.js | crossoriginWarning": {
+    "message": "Um <link> de pré-carregamento foi encontrado para \"{preloadURL}\", mas não foi usado pelo navegador. Verifique se você está usando o atributo `crossorigin` corretamente."
+  },
+  "lighthouse-core/audits/uses-rel-preload.js | description": {
+    "message": "Use `<link rel=preload>` para priorizar a busca de recursos que, no momento, são solicitados posteriormente no carregamento de página. [Saiba mais](https://developers.google.com/web/tools/lighthouse/audits/preload)."
+  },
+  "lighthouse-core/audits/uses-rel-preload.js | title": {
+    "message": "Pré-carregue as principais solicitações"
+  },
+  "lighthouse-core/audits/viewport.js | description": {
+    "message": "Adicione uma tag `<meta name=\"viewport\">` para otimizar seu app para telas de dispositivos móveis. [Saiba mais](https://developers.google.com/web/tools/lighthouse/audits/has-viewport-meta-tag)."
+  },
+  "lighthouse-core/audits/viewport.js | explanationNoTag": {
+    "message": "Nenhuma tag `<meta name=\"viewport\">` foi encontrada."
+  },
+  "lighthouse-core/audits/viewport.js | failureTitle": {
+    "message": "Não há uma tag `<meta name=\"viewport\">` com `width` ou `initial-scale` definida"
+  },
+  "lighthouse-core/audits/viewport.js | title": {
+    "message": "Há uma tag `<meta name=\"viewport\">` com `width` ou `initial-scale`"
+  },
+  "lighthouse-core/audits/without-javascript.js | description": {
+    "message": "Seu app precisa mostrar algum conteúdo quando o JavaScript está desativado, mesmo que seja somente um aviso de que o JavaScript é necessário para o uso do app. [Saiba mais](https://developers.google.com/web/tools/lighthouse/audits/no-js)."
+  },
+  "lighthouse-core/audits/without-javascript.js | explanation": {
+    "message": "O corpo da página precisa renderizar algum conteúdo se os scripts não estão disponíveis."
+  },
+  "lighthouse-core/audits/without-javascript.js | failureTitle": {
+    "message": "Nenhum conteúdo substituto é exibido quando o JavaScript não está disponível."
+  },
+  "lighthouse-core/audits/without-javascript.js | title": {
+    "message": "Algum conteúdo é exibido quando o JavaScript não está disponível."
+  },
+  "lighthouse-core/audits/works-offline.js | description": {
+    "message": "Se você estiver criando um Progressive Web App, é recomendável usar um service worker para que seu app possa funcionar off-line. [Saiba mais](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)."
+  },
+  "lighthouse-core/audits/works-offline.js | failureTitle": {
+    "message": "A página atual não responde com um código 200 quando off-line"
+  },
+  "lighthouse-core/audits/works-offline.js | title": {
+    "message": "A página atual responde com um código 200 quando off-line"
+  },
+  "lighthouse-core/audits/works-offline.js | warningNoLoad": {
+    "message": "A página pode não carregar off-line porque sua URL de teste ({requested}) foi redirecionada para \"{final}\". Tente a segunda URL diretamente."
+  },
+  "lighthouse-core/config/default-config.js | a11yAriaGroupDescription": {
+    "message": "Veja aqui oportunidades de melhorar o uso de ARIA no seu aplicativo, o que pode aprimorar a experiência dos usuários de tecnologias assistivas, como leitores de tela."
+  },
+  "lighthouse-core/config/default-config.js | a11yAriaGroupTitle": {
+    "message": "ARIA"
+  },
+  "lighthouse-core/config/default-config.js | a11yAudioVideoGroupDescription": {
+    "message": "Veja aqui oportunidades de oferecer conteúdo alternativo para áudio e vídeo. Isso pode melhorar a experiência de usuários com deficiências auditivas e visuais."
+  },
+  "lighthouse-core/config/default-config.js | a11yAudioVideoGroupTitle": {
+    "message": "Áudio e vídeo"
+  },
+  "lighthouse-core/config/default-config.js | a11yBestPracticesGroupDescription": {
+    "message": "Esses itens destacam as práticas recomendadas comuns para acessibilidade."
+  },
+  "lighthouse-core/config/default-config.js | a11yBestPracticesGroupTitle": {
+    "message": "Práticas recomendadas"
+  },
+  "lighthouse-core/config/default-config.js | a11yCategoryDescription": {
+    "message": "Essas verificações destacam oportunidades para [melhorar a acessibilidade do seu app da Web](https://developers.google.com/web/fundamentals/accessibility). Somente um subconjunto de problemas de acessibilidade pode ser detectado automaticamente, portanto, testes manuais também devem ser realizados."
+  },
+  "lighthouse-core/config/default-config.js | a11yCategoryManualDescription": {
+    "message": "Esses itens se referem a áreas que uma ferramenta de teste automatizada não pode cobrir. Saiba mais no nosso guia sobre [como realizar uma avaliação de acessibilidade](https://developers.google.com/web/fundamentals/accessibility/how-to-review)."
+  },
+  "lighthouse-core/config/default-config.js | a11yCategoryTitle": {
+    "message": "Acessibilidade"
+  },
+  "lighthouse-core/config/default-config.js | a11yColorContrastGroupDescription": {
+    "message": "Veja aqui oportunidades de melhorar a legibilidade do seu conteúdo."
+  },
+  "lighthouse-core/config/default-config.js | a11yColorContrastGroupTitle": {
+    "message": "Contraste"
+  },
+  "lighthouse-core/config/default-config.js | a11yLanguageGroupDescription": {
+    "message": "Veja aqui oportunidades de melhorar a interpretação que usuários de diferentes localidades fazem do seu conteúdo."
+  },
+  "lighthouse-core/config/default-config.js | a11yLanguageGroupTitle": {
+    "message": "Internacionalização e localização"
+  },
+  "lighthouse-core/config/default-config.js | a11yNamesLabelsGroupDescription": {
+    "message": "Veja aqui oportunidades de melhorar a semântica dos controles do seu aplicativo. Isso pode melhorar a experiência de usuários de tecnologias assistivas, como leitores de tela."
+  },
+  "lighthouse-core/config/default-config.js | a11yNamesLabelsGroupTitle": {
+    "message": "Nomes e etiquetas"
+  },
+  "lighthouse-core/config/default-config.js | a11yNavigationGroupDescription": {
+    "message": "Veja aqui oportunidades de melhorar a navegação por teclado no seu aplicativo."
+  },
+  "lighthouse-core/config/default-config.js | a11yNavigationGroupTitle": {
+    "message": "Navegação"
+  },
+  "lighthouse-core/config/default-config.js | a11yTablesListsVideoGroupDescription": {
+    "message": "Veja aqui oportunidades de melhorar a experiência de leitura de dados em tabelas ou listas usando tecnologia assistiva, como um leitor de tela."
+  },
+  "lighthouse-core/config/default-config.js | a11yTablesListsVideoGroupTitle": {
+    "message": "Tabelas e listas"
+  },
+  "lighthouse-core/config/default-config.js | bestPracticesCategoryTitle": {
+    "message": "Práticas recomendadas"
+  },
+  "lighthouse-core/config/default-config.js | budgetsGroupDescription": {
+    "message": "Os orçamentos de desempenho definem padrões para o desempenho do seu site."
+  },
+  "lighthouse-core/config/default-config.js | budgetsGroupTitle": {
+    "message": "Orçamentos"
+  },
+  "lighthouse-core/config/default-config.js | diagnosticsGroupDescription": {
+    "message": "Mais informações sobre o desempenho do seu aplicativo. Esses números não [afetam diretamente](https://github.com/GoogleChrome/lighthouse/blob/d2ec9ffbb21de9ad1a0f86ed24575eda32c796f0/docs/scoring.md#how-are-the-scores-weighted) o índice de desempenho."
+  },
+  "lighthouse-core/config/default-config.js | diagnosticsGroupTitle": {
+    "message": "Diagnóstico"
+  },
+  "lighthouse-core/config/default-config.js | firstPaintImprovementsGroupDescription": {
+    "message": "O aspecto de desempenho mais importante é a rapidez com que os pixels são renderizados na tela. Principais métricas: Primeiro aparecimento com conteúdo, Primeira exibição importante"
+  },
+  "lighthouse-core/config/default-config.js | firstPaintImprovementsGroupTitle": {
+    "message": "Melhorias do primeiro aparecimento"
+  },
+  "lighthouse-core/config/default-config.js | loadOpportunitiesGroupDescription": {
+    "message": "Essas sugestões podem ajudar a acelerar o carregamento de página. Elas não [afetam diretamente](https://github.com/GoogleChrome/lighthouse/blob/d2ec9ffbb21de9ad1a0f86ed24575eda32c796f0/docs/scoring.md#how-are-the-scores-weighted) o índice de desempenho."
+  },
+  "lighthouse-core/config/default-config.js | loadOpportunitiesGroupTitle": {
+    "message": "Oportunidades"
+  },
+  "lighthouse-core/config/default-config.js | metricGroupTitle": {
+    "message": "Métricas"
+  },
+  "lighthouse-core/config/default-config.js | overallImprovementsGroupDescription": {
+    "message": "Aprimore a experiência geral de carregamento, para que a página seja responsiva e esteja pronta para ser usada assim que possível. Principais métricas: Tempo até fica interativa, Índice de velocidade"
+  },
+  "lighthouse-core/config/default-config.js | overallImprovementsGroupTitle": {
+    "message": "Melhorias gerais"
+  },
+  "lighthouse-core/config/default-config.js | performanceCategoryTitle": {
+    "message": "Desempenho"
+  },
+  "lighthouse-core/config/default-config.js | pwaCategoryDescription": {
+    "message": "Estas verificações validam os aspectos de um Progressive Web App. [Saiba mais](https://developers.google.com/web/progressive-web-apps/checklist)."
+  },
+  "lighthouse-core/config/default-config.js | pwaCategoryManualDescription": {
+    "message": "Essas verificações são solicitadas pela [Lista de verificação de PWA](https://developers.google.com/web/progressive-web-apps/checklist) de referência, mas não são automaticamente realizadas pelo Lighthouse. Elas não afetam sua pontuação, mas é importante verificá-las manualmente."
+  },
+  "lighthouse-core/config/default-config.js | pwaCategoryTitle": {
+    "message": "Progressive Web App"
+  },
+  "lighthouse-core/config/default-config.js | pwaFastReliableGroupTitle": {
+    "message": "Rápido e confiável"
+  },
+  "lighthouse-core/config/default-config.js | pwaInstallableGroupTitle": {
+    "message": "Pode ser instalado"
+  },
+  "lighthouse-core/config/default-config.js | pwaOptimizedGroupTitle": {
+    "message": "Otimizado para PWA"
+  },
+  "lighthouse-core/config/default-config.js | seoCategoryDescription": {
+    "message": "Essas verificações garantem que sua página seja otimizada para a classificação dos resultados dos mecanismos de pesquisa. Existem outros fatores que o Lighthouse não verifica e que podem afetar a classificação da pesquisa. [Saiba mais](https://support.google.com/webmasters/answer/35769)."
+  },
+  "lighthouse-core/config/default-config.js | seoCategoryManualDescription": {
+    "message": "Execute estes validadores adicionais no seu site para verificar mais práticas recomendadas de SEO."
+  },
+  "lighthouse-core/config/default-config.js | seoCategoryTitle": {
+    "message": "SEO"
+  },
+  "lighthouse-core/config/default-config.js | seoContentGroupDescription": {
+    "message": "Formate seu HTML de maneira que permita que os rastreadores entendam melhor o conteúdo do seu app."
+  },
+  "lighthouse-core/config/default-config.js | seoContentGroupTitle": {
+    "message": "Práticas recomendadas para conteúdo"
+  },
+  "lighthouse-core/config/default-config.js | seoCrawlingGroupDescription": {
+    "message": "Para que seu app seja exibido nos resultados da pesquisa, é necessário que os rastreadores tenham acesso a ele."
+  },
+  "lighthouse-core/config/default-config.js | seoCrawlingGroupTitle": {
+    "message": "Rastreamento e indexação"
+  },
+  "lighthouse-core/config/default-config.js | seoMobileGroupDescription": {
+    "message": "Suas páginas precisam ser compatíveis com dispositivos móveis, para que o usuário não tenha que usar gestos de pinça ou zoom para ler o conteúdo. [Saiba mais](https://developers.google.com/search/mobile-sites/)."
+  },
+  "lighthouse-core/config/default-config.js | seoMobileGroupTitle": {
+    "message": "Otimizada para dispositivos móveis"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnCacheTTL": {
+    "message": "Cache TTL"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnLocation": {
+    "message": "Localização"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnName": {
+    "message": "Nome"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnRequests": {
+    "message": "Solicitações"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnResourceType": {
+    "message": "Tipo de recurso"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnSize": {
+    "message": "Tamanho"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnTimeSpent": {
+    "message": "Tempo gasto"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnTransferSize": {
+    "message": "Tamanho da transferência"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnURL": {
+    "message": "URL"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnWastedBytes": {
+    "message": "Possível economia"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnWastedMs": {
+    "message": "Possível economia"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | displayValueByteSavings": {
+    "message": "Possível economia de {wastedBytes, number, bytes} KB"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | displayValueMsSavings": {
+    "message": "Possível economia de {wastedMs, number, milliseconds} ms"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | documentResourceType": {
+    "message": "Documento"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | fontResourceType": {
+    "message": "Fonte"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | imageResourceType": {
+    "message": "Imagem"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | mediaResourceType": {
+    "message": "Mídia"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | ms": {
+    "message": "{timeInMs, number, milliseconds} ms"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | otherResourceType": {
+    "message": "Outro"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | scriptResourceType": {
+    "message": "Script"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | seconds": {
+    "message": "{timeInMs, number, seconds} s"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | stylesheetResourceType": {
+    "message": "Folha de estilo"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | thirdPartyResourceType": {
+    "message": "Terceiros"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | totalResourceType": {
+    "message": "Total"
+  },
+  "lighthouse-core/lib/lh-error.js | badTraceRecording": {
+    "message": "Ocorreu um erro com a gravação dos rastros no carregamento de página. Execute o Lighthouse novamente. ({errorCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | criTimeout": {
+    "message": "Tempo limite atingido ao aguardar a conexão inicial do protocolo do depurador."
+  },
+  "lighthouse-core/lib/lh-error.js | didntCollectScreenshots": {
+    "message": "O Chrome não coletou nenhuma captura de tela durante o carregamento de página. Verifique se há conteúdo visível na página e execute o Lighthouse novamente. ({errorCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | dnsFailure": {
+    "message": "Os servidores DNS não resolveram o domínio fornecido."
+  },
+  "lighthouse-core/lib/lh-error.js | erroredRequiredArtifact": {
+    "message": "O coletor {artifactName} obrigatório encontrou um erro: {errorMessage}"
+  },
+  "lighthouse-core/lib/lh-error.js | internalChromeError": {
+    "message": "Ocorreu um erro interno do Chrome. Reinicie o Chrome e tente executar o Lighthouse novamente."
+  },
+  "lighthouse-core/lib/lh-error.js | missingRequiredArtifact": {
+    "message": "O coletor {artifactName} obrigatório não foi executado."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailed": {
+    "message": "O Lighthouse não carregou de maneira confiável a página solicitada. Verifique se você está testando o URL correto e se o servidor está respondendo de forma adequada a todas as solicitações."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedHung": {
+    "message": "O Lighthouse não carregou de maneira confiável o URL solicitado, porque a página parou de responder."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedInsecure": {
+    "message": "O URL informado não tem um certificado de segurança válido. {securityMessages}"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedInterstitial": {
+    "message": "O Chrome impediu o carregamento da página com um intersticial. Verifique se você está testando o URL correto e se o servidor está respondendo de forma adequada a todas as solicitações."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedWithDetails": {
+    "message": "O Lighthouse não carregou de maneira confiável a página solicitada. Verifique se você está testando o URL correto e se o servidor está respondendo de forma adequada a todas as solicitações. (Detalhes: {errorDetails})"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedWithStatusCode": {
+    "message": "O Lighthouse não carregou de maneira confiável a página solicitada. Verifique se você está testando o URL correto e se o servidor está respondendo de forma adequada a todas as solicitações. (Código de status: {statusCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadTookTooLong": {
+    "message": "A página demorou muito para ser carregada. Siga as oportunidades no relatório para diminuir o tempo de carregamento da página, depois execute o Lighthouse novamente. ({errorCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | protocolTimeout": {
+    "message": "A espera pela resposta do protocolo DevTools excedeu o tempo limite. (Método: {protocolMethod})"
+  },
+  "lighthouse-core/lib/lh-error.js | requestContentTimeout": {
+    "message": "A busca de conteúdo de recursos excedeu o tempo limite"
+  },
+  "lighthouse-core/lib/lh-error.js | urlInvalid": {
+    "message": "O URL informado parece ser inválido."
+  },
+  "lighthouse-core/report/html/renderer/util.js | auditGroupExpandTooltip": {
+    "message": "Mostrar auditorias"
+  },
+  "lighthouse-core/report/html/renderer/util.js | crcInitialNavigation": {
+    "message": "Navegação inicial"
+  },
+  "lighthouse-core/report/html/renderer/util.js | crcLongestDurationLabel": {
+    "message": "Latência máxima do caminho crítico:"
+  },
+  "lighthouse-core/report/html/renderer/util.js | errorLabel": {
+    "message": "Erro!"
+  },
+  "lighthouse-core/report/html/renderer/util.js | errorMissingAuditInfo": {
+    "message": "Informar erro: nenhuma informação de auditoria"
+  },
+  "lighthouse-core/report/html/renderer/util.js | labDataTitle": {
+    "message": "Dados de laboratório"
+  },
+  "lighthouse-core/report/html/renderer/util.js | lsPerformanceCategoryDescription": {
+    "message": "Análise do [Lighthouse](https://developers.google.com/web/tools/lighthouse/) da página atual em uma rede móvel emulada. Os valores são estimados e podem variar."
+  },
+  "lighthouse-core/report/html/renderer/util.js | manualAuditsGroupTitle": {
+    "message": "Outros itens para verificação manual"
+  },
+  "lighthouse-core/report/html/renderer/util.js | notApplicableAuditsGroupTitle": {
+    "message": "Não aplicável"
+  },
+  "lighthouse-core/report/html/renderer/util.js | opportunityResourceColumnLabel": {
+    "message": "Oportunidade"
+  },
+  "lighthouse-core/report/html/renderer/util.js | opportunitySavingsColumnLabel": {
+    "message": "Economia estimada"
+  },
+  "lighthouse-core/report/html/renderer/util.js | passedAuditsGroupTitle": {
+    "message": "Auditorias aprovadas"
+  },
+  "lighthouse-core/report/html/renderer/util.js | snippetCollapseButtonLabel": {
+    "message": "Recolher snippet"
+  },
+  "lighthouse-core/report/html/renderer/util.js | snippetExpandButtonLabel": {
+    "message": "Expandir snippet"
+  },
+  "lighthouse-core/report/html/renderer/util.js | thirdPartyResourcesLabel": {
+    "message": "Mostrar recursos de terceiros"
+  },
+  "lighthouse-core/report/html/renderer/util.js | toplevelWarningsMessage": {
+    "message": "Alguns problemas afetaram esta execução do Lighthouse:"
+  },
+  "lighthouse-core/report/html/renderer/util.js | varianceDisclaimer": {
+    "message": "Os valores são estimados e podem variar. O índice de desempenho [se baseia somente nessas métricas](https://github.com/GoogleChrome/lighthouse/blob/d2ec9ffbb21de9ad1a0f86ed24575eda32c796f0/docs/scoring.md#how-are-the-scores-weighted)."
+  },
+  "lighthouse-core/report/html/renderer/util.js | warningAuditsGroupTitle": {
+    "message": "Passou nas auditorias, mas como avisos"
+  },
+  "lighthouse-core/report/html/renderer/util.js | warningHeader": {
+    "message": "Avisos: "
+  },
+  "stack-packs/packs/wordpress.js | efficient_animated_content": {
+    "message": "Faça upload do seu GIF para um serviço que o disponibilizará para incorporação como um vídeo HTML5."
+  },
+  "stack-packs/packs/wordpress.js | offscreen_images": {
+    "message": "Instale um [plug-in de carregamento lento do WordPress](https://wordpress.org/plugins/search/lazy+load/), que permite adiar imagens fora da tela, ou alterne para um tema que ofereça essa funcionalidade. Também recomendamos o uso do [plug-in de AMP](https://wordpress.org/plugins/amp/)."
+  },
+  "stack-packs/packs/wordpress.js | render_blocking_resources": {
+    "message": "Existem vários plug-ins do WordPress que podem ajudar você a [aplicar inline a recursos essenciais](https://wordpress.org/plugins/search/critical+css/) ou [adiar recursos menos importantes](https://wordpress.org/plugins/search/defer+css+javascript/). As otimizações oferecidas por esses plug-ins podem corromper os recursos do tema ou dos seus plug-ins, então é provável que você precise fazer alterações no código."
+  },
+  "stack-packs/packs/wordpress.js | time_to_first_byte": {
+    "message": "Todas as especificações de servidor, temas e plug-ins contribuem para o tempo de resposta do servidor. Recomendamos que você use um tema mais otimizado, selecionando cuidadosamente um plug-in de otimização e/ou fazendo upgrade do seu servidor."
+  },
+  "stack-packs/packs/wordpress.js | total_byte_weight": {
+    "message": "Recomendamos que você mostre trechos nas suas listas de postagem (por exemplo, por meio da tag \"mais\"), reduza o número de postagens exibidas em uma determinada página, divida suas postagens longas em várias páginas ou use um plug-in para aplicar lazy-load nos comentários."
+  },
+  "stack-packs/packs/wordpress.js | unminified_css": {
+    "message": "Vários [plug-ins do WordPress](https://wordpress.org/plugins/search/minify+css/) podem acelerar seu site concatenando, reduzindo e compactando seus estilos. Você também pode usar um processo de compilação para fazer essa redução antecipadamente, se possível."
+  },
+  "stack-packs/packs/wordpress.js | unminified_javascript": {
+    "message": "Vários [plug-ins do WordPress](https://wordpress.org/plugins/search/minify+javascript/) podem acelerar seu site concatenando, reduzindo e compactando seus scripts. Você também pode usar um processo de compilação para fazer essa redução antecipadamente, se possível."
+  },
+  "stack-packs/packs/wordpress.js | unused_css_rules": {
+    "message": "Reduza ou troque o número de [plug-ins do WordPress](https://wordpress.org/plugins/) que carregam CSS não utilizado na sua página. Para identificar plug-ins que estão adicionando CSS externo, execute a [cobertura do código](https://developers.google.com/web/updates/2017/04/devtools-release-notes#coverage) no Chrome DevTools. Você pode identificar o tema/plug-in responsável a partir do URL da folha de estilo. Procure plug-ins que tenham muitas folhas de estilo na lista, apresentando um nível alto de vermelho na cobertura do código. Um plug-in só deverá colocar uma folha de estilo na fila se ela for realmente utilizada na página."
+  },
+  "stack-packs/packs/wordpress.js | unused_javascript": {
+    "message": "Reduza ou troque o número de [plug-ins do WordPress](https://wordpress.org/plugins/) que carregam JavaScript não utilizado na sua página. Para identificar plug-ins que estão adicionando JS externo, execute a [cobertura do código](https://developers.google.com/web/updates/2017/04/devtools-release-notes#coverage) no Chrome DevTools. Você pode identificar o tema/plug-in responsável a partir do URL do script. Procure plug-ins que tenham muitos scripts na lista, apresentando um nível alto de vermelho na cobertura do código. Um plug-in só deverá colocar um script na fila se ele for realmente usado na página."
+  },
+  "stack-packs/packs/wordpress.js | uses_long_cache_ttl": {
+    "message": "Leia sobre o [Processo de cache do navegador no WordPress](https://codex.wordpress.org/WordPress_Optimization#Browser_Caching)."
+  },
+  "stack-packs/packs/wordpress.js | uses_optimized_images": {
+    "message": "Use um [plug-in do WordPress para otimização de imagens](https://wordpress.org/plugins/search/optimize+images/), que as compacta sem afetar a qualidade."
+  },
+  "stack-packs/packs/wordpress.js | uses_responsive_images": {
+    "message": "Faça upload de imagens diretamente por meio da [biblioteca de mídia](https://codex.wordpress.org/Media_Library_Screen) para garantir que os tamanhos de imagem necessários estejam disponíveis. Depois, insira-os na biblioteca de mídia ou use o widget de imagem para garantir que os tamanhos ideais sejam usados (incluindo aqueles para os pontos de interrupção responsivos). Evite usar imagens `Full Size`, a não ser que as dimensões sejam adequadas para uso. [Saiba mais](https://codex.wordpress.org/Inserting_Images_into_Posts_and_Pages#Image_Size)."
+  },
+  "stack-packs/packs/wordpress.js | uses_text_compression": {
+    "message": "Você pode ativar a compactação de texto na configuração do servidor da Web."
+  },
+  "stack-packs/packs/wordpress.js | uses_webp_images": {
+    "message": "Use um [plug-in](https://wordpress.org/plugins/search/convert+webp/) ou serviço que converta automaticamente as imagens enviadas nos formatos ideais."
+  }
+}
diff --git a/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/ro.json b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/ro.json
new file mode 100644
index 0000000..c872ebfbc
--- /dev/null
+++ b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/ro.json
@@ -0,0 +1,1541 @@
+{
+  "lighthouse-core/audits/accessibility/accesskeys.js | description": {
+    "message": "Tastele de acces permit utilizatorilor să focalizeze rapid o parte a paginii. Pentru o navigare corectă, fiecare tastă de acces trebuie să fie unică. [Află mai multe](https://web.dev/accesskeys/)."
+  },
+  "lighthouse-core/audits/accessibility/accesskeys.js | failureTitle": {
+    "message": "Valorile `[accesskey]` nu sunt unice"
+  },
+  "lighthouse-core/audits/accessibility/accesskeys.js | title": {
+    "message": "Valorile `[accesskey]`sunt unice"
+  },
+  "lighthouse-core/audits/accessibility/aria-allowed-attr.js | description": {
+    "message": "Fiecare `role` ARIA acceptă un anumit subset de atribute `aria-*`. Nepotrivirea acestora anulează atributele `aria-*`. [Află mai multe](https://web.dev/aria-allowed-attr/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-allowed-attr.js | failureTitle": {
+    "message": "Atributele `[aria-*]` nu se potrivesc cu rolurile"
+  },
+  "lighthouse-core/audits/accessibility/aria-allowed-attr.js | title": {
+    "message": "Atributele `[aria-*]` se potrivesc cu rolurile"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-attr.js | description": {
+    "message": "Unele roluri ARIA au atribute obligatorii care descriu starea elementului cititoarelor de ecrane. [Află mai multe](https://web.dev/aria-required-attr/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-required-attr.js | failureTitle": {
+    "message": "`[role]` nu au toate atributele `[aria-*]` necesare"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-attr.js | title": {
+    "message": "`[role]` au toate atributele `[aria-*]` obligatorii"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-children.js | description": {
+    "message": "Unele roluri ARIA principale trebuie să conțină roluri secundare specifice pentru a-și îndeplini funcțiile de accesibilitate pentru care au fost concepute. [Află mai multe](https://web.dev/aria-required-children/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-required-children.js | failureTitle": {
+    "message": "Lipsesc elementele cu `[role]` care necesită anumite `[role]` de elemente secundare."
+  },
+  "lighthouse-core/audits/accessibility/aria-required-children.js | title": {
+    "message": "Elementele cu `[role]` care necesită anumite elemente secundare `[role]` sunt prezente"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-parent.js | description": {
+    "message": "Unele roluri ARIA secundare trebuie să fie conținute de roluri principale specifice pentru a-și îndeplini corect funcțiile de accesibilitate pentru care au fost concepute. [Află mai multe](https://web.dev/aria-required-parent/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-required-parent.js | failureTitle": {
+    "message": "`[role]` nu sunt conținute de elementul părinte impus"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-parent.js | title": {
+    "message": "`[role]` sunt conținute de elementul părinte impus"
+  },
+  "lighthouse-core/audits/accessibility/aria-roles.js | description": {
+    "message": "Rolurile ARIA trebuie să aibă valori valide pentru a-și îndeplini funcțiile de accesibilitate pentru care au fost concepute. [Află mai multe](https://web.dev/aria-roles/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-roles.js | failureTitle": {
+    "message": "Valorile `[role]` nu sunt valide"
+  },
+  "lighthouse-core/audits/accessibility/aria-roles.js | title": {
+    "message": "Valorile `[role]` sunt valide"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr-value.js | description": {
+    "message": "Tehnologiile care asigură asistență, precum cititoarele de ecran, nu pot interpreta atributele ARIA cu valori nevalide. [Află mai multe](https://web.dev/aria-valid-attr-value/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr-value.js | failureTitle": {
+    "message": "Atributele `[aria-*]` nu au valori valide"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr-value.js | title": {
+    "message": "Atributele `[aria-*]` au valori valide"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr.js | description": {
+    "message": "Tehnologiile care oferă asistență, precum cititoarele de ecran, nu pot interpreta atributele ARIA cu nume nevalide. [Află mai multe](https://web.dev/aria-valid-attr/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr.js | failureTitle": {
+    "message": "Atributele `[aria-*]` sunt nevalide sau scrise greșit"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr.js | title": {
+    "message": "Atributele `[aria-*]` sunt valide și nu sunt scrise greșit"
+  },
+  "lighthouse-core/audits/accessibility/audio-caption.js | description": {
+    "message": "Subtitrările fac ca elementele audio să poată fi folosite de utilizatorii surzi sau cu dizabilități de auz, furnizând informații esențiale, precum cine vorbește, ce spune și alte informații care nu sunt legate de vorbire. [Află mai multe](https://web.dev/audio-caption/)."
+  },
+  "lighthouse-core/audits/accessibility/audio-caption.js | failureTitle": {
+    "message": "Elementele `<audio>` au un element `<track>` cu `[kind=\"captions\"]` lipsă."
+  },
+  "lighthouse-core/audits/accessibility/audio-caption.js | title": {
+    "message": "Elementele `<audio>` conțin un element `<track>` cu `[kind=\"captions\"]`"
+  },
+  "lighthouse-core/audits/accessibility/axe-audit.js | failingElementsHeader": {
+    "message": "Elemente cu probleme"
+  },
+  "lighthouse-core/audits/accessibility/button-name.js | description": {
+    "message": "Când un buton nu are un nume accesibil, cititoarele de ecran îl anunță ca „buton”, făcându-l inutil pentru utilizatorii care se bazează pe cititoarele de ecran. [Află mai multe](https://web.dev/button-name/)."
+  },
+  "lighthouse-core/audits/accessibility/button-name.js | failureTitle": {
+    "message": "Butoanele nu au un nume accesibil"
+  },
+  "lighthouse-core/audits/accessibility/button-name.js | title": {
+    "message": "Butoanele au un nume accesibil"
+  },
+  "lighthouse-core/audits/accessibility/bypass.js | description": {
+    "message": "Dacă adaugi modalități de a ocoli conținutul repetitiv, utilizatorii tastaturii vor naviga pe pagină mai eficient. [Află mai multe](https://web.dev/bypass/)."
+  },
+  "lighthouse-core/audits/accessibility/bypass.js | failureTitle": {
+    "message": "Această pagină nu conține un titlu, un link de închidere sau o regiune de reper"
+  },
+  "lighthouse-core/audits/accessibility/bypass.js | title": {
+    "message": "Pagina conține un titlu, un link de închidere sau o regiune de reper"
+  },
+  "lighthouse-core/audits/accessibility/color-contrast.js | description": {
+    "message": "Textul cu un contrast redus este dificil sau imposibil de citit pentru mulți utilizatori. [Află mai multe](https://web.dev/color-contrast/)."
+  },
+  "lighthouse-core/audits/accessibility/color-contrast.js | failureTitle": {
+    "message": "Culorile din fundal și din prim-plan nu au un raport de contrast suficient."
+  },
+  "lighthouse-core/audits/accessibility/color-contrast.js | title": {
+    "message": "Culorile din fundal și din prim-plan au un raport de contrast suficient"
+  },
+  "lighthouse-core/audits/accessibility/definition-list.js | description": {
+    "message": "Când listele de definiții nu sunt marcate corect, cititoarele de ecran pot produce un rezultat derutant sau inexact. [Află mai multe](https://web.dev/definition-list/)."
+  },
+  "lighthouse-core/audits/accessibility/definition-list.js | failureTitle": {
+    "message": "`<dl>` nu conțin doar grupurile `<dt>` și `<dd>` ordonate corect, `<script>` sau elementele `<template>`."
+  },
+  "lighthouse-core/audits/accessibility/definition-list.js | title": {
+    "message": "`<dl>` conțin doar grupurile `<dt>` și `<dd>` ordonate corect, `<script>` sau elemente `<template>`."
+  },
+  "lighthouse-core/audits/accessibility/dlitem.js | description": {
+    "message": "Elementele din lista de definiții (`<dt>` și `<dd>`) trebuie grupate într-un element principal `<dl>` pentru a se asigura că cititoarele de ecran le pot anunța corect. [Află mai multe](https://web.dev/dlitem/)."
+  },
+  "lighthouse-core/audits/accessibility/dlitem.js | failureTitle": {
+    "message": "Elementele din lista de definiții nu sunt incluse în elementele `<dl>`"
+  },
+  "lighthouse-core/audits/accessibility/dlitem.js | title": {
+    "message": "Elementele din lista de definiții sunt incluse în elementele `<dl>`"
+  },
+  "lighthouse-core/audits/accessibility/document-title.js | description": {
+    "message": "Titlul le oferă utilizatorilor de cititoare de ecran o prezentare generală a paginii, iar utilizatorii de motoare de căutare îl folosesc intensiv pentru a stabili dacă o pagină este relevantă pentru căutarea lor. [Află mai multe](https://web.dev/document-title/)."
+  },
+  "lighthouse-core/audits/accessibility/document-title.js | failureTitle": {
+    "message": "Documentul nu are un element `<title>`"
+  },
+  "lighthouse-core/audits/accessibility/document-title.js | title": {
+    "message": "Documentul are un element `<title>`"
+  },
+  "lighthouse-core/audits/accessibility/duplicate-id.js | description": {
+    "message": "Valoarea unui atribut ID trebuie să fie unică pentru a preveni omiterea altor instanțe de tehnologiile care asigură asistență. [Află mai multe](https://web.dev/duplicate-id/)."
+  },
+  "lighthouse-core/audits/accessibility/duplicate-id.js | failureTitle": {
+    "message": "Atributele `[id]` de pe pagină nu sunt unice"
+  },
+  "lighthouse-core/audits/accessibility/duplicate-id.js | title": {
+    "message": "Atributele `[id]` de pe pagină sunt unice"
+  },
+  "lighthouse-core/audits/accessibility/frame-title.js | description": {
+    "message": "Utilizatorii cititoarelor de ecran se bazează pe titlurile cadrelor pentru a descrie conținutul cadrelor. [Află mai multe](https://web.dev/frame-title/)."
+  },
+  "lighthouse-core/audits/accessibility/frame-title.js | failureTitle": {
+    "message": "Elementele `<frame>` sau `<iframe>` nu au un titlu"
+  },
+  "lighthouse-core/audits/accessibility/frame-title.js | title": {
+    "message": "Elementele `<frame>` sau `<iframe>` au un titlu"
+  },
+  "lighthouse-core/audits/accessibility/html-has-lang.js | description": {
+    "message": "Dacă o pagină nu specifică un atribut de limbă, cititorul de ecran presupune că pagina este în limba prestabilită pe care utilizatorul a ales-o când a configurat cititorul de ecran. Dacă pagina nu este în limba prestabilită, atunci cititorul de ecran este posibil să nu citească corect textul paginii. [Află mai multe](https://web.dev/html-has-lang/)."
+  },
+  "lighthouse-core/audits/accessibility/html-has-lang.js | failureTitle": {
+    "message": "Elementul `<html>` nu are un atribut `[lang]`"
+  },
+  "lighthouse-core/audits/accessibility/html-has-lang.js | title": {
+    "message": "Elementul `<html>` are un atribut `[lang]`"
+  },
+  "lighthouse-core/audits/accessibility/html-lang-valid.js | description": {
+    "message": "Indicarea unei etichete de [limbă BCP 47](https://www.w3.org/International/questions/qa-choosing-language-tags#question) valide ajută cititoarele de ecran să anunțe corect textul. [Află mai multe](https://web.dev/html-lang-valid/)."
+  },
+  "lighthouse-core/audits/accessibility/html-lang-valid.js | failureTitle": {
+    "message": "Elementul `<html>` nu are o valoare validă pentru atributul `[lang]`."
+  },
+  "lighthouse-core/audits/accessibility/html-lang-valid.js | title": {
+    "message": "Elementul `<html>` are o valoare validă pentru atributul `[lang]`"
+  },
+  "lighthouse-core/audits/accessibility/image-alt.js | description": {
+    "message": "Elementele informative ar trebui să conțină texte alternative descriptive scurte. Elementele decorative pot fi ignorate cu un atribut Alt gol. [Află mai multe](https://web.dev/image-alt/)."
+  },
+  "lighthouse-core/audits/accessibility/image-alt.js | failureTitle": {
+    "message": "Elementele imaginii nu au atribute `[alt]`"
+  },
+  "lighthouse-core/audits/accessibility/image-alt.js | title": {
+    "message": "Elementele imagine au atribute `[alt]`"
+  },
+  "lighthouse-core/audits/accessibility/input-image-alt.js | description": {
+    "message": "Când o imagine este folosită ca buton `<input>`, furnizarea unui text alternativ poate ajuta utilizatorii cititorului de ecran să înțeleagă scopul butonului. [Află mai multe](https://web.dev/input-image-alt/)."
+  },
+  "lighthouse-core/audits/accessibility/input-image-alt.js | failureTitle": {
+    "message": "Elementele `<input type=\"image\">` nu au text `[alt]`"
+  },
+  "lighthouse-core/audits/accessibility/input-image-alt.js | title": {
+    "message": "Elementele `<input type=\"image\">` au text `[alt]`"
+  },
+  "lighthouse-core/audits/accessibility/label.js | description": {
+    "message": "Etichetele asigură că opțiunile formularelor sunt anunțate corect de tehnologiile care asigură asistență, precum cititoarele de ecran. [Află mai multe](https://web.dev/label/)."
+  },
+  "lighthouse-core/audits/accessibility/label.js | failureTitle": {
+    "message": "Elementele formularului nu au etichete asociate"
+  },
+  "lighthouse-core/audits/accessibility/label.js | title": {
+    "message": "Elementele formularului au etichete asociate"
+  },
+  "lighthouse-core/audits/accessibility/layout-table.js | description": {
+    "message": "Un tabel care este folosit pentru aspect nu ar trebui să includă elemente de date, precum elementele th sau de subtitrare sau atributul rezumat, deoarece poate crea confuzie pentru utilizatorii cititoarelor de ecran. [Află mai multe](https://web.dev/layout-table/)."
+  },
+  "lighthouse-core/audits/accessibility/layout-table.js | failureTitle": {
+    "message": "Elementele `<table>` de prezentare nu evită folosirea `<th>`, `<caption>` sau a atributului `[summary]`."
+  },
+  "lighthouse-core/audits/accessibility/layout-table.js | title": {
+    "message": "Elementele `<table>` de prezentare evită să folosească `<th>`, `<caption>` sau atributul `[summary]`."
+  },
+  "lighthouse-core/audits/accessibility/link-name.js | description": {
+    "message": "Textul linkurilor (și textul alternativ pentru imagini, când sunt folosite ca linkuri) care se poate distinge, unic și pe care se poate focaliza, îmbunătățește navigarea pentru utilizatorii de cititoare de ecran. [Află mai multe](https://web.dev/link-name/)."
+  },
+  "lighthouse-core/audits/accessibility/link-name.js | failureTitle": {
+    "message": "Linkurile nu au un nume care se poate distinge"
+  },
+  "lighthouse-core/audits/accessibility/link-name.js | title": {
+    "message": "Linkurile au un nume care se poate distinge"
+  },
+  "lighthouse-core/audits/accessibility/list.js | description": {
+    "message": "Cititoarele de ecran au un anumit mod de anunțare a listelor. Asigurarea unei structuri corecte a listei îmbunătățește rezultatele cititorului de ecran. [Află mai multe](https://web.dev/list/)."
+  },
+  "lighthouse-core/audits/accessibility/list.js | failureTitle": {
+    "message": "Listele nu conțin doar elemente `<li>` și elemente pe care se bazează scriptul (`<script>` și `<template>`)."
+  },
+  "lighthouse-core/audits/accessibility/list.js | title": {
+    "message": "Listele conțin doar elemente `<li>` și elemente pe care se bazează scriptul (`<script>` și `<template>`)."
+  },
+  "lighthouse-core/audits/accessibility/listitem.js | description": {
+    "message": "Cititoarele de ecran necesită ca elementele din listă (`<li>`) să fie conținute într-un element principal `<ul>` sau `<ol>` pentru a fi anunțate corect. [Află mai multe](https://web.dev/listitem/)."
+  },
+  "lighthouse-core/audits/accessibility/listitem.js | failureTitle": {
+    "message": "Elementele din listă (`<li>`) nu sunt incluse în elementele principale `<ul>` sau `<ol>`."
+  },
+  "lighthouse-core/audits/accessibility/listitem.js | title": {
+    "message": "Elementele din listă (`<li>`) sunt conținute în elementele principale `<ul>` sau `<ol>`"
+  },
+  "lighthouse-core/audits/accessibility/meta-refresh.js | description": {
+    "message": "Utilizatorii nu se așteaptă ca o pagină să se actualizeze automat, iar dacă ei actualizează, focalizarea se va muta din nou în partea de sus a paginii. Acest lucru poate crea frustrare sau confuzie. [Află mai multe](https://web.dev/meta-refresh/)."
+  },
+  "lighthouse-core/audits/accessibility/meta-refresh.js | failureTitle": {
+    "message": "Documentul folosește `<meta http-equiv=\"refresh\">`"
+  },
+  "lighthouse-core/audits/accessibility/meta-refresh.js | title": {
+    "message": "Documentul nu folosește `<meta http-equiv=\"refresh\">`"
+  },
+  "lighthouse-core/audits/accessibility/meta-viewport.js | description": {
+    "message": "Dezactivarea măririi sau micșorării este o problemă pentru utilizatorii cu vedere slabă, care se bazează pe mărirea ecranului pentru a vedea bine conținutul unei pagini web. [Află mai multe](https://web.dev/meta-viewport/)."
+  },
+  "lighthouse-core/audits/accessibility/meta-viewport.js | failureTitle": {
+    "message": "`[user-scalable=\"no\"]` este folosit în elementul `<meta name=\"viewport\">` sau atributul `[maximum-scale]` este mai mic decât 5."
+  },
+  "lighthouse-core/audits/accessibility/meta-viewport.js | title": {
+    "message": "`[user-scalable=\"no\"]` nu se folosește în elementul `<meta name=\"viewport\">` și atributul `[maximum-scale]` nu este mai mic decât 5."
+  },
+  "lighthouse-core/audits/accessibility/object-alt.js | description": {
+    "message": "Cititoarele de ecran nu pot traduce conținut în alt format decât text. Adăugarea de text alternativ la elementele `<object>` ajută cititoarele de ecran să le transmită utilizatorilor înțelesul. [Află mai multe](https://web.dev/object-alt/)."
+  },
+  "lighthouse-core/audits/accessibility/object-alt.js | failureTitle": {
+    "message": "Elementele `<object>` nu au text `[alt]`"
+  },
+  "lighthouse-core/audits/accessibility/object-alt.js | title": {
+    "message": "Elementele `<object>` au text `[alt]`"
+  },
+  "lighthouse-core/audits/accessibility/tabindex.js | description": {
+    "message": "O valoare mai mare decât 0 implică o ordine explicită de navigare. Deși valid din punct de vedere tehnic, acest lucru creează adesea frustrări utilizatorilor care se bazează pe tehnologii care oferă asistență. [Află mai multe](https://web.dev/tabindex/)."
+  },
+  "lighthouse-core/audits/accessibility/tabindex.js | failureTitle": {
+    "message": "Unele elemente au o valoare `[tabindex]` mai mare decât 0"
+  },
+  "lighthouse-core/audits/accessibility/tabindex.js | title": {
+    "message": "Niciun element nu are o valoare `[tabindex]` mai mare decât 0"
+  },
+  "lighthouse-core/audits/accessibility/td-headers-attr.js | description": {
+    "message": "Cititoarele de ecran au funcții care facilitează navigarea în tabele. Dacă se asigură că celulele `<td>` care folosesc atributul `[headers]` se referă doar la alte celule din același tabel, se poate îmbunătăți experiența pentru utilizatorii de cititoare de ecran. [Află mai multe](https://web.dev/td-headers-attr/)."
+  },
+  "lighthouse-core/audits/accessibility/td-headers-attr.js | failureTitle": {
+    "message": "Celulele dintr-un element `<table>` care folosesc atributul `[headers]` se referă la alte celule ale aceluiași tabel."
+  },
+  "lighthouse-core/audits/accessibility/td-headers-attr.js | title": {
+    "message": "Celulele dintr-un element `<table>` care folosesc atributul `[headers]` se referă doar la alte celule ale aceluiași tabel."
+  },
+  "lighthouse-core/audits/accessibility/th-has-data-cells.js | description": {
+    "message": "Cititoarele de ecran au funcții care facilitează navigarea în tabele. Dacă se asigură că antetele tabelelor se referă întotdeauna la unele seturi de celule, se poate îmbunătăți experiența pentru utilizatorii de cititoare de ecran. [Află mai multe](https://web.dev/th-has-data-cells/)."
+  },
+  "lighthouse-core/audits/accessibility/th-has-data-cells.js | failureTitle": {
+    "message": "Elementele `<th>` și elementele cu `[role=\"columnheader\"/\"rowheader\"]` nu au celule de date pe care să le descrie."
+  },
+  "lighthouse-core/audits/accessibility/th-has-data-cells.js | title": {
+    "message": "Elementele `<th>` și elementele cu `[role=\"columnheader\"/\"rowheader\"]` au celule de date pe care le descriu."
+  },
+  "lighthouse-core/audits/accessibility/valid-lang.js | description": {
+    "message": "Indicarea unei etichete de [limbă BCP 47](https://www.w3.org/International/questions/qa-choosing-language-tags#question) valide la elemente ajută la pronunțarea corectă a textului de un cititor de ecran. [Află mai multe](https://web.dev/valid-lang/)."
+  },
+  "lighthouse-core/audits/accessibility/valid-lang.js | failureTitle": {
+    "message": "Atributele `[lang]` nu au o valoare validă"
+  },
+  "lighthouse-core/audits/accessibility/valid-lang.js | title": {
+    "message": "Atributele `[lang]` au o valoare validă"
+  },
+  "lighthouse-core/audits/accessibility/video-caption.js | description": {
+    "message": "Când un videoclip are subtitrare, este mai simplu pentru utilizatorii surzi și cu dizabilități de auz să îi acceseze informațiile. [Află mai multe](https://web.dev/video-caption/)."
+  },
+  "lighthouse-core/audits/accessibility/video-caption.js | failureTitle": {
+    "message": "Elementele `<video>` nu conțin un element `<track>` cu `[kind=\"captions\"]`."
+  },
+  "lighthouse-core/audits/accessibility/video-caption.js | title": {
+    "message": "Elementele `<video>` conțin un element `<track>` cu `[kind=\"captions\"]`"
+  },
+  "lighthouse-core/audits/accessibility/video-description.js | description": {
+    "message": "Descrierile audio oferă informații relevante pentru videoclipuri pe care dialogul nu le poate oferi, precum scene și expresii faciale. [Află mai multe](https://web.dev/video-description/)."
+  },
+  "lighthouse-core/audits/accessibility/video-description.js | failureTitle": {
+    "message": "Elementele `<video>` nu conțin un element `<track>` cu `[kind=\"description\"]`."
+  },
+  "lighthouse-core/audits/accessibility/video-description.js | title": {
+    "message": "Elementele `<video>` conțin un element `<track>` cu `[kind=\"description\"]`"
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | description": {
+    "message": "Pentru un aspect ideal în iOS atunci când utilizatorii adaugă o aplicație web progresivă în ecranul de pornire, definește o `apple-touch-icon`. Aceasta trebuie să indice spre un PNG pătrat netransparent, de 192 px (sau 180 px). [Află mai multe](https://developers.google.com/web/fundamentals/design-and-ux/browser-customization/)."
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | failureTitle": {
+    "message": "Nu oferă o `apple-touch-icon` validă"
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | precomposedWarning": {
+    "message": "`apple-touch-icon-precomposed` este învechit; se preferă `apple-touch-icon`."
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | title": {
+    "message": "Oferă o `apple-touch-icon` validă"
+  },
+  "lighthouse-core/audits/bootup-time.js | chromeExtensionsWarning": {
+    "message": "Extensiile Chrome au afectat performanța de încărcare a acestei pagini. Încearcă să auditezi pagina în modul incognito sau dintr-un profil Chrome fără extensii."
+  },
+  "lighthouse-core/audits/bootup-time.js | columnScriptEval": {
+    "message": "Evaluarea scripturilor"
+  },
+  "lighthouse-core/audits/bootup-time.js | columnScriptParse": {
+    "message": "Analizarea scripturilor"
+  },
+  "lighthouse-core/audits/bootup-time.js | columnTotal": {
+    "message": "Timp CPU total"
+  },
+  "lighthouse-core/audits/bootup-time.js | description": {
+    "message": "Poți reduce timpul petrecut cu analizarea, compilarea și executarea JS. Livrarea unor sarcini JS mai mici poate ajuta în acest sens. [Află mai multe](https://developers.google.com/web/tools/lighthouse/audits/bootup)."
+  },
+  "lighthouse-core/audits/bootup-time.js | failureTitle": {
+    "message": "Redu timpul de execuție JavaScript"
+  },
+  "lighthouse-core/audits/bootup-time.js | title": {
+    "message": "Timpul de executare JavaScript"
+  },
+  "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | description": {
+    "message": "GIF-urile mari nu sunt eficiente pentru difuzarea conținutului animat. Folosește videoclipuri MPEG4/WebM pentru animații și PNG/WebP pentru imagini statice în locul GIF-urilor ca să economisești date în rețea. [Află mai multe](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/replace-animated-gifs-with-video/)"
+  },
+  "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | title": {
+    "message": "Folosește formate video pentru conținut animat"
+  },
+  "lighthouse-core/audits/byte-efficiency/offscreen-images.js | description": {
+    "message": "Poți încărca lent imaginile ascunse sau pe cele din afara ecranului după ce toate resursele esențiale s-au încărcat, pentru a micșora timpul până la interactivitate. [Află mai multe](https://developers.google.com/web/tools/lighthouse/audits/offscreen-images)."
+  },
+  "lighthouse-core/audits/byte-efficiency/offscreen-images.js | title": {
+    "message": "Amână imaginile din afara ecranului"
+  },
+  "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | description": {
+    "message": "Resursele blochează prima redare a paginii. Poți să livrezi conținutul JS/CSS esențial inline și să amâni toate elementele JS/stilurile neesențiale. [Află mai multe](https://developers.google.com/web/tools/lighthouse/audits/blocking-resources)."
+  },
+  "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | title": {
+    "message": "Elimină resursele care blochează redarea"
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | description": {
+    "message": "Sarcinile mari de rețea îi costă pe utilizatori și sunt corelate cu timpi de încărcare îndelungați. [Află mai multe](https://developers.google.com/web/tools/lighthouse/audits/network-payloads)."
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | displayValue": {
+    "message": "Dimensiunea totală a fost de {totalBytes, number, bytes} KB"
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | failureTitle": {
+    "message": "Evită sarcinile uriașe de rețea"
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | title": {
+    "message": "Evită sarcinile uriașe de rețea"
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-css.js | description": {
+    "message": "Comprimarea fișierelor CSS poate reduce dimensiunea sarcinilor de rețea. [Află mai multe](https://developers.google.com/web/tools/lighthouse/audits/minify-css)."
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-css.js | title": {
+    "message": "Comprimă codul CSS"
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | description": {
+    "message": "Comprimarea fișierelor JavaScript poate reduce dimensiunea sarcinilor și timpul de analizare a scripturilor. [Află mai multe](https://developers.google.com/speed/docs/insights/MinifyResources)."
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | title": {
+    "message": "Comprimă codul JavaScript"
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | description": {
+    "message": "Elimină regulile nefolosite din foile de stil și amână încărcarea conținutului CSS nefolosit pentru conținutul din partea superioară a paginii ca să reduci numărul de byți consumați de activitatea în rețea. [Află mai multe](https://developers.google.com/web/tools/lighthouse/audits/unused-css)."
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | title": {
+    "message": "Elimină conținutul CSS nefolosit"
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-javascript.js | description": {
+    "message": "Elimină codul JavaScript nefolosit pentru a reduce byții consumați de activitatea rețelei."
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-javascript.js | title": {
+    "message": "Elimină codul JavaScript nefolosit"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | description": {
+    "message": "O durată lungă a memoriei cache poate grăbi accesările repetate ale paginii. [Află mai multe](https://developers.google.com/web/tools/lighthouse/audits/cache-policy)."
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | displayValue": {
+    "message": "{itemCount,plural, =1{o resursă găsită}few{# resurse găsite}other{# de resurse găsite}}"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | failureTitle": {
+    "message": "Difuzează elementele statice cu o politică eficientă de stocare în memoria cache"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | title": {
+    "message": "Folosește o politică eficientă de stocare în memoria cache pentru elementele statice"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | description": {
+    "message": "Imaginile optimizate se încarcă mai repede și consumă mai puține date mobile. [Află mai multe](https://developers.google.com/web/tools/lighthouse/audits/optimize-images)."
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | title": {
+    "message": "Codifică eficient imaginile"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | description": {
+    "message": "Difuzează imagini de dimensiuni corespunzătoare ca să economisești date mobile și să obții o încărcare mai rapidă. [Află mai multe](https://developers.google.com/web/tools/lighthouse/audits/oversized-images)."
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | title": {
+    "message": "Dimensionează corect imaginile"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | description": {
+    "message": "Resursele bazate pe text trebuie comprimate (gzip, deflate sau brotli) pentru a minimiza numărul total de byți în rețea. [Află mai multe](https://developers.google.com/web/tools/lighthouse/audits/text-compression)."
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | title": {
+    "message": "Activează comprimarea textului"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | description": {
+    "message": "Formatele de imagine ca JPEG 2000, JPEG XR și WebP oferă adesea o comprimare mai bună decât PNG sau JPEG, ceea ce înseamnă descărcări mai rapide și mai puțin consum de date. [Află mai multe](https://developers.google.com/web/tools/lighthouse/audits/webp)."
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | title": {
+    "message": "Difuzează imagini în formate moderne"
+  },
+  "lighthouse-core/audits/content-width.js | description": {
+    "message": "Dacă lățimea conținutului aplicației nu se potrivește cu lățimea ariei vizibile, este posibil ca aplicația să nu fie optimizată pentru ecrane mobile. [Află mai multe](https://developers.google.com/web/tools/lighthouse/audits/content-sized-correctly-for-viewport)."
+  },
+  "lighthouse-core/audits/content-width.js | explanation": {
+    "message": "Aria vizibilă de {innerWidth} px nu corespunde cu dimensiunea ferestrei, de {outerWidth} px."
+  },
+  "lighthouse-core/audits/content-width.js | failureTitle": {
+    "message": "Conținutul nu este dimensionat corect pentru aria vizibilă"
+  },
+  "lighthouse-core/audits/content-width.js | title": {
+    "message": "Conținutul este dimensionat corect pentru aria vizibilă"
+  },
+  "lighthouse-core/audits/critical-request-chains.js | description": {
+    "message": "Lanțurile de solicitări esențiale de mai jos îți arată ce resurse sunt încărcate cu prioritate ridicată. Poți să reduci lungimea lanțurilor, să reduci dimensiunea de descărcare a resurselor sau să amâni descărcarea de resurse inutile pentru a îmbunătăți încărcarea paginilor. [Află mai multe](https://developers.google.com/web/tools/lighthouse/audits/critical-request-chains)."
+  },
+  "lighthouse-core/audits/critical-request-chains.js | displayValue": {
+    "message": "{itemCount,plural, =1{un lanț găsit}few{# lanțuri găsite}other{# de lanțuri găsite}}"
+  },
+  "lighthouse-core/audits/critical-request-chains.js | title": {
+    "message": "Redu profunzimea solicitărilor esențiale"
+  },
+  "lighthouse-core/audits/deprecations.js | columnDeprecate": {
+    "message": "Renunțare la dezvoltare/Avertisment"
+  },
+  "lighthouse-core/audits/deprecations.js | columnLine": {
+    "message": "Rând"
+  },
+  "lighthouse-core/audits/deprecations.js | description": {
+    "message": "API-urile învechite vor fi eliminate, în final, din browser. [Află mai multe](https://web.dev/deprecations)."
+  },
+  "lighthouse-core/audits/deprecations.js | displayValue": {
+    "message": "{itemCount,plural, =1{A fost identificat un avertisment}few{Au fost identificate # avertismente}other{Au fost identificate # de avertismente}}"
+  },
+  "lighthouse-core/audits/deprecations.js | failureTitle": {
+    "message": "Folosește API-uri învechite"
+  },
+  "lighthouse-core/audits/deprecations.js | title": {
+    "message": "Evită API-urile învechite"
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | description": {
+    "message": "Memoria cache a aplicației este învechită. [Află mai multe](https://web.dev/appcache-manifest)."
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | displayValue": {
+    "message": "Am găsit „{AppCacheManifest}”"
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | failureTitle": {
+    "message": "Folosește memoria cache de aplicație"
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | title": {
+    "message": "Evită memoria cache a aplicației"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | description": {
+    "message": "Specificarea unui doctype împiedică browserul să treacă la modul caracteristici speciale. [Află mai multe](https://web.dev/doctype)."
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationBadDoctype": {
+    "message": "Numele doctype trebuie să fie șirul cu litere mici `html`"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationNoDoctype": {
+    "message": "Documentul trebuie să conțină un doctype"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationPublicId": {
+    "message": "Se aștepta ca publicId să fie un șir gol"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationSystemId": {
+    "message": "Se aștepta ca systemId să fie un șir gol"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | failureTitle": {
+    "message": "Pagina nu are doctype HTML, așadar declanșează modul caracteristici speciale"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | title": {
+    "message": "Pagina are doctype HTML"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | columnElement": {
+    "message": "Element"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | columnStatistic": {
+    "message": "Statistică"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | columnValue": {
+    "message": "Valoare"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | description": {
+    "message": "Specialiștii în browsere recomandă ca paginile să conțină mai puțin de ~1.500 de elemente DOM. Ideal este ca arborele să aibă o profunzime mai mică de 32 de elemente și mai puțin de 60 de elemente principale/subordonate. Un DOM mare poate crește folosirea memoriei, poate produce [calcule de stil](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations) mai lungi și [rearanjări ale aspectului](https://developers.google.com/speed/articles/reflow) costisitoare. [Află mai multe](https://web.dev/dom-size)."
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 element}few{# elemente}other{# de elemente}}"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | failureTitle": {
+    "message": "Evită o dimensiune DOM excesivă"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | statisticDOMDepth": {
+    "message": "Adâncimea DOM maximă"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | statisticDOMElements": {
+    "message": "Numărul total de elemente DOM"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | statisticDOMWidth": {
+    "message": "Numărul maxim de elemente subordonate"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | title": {
+    "message": "Evită o dimensiune DOM excesivă"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | columnRel": {
+    "message": "Rel"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | columnTarget": {
+    "message": "Obiectiv"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | description": {
+    "message": "Adaugă `rel=\"noopener\"` sau `rel=\"noreferrer\"` la orice linkuri externe pentru a îmbunătăți rezultatele și a preveni vulnerabilitățile de securitate. [Află mai multe](https://web.dev/external-anchors-use-rel-noopener)."
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | failureTitle": {
+    "message": "Linkurile spre destinații cu mai multe origini sunt nesigure"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | title": {
+    "message": "Linkurile spre destinații cu mai multe origini sunt sigure"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | warning": {
+    "message": "Nu se poate determina destinația pentru ancora ({anchorHTML}). Dacă nu se folosește ca hyperlink, elimină target=_blank."
+  },
+  "lighthouse-core/audits/dobetterweb/geolocation-on-start.js | description": {
+    "message": "Utilizatorii nu au încredere sau sunt derutați de site-urile care le solicită locația fără context. Asociază solicitarea cu o acțiune a utilizatorilor. [Află mai multe](https://web.dev/geolocation-on-start)."
+  },
+  "lighthouse-core/audits/dobetterweb/geolocation-on-start.js | failureTitle": {
+    "message": "Solicită permisiunea de localizare geografică la încărcarea paginii"
+  },
+  "lighthouse-core/audits/dobetterweb/geolocation-on-start.js | title": {
+    "message": "Evită solicitarea permisiunii de localizare geografică la încărcarea paginii"
+  },
+  "lighthouse-core/audits/dobetterweb/js-libraries.js | columnVersion": {
+    "message": "Versiune"
+  },
+  "lighthouse-core/audits/dobetterweb/js-libraries.js | description": {
+    "message": "Toate bibliotecile JavaScript front-end detectate în pagină. [Află mai multe](https://web.dev/js-libraries)."
+  },
+  "lighthouse-core/audits/dobetterweb/js-libraries.js | title": {
+    "message": "Biblioteci JavaScript detectate"
+  },
+  "lighthouse-core/audits/dobetterweb/no-document-write.js | description": {
+    "message": "Pentru utilizatorii cu conexiuni lente, scripturile externe injectate dinamic prin `document.write()` pot întârzia încărcarea paginilor cu zeci de secunde. [Află mai multe](https://web.dev/no-document-write)."
+  },
+  "lighthouse-core/audits/dobetterweb/no-document-write.js | failureTitle": {
+    "message": "Utilizări `document.write()`"
+  },
+  "lighthouse-core/audits/dobetterweb/no-document-write.js | title": {
+    "message": "Evită `document.write()`"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | columnSeverity": {
+    "message": "Cea mai mare severitate"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | columnVersion": {
+    "message": "Versiunea bibliotecii"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | columnVuln": {
+    "message": "Numărul de vulnerabilități"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | description": {
+    "message": "Unele scripturi terță parte pot conține vulnerabilități de securitate cunoscute, ușor de identificat și de exploatat de atacatori. [Află mai multe](https://web.dev/no-vulnerable-libraries)."
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | displayValue": {
+    "message": "{itemCount,plural, =1{O vulnerabilitate detectată}few{# vulnerabilități detectate}other{# de vulnerabilități detectate}}"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | failureTitle": {
+    "message": "Include bibliotecile JavaScript front-end cu vulnerabilități de securitate cunoscute"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | rowSeverityHigh": {
+    "message": "Înaltă"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | rowSeverityLow": {
+    "message": "Redusă"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | rowSeverityMedium": {
+    "message": "Medie"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | title": {
+    "message": "Evită bibliotecile JavaScript front-end cu vulnerabilități de securitate cunoscute"
+  },
+  "lighthouse-core/audits/dobetterweb/notification-on-start.js | description": {
+    "message": "Utilizatorii nu au încredere sau sunt derutați de site-urile care solicită să trimită notificări fără context. Asociază solicitarea cu gesturile utilizatorilor. [Află mai multe](https://web.dev/notification-on-start)."
+  },
+  "lighthouse-core/audits/dobetterweb/notification-on-start.js | failureTitle": {
+    "message": "Solicită permisiunea de notificare la încărcarea paginii"
+  },
+  "lighthouse-core/audits/dobetterweb/notification-on-start.js | title": {
+    "message": "Evită solicitarea permisiunii de notificare la încărcarea paginii"
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | columnFailingElem": {
+    "message": "Elemente cu probleme"
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | description": {
+    "message": "Împiedicarea inserării parolelor subminează buna politică de securitate. [Află mai multe](https://web.dev/password-inputs-can-be-pasted-into)."
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | failureTitle": {
+    "message": "Împiedică utilizatorii să insereze în câmpurile pentru parole"
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | title": {
+    "message": "Permite-le utilizatorilor să insereze în câmpurile pentru parole"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | columnProtocol": {
+    "message": "Protocol"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | description": {
+    "message": "HTTP/2 oferă multe beneficii față de HTTP/1.1, inclusiv antete binare, anunțuri multiplex și tehnologie push pentru server. [Află mai multe](https://web.dev/uses-http2)."
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | displayValue": {
+    "message": "{itemCount,plural, =1{O solicitare nu a fost difuzată prin HTTP/2}few{# solicitări nu au fost difuzate prin HTTP/2}other{# de solicitări nu au fost difuzate prin HTTP/2}}"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | failureTitle": {
+    "message": "Nu folosește HTTP/2 pentru toate resursele"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | title": {
+    "message": "Folosește HTTP/2 pentru propriile sale resurse"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-passive-event-listeners.js | description": {
+    "message": "Poți marca funcțiile de procesare a evenimentelor prin atingere sau derulare `passive` pentru a îmbunătăți capacitatea de derulare a paginii. [Află mai multe](https://web.dev/uses-passive-event-listeners)."
+  },
+  "lighthouse-core/audits/dobetterweb/uses-passive-event-listeners.js | failureTitle": {
+    "message": "Nu folosește ascultători pasivi pentru a îmbunătăți performanța la derulare"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-passive-event-listeners.js | title": {
+    "message": "Folosește ascultători pasivi pentru a îmbunătăți performanța la derulare"
+  },
+  "lighthouse-core/audits/errors-in-console.js | columnDesc": {
+    "message": "Descriere"
+  },
+  "lighthouse-core/audits/errors-in-console.js | description": {
+    "message": "Erorile înregistrate pe consolă indică probleme nerezolvate Acestea pot fi provocate de erorile de solicitare din rețea și de alte probleme ale browserului. [Află mai multe](https://web.dev/errors-in-console)"
+  },
+  "lighthouse-core/audits/errors-in-console.js | failureTitle": {
+    "message": "S-au înregistrat erori de browser pe consolă"
+  },
+  "lighthouse-core/audits/errors-in-console.js | title": {
+    "message": "Nu s-a înregistrat nicio eroare de browser pe consolă"
+  },
+  "lighthouse-core/audits/font-display.js | description": {
+    "message": "Poți folosi funcția CSS de afișare a fonturilor pentru a verifica dacă textul este vizibil pentru utilizatori în timp ce se încarcă fonturile web. [Află mai multe](https://developers.google.com/web/updates/2016/02/font-display)."
+  },
+  "lighthouse-core/audits/font-display.js | failureTitle": {
+    "message": "Asigură-te că textul rămâne vizibil în timpul încărcării fonturilor web"
+  },
+  "lighthouse-core/audits/font-display.js | title": {
+    "message": "Tot textul rămâne vizibil în timpul încărcării fonturilor web"
+  },
+  "lighthouse-core/audits/font-display.js | undeclaredFontURLWarning": {
+    "message": "Lighthouse nu a putut verifica automat valoarea de afișare a fonturilor pentru următoarea adresă URL: {fontURL}."
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | columnActual": {
+    "message": "Raport de dimensiuni (real)"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | columnDisplayed": {
+    "message": "Raport de dimensiuni (afișat)"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | description": {
+    "message": "Dimensiunile de afișare a imaginilor trebuie să se potrivească raportului natural de dimensiuni. [Află mai multe](https://web.dev/image-aspect-ratio)."
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | failureTitle": {
+    "message": "Afișează imaginile cu rapoarte de dimensiuni incorecte"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | title": {
+    "message": "Afișează imaginile cu rapoarte de dimensiuni corecte"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | warningCompute": {
+    "message": "Informații nevalide privind dimensiunea imaginilor {url}"
+  },
+  "lighthouse-core/audits/installable-manifest.js | description": {
+    "message": "Browserele le pot solicita utilizatorilor să adauge aplicația pe ecranele de pornire, lucru care poate duce la o implicare mai mare. [Află mai multe](https://developers.google.com/web/tools/lighthouse/audits/install-prompt)."
+  },
+  "lighthouse-core/audits/installable-manifest.js | failureTitle": {
+    "message": "Manifestul aplicației web nu îndeplinește cerințele de instalare"
+  },
+  "lighthouse-core/audits/installable-manifest.js | title": {
+    "message": "Manifestul aplicației web îndeplinește cerințele de instalare"
+  },
+  "lighthouse-core/audits/is-on-https.js | columnInsecureURL": {
+    "message": "Adresă URL nesigură"
+  },
+  "lighthouse-core/audits/is-on-https.js | description": {
+    "message": "Toate site-urile trebuie protejate cu HTTPS, chiar și cele care nu gestionează date sensibile. HTTPS împiedică persoanele străine să modifice sau să asculte pasiv comunicațiile dintre aplicația ta și utilizatori, fiind o cerință obligatorie pentru HTTP/2 și multe API-uri noi pentru platformele web. [Află mai multe](https://web.dev/is-on-https)."
+  },
+  "lighthouse-core/audits/is-on-https.js | displayValue": {
+    "message": "{itemCount,plural, =1{S-a găsit o solicitare nesigură}few{S-au găsit # solicitări nesigure}other{S-au găsit # de solicitări nesigure}}"
+  },
+  "lighthouse-core/audits/is-on-https.js | failureTitle": {
+    "message": "Nu folosește HTTPS"
+  },
+  "lighthouse-core/audits/is-on-https.js | title": {
+    "message": "Folosește HTTPS"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | description": {
+    "message": "O încărcare rapidă a paginii într-o rețea celulară asigură o experiență bună a utilizatorului pe mobil. [Află mai multe](https://developers.google.com/web/tools/lighthouse/audits/fast-3g)."
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | displayValueText": {
+    "message": "Interactiv la {timeInMs, number, seconds} s"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | displayValueTextWithOverride": {
+    "message": "Interactivă pe rețeaua mobilă simulată la {timeInMs, number, seconds} s"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | explanationLoadSlow": {
+    "message": "Pagina se încarcă prea lent și nu este interactivă în 10 secunde. Analizează oportunitățile și diagnosticele din secțiunea „Performanță” ca să afli cum s-o îmbunătățești."
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | failureTitle": {
+    "message": "Încărcarea paginii nu este suficient de rapidă în rețele mobile"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | title": {
+    "message": "Încărcarea paginii este suficient de rapidă în rețele mobile"
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | columnCategory": {
+    "message": "Categorie"
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | description": {
+    "message": "Poți reduce timpul petrecut cu analizarea, compilarea și executarea JS. Livrarea unor sarcini JS mai mici poate ajuta în acest sens."
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | failureTitle": {
+    "message": "Minimizează procesarea firului principal"
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | title": {
+    "message": "Minimizează procesarea firului principal"
+  },
+  "lighthouse-core/audits/manual/pwa-cross-browser.js | description": {
+    "message": "Ca să se adreseze cât mai multor utilizatori, site-urile trebuie să funcționeze în toate browserele importante. [Află mai multe](https://developers.google.com/web/progressive-web-apps/checklist#site-works-cross-browser)."
+  },
+  "lighthouse-core/audits/manual/pwa-cross-browser.js | title": {
+    "message": "Site-ul funcționează pe orice browser"
+  },
+  "lighthouse-core/audits/manual/pwa-each-page-has-url.js | description": {
+    "message": "Asigură-te că se pot crea linkuri directe către pagini individuale prin adresa URL și că adresele URL sunt unice, pentru a putea fi trimise în rețelele sociale. [Află mai multe](https://developers.google.com/web/progressive-web-apps/checklist#each-page-has-a-url)."
+  },
+  "lighthouse-core/audits/manual/pwa-each-page-has-url.js | title": {
+    "message": "Fiecare pagină are o adresă URL"
+  },
+  "lighthouse-core/audits/manual/pwa-page-transitions.js | description": {
+    "message": "Tranzițiile trebuie să aibă loc repede atunci când atingi ecranul, chiar și în rețele lente, pentru o performanță percepută superioară. [Află mai multe](https://developers.google.com/web/progressive-web-apps/checklist#page-transitions-dont-feel-like-they-block-on-the-network)."
+  },
+  "lighthouse-core/audits/manual/pwa-page-transitions.js | title": {
+    "message": "Tranzițiile de pagini nu par să blocheze rețeaua"
+  },
+  "lighthouse-core/audits/metrics/estimated-input-latency.js | description": {
+    "message": "Latența estimată a comenzilor reprezintă o estimare a duratei necesare pentru ca aplicația să răspundă la comanda utilizatorului, în milisecunde, în cea mai aglomerată fereastră de cinci secunde de încărcare a paginii. Dacă latența este mai mare de 50 ms, utilizatorii îți pot percepe aplicația ca fiind lentă. [Află mai multe](https://developers.google.com/web/tools/lighthouse/audits/estimated-input-latency)."
+  },
+  "lighthouse-core/audits/metrics/estimated-input-latency.js | title": {
+    "message": "Latența estimată a comenzilor"
+  },
+  "lighthouse-core/audits/metrics/first-contentful-paint.js | description": {
+    "message": "Prima redare de conținut arată momentul când se redă primul text sau prima imagine. [Află mai multe](https://developers.google.com/web/tools/lighthouse/audits/first-contentful-paint)."
+  },
+  "lighthouse-core/audits/metrics/first-contentful-paint.js | title": {
+    "message": "Prima redare de conținut"
+  },
+  "lighthouse-core/audits/metrics/first-cpu-idle.js | description": {
+    "message": "Primul „CPU inactiv” semnalează primul moment în care firul principal al paginii este suficient de liber pentru a accepta comenzi. [Află mai multe](https://developers.google.com/web/tools/lighthouse/audits/first-interactive)."
+  },
+  "lighthouse-core/audits/metrics/first-cpu-idle.js | title": {
+    "message": "Primul „CPU inactiv”"
+  },
+  "lighthouse-core/audits/metrics/first-meaningful-paint.js | description": {
+    "message": "Prima redare semnificativă arată momentul când este vizibil conținutul principal al unei pagini. [Află mai multe](https://developers.google.com/web/tools/lighthouse/audits/first-meaningful-paint)."
+  },
+  "lighthouse-core/audits/metrics/first-meaningful-paint.js | title": {
+    "message": "Prima redare semnificativă"
+  },
+  "lighthouse-core/audits/metrics/interactive.js | description": {
+    "message": "Timpul până la interactivitate este timpul necesar pentru ca pagina să devină complet interactivă. [Află mai multe](https://developers.google.com/web/tools/lighthouse/audits/consistently-interactive)."
+  },
+  "lighthouse-core/audits/metrics/interactive.js | title": {
+    "message": "Timpul până la interactivitate"
+  },
+  "lighthouse-core/audits/metrics/max-potential-fid.js | description": {
+    "message": "Timpul maxim potențial de la prima interacțiune cu care utilizatorii se pot confrunta este durata, în milisecunde, a celei mai lungi activități. [Află mai multe](https://developers.google.com/web/updates/2018/05/first-input-delay)."
+  },
+  "lighthouse-core/audits/metrics/max-potential-fid.js | title": {
+    "message": "Timpul maxim potențial de la prima interacțiune"
+  },
+  "lighthouse-core/audits/metrics/speed-index.js | description": {
+    "message": "Indexul de viteză arată cât de repede se completează vizibil conținutul unei pagini. [Află mai multe](https://developers.google.com/web/tools/lighthouse/audits/speed-index)."
+  },
+  "lighthouse-core/audits/metrics/speed-index.js | title": {
+    "message": "Index de viteză"
+  },
+  "lighthouse-core/audits/metrics/total-blocking-time.js | description": {
+    "message": "Suma tuturor perioadelor de timp dintre FCP și Timpul până la interactivitate, când lungimea activității a depășit 50 ms, exprimate în milisecunde."
+  },
+  "lighthouse-core/audits/metrics/total-blocking-time.js | title": {
+    "message": "Durata totală de blocare"
+  },
+  "lighthouse-core/audits/network-rtt.js | description": {
+    "message": "Durata pingului în rețea (RTT) are impact important asupra performanței. Dacă RTT către o origine este mare, înseamnă că serverele mai apropiate de utilizator pot îmbunătăți performanța. [Află mai multe](https://hpbn.co/primer-on-latency-and-bandwidth/)."
+  },
+  "lighthouse-core/audits/network-rtt.js | title": {
+    "message": "Durata pingului în rețea"
+  },
+  "lighthouse-core/audits/network-server-latency.js | description": {
+    "message": "Latențele serverului pot influența rezultatele pe web. Dacă latența serverului unei origini este mare, înseamnă că serverul este supraîncărcat sau are performanțe slabe în backend. [Află mai multe](https://hpbn.co/primer-on-web-performance/#analyzing-the-resource-waterfall)."
+  },
+  "lighthouse-core/audits/network-server-latency.js | title": {
+    "message": "Latențe ale backendului serverului"
+  },
+  "lighthouse-core/audits/offline-start-url.js | description": {
+    "message": "Un service worker permite ca aplicația să fie fiabilă în condiții de rețea imprevizibile. [Află mai multe](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)."
+  },
+  "lighthouse-core/audits/offline-start-url.js | failureTitle": {
+    "message": "`start_url` nu răspunde cu codul de stare 200 când este offline"
+  },
+  "lighthouse-core/audits/offline-start-url.js | title": {
+    "message": "`start_url` răspunde cu codul de stare 200 când este offline"
+  },
+  "lighthouse-core/audits/offline-start-url.js | warningCantStart": {
+    "message": "Lighthouse nu a putut citi `start_url` din manifest. Prin urmare, s-a presupus că `start_url` este adresa URL a documentului. Mesaj de eroare: „{manifestWarning}”."
+  },
+  "lighthouse-core/audits/performance-budget.js | columnOverBudget": {
+    "message": "Peste buget"
+  },
+  "lighthouse-core/audits/performance-budget.js | description": {
+    "message": "Păstrează cantitatea și dimensiunea solicitărilor din rețea sub obiectivele stabilite de bugetul de performanță solicitat. [Află mai multe](https://developers.google.com/web/tools/lighthouse/audits/budgets)."
+  },
+  "lighthouse-core/audits/performance-budget.js | requestCountOverBudget": {
+    "message": "{count,plural, =1{O solicitare}few{# solicitări}other{# de solicitări}}"
+  },
+  "lighthouse-core/audits/performance-budget.js | title": {
+    "message": "Buget de performanță"
+  },
+  "lighthouse-core/audits/redirects-http.js | description": {
+    "message": "Dacă ai configurat deja HTTPS, redirecționează tot traficul HTTP spre HTTPS, ca să activezi funcțiile web sigure pentru toți utilizatorii. [Află mai multe](https://developers.google.com/web/tools/lighthouse/audits/http-redirects-to-https)."
+  },
+  "lighthouse-core/audits/redirects-http.js | failureTitle": {
+    "message": "Nu redirecționează traficul HTTP spre HTTPS"
+  },
+  "lighthouse-core/audits/redirects-http.js | title": {
+    "message": "Redirecționează traficul HTTP spre HTTPS"
+  },
+  "lighthouse-core/audits/redirects.js | description": {
+    "message": "Redirecționările introduc întârzieri suplimentare înainte ca pagina să se poată încărca. [Află mai multe](https://developers.google.com/web/tools/lighthouse/audits/redirects)."
+  },
+  "lighthouse-core/audits/redirects.js | title": {
+    "message": "Evită mai multe redirecționări ale paginii"
+  },
+  "lighthouse-core/audits/resource-summary.js | description": {
+    "message": "Ca să setezi bugetele pentru cantitatea și dimensiunea resurselor de pagină, adaugă un fișier budget.json. [Află mai multe](https://developers.google.com/web/tools/lighthouse/audits/budgets)."
+  },
+  "lighthouse-core/audits/resource-summary.js | displayValue": {
+    "message": "{requestCount,plural, =1{O solicitare • {byteCount, number, bytes} KB}few{# solicitări • {byteCount, number, bytes} KB}other{# de solicitări • {byteCount, number, bytes} KB}}"
+  },
+  "lighthouse-core/audits/resource-summary.js | title": {
+    "message": "Păstrează numărul de solicitări scăzut și dimensiunea transferurilor redusă"
+  },
+  "lighthouse-core/audits/seo/canonical.js | description": {
+    "message": "Linkurile canonice sugerează care adresă URL să se afișeze în rezultatele căutării. [Află mai multe](https://web.dev/canonical)."
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationConflict": {
+    "message": "Mai multe adrese URL incompatibile ({urlList})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationDifferentDomain": {
+    "message": "Indică spre alt domeniu ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationInvalid": {
+    "message": "Adresă URL nevalidă ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationPointsElsewhere": {
+    "message": "Indică spre altă locație `hreflang` ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationRelative": {
+    "message": "Adresa URL relativă ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationRoot": {
+    "message": "Direcționează către adresa URL a rădăcinii domeniului (pagina principală), nu către o pagină de conținut echivalentă"
+  },
+  "lighthouse-core/audits/seo/canonical.js | failureTitle": {
+    "message": "Documentul nu are un `rel=canonical` valid"
+  },
+  "lighthouse-core/audits/seo/canonical.js | title": {
+    "message": "Documentul are un `rel=canonical` valid"
+  },
+  "lighthouse-core/audits/seo/font-size.js | description": {
+    "message": "Dimensiunile fontului mai mici de 12 pixeli sunt prea mici pentru a putea fi citite, iar utilizatorii de dispozitive mobile trebuie să „ciupească pentru zoom” pentru a citi. Încearcă să ai peste 60 % din textul paginii cu font ≥12 px. [Află mai multe](https://web.dev/font-size)."
+  },
+  "lighthouse-core/audits/seo/font-size.js | displayValue": {
+    "message": "Text lizibil {decimalProportion, number, extendedPercent}"
+  },
+  "lighthouse-core/audits/seo/font-size.js | explanationViewport": {
+    "message": "Textul nu este lizibil deoarece nu există nicio metaetichetă viewport optimizată pentru ecranele dispozitivelor mobile."
+  },
+  "lighthouse-core/audits/seo/font-size.js | explanationWithDisclaimer": {
+    "message": "{decimalProportion, number, extendedPercent} din text este prea mic (pornind de la un eșantion de {decimalProportionVisited, number, extendedPercent})."
+  },
+  "lighthouse-core/audits/seo/font-size.js | failureTitle": {
+    "message": "Documentul nu folosește dimensiuni de fonturi lizibile"
+  },
+  "lighthouse-core/audits/seo/font-size.js | title": {
+    "message": "Documentul folosește dimensiuni de font lizibile"
+  },
+  "lighthouse-core/audits/seo/hreflang.js | description": {
+    "message": "Linkurile hreflang spun motoarelor de căutare ce versiune a unei pagini să înregistreze în rezultatele căutării pentru o limbă sau regiune dată. [Află mai multe](https://web.dev/hreflang)."
+  },
+  "lighthouse-core/audits/seo/hreflang.js | failureTitle": {
+    "message": "Document nu are un `hreflang` valid"
+  },
+  "lighthouse-core/audits/seo/hreflang.js | title": {
+    "message": "Documentul are un `hreflang` valid"
+  },
+  "lighthouse-core/audits/seo/http-status-code.js | description": {
+    "message": "Este posibil ca paginile cu Coduri de stare HTTP nefuncționale să nu fie indexate corect. [Află mai multe](https://web.dev/http-status-code)."
+  },
+  "lighthouse-core/audits/seo/http-status-code.js | failureTitle": {
+    "message": "Pagina are Cod de stare HTTP nefuncțional"
+  },
+  "lighthouse-core/audits/seo/http-status-code.js | title": {
+    "message": "Pagina are Cod de stare HTTP funcțional"
+  },
+  "lighthouse-core/audits/seo/is-crawlable.js | description": {
+    "message": "Motoarele de căutare nu pot include paginile în rezultatele căutării dacă nu au permisiunea de a le accesa cu crawlere. [Află mai multe](https://web.dev/is-crawable)."
+  },
+  "lighthouse-core/audits/seo/is-crawlable.js | failureTitle": {
+    "message": "Indexarea este blocată pentru pagină"
+  },
+  "lighthouse-core/audits/seo/is-crawlable.js | title": {
+    "message": "Indexarea nu este blocată pentru pagină"
+  },
+  "lighthouse-core/audits/seo/link-text.js | description": {
+    "message": "Textul descriptiv al linkului ajută motoarele de căutare să înțeleagă conținutul. [Află mai multe](https://web.dev/link-text)."
+  },
+  "lighthouse-core/audits/seo/link-text.js | displayValue": {
+    "message": "{itemCount,plural, =1{S-a găsit un link}few{S-au găsit # linkuri}other{S-au găsit # de linkuri}}"
+  },
+  "lighthouse-core/audits/seo/link-text.js | failureTitle": {
+    "message": "Linkurile nu au text descriptiv"
+  },
+  "lighthouse-core/audits/seo/link-text.js | title": {
+    "message": "Linkurile au text descriptiv"
+  },
+  "lighthouse-core/audits/seo/manual/structured-data.js | description": {
+    "message": "Rulează [Instrumentul de testare pentru date structurate](https://search.google.com/structured-data/testing-tool/) și [Structured Data Linter](http://linter.structured-data.org/) pentru a valida datele structurate. [Află mai multe](https://web.dev/structured-data)."
+  },
+  "lighthouse-core/audits/seo/manual/structured-data.js | title": {
+    "message": "Datele structurate sunt valide"
+  },
+  "lighthouse-core/audits/seo/meta-description.js | description": {
+    "message": "Metadescrierile pot fi incluse în rezultatele căutării pentru a rezuma conținutul paginii. [Află mai multe](https://web.dev/meta-description)."
+  },
+  "lighthouse-core/audits/seo/meta-description.js | explanation": {
+    "message": "Textul de descriere nu este completat."
+  },
+  "lighthouse-core/audits/seo/meta-description.js | failureTitle": {
+    "message": "Documentul nu are o metadescriere"
+  },
+  "lighthouse-core/audits/seo/meta-description.js | title": {
+    "message": "Documentul are o metadescriere"
+  },
+  "lighthouse-core/audits/seo/plugins.js | description": {
+    "message": "Motoarele de căutare nu pot indexa conținutul pluginurilor și multe dispozitive restricționează pluginurile sau nu le acceptă. [Află mai multe](https://web.dev/plugins)."
+  },
+  "lighthouse-core/audits/seo/plugins.js | failureTitle": {
+    "message": "Documentul folosește pluginuri"
+  },
+  "lighthouse-core/audits/seo/plugins.js | title": {
+    "message": "Documentul evită pluginurile"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | description": {
+    "message": "Dacă fișierul robots.txt este deteriorat, este posibil ca aplicațiile crawler să nu poată înțelege cum vrei să fie site-ul tău accesat cu crawlere sau indexat. [Află mai multe](https://web.dev/robots-txt)."
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | displayValueHttpBadCode": {
+    "message": "Cererea pentru robots.txt a returnat starea HTTP: {statusCode}"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | displayValueValidationError": {
+    "message": "{itemCount,plural, =1{A fost identificată o eroare}few{Au fost identificate # erori}other{Au fost identificate # de erori}}"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | explanation": {
+    "message": "Lighthouse nu a putut să descarce un fișier robots.txt"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | failureTitle": {
+    "message": "Fișierul robots.txt nu este valid"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | title": {
+    "message": "Fișierul robots.txt este valid"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | description": {
+    "message": "Elementele interactive, precum butoanele și linkurile, trebuie să fie suficient de mari (48x48 px) și să aibă suficient spațiu în jurul lor, pentru a fi ușor de atins, fără a se suprapune peste alte elemente. [Află mai multe](https://web.dev/tap-targets)."
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | displayValue": {
+    "message": "{decimalProportion, number, percent} direcționări ale atingerilor au mărimea corectă"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | explanationViewportMetaNotOptimized": {
+    "message": "Direcționările atingerilor sunt prea mici, deoarece nu există o metaetichetă Viewport optimizată pentru ecranele dispozitivelor mobile"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | failureTitle": {
+    "message": "Direcționările atingerilor nu sunt dimensionate corect"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | overlappingTargetHeader": {
+    "message": "Direcționarea se suprapune"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | tapTargetHeader": {
+    "message": "Direcționarea atingerii"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | title": {
+    "message": "Direcționările atingerilor sunt dimensionate corect"
+  },
+  "lighthouse-core/audits/service-worker.js | description": {
+    "message": "Service worker este tehnologia care îi permite aplicației să folosească mai multe funcții de aplicații web progresive, cum ar fi cele offline, adăugarea în ecranul de pornire și notificările push. [Află mai multe](https://developers.google.com/web/tools/lighthouse/audits/registered-service-worker)."
+  },
+  "lighthouse-core/audits/service-worker.js | explanationBadManifest": {
+    "message": "Pagina este controlată de un service worker, dar nu s-a găsit niciun `start_url`, deoarece manifestul nu s-a putut analiza ca un JSON valid"
+  },
+  "lighthouse-core/audits/service-worker.js | explanationBadStartUrl": {
+    "message": "Pagina este controlată de un service worker, dar `start_url` ({startUrl}) nu este în aria de acoperire a acestuia ({scopeUrl})"
+  },
+  "lighthouse-core/audits/service-worker.js | explanationNoManifest": {
+    "message": "Pagina este controlată de un service worker, dar nu s-a găsit un `start_url`, deoarece nu s-a preluat niciun manifest."
+  },
+  "lighthouse-core/audits/service-worker.js | explanationOutOfScope": {
+    "message": "Această origine are unul sau mai multe elemente service worker, însă pagina ({pageUrl}) nu este în aria de acoperire."
+  },
+  "lighthouse-core/audits/service-worker.js | failureTitle": {
+    "message": "Nu înregistrează un service worker care să controleze pagina și `start_url`"
+  },
+  "lighthouse-core/audits/service-worker.js | title": {
+    "message": "Înregistrează un service worker care să controleze pagina și `start_url`"
+  },
+  "lighthouse-core/audits/splash-screen.js | description": {
+    "message": "Un ecran de întâmpinare tematic asigură o experiență de calitate atunci când utilizatorii lansează aplicația din ecranele de pornire. [Află mai multe](https://developers.google.com/web/tools/lighthouse/audits/custom-splash-screen)."
+  },
+  "lighthouse-core/audits/splash-screen.js | failureTitle": {
+    "message": "Nu este configurat pentru un ecran de întâmpinare personalizat"
+  },
+  "lighthouse-core/audits/splash-screen.js | title": {
+    "message": "Configurat pentru un ecran de întâmpinare personalizat"
+  },
+  "lighthouse-core/audits/themed-omnibox.js | description": {
+    "message": "Bara de adrese din browser poate avea o temă ce corespunde cu site-ul tău. [Află mai multe](https://developers.google.com/web/tools/lighthouse/audits/address-bar)."
+  },
+  "lighthouse-core/audits/themed-omnibox.js | failureTitle": {
+    "message": "Nu setează o culoare tematică pentru bara de adrese."
+  },
+  "lighthouse-core/audits/themed-omnibox.js | title": {
+    "message": "Setează o culoare tematică pentru bara de adrese."
+  },
+  "lighthouse-core/audits/third-party-summary.js | columnBlockingTime": {
+    "message": "Timpul de blocare a firului principal"
+  },
+  "lighthouse-core/audits/third-party-summary.js | columnThirdParty": {
+    "message": "Terță parte"
+  },
+  "lighthouse-core/audits/third-party-summary.js | description": {
+    "message": "Codul terță parte poate influența semnificativ performanța de încărcare. Limitează numărul de furnizori terță parte redundanți și încearcă să încarce cod terță parte după ce pagina a terminat încărcarea de bază. [Află mai multe](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/loading-third-party-javascript/)."
+  },
+  "lighthouse-core/audits/third-party-summary.js | displayValue": {
+    "message": "Codul terță parte a blocat firul principal pentru {timeInMs, number, milliseconds} ms"
+  },
+  "lighthouse-core/audits/third-party-summary.js | failureTitle": {
+    "message": "Redu impactul codului de la terți"
+  },
+  "lighthouse-core/audits/third-party-summary.js | title": {
+    "message": "Utilizarea terță parte"
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | description": {
+    "message": "Timpul până la primul byte identifică timpul în care serverul trimite un răspuns. [Află mai multe](https://developers.google.com/web/tools/lighthouse/audits/ttfb)."
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | displayValue": {
+    "message": "Documentul rădăcină a avut nevoie de {timeInMs, number, milliseconds} ms"
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | failureTitle": {
+    "message": "Redu timpii de răspuns ai serverului (TTFB)"
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | title": {
+    "message": "Serverul răspunde repede (TTFB)"
+  },
+  "lighthouse-core/audits/user-timings.js | columnDuration": {
+    "message": "Durată"
+  },
+  "lighthouse-core/audits/user-timings.js | columnStartTime": {
+    "message": "Ora de începere"
+  },
+  "lighthouse-core/audits/user-timings.js | columnType": {
+    "message": "Tip"
+  },
+  "lighthouse-core/audits/user-timings.js | description": {
+    "message": "Îți poți îmbunătăți aplicația cu API-ul User Timing ca să măsori performanța reală a acesteia în timpul experiențelor de utilizare principale. [Află mai multe](https://developers.google.com/web/tools/lighthouse/audits/user-timing)."
+  },
+  "lighthouse-core/audits/user-timings.js | displayValue": {
+    "message": "{itemCount,plural, =1{o durată a utilizării}few{# durate ale utilizărilor}other{# de durate ale utilizărilor}}"
+  },
+  "lighthouse-core/audits/user-timings.js | title": {
+    "message": "Mărci și dimensiuni pentru Duratele utilizărilor"
+  },
+  "lighthouse-core/audits/uses-rel-preconnect.js | crossoriginWarning": {
+    "message": "Un <link> preconectat a fost găsit pentru „{securityOrigin}”, dar nu a fost folosit de browser. Verifică dacă folosești corect atributul `crossorigin`."
+  },
+  "lighthouse-core/audits/uses-rel-preconnect.js | description": {
+    "message": "Adaugă indicii de resurse `preconnect` sau `dns-prefetch` pentru a crea conexiunile inițiale la originile terță parte importante. [Află mai multe](https://developers.google.com/web/fundamentals/performance/resource-prioritization#preconnect)."
+  },
+  "lighthouse-core/audits/uses-rel-preconnect.js | title": {
+    "message": "Preconectează la originile necesare"
+  },
+  "lighthouse-core/audits/uses-rel-preload.js | crossoriginWarning": {
+    "message": "Un <link> preîncărcat a fost găsit pentru „{preloadURL}”, dar nu a fost folosit de browser. Verifică dacă folosești corect atributul `crossorigin`."
+  },
+  "lighthouse-core/audits/uses-rel-preload.js | description": {
+    "message": "Poți folosi `<link rel=preload>` ca să acorzi prioritate preluării resurselor care sunt momentan solicitate mai târziu la încărcarea paginii. [Află mai multe](https://developers.google.com/web/tools/lighthouse/audits/preload)."
+  },
+  "lighthouse-core/audits/uses-rel-preload.js | title": {
+    "message": "Preîncarcă solicitările importante"
+  },
+  "lighthouse-core/audits/viewport.js | description": {
+    "message": "Adaugă o etichetă `<meta name=\"viewport\">` ca să-ți optimizezi aplicația pentru ecranele mobile. [Află mai multe](https://developers.google.com/web/tools/lighthouse/audits/has-viewport-meta-tag)."
+  },
+  "lighthouse-core/audits/viewport.js | explanationNoTag": {
+    "message": "Nu s-a găsit nicio etichetă `<meta name=\"viewport\">`"
+  },
+  "lighthouse-core/audits/viewport.js | failureTitle": {
+    "message": "Nu are o etichetă `<meta name=\"viewport\">` cu `width` sau `initial-scale`"
+  },
+  "lighthouse-core/audits/viewport.js | title": {
+    "message": "Are o etichetă `<meta name=\"viewport\">` cu `width` sau `initial-scale`"
+  },
+  "lighthouse-core/audits/without-javascript.js | description": {
+    "message": "Aplicația ta trebuie să afișeze o parte de conținut când JavaScript este dezactivat, chiar dacă este doar o atenționare pentru utilizator că JavaScript este obligatoriu pentru a folosi aplicația. [Află mai multe](https://developers.google.com/web/tools/lighthouse/audits/no-js)."
+  },
+  "lighthouse-core/audits/without-javascript.js | explanation": {
+    "message": "Corpul paginii trebuie să redea o parte de conținut dacă scripturile sale nu sunt disponibile."
+  },
+  "lighthouse-core/audits/without-javascript.js | failureTitle": {
+    "message": "Nu oferă conținut alternativ când JavaScript nu este disponibil"
+  },
+  "lighthouse-core/audits/without-javascript.js | title": {
+    "message": "Include o parte de conținut când JavaScript nu este disponibil"
+  },
+  "lighthouse-core/audits/works-offline.js | description": {
+    "message": "Dacă creezi o aplicație web progresivă, poți folosi un service worker pentru ca aplicația să poată funcționa offline. [Află mai multe](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)."
+  },
+  "lighthouse-core/audits/works-offline.js | failureTitle": {
+    "message": "Pagina curentă nu răspunde cu codul de stare 200 când este offline"
+  },
+  "lighthouse-core/audits/works-offline.js | title": {
+    "message": "Pagina curentă răspunde cu codul de stare 200 când este offline"
+  },
+  "lighthouse-core/audits/works-offline.js | warningNoLoad": {
+    "message": "Este posibil ca pagina să nu se încarce offline, deoarece adresa URL de testare ({requested}) a fost redirecționată spre „{final}”. Încearcă să testezi direct a doua adresă URL."
+  },
+  "lighthouse-core/config/default-config.js | a11yAriaGroupDescription": {
+    "message": "Acestea sunt oportunități de a îmbunătăți utilizarea ARIA în aplicație, lucru care poate îmbunătăți experiența pentru utilizatorii tehnologiei care asigură asistență, precum un cititor de ecran."
+  },
+  "lighthouse-core/config/default-config.js | a11yAriaGroupTitle": {
+    "message": "ARIA"
+  },
+  "lighthouse-core/config/default-config.js | a11yAudioVideoGroupDescription": {
+    "message": "Acestea sunt oportunități de a oferi conținut secundar audio și video. Astfel se poate îmbunătăți experiența utilizatorilor cu deficiențe de auz sau de vedere."
+  },
+  "lighthouse-core/config/default-config.js | a11yAudioVideoGroupTitle": {
+    "message": "Audio și video"
+  },
+  "lighthouse-core/config/default-config.js | a11yBestPracticesGroupDescription": {
+    "message": "Aceste elemente evidențiază cele mai bune practici privind accesibilitatea."
+  },
+  "lighthouse-core/config/default-config.js | a11yBestPracticesGroupTitle": {
+    "message": "Cele mai bune practici"
+  },
+  "lighthouse-core/config/default-config.js | a11yCategoryDescription": {
+    "message": "Aceste verificări evidențiază oportunitățile pentru a [îmbunătăți accesibilitatea aplicației web](https://developers.google.com/web/fundamentals/accessibility). Doar un subset de probleme de accesibilitate pot fi detectate automat, astfel încât se recomandă și testarea manuală."
+  },
+  "lighthouse-core/config/default-config.js | a11yCategoryManualDescription": {
+    "message": "Aceste elemente se adresează zonelor pe care un instrument de testare automată nu le poate acoperi. Află mai multe din ghidul nostru despre [realizarea unei evaluări a accesibilității](https://developers.google.com/web/fundamentals/accessibility/how-to-review)."
+  },
+  "lighthouse-core/config/default-config.js | a11yCategoryTitle": {
+    "message": "Accesibilitate"
+  },
+  "lighthouse-core/config/default-config.js | a11yColorContrastGroupDescription": {
+    "message": "Acestea sunt oportunități de a-ți îmbunătăți lizibilitatea conținutului."
+  },
+  "lighthouse-core/config/default-config.js | a11yColorContrastGroupTitle": {
+    "message": "Contrast"
+  },
+  "lighthouse-core/config/default-config.js | a11yLanguageGroupDescription": {
+    "message": "Acestea sunt oportunități de a îmbunătăți interpretarea conținutului tău de utilizatori, în diferite coduri locale."
+  },
+  "lighthouse-core/config/default-config.js | a11yLanguageGroupTitle": {
+    "message": "Internaționalizare și localizare"
+  },
+  "lighthouse-core/config/default-config.js | a11yNamesLabelsGroupDescription": {
+    "message": "Acestea sunt oportunități de a îmbunătăți semantica opțiunilor de control din aplicația ta. Astfel se poate îmbunătăți experiența utilizatorilor de tehnologii care asigură asistență, precum un cititor de ecran."
+  },
+  "lighthouse-core/config/default-config.js | a11yNamesLabelsGroupTitle": {
+    "message": "Nume și etichete"
+  },
+  "lighthouse-core/config/default-config.js | a11yNavigationGroupDescription": {
+    "message": "Acestea sunt oportunități de a îmbunătăți navigarea pe tastatură în aplicația ta."
+  },
+  "lighthouse-core/config/default-config.js | a11yNavigationGroupTitle": {
+    "message": "Navigare"
+  },
+  "lighthouse-core/config/default-config.js | a11yTablesListsVideoGroupDescription": {
+    "message": "Acestea sunt oportunități de a îmbunătăți experiența citirii datelor din tabele sau din liste folosind tehnologia care asigură asistență, cum ar fi un cititor de ecran."
+  },
+  "lighthouse-core/config/default-config.js | a11yTablesListsVideoGroupTitle": {
+    "message": "Tabele și liste"
+  },
+  "lighthouse-core/config/default-config.js | bestPracticesCategoryTitle": {
+    "message": "Cele mai bune practici"
+  },
+  "lighthouse-core/config/default-config.js | budgetsGroupDescription": {
+    "message": "Bugetele de performanță stabilesc standarde pentru performanța site-ului."
+  },
+  "lighthouse-core/config/default-config.js | budgetsGroupTitle": {
+    "message": "Bugete"
+  },
+  "lighthouse-core/config/default-config.js | diagnosticsGroupDescription": {
+    "message": "Mai multe informații despre performanța aplicației tale. Numerele nu [influențează direct](https://github.com/GoogleChrome/lighthouse/blob/d2ec9ffbb21de9ad1a0f86ed24575eda32c796f0/docs/scoring.md#how-are-the-scores-weighted) Scorul de performanță."
+  },
+  "lighthouse-core/config/default-config.js | diagnosticsGroupTitle": {
+    "message": "Diagnosticare"
+  },
+  "lighthouse-core/config/default-config.js | firstPaintImprovementsGroupDescription": {
+    "message": "Cel mai important aspect al performanței este cât de repede se redau pixelii pe ecran. Valori cheie: prima redare de conținut, prima redare semnificativă"
+  },
+  "lighthouse-core/config/default-config.js | firstPaintImprovementsGroupTitle": {
+    "message": "Îmbunătățirile pentru prima redare"
+  },
+  "lighthouse-core/config/default-config.js | loadOpportunitiesGroupDescription": {
+    "message": "Aceste sugestii îți pot face pagina să se încarce mai repede. Ele nu [influențează direct](https://github.com/GoogleChrome/lighthouse/blob/d2ec9ffbb21de9ad1a0f86ed24575eda32c796f0/docs/scoring.md#how-are-the-scores-weighted) scorul de performanță."
+  },
+  "lighthouse-core/config/default-config.js | loadOpportunitiesGroupTitle": {
+    "message": "Oportunități"
+  },
+  "lighthouse-core/config/default-config.js | metricGroupTitle": {
+    "message": "Valori"
+  },
+  "lighthouse-core/config/default-config.js | overallImprovementsGroupDescription": {
+    "message": "Îmbunătățește experiența globală de încărcare, astfel ca pagina să se afișeze și să fie gata de utilizare cât mai curând posibil. Valori cheie: timpul până la interactivitate, indexul de viteză"
+  },
+  "lighthouse-core/config/default-config.js | overallImprovementsGroupTitle": {
+    "message": "Îmbunătățiri generale"
+  },
+  "lighthouse-core/config/default-config.js | performanceCategoryTitle": {
+    "message": "Performanță"
+  },
+  "lighthouse-core/config/default-config.js | pwaCategoryDescription": {
+    "message": "Aceste verificări validează aspectele unei aplicații web progresive. [Află mai multe](https://developers.google.com/web/progressive-web-apps/checklist)."
+  },
+  "lighthouse-core/config/default-config.js | pwaCategoryManualDescription": {
+    "message": "Aceste verificări sunt impuse de [Lista de verificare PWA](https://developers.google.com/web/progressive-web-apps/checklist) de referință, dar nu sunt verificate automat de Lighthouse. Ele nu-ți afectează scorul, dar e important să fie făcute manual."
+  },
+  "lighthouse-core/config/default-config.js | pwaCategoryTitle": {
+    "message": "Aplicație web progresivă"
+  },
+  "lighthouse-core/config/default-config.js | pwaFastReliableGroupTitle": {
+    "message": "Rapid și sigur"
+  },
+  "lighthouse-core/config/default-config.js | pwaInstallableGroupTitle": {
+    "message": "Poate fi instalat"
+  },
+  "lighthouse-core/config/default-config.js | pwaOptimizedGroupTitle": {
+    "message": "Optimizat pentru PWA"
+  },
+  "lighthouse-core/config/default-config.js | seoCategoryDescription": {
+    "message": "Aceste verificări asigură că pagina este optimizată pentru poziționarea în rezultatele motorului de căutare. Există alți factori pe care Lighthouse nu îi verifică și care pot afecta poziția în rezultatele căutării. [Află mai multe](https://support.google.com/webmasters/answer/35769)."
+  },
+  "lighthouse-core/config/default-config.js | seoCategoryManualDescription": {
+    "message": "Rulează acești validatori suplimentari pe site pentru a căuta alte recomandări SEO."
+  },
+  "lighthouse-core/config/default-config.js | seoCategoryTitle": {
+    "message": "SEO"
+  },
+  "lighthouse-core/config/default-config.js | seoContentGroupDescription": {
+    "message": "Formatează codul HTML în așa fel încât crawlerele să înțeleagă mai bine conținutul aplicației."
+  },
+  "lighthouse-core/config/default-config.js | seoContentGroupTitle": {
+    "message": "Cele mai bune practici privind conținutul"
+  },
+  "lighthouse-core/config/default-config.js | seoCrawlingGroupDescription": {
+    "message": "Pentru a apărea în rezultatele căutării, crawlerele trebuie să îți acceseze aplicația."
+  },
+  "lighthouse-core/config/default-config.js | seoCrawlingGroupTitle": {
+    "message": "Accesarea cu crawlere și indexarea"
+  },
+  "lighthouse-core/config/default-config.js | seoMobileGroupDescription": {
+    "message": "Asigură-te că paginile sunt create pentru dispozitivele mobile, pentru ca utilizatorii să nu trebuiască să ciupească sau să mărească pentru a citi paginile conținutului. [Află mai multe](https://developers.google.com/search/mobile-sites/)."
+  },
+  "lighthouse-core/config/default-config.js | seoMobileGroupTitle": {
+    "message": "Pentru dispozitivele mobile"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnCacheTTL": {
+    "message": "TTL cache"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnLocation": {
+    "message": "Locație"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnName": {
+    "message": "Nume"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnRequests": {
+    "message": "Solicitări"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnResourceType": {
+    "message": "Tip de resursă"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnSize": {
+    "message": "Dimensiune"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnTimeSpent": {
+    "message": "Timp petrecut"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnTransferSize": {
+    "message": "Dimensiunea transferului"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnURL": {
+    "message": "Adresa URL"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnWastedBytes": {
+    "message": "Economii potențiale"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnWastedMs": {
+    "message": "Economii potențiale"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | displayValueByteSavings": {
+    "message": "Poți economisi {wastedBytes, number, bytes} KB"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | displayValueMsSavings": {
+    "message": "Poți economisi {wastedMs, number, milliseconds} ms"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | documentResourceType": {
+    "message": "Document"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | fontResourceType": {
+    "message": "Font"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | imageResourceType": {
+    "message": "Imagine"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | mediaResourceType": {
+    "message": "Media"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | ms": {
+    "message": "{timeInMs, number, milliseconds} ms"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | otherResourceType": {
+    "message": "Altele"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | scriptResourceType": {
+    "message": "Script"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | seconds": {
+    "message": "{timeInMs, number, seconds} s"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | stylesheetResourceType": {
+    "message": "Foaie de stil"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | thirdPartyResourceType": {
+    "message": "Terță parte"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | totalResourceType": {
+    "message": "Total"
+  },
+  "lighthouse-core/lib/lh-error.js | badTraceRecording": {
+    "message": "A apărut o eroare la înregistrarea urmei de la încărcarea paginii. Rulează din nou Lighthouse. ({errorCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | criTimeout": {
+    "message": "Timpul a expirat așteptând conexiunea inițială la protocolul Debugger."
+  },
+  "lighthouse-core/lib/lh-error.js | didntCollectScreenshots": {
+    "message": "Chrome nu a colectat capturi de ecran în timpul încărcării paginii. Asigură-te că există conținut vizibil în pagină și încearcă să rulezi din nou Lighthouse. ({errorCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | dnsFailure": {
+    "message": "Serverele DNS nu au putut rezolva domeniul furnizat."
+  },
+  "lighthouse-core/lib/lh-error.js | erroredRequiredArtifact": {
+    "message": "Colectorul de {artifactName} obligatorii a întâmpinat o eroare: {errorMessage}"
+  },
+  "lighthouse-core/lib/lh-error.js | internalChromeError": {
+    "message": "A apărut o eroare Chrome internă. Repornește Chrome și încearcă să rulezi din nou Lighthouse."
+  },
+  "lighthouse-core/lib/lh-error.js | missingRequiredArtifact": {
+    "message": "Colectorul {artifactName} obligatoriu nu a rulat."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailed": {
+    "message": "Lighthouse nu a putut încărca în mod sigur pagina solicitată. Asigură-te că testezi adresa URL corectă și că serverul răspunde corect la toate solicitările."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedHung": {
+    "message": "Lighthouse nu a putut încărca în mod sigur adresa URL solicitată, deoarece pagina nu mai răspunde."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedInsecure": {
+    "message": "Adresa URL furnizată nu are un certificat de securitate valid. {securityMessages}"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedInterstitial": {
+    "message": "Chrome a împiedicat încărcarea paginii cu un interstițial. Asigură-te că testezi adresa URL corectă și că serverul răspunde corect la toate solicitările."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedWithDetails": {
+    "message": "Lighthouse nu a putut încărca în mod sigur pagina solicitată. Asigură-te că testezi adresa URL corectă și că serverul răspunde corect la toate solicitările. (Detalii: {errorDetails})"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedWithStatusCode": {
+    "message": "Lighthouse nu a putut încărca în mod sigur pagina solicitată. Asigură-te că testezi adresa URL corectă și că serverul răspunde corect la toate solicitările. (Cod de stare: {statusCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadTookTooLong": {
+    "message": "Încărcarea paginii a durat prea mult. Urmează recomandările din raport pentru a reduce durata de încărcare a paginii, apoi încearcă din nou să rulezi Lighthouse. ({errorCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | protocolTimeout": {
+    "message": "Așteptarea răspunsului la protocolul DevTools a depășit timpul alocat. (Metoda: {protocolMethod})"
+  },
+  "lighthouse-core/lib/lh-error.js | requestContentTimeout": {
+    "message": "Preluarea conținutului resursei a depășit timpul alocat"
+  },
+  "lighthouse-core/lib/lh-error.js | urlInvalid": {
+    "message": "Adresa URL furnizată pare să fie nevalidă."
+  },
+  "lighthouse-core/report/html/renderer/util.js | auditGroupExpandTooltip": {
+    "message": "Afișează audituri"
+  },
+  "lighthouse-core/report/html/renderer/util.js | crcInitialNavigation": {
+    "message": "Navigare inițială"
+  },
+  "lighthouse-core/report/html/renderer/util.js | crcLongestDurationLabel": {
+    "message": "Latența maximă a căii critice:"
+  },
+  "lighthouse-core/report/html/renderer/util.js | errorLabel": {
+    "message": "Eroare!"
+  },
+  "lighthouse-core/report/html/renderer/util.js | errorMissingAuditInfo": {
+    "message": "Eroare de raport: nu există informații de auditare"
+  },
+  "lighthouse-core/report/html/renderer/util.js | labDataTitle": {
+    "message": "Datele testului"
+  },
+  "lighthouse-core/report/html/renderer/util.js | lsPerformanceCategoryDescription": {
+    "message": "Analiza în [Lighthouse](https://developers.google.com/web/tools/lighthouse/) a paginii actuale cu o rețea mobilă simulată. Valorile sunt estimate și pot varia."
+  },
+  "lighthouse-core/report/html/renderer/util.js | manualAuditsGroupTitle": {
+    "message": "Elemente suplimentare de verificat manual"
+  },
+  "lighthouse-core/report/html/renderer/util.js | notApplicableAuditsGroupTitle": {
+    "message": "Nu se aplică"
+  },
+  "lighthouse-core/report/html/renderer/util.js | opportunityResourceColumnLabel": {
+    "message": "Oportunitate"
+  },
+  "lighthouse-core/report/html/renderer/util.js | opportunitySavingsColumnLabel": {
+    "message": "Economii estimate"
+  },
+  "lighthouse-core/report/html/renderer/util.js | passedAuditsGroupTitle": {
+    "message": "Auditări trecute"
+  },
+  "lighthouse-core/report/html/renderer/util.js | snippetCollapseButtonLabel": {
+    "message": "Restrânge fragmentul"
+  },
+  "lighthouse-core/report/html/renderer/util.js | snippetExpandButtonLabel": {
+    "message": "Extinde fragmentul"
+  },
+  "lighthouse-core/report/html/renderer/util.js | thirdPartyResourcesLabel": {
+    "message": "Afișează resursele terță parte"
+  },
+  "lighthouse-core/report/html/renderer/util.js | toplevelWarningsMessage": {
+    "message": "Au apărut probleme care au afectat această rulare Lighthouse:"
+  },
+  "lighthouse-core/report/html/renderer/util.js | varianceDisclaimer": {
+    "message": "Valorile sunt estimate și pot varia. Scorul de performanță [se bazează doar pe aceste valori](https://github.com/GoogleChrome/lighthouse/blob/d2ec9ffbb21de9ad1a0f86ed24575eda32c796f0/docs/scoring.md#how-are-the-scores-weighted)."
+  },
+  "lighthouse-core/report/html/renderer/util.js | warningAuditsGroupTitle": {
+    "message": "Auditări trecute, dar cu avertismente"
+  },
+  "lighthouse-core/report/html/renderer/util.js | warningHeader": {
+    "message": "Avertismente: "
+  },
+  "stack-packs/packs/wordpress.js | efficient_animated_content": {
+    "message": "Îți recomandăm să încarci GIF-ul într-un serviciu care îl va pune dispoziție pentru încorporare ca videoclip HTML5."
+  },
+  "stack-packs/packs/wordpress.js | offscreen_images": {
+    "message": "Instalează un [plugin WordPress de încărcare lentă](https://wordpress.org/plugins/search/lazy+load/) care oferă capacitatea de a amâna imaginile din afara ecranului sau schimbă-ți tema cu una care oferă acea funcție. Îți recomandăm [pluginul AMP](https://wordpress.org/plugins/amp/)."
+  },
+  "stack-packs/packs/wordpress.js | render_blocking_resources": {
+    "message": "Există o serie de pluginuri Wordpress care te pot ajuta să [activezi inline elementele critice](https://wordpress.org/plugins/search/critical+css/) sau să [amâni resurse mai puțin importante](https://wordpress.org/plugins/search/defer+css+javascript/). Atenție, optimizările oferite de aceste pluginuri pot să întrerupă funcțiile temei sau pluginurilor tale, astfel încât este posibil să trebuiască să modifici codul."
+  },
+  "stack-packs/packs/wordpress.js | time_to_first_byte": {
+    "message": "Temele, pluginurile și specificațiile serverului contribuie toate la timpul de răspuns al serverului. Îți recomandăm să găsești o temă mai optimizată, selectând cu atenție un plugin de optimizare și/sau făcând upgrade la server."
+  },
+  "stack-packs/packs/wordpress.js | total_byte_weight": {
+    "message": "Îți recomandăm să afișezi extrase în listele postărilor tale (de exemplu, prin intermediul filei Mai multe), reducând numărul de postări afișate pe o anumită pagină, împărțind postările lungi pe mai multe pagini sau folosind un plugin pentru a încărca lent comentariile."
+  },
+  "stack-packs/packs/wordpress.js | unminified_css": {
+    "message": "Mai multe [pluginuri WordPress](https://wordpress.org/plugins/search/minify+css/) îți pot accelera site-ul prin concatenarea, minimizarea și comprimarea stilurilor. Ai putea să folosești și un proces de design pentru a face minimizarea în avans, dacă este posibil."
+  },
+  "stack-packs/packs/wordpress.js | unminified_javascript": {
+    "message": "Mai multe [pluginuri WordPress](https://wordpress.org/plugins/search/minify+javascript/) îți pot accelera site-ul prin concatenarea, minimizarea și comprimarea scripturilor. Ai putea să folosești și un proces de design pentru a face minimizarea în avans, dacă este posibil."
+  },
+  "stack-packs/packs/wordpress.js | unused_css_rules": {
+    "message": "Îți recomandăm să reduci sau să schimbi numărul de [pluginuri WordPress](https://wordpress.org/plugins/) care încarcă CSS nefolosit în pagină. Ca să identifici pluginurile care adaugă conținut CSS neesențial, încearcă să rulezi [acoperirea codului](https://developers.google.com/web/updates/2017/04/devtools-release-notes#coverage) în Chrome DevTools. Poți identifica tema/pluginul responsabil din adresa URL a foii de stil. Caută pluginuri care au multe foi de stil în listă cu mult roșu în bara acoperirii codului. Un plugin ar trebui să pună în coadă o foaie de stil numai dacă este într-adevăr folosită în pagină."
+  },
+  "stack-packs/packs/wordpress.js | unused_javascript": {
+    "message": "Îți recomandăm să reduci sau să schimbi numărul de [pluginuri WordPress](https://wordpress.org/plugins/) care încarcă JavaScript nefolosit în pagină. Ca să identifici pluginurile care adaugă conținut JS neesențial, încearcă să rulezi [acoperirea codului](https://developers.google.com/web/updates/2017/04/devtools-release-notes#coverage) în Chrome DevTools. Poți identifica tema/pluginul responsabil din adresa URL a scriptului. Caută pluginuri care au multe scripturi în listă cu mult roșu în bara acoperirii codului. Un plugin ar trebui să pună în coadă un script numai dacă este într-adevăr folosit în pagină."
+  },
+  "stack-packs/packs/wordpress.js | uses_long_cache_ttl": {
+    "message": "Citește despre [stocarea în memoria cache a browserului în WordPress](https://codex.wordpress.org/WordPress_Optimization#Browser_Caching)."
+  },
+  "stack-packs/packs/wordpress.js | uses_optimized_images": {
+    "message": "Îți recomandăm să folosești un [plugin WordPress de optimizare a imaginii](https://wordpress.org/plugins/search/optimize+images/) care comprimă imaginile, păstrând calitatea."
+  },
+  "stack-packs/packs/wordpress.js | uses_responsive_images": {
+    "message": "Încarcă imaginile direct prin [biblioteca de media](https://codex.wordpress.org/Media_Library_Screen) pentru a te asigura că sunt disponibile dimensiunile de imagine necesare, apoi inserează-le din biblioteca de media sau folosește widgetul de imagine pentru a te asigura că se folosesc dimensiunile de imagine optime (inclusiv cele pentru punctele de întrerupere adaptabile). Evită să folosești imagini `Full Size`, cu excepția cazului în care dimensiunile sunt adecvate pentru utilizare. [Află mai multe](https://codex.wordpress.org/Inserting_Images_into_Posts_and_Pages#Image_Size)."
+  },
+  "stack-packs/packs/wordpress.js | uses_text_compression": {
+    "message": "Poți activa comprimarea textului în configurarea serverului web."
+  },
+  "stack-packs/packs/wordpress.js | uses_webp_images": {
+    "message": "Îți recomandăm să folosești un [plugin](https://wordpress.org/plugins/search/convert+webp/) sau un serviciu care convertește automat imaginile încărcate în formatele optime."
+  }
+}
diff --git a/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/ru.json b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/ru.json
new file mode 100644
index 0000000..2a97905
--- /dev/null
+++ b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/ru.json
@@ -0,0 +1,1541 @@
+{
+  "lighthouse-core/audits/accessibility/accesskeys.js | description": {
+    "message": "Ключи доступа позволяют быстро перейти к нужной части страницы. Каждый из них должен быть уникальным. [Подробнее…](https://web.dev/accesskeys/)"
+  },
+  "lighthouse-core/audits/accessibility/accesskeys.js | failureTitle": {
+    "message": "Значения атрибута `[accesskey]` не уникальны"
+  },
+  "lighthouse-core/audits/accessibility/accesskeys.js | title": {
+    "message": "`[accesskey]`: значения уникальны"
+  },
+  "lighthouse-core/audits/accessibility/aria-allowed-attr.js | description": {
+    "message": "Каждая `role` ARIA поддерживает определенный набор атрибутов `aria-*`. Неверно присвоенные атрибуты `aria-*` будут недействительны. [Подробнее…](https://web.dev/aria-allowed-attr/)"
+  },
+  "lighthouse-core/audits/accessibility/aria-allowed-attr.js | failureTitle": {
+    "message": "Атрибуты `[aria-*]` не соответствуют своим ролям"
+  },
+  "lighthouse-core/audits/accessibility/aria-allowed-attr.js | title": {
+    "message": "Атрибуты `[aria-*]` соответствуют своим ролям"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-attr.js | description": {
+    "message": "К некоторым ролям ARIA требуется добавить атрибуты, описывающие состояние элемента для программ чтения с экрана. [Подробнее…](https://web.dev/aria-required-attr/)"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-attr.js | failureTitle": {
+    "message": "Для элементов с атрибутом `[role]` заданы не все необходимые атрибуты `[aria-*]`"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-attr.js | title": {
+    "message": "У элементов `[role]` есть все необходимые атрибуты `[aria-*]`"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-children.js | description": {
+    "message": "Некоторые родительские элементы с ролями ARIA должны содержать определенные дочерние роли, иначе связанные с ними функции специальных возможностей будут работать неправильно. [Подробнее…](https://web.dev/aria-required-children/)"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-children.js | failureTitle": {
+    "message": "Отсутствуют элементы с атрибутом `[role]`, для которых необходимы дочерние элементы с определенными атрибутами `[role]`"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-children.js | title": {
+    "message": "Элементы с атрибутом `[role]`, для которых необходимы дочерние элементы с определенными атрибутами `[role]`, присутствуют"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-parent.js | description": {
+    "message": "Некоторые дочерние элементы с ролями ARIA должны содержаться внутри определенных родительских элементов, иначе связанные с ними функции специальных возможностей будут работать неправильно. [Подробнее…](https://web.dev/aria-required-parent/)"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-parent.js | failureTitle": {
+    "message": "Элементы с атрибутом `[role]` не содержатся в своих родительских элементах"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-parent.js | title": {
+    "message": "Элементы с атрибутом `[role]` содержатся в своих родительских элементах"
+  },
+  "lighthouse-core/audits/accessibility/aria-roles.js | description": {
+    "message": "Значения ролей ARIA должны быть действительными, иначе связанные с ними функции будут работать неправильно. [Подробнее…](https://web.dev/aria-roles/)"
+  },
+  "lighthouse-core/audits/accessibility/aria-roles.js | failureTitle": {
+    "message": "Присутствуют недействительные значения атрибутов `[role]`"
+  },
+  "lighthouse-core/audits/accessibility/aria-roles.js | title": {
+    "message": "Недействительные значения атрибутов `[role]` отсутствуют"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr-value.js | description": {
+    "message": "Программы чтения с экрана не могут распознавать атрибуты ARIA с недействительными значениями. [Подробнее…](https://web.dev/aria-valid-attr-value/)"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr-value.js | failureTitle": {
+    "message": "У атрибутов `[aria-*]` недействительные значения"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr-value.js | title": {
+    "message": "Недействительные значения атрибутов `[aria-*]` отсутствуют"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr.js | description": {
+    "message": "Программы чтения с экрана не могут интерпретировать атрибуты ARIA с недействительными названиями. [Подробнее…](https://web.dev/aria-valid-attr/)"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr.js | failureTitle": {
+    "message": "Атрибуты `[aria-*]` недействительны или указаны с ошибками"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr.js | title": {
+    "message": "Атрибуты `[aria-*]` действительны и написаны без ошибок"
+  },
+  "lighthouse-core/audits/accessibility/audio-caption.js | description": {
+    "message": "Чтобы ваш аудиоконтент был доступен людям с нарушениями слуха, добавьте субтитры. В них можно включить описания сцен, у которых нет звукового сопровождения. [Подробнее…](https://web.dev/audio-caption/)"
+  },
+  "lighthouse-core/audits/accessibility/audio-caption.js | failureTitle": {
+    "message": "Элементы `<audio>` не содержат элемент `<track>` с атрибутом `[kind=\"captions\"]`"
+  },
+  "lighthouse-core/audits/accessibility/audio-caption.js | title": {
+    "message": "Элементы `<audio>` содержат элемент `<track>` с атрибутом `[kind=\"captions\"]`"
+  },
+  "lighthouse-core/audits/accessibility/axe-audit.js | failingElementsHeader": {
+    "message": "Элементы, не прошедшие проверку"
+  },
+  "lighthouse-core/audits/accessibility/button-name.js | description": {
+    "message": "Если у кнопки нет названия, доступного программам чтения с экрана, пользователи услышат слово \"кнопка\", но не поймут, для чего она нужна. [Подробнее…](https://web.dev/button-name/)"
+  },
+  "lighthouse-core/audits/accessibility/button-name.js | failureTitle": {
+    "message": "Названия кнопок недоступны программам чтения с экрана"
+  },
+  "lighthouse-core/audits/accessibility/button-name.js | title": {
+    "message": "Названия кнопок доступны программам чтения с экрана"
+  },
+  "lighthouse-core/audits/accessibility/bypass.js | description": {
+    "message": "Чтобы пользователям было проще перемещаться по странице с помощью клавиатуры, добавьте возможность пропускать повторяющийся контент. [Подробнее…](https://web.dev/bypass/)"
+  },
+  "lighthouse-core/audits/accessibility/bypass.js | failureTitle": {
+    "message": "На странице отсутствует заголовок, ссылка для пропуска или указание региона"
+  },
+  "lighthouse-core/audits/accessibility/bypass.js | title": {
+    "message": "Страница содержит заголовок, ссылку для пропуска контента или указание региона"
+  },
+  "lighthouse-core/audits/accessibility/color-contrast.js | description": {
+    "message": "Многие пользователи не могут разобрать или не видят текст с низкой контрастностью. [Подробнее…](https://web.dev/color-contrast/)"
+  },
+  "lighthouse-core/audits/accessibility/color-contrast.js | failureTitle": {
+    "message": "Цвета фона и переднего плана недостаточно контрастны"
+  },
+  "lighthouse-core/audits/accessibility/color-contrast.js | title": {
+    "message": "Цвета фона и переднего плана достаточно контрастны"
+  },
+  "lighthouse-core/audits/accessibility/definition-list.js | description": {
+    "message": "Если в структуре списков определений есть ошибки, программы чтения с экрана могут неправильно их озвучивать. [Подробнее…](https://web.dev/definition-list/)"
+  },
+  "lighthouse-core/audits/accessibility/definition-list.js | failureTitle": {
+    "message": "Элементы `<dt>`, `<dd>`, `<script>` и `<template>` расположены внутри элементов `<dl>` в неправильном порядке"
+  },
+  "lighthouse-core/audits/accessibility/definition-list.js | title": {
+    "message": "Элементы `<dt>`, `<dd>`, `<script>` и `<template>` расположены внутри элементов `<dl>` в нужном порядке"
+  },
+  "lighthouse-core/audits/accessibility/dlitem.js | description": {
+    "message": "Чтобы программы чтения с экрана правильно озвучивали элементы списков определений `<dt>` и `<dd>`, они должны располагаться внутри родительского элемента `<dl>`. [Подробнее…](https://web.dev/dlitem/)"
+  },
+  "lighthouse-core/audits/accessibility/dlitem.js | failureTitle": {
+    "message": "Элементы списков определений не расположены внутри элементов `<dl>`"
+  },
+  "lighthouse-core/audits/accessibility/dlitem.js | title": {
+    "message": "Элементы списков определений расположены внутри элементов `<dl>`"
+  },
+  "lighthouse-core/audits/accessibility/document-title.js | description": {
+    "message": "Элемент title нужен для того, чтобы программы чтения с экрана могли озвучивать название страницы. Также он появляется в результатах поиска и позволяет определять, соответствует ли сайт запросу. [Подробнее…](https://web.dev/document-title/)"
+  },
+  "lighthouse-core/audits/accessibility/document-title.js | failureTitle": {
+    "message": "В документе нет элемента `<title>`"
+  },
+  "lighthouse-core/audits/accessibility/document-title.js | title": {
+    "message": "Документ содержит элемент `<title>`"
+  },
+  "lighthouse-core/audits/accessibility/duplicate-id.js | description": {
+    "message": "Значение атрибута id должно быть уникальным, так как программы для людей с ограниченными возможностями могут игнорировать повторяющиеся идентификаторы. [Подробнее…](https://web.dev/duplicate-id/)"
+  },
+  "lighthouse-core/audits/accessibility/duplicate-id.js | failureTitle": {
+    "message": "Атрибуты `[id]` не уникальны на этой странице"
+  },
+  "lighthouse-core/audits/accessibility/duplicate-id.js | title": {
+    "message": "Атрибуты `[id]` уникальны на этой странице"
+  },
+  "lighthouse-core/audits/accessibility/frame-title.js | description": {
+    "message": "Чтобы программы чтения с экрана могли описывать содержимое фреймов, для каждого из них должен быть указан атрибут title. [Подробнее…](https://web.dev/frame-title/)"
+  },
+  "lighthouse-core/audits/accessibility/frame-title.js | failureTitle": {
+    "message": "Для элементов `<frame>` или `<iframe>` не указан атрибут title"
+  },
+  "lighthouse-core/audits/accessibility/frame-title.js | title": {
+    "message": "У элементов `<frame>` и `<iframe>` есть атрибут title"
+  },
+  "lighthouse-core/audits/accessibility/html-has-lang.js | description": {
+    "message": "Если для страницы не указан атрибут lang, программа чтения с экрана предполагает, что текст приведен на языке по умолчанию, выбранном пользователем при установке программы. Если текст написан на другом языке, он может озвучиваться некорректно. [Подробнее…](https://web.dev/html-has-lang/)"
+  },
+  "lighthouse-core/audits/accessibility/html-has-lang.js | failureTitle": {
+    "message": "Для элемента `<html>` не задан атрибут `[lang]`"
+  },
+  "lighthouse-core/audits/accessibility/html-has-lang.js | title": {
+    "message": "Элемент `<html>` содержит атрибут `[lang]`"
+  },
+  "lighthouse-core/audits/accessibility/html-lang-valid.js | description": {
+    "message": "Чтобы программы чтения с экрана правильно озвучивали текст, укажите действительный [языковой тег BCP 47](https://www.w3.org/International/questions/qa-choosing-language-tags#question). [Подробнее…](https://web.dev/html-lang-valid/)"
+  },
+  "lighthouse-core/audits/accessibility/html-lang-valid.js | failureTitle": {
+    "message": "В элементе `<html>` нет действительного значения для атрибута `[lang]`"
+  },
+  "lighthouse-core/audits/accessibility/html-lang-valid.js | title": {
+    "message": "Для элемента `<html>` указано действительное значение атрибута `[lang]`"
+  },
+  "lighthouse-core/audits/accessibility/image-alt.js | description": {
+    "message": "В информационных элементах должен содержаться короткий и ясный альтернативный текст. Если элемент декоративный, то атрибут alt для него можно оставить пустым. [Подробнее…](https://web.dev/image-alt/)"
+  },
+  "lighthouse-core/audits/accessibility/image-alt.js | failureTitle": {
+    "message": "Для элементов изображений не заданы атрибуты `[alt]`"
+  },
+  "lighthouse-core/audits/accessibility/image-alt.js | title": {
+    "message": "У элементов изображений есть атрибут `[alt]`"
+  },
+  "lighthouse-core/audits/accessibility/input-image-alt.js | description": {
+    "message": "Если в элементе `<input>` в качестве кнопки используется изображение, добавьте альтернативный текст, описывающий назначение этой кнопки для программ чтения с экрана. [Подробнее…](https://web.dev/input-image-alt/)"
+  },
+  "lighthouse-core/audits/accessibility/input-image-alt.js | failureTitle": {
+    "message": "Атрибут `[alt]` задан не для всех элементов `<input type=\"image\">`"
+  },
+  "lighthouse-core/audits/accessibility/input-image-alt.js | title": {
+    "message": "Элементы `<input type=\"image\">` содержат атрибут `[alt]`"
+  },
+  "lighthouse-core/audits/accessibility/label.js | description": {
+    "message": "Ярлыки нужны для того, чтобы программы чтения с экрана могли правильно озвучивать элементы управления формой. [Подробнее…](https://web.dev/label/)"
+  },
+  "lighthouse-core/audits/accessibility/label.js | failureTitle": {
+    "message": "Элементам формы не присвоены соответствующие ярлыки"
+  },
+  "lighthouse-core/audits/accessibility/label.js | title": {
+    "message": "Элементам формы присвоены соответствующие ярлыки"
+  },
+  "lighthouse-core/audits/accessibility/layout-table.js | description": {
+    "message": "В таблице, используемой в качестве основы дизайна веб-страницы, не должны содержаться элементы данных, например th, caption или атрибут summary, так как они могут создать трудности для тех, кто использует программы чтения с экрана. [Подробнее…](https://web.dev/layout-table/)"
+  },
+  "lighthouse-core/audits/accessibility/layout-table.js | failureTitle": {
+    "message": "В элементах `<table>` с атрибутом role=\"presentation\" используются элементы `<th>` и `<caption>` или атрибут `[summary]`"
+  },
+  "lighthouse-core/audits/accessibility/layout-table.js | title": {
+    "message": "В элементах `<table>` с атрибутом role=\"presentation\" не используются элементы `<th>` и `<caption>` или атрибут `[summary]`"
+  },
+  "lighthouse-core/audits/accessibility/link-name.js | description": {
+    "message": "Текст ссылок (как и альтернативный текст для изображений, используемых в качестве ссылок) должен быть уникальным, фокусируемым и доступным для программ чтения с экрана. [Подробнее…](https://web.dev/link-name/)"
+  },
+  "lighthouse-core/audits/accessibility/link-name.js | failureTitle": {
+    "message": "Текст ссылок неразличим для программ чтения с экрана"
+  },
+  "lighthouse-core/audits/accessibility/link-name.js | title": {
+    "message": "Текст ссылок различим для программ чтения с экрана"
+  },
+  "lighthouse-core/audits/accessibility/list.js | description": {
+    "message": "Используйте правильную структуру кода при верстке списков, иначе программы чтения с экрана будут неправильно их озвучивать. [Подробнее…](https://web.dev/list/)"
+  },
+  "lighthouse-core/audits/accessibility/list.js | failureTitle": {
+    "message": "В списках содержатся другие элементы, помимо элементов `<li>` и элементов поддержки скрипта (`<script>` и `<template>`)"
+  },
+  "lighthouse-core/audits/accessibility/list.js | title": {
+    "message": "В списках содержатся только элементы `<li>` и элементы поддержки скрипта (`<script>` и `<template>`)"
+  },
+  "lighthouse-core/audits/accessibility/listitem.js | description": {
+    "message": "Чтобы программы чтения с экрана правильно озвучивали списки, элементы `<li>` должны располагаться внутри родительских элементов `<ul>` или `<ol>`. [Подробнее…](https://web.dev/listitem/)"
+  },
+  "lighthouse-core/audits/accessibility/listitem.js | failureTitle": {
+    "message": "Элементы списка `<li>` не содержатся в родительских элементах `<ul>` или `<ol>`"
+  },
+  "lighthouse-core/audits/accessibility/listitem.js | title": {
+    "message": "Элементы списка `<li>` расположены внутри родительских элементов `<ul>` или `<ol>`"
+  },
+  "lighthouse-core/audits/accessibility/meta-refresh.js | description": {
+    "message": "Когда страница обновляется автоматически, фокус, используемый программами для чтения с экрана, перемещается в верхнюю часть. Это может раздражать пользователей и мешать их работе. [Подробнее…](https://web.dev/meta-refresh/)"
+  },
+  "lighthouse-core/audits/accessibility/meta-refresh.js | failureTitle": {
+    "message": "В документе используется метатег `<meta http-equiv=\"refresh\">`"
+  },
+  "lighthouse-core/audits/accessibility/meta-refresh.js | title": {
+    "message": "В документе не используется метатег `<meta http-equiv=\"refresh\">`"
+  },
+  "lighthouse-core/audits/accessibility/meta-viewport.js | description": {
+    "message": "Не отключайте масштабирование: эта функция помогает слабовидящим пользователям читать информацию на веб-страницах. [Подробнее…](https://web.dev/meta-viewport/)"
+  },
+  "lighthouse-core/audits/accessibility/meta-viewport.js | failureTitle": {
+    "message": "Атрибут `[user-scalable=\"no\"]` используется в элементе `<meta name=\"viewport\">` или значение атрибута `[maximum-scale]` меньше 5"
+  },
+  "lighthouse-core/audits/accessibility/meta-viewport.js | title": {
+    "message": "Атрибут `[user-scalable=\"no\"]` не используется в элементе `<meta name=\"viewport\">`, и значение атрибута `[maximum-scale]` больше или равно 5"
+  },
+  "lighthouse-core/audits/accessibility/object-alt.js | description": {
+    "message": "Чтобы программы чтения с экрана могли озвучивать содержимое элементов `<object>`, добавьте к ним атрибут alt. [Подробнее…](https://web.dev/object-alt/)"
+  },
+  "lighthouse-core/audits/accessibility/object-alt.js | failureTitle": {
+    "message": "Атрибут `[alt]` задан не для всех элементов `<object>`"
+  },
+  "lighthouse-core/audits/accessibility/object-alt.js | title": {
+    "message": "Элементы `<object>` содержат атрибут `[alt]`"
+  },
+  "lighthouse-core/audits/accessibility/tabindex.js | description": {
+    "message": "Значение больше 0 подразумевает определенный порядок навигации. Это может создавать трудности для пользователей с ограниченными возможностями. [Подробнее…](https://web.dev/tabindex/)"
+  },
+  "lighthouse-core/audits/accessibility/tabindex.js | failureTitle": {
+    "message": "Для некоторых элементов значение `[tabindex]` больше 0"
+  },
+  "lighthouse-core/audits/accessibility/tabindex.js | title": {
+    "message": "Нет элементов со значением атрибута `[tabindex]` выше 0"
+  },
+  "lighthouse-core/audits/accessibility/td-headers-attr.js | description": {
+    "message": "Чтобы пользователям было проще перемещаться по таблицам с помощью программ чтения с экрана, убедитесь, что ячейки в элементах `<td>` с атрибутом `[headers]` ссылаются только на другие ячейки в той же таблице. [Подробнее…](https://web.dev/td-headers-attr/)"
+  },
+  "lighthouse-core/audits/accessibility/td-headers-attr.js | failureTitle": {
+    "message": "Ячейки внутри элемента `<table>`, в которых используется атрибут `[headers]`, не ссылаются на другие ячейки той же таблицы"
+  },
+  "lighthouse-core/audits/accessibility/td-headers-attr.js | title": {
+    "message": "Ячейки внутри элемента `<table>`, в которых используется атрибут `[headers]`, ссылаются на другие ячейки той же таблицы"
+  },
+  "lighthouse-core/audits/accessibility/th-has-data-cells.js | description": {
+    "message": "Чтобы пользователям было проще перемещаться по таблицам с помощью программ чтения с экрана, убедитесь, что все заголовки в таблицах ссылаются на определенный набор ячеек. [Подробнее…](https://web.dev/th-has-data-cells/)"
+  },
+  "lighthouse-core/audits/accessibility/th-has-data-cells.js | failureTitle": {
+    "message": "В элементах `<th>` и элементах с атрибутом `[role=\"columnheader\"/\"rowheader\"]` нет описываемых ими ячеек с данными"
+  },
+  "lighthouse-core/audits/accessibility/th-has-data-cells.js | title": {
+    "message": "В элементах `<th>` и элементах с атрибутом `[role=\"columnheader\"/\"rowheader\"]` есть описываемые ими ячейки с данными"
+  },
+  "lighthouse-core/audits/accessibility/valid-lang.js | description": {
+    "message": "Чтобы программы чтения с экрана правильно озвучивали текст, укажите для элементов корректный [языковой тег BCP 47](https://www.w3.org/International/questions/qa-choosing-language-tags#question). [Подробнее…](https://web.dev/valid-lang/)"
+  },
+  "lighthouse-core/audits/accessibility/valid-lang.js | failureTitle": {
+    "message": "Присутствуют недействительные значения атрибутов `[lang]`"
+  },
+  "lighthouse-core/audits/accessibility/valid-lang.js | title": {
+    "message": "Недействительные значения атрибутов `[lang]` отсутствуют"
+  },
+  "lighthouse-core/audits/accessibility/video-caption.js | description": {
+    "message": "Чтобы информация, озвучиваемая в видео, была доступна людям с нарушениями слуха, добавьте субтитры. [Подробнее…](https://web.dev/video-caption/)"
+  },
+  "lighthouse-core/audits/accessibility/video-caption.js | failureTitle": {
+    "message": "Элементы `<video>` не содержат элемент `<track>` с атрибутом `[kind=\"captions\"]`"
+  },
+  "lighthouse-core/audits/accessibility/video-caption.js | title": {
+    "message": "Элементы `<video>` содержат элемент `<track>` с атрибутом `[kind=\"captions\"]`"
+  },
+  "lighthouse-core/audits/accessibility/video-description.js | description": {
+    "message": "Благодаря звуковым описаниям к видео слабовидящие пользователи могут узнавать, что происходит на экране в сценах без аудиосопровождения. [Подробнее…](https://web.dev/video-description/)"
+  },
+  "lighthouse-core/audits/accessibility/video-description.js | failureTitle": {
+    "message": "Элементы `<video>` не содержат элемент `<track>` с атрибутом `[kind=\"description\"]`"
+  },
+  "lighthouse-core/audits/accessibility/video-description.js | title": {
+    "message": "Элементы `<video>` содержат элемент `<track>` с атрибутом `[kind=\"description\"]`"
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | description": {
+    "message": "Чтобы современное веб-приложение лучше смотрелось на главном экране iOS, задайте значение для атрибута `apple-touch-icon`. Он должен указывать на непрозрачное квадратное PNG-изображение со стороной 192 или 180 пикселей. [Подробнее…](https://developers.google.com/web/fundamentals/design-and-ux/browser-customization/)"
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | failureTitle": {
+    "message": "Не содержит действительный атрибут `apple-touch-icon`"
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | precomposedWarning": {
+    "message": "Атрибут `apple-touch-icon-precomposed` устарел. Используйте атрибут `apple-touch-icon`."
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | title": {
+    "message": "Содержит действительный атрибут `apple-touch-icon`"
+  },
+  "lighthouse-core/audits/bootup-time.js | chromeExtensionsWarning": {
+    "message": "Расширения Chrome замедляют загрузку этой страницы. Попробуйте использовать режим инкогнито или профиль Chrome без расширений."
+  },
+  "lighthouse-core/audits/bootup-time.js | columnScriptEval": {
+    "message": "Время оценки скриптов"
+  },
+  "lighthouse-core/audits/bootup-time.js | columnScriptParse": {
+    "message": "Время анализа скриптов"
+  },
+  "lighthouse-core/audits/bootup-time.js | columnTotal": {
+    "message": "Общее процессорное время"
+  },
+  "lighthouse-core/audits/bootup-time.js | description": {
+    "message": "Рекомендуем сократить время на анализ, компиляцию и выполнение скриптов JS. Для этого вы можете уменьшить размер фрагментов кода JS. [Подробнее…](https://developers.google.com/web/tools/lighthouse/audits/bootup)"
+  },
+  "lighthouse-core/audits/bootup-time.js | failureTitle": {
+    "message": "Сократите время выполнения кода JavaScript"
+  },
+  "lighthouse-core/audits/bootup-time.js | title": {
+    "message": "Время выполнения кода JavaScript"
+  },
+  "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | description": {
+    "message": "Анимированный контент неэффективно загружать в виде больших GIF-файлов. Чтобы сэкономить сетевой трафик, используйте формат видео MPEG4/WebM для анимированного контента и формат изображений PNG/WebP – для статического. [Подробнее…](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/replace-animated-gifs-with-video/)"
+  },
+  "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | title": {
+    "message": "Используйте видеоформаты для анимированного контента"
+  },
+  "lighthouse-core/audits/byte-efficiency/offscreen-images.js | description": {
+    "message": "Чтобы уменьшить время загрузки для взаимодействия, рекомендуем настроить отложенную загрузку скрытых изображений. Тогда основные ресурсы сайта будут загружаться в первую очередь. [Подробнее…](https://developers.google.com/web/tools/lighthouse/audits/offscreen-images)"
+  },
+  "lighthouse-core/audits/byte-efficiency/offscreen-images.js | title": {
+    "message": "Отложите загрузку скрытых изображений"
+  },
+  "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | description": {
+    "message": "Некоторые ресурсы блокируют первую отрисовку страницы. Рекомендуем встроить критическую часть данных JS/CSS в код HTML и отложить загрузку остальных ресурсов. [Подробнее…](https://developers.google.com/web/tools/lighthouse/audits/blocking-resources)"
+  },
+  "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | title": {
+    "message": "Устраните ресурсы, блокирующие отображение"
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | description": {
+    "message": "Чрезмерная нагрузка на сеть стоит пользователям реальных денег и может стать причиной долгого ожидания при работе в Интернете. [Подробнее…](https://developers.google.com/web/tools/lighthouse/audits/network-payloads)"
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | displayValue": {
+    "message": "Общий размер достиг {totalBytes, number, bytes} КБ"
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | failureTitle": {
+    "message": "Предотвратите чрезмерную нагрузку на сеть"
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | title": {
+    "message": "Предотвращение чрезмерной нагрузки на сеть"
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-css.js | description": {
+    "message": "Уменьшив файлы CSS, вы можете сократить объем полезной сетевой нагрузки. [Подробнее…](https://developers.google.com/web/tools/lighthouse/audits/minify-css)"
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-css.js | title": {
+    "message": "Уменьшите размер кода CSS"
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | description": {
+    "message": "Уменьшив файлы JavaScript, вы можете сократить объем полезной нагрузки и время анализа скриптов. [Подробнее…](https://developers.google.com/speed/docs/insights/MinifyResources)"
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | title": {
+    "message": "Уменьшите размер кода JavaScript"
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | description": {
+    "message": "Чтобы сократить расход трафика, удалите ненужные правила из таблиц стилей и отложите загрузку кода CSS, который не используется в верхней части страницы. [Подробнее…](https://developers.google.com/web/tools/lighthouse/audits/unused-css)"
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | title": {
+    "message": "Удалите неиспользуемый код CSS"
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-javascript.js | description": {
+    "message": "Чтобы сократить расход трафика, удалите неиспользуемый код JavaScript."
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-javascript.js | title": {
+    "message": "Удалите неиспользуемый код JavaScript"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | description": {
+    "message": "Благодаря долгому времени хранения кеша страница может быстрее загружаться при повторных посещениях. [Подробнее…](https://developers.google.com/web/tools/lighthouse/audits/cache-policy)"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | displayValue": {
+    "message": "{itemCount,plural, =1{Найден 1 ресурс}one{Найден # ресурс}few{Найдено # ресурса}many{Найдено # ресурсов}other{Найдено # ресурса}}"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | failureTitle": {
+    "message": "Задайте правила эффективного использования кеша для статических объектов"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | title": {
+    "message": "Настройка правил эффективного использования кеша для статических объектов"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | description": {
+    "message": "Оптимизированные изображения загружаются быстрее и меньше расходуют мобильный трафик. [Подробнее…](https://developers.google.com/web/tools/lighthouse/audits/optimize-images)"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | title": {
+    "message": "Настройте эффективную кодировку изображений"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | description": {
+    "message": "Чтобы сэкономить мобильный трафик и ускорить загрузку страницы, следите за тем, чтобы размеры ваших изображений соответствовали требованиям. [Подробнее…](https://developers.google.com/web/tools/lighthouse/audits/oversized-images)"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | title": {
+    "message": "Настройте подходящий размер изображений"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | description": {
+    "message": "Чтобы уменьшить расход сетевого трафика, рекомендуем сжимать текстовые ресурсы (gzip, deflate или brotli). [Подробнее…](https://developers.google.com/web/tools/lighthouse/audits/text-compression)"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | title": {
+    "message": "Включите сжатие текста"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | description": {
+    "message": "Форматы JPEG 2000, JPEG XR и WebP обеспечивают более эффективное сжатие по сравнению с PNG или JPEG, поэтому такие изображения загружаются быстрее и потребляют меньше трафика. [Подробнее…](https://developers.google.com/web/tools/lighthouse/audits/webp)"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | title": {
+    "message": "Используйте современные форматы изображений"
+  },
+  "lighthouse-core/audits/content-width.js | description": {
+    "message": "Приложение не оптимизировано для работы на экранах мобильных устройств, если ширина контента приложения не совпадает с шириной области просмотра. [Подробнее…](https://developers.google.com/web/tools/lighthouse/audits/content-sized-correctly-for-viewport)"
+  },
+  "lighthouse-core/audits/content-width.js | explanation": {
+    "message": "Область просмотра ({innerWidth} пикселей) не совпадает с размером окна ({outerWidth} пикселей)."
+  },
+  "lighthouse-core/audits/content-width.js | failureTitle": {
+    "message": "Размер контента не соответствует области просмотра"
+  },
+  "lighthouse-core/audits/content-width.js | title": {
+    "message": "Размер контента соответствует области просмотра"
+  },
+  "lighthouse-core/audits/critical-request-chains.js | description": {
+    "message": "Приведенные ниже цепочки критических запросов показывают, какие ресурсы загружаются с высоким приоритетом. Чтобы ускорить загрузку страниц, рекомендуем сократить длину цепочек, уменьшить размер скачиваемых ресурсов или отложить скачивание ненужных ресурсов. [Подробнее…](https://developers.google.com/web/tools/lighthouse/audits/critical-request-chains)"
+  },
+  "lighthouse-core/audits/critical-request-chains.js | displayValue": {
+    "message": "{itemCount,plural, =1{Найдена 1 цепочка}one{Найдена # цепочка}few{Найдено # цепочки}many{Найдено # цепочек}other{Найдено # цепочки}}"
+  },
+  "lighthouse-core/audits/critical-request-chains.js | title": {
+    "message": "Сократите глубину вложенности критических запросов"
+  },
+  "lighthouse-core/audits/deprecations.js | columnDeprecate": {
+    "message": "Прекращение поддержки / предупреждение"
+  },
+  "lighthouse-core/audits/deprecations.js | columnLine": {
+    "message": "Строка"
+  },
+  "lighthouse-core/audits/deprecations.js | description": {
+    "message": "Рано или поздно устаревшие API будут удалены из браузера. [Подробнее…](https://web.dev/deprecations)"
+  },
+  "lighthouse-core/audits/deprecations.js | displayValue": {
+    "message": "{itemCount,plural, =1{Обнаружено 1 предупреждение}one{Обнаружено # предупреждение}few{Обнаружено # предупреждения}many{Обнаружено # предупреждений}other{Обнаружено # предупреждения}}"
+  },
+  "lighthouse-core/audits/deprecations.js | failureTitle": {
+    "message": "На странице используются устаревшие API"
+  },
+  "lighthouse-core/audits/deprecations.js | title": {
+    "message": "Устаревшие API не используются"
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | description": {
+    "message": "Application Cache больше не поддерживается. [Подробнее…](https://web.dev/appcache-manifest)"
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | displayValue": {
+    "message": "Обнаружен манифест {AppCacheManifest}"
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | failureTitle": {
+    "message": "Используется Application Cache"
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | title": {
+    "message": "Application Cache не используется"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | description": {
+    "message": "Если для страницы указан параметр DOCTYPE, браузер не будет переключаться в режим совместимости. [Подробнее…](https://web.dev/doctype)"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationBadDoctype": {
+    "message": "В качестве названия элемента DOCTYPE нужно указать `html` строчными буквами."
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationNoDoctype": {
+    "message": "Необходимо добавить элемент DOCTYPE"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationPublicId": {
+    "message": "Поле publicId содержит данные"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationSystemId": {
+    "message": "Поле systemId содержит данные"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | failureTitle": {
+    "message": "Активирован режим совместимости, так как на странице отсутствует элемент DOCTYPE"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | title": {
+    "message": "Тип страницы (DOCTYPE): HTML"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | columnElement": {
+    "message": "Элемент"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | columnStatistic": {
+    "message": "Статистический показатель"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | columnValue": {
+    "message": "Значение"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | description": {
+    "message": "Разработчики браузеров рекомендуют размещать на странице не более 1500 элементов DOM. Оптимальные показатели: глубина дерева – менее 32 элементов, количество дочерних и родительских элементов – менее 60. Сложная структура DOM может привести к использованию большего объема памяти, замедлить [вычисление стилей](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations) и увеличить затраты на [компоновку шаблонов](https://developers.google.com/speed/articles/reflow). [Подробнее…](https://web.dev/dom-size)"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 элемент}one{# элемент}few{# элемента}many{# элементов}other{# элемента}}"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | failureTitle": {
+    "message": "Сократите размер структуры DOM"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | statisticDOMDepth": {
+    "message": "Максимальная глубина вложенности DOM"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | statisticDOMElements": {
+    "message": "Общее количество элементов DOM"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | statisticDOMWidth": {
+    "message": "Максимальное число дочерних элементов"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | title": {
+    "message": "Сокращение размера структуры DOM"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | columnRel": {
+    "message": "Rel"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | columnTarget": {
+    "message": "Атрибут target"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | description": {
+    "message": "Добавьте атрибут `rel=\"noopener\"` или `rel=\"noreferrer\"` ко всем внешним ссылкам, чтобы повысить производительность и избежать уязвимостей в защите. [Подробнее…](https://web.dev/external-anchors-use-rel-noopener)"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | failureTitle": {
+    "message": "Ссылки на сторонние ресурсы небезопасны"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | title": {
+    "message": "Ссылки на сторонние ресурсы безопасны"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | warning": {
+    "message": "Не удалось определить целевой якорь ({anchorHTML}). Если элемент не используется в качестве гиперссылки, попробуйте удалить атрибут target=_blank."
+  },
+  "lighthouse-core/audits/dobetterweb/geolocation-on-start.js | description": {
+    "message": "Пользователи с подозрением относятся к сайтам, которые беспричинно запрашивают доступ к их местоположению. Мы рекомендуем связать этот запрос с определенными действиями пользователя. [Подробнее…](https://web.dev/geolocation-on-start)"
+  },
+  "lighthouse-core/audits/dobetterweb/geolocation-on-start.js | failureTitle": {
+    "message": "Разрешение на определение местоположения запрашивается при загрузке страницы"
+  },
+  "lighthouse-core/audits/dobetterweb/geolocation-on-start.js | title": {
+    "message": "Разрешение на определение местоположения не запрашивается при загрузке страницы"
+  },
+  "lighthouse-core/audits/dobetterweb/js-libraries.js | columnVersion": {
+    "message": "Версия"
+  },
+  "lighthouse-core/audits/dobetterweb/js-libraries.js | description": {
+    "message": "Все клиентские библиотеки JavaScript, обнаруженные на странице. [Подробнее…](https://web.dev/js-libraries)"
+  },
+  "lighthouse-core/audits/dobetterweb/js-libraries.js | title": {
+    "message": "Обнаруженные библиотеки JavaScript"
+  },
+  "lighthouse-core/audits/dobetterweb/no-document-write.js | description": {
+    "message": "Использование метода `document.write()` для динамической подгрузки внешних скриптов может значительно замедлять загрузку страницы для пользователей с низкой скоростью подключения. [Подробнее…](https://web.dev/no-document-write)"
+  },
+  "lighthouse-core/audits/dobetterweb/no-document-write.js | failureTitle": {
+    "message": "Используется метод `document.write()`"
+  },
+  "lighthouse-core/audits/dobetterweb/no-document-write.js | title": {
+    "message": "Метод `document.write()` не используется"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | columnSeverity": {
+    "message": "Максимальная степень опасности"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | columnVersion": {
+    "message": "Версия библиотеки"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | columnVuln": {
+    "message": "Количество уязвимостей"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | description": {
+    "message": "Некоторые сторонние скрипты содержат известные уязвимости, которые легко могут быть обнаружены и использованы злоумышленниками. [Подробнее…](https://web.dev/no-vulnerable-libraries)"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | displayValue": {
+    "message": "{itemCount,plural, =1{Обнаружена 1 уязвимость}one{Обнаружена # уязвимость}few{Обнаружено # уязвимости}many{Обнаружено # уязвимостей}other{Обнаружено # уязвимости}}"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | failureTitle": {
+    "message": "Содержит клиентские библиотеки JavaScript с известными уязвимостями"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | rowSeverityHigh": {
+    "message": "Высокая"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | rowSeverityLow": {
+    "message": "Низкая"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | rowSeverityMedium": {
+    "message": "Средняя"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | title": {
+    "message": "Не содержит клиентские библиотеки JavaScript с известными уязвимостями"
+  },
+  "lighthouse-core/audits/dobetterweb/notification-on-start.js | description": {
+    "message": "Пользователи с подозрением относятся к сайтам, которые беспричинно запрашивают разрешение на отправку уведомлений. Мы рекомендуем связать этот запрос с определенными жестами пользователя. [Подробнее…](https://web.dev/notification-on-start)"
+  },
+  "lighthouse-core/audits/dobetterweb/notification-on-start.js | failureTitle": {
+    "message": "Разрешение на отправку уведомлений запрашивается при загрузке страницы"
+  },
+  "lighthouse-core/audits/dobetterweb/notification-on-start.js | title": {
+    "message": "Разрешение на отправку уведомлений не запрашивается при загрузке страницы"
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | columnFailingElem": {
+    "message": "Элементы, запрещающие вставку из буфера обмена"
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | description": {
+    "message": "Запрет на вставку пароля из буфера обмена отрицательно сказывается на безопасности пользователей. [Подробнее…](https://web.dev/password-inputs-can-be-pasted-into)"
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | failureTitle": {
+    "message": "Вставка пароля из буфера обмена запрещена"
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | title": {
+    "message": "Вставка пароля из буфера обмена разрешена"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | columnProtocol": {
+    "message": "Протокол"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | description": {
+    "message": "Протокол HTTP/2 отличается от HTTP/1.1 массой преимуществ, включая бинарность, мультиплексирование запросов, а также возможность отправки данных по инициативе сервера. [Подробнее…](https://web.dev/uses-http2)"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 запрос не передан через HTTP/2}one{# запрос не передан через HTTP/2}few{# запроса не передано через HTTP/2}many{# запросов не передано через HTTP/2}other{# запроса не передано через HTTP/2}}"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | failureTitle": {
+    "message": "Не использует протокол HTTP/2 для всех ресурсов"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | title": {
+    "message": "Протокол HTTP/2 используется для собственных ресурсов"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-passive-event-listeners.js | description": {
+    "message": "Чтобы повысить производительность при прокрутке страницы, используйте флаг `passive` для прослушивателей событий прикосновения и колеса мыши. [Подробнее…](https://web.dev/uses-passive-event-listeners)"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-passive-event-listeners.js | failureTitle": {
+    "message": "Пассивные прослушиватели событий не используются для улучшения производительности при прокрутке"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-passive-event-listeners.js | title": {
+    "message": "Пассивные прослушиватели событий используются для улучшения производительности при прокрутке"
+  },
+  "lighthouse-core/audits/errors-in-console.js | columnDesc": {
+    "message": "Описание"
+  },
+  "lighthouse-core/audits/errors-in-console.js | description": {
+    "message": "Ошибки, записанные в журнале консоли, указывают на нерешенные проблемы. Это могут быть невыполненные сетевые запросы и другие сбои в работе браузера. [Подробнее…](https://web.dev/errors-in-console)"
+  },
+  "lighthouse-core/audits/errors-in-console.js | failureTitle": {
+    "message": "Ошибки браузера занесены в журнал консоли"
+  },
+  "lighthouse-core/audits/errors-in-console.js | title": {
+    "message": "В журнале консоли нет ошибок браузера"
+  },
+  "lighthouse-core/audits/font-display.js | description": {
+    "message": "Используйте свойство CSS font-display, чтобы пользователи могли видеть текст во время загрузки веб-шрифтов. [Подробнее…](https://developers.google.com/web/updates/2016/02/font-display)"
+  },
+  "lighthouse-core/audits/font-display.js | failureTitle": {
+    "message": "Настройте показ всего текста во время загрузки веб-шрифтов"
+  },
+  "lighthouse-core/audits/font-display.js | title": {
+    "message": "Показ всего текста во время загрузки веб-шрифтов"
+  },
+  "lighthouse-core/audits/font-display.js | undeclaredFontURLWarning": {
+    "message": "Сервису Lighthouse не удалось автоматически проверить значение font-display для следующего URL: {fontURL}."
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | columnActual": {
+    "message": "Соотношение сторон (фактическое)"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | columnDisplayed": {
+    "message": "Соотношение сторон (отображаемое)"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | description": {
+    "message": "Размеры отображаемого изображения должны соответствовать нормальному соотношению сторон. [Подробнее…](https://web.dev/image-aspect-ratio)"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | failureTitle": {
+    "message": "Присутствуют изображения с некорректным соотношением сторон"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | title": {
+    "message": "Отсутствуют изображения с некорректным соотношением сторон"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | warningCompute": {
+    "message": "Недействительные данные о размере изображения {url}"
+  },
+  "lighthouse-core/audits/installable-manifest.js | description": {
+    "message": "Для увеличения частоты использования браузеры могут предлагать пользователям добавлять приложение на главный экран. [Подробнее…](https://developers.google.com/web/tools/lighthouse/audits/install-prompt)"
+  },
+  "lighthouse-core/audits/installable-manifest.js | failureTitle": {
+    "message": "Манифест веб-приложения не соответствует условиям, необходимым для установки"
+  },
+  "lighthouse-core/audits/installable-manifest.js | title": {
+    "message": "Манифест веб-приложения соответствует условиям, необходимым для установки"
+  },
+  "lighthouse-core/audits/is-on-https.js | columnInsecureURL": {
+    "message": "Небезопасный URL"
+  },
+  "lighthouse-core/audits/is-on-https.js | description": {
+    "message": "Все сайты (даже если они не обрабатывают конфиденциальные данные) должны быть защищены протоколом HTTPS. Он обеспечивает защиту от взлома и не позволяет посторонним узнавать, как пользователи взаимодействуют с приложением. Кроме того, использование этого протокола обязательно при работе с версией HTTP/2 и многими новыми API для веб-платформ. [Подробнее…](https://web.dev/is-on-https)"
+  },
+  "lighthouse-core/audits/is-on-https.js | displayValue": {
+    "message": "{itemCount,plural, =1{Обнаружен 1 небезопасный запрос}one{Обнаружен # небезопасный запрос}few{Обнаружено # небезопасных запроса}many{Обнаружено # небезопасных запросов}other{Обнаружено # небезопасного запроса}}"
+  },
+  "lighthouse-core/audits/is-on-https.js | failureTitle": {
+    "message": "Протокол HTTPS не используется"
+  },
+  "lighthouse-core/audits/is-on-https.js | title": {
+    "message": "Используется протокол HTTPS"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | description": {
+    "message": "Если страницы будут быстро загружаться по мобильной сети, сайтом станет удобно пользоваться на телефоне или планшете. [Подробнее…](https://developers.google.com/web/tools/lighthouse/audits/fast-3g)"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | displayValueText": {
+    "message": "Станица интерактивна через {timeInMs, number, seconds} сек."
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | displayValueTextWithOverride": {
+    "message": "Страница интерактивна в эмулированной мобильной сети через {timeInMs, number, seconds} сек."
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | explanationLoadSlow": {
+    "message": "Ваша страница загружается слишком долго и неактивна в течение первых 10 секунд. Для улучшения ее работы изучите возможности оптимизации и диагностические данные в разделе \"Производительность\"."
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | failureTitle": {
+    "message": "Страницы загружаются через мобильную сеть недостаточно быстро"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | title": {
+    "message": "Страницы загружаются через мобильную сеть достаточно быстро"
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | columnCategory": {
+    "message": "Категория"
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | description": {
+    "message": "Рекомендуем сократить время на анализ, компиляцию и выполнение скриптов JS. Для этого вы можете уменьшить размер фрагментов кода JS."
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | failureTitle": {
+    "message": "Минимизируйте работу в основном потоке"
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | title": {
+    "message": "Минимизация работы в основном потоке"
+  },
+  "lighthouse-core/audits/manual/pwa-cross-browser.js | description": {
+    "message": "Для максимального охвата аудитории сайт должен поддерживать все основные браузеры. [Подробнее…](https://developers.google.com/web/progressive-web-apps/checklist#site-works-cross-browser)"
+  },
+  "lighthouse-core/audits/manual/pwa-cross-browser.js | title": {
+    "message": "Сайт работает в разных браузерах"
+  },
+  "lighthouse-core/audits/manual/pwa-each-page-has-url.js | description": {
+    "message": "Убедитесь, что у каждой страницы есть уникальный URL, чтобы их было удобно распространять в социальных сетях. [Подробнее…](https://developers.google.com/web/progressive-web-apps/checklist#each-page-has-a-url)"
+  },
+  "lighthouse-core/audits/manual/pwa-each-page-has-url.js | title": {
+    "message": "У каждой страницы есть URL"
+  },
+  "lighthouse-core/audits/manual/pwa-page-transitions.js | description": {
+    "message": "Переходы создают впечатление мгновенного отклика приложения даже при медленной работе сети. [Подробнее…](https://developers.google.com/web/progressive-web-apps/checklist#page-transitions-dont-feel-like-they-block-on-the-network)"
+  },
+  "lighthouse-core/audits/manual/pwa-page-transitions.js | title": {
+    "message": "Во время перехода между страницами нет ощущения, что они ожидают ответа от сети"
+  },
+  "lighthouse-core/audits/metrics/estimated-input-latency.js | description": {
+    "message": "Примерное время задержки при вводе показывает время в миллисекундах, через которое приложение реагирует на действия пользователя в течение самых активных 5 секунд загрузки страницы. Если это время превышает 50 мс, пользователям может показаться, что ваше приложение работает слишком медленно. [Подробнее…](https://developers.google.com/web/tools/lighthouse/audits/estimated-input-latency)"
+  },
+  "lighthouse-core/audits/metrics/estimated-input-latency.js | title": {
+    "message": "Приблизительное время задержки при вводе"
+  },
+  "lighthouse-core/audits/metrics/first-contentful-paint.js | description": {
+    "message": "Первая отрисовка контента – показатель, который определяет интервал времени между началом загрузки страницы и появлением первого изображения или блока текста. [Подробнее…](https://developers.google.com/web/tools/lighthouse/audits/first-contentful-paint)"
+  },
+  "lighthouse-core/audits/metrics/first-contentful-paint.js | title": {
+    "message": "Время загрузки первого контента"
+  },
+  "lighthouse-core/audits/metrics/first-cpu-idle.js | description": {
+    "message": "Время окончания работы ЦП – время, когда на странице становится возможной обработка пользовательского ввода. [Подробнее…](https://developers.google.com/web/tools/lighthouse/audits/first-interactive)"
+  },
+  "lighthouse-core/audits/metrics/first-cpu-idle.js | title": {
+    "message": "Время окончания работы ЦП"
+  },
+  "lighthouse-core/audits/metrics/first-meaningful-paint.js | description": {
+    "message": "Первая значимая отрисовка – показатель, определяющий интервал времени между началом загрузки страницы и появлением основного контента. [Подробнее…](https://developers.google.com/web/tools/lighthouse/audits/first-meaningful-paint)"
+  },
+  "lighthouse-core/audits/metrics/first-meaningful-paint.js | title": {
+    "message": "Время загрузки достаточной части контента"
+  },
+  "lighthouse-core/audits/metrics/interactive.js | description": {
+    "message": "Время загрузки для взаимодействия – это время, в течение которого страница становится полностью готова к взаимодействию с пользователем. [Подробнее…](https://developers.google.com/web/tools/lighthouse/audits/consistently-interactive)"
+  },
+  "lighthouse-core/audits/metrics/interactive.js | title": {
+    "message": "Время загрузки для взаимодействия"
+  },
+  "lighthouse-core/audits/metrics/max-potential-fid.js | description": {
+    "message": "Максимальная потенциальная задержка после первого ввода показывает время выполнения самой длительной задачи в миллисекундах. [Подробнее…](https://developers.google.com/web/updates/2018/05/first-input-delay)"
+  },
+  "lighthouse-core/audits/metrics/max-potential-fid.js | title": {
+    "message": "Макс. потенц. задержка после первого ввода"
+  },
+  "lighthouse-core/audits/metrics/speed-index.js | description": {
+    "message": "Индекс скорости загрузки показывает, как быстро на странице появляется контент. [Подробнее…](https://developers.google.com/web/tools/lighthouse/audits/speed-index)"
+  },
+  "lighthouse-core/audits/metrics/speed-index.js | title": {
+    "message": "Индекс скорости загрузки"
+  },
+  "lighthouse-core/audits/metrics/total-blocking-time.js | description": {
+    "message": "Общее время в миллисекундах между первой отрисовкой контента и временем загрузки для взаимодействия, когда скорость выполнения задач превышала 50 мс"
+  },
+  "lighthouse-core/audits/metrics/total-blocking-time.js | title": {
+    "message": "Общее время блокировки"
+  },
+  "lighthouse-core/audits/network-rtt.js | description": {
+    "message": "Время прохождения сигнала сети (RTT) напрямую влияет на производительность сайта. Высокое время прохождения сигнала означает, что серверы расположены слишком далеко от пользователя и сайт будет работать медленнее. [Подробнее…](https://hpbn.co/primer-on-latency-and-bandwidth/)"
+  },
+  "lighthouse-core/audits/network-rtt.js | title": {
+    "message": "Время прохождения сигнала сети"
+  },
+  "lighthouse-core/audits/network-server-latency.js | description": {
+    "message": "Задержки со стороны сервера могут влиять на скорость загрузки страниц. Высокое время реакции сервера говорит о его перегруженности или недостаточной производительности. [Подробнее…](https://hpbn.co/primer-on-web-performance/#analyzing-the-resource-waterfall)"
+  },
+  "lighthouse-core/audits/network-server-latency.js | title": {
+    "message": "Задержка со стороны сервера"
+  },
+  "lighthouse-core/audits/offline-start-url.js | description": {
+    "message": "Service Worker обеспечивает надежную работу веб-приложения при нестабильных условиях работы сети. [Подробнее…](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)"
+  },
+  "lighthouse-core/audits/offline-start-url.js | failureTitle": {
+    "message": "`start_url` не отправляет код 200 в офлайн-режиме"
+  },
+  "lighthouse-core/audits/offline-start-url.js | title": {
+    "message": "`start_url` отправляет код 200 в офлайн-режиме"
+  },
+  "lighthouse-core/audits/offline-start-url.js | warningCantStart": {
+    "message": "Lighthouse не удалось прочитать `start_url` в файле манифеста. По этой причине в качестве URL документа была выбрана ссылка `start_url`. Сообщение об ошибке: \"{manifestWarning}\"."
+  },
+  "lighthouse-core/audits/performance-budget.js | columnOverBudget": {
+    "message": "Сверх бюджета"
+  },
+  "lighthouse-core/audits/performance-budget.js | description": {
+    "message": "Следите за тем, чтобы количество и размер сетевых запросов соответствовали целям, установленным в бюджете производительности. [Подробнее…](https://developers.google.com/web/tools/lighthouse/audits/budgets)"
+  },
+  "lighthouse-core/audits/performance-budget.js | requestCountOverBudget": {
+    "message": "{count,plural, =1{1 запрос}one{# запрос}few{# запроса}many{# запросов}other{# запроса}}"
+  },
+  "lighthouse-core/audits/performance-budget.js | title": {
+    "message": "Бюджет производительности"
+  },
+  "lighthouse-core/audits/redirects-http.js | description": {
+    "message": "Если у вас уже настроен протокол HTTPS, убедитесь, что весь трафик перенаправляется с HTTP на HTTPS, чтобы обеспечить безопасность для всех своих пользователей. [Подробнее…](https://developers.google.com/web/tools/lighthouse/audits/http-redirects-to-https)"
+  },
+  "lighthouse-core/audits/redirects-http.js | failureTitle": {
+    "message": "Не перенаправляет трафик с HTTP на HTTPS"
+  },
+  "lighthouse-core/audits/redirects-http.js | title": {
+    "message": "Перенаправляет трафик с HTTP на HTTPS"
+  },
+  "lighthouse-core/audits/redirects.js | description": {
+    "message": "Переадресации могут стать причиной дополнительных задержек при загрузке страницы. [Подробнее…](https://developers.google.com/web/tools/lighthouse/audits/redirects)"
+  },
+  "lighthouse-core/audits/redirects.js | title": {
+    "message": "Избегайте большого количества переадресаций"
+  },
+  "lighthouse-core/audits/resource-summary.js | description": {
+    "message": "Чтобы установить бюджет для количества и размера ресурсов на странице, добавьте файл budget.json. [Подробнее…](https://developers.google.com/web/tools/lighthouse/audits/budgets)"
+  },
+  "lighthouse-core/audits/resource-summary.js | displayValue": {
+    "message": "{requestCount,plural, =1{1 запрос • {byteCount, number, bytes} КБ}one{# запрос • {byteCount, number, bytes} КБ}few{# запроса • {byteCount, number, bytes} КБ}many{# запросов • {byteCount, number, bytes} КБ}other{# запроса • {byteCount, number, bytes} КБ}}"
+  },
+  "lighthouse-core/audits/resource-summary.js | title": {
+    "message": "Постарайтесь уменьшить количество запросов и размеры передаваемых данных"
+  },
+  "lighthouse-core/audits/seo/canonical.js | description": {
+    "message": "Ссылки с атрибутом rel=\"canonical\" будут показаны в результатах поиска. [Подробнее…](https://web.dev/canonical)"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationConflict": {
+    "message": "Несколько конфликтующих URL ({urlList})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationDifferentDomain": {
+    "message": "Указывает на другой домен ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationInvalid": {
+    "message": "Недопустимый URL ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationPointsElsewhere": {
+    "message": "Указывает на другое расположение атрибута `hreflang` ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationRelative": {
+    "message": "Относительный URL ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationRoot": {
+    "message": "Каноническая ссылка ведет на корневой URL домена, а не на соответствующую страницу с контентом."
+  },
+  "lighthouse-core/audits/seo/canonical.js | failureTitle": {
+    "message": "В документе нет действительного атрибута `rel=canonical`"
+  },
+  "lighthouse-core/audits/seo/canonical.js | title": {
+    "message": "Для документа указан действительный атрибут `rel=canonical`"
+  },
+  "lighthouse-core/audits/seo/font-size.js | description": {
+    "message": "Если вы хотите, чтобы текст легко читался, размер шрифта должен составлять не менее 12 пикс. В противном случае пользователям мобильных устройств придется масштабировать страницу для чтения. В идеале на странице должно быть более 60 % текста высотой не менее 12 пикс. [Подробнее…](https://web.dev/font-size)"
+  },
+  "lighthouse-core/audits/seo/font-size.js | displayValue": {
+    "message": "{decimalProportion, number, extendedPercent} текста можно легко прочитать"
+  },
+  "lighthouse-core/audits/seo/font-size.js | explanationViewport": {
+    "message": "Слишком мелкий текст. Настройте область просмотра для экранов мобильных устройств с помощью метатега viewport."
+  },
+  "lighthouse-core/audits/seo/font-size.js | explanationWithDisclaimer": {
+    "message": "{decimalProportion, number, extendedPercent} текста набрано слишком мелким шрифтом (на основе образца размером {decimalProportionVisited, number, extendedPercent})."
+  },
+  "lighthouse-core/audits/seo/font-size.js | failureTitle": {
+    "message": "В документе используются шрифты слишком маленького размера"
+  },
+  "lighthouse-core/audits/seo/font-size.js | title": {
+    "message": "В документе используются шрифты оптимального размера"
+  },
+  "lighthouse-core/audits/seo/hreflang.js | description": {
+    "message": "Добавьте на страницу элементы link с атрибутом hreflang. Тогда в результатах поиска будут представлены те версии ваших страниц, которые лучше всего подходят для языка и региона пользователя. [Подробнее…](https://web.dev/hreflang)"
+  },
+  "lighthouse-core/audits/seo/hreflang.js | failureTitle": {
+    "message": "В документе нет действительного атрибута `hreflang`"
+  },
+  "lighthouse-core/audits/seo/hreflang.js | title": {
+    "message": "Для документа указан действительный атрибут `hreflang`"
+  },
+  "lighthouse-core/audits/seo/http-status-code.js | description": {
+    "message": "Индексация страниц с недействительным кодом статуса HTTP может быть нарушена. [Подробнее…](https://web.dev/http-status-code)"
+  },
+  "lighthouse-core/audits/seo/http-status-code.js | failureTitle": {
+    "message": "Код статуса HTTP недействителен"
+  },
+  "lighthouse-core/audits/seo/http-status-code.js | title": {
+    "message": "Код статуса HTTP действителен"
+  },
+  "lighthouse-core/audits/seo/is-crawlable.js | description": {
+    "message": "Поисковые системы не смогут включать ваши страницы в результаты поиска, если вы не предоставите разрешение на сканирование. [Подробнее…](https://web.dev/is-crawable)"
+  },
+  "lighthouse-core/audits/seo/is-crawlable.js | failureTitle": {
+    "message": "Страница недоступна для индексации"
+  },
+  "lighthouse-core/audits/seo/is-crawlable.js | title": {
+    "message": "Страница доступна для индексации"
+  },
+  "lighthouse-core/audits/seo/link-text.js | description": {
+    "message": "Добавьте к ссылкам текстовые описания, чтобы поисковые системы лучше распознавали ваш контент. [Подробнее…](https://web.dev/link-text)"
+  },
+  "lighthouse-core/audits/seo/link-text.js | displayValue": {
+    "message": "{itemCount,plural, =1{Найдена 1 ссылка}one{Найдена # ссылка}few{Найдено # ссылки}many{Найдено # ссылок}other{Найдено # ссылки}}"
+  },
+  "lighthouse-core/audits/seo/link-text.js | failureTitle": {
+    "message": "У ссылок нет описаний"
+  },
+  "lighthouse-core/audits/seo/link-text.js | title": {
+    "message": "У ссылок есть описания"
+  },
+  "lighthouse-core/audits/seo/manual/structured-data.js | description": {
+    "message": "Для тестирования структурированных данных воспользуйтесь [инструментом проверки](https://search.google.com/structured-data/testing-tool/) и [инструментом Structured Data Linter](http://linter.structured-data.org/). [Подробнее…](https://web.dev/structured-data)"
+  },
+  "lighthouse-core/audits/seo/manual/structured-data.js | title": {
+    "message": "Структурированные данные действительны"
+  },
+  "lighthouse-core/audits/seo/meta-description.js | description": {
+    "message": "Метаописания содержат общие сведения о контенте страницы и могут быть показаны в результатах поиска. [Подробнее…](https://web.dev/meta-description)"
+  },
+  "lighthouse-core/audits/seo/meta-description.js | explanation": {
+    "message": "Отсутствует описание."
+  },
+  "lighthouse-core/audits/seo/meta-description.js | failureTitle": {
+    "message": "В документе нет метаописания"
+  },
+  "lighthouse-core/audits/seo/meta-description.js | title": {
+    "message": "В документе есть метаописание"
+  },
+  "lighthouse-core/audits/seo/plugins.js | description": {
+    "message": "Поисковые системы не могут индексировать содержимое плагинов. К тому же на многих устройствах использование плагинов ограничено или не поддерживается. [Подробнее…](https://web.dev/plugins)"
+  },
+  "lighthouse-core/audits/seo/plugins.js | failureTitle": {
+    "message": "В документе используются плагины"
+  },
+  "lighthouse-core/audits/seo/plugins.js | title": {
+    "message": "В документе нет плагинов"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | description": {
+    "message": "Если файл robots.txt поврежден, поисковые роботы могут не распознать ваши инструкции по сканированию или индексации сайта. [Подробнее…](https://web.dev/robots-txt)"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | displayValueHttpBadCode": {
+    "message": "Код статуса HTTP, полученный в ответ на запрос файла robots.txt: {statusCode}"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | displayValueValidationError": {
+    "message": "{itemCount,plural, =1{Обнаружена 1 ошибка}one{Обнаружена # ошибка}few{Обнаружено # ошибки}many{Обнаружено # ошибок}other{Обнаружено # ошибки}}"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | explanation": {
+    "message": "Не удалось скачать файл robots.txt."
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | failureTitle": {
+    "message": "Файл robots.txt недействителен"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | title": {
+    "message": "Файл robots.txt действителен"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | description": {
+    "message": "Интерактивные элементы, такие как кнопки и ссылки, должны быть достаточно крупными (48 x 48 пикс.) и располагаться на достаточном расстоянии друг от друга. Тогда пользователям будет удобно нажимать на них. [Подробнее…](https://web.dev/tap-targets)"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | displayValue": {
+    "message": "Размеры {decimalProportion, number, percent} интерактивных элементов соответствуют требованиям."
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | explanationViewportMetaNotOptimized": {
+    "message": "Слишком маленькие интерактивные элементы. Настройте область просмотра для экранов мобильных устройств с помощью метатега viewport."
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | failureTitle": {
+    "message": "Размер интерактивных элементов не оптимален"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | overlappingTargetHeader": {
+    "message": "Частичное совпадение элементов"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | tapTargetHeader": {
+    "message": "Интерактивный элемент"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | title": {
+    "message": "Размер интерактивных элементов оптимален"
+  },
+  "lighthouse-core/audits/service-worker.js | description": {
+    "message": "Service Worker — это технология, добавляющая в приложение преимущества современных веб-приложений, такие как поддержка офлайн-режима, добавления на главный экран и push-уведомлений. [Подробнее…](https://developers.google.com/web/tools/lighthouse/audits/registered-service-worker)"
+  },
+  "lighthouse-core/audits/service-worker.js | explanationBadManifest": {
+    "message": "Страницей управляет Service Worker, но не найден `start_url`, так как не удалось интерпретировать манифест как JSON."
+  },
+  "lighthouse-core/audits/service-worker.js | explanationBadStartUrl": {
+    "message": "Страницей управляет Service Worker, но `start_url` ({startUrl}) находится вне его области действия ({scopeUrl})."
+  },
+  "lighthouse-core/audits/service-worker.js | explanationNoManifest": {
+    "message": "Страницей управляет Service Worker, но не удалось найти `start_url`, так как не был получен манифест."
+  },
+  "lighthouse-core/audits/service-worker.js | explanationOutOfScope": {
+    "message": "В этом источнике несколько Service Worker, но страница {pageUrl} не входит в их область действия."
+  },
+  "lighthouse-core/audits/service-worker.js | failureTitle": {
+    "message": "Не регистрируется Service Worker, управляющий страницей и `start_url`"
+  },
+  "lighthouse-core/audits/service-worker.js | title": {
+    "message": "Регистрируется Service Worker, управляющий страницей и `start_url`"
+  },
+  "lighthouse-core/audits/splash-screen.js | description": {
+    "message": "Приложение оставляет у пользователей более приятное впечатление, когда оно встречает их качественной заставкой. [Подробнее…](https://developers.google.com/web/tools/lighthouse/audits/custom-splash-screen)"
+  },
+  "lighthouse-core/audits/splash-screen.js | failureTitle": {
+    "message": "Собственная заставка не настроена"
+  },
+  "lighthouse-core/audits/splash-screen.js | title": {
+    "message": "Настроена собственная заставка"
+  },
+  "lighthouse-core/audits/themed-omnibox.js | description": {
+    "message": "Цвет адресной строки браузера можно изменить под цвет сайта. [Подробнее…](https://developers.google.com/web/tools/lighthouse/audits/address-bar)"
+  },
+  "lighthouse-core/audits/themed-omnibox.js | failureTitle": {
+    "message": "Не изменяет цвет адресной строки в соответствии с темой"
+  },
+  "lighthouse-core/audits/themed-omnibox.js | title": {
+    "message": "Изменяет цвет адресной строки в соответствии с темой"
+  },
+  "lighthouse-core/audits/third-party-summary.js | columnBlockingTime": {
+    "message": "Время блокировки основного потока"
+  },
+  "lighthouse-core/audits/third-party-summary.js | columnThirdParty": {
+    "message": "Сторонний поставщик"
+  },
+  "lighthouse-core/audits/third-party-summary.js | description": {
+    "message": "Сторонний код может сильно замедлить загрузку страниц сайта. Рекомендуем использовать только самые необходимые сторонние ресурсы и сделать так, чтобы они загружались в последнюю очередь. [Подробнее…](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/loading-third-party-javascript/)"
+  },
+  "lighthouse-core/audits/third-party-summary.js | displayValue": {
+    "message": "Сторонний код заблокировал основной поток на {timeInMs, number, milliseconds} мс"
+  },
+  "lighthouse-core/audits/third-party-summary.js | failureTitle": {
+    "message": "Уменьшите влияние стороннего кода"
+  },
+  "lighthouse-core/audits/third-party-summary.js | title": {
+    "message": "Сторонний код"
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | description": {
+    "message": "Время до первого байта – показатель, который определяет интервал времени между отправкой запроса и ответом вашего сервера. [Подробнее…](https://developers.google.com/web/tools/lighthouse/audits/ttfb)"
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | displayValue": {
+    "message": "Загрузка корневого документа заняла {timeInMs, number, milliseconds} мс"
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | failureTitle": {
+    "message": "Сократите время ответа сервера (время до получения первого байта)"
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | title": {
+    "message": "Короткое время ответа сервера (время до получения первого байта)"
+  },
+  "lighthouse-core/audits/user-timings.js | columnDuration": {
+    "message": "Длительность"
+  },
+  "lighthouse-core/audits/user-timings.js | columnStartTime": {
+    "message": "Время начала"
+  },
+  "lighthouse-core/audits/user-timings.js | columnType": {
+    "message": "Тип"
+  },
+  "lighthouse-core/audits/user-timings.js | description": {
+    "message": "Используйте User Timing API, чтобы измерить реальную производительность своего приложения во время ключевых моментов взаимодействия с пользователями. [Подробнее…](https://developers.google.com/web/tools/lighthouse/audits/user-timing)"
+  },
+  "lighthouse-core/audits/user-timings.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 временная метка}one{# временная метка}few{# временные метки}many{# временных меток}other{# временной метки}}"
+  },
+  "lighthouse-core/audits/user-timings.js | title": {
+    "message": "Метки и промежутки пользовательского времени"
+  },
+  "lighthouse-core/audits/uses-rel-preconnect.js | crossoriginWarning": {
+    "message": "Для страницы {securityOrigin} найден элемент <link> с атрибутом rel=\"preconnect\", но он не использовался браузером. Проверьте значение атрибута `crossorigin`."
+  },
+  "lighthouse-core/audits/uses-rel-preconnect.js | description": {
+    "message": "Чтобы быстро устанавливать соединение с необходимыми сторонними источниками, добавьте ресурсную подсказку `preconnect` или `dns-prefetch`. [Подробнее…](https://developers.google.com/web/fundamentals/performance/resource-prioritization#preconnect)"
+  },
+  "lighthouse-core/audits/uses-rel-preconnect.js | title": {
+    "message": "Используйте предварительное подключение к необходимым доменам"
+  },
+  "lighthouse-core/audits/uses-rel-preload.js | crossoriginWarning": {
+    "message": "Для страницы {preloadURL} найден элемент <link> с атрибутом rel=\"preload\", но он не использовался браузером. Проверьте значение атрибута `crossorigin`."
+  },
+  "lighthouse-core/audits/uses-rel-preload.js | description": {
+    "message": "Чтобы основные ресурсы загружались в первую очередь, используйте для них элемент `<link rel=preload>`. [Подробнее…](https://developers.google.com/web/tools/lighthouse/audits/preload)"
+  },
+  "lighthouse-core/audits/uses-rel-preload.js | title": {
+    "message": "Настройте предварительную загрузку ключевых запросов"
+  },
+  "lighthouse-core/audits/viewport.js | description": {
+    "message": "Добавьте метатег `<meta name=\"viewport\">`, чтобы оптимизировать приложение для экранов мобильных устройств. [Подробнее…](https://developers.google.com/web/tools/lighthouse/audits/has-viewport-meta-tag)"
+  },
+  "lighthouse-core/audits/viewport.js | explanationNoTag": {
+    "message": "Метатег `<meta name=\"viewport\">` не найден."
+  },
+  "lighthouse-core/audits/viewport.js | failureTitle": {
+    "message": "Отсутствует метатег `<meta name=\"viewport\">` со свойством `width` или `initial-scale`"
+  },
+  "lighthouse-core/audits/viewport.js | title": {
+    "message": "Присутствует метатег `<meta name=\"viewport\">` со свойством `width` или `initial-scale`"
+  },
+  "lighthouse-core/audits/without-javascript.js | description": {
+    "message": "В приложении должен отображаться контент, даже если JavaScript отключен. Достаточно уведомления, что для работы приложения необходим JavaScript. [Подробнее…](https://developers.google.com/web/tools/lighthouse/audits/no-js)"
+  },
+  "lighthouse-core/audits/without-javascript.js | explanation": {
+    "message": "Даже при недоступности скриптов в теле страницы должен отображаться контент."
+  },
+  "lighthouse-core/audits/without-javascript.js | failureTitle": {
+    "message": "Не предоставляет резервный контент при недоступности JavaScript"
+  },
+  "lighthouse-core/audits/without-javascript.js | title": {
+    "message": "Содержит некоторый контент при недоступности JavaScript"
+  },
+  "lighthouse-core/audits/works-offline.js | description": {
+    "message": "При создании современного веб-приложения используйте Service Worker, чтобы оно продолжало работу в офлайн-режиме. [Подробнее…](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)"
+  },
+  "lighthouse-core/audits/works-offline.js | failureTitle": {
+    "message": "Текущая страница не отправляет код 200 в офлайн-режиме"
+  },
+  "lighthouse-core/audits/works-offline.js | title": {
+    "message": "Текущая страница отправляет код 200 в офлайн-режиме"
+  },
+  "lighthouse-core/audits/works-offline.js | warningNoLoad": {
+    "message": "Эта страница может не загружаться в офлайн-режиме, потому что тестовый URL ({requested}) перенаправляет на {final}. Попробуйте напрямую испытать второй URL."
+  },
+  "lighthouse-core/config/default-config.js | a11yAriaGroupDescription": {
+    "message": "Проверьте, правильно ли заданы атрибуты ARIA. Они облегчают работу с вашим приложением пользователям с ограниченными возможностями."
+  },
+  "lighthouse-core/config/default-config.js | a11yAriaGroupTitle": {
+    "message": "ARIA"
+  },
+  "lighthouse-core/config/default-config.js | a11yAudioVideoGroupDescription": {
+    "message": "Проверьте, доступны ли на вашем сайте описания для аудио- и видеоконтента. Это сделает сайт удобнее для пользователей с нарушениями зрения и слуха."
+  },
+  "lighthouse-core/config/default-config.js | a11yAudioVideoGroupTitle": {
+    "message": "Аудио и видео"
+  },
+  "lighthouse-core/config/default-config.js | a11yBestPracticesGroupDescription": {
+    "message": "Проверьте, соответствует ли ваш сайт рекомендациям по оптимизации для поисковых систем."
+  },
+  "lighthouse-core/config/default-config.js | a11yBestPracticesGroupTitle": {
+    "message": "Рекомендации"
+  },
+  "lighthouse-core/config/default-config.js | a11yCategoryDescription": {
+    "message": "Узнайте, какие трудности могут возникнуть у людей с ограниченными возможностями при использовании вашего веб-приложения, и [сделайте его доступнее](https://developers.google.com/web/fundamentals/accessibility). Тестирование вручную поможет выявить проблемы доступности, которые не были обнаружены автоматически."
+  },
+  "lighthouse-core/config/default-config.js | a11yCategoryManualDescription": {
+    "message": "Ручная проверка позволяет охватить области, которые невозможно протестировать автоматически. Подробнее [о проверке специальных возможностей](https://developers.google.com/web/fundamentals/accessibility/how-to-review)…"
+  },
+  "lighthouse-core/config/default-config.js | a11yCategoryTitle": {
+    "message": "Специальные возможности"
+  },
+  "lighthouse-core/config/default-config.js | a11yColorContrastGroupDescription": {
+    "message": "Проверьте, хорошо ли виден ваш текст."
+  },
+  "lighthouse-core/config/default-config.js | a11yColorContrastGroupTitle": {
+    "message": "Контрастность"
+  },
+  "lighthouse-core/config/default-config.js | a11yLanguageGroupDescription": {
+    "message": "Проверьте, правильно ли заданы атрибуты языков для программ чтения с экрана."
+  },
+  "lighthouse-core/config/default-config.js | a11yLanguageGroupTitle": {
+    "message": "Интернационализация и локализация"
+  },
+  "lighthouse-core/config/default-config.js | a11yNamesLabelsGroupDescription": {
+    "message": "Проверьте, насколько элементы управления в вашем приложении различимы для программ чтения с экрана."
+  },
+  "lighthouse-core/config/default-config.js | a11yNamesLabelsGroupTitle": {
+    "message": "Названия и ярлыки"
+  },
+  "lighthouse-core/config/default-config.js | a11yNavigationGroupDescription": {
+    "message": "Проверьте, удобно ли пользователям перемещаться по вашему приложению с помощью клавиатуры."
+  },
+  "lighthouse-core/config/default-config.js | a11yNavigationGroupTitle": {
+    "message": "Навигация"
+  },
+  "lighthouse-core/config/default-config.js | a11yTablesListsVideoGroupDescription": {
+    "message": "Проверьте, насколько эффективно программы чтения с экрана распознают данные в таблицах и списках на вашем сайте."
+  },
+  "lighthouse-core/config/default-config.js | a11yTablesListsVideoGroupTitle": {
+    "message": "Таблицы и списки"
+  },
+  "lighthouse-core/config/default-config.js | bestPracticesCategoryTitle": {
+    "message": "Рекомендации"
+  },
+  "lighthouse-core/config/default-config.js | budgetsGroupDescription": {
+    "message": "В бюджете производительности устанавливаются нормы для производительности вашего сайта."
+  },
+  "lighthouse-core/config/default-config.js | budgetsGroupTitle": {
+    "message": "Бюджет"
+  },
+  "lighthouse-core/config/default-config.js | diagnosticsGroupDescription": {
+    "message": "Подробная информация о производительности вашего приложения. Эти цифры не влияют на показатель производительности [напрямую](https://github.com/GoogleChrome/lighthouse/blob/d2ec9ffbb21de9ad1a0f86ed24575eda32c796f0/docs/scoring.md#how-are-the-scores-weighted)."
+  },
+  "lighthouse-core/config/default-config.js | diagnosticsGroupTitle": {
+    "message": "Диагностика"
+  },
+  "lighthouse-core/config/default-config.js | firstPaintImprovementsGroupDescription": {
+    "message": "Один из самых важных параметров производительности – насколько быстро пиксели отображаются на экране. Ключевые показатели: \"Время загрузки первого контента\" и \"Время загрузки достаточной части контента\"."
+  },
+  "lighthouse-core/config/default-config.js | firstPaintImprovementsGroupTitle": {
+    "message": "Уменьшение времени загрузки контента"
+  },
+  "lighthouse-core/config/default-config.js | loadOpportunitiesGroupDescription": {
+    "message": "Эти рекомендации могут помочь вам ускорить загрузку страницы. Они не влияют на показатель производительности [напрямую](https://github.com/GoogleChrome/lighthouse/blob/d2ec9ffbb21de9ad1a0f86ed24575eda32c796f0/docs/scoring.md#how-are-the-scores-weighted)."
+  },
+  "lighthouse-core/config/default-config.js | loadOpportunitiesGroupTitle": {
+    "message": "Оптимизация"
+  },
+  "lighthouse-core/config/default-config.js | metricGroupTitle": {
+    "message": "Показатели"
+  },
+  "lighthouse-core/config/default-config.js | overallImprovementsGroupDescription": {
+    "message": "Улучшите параметры загрузки, чтобы страница была готова для работы как можно скорее. Ключевые показатели: \"Время загрузки для взаимодействия\" и \"Индекс скорости загрузки\"."
+  },
+  "lighthouse-core/config/default-config.js | overallImprovementsGroupTitle": {
+    "message": "Общие улучшения"
+  },
+  "lighthouse-core/config/default-config.js | performanceCategoryTitle": {
+    "message": "Производительность"
+  },
+  "lighthouse-core/config/default-config.js | pwaCategoryDescription": {
+    "message": "Здесь проверяется соответствие нормам современных веб-приложений. [Подробнее…](https://developers.google.com/web/progressive-web-apps/checklist)"
+  },
+  "lighthouse-core/config/default-config.js | pwaCategoryManualDescription": {
+    "message": "Lighthouse не проверяет эти пункты автоматически, но они необходимы для соответствия базовому [контрольному списку современных веб-приложений](https://developers.google.com/web/progressive-web-apps/checklist). Они не влияют на показатель приложения, однако их следует проверить вручную."
+  },
+  "lighthouse-core/config/default-config.js | pwaCategoryTitle": {
+    "message": "Современное веб-приложение"
+  },
+  "lighthouse-core/config/default-config.js | pwaFastReliableGroupTitle": {
+    "message": "Скорость работы и надежность"
+  },
+  "lighthouse-core/config/default-config.js | pwaInstallableGroupTitle": {
+    "message": "Возможность установки"
+  },
+  "lighthouse-core/config/default-config.js | pwaOptimizedGroupTitle": {
+    "message": "Соответствие рекомендациям для PWA"
+  },
+  "lighthouse-core/config/default-config.js | seoCategoryDescription": {
+    "message": "Эти проверки позволяют оптимизировать сайт для успешной индексации поисковыми системами. Lighthouse проверяет не все факторы, которые могут повлиять на позицию сайта в результатах поиска. [Подробнее…](https://support.google.com/webmasters/answer/35769)"
+  },
+  "lighthouse-core/config/default-config.js | seoCategoryManualDescription": {
+    "message": "Проверьте, соответствует ли ваш сайт рекомендациям по поисковой оптимизации (SEO), с помощью этих дополнительных сервисов."
+  },
+  "lighthouse-core/config/default-config.js | seoCategoryTitle": {
+    "message": "Поисковая оптимизация"
+  },
+  "lighthouse-core/config/default-config.js | seoContentGroupDescription": {
+    "message": "Оптимизируйте HTML-код, чтобы поисковые роботы могли лучше проанализировать контент приложения."
+  },
+  "lighthouse-core/config/default-config.js | seoContentGroupTitle": {
+    "message": "Рекомендации в отношении контента"
+  },
+  "lighthouse-core/config/default-config.js | seoCrawlingGroupDescription": {
+    "message": "Чтобы ваше приложение появлялось в результатах поиска, предоставьте доступ к нему поисковым роботам."
+  },
+  "lighthouse-core/config/default-config.js | seoCrawlingGroupTitle": {
+    "message": "Сканирование и индексирование"
+  },
+  "lighthouse-core/config/default-config.js | seoMobileGroupDescription": {
+    "message": "Убедитесь, что ваши страницы оптимизированы для мобильных устройств, чтобы пользователям не приходилось менять масштаб страниц или подстраивать их под размер экрана. [Подробнее…](https://developers.google.com/search/mobile-sites/)"
+  },
+  "lighthouse-core/config/default-config.js | seoMobileGroupTitle": {
+    "message": "Оптимизация для мобильных устройств"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnCacheTTL": {
+    "message": "Время жизни кеша"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnLocation": {
+    "message": "Расположение"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnName": {
+    "message": "Название"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnRequests": {
+    "message": "Запросы"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnResourceType": {
+    "message": "Тип ресурса"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnSize": {
+    "message": "Размер"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnTimeSpent": {
+    "message": "Потраченное время"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnTransferSize": {
+    "message": "Объем переданных данных"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnURL": {
+    "message": "URL"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnWastedBytes": {
+    "message": "Потенциальная экономия"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnWastedMs": {
+    "message": "Потенциальная экономия"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | displayValueByteSavings": {
+    "message": "Потенциальная экономия – {wastedBytes, number, bytes} КБ"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | displayValueMsSavings": {
+    "message": "Потенциальная экономия – {wastedMs, number, milliseconds} мс"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | documentResourceType": {
+    "message": "Документ"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | fontResourceType": {
+    "message": "Шрифт"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | imageResourceType": {
+    "message": "Изображение"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | mediaResourceType": {
+    "message": "Медиа"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | ms": {
+    "message": "{timeInMs, number, milliseconds} мс"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | otherResourceType": {
+    "message": "Другой"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | scriptResourceType": {
+    "message": "Скрипт"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | seconds": {
+    "message": "{timeInMs, number, seconds} сек."
+  },
+  "lighthouse-core/lib/i18n/i18n.js | stylesheetResourceType": {
+    "message": "Таблица стилей"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | thirdPartyResourceType": {
+    "message": "Сторонний"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | totalResourceType": {
+    "message": "Всего"
+  },
+  "lighthouse-core/lib/lh-error.js | badTraceRecording": {
+    "message": "При записи трассировки для вашей страницы произошла ошибка. Перезапустите Lighthouse. ({errorCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | criTimeout": {
+    "message": "Превышено время ожидания для первичного соединения с протоколом отладчика."
+  },
+  "lighthouse-core/lib/lh-error.js | didntCollectScreenshots": {
+    "message": "При загрузке страницы в Chrome не были сделаны скриншоты. Проверьте, есть ли на странице видимый контент, и перезапустите Lighthouse. ({errorCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | dnsFailure": {
+    "message": "DNS-серверам не удалось определить IP-адрес по указанному домену."
+  },
+  "lighthouse-core/lib/lh-error.js | erroredRequiredArtifact": {
+    "message": "При сборе данных ресурса {artifactName} произошла ошибка ({errorMessage})."
+  },
+  "lighthouse-core/lib/lh-error.js | internalChromeError": {
+    "message": "Произошла внутренняя ошибка. Перезапустите Chrome и Lighthouse."
+  },
+  "lighthouse-core/lib/lh-error.js | missingRequiredArtifact": {
+    "message": "Не удалось собрать данные ресурса {artifactName}."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailed": {
+    "message": "Не удалось загрузить страницу. Убедитесь, что URL введен правильно и сервер отвечает на все запросы."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedHung": {
+    "message": "Не удалось загрузить URL, так как страница не отвечает."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedInsecure": {
+    "message": "Сертификат безопасности для указанного URL недействителен ({securityMessages})."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedInterstitial": {
+    "message": "Браузер Chrome остановил загрузку страницы с межстраничным объявлением. Убедитесь, что URL введен правильно и сервер отвечает на все запросы."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedWithDetails": {
+    "message": "Не удалось загрузить страницу. Убедитесь, что URL введен правильно и сервер отвечает на все запросы. Подробнее: {errorDetails}."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedWithStatusCode": {
+    "message": "Не удалось загрузить страницу. Убедитесь, что URL введен правильно и сервер отвечает на все запросы. Код статуса: {statusCode}."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadTookTooLong": {
+    "message": "Страница загружалась слишком долго. Уменьшите время загрузки, выполнив рекомендации из отчета, а затем перезапустите Lighthouse. ({errorCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | protocolTimeout": {
+    "message": "Истекло время ожидания ответа от протокола DevTools. Метод: {protocolMethod}."
+  },
+  "lighthouse-core/lib/lh-error.js | requestContentTimeout": {
+    "message": "Контент загружался слишком долго. Время ожидания истекло."
+  },
+  "lighthouse-core/lib/lh-error.js | urlInvalid": {
+    "message": "Недействительный URL."
+  },
+  "lighthouse-core/report/html/renderer/util.js | auditGroupExpandTooltip": {
+    "message": "Показать аудиты"
+  },
+  "lighthouse-core/report/html/renderer/util.js | crcInitialNavigation": {
+    "message": "Начальная навигация"
+  },
+  "lighthouse-core/report/html/renderer/util.js | crcLongestDurationLabel": {
+    "message": "Максимальная задержка критического пути:"
+  },
+  "lighthouse-core/report/html/renderer/util.js | errorLabel": {
+    "message": "Ошибка"
+  },
+  "lighthouse-core/report/html/renderer/util.js | errorMissingAuditInfo": {
+    "message": "Ошибка отчета: информация аудита отсутствует"
+  },
+  "lighthouse-core/report/html/renderer/util.js | labDataTitle": {
+    "message": "Лабораторные данные"
+  },
+  "lighthouse-core/report/html/renderer/util.js | lsPerformanceCategoryDescription": {
+    "message": "Результаты анализа [Lighthouse](https://developers.google.com/web/tools/lighthouse/), проведенного для текущей страницы в эмулированной мобильной сети. Значения приблизительные и могут изменяться."
+  },
+  "lighthouse-core/report/html/renderer/util.js | manualAuditsGroupTitle": {
+    "message": "Дополнительные объекты для проверки вручную"
+  },
+  "lighthouse-core/report/html/renderer/util.js | notApplicableAuditsGroupTitle": {
+    "message": "Неприменимо"
+  },
+  "lighthouse-core/report/html/renderer/util.js | opportunityResourceColumnLabel": {
+    "message": "Возможности"
+  },
+  "lighthouse-core/report/html/renderer/util.js | opportunitySavingsColumnLabel": {
+    "message": "Приблизительная экономия"
+  },
+  "lighthouse-core/report/html/renderer/util.js | passedAuditsGroupTitle": {
+    "message": "Успешные аудиты"
+  },
+  "lighthouse-core/report/html/renderer/util.js | snippetCollapseButtonLabel": {
+    "message": "Свернуть фрагмент"
+  },
+  "lighthouse-core/report/html/renderer/util.js | snippetExpandButtonLabel": {
+    "message": "Развернуть фрагмент"
+  },
+  "lighthouse-core/report/html/renderer/util.js | thirdPartyResourcesLabel": {
+    "message": "Показывать сторонние ресурсы"
+  },
+  "lighthouse-core/report/html/renderer/util.js | toplevelWarningsMessage": {
+    "message": "Во время работы Lighthouse возникли следующие проблемы:"
+  },
+  "lighthouse-core/report/html/renderer/util.js | varianceDisclaimer": {
+    "message": "Значения приблизительные и могут изменяться. Уровень производительности рассчитывается [только на основании этих показателей](https://github.com/GoogleChrome/lighthouse/blob/d2ec9ffbb21de9ad1a0f86ed24575eda32c796f0/docs/scoring.md#how-are-the-scores-weighted)."
+  },
+  "lighthouse-core/report/html/renderer/util.js | warningAuditsGroupTitle": {
+    "message": "Пройденные проверки с предупреждениями"
+  },
+  "lighthouse-core/report/html/renderer/util.js | warningHeader": {
+    "message": "Предупреждения: "
+  },
+  "stack-packs/packs/wordpress.js | efficient_animated_content": {
+    "message": "Используйте сервисы, которые позволяют встраивать GIF-файлы на страницы сайта в формате видео HTML5."
+  },
+  "stack-packs/packs/wordpress.js | offscreen_images": {
+    "message": "Чтобы отложить загрузку скрытых страниц, установите [плагин WordPress](https://wordpress.org/plugins/search/lazy+load/) или подберите тему, которая поддерживает такую возможность. Мы также рекомендуем [плагин AMP](https://wordpress.org/plugins/amp/)."
+  },
+  "stack-packs/packs/wordpress.js | render_blocking_resources": {
+    "message": "Используйте плагины WordPress, которые позволяют [встроить критическую часть данных](https://wordpress.org/plugins/search/critical+css/) или [отложить загрузку менее важных ресурсов](https://wordpress.org/plugins/search/defer+css+javascript/). Обратите внимание, что такие плагины могут привести к сбоям в работе других используемых вами тем или плагинов. Не исключено, что вам потребуется внести изменения в код."
+  },
+  "stack-packs/packs/wordpress.js | time_to_first_byte": {
+    "message": "Темы, плагины и спецификации сервера – все это влияет на время ответа сервера. Советуем найти более подходящую тему, тщательно подобрать плагин для оптимизации и/или обновить сервер."
+  },
+  "stack-packs/packs/wordpress.js | total_byte_weight": {
+    "message": "Мы рекомендуем включить показ только начального фрагмента записей (например, с помощью тега More). Вы также можете сократить количество записей на одной странице, разбить длинные записи на несколько страниц или использовать отложенную загрузку комментариев."
+  },
+  "stack-packs/packs/wordpress.js | unminified_css": {
+    "message": "Ускорьте загрузку сайта с помощью [плагинов WordPress](https://wordpress.org/plugins/search/minify+css/), которые позволяют объединять, уменьшать и сжимать стили. Рекомендуем использовать такие плагины на этапе сборки."
+  },
+  "stack-packs/packs/wordpress.js | unminified_javascript": {
+    "message": "Ускорьте загрузку сайта с помощью [плагинов WordPress](https://wordpress.org/plugins/search/minify+javascript/), которые позволяют объединять, уменьшать и сжимать скрипты. Рекомендуем использовать такие плагины на этапе сборки."
+  },
+  "stack-packs/packs/wordpress.js | unused_css_rules": {
+    "message": "Рекомендуем заменить или удалить [плагины WordPress](https://wordpress.org/plugins/), которые загружают неиспользуемый код CSS на вашей странице. Чтобы найти такие плагины, запустите [анализ покрытия кода](https://developers.google.com/web/updates/2017/04/devtools-release-notes#coverage) в инструментах разработчика Chrome. Определить нужный плагин или тему можно по URL таблицы стилей. Обращайте внимание на плагины с большим количеством таблиц стилей, в которых при анализе покрытия кода преобладает красный цвет. Таблица стилей должна попадать в очередь, только если она используется на странице."
+  },
+  "stack-packs/packs/wordpress.js | unused_javascript": {
+    "message": "Рекомендуем заменить или удалить [плагины WordPress](https://wordpress.org/plugins/), которые загружают неиспользуемый код JavaScript на вашей странице. Чтобы найти такие плагины, запустите [анализ покрытия кода](https://developers.google.com/web/updates/2017/04/devtools-release-notes#coverage) в инструментах разработчика Chrome. Определить нужный плагин или тему можно по URL скрипта. Обращайте внимание на плагины с большим количеством скриптов, в которых при анализе покрытия кода преобладает красный цвет. Скрипт должен попадать в очередь, только если он используется на странице."
+  },
+  "stack-packs/packs/wordpress.js | uses_long_cache_ttl": {
+    "message": "Подробнее [о кешировании в браузере на платформе WordPress](https://codex.wordpress.org/WordPress_Optimization#Browser_Caching)…"
+  },
+  "stack-packs/packs/wordpress.js | uses_optimized_images": {
+    "message": "Чтобы сжимать изображения без потери качества, используйте [специальный плагин WordPress](https://wordpress.org/plugins/search/optimize+images/)."
+  },
+  "stack-packs/packs/wordpress.js | uses_responsive_images": {
+    "message": "Чтобы привести размеры ваших изображений в соответствие с требованиями, загрузите их в [библиотеку файлов](https://codex.wordpress.org/Media_Library_Screen). Затем вставьте их на сайт прямо из библиотеки или используйте виджет изображений. Таким образом вы сможете обеспечить оптимальный размер изображений (в том числе для контрольных точек адаптивного дизайна). Старайтесь не использовать для изображения значение `Full Size` без особой необходимости. [Подробнее…](https://codex.wordpress.org/Inserting_Images_into_Posts_and_Pages#Image_Size)"
+  },
+  "stack-packs/packs/wordpress.js | uses_text_compression": {
+    "message": "Включить сжатие текста можно в настройках веб-сервера."
+  },
+  "stack-packs/packs/wordpress.js | uses_webp_images": {
+    "message": "Чтобы загружаемые изображения автоматически конвертировались в оптимальный формат, используйте специальный [плагин](https://wordpress.org/plugins/search/convert+webp/) или сервис."
+  }
+}
diff --git a/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/sk.json b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/sk.json
new file mode 100644
index 0000000..6b9d07c0
--- /dev/null
+++ b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/sk.json
@@ -0,0 +1,1541 @@
+{
+  "lighthouse-core/audits/accessibility/accesskeys.js | description": {
+    "message": "Prístupové klávesy umožňujú používateľom rýchlejšie vybrať časť stránky. Každý prístupový kláves musí byť jedinečný, aby navigácia správne fungovala. [Ďalšie informácie](https://web.dev/accesskeys/)"
+  },
+  "lighthouse-core/audits/accessibility/accesskeys.js | failureTitle": {
+    "message": "Hodnoty `[accesskey]` nie sú jedinečné"
+  },
+  "lighthouse-core/audits/accessibility/accesskeys.js | title": {
+    "message": "Počet jedinečných hodnôt: `[accesskey]`"
+  },
+  "lighthouse-core/audits/accessibility/aria-allowed-attr.js | description": {
+    "message": "Každá značka ARIA `role` podporuje konkrétnu podmnožinu atribútov `aria-*`. Ak ich pomiešate, znehodnotia sa atribúty `aria-*`. [Ďalšie informácie](https://web.dev/aria-allowed-attr/)"
+  },
+  "lighthouse-core/audits/accessibility/aria-allowed-attr.js | failureTitle": {
+    "message": "Atribúty `[aria-*]` nezodpovedajú svojim rolám"
+  },
+  "lighthouse-core/audits/accessibility/aria-allowed-attr.js | title": {
+    "message": "Atribúty `[aria-*]` zodpovedajú svojim rolám"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-attr.js | description": {
+    "message": "Niektoré roly ARIA majú povinné atribúty, ktoré čítačkám obrazovky opisujú stav prvku. [Ďalšie informácie](https://web.dev/aria-required-attr/)"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-attr.js | failureTitle": {
+    "message": "Roly `[role]` nemajú všetky požadované atribúty `[aria-*]`"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-attr.js | title": {
+    "message": "Roly `[role]` majú všetky požadované atribúty `[aria-*]`"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-children.js | description": {
+    "message": "Ak majú poskytovať správne funkcie dostupnosti, musia niektoré nadradené roly ARIA obsahovať určité podradené roly. [Ďalšie informácie](https://web.dev/aria-required-children/)"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-children.js | failureTitle": {
+    "message": "Chýbajú prvky s rolou `[role]`, ktoré vyžadujú konkrétne podradené roly `[role]`."
+  },
+  "lighthouse-core/audits/accessibility/aria-required-children.js | title": {
+    "message": "Prvky s rolou `[role]`, ktoré vyžadujú konkrétne podradené roly `[role]`, sú prítomné."
+  },
+  "lighthouse-core/audits/accessibility/aria-required-parent.js | description": {
+    "message": "Ak majú niektoré podradené roly ARIA poskytovať správne funkcie dostupnosti, musia byť obsiahnuté v konkrétnych nadradených rolách. [Ďalšie informácie](https://web.dev/aria-required-parent/)"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-parent.js | failureTitle": {
+    "message": "Roly `[role]` sa nenachádzajú v požadovanom nadradenom prvku"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-parent.js | title": {
+    "message": "Roly `[role]` sa nachádzajú v požadovanom nadradenom prvku"
+  },
+  "lighthouse-core/audits/accessibility/aria-roles.js | description": {
+    "message": "Ak majú roly ARIA vykonávať zamýšľané funkcie dostupnosti, musia mať platné hodnoty. [Ďalšie informácie](https://web.dev/aria-roles/)"
+  },
+  "lighthouse-core/audits/accessibility/aria-roles.js | failureTitle": {
+    "message": "Hodnoty `[role]` nie sú platné"
+  },
+  "lighthouse-core/audits/accessibility/aria-roles.js | title": {
+    "message": "Hodnoty `[role]` sú platné"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr-value.js | description": {
+    "message": "Asistenčné technológie, ako sú čítačky obrazovky, nedokážu interpretovať atribúty ARIA s neplatnými hodnotami. [Ďalšie informácie](https://web.dev/aria-valid-attr-value/)"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr-value.js | failureTitle": {
+    "message": "Atribúty `[aria-*]` nemajú platné hodnoty"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr-value.js | title": {
+    "message": "Atribúty `[aria-*]` majú platné hodnoty"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr.js | description": {
+    "message": "Asistenčné technológie, ako sú čítačky obrazovky, nedokážu interpretovať atribúty ARIA s neplatnými názvami. [Ďalšie informácie](https://web.dev/aria-valid-attr/)"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr.js | failureTitle": {
+    "message": "Atribúty `[aria-*]` nie sú platné ani neobsahujú preklepy"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr.js | title": {
+    "message": "Atribúty `[aria-*]` sú platné a neobsahujú preklepy"
+  },
+  "lighthouse-core/audits/accessibility/audio-caption.js | description": {
+    "message": "Titulky sprístupňujú nepočujúcim a sluchovo postihnutým používateľom zvukové prvky pomocou dôležitých informácií, napríklad údajov o tom, kto hovorí, čo hovorí a ďalších informácií nesúvisiacich s rečou. [Ďalšie informácie](https://web.dev/audio-caption/)"
+  },
+  "lighthouse-core/audits/accessibility/audio-caption.js | failureTitle": {
+    "message": "Prvkom `<audio>` chýba prvok `<track>` s titulkami `[kind=\"captions\"]`."
+  },
+  "lighthouse-core/audits/accessibility/audio-caption.js | title": {
+    "message": "Prvky `<audio>` obsahujú prvok `<track>` s titulkami `[kind=\"captions\"]`"
+  },
+  "lighthouse-core/audits/accessibility/axe-audit.js | failingElementsHeader": {
+    "message": "Prvky s chybami"
+  },
+  "lighthouse-core/audits/accessibility/button-name.js | description": {
+    "message": "Keď tlačidlo nemá dostupný názov, čítačky obrazovky ho oznamujú ako „tlačidlo“, takže je pre používateľov v podstate nanič. [Ďalšie informácie](https://web.dev/button-name/)"
+  },
+  "lighthouse-core/audits/accessibility/button-name.js | failureTitle": {
+    "message": "Tlačidlá nemajú dostupný názov"
+  },
+  "lighthouse-core/audits/accessibility/button-name.js | title": {
+    "message": "Tlačidlá majú dostupný názov"
+  },
+  "lighthouse-core/audits/accessibility/bypass.js | description": {
+    "message": "Keď pridáte možnosti, ako obísť opakujúci sa obsah, umožníte tým efektívnejšiu navigáciu na stránke pomocou klávesnice. [Ďalšie informácie](https://web.dev/bypass/)"
+  },
+  "lighthouse-core/audits/accessibility/bypass.js | failureTitle": {
+    "message": "Stránka neobsahuje hlavičku, odkaz na preskočenie či orientačný bod regióna."
+  },
+  "lighthouse-core/audits/accessibility/bypass.js | title": {
+    "message": "Stránka obsahuje hlavičku, odkaz na preskočenie alebo orientačný bod regiónu"
+  },
+  "lighthouse-core/audits/accessibility/color-contrast.js | description": {
+    "message": "Mnohí používatelia majú problémy s čítaním textu s nízkym kontrastom, prípadne to vôbec nedokážu. [Ďalšie informácie](https://web.dev/color-contrast/)"
+  },
+  "lighthouse-core/audits/accessibility/color-contrast.js | failureTitle": {
+    "message": "Farby pozadia a popredia nemajú dostatočný kontrastný pomer."
+  },
+  "lighthouse-core/audits/accessibility/color-contrast.js | title": {
+    "message": "Farby pozadia a popredia majú dostatočný kontrastný pomer"
+  },
+  "lighthouse-core/audits/accessibility/definition-list.js | description": {
+    "message": "Keď zoznamy definícií nie sú správne označené, čítačky obrazovky môžu generovať mätúci alebo nepresný výstup. [Ďalšie informácie](https://web.dev/definition-list/)"
+  },
+  "lighthouse-core/audits/accessibility/definition-list.js | failureTitle": {
+    "message": "`<dl>` neobsahuje iba správne usporiadané skupiny `<dt>` a `<dd>`, prvky `<script>` alebo `<template>`."
+  },
+  "lighthouse-core/audits/accessibility/definition-list.js | title": {
+    "message": "`<dl>` obsahuje iba správne usporiadané skupiny `<dt>` a `<dd>`, prvky `<script>` alebo `<template>`."
+  },
+  "lighthouse-core/audits/accessibility/dlitem.js | description": {
+    "message": "Položky zoznamu definícií (`<dt>` a `<dd>`) musia byť zabalené v nadradenom prvku `<dl>`, aby ich čítačky obrazovky dokázali správne oznamovať. [Ďalšie informácie](https://web.dev/dlitem/)"
+  },
+  "lighthouse-core/audits/accessibility/dlitem.js | failureTitle": {
+    "message": "Položky zoznamu definícií nie sú zabalené v prvkoch `<dl>`"
+  },
+  "lighthouse-core/audits/accessibility/dlitem.js | title": {
+    "message": "Položky zoznamu definícií sú zabalené v prvkoch `<dl>`"
+  },
+  "lighthouse-core/audits/accessibility/document-title.js | description": {
+    "message": "Názov poskytuje používateľom čítačiek obrazovky prehľadné informácie o stránke a používatelia vyhľadávačov sa podľa neho rozhodujú, či je stránka pre ich vyhľadávanie relevantná. [Ďalšie informácie](https://web.dev/document-title/)"
+  },
+  "lighthouse-core/audits/accessibility/document-title.js | failureTitle": {
+    "message": "Dokument nemá prvok `<title>`"
+  },
+  "lighthouse-core/audits/accessibility/document-title.js | title": {
+    "message": "Dokument má prvok `<title>`"
+  },
+  "lighthouse-core/audits/accessibility/duplicate-id.js | description": {
+    "message": "Hodnota atribútu ID musí byť jedinečná, aby asistenčné technológie neprehliadli ďalšie výskyty. [Ďalšie informácie](https://web.dev/duplicate-id/)"
+  },
+  "lighthouse-core/audits/accessibility/duplicate-id.js | failureTitle": {
+    "message": "Atribúty `[id]` na stránke nie sú jedinečné"
+  },
+  "lighthouse-core/audits/accessibility/duplicate-id.js | title": {
+    "message": "Atribúty `[id]` na stránke sú jedinečné"
+  },
+  "lighthouse-core/audits/accessibility/frame-title.js | description": {
+    "message": "Používatelia čítačiek obrazovky zistia obsah rámcov pomocou ich názvov. [Ďalšie informácie](https://web.dev/frame-title/)"
+  },
+  "lighthouse-core/audits/accessibility/frame-title.js | failureTitle": {
+    "message": "Prvky `<frame>` alebo `<iframe>` nemajú názov"
+  },
+  "lighthouse-core/audits/accessibility/frame-title.js | title": {
+    "message": "Prvok `<frame>` alebo `<iframe>` má názov"
+  },
+  "lighthouse-core/audits/accessibility/html-has-lang.js | description": {
+    "message": "Ak stránka neuvádza atribút lang, čítačka obrazovky predpokladá, že je v predvolenom jazyku vybranom používateľom pri nastavovaní čítačky obrazovky. Ak stránka v skutočnosti nie je v predvolenom jazyku, čítačka obrazovky nemusí jej text prečítať správne. [Ďalšie informácie](https://web.dev/html-has-lang/)"
+  },
+  "lighthouse-core/audits/accessibility/html-has-lang.js | failureTitle": {
+    "message": "Prvok `<html>` nemá atribút `[lang]`"
+  },
+  "lighthouse-core/audits/accessibility/html-has-lang.js | title": {
+    "message": "Prvok `<html>` má atribút `[lang]`"
+  },
+  "lighthouse-core/audits/accessibility/html-lang-valid.js | description": {
+    "message": "Ak je uvedený platný [jazyk BCP 47](https://www.w3.org/International/questions/qa-choosing-language-tags#question), čítačkám obrazovky to pomôže správne oznamovať text. [Ďalšie informácie](https://web.dev/html-lang-valid/)"
+  },
+  "lighthouse-core/audits/accessibility/html-lang-valid.js | failureTitle": {
+    "message": "Prvok `<html>` nemá platnú hodnotu pre atribút `[lang]`."
+  },
+  "lighthouse-core/audits/accessibility/html-lang-valid.js | title": {
+    "message": "Prvok `<html>` má platnú hodnotu pre svoj atribút `[lang]`"
+  },
+  "lighthouse-core/audits/accessibility/image-alt.js | description": {
+    "message": "Informatívne prvky by mali mať krátky popisný alternatívny text. Dekoratívne prvky je možné ignorovať pomocou prázdneho atribútu alt. [Ďalšie informácie](https://web.dev/image-alt/)"
+  },
+  "lighthouse-core/audits/accessibility/image-alt.js | failureTitle": {
+    "message": "Prvky obrázkov nemajú atribúty `[alt]`"
+  },
+  "lighthouse-core/audits/accessibility/image-alt.js | title": {
+    "message": "Prvky obrázka majú atribúty `[alt]`"
+  },
+  "lighthouse-core/audits/accessibility/input-image-alt.js | description": {
+    "message": "Keď je ako tlačidlo `<input>` použitý obrázok, uvedenie alternatívneho textu môže pomôcť používateľom čítačky obrazovky pochopiť účel tlačidla. [Ďalšie informácie](https://web.dev/input-image-alt/)"
+  },
+  "lighthouse-core/audits/accessibility/input-image-alt.js | failureTitle": {
+    "message": "Prvky `<input type=\"image\">` nemajú text `[alt]`"
+  },
+  "lighthouse-core/audits/accessibility/input-image-alt.js | title": {
+    "message": "Prvky `<input type=\"image\">` majú text `[alt]`"
+  },
+  "lighthouse-core/audits/accessibility/label.js | description": {
+    "message": "Štítky zaisťujú, aby asistenčné technológie (napríklad čítačky obrazovky) správne oznamovali ovládacie prvky formulárov. [Ďalšie informácie](https://web.dev/label/)"
+  },
+  "lighthouse-core/audits/accessibility/label.js | failureTitle": {
+    "message": "Prvky formulárov nemajú priradené štítky"
+  },
+  "lighthouse-core/audits/accessibility/label.js | title": {
+    "message": "K prvkom formulára sú priradené štítky"
+  },
+  "lighthouse-core/audits/accessibility/layout-table.js | description": {
+    "message": "Tabuľka používaná na vytvorenie rozloženia by nemala obsahovať údajové prvky, ako sú prvky th a caption, prípadne atribút summary, pretože by ste tým mohli zmiasť používateľov čítačiek obrazovky. [Ďalšie informácie](https://web.dev/layout-table/)"
+  },
+  "lighthouse-core/audits/accessibility/layout-table.js | failureTitle": {
+    "message": "Prezentačné prvky `<table>` nepoužívajú atribút `<th>`, `<caption>` alebo `[summary]`."
+  },
+  "lighthouse-core/audits/accessibility/layout-table.js | title": {
+    "message": "Prezentačné prvky `<table>` nepoužívajú atribút `<th>`, `<caption>` ani `[summary]`."
+  },
+  "lighthouse-core/audits/accessibility/link-name.js | description": {
+    "message": "Rozpoznateľný, jedinečný a zamerateľný text odkazu (a alternatívny text pre obrázky, ktoré sa používajú ako odkazy) zlepšuje navigáciu pomocou čítačky obrazovky. [Ďalšie informácie](https://web.dev/link-name/)"
+  },
+  "lighthouse-core/audits/accessibility/link-name.js | failureTitle": {
+    "message": "Odkazy nemajú rozpoznateľné názvy"
+  },
+  "lighthouse-core/audits/accessibility/link-name.js | title": {
+    "message": "Odkazy majú rozpoznateľné názvy"
+  },
+  "lighthouse-core/audits/accessibility/list.js | description": {
+    "message": "Čítačky obrazovky oznamujú zoznamy špeciálnym spôsobom. Použitím správnej štruktúry zoznamu pomôžete čítačkám obrazovky s výstupom. [Ďalšie informácie](https://web.dev/list/)"
+  },
+  "lighthouse-core/audits/accessibility/list.js | failureTitle": {
+    "message": "Zoznamy neobsahujú iba prvky `<li>` a prvky podporujúce skript (`<script>` a `<template>`)."
+  },
+  "lighthouse-core/audits/accessibility/list.js | title": {
+    "message": "Zoznamy obsahujú iba prvky `<li>` a prvky podporujúce skript (`<script>` a `<template>`)."
+  },
+  "lighthouse-core/audits/accessibility/listitem.js | description": {
+    "message": "Položky zoznamu (`<li>`) sa musia nachádzať v nadradenom prvku `<ul>` alebo `<ol>`, aby ich dokázali čítačky obrazovky správne oznámiť. [Ďalšie informácie](https://web.dev/listitem/)"
+  },
+  "lighthouse-core/audits/accessibility/listitem.js | failureTitle": {
+    "message": "Položky zoznamu (`<li>`) sa nenachádzajú v nadradených prvkoch `<ul>` ani `<ol>`"
+  },
+  "lighthouse-core/audits/accessibility/listitem.js | title": {
+    "message": "Položky zoznamu (`<li>`) sa nachádzajú v nadradených prvkoch `<ul>` alebo `<ol>`"
+  },
+  "lighthouse-core/audits/accessibility/meta-refresh.js | description": {
+    "message": "Používatelia neočakávajú, že sa stránka bude automaticky obnovovať. Pri automatickom obnovení sa zameranie vráti späť na začiatok stránky. Na používateľov to môže pôsobiť nepríjemne alebo mätúco. [Ďalšie informácie](https://web.dev/meta-refresh/)"
+  },
+  "lighthouse-core/audits/accessibility/meta-refresh.js | failureTitle": {
+    "message": "Dokument používa metaznačku `<meta http-equiv=\"refresh\">`"
+  },
+  "lighthouse-core/audits/accessibility/meta-refresh.js | title": {
+    "message": "Dokument nepoužíva `<meta http-equiv=\"refresh\">`"
+  },
+  "lighthouse-core/audits/accessibility/meta-viewport.js | description": {
+    "message": "Deaktivácia približovania spôsobuje problémy slabozrakým používateľom, ktorí pri čítaní obsahu webovej stránky využívajú priblíženie obrazovky. [Ďalšie informácie](https://web.dev/meta-viewport/)"
+  },
+  "lighthouse-core/audits/accessibility/meta-viewport.js | failureTitle": {
+    "message": "`[user-scalable=\"no\"]` sa nepoužíva v prvku `<meta name=\"viewport\">` alebo hodnota atribútu `[maximum-scale]` je nižšia ako 5."
+  },
+  "lighthouse-core/audits/accessibility/meta-viewport.js | title": {
+    "message": "`[user-scalable=\"no\"]` sa nepoužíva v prvku `<meta name=\"viewport\">` a atribút `[maximum-scale]` nie je menší ako 5."
+  },
+  "lighthouse-core/audits/accessibility/object-alt.js | description": {
+    "message": "Čítačky obrazovky nedokážu preložiť netextový obsah. Pridaním alternatívneho textu k prvkom `<object>` pomôžete čítačkám obrazovky sprostredkovať používateľom význam. [Ďalšie informácie](https://web.dev/object-alt/)"
+  },
+  "lighthouse-core/audits/accessibility/object-alt.js | failureTitle": {
+    "message": "Prvky `<object>` nemajú text `[alt]`"
+  },
+  "lighthouse-core/audits/accessibility/object-alt.js | title": {
+    "message": "Prvky `<object>` majú text `[alt]`"
+  },
+  "lighthouse-core/audits/accessibility/tabindex.js | description": {
+    "message": "Hodnota väčšia ako 0 označuje explicitné usporiadanie navigácie. Hoci je to technicky platné riešenie, často vedie k nepríjemným skúsenostiam používateľov, ktorí potrebujú asistenčné technológie. [Ďalšie informácie](https://web.dev/tabindex/)"
+  },
+  "lighthouse-core/audits/accessibility/tabindex.js | failureTitle": {
+    "message": "Niektoré prvky majú hodnotu `[tabindex]` vyššiu ako 0"
+  },
+  "lighthouse-core/audits/accessibility/tabindex.js | title": {
+    "message": "Žiadny prvok nemá hodnotu `[tabindex]` vyššiu ako 0"
+  },
+  "lighthouse-core/audits/accessibility/td-headers-attr.js | description": {
+    "message": "Čítačky obrazovky majú funkcie, ktoré zjednodušujú prehliadanie tabuliek. Keď zaistíte, aby bunky `<td>` s atribútom `[headers]` odkazovali iba na bunky v rovnakej tabuľke, môžete tým používateľom čítačiek obrazovky zjednodušiť prehliadanie. [Ďalšie informácie](https://web.dev/td-headers-attr/)"
+  },
+  "lighthouse-core/audits/accessibility/td-headers-attr.js | failureTitle": {
+    "message": "Bunky v prvku `<table>`, ktoré používajú atribút `[headers]`, odkazujú na ďalšie bunky v rovnakej tabuľke."
+  },
+  "lighthouse-core/audits/accessibility/td-headers-attr.js | title": {
+    "message": "Bunky v prvku `<table>`, ktoré používajú atribút `[headers]`, odkazujú iba na ďalšie bunky v rovnakej tabuľke."
+  },
+  "lighthouse-core/audits/accessibility/th-has-data-cells.js | description": {
+    "message": "Čítačky obrazovky majú funkcie, ktoré zjednodušujú prehliadanie tabuliek. Dojem používateľov čítačiek obrazovky môžete vylepšiť tým, že hlavičky tabuliek budú odkazovať na určitú skupinu buniek. [Ďalšie informácie](https://web.dev/th-has-data-cells/)"
+  },
+  "lighthouse-core/audits/accessibility/th-has-data-cells.js | failureTitle": {
+    "message": "Prvky `<th>` a prvky s rolou `[role=\"columnheader\"/\"rowheader\"]` nemajú bunky s údajmi, ktoré opisujú."
+  },
+  "lighthouse-core/audits/accessibility/th-has-data-cells.js | title": {
+    "message": "Prvky `<th>` a prvky s rolou `[role=\"columnheader\"/\"rowheader\"]` majú bunky s údajmi, ktoré opisujú."
+  },
+  "lighthouse-core/audits/accessibility/valid-lang.js | description": {
+    "message": "Ak je v prvkoch uvedený platný [jazyk BCP 47](https://www.w3.org/International/questions/qa-choosing-language-tags#question), pomôže to zaistiť, aby čítačky obrazovky čítali text správne. [Ďalšie informácie](https://web.dev/valid-lang/)"
+  },
+  "lighthouse-core/audits/accessibility/valid-lang.js | failureTitle": {
+    "message": "Atribúty `[lang]` nemajú platnú hodnotu"
+  },
+  "lighthouse-core/audits/accessibility/valid-lang.js | title": {
+    "message": "Atribúty `[lang]` majú platnú hodnotu"
+  },
+  "lighthouse-core/audits/accessibility/video-caption.js | description": {
+    "message": "Keď má video k dispozícii titulky, nepočujúci a sluchovo postihnutí používatelia jednoduchšie získajú informácie vo videu. [Ďalšie informácie](https://web.dev/video-caption/)"
+  },
+  "lighthouse-core/audits/accessibility/video-caption.js | failureTitle": {
+    "message": "Prvky `<video>` neobsahujú prvok `<track>` s titulkami `[kind=\"captions\"]`."
+  },
+  "lighthouse-core/audits/accessibility/video-caption.js | title": {
+    "message": "Prvky `<video>` obsahujú prvok `<track>` s titulkami `[kind=\"captions\"]`"
+  },
+  "lighthouse-core/audits/accessibility/video-description.js | description": {
+    "message": "Zvukové popisy pridávajú k videám relevantné informácie, napríklad o výrazoch tváre a scénach, ktoré dialógy neposkytujú. [Ďalšie informácie](https://web.dev/video-description/)"
+  },
+  "lighthouse-core/audits/accessibility/video-description.js | failureTitle": {
+    "message": "Prvky `<video>` neobsahujú prvok `<track>` s titulkami `[kind=\"description\"]`."
+  },
+  "lighthouse-core/audits/accessibility/video-description.js | title": {
+    "message": "Prvky `<video>` obsahujú prvok `<track>` s titulkami `[kind=\"description\"]`"
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | description": {
+    "message": "Ak chcete zaistiť ideálny vzhľad progresívnej webovej aplikácie v systéme iOS, keď si ju používateľ pridá na plochu, definujte vlastnosť `apple-touch-icon`. Musí odkazovať na nepriehľadný obrázok PNG s veľkosťou 192 × 192 px (alebo 180 × 180 px). [Ďalšie informácie](https://developers.google.com/web/fundamentals/design-and-ux/browser-customization/)"
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | failureTitle": {
+    "message": "Neposkytuje platnú ikonu `apple-touch-icon`"
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | precomposedWarning": {
+    "message": "Prvok `apple-touch-icon-precomposed` je zastaraný, preferuje sa `apple-touch-icon`."
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | title": {
+    "message": "Poskytuje platnú ikonu `apple-touch-icon`"
+  },
+  "lighthouse-core/audits/bootup-time.js | chromeExtensionsWarning": {
+    "message": "Rozšírenia pre Chrome negatívne ovplyvnili výkonnosť načítania tejto stránky. Skúste stránku skontrolovať v režime inkognito alebo profile Chrome bez rozšírení."
+  },
+  "lighthouse-core/audits/bootup-time.js | columnScriptEval": {
+    "message": "Hodnotenie skriptu"
+  },
+  "lighthouse-core/audits/bootup-time.js | columnScriptParse": {
+    "message": "Analýza skriptu"
+  },
+  "lighthouse-core/audits/bootup-time.js | columnTotal": {
+    "message": "Celkový čas využitia procesora"
+  },
+  "lighthouse-core/audits/bootup-time.js | description": {
+    "message": "Zvážte skrátenie času stráveného analýzou, zostavovaním a spustením JavaScriptu. Možno vám s tým pomôže zobrazovanie menších prenášaných dát JavaScriptu. [Ďalšie informácie](https://developers.google.com/web/tools/lighthouse/audits/bootup)"
+  },
+  "lighthouse-core/audits/bootup-time.js | failureTitle": {
+    "message": "Skráťte čas spustenia JavaScriptu"
+  },
+  "lighthouse-core/audits/bootup-time.js | title": {
+    "message": "Čas spustenia JavaScriptu"
+  },
+  "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | description": {
+    "message": "Veľké gify nie sú vhodné na zobrazovanie animovaného obsahu. Namiesto nich odporúčame použiť videá MPEG4/WebM pre animácie a PNG/WebP pre statické obrázky, aby ste ušetrili spotrebu bajtov v sieti. [Ďalšie informácie](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/replace-animated-gifs-with-video/)"
+  },
+  "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | title": {
+    "message": "Pre animovaný obsah použite formáty videa"
+  },
+  "lighthouse-core/audits/byte-efficiency/offscreen-images.js | description": {
+    "message": "Zvážte oneskorené načítanie obrázkov, ktoré sú mimo obrazovky alebo skryté, a to až po dokončení načítania všetkých podstatných zdrojov, čím skrátite čas do interaktívneho vykreslenia. [Ďalšie informácie](https://developers.google.com/web/tools/lighthouse/audits/offscreen-images)"
+  },
+  "lighthouse-core/audits/byte-efficiency/offscreen-images.js | title": {
+    "message": "Oddiaľte načítanie obrázkov mimo obrazovky"
+  },
+  "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | description": {
+    "message": "Zdroje blokujú prvé vykreslenie stránky. Zvážte zobrazovanie podstatných JavaScriptov alebo šablón CSS v texte a oddialenie všetkých nepodstatných JavaScriptov alebo štýlov. [Ďalšie informácie](https://developers.google.com/web/tools/lighthouse/audits/blocking-resources)"
+  },
+  "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | title": {
+    "message": "Odstráňte zdroje blokujúce vykreslenie"
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | description": {
+    "message": "Veľké sieťové prenosy dát stoja používateľov mnoho peňazí a často sú spájané s dlhými časmi načítania. [Ďalšie informácie](https://developers.google.com/web/tools/lighthouse/audits/network-payloads)"
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | displayValue": {
+    "message": "Celková veľkosť bola {totalBytes, number, bytes} KB"
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | failureTitle": {
+    "message": "Zabráňte nadmerným sieťovým prenosom dát"
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | title": {
+    "message": "Zabráni nadmerným sieťovým prenosom dát"
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-css.js | description": {
+    "message": "Minifikáciou súborov šablón CSS môžete znížiť veľkosti sieťových prenosov dát. [Ďalšie informácie](https://developers.google.com/web/tools/lighthouse/audits/minify-css)"
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-css.js | title": {
+    "message": "Minifikujte súbory CSS"
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | description": {
+    "message": "Minifikáciou súborov JavaScriptu môžete znížiť veľkosti prenášaných dát a čas analýzy skriptu. [Ďalšie informácie](https://developers.google.com/speed/docs/insights/MinifyResources)"
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | title": {
+    "message": "Minifikujte JavaScript"
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | description": {
+    "message": "Odstráňte nepoužívané pravidlá zo šablón štýlov a odložte načítavanie šablón CSS, ktoré sa nepoužívajú pre obsah nad záhybom stránky, čím znížite zbytočnú spotrebu bajtov sieťovou aktivitou. [Ďalšie informácie](https://developers.google.com/web/tools/lighthouse/audits/unused-css)"
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | title": {
+    "message": "Odstráňte nepoužívané šablóny CSS"
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-javascript.js | description": {
+    "message": "Odstráňte nepoužívaný JavaScript a znížte tak spotrebu bajtov sieťovou aktivitou."
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-javascript.js | title": {
+    "message": "Odstráňte nepoužívaný JavaScript"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | description": {
+    "message": "Dlhá životnosť vyrovnávacej pamäte môže zrýchliť opakované návštevy stránky. [Ďalšie informácie](https://developers.google.com/web/tools/lighthouse/audits/cache-policy)"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | displayValue": {
+    "message": "{itemCount,plural, =1{Našiel sa 1 zdroj}few{Našli sa # zdroje}many{# resources found}other{Našlo sa # zdrojov}}"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | failureTitle": {
+    "message": "Zobrazujte statické podklady s účinnými pravidlami ukladania do vyrovnávacej pamäte"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | title": {
+    "message": "Používa účinné pravidlá ukladania do vyrovnávacej pamäte pre statické podklady"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | description": {
+    "message": "Optimalizované obrázky sa načítavajú rýchlejšie a spotrebúvajú menej mobilných dát. [Ďalšie informácie](https://developers.google.com/web/tools/lighthouse/audits/optimize-images)"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | title": {
+    "message": "Účinne zakódujte obrázky"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | description": {
+    "message": "Zobrazujte obrázky s primeranou veľkosťou, čím ušetríte mobilné dáta a skrátite čas načítania. [Ďalšie informácie](https://developers.google.com/web/tools/lighthouse/audits/oversized-images)"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | title": {
+    "message": "Nastavte primeranú veľkosť obrázkov"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | description": {
+    "message": "Textové zdroje by sa mali zobrazovať komprimované (gzip, deflate alebo brotli), aby sa minimalizovala celková spotreba bajtov v sieti. [Ďalšie informácie](https://developers.google.com/web/tools/lighthouse/audits/text-compression)"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | title": {
+    "message": "Povoľte kompresiu textu"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | description": {
+    "message": "Formáty obrázka, napríklad JPEG 2000, JPEG XR a WebP, zvyčajne poskytujú lepšiu kompresiu než PNG alebo JPEG, čo znamená rýchlejšie sťahovanie a nižšiu spotrebu dát. [Ďalšie informácie](https://developers.google.com/web/tools/lighthouse/audits/webp)"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | title": {
+    "message": "Zobrazujte obrázky vo formátoch ďalšej generácie"
+  },
+  "lighthouse-core/audits/content-width.js | description": {
+    "message": "Ak šírka obsahu vašej aplikácie nezodpovedá šírke oblasti zobrazenia, aplikácia nemusí byť optimalizovaná pre obrazovky mobilných zariadení. [Ďalšie informácie](https://developers.google.com/web/tools/lighthouse/audits/content-sized-correctly-for-viewport)"
+  },
+  "lighthouse-core/audits/content-width.js | explanation": {
+    "message": "Veľkosť oblasti zobrazenia {innerWidth} px nezodpovedá veľkosti okna {outerWidth} px."
+  },
+  "lighthouse-core/audits/content-width.js | failureTitle": {
+    "message": "Obsah nemá správnu veľkosť pre oblasť zobrazenia"
+  },
+  "lighthouse-core/audits/content-width.js | title": {
+    "message": "Obsah má správnu veľkosť pre oblasť zobrazenia"
+  },
+  "lighthouse-core/audits/critical-request-chains.js | description": {
+    "message": "Reťazce podstatných žiadostí uvedené nižšie znázorňujú, ktoré zdroje sú načítané s vysokou prioritou. Zvážte skrátenie dĺžky reťazcov, aby ste znížili veľkosť sťahovaných zdrojov, alebo odložte sťahovanie nepotrebných zdrojov, čím zlepšíte načítanie stránky. [Ďalšie informácie](https://developers.google.com/web/tools/lighthouse/audits/critical-request-chains)"
+  },
+  "lighthouse-core/audits/critical-request-chains.js | displayValue": {
+    "message": "{itemCount,plural, =1{Našiel sa 1 reťazec}few{Našli sa # reťazce}many{# chains found}other{Našlo sa # reťazcov}}"
+  },
+  "lighthouse-core/audits/critical-request-chains.js | title": {
+    "message": "Minimalizujte hĺbku podstatných žiadostí"
+  },
+  "lighthouse-core/audits/deprecations.js | columnDeprecate": {
+    "message": "Ukončenie podpory / upozornenie"
+  },
+  "lighthouse-core/audits/deprecations.js | columnLine": {
+    "message": "Riadok"
+  },
+  "lighthouse-core/audits/deprecations.js | description": {
+    "message": "Rozhrania API s ukončenou podporou budú nakoniec z prehliadača odstránené. [Ďalšie informácie](https://web.dev/deprecations)"
+  },
+  "lighthouse-core/audits/deprecations.js | displayValue": {
+    "message": "{itemCount,plural, =1{Zistilo sa 1 upozornenie}few{Zistili sa # upozornenia}many{# warnings found}other{Zistilo sa # upozornení}}"
+  },
+  "lighthouse-core/audits/deprecations.js | failureTitle": {
+    "message": "Používa rozhrania API s ukončenou podporou"
+  },
+  "lighthouse-core/audits/deprecations.js | title": {
+    "message": "Nepoužíva rozhrania API s ukončenou podporou"
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | description": {
+    "message": "Podpora vyrovnávacej pamäte aplikácie je ukončená. [Ďalšie informácie](https://web.dev/appcache-manifest)"
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | displayValue": {
+    "message": "Našiel sa prvok {AppCacheManifest}"
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | failureTitle": {
+    "message": "Používa vyrovnávaciu pamäť aplikácie"
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | title": {
+    "message": "Nepoužíva vyrovnávaciu pamäť aplikácie"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | description": {
+    "message": "Špecifikáciou typu dokumentu zabránite prechodu prehliadača do režimu kompatibility. [Ďalšie informácie](https://web.dev/doctype)"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationBadDoctype": {
+    "message": "Názov prvku doctype musí byť reťazec `html` s malými písmenami"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationNoDoctype": {
+    "message": "Dokument musí obsahovať prvok doctype"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationPublicId": {
+    "message": "Očakávalo sa, že publicId bude prázdny reťazec"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationSystemId": {
+    "message": "Očakávalo sa, že systemId bude prázdny reťazec"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | failureTitle": {
+    "message": "Stránke chýba prvok HTML doctype, preto spúšťa režim kompatibility"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | title": {
+    "message": "Stránka obsahuje prvok HTML doctype"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | columnElement": {
+    "message": "Prvok"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | columnStatistic": {
+    "message": "Štatistika"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | columnValue": {
+    "message": "Hodnota"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | description": {
+    "message": "Programátori prehliadača odporúčajú, aby stránky obsahovali menej ako ~1 500 prvkov DOM. Optimálna hodnota je hĺbka stromovej štruktúry menšia ako 32 prvkov a menej ako 60 podradených či nadradených prvkov. Veľký prvok DOM môže zvýšiť spotrebu pamäte, predĺžiť [výpočty štýlov](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations) a spôsobiť nákladné [preformátovania rozložení](https://developers.google.com/speed/articles/reflow). [Ďalšie informácie](https://web.dev/dom-size)"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 prvok}few{# prvky}many{# elements}other{# prvkov}}"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | failureTitle": {
+    "message": "Nepoužívajte nadmerne veľký prvok DOM"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | statisticDOMDepth": {
+    "message": "Maximálna hĺbka prvku DOM"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | statisticDOMElements": {
+    "message": "Celkový počet prvkov DOM"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | statisticDOMWidth": {
+    "message": "Maximálny počet podradených prvkov"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | title": {
+    "message": "Zabráni použitiu nadmerne veľkého prvku DOM"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | columnRel": {
+    "message": "Rel"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | columnTarget": {
+    "message": "Cieľ"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | description": {
+    "message": "Ak chcete zlepšiť výkonnosť a zabrániť chybám zabezpečenia, pridajte k ľubovoľným externým odkazom prvok `rel=\"noopener\"` alebo `rel=\"noreferrer\"`. [Ďalšie informácie](https://web.dev/external-anchors-use-rel-noopener)"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | failureTitle": {
+    "message": "Odkazy na destinácie typu cross origin nie sú bezpečné"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | title": {
+    "message": "Odkazy na destinácie typu cross origin sú bezpečné"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | warning": {
+    "message": "Nepodarilo sa zistiť cieľ ukotvenia ({anchorHTML}). Ak sa nepoužíva ako hypertextový odkaz, zvážte odstránenie prvku target=_blank."
+  },
+  "lighthouse-core/audits/dobetterweb/geolocation-on-start.js | description": {
+    "message": "Používatelia nedôverujú webom, ktoré požadujú ich polohu bez kontextu, alebo ich považujú za mätúce. Zvážte namiesto toho spojenie žiadosti s akciou používateľa. [Ďalšie informácie](https://web.dev/geolocation-on-start)"
+  },
+  "lighthouse-core/audits/dobetterweb/geolocation-on-start.js | failureTitle": {
+    "message": "Požaduje povolenie na geolokáciu pri načítaní stránky"
+  },
+  "lighthouse-core/audits/dobetterweb/geolocation-on-start.js | title": {
+    "message": "Nepožaduje povolenie na geolokáciu pri načítaní stránky"
+  },
+  "lighthouse-core/audits/dobetterweb/js-libraries.js | columnVersion": {
+    "message": "Verzia"
+  },
+  "lighthouse-core/audits/dobetterweb/js-libraries.js | description": {
+    "message": "Na stránke boli zistené všetky JavaScriptové knižnice klientskeho rozhrania. [Ďalšie informácie](https://web.dev/js-libraries)"
+  },
+  "lighthouse-core/audits/dobetterweb/js-libraries.js | title": {
+    "message": "Zistené knižnice JavaScriptu"
+  },
+  "lighthouse-core/audits/dobetterweb/no-document-write.js | description": {
+    "message": "V prípade používateľov s pomalým pripojením môžu externé skripty, ktoré sú dynamicky vložené prostredníctvom funkcie `document.write()`, oneskoriť načítavanie stránky o desiatky sekúnd. [Ďalšie informácie](https://web.dev/no-document-write)"
+  },
+  "lighthouse-core/audits/dobetterweb/no-document-write.js | failureTitle": {
+    "message": "Používa `document.write()`"
+  },
+  "lighthouse-core/audits/dobetterweb/no-document-write.js | title": {
+    "message": "Nepoužíva `document.write()`"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | columnSeverity": {
+    "message": "Najzávažnejšie"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | columnVersion": {
+    "message": "Verzia knižnice"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | columnVuln": {
+    "message": "Počet chýb zabezpečenia"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | description": {
+    "message": "Niektoré skripty tretích strán môžu obsahovať chyby zabezpečenia, ktoré dokážu útočníci ľahko rozpoznať a zneužiť. [Ďalšie informácie](https://web.dev/no-vulnerable-libraries)"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | displayValue": {
+    "message": "{itemCount,plural, =1{Bola zistená 1 chyba zabezpečenia}few{Boli zistené # chyby zabezpečenia}many{# vulnerabilities detected}other{Bolo zistených # chýb zabezpečenia}}"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | failureTitle": {
+    "message": "Zahrnuje JavaScriptové knižnice v klientskom rozhraní so známymi chybami zabezpečenia"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | rowSeverityHigh": {
+    "message": "Vysoká"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | rowSeverityLow": {
+    "message": "Nízka"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | rowSeverityMedium": {
+    "message": "Stredné"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | title": {
+    "message": "Nepoužíva v klientskom rozhraní knižnice JavaScriptov so známymi chybami zabezpečenia"
+  },
+  "lighthouse-core/audits/dobetterweb/notification-on-start.js | description": {
+    "message": "Používatelia nedôverujú webom, ktoré požadujú odosielanie upozornení bez kontextu, alebo ich považujú za mätúce. Zvážte namiesto toho spojenie žiadosti s gestami používateľa. [Ďalšie informácie](https://web.dev/notification-on-start)"
+  },
+  "lighthouse-core/audits/dobetterweb/notification-on-start.js | failureTitle": {
+    "message": "Požaduje povolenie na upozornenie pri načítaní stránky"
+  },
+  "lighthouse-core/audits/dobetterweb/notification-on-start.js | title": {
+    "message": "Nepožaduje povolenie na upozornenie pri načítaní stránky"
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | columnFailingElem": {
+    "message": "Prvky s chybami"
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | description": {
+    "message": "Ak zakážete prilepovanie hesiel, zhoršíte kvalitu zabezpečenia. [Ďalšie informácie](https://web.dev/password-inputs-can-be-pasted-into)"
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | failureTitle": {
+    "message": "Zabráňte používateľom prilepovať do polí pre heslá"
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | title": {
+    "message": "Umožnite používateľom prilepovať do polí pre heslá"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | columnProtocol": {
+    "message": "Protokol"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | description": {
+    "message": "HTTP/2 ponúka oproti HTTP/1.1 mnoho výhod vrátane binárnych hlavičiek, multiplexovania a technológie push na strane servera. [Ďalšie informácie](https://web.dev/uses-http2)"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 žiadosť nebola odoslaná cez HTTP/2}few{# žiadosti neboli odoslané cez HTTP/2}many{# requests not served via HTTP/2}other{# žiadostí nebolo odoslaných cez HTTP/2}}"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | failureTitle": {
+    "message": "Nepoužíva HTTP/2 pre všetky svoje zdroje"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | title": {
+    "message": "Používa HTTP/2 pre svoje vlastné zdroje"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-passive-event-listeners.js | description": {
+    "message": "Odporúčame zmeniť prijímače udalostí aktivovaných dotykom alebo kolieskom myši na `passive`, čím zlepšíte výkonnosť posúvania stránky. [Ďalšie informácie](https://web.dev/uses-passive-event-listeners)"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-passive-event-listeners.js | failureTitle": {
+    "message": "Nepoužíva pasívne prijímače na zlepšenie posúvania"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-passive-event-listeners.js | title": {
+    "message": "Používa pasívne prijímače na zlepšenie posúvania"
+  },
+  "lighthouse-core/audits/errors-in-console.js | columnDesc": {
+    "message": "Popis"
+  },
+  "lighthouse-core/audits/errors-in-console.js | description": {
+    "message": "Chyby zapísané do denníka konzoly označujú nevyriešené problémy. Môžu pochádzať zo zlyhaní žiadostí siete a ďalších problémov prehliadača. [Ďalšie informácie](https://web.dev/errors-in-console)"
+  },
+  "lighthouse-core/audits/errors-in-console.js | failureTitle": {
+    "message": "Chyby prehliadača boli zaznamenané do konzoly"
+  },
+  "lighthouse-core/audits/errors-in-console.js | title": {
+    "message": "Do konzoly neboli zaznamenané žiadne chyby prehliadača"
+  },
+  "lighthouse-core/audits/font-display.js | description": {
+    "message": "Využite funkciu CSS zobrazenia písma, ktorá pomôže zaistiť, aby používatelia videli text počas načítavania webfontov. [Ďalšie informácie](https://developers.google.com/web/updates/2016/02/font-display)"
+  },
+  "lighthouse-core/audits/font-display.js | failureTitle": {
+    "message": "Zaistite, aby text zostal počas načítania webfontov viditeľný"
+  },
+  "lighthouse-core/audits/font-display.js | title": {
+    "message": "Všetok text zostane počas načítania webfontov viditeľný"
+  },
+  "lighthouse-core/audits/font-display.js | undeclaredFontURLWarning": {
+    "message": "Nástroj Lighthouse nedokázal automaticky skontrolovať hodnotu zobrazenia písma na nasledujúcej webovej adrese: {fontURL}."
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | columnActual": {
+    "message": "Pomer strán (skutočný)"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | columnDisplayed": {
+    "message": "Pomer strán (zobrazený)"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | description": {
+    "message": "Rozmery zobrazenia obrázka by mali zodpovedať prirodzenému pomeru strán. [Ďalšie informácie](https://web.dev/image-aspect-ratio)"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | failureTitle": {
+    "message": "Zobrazuje obrázky s nesprávnym pomerom strán"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | title": {
+    "message": "Zobrazuje obrázky so správnym pomerom strán"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | warningCompute": {
+    "message": "Neplatné informácie o veľkosti obrázka {url}"
+  },
+  "lighthouse-core/audits/installable-manifest.js | description": {
+    "message": "Prehliadače môžu proaktívne vyzývať používateľov, aby si pridali vašu aplikáciu na plochu, čo môže viesť k ich lepšiemu zapojeniu. [Ďalšie informácie](https://developers.google.com/web/tools/lighthouse/audits/install-prompt)"
+  },
+  "lighthouse-core/audits/installable-manifest.js | failureTitle": {
+    "message": "Manifest webovej aplikácie nespĺňa požiadavky na inštaláciu"
+  },
+  "lighthouse-core/audits/installable-manifest.js | title": {
+    "message": "Manifest webovej aplikácie spĺňa požiadavky na inštaláciu"
+  },
+  "lighthouse-core/audits/is-on-https.js | columnInsecureURL": {
+    "message": "Nezabezpečená webová adresa"
+  },
+  "lighthouse-core/audits/is-on-https.js | description": {
+    "message": "Všetky weby by mali byť zabezpečené protokolom HTTPS, dokonca aj tie, ktoré nespracúvajú citlivé údaje. HTTPS bráni útočníkom narušovať komunikáciu medzi vašou aplikáciou a používateľmi alebo ju pasívne odpočúvať, a je podmienkou pre HTTP/2 a mnoho nových rozhraní API webových platforiem. [Ďalšie informácie](https://web.dev/is-on-https)"
+  },
+  "lighthouse-core/audits/is-on-https.js | displayValue": {
+    "message": "{itemCount,plural, =1{Bola zistená 1 nezabezpečená žiadosť}few{Boli zistené # nezabezpečené žiadosti}many{# insecure requests found}other{Bolo zistených # nezabezpečených žiadostí}}"
+  },
+  "lighthouse-core/audits/is-on-https.js | failureTitle": {
+    "message": "Nepoužíva HTTPS"
+  },
+  "lighthouse-core/audits/is-on-https.js | title": {
+    "message": "Používa HTTPS"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | description": {
+    "message": "Rýchle načítanie stránky cez mobilnú sieť zaisťuje dobrý dojem používateľov mobilných zariadení. [Ďalšie informácie](https://developers.google.com/web/tools/lighthouse/audits/fast-3g)"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | displayValueText": {
+    "message": "Interaktívna po {timeInMs, number, seconds} s"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | displayValueTextWithOverride": {
+    "message": "Interaktívna v simulovanej mobilnej sieti v čase {timeInMs, number, seconds} s"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | explanationLoadSlow": {
+    "message": "Vaša stránka sa načítava príliš pomaly a nie je interaktívna do desiatich sekúnd. Prezrite si príležitosti a diagnostiku v sekcii Výkonnosť a zistite, ako ju zlepšiť."
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | failureTitle": {
+    "message": "Načítanie stránky nie je dostatočne rýchle v mobilných sieťach"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | title": {
+    "message": "Načítanie stránky je dostatočne rýchle v mobilných sieťach"
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | columnCategory": {
+    "message": "Kategória"
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | description": {
+    "message": "Zvážte skrátenie času stráveného analýzou, zostavovaním a spustením JavaScriptu. Možno vám s tým pomôže zobrazovanie menších prenášaných dát JavaScriptu."
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | failureTitle": {
+    "message": "Minimalizujte prácu hlavného vlákna"
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | title": {
+    "message": "Minimalizuje prácu hlavného vlákna"
+  },
+  "lighthouse-core/audits/manual/pwa-cross-browser.js | description": {
+    "message": "Ak chcete osloviť maximálny počet používateľov, weby by mali fungovať vo všetkých hlavných prehliadačoch. [Ďalšie informácie](https://developers.google.com/web/progressive-web-apps/checklist#site-works-cross-browser)"
+  },
+  "lighthouse-core/audits/manual/pwa-cross-browser.js | title": {
+    "message": "Web funguje v rôznych prehliadačoch"
+  },
+  "lighthouse-core/audits/manual/pwa-each-page-has-url.js | description": {
+    "message": "Zaistite, aby jednotlivé stránky podporovali priame odkazovanie prostredníctvom webovej adresy a aby dané webové adresy boli jedinečné na účely zdieľania v sociálnych médiách. [Ďalšie informácie](https://developers.google.com/web/progressive-web-apps/checklist#each-page-has-a-url)"
+  },
+  "lighthouse-core/audits/manual/pwa-each-page-has-url.js | title": {
+    "message": "Každá stránka má webovú adresu"
+  },
+  "lighthouse-core/audits/manual/pwa-page-transitions.js | description": {
+    "message": "Prechody by pri klepaní mali pôsobiť plynulo, dokonca aj v pomalej sieti, pretože ide o kľúčový faktor ovplyvňujúci vnímanú výkonnosť. [Ďalšie informácie](https://developers.google.com/web/progressive-web-apps/checklist#page-transitions-dont-feel-like-they-block-on-the-network)"
+  },
+  "lighthouse-core/audits/manual/pwa-page-transitions.js | title": {
+    "message": "Prechody stránok zrejme nie sú blokované sieťou"
+  },
+  "lighthouse-core/audits/metrics/estimated-input-latency.js | description": {
+    "message": "Odhadovaná latencia vstupu je odhadovaný čas odozvy na vstup používateľa v milisekundách počas najrušnejších 5 sekúnd načítania stránky. Ak latencia prevyšuje 50 ms, používateľom sa môžu zdať odozvy aplikácie oneskorené. [Ďalšie informácie](https://developers.google.com/web/tools/lighthouse/audits/estimated-input-latency)"
+  },
+  "lighthouse-core/audits/metrics/estimated-input-latency.js | title": {
+    "message": "Odhadovaná latencia vstupu"
+  },
+  "lighthouse-core/audits/metrics/first-contentful-paint.js | description": {
+    "message": "Prvé vykreslenie obsahu označuje čas, za ktorý je vykreslený prvý text alebo obrázok. [Ďalšie informácie](https://developers.google.com/web/tools/lighthouse/audits/first-contentful-paint)"
+  },
+  "lighthouse-core/audits/metrics/first-contentful-paint.js | title": {
+    "message": "Prvé obsahové vyfarbenie"
+  },
+  "lighthouse-core/audits/metrics/first-cpu-idle.js | description": {
+    "message": "Prvá nečinnosť procesora označuje, kedy je hlavné vlákno stránky prvýkrát dostatočne nečinné na spracovanie vstupu. [Ďalšie informácie](https://developers.google.com/web/tools/lighthouse/audits/first-interactive)"
+  },
+  "lighthouse-core/audits/metrics/first-cpu-idle.js | title": {
+    "message": "Prvá nečinnosť procesora"
+  },
+  "lighthouse-core/audits/metrics/first-meaningful-paint.js | description": {
+    "message": "Prvé zmysluplné vykreslenie meria, kedy je hlavný obsah stránky viditeľný. [Ďalšie informácie](https://developers.google.com/web/tools/lighthouse/audits/first-meaningful-paint)"
+  },
+  "lighthouse-core/audits/metrics/first-meaningful-paint.js | title": {
+    "message": "Prvé účelné vyfarbenie"
+  },
+  "lighthouse-core/audits/metrics/interactive.js | description": {
+    "message": "Čas do interaktivity je údaj o tom, koľko času prejde, kým bude stránka plne interaktívna. [Ďalšie informácie](https://developers.google.com/web/tools/lighthouse/audits/consistently-interactive)"
+  },
+  "lighthouse-core/audits/metrics/interactive.js | title": {
+    "message": "Čas do interaktívneho vykreslenia"
+  },
+  "lighthouse-core/audits/metrics/max-potential-fid.js | description": {
+    "message": "Maximálne potenciálne oneskorenie prvého vstupu, ktoré sa u vašich používateľov môže vyskytnúť, je trvanie najdlhšej úlohy (v milisekundách). [Ďalšie informácie](https://developers.google.com/web/updates/2018/05/first-input-delay)"
+  },
+  "lighthouse-core/audits/metrics/max-potential-fid.js | title": {
+    "message": "Max. potenc. oneskorenie prvého vstupu"
+  },
+  "lighthouse-core/audits/metrics/speed-index.js | description": {
+    "message": "Index rýchlosti znázorňuje, za aký čas sa viditeľne doplní obsah stránky. [Ďalšie informácie](https://developers.google.com/web/tools/lighthouse/audits/speed-index)"
+  },
+  "lighthouse-core/audits/metrics/speed-index.js | title": {
+    "message": "Index rýchlosti"
+  },
+  "lighthouse-core/audits/metrics/total-blocking-time.js | description": {
+    "message": "Súčet všetkých časových období medzi prvým vykreslením obsahu a časom do interaktivity, kedy dĺžka úlohy presiahla 50 ms (vyjadrený v milisekundách)."
+  },
+  "lighthouse-core/audits/metrics/total-blocking-time.js | title": {
+    "message": "Celkový čas blokovania"
+  },
+  "lighthouse-core/audits/network-rtt.js | description": {
+    "message": "Časy vrátenia žiadostí v rámci siete majú veľký vplyv na výkonnosť. Ak je čas vrátenia žiadostí v rámci siete k pôvodnému zdroju vysoký, znamená to, že servery umiestnené bližšie k používateľovi by mohli zlepšiť výkonnosť. [Ďalšie informácie](https://hpbn.co/primer-on-latency-and-bandwidth/)"
+  },
+  "lighthouse-core/audits/network-rtt.js | title": {
+    "message": "Časy vrátania žiadostí v rámci siete"
+  },
+  "lighthouse-core/audits/network-server-latency.js | description": {
+    "message": "Výkonnosť webu môžu ovplyvniť latencie servera. Ak je latencia zdrojového servera vysoká, znamená to, že je preťažený alebo má slabú výkonnosť. [Ďalšie informácie](https://hpbn.co/primer-on-web-performance/#analyzing-the-resource-waterfall)"
+  },
+  "lighthouse-core/audits/network-server-latency.js | title": {
+    "message": "Latencie na strane servera"
+  },
+  "lighthouse-core/audits/offline-start-url.js | description": {
+    "message": "Obsluha umožňuje vašej webovej aplikácii spoľahlivo fungovať za nepredvídateľných podmienok siete. [Ďalšie informácie](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)"
+  },
+  "lighthouse-core/audits/offline-start-url.js | failureTitle": {
+    "message": "`start_url` nereaguje kódom 200, keď je offline"
+  },
+  "lighthouse-core/audits/offline-start-url.js | title": {
+    "message": "`start_url` reaguje kódom 200, keď je offline"
+  },
+  "lighthouse-core/audits/offline-start-url.js | warningCantStart": {
+    "message": "Nástroju Lighthouse sa nepodarilo prečítať vlastnosť `start_url` z manifestu. Na základe toho sa za webovú adresu dokumentu považuje `start_url`. Chybové hlásenie: {manifestWarning}."
+  },
+  "lighthouse-core/audits/performance-budget.js | columnOverBudget": {
+    "message": "Cez rozpočet"
+  },
+  "lighthouse-core/audits/performance-budget.js | description": {
+    "message": "Udržujte množstvo a veľkosť žiadostí siete pod cieľovými hodnotami stanovenými poskytnutým rozpočtom výkonnosti. [Ďalšie informácie](https://developers.google.com/web/tools/lighthouse/audits/budgets)"
+  },
+  "lighthouse-core/audits/performance-budget.js | requestCountOverBudget": {
+    "message": "{count,plural, =1{1 žiadosť}few{# žiadosti}many{# requests}other{# žiadostí}}"
+  },
+  "lighthouse-core/audits/performance-budget.js | title": {
+    "message": "Rozpočet výkonnosti"
+  },
+  "lighthouse-core/audits/redirects-http.js | description": {
+    "message": "Ak ste už nastavili HTTPS, zaistite presmerovanie všetkej návštevnosti cez HTTP na HTTPS a poskytnite tak funkcie zabezpečeného webu všetkým používateľom. [Ďalšie informácie](https://developers.google.com/web/tools/lighthouse/audits/http-redirects-to-https)"
+  },
+  "lighthouse-core/audits/redirects-http.js | failureTitle": {
+    "message": "Nepresmerúva návštevnosť cez HTTP na HTTPS"
+  },
+  "lighthouse-core/audits/redirects-http.js | title": {
+    "message": "Presmerúva návštevnosť cez HTTP na HTTPS"
+  },
+  "lighthouse-core/audits/redirects.js | description": {
+    "message": "Presmerovania spôsobujú ďalšie oneskorenia pri načítavaní stránky. [Ďalšie informácie](https://developers.google.com/web/tools/lighthouse/audits/redirects)"
+  },
+  "lighthouse-core/audits/redirects.js | title": {
+    "message": "Vyhnite sa viacnásobným presmerovaniam stránky"
+  },
+  "lighthouse-core/audits/resource-summary.js | description": {
+    "message": "Ak chcete nastaviť rozpočty pre množstvo a veľkosť zdrojov stránky, pridajte súbor budget.json. [Ďalšie informácie](https://developers.google.com/web/tools/lighthouse/audits/budgets)"
+  },
+  "lighthouse-core/audits/resource-summary.js | displayValue": {
+    "message": "{requestCount,plural, =1{1 žiadosť • {byteCount, number, bytes} kB}few{# žiadosti • {byteCount, number, bytes} kB}many{# requests • {byteCount, number, bytes} KB}other{# žiadostí • {byteCount, number, bytes} kB}}"
+  },
+  "lighthouse-core/audits/resource-summary.js | title": {
+    "message": "Udržiavajte nízke počty žiadostí a malé veľkosti prenosov"
+  },
+  "lighthouse-core/audits/seo/canonical.js | description": {
+    "message": "Kanonické odkazy navrhujú, ktorá webová adresa by sa mala zobraziť vo výsledkoch vyhľadávania. [Ďalšie informácie](https://web.dev/canonical)"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationConflict": {
+    "message": "Viacero kolidujúcich webových adries ({urlList})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationDifferentDomain": {
+    "message": "Odkazuje na inú doménu ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationInvalid": {
+    "message": "Neplatná webová adresa ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationPointsElsewhere": {
+    "message": "Odkazuje na iné umiestnenie `hreflang` ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationRelative": {
+    "message": "Relatívna webová adresa ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationRoot": {
+    "message": "Odkazuje na koreňovú webovú adresu domény (domovskú stránku), a nie na ekvivalentnú stránku s obsahom"
+  },
+  "lighthouse-core/audits/seo/canonical.js | failureTitle": {
+    "message": "Dokument nemá platný odkaz `rel=canonical`"
+  },
+  "lighthouse-core/audits/seo/canonical.js | title": {
+    "message": "Dokument má platný odkaz `rel=canonical`"
+  },
+  "lighthouse-core/audits/seo/font-size.js | description": {
+    "message": "Veľkosti písma menšie ako 12 px sú príliš malé na to, aby boli čitateľné, a nútia používateľov mobilných zariadení, aby si ich priblížili stiahnutím prstov. Zaistite, aby viac ako 60 % textu na stránke malo veľkosť ≥ 12 px. [Ďalšie informácie](https://web.dev/font-size)"
+  },
+  "lighthouse-core/audits/seo/font-size.js | displayValue": {
+    "message": "{decimalProportion, number, extendedPercent} čitateľného textu"
+  },
+  "lighthouse-core/audits/seo/font-size.js | explanationViewport": {
+    "message": "Text nie je čitateľný, pretože neexistuje žiadna metaznačka oblasti zobrazenia optimalizovaná pre mobilné obrazovky."
+  },
+  "lighthouse-core/audits/seo/font-size.js | explanationWithDisclaimer": {
+    "message": "Určitá časť textu ({decimalProportion, number, extendedPercent}) je príliš malá (na základe vzorky {decimalProportionVisited, number, extendedPercent})."
+  },
+  "lighthouse-core/audits/seo/font-size.js | failureTitle": {
+    "message": "Dokument nepoužíva čitateľné veľkosti písma"
+  },
+  "lighthouse-core/audits/seo/font-size.js | title": {
+    "message": "Dokument používa čitateľné veľkosti písma"
+  },
+  "lighthouse-core/audits/seo/hreflang.js | description": {
+    "message": "Odkazy hreflang informujú vyhľadávače, akú verziu stránky by mali uviesť vo výsledkoch vyhľadávania pre daný jazyk alebo oblasť. [Ďalšie informácie](https://web.dev/hreflang)"
+  },
+  "lighthouse-core/audits/seo/hreflang.js | failureTitle": {
+    "message": "Dokument nemá platný atribút `hreflang`"
+  },
+  "lighthouse-core/audits/seo/hreflang.js | title": {
+    "message": "Dokument má platný odkaz `hreflang`"
+  },
+  "lighthouse-core/audits/seo/http-status-code.js | description": {
+    "message": "Stránky s neúspešnými stavovými kódmi HTTP sa nemusia správne indexovať. [Ďalšie informácie](https://web.dev/http-status-code)"
+  },
+  "lighthouse-core/audits/seo/http-status-code.js | failureTitle": {
+    "message": "Stránka má neúspešný stavový kód HTTP"
+  },
+  "lighthouse-core/audits/seo/http-status-code.js | title": {
+    "message": "Stránka má úspešný stavový kód HTTP"
+  },
+  "lighthouse-core/audits/seo/is-crawlable.js | description": {
+    "message": "Ak nemajú vyhľadávače povolenie prehľadávať vaše stránky, nemôžu ich zahrnúť do výsledkov vyhľadávania. [Ďalšie informácie](https://web.dev/is-crawable)"
+  },
+  "lighthouse-core/audits/seo/is-crawlable.js | failureTitle": {
+    "message": "Stránka má blokované indexovanie"
+  },
+  "lighthouse-core/audits/seo/is-crawlable.js | title": {
+    "message": "Stránka nemá blokované indexovanie"
+  },
+  "lighthouse-core/audits/seo/link-text.js | description": {
+    "message": "Popisný text odkazu pomáha vyhľadávačom pochopiť váš obsah. [Ďalšie informácie](https://web.dev/link-text)"
+  },
+  "lighthouse-core/audits/seo/link-text.js | displayValue": {
+    "message": "{itemCount,plural, =1{Našiel sa 1 odkaz}few{Našli sa # odkazy}many{# links found}other{Našlo sa # odkazov}}"
+  },
+  "lighthouse-core/audits/seo/link-text.js | failureTitle": {
+    "message": "Odkazy nemajú popisný text"
+  },
+  "lighthouse-core/audits/seo/link-text.js | title": {
+    "message": "Odkazy majú popisný text"
+  },
+  "lighthouse-core/audits/seo/manual/structured-data.js | description": {
+    "message": "Spustite [tester štruktúrovaných dát](https://search.google.com/structured-data/testing-tool/) a nástroj [Structured Data Linter](http://linter.structured-data.org/) na overenie štruktúrovaných dát. [Ďalšie informácie](https://web.dev/structured-data)"
+  },
+  "lighthouse-core/audits/seo/manual/structured-data.js | title": {
+    "message": "Štruktúrované dáta sú platné"
+  },
+  "lighthouse-core/audits/seo/meta-description.js | description": {
+    "message": "Vo výsledkoch vyhľadávania môžu byť zahrnuté metapopisy, ktoré stručne zhrnú obsah stránky. [Ďalšie informácie](https://web.dev/meta-description)"
+  },
+  "lighthouse-core/audits/seo/meta-description.js | explanation": {
+    "message": "Text popisu chýba."
+  },
+  "lighthouse-core/audits/seo/meta-description.js | failureTitle": {
+    "message": "Dokument nemá metapopis"
+  },
+  "lighthouse-core/audits/seo/meta-description.js | title": {
+    "message": "Dokument má metapopis"
+  },
+  "lighthouse-core/audits/seo/plugins.js | description": {
+    "message": "Vyhľadávače nemôžu indexovať obsah doplnkov a mnoho zariadení obmedzuje doplnky alebo ich nepodporuje. [Ďalšie informácie](https://web.dev/plugins)"
+  },
+  "lighthouse-core/audits/seo/plugins.js | failureTitle": {
+    "message": "Dokument používa doplnky"
+  },
+  "lighthouse-core/audits/seo/plugins.js | title": {
+    "message": "Dokument nepoužíva doplnky"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | description": {
+    "message": "Ak máte chybný súbor robots.txt, prehľadávače nemusia pochopiť, akým spôsobom majú váš web prehľadávať alebo indexovať. [Ďalšie informácie](https://web.dev/robots-txt)"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | displayValueHttpBadCode": {
+    "message": "Žiadosť o súbor robots.txt vrátila stav HTTP: {statusCode}"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | displayValueValidationError": {
+    "message": "{itemCount,plural, =1{Našla sa 1 chyba}few{Našli sa # chyby}many{# errors found}other{Našlo sa # chýb}}"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | explanation": {
+    "message": "Nástroj Lighthouse nedokázal stiahnuť súbor robots.txt"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | failureTitle": {
+    "message": "Súbor robots.txt nie je platný"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | title": {
+    "message": "Súbor robots.txt je platný"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | description": {
+    "message": "Interaktívne prvky, ako sú tlačidlá a odkazy, by mali byť dostatočne veľké (48 × 48 px) a mať okolo seba dostatočné voľné miesto, aby sa na ne dalo ľahko klepnúť a neprekrývali ďalšie prvky. [Ďalšie informácie](https://web.dev/tap-targets)"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | displayValue": {
+    "message": "{decimalProportion, number, percent} cieľových oblastí s vhodnou veľkosťou"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | explanationViewportMetaNotOptimized": {
+    "message": "Cieľové oblasti klepnutia sú príliš malé, pretože neexistuje žiadna metaznačka oblasti zobrazenia optimalizovaná pre mobilné obrazovky"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | failureTitle": {
+    "message": "Cieľové oblasti klepnutia nemajú vhodnú veľkosť"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | overlappingTargetHeader": {
+    "message": "Prekrývajúce sa cieľové oblasti"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | tapTargetHeader": {
+    "message": "Cieľová oblasť klepnutia"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | title": {
+    "message": "Cieľové oblasti klepnutia majú vhodnú veľkosť"
+  },
+  "lighthouse-core/audits/service-worker.js | description": {
+    "message": "Obsluha je technológia, ktorá umožňuje vašej aplikácii používať mnoho funkcií progresívnej webovej aplikácie, napríklad offline režim, pridanie na plochu a upozornenia aplikácie. [Ďalšie informácie](https://developers.google.com/web/tools/lighthouse/audits/registered-service-worker)"
+  },
+  "lighthouse-core/audits/service-worker.js | explanationBadManifest": {
+    "message": "Túto stránku ovláda obsluha, ale nenašla sa vlastnosť `start_url`, pretože sa nepodarilo analyzovať manifest ako platný súbor JSON"
+  },
+  "lighthouse-core/audits/service-worker.js | explanationBadStartUrl": {
+    "message": "Túto stránku ovláda obsluha, ale hodnota `start_url` ({startUrl}) sa nenachádza v rozsahu obsluhy ({scopeUrl})"
+  },
+  "lighthouse-core/audits/service-worker.js | explanationNoManifest": {
+    "message": "Túto stránku ovláda obsluha, ale nenašla sa vlastnosť `start_url`, pretože sa nepodarilo načítať manifest."
+  },
+  "lighthouse-core/audits/service-worker.js | explanationOutOfScope": {
+    "message": "Zdroj obsahuje jednu alebo viac obslúh, avšak stránka ({pageUrl}) nie je v rozsahu."
+  },
+  "lighthouse-core/audits/service-worker.js | failureTitle": {
+    "message": "Nemá zaregistrovanú obsluhu, ktorá ovláda stránku a vlastnosť `start_url`"
+  },
+  "lighthouse-core/audits/service-worker.js | title": {
+    "message": "Má zaregistrovanú obsluhu, ktorá ovláda stránku a vlastnosť `start_url`"
+  },
+  "lighthouse-core/audits/splash-screen.js | description": {
+    "message": "Úvodná obrazovka s motívom zaistí skvelý dojem používateľa, keď si spustí vašu aplikáciu z plochy. [Ďalšie informácie](https://developers.google.com/web/tools/lighthouse/audits/custom-splash-screen)"
+  },
+  "lighthouse-core/audits/splash-screen.js | failureTitle": {
+    "message": "Nie je nakonfigurovaný pre vlastnú úvodnú obrazovku"
+  },
+  "lighthouse-core/audits/splash-screen.js | title": {
+    "message": "Nakonfigurované pre vlastnú úvodnú obrazovku"
+  },
+  "lighthouse-core/audits/themed-omnibox.js | description": {
+    "message": "Panel s adresou prehliadača je možné upraviť motívom, aby zodpovedal vášmu webu. [Ďalšie informácie](https://developers.google.com/web/tools/lighthouse/audits/address-bar)"
+  },
+  "lighthouse-core/audits/themed-omnibox.js | failureTitle": {
+    "message": "Nenastavuje farbu motívu pre panel s adresou."
+  },
+  "lighthouse-core/audits/themed-omnibox.js | title": {
+    "message": "Nastavuje farbu motívu pre panel s adresou."
+  },
+  "lighthouse-core/audits/third-party-summary.js | columnBlockingTime": {
+    "message": "Čas blokovania hlavného vlákna"
+  },
+  "lighthouse-core/audits/third-party-summary.js | columnThirdParty": {
+    "message": "Tretia strana"
+  },
+  "lighthouse-core/audits/third-party-summary.js | description": {
+    "message": "Kód tretích strán môže výrazne ovplyvniť výkonnosť načítavania. Obmedzte počet nadbytočných poskytovateľov tretích strán a skúste načítavať kód tretích strán po dokončení načítavania stránky. [Ďalšie informácie](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/loading-third-party-javascript/)"
+  },
+  "lighthouse-core/audits/third-party-summary.js | displayValue": {
+    "message": "Hlavné vlákno bolo {timeInMs, number, milliseconds} ms zablokované kódom tretej strany"
+  },
+  "lighthouse-core/audits/third-party-summary.js | failureTitle": {
+    "message": "Zníženie vplyvu kódu tretích strán"
+  },
+  "lighthouse-core/audits/third-party-summary.js | title": {
+    "message": "Používanie tretími stranami"
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | description": {
+    "message": "Čas do prvého bajtu určuje čas, za ktorý váš server odošle odpoveď. [Ďalšie informácie](https://developers.google.com/web/tools/lighthouse/audits/ttfb)"
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | displayValue": {
+    "message": "Hlavný dokument trval {timeInMs, number, milliseconds} ms"
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | failureTitle": {
+    "message": "Znížte časy odpovede servera (TTFB)"
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | title": {
+    "message": "Časy odozvy servera sú krátke (TTFB)"
+  },
+  "lighthouse-core/audits/user-timings.js | columnDuration": {
+    "message": "Trvanie"
+  },
+  "lighthouse-core/audits/user-timings.js | columnStartTime": {
+    "message": "Čas začatia"
+  },
+  "lighthouse-core/audits/user-timings.js | columnType": {
+    "message": "Typ"
+  },
+  "lighthouse-core/audits/user-timings.js | description": {
+    "message": "Odporúčame do aplikácie implementovať rozhranie User Timing API, ktoré umožňuje odmerať jej skutočnú výkonnosť počas udalostí kľúčových pre dojem používateľov. [Ďalšie informácie](https://developers.google.com/web/tools/lighthouse/audits/user-timing)"
+  },
+  "lighthouse-core/audits/user-timings.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 trvanie aktivít používateľov}few{# trvania aktivít používateľov}many{# user timings}other{# trvaní aktivít používateľov}}"
+  },
+  "lighthouse-core/audits/user-timings.js | title": {
+    "message": "Značky a merania trvania aktivít používateľov"
+  },
+  "lighthouse-core/audits/uses-rel-preconnect.js | crossoriginWarning": {
+    "message": "Pre atribút {securityOrigin} sa našiel odkaz predpripojenia <link>, prehliadač ho však nepoužil. Skontrolujte, či atribút `crossorigin` používate správne."
+  },
+  "lighthouse-core/audits/uses-rel-preconnect.js | description": {
+    "message": "Zvážte pridanie indikátorov zdrojov `preconnect` a `dns-prefetch`, ktoré vám pomôžu zriadiť predbežné pripojenia k dôležitým zdrojom tretích strán. [Ďalšie informácie](https://developers.google.com/web/fundamentals/performance/resource-prioritization#preconnect)"
+  },
+  "lighthouse-core/audits/uses-rel-preconnect.js | title": {
+    "message": "Nastavte predbežné pripojenie k požadovaným zdrojom"
+  },
+  "lighthouse-core/audits/uses-rel-preload.js | crossoriginWarning": {
+    "message": "Pre atribút {preloadURL} sa našiel odkaz <link> prednačítania, prehliadač ho však nepoužil. Skontrolujte, či atribút `crossorigin` používate správne."
+  },
+  "lighthouse-core/audits/uses-rel-preload.js | description": {
+    "message": "Zvážte použitie funkcie `<link rel=preload>`, čím uprednostníte načítanie zdrojov momentálne požadovaných v neskoršej fáze načítania stránky. [Ďalšie informácie](https://developers.google.com/web/tools/lighthouse/audits/preload)"
+  },
+  "lighthouse-core/audits/uses-rel-preload.js | title": {
+    "message": "Predbežne načítavajte kľúčové žiadosti"
+  },
+  "lighthouse-core/audits/viewport.js | description": {
+    "message": "Ak chcete optimalizovať svoju aplikáciu pre obrazovky mobilných zariadení, pridajte značku `<meta name=\"viewport\">`. [Ďalšie informácie](https://developers.google.com/web/tools/lighthouse/audits/has-viewport-meta-tag)"
+  },
+  "lighthouse-core/audits/viewport.js | explanationNoTag": {
+    "message": "Nenašla sa žiadna značka `<meta name=\"viewport\">`"
+  },
+  "lighthouse-core/audits/viewport.js | failureTitle": {
+    "message": "Nemá značku `<meta name=\"viewport\">` s vlastnosťou `width` alebo `initial-scale`"
+  },
+  "lighthouse-core/audits/viewport.js | title": {
+    "message": "Obsahuje značku `<meta name=\"viewport\">` s vlastnosťou `width` alebo `initial-scale`"
+  },
+  "lighthouse-core/audits/without-javascript.js | description": {
+    "message": "Vaša aplikácia by mala zobrazovať nejaký obsah, keď je zakázaný JavaScript, aj keby malo ísť iba o upozornenie používateľa, že na používanie aplikácie sa vyžaduje JavaScript. [Ďalšie informácie](https://developers.google.com/web/tools/lighthouse/audits/no-js)"
+  },
+  "lighthouse-core/audits/without-javascript.js | explanation": {
+    "message": "Telo stránky by malo vykresliť nejaký obsah, ak jej skripty nie sú k dispozícii."
+  },
+  "lighthouse-core/audits/without-javascript.js | failureTitle": {
+    "message": "Neposkytuje záložný obsah, keď nie je k dispozícii JavaScript"
+  },
+  "lighthouse-core/audits/without-javascript.js | title": {
+    "message": "Obsahuje určitý obsah, keď nie je k dispozícii JavaScript"
+  },
+  "lighthouse-core/audits/works-offline.js | description": {
+    "message": "Ak vytvárate progresívnu webovú aplikáciu, zvážte použitie obsluhy, aby aplikácia mohla fungovať offline. [Ďalšie informácie](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)"
+  },
+  "lighthouse-core/audits/works-offline.js | failureTitle": {
+    "message": "Aktuálna stránka nereaguje kódom 200, keď je offline"
+  },
+  "lighthouse-core/audits/works-offline.js | title": {
+    "message": "Aktuálna stránka reaguje kódom 200, keď je offline"
+  },
+  "lighthouse-core/audits/works-offline.js | warningNoLoad": {
+    "message": "Táto stránka sa nemusí načítavať offline, pretože testovacia webová adresa ({requested}) bola presmerovaná na {final}. Skúste priamo otestovať druhú webovú adresu."
+  },
+  "lighthouse-core/config/default-config.js | a11yAriaGroupDescription": {
+    "message": "Toto sú možnosti zlepšenia technológie ARIA vo vašej aplikácii, čo môže pomôcť používateľom asistenčných technológií (napr. čítačiek obrazovky)."
+  },
+  "lighthouse-core/config/default-config.js | a11yAriaGroupTitle": {
+    "message": "ARIA"
+  },
+  "lighthouse-core/config/default-config.js | a11yAudioVideoGroupDescription": {
+    "message": "Toto sú možnosti na poskytnutie alternatívneho obsahu pre zvuk a video. Môže to zlepšiť dojem používateľov so slabým sluchom alebo zrakom."
+  },
+  "lighthouse-core/config/default-config.js | a11yAudioVideoGroupTitle": {
+    "message": "Zvuk a video"
+  },
+  "lighthouse-core/config/default-config.js | a11yBestPracticesGroupDescription": {
+    "message": "Tieto položky zvýrazňujú bežné osvedčené postupy týkajúce sa dostupnosti."
+  },
+  "lighthouse-core/config/default-config.js | a11yBestPracticesGroupTitle": {
+    "message": "Osvedčené postupy"
+  },
+  "lighthouse-core/config/default-config.js | a11yCategoryDescription": {
+    "message": "Tieto kontroly zvýrazňujú možnosti [zlepšenia dostupnosti vašej webovej aplikácie](https://developers.google.com/web/fundamentals/accessibility). Automaticky je možné zistiť iba podmnožinu problémov s dostupnosťou, preto sa odporúča ručné testovanie."
+  },
+  "lighthouse-core/config/default-config.js | a11yCategoryManualDescription": {
+    "message": "Tieto položky sa zaoberajú oblasťami, ktoré automatické testovanie nemôže obsiahnuť. Ďalšie informácie získate v [sprievodcovi vykonávaním kontroly dostupnosti](https://developers.google.com/web/fundamentals/accessibility/how-to-review)."
+  },
+  "lighthouse-core/config/default-config.js | a11yCategoryTitle": {
+    "message": "Dostupnosť"
+  },
+  "lighthouse-core/config/default-config.js | a11yColorContrastGroupDescription": {
+    "message": "Toto sú možnosti vylepšenia čitateľnosti obsahu."
+  },
+  "lighthouse-core/config/default-config.js | a11yColorContrastGroupTitle": {
+    "message": "Kontrast"
+  },
+  "lighthouse-core/config/default-config.js | a11yLanguageGroupDescription": {
+    "message": "Toto sú možnosti zlepšenia interpretácie vášho obsahu používateľmi rôznych jazykov."
+  },
+  "lighthouse-core/config/default-config.js | a11yLanguageGroupTitle": {
+    "message": "Internacionalizácia a lokalizácia"
+  },
+  "lighthouse-core/config/default-config.js | a11yNamesLabelsGroupDescription": {
+    "message": "Toto sú možnosti vylepšenia sémantiky ovládacích prvkov vašej aplikácie. Môže to pomôcť používateľom asistenčných technológií, ako sú čítačky obrazovky."
+  },
+  "lighthouse-core/config/default-config.js | a11yNamesLabelsGroupTitle": {
+    "message": "Názvy a štítky"
+  },
+  "lighthouse-core/config/default-config.js | a11yNavigationGroupDescription": {
+    "message": "Toto sú možnosti zlepšenia prechádzania vašej aplikácie pomocou klávesnice."
+  },
+  "lighthouse-core/config/default-config.js | a11yNavigationGroupTitle": {
+    "message": "Navigácia"
+  },
+  "lighthouse-core/config/default-config.js | a11yTablesListsVideoGroupDescription": {
+    "message": "Toto sú možnosti na zlepšenie dojmu z čítania údajov v tabuľke alebo zozname pomocou asistenčných technológií, ako je čítačka obrazovky."
+  },
+  "lighthouse-core/config/default-config.js | a11yTablesListsVideoGroupTitle": {
+    "message": "Tabuľky a zoznamy"
+  },
+  "lighthouse-core/config/default-config.js | bestPracticesCategoryTitle": {
+    "message": "Osvedčené postupy"
+  },
+  "lighthouse-core/config/default-config.js | budgetsGroupDescription": {
+    "message": "Rozpočty výkonnosti sú štandardy výkonnosti vášho webu."
+  },
+  "lighthouse-core/config/default-config.js | budgetsGroupTitle": {
+    "message": "Rozpočty"
+  },
+  "lighthouse-core/config/default-config.js | diagnosticsGroupDescription": {
+    "message": "Ďalšie informácie o výkonnosti vašej aplikácie. Tieto hodnoty [priamo ovplyvňujú](https://github.com/GoogleChrome/lighthouse/blob/d2ec9ffbb21de9ad1a0f86ed24575eda32c796f0/docs/scoring.md#how-are-the-scores-weighted) skóre výkonnosti."
+  },
+  "lighthouse-core/config/default-config.js | diagnosticsGroupTitle": {
+    "message": "Diagnostika"
+  },
+  "lighthouse-core/config/default-config.js | firstPaintImprovementsGroupDescription": {
+    "message": "Najpodstatnejší aspekt výkonnosti je čas, za ktorý sa pixely vykreslia na obrazovke. Kľúčové metriky: Prvé obsahové vyfarbenie, Prvé účelné vyfarbenie."
+  },
+  "lighthouse-core/config/default-config.js | firstPaintImprovementsGroupTitle": {
+    "message": "Vylepšenia prvého vyfarbenia"
+  },
+  "lighthouse-core/config/default-config.js | loadOpportunitiesGroupDescription": {
+    "message": "Tieto návrhy môžu pomôcť s rýchlejším načítavaním vašej stránky. [Neovplyvňujú priamo](https://github.com/GoogleChrome/lighthouse/blob/d2ec9ffbb21de9ad1a0f86ed24575eda32c796f0/docs/scoring.md#how-are-the-scores-weighted) skóre výkonnosti."
+  },
+  "lighthouse-core/config/default-config.js | loadOpportunitiesGroupTitle": {
+    "message": "Príležitosti"
+  },
+  "lighthouse-core/config/default-config.js | metricGroupTitle": {
+    "message": "Metriky"
+  },
+  "lighthouse-core/config/default-config.js | overallImprovementsGroupDescription": {
+    "message": "Vylepšite celkové načítavanie, aby bola stránka čo najskôr responzívna a pripravená na použitie. Kľúčové metriky: Čas do interaktívneho vykreslenia, Index rýchlosti"
+  },
+  "lighthouse-core/config/default-config.js | overallImprovementsGroupTitle": {
+    "message": "Celkové vylepšenia"
+  },
+  "lighthouse-core/config/default-config.js | performanceCategoryTitle": {
+    "message": "Výkonnosť"
+  },
+  "lighthouse-core/config/default-config.js | pwaCategoryDescription": {
+    "message": "Tieto kontroly overujú aspekty progresívnej webovej aplikácie. [Ďalšie informácie](https://developers.google.com/web/progressive-web-apps/checklist)"
+  },
+  "lighthouse-core/config/default-config.js | pwaCategoryManualDescription": {
+    "message": "Tieto kontroly vyžaduje základný [kontrolný zoznam PWA](https://developers.google.com/web/progressive-web-apps/checklist), ale Lighthouse ich automaticky nevykonáva. Nemajú vplyv na vaše skóre, ale je dôležité, aby ste ich overili ručne."
+  },
+  "lighthouse-core/config/default-config.js | pwaCategoryTitle": {
+    "message": "Progresívna webová aplikácia"
+  },
+  "lighthouse-core/config/default-config.js | pwaFastReliableGroupTitle": {
+    "message": "Rýchle a spoľahlivé"
+  },
+  "lighthouse-core/config/default-config.js | pwaInstallableGroupTitle": {
+    "message": "Inštalovateľné"
+  },
+  "lighthouse-core/config/default-config.js | pwaOptimizedGroupTitle": {
+    "message": "Optimalizované pre PWA"
+  },
+  "lighthouse-core/config/default-config.js | seoCategoryDescription": {
+    "message": "Tieto kontroly zaisťujú, že vaša stránka je optimalizovaná pre hodnotenie výsledkov vyhľadávačov. Existujú ďalšie faktory, ktoré Lighthouse nekontroluje a ktoré by mohli ovplyvniť vaše hodnotenie v rámci vyhľadávania. [Ďalšie informácie](https://support.google.com/webmasters/answer/35769)"
+  },
+  "lighthouse-core/config/default-config.js | seoCategoryManualDescription": {
+    "message": "Ak chcete skontrolovať ďalšie osvedčené postupy SEO, spusťte na svojom webe tieto ďalšie nástroje na overenie."
+  },
+  "lighthouse-core/config/default-config.js | seoCategoryTitle": {
+    "message": "SEO"
+  },
+  "lighthouse-core/config/default-config.js | seoContentGroupDescription": {
+    "message": "Naformátujte kód HTML svojej aplikácie spôsobom, ktorý umožní prehľadávačom lepšie pochopiť jej obsah."
+  },
+  "lighthouse-core/config/default-config.js | seoContentGroupTitle": {
+    "message": "Osvedčené postupy pre obsah"
+  },
+  "lighthouse-core/config/default-config.js | seoCrawlingGroupDescription": {
+    "message": "Prehľadávače potrebujú prístup k vašej aplikácii, aby sa mohla zobraziť vo výsledkoch vyhľadávania."
+  },
+  "lighthouse-core/config/default-config.js | seoCrawlingGroupTitle": {
+    "message": "Prehľadávanie a indexovanie"
+  },
+  "lighthouse-core/config/default-config.js | seoMobileGroupDescription": {
+    "message": "Upravte svoje stránky pre mobilné zariadenia, aby používatelia pri čítaní ich obsahu nemuseli sťahovať prsty ani približovať. [Ďalšie informácie](https://developers.google.com/search/mobile-sites/)"
+  },
+  "lighthouse-core/config/default-config.js | seoMobileGroupTitle": {
+    "message": "Vhodné pre mobilné zariadenia"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnCacheTTL": {
+    "message": "TTL vyrovnávacej pamäte"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnLocation": {
+    "message": "Umiestnenie"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnName": {
+    "message": "Názov"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnRequests": {
+    "message": "Žiadosti"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnResourceType": {
+    "message": "Typ zdroja"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnSize": {
+    "message": "Veľkosť"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnTimeSpent": {
+    "message": "Strávený čas"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnTransferSize": {
+    "message": "Veľkosť prenosu"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnURL": {
+    "message": "Webová adresa"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnWastedBytes": {
+    "message": "Potenciálna úspora"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnWastedMs": {
+    "message": "Potenciálna úspora"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | displayValueByteSavings": {
+    "message": "Potenciálna úspora: {wastedBytes, number, bytes} kB"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | displayValueMsSavings": {
+    "message": "Potenciálna úspora: {wastedMs, number, milliseconds} ms"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | documentResourceType": {
+    "message": "Dokument"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | fontResourceType": {
+    "message": "Písmo"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | imageResourceType": {
+    "message": "Obrázok"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | mediaResourceType": {
+    "message": "Médiá"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | ms": {
+    "message": "{timeInMs, number, milliseconds} ms"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | otherResourceType": {
+    "message": "Iné"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | scriptResourceType": {
+    "message": "Skript"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | seconds": {
+    "message": "{timeInMs, number, seconds} s"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | stylesheetResourceType": {
+    "message": "Šablóna štýlu"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | thirdPartyResourceType": {
+    "message": "Tretia strana"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | totalResourceType": {
+    "message": "Celkovo"
+  },
+  "lighthouse-core/lib/lh-error.js | badTraceRecording": {
+    "message": "Pri zaznamenávaní stopy načítania stránky sa vyskytol problém. Znova spustite Lighthouse. ({errorCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | criTimeout": {
+    "message": "Časový limit čaká na počiatočné pripojenie protokolu ladiaceho nástroja."
+  },
+  "lighthouse-core/lib/lh-error.js | didntCollectScreenshots": {
+    "message": "Chrome počas načítavania stránky nevytvoril žiadne snímky obrazovky. Skontrolujte, či je na stránke viditeľný obsah, a potom skúste znova spustiť Lighthouse. ({errorCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | dnsFailure": {
+    "message": "Servery DNS nedokázali rozpoznať poskytnutú doménu."
+  },
+  "lighthouse-core/lib/lh-error.js | erroredRequiredArtifact": {
+    "message": "V súvislosti s požadovaným zberačom {artifactName} sa vyskytla chyba: {errorMessage}"
+  },
+  "lighthouse-core/lib/lh-error.js | internalChromeError": {
+    "message": "Vyskytla sa interná chyba Chromu. Reštartujte Chrome a skúste nástroj Lighthouse spustiť znova."
+  },
+  "lighthouse-core/lib/lh-error.js | missingRequiredArtifact": {
+    "message": "Požadovaný zberač {artifactName} nebol spustený."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailed": {
+    "message": "Nástroj Lighthouse nedokázal spoľahlivo načítať požadovanú stránku. Skontrolujte, či testujete správnu webovú adresu a či server správne odpovedá na všetky žiadosti."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedHung": {
+    "message": "Nástroj Lighthouse nedokázal spoľahlivo načítať webovú adresu, pretože stránka prestala reagovať."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedInsecure": {
+    "message": "Poskytnutá webová adresa nemá platný bezpečnostný certifikát. {securityMessages}"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedInterstitial": {
+    "message": "Chrome zabránil načítaniu stránky s intersticiálnou reklamou. Skontrolujte, či testujete správnu webovú adresu a server správne reaguje na všetky žiadosti."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedWithDetails": {
+    "message": "Nástroj Lighthouse nedokázal spoľahlivo načítať požadovanú stránku. Skontrolujte, či testujete správnu webovú adresu a server správne reaguje na všetky žiadosti. (Podrobnosti: {errorDetails})"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedWithStatusCode": {
+    "message": "Nástroj Lighthouse nedokázal spoľahlivo načítať požadovanú stránku. Skontrolujte, či testujete správnu webovú adresu a server správne reaguje na všetky žiadosti. (Kód stavu: {statusCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadTookTooLong": {
+    "message": "Načítanie stránky trvalo príliš dlho. Riaďte sa príležitosťami v prehľade a skráťte tak načítavanie stránky. Potom skúste Lighthouse znova spustiť. ({errorCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | protocolTimeout": {
+    "message": "Čakanie na odpoveď protokolu DevTools presiahlo pridelený čas. (Metóda: {protocolMethod})"
+  },
+  "lighthouse-core/lib/lh-error.js | requestContentTimeout": {
+    "message": "Pri načítaní obsahu zdroja bol prekročený pridelený čas"
+  },
+  "lighthouse-core/lib/lh-error.js | urlInvalid": {
+    "message": "Poskytnutá webová adresa je zrejme neplatná."
+  },
+  "lighthouse-core/report/html/renderer/util.js | auditGroupExpandTooltip": {
+    "message": "Zobraziť kontroly"
+  },
+  "lighthouse-core/report/html/renderer/util.js | crcInitialNavigation": {
+    "message": "Počiatočná navigácia"
+  },
+  "lighthouse-core/report/html/renderer/util.js | crcLongestDurationLabel": {
+    "message": "Maximálna latencia cesty dôležitých žiadostí:"
+  },
+  "lighthouse-core/report/html/renderer/util.js | errorLabel": {
+    "message": "Chyba!"
+  },
+  "lighthouse-core/report/html/renderer/util.js | errorMissingAuditInfo": {
+    "message": "Nahlásenie chyby: žiadne informácie o kontrole"
+  },
+  "lighthouse-core/report/html/renderer/util.js | labDataTitle": {
+    "message": "Údaje laboratória"
+  },
+  "lighthouse-core/report/html/renderer/util.js | lsPerformanceCategoryDescription": {
+    "message": "Analýza aktuálnej stránky v emulovanej mobilnej sieti nástrojom [Lighthouse](https://developers.google.com/web/tools/lighthouse/). Hodnoty sú odhady, ktoré sa môžu líšiť."
+  },
+  "lighthouse-core/report/html/renderer/util.js | manualAuditsGroupTitle": {
+    "message": "Ďalšie položky na manuálnu kontrolu"
+  },
+  "lighthouse-core/report/html/renderer/util.js | notApplicableAuditsGroupTitle": {
+    "message": "Nehodí sa"
+  },
+  "lighthouse-core/report/html/renderer/util.js | opportunityResourceColumnLabel": {
+    "message": "Príležitosti"
+  },
+  "lighthouse-core/report/html/renderer/util.js | opportunitySavingsColumnLabel": {
+    "message": "Odhadovaná úspora"
+  },
+  "lighthouse-core/report/html/renderer/util.js | passedAuditsGroupTitle": {
+    "message": "Absolvované kontroly"
+  },
+  "lighthouse-core/report/html/renderer/util.js | snippetCollapseButtonLabel": {
+    "message": "Zbaliť útržok"
+  },
+  "lighthouse-core/report/html/renderer/util.js | snippetExpandButtonLabel": {
+    "message": "Rozbaliť útržok"
+  },
+  "lighthouse-core/report/html/renderer/util.js | thirdPartyResourcesLabel": {
+    "message": "Zobrazovať zdroje tretích strán"
+  },
+  "lighthouse-core/report/html/renderer/util.js | toplevelWarningsMessage": {
+    "message": "Vyskytli sa problémy ovplyvňujúce funkčnosť nástroja Lighthouse:"
+  },
+  "lighthouse-core/report/html/renderer/util.js | varianceDisclaimer": {
+    "message": "Hodnoty sú odhady, ktoré sa môžu líšiť. Skóre výkonnosti je [založené iba na týchto metrikách](https://github.com/GoogleChrome/lighthouse/blob/d2ec9ffbb21de9ad1a0f86ed24575eda32c796f0/docs/scoring.md#how-are-the-scores-weighted)."
+  },
+  "lighthouse-core/report/html/renderer/util.js | warningAuditsGroupTitle": {
+    "message": "Úspešne absolvované kontroly, ale s upozorneniami"
+  },
+  "lighthouse-core/report/html/renderer/util.js | warningHeader": {
+    "message": "Upozornenia: "
+  },
+  "stack-packs/packs/wordpress.js | efficient_animated_content": {
+    "message": "Zvážte nahranie gifu do služby, ktorá umožní jeho vloženie v podobe videa HTML5."
+  },
+  "stack-packs/packs/wordpress.js | offscreen_images": {
+    "message": "Nainštalujte si [doplnok WordPress na predbežné načítanie](https://wordpress.org/plugins/search/lazy+load/) poskytujúci možnosť odložiť všetky obrázky mimo obrazovky alebo prepnúť na motív, ktorý túto funkciu poskytuje. Tiež zvážte použitie [doplnku AMP](https://wordpress.org/plugins/amp/)."
+  },
+  "stack-packs/packs/wordpress.js | render_blocking_resources": {
+    "message": "Existuje niekoľko doplnkov WordPress, ktoré vám pomôžu [vložiť do textu kľúčové podklady](https://wordpress.org/plugins/search/critical+css/) alebo [odložiť menej dôležité zdroje](https://wordpress.org/plugins/search/defer+css+javascript/). Dajte pozor, pretože optimalizácie poskytované týmito doplnkami môžu porušiť funkcie motívu či doplnkov, takže budete musieť zrejme zmeniť kód."
+  },
+  "stack-packs/packs/wordpress.js | time_to_first_byte": {
+    "message": "Čas odpovede servera ovplyvňujú motívy, doplnky a špecifikácie servera. Odporúčame nájsť optimalizovanejší motív, opatrne vybrať doplnok na optimalizáciu a/alebo aktualizovať server."
+  },
+  "stack-packs/packs/wordpress.js | total_byte_weight": {
+    "message": "Zvážte zobrazovanie úryvkov v zoznamoch príspevkov (napr. prostredníctvom značky Viac), znížte počet príspevkov zobrazovaných na danej stránke alebo rozdeľte dlhé príspevky na niekoľko stránok. Prípadne použite doplnok na predbežné načítavanie komentárov."
+  },
+  "stack-packs/packs/wordpress.js | unminified_css": {
+    "message": "Niekoľko [doplnkov WordPress](https://wordpress.org/plugins/search/minify+css/) môže váš web zrýchliť konkatenáciou, minifikáciou a komprimáciou štýlov. Ak je to možné, tiež odporúčame túto minifikáciu vykonať vopred pomocou procesu zostavy."
+  },
+  "stack-packs/packs/wordpress.js | unminified_javascript": {
+    "message": "Niekoľko [doplnkov WordPress](https://wordpress.org/plugins/search/minify+javascript/) môže váš web zrýchliť konkatenáciou, minifikáciou a komprimáciou skriptov. Ak je to možné, odporúčame túto minifikáciu vykonať vopred pomocou procesu zostavy."
+  },
+  "stack-packs/packs/wordpress.js | unused_css_rules": {
+    "message": "Zvážte zníženie alebo prepnutie počtu [doplnkov WordPress](https://wordpress.org/plugins/) načítavajúcich nepoužívané šablóny CSS na stránke. Na identifikáciu doplnkov pridávajúcich externé šablóny CSS skúste spustiť funkciu [zahrnutia v kóde](https://developers.google.com/web/updates/2017/04/devtools-release-notes#coverage) v nástroji Chrome DevTools. Príslušný motív alebo doplnok môžete identifikovať pomocou webovej adresy danej šablóny štýlov. Nájdite doplnky, ktoré majú v zozname mnoho šablón štýlov s veľkým počtom červených hodnôt vo funkcii zahrnutia v kóde. Doplnok by mal šablónu štýlov zaradiť do poradia iba vtedy, keď sa používa na stránke."
+  },
+  "stack-packs/packs/wordpress.js | unused_javascript": {
+    "message": "Zvážte zníženie alebo prepnutie počtu [doplnkov WordPress](https://wordpress.org/plugins/) načítavajúcich nepoužívaný JavaScript na stránke. Doplnky pridávajúce externý JavaScript skúste identifikovať pomocou funkcie [zahrnutia v kóde](https://developers.google.com/web/updates/2017/04/devtools-release-notes#coverage) v nástroji Chrome DevTools. Príslušný motív alebo doplnok môžete identifikovať pomocou webovej adresy daného skriptu. Nájdite doplnky, ktoré majú v zozname mnoho skriptov s veľkým počtom červených hodnôt vo funkcii zahrnutia v kóde. Doplnok by nemal skript zaradiť do poradia, keď sa používa na stránke."
+  },
+  "stack-packs/packs/wordpress.js | uses_long_cache_ttl": {
+    "message": "Prečítajte si o [ukladaní obsahu do vyrovnávacej pamäte prehliadača na webe WordPress](https://codex.wordpress.org/WordPress_Optimization#Browser_Caching)."
+  },
+  "stack-packs/packs/wordpress.js | uses_optimized_images": {
+    "message": "Zvážte použitie [doplnku WordPress na optimalizáciu obrázkov](https://wordpress.org/plugins/search/optimize+images/), ktorý skomprimuje obrázky, ale zachová ich kvalitu."
+  },
+  "stack-packs/packs/wordpress.js | uses_responsive_images": {
+    "message": "Nahrajte obrázky priamo prostredníctvom [knižnice médií](https://codex.wordpress.org/Media_Library_Screen), čím zaistíte dostupnosť ich požadovaných veľkostí. Potom ich vložte z knižnice médií alebo zaistite použitie optimálnych veľkostí obrázkov pomocou ich miniaplikácií (vrátane tých, ktoré sú určené pre responzívne zlomové body). Obrázky s veľkosťou `Full Size` použite iba vtedy, keď sú dané rozmery vhodné na použitie. [Ďalšie informácie](https://codex.wordpress.org/Inserting_Images_into_Posts_and_Pages#Image_Size)"
+  },
+  "stack-packs/packs/wordpress.js | uses_text_compression": {
+    "message": "V konfigurácii webového servera môžete povoliť kompresiu textu."
+  },
+  "stack-packs/packs/wordpress.js | uses_webp_images": {
+    "message": "Zvážte použitie [doplnku](https://wordpress.org/plugins/search/convert+webp/) alebo služby, ktorá automaticky konvertuje nahrané obrázky do optimálnych formátov."
+  }
+}
diff --git a/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/sl.json b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/sl.json
new file mode 100644
index 0000000..9ba8c4f
--- /dev/null
+++ b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/sl.json
@@ -0,0 +1,1541 @@
+{
+  "lighthouse-core/audits/accessibility/accesskeys.js | description": {
+    "message": "Tipke za dostop uporabnikom omogočajo hiter izbor dela strani. Za ustrezno pomikanje mora biti vsaka tipka za dostop drugačna. [Več o tem](https://web.dev/accesskeys/)."
+  },
+  "lighthouse-core/audits/accessibility/accesskeys.js | failureTitle": {
+    "message": "Vrednosti `[accesskey]` niso enolične"
+  },
+  "lighthouse-core/audits/accessibility/accesskeys.js | title": {
+    "message": "Vrednosti `[accesskey]` so enolične"
+  },
+  "lighthouse-core/audits/accessibility/aria-allowed-attr.js | description": {
+    "message": "Vsak element ARIA `role` podpira določen podniz atributov `aria-*`. Če se ne ujemajo, so atributi `aria-*` razveljavljeni. [Več o tem](https://web.dev/aria-allowed-attr/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-allowed-attr.js | failureTitle": {
+    "message": "Atributi `[aria-*]` se ne ujemajo z vlogami"
+  },
+  "lighthouse-core/audits/accessibility/aria-allowed-attr.js | title": {
+    "message": "Atributi `[aria-*]` se ujemajo s svojimi vlogami"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-attr.js | description": {
+    "message": "Nekatere vloge ARIA imajo zahtevane atribute, ki opišejo stanje elementa bralnikom zaslona. [Več o tem](https://web.dev/aria-required-attr/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-required-attr.js | failureTitle": {
+    "message": "Vloge `[role]` nimajo vseh zahtevanih atributov `[aria-*]`"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-attr.js | title": {
+    "message": "Vloge `[role]` imajo vse zahtevane atribute `[aria-*]`"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-children.js | description": {
+    "message": "Nekatere nadrejene vloge ARIA morajo zaradi ustreznega izvajanja funkcij za ljudi s posebnimi potrebami vsebovati določene podrejene vloge. [Več o tem](https://web.dev/aria-required-children/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-required-children.js | failureTitle": {
+    "message": "Elementi z vlogo `[role]`, ki zahtevajo določene podrejene vloge `[role]`, manjkajo."
+  },
+  "lighthouse-core/audits/accessibility/aria-required-children.js | title": {
+    "message": "Elementi z vlogo `[role]`, ki zahtevajo določene podrejene vloge `[role]`, so prisotni"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-parent.js | description": {
+    "message": "Nekatere podrejene vloge ARIA morajo biti zaradi ustreznega izvajanja funkcij za ljudi s posebnimi potrebami vsebovane v določenih nadrejenih vlogah. [Več o tem](https://web.dev/aria-required-parent/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-required-parent.js | failureTitle": {
+    "message": "Vloge `[role]` niso vsebovane v zahtevanem nadrejenem elementu"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-parent.js | title": {
+    "message": "Vloge `[role]` so vsebovane v zahtevanem nadrejenem elementu"
+  },
+  "lighthouse-core/audits/accessibility/aria-roles.js | description": {
+    "message": "Vloge ARIA morajo imeti veljavne vrednosti, če želite, da bodo izvajale želene funkcije za ljudi s posebnimi potrebami. [Več o tem](https://web.dev/aria-roles/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-roles.js | failureTitle": {
+    "message": "Vrednosti `[role]` niso veljavne"
+  },
+  "lighthouse-core/audits/accessibility/aria-roles.js | title": {
+    "message": "Vrednosti `[role]` so veljavne"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr-value.js | description": {
+    "message": "Pomožne tehnologije, kot so bralniki zaslona, ne morejo tolmačiti atributov ARIA z neveljavnimi vrednostmi. [Več o tem](https://web.dev/aria-valid-attr-value/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr-value.js | failureTitle": {
+    "message": "Atributi `[aria-*]` nimajo veljavnih vrednosti"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr-value.js | title": {
+    "message": "Atributi `[aria-*]` imajo veljavne vrednosti"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr.js | description": {
+    "message": "Pomožne tehnologije, kot so bralniki zaslona, ne morejo tolmačiti atributov ARIA z neveljavnimi imeni. [Več o tem](https://web.dev/aria-valid-attr/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr.js | failureTitle": {
+    "message": "Atributi `[aria-*]` so neveljavni ali napačno črkovani"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr.js | title": {
+    "message": "Atributi `[aria-*]` so veljavni in niso napačno črkovani"
+  },
+  "lighthouse-core/audits/accessibility/audio-caption.js | description": {
+    "message": "Podnapisi poskrbijo, da so zvočni elementi uporabni za gluhe ali slušno prizadete tako, da zagotavljajo ključne informacije, na primer, kdo govori, kaj govori in druge neverbalne informacije. [Več o tem](https://web.dev/audio-caption/)."
+  },
+  "lighthouse-core/audits/accessibility/audio-caption.js | failureTitle": {
+    "message": "Elementi `<audio>` nimajo elementa `<track>` s podnapisi `[kind=\"captions\"]`."
+  },
+  "lighthouse-core/audits/accessibility/audio-caption.js | title": {
+    "message": "Elementi `<audio>` vsebujejo element `<track>` s podnapisi `[kind=\"captions\"]`"
+  },
+  "lighthouse-core/audits/accessibility/axe-audit.js | failingElementsHeader": {
+    "message": "Neuspešni elementi"
+  },
+  "lighthouse-core/audits/accessibility/button-name.js | description": {
+    "message": "Če gumb nima dostopnega imena, ga bralniki zaslona predstavijo kot »gumb«, s čimer je neuporaben za uporabnike, ki se zanašajo na bralnike zaslona. [Več o tem](https://web.dev/button-name/)."
+  },
+  "lighthouse-core/audits/accessibility/button-name.js | failureTitle": {
+    "message": "Gumbi nimajo dostopnega imena"
+  },
+  "lighthouse-core/audits/accessibility/button-name.js | title": {
+    "message": "Gumbi imajo dostopna imena"
+  },
+  "lighthouse-core/audits/accessibility/bypass.js | description": {
+    "message": "Če dodate načine, s katerimi je mogoče zaobiti ponavljajočo se vsebino, uporabnikom s tipkovnico omogočite učinkovitejše pomikanje po strani. [Več o tem](https://web.dev/bypass/)."
+  },
+  "lighthouse-core/audits/accessibility/bypass.js | failureTitle": {
+    "message": "Stran ne vsebuje naslova, povezave za preskok ali območja z mejnikom"
+  },
+  "lighthouse-core/audits/accessibility/bypass.js | title": {
+    "message": "Stran vsebuje naslov, povezavo za preskok ali območje z mejnikom"
+  },
+  "lighthouse-core/audits/accessibility/color-contrast.js | description": {
+    "message": "Besedilo z nizkim kontrastom številni uporabniki težko preberejo ali ga sploh ne morejo prebrati. [Več o tem](https://web.dev/color-contrast/)."
+  },
+  "lighthouse-core/audits/accessibility/color-contrast.js | failureTitle": {
+    "message": "Barve ozadja in ospredja nimajo zadostnega kontrastnega razmerja."
+  },
+  "lighthouse-core/audits/accessibility/color-contrast.js | title": {
+    "message": "Barve ozadja in ospredja imajo zadostno kontrastno razmerje"
+  },
+  "lighthouse-core/audits/accessibility/definition-list.js | description": {
+    "message": "Če seznami opredelitev niso ustrezno označeni, lahko bralniki zaslona izgovorijo nejasno ali netočno vsebino. [Več o tem](https://web.dev/definition-list/)."
+  },
+  "lighthouse-core/audits/accessibility/definition-list.js | failureTitle": {
+    "message": "Elementi `<dl>` ne vsebujejo samo ustrezno razvrščenih skupin `<dt>` in `<dd>`, skripta `<script>` ali elementov `<template>`."
+  },
+  "lighthouse-core/audits/accessibility/definition-list.js | title": {
+    "message": "Elementi `<dl>` vsebujejo samo ustrezno razvrščene skupine `<dt>` in `<dd>`, skript `<script>` ali elemente `<template>`."
+  },
+  "lighthouse-core/audits/accessibility/dlitem.js | description": {
+    "message": "Elementi seznamov opredelitev (`<dt>` in `<dd>`) morajo biti zaradi zagotavljanja, da jih lahko bralniki zaslona ustrezno predstavijo, oviti z nadrejenim elementom `<dl>`. [Več o tem](https://web.dev/dlitem/)."
+  },
+  "lighthouse-core/audits/accessibility/dlitem.js | failureTitle": {
+    "message": "Elementi seznamov opredelitev niso oviti z elementi `<dl>`"
+  },
+  "lighthouse-core/audits/accessibility/dlitem.js | title": {
+    "message": "Elementi seznamov opredelitev so oviti z elementi `<dl>`"
+  },
+  "lighthouse-core/audits/accessibility/document-title.js | description": {
+    "message": "Naslov uporabnikom bralnikov zaslona zagotavlja pregled strani, uporabniki iskalnikov pa se nanašajo nanj pri določanju, ali je stran pomembna za njihovo iskanje. [Več o tem](https://web.dev/document-title/)."
+  },
+  "lighthouse-core/audits/accessibility/document-title.js | failureTitle": {
+    "message": "Dokument nima elementa `<title>`"
+  },
+  "lighthouse-core/audits/accessibility/document-title.js | title": {
+    "message": "Dokument ima element `<title>`"
+  },
+  "lighthouse-core/audits/accessibility/duplicate-id.js | description": {
+    "message": "Vrednost atributa ID-ja mora biti enolična, če želite preprečiti, da bi pomožne tehnologije spregledale druge primerke. [Več o tem](https://web.dev/duplicate-id/)."
+  },
+  "lighthouse-core/audits/accessibility/duplicate-id.js | failureTitle": {
+    "message": "Atributi `[id]` na strani niso enolični"
+  },
+  "lighthouse-core/audits/accessibility/duplicate-id.js | title": {
+    "message": "Atributi `[id]` na strani so enolični"
+  },
+  "lighthouse-core/audits/accessibility/frame-title.js | description": {
+    "message": "Uporabniki bralnikov zaslona se zanašajo, da jim vsebino okvirjev opišejo naslovi okvirjev. [Več o tem](https://web.dev/frame-title/)."
+  },
+  "lighthouse-core/audits/accessibility/frame-title.js | failureTitle": {
+    "message": "Elementi `<frame>` ali `<iframe>` nimajo naslova"
+  },
+  "lighthouse-core/audits/accessibility/frame-title.js | title": {
+    "message": "Elementi `<frame>` ali `<iframe>` imajo naslov"
+  },
+  "lighthouse-core/audits/accessibility/html-has-lang.js | description": {
+    "message": "Če stran ne določi atributa »lang«, bralnik zaslona predvideva, da je stran v privzetem jeziku, ki ga je uporabnik izbral pri nastavljanju bralnika zaslona. Če stran ni v privzetem jeziku, bralnik zaslona morda ne bo pravilno predstavil besedila na strani. [Več o tem](https://web.dev/html-has-lang/)."
+  },
+  "lighthouse-core/audits/accessibility/html-has-lang.js | failureTitle": {
+    "message": "Element `<html>` nima atributa `[lang]`"
+  },
+  "lighthouse-core/audits/accessibility/html-has-lang.js | title": {
+    "message": "Element `<html>` ima atribut `[lang]`"
+  },
+  "lighthouse-core/audits/accessibility/html-lang-valid.js | description": {
+    "message": "Če določite veljaven [jezik BCP 47](https://www.w3.org/International/questions/qa-choosing-language-tags#question), pomagate bralnikom zaslona ustrezno predstaviti besedilo [Več o tem](https://web.dev/html-lang-valid/)"
+  },
+  "lighthouse-core/audits/accessibility/html-lang-valid.js | failureTitle": {
+    "message": "Element `<html>` nima veljavne vrednosti za atribut `[lang]`."
+  },
+  "lighthouse-core/audits/accessibility/html-lang-valid.js | title": {
+    "message": "Element `<html>` ima veljavno vrednost za svoj atribut `[lang]`"
+  },
+  "lighthouse-core/audits/accessibility/image-alt.js | description": {
+    "message": "Informativni elementi naj imajo kratko, opisno nadomestno besedilo. Okrasne elemente je mogoče prezreti s praznim nadomestnim atributom. [Več o tem](https://web.dev/image-alt/)."
+  },
+  "lighthouse-core/audits/accessibility/image-alt.js | failureTitle": {
+    "message": "Elementi slik nimajo atributov `[alt]`"
+  },
+  "lighthouse-core/audits/accessibility/image-alt.js | title": {
+    "message": "Elementi slik imajo atribute `[alt]`"
+  },
+  "lighthouse-core/audits/accessibility/input-image-alt.js | description": {
+    "message": "Če se kot gumb `<input>` uporablja slika, lahko z navajanjem nadomestnega besedila uporabnikom bralnikov zaslona pomagate razumeti namen gumba. [Več o tem](https://web.dev/input-image-alt/)."
+  },
+  "lighthouse-core/audits/accessibility/input-image-alt.js | failureTitle": {
+    "message": "Elementi `<input type=\"image\">` nimajo besedila `[alt]`"
+  },
+  "lighthouse-core/audits/accessibility/input-image-alt.js | title": {
+    "message": "Elementi `<input type=\"image\">` imajo besedilo `[alt]`"
+  },
+  "lighthouse-core/audits/accessibility/label.js | description": {
+    "message": "Oznake zagotavljajo, da pomožne tehnologije, na primer bralniki zaslona, ustrezno predstavijo kontrolnike za obrazce. [Več o tem](https://web.dev/label/)."
+  },
+  "lighthouse-core/audits/accessibility/label.js | failureTitle": {
+    "message": "Elementi obrazcev nimajo povezanih oznak"
+  },
+  "lighthouse-core/audits/accessibility/label.js | title": {
+    "message": "Elementi obrazcev imajo povezane oznake"
+  },
+  "lighthouse-core/audits/accessibility/layout-table.js | description": {
+    "message": "Tabela, ki se uporablja za namene postavitve, ne sme vsebovati podatkovnih elementov, na primer elementov »th« oziroma podnapisov ali atributa povzetka, ker lahko to privede do zavajajoče izkušnje za uporabnike bralnikov zaslona. [Več o tem](https://web.dev/layout-table/)."
+  },
+  "lighthouse-core/audits/accessibility/layout-table.js | failureTitle": {
+    "message": "Elementi predstavitvene razpredelnice `<table>` se ne izogibajo uporabi atributa `<th>`, `<caption>` ali `[summary]`."
+  },
+  "lighthouse-core/audits/accessibility/layout-table.js | title": {
+    "message": "Elementi predstavitvene razpredelnice `<table>` se izogibajo uporabi atributa `<th>`, `<caption>` ali `[summary]`."
+  },
+  "lighthouse-core/audits/accessibility/link-name.js | description": {
+    "message": "Besedilo za povezavo (in nadomestno besedilo za slike, kadar so uporabljene kot povezave), ki je prepoznavno in edinstveno ter ga je mogoče izbrati, uporabnikom bralnikov zaslona zagotavlja boljšo izkušnjo pomikanja. [Več o tem](https://web.dev/link-name/)."
+  },
+  "lighthouse-core/audits/accessibility/link-name.js | failureTitle": {
+    "message": "Povezave nimajo prepoznavnega imena"
+  },
+  "lighthouse-core/audits/accessibility/link-name.js | title": {
+    "message": "Povezave imajo prepoznavno ime"
+  },
+  "lighthouse-core/audits/accessibility/list.js | description": {
+    "message": "Bralniki zaslona predstavljajo sezname na poseben način. Če želite doprinesti h kakovostnejši izgovorjavi bralnikov zaslona, poskrbite za ustrezno strukturo seznamov. [Več o tem](https://web.dev/list/)."
+  },
+  "lighthouse-core/audits/accessibility/list.js | failureTitle": {
+    "message": "Seznami ne vsebujejo samo elementov `<li>` in elementov, ki podpirajo skripte (`<script>` in `<template>`)."
+  },
+  "lighthouse-core/audits/accessibility/list.js | title": {
+    "message": "Seznami vsebujejo samo elemente `<li>` in elemente, ki podpirajo skripte (`<script>` in `<template>`)."
+  },
+  "lighthouse-core/audits/accessibility/listitem.js | description": {
+    "message": "Bralniki zaslona zahtevajo, da so elementi seznamov (`<li>`) vsebovani v nadrejenih elementih `<ul>` ali `<ol>`, da jih lahko ustrezno predstavijo. [Več o tem](https://web.dev/listitem/)."
+  },
+  "lighthouse-core/audits/accessibility/listitem.js | failureTitle": {
+    "message": "Elementi seznamov (`<li>`) niso vsebovani v nadrejenih elementih `<ul>` ali `<ol>`."
+  },
+  "lighthouse-core/audits/accessibility/listitem.js | title": {
+    "message": "Elementi seznamov (`<li>`) so vsebovani v nadrejenih elementih `<ul>` ali `<ol>`"
+  },
+  "lighthouse-core/audits/accessibility/meta-refresh.js | description": {
+    "message": "Uporabniki ne pričakujejo samodejne osvežitve strani. Če se to zgodi, se izbira pomakne nazaj na vrh strani. To lahko privede do zoprne ali zavajajoče izkušnje. [Več o tem](https://web.dev/meta-refresh/)."
+  },
+  "lighthouse-core/audits/accessibility/meta-refresh.js | failureTitle": {
+    "message": "Dokument uporablja `<meta http-equiv=\"refresh\">`"
+  },
+  "lighthouse-core/audits/accessibility/meta-refresh.js | title": {
+    "message": "Dokument ne uporablja `<meta http-equiv=\"refresh\">`"
+  },
+  "lighthouse-core/audits/accessibility/meta-viewport.js | description": {
+    "message": "Onemogočanje povečave/pomanjšave je težavno za slabovidne uporabnike, ki se zanašajo na povečavo zaslona, da lahko ustrezno vidijo vsebino spletne strani. [Več o tem](https://web.dev/meta-viewport/)."
+  },
+  "lighthouse-core/audits/accessibility/meta-viewport.js | failureTitle": {
+    "message": "Lastnosti prilagajanja velikosti `[user-scalable=\"no\"]` se uporabljajo v elementu `<meta name=\"viewport\">` ali pa je atribut `[maximum-scale]` manjši od 5."
+  },
+  "lighthouse-core/audits/accessibility/meta-viewport.js | title": {
+    "message": "Lastnosti prilagajanja velikosti `[user-scalable=\"no\"]` se ne uporabljajo v elementu `<meta name=\"viewport\">` in atribut `[maximum-scale]` ni manjši od 5."
+  },
+  "lighthouse-core/audits/accessibility/object-alt.js | description": {
+    "message": "Bralniki zaslona ne morejo prevesti vsebine, ki ni besedilna. Če elementom `<object>` dodate nadomestno besedilo, bralnikom zaslona pomagate prenesti pomen uporabnikom. [Več o tem](https://web.dev/object-alt/)."
+  },
+  "lighthouse-core/audits/accessibility/object-alt.js | failureTitle": {
+    "message": "Elementi `<object>` nimajo besedila `[alt]`"
+  },
+  "lighthouse-core/audits/accessibility/object-alt.js | title": {
+    "message": "Elementi `<object>` imajo besedilo `[alt]`"
+  },
+  "lighthouse-core/audits/accessibility/tabindex.js | description": {
+    "message": "Vrednost, večja od 0, kaže na izrecno razporeditev pomikanja. Čeprav je načeloma veljavna, pogosto vodi v zoprne izkušnje za uporabnike, ki se zanašajo na pomožne tehnologije. [Več o tem](https://web.dev/tabindex/)."
+  },
+  "lighthouse-core/audits/accessibility/tabindex.js | failureTitle": {
+    "message": "Nekateri elementi imajo vrednost za `[tabindex]` večjo od 0"
+  },
+  "lighthouse-core/audits/accessibility/tabindex.js | title": {
+    "message": "Noben element nima večje vrednosti za `[tabindex]` od 0"
+  },
+  "lighthouse-core/audits/accessibility/td-headers-attr.js | description": {
+    "message": "Bralniki zaslona imajo funkcije za preprostejše pomikanje po razpredelnicah. Če zagotovite, da se celice `<td>`, ki uporabljajo atribut `[headers]`, nanašajo samo na druge celice v isti razpredelnici, lahko izboljšate izkušnjo za uporabnike bralnikov zaslona. [Več o tem](https://web.dev/td-headers-attr/)"
+  },
+  "lighthouse-core/audits/accessibility/td-headers-attr.js | failureTitle": {
+    "message": "Celice v elementu `<table>`, ki uporabljajo atribut `[headers]`, se nanašajo samo na druge celice v isti razpredelnici."
+  },
+  "lighthouse-core/audits/accessibility/td-headers-attr.js | title": {
+    "message": "Celice v elementu `<table>`, ki uporabljajo atribut `[headers]`, se nanašajo samo na druge celice v isti razpredelnici."
+  },
+  "lighthouse-core/audits/accessibility/th-has-data-cells.js | description": {
+    "message": "Bralniki zaslona imajo funkcije za preprostejše pomikanje po razpredelnicah. Če zagotovite, da se glave razpredelnic vedno nanašajo na določen nabor celic, lahko izboljšate izkušnjo za uporabnike bralnikov zaslona. [Več o tem](https://web.dev/th-has-data-cells/)."
+  },
+  "lighthouse-core/audits/accessibility/th-has-data-cells.js | failureTitle": {
+    "message": "Elementi `<th>` in elementi z glavami `[role=\"columnheader\"/\"rowheader\"]` nimajo podatkovnih celic, ki jih opisujejo."
+  },
+  "lighthouse-core/audits/accessibility/th-has-data-cells.js | title": {
+    "message": "Elementi `<th>` in elementi z glavami `[role=\"columnheader\"/\"rowheader\"]` imajo podatkovne celice, ki jih opisujejo."
+  },
+  "lighthouse-core/audits/accessibility/valid-lang.js | description": {
+    "message": "Če za elemente določite veljaven [jezik BCP 47](https://www.w3.org/International/questions/qa-choosing-language-tags#question), pomagate zagotoviti, da bralnik zaslona pravilno izgovori besedilo. [Več o tem](https://web.dev/valid-lang/)."
+  },
+  "lighthouse-core/audits/accessibility/valid-lang.js | failureTitle": {
+    "message": "Atributi `[lang]` nimajo veljavne vrednosti"
+  },
+  "lighthouse-core/audits/accessibility/valid-lang.js | title": {
+    "message": "Atributi `[lang]` imajo veljavno vrednost"
+  },
+  "lighthouse-core/audits/accessibility/video-caption.js | description": {
+    "message": "Če ima videoposnetek dodan podnapis, lahko gluhi in slušno prizadeti uporabniki preprosteje dostopajo do informacij, ki jih podaja. [Več o tem](https://web.dev/video-caption/)."
+  },
+  "lighthouse-core/audits/accessibility/video-caption.js | failureTitle": {
+    "message": "Elementi `<video>` ne vsebujejo elementa `<track>` z opisom `[kind=\"captions\"]`."
+  },
+  "lighthouse-core/audits/accessibility/video-caption.js | title": {
+    "message": "Elementi `<video>` vsebujejo element `<track>` s podnapisi `[kind=\"captions\"]`"
+  },
+  "lighthouse-core/audits/accessibility/video-description.js | description": {
+    "message": "Zvočni opisi zagotavljajo pomembne informacije glede videoposnetkov, ki jih sam dialog ne more, na primer opisujejo obrazne izraze in prizore. [Več o tem](https://web.dev/video-description/)."
+  },
+  "lighthouse-core/audits/accessibility/video-description.js | failureTitle": {
+    "message": "Elementi `<video>` ne vsebujejo elementa `<track>` z opisom `[kind=\"description\"]`."
+  },
+  "lighthouse-core/audits/accessibility/video-description.js | title": {
+    "message": "Elementi `<video>` vsebujejo element `<track>` s podnapisi `[kind=\"description\"]`"
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | description": {
+    "message": "Za idealen prikaz v iOSu, ko uporabniki dodajo moderno spletno aplikacijo na začetni zaslon, določite to: `apple-touch-icon`. Kazati mora na neprosojno kvadratno datoteko PNG velikosti 192 (ali 180) slikovnih pik. [Več o tem](https://developers.google.com/web/fundamentals/design-and-ux/browser-customization/)."
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | failureTitle": {
+    "message": "Ne vsebuje veljavne vrednosti `apple-touch-icon`"
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | precomposedWarning": {
+    "message": "`apple-touch-icon-precomposed` je zastarel; prednostni je `apple-touch-icon`."
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | title": {
+    "message": "Vsebuje veljavno vrednost `apple-touch-icon`"
+  },
+  "lighthouse-core/audits/bootup-time.js | chromeExtensionsWarning": {
+    "message": "Razširitve za Chrome so negativno vplivale na nalaganje te strani. Poskusite pregledati to stran v načinu brez beleženja zgodovine ali v profilu za Chrome brez razširitev."
+  },
+  "lighthouse-core/audits/bootup-time.js | columnScriptEval": {
+    "message": "Ocenjevanje skripta"
+  },
+  "lighthouse-core/audits/bootup-time.js | columnScriptParse": {
+    "message": "Razčlenitev skripta"
+  },
+  "lighthouse-core/audits/bootup-time.js | columnTotal": {
+    "message": "Skupni čas CPE"
+  },
+  "lighthouse-core/audits/bootup-time.js | description": {
+    "message": "Razmislite o skrajšanju časa, ki ga porabite za razčlenjevanje, prevajanje in izvajanje JavaScripta. Ugotovili boste, da vam lahko pri tem morda pomaga dostavljanje manjših paketov koristne vsebine JavaScript. [Več o tem](https://developers.google.com/web/tools/lighthouse/audits/bootup)."
+  },
+  "lighthouse-core/audits/bootup-time.js | failureTitle": {
+    "message": "Skrajšajte čas izvajanja JavaScripta"
+  },
+  "lighthouse-core/audits/bootup-time.js | title": {
+    "message": "Čas izvajanja JavaScripta"
+  },
+  "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | description": {
+    "message": "Veliki GIF-i so neučinkoviti za dostavljanje animirane vsebine. Razmislite o uporabi videoposnetkov MPEG4/WebM za animacije in slik PNG/WebP za statične slike namesto GIF-ov, s čimer prihranite omrežne bajte. [Več o tem](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/replace-animated-gifs-with-video/)"
+  },
+  "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | title": {
+    "message": "Uporabite oblike zapisa videoposnetkov za animirano vsebino"
+  },
+  "lighthouse-core/audits/byte-efficiency/offscreen-images.js | description": {
+    "message": "Razmislite o odloženem nalaganju slik zunaj zaslona in skritih slik po dokončanem nalaganju kritičnih sredstev zaradi skrajšanja časa do interaktivnosti strani. [Več o tem](https://developers.google.com/web/tools/lighthouse/audits/offscreen-images)."
+  },
+  "lighthouse-core/audits/byte-efficiency/offscreen-images.js | title": {
+    "message": "Odložite nalaganje slik, ki so zunaj zaslona"
+  },
+  "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | description": {
+    "message": "Sredstva blokirajo prvo barvanje strani. Razmislite o sprotnem dostavljanju kritičnega JavaScripta/CSS-ja in odlaganju JavaScripta/slogov, ki ni oziroma niso kritični. [Več o tem](https://developers.google.com/web/tools/lighthouse/audits/blocking-resources)."
+  },
+  "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | title": {
+    "message": "Izločite sredstva, ki blokirajo upodabljanje"
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | description": {
+    "message": "Veliki omrežni paketi koristne vsebine uporabnikom povzročajo dejanske stroške in so tesno povezani z dolgimi časi nalaganja. [Več o tem](https://developers.google.com/web/tools/lighthouse/audits/network-payloads)."
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | displayValue": {
+    "message": "Skupna velikost je bila {totalBytes, number, bytes} KB"
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | failureTitle": {
+    "message": "Izogibajte se velikanskim omrežnim paketom koristne vsebine"
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | title": {
+    "message": "Izogiba se velikanskim omrežnim paketom koristne vsebine"
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-css.js | description": {
+    "message": "Z zmanjšanjem datotek CSS-ja lahko zmanjšate velikosti paketov koristne vsebine. [Več o tem](https://developers.google.com/web/tools/lighthouse/audits/minify-css)."
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-css.js | title": {
+    "message": "Zmanjšajte CSS"
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | description": {
+    "message": "Z zmanjšanjem datotek JavaScript lahko zmanjšate velikosti paketov koristne vsebine in skrajšate čas razčlenjevanja skriptov. [Več o tem](https://developers.google.com/speed/docs/insights/MinifyResources)."
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | title": {
+    "message": "Pomanjšajte JavaScript"
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | description": {
+    "message": "Iz slogovnih datotek odstranite nedejavna pravila in odložite nalaganje CSS-ja, ki se ne uporablja za vsebino na vrhu strani, ter tako zmanjšajte nepotrebno porabo bajtov v omrežni dejavnosti. [Več o tem](https://developers.google.com/web/tools/lighthouse/audits/unused-css)."
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | title": {
+    "message": "Odstranitev neuporabljenega CSS-ja"
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-javascript.js | description": {
+    "message": "Odstranite neuporabljeni JavaScript, če želite zmanjšati število bajtov, uporabljenih v omrežni dejavnosti."
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-javascript.js | title": {
+    "message": "Odstranite neuporabljeni JavaScript"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | description": {
+    "message": "Dolgotrajno predpomnjenje lahko pospeši vnovične obiske strani. [Več o tem](https://developers.google.com/web/tools/lighthouse/audits/cache-policy)."
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | displayValue": {
+    "message": "{itemCount,plural, =1{Najdeno je bilo 1 sredstvo}one{Najdeno je bilo # sredstvo}two{Najdeni sta bili # sredstvi}few{Najdena so bila # sredstva}other{Najdenih je bilo # sredstev}}"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | failureTitle": {
+    "message": "Dostavljajte statična sredstva z učinkovitim pravilnikom o predpomnjenju"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | title": {
+    "message": "Uporaba pravilnika o učinkovitem predpomnjenju za statična sredstva"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | description": {
+    "message": "Optimizirane slike se nalagajo hitreje in terjajo manj prenesenih podatkov v mobilnih omrežjih. [Več o tem](https://developers.google.com/web/tools/lighthouse/audits/optimize-images)."
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | title": {
+    "message": "Učinkovito kodirajte slike"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | description": {
+    "message": "Prikazujte slike primerne velikosti, s čimer poskrbite za prihranek prenesenih podatkov v mobilnih omrežjih in izboljšate čas nalaganja. [Več o tem](https://developers.google.com/web/tools/lighthouse/audits/oversized-images)."
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | title": {
+    "message": "Uporabite slike ustrezne velikosti"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | description": {
+    "message": "Pri dostavi besedilnih sredstev uporabite stiskanje (gzip, deflate ali brotli) zaradi zmanjšanja skupnega števila omrežnih bajtov. [Več o tem](https://developers.google.com/web/tools/lighthouse/audits/text-compression)."
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | title": {
+    "message": "Omogočite stiskanje besedila"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | description": {
+    "message": "Oblike zapisa slik, kot so JPEG 2000, JPEG XR in WebP, pogosto omogočajo učinkovitejše stiskanje kot oblika zapisa PNG ali JPEG, kar pomeni hitrejše prenose in manjšo porabo podatkov. [Več o tem](https://developers.google.com/web/tools/lighthouse/audits/webp)."
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | title": {
+    "message": "Dostavljajte slike v sodobnih oblikah zapisa"
+  },
+  "lighthouse-core/audits/content-width.js | description": {
+    "message": "Če se širina vsebine aplikacije ne ujema s širino vidnega polja, aplikacija morda ni optimizirana za zaslone mobilnih naprav. [Več o tem](https://developers.google.com/web/tools/lighthouse/audits/content-sized-correctly-for-viewport)."
+  },
+  "lighthouse-core/audits/content-width.js | explanation": {
+    "message": "Velikost vidnega območja, ki znaša {innerWidth} slikovnih pik, se ne ujema z velikostjo okna, ki znaša {outerWidth} slikovnih pik."
+  },
+  "lighthouse-core/audits/content-width.js | failureTitle": {
+    "message": "Vsebina ni ustrezne velikosti za vidno območje"
+  },
+  "lighthouse-core/audits/content-width.js | title": {
+    "message": "Vsebina je ustrezne velikosti za vidno območje"
+  },
+  "lighthouse-core/audits/critical-request-chains.js | description": {
+    "message": "Verige kritičnih zahtev spodaj vam prikazujejo, katera sredstva so naložena z visoko prednostjo. Razmislite o skrajšanju verig, zmanjšanju velikosti sredstev ali odlaganju prenosa nepotrebnih sredstev zaradi izboljšanja nalaganja strani. [Več o tem](https://developers.google.com/web/tools/lighthouse/audits/critical-request-chains)."
+  },
+  "lighthouse-core/audits/critical-request-chains.js | displayValue": {
+    "message": "{itemCount,plural, =1{Najdena je bila 1 veriga}one{Najdena je bila # veriga}two{Najdeni sta bili # verigi}few{Najdene so bile # verige}other{Najdenih je bilo # verig}}"
+  },
+  "lighthouse-core/audits/critical-request-chains.js | title": {
+    "message": "Zmanjšajte globino kritičnih zahtev"
+  },
+  "lighthouse-core/audits/deprecations.js | columnDeprecate": {
+    "message": "Zastaranje/opozorilo"
+  },
+  "lighthouse-core/audits/deprecations.js | columnLine": {
+    "message": "Vrstica"
+  },
+  "lighthouse-core/audits/deprecations.js | description": {
+    "message": "Zastareli API-ji bodo sčasoma odstranjeni iz brskalnika. [Več o tem](https://web.dev/deprecations)."
+  },
+  "lighthouse-core/audits/deprecations.js | displayValue": {
+    "message": "{itemCount,plural, =1{Najdeno je bilo 1 opozorilo}one{Najdeno je bilo # opozorilo}two{Najdeni sta bili # opozorili}few{Najdena so bila # opozorila}other{Najdenih je bilo # opozoril}}"
+  },
+  "lighthouse-core/audits/deprecations.js | failureTitle": {
+    "message": "Uporablja zastarele API-je"
+  },
+  "lighthouse-core/audits/deprecations.js | title": {
+    "message": "Izogiba se zastarelim API-jem"
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | description": {
+    "message": "Predpomnilnik aplikacij je zastarel. [Več o tem](https://web.dev/appcache-manifest)."
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | displayValue": {
+    "message": "Najdeno – »{AppCacheManifest}«"
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | failureTitle": {
+    "message": "Uporablja predpomnilnik aplikacij"
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | title": {
+    "message": "Izogiba se predpomnilniku aplikacij"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | description": {
+    "message": "Če določite doctype, brskalnik ne more preklopiti v način »quirks«. [Več o tem](https://web.dev/doctype)."
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationBadDoctype": {
+    "message": "Ime doctype mora biti niz z majhnimi črkami `html`"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationNoDoctype": {
+    "message": "Dokument mora vsebovati doctype"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationPublicId": {
+    "message": "Pričakovano je bilo, da je publicid prazen niz"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationSystemId": {
+    "message": "Pričakovano je bilo, da je systemid prazen niz"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | failureTitle": {
+    "message": "Stran nima HTML-doctype, zato se sproži način »quirks«"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | title": {
+    "message": "Stran ima HTML-doctype"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | columnElement": {
+    "message": "Element"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | columnStatistic": {
+    "message": "Statistični podatek"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | columnValue": {
+    "message": "Vrednost"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | description": {
+    "message": "Inženirji za brskalnike priporočajo, da strani vsebujejo manj kot približno 1500 elementov DOM. Idealna vrednost je globina drevesa z manj kot 32 elementi in manj kot 60 podrejenimi/nadrejenimi elementi. Velik DOM lahko povzroči povečano uporabo pomnilnika, daljše [slogovne izračune](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations) in drage [prilagoditve postavitve](https://developers.google.com/speed/articles/reflow). [Več o tem](https://web.dev/dom-size)."
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 element}one{# element}two{# elementa}few{# elementi}other{# elementov}}"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | failureTitle": {
+    "message": "Izogibajte se prekomerni velikosti DOM-a"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | statisticDOMDepth": {
+    "message": "Največja globina DOM-a"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | statisticDOMElements": {
+    "message": "Skupno število elementov DOM"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | statisticDOMWidth": {
+    "message": "Največje število podrejenih elementov"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | title": {
+    "message": "Izogiba se prekomerni velikosti DOM-a"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | columnRel": {
+    "message": "Rel"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | columnTarget": {
+    "message": "Cilj"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | description": {
+    "message": "Zunanjim povezavam dodajte `rel=\"noopener\"` ali `rel=\"noreferrer\"` zaradi izboljšanja delovanja in preprečevanja varnostnih ranljivosti. [Več o tem](https://web.dev/external-anchors-use-rel-noopener)"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | failureTitle": {
+    "message": "Povezave do ciljev iz več izvorov niso varne"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | title": {
+    "message": "Povezave do ciljev iz več izvorov so varne"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | warning": {
+    "message": "Ni mogoče določiti cilja za sidro ({anchorHTML}). Če se ne uporablja kot hiperpovezava, lahko odstranite target=_blank."
+  },
+  "lighthouse-core/audits/dobetterweb/geolocation-on-start.js | description": {
+    "message": "Uporabniki so nezaupljivi do spletnih mest oziroma jih begajo spletna mesta, ki zahtevajo njihovo lokacijo brez konteksta. Razmislite o tem, da bi zahtevo povezali z uporabniškim dejanjem. [Več o tem](https://web.dev/geolocation-on-start)."
+  },
+  "lighthouse-core/audits/dobetterweb/geolocation-on-start.js | failureTitle": {
+    "message": "Zahteva dovoljenje za geolokacijo pri nalaganju strani"
+  },
+  "lighthouse-core/audits/dobetterweb/geolocation-on-start.js | title": {
+    "message": "Ne zahteva dovoljenja za geolokacijo pri nalaganju strani"
+  },
+  "lighthouse-core/audits/dobetterweb/js-libraries.js | columnVersion": {
+    "message": "Različica"
+  },
+  "lighthouse-core/audits/dobetterweb/js-libraries.js | description": {
+    "message": "Vse knjižnice JavaScript vmesnikov, zaznane na strani. [Več o tem](https://web.dev/js-libraries)."
+  },
+  "lighthouse-core/audits/dobetterweb/js-libraries.js | title": {
+    "message": "Zaznane knjižnice JavaScript"
+  },
+  "lighthouse-core/audits/dobetterweb/no-document-write.js | description": {
+    "message": "Pri uporabnikih s počasnimi povezavami lahko zunanji skripti, dinamično vstavljeni prek `document.write()`, zakasnijo nalaganje strani za več deset sekund. [Več o tem](https://web.dev/no-document-write)."
+  },
+  "lighthouse-core/audits/dobetterweb/no-document-write.js | failureTitle": {
+    "message": "Uporablja `document.write()`"
+  },
+  "lighthouse-core/audits/dobetterweb/no-document-write.js | title": {
+    "message": "Se izogiba `document.write()`"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | columnSeverity": {
+    "message": "Največja resnost"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | columnVersion": {
+    "message": "Različica knjižnice"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | columnVuln": {
+    "message": "Štetje ranljivosti"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | description": {
+    "message": "Nekateri skripti drugih ponudnikov morda vsebujejo znane varnostne ranljivosti, ki jih napadalci lahko preprosto prepoznajo in izkoristijo. [Več o tem](https://web.dev/no-vulnerable-libraries)."
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | displayValue": {
+    "message": "{itemCount,plural, =1{Zaznana je bila 1 ranljivost}one{Zaznana je bila # ranljivost}two{Zaznani sta bili # ranljivosti}few{Zaznane so bile # ranljivosti}other{Zaznanih je bilo # ranljivosti}}"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | failureTitle": {
+    "message": "Vključuje knjižniceJavaScript vmesnikov z znanimi varnostnimi ranljivostmi"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | rowSeverityHigh": {
+    "message": "Visoka"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | rowSeverityLow": {
+    "message": "Nizka"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | rowSeverityMedium": {
+    "message": "Srednja"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | title": {
+    "message": "Izogiba se knjižnicam JavaScript vmesnikov z znanimi varnostnimi ranljivostmi"
+  },
+  "lighthouse-core/audits/dobetterweb/notification-on-start.js | description": {
+    "message": "Uporabniki so nezaupljivi do spletnih mest oziroma jih begajo spletna mesta, ki zahtevajo pošiljanje obvestil brez konteksta. Razmislite o tem, da bi zahtevo povezali z uporabniškimi potezami. [Več o tem](https://web.dev/notification-on-start)."
+  },
+  "lighthouse-core/audits/dobetterweb/notification-on-start.js | failureTitle": {
+    "message": "Zahteva dovoljenje za obvestila pri nalaganju strani"
+  },
+  "lighthouse-core/audits/dobetterweb/notification-on-start.js | title": {
+    "message": "Ne zahteva dovoljenja za obvestila pri nalaganju strani"
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | columnFailingElem": {
+    "message": "Neuspešni elementi"
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | description": {
+    "message": "Preprečevanje lepljenja gesel omeji dober pravilnik o varnosti. [Več o tem](https://web.dev/password-inputs-can-be-pasted-into)."
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | failureTitle": {
+    "message": "Uporabnikom preprečuje lepljenje v polja za gesla"
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | title": {
+    "message": "Uporabnikom omogoča lepljenje v polja za gesla"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | columnProtocol": {
+    "message": "Protokol"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | description": {
+    "message": "HTTP/2 ima več prednosti pred HTTP/1.1, vključno z binarnimi glavami, multipleksiranjem in potisnimi sredstvi iz strežnika. [Več o tem](https://web.dev/uses-http2)."
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 zahteva ni bila poslana prek HTTP/2}one{# zahteva ni bila poslana prek HTTP/2}two{# zahtevi nista bili poslani prek HTTP/2}few{# zahteve niso bile poslane prek HTTP/2}other{# zahtev ni bilo poslanih prek HTTP/2}}"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | failureTitle": {
+    "message": "Ne uporablja HTTP/2 za vsa svoja sredstva"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | title": {
+    "message": "Uporablja HTTP/2 za svoja sredstva"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-passive-event-listeners.js | description": {
+    "message": "Posluševalnike dogodkov dotika in kolesca lahko označite kot `passive` zaradi izboljšanja delovanja pomikanja na strani. [Več o tem](https://web.dev/uses-passive-event-listeners)."
+  },
+  "lighthouse-core/audits/dobetterweb/uses-passive-event-listeners.js | failureTitle": {
+    "message": "Ne uporablja pasivnih poslušalcev za izboljšanje delovanja pomikanja"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-passive-event-listeners.js | title": {
+    "message": "Uporablja pasivne poslušalce za izboljšanje delovanja pomikanja"
+  },
+  "lighthouse-core/audits/errors-in-console.js | columnDesc": {
+    "message": "Opis"
+  },
+  "lighthouse-core/audits/errors-in-console.js | description": {
+    "message": "Napake, zabeležene v konzoli, označujejo nerazrešene težave. Te so lahko posledica neuspešnih omrežnih zahtev in drugih težav z brskalnikom. [Več o tem](https://web.dev/errors-in-console)"
+  },
+  "lighthouse-core/audits/errors-in-console.js | failureTitle": {
+    "message": "Napake brskalnika so bile zabeležene v konzoli"
+  },
+  "lighthouse-core/audits/errors-in-console.js | title": {
+    "message": "V konzoli ni bila zabeležena nobena napaka brskalnika"
+  },
+  "lighthouse-core/audits/font-display.js | description": {
+    "message": "Izkoristite funkcijo CSS-ja za prikaz pisave, s čimer poskrbite, da je med nalaganjem spletne pisave besedilo vidno uporabnikom. [Več o tem](https://developers.google.com/web/updates/2016/02/font-display)."
+  },
+  "lighthouse-core/audits/font-display.js | failureTitle": {
+    "message": "Poskrbite, da bo med nalaganjem spletne pisave besedilo ostalo vidno"
+  },
+  "lighthouse-core/audits/font-display.js | title": {
+    "message": "Vse besedilo ostaja vidno med nalaganjem spletne pisave"
+  },
+  "lighthouse-core/audits/font-display.js | undeclaredFontURLWarning": {
+    "message": "Orodje Lighthouse ni utegnilo samodejno preveriti vrednosti font-display za naslednji URL: {fontURL}."
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | columnActual": {
+    "message": "Razmerje stranic (dejansko)"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | columnDisplayed": {
+    "message": "Razmerje stranic (prikazano)"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | description": {
+    "message": "Mere prikaza slike se morajo ujemati z naravnim razmerjem stranic. [Več o tem](https://web.dev/image-aspect-ratio)."
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | failureTitle": {
+    "message": "Prikazuje slike z nepravilnim razmerjem stranic"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | title": {
+    "message": "Prikazuje slike s pravilnim razmerjem stranic"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | warningCompute": {
+    "message": "Neveljavni podatki o velikosti slike {url}"
+  },
+  "lighthouse-core/audits/installable-manifest.js | description": {
+    "message": "Brskalniki lahko proaktivno pozovejo uporabnike, da dodajo vašo aplikacijo na začetni zaslon, kar lahko privede do več dejavnosti. [Več o tem](https://developers.google.com/web/tools/lighthouse/audits/install-prompt)."
+  },
+  "lighthouse-core/audits/installable-manifest.js | failureTitle": {
+    "message": "Manifest spletne aplikacije ne izpolnjuje zahtev za izvedljivost namestitve"
+  },
+  "lighthouse-core/audits/installable-manifest.js | title": {
+    "message": "Manifest spletne aplikacije izpolnjuje zahteve za izvedljivost namestitve"
+  },
+  "lighthouse-core/audits/is-on-https.js | columnInsecureURL": {
+    "message": "URL zahtev, ki niso varne"
+  },
+  "lighthouse-core/audits/is-on-https.js | description": {
+    "message": "Vsa spletna mesta morajo biti zaščitena s HTTPS, tudi tista, ki nimajo opravka z občutljivimi podatki. HTTPS vsiljivcem preprečuje manipuliranje s komunikacijami ali pasivno poslušanje komunikacij med aplikacijo in uporabniki ter je pogoj za HTTP/2 in veliko novih API-jev za spletna okolja. [Več o tem](https://web.dev/is-on-https)."
+  },
+  "lighthouse-core/audits/is-on-https.js | displayValue": {
+    "message": "{itemCount,plural, =1{Najdena je bila 1 zahteva, ki ni varna}one{Najdena je bila # zahteva, ki ni varna}two{Najdeni sta bili # zahtevi, ki nista varni}few{Najdene so bile # zahteve, ki niso varne}other{Najdenih je bilo # zahtev, ki niso varne}}"
+  },
+  "lighthouse-core/audits/is-on-https.js | failureTitle": {
+    "message": "Ne uporablja HTTPS"
+  },
+  "lighthouse-core/audits/is-on-https.js | title": {
+    "message": "Uporablja HTTPS"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | description": {
+    "message": "Hitro nalaganje strani prek mobilnega omrežja zagotavlja dobro uporabniško izkušnjo pri uporabi mobilnih naprav. [Več o tem](https://developers.google.com/web/tools/lighthouse/audits/fast-3g)."
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | displayValueText": {
+    "message": "Interaktivno ob {timeInMs, number, seconds} s"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | displayValueTextWithOverride": {
+    "message": "Interaktivno v simuliranem mobilnem omrežju ob {timeInMs, number, seconds} s"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | explanationLoadSlow": {
+    "message": "Stran se nalaga prepočasi in ni interaktivna v 10 sekundah. Oglejte si priložnosti in diagnostiko v razdelku »Delovanje«, če želite izvedeti, kako do izboljšanja."
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | failureTitle": {
+    "message": "Nalaganje strani ni dovolj hitro v mobilnih omrežjih"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | title": {
+    "message": "Nalaganje strani je dovolj hitro v mobilnih omrežjih"
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | columnCategory": {
+    "message": "Kategorija"
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | description": {
+    "message": "Razmislite o skrajšanju časa, ki ga porabite za razčlenjevanje, prevajanje in izvajanje JavaScripta. Ugotovili boste, da vam lahko pri tem pomaga dostavljanje manjših paketov koristne vsebine JavaScript."
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | failureTitle": {
+    "message": "Minimizirajte delo glavne niti"
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | title": {
+    "message": "Minimizira delo glavne niti"
+  },
+  "lighthouse-core/audits/manual/pwa-cross-browser.js | description": {
+    "message": "Če želite doseči največ uporabnikov, morajo spletna mesta delovati v vsakem pomembnejšem brskalniku. [Več o tem](https://developers.google.com/web/progressive-web-apps/checklist#site-works-cross-browser)."
+  },
+  "lighthouse-core/audits/manual/pwa-cross-browser.js | title": {
+    "message": "Spletno mesto deluje v različnih brskalnikih"
+  },
+  "lighthouse-core/audits/manual/pwa-each-page-has-url.js | description": {
+    "message": "Zagotovite povezave v globino do posameznih strani prek URL-jev in poskrbite, da so zaradi objavljanja v družbenih omrežjih ti URL-ji enolični. [Več o tem](https://developers.google.com/web/progressive-web-apps/checklist#each-page-has-a-url)."
+  },
+  "lighthouse-core/audits/manual/pwa-each-page-has-url.js | title": {
+    "message": "Vsaka stran ima URL"
+  },
+  "lighthouse-core/audits/manual/pwa-page-transitions.js | description": {
+    "message": "Prehodi morajo ob dotikanju delovati hitro in tekoče tudi v počasnem omrežju, kar je ključno za vtis zmogljivega delovanja. [Več o tem](https://developers.google.com/web/progressive-web-apps/checklist#page-transitions-dont-feel-like-they-block-on-the-network)."
+  },
+  "lighthouse-core/audits/manual/pwa-page-transitions.js | title": {
+    "message": "Prehodi med stranmi ne dajejo občutka, kot da so blokirani v omrežju"
+  },
+  "lighthouse-core/audits/metrics/estimated-input-latency.js | description": {
+    "message": "Predvidena vhodna zakasnitev je ocena, koliko milisekund potrebuje vaša aplikacija za odziv na uporabnikovo dejavnost med najaktivnejšimi 5 sekundami pri nalaganju strani. Če je zakasnitev večja od 50 ms, se lahko uporabnikom zdi, da se aplikacija zatika. [Več o tem](https://developers.google.com/web/tools/lighthouse/audits/estimated-input-latency)."
+  },
+  "lighthouse-core/audits/metrics/estimated-input-latency.js | title": {
+    "message": "Ocenjena zakasnitev vnosa"
+  },
+  "lighthouse-core/audits/metrics/first-contentful-paint.js | description": {
+    "message": "Prvi vsebinski izris označuje čas, ko je izrisano prvo besedilo oziroma je izrisana prva slika. [Več o tem](https://developers.google.com/web/tools/lighthouse/audits/first-contentful-paint)."
+  },
+  "lighthouse-core/audits/metrics/first-contentful-paint.js | title": {
+    "message": "Prvo vsebinsko barvanje"
+  },
+  "lighthouse-core/audits/metrics/first-cpu-idle.js | description": {
+    "message": "Prva nedejavnost CPE-ja označuje čas, po katerem je glavna nit strani dovolj neobremenjena, da lahko obravnava vnos. [Več o tem](https://developers.google.com/web/tools/lighthouse/audits/first-interactive)."
+  },
+  "lighthouse-core/audits/metrics/first-cpu-idle.js | title": {
+    "message": "Prva nedejavnost CPE-ja"
+  },
+  "lighthouse-core/audits/metrics/first-meaningful-paint.js | description": {
+    "message": "Prvo smiselno barvanje meri, kdaj je vidna glavna vsebina strani. [Več o tem](https://developers.google.com/web/tools/lighthouse/audits/first-meaningful-paint)."
+  },
+  "lighthouse-core/audits/metrics/first-meaningful-paint.js | title": {
+    "message": "Prvo smiselno barvanje"
+  },
+  "lighthouse-core/audits/metrics/interactive.js | description": {
+    "message": "Čas do interaktivnosti je čas, potreben, da stran postane povsem interaktivna. [Več o tem](https://developers.google.com/web/tools/lighthouse/audits/consistently-interactive)."
+  },
+  "lighthouse-core/audits/metrics/interactive.js | title": {
+    "message": "Čas do interaktivnosti"
+  },
+  "lighthouse-core/audits/metrics/max-potential-fid.js | description": {
+    "message": "Največja potencialna zakasnitev od prvega vnosa, na katero lahko uporabniki naletijo, je trajanje (v ms) najdaljšega opravila. [Več o tem](https://developers.google.com/web/updates/2018/05/first-input-delay)."
+  },
+  "lighthouse-core/audits/metrics/max-potential-fid.js | title": {
+    "message": "Najv. potencial. zakasn. od prvega vnosa"
+  },
+  "lighthouse-core/audits/metrics/speed-index.js | description": {
+    "message": "Indeks hitrosti prikazuje, kako hitro je vsebina strani vidno izpolnjena. [Več o tem](https://developers.google.com/web/tools/lighthouse/audits/speed-index)."
+  },
+  "lighthouse-core/audits/metrics/speed-index.js | title": {
+    "message": "Indeks hitrosti"
+  },
+  "lighthouse-core/audits/metrics/total-blocking-time.js | description": {
+    "message": "Skupek vseh časovnih obdobij med FCP-jem in časom do interaktivnosti, ko je dolžina opravila presegla 50 ms, izražena v milisekundah."
+  },
+  "lighthouse-core/audits/metrics/total-blocking-time.js | title": {
+    "message": "Skupni čas blokiranja"
+  },
+  "lighthouse-core/audits/network-rtt.js | description": {
+    "message": "Omrežni časi povratnega potovanja (RTT) imajo velik vpliv na učinkovitost delovanja. Če je RTT do izvora velik, to kaže na to, da bi lahko strežniki bližje uporabniku izboljšali učinkovitost delovanja. [Več o tem](https://hpbn.co/primer-on-latency-and-bandwidth/)."
+  },
+  "lighthouse-core/audits/network-rtt.js | title": {
+    "message": "Časi omrežnega povratnega potovanja"
+  },
+  "lighthouse-core/audits/network-server-latency.js | description": {
+    "message": "Na spletno učinkovitost delovanja lahko vplivajo zakasnitve strežnikov. Če je zakasnitev strežnika za izvor velika, to kaže na to, da je strežnik preobremenjen ali ima slabo zaledno učinkovitost delovanja. [Več o tem](https://hpbn.co/primer-on-web-performance/#analyzing-the-resource-waterfall)."
+  },
+  "lighthouse-core/audits/network-server-latency.js | title": {
+    "message": "Zakasnitve strežnikovega zaledja"
+  },
+  "lighthouse-core/audits/offline-start-url.js | description": {
+    "message": "Proces storitve spletni aplikaciji omogoča zanesljivost v nepredvidljivih omrežnih okoliščinah. [Več o tem](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)."
+  },
+  "lighthouse-core/audits/offline-start-url.js | failureTitle": {
+    "message": "`start_url` se ne odzove s kodo stanja HTTP 200, ko nima povezave"
+  },
+  "lighthouse-core/audits/offline-start-url.js | title": {
+    "message": "`start_url` se odzove s kodo stanja HTTP 200, ko nima povezave"
+  },
+  "lighthouse-core/audits/offline-start-url.js | warningCantStart": {
+    "message": "Lighthouse ni mogel prebrati URL-ja `start_url` v manifestu. Za URL dokumenta se je posledično imelo ta URL: `start_url`. Sporočilo o napaki: »{manifestWarning}«."
+  },
+  "lighthouse-core/audits/performance-budget.js | columnOverBudget": {
+    "message": "Prek proračuna"
+  },
+  "lighthouse-core/audits/performance-budget.js | description": {
+    "message": "Količino in velikosti omrežnih zahtev imejte pod cilji, ki so nastavljeni z navedenim proračunom za uspešnost. [Več o tem](https://developers.google.com/web/tools/lighthouse/audits/budgets)."
+  },
+  "lighthouse-core/audits/performance-budget.js | requestCountOverBudget": {
+    "message": "{count,plural, =1{1 zahteva}one{# zahteva}two{# zahtevi}few{# zahteve}other{# zahtev}}"
+  },
+  "lighthouse-core/audits/performance-budget.js | title": {
+    "message": "Proračun za uspešnost"
+  },
+  "lighthouse-core/audits/redirects-http.js | description": {
+    "message": "Če ste že nastavili protokol HTTPS, poskrbite za preusmeritev vsega prometa prek protokola HTTP na protokol HTTPS, da zagotovite varne spletne funkcije vsem uporabnikom. [Več o tem](https://developers.google.com/web/tools/lighthouse/audits/http-redirects-to-https)."
+  },
+  "lighthouse-core/audits/redirects-http.js | failureTitle": {
+    "message": "Ne preusmeri prometa prek protokola HTTP na protokol HTTPS"
+  },
+  "lighthouse-core/audits/redirects-http.js | title": {
+    "message": "Preusmeri promet prek protokola HTTP na protokol HTTPS"
+  },
+  "lighthouse-core/audits/redirects.js | description": {
+    "message": "Preusmeritve vnašajo dodatne zakasnitve nalaganja strani. [Več o tem](https://developers.google.com/web/tools/lighthouse/audits/redirects)."
+  },
+  "lighthouse-core/audits/redirects.js | title": {
+    "message": "Izogibajte se preusmeritvam na več strani"
+  },
+  "lighthouse-core/audits/resource-summary.js | description": {
+    "message": "Če želite nastaviti proračune za količino in velikost sredstev strani, dodajte datoteko budget.json. [Več o tem](https://developers.google.com/web/tools/lighthouse/audits/budgets)."
+  },
+  "lighthouse-core/audits/resource-summary.js | displayValue": {
+    "message": "{requestCount,plural, =1{1 zahteva • {byteCount, number, bytes} KB}one{# zahteva • {byteCount, number, bytes} KB}two{# zahtevi • {byteCount, number, bytes} KB}few{# zahteve • {byteCount, number, bytes} KB}other{# zahtev • {byteCount, number, bytes} KB}}"
+  },
+  "lighthouse-core/audits/resource-summary.js | title": {
+    "message": "Število zahtev naj bo majhno in prenosi naj ne bodo preveliki"
+  },
+  "lighthouse-core/audits/seo/canonical.js | description": {
+    "message": "Kanonične povezave predlagajo, kateri URL naj bo prikazan v rezultatih iskanja. [Več o tem](https://web.dev/canonical)."
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationConflict": {
+    "message": "Več URL-jev v sporu ({urlList})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationDifferentDomain": {
+    "message": "Kaže na drugo domeno ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationInvalid": {
+    "message": "Neveljaven URL ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationPointsElsewhere": {
+    "message": "Kaže na drugo lokacijo `hreflang` ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationRelative": {
+    "message": "Relativni URL ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationRoot": {
+    "message": "Kaže na korenski URL domene (domačo stran), namesto na enakovredno stran z vsebino"
+  },
+  "lighthouse-core/audits/seo/canonical.js | failureTitle": {
+    "message": "Dokument nima veljavne povezave `rel=canonical`"
+  },
+  "lighthouse-core/audits/seo/canonical.js | title": {
+    "message": "Dokument ima veljaven atribut `rel=canonical`"
+  },
+  "lighthouse-core/audits/seo/font-size.js | description": {
+    "message": "Velikosti pisave, manjše od 12 slikovnih pik, so premajhne, da bi bile berljive, zato morajo obiskovalci z mobilnimi napravami s potezo razširjanja prstov na zaslonu povečati strani, da bi jih lahko prebrali. Poskušajte zagotoviti, da bo več kot 60 % besedila na strani velikosti, ki ni manjša od 12 slikovnih pik. [Več o tem](https://web.dev/font-size)."
+  },
+  "lighthouse-core/audits/seo/font-size.js | displayValue": {
+    "message": "{decimalProportion, number, extendedPercent} berljivega besedila"
+  },
+  "lighthouse-core/audits/seo/font-size.js | explanationViewport": {
+    "message": "Besedilo je neberljivo, ker ni metaoznake »viewport«, optimizirane za zaslone mobilnih naprav."
+  },
+  "lighthouse-core/audits/seo/font-size.js | explanationWithDisclaimer": {
+    "message": "{decimalProportion, number, extendedPercent} besedila je premajhnega (na podlagi {decimalProportionVisited, number, extendedPercent} vzorca)."
+  },
+  "lighthouse-core/audits/seo/font-size.js | failureTitle": {
+    "message": "Dokument ne uporablja berljivih velikosti pisav"
+  },
+  "lighthouse-core/audits/seo/font-size.js | title": {
+    "message": "Dokument uporablja berljive velikosti pisav"
+  },
+  "lighthouse-core/audits/seo/hreflang.js | description": {
+    "message": "Povezave hreflang iskalnikom povedo, katero različico strani naj prikažejo v rezultatih iskanja za določen jezik ali regijo. [Več o tem](https://web.dev/hreflang)."
+  },
+  "lighthouse-core/audits/seo/hreflang.js | failureTitle": {
+    "message": "Dokument nima veljavnega atributa `hreflang`"
+  },
+  "lighthouse-core/audits/seo/hreflang.js | title": {
+    "message": "Dokument ima veljaven atribut `hreflang`"
+  },
+  "lighthouse-core/audits/seo/http-status-code.js | description": {
+    "message": "Strani z neuspešnimi kodami stanja HTTP morda ne bodo pravilno indeksirane. [Več o tem](https://web.dev/http-status-code)."
+  },
+  "lighthouse-core/audits/seo/http-status-code.js | failureTitle": {
+    "message": "Stran ima neuspešno kodo stanja HTTP"
+  },
+  "lighthouse-core/audits/seo/http-status-code.js | title": {
+    "message": "Stran ima uspešno kodo stanja HTTP"
+  },
+  "lighthouse-core/audits/seo/is-crawlable.js | description": {
+    "message": "Če iskalniki nimajo dovoljenja za iskanje po vsebini vaših strani, jih ne morejo vključiti v rezultate iskanja. [Več o tem](https://web.dev/is-crawable)."
+  },
+  "lighthouse-core/audits/seo/is-crawlable.js | failureTitle": {
+    "message": "Indeksiranje strani je blokirano"
+  },
+  "lighthouse-core/audits/seo/is-crawlable.js | title": {
+    "message": "Indeksiranje strani ni blokirano"
+  },
+  "lighthouse-core/audits/seo/link-text.js | description": {
+    "message": "Opisno besedilo povezave iskalnikom pomaga razumeti vašo vsebino. [Več o tem](https://web.dev/link-text)."
+  },
+  "lighthouse-core/audits/seo/link-text.js | displayValue": {
+    "message": "{itemCount,plural, =1{Najdena je 1 povezava}one{Najdena je # povezava}two{Najdeni sta # povezavi}few{Najdene so # povezave}other{Najdenih je # povezav}}"
+  },
+  "lighthouse-core/audits/seo/link-text.js | failureTitle": {
+    "message": "Povezave nimajo opisnega besedila"
+  },
+  "lighthouse-core/audits/seo/link-text.js | title": {
+    "message": "Povezave imajo opisno besedilo"
+  },
+  "lighthouse-core/audits/seo/manual/structured-data.js | description": {
+    "message": "Za preverjanje strukturiranih podatkov zaženite [orodje za preizkušanje strukturiranih podatkov](https://search.google.com/structured-data/testing-tool/) in [orodje Linter za strukturirane podatke](http://linter.structured-data.org/). [Več o tem](https://web.dev/structured-data)."
+  },
+  "lighthouse-core/audits/seo/manual/structured-data.js | title": {
+    "message": "Strukturirani podatki so veljavni"
+  },
+  "lighthouse-core/audits/seo/meta-description.js | description": {
+    "message": "Za podroben povzetek vsebine strani so lahko v rezultatih iskanja vključeni metaopisi. [Več o tem](https://web.dev/meta-description)."
+  },
+  "lighthouse-core/audits/seo/meta-description.js | explanation": {
+    "message": "Opisno besedilo je prazno."
+  },
+  "lighthouse-core/audits/seo/meta-description.js | failureTitle": {
+    "message": "Dokument nima metaopisa"
+  },
+  "lighthouse-core/audits/seo/meta-description.js | title": {
+    "message": "Dokument ima metaopis"
+  },
+  "lighthouse-core/audits/seo/plugins.js | description": {
+    "message": "Iskalniki ne morejo indeksirati vsebine vtičnikov in številne naprave vtičnike omejujejo ali jih ne podpirajo. [Več o tem](https://web.dev/plugins)."
+  },
+  "lighthouse-core/audits/seo/plugins.js | failureTitle": {
+    "message": "Dokument uporablja vtičnike"
+  },
+  "lighthouse-core/audits/seo/plugins.js | title": {
+    "message": "Dokument ne vsebuje vtičnikov"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | description": {
+    "message": "Če datoteka robots.txt ni pravilno oblikovana, iskalniki po spletni vsebini morda ne bodo razumeli, kako želite, da se išče po spletni vsebini vašega spletnega mesta in se jo indeksira. [Več o tem](https://web.dev/robots-txt)."
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | displayValueHttpBadCode": {
+    "message": "Zahteva za datoteko robots.txt je vrnila to stanje HTTP: {statusCode}"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | displayValueValidationError": {
+    "message": "{itemCount,plural, =1{Najdena je bila 1 napaka}one{Najdena je bila # napaka}two{Najdeni sta bili # napaki}few{Najdene so bile # napake}other{Najdenih je bilo # napak}}"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | explanation": {
+    "message": "Lighthouse ni mogel prenesti datoteke robots.txt"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | failureTitle": {
+    "message": "Datoteka robots.txt ni veljavna"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | title": {
+    "message": "Datoteka robots.txt je veljavna"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | description": {
+    "message": "Interaktivni elementi, kot so gumbi in povezave, morajo biti dovolj veliki (48 x 48 slikovnih pik) in okoli njih mora biti dovolj prostora, da se jih je mogoče dotakniti, ne da bi se pri tem dotaknili drugih elementov. [Več o tem](https://web.dev/tap-targets)."
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | displayValue": {
+    "message": "{decimalProportion, number, percent} ciljev dotika primerne velikosti"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | explanationViewportMetaNotOptimized": {
+    "message": "Cilji za dotik so premajhni, ker ni metaoznake »viewport«, optimizirane za zaslone mobilnih naprav."
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | failureTitle": {
+    "message": "Cilji za dotik niso primerne velikosti"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | overlappingTargetHeader": {
+    "message": "Prekrivajoči se cilj"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | tapTargetHeader": {
+    "message": "Cilj za dotik"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | title": {
+    "message": "Cilji za dotikanje so ustrezne velikosti"
+  },
+  "lighthouse-core/audits/service-worker.js | description": {
+    "message": "Proces storitve je tehnologija, ki aplikaciji omogoča uporabo številnih funkcij moderne spletne aplikacije, na primer delovanje brez povezave, dodajanje na začetni zaslon in potisna obvestila. [Več o tem](https://developers.google.com/web/tools/lighthouse/audits/registered-service-worker)."
+  },
+  "lighthouse-core/audits/service-worker.js | explanationBadManifest": {
+    "message": "To stran nadzira proces storitve, vendar ni bilo mogoče najti ničesar od tega: `start_url`, ker ni bilo mogoče razčleniti manifesta kot veljavne datoteke JSON"
+  },
+  "lighthouse-core/audits/service-worker.js | explanationBadStartUrl": {
+    "message": "To stran nadzira proces storitve, vendar `start_url` ({startUrl}) ni v obsegu procesa storitve ({scopeUrl})"
+  },
+  "lighthouse-core/audits/service-worker.js | explanationNoManifest": {
+    "message": "To stran nadzira proces storitve, vendar ni bilo mogoče najti ničesar od tega: `start_url`, ker niso bili preneseni manifesti."
+  },
+  "lighthouse-core/audits/service-worker.js | explanationOutOfScope": {
+    "message": "Ta izvor ima enega ali več procesov storitve, vendar stran ({pageUrl}) ni v obsegu."
+  },
+  "lighthouse-core/audits/service-worker.js | failureTitle": {
+    "message": "Ne registrira procesa storitve, ki nadzira stran in to: `start_url`"
+  },
+  "lighthouse-core/audits/service-worker.js | title": {
+    "message": "Registrira proces storitve, ki nadzira stran in to: `start_url`"
+  },
+  "lighthouse-core/audits/splash-screen.js | description": {
+    "message": "S tematskim pozdravnim zaslonom zagotovite visokokakovostno izkušnjo, ko uporabniki zaženejo aplikacijo z začetnih zaslonov. [Več o tem](https://developers.google.com/web/tools/lighthouse/audits/custom-splash-screen)."
+  },
+  "lighthouse-core/audits/splash-screen.js | failureTitle": {
+    "message": "Ni konfigurirano za pozdravni zaslon po meri"
+  },
+  "lighthouse-core/audits/splash-screen.js | title": {
+    "message": "Konfigurirano za pozdravni zaslon po meri"
+  },
+  "lighthouse-core/audits/themed-omnibox.js | description": {
+    "message": "Naslovno vrstico brskalnika je mogoče prilagoditi s temo, ki se ujema s spletnim mestom. [Več o tem](https://developers.google.com/web/tools/lighthouse/audits/address-bar)."
+  },
+  "lighthouse-core/audits/themed-omnibox.js | failureTitle": {
+    "message": "Ne nastavi barve teme za naslovno vrstico."
+  },
+  "lighthouse-core/audits/themed-omnibox.js | title": {
+    "message": "Nastavi barvo teme za naslovno vrstico."
+  },
+  "lighthouse-core/audits/third-party-summary.js | columnBlockingTime": {
+    "message": "Čas blokiranja glavne niti"
+  },
+  "lighthouse-core/audits/third-party-summary.js | columnThirdParty": {
+    "message": "Drugi ponudniki"
+  },
+  "lighthouse-core/audits/third-party-summary.js | description": {
+    "message": "Koda drugega ponudnika lahko znatno vpliva na učinkovitost nalaganja. Omejite število odvečnih drugih ponudnikov in poskusite naložiti kodo drugega ponudnika, ko je stran prvenstveno končala nalaganje. [Več o tem](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/loading-third-party-javascript/)."
+  },
+  "lighthouse-core/audits/third-party-summary.js | displayValue": {
+    "message": "Koda drugega ponudnika je blokirala glavno nit {timeInMs, number, milliseconds} ms"
+  },
+  "lighthouse-core/audits/third-party-summary.js | failureTitle": {
+    "message": "Zmanjšanje vpliva kode drugega ponudnika"
+  },
+  "lighthouse-core/audits/third-party-summary.js | title": {
+    "message": "Uporaba drugih ponudnikov"
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | description": {
+    "message": "»Čas do prvega bajta« navaja čas, v katerem vaš strežnik pošlje odziv. [Več o tem](https://developers.google.com/web/tools/lighthouse/audits/ttfb)."
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | displayValue": {
+    "message": "Korenski dokument je terjal {timeInMs, number, milliseconds} ms"
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | failureTitle": {
+    "message": "Skrajšajte odzivne čase strežnika (TTFB)"
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | title": {
+    "message": "Odzivni časi strežnika so nizki (TTFB)"
+  },
+  "lighthouse-core/audits/user-timings.js | columnDuration": {
+    "message": "Trajanje"
+  },
+  "lighthouse-core/audits/user-timings.js | columnStartTime": {
+    "message": "Začetni čas"
+  },
+  "lighthouse-core/audits/user-timings.js | columnType": {
+    "message": "Vrsta"
+  },
+  "lighthouse-core/audits/user-timings.js | description": {
+    "message": "Razmislite o uporabi API-ja za merjenje dejanskih izvedb uporabniških dogodkov (User Timing API), če želite izmeriti dejansko delovanje aplikacije med ključnimi uporabniškimi izkušnjami. [Več o tem](https://developers.google.com/web/tools/lighthouse/audits/user-timing)."
+  },
+  "lighthouse-core/audits/user-timings.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 trajanje izvedbe uporabniških dogodkov}one{# trajanje izvedbe uporabniških dogodkov}two{# trajanji izvedbe uporabniških dogodkov}few{# trajanja izvedbe uporabniških dogodkov}other{# trajanj izvedbe uporabniških dogodkov}}"
+  },
+  "lighthouse-core/audits/user-timings.js | title": {
+    "message": "Oznake in merjenja trajanj izvedbe uporabniških dogodkov"
+  },
+  "lighthouse-core/audits/uses-rel-preconnect.js | crossoriginWarning": {
+    "message": "Povezava <link> za vnaprejšnje povezovanje je bila najdena za »{securityOrigin}«, vendar je brskalnik ni uporabil. Preverite, ali pravilno uporabljate atribut `crossorigin`."
+  },
+  "lighthouse-core/audits/uses-rel-preconnect.js | description": {
+    "message": "Razmislite o dodajanju namigov za sredstva (`preconnect` ali `dns-prefetch`) zaradi vzpostavljanja zgodnjih povezav s pomembnimi izvori drugih ponudnikov. [Več o tem](https://developers.google.com/web/fundamentals/performance/resource-prioritization#preconnect)."
+  },
+  "lighthouse-core/audits/uses-rel-preconnect.js | title": {
+    "message": "Vnaprej se povežite z zahtevanimi izvori"
+  },
+  "lighthouse-core/audits/uses-rel-preload.js | crossoriginWarning": {
+    "message": "Najden je bil element <link> za »{preloadURL}«, vendar ga brskalnik ni uporabil. Preverite, ali pravilno uporabljate atribut `crossorigin`."
+  },
+  "lighthouse-core/audits/uses-rel-preload.js | description": {
+    "message": "Razmislite o uporabi oznake `<link rel=preload>` za dodeljevanje višje stopnje prednosti pri pridobivanju sredstev, ki so trenutno zahtevana pri nadaljnjem nalaganju strani. [Več o tem](https://developers.google.com/web/tools/lighthouse/audits/preload)."
+  },
+  "lighthouse-core/audits/uses-rel-preload.js | title": {
+    "message": "Vnaprej nalagajte ključne zahteve"
+  },
+  "lighthouse-core/audits/viewport.js | description": {
+    "message": "Dodajte oznako `<meta name=\"viewport\">`, da optimizirate aplikacijo za zaslone mobilnih naprav. [Več o tem](https://developers.google.com/web/tools/lighthouse/audits/has-viewport-meta-tag)."
+  },
+  "lighthouse-core/audits/viewport.js | explanationNoTag": {
+    "message": "Ni oznak `<meta name=\"viewport\">`"
+  },
+  "lighthouse-core/audits/viewport.js | failureTitle": {
+    "message": "Nima oznake `<meta name=\"viewport\">` s tem: `width` ali `initial-scale`"
+  },
+  "lighthouse-core/audits/viewport.js | title": {
+    "message": "Ima oznako `<meta name=\"viewport\">` s tem: `width` ali `initial-scale`"
+  },
+  "lighthouse-core/audits/without-javascript.js | description": {
+    "message": "Aplikacija bi morala prikazati nekaj vsebine, če je JavaScript onemogočen, četudi zgolj opozorilo uporabniku, da uporaba aplikacije terja JavaScript. [Več o tem](https://developers.google.com/web/tools/lighthouse/audits/no-js)."
+  },
+  "lighthouse-core/audits/without-javascript.js | explanation": {
+    "message": "Telo strani bi moralo upodobiti nekaj vsebine, če njeni skripti niso na voljo."
+  },
+  "lighthouse-core/audits/without-javascript.js | failureTitle": {
+    "message": "Ne zagotavlja nadomestne vsebine, ko JavaScript ni na voljo"
+  },
+  "lighthouse-core/audits/without-javascript.js | title": {
+    "message": "Vsebuje nekaj vsebine, ko JavaScript ni na voljo"
+  },
+  "lighthouse-core/audits/works-offline.js | description": {
+    "message": "Če ustvarjate moderno spletno aplikacijo, razmislite o uporabi procesa storitve, da lahko aplikacija deluje brez povezave. [Več o tem](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)."
+  },
+  "lighthouse-core/audits/works-offline.js | failureTitle": {
+    "message": "Trenutna stran se ne odzove s kodo stanja HTTP 200, ko nima povezave"
+  },
+  "lighthouse-core/audits/works-offline.js | title": {
+    "message": "Trenutna stran se odzove s kodo stanja HTTP 200, ko nima povezave"
+  },
+  "lighthouse-core/audits/works-offline.js | warningNoLoad": {
+    "message": "Stran se morda ne naloži brez povezave, ker je bil preizkusni URL ({requested}) preusmerjen na »{final}«. Poskusite neposredno preizkusiti drugi URL."
+  },
+  "lighthouse-core/config/default-config.js | a11yAriaGroupDescription": {
+    "message": "Tu imate na voljo priložnosti, da izboljšate uporabo atributov ARIA v aplikaciji, s čimer lahko izboljšate izkušnjo za uporabnike pomožnih tehnologij, kot je bralnik zaslona."
+  },
+  "lighthouse-core/config/default-config.js | a11yAriaGroupTitle": {
+    "message": "ARIA"
+  },
+  "lighthouse-core/config/default-config.js | a11yAudioVideoGroupDescription": {
+    "message": "To so priložnosti za izboljšanje nadomestne vsebine za zvok in videoposnetke. S tem lahko izboljšate izkušnjo za uporabnike z motnjami sluha ali vida."
+  },
+  "lighthouse-core/config/default-config.js | a11yAudioVideoGroupTitle": {
+    "message": "Zvok in video"
+  },
+  "lighthouse-core/config/default-config.js | a11yBestPracticesGroupDescription": {
+    "message": "Ti elementi izpostavijo pogoste najboljše postopke za zagotavljanje dostopnosti."
+  },
+  "lighthouse-core/config/default-config.js | a11yBestPracticesGroupTitle": {
+    "message": "Najboljši postopki"
+  },
+  "lighthouse-core/config/default-config.js | a11yCategoryDescription": {
+    "message": "Ta preverjanja izpostavijo priložnosti za [izboljšanje dostopnosti vaše spletne aplikacije](https://developers.google.com/web/fundamentals/accessibility). Samodejno je mogoče ugotoviti samo podnabor morebitnih težav z dostopnostjo, zato spodbujamo ročno preverjanje."
+  },
+  "lighthouse-core/config/default-config.js | a11yCategoryManualDescription": {
+    "message": "Ti elementi se nanašajo na področja, ki jih ne more obdelati samodejno orodje za preizkušanje. Več o tem lahko preberete v našem vodniku o [izvedbi pregleda dostopnosti](https://developers.google.com/web/fundamentals/accessibility/how-to-review)."
+  },
+  "lighthouse-core/config/default-config.js | a11yCategoryTitle": {
+    "message": "Dostopnost"
+  },
+  "lighthouse-core/config/default-config.js | a11yColorContrastGroupDescription": {
+    "message": "Tu imate na voljo priložnosti, da izboljšate berljivost vsebine."
+  },
+  "lighthouse-core/config/default-config.js | a11yColorContrastGroupTitle": {
+    "message": "Kontrast"
+  },
+  "lighthouse-core/config/default-config.js | a11yLanguageGroupDescription": {
+    "message": "Tu imate na voljo priložnosti, da izboljšate, kako si uporabniki v različnih jezikih tolmačijo vašo vsebino."
+  },
+  "lighthouse-core/config/default-config.js | a11yLanguageGroupTitle": {
+    "message": "Internacionalizacija in lokalizacija"
+  },
+  "lighthouse-core/config/default-config.js | a11yNamesLabelsGroupDescription": {
+    "message": "Tu imate na voljo priložnosti, da izboljšate pomen kontrolnikov v aplikaciji. S tem lahko izboljšate izkušnjo uporabnikov pomožne tehnologije, kot je bralnik zaslona."
+  },
+  "lighthouse-core/config/default-config.js | a11yNamesLabelsGroupTitle": {
+    "message": "Imena in oznake"
+  },
+  "lighthouse-core/config/default-config.js | a11yNavigationGroupDescription": {
+    "message": "To so priložnosti, da izboljšate premikanje po aplikaciji s tipkovnico."
+  },
+  "lighthouse-core/config/default-config.js | a11yNavigationGroupTitle": {
+    "message": "Pomikanje"
+  },
+  "lighthouse-core/config/default-config.js | a11yTablesListsVideoGroupDescription": {
+    "message": "To so priložnosti, da z uporabo pomožnih tehnologij, kot je bralnik zaslona, izboljšate izkušnjo pri branju tabelarnih podatkov ali podatkov na seznamih."
+  },
+  "lighthouse-core/config/default-config.js | a11yTablesListsVideoGroupTitle": {
+    "message": "Tabele in seznami"
+  },
+  "lighthouse-core/config/default-config.js | bestPracticesCategoryTitle": {
+    "message": "Najboljši postopki"
+  },
+  "lighthouse-core/config/default-config.js | budgetsGroupDescription": {
+    "message": "Proračuni za uspešnost postavljajo standarde za uspešnost spletnega mesta."
+  },
+  "lighthouse-core/config/default-config.js | budgetsGroupTitle": {
+    "message": "Proračuni"
+  },
+  "lighthouse-core/config/default-config.js | diagnosticsGroupDescription": {
+    "message": "Več informacij o delovanju aplikacije. Te številke [neposredno ne vplivajo](https://github.com/GoogleChrome/lighthouse/blob/d2ec9ffbb21de9ad1a0f86ed24575eda32c796f0/docs/scoring.md#how-are-the-scores-weighted) na rezultat uspešnosti."
+  },
+  "lighthouse-core/config/default-config.js | diagnosticsGroupTitle": {
+    "message": "Diagnostika"
+  },
+  "lighthouse-core/config/default-config.js | firstPaintImprovementsGroupDescription": {
+    "message": "Bistveni vidik delovanja je, kako hitro se upodabljajo slikovne pike na zaslonu. Ključni meritvi: Prvo vsebinsko barvanje, Prvo smiselno barvanje"
+  },
+  "lighthouse-core/config/default-config.js | firstPaintImprovementsGroupTitle": {
+    "message": "Izboljšave prvega barvanja"
+  },
+  "lighthouse-core/config/default-config.js | loadOpportunitiesGroupDescription": {
+    "message": "Ti predlogi lahko pomagajo pri hitrejšem nalaganju strani. [Neposredno ne vplivajo](https://github.com/GoogleChrome/lighthouse/blob/d2ec9ffbb21de9ad1a0f86ed24575eda32c796f0/docs/scoring.md#how-are-the-scores-weighted) na rezultat uspešnosti."
+  },
+  "lighthouse-core/config/default-config.js | loadOpportunitiesGroupTitle": {
+    "message": "Priložnosti"
+  },
+  "lighthouse-core/config/default-config.js | metricGroupTitle": {
+    "message": "Meritve"
+  },
+  "lighthouse-core/config/default-config.js | overallImprovementsGroupDescription": {
+    "message": "Izboljšajte splošno izkušnjo nalaganja, da bo stran odzivna in čim prej pripravljena na uporabo. Ključni meritvi: Čas do interaktivnosti, Indeks hitrosti"
+  },
+  "lighthouse-core/config/default-config.js | overallImprovementsGroupTitle": {
+    "message": "Splošne izboljšave"
+  },
+  "lighthouse-core/config/default-config.js | performanceCategoryTitle": {
+    "message": "Delovanje"
+  },
+  "lighthouse-core/config/default-config.js | pwaCategoryDescription": {
+    "message": "Ta preverjanja potrjujejo vidike moderne spletne aplikacije. [Več o tem](https://developers.google.com/web/progressive-web-apps/checklist)."
+  },
+  "lighthouse-core/config/default-config.js | pwaCategoryManualDescription": {
+    "message": "Ta preverjanja zahteva osnovni [kontrolni seznam za MSA](https://developers.google.com/web/progressive-web-apps/checklist), vendar jih Lighthouse ne opravi samodejno. Preverjanja vplivajo na vaš rezultat, vendar je pomembno, da jih opravite ročno."
+  },
+  "lighthouse-core/config/default-config.js | pwaCategoryTitle": {
+    "message": "Moderna spletna aplikacija"
+  },
+  "lighthouse-core/config/default-config.js | pwaFastReliableGroupTitle": {
+    "message": "Hitro in zanesljivo"
+  },
+  "lighthouse-core/config/default-config.js | pwaInstallableGroupTitle": {
+    "message": "Namestljivo"
+  },
+  "lighthouse-core/config/default-config.js | pwaOptimizedGroupTitle": {
+    "message": "Optimizirano za PWA"
+  },
+  "lighthouse-core/config/default-config.js | seoCategoryDescription": {
+    "message": "S temi preverjanji se zagotovi, da je stran optimizirana za uvrstitev v rezultatih iskanja. Na uvrstitev v rezultatih iskanja lahko vplivajo dodatni dejavniki, ki jih Lighthouse ne preverja. [Več o tem](https://support.google.com/webmasters/answer/35769)."
+  },
+  "lighthouse-core/config/default-config.js | seoCategoryManualDescription": {
+    "message": "Na spletnem mestu izvedite ta dodatna preverjanja, da preverite dodatne najboljše postopke za SEO."
+  },
+  "lighthouse-core/config/default-config.js | seoCategoryTitle": {
+    "message": "SEO"
+  },
+  "lighthouse-core/config/default-config.js | seoContentGroupDescription": {
+    "message": "Oblikujte HTML na način, ki iskalnikom po vsebini omogoča boljše razumevanje vsebine vaše aplikacije."
+  },
+  "lighthouse-core/config/default-config.js | seoContentGroupTitle": {
+    "message": "Najboljši postopki glede vsebine"
+  },
+  "lighthouse-core/config/default-config.js | seoCrawlingGroupDescription": {
+    "message": "Če želite, da bo prikazana v rezultatih iskanja, morajo imeti iskalniki po vsebini dostop do vaše aplikacije."
+  },
+  "lighthouse-core/config/default-config.js | seoCrawlingGroupTitle": {
+    "message": "Iskanje po vsebini in indeksiranje"
+  },
+  "lighthouse-core/config/default-config.js | seoMobileGroupDescription": {
+    "message": "Poskrbite, da so strani prilagojene za mobilne naprave, da uporabnikom ne bo treba vleči s prsti skupaj ali povečevati slike, če bodo želeli brati strani z vsebino. [Več o tem](https://developers.google.com/search/mobile-sites/)."
+  },
+  "lighthouse-core/config/default-config.js | seoMobileGroupTitle": {
+    "message": "Prilagojeno za mobilne naprave"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnCacheTTL": {
+    "message": "TTL predpomnjenja"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnLocation": {
+    "message": "Lokacija"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnName": {
+    "message": "Ime"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnRequests": {
+    "message": "Zahteve"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnResourceType": {
+    "message": "Vrsta sredstva"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnSize": {
+    "message": "Velikost"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnTimeSpent": {
+    "message": "Porabljeni čas"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnTransferSize": {
+    "message": "Velikost prenosa"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnURL": {
+    "message": "URL"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnWastedBytes": {
+    "message": "Morebitni prihranki"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnWastedMs": {
+    "message": "Morebitni prihranki"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | displayValueByteSavings": {
+    "message": "{wastedBytes, number, bytes} KB morebitnega prihranka"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | displayValueMsSavings": {
+    "message": "{wastedMs, number, milliseconds} ms morebitnega prihranka"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | documentResourceType": {
+    "message": "Dokument"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | fontResourceType": {
+    "message": "Pisava"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | imageResourceType": {
+    "message": "Slika"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | mediaResourceType": {
+    "message": "Predstavnost"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | ms": {
+    "message": "{timeInMs, number, milliseconds} ms"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | otherResourceType": {
+    "message": "Drugo"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | scriptResourceType": {
+    "message": "Skript"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | seconds": {
+    "message": "{timeInMs, number, seconds} s"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | stylesheetResourceType": {
+    "message": "Slogovna datoteka"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | thirdPartyResourceType": {
+    "message": "Drugi ponudniki"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | totalResourceType": {
+    "message": "Skupno"
+  },
+  "lighthouse-core/lib/lh-error.js | badTraceRecording": {
+    "message": "Pri snemanju sledi ob nalaganju strani je prišlo do napake. Znova zaženite Lighthouse. ({errorCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | criTimeout": {
+    "message": "Potek časovne omejitve pri čakanju na začetno povezavo protokola za odpravljanje napak"
+  },
+  "lighthouse-core/lib/lh-error.js | didntCollectScreenshots": {
+    "message": "Chrome med nalaganjem strani ni zbral posnetkov zaslona. Poskrbite, da je vsebina vidna na strani, nato poskusite znova zagnati Lighthouse. ({errorCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | dnsFailure": {
+    "message": "Strežnikom DNS ni uspelo razrešiti navedene domene."
+  },
+  "lighthouse-core/lib/lh-error.js | erroredRequiredArtifact": {
+    "message": "V zahtevanem zbiralniku {artifactName} je prišlo do napake: {errorMessage}"
+  },
+  "lighthouse-core/lib/lh-error.js | internalChromeError": {
+    "message": "Prišlo je do notranje napake Chroma. Znova zaženite Chrome in poskusite znova zagnati Lighthouse."
+  },
+  "lighthouse-core/lib/lh-error.js | missingRequiredArtifact": {
+    "message": "Zahtevani zbiralnik {artifactName} se ni izvedel."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailed": {
+    "message": "Orodje Lighthouse ni utegnilo zanesljivo naložiti zahtevane strani. Poskrbite, da preizkušate pravilen URL in da se strežnik ustrezno odziva na vse zahteve."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedHung": {
+    "message": "Orodje Lighthouse ni utegnilo zanesljivo naložiti zahtevanega URL-ja, ker se je stran nehala odzivati."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedInsecure": {
+    "message": "Navedeni URL nima veljavnega varnostnega potrdila. {securityMessages}"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedInterstitial": {
+    "message": "Chrome je preprečil nalaganje strani z vrinjenim zaslonom. Poskrbite, da preizkušate pravilen URL in da se strežnik ustrezno odziva na vse zahteve."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedWithDetails": {
+    "message": "Orodje Lighthouse ni utegnilo zanesljivo naložiti zahtevane strani. Poskrbite, da preizkušate pravilen URL in da se strežnik ustrezno odziva na vse zahteve. (Podrobnosti: {errorDetails})"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedWithStatusCode": {
+    "message": "Orodje Lighthouse ni utegnilo zanesljivo naložiti zahtevane strani. Poskrbite, da preizkušate pravilen URL in da se strežnik ustrezno odziva na vse zahteve. (Koda stanja: {statusCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadTookTooLong": {
+    "message": "Nalaganje strani je trajalo predolgo. Upoštevajte priložnosti v poročilu, da zmanjšate čas nalaganja strani, nato poskusite znova zagnati Lighthouse. ({errorCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | protocolTimeout": {
+    "message": "Čakanje na odziv protokola za DevTools je preseglo dodeljeni čas. (Metoda: {protocolMethod})"
+  },
+  "lighthouse-core/lib/lh-error.js | requestContentTimeout": {
+    "message": "Trajanje pridobivanja vsebine sredstva je preseglo dodeljeni čas"
+  },
+  "lighthouse-core/lib/lh-error.js | urlInvalid": {
+    "message": "Videti je, da ste navedli neveljaven URL."
+  },
+  "lighthouse-core/report/html/renderer/util.js | auditGroupExpandTooltip": {
+    "message": "Pokaži preglede"
+  },
+  "lighthouse-core/report/html/renderer/util.js | crcInitialNavigation": {
+    "message": "Začetno krmarjenje"
+  },
+  "lighthouse-core/report/html/renderer/util.js | crcLongestDurationLabel": {
+    "message": "Največja zakasnitev kritične poti:"
+  },
+  "lighthouse-core/report/html/renderer/util.js | errorLabel": {
+    "message": "Napaka"
+  },
+  "lighthouse-core/report/html/renderer/util.js | errorMissingAuditInfo": {
+    "message": "Napaka sporočila: ni podatkov o pregledu"
+  },
+  "lighthouse-core/report/html/renderer/util.js | labDataTitle": {
+    "message": "Laboratorijski podatki"
+  },
+  "lighthouse-core/report/html/renderer/util.js | lsPerformanceCategoryDescription": {
+    "message": "Analiza orodja [Lighthouse](https://developers.google.com/web/tools/lighthouse/) trenutne strani v emuliranem mobilnem omrežju. Vrednosti so ocenjene in lahko odstopajo."
+  },
+  "lighthouse-core/report/html/renderer/util.js | manualAuditsGroupTitle": {
+    "message": "Dodatni elementi za ročno preverjanje"
+  },
+  "lighthouse-core/report/html/renderer/util.js | notApplicableAuditsGroupTitle": {
+    "message": "Se ne uporablja"
+  },
+  "lighthouse-core/report/html/renderer/util.js | opportunityResourceColumnLabel": {
+    "message": "Priložnost"
+  },
+  "lighthouse-core/report/html/renderer/util.js | opportunitySavingsColumnLabel": {
+    "message": "Ocenjeni prihranek"
+  },
+  "lighthouse-core/report/html/renderer/util.js | passedAuditsGroupTitle": {
+    "message": "Uspešni pregledi"
+  },
+  "lighthouse-core/report/html/renderer/util.js | snippetCollapseButtonLabel": {
+    "message": "Strni delček"
+  },
+  "lighthouse-core/report/html/renderer/util.js | snippetExpandButtonLabel": {
+    "message": "Razširi delček"
+  },
+  "lighthouse-core/report/html/renderer/util.js | thirdPartyResourcesLabel": {
+    "message": "Prikaži sredstva drugih ponudnikov"
+  },
+  "lighthouse-core/report/html/renderer/util.js | toplevelWarningsMessage": {
+    "message": "Na to izvedbo storitve Lighthouse so vplivale težave:"
+  },
+  "lighthouse-core/report/html/renderer/util.js | varianceDisclaimer": {
+    "message": "Vrednosti so ocenjene in lahko odstopajo. Rezultat uspešnosti [temelji samo na teh meritvah](https://github.com/GoogleChrome/lighthouse/blob/d2ec9ffbb21de9ad1a0f86ed24575eda32c796f0/docs/scoring.md#how-are-the-scores-weighted)."
+  },
+  "lighthouse-core/report/html/renderer/util.js | warningAuditsGroupTitle": {
+    "message": "Pregledi so bili uspešno opravljeni, vendar z opozorili"
+  },
+  "lighthouse-core/report/html/renderer/util.js | warningHeader": {
+    "message": "Opozorila: "
+  },
+  "stack-packs/packs/wordpress.js | efficient_animated_content": {
+    "message": "Razmislite o tem, da bi GIF naložili v storitev, prek katere bo na voljo za vdelavo kot videposnetek v obliki HTML5."
+  },
+  "stack-packs/packs/wordpress.js | offscreen_images": {
+    "message": "Namestite [vtičnik za postopno nalaganje za WordPress](https://wordpress.org/plugins/search/lazy+load/) ki omogoča odlog nalaganja slik, ki niso na zaslonu, ali preidite na temo, ki ponuja to funkcijo. Razmislite tudi o uporabi [vtičnika AMP](https://wordpress.org/plugins/amp/)."
+  },
+  "stack-packs/packs/wordpress.js | render_blocking_resources": {
+    "message": "Na voljo je več vtičnikov za WordPress, ki vam lahko pomagajo [uvrstiti nujna sredstva](https://wordpress.org/plugins/search/critical+css/) ali [odložiti manj pomembna sredstva](https://wordpress.org/plugins/search/defer+css+javascript/). Upoštevajte, da lahko optimizacije, ki jih ponujajo ti vtičniki, pokvarijo delovanje funkcij vaših tem ali vtičnikov, zato boste verjetno morali spremeniti kodo."
+  },
+  "stack-packs/packs/wordpress.js | time_to_first_byte": {
+    "message": "Teme, vtičniki in strežniške specifikacije prispevajo k odzivnemu času strežnika. Razmislite o tem, da bi poiskali bolj optimizirano temo, skrbno izbrali optimizacijski vtičnik in/ali nadgradili strežnik."
+  },
+  "stack-packs/packs/wordpress.js | total_byte_weight": {
+    "message": "Razmislite o tem, da bi na seznamih objav prikazali izvlečke (npr. z oznako »more«), zmanjšali število objav, prikazanih na posamezni strani, daljše objave razdelili na več strani ali uporabili vtičnik za odloženo nalaganje komentarjev."
+  },
+  "stack-packs/packs/wordpress.js | unminified_css": {
+    "message": "Na voljo je več [vtičnikov za WordPress](https://wordpress.org/plugins/search/minify+css/) ki lahko s sestavljanjem, pomanjševanjem in stiskanjem slogov pospešijo vaše spletno mesto. Po možnosti uporabite tudi postopek gradnje, ki to pomanjševanje izvede vnaprej."
+  },
+  "stack-packs/packs/wordpress.js | unminified_javascript": {
+    "message": "Na voljo je več [vtičnikov za WordPress](https://wordpress.org/plugins/search/minify+javascript/), ki lahko s sestavljanjem, pomanjševanjem in stiskanjem slogov pospešijo vaše spletno mesto. Po možnosti uporabite tudi postopek gradnje, ki to pomanjševanje izvede vnaprej."
+  },
+  "stack-packs/packs/wordpress.js | unused_css_rules": {
+    "message": "Razmislite o tem, da bi zmanjšali ali spremenili število [vtičnikov za WordPress](https://wordpress.org/plugins/), ki na vaši strani nalagajo neuporabljen CSS. Če želite ugotoviti, kateri vtičniki dodajo zunanji CSS, poskušajte z orodji Chrome DevTools izvesti [pokritost kode](https://developers.google.com/web/updates/2017/04/devtools-release-notes#coverage). Ustrezen vtičnik/temo lahko ugotovite na podlagi URL-ja datoteke s slogi. Bodite pozorni na vtičnike, ki imajo na seznamu mnogo datotek s slogi, ki imajo v pokritosti kode veliko rdeče obarvanega območja. Datoteka s slogi naj bo v čakalni vrsti vtičnika samo, če je dejansko uporabljena na strani."
+  },
+  "stack-packs/packs/wordpress.js | unused_javascript": {
+    "message": "Razmislite o tem, da bi zmanjšali ali spremenili število [vtičnikov za WordPress](https://wordpress.org/plugins/), ki na vaši strani nalagajo neuporabljen JavaScript. Če želite ugotoviti, kateri vtičniki dodajo zunanji JS, poskušajte z orodji Chrome DevTools izvesti [pokritost kode](https://developers.google.com/web/updates/2017/04/devtools-release-notes#coverage). Ustrezen vtičnik/temo lahko ugotovite na podlagi URL-ja skripta. Bodite pozorni na vtičnike, ki imajo na seznamu mnogo skriptov, ki imajo v pokritosti kode veliko rdeče obarvanega območja. Skript naj bo v čakalni vrsti vtičnika samo, če je dejansko uporabljen na strani."
+  },
+  "stack-packs/packs/wordpress.js | uses_long_cache_ttl": {
+    "message": "Preberite o [predpomnjenju brskalnika v WordPressu](https://codex.wordpress.org/WordPress_Optimization#Browser_Caching)."
+  },
+  "stack-packs/packs/wordpress.js | uses_optimized_images": {
+    "message": "Razmislite o tem, da bi uporabili [vtičnik za optimizacijo slik za WordPress](https://wordpress.org/plugins/search/optimize+images/), ki slike stisne, a ohrani kakovost."
+  },
+  "stack-packs/packs/wordpress.js | uses_responsive_images": {
+    "message": "Slike naložite neposredno prek [predstavnostne knjižnice](https://codex.wordpress.org/Media_Library_Screen) in tako zagotovite, da so na voljo potrebne velikosti slik. Nato jih vstavite iz predstavnostne knjižnice ali uporabite slikovni pripomoček, da zagotovite uporabo optimalnih velikosti slik (vključno s tistimi za odzivne prekinitvene točke). Izogibajte se slikam `Full Size`, razen če so mere primerne za njihovo uporabo. [Več o tem](https://codex.wordpress.org/Inserting_Images_into_Posts_and_Pages#Image_Size)."
+  },
+  "stack-packs/packs/wordpress.js | uses_text_compression": {
+    "message": "Stiskanje besedila lahko omogočite v konfiguraciji spletnega strežnika."
+  },
+  "stack-packs/packs/wordpress.js | uses_webp_images": {
+    "message": "Razmislite o tem, da bi uporabili [vtičnik](https://wordpress.org/plugins/search/convert+webp/) ali storitev, ki naložene slike samodejno pretvori v optimalne oblike."
+  }
+}
diff --git a/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/sr-Latn.json b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/sr-Latn.json
new file mode 100644
index 0000000..44977f12
--- /dev/null
+++ b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/sr-Latn.json
@@ -0,0 +1,1541 @@
+{
+  "lighthouse-core/audits/accessibility/accesskeys.js | description": {
+    "message": "Tasteri za pristup omogućavaju korisnicima da brzo fokusiraju deo stranice. Da bi navigacija radila ispravno, svaki taster za pristup mora da bude jedinstven. [Saznajte više](https://web.dev/accesskeys/)."
+  },
+  "lighthouse-core/audits/accessibility/accesskeys.js | failureTitle": {
+    "message": "Vrednosti za `[accesskey]` nisu jedinstvene"
+  },
+  "lighthouse-core/audits/accessibility/accesskeys.js | title": {
+    "message": "Vrednosti za `[accesskey]` su jedinstvene"
+  },
+  "lighthouse-core/audits/accessibility/aria-allowed-attr.js | description": {
+    "message": "Svaki ARIA element „`role`“ podržava određeni podskup atributa „`aria-*`“. Ako se ovi elementi ne podudaraju, atributi „`aria-*`“ će biti nevažeći. [Saznajte više](https://web.dev/aria-allowed-attr/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-allowed-attr.js | failureTitle": {
+    "message": "Atributi `[aria-*]` se ne podudaraju sa svojim ulogama"
+  },
+  "lighthouse-core/audits/accessibility/aria-allowed-attr.js | title": {
+    "message": "Atributi `[aria-*]` se podudaraju sa svojim ulogama"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-attr.js | description": {
+    "message": "Pojedine ARIA uloge imaju obavezne atribute koji status elementa opisuju čitačima ekrana. [Saznajte više](https://web.dev/aria-required-attr/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-required-attr.js | failureTitle": {
+    "message": "Uloge `[role]` nemaju sve obavezne atribute `[aria-*]`"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-attr.js | title": {
+    "message": "Uloge `[role]` imaju sve obavezne atribute `[aria-*]`"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-children.js | description": {
+    "message": "Pojedine nadređene ARIA uloge moraju da obuhvataju određene podređene uloge da bi pravilno obavljale namenjene funkcije pristupačnosti. [Saznajte više](https://web.dev/aria-required-children/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-required-children.js | failureTitle": {
+    "message": "Nedostaju elementi sa ulogom `[role]` koji zahtevaju određenu podređenu ulogu `[role]`."
+  },
+  "lighthouse-core/audits/accessibility/aria-required-children.js | title": {
+    "message": "Prisutni su elementi sa ulogom `[role]` koji zahtevaju određenu podređenu ulogu `[role]`"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-parent.js | description": {
+    "message": "Pojedine podređene ARIA uloge moraju da budu obuhvaćene određenim nadređenim ulogama da bi pravilno obavljale namenjene funkcije pristupačnosti. [Saznajte više](https://web.dev/aria-required-parent/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-required-parent.js | failureTitle": {
+    "message": "Uloge `[role]` nisu obuhvaćene svojim obaveznim nadređenim elementom"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-parent.js | title": {
+    "message": "Uloge `[role]` su obuhvaćene svojim obaveznim nadređenim elementom"
+  },
+  "lighthouse-core/audits/accessibility/aria-roles.js | description": {
+    "message": "Vrednosti ARIA uloga moraju da budu važeće da bi pravilno obavljale namenjene funkcije pristupačnosti. [Saznajte više](https://web.dev/aria-roles/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-roles.js | failureTitle": {
+    "message": "Vrednosti za `[role]` nisu važeće"
+  },
+  "lighthouse-core/audits/accessibility/aria-roles.js | title": {
+    "message": "Vrednosti za `[role]` su važeće"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr-value.js | description": {
+    "message": "Tehnologije za pomoć osobama sa invaliditetom, poput čitača ekrana, ne mogu da interpretiraju ARIA atribute sa nevažećim vrednostima. [Saznajte više](https://web.dev/aria-valid-attr-value/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr-value.js | failureTitle": {
+    "message": "Vrednosti atributa `[aria-*]` nisu važeće"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr-value.js | title": {
+    "message": "Vrednosti atributa `[aria-*]` su važeće"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr.js | description": {
+    "message": "Tehnologije za pomoć osobama sa invaliditetom, poput čitača ekrana, ne mogu da interpretiraju ARIA atribute sa nevažećim nazivima. [Saznajte više](https://web.dev/aria-valid-attr/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr.js | failureTitle": {
+    "message": "Atributi `[aria-*]` nisu važeći ili su pogrešno napisani"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr.js | title": {
+    "message": "Atributi `[aria-*]` su važeći i nisu pogrešno napisani"
+  },
+  "lighthouse-core/audits/accessibility/audio-caption.js | description": {
+    "message": "Titlovi omogućavaju da gluvi korisnici ili korisnici sa oštećenjem sluha koriste audio elemente, čime se pružaju važne informacije, na primer, informacije o tome koja osoba govori, šta govori, kao i druge informacije koje nisu vezane za govor. [Saznajte više](https://web.dev/audio-caption/)."
+  },
+  "lighthouse-core/audits/accessibility/audio-caption.js | failureTitle": {
+    "message": "Elementima `<audio>` nedostaje element `<track>` sa atributom `[kind=\"captions\"]`."
+  },
+  "lighthouse-core/audits/accessibility/audio-caption.js | title": {
+    "message": "Elementi `<audio>` sadrže element `<track>` sa atributom `[kind=\"captions\"]`"
+  },
+  "lighthouse-core/audits/accessibility/axe-audit.js | failingElementsHeader": {
+    "message": "Elementi koji nisu prošli proveru"
+  },
+  "lighthouse-core/audits/accessibility/button-name.js | description": {
+    "message": "Kada dugme nema naziv prilagođen funkciji pristupačnosti, čitači ekrana ga najavljuju kao „dugme“, pa korisnici koji se oslanjaju na čitače ekrana ne mogu da ga koriste. [Saznajte više](https://web.dev/button-name/)."
+  },
+  "lighthouse-core/audits/accessibility/button-name.js | failureTitle": {
+    "message": "Dugmad nema nazive prilagođene funkcijama pristupačnosti"
+  },
+  "lighthouse-core/audits/accessibility/button-name.js | title": {
+    "message": "Dugmad ima nazive prilagođene funkcijama pristupačnosti"
+  },
+  "lighthouse-core/audits/accessibility/bypass.js | description": {
+    "message": "Kada se dodaju načini za zaobilaženje sadržaja koji se ponavlja, korisnici tastature mogu efikasnije da se kreću po stranici. [Saznajte više](https://web.dev/bypass/)."
+  },
+  "lighthouse-core/audits/accessibility/bypass.js | failureTitle": {
+    "message": "Stranica ne obuhvata naslov, link za preskakanje niti region orijentira"
+  },
+  "lighthouse-core/audits/accessibility/bypass.js | title": {
+    "message": "Stranica obuhvata naslov, link za preskakanje ili region orijentira"
+  },
+  "lighthouse-core/audits/accessibility/color-contrast.js | description": {
+    "message": "Mnogi korisnici veoma teško čitaju tekst sa malim kontrastom ili uopšte ne mogu da ga čitaju. [Saznajte više](https://web.dev/color-contrast/)."
+  },
+  "lighthouse-core/audits/accessibility/color-contrast.js | failureTitle": {
+    "message": "Boje u pozadini i u prvom planu nemaju zadovoljavajući odnos kontrasta."
+  },
+  "lighthouse-core/audits/accessibility/color-contrast.js | title": {
+    "message": "Boje u pozadini i u prvom planu imaju zadovoljavajući odnos kontrasta"
+  },
+  "lighthouse-core/audits/accessibility/definition-list.js | description": {
+    "message": "Kada liste definicija nisu pravilno označene, čitači ekrana mogu da pružaju zbunjujući ili netačan izlaz. [Saznajte više](https://web.dev/definition-list/)."
+  },
+  "lighthouse-core/audits/accessibility/definition-list.js | failureTitle": {
+    "message": "`<dl>` ne sadrži samo pravilno naručene grupe `<dt>` i `<dd>`, elemente `<script>` ili `<template>`."
+  },
+  "lighthouse-core/audits/accessibility/definition-list.js | title": {
+    "message": "`<dl>` sadrži samo pravilno naručene grupe`<dt>` i `<dd>`, elemente `<script>` ili `<template>`."
+  },
+  "lighthouse-core/audits/accessibility/dlitem.js | description": {
+    "message": "Stavke liste definicija (`<dt>` i `<dd>`) moraju da budu upakovane u nadređeni element`<dl>` da bi čitači ekrana mogli da ih pravilno čitaju. [Saznajte više](https://web.dev/dlitem/)."
+  },
+  "lighthouse-core/audits/accessibility/dlitem.js | failureTitle": {
+    "message": "Stavke liste definicija su upakovane u elemente `<dl>`"
+  },
+  "lighthouse-core/audits/accessibility/dlitem.js | title": {
+    "message": "Stavke liste definicija su upakovane u elemente`<dl>`"
+  },
+  "lighthouse-core/audits/accessibility/document-title.js | description": {
+    "message": "Naslov korisnicima čitača ekrana pruža pregled stranice, a korisnici pretraživača se na njega oslanjaju da bi utvrdili da li je stranica relevantna za njihovu pretragu. [Saznajte više](https://web.dev/document-title/)."
+  },
+  "lighthouse-core/audits/accessibility/document-title.js | failureTitle": {
+    "message": "Dokument nema element `<title>`"
+  },
+  "lighthouse-core/audits/accessibility/document-title.js | title": {
+    "message": "Dokument ima element `<title>`"
+  },
+  "lighthouse-core/audits/accessibility/duplicate-id.js | description": {
+    "message": "Vrednost atributa ID mora da bude jedinstvena da bi se sprečilo da tehnologije za pomoć osobama sa invaliditetom propuste druge instance. [Saznajte više](https://web.dev/duplicate-id/)."
+  },
+  "lighthouse-core/audits/accessibility/duplicate-id.js | failureTitle": {
+    "message": "Atributi `[id]` na stranici nisu jedinstveni"
+  },
+  "lighthouse-core/audits/accessibility/duplicate-id.js | title": {
+    "message": "Atributi `[id]` na stranici su jedinstveni"
+  },
+  "lighthouse-core/audits/accessibility/frame-title.js | description": {
+    "message": "Korisnici čitača ekrana očekuju od naslova okvira da im opišu sadržaj okvira. [Saznajte više](https://web.dev/frame-title/)."
+  },
+  "lighthouse-core/audits/accessibility/frame-title.js | failureTitle": {
+    "message": "Elementi `<frame>` ili `<iframe>` nemaju naslov"
+  },
+  "lighthouse-core/audits/accessibility/frame-title.js | title": {
+    "message": "Elementi `<frame>` ili `<iframe>` imaju naslov"
+  },
+  "lighthouse-core/audits/accessibility/html-has-lang.js | description": {
+    "message": "Ako za stranicu nije naveden atribut za jezik, čitač ekrana pretpostavlja da je stranica na podrazumevanom jeziku koji je korisnik odabrao tokom podešavanja čitača ekrana. Ako stranica zapravo nije na podrazumevanom jeziku, čitač ekrana možda neće pravilno čitati tekst sa stranice. [Saznajte više](https://web.dev/html-has-lang/)."
+  },
+  "lighthouse-core/audits/accessibility/html-has-lang.js | failureTitle": {
+    "message": "Element `<html>` nema atribut `[lang]`"
+  },
+  "lighthouse-core/audits/accessibility/html-has-lang.js | title": {
+    "message": "Element `<html>` ima atribut `[lang]`"
+  },
+  "lighthouse-core/audits/accessibility/html-lang-valid.js | description": {
+    "message": "Navođenjem važećeg koda [BCP 47 language](https://www.w3.org/International/questions/qa-choosing-language-tags#question) omogućava se da čitač ekrana pravilno čita tekst. [Saznajte više](https://web.dev/html-lang-valid/)."
+  },
+  "lighthouse-core/audits/accessibility/html-lang-valid.js | failureTitle": {
+    "message": "Element `<html>` nema važeću vrednost za svoj atribut `[lang]`."
+  },
+  "lighthouse-core/audits/accessibility/html-lang-valid.js | title": {
+    "message": "Element `<html>` ima važeću vrednost za svoj atribut `[lang]`"
+  },
+  "lighthouse-core/audits/accessibility/image-alt.js | description": {
+    "message": "Informativni elementi treba da sadrže kratki, opisni alternativni tekst. Dekorativni elementi mogu da se zanemare praznim atributom alt. [Saznajte više](https://web.dev/image-alt/)."
+  },
+  "lighthouse-core/audits/accessibility/image-alt.js | failureTitle": {
+    "message": "Elementi slike nemaju atribute `[alt]`"
+  },
+  "lighthouse-core/audits/accessibility/image-alt.js | title": {
+    "message": "Elementi slika imaju atribute `[alt]`"
+  },
+  "lighthouse-core/audits/accessibility/input-image-alt.js | description": {
+    "message": "Kada se slika koristi kao dugme `<input>`, navođenje alternativnog teksta može da pomogne korisnicima da razumeju svrhu dugmeta. [Saznajte više](https://web.dev/input-image-alt/)."
+  },
+  "lighthouse-core/audits/accessibility/input-image-alt.js | failureTitle": {
+    "message": "Elementi `<input type=\"image\">` ne sadrže tekst `[alt]`"
+  },
+  "lighthouse-core/audits/accessibility/input-image-alt.js | title": {
+    "message": "Elementi `<input type=\"image\">` sadrže tekst `[alt]`"
+  },
+  "lighthouse-core/audits/accessibility/label.js | description": {
+    "message": "Oznake omogućavaju da tehnologije za pomoć osobama sa invaliditetom, poput čitača ekrana, pravilno najavljuju kontrole obrazaca. [Saznajte više](https://web.dev/label/)."
+  },
+  "lighthouse-core/audits/accessibility/label.js | failureTitle": {
+    "message": "Elementi obrazaca nemaju povezane oznake"
+  },
+  "lighthouse-core/audits/accessibility/label.js | title": {
+    "message": "Elementi obrazaca imaju povezane oznake"
+  },
+  "lighthouse-core/audits/accessibility/layout-table.js | description": {
+    "message": "Tabela koja se koristi u svrhe rasporeda ne treba da obuhvata elemente podataka, kao što su elementi th ili titl ili atribut rezimea jer to može da zbuni korisnike čitača ekrana. [Saznajte više](https://web.dev/layout-table/)."
+  },
+  "lighthouse-core/audits/accessibility/layout-table.js | failureTitle": {
+    "message": "Prezentacioni elementi `<table>` ne izbegavaju upotrebu atributa `<th>`, `<caption>` ili `[summary]`."
+  },
+  "lighthouse-core/audits/accessibility/layout-table.js | title": {
+    "message": "Prezentacioni elementi `<table>` izbegavaju upotrebu atributa `<th>`, `<caption>` ili `[summary]`."
+  },
+  "lighthouse-core/audits/accessibility/link-name.js | description": {
+    "message": "Tekst linka (i alternativni tekst za slike kada se koristi za linkove) koji je prepoznatljiv, jedinstven i može da se fokusira olakšava kretanje za korisnike čitača ekrana. [Saznajte više](https://web.dev/link-name/)."
+  },
+  "lighthouse-core/audits/accessibility/link-name.js | failureTitle": {
+    "message": "Naziv linkova ne može da se prepozna"
+  },
+  "lighthouse-core/audits/accessibility/link-name.js | title": {
+    "message": "Naziv linkova može da se prepozna"
+  },
+  "lighthouse-core/audits/accessibility/list.js | description": {
+    "message": "Čitači ekrana čitaju liste na poseban način. Pravilna struktura liste olakšava razumevanje čitača ekrana. [Saznajte više](https://web.dev/list/)."
+  },
+  "lighthouse-core/audits/accessibility/list.js | failureTitle": {
+    "message": "Liste ne sadrže isključivo elemente `<li>` i elemente koji podržavaju skripte (`<script>` i`<template>`)."
+  },
+  "lighthouse-core/audits/accessibility/list.js | title": {
+    "message": "Liste sadrže isključivo elemente `<li>` i elemente koji podržavaju skripte (`<script>` i `<template>`)."
+  },
+  "lighthouse-core/audits/accessibility/listitem.js | description": {
+    "message": "Čitači ekrana zahtevaju da stavke liste (`<li>`) budu obuhvaćene nadređenim elementima `<ul>` ili `<ol>` da bi mogle da se pravilno čitaju. [Saznajte više](https://web.dev/listitem/)."
+  },
+  "lighthouse-core/audits/accessibility/listitem.js | failureTitle": {
+    "message": "Stavke liste (`<li>`) nisu obuhvaćene nadređenim elementima`<ul>` ili `<ol>`."
+  },
+  "lighthouse-core/audits/accessibility/listitem.js | title": {
+    "message": "Stavke liste (`<li>`) su obuhvaćene nadređenim elementima `<ul>` ili `<ol>`"
+  },
+  "lighthouse-core/audits/accessibility/meta-refresh.js | description": {
+    "message": "Korisnici ne očekuju da se stranica automatski osvežava i time se fokus premešta na početak stranice. To može da frustira ili zbunjuje korisnike. [Saznajte više](https://web.dev/meta-refresh/)."
+  },
+  "lighthouse-core/audits/accessibility/meta-refresh.js | failureTitle": {
+    "message": "Dokument koristi metaoznaku `<meta http-equiv=\"refresh\">`"
+  },
+  "lighthouse-core/audits/accessibility/meta-refresh.js | title": {
+    "message": "Dokument ne koristi metaoznaku `<meta http-equiv=\"refresh\">`"
+  },
+  "lighthouse-core/audits/accessibility/meta-viewport.js | description": {
+    "message": "Onemogućavanje zumiranja predstavlja problem za slabovide korisnike koji se oslanjaju na uvećavanje prikaza ekrana da bi mogli da vide sadržaj veb-stranice. [Saznajte više](https://web.dev/meta-viewport/)."
+  },
+  "lighthouse-core/audits/accessibility/meta-viewport.js | failureTitle": {
+    "message": "`[user-scalable=\"no\"]` se koristi u elementu `<meta name=\"viewport\">` ili je vrednost atributa `[maximum-scale]` manja od 5."
+  },
+  "lighthouse-core/audits/accessibility/meta-viewport.js | title": {
+    "message": "`[user-scalable=\"no\"]` se ne koristi u elementu `<meta name=\"viewport\">`, a vrednost atributa `[maximum-scale]` nije manja od 5."
+  },
+  "lighthouse-core/audits/accessibility/object-alt.js | description": {
+    "message": "Čitači ekrana ne mogu da prevode sadržaj koji nije tekst. Dodavanje alt teksta elementima `<object>` omogućava da čitači ekrana lakše prenesu značenje korisnicima. [Saznajte više](https://web.dev/object-alt/)."
+  },
+  "lighthouse-core/audits/accessibility/object-alt.js | failureTitle": {
+    "message": "Elementi `<object>` ne sadrže tekst `[alt]`"
+  },
+  "lighthouse-core/audits/accessibility/object-alt.js | title": {
+    "message": "Elementi `<object>` sadrže tekst `[alt]`"
+  },
+  "lighthouse-core/audits/accessibility/tabindex.js | description": {
+    "message": "Vrednost veća od 0 označava eksplicitno naručivanje navigacije. Iako je tehnički ispravno, to često frustrira korisnike koji se oslanjaju na tehnologije za pomoć osobama sa invaliditetom. [Saznajte više](https://web.dev/tabindex/)."
+  },
+  "lighthouse-core/audits/accessibility/tabindex.js | failureTitle": {
+    "message": "Neki elementi imaju vrednost za `[tabindex]` koja je veća od 0"
+  },
+  "lighthouse-core/audits/accessibility/tabindex.js | title": {
+    "message": "Vrednost nijednog elementa `[tabindex]` nije veća od 0"
+  },
+  "lighthouse-core/audits/accessibility/td-headers-attr.js | description": {
+    "message": "Čitači ekrana imaju funkcije koje olakšavaju kretanje kroz tabele. Ako se pobrinete da se ćelije `<td>` koje koriste atribut `[headers]` odnose samo na druge ćelije u istoj tabeli, možete da poboljšate doživljaj za korisnike čitača ekrana. [Saznajte više](https://web.dev/td-headers-attr/)."
+  },
+  "lighthouse-core/audits/accessibility/td-headers-attr.js | failureTitle": {
+    "message": "Ćelije u elementu `<table>` koje koriste atribut `[headers]` odnose se na druge ćelije u toj istoj tabeli."
+  },
+  "lighthouse-core/audits/accessibility/td-headers-attr.js | title": {
+    "message": "Ćelije u elementu `<table>` koje koriste atribut `[headers]` odnose se samo na druge ćelije u toj istoj tabeli."
+  },
+  "lighthouse-core/audits/accessibility/th-has-data-cells.js | description": {
+    "message": "Čitači ekrana imaju funkcije koje olakšavaju kretanje kroz tabele. Ako se pobrinete da se naslovi tabela uvek odnose na neku grupu ćelija, možete da poboljšate doživljaj za korisnike čitača ekrana. [Saznajte više](https://web.dev/th-has-data-cells/)."
+  },
+  "lighthouse-core/audits/accessibility/th-has-data-cells.js | failureTitle": {
+    "message": "Elementi `<th>` i elementi sa atributom`[role=\"columnheader\"/\"rowheader\"]` nemaju ćelije sa podacima koje opisuju."
+  },
+  "lighthouse-core/audits/accessibility/th-has-data-cells.js | title": {
+    "message": "Elementi `<th>` i elementi sa atributom `[role=\"columnheader\"/\"rowheader\"]` imaju ćelije sa podacima koje opisuju."
+  },
+  "lighthouse-core/audits/accessibility/valid-lang.js | description": {
+    "message": "Navođenjem važećeg koda [BCP 47 language](https://www.w3.org/International/questions/qa-choosing-language-tags#question) u elementima omogućava se da čitač ekrana pravilno čita tekst. [Saznajte više](https://web.dev/valid-lang/)."
+  },
+  "lighthouse-core/audits/accessibility/valid-lang.js | failureTitle": {
+    "message": "Vrednost atributa `[lang]` nije važeća"
+  },
+  "lighthouse-core/audits/accessibility/valid-lang.js | title": {
+    "message": "Atributi `[lang]` imaju važeću vrednost"
+  },
+  "lighthouse-core/audits/accessibility/video-caption.js | description": {
+    "message": "Kada je dostupan titl za video, gluvi korisnici i oni sa oštećenjem sluha lakše mogu da pristupaju informacijama koje video obuhvata. [Saznajte više](https://web.dev/video-caption/)."
+  },
+  "lighthouse-core/audits/accessibility/video-caption.js | failureTitle": {
+    "message": "Elementi `<video>` ne obuhvataju element `<track>` sa atributom `[kind=\"captions\"]`."
+  },
+  "lighthouse-core/audits/accessibility/video-caption.js | title": {
+    "message": "Elementi `<video>` sadrže element `<track>` sa atributom `[kind=\"captions\"]`"
+  },
+  "lighthouse-core/audits/accessibility/video-description.js | description": {
+    "message": "Audio opisi pružaju relevantne informacije za video snimke koje dijalog ne može, poput izraza lica i scena. [Saznajte više](https://web.dev/video-description/)."
+  },
+  "lighthouse-core/audits/accessibility/video-description.js | failureTitle": {
+    "message": "Elementi `<video>` ne obuhvataju element `<track>` sa atributom `[kind=\"description\"]`."
+  },
+  "lighthouse-core/audits/accessibility/video-description.js | title": {
+    "message": "Elementi `<video>` sadrže element `<track>` sa atributom `[kind=\"description\"]`"
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | description": {
+    "message": "Da bi izgled na iOS-u bio idealan kada korisnici dodaju progresivnu veb-aplikaciju na početni ekran, definišite ikonu `apple-touch-icon`. Ona mora da usmerava na netransparentni kvadratni PNG od 192 piksela (ili 180 piksela). [Saznajte više](https://developers.google.com/web/fundamentals/design-and-ux/browser-customization/)."
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | failureTitle": {
+    "message": "Ne pruža važeći atribut `apple-touch-icon`"
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | precomposedWarning": {
+    "message": "Atribut `apple-touch-icon-precomposed` je zastareo; preporučuje se `apple-touch-icon`."
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | title": {
+    "message": "Pruža važeći atribut `apple-touch-icon`"
+  },
+  "lighthouse-core/audits/bootup-time.js | chromeExtensionsWarning": {
+    "message": "Dodaci za Chrome su negativno uticali na brzinu učitavanja ove stranice. Probajte da proverite stranicu u režimu bez arhiviranja ili sa Chrome profila bez dodataka."
+  },
+  "lighthouse-core/audits/bootup-time.js | columnScriptEval": {
+    "message": "Procena skripta"
+  },
+  "lighthouse-core/audits/bootup-time.js | columnScriptParse": {
+    "message": "Raščlanjivanje skripta"
+  },
+  "lighthouse-core/audits/bootup-time.js | columnTotal": {
+    "message": "Ukupno CPU vreme"
+  },
+  "lighthouse-core/audits/bootup-time.js | description": {
+    "message": "Preporučujemo vam da smanjite vreme potrebno za raščlanjivanje, kompajliranje i izvršavanje JS datoteka. Prikazivanje manjih JS resursa će vam možda pomoći u tome. [Saznajte više](https://developers.google.com/web/tools/lighthouse/audits/bootup)."
+  },
+  "lighthouse-core/audits/bootup-time.js | failureTitle": {
+    "message": "Smanjite vreme izvršavanja JavaScript datoteka"
+  },
+  "lighthouse-core/audits/bootup-time.js | title": {
+    "message": "Vreme izvršavanja JavaScript-a"
+  },
+  "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | description": {
+    "message": "Veliki GIF-ovi nisu korisni za prikazivanje animiranog sadržaja. Preporučujemo vam da umesto GIF-ova koristite MPEG4/WebM video snimke za animacije i PNG/WebP za statične slike da biste uštedeli mrežne podatke. [Saznajte više](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/replace-animated-gifs-with-video/)"
+  },
+  "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | title": {
+    "message": "Koristite video formate za animirani sadržaj"
+  },
+  "lighthouse-core/audits/byte-efficiency/offscreen-images.js | description": {
+    "message": "Preporučujemo vam da odložite učitavanje slika van ekrana i skrivenih slika dok se svi veoma važni resursi ne učitaju kako biste smanjili vreme do početka interakcije. [Saznajte više](https://developers.google.com/web/tools/lighthouse/audits/offscreen-images)."
+  },
+  "lighthouse-core/audits/byte-efficiency/offscreen-images.js | title": {
+    "message": "Odložite slike van ekrana"
+  },
+  "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | description": {
+    "message": "Resursi blokiraju prvo prikazivanje stranice. Preporučujemo vam da prikazujete sve važne JS/CSS datoteke u tekstu i da odložite sve JS datoteke/stilove koji nisu toliko važni. [Saznajte više](https://developers.google.com/web/tools/lighthouse/audits/blocking-resources)."
+  },
+  "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | title": {
+    "message": "Eliminišite resurse koji blokiraju prikazivanje"
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | description": {
+    "message": "Velike mrežne resurse korisnici moraju da plate stvarnim novcem i oni su veoma povezani sa dugim vremenima učitavanja. [Saznajte više](https://developers.google.com/web/tools/lighthouse/audits/network-payloads)."
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | displayValue": {
+    "message": "Ukupna veličina je bila {totalBytes, number, bytes} kB"
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | failureTitle": {
+    "message": "Izbegavajte ogromne mrežne resurse"
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | title": {
+    "message": "Izbegava ogromne mrežne resurse"
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-css.js | description": {
+    "message": "Umanjivanjem CSS datoteka možete da smanjite veličine mrežnih resursa. [Saznajte više](https://developers.google.com/web/tools/lighthouse/audits/minify-css)."
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-css.js | title": {
+    "message": "Umanjite CSS"
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | description": {
+    "message": "Umanjivanje JavaScript datoteka može da smanji veličine resursa i vreme raščlanjivanja skripta. [Saznajte više](https://developers.google.com/speed/docs/insights/MinifyResources)."
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | title": {
+    "message": "Umanjite JavaScript"
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | description": {
+    "message": "Uklonite neaktivna pravila iz opisa stilova i odložite učitavanje CSS-a koji se ne koristi za sadržaj iznad preloma da biste smanjili nepotrebnu potrošnju podataka tokom mrežnih aktivnosti. [Saznajte više](https://developers.google.com/web/tools/lighthouse/audits/unused-css)."
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | title": {
+    "message": "Uklonite nekorišćeni CSS"
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-javascript.js | description": {
+    "message": "Uklonite nekorišćeni JavaScript da biste smanjili potrošnju podataka tokom mrežnih aktivnosti."
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-javascript.js | title": {
+    "message": "Uklonite nekorišćeni JavaScript"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | description": {
+    "message": "Dugo trajanje keša može da ubrza ponovne posete stranici. [Saznajte više](https://developers.google.com/web/tools/lighthouse/audits/cache-policy)."
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | displayValue": {
+    "message": "{itemCount,plural, =1{Pronađen je 1 resurs}one{Pronađen je # resurs}few{Pronađena su # resursa}other{Pronađeno je # resursa}}"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | failureTitle": {
+    "message": "Prikazujte statične elemente sa efikasnim smernicama keša"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | title": {
+    "message": "Koristi efikasne smernice keša na statičnim elementima"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | description": {
+    "message": "Optimizovane slike se učitavaju brže i troše manje mobilnih podataka. [Saznajte više](https://developers.google.com/web/tools/lighthouse/audits/optimize-images)."
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | title": {
+    "message": "Efikasno kodirajte slike"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | description": {
+    "message": "Prikazujte slike odgovarajuće veličine da biste uštedeli mobilne podatke i poboljšali vreme učitavanja. [Saznajte više](https://developers.google.com/web/tools/lighthouse/audits/oversized-images)."
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | title": {
+    "message": "Odredite odgovarajuću veličinu slika"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | description": {
+    "message": "Resurse zasnovane na tekstu treba da prikazujete u komprimovanom formatu (gzip, deflate ili brotli) da biste smanjili ukupnu količinu potrošenih mrežnih podataka. [Saznajte više](https://developers.google.com/web/tools/lighthouse/audits/text-compression)."
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | title": {
+    "message": "Omogućite kompresiju teksta"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | description": {
+    "message": "Formati slika kao što su JPEG 2000, JPEG XR i WebP često pružaju bolju kompresiju nego PNG ili JPEG, što podrazumeva brža preuzimanja i manju potrošnju podataka. [Saznajte više](https://developers.google.com/web/tools/lighthouse/audits/webp)."
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | title": {
+    "message": "Prikazujte slike u formatima sledeće generacije"
+  },
+  "lighthouse-core/audits/content-width.js | description": {
+    "message": "Ako se širina sadržaja aplikacije ne podudara sa širinom oblasti prikaza, aplikacija možda nije optimizovana za ekrane na mobilnim uređajima. [Saznajte više](https://developers.google.com/web/tools/lighthouse/audits/content-sized-correctly-for-viewport)."
+  },
+  "lighthouse-core/audits/content-width.js | explanation": {
+    "message": "Veličina oblasti prikaza od {innerWidth} piksela se ne podudara sa veličinom prozora od {outerWidth} piksela."
+  },
+  "lighthouse-core/audits/content-width.js | failureTitle": {
+    "message": "Sadržaj nije odgovarajuće veličine za oblast prikaza"
+  },
+  "lighthouse-core/audits/content-width.js | title": {
+    "message": "Sadržaj je odgovarajuće veličine za oblast prikaza"
+  },
+  "lighthouse-core/audits/critical-request-chains.js | description": {
+    "message": "Lanci veoma važnih zahteva u nastavku vam prikazuju koji resursi se učitavaju sa visokim prioritetom. Preporučujemo vam da smanjite dužinu lanaca, da smanjite veličinu preuzimanja za resurse ili da odložite preuzimanje resursa koji nisu neophodni radi bržeg učitavanja stranice. [Saznajte više](https://developers.google.com/web/tools/lighthouse/audits/critical-request-chains)."
+  },
+  "lighthouse-core/audits/critical-request-chains.js | displayValue": {
+    "message": "{itemCount,plural, =1{Pronađen je 1 lanac}one{Pronađen je # lanac}few{Pronađena su # lanca}other{Pronađeno je # lanaca}}"
+  },
+  "lighthouse-core/audits/critical-request-chains.js | title": {
+    "message": "Smanjite broj veoma važnih zahteva"
+  },
+  "lighthouse-core/audits/deprecations.js | columnDeprecate": {
+    "message": "Zastarelo/upozorenje"
+  },
+  "lighthouse-core/audits/deprecations.js | columnLine": {
+    "message": "Red"
+  },
+  "lighthouse-core/audits/deprecations.js | description": {
+    "message": "Zastareli API-ji će na kraju biti uklonjeni iz pregledača. [Saznajte više](https://web.dev/deprecations)."
+  },
+  "lighthouse-core/audits/deprecations.js | displayValue": {
+    "message": "{itemCount,plural, =1{Otkriveno je 1 upozorenje}one{Otkriveno je # upozorenje}few{Otkrivena su # upozorenja}other{Otkriveno je # upozorenja}}"
+  },
+  "lighthouse-core/audits/deprecations.js | failureTitle": {
+    "message": "Koristi zastarele API-je"
+  },
+  "lighthouse-core/audits/deprecations.js | title": {
+    "message": "Izbegava zastarele API-je"
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | description": {
+    "message": "Keš aplikacije je zastareo. [Saznajte više](https://web.dev/appcache-manifest)."
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | displayValue": {
+    "message": "Pronađeno je „{AppCacheManifest}“"
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | failureTitle": {
+    "message": "Koristi keš aplikacije"
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | title": {
+    "message": "Izbegava keš aplikacije"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | description": {
+    "message": "Navođenjem doctype-a sprečava se prelazak na arhajski režim pregledača. [Saznajte više](https://web.dev/doctype)."
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationBadDoctype": {
+    "message": "Naziv za doctype mora da bude string napisan malim slovima `html`"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationNoDoctype": {
+    "message": "Dokument mora da sadrži doctype"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationPublicId": {
+    "message": "Očekivani publicId će biti prazan string"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationSystemId": {
+    "message": "Očekivani systemId će biti prazan string"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | failureTitle": {
+    "message": "Stranici nedostaje HTML doctype, pa se aktivira arhajski režim"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | title": {
+    "message": "Stranica ima HTML doctype"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | columnElement": {
+    "message": "Element"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | columnStatistic": {
+    "message": "Statistika"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | columnValue": {
+    "message": "Vrednost"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | description": {
+    "message": "Inženjeri za pregledače preporučuju da stranice sadrže manje od približno 1500 DOM elemenata. Najbolje bi bilo da dubina stabla bude ispod 32 elementa i da ima manje od 60 podređenih/nadređenih elemenata. Veliki DOM može da poveća potrošnju memorije, da izazove duža [izračunavanja stilova](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations) i da dovede do skupih [preoblikovanja izgleda](https://developers.google.com/speed/articles/reflow). [Saznajte više](https://web.dev/dom-size)."
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 element}one{# element}few{# elementa}other{# elemenata}}"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | failureTitle": {
+    "message": "Izbegavajte preveliku veličinu DOM-a"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | statisticDOMDepth": {
+    "message": "Maksimalna dubina DOM-a"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | statisticDOMElements": {
+    "message": "Ukupan broj DOM elemenata"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | statisticDOMWidth": {
+    "message": "Maksimalan broj podređenih elemenata"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | title": {
+    "message": "Izbegava preveliku veličinu DOM-a"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | columnRel": {
+    "message": "Rel"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | columnTarget": {
+    "message": "Cilj"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | description": {
+    "message": "Dodajte `rel=\"noopener\"` ili`rel=\"noreferrer\"` svim spoljnim linkovima da biste poboljšali učinak i sprečili bezbednosne propuste. [Saznajte više](https://web.dev/external-anchors-use-rel-noopener)."
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | failureTitle": {
+    "message": "Linkovi do odredišta iz drugih izvora nisu bezbedni"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | title": {
+    "message": "Linkovi do odredišta iz drugih izvora su bezbedni"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | warning": {
+    "message": "Nije moguće odrediti odredište za tekst linka ({anchorHTML}). Ako se ne koristi kao hiperlink, preporučujemo vam da uklonite target=_blank."
+  },
+  "lighthouse-core/audits/dobetterweb/geolocation-on-start.js | description": {
+    "message": "Korisnici nemaju poverenja u sajtove koji traže njihovu lokaciju bez konteksta ili ih takvi sajtovi zbunjuju. Preporučujemo vam da umesto toga povežete zahtev sa radnjom koju obavlja korisnik. [Saznajte više](https://web.dev/geolocation-on-start)."
+  },
+  "lighthouse-core/audits/dobetterweb/geolocation-on-start.js | failureTitle": {
+    "message": "Traži dozvolu za geolociranje pri učitavanju stranice"
+  },
+  "lighthouse-core/audits/dobetterweb/geolocation-on-start.js | title": {
+    "message": "Izbegavajte traženje dozvole za geolociranje pri učitavanju stranice"
+  },
+  "lighthouse-core/audits/dobetterweb/js-libraries.js | columnVersion": {
+    "message": "Verzija"
+  },
+  "lighthouse-core/audits/dobetterweb/js-libraries.js | description": {
+    "message": "Sve korisničke JavaScript biblioteke otkrivene na ovoj stranici. [Saznajte više](https://web.dev/js-libraries)."
+  },
+  "lighthouse-core/audits/dobetterweb/js-libraries.js | title": {
+    "message": "Otkrivene su JavaScript biblioteke"
+  },
+  "lighthouse-core/audits/dobetterweb/no-document-write.js | description": {
+    "message": "Ako korisnici imaju spore veze, spoljne skripte koje se dinamički ubacuju pomoću atributa `document.write()` mogu da odlože učitavanje stranice za desetine sekundi. [Saznajte više](https://web.dev/no-document-write)."
+  },
+  "lighthouse-core/audits/dobetterweb/no-document-write.js | failureTitle": {
+    "message": "Koristi `document.write()`"
+  },
+  "lighthouse-core/audits/dobetterweb/no-document-write.js | title": {
+    "message": "Izbegava atribut `document.write()`"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | columnSeverity": {
+    "message": "Najviši nivo ozbiljnosti"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | columnVersion": {
+    "message": "Verzija biblioteke"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | columnVuln": {
+    "message": "Broj propusta"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | description": {
+    "message": "Neke nezavisne skripte mogu da obuhvataju poznate bezbednosne propuste koje napadači mogu lako da prepoznaju i iskoriste. [Saznajte više](https://web.dev/no-vulnerable-libraries)."
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | displayValue": {
+    "message": "{itemCount,plural, =1{Otkriven je 1 propust}one{Otkriven je # propust}few{Otkrivena su # propusta}other{Otkriveno je # propusta}}"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | failureTitle": {
+    "message": "Obuhvata korisničke JavaScript datoteke sa poznatim bezbednosnim propustima"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | rowSeverityHigh": {
+    "message": "Visoka"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | rowSeverityLow": {
+    "message": "Niska"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | rowSeverityMedium": {
+    "message": "Srednja"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | title": {
+    "message": "Izbegava korisničke JavaScript datoteke sa poznatim bezbednosnim propustima"
+  },
+  "lighthouse-core/audits/dobetterweb/notification-on-start.js | description": {
+    "message": "Korisnici nemaju poverenja u sajtove koji traže dozvolu za slanje obaveštenja bez konteksta ili ih takvi sajtovi zbunjuju. Preporučujemo vam da umesto toga povežete zahtev sa pokretima korisnika. [Saznajte više](https://web.dev/notification-on-start)."
+  },
+  "lighthouse-core/audits/dobetterweb/notification-on-start.js | failureTitle": {
+    "message": "Traži dozvolu za obaveštenja pri učitavanju stranice"
+  },
+  "lighthouse-core/audits/dobetterweb/notification-on-start.js | title": {
+    "message": "Izbegavajte traženje dozvole za obaveštenja pri učitavanju stranice"
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | columnFailingElem": {
+    "message": "Elementi koji nisu prošli proveru"
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | description": {
+    "message": "Sprečavanje lepljenja lozinke narušava dobre smernice za bezbednost. [Saznajte više](https://web.dev/password-inputs-can-be-pasted-into)."
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | failureTitle": {
+    "message": "Sprečava korisnike da nalepe vrednost u polja za lozinke"
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | title": {
+    "message": "Dozvoljava korisnicima da nalepe vrednost u polja za lozinke"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | columnProtocol": {
+    "message": "Protokol"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | description": {
+    "message": "HTTP/2 ima brojne prednosti u odnosu na HTTP/1.1, uključujući binarna zaglavlja, multipleksiranje i serverski puš. [Saznajte više](https://web.dev/uses-http2)."
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 zahtev nije isporučen preko protokola HTTP/2}one{# zahtev nije isporučen preko protokola HTTP/2}few{# zahteva nisu isporučena preko protokola HTTP/2}other{# zahteva nije isporučeno preko protokola HTTP/2}}"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | failureTitle": {
+    "message": "Ne koristi HTTP/2 za sve svoje resurse"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | title": {
+    "message": "Koristi HTTP/2 za svoje resurse"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-passive-event-listeners.js | description": {
+    "message": "Preporučujemo vam da pasivne obrađivače događaja označite kao `passive` da biste poboljšali rezultate pomeranja. [Saznajte više](https://web.dev/uses-passive-event-listeners)."
+  },
+  "lighthouse-core/audits/dobetterweb/uses-passive-event-listeners.js | failureTitle": {
+    "message": "Ne koristite pasivne obrađivače da biste poboljšali učinak pomeranja"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-passive-event-listeners.js | title": {
+    "message": "Koristite pasivne obrađivače da biste poboljšali učinak pomeranja"
+  },
+  "lighthouse-core/audits/errors-in-console.js | columnDesc": {
+    "message": "Opis"
+  },
+  "lighthouse-core/audits/errors-in-console.js | description": {
+    "message": "Greške evidentirane u konzoli ukazuju na nerešene probleme. One su rezultat neuspelih mrežnih zahteva i drugih problema u vezi sa pregledačem. [Saznajte više](https://web.dev/errors-in-console)"
+  },
+  "lighthouse-core/audits/errors-in-console.js | failureTitle": {
+    "message": "Greške pregledača su evidentirane u konzoli"
+  },
+  "lighthouse-core/audits/errors-in-console.js | title": {
+    "message": "Nijedna greška pregledača nije evidentirana u konzoli"
+  },
+  "lighthouse-core/audits/font-display.js | description": {
+    "message": "Iskoristite CSS funkciju za prikaz fontova da biste bili sigurni da korisnik može da vidi tekst dok se veb-fontovi učitavaju. [Saznajte više](https://developers.google.com/web/updates/2016/02/font-display)."
+  },
+  "lighthouse-core/audits/font-display.js | failureTitle": {
+    "message": "Pobrinite se da tekst ostane vidljiv tokom učitavanja veb-fontova"
+  },
+  "lighthouse-core/audits/font-display.js | title": {
+    "message": "Sav tekst ostaje vidljiv tokom učitavanja veb-fontova"
+  },
+  "lighthouse-core/audits/font-display.js | undeclaredFontURLWarning": {
+    "message": "Lighthouse nije uspeo da automatski proveri vrednost za prikaz fontova za sledeći URL: {fontURL}."
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | columnActual": {
+    "message": "Razmera (stvarna)"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | columnDisplayed": {
+    "message": "Razmera (prikazana)"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | description": {
+    "message": "Dimenzije prikaza slike treba da se podudaraju sa prirodnom razmerom. [Saznajte više](https://web.dev/image-aspect-ratio)."
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | failureTitle": {
+    "message": "Prikazuje slike sa pogrešnom razmerom"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | title": {
+    "message": "Prikazuje slike sa tačnom razmerom"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | warningCompute": {
+    "message": "Nevažeće informacije o veličini slike {url}"
+  },
+  "lighthouse-core/audits/installable-manifest.js | description": {
+    "message": "Pregledači mogu proaktivno da traže od korisnika da dodaju aplikaciju na početni ekran, što može da dovede do većeg angažovanja. [Saznajte više](https://developers.google.com/web/tools/lighthouse/audits/install-prompt)."
+  },
+  "lighthouse-core/audits/installable-manifest.js | failureTitle": {
+    "message": "Manifest veb-aplikacije ne zadovoljava uslove za instaliranje"
+  },
+  "lighthouse-core/audits/installable-manifest.js | title": {
+    "message": "Manifest veb-aplikacije zadovoljava uslove za instaliranje"
+  },
+  "lighthouse-core/audits/is-on-https.js | columnInsecureURL": {
+    "message": "Nebezbedan URL"
+  },
+  "lighthouse-core/audits/is-on-https.js | description": {
+    "message": "Svi sajtovi treba da budu zaštićeni HTTPS-om, čak i oni koji ne obrađuju osetljive podatke. HTTPS sprečava uljeze da neovlašćeno pristupaju komunikaciji između aplikacije i korisnika ili da je pasivno slušaju. On je preduslov za HTTP/2 i API-je brojnih novih veb-platformi. [Saznajte više](https://web.dev/is-on-https)."
+  },
+  "lighthouse-core/audits/is-on-https.js | displayValue": {
+    "message": "{itemCount,plural, =1{Pronađen je 1 nebezbedan zahtev}one{Pronađen je # nebezbedan zahtev}few{Pronađena su # nebezbedna zahteva}other{Pronađeno je # nebezbednih zahteva}}"
+  },
+  "lighthouse-core/audits/is-on-https.js | failureTitle": {
+    "message": "Ne koristi HTTPS"
+  },
+  "lighthouse-core/audits/is-on-https.js | title": {
+    "message": "Koristi HTTPS"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | description": {
+    "message": "Brzo učitavanje stranice preko mobilne mreže obezbeđuje dobar doživljaj korisnicima mobilnih uređaja. [Saznajte više](https://developers.google.com/web/tools/lighthouse/audits/fast-3g)."
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | displayValueText": {
+    "message": "Interaktivno za {timeInMs, number, seconds} sek"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | displayValueTextWithOverride": {
+    "message": "Interaktivna na simuliranoj mobilnoj mreži za {timeInMs, number, seconds} sek"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | explanationLoadSlow": {
+    "message": "Stranica se presporo učitava i ne postaje interaktivna u roku od 10 sekundi. Pogledajte prilike i dijagnostiku u odeljku „Učinak“ da biste saznali kako da poboljšate učinak stranice."
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | failureTitle": {
+    "message": "Učitavanje stranice nije dovoljno brzo na mobilnim mrežama"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | title": {
+    "message": "Učitavanje stranice je dovoljno brzo na mobilnim mrežama"
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | columnCategory": {
+    "message": "Kategorija"
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | description": {
+    "message": "Razmislite o tome da smanjite vreme potrebno za raščlanjivanje, kompajliranje i izvršavanje JS datoteka. Prikazivanje manjih JS resursa će vam možda pomoći u tome."
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | failureTitle": {
+    "message": "Smanjite rad glavne niti"
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | title": {
+    "message": "Smanjuje rad glavne niti"
+  },
+  "lighthouse-core/audits/manual/pwa-cross-browser.js | description": {
+    "message": "Da bi imali što više korisnika, sajtovi treba da rade u svim značajnijim pregledačima. [Saznajte više](https://developers.google.com/web/progressive-web-apps/checklist#site-works-cross-browser)."
+  },
+  "lighthouse-core/audits/manual/pwa-cross-browser.js | title": {
+    "message": "Sajt radi u različitim veb-pregledačima"
+  },
+  "lighthouse-core/audits/manual/pwa-each-page-has-url.js | description": {
+    "message": "Uverite se da do pojedinačnih stranica vode precizni linkovi preko URL-ova i da su URL-ovi jedinstveni u svrhu deljenja na društvenim medijima. [Saznajte više](https://developers.google.com/web/progressive-web-apps/checklist#each-page-has-a-url)."
+  },
+  "lighthouse-core/audits/manual/pwa-each-page-has-url.js | title": {
+    "message": "Svaka stranica ima URL"
+  },
+  "lighthouse-core/audits/manual/pwa-page-transitions.js | description": {
+    "message": "Korisnici treba da imaju utisak da su prelazi brzi dok dodiruju stavke, čak i na sporoj mreži, što je ključno za utisak koji će imati o učinku. [Saznajte više](https://developers.google.com/web/progressive-web-apps/checklist#page-transitions-dont-feel-like-they-block-on-the-network)."
+  },
+  "lighthouse-core/audits/manual/pwa-page-transitions.js | title": {
+    "message": "Prelasci sa stranice na stranicu ne deluju kao da se blokiraju zbog mreže"
+  },
+  "lighthouse-core/audits/metrics/estimated-input-latency.js | description": {
+    "message": "Procenjeno kašnjenje unosa je procena vremena koje je aplikaciji potrebno da odgovori na unos korisnika, u milisekundama, tokom najprometnijeg roka od 5 sekundi za učitavanje stranice. Ako je kašnjenje veće od 50 ms, korisnici će možda smatrati da aplikacija radi sporo. [Saznajte više](https://developers.google.com/web/tools/lighthouse/audits/estimated-input-latency)."
+  },
+  "lighthouse-core/audits/metrics/estimated-input-latency.js | title": {
+    "message": "Procenjeno kašnjenje unosa"
+  },
+  "lighthouse-core/audits/metrics/first-contentful-paint.js | description": {
+    "message": "Prvo prikazivanje sadržaja označava vreme kada se prikazuju prvi tekst ili slika. [Saznajte više](https://developers.google.com/web/tools/lighthouse/audits/first-contentful-paint)."
+  },
+  "lighthouse-core/audits/metrics/first-contentful-paint.js | title": {
+    "message": "Prvo prikazivanje sadržaja"
+  },
+  "lighthouse-core/audits/metrics/first-cpu-idle.js | description": {
+    "message": "Vreme prvog neaktivnog procesora označava prvi trenutak u kome je glavna nit stranice dovoljno neaktivna da bi obradila unos. [Saznajte više](https://developers.google.com/web/tools/lighthouse/audits/first-interactive)."
+  },
+  "lighthouse-core/audits/metrics/first-cpu-idle.js | title": {
+    "message": "Vreme prvog neaktivnog procesora"
+  },
+  "lighthouse-core/audits/metrics/first-meaningful-paint.js | description": {
+    "message": "Prvo značajno prikazivanje označava vreme kada primarni sadržaj stranice postaje vidljiv. [Saznajte više](https://developers.google.com/web/tools/lighthouse/audits/first-meaningful-paint)."
+  },
+  "lighthouse-core/audits/metrics/first-meaningful-paint.js | title": {
+    "message": "Prvo značajno prikazivanje"
+  },
+  "lighthouse-core/audits/metrics/interactive.js | description": {
+    "message": "Vreme do interakcije je količina vremena koja je potrebna da bi stranica postala potpuno interaktivna. [Saznajte više](https://developers.google.com/web/tools/lighthouse/audits/consistently-interactive)."
+  },
+  "lighthouse-core/audits/metrics/interactive.js | title": {
+    "message": "Vreme početka interakcije"
+  },
+  "lighthouse-core/audits/metrics/max-potential-fid.js | description": {
+    "message": "Maksimalno potencijalno kašnjenje prvog unosa koje može da se desi korisnicima je trajanje najdužeg zadatka u milisekundama. [Saznajte više](https://developers.google.com/web/updates/2018/05/first-input-delay)."
+  },
+  "lighthouse-core/audits/metrics/max-potential-fid.js | title": {
+    "message": "Maks. potencijalno kašnjenje prvog prikaza"
+  },
+  "lighthouse-core/audits/metrics/speed-index.js | description": {
+    "message": "Indeks brzine prikazuje koliko brzo sadržaj stranice postaje vidljiv za korisnike. [Saznajte više](https://developers.google.com/web/tools/lighthouse/audits/speed-index)."
+  },
+  "lighthouse-core/audits/metrics/speed-index.js | title": {
+    "message": "Indeks brzine"
+  },
+  "lighthouse-core/audits/metrics/total-blocking-time.js | description": {
+    "message": "Zbir svih perioda između FCP-a i vremena do početka interakcije, kada zadatak traje duže od 50 ms, izraženo u milisekundama."
+  },
+  "lighthouse-core/audits/metrics/total-blocking-time.js | title": {
+    "message": "Ukupno vreme blokiranja"
+  },
+  "lighthouse-core/audits/network-rtt.js | description": {
+    "message": "Trajanja povratnog puta (RTT) mreže znatno utiču na učinak. Ako je trajanje povratnog puta do početne lokacije veliko, to znači da bi serveri koji su bliži korisniku mogli da poboljšaju učinak. [Saznajte više](https://hpbn.co/primer-on-latency-and-bandwidth/)."
+  },
+  "lighthouse-core/audits/network-rtt.js | title": {
+    "message": "Trajanja povratnog puta mreže"
+  },
+  "lighthouse-core/audits/network-server-latency.js | description": {
+    "message": "Kašnjenja servera mogu da utiču na učinak veba. Ako je kašnjenje servera za početnu lokaciju veliko, to znači da je server preopterećen ili da ima slab pozadinski učinak. [Saznajte više](https://hpbn.co/primer-on-web-performance/#analyzing-the-resource-waterfall)."
+  },
+  "lighthouse-core/audits/network-server-latency.js | title": {
+    "message": "Pozadinska kašnjenja servera"
+  },
+  "lighthouse-core/audits/offline-start-url.js | description": {
+    "message": "Serviser omogućava da veb-aplikacija bude pouzdana u nepredvidivim uslovima mreže. [Saznajte više](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)."
+  },
+  "lighthouse-core/audits/offline-start-url.js | failureTitle": {
+    "message": "`start_url` ne odgovara kodom 200 kada je oflajn"
+  },
+  "lighthouse-core/audits/offline-start-url.js | title": {
+    "message": "`start_url` odgovara kodom 200 kada je oflajn"
+  },
+  "lighthouse-core/audits/offline-start-url.js | warningCantStart": {
+    "message": "Lighthouse nije uspeo da pročita `start_url` iz manifesta. Kao posledica toga, pretpostavili smo da je `start_url` URL dokumenta. Poruka o grešci: „{manifestWarning}“."
+  },
+  "lighthouse-core/audits/performance-budget.js | columnOverBudget": {
+    "message": "Premašuje cilj"
+  },
+  "lighthouse-core/audits/performance-budget.js | description": {
+    "message": "Zahteve za količinu i veličinu mreže održavajte ispod granica određenih ciljevima za učinak. [Saznajte više](https://developers.google.com/web/tools/lighthouse/audits/budgets)."
+  },
+  "lighthouse-core/audits/performance-budget.js | requestCountOverBudget": {
+    "message": "{count,plural, =1{1 zahtev}one{# zahtev}few{# zahteva}other{# zahteva}}"
+  },
+  "lighthouse-core/audits/performance-budget.js | title": {
+    "message": "Cilj za učinak"
+  },
+  "lighthouse-core/audits/redirects-http.js | description": {
+    "message": "Ako ste već podesili HTTPS, uverite se da preusmeravate sav HTTP saobraćaj na HTTPS da biste omogućili bezbedne veb-funkcije za sve korisnike. [Saznajte više](https://developers.google.com/web/tools/lighthouse/audits/http-redirects-to-https)."
+  },
+  "lighthouse-core/audits/redirects-http.js | failureTitle": {
+    "message": "Ne preusmerava HTTP saobraćaj na HTTPS"
+  },
+  "lighthouse-core/audits/redirects-http.js | title": {
+    "message": "Preusmerava HTTP saobraćaj na HTTPS"
+  },
+  "lighthouse-core/audits/redirects.js | description": {
+    "message": "Preusmeravanja dovode do dodatnih kašnjenja pre učitavanja stranice. [Saznajte više](https://developers.google.com/web/tools/lighthouse/audits/redirects)."
+  },
+  "lighthouse-core/audits/redirects.js | title": {
+    "message": "Izbegavajte višestruka preusmeravanja stranice"
+  },
+  "lighthouse-core/audits/resource-summary.js | description": {
+    "message": "Da biste podesili ciljeve za količinu i veličinu resursa stranice, dodajte datoteku budget.json file. [Saznajte više](https://developers.google.com/web/tools/lighthouse/audits/budgets)."
+  },
+  "lighthouse-core/audits/resource-summary.js | displayValue": {
+    "message": "{requestCount,plural, =1{1 zahtev • {byteCount, number, bytes} KB}one{# zahtev • {byteCount, number, bytes} KB}few{# zahteva • {byteCount, number, bytes} KB}other{# zahteva • {byteCount, number, bytes} KB}}"
+  },
+  "lighthouse-core/audits/resource-summary.js | title": {
+    "message": "Omogući da broj zahteva i veličine prenosa budu mali"
+  },
+  "lighthouse-core/audits/seo/canonical.js | description": {
+    "message": "Kanonički linkovi predlažu koji URL treba da se prikaže u rezultatima pretrage. [Saznajte više](https://web.dev/canonical)."
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationConflict": {
+    "message": "Više neusaglašenih URL-ova ({urlList})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationDifferentDomain": {
+    "message": "Usmerava ka drugom domenu ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationInvalid": {
+    "message": "Nevažeći URL ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationPointsElsewhere": {
+    "message": "Usmerava na drugu `hreflang` lokaciju ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationRelative": {
+    "message": "Relativni URL ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationRoot": {
+    "message": "Usmerava na osnovni URL domena (početnu stranicu), umesto ekvivalentne stranice sadržaja"
+  },
+  "lighthouse-core/audits/seo/canonical.js | failureTitle": {
+    "message": "Dokument nema važeću vrednost `rel=canonical`"
+  },
+  "lighthouse-core/audits/seo/canonical.js | title": {
+    "message": "Dokument ima važeći atribut `rel=canonical`"
+  },
+  "lighthouse-core/audits/seo/font-size.js | description": {
+    "message": "Veličine fontova ispod 12 piksela su premale da bi bile čitljive i zbog njih korisnici na mobilnim uređajima moraju da „zumiraju prstima“ kako bi mogli da čitaju sadržaj. Potrudite se da >60% teksta stranice bude ≥12 piksela. [Saznajte više](https://web.dev/font-size)."
+  },
+  "lighthouse-core/audits/seo/font-size.js | displayValue": {
+    "message": "{decimalProportion, number, extendedPercent} čitljivog teksta"
+  },
+  "lighthouse-core/audits/seo/font-size.js | explanationViewport": {
+    "message": "Tekst nije čitljiv jer ne postoji metaoznaka oblasti prikaza koja je optimizovana za ekrane na mobilnim uređajima."
+  },
+  "lighthouse-core/audits/seo/font-size.js | explanationWithDisclaimer": {
+    "message": "{decimalProportion, number, extendedPercent} teksta je premalo (na osnovu uzorka od {decimalProportionVisited, number, extendedPercent})."
+  },
+  "lighthouse-core/audits/seo/font-size.js | failureTitle": {
+    "message": "Dokument ne koristi čitljive veličine fontova"
+  },
+  "lighthouse-core/audits/seo/font-size.js | title": {
+    "message": "Dokument koristi čitljive veličine fontova"
+  },
+  "lighthouse-core/audits/seo/hreflang.js | description": {
+    "message": "Linkovi hreflang obaveštavaju pretraživače koju verziju stranice treba da navedu u rezultatima pretrage za dati jezik ili region. [Saznajte više](https://web.dev/hreflang)."
+  },
+  "lighthouse-core/audits/seo/hreflang.js | failureTitle": {
+    "message": "Dokument nema važeći atribut `hreflang`"
+  },
+  "lighthouse-core/audits/seo/hreflang.js | title": {
+    "message": "Dokument ima važeći atribut `hreflang`"
+  },
+  "lighthouse-core/audits/seo/http-status-code.js | description": {
+    "message": "Stranice sa neuspešnim HTTP kodovima statusa možda neće biti pravilno indeksirane. [Saznajte više](https://web.dev/http-status-code)."
+  },
+  "lighthouse-core/audits/seo/http-status-code.js | failureTitle": {
+    "message": "Stranica ima neuspešan HTTP kôd statusa"
+  },
+  "lighthouse-core/audits/seo/http-status-code.js | title": {
+    "message": "Stranica ima uspešan HTTP kôd statusa"
+  },
+  "lighthouse-core/audits/seo/is-crawlable.js | description": {
+    "message": "Pretraživači ne mogu da uvrste stranice u rezultate pretrage ako nemaju dozvolu da ih popisuju. [Saznajte više](https://web.dev/is-crawable)."
+  },
+  "lighthouse-core/audits/seo/is-crawlable.js | failureTitle": {
+    "message": "Indeksiranje stranice je blokirano"
+  },
+  "lighthouse-core/audits/seo/is-crawlable.js | title": {
+    "message": "Indeksiranje stranice nije blokirano"
+  },
+  "lighthouse-core/audits/seo/link-text.js | description": {
+    "message": "Opisni tekst u linkovima pomaže pretraživačima da razumeju sadržaj. [Saznajte više](https://web.dev/link-text)."
+  },
+  "lighthouse-core/audits/seo/link-text.js | displayValue": {
+    "message": "{itemCount,plural, =1{Pronađen je 1 link}one{Pronađen je # link}few{Pronađena su # linka}other{Pronađeno je # linkova}}"
+  },
+  "lighthouse-core/audits/seo/link-text.js | failureTitle": {
+    "message": "Linkovi nemaju opisni tekst"
+  },
+  "lighthouse-core/audits/seo/link-text.js | title": {
+    "message": "Linkovi imaju opisni tekst"
+  },
+  "lighthouse-core/audits/seo/manual/structured-data.js | description": {
+    "message": "Pokrenite [alatku za testiranje strukturiranih podataka](https://search.google.com/structured-data/testing-tool/) i [alatku za analiziranje strukturiranih podataka](http://linter.structured-data.org/) da biste procenili strukturirane podatke. [Saznajte više](https://web.dev/structured-data)."
+  },
+  "lighthouse-core/audits/seo/manual/structured-data.js | title": {
+    "message": "Strukturirani podaci su važeći"
+  },
+  "lighthouse-core/audits/seo/meta-description.js | description": {
+    "message": "Metaopisi mogu da budu uvršteni u rezultate pretrage da bi pružili sažeti rezime sadržaja stranice. [Saznajte više](https://web.dev/meta-description)."
+  },
+  "lighthouse-core/audits/seo/meta-description.js | explanation": {
+    "message": "Polje za tekst opisa je prazno."
+  },
+  "lighthouse-core/audits/seo/meta-description.js | failureTitle": {
+    "message": "Dokument nema metaopis"
+  },
+  "lighthouse-core/audits/seo/meta-description.js | title": {
+    "message": "Dokument ima metaopis"
+  },
+  "lighthouse-core/audits/seo/plugins.js | description": {
+    "message": "Pretraživači ne mogu da indeksiraju sadržaj dodatnih komponenata, a mnogi uređaji ograničavaju dodatne komponente ili ih ne podržavaju. [Saznajte više](https://web.dev/plugins)."
+  },
+  "lighthouse-core/audits/seo/plugins.js | failureTitle": {
+    "message": "Dokument koristi dodatne komponente"
+  },
+  "lighthouse-core/audits/seo/plugins.js | title": {
+    "message": "Dokument izbegava dodatne komponente"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | description": {
+    "message": "Ako datoteka robots.txt nije pravilno napravljena, popisivači možda neće moći da razumeju kako želite da se veb-sajt popiše ili indeksira. [Saznajte više](https://web.dev/robots-txt)."
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | displayValueHttpBadCode": {
+    "message": "Zahtev za datoteku robots.txt vratio je HTTP status: {statusCode}"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | displayValueValidationError": {
+    "message": "{itemCount,plural, =1{Pronađena je 1 greška}one{Pronađena je # greška}few{Pronađene su # greške}other{Pronađeno je # grešaka}}"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | explanation": {
+    "message": "Lighthouse nije uspeo da preuzme datoteku robots.txt"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | failureTitle": {
+    "message": "Datoteka robots.txt nije važeća"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | title": {
+    "message": "Datoteka robots.txt je važeća"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | description": {
+    "message": "Interaktivni elementi poput dugmadi i linkova treba da budu dovoljno veliki (48×48 piksela) i da imaju dovoljno prostora oko sebe da bi bilo lako da se dodirnu bez preklapanja sa drugim elementima. [Saznajte više](https://web.dev/tap-targets)."
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | displayValue": {
+    "message": "{decimalProportion, number, percent} ciljeva dodirivanja ima odgovarajuću veličinu"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | explanationViewportMetaNotOptimized": {
+    "message": "Ciljevi dodirivanja su premali jer ne postoji metaoznaka oblasti prikaza koja je optimizovana za ekrane na mobilnim uređajima"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | failureTitle": {
+    "message": "Ciljevi dodirivanja nemaju odgovarajuću veličinu"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | overlappingTargetHeader": {
+    "message": "Cilj koji se preklapa"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | tapTargetHeader": {
+    "message": "Cilj dodirivanja"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | title": {
+    "message": "Ciljevi dodirivanja imaju odgovarajuću veličinu"
+  },
+  "lighthouse-core/audits/service-worker.js | description": {
+    "message": "Serviser je tehnologija koja omogućava aplikaciji da koristi mnoge funkcije progresivnih veb-aplikacija, poput oflajn rada, dodavanja na početni ekran i iskačućih obaveštenja. [Saznajte više](https://developers.google.com/web/tools/lighthouse/audits/registered-service-worker)."
+  },
+  "lighthouse-core/audits/service-worker.js | explanationBadManifest": {
+    "message": "Ovu stranicu kontroliše serviser, ali nije pronađen nijedan `start_url` jer nije uspelo raščlanjivanje manifesta kao važeće JSON datoteke"
+  },
+  "lighthouse-core/audits/service-worker.js | explanationBadStartUrl": {
+    "message": "Ovu stranicu kontroliše serviser, ali `start_url` ({startUrl}) ne spada u opseg servisera ({scopeUrl})"
+  },
+  "lighthouse-core/audits/service-worker.js | explanationNoManifest": {
+    "message": "Ovu stranicu kontroliše serviser, ali nije pronađen nijedan `start_url` jer nijedan manifest nije preuzet."
+  },
+  "lighthouse-core/audits/service-worker.js | explanationOutOfScope": {
+    "message": "Ovaj izvor ima jedan ili više servisera, ali stranica ({pageUrl}) nije u opsegu."
+  },
+  "lighthouse-core/audits/service-worker.js | failureTitle": {
+    "message": "Ne registruje serviser koji kontroliše stranicu i `start_url`"
+  },
+  "lighthouse-core/audits/service-worker.js | title": {
+    "message": "Registruje serviser koji kontroliše stranicu i `start_url`"
+  },
+  "lighthouse-core/audits/splash-screen.js | description": {
+    "message": "Tematski uvodni ekran obezbeđuje kvalitetan doživljaj kada korisnici pokreću aplikaciju sa početnih ekrana. [Saznajte više](https://developers.google.com/web/tools/lighthouse/audits/custom-splash-screen)."
+  },
+  "lighthouse-core/audits/splash-screen.js | failureTitle": {
+    "message": "Nije konfigurisano za prilagođeni uvodni ekran"
+  },
+  "lighthouse-core/audits/splash-screen.js | title": {
+    "message": "Konfigurisano za prilagođeni uvodni ekran"
+  },
+  "lighthouse-core/audits/themed-omnibox.js | description": {
+    "message": "Traka za adresu pregledača može da ima temu koja odgovara sajtu. [Saznajte više](https://developers.google.com/web/tools/lighthouse/audits/address-bar)."
+  },
+  "lighthouse-core/audits/themed-omnibox.js | failureTitle": {
+    "message": "Ne podešava boju teme za traku za adresu."
+  },
+  "lighthouse-core/audits/themed-omnibox.js | title": {
+    "message": "Podešava boju teme za traku za adresu."
+  },
+  "lighthouse-core/audits/third-party-summary.js | columnBlockingTime": {
+    "message": "Period blokiranja glavne niti"
+  },
+  "lighthouse-core/audits/third-party-summary.js | columnThirdParty": {
+    "message": "Nezavisni dobavljač"
+  },
+  "lighthouse-core/audits/third-party-summary.js | description": {
+    "message": "Kôd nezavisnog dobavljača može značajno da utiče na učinak učitavanja. Ograničite broj suvišnih nezavisnih dobavljača usluge i probajte da učitate kôd nezavisnog dobavljača kada stranica primarno završi sa učitavanjem. [Saznajte više](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/loading-third-party-javascript/)."
+  },
+  "lighthouse-core/audits/third-party-summary.js | displayValue": {
+    "message": "Kôd nezavisnog dobavljača je blokirao glavnu nit {timeInMs, number, milliseconds} ms"
+  },
+  "lighthouse-core/audits/third-party-summary.js | failureTitle": {
+    "message": "Smanjite uticaj koda nezavisnog dobavljača"
+  },
+  "lighthouse-core/audits/third-party-summary.js | title": {
+    "message": "Nezavisna upotreba"
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | description": {
+    "message": "Vreme prvog odgovora određuje vreme u koje server šalje odgovor. [Saznajte više](https://developers.google.com/web/tools/lighthouse/audits/ttfb)."
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | displayValue": {
+    "message": "Osnovnom dokumentu je trebalo {timeInMs, number, milliseconds} ms"
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | failureTitle": {
+    "message": "Smanjite vremena odgovora servera (TTFB)"
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | title": {
+    "message": "Vremena odgovora servera su kratka (TTFB)"
+  },
+  "lighthouse-core/audits/user-timings.js | columnDuration": {
+    "message": "Trajanje"
+  },
+  "lighthouse-core/audits/user-timings.js | columnStartTime": {
+    "message": "Vreme početka"
+  },
+  "lighthouse-core/audits/user-timings.js | columnType": {
+    "message": "Tip"
+  },
+  "lighthouse-core/audits/user-timings.js | description": {
+    "message": "Preporučujemo vam da opremite aplikaciju API-jem za vreme korisnika da biste izmerili učinak aplikacije u realnom svetu tokom ključnih korisničkih doživljaja. [Saznajte više](https://developers.google.com/web/tools/lighthouse/audits/user-timing)."
+  },
+  "lighthouse-core/audits/user-timings.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 vreme korisnika}one{# vreme korisnika}few{# vremena korisnika}other{# vremena korisnika}}"
+  },
+  "lighthouse-core/audits/user-timings.js | title": {
+    "message": "Oznake i mere Vremena korisnika"
+  },
+  "lighthouse-core/audits/uses-rel-preconnect.js | crossoriginWarning": {
+    "message": "Povezivanje unapred <link> je pronađeno za „{securityOrigin}“, ali ga pregledač nije upotrebio. Proverite da li pravilno koristite atribut `crossorigin`."
+  },
+  "lighthouse-core/audits/uses-rel-preconnect.js | description": {
+    "message": "Razmislite o tome da dodate savete za resurse `preconnect` ili `dns-prefetch` kako biste uspostavili rane veze sa važnim izvorima trećih strana. [Saznajte više](https://developers.google.com/web/fundamentals/performance/resource-prioritization#preconnect)."
+  },
+  "lighthouse-core/audits/uses-rel-preconnect.js | title": {
+    "message": "Povežite se unapred sa potrebnim izvorima"
+  },
+  "lighthouse-core/audits/uses-rel-preload.js | crossoriginWarning": {
+    "message": "Predučitavanje <link> je pronađeno za „{preloadURL}“, ali ga pregledač nije upotrebio. Proverite da li pravilno koristite atribut `crossorigin`."
+  },
+  "lighthouse-core/audits/uses-rel-preload.js | description": {
+    "message": "Preporučujemo vam da koristite `<link rel=preload>` kako biste kasnije tokom učitavanja stranice dali prioritet preuzimanju resursa koji se trenutno traže. [Saznajte više](https://developers.google.com/web/tools/lighthouse/audits/preload)."
+  },
+  "lighthouse-core/audits/uses-rel-preload.js | title": {
+    "message": "Unapred učitajte najvažnije zahteve"
+  },
+  "lighthouse-core/audits/viewport.js | description": {
+    "message": "Dodajte oznaku `<meta name=\"viewport\">` da biste optimizovali aplikaciju za ekrane na mobilnim uređajima. [Saznajte više](https://developers.google.com/web/tools/lighthouse/audits/has-viewport-meta-tag)."
+  },
+  "lighthouse-core/audits/viewport.js | explanationNoTag": {
+    "message": "Nije pronađena oznaka `<meta name=\"viewport\">`"
+  },
+  "lighthouse-core/audits/viewport.js | failureTitle": {
+    "message": "Nema oznaku `<meta name=\"viewport\">` sa oznakama `width` ili `initial-scale`"
+  },
+  "lighthouse-core/audits/viewport.js | title": {
+    "message": "Ima oznaku `<meta name=\"viewport\">` sa oznakom `width` ili `initial-scale`"
+  },
+  "lighthouse-core/audits/without-javascript.js | description": {
+    "message": "Aplikacija treba da prikazuje neki sadržaj kada je JavaScript onemogućen, čak i ako je to samo upozorenje korisniku da je JavaScript obavezan za korišćenje aplikacije. [Saznajte više](https://developers.google.com/web/tools/lighthouse/audits/no-js)."
+  },
+  "lighthouse-core/audits/without-javascript.js | explanation": {
+    "message": "Telo stranice treba da prikazuje neki sadržaj ako joj skripte nisu dostupne."
+  },
+  "lighthouse-core/audits/without-javascript.js | failureTitle": {
+    "message": "Ne pruža rezervni sadržaj kada JavaScript nije dostupan"
+  },
+  "lighthouse-core/audits/without-javascript.js | title": {
+    "message": "Ima neki sadržaj kada JavaScript nije dostupan"
+  },
+  "lighthouse-core/audits/works-offline.js | description": {
+    "message": "Ako pravite progresivnu veb-aplikaciju, razmislite o tome da koristite serviser kako bi aplikacija mogla da radi oflajn. [Saznajte više](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)."
+  },
+  "lighthouse-core/audits/works-offline.js | failureTitle": {
+    "message": "Aktuelna stranica ne odgovara kodom 200 kada je oflajn"
+  },
+  "lighthouse-core/audits/works-offline.js | title": {
+    "message": "Aktuelna stranica odgovara kodom 200 kada je oflajn"
+  },
+  "lighthouse-core/audits/works-offline.js | warningNoLoad": {
+    "message": "Stranica se možda ne učitava oflajn zato što je probni URL ({requested}) preusmeren na „{final}“. Probajte direktno da testirate drugi URL."
+  },
+  "lighthouse-core/config/default-config.js | a11yAriaGroupDescription": {
+    "message": "To su prilike da poboljšate korišćenje ARIA uloga u aplikaciji, čime može da poboljša doživljaj korisnika tehnologije za pomoć osobama sa invaliditetom, kao što je čitač ekrana."
+  },
+  "lighthouse-core/config/default-config.js | a11yAriaGroupTitle": {
+    "message": "ARIA"
+  },
+  "lighthouse-core/config/default-config.js | a11yAudioVideoGroupDescription": {
+    "message": "To su prilike da pružite alternativni sadržaj za audio i video datoteke. To može da poboljša doživljaj za korisnike sa oštećenim sluhom ili vidom."
+  },
+  "lighthouse-core/config/default-config.js | a11yAudioVideoGroupTitle": {
+    "message": "Zvuk i video"
+  },
+  "lighthouse-core/config/default-config.js | a11yBestPracticesGroupDescription": {
+    "message": "Ove stavke ističu uobičajene najbolje prakse u vezi sa pristupačnošću."
+  },
+  "lighthouse-core/config/default-config.js | a11yBestPracticesGroupTitle": {
+    "message": "Najbolje prakse"
+  },
+  "lighthouse-core/config/default-config.js | a11yCategoryDescription": {
+    "message": "Ove provere ističu prilike za [poboljšanje pristupačnosti veb-aplikacije](https://developers.google.com/web/fundamentals/accessibility). Automatski može da se otkrije samo jedan podskup problema sa pristupačnošću, pa preporučujemo da obavljate i ručno testiranje."
+  },
+  "lighthouse-core/config/default-config.js | a11yCategoryManualDescription": {
+    "message": "Ove stavke obrađuju oblasti koje alatka za automatizovano testiranje ne može da obuhvati. Saznajte više u vodiču o [sprovođenju pregleda pristupačnosti](https://developers.google.com/web/fundamentals/accessibility/how-to-review)."
+  },
+  "lighthouse-core/config/default-config.js | a11yCategoryTitle": {
+    "message": "Pristupačnost"
+  },
+  "lighthouse-core/config/default-config.js | a11yColorContrastGroupDescription": {
+    "message": "To su prilike da poboljšate čitljivost sadržaja."
+  },
+  "lighthouse-core/config/default-config.js | a11yColorContrastGroupTitle": {
+    "message": "Kontrast"
+  },
+  "lighthouse-core/config/default-config.js | a11yLanguageGroupDescription": {
+    "message": "To su prilike da poboljšate tumačenje svog sadržaja za korisnike na različitim jezicima."
+  },
+  "lighthouse-core/config/default-config.js | a11yLanguageGroupTitle": {
+    "message": "Internacionalizacija i lokalizacija"
+  },
+  "lighthouse-core/config/default-config.js | a11yNamesLabelsGroupDescription": {
+    "message": "To su prilike da poboljšate semantiku kontrola u aplikaciji. To može da poboljša doživljaj korisnika tehnologije za pomoć osobama sa invaliditetom, kao što je čitač ekrana."
+  },
+  "lighthouse-core/config/default-config.js | a11yNamesLabelsGroupTitle": {
+    "message": "Nazivi i oznake"
+  },
+  "lighthouse-core/config/default-config.js | a11yNavigationGroupDescription": {
+    "message": "Ovo su prilike da poboljšate kretanje po tastaturi u aplikaciji."
+  },
+  "lighthouse-core/config/default-config.js | a11yNavigationGroupTitle": {
+    "message": "Navigacija"
+  },
+  "lighthouse-core/config/default-config.js | a11yTablesListsVideoGroupDescription": {
+    "message": "To su prilike za poboljšanje doživljaja pri čitanju podataka iz tabela i lista pomoću tehnologije za pomoć osobama sa invaliditetom, poput čitača ekrana."
+  },
+  "lighthouse-core/config/default-config.js | a11yTablesListsVideoGroupTitle": {
+    "message": "Tabele i liste"
+  },
+  "lighthouse-core/config/default-config.js | bestPracticesCategoryTitle": {
+    "message": "Najbolje prakse"
+  },
+  "lighthouse-core/config/default-config.js | budgetsGroupDescription": {
+    "message": "Ciljevima za učinak određuju se standardi za učinak sajta."
+  },
+  "lighthouse-core/config/default-config.js | budgetsGroupTitle": {
+    "message": "Ciljevi"
+  },
+  "lighthouse-core/config/default-config.js | diagnosticsGroupDescription": {
+    "message": "Više informacija o učinku aplikacije. Ovi brojevi ne [utiču direktno](https://github.com/GoogleChrome/lighthouse/blob/d2ec9ffbb21de9ad1a0f86ed24575eda32c796f0/docs/scoring.md#how-are-the-scores-weighted) na ocenu učinka."
+  },
+  "lighthouse-core/config/default-config.js | diagnosticsGroupTitle": {
+    "message": "Dijagnostika"
+  },
+  "lighthouse-core/config/default-config.js | firstPaintImprovementsGroupDescription": {
+    "message": "Najvažniji aspekt učinka je brzina kojom se pikseli prikazuju na ekranu. Ključni pokazatelji: Prvo prikazivanje sadržaja, Prvo značajno prikazivanje"
+  },
+  "lighthouse-core/config/default-config.js | firstPaintImprovementsGroupTitle": {
+    "message": "Poboljšanja prvog prikazivanja"
+  },
+  "lighthouse-core/config/default-config.js | loadOpportunitiesGroupDescription": {
+    "message": "Ovi predlozi mogu da vam pomognu da se stranica učitava brže. Ne [utiču direktno](https://github.com/GoogleChrome/lighthouse/blob/d2ec9ffbb21de9ad1a0f86ed24575eda32c796f0/docs/scoring.md#how-are-the-scores-weighted) na ocenu učinka."
+  },
+  "lighthouse-core/config/default-config.js | loadOpportunitiesGroupTitle": {
+    "message": "Mogućnosti"
+  },
+  "lighthouse-core/config/default-config.js | metricGroupTitle": {
+    "message": "Pokazatelji"
+  },
+  "lighthouse-core/config/default-config.js | overallImprovementsGroupDescription": {
+    "message": "Poboljšajte opšti doživljaj učitavanja da bi stranica počela da se odaziva i da bi bila spremna za korišćenje u najkraćem mogućem roku. Ključni pokazatelji: Vreme početka interakcije, Indeks brzine"
+  },
+  "lighthouse-core/config/default-config.js | overallImprovementsGroupTitle": {
+    "message": "Opšta poboljšanja"
+  },
+  "lighthouse-core/config/default-config.js | performanceCategoryTitle": {
+    "message": "Učinak"
+  },
+  "lighthouse-core/config/default-config.js | pwaCategoryDescription": {
+    "message": "Ovim proverama se ocenjuju aspekti progresivne veb-aplikacije. [Saznajte više](https://developers.google.com/web/progressive-web-apps/checklist)."
+  },
+  "lighthouse-core/config/default-config.js | pwaCategoryManualDescription": {
+    "message": "Ove provere zahteva osnovna [Kontrolna lista za progresivne veb-aplikacije](https://developers.google.com/web/progressive-web-apps/checklist), ali ih Lighthouse ne sprovodi automatski. One ne utiču na vaš rezultat, ali je važno da ih ručno potvrdite."
+  },
+  "lighthouse-core/config/default-config.js | pwaCategoryTitle": {
+    "message": "Progresivna veb-aplikacija"
+  },
+  "lighthouse-core/config/default-config.js | pwaFastReliableGroupTitle": {
+    "message": "Brzo i pouzdano"
+  },
+  "lighthouse-core/config/default-config.js | pwaInstallableGroupTitle": {
+    "message": "Može da se instalira"
+  },
+  "lighthouse-core/config/default-config.js | pwaOptimizedGroupTitle": {
+    "message": "Optimizovano za PWA"
+  },
+  "lighthouse-core/config/default-config.js | seoCategoryDescription": {
+    "message": "Zahvaljujući ovim proverama stranica će sigurno biti optimizovana za rangiranje rezultata pretraživača. Ima još nekih faktora koje Lighthouse ne proverava, a koji mogu da utiču na rangiranje u pretrazi. [Saznajte više](https://support.google.com/webmasters/answer/35769)."
+  },
+  "lighthouse-core/config/default-config.js | seoCategoryManualDescription": {
+    "message": "Pokrećite ove dodatne validatore na sajtu da biste proverili dodatne najbolje prakse optimizacije za pretraživače."
+  },
+  "lighthouse-core/config/default-config.js | seoCategoryTitle": {
+    "message": "Optimizacija za pretraživače"
+  },
+  "lighthouse-core/config/default-config.js | seoContentGroupDescription": {
+    "message": "Formatirajte HTML sadržaj na način koji omogućava popisivačima da bolje razumeju sadržaj aplikacije."
+  },
+  "lighthouse-core/config/default-config.js | seoContentGroupTitle": {
+    "message": "Najbolje prakse za sadržaj"
+  },
+  "lighthouse-core/config/default-config.js | seoCrawlingGroupDescription": {
+    "message": "Da bi se aplikacija pojavila u rezultatima pretrage, popisivači treba da imaju pristup do nje."
+  },
+  "lighthouse-core/config/default-config.js | seoCrawlingGroupTitle": {
+    "message": "Popisivanje i indeksiranje"
+  },
+  "lighthouse-core/config/default-config.js | seoMobileGroupDescription": {
+    "message": "Uverite se da su stranice prilagođene mobilnim uređajima da korisnici ne bi morali da umanjuju ili uvećavaju prikaz kako bi čitali stranice sa sadržajem. [Saznajte više](https://developers.google.com/search/mobile-sites/)."
+  },
+  "lighthouse-core/config/default-config.js | seoMobileGroupTitle": {
+    "message": "Prilagođeno mobilnim uređajima"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnCacheTTL": {
+    "message": "Vreme preživljavanja keša"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnLocation": {
+    "message": "Lokacija"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnName": {
+    "message": "Naziv"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnRequests": {
+    "message": "Zahtevi"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnResourceType": {
+    "message": "Tip resursa"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnSize": {
+    "message": "Veličina"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnTimeSpent": {
+    "message": "Provedeno vreme"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnTransferSize": {
+    "message": "Veličina prenosa"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnURL": {
+    "message": "URL"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnWastedBytes": {
+    "message": "Potencijalna ušteda"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnWastedMs": {
+    "message": "Potencijalna ušteda"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | displayValueByteSavings": {
+    "message": "Potencijalna ušteda od {wastedBytes, number, bytes} KB"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | displayValueMsSavings": {
+    "message": "Potencijalna ušteda od {wastedMs, number, milliseconds} ms"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | documentResourceType": {
+    "message": "Dokument"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | fontResourceType": {
+    "message": "Font"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | imageResourceType": {
+    "message": "Slika"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | mediaResourceType": {
+    "message": "Mediji"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | ms": {
+    "message": "{timeInMs, number, milliseconds} ms"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | otherResourceType": {
+    "message": "Drugo"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | scriptResourceType": {
+    "message": "Skripta"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | seconds": {
+    "message": "{timeInMs, number, seconds} sek"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | stylesheetResourceType": {
+    "message": "Opis stila"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | thirdPartyResourceType": {
+    "message": "Nezavisni resursi"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | totalResourceType": {
+    "message": "Ukupno"
+  },
+  "lighthouse-core/lib/lh-error.js | badTraceRecording": {
+    "message": "Došlo je do greške pri evidentiranju traga tokom učitavanja stranice. Ponovo pokrenite Lighthouse. ({errorCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | criTimeout": {
+    "message": "Vremensko ograničenje čekanja na inicijalnu vezu za protokol programa za otklanjanje grešaka."
+  },
+  "lighthouse-core/lib/lh-error.js | didntCollectScreenshots": {
+    "message": "Chrome nije prikupio nijedan snimak ekrana tokom učitavanja stranice. Uverite se da je sadržaj vidljiv na stranici, pa probajte da ponovo pokrenete Lighthouse. ({errorCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | dnsFailure": {
+    "message": "DNS serveri nisu mogli da razreše navedeni domen."
+  },
+  "lighthouse-core/lib/lh-error.js | erroredRequiredArtifact": {
+    "message": "Prikupljač za obavezni resurs {artifactName} je naišao na grešku: {errorMessage}"
+  },
+  "lighthouse-core/lib/lh-error.js | internalChromeError": {
+    "message": "Došlo je do interne greške u Chrome-u. Ponovo pokrenite Chrome i probajte da ponovo pokrenete Lighthouse."
+  },
+  "lighthouse-core/lib/lh-error.js | missingRequiredArtifact": {
+    "message": "Prikupljač za obavezni resurs {artifactName} se nije pokrenuo."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailed": {
+    "message": "Lighthouse nije uspeo da pouzdano učita stranicu koju ste zahtevali. Uverite se da testirate odgovarajući URL i da server pravilno odgovara na sve zahteve."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedHung": {
+    "message": "Lighthouse nije uspeo da pouzdano učita URL koji ste zahtevali jer je stranica prestala da reaguje."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedInsecure": {
+    "message": "URL koji ste naveli nema važeći bezbednosni sertifikat. {securityMessages}"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedInterstitial": {
+    "message": "Chrome je sprečio učitavanje stranice sa tranzitivnim oglasom. Uverite se da testirate odgovarajući URL i da server pravilno odgovara na sve zahteve."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedWithDetails": {
+    "message": "Lighthouse nije uspeo da pouzdano učita stranicu koju ste zahtevali. Uverite se da testirate odgovarajući URL i da server pravilno odgovara na sve zahteve. (Detalji: {errorDetails})"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedWithStatusCode": {
+    "message": "Lighthouse nije uspeo da pouzdano učita stranicu koju ste zahtevali. Uverite se da testirate odgovarajući URL i da server pravilno odgovara na sve zahteve. (Kôd statusa: {statusCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadTookTooLong": {
+    "message": "Učitavanje stranice je trajalo predugo. Pratite prilike u izveštaju da biste skratili vreme učitavanja stranice, pa ponovo pokrenite Lighthouse. ({errorCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | protocolTimeout": {
+    "message": "Odgovor protokola DevTools se čeka duže od dodeljenog perioda. (Metod: {protocolMethod})"
+  },
+  "lighthouse-core/lib/lh-error.js | requestContentTimeout": {
+    "message": "Preuzimanje sadržaja resursa traje duže od dodeljenog perioda."
+  },
+  "lighthouse-core/lib/lh-error.js | urlInvalid": {
+    "message": "Izgleda da je URL koji ste naveli nevažeći."
+  },
+  "lighthouse-core/report/html/renderer/util.js | auditGroupExpandTooltip": {
+    "message": "Prikaži provere"
+  },
+  "lighthouse-core/report/html/renderer/util.js | crcInitialNavigation": {
+    "message": "Početna navigacija"
+  },
+  "lighthouse-core/report/html/renderer/util.js | crcLongestDurationLabel": {
+    "message": "Maksimalno kašnjenje kritične putanje:"
+  },
+  "lighthouse-core/report/html/renderer/util.js | errorLabel": {
+    "message": "Greška!"
+  },
+  "lighthouse-core/report/html/renderer/util.js | errorMissingAuditInfo": {
+    "message": "Prijavljivanje greške: nema informacija o proveri"
+  },
+  "lighthouse-core/report/html/renderer/util.js | labDataTitle": {
+    "message": "Podaci o eksperimentalnim funkcijama"
+  },
+  "lighthouse-core/report/html/renderer/util.js | lsPerformanceCategoryDescription": {
+    "message": "[Lighthouse](https://developers.google.com/web/tools/lighthouse/) analiza aktuelne stranice emulirane pomoću mobilne mreže. Vrednosti predstavljaju procene i mogu da variraju."
+  },
+  "lighthouse-core/report/html/renderer/util.js | manualAuditsGroupTitle": {
+    "message": "Dodatne stavke za ručnu proveru"
+  },
+  "lighthouse-core/report/html/renderer/util.js | notApplicableAuditsGroupTitle": {
+    "message": "Nije primenjivo"
+  },
+  "lighthouse-core/report/html/renderer/util.js | opportunityResourceColumnLabel": {
+    "message": "Mogućnost"
+  },
+  "lighthouse-core/report/html/renderer/util.js | opportunitySavingsColumnLabel": {
+    "message": "Procenjena ušteda"
+  },
+  "lighthouse-core/report/html/renderer/util.js | passedAuditsGroupTitle": {
+    "message": "Provere sa zadovoljavajućom ocenom"
+  },
+  "lighthouse-core/report/html/renderer/util.js | snippetCollapseButtonLabel": {
+    "message": "Skupi fragment"
+  },
+  "lighthouse-core/report/html/renderer/util.js | snippetExpandButtonLabel": {
+    "message": "Proširi fragment"
+  },
+  "lighthouse-core/report/html/renderer/util.js | thirdPartyResourcesLabel": {
+    "message": "Prikaži nezavisne resurse"
+  },
+  "lighthouse-core/report/html/renderer/util.js | toplevelWarningsMessage": {
+    "message": "Bilo je izvesnih problema koji su uticali na ovo pokretanje Lighthouse-a:"
+  },
+  "lighthouse-core/report/html/renderer/util.js | varianceDisclaimer": {
+    "message": "Vrednosti predstavljaju procene i mogu da variraju. Ocena učinka se [zasniva samo na ovim pokazateljima](https://github.com/GoogleChrome/lighthouse/blob/d2ec9ffbb21de9ad1a0f86ed24575eda32c796f0/docs/scoring.md#how-are-the-scores-weighted)."
+  },
+  "lighthouse-core/report/html/renderer/util.js | warningAuditsGroupTitle": {
+    "message": "Provere sa zadovoljavajućom ocenom koje sadrže upozorenja"
+  },
+  "lighthouse-core/report/html/renderer/util.js | warningHeader": {
+    "message": "Upozorenja: "
+  },
+  "stack-packs/packs/wordpress.js | efficient_animated_content": {
+    "message": "Predlažemo da otpremite GIF u uslugu koja će ga kodirati za ugradnju u HTML5 video."
+  },
+  "stack-packs/packs/wordpress.js | offscreen_images": {
+    "message": "Instalirajte [WordPress dodatnu komponentu za lako učitavanje](https://wordpress.org/plugins/search/lazy+load/) koja omogućava da odložite sve slike van ekrana ili da pređete na temu koja pruža tu funkciju. Preporučujemo i da koristite [dodatnu komponentu za AMP stranice](https://wordpress.org/plugins/amp/)."
+  },
+  "stack-packs/packs/wordpress.js | render_blocking_resources": {
+    "message": "Neke WordPress dodatne komponente mogu da vam pomognu da [umetnete kritične elemente](https://wordpress.org/plugins/search/critical+css/) ili [odložite manje važne resurse](https://wordpress.org/plugins/search/defer+css+javascript/). Imajte na umu da optimizacije koje pružaju ove dodatne komponente mogu da oštete funkcije ili teme dodatnih komponenti, pa ćete verovatno morati da unosite promene u kôd."
+  },
+  "stack-packs/packs/wordpress.js | time_to_first_byte": {
+    "message": "Teme, dodatne komponente i specifikacije servera doprinose vremenu odgovora servera. Preporučujemo da pronađete optimizovaniju temu, pažljivo izaberete dodatnu komponentu za optimizaciju i/ili nadogradite server."
+  },
+  "stack-packs/packs/wordpress.js | total_byte_weight": {
+    "message": "Preporučujemo da prikažete odlomke u listama postova (na primer, preko još oznaka), smanjite broj postova koji se prikazuju na određenoj stranici, razdvojite dugačke postove na više strancia ili koristite dodatnu komponentu za lako učitavanje komentara."
+  },
+  "stack-packs/packs/wordpress.js | unminified_css": {
+    "message": "Neke [WordPress dodatne komponente](https://wordpress.org/plugins/search/minify+css/) mogu da ubrzaju sajt tako što povezuju, umanjuju i komprimuju stilove. Ovo umanjivanje možete da obavite i unapred pomoću procesa dizajniranja ako je moguće."
+  },
+  "stack-packs/packs/wordpress.js | unminified_javascript": {
+    "message": "Neke [WordPress dodatne komponente](https://wordpress.org/plugins/search/minify+javascript/) mogu da ubrzaju sajt tako što povezuju, umanjuju i komprimuju skripte. Ovo umanjivanje možete da obavite i unapred pomoću procesa dizajniranja ako je moguće."
+  },
+  "stack-packs/packs/wordpress.js | unused_css_rules": {
+    "message": "Preporučujemo da umanjite ili promenite broj [WordPress dodatnih komponenti](https://wordpress.org/plugins/) koje na stranici učitavaju CSS koji se ne koristi. Da biste identifikovali dodatne komponente koje dodaju suvišan CSS, probajte da pokrenete [pokrivenost koda](https://developers.google.com/web/updates/2017/04/devtools-release-notes#coverage) u alatki Chrome DevTools. Možete da identifikujete odgovornu temu/dodatnu komponentu u URL-u stilske stranice. Potražite dodatne komponente koje na listi imaju mnogo stilskih stranica sa dosta crvenila u pokrivenosti koda. Dodatna komponenta treba da stavi stilsku stranicu na listu samo ako se stvarno koristi na stranici."
+  },
+  "stack-packs/packs/wordpress.js | unused_javascript": {
+    "message": "Preporučujemo da umanjite ili promenite broj [WordPress dodatnih komponenti](https://wordpress.org/plugins/) koje na stranici učitavaju JavaScript koji se ne koristi. Da biste identifikovali dodatne komponente koje dodaju suvišan JS, probajte da pokrenete [pokrivenost koda](https://developers.google.com/web/updates/2017/04/devtools-release-notes#coverage) u alatki Chrome DevTools. Možete da identifikujete odgovornu temu/dodatnu komponentu u URL-u skripte. Potražite dodatne komponente koje na listi imaju mnogo skripti sa dosta crvenila u pokrivenosti koda. Dodatna komponenta treba da stavi skriptu na listu samo ako se stvarno koristi na stranici."
+  },
+  "stack-packs/packs/wordpress.js | uses_long_cache_ttl": {
+    "message": "Pročitajte više o [keširanju pregledača u WordPress-u](https://codex.wordpress.org/WordPress_Optimization#Browser_Caching)."
+  },
+  "stack-packs/packs/wordpress.js | uses_optimized_images": {
+    "message": "Preporučujemo da koristite [WordPress dodatnu komponentu za optimizaciju slika](https://wordpress.org/plugins/search/optimize+images/) koja komprimuje slike bez gubitka kvaliteta."
+  },
+  "stack-packs/packs/wordpress.js | uses_responsive_images": {
+    "message": "Otpremajte slike direktno pomoću [biblioteke medija](https://codex.wordpress.org/Media_Library_Screen) da biste se uverili da su dostupne obavezne veličine slika, pa ih umetnite u biblioteku medija ili koristite vidžet stranice da biste se uverili da se koriste optimalne veličine slika (uključujući one za prelomne tačke koje se odazivaju). Izbegavajte korišćenje slika `Full Size` ako dimenzije nisu adekvatne za njihovo korišćenje. [Saznajte više](https://codex.wordpress.org/Inserting_Images_into_Posts_and_Pages#Image_Size)."
+  },
+  "stack-packs/packs/wordpress.js | uses_text_compression": {
+    "message": "Možete da omogućite komprimovanje teksta u konfiguraciji veb-servera."
+  },
+  "stack-packs/packs/wordpress.js | uses_webp_images": {
+    "message": "Preporučujemo da koristite [dodatnu komponentu](https://wordpress.org/plugins/search/convert+webp/) ili uslugu koja automatski konvertuje otpremljene slike u optimalne formate."
+  }
+}
diff --git a/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/sr.json b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/sr.json
new file mode 100644
index 0000000..37029ba
--- /dev/null
+++ b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/sr.json
@@ -0,0 +1,1541 @@
+{
+  "lighthouse-core/audits/accessibility/accesskeys.js | description": {
+    "message": "Тастери за приступ омогућавају корисницима да брзо фокусирају део странице. Да би навигација радила исправно, сваки тастер за приступ мора да буде јединствен. [Сазнајте више](https://web.dev/accesskeys/)."
+  },
+  "lighthouse-core/audits/accessibility/accesskeys.js | failureTitle": {
+    "message": "Вредности за `[accesskey]` нису јединствене"
+  },
+  "lighthouse-core/audits/accessibility/accesskeys.js | title": {
+    "message": "Вредности за `[accesskey]` су јединствене"
+  },
+  "lighthouse-core/audits/accessibility/aria-allowed-attr.js | description": {
+    "message": "Сваки ARIA елемент „`role`“ подржава одређени подскуп атрибута „`aria-*`“. Ако се ови елементи не подударају, атрибути „`aria-*`“ ће бити неважећи. [Сазнајте више](https://web.dev/aria-allowed-attr/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-allowed-attr.js | failureTitle": {
+    "message": "Атрибути `[aria-*]` се не подударају са својим улогама"
+  },
+  "lighthouse-core/audits/accessibility/aria-allowed-attr.js | title": {
+    "message": "Атрибути `[aria-*]` се подударају са својим улогама"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-attr.js | description": {
+    "message": "Поједине ARIA улоге имају обавезне атрибуте који статус елемента описују читачима екрана. [Сазнајте више](https://web.dev/aria-required-attr/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-required-attr.js | failureTitle": {
+    "message": "Улоге `[role]` немају све обавезне атрибуте `[aria-*]`"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-attr.js | title": {
+    "message": "Улоге `[role]` имају све обавезне атрибуте `[aria-*]`"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-children.js | description": {
+    "message": "Поједине надређене ARIA улоге морају да обухватају одређене подређене улоге да би правилно обављале намењене функције приступачности. [Сазнајте више](https://web.dev/aria-required-children/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-required-children.js | failureTitle": {
+    "message": "Недостају елементи са улогом `[role]` који захтевају одређену подређену улогу `[role]`."
+  },
+  "lighthouse-core/audits/accessibility/aria-required-children.js | title": {
+    "message": "Присутни су елементи са улогом `[role]` који захтевају одређену подређену улогу `[role]`"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-parent.js | description": {
+    "message": "Поједине подређене ARIA улоге морају да буду обухваћене одређеним надређеним улогама да би правилно обављале намењене функције приступачности. [Сазнајте више](https://web.dev/aria-required-parent/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-required-parent.js | failureTitle": {
+    "message": "Улоге `[role]` нису обухваћене својим обавезним надређеним елементом"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-parent.js | title": {
+    "message": "Улоге `[role]` су обухваћене својим обавезним надређеним елементом"
+  },
+  "lighthouse-core/audits/accessibility/aria-roles.js | description": {
+    "message": "Вредности ARIA улога морају да буду важеће да би правилно обављале намењене функције приступачности. [Сазнајте више](https://web.dev/aria-roles/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-roles.js | failureTitle": {
+    "message": "Вредности за `[role]` нису важеће"
+  },
+  "lighthouse-core/audits/accessibility/aria-roles.js | title": {
+    "message": "Вредности за `[role]` су важеће"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr-value.js | description": {
+    "message": "Технологије за помоћ особама са инвалидитетом, попут читача екрана, не могу да интерпретирају ARIA атрибуте са неважећим вредностима. [Сазнајте више](https://web.dev/aria-valid-attr-value/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr-value.js | failureTitle": {
+    "message": "Вредности атрибута `[aria-*]` нису важеће"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr-value.js | title": {
+    "message": "Вредности атрибута `[aria-*]` су важеће"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr.js | description": {
+    "message": "Технологије за помоћ особама са инвалидитетом, попут читача екрана, не могу да интерпретирају ARIA атрибуте са неважећим називима. [Сазнајте више](https://web.dev/aria-valid-attr/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr.js | failureTitle": {
+    "message": "Атрибути `[aria-*]` нису важећи или су погрешно написани"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr.js | title": {
+    "message": "Атрибути `[aria-*]` су важећи и нису погрешно написани"
+  },
+  "lighthouse-core/audits/accessibility/audio-caption.js | description": {
+    "message": "Титлови омогућавају да глуви корисници или корисници са оштећењем слуха користе аудио елементе, чиме се пружају важне информације, на пример, информације о томе која особа говори, шта говори, као и друге информације које нису везане за говор. [Сазнајте више](https://web.dev/audio-caption/)."
+  },
+  "lighthouse-core/audits/accessibility/audio-caption.js | failureTitle": {
+    "message": "Елементима `<audio>` недостаје елемент `<track>` са атрибутом `[kind=\"captions\"]`."
+  },
+  "lighthouse-core/audits/accessibility/audio-caption.js | title": {
+    "message": "Елементи `<audio>` садрже елемент `<track>` са атрибутом `[kind=\"captions\"]`"
+  },
+  "lighthouse-core/audits/accessibility/axe-audit.js | failingElementsHeader": {
+    "message": "Елементи који нису прошли проверу"
+  },
+  "lighthouse-core/audits/accessibility/button-name.js | description": {
+    "message": "Када дугме нема назив прилагођен функцији приступачности, читачи екрана га најављују као „дугме“, па корисници који се ослањају на читаче екрана не могу да га користе. [Сазнајте више](https://web.dev/button-name/)."
+  },
+  "lighthouse-core/audits/accessibility/button-name.js | failureTitle": {
+    "message": "Дугмад нема називе прилагођене функцијама приступачности"
+  },
+  "lighthouse-core/audits/accessibility/button-name.js | title": {
+    "message": "Дугмад има називе прилагођене функцијама приступачности"
+  },
+  "lighthouse-core/audits/accessibility/bypass.js | description": {
+    "message": "Када се додају начини за заобилажење садржаја који се понавља, корисници тастатуре могу ефикасније да се крећу по страници. [Сазнајте више](https://web.dev/bypass/)."
+  },
+  "lighthouse-core/audits/accessibility/bypass.js | failureTitle": {
+    "message": "Страница не обухвата наслов, линк за прескакање нити регион оријентира"
+  },
+  "lighthouse-core/audits/accessibility/bypass.js | title": {
+    "message": "Страница обухвата наслов, линк за прескакање или регион оријентира"
+  },
+  "lighthouse-core/audits/accessibility/color-contrast.js | description": {
+    "message": "Многи корисници веома тешко читају текст са малим контрастом или уопште не могу да га читају. [Сазнајте више](https://web.dev/color-contrast/)."
+  },
+  "lighthouse-core/audits/accessibility/color-contrast.js | failureTitle": {
+    "message": "Боје у позадини и у првом плану немају задовољавајући однос контраста."
+  },
+  "lighthouse-core/audits/accessibility/color-contrast.js | title": {
+    "message": "Боје у позадини и у првом плану имају задовољавајући однос контраста"
+  },
+  "lighthouse-core/audits/accessibility/definition-list.js | description": {
+    "message": "Када листе дефиниција нису правилно означене, читачи екрана могу да пружају збуњујући или нетачан излаз. [Сазнајте више](https://web.dev/definition-list/)."
+  },
+  "lighthouse-core/audits/accessibility/definition-list.js | failureTitle": {
+    "message": "`<dl>` не садржи само правилно наручене групе `<dt>` и `<dd>`, елементе `<script>` или `<template>`."
+  },
+  "lighthouse-core/audits/accessibility/definition-list.js | title": {
+    "message": "`<dl>` садржи само правилно наручене групе`<dt>` и `<dd>`, елементе `<script>` или `<template>`."
+  },
+  "lighthouse-core/audits/accessibility/dlitem.js | description": {
+    "message": "Ставке листе дефиниција (`<dt>` и `<dd>`) морају да буду упаковане у надређени елемент`<dl>` да би читачи екрана могли да их правилно читају. [Сазнајте више](https://web.dev/dlitem/)."
+  },
+  "lighthouse-core/audits/accessibility/dlitem.js | failureTitle": {
+    "message": "Ставке листе дефиниција су упаковане у елементе `<dl>`"
+  },
+  "lighthouse-core/audits/accessibility/dlitem.js | title": {
+    "message": "Ставке листе дефиниција су упаковане у елементе`<dl>`"
+  },
+  "lighthouse-core/audits/accessibility/document-title.js | description": {
+    "message": "Наслов корисницима читача екрана пружа преглед странице, а корисници претраживача се на њега ослањају да би утврдили да ли је страница релевантна за њихову претрагу. [Сазнајте више](https://web.dev/document-title/)."
+  },
+  "lighthouse-core/audits/accessibility/document-title.js | failureTitle": {
+    "message": "Документ нема елемент `<title>`"
+  },
+  "lighthouse-core/audits/accessibility/document-title.js | title": {
+    "message": "Документ има елемент `<title>`"
+  },
+  "lighthouse-core/audits/accessibility/duplicate-id.js | description": {
+    "message": "Вредност атрибута ИД мора да буде јединствена да би се спречило да технологије за помоћ особама са инвалидитетом пропусте друге инстанце. [Сазнајте више](https://web.dev/duplicate-id/)."
+  },
+  "lighthouse-core/audits/accessibility/duplicate-id.js | failureTitle": {
+    "message": "Атрибути `[id]` на страници нису јединствени"
+  },
+  "lighthouse-core/audits/accessibility/duplicate-id.js | title": {
+    "message": "Атрибути `[id]` на страници су јединствени"
+  },
+  "lighthouse-core/audits/accessibility/frame-title.js | description": {
+    "message": "Корисници читача екрана очекују од наслова оквира да им опишу садржај оквира. [Сазнајте више](https://web.dev/frame-title/)."
+  },
+  "lighthouse-core/audits/accessibility/frame-title.js | failureTitle": {
+    "message": "Елементи `<frame>` или `<iframe>` немају наслов"
+  },
+  "lighthouse-core/audits/accessibility/frame-title.js | title": {
+    "message": "Елементи `<frame>` или `<iframe>` имају наслов"
+  },
+  "lighthouse-core/audits/accessibility/html-has-lang.js | description": {
+    "message": "Ако за страницу није наведен атрибут за језик, читач екрана претпоставља да је страница на подразумеваном језику који је корисник одабрао током подешавања читача екрана. Ако страница заправо није на подразумеваном језику, читач екрана можда неће правилно читати текст са странице. [Сазнајте више](https://web.dev/html-has-lang/)."
+  },
+  "lighthouse-core/audits/accessibility/html-has-lang.js | failureTitle": {
+    "message": "Елемент `<html>` нема атрибут `[lang]`"
+  },
+  "lighthouse-core/audits/accessibility/html-has-lang.js | title": {
+    "message": "Елемент `<html>` има атрибут `[lang]`"
+  },
+  "lighthouse-core/audits/accessibility/html-lang-valid.js | description": {
+    "message": "Навођењем важећег кода [BCP 47 language](https://www.w3.org/International/questions/qa-choosing-language-tags#question) омогућава се да читач екрана правилно чита текст. [Сазнајте више](https://web.dev/html-lang-valid/)."
+  },
+  "lighthouse-core/audits/accessibility/html-lang-valid.js | failureTitle": {
+    "message": "Елемент `<html>` нема важећу вредност за свој атрибут `[lang]`."
+  },
+  "lighthouse-core/audits/accessibility/html-lang-valid.js | title": {
+    "message": "Елемент `<html>` има важећу вредност за свој атрибут `[lang]`"
+  },
+  "lighthouse-core/audits/accessibility/image-alt.js | description": {
+    "message": "Информативни елементи треба да садрже кратки, описни алтернативни текст. Декоративни елементи могу да се занемаре празним атрибутом alt. [Сазнајте више](https://web.dev/image-alt/)."
+  },
+  "lighthouse-core/audits/accessibility/image-alt.js | failureTitle": {
+    "message": "Елементи слике немају атрибуте `[alt]`"
+  },
+  "lighthouse-core/audits/accessibility/image-alt.js | title": {
+    "message": "Елементи слика имају атрибуте `[alt]`"
+  },
+  "lighthouse-core/audits/accessibility/input-image-alt.js | description": {
+    "message": "Када се слика користи као дугме `<input>`, навођење алтернативног текста може да помогне корисницима да разумеју сврху дугмета. [Сазнајте више](https://web.dev/input-image-alt/)."
+  },
+  "lighthouse-core/audits/accessibility/input-image-alt.js | failureTitle": {
+    "message": "Елементи `<input type=\"image\">` не садрже текст `[alt]`"
+  },
+  "lighthouse-core/audits/accessibility/input-image-alt.js | title": {
+    "message": "Елементи `<input type=\"image\">` садрже текст `[alt]`"
+  },
+  "lighthouse-core/audits/accessibility/label.js | description": {
+    "message": "Ознаке омогућавају да технологије за помоћ особама са инвалидитетом, попут читача екрана, правилно најављују контроле образаца. [Сазнајте више](https://web.dev/label/)."
+  },
+  "lighthouse-core/audits/accessibility/label.js | failureTitle": {
+    "message": "Елементи образаца немају повезане ознаке"
+  },
+  "lighthouse-core/audits/accessibility/label.js | title": {
+    "message": "Елементи образаца имају повезане ознаке"
+  },
+  "lighthouse-core/audits/accessibility/layout-table.js | description": {
+    "message": "Табела која се користи у сврхе распореда не треба да обухвата елементе података, као што су елементи th или титл или атрибут резимеа јер то може да збуни кориснике читача екрана. [Сазнајте више](https://web.dev/layout-table/)."
+  },
+  "lighthouse-core/audits/accessibility/layout-table.js | failureTitle": {
+    "message": "Презентациони елементи `<table>` не избегавају употребу атрибута `<th>`, `<caption>` или `[summary]`."
+  },
+  "lighthouse-core/audits/accessibility/layout-table.js | title": {
+    "message": "Презентациони елементи `<table>` избегавају употребу атрибута `<th>`, `<caption>` или `[summary]`."
+  },
+  "lighthouse-core/audits/accessibility/link-name.js | description": {
+    "message": "Текст линка (и алтернативни текст за слике када се користи за линкове) који је препознатљив, јединствен и може да се фокусира олакшава кретање за кориснике читача екрана. [Сазнајте више](https://web.dev/link-name/)."
+  },
+  "lighthouse-core/audits/accessibility/link-name.js | failureTitle": {
+    "message": "Назив линкова не може да се препозна"
+  },
+  "lighthouse-core/audits/accessibility/link-name.js | title": {
+    "message": "Назив линкова може да се препозна"
+  },
+  "lighthouse-core/audits/accessibility/list.js | description": {
+    "message": "Читачи екрана читају листе на посебан начин. Правилна структура листе олакшава разумевање читача екрана. [Сазнајте више](https://web.dev/list/)."
+  },
+  "lighthouse-core/audits/accessibility/list.js | failureTitle": {
+    "message": "Листе не садрже искључиво елементе `<li>` и елементе који подржавају скрипте (`<script>` и`<template>`)."
+  },
+  "lighthouse-core/audits/accessibility/list.js | title": {
+    "message": "Листе садрже искључиво елементе `<li>` и елементе који подржавају скрипте (`<script>` и `<template>`)."
+  },
+  "lighthouse-core/audits/accessibility/listitem.js | description": {
+    "message": "Читачи екрана захтевају да ставке листе (`<li>`) буду обухваћене надређеним елементима `<ul>` или `<ol>` да би могле да се правилно читају. [Сазнајте више](https://web.dev/listitem/)."
+  },
+  "lighthouse-core/audits/accessibility/listitem.js | failureTitle": {
+    "message": "Ставке листе (`<li>`) нису обухваћене надређеним елементима`<ul>` или `<ol>`."
+  },
+  "lighthouse-core/audits/accessibility/listitem.js | title": {
+    "message": "Ставке листе (`<li>`) су обухваћене надређеним елементима `<ul>` или `<ol>`"
+  },
+  "lighthouse-core/audits/accessibility/meta-refresh.js | description": {
+    "message": "Корисници не очекују да се страница аутоматски освежава и тиме се фокус премешта на почетак странице. То може да фрустира или збуњује кориснике. [Сазнајте више](https://web.dev/meta-refresh/)."
+  },
+  "lighthouse-core/audits/accessibility/meta-refresh.js | failureTitle": {
+    "message": "Документ користи метаознаку `<meta http-equiv=\"refresh\">`"
+  },
+  "lighthouse-core/audits/accessibility/meta-refresh.js | title": {
+    "message": "Документ не користи метаознаку `<meta http-equiv=\"refresh\">`"
+  },
+  "lighthouse-core/audits/accessibility/meta-viewport.js | description": {
+    "message": "Онемогућавање зумирања представља проблем за слабовиде кориснике који се ослањају на увећавање приказа екрана да би могли да виде садржај веб-странице. [Сазнајте више](https://web.dev/meta-viewport/)."
+  },
+  "lighthouse-core/audits/accessibility/meta-viewport.js | failureTitle": {
+    "message": "`[user-scalable=\"no\"]` се користи у елементу `<meta name=\"viewport\">` или је вредност атрибута `[maximum-scale]` мања од 5."
+  },
+  "lighthouse-core/audits/accessibility/meta-viewport.js | title": {
+    "message": "`[user-scalable=\"no\"]` се не користи у елементу `<meta name=\"viewport\">`, а вредност атрибута `[maximum-scale]` није мања од 5."
+  },
+  "lighthouse-core/audits/accessibility/object-alt.js | description": {
+    "message": "Читачи екрана не могу да преводе садржај који није текст. Додавање alt текста елементима `<object>` омогућава да читачи екрана лакше пренесу значење корисницима. [Сазнајте више](https://web.dev/object-alt/)."
+  },
+  "lighthouse-core/audits/accessibility/object-alt.js | failureTitle": {
+    "message": "Елементи `<object>` не садрже текст `[alt]`"
+  },
+  "lighthouse-core/audits/accessibility/object-alt.js | title": {
+    "message": "Елементи `<object>` садрже текст `[alt]`"
+  },
+  "lighthouse-core/audits/accessibility/tabindex.js | description": {
+    "message": "Вредност већа од 0 означава експлицитно наручивање навигације. Иако је технички исправно, то често фрустрира кориснике који се ослањају на технологије за помоћ особама са инвалидитетом. [Сазнајте више](https://web.dev/tabindex/)."
+  },
+  "lighthouse-core/audits/accessibility/tabindex.js | failureTitle": {
+    "message": "Неки елементи имају вредност за `[tabindex]` која је већа од 0"
+  },
+  "lighthouse-core/audits/accessibility/tabindex.js | title": {
+    "message": "Вредност ниједног елемента `[tabindex]` није већа од 0"
+  },
+  "lighthouse-core/audits/accessibility/td-headers-attr.js | description": {
+    "message": "Читачи екрана имају функције које олакшавају кретање кроз табеле. Ако се побринете да се ћелије `<td>` које користе атрибут `[headers]` односе само на друге ћелије у истој табели, можете да побољшате доживљај за кориснике читача екрана. [Сазнајте више](https://web.dev/td-headers-attr/)."
+  },
+  "lighthouse-core/audits/accessibility/td-headers-attr.js | failureTitle": {
+    "message": "Ћелије у елементу `<table>` које користе атрибут `[headers]` односе се на друге ћелије у тој истој табели."
+  },
+  "lighthouse-core/audits/accessibility/td-headers-attr.js | title": {
+    "message": "Ћелије у елементу `<table>` које користе атрибут `[headers]` односе се само на друге ћелије у тој истој табели."
+  },
+  "lighthouse-core/audits/accessibility/th-has-data-cells.js | description": {
+    "message": "Читачи екрана имају функције које олакшавају кретање кроз табеле. Ако се побринете да се наслови табела увек односе на неку групу ћелија, можете да побољшате доживљај за кориснике читача екрана. [Сазнајте више](https://web.dev/th-has-data-cells/)."
+  },
+  "lighthouse-core/audits/accessibility/th-has-data-cells.js | failureTitle": {
+    "message": "Елементи `<th>` и елементи са атрибутом`[role=\"columnheader\"/\"rowheader\"]` немају ћелије са подацима које описују."
+  },
+  "lighthouse-core/audits/accessibility/th-has-data-cells.js | title": {
+    "message": "Елементи `<th>` и елементи са атрибутом `[role=\"columnheader\"/\"rowheader\"]` имају ћелије са подацима које описују."
+  },
+  "lighthouse-core/audits/accessibility/valid-lang.js | description": {
+    "message": "Навођењем важећег кода [BCP 47 language](https://www.w3.org/International/questions/qa-choosing-language-tags#question) у елементима омогућава се да читач екрана правилно чита текст. [Сазнајте више](https://web.dev/valid-lang/)."
+  },
+  "lighthouse-core/audits/accessibility/valid-lang.js | failureTitle": {
+    "message": "Вредност атрибута `[lang]` није важећа"
+  },
+  "lighthouse-core/audits/accessibility/valid-lang.js | title": {
+    "message": "Атрибути `[lang]` имају важећу вредност"
+  },
+  "lighthouse-core/audits/accessibility/video-caption.js | description": {
+    "message": "Када је доступан титл за видео, глуви корисници и они са оштећењем слуха лакше могу да приступају информацијама које видео обухвата. [Сазнајте више](https://web.dev/video-caption/)."
+  },
+  "lighthouse-core/audits/accessibility/video-caption.js | failureTitle": {
+    "message": "Елементи `<video>` не обухватају елемент `<track>` са атрибутом `[kind=\"captions\"]`."
+  },
+  "lighthouse-core/audits/accessibility/video-caption.js | title": {
+    "message": "Елементи `<video>` садрже елемент `<track>` са атрибутом `[kind=\"captions\"]`"
+  },
+  "lighthouse-core/audits/accessibility/video-description.js | description": {
+    "message": "Аудио описи пружају релевантне информације за видео снимке које дијалог не може, попут израза лица и сцена. [Сазнајте више](https://web.dev/video-description/)."
+  },
+  "lighthouse-core/audits/accessibility/video-description.js | failureTitle": {
+    "message": "Елементи `<video>` не обухватају елемент `<track>` са атрибутом `[kind=\"description\"]`."
+  },
+  "lighthouse-core/audits/accessibility/video-description.js | title": {
+    "message": "Елементи `<video>` садрже елемент `<track>` са атрибутом `[kind=\"description\"]`"
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | description": {
+    "message": "Да би изглед на iOS-у био идеалан када корисници додају прогресивну веб-апликацију на почетни екран, дефинишите икону `apple-touch-icon`. Она мора да усмерава на нетранспарентни квадратни PNG од 192 пиксела (или 180 пиксела). [Сазнајте више](https://developers.google.com/web/fundamentals/design-and-ux/browser-customization/)."
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | failureTitle": {
+    "message": "Не пружа важећи атрибут `apple-touch-icon`"
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | precomposedWarning": {
+    "message": "Атрибут `apple-touch-icon-precomposed` је застарео; препоручује се `apple-touch-icon`."
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | title": {
+    "message": "Пружа важећи атрибут `apple-touch-icon`"
+  },
+  "lighthouse-core/audits/bootup-time.js | chromeExtensionsWarning": {
+    "message": "Додаци за Chrome су негативно утицали на брзину учитавања ове странице. Пробајте да проверите страницу у режиму без архивирања или са Chrome профила без додатака."
+  },
+  "lighthouse-core/audits/bootup-time.js | columnScriptEval": {
+    "message": "Процена скрипта"
+  },
+  "lighthouse-core/audits/bootup-time.js | columnScriptParse": {
+    "message": "Рашчлањивање скрипта"
+  },
+  "lighthouse-core/audits/bootup-time.js | columnTotal": {
+    "message": "Укупно CPU време"
+  },
+  "lighthouse-core/audits/bootup-time.js | description": {
+    "message": "Препоручујемо вам да смањите време потребно за рашчлањивање, компајлирање и извршавање JS датотека. Приказивање мањих JS ресурса ће вам можда помоћи у томе. [Сазнајте више](https://developers.google.com/web/tools/lighthouse/audits/bootup)."
+  },
+  "lighthouse-core/audits/bootup-time.js | failureTitle": {
+    "message": "Смањите време извршавања JavaScript датотека"
+  },
+  "lighthouse-core/audits/bootup-time.js | title": {
+    "message": "Време извршавања JavaScript-а"
+  },
+  "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | description": {
+    "message": "Велики GIF-ови нису корисни за приказивање анимираног садржаја. Препоручујемо вам да уместо GIF-ова користите MPEG4/WebM видео снимке за анимације и PNG/WebP за статичне слике да бисте уштедели мрежне податке. [Сазнајте више](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/replace-animated-gifs-with-video/)"
+  },
+  "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | title": {
+    "message": "Користите видео формате за анимирани садржај"
+  },
+  "lighthouse-core/audits/byte-efficiency/offscreen-images.js | description": {
+    "message": "Препоручујемо вам да одложите учитавање слика ван екрана и скривених слика док се сви веома важни ресурси не учитају како бисте смањили време до почетка интеракције. [Сазнајте више](https://developers.google.com/web/tools/lighthouse/audits/offscreen-images)."
+  },
+  "lighthouse-core/audits/byte-efficiency/offscreen-images.js | title": {
+    "message": "Одложите слике ван екрана"
+  },
+  "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | description": {
+    "message": "Ресурси блокирају прво приказивање странице. Препоручујемо вам да приказујете све важне JS/CSS датотеке у тексту и да одложите све JS датотеке/стилове који нису толико важни. [Сазнајте више](https://developers.google.com/web/tools/lighthouse/audits/blocking-resources)."
+  },
+  "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | title": {
+    "message": "Елиминишите ресурсе који блокирају приказивање"
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | description": {
+    "message": "Велике мрежне ресурсе корисници морају да плате стварним новцем и они су веома повезани са дугим временима учитавања. [Сазнајте више](https://developers.google.com/web/tools/lighthouse/audits/network-payloads)."
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | displayValue": {
+    "message": "Укупна величина је била {totalBytes, number, bytes} kB"
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | failureTitle": {
+    "message": "Избегавајте огромне мрежне ресурсе"
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | title": {
+    "message": "Избегава огромне мрежне ресурсе"
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-css.js | description": {
+    "message": "Умањивањем CSS датотека можете да смањите величине мрежних ресурса. [Сазнајте више](https://developers.google.com/web/tools/lighthouse/audits/minify-css)."
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-css.js | title": {
+    "message": "Умањите CSS"
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | description": {
+    "message": "Умањивање JavaScript датотека може да смањи величине ресурса и време рашчлањивања скрипта. [Сазнајте више](https://developers.google.com/speed/docs/insights/MinifyResources)."
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | title": {
+    "message": "Умањите JavaScript"
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | description": {
+    "message": "Уклоните неактивна правила из описа стилова и одложите учитавање CSS-а који се не користи за садржај изнад прелома да бисте смањили непотребну потрошњу података током мрежних активности. [Сазнајте више](https://developers.google.com/web/tools/lighthouse/audits/unused-css)."
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | title": {
+    "message": "Уклоните некоришћени CSS"
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-javascript.js | description": {
+    "message": "Уклоните некоришћени JavaScript да бисте смањили потрошњу података током мрежних активности."
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-javascript.js | title": {
+    "message": "Уклоните некоришћени JavaScript"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | description": {
+    "message": "Дуго трајање кеша може да убрза поновне посете страници. [Сазнајте више](https://developers.google.com/web/tools/lighthouse/audits/cache-policy)."
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | displayValue": {
+    "message": "{itemCount,plural, =1{Пронађен је 1 ресурс}one{Пронађен је # ресурс}few{Пронађена су # ресурса}other{Пронађено је # ресурса}}"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | failureTitle": {
+    "message": "Приказујте статичне елементе са ефикасним смерницама кеша"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | title": {
+    "message": "Користи ефикасне смернице кеша на статичним елементима"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | description": {
+    "message": "Оптимизоване слике се учитавају брже и троше мање мобилних података. [Сазнајте више](https://developers.google.com/web/tools/lighthouse/audits/optimize-images)."
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | title": {
+    "message": "Ефикасно кодирајте слике"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | description": {
+    "message": "Приказујте слике одговарајуће величине да бисте уштедели мобилне податке и побољшали време учитавања. [Сазнајте више](https://developers.google.com/web/tools/lighthouse/audits/oversized-images)."
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | title": {
+    "message": "Одредите одговарајућу величину слика"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | description": {
+    "message": "Ресурсе засноване на тексту треба да приказујете у компримованом формату (gzip, deflate или brotli) да бисте смањили укупну количину потрошених мрежних података. [Сазнајте више](https://developers.google.com/web/tools/lighthouse/audits/text-compression)."
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | title": {
+    "message": "Омогућите компресију текста"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | description": {
+    "message": "Формати слика као што су JPEG 2000, JPEG XR и WebP често пружају бољу компресију него PNG или JPEG, што подразумева бржа преузимања и мању потрошњу података. [Сазнајте више](https://developers.google.com/web/tools/lighthouse/audits/webp)."
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | title": {
+    "message": "Приказујте слике у форматима следеће генерације"
+  },
+  "lighthouse-core/audits/content-width.js | description": {
+    "message": "Ако се ширина садржаја апликације не подудара са ширином области приказа, апликација можда није оптимизована за екране на мобилним уређајима. [Сазнајте више](https://developers.google.com/web/tools/lighthouse/audits/content-sized-correctly-for-viewport)."
+  },
+  "lighthouse-core/audits/content-width.js | explanation": {
+    "message": "Величина области приказа од {innerWidth} пиксела се не подудара са величином прозора од {outerWidth} пиксела."
+  },
+  "lighthouse-core/audits/content-width.js | failureTitle": {
+    "message": "Садржај није одговарајуће величине за област приказа"
+  },
+  "lighthouse-core/audits/content-width.js | title": {
+    "message": "Садржај је одговарајуће величине за област приказа"
+  },
+  "lighthouse-core/audits/critical-request-chains.js | description": {
+    "message": "Ланци веома важних захтева у наставку вам приказују који ресурси се учитавају са високим приоритетом. Препоручујемо вам да смањите дужину ланаца, да смањите величину преузимања за ресурсе или да одложите преузимање ресурса који нису неопходни ради бржег учитавања странице. [Сазнајте више](https://developers.google.com/web/tools/lighthouse/audits/critical-request-chains)."
+  },
+  "lighthouse-core/audits/critical-request-chains.js | displayValue": {
+    "message": "{itemCount,plural, =1{Пронађен је 1 ланац}one{Пронађен је # ланац}few{Пронађена су # ланца}other{Пронађено је # ланаца}}"
+  },
+  "lighthouse-core/audits/critical-request-chains.js | title": {
+    "message": "Смањите број веома важних захтева"
+  },
+  "lighthouse-core/audits/deprecations.js | columnDeprecate": {
+    "message": "Застарело/упозорење"
+  },
+  "lighthouse-core/audits/deprecations.js | columnLine": {
+    "message": "Ред"
+  },
+  "lighthouse-core/audits/deprecations.js | description": {
+    "message": "Застарели API-ји ће на крају бити уклоњени из прегледача. [Сазнајте више](https://web.dev/deprecations)."
+  },
+  "lighthouse-core/audits/deprecations.js | displayValue": {
+    "message": "{itemCount,plural, =1{Откривено је 1 упозорење}one{Откривено је # упозорење}few{Откривена су # упозорења}other{Откривено је # упозорења}}"
+  },
+  "lighthouse-core/audits/deprecations.js | failureTitle": {
+    "message": "Користи застареле API-је"
+  },
+  "lighthouse-core/audits/deprecations.js | title": {
+    "message": "Избегава застареле API-је"
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | description": {
+    "message": "Кеш апликације је застарео. [Сазнајте више](https://web.dev/appcache-manifest)."
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | displayValue": {
+    "message": "Пронађено је „{AppCacheManifest}“"
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | failureTitle": {
+    "message": "Користи кеш апликације"
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | title": {
+    "message": "Избегава кеш апликације"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | description": {
+    "message": "Навођењем doctype-а спречава се прелазак на архајски режим прегледача. [Сазнајте више](https://web.dev/doctype)."
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationBadDoctype": {
+    "message": "Назив за doctype мора да буде стринг написан малим словима `html`"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationNoDoctype": {
+    "message": "Документ мора да садржи doctype"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationPublicId": {
+    "message": "Очекивани publicId ће бити празан стринг"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationSystemId": {
+    "message": "Очекивани systemId ће бити празан стринг"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | failureTitle": {
+    "message": "Страници недостаје HTML doctype, па се активира архајски режим"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | title": {
+    "message": "Страница има HTML doctype"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | columnElement": {
+    "message": "Елемент"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | columnStatistic": {
+    "message": "Статистика"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | columnValue": {
+    "message": "Вредност"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | description": {
+    "message": "Инжењери за прегледаче препоручују да странице садрже мање од приближно 1500 DOM елемената. Најбоље би било да дубина стабла буде испод 32 елемента и да има мање од 60 подређених/надређених елемената. Велики DOM може да повећа потрошњу меморије, да изазове дужа [израчунавања стилова](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations) и да доведе до скупих [преобликовања изгледа](https://developers.google.com/speed/articles/reflow). [Сазнајте више](https://web.dev/dom-size)."
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 елемент}one{# елемент}few{# елемента}other{# елемената}}"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | failureTitle": {
+    "message": "Избегавајте превелику величину DOM-а"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | statisticDOMDepth": {
+    "message": "Максимална дубина DOM-а"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | statisticDOMElements": {
+    "message": "Укупан број DOM елемената"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | statisticDOMWidth": {
+    "message": "Максималан број подређених елемената"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | title": {
+    "message": "Избегава превелику величину DOM-а"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | columnRel": {
+    "message": "Rel"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | columnTarget": {
+    "message": "Циљ"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | description": {
+    "message": "Додајте `rel=\"noopener\"` или`rel=\"noreferrer\"` свим спољним линковима да бисте побољшали учинак и спречили безбедносне пропусте. [Сазнајте више](https://web.dev/external-anchors-use-rel-noopener)."
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | failureTitle": {
+    "message": "Линкови до одредишта из других извора нису безбедни"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | title": {
+    "message": "Линкови до одредишта из других извора су безбедни"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | warning": {
+    "message": "Није могуће одредити одредиште за текст линка ({anchorHTML}). Ако се не користи као хиперлинк, препоручујемо вам да уклоните target=_blank."
+  },
+  "lighthouse-core/audits/dobetterweb/geolocation-on-start.js | description": {
+    "message": "Корисници немају поверења у сајтове који траже њихову локацију без контекста или их такви сајтови збуњују. Препоручујемо вам да уместо тога повежете захтев са радњом коју обавља корисник. [Сазнајте више](https://web.dev/geolocation-on-start)."
+  },
+  "lighthouse-core/audits/dobetterweb/geolocation-on-start.js | failureTitle": {
+    "message": "Тражи дозволу за геолоцирање при учитавању странице"
+  },
+  "lighthouse-core/audits/dobetterweb/geolocation-on-start.js | title": {
+    "message": "Избегавајте тражење дозволе за геолоцирање при учитавању странице"
+  },
+  "lighthouse-core/audits/dobetterweb/js-libraries.js | columnVersion": {
+    "message": "Верзија"
+  },
+  "lighthouse-core/audits/dobetterweb/js-libraries.js | description": {
+    "message": "Све корисничке JavaScript библиотеке откривене на овој страници. [Сазнајте више](https://web.dev/js-libraries)."
+  },
+  "lighthouse-core/audits/dobetterweb/js-libraries.js | title": {
+    "message": "Откривене су JavaScript библиотеке"
+  },
+  "lighthouse-core/audits/dobetterweb/no-document-write.js | description": {
+    "message": "Ако корисници имају споре везе, спољне скрипте које се динамички убацују помоћу атрибута `document.write()` могу да одложе учитавање странице за десетине секунди. [Сазнајте више](https://web.dev/no-document-write)."
+  },
+  "lighthouse-core/audits/dobetterweb/no-document-write.js | failureTitle": {
+    "message": "Користи `document.write()`"
+  },
+  "lighthouse-core/audits/dobetterweb/no-document-write.js | title": {
+    "message": "Избегава атрибут `document.write()`"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | columnSeverity": {
+    "message": "Највиши ниво озбиљности"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | columnVersion": {
+    "message": "Верзија библиотеке"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | columnVuln": {
+    "message": "Број пропуста"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | description": {
+    "message": "Неке независне скрипте могу да обухватају познате безбедносне пропусте које нападачи могу лако да препознају и искористе. [Сазнајте више](https://web.dev/no-vulnerable-libraries)."
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | displayValue": {
+    "message": "{itemCount,plural, =1{Откривен је 1 пропуст}one{Откривен је # пропуст}few{Откривена су # пропуста}other{Откривено је # пропуста}}"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | failureTitle": {
+    "message": "Обухвата корисничке JavaScript датотеке са познатим безбедносним пропустима"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | rowSeverityHigh": {
+    "message": "Висока"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | rowSeverityLow": {
+    "message": "Ниска"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | rowSeverityMedium": {
+    "message": "Средња"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | title": {
+    "message": "Избегава корисничке JavaScript датотеке са познатим безбедносним пропустима"
+  },
+  "lighthouse-core/audits/dobetterweb/notification-on-start.js | description": {
+    "message": "Корисници немају поверења у сајтове који траже дозволу за слање обавештења без контекста или их такви сајтови збуњују. Препоручујемо вам да уместо тога повежете захтев са покретима корисника. [Сазнајте више](https://web.dev/notification-on-start)."
+  },
+  "lighthouse-core/audits/dobetterweb/notification-on-start.js | failureTitle": {
+    "message": "Тражи дозволу за обавештења при учитавању странице"
+  },
+  "lighthouse-core/audits/dobetterweb/notification-on-start.js | title": {
+    "message": "Избегавајте тражење дозволе за обавештења при учитавању странице"
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | columnFailingElem": {
+    "message": "Елементи који нису прошли проверу"
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | description": {
+    "message": "Спречавање лепљења лозинке нарушава добре смернице за безбедност. [Сазнајте више](https://web.dev/password-inputs-can-be-pasted-into)."
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | failureTitle": {
+    "message": "Спречава кориснике да налепе вредност у поља за лозинке"
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | title": {
+    "message": "Дозвољава корисницима да налепе вредност у поља за лозинке"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | columnProtocol": {
+    "message": "Протокол"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | description": {
+    "message": "HTTP/2 има бројне предности у односу на HTTP/1.1, укључујући бинарна заглавља, мултиплексирање и серверски пуш. [Сазнајте више](https://web.dev/uses-http2)."
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 захтев није испоручен преко протокола HTTP/2}one{# захтев није испоручен преко протокола HTTP/2}few{# захтева нису испоручена преко протокола HTTP/2}other{# захтева није испоручено преко протокола HTTP/2}}"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | failureTitle": {
+    "message": "Не користи HTTP/2 за све своје ресурсе"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | title": {
+    "message": "Користи HTTP/2 за своје ресурсе"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-passive-event-listeners.js | description": {
+    "message": "Препоручујемо вам да пасивне обрађиваче догађаја означите као `passive` да бисте побољшали резултате померања. [Сазнајте више](https://web.dev/uses-passive-event-listeners)."
+  },
+  "lighthouse-core/audits/dobetterweb/uses-passive-event-listeners.js | failureTitle": {
+    "message": "Не користите пасивне обрађиваче да бисте побољшали учинак померања"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-passive-event-listeners.js | title": {
+    "message": "Користите пасивне обрађиваче да бисте побољшали учинак померања"
+  },
+  "lighthouse-core/audits/errors-in-console.js | columnDesc": {
+    "message": "Опис"
+  },
+  "lighthouse-core/audits/errors-in-console.js | description": {
+    "message": "Грешке евидентиране у конзоли указују на нерешене проблеме. Оне су резултат неуспелих мрежних захтева и других проблема у вези са прегледачем. [Сазнајте више](https://web.dev/errors-in-console)"
+  },
+  "lighthouse-core/audits/errors-in-console.js | failureTitle": {
+    "message": "Грешке прегледача су евидентиране у конзоли"
+  },
+  "lighthouse-core/audits/errors-in-console.js | title": {
+    "message": "Ниједна грешка прегледача није евидентирана у конзоли"
+  },
+  "lighthouse-core/audits/font-display.js | description": {
+    "message": "Искористите CSS функцију за приказ фонтова да бисте били сигурни да корисник може да види текст док се веб-фонтови учитавају. [Сазнајте више](https://developers.google.com/web/updates/2016/02/font-display)."
+  },
+  "lighthouse-core/audits/font-display.js | failureTitle": {
+    "message": "Побрините се да текст остане видљив током учитавања веб-фонтова"
+  },
+  "lighthouse-core/audits/font-display.js | title": {
+    "message": "Сав текст остаје видљив током учитавања веб-фонтова"
+  },
+  "lighthouse-core/audits/font-display.js | undeclaredFontURLWarning": {
+    "message": "Lighthouse није успео да аутоматски провери вредност за приказ фонтова за следећи URL: {fontURL}."
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | columnActual": {
+    "message": "Размера (стварна)"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | columnDisplayed": {
+    "message": "Размера (приказана)"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | description": {
+    "message": "Димензије приказа слике треба да се подударају са природном размером. [Сазнајте више](https://web.dev/image-aspect-ratio)."
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | failureTitle": {
+    "message": "Приказује слике са погрешном размером"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | title": {
+    "message": "Приказује слике са тачном размером"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | warningCompute": {
+    "message": "Неважеће информације о величини слике {url}"
+  },
+  "lighthouse-core/audits/installable-manifest.js | description": {
+    "message": "Прегледачи могу проактивно да траже од корисника да додају апликацију на почетни екран, што може да доведе до већег ангажовања. [Сазнајте више](https://developers.google.com/web/tools/lighthouse/audits/install-prompt)."
+  },
+  "lighthouse-core/audits/installable-manifest.js | failureTitle": {
+    "message": "Манифест веб-апликације не задовољава услове за инсталирање"
+  },
+  "lighthouse-core/audits/installable-manifest.js | title": {
+    "message": "Манифест веб-апликације задовољава услове за инсталирање"
+  },
+  "lighthouse-core/audits/is-on-https.js | columnInsecureURL": {
+    "message": "Небезбедан URL"
+  },
+  "lighthouse-core/audits/is-on-https.js | description": {
+    "message": "Сви сајтови треба да буду заштићени HTTPS-ом, чак и они који не обрађују осетљиве податке. HTTPS спречава уљезе да неовлашћено приступају комуникацији између апликације и корисника или да је пасивно слушају. Он је предуслов за HTTP/2 i API-је бројних нових веб-платформи. [Сазнајте више](https://web.dev/is-on-https)."
+  },
+  "lighthouse-core/audits/is-on-https.js | displayValue": {
+    "message": "{itemCount,plural, =1{Пронађен је 1 небезбедан захтев}one{Пронађен је # небезбедан захтев}few{Пронађена су # небезбедна захтева}other{Пронађено је # небезбедних захтева}}"
+  },
+  "lighthouse-core/audits/is-on-https.js | failureTitle": {
+    "message": "Не користи HTTPS"
+  },
+  "lighthouse-core/audits/is-on-https.js | title": {
+    "message": "Користи HTTPS"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | description": {
+    "message": "Брзо учитавање странице преко мобилне мреже обезбеђује добар доживљај корисницима мобилних уређаја. [Сазнајте више](https://developers.google.com/web/tools/lighthouse/audits/fast-3g)."
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | displayValueText": {
+    "message": "Интерактивно за {timeInMs, number, seconds} сек"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | displayValueTextWithOverride": {
+    "message": "Интерактивна на симулираној мобилној мрежи за {timeInMs, number, seconds} сек"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | explanationLoadSlow": {
+    "message": "Страница се преспоро учитава и не постаје интерактивна у року од 10 секунди. Погледајте прилике и дијагностику у одељку „Учинак“ да бисте сазнали како да побољшате учинак странице."
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | failureTitle": {
+    "message": "Учитавање странице није довољно брзо на мобилним мрежама"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | title": {
+    "message": "Учитавање странице је довољно брзо на мобилним мрежама"
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | columnCategory": {
+    "message": "Категорија"
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | description": {
+    "message": "Размислите о томе да смањите време потребно за рашчлањивање, компајлирање и извршавање JS датотека. Приказивање мањих JS ресурса ће вам можда помоћи у томе."
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | failureTitle": {
+    "message": "Смањите рад главне нити"
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | title": {
+    "message": "Смањује рад главне нити"
+  },
+  "lighthouse-core/audits/manual/pwa-cross-browser.js | description": {
+    "message": "Да би имали што више корисника, сајтови треба да раде у свим значајнијим прегледачима. [Сазнајте више](https://developers.google.com/web/progressive-web-apps/checklist#site-works-cross-browser)."
+  },
+  "lighthouse-core/audits/manual/pwa-cross-browser.js | title": {
+    "message": "Сајт ради у различитим веб-прегледачима"
+  },
+  "lighthouse-core/audits/manual/pwa-each-page-has-url.js | description": {
+    "message": "Уверите се да до појединачних страница воде прецизни линкови преко URL-ова и да су URL-ови јединствени у сврху дељења на друштвеним медијима. [Сазнајте више](https://developers.google.com/web/progressive-web-apps/checklist#each-page-has-a-url)."
+  },
+  "lighthouse-core/audits/manual/pwa-each-page-has-url.js | title": {
+    "message": "Свака страница има URL"
+  },
+  "lighthouse-core/audits/manual/pwa-page-transitions.js | description": {
+    "message": "Корисници треба да имају утисак да су прелази брзи док додирују ставке, чак и на спорој мрежи, што је кључно за утисак који ће имати о учинку. [Сазнајте више](https://developers.google.com/web/progressive-web-apps/checklist#page-transitions-dont-feel-like-they-block-on-the-network)."
+  },
+  "lighthouse-core/audits/manual/pwa-page-transitions.js | title": {
+    "message": "Преласци са странице на страницу не делују као да се блокирају због мреже"
+  },
+  "lighthouse-core/audits/metrics/estimated-input-latency.js | description": {
+    "message": "Процењено кашњење уноса је процена времена које је апликацији потребно да одговори на унос корисника, у милисекундама, током најпрометнијег рока од 5 секунди за учитавање странице. Ако је кашњење веће од 50 ms, корисници ће можда сматрати да апликација ради споро. [Сазнајте више](https://developers.google.com/web/tools/lighthouse/audits/estimated-input-latency)."
+  },
+  "lighthouse-core/audits/metrics/estimated-input-latency.js | title": {
+    "message": "Процењено кашњење уноса"
+  },
+  "lighthouse-core/audits/metrics/first-contentful-paint.js | description": {
+    "message": "Прво приказивање садржаја означава време када се приказују први текст или слика. [Сазнајте више](https://developers.google.com/web/tools/lighthouse/audits/first-contentful-paint)."
+  },
+  "lighthouse-core/audits/metrics/first-contentful-paint.js | title": {
+    "message": "Прво приказивање садржаја"
+  },
+  "lighthouse-core/audits/metrics/first-cpu-idle.js | description": {
+    "message": "Време првог неактивног процесора означава први тренутак у коме је главна нит странице довољно неактивна да би обрадила унос. [Сазнајте више](https://developers.google.com/web/tools/lighthouse/audits/first-interactive)."
+  },
+  "lighthouse-core/audits/metrics/first-cpu-idle.js | title": {
+    "message": "Време првог неактивног процесора"
+  },
+  "lighthouse-core/audits/metrics/first-meaningful-paint.js | description": {
+    "message": "Прво значајно приказивање означава време када примарни садржај странице постаје видљив. [Сазнајте више](https://developers.google.com/web/tools/lighthouse/audits/first-meaningful-paint)."
+  },
+  "lighthouse-core/audits/metrics/first-meaningful-paint.js | title": {
+    "message": "Прво значајно приказивање"
+  },
+  "lighthouse-core/audits/metrics/interactive.js | description": {
+    "message": "Време до интеракције је количина времена која је потребна да би страница постала потпуно интерактивна. [Сазнајте више](https://developers.google.com/web/tools/lighthouse/audits/consistently-interactive)."
+  },
+  "lighthouse-core/audits/metrics/interactive.js | title": {
+    "message": "Време почетка интеракције"
+  },
+  "lighthouse-core/audits/metrics/max-potential-fid.js | description": {
+    "message": "Максимално потенцијално кашњење првог уноса које може да се деси корисницима је трајање најдужег задатка у милисекундама. [Сазнајте више](https://developers.google.com/web/updates/2018/05/first-input-delay)."
+  },
+  "lighthouse-core/audits/metrics/max-potential-fid.js | title": {
+    "message": "Макс. потенцијално кашњење првог приказа"
+  },
+  "lighthouse-core/audits/metrics/speed-index.js | description": {
+    "message": "Индекс брзине приказује колико брзо садржај странице постаје видљив за кориснике. [Сазнајте више](https://developers.google.com/web/tools/lighthouse/audits/speed-index)."
+  },
+  "lighthouse-core/audits/metrics/speed-index.js | title": {
+    "message": "Индекс брзине"
+  },
+  "lighthouse-core/audits/metrics/total-blocking-time.js | description": {
+    "message": "Збир свих периода између FCP-а и времена до почетка интеракције, када задатак траје дуже од 50 ms, изражено у милисекундама."
+  },
+  "lighthouse-core/audits/metrics/total-blocking-time.js | title": {
+    "message": "Укупно време блокирања"
+  },
+  "lighthouse-core/audits/network-rtt.js | description": {
+    "message": "Трајања повратног пута (RTT) мреже знатно утичу на учинак. Ако је трајање повратног пута до почетне локације велико, то значи да би сервери који су ближи кориснику могли да побољшају учинак. [Сазнајте више](https://hpbn.co/primer-on-latency-and-bandwidth/)."
+  },
+  "lighthouse-core/audits/network-rtt.js | title": {
+    "message": "Трајања повратног пута мреже"
+  },
+  "lighthouse-core/audits/network-server-latency.js | description": {
+    "message": "Кашњења сервера могу да утичу на учинак веба. Ако је кашњење сервера за почетну локацију велико, то значи да је сервер преоптерећен или да има слаб позадински учинак. [Сазнајте више](https://hpbn.co/primer-on-web-performance/#analyzing-the-resource-waterfall)."
+  },
+  "lighthouse-core/audits/network-server-latency.js | title": {
+    "message": "Позадинска кашњења сервера"
+  },
+  "lighthouse-core/audits/offline-start-url.js | description": {
+    "message": "Сервисер омогућава да веб-апликација буде поуздана у непредвидивим условима мреже. [Сазнајте више](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)."
+  },
+  "lighthouse-core/audits/offline-start-url.js | failureTitle": {
+    "message": "`start_url` не одговара кодом 200 када је офлајн"
+  },
+  "lighthouse-core/audits/offline-start-url.js | title": {
+    "message": "`start_url` одговара кодом 200 када је офлајн"
+  },
+  "lighthouse-core/audits/offline-start-url.js | warningCantStart": {
+    "message": "Lighthouse није успео да прочита `start_url` из манифеста. Као последица тога, претпоставили смо да је `start_url` URL документа. Порука о грешци: „{manifestWarning}“."
+  },
+  "lighthouse-core/audits/performance-budget.js | columnOverBudget": {
+    "message": "Премашује циљ"
+  },
+  "lighthouse-core/audits/performance-budget.js | description": {
+    "message": "Захтеве за количину и величину мреже одржавајте испод граница одређених циљевима за учинак. [Сазнајте више](https://developers.google.com/web/tools/lighthouse/audits/budgets)."
+  },
+  "lighthouse-core/audits/performance-budget.js | requestCountOverBudget": {
+    "message": "{count,plural, =1{1 захтев}one{# захтев}few{# захтева}other{# захтева}}"
+  },
+  "lighthouse-core/audits/performance-budget.js | title": {
+    "message": "Циљ за учинак"
+  },
+  "lighthouse-core/audits/redirects-http.js | description": {
+    "message": "Ако сте већ подесили HTTPS, уверите се да преусмеравате сав HTTP саобраћај на HTTPS да бисте омогућили безбедне веб-функције за све кориснике. [Сазнајте више](https://developers.google.com/web/tools/lighthouse/audits/http-redirects-to-https)."
+  },
+  "lighthouse-core/audits/redirects-http.js | failureTitle": {
+    "message": "Не преусмерава HTTP саобраћај на HTTPS"
+  },
+  "lighthouse-core/audits/redirects-http.js | title": {
+    "message": "Преусмерава HTTP саобраћај на HTTPS"
+  },
+  "lighthouse-core/audits/redirects.js | description": {
+    "message": "Преусмеравања доводе до додатних кашњења пре учитавања странице. [Сазнајте више](https://developers.google.com/web/tools/lighthouse/audits/redirects)."
+  },
+  "lighthouse-core/audits/redirects.js | title": {
+    "message": "Избегавајте вишеструка преусмеравања странице"
+  },
+  "lighthouse-core/audits/resource-summary.js | description": {
+    "message": "Да бисте подесили циљеве за количину и величину ресурса странице, додајте датотеку budget.json file. [Сазнајте више](https://developers.google.com/web/tools/lighthouse/audits/budgets)."
+  },
+  "lighthouse-core/audits/resource-summary.js | displayValue": {
+    "message": "{requestCount,plural, =1{1 захтев • {byteCount, number, bytes} KB}one{# захтев • {byteCount, number, bytes} KB}few{# захтева • {byteCount, number, bytes} KB}other{# захтева • {byteCount, number, bytes} KB}}"
+  },
+  "lighthouse-core/audits/resource-summary.js | title": {
+    "message": "Омогући да број захтева и величине преноса буду мали"
+  },
+  "lighthouse-core/audits/seo/canonical.js | description": {
+    "message": "Канонички линкови предлажу који URL треба да се прикаже у резултатима претраге. [Сазнајте више](https://web.dev/canonical)."
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationConflict": {
+    "message": "Више неусаглашених URL-ова ({urlList})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationDifferentDomain": {
+    "message": "Усмерава ка другом домену ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationInvalid": {
+    "message": "Неважећи URL ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationPointsElsewhere": {
+    "message": "Усмерава на другу `hreflang` локацију ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationRelative": {
+    "message": "Релативни URL ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationRoot": {
+    "message": "Усмерава на основни URL домена (почетну страницу), уместо еквивалентне странице садржаја"
+  },
+  "lighthouse-core/audits/seo/canonical.js | failureTitle": {
+    "message": "Документ нема важећу вредност `rel=canonical`"
+  },
+  "lighthouse-core/audits/seo/canonical.js | title": {
+    "message": "Документ има важећи атрибут `rel=canonical`"
+  },
+  "lighthouse-core/audits/seo/font-size.js | description": {
+    "message": "Величине фонтова испод 12 пиксела су премале да би биле читљиве и због њих корисници на мобилним уређајима морају да „зумирају прстима“ како би могли да читају садржај. Потрудите се да >60% текста странице буде ≥12 пиксела. [Сазнајте више](https://web.dev/font-size)."
+  },
+  "lighthouse-core/audits/seo/font-size.js | displayValue": {
+    "message": "{decimalProportion, number, extendedPercent} читљивог текста"
+  },
+  "lighthouse-core/audits/seo/font-size.js | explanationViewport": {
+    "message": "Текст није читљив јер не постоји метаознака области приказа која је оптимизована за екране на мобилним уређајима."
+  },
+  "lighthouse-core/audits/seo/font-size.js | explanationWithDisclaimer": {
+    "message": "{decimalProportion, number, extendedPercent} текста је премало (на основу узорка од {decimalProportionVisited, number, extendedPercent})."
+  },
+  "lighthouse-core/audits/seo/font-size.js | failureTitle": {
+    "message": "Документ не користи читљиве величине фонтова"
+  },
+  "lighthouse-core/audits/seo/font-size.js | title": {
+    "message": "Документ користи читљиве величине фонтова"
+  },
+  "lighthouse-core/audits/seo/hreflang.js | description": {
+    "message": "Линкови hreflang обавештавају претраживаче коју верзију странице треба да наведу у резултатима претраге за дати језик или регион. [Сазнајте више](https://web.dev/hreflang)."
+  },
+  "lighthouse-core/audits/seo/hreflang.js | failureTitle": {
+    "message": "Документ нема важећи атрибут `hreflang`"
+  },
+  "lighthouse-core/audits/seo/hreflang.js | title": {
+    "message": "Документ има важећи атрибут `hreflang`"
+  },
+  "lighthouse-core/audits/seo/http-status-code.js | description": {
+    "message": "Странице са неуспешним HTTP кодовима статуса можда неће бити правилно индексиране. [Сазнајте више](https://web.dev/http-status-code)."
+  },
+  "lighthouse-core/audits/seo/http-status-code.js | failureTitle": {
+    "message": "Страница има неуспешан HTTP кôд статуса"
+  },
+  "lighthouse-core/audits/seo/http-status-code.js | title": {
+    "message": "Страница има успешан HTTP кôд статуса"
+  },
+  "lighthouse-core/audits/seo/is-crawlable.js | description": {
+    "message": "Претраживачи не могу да уврсте странице у резултате претраге ако немају дозволу да их пописују. [Сазнајте више](https://web.dev/is-crawable)."
+  },
+  "lighthouse-core/audits/seo/is-crawlable.js | failureTitle": {
+    "message": "Индексирање странице је блокирано"
+  },
+  "lighthouse-core/audits/seo/is-crawlable.js | title": {
+    "message": "Индексирање странице није блокирано"
+  },
+  "lighthouse-core/audits/seo/link-text.js | description": {
+    "message": "Описни текст у линковима помаже претраживачима да разумеју садржај. [Сазнајте више](https://web.dev/link-text)."
+  },
+  "lighthouse-core/audits/seo/link-text.js | displayValue": {
+    "message": "{itemCount,plural, =1{Пронађен је 1 линк}one{Пронађен је # линк}few{Пронађена су # линка}other{Пронађено је # линкова}}"
+  },
+  "lighthouse-core/audits/seo/link-text.js | failureTitle": {
+    "message": "Линкови немају описни текст"
+  },
+  "lighthouse-core/audits/seo/link-text.js | title": {
+    "message": "Линкови имају описни текст"
+  },
+  "lighthouse-core/audits/seo/manual/structured-data.js | description": {
+    "message": "Покрените [алатку за тестирање структурираних података](https://search.google.com/structured-data/testing-tool/) и [алатку за анализирање структурираних података](http://linter.structured-data.org/) да бисте проценили структуриране податке. [Сазнајте више](https://web.dev/structured-data)."
+  },
+  "lighthouse-core/audits/seo/manual/structured-data.js | title": {
+    "message": "Структурирани подаци су важећи"
+  },
+  "lighthouse-core/audits/seo/meta-description.js | description": {
+    "message": "Метаописи могу да буду уврштени у резултате претраге да би пружили сажети резиме садржаја странице. [Сазнајте више](https://web.dev/meta-description)."
+  },
+  "lighthouse-core/audits/seo/meta-description.js | explanation": {
+    "message": "Поље за текст описа је празно."
+  },
+  "lighthouse-core/audits/seo/meta-description.js | failureTitle": {
+    "message": "Документ нема метаопис"
+  },
+  "lighthouse-core/audits/seo/meta-description.js | title": {
+    "message": "Документ има метаопис"
+  },
+  "lighthouse-core/audits/seo/plugins.js | description": {
+    "message": "Претраживачи не могу да индексирају садржај додатних компонената, а многи уређаји ограничавају додатне компоненте или их не подржавају. [Сазнајте више](https://web.dev/plugins)."
+  },
+  "lighthouse-core/audits/seo/plugins.js | failureTitle": {
+    "message": "Документ користи додатне компоненте"
+  },
+  "lighthouse-core/audits/seo/plugins.js | title": {
+    "message": "Документ избегава додатне компоненте"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | description": {
+    "message": "Ако датотека robots.txt није правилно направљена, пописивачи можда неће моћи да разумеју како желите да се веб-сајт попише или индексира. [Сазнајте више](https://web.dev/robots-txt)."
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | displayValueHttpBadCode": {
+    "message": "Захтев за датотеку robots.txt вратио је HTTP статус: {statusCode}"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | displayValueValidationError": {
+    "message": "{itemCount,plural, =1{Пронађена је 1 грешка}one{Пронађена је # грешка}few{Пронађене су # грешке}other{Пронађено је # грешака}}"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | explanation": {
+    "message": "Lighthouse није успео да преузме датотеку robots.txt"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | failureTitle": {
+    "message": "Датотека robots.txt није важећа"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | title": {
+    "message": "Датотека robots.txt је важећа"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | description": {
+    "message": "Интерактивни елементи попут дугмади и линкова треба да буду довољно велики (48×48 пиксела) и да имају довољно простора око себе да би било лако да се додирну без преклапања са другим елементима. [Сазнајте више](https://web.dev/tap-targets)."
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | displayValue": {
+    "message": "{decimalProportion, number, percent} циљева додиривања има одговарајућу величину"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | explanationViewportMetaNotOptimized": {
+    "message": "Циљеви додиривања су премали јер не постоји метаознака области приказа која је оптимизована за екране на мобилним уређајима"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | failureTitle": {
+    "message": "Циљеви додиривања немају одговарајућу величину"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | overlappingTargetHeader": {
+    "message": "Циљ који се преклапа"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | tapTargetHeader": {
+    "message": "Циљ додиривања"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | title": {
+    "message": "Циљеви додиривања имају одговарајућу величину"
+  },
+  "lighthouse-core/audits/service-worker.js | description": {
+    "message": "Сервисер је технологија која омогућава апликацији да користи многе функције прогресивних веб-апликација, попут офлајн рада, додавања на почетни екран и искачућих обавештења. [Сазнајте више](https://developers.google.com/web/tools/lighthouse/audits/registered-service-worker)."
+  },
+  "lighthouse-core/audits/service-worker.js | explanationBadManifest": {
+    "message": "Ову страницу контролише сервисер, али није пронађен ниједан `start_url` јер није успело рашчлањивање манифеста као важеће JSON датотеке"
+  },
+  "lighthouse-core/audits/service-worker.js | explanationBadStartUrl": {
+    "message": "Ову страницу контролише сервисер, али `start_url` ({startUrl}) не спада у опсег сервисера ({scopeUrl})"
+  },
+  "lighthouse-core/audits/service-worker.js | explanationNoManifest": {
+    "message": "Ову страницу контролише сервисер, али није пронађен ниједан `start_url` јер ниједан манифест није преузет."
+  },
+  "lighthouse-core/audits/service-worker.js | explanationOutOfScope": {
+    "message": "Овај извор има један или више сервисера, али страница ({pageUrl}) није у опсегу."
+  },
+  "lighthouse-core/audits/service-worker.js | failureTitle": {
+    "message": "Не региструје сервисер који контролише страницу и `start_url`"
+  },
+  "lighthouse-core/audits/service-worker.js | title": {
+    "message": "Региструје сервисер који контролише страницу и `start_url`"
+  },
+  "lighthouse-core/audits/splash-screen.js | description": {
+    "message": "Тематски уводни екран обезбеђује квалитетан доживљај када корисници покрећу апликацију са почетних екрана. [Сазнајте више](https://developers.google.com/web/tools/lighthouse/audits/custom-splash-screen)."
+  },
+  "lighthouse-core/audits/splash-screen.js | failureTitle": {
+    "message": "Није конфигурисано за прилагођени уводни екран"
+  },
+  "lighthouse-core/audits/splash-screen.js | title": {
+    "message": "Конфигурисано за прилагођени уводни екран"
+  },
+  "lighthouse-core/audits/themed-omnibox.js | description": {
+    "message": "Трака за адресу прегледача може да има тему која одговара сајту. [Сазнајте више](https://developers.google.com/web/tools/lighthouse/audits/address-bar)."
+  },
+  "lighthouse-core/audits/themed-omnibox.js | failureTitle": {
+    "message": "Не подешава боју теме за траку за адресу."
+  },
+  "lighthouse-core/audits/themed-omnibox.js | title": {
+    "message": "Подешава боју теме за траку за адресу."
+  },
+  "lighthouse-core/audits/third-party-summary.js | columnBlockingTime": {
+    "message": "Период блокирања главне нити"
+  },
+  "lighthouse-core/audits/third-party-summary.js | columnThirdParty": {
+    "message": "Независни добављач"
+  },
+  "lighthouse-core/audits/third-party-summary.js | description": {
+    "message": "Кôд независног добављача може значајно да утиче на учинак учитавања. Ограничите број сувишних независних добављача услуге и пробајте да учитате кôд независног добављача када страница примарно заврши са учитавањем. [Сазнајте више](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/loading-third-party-javascript/)."
+  },
+  "lighthouse-core/audits/third-party-summary.js | displayValue": {
+    "message": "Кôд независног добављача је блокирао главну нит {timeInMs, number, milliseconds} ms"
+  },
+  "lighthouse-core/audits/third-party-summary.js | failureTitle": {
+    "message": "Смањите утицај кода независног добављача"
+  },
+  "lighthouse-core/audits/third-party-summary.js | title": {
+    "message": "Независна употреба"
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | description": {
+    "message": "Време првог одговора одређује време у које сервер шаље одговор. [Сазнајте више](https://developers.google.com/web/tools/lighthouse/audits/ttfb)."
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | displayValue": {
+    "message": "Основном документу је требало {timeInMs, number, milliseconds} ms"
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | failureTitle": {
+    "message": "Смањите времена одговора сервера (TTFB)"
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | title": {
+    "message": "Времена одговора сервера су кратка (TTFB)"
+  },
+  "lighthouse-core/audits/user-timings.js | columnDuration": {
+    "message": "Трајање"
+  },
+  "lighthouse-core/audits/user-timings.js | columnStartTime": {
+    "message": "Време почетка"
+  },
+  "lighthouse-core/audits/user-timings.js | columnType": {
+    "message": "Тип"
+  },
+  "lighthouse-core/audits/user-timings.js | description": {
+    "message": "Препоручујемо вам да опремите апликацију API-јем за време корисника да бисте измерили учинак апликације у реалном свету током кључних корисничких доживљаја. [Сазнајте више](https://developers.google.com/web/tools/lighthouse/audits/user-timing)."
+  },
+  "lighthouse-core/audits/user-timings.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 време корисника}one{# време корисника}few{# времена корисника}other{# времена корисника}}"
+  },
+  "lighthouse-core/audits/user-timings.js | title": {
+    "message": "Ознаке и мере Времена корисника"
+  },
+  "lighthouse-core/audits/uses-rel-preconnect.js | crossoriginWarning": {
+    "message": "Повезивање унапред <link> је пронађено за „{securityOrigin}“, али га прегледач није употребио. Проверите да ли правилно користите атрибут `crossorigin`."
+  },
+  "lighthouse-core/audits/uses-rel-preconnect.js | description": {
+    "message": "Размислите о томе да додате савете за ресурсе `preconnect` или `dns-prefetch` како бисте успоставили ране везе са важним изворима трећих страна. [Сазнајте више](https://developers.google.com/web/fundamentals/performance/resource-prioritization#preconnect)."
+  },
+  "lighthouse-core/audits/uses-rel-preconnect.js | title": {
+    "message": "Повежите се унапред са потребним изворима"
+  },
+  "lighthouse-core/audits/uses-rel-preload.js | crossoriginWarning": {
+    "message": "Предучитавање <link> је пронађено за „{preloadURL}“, али га прегледач није употребио. Проверите да ли правилно користите атрибут `crossorigin`."
+  },
+  "lighthouse-core/audits/uses-rel-preload.js | description": {
+    "message": "Препоручујемо вам да користите `<link rel=preload>` како бисте касније током учитавања странице дали приоритет преузимању ресурса који се тренутно траже. [Сазнајте више](https://developers.google.com/web/tools/lighthouse/audits/preload)."
+  },
+  "lighthouse-core/audits/uses-rel-preload.js | title": {
+    "message": "Унапред учитајте најважније захтеве"
+  },
+  "lighthouse-core/audits/viewport.js | description": {
+    "message": "Додајте ознаку `<meta name=\"viewport\">` да бисте оптимизовали апликацију за екране на мобилним уређајима. [Сазнајте више](https://developers.google.com/web/tools/lighthouse/audits/has-viewport-meta-tag)."
+  },
+  "lighthouse-core/audits/viewport.js | explanationNoTag": {
+    "message": "Није пронађена ознака `<meta name=\"viewport\">`"
+  },
+  "lighthouse-core/audits/viewport.js | failureTitle": {
+    "message": "Нема ознаку `<meta name=\"viewport\">` са ознакама `width` или `initial-scale`"
+  },
+  "lighthouse-core/audits/viewport.js | title": {
+    "message": "Има ознаку `<meta name=\"viewport\">` са ознаком `width` или `initial-scale`"
+  },
+  "lighthouse-core/audits/without-javascript.js | description": {
+    "message": "Апликација треба да приказује неки садржај када је JavaScript онемогућен, чак и ако је то само упозорење кориснику да је JavaScript обавезан за коришћење апликације. [Сазнајте више](https://developers.google.com/web/tools/lighthouse/audits/no-js)."
+  },
+  "lighthouse-core/audits/without-javascript.js | explanation": {
+    "message": "Тело странице треба да приказује неки садржај ако јој скрипте нису доступне."
+  },
+  "lighthouse-core/audits/without-javascript.js | failureTitle": {
+    "message": "Не пружа резервни садржај када JavaScript није доступан"
+  },
+  "lighthouse-core/audits/without-javascript.js | title": {
+    "message": "Има неки садржај када JavaScript није доступан"
+  },
+  "lighthouse-core/audits/works-offline.js | description": {
+    "message": "Ако правите прогресивну веб-апликацију, размислите о томе да користите сервисер како би апликација могла да ради офлајн. [Сазнајте више](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)."
+  },
+  "lighthouse-core/audits/works-offline.js | failureTitle": {
+    "message": "Актуелна страница не одговара кодом 200 када је офлајн"
+  },
+  "lighthouse-core/audits/works-offline.js | title": {
+    "message": "Актуелна страница одговара кодом 200 када је офлајн"
+  },
+  "lighthouse-core/audits/works-offline.js | warningNoLoad": {
+    "message": "Страница се можда не учитава офлајн зато што је пробни URL ({requested}) преусмерен на „{final}“. Пробајте директно да тестирате други URL."
+  },
+  "lighthouse-core/config/default-config.js | a11yAriaGroupDescription": {
+    "message": "То су прилике да побољшате коришћење ARIA улога у апликацији, чиме може да побољша доживљај корисника технологије за помоћ особама са инвалидитетом, као што је читач екрана."
+  },
+  "lighthouse-core/config/default-config.js | a11yAriaGroupTitle": {
+    "message": "ARIA"
+  },
+  "lighthouse-core/config/default-config.js | a11yAudioVideoGroupDescription": {
+    "message": "То су прилике да пружите алтернативни садржај за аудио и видео датотеке. То може да побољша доживљај за кориснике са оштећеним слухом или видом."
+  },
+  "lighthouse-core/config/default-config.js | a11yAudioVideoGroupTitle": {
+    "message": "Звук и видео"
+  },
+  "lighthouse-core/config/default-config.js | a11yBestPracticesGroupDescription": {
+    "message": "Ове ставке истичу уобичајене најбоље праксе у вези са приступачношћу."
+  },
+  "lighthouse-core/config/default-config.js | a11yBestPracticesGroupTitle": {
+    "message": "Најбоље праксе"
+  },
+  "lighthouse-core/config/default-config.js | a11yCategoryDescription": {
+    "message": "Ове провере истичу прилике за [побољшање приступачности веб-апликације](https://developers.google.com/web/fundamentals/accessibility). Аутоматски може да се открије само један подскуп проблема са приступачношћу, па препоручујемо да обављате и ручно тестирање."
+  },
+  "lighthouse-core/config/default-config.js | a11yCategoryManualDescription": {
+    "message": "Ове ставке обрађују области које алатка за аутоматизовано тестирање не може да обухвати. Сазнајте више у водичу о [спровођењу прегледа приступачности](https://developers.google.com/web/fundamentals/accessibility/how-to-review)."
+  },
+  "lighthouse-core/config/default-config.js | a11yCategoryTitle": {
+    "message": "Приступачност"
+  },
+  "lighthouse-core/config/default-config.js | a11yColorContrastGroupDescription": {
+    "message": "То су прилике да побољшате читљивост садржаја."
+  },
+  "lighthouse-core/config/default-config.js | a11yColorContrastGroupTitle": {
+    "message": "Контраст"
+  },
+  "lighthouse-core/config/default-config.js | a11yLanguageGroupDescription": {
+    "message": "То су прилике да побољшате тумачење свог садржаја за кориснике на различитим језицима."
+  },
+  "lighthouse-core/config/default-config.js | a11yLanguageGroupTitle": {
+    "message": "Интернационализација и локализација"
+  },
+  "lighthouse-core/config/default-config.js | a11yNamesLabelsGroupDescription": {
+    "message": "То су прилике да побољшате семантику контрола у апликацији. То може да побољша доживљај корисника технологије за помоћ особама са инвалидитетом, као што је читач екрана."
+  },
+  "lighthouse-core/config/default-config.js | a11yNamesLabelsGroupTitle": {
+    "message": "Називи и ознаке"
+  },
+  "lighthouse-core/config/default-config.js | a11yNavigationGroupDescription": {
+    "message": "Ово су прилике да побољшате кретање по тастатури у апликацији."
+  },
+  "lighthouse-core/config/default-config.js | a11yNavigationGroupTitle": {
+    "message": "Навигација"
+  },
+  "lighthouse-core/config/default-config.js | a11yTablesListsVideoGroupDescription": {
+    "message": "То су прилике за побољшање доживљаја при читању података из табела и листа помоћу технологије за помоћ особама са инвалидитетом, попут читача екрана."
+  },
+  "lighthouse-core/config/default-config.js | a11yTablesListsVideoGroupTitle": {
+    "message": "Табеле и листе"
+  },
+  "lighthouse-core/config/default-config.js | bestPracticesCategoryTitle": {
+    "message": "Најбоље праксе"
+  },
+  "lighthouse-core/config/default-config.js | budgetsGroupDescription": {
+    "message": "Циљевима за учинак одређују се стандарди за учинак сајта."
+  },
+  "lighthouse-core/config/default-config.js | budgetsGroupTitle": {
+    "message": "Циљеви"
+  },
+  "lighthouse-core/config/default-config.js | diagnosticsGroupDescription": {
+    "message": "Више информација о учинку апликације. Ови бројеви не [утичу директно](https://github.com/GoogleChrome/lighthouse/blob/d2ec9ffbb21de9ad1a0f86ed24575eda32c796f0/docs/scoring.md#how-are-the-scores-weighted) на оцену учинка."
+  },
+  "lighthouse-core/config/default-config.js | diagnosticsGroupTitle": {
+    "message": "Дијагностика"
+  },
+  "lighthouse-core/config/default-config.js | firstPaintImprovementsGroupDescription": {
+    "message": "Најважнији аспект учинка је брзина којом се пиксели приказују на екрану. Кључни показатељи: Прво приказивање садржаја, Прво значајно приказивање"
+  },
+  "lighthouse-core/config/default-config.js | firstPaintImprovementsGroupTitle": {
+    "message": "Побољшања првог приказивања"
+  },
+  "lighthouse-core/config/default-config.js | loadOpportunitiesGroupDescription": {
+    "message": "Ови предлози могу да вам помогну да се страница учитава брже. Не [утичу директно](https://github.com/GoogleChrome/lighthouse/blob/d2ec9ffbb21de9ad1a0f86ed24575eda32c796f0/docs/scoring.md#how-are-the-scores-weighted) на оцену учинка."
+  },
+  "lighthouse-core/config/default-config.js | loadOpportunitiesGroupTitle": {
+    "message": "Могућности"
+  },
+  "lighthouse-core/config/default-config.js | metricGroupTitle": {
+    "message": "Показатељи"
+  },
+  "lighthouse-core/config/default-config.js | overallImprovementsGroupDescription": {
+    "message": "Побољшајте општи доживљај учитавања да би страница почела да се одазива и да би била спремна за коришћење у најкраћем могућем року. Кључни показатељи: Време почетка интеракције, Индекс брзине"
+  },
+  "lighthouse-core/config/default-config.js | overallImprovementsGroupTitle": {
+    "message": "Општа побољшања"
+  },
+  "lighthouse-core/config/default-config.js | performanceCategoryTitle": {
+    "message": "Учинак"
+  },
+  "lighthouse-core/config/default-config.js | pwaCategoryDescription": {
+    "message": "Овим проверама се оцењују аспекти прогресивне веб-апликације. [Сазнајте више](https://developers.google.com/web/progressive-web-apps/checklist)."
+  },
+  "lighthouse-core/config/default-config.js | pwaCategoryManualDescription": {
+    "message": "Ове провере захтева основна [Контролна листа за прогресивне веб-апликације](https://developers.google.com/web/progressive-web-apps/checklist), али их Lighthouse не спроводи аутоматски. Оне не утичу на ваш резултат, али је важно да их ручно потврдите."
+  },
+  "lighthouse-core/config/default-config.js | pwaCategoryTitle": {
+    "message": "Прогресивна веб-апликација"
+  },
+  "lighthouse-core/config/default-config.js | pwaFastReliableGroupTitle": {
+    "message": "Брзо и поуздано"
+  },
+  "lighthouse-core/config/default-config.js | pwaInstallableGroupTitle": {
+    "message": "Може да се инсталира"
+  },
+  "lighthouse-core/config/default-config.js | pwaOptimizedGroupTitle": {
+    "message": "Оптимизовано за PWA"
+  },
+  "lighthouse-core/config/default-config.js | seoCategoryDescription": {
+    "message": "Захваљујући овим проверама страница ће сигурно бити оптимизована за рангирање резултата претраживача. Има још неких фактора које Lighthouse не проверава, а који могу да утичу на рангирање у претрази. [Сазнајте више](https://support.google.com/webmasters/answer/35769)."
+  },
+  "lighthouse-core/config/default-config.js | seoCategoryManualDescription": {
+    "message": "Покрећите ове додатне валидаторе на сајту да бисте проверили додатне најбоље праксе оптимизације за претраживаче."
+  },
+  "lighthouse-core/config/default-config.js | seoCategoryTitle": {
+    "message": "Оптимизација за претраживаче"
+  },
+  "lighthouse-core/config/default-config.js | seoContentGroupDescription": {
+    "message": "Форматирајте HTML садржај на начин који омогућава пописивачима да боље разумеју садржај апликације."
+  },
+  "lighthouse-core/config/default-config.js | seoContentGroupTitle": {
+    "message": "Најбоље праксе за садржај"
+  },
+  "lighthouse-core/config/default-config.js | seoCrawlingGroupDescription": {
+    "message": "Да би се апликација појавила у резултатима претраге, пописивачи треба да имају приступ до ње."
+  },
+  "lighthouse-core/config/default-config.js | seoCrawlingGroupTitle": {
+    "message": "Пописивање и индексирање"
+  },
+  "lighthouse-core/config/default-config.js | seoMobileGroupDescription": {
+    "message": "Уверите се да су странице прилагођене мобилним уређајима да корисници не би морали да умањују или увећавају приказ како би читали странице са садржајем. [Сазнајте више](https://developers.google.com/search/mobile-sites/)."
+  },
+  "lighthouse-core/config/default-config.js | seoMobileGroupTitle": {
+    "message": "Прилагођено мобилним уређајима"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnCacheTTL": {
+    "message": "Време преживљавања кеша"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnLocation": {
+    "message": "Локација"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnName": {
+    "message": "Назив"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnRequests": {
+    "message": "Захтеви"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnResourceType": {
+    "message": "Тип ресурса"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnSize": {
+    "message": "Величина"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnTimeSpent": {
+    "message": "Проведено време"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnTransferSize": {
+    "message": "Величина преноса"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnURL": {
+    "message": "URL"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnWastedBytes": {
+    "message": "Потенцијална уштеда"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnWastedMs": {
+    "message": "Потенцијална уштеда"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | displayValueByteSavings": {
+    "message": "Потенцијална уштеда од {wastedBytes, number, bytes} KB"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | displayValueMsSavings": {
+    "message": "Потенцијална уштеда од {wastedMs, number, milliseconds} ms"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | documentResourceType": {
+    "message": "Документ"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | fontResourceType": {
+    "message": "Фонт"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | imageResourceType": {
+    "message": "Слика"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | mediaResourceType": {
+    "message": "Медији"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | ms": {
+    "message": "{timeInMs, number, milliseconds} ms"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | otherResourceType": {
+    "message": "Друго"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | scriptResourceType": {
+    "message": "Скрипта"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | seconds": {
+    "message": "{timeInMs, number, seconds} сек"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | stylesheetResourceType": {
+    "message": "Опис стила"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | thirdPartyResourceType": {
+    "message": "Независни ресурси"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | totalResourceType": {
+    "message": "Укупно"
+  },
+  "lighthouse-core/lib/lh-error.js | badTraceRecording": {
+    "message": "Дошло је до грешке при евидентирању трага током учитавања странице. Поново покрените Lighthouse. ({errorCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | criTimeout": {
+    "message": "Временско ограничење чекања на иницијалну везу за протокол програма за отклањање грешака."
+  },
+  "lighthouse-core/lib/lh-error.js | didntCollectScreenshots": {
+    "message": "Chrome није прикупио ниједан снимак екрана током учитавања странице. Уверите се да је садржај видљив на страници, па пробајте да поново покренете Lighthouse. ({errorCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | dnsFailure": {
+    "message": "DNS сервери нису могли да разреше наведени домен."
+  },
+  "lighthouse-core/lib/lh-error.js | erroredRequiredArtifact": {
+    "message": "Прикупљач за обавезни ресурс {artifactName} је наишао на грешку: {errorMessage}"
+  },
+  "lighthouse-core/lib/lh-error.js | internalChromeError": {
+    "message": "Дошло је до интерне грешке у Chrome-у. Поново покрените Chrome и пробајте да поново покренете Lighthouse."
+  },
+  "lighthouse-core/lib/lh-error.js | missingRequiredArtifact": {
+    "message": "Прикупљач за обавезни ресурс {artifactName} се није покренуо."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailed": {
+    "message": "Lighthouse није успео да поуздано учита страницу коју сте захтевали. Уверите се да тестирате одговарајући URL и да сервер правилно одговара на све захтеве."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedHung": {
+    "message": "Lighthouse није успео да поуздано учита URL који сте захтевали јер је страница престала да реагује."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedInsecure": {
+    "message": "URL који сте навели нема важећи безбедносни сертификат. {securityMessages}"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedInterstitial": {
+    "message": "Chrome је спречио учитавање странице са транзитивним огласом. Уверите се да тестирате одговарајући URL и да сервер правилно одговара на све захтеве."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedWithDetails": {
+    "message": "Lighthouse није успео да поуздано учита страницу коју сте захтевали. Уверите се да тестирате одговарајући URL и да сервер правилно одговара на све захтеве. (Детаљи: {errorDetails})"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedWithStatusCode": {
+    "message": "Lighthouse није успео да поуздано учита страницу коју сте захтевали. Уверите се да тестирате одговарајући URL и да сервер правилно одговара на све захтеве. (Кôд статуса: {statusCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadTookTooLong": {
+    "message": "Учитавање странице је трајало предуго. Пратите прилике у извештају да бисте скратили време учитавања странице, па поново покрените Lighthouse. ({errorCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | protocolTimeout": {
+    "message": "Одговор протокола DevTools се чека дуже од додељеног периода. (Метод: {protocolMethod})"
+  },
+  "lighthouse-core/lib/lh-error.js | requestContentTimeout": {
+    "message": "Преузимање садржаја ресурса траје дуже од додељеног периода."
+  },
+  "lighthouse-core/lib/lh-error.js | urlInvalid": {
+    "message": "Изгледа да је URL који сте навели неважећи."
+  },
+  "lighthouse-core/report/html/renderer/util.js | auditGroupExpandTooltip": {
+    "message": "Прикажи провере"
+  },
+  "lighthouse-core/report/html/renderer/util.js | crcInitialNavigation": {
+    "message": "Почетна навигација"
+  },
+  "lighthouse-core/report/html/renderer/util.js | crcLongestDurationLabel": {
+    "message": "Максимално кашњење критичне путање:"
+  },
+  "lighthouse-core/report/html/renderer/util.js | errorLabel": {
+    "message": "Грешка!"
+  },
+  "lighthouse-core/report/html/renderer/util.js | errorMissingAuditInfo": {
+    "message": "Пријављивање грешке: нема информација о провери"
+  },
+  "lighthouse-core/report/html/renderer/util.js | labDataTitle": {
+    "message": "Подаци о експерименталним функцијама"
+  },
+  "lighthouse-core/report/html/renderer/util.js | lsPerformanceCategoryDescription": {
+    "message": "[Lighthouse](https://developers.google.com/web/tools/lighthouse/) анализа актуелне странице емулиране помоћу мобилне мреже. Вредности представљају процене и могу да варирају."
+  },
+  "lighthouse-core/report/html/renderer/util.js | manualAuditsGroupTitle": {
+    "message": "Додатне ставке за ручну проверу"
+  },
+  "lighthouse-core/report/html/renderer/util.js | notApplicableAuditsGroupTitle": {
+    "message": "Није примењиво"
+  },
+  "lighthouse-core/report/html/renderer/util.js | opportunityResourceColumnLabel": {
+    "message": "Могућност"
+  },
+  "lighthouse-core/report/html/renderer/util.js | opportunitySavingsColumnLabel": {
+    "message": "Процењена уштеда"
+  },
+  "lighthouse-core/report/html/renderer/util.js | passedAuditsGroupTitle": {
+    "message": "Провере са задовољавајућом оценом"
+  },
+  "lighthouse-core/report/html/renderer/util.js | snippetCollapseButtonLabel": {
+    "message": "Скупи фрагмент"
+  },
+  "lighthouse-core/report/html/renderer/util.js | snippetExpandButtonLabel": {
+    "message": "Прошири фрагмент"
+  },
+  "lighthouse-core/report/html/renderer/util.js | thirdPartyResourcesLabel": {
+    "message": "Прикажи независне ресурсе"
+  },
+  "lighthouse-core/report/html/renderer/util.js | toplevelWarningsMessage": {
+    "message": "Било је извесних проблема који су утицали на ово покретање Lighthouse-а:"
+  },
+  "lighthouse-core/report/html/renderer/util.js | varianceDisclaimer": {
+    "message": "Вредности представљају процене и могу да варирају. Оцена учинка се [заснива само на овим показатељима](https://github.com/GoogleChrome/lighthouse/blob/d2ec9ffbb21de9ad1a0f86ed24575eda32c796f0/docs/scoring.md#how-are-the-scores-weighted)."
+  },
+  "lighthouse-core/report/html/renderer/util.js | warningAuditsGroupTitle": {
+    "message": "Провере са задовољавајућом оценом које садрже упозорења"
+  },
+  "lighthouse-core/report/html/renderer/util.js | warningHeader": {
+    "message": "Упозорења: "
+  },
+  "stack-packs/packs/wordpress.js | efficient_animated_content": {
+    "message": "Предлажемо да отпремите GIF у услугу која ће га кодирати за уградњу у HTML5 видео."
+  },
+  "stack-packs/packs/wordpress.js | offscreen_images": {
+    "message": "Инсталирајте [WordPress додатну компоненту за лако учитавање](https://wordpress.org/plugins/search/lazy+load/) која омогућава да одложите све слике ван екрана или да пређете на тему која пружа ту функцију. Препоручујемо и да користите [додатну компоненту за AMP странице](https://wordpress.org/plugins/amp/)."
+  },
+  "stack-packs/packs/wordpress.js | render_blocking_resources": {
+    "message": "Неке WordPress додатне компоненте могу да вам помогну да [уметнете критичне елементе](https://wordpress.org/plugins/search/critical+css/) или [одложите мање важне ресурсе](https://wordpress.org/plugins/search/defer+css+javascript/). Имајте на уму да оптимизације које пружају ове додатне компоненте могу да оштете функције или теме додатних компоненти, па ћете вероватно морати да уносите промене у кôд."
+  },
+  "stack-packs/packs/wordpress.js | time_to_first_byte": {
+    "message": "Теме, додатне компоненте и спецификације сервера доприносе времену одговора сервера. Препоручујемо да пронађете оптимизованију тему, пажљиво изаберете додатну компоненту за оптимизацију и/или надоградите сервер."
+  },
+  "stack-packs/packs/wordpress.js | total_byte_weight": {
+    "message": "Препоручујемо да прикажете одломке у листама постова (на пример, преко још ознака), смањите број постова који се приказују на одређеној страници, раздвојите дугачке постове на више странциа или користите додатну компоненту за лако учитавање коментара."
+  },
+  "stack-packs/packs/wordpress.js | unminified_css": {
+    "message": "Неке [WordPress додатне компоненте](https://wordpress.org/plugins/search/minify+css/) могу да убрзају сајт тако што повезују, умањују и компримују стилове. Ово умањивање можете да обавите и унапред помоћу процеса дизајнирања ако је могуће."
+  },
+  "stack-packs/packs/wordpress.js | unminified_javascript": {
+    "message": "Неке [WordPress додатне компоненте](https://wordpress.org/plugins/search/minify+javascript/) могу да убрзају сајт тако што повезују, умањују и компримују скрипте. Ово умањивање можете да обавите и унапред помоћу процеса дизајнирања ако је могуће."
+  },
+  "stack-packs/packs/wordpress.js | unused_css_rules": {
+    "message": "Препоручујемо да умањите или промените број [WordPress додатних компоненти](https://wordpress.org/plugins/) које на страници учитавају CSS који се не користи. Да бисте идентификовали додатне компоненте које додају сувишан CSS, пробајте да покренете [покривеност кода](https://developers.google.com/web/updates/2017/04/devtools-release-notes#coverage) у алатки Chrome DevTools. Можете да идентификујете одговорну тему/додатну компоненту у URL-у стилске странице. Потражите додатне компоненте које на листи имају много стилских страница са доста црвенила у покривености кода. Додатна компонента треба да стави стилску страницу на листу само ако се стварно користи на страници."
+  },
+  "stack-packs/packs/wordpress.js | unused_javascript": {
+    "message": "Препоручујемо да умањите или промените број [WordPress додатних компоненти](https://wordpress.org/plugins/) које на страници учитавају JavaScript који се не користи. Да бисте идентификовали додатне компоненте које додају сувишан JS, пробајте да покренете [покривеност кода](https://developers.google.com/web/updates/2017/04/devtools-release-notes#coverage) у алатки Chrome DevTools. Можете да идентификујете одговорну тему/додатну компоненту у URL-у скрипте. Потражите додатне компоненте које на листи имају много скрипти са доста црвенила у покривености кода. Додатна компонента треба да стави скрипту на листу само ако се стварно користи на страници."
+  },
+  "stack-packs/packs/wordpress.js | uses_long_cache_ttl": {
+    "message": "Прочитајте више о [кеширању прегледача у WordPress-у](https://codex.wordpress.org/WordPress_Optimization#Browser_Caching)."
+  },
+  "stack-packs/packs/wordpress.js | uses_optimized_images": {
+    "message": "Препоручујемо да користите [WordPress додатну компоненту за оптимизацију слика](https://wordpress.org/plugins/search/optimize+images/) која компримује слике без губитка квалитета."
+  },
+  "stack-packs/packs/wordpress.js | uses_responsive_images": {
+    "message": "Отпремајте слике директно помоћу [библиотеке медија](https://codex.wordpress.org/Media_Library_Screen) да бисте се уверили да су доступне обавезне величине слика, па их уметните у библиотеку медија или користите виџет странице да бисте се уверили да се користе оптималне величине слика (укључујући оне за преломне тачке које се одазивају). Избегавајте коришћење слика `Full Size` ако димензије нису адекватне за њихово коришћење. [Сазнајте више](https://codex.wordpress.org/Inserting_Images_into_Posts_and_Pages#Image_Size)."
+  },
+  "stack-packs/packs/wordpress.js | uses_text_compression": {
+    "message": "Можете да омогућите компримовање текста у конфигурацији веб-сервера."
+  },
+  "stack-packs/packs/wordpress.js | uses_webp_images": {
+    "message": "Препоручујемо да користите [додатну компоненту](https://wordpress.org/plugins/search/convert+webp/) или услугу која аутоматски конвертује отпремљене слике у оптималне формате."
+  }
+}
diff --git a/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/sv.json b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/sv.json
new file mode 100644
index 0000000..4859b83a
--- /dev/null
+++ b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/sv.json
@@ -0,0 +1,1541 @@
+{
+  "lighthouse-core/audits/accessibility/accesskeys.js | description": {
+    "message": "Med åtkomsttangenter kan användaren snabbt flytta fokus till en viss del av sidan. Ingen åtkomsttangent får användas flera gånger om navigeringen ska fungera ordentligt. [Läs mer](https://web.dev/accesskeys/)."
+  },
+  "lighthouse-core/audits/accessibility/accesskeys.js | failureTitle": {
+    "message": "Alla värden på `[accesskey]` är inte unika"
+  },
+  "lighthouse-core/audits/accessibility/accesskeys.js | title": {
+    "message": "`[accesskey]` värden är unika"
+  },
+  "lighthouse-core/audits/accessibility/aria-allowed-attr.js | description": {
+    "message": "Varje ARIA-`role` har stöd för ett visst antal attribut av typen `aria-*`. Om dessa inte överensstämmer blir attributen av typen `aria-*` ogiltiga. [Läs mer](https://web.dev/aria-allowed-attr/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-allowed-attr.js | failureTitle": {
+    "message": "Alla attribut av typen `[aria-*]` stämmer inte med elementets roll"
+  },
+  "lighthouse-core/audits/accessibility/aria-allowed-attr.js | title": {
+    "message": "Attributen av typen `[aria-*]` stämmer med elementets roll"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-attr.js | description": {
+    "message": "Vissa ARIA-roller har obligatoriska attribut som beskriver elementets tillstånd för skärmläsare. [Läs mer](https://web.dev/aria-required-attr/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-required-attr.js | failureTitle": {
+    "message": "Vissa element med attributet `[role]` har inte alla obligatoriska attribut av typen `[aria-*]`"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-attr.js | title": {
+    "message": "Alla element med `[role]`-attribut har alla obligatoriska attribut av typen `[aria-*]`"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-children.js | description": {
+    "message": "Vissa överordnade element med ARIA-attributet role måste ha vissa underordnade element med role för att hjälpmedlen ska fungera som avsett. [Läs mer](https://web.dev/aria-required-children/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-required-children.js | failureTitle": {
+    "message": "Vissa obligatoriska underordnade element med `[role]` saknas för element med `[role]`"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-children.js | title": {
+    "message": "Alla obligatoriska underordnade element med `[role]` används för element med `[role]`"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-parent.js | description": {
+    "message": "Vissa underordnade element med ARIA-attributet role måste ha ett bestämt överordnat element med role för att hjälpmedlen ska fungera som avsett. [Läs mer](https://web.dev/aria-required-parent/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-required-parent.js | failureTitle": {
+    "message": "Det finns element med `[role]`-attribut utan ett obligatoriskt överordnat element"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-parent.js | title": {
+    "message": "Rätt överordnat element används för alla element med `[role]`-attribut"
+  },
+  "lighthouse-core/audits/accessibility/aria-roles.js | description": {
+    "message": "Alla ARIA-rollattribut måste ha giltiga värden om de ska fungera som avsett med hjälpmedlen. [Läs mer](https://web.dev/aria-roles/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-roles.js | failureTitle": {
+    "message": "Vissa `[role]`-värden är inte giltiga"
+  },
+  "lighthouse-core/audits/accessibility/aria-roles.js | title": {
+    "message": "Alla `[role]`-värden är giltiga"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr-value.js | description": {
+    "message": "Skärmläsare och andra hjälpmedel kan inte tolka ARIA-attribut med ogiltiga värden. [Läs mer](https://web.dev/aria-valid-attr-value/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr-value.js | failureTitle": {
+    "message": "Alla attribut av typen `[aria-*]` har inte ett giltigt värde"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr-value.js | title": {
+    "message": "Alla attribut av typen `[aria-*]` har giltiga värden"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr.js | description": {
+    "message": "Skärmläsare och andra hjälpmedel kan inte tolka ARIA-attribut med ogiltiga namn. [Läs mer](https://web.dev/aria-valid-attr/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr.js | failureTitle": {
+    "message": "Vissa attribut av typen `[aria-*]` är ogiltiga eller felstavade"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr.js | title": {
+    "message": "Alla attribut av typen `[aria-*]` är giltiga och rättstavade"
+  },
+  "lighthouse-core/audits/accessibility/audio-caption.js | description": {
+    "message": "Textningen ger döva och hörselskadade viktig information om vem som talar, vad de säger och andra ljud som inte är tal. [Läs mer](https://web.dev/audio-caption/)."
+  },
+  "lighthouse-core/audits/accessibility/audio-caption.js | failureTitle": {
+    "message": "Alla `<audio>`-element har inte ett underordnat `<track>`-element med `[kind=\"captions\"]`"
+  },
+  "lighthouse-core/audits/accessibility/audio-caption.js | title": {
+    "message": "Alla `<audio>`-element innehåller ett `<track>`-element med `[kind=\"captions\"]`"
+  },
+  "lighthouse-core/audits/accessibility/axe-audit.js | failingElementsHeader": {
+    "message": "Element med fel"
+  },
+  "lighthouse-core/audits/accessibility/button-name.js | description": {
+    "message": "Utan ett igenkännligt namn läses knappen upp som ”knapp” av skärmläsarna. Det gör knappen oanvändbar för den som behöver använda en skärmläsare. [Läs mer](https://web.dev/button-name/)."
+  },
+  "lighthouse-core/audits/accessibility/button-name.js | failureTitle": {
+    "message": "Vissa knappar har inte namn som hjälpmedlen kan använda"
+  },
+  "lighthouse-core/audits/accessibility/button-name.js | title": {
+    "message": "Alla knappar har namn som hjälpmedlen kan använda"
+  },
+  "lighthouse-core/audits/accessibility/bypass.js | description": {
+    "message": "Om du lägger till ett sätt att hoppa över innehåll som upprepas går det att navigera effektivare på sidan för den som använder tangentbordet. [Läs mer](https://web.dev/bypass/)."
+  },
+  "lighthouse-core/audits/accessibility/bypass.js | failureTitle": {
+    "message": "Sidan saknar rubrik, överhoppningslänk eller landmärkesområde"
+  },
+  "lighthouse-core/audits/accessibility/bypass.js | title": {
+    "message": "Sidan har en rubrik, en överhoppningslänk eller ett landmärkesområde"
+  },
+  "lighthouse-core/audits/accessibility/color-contrast.js | description": {
+    "message": "Text med låg kontrast blir svårläst eller oläslig för många användare. [Läs mer](https://web.dev/color-contrast/)."
+  },
+  "lighthouse-core/audits/accessibility/color-contrast.js | failureTitle": {
+    "message": "Kontrasten mellan bakgrundsfärg och förgrundsfärg är inte tillräckligt stor."
+  },
+  "lighthouse-core/audits/accessibility/color-contrast.js | title": {
+    "message": "Kontrasten mellan bakgrundsfärg och förgrundsfärg är tillräckligt stor"
+  },
+  "lighthouse-core/audits/accessibility/definition-list.js | description": {
+    "message": "Om en definitionslista inte har märkts upp korrekt kan den läsas upp på ett missvisande eller felaktigt sätt av skärmläsare. [Läs mer](https://web.dev/definition-list/)."
+  },
+  "lighthouse-core/audits/accessibility/definition-list.js | failureTitle": {
+    "message": "Det finns `<dl>`-element som inte enbart består av `<dt>`- och `<dd>`-grupper i rätt ordning, `<script>`- och `<template>`-element."
+  },
+  "lighthouse-core/audits/accessibility/definition-list.js | title": {
+    "message": "Alla `<dl>`-element består enbart av `<dt>`- och `<dd>`-grupper i rätt ordning, `<script>`- eller `<template>`-element."
+  },
+  "lighthouse-core/audits/accessibility/dlitem.js | description": {
+    "message": "Alla poster i definitionslistor (`<dt>` och `<dd>`) måste ha överordnade `<dl>`-element så att de kan presenteras korrekt av skärmläsare. [Läs mer](https://web.dev/dlitem/)."
+  },
+  "lighthouse-core/audits/accessibility/dlitem.js | failureTitle": {
+    "message": "Vissa poster i definitionslistor har inte bäddats in i `<dl>`-element"
+  },
+  "lighthouse-core/audits/accessibility/dlitem.js | title": {
+    "message": "Alla poster i definitionslistor har bäddats in i `<dl>`-element"
+  },
+  "lighthouse-core/audits/accessibility/document-title.js | description": {
+    "message": "Titeln ger den som använder skärmläsare en uppfattning om vad sidan handlar om. Dessutom fyller sidtiteln en viktig funktion i sökmotorer när användarna väljer ut sidor som verkar vara relevanta för sökningen. [Läs mer](https://web.dev/document-title/)."
+  },
+  "lighthouse-core/audits/accessibility/document-title.js | failureTitle": {
+    "message": "Dokumentet har inget `<title>`-element"
+  },
+  "lighthouse-core/audits/accessibility/document-title.js | title": {
+    "message": "Dokumentet har ett `<title>`-element"
+  },
+  "lighthouse-core/audits/accessibility/duplicate-id.js | description": {
+    "message": "Alla id-attribut måste ha unika värden. Hjälpmedelstekniken skulle annars hoppa över dubblettförekomsterna av ett värde. [Läs mer](https://web.dev/duplicate-id/)."
+  },
+  "lighthouse-core/audits/accessibility/duplicate-id.js | failureTitle": {
+    "message": "Alla `[id]`-attribut på sidan är inte unika"
+  },
+  "lighthouse-core/audits/accessibility/duplicate-id.js | title": {
+    "message": "Alla `[id]`-attribut på sidan är unika"
+  },
+  "lighthouse-core/audits/accessibility/frame-title.js | description": {
+    "message": "Med en skärmläsare behövs namn på ramarna som beskriver vad ramen innehåller. [Läs mer](https://web.dev/frame-title/)."
+  },
+  "lighthouse-core/audits/accessibility/frame-title.js | failureTitle": {
+    "message": "Vissa `<frame>`- eller `<iframe>`-element saknar titel"
+  },
+  "lighthouse-core/audits/accessibility/frame-title.js | title": {
+    "message": "Alla `<frame>`- eller `<iframe>`-element har en titel"
+  },
+  "lighthouse-core/audits/accessibility/html-has-lang.js | description": {
+    "message": "Om inget lang-attribut har angetts för en sida används skärmläsarens standardspråk, det vill säga det språk som användaren valde när skärmläsaren konfigurerades. Om sidan inte är på det språket kanske texten inte läses upp korrekt. [Läs mer](https://web.dev/html-has-lang/)."
+  },
+  "lighthouse-core/audits/accessibility/html-has-lang.js | failureTitle": {
+    "message": "`<html>`-elementet har inget `[lang]`-attribut"
+  },
+  "lighthouse-core/audits/accessibility/html-has-lang.js | title": {
+    "message": "`<html>`-elementet har ett `[lang]`-attribut"
+  },
+  "lighthouse-core/audits/accessibility/html-lang-valid.js | description": {
+    "message": "Om du anger ett giltigt [språk enligt BCP 47](https://www.w3.org/International/questions/qa-choosing-language-tags#question) kan texten uttalas korrekt av skärmläsare. [Läs mer](https://web.dev/html-lang-valid/)."
+  },
+  "lighthouse-core/audits/accessibility/html-lang-valid.js | failureTitle": {
+    "message": "`<html>`-elementets `[lang]`-attribut har inte ett giltigt värde."
+  },
+  "lighthouse-core/audits/accessibility/html-lang-valid.js | title": {
+    "message": "`<html>`-elementets `[lang]`-attribut har ett giltigt värde"
+  },
+  "lighthouse-core/audits/accessibility/image-alt.js | description": {
+    "message": "Element med informativ funktion bör ha en kort, beskrivande alternativtext. Element som bara har estetisk funktion kan ignoreras genom att alt-attributet lämnas tomt. [Läs mer](https://web.dev/image-alt/)."
+  },
+  "lighthouse-core/audits/accessibility/image-alt.js | failureTitle": {
+    "message": "Alla bildelement har inte `[alt]`-attribut"
+  },
+  "lighthouse-core/audits/accessibility/image-alt.js | title": {
+    "message": "Alla bildelement har `[alt]`-attribut"
+  },
+  "lighthouse-core/audits/accessibility/input-image-alt.js | description": {
+    "message": "Om du anger en alternativ text när en bild används som `<input>`-knapp blir det lättare för användare med skärmläsare att förstå hur knappen används. [Läs mer](https://web.dev/input-image-alt/)."
+  },
+  "lighthouse-core/audits/accessibility/input-image-alt.js | failureTitle": {
+    "message": "Vissa `<input type=\"image\">`-element saknar `[alt]`-text"
+  },
+  "lighthouse-core/audits/accessibility/input-image-alt.js | title": {
+    "message": "Alla `<input type=\"image\">`-element har `[alt]`-text"
+  },
+  "lighthouse-core/audits/accessibility/label.js | description": {
+    "message": "Etiketterna gör att de olika delarna av ett formulär kan presenteras korrekt för användare med skärmläsare eller andra hjälpmedel. [Läs mer](https://web.dev/label/)."
+  },
+  "lighthouse-core/audits/accessibility/label.js | failureTitle": {
+    "message": "Vissa formulärelement har inte etiketter"
+  },
+  "lighthouse-core/audits/accessibility/label.js | title": {
+    "message": "Alla formulärelement har etiketter"
+  },
+  "lighthouse-core/audits/accessibility/layout-table.js | description": {
+    "message": "I en tabell som används i layoutsyfte ska det inte finnas dataelement som th eller caption eller attributet summary, eftersom det kan bli missvisande för den som använder skärmläsare. [Läs mer](https://web.dev/layout-table/)."
+  },
+  "lighthouse-core/audits/accessibility/layout-table.js | failureTitle": {
+    "message": "Det finns `<table>`-element som används i layoutsyfte men som ändå har `<th>`- eller `<caption>`-element eller `[summary]`-attribut, vilket bör undvikas."
+  },
+  "lighthouse-core/audits/accessibility/layout-table.js | title": {
+    "message": "Inga `<th>`- eller `<caption>`-element eller `[summary]`-attribut förekommer i `<table>`-element som används i layoutsyfte."
+  },
+  "lighthouse-core/audits/accessibility/link-name.js | description": {
+    "message": "Det blir enklare att navigera för den som använder en skärmläsare om alla länktexter (och alternativtexter för alla bilder som används som länkar) är igenkännliga, unika och möjliga att flytta fokus till. [Läs mer](https://web.dev/link-name/)."
+  },
+  "lighthouse-core/audits/accessibility/link-name.js | failureTitle": {
+    "message": "Vissa länkar har inte ett igenkännligt namn"
+  },
+  "lighthouse-core/audits/accessibility/link-name.js | title": {
+    "message": "Alla länkar har igenkännliga namn"
+  },
+  "lighthouse-core/audits/accessibility/list.js | description": {
+    "message": "Listor presenteras på ett särskilt sätt av skärmläsare. Med rätt liststruktur kan skärmläsarna ge rätt information. [Läs mer](https://web.dev/list/)."
+  },
+  "lighthouse-core/audits/accessibility/list.js | failureTitle": {
+    "message": "Listor innehåller inte enbart `<li>`-element och stödelement för skript (`<script>` och `<template>`)."
+  },
+  "lighthouse-core/audits/accessibility/list.js | title": {
+    "message": "Alla listor innehåller enbart `<li>`-element eller stödelement för skript (`<script>` och `<template>`)."
+  },
+  "lighthouse-core/audits/accessibility/listitem.js | description": {
+    "message": "Alla listposter (`<li>`) måste ha ett överordnat `<ul>`- eller `<ol>`-element för att kunna presenteras korrekt av skärmläsare. [Läs mer](https://web.dev/listitem/)."
+  },
+  "lighthouse-core/audits/accessibility/listitem.js | failureTitle": {
+    "message": "Vissa listposter (`<li>`) saknar ett överordnat `<ul>`- eller `<ol>`-element."
+  },
+  "lighthouse-core/audits/accessibility/listitem.js | title": {
+    "message": "Alla listposter (`<li>`) har ett överordnat `<ul>`- eller `<ol>`-element"
+  },
+  "lighthouse-core/audits/accessibility/meta-refresh.js | description": {
+    "message": "Användarna förväntar sig inte att en sida ska uppdateras automatiskt, och när det händer flyttas fokus tillbaka till sidans början. Det kan vara både frustrerande och förvirrande. [Läs mer](https://web.dev/meta-refresh/)."
+  },
+  "lighthouse-core/audits/accessibility/meta-refresh.js | failureTitle": {
+    "message": "`<meta http-equiv=\"refresh\">` används i dokumentet"
+  },
+  "lighthouse-core/audits/accessibility/meta-refresh.js | title": {
+    "message": "`<meta http-equiv=\"refresh\">` används inte i dokumentet"
+  },
+  "lighthouse-core/audits/accessibility/meta-viewport.js | description": {
+    "message": "Att inaktivera förstoring leder till problem för användare med nedsatt syn, som behöver skärmförstoring för att kunna se webbsidan ordentligt. [Läs mer](https://web.dev/meta-viewport/)."
+  },
+  "lighthouse-core/audits/accessibility/meta-viewport.js | failureTitle": {
+    "message": "`[user-scalable=\"no\"]` används i elementet `<meta name=\"viewport\">`, eller också är värdet på attributet `[maximum-scale]` mindre än 5."
+  },
+  "lighthouse-core/audits/accessibility/meta-viewport.js | title": {
+    "message": "`[user-scalable=\"no\"]` används inte i elementet `<meta name=\"viewport\">` och attributet `[maximum-scale]` är inte mindre än 5."
+  },
+  "lighthouse-core/audits/accessibility/object-alt.js | description": {
+    "message": "En skärmläsare kan inte tolka innehåll som inte är text. Om du lägger till alt-text i `<object>`-elementen kan skärmläsarna förmedla ett meningsfullt innehåll till användaren. [Läs mer](https://web.dev/object-alt/)."
+  },
+  "lighthouse-core/audits/accessibility/object-alt.js | failureTitle": {
+    "message": "Vissa `<object>`-element saknar `[alt]`-text"
+  },
+  "lighthouse-core/audits/accessibility/object-alt.js | title": {
+    "message": "Alla `<object>`-element har `[alt]`-text"
+  },
+  "lighthouse-core/audits/accessibility/tabindex.js | description": {
+    "message": "Med värden större än noll anges en explicit ordningsföljd för navigeringen. Även om detta inte är fel rent tekniskt leder det ofta till en frustrerande upplevelse för den som är beroende av tekniska hjälpmedel. [Läs mer](https://web.dev/tabindex/)."
+  },
+  "lighthouse-core/audits/accessibility/tabindex.js | failureTitle": {
+    "message": "Det finns element med ett `[tabindex]`-värde som är större än 0"
+  },
+  "lighthouse-core/audits/accessibility/tabindex.js | title": {
+    "message": "Det finns inga element med ett `[tabindex]`-värde som är större än 0"
+  },
+  "lighthouse-core/audits/accessibility/td-headers-attr.js | description": {
+    "message": "Skärmläsare har funktioner som gör det enklare att navigera i tabeller. Sidan fungerar bättre för den som använder skärmläsare om attributet `[headers]` i `<td>`-celler bara refererar till andra celler i samma tabell. [Läs mer](https://web.dev/td-headers-attr/)."
+  },
+  "lighthouse-core/audits/accessibility/td-headers-attr.js | failureTitle": {
+    "message": "Det finns celler i ett `<table>`-element där attributet `[headers]` inte hänvisar till andra celler i samma tabell."
+  },
+  "lighthouse-core/audits/accessibility/td-headers-attr.js | title": {
+    "message": "I alla celler i ett `<table>`-element där attributet `[headers]` används hänvisar det till andra celler i samma tabell."
+  },
+  "lighthouse-core/audits/accessibility/th-has-data-cells.js | description": {
+    "message": "Skärmläsare har funktioner som gör det enklare att navigera i tabeller. Det fungerar bättre för den som använder skärmläsare om det inte finns några tabellrubriker som hänger i luften utan att referera till några dataceller. [Läs mer](https://web.dev/th-has-data-cells/)."
+  },
+  "lighthouse-core/audits/accessibility/th-has-data-cells.js | failureTitle": {
+    "message": "Vissa `<th>`-element och element med `[role=\"columnheader\"/\"rowheader\"]` står inte som rubrik för några dataceller."
+  },
+  "lighthouse-core/audits/accessibility/th-has-data-cells.js | title": {
+    "message": "Alla `<th>`-element och element med `[role=\"columnheader\"/\"rowheader\"]` står som rubriker för andra dataceller."
+  },
+  "lighthouse-core/audits/accessibility/valid-lang.js | description": {
+    "message": "Om du anger ett giltigt [språk enligt BCP 47](https://www.w3.org/International/questions/qa-choosing-language-tags#question) för elementen uttalas texten korrekt av en skärmläsare. [Läs mer](https://web.dev/valid-lang/)."
+  },
+  "lighthouse-core/audits/accessibility/valid-lang.js | failureTitle": {
+    "message": "Vissa `[lang]`-attribut har inte ett giltigt värde"
+  },
+  "lighthouse-core/audits/accessibility/valid-lang.js | title": {
+    "message": "Alla `[lang]`-attribut har ett giltigt värde"
+  },
+  "lighthouse-core/audits/accessibility/video-caption.js | description": {
+    "message": "Det blir lättare för döva och hörselskadade att ta del av en video som är textad. [Läs mer](https://web.dev/video-caption/)."
+  },
+  "lighthouse-core/audits/accessibility/video-caption.js | failureTitle": {
+    "message": "Alla `<video>`-element har inte ett underordnat `<track>`-element med `[kind=\"captions\"]`."
+  },
+  "lighthouse-core/audits/accessibility/video-caption.js | title": {
+    "message": "Alla `<video>`-element innehåller ett `<track>`-element med `[kind=\"captions\"]`"
+  },
+  "lighthouse-core/audits/accessibility/video-description.js | description": {
+    "message": "Upplästa beskrivningar ger viktig information om videon som inte framgår av dialogen, t.ex. ansiktsuttryck och naturvyer. [Läs mer](https://web.dev/video-description/)."
+  },
+  "lighthouse-core/audits/accessibility/video-description.js | failureTitle": {
+    "message": "Alla `<video>`-element har inte ett underordnat `<track>`-element med `[kind=\"description\"]`."
+  },
+  "lighthouse-core/audits/accessibility/video-description.js | title": {
+    "message": "Alla `<video>`-element innehåller ett `<track>`-element med `[kind=\"description\"]`"
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | description": {
+    "message": "Definiera en `apple-touch-icon` för att få bästa möjliga utseende i iOS när användare lägger till en progressiv webbapp på startskärmen. Den måste peka på en icke-transparent, kvadratisk PNG med sidan 192 pixlar (eller 180 pixlar). [Läs mer](https://developers.google.com/web/fundamentals/design-and-ux/browser-customization/)."
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | failureTitle": {
+    "message": "Anger inte ett giltigt `apple-touch-icon`"
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | precomposedWarning": {
+    "message": "Attributet `apple-touch-icon-precomposed` är inaktuellt. `apple-touch-icon` är att föredra."
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | title": {
+    "message": "Anger en giltig `apple-touch-icon`"
+  },
+  "lighthouse-core/audits/bootup-time.js | chromeExtensionsWarning": {
+    "message": "Inläsningen av den här sidan påverkas negativt av tillägg i Chrome. Testa att granska sidan i inkognitoläge eller med en Chrome-profil utan tillägg."
+  },
+  "lighthouse-core/audits/bootup-time.js | columnScriptEval": {
+    "message": "Utvärdering av skript"
+  },
+  "lighthouse-core/audits/bootup-time.js | columnScriptParse": {
+    "message": "Skriptanalys"
+  },
+  "lighthouse-core/audits/bootup-time.js | columnTotal": {
+    "message": "Processortid totalt"
+  },
+  "lighthouse-core/audits/bootup-time.js | description": {
+    "message": "Minska tiden det tar att tolka, kompilera och köra JS-kod. Det brukar hjälpa att minska storleken på JS-resurserna som skickas. [Läs mer](https://developers.google.com/web/tools/lighthouse/audits/bootup)."
+  },
+  "lighthouse-core/audits/bootup-time.js | failureTitle": {
+    "message": "Minska körningstiden för JavaScript"
+  },
+  "lighthouse-core/audits/bootup-time.js | title": {
+    "message": "Körningstid för JavaScript"
+  },
+  "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | description": {
+    "message": "Stora GIF-filer är inte ett effektivt sätt att visa animerat innehåll. I stället för GIF kan du använda videor i MPEG4-/WebM-format för animationer och PNG-/WebP-format för statiska bilder. Då minskar antalet byte som skickas via nätverket. [Läs mer](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/replace-animated-gifs-with-video/)"
+  },
+  "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | title": {
+    "message": "Använd videoformat för animationer"
+  },
+  "lighthouse-core/audits/byte-efficiency/offscreen-images.js | description": {
+    "message": "Låt bilder utanför skärmen och dolda bilder läsas in med lat inläsning efter att alla viktiga resurser är inlästa så att tiden till interaktivt tillstånd minskar. [Läs mer](https://developers.google.com/web/tools/lighthouse/audits/offscreen-images)."
+  },
+  "lighthouse-core/audits/byte-efficiency/offscreen-images.js | title": {
+    "message": "Skjut upp inläsningen av bilder som inte visas på skärmen"
+  },
+  "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | description": {
+    "message": "Resurser blockerar sidans första rendering. Infoga nödvändig JS-/CSS-kod direkt på sidan och skjut upp inläsningen av JS-kod/formatmallar som är mindre viktiga. [Läs mer](https://developers.google.com/web/tools/lighthouse/audits/blocking-resources)."
+  },
+  "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | title": {
+    "message": "Ta bort resurser som blockerar renderingen"
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | description": {
+    "message": "Hög nätverksbelastning kostar användarna pengar och har ett starkt samband med lång inläsningstid. [Läs mer](https://developers.google.com/web/tools/lighthouse/audits/network-payloads)."
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | displayValue": {
+    "message": "Storleken totalt var {totalBytes, number, bytes} kB"
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | failureTitle": {
+    "message": "Undvik enorm nätverksbelastning"
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | title": {
+    "message": "Undviker enorm nätverksbelastning"
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-css.js | description": {
+    "message": "Att minifiera CSS-filer kan minska nätverksbelastningen. [Läs mer](https://developers.google.com/web/tools/lighthouse/audits/minify-css)."
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-css.js | title": {
+    "message": "Minifiera CSS"
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | description": {
+    "message": "Att minifiera JavaScript-filer kan minska nätverksbelastningen och tiden det tar att tolka skript. [Läs mer](https://developers.google.com/speed/docs/insights/MinifyResources)."
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | title": {
+    "message": "Minifiera JavaScript"
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | description": {
+    "message": "Ta bort regler som inte används från formatmallar och skjut upp inläsning av CSS som inte används för innehåll ovanför mitten för att minska onödig nätverksaktivitet. [Läs mer](https://developers.google.com/web/tools/lighthouse/audits/unused-css)."
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | title": {
+    "message": "Ta bort oanvänd CSS"
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-javascript.js | description": {
+    "message": "Ta bort JavaScript som inte används så att färre byte skickas via nätverket."
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-javascript.js | title": {
+    "message": "Ta bort JavaScript som inte används"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | description": {
+    "message": "Om filerna cachelagras under längre tid kan upprepade besök på sidan gå snabbare. [Läs mer](https://developers.google.com/web/tools/lighthouse/audits/cache-policy)."
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 resurs hittades}other{# resurser hittades}}"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | failureTitle": {
+    "message": "Skicka statiska tillgångar med en effektiv cachelagringspolicy"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | title": {
+    "message": "Använder en effektiv cachelagringspolicy för statiska tillgångar"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | description": {
+    "message": "Optimerade bilder läses in snabbare och förbrukar mindre mobildata. [Läs mer](https://developers.google.com/web/tools/lighthouse/audits/optimize-images)."
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | title": {
+    "message": "Koda bilder effektivt"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | description": {
+    "message": "Minska mobildataförbrukningen och förbättra inläsningstiden genom att skicka bilder i rätt storlek. [Läs mer](https://developers.google.com/web/tools/lighthouse/audits/oversized-images)."
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | title": {
+    "message": "Använd bilder med rätt storlek"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | description": {
+    "message": "Textresurser bör skickas komprimerade (gzip, deflate eller brotli) så att färre byte skickas via nätverket. [Läs mer](https://developers.google.com/web/tools/lighthouse/audits/text-compression)."
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | title": {
+    "message": "Aktivera textkomprimering"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | description": {
+    "message": "Bildformat som JPEG 2000, JPEG XR och WebP ger ofta bättre komprimering än PNG eller JPEG. Det gör att nedladdningen går snabbare och ger minskad dataförbrukning. [Läs mer](https://developers.google.com/web/tools/lighthouse/audits/webp)."
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | title": {
+    "message": "Skicka bilder i modernare bildformat"
+  },
+  "lighthouse-core/audits/content-width.js | description": {
+    "message": "Om bredden på appens innehåll inte stämmer överens med bredden på visningsområdet kanske inte appen är optimerad för mobilskärmar. [Läs mer](https://developers.google.com/web/tools/lighthouse/audits/content-sized-correctly-for-viewport)."
+  },
+  "lighthouse-core/audits/content-width.js | explanation": {
+    "message": "Visningsområdets storlek på {innerWidth} pixlar stämmer inte överens med fönsterstorleken på {outerWidth} pixlar."
+  },
+  "lighthouse-core/audits/content-width.js | failureTitle": {
+    "message": "Innehållet har inte rätt storlek för visningsområdet"
+  },
+  "lighthouse-core/audits/content-width.js | title": {
+    "message": "Innehållet har rätt storlek för visningsområdet"
+  },
+  "lighthouse-core/audits/critical-request-chains.js | description": {
+    "message": "Orderkedjorna nedan visar vilka resurser som läses in med hög prioritet. Se om du kan förbättra sidinläsningstiden genom att göra kedjorna kortare, minska storleken på resurser som laddas ned eller skjuta upp nedladdningen av onödiga resurser. [Läs mer](https://developers.google.com/web/tools/lighthouse/audits/critical-request-chains)."
+  },
+  "lighthouse-core/audits/critical-request-chains.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 kedja hittades}other{# kedjor hittades}}"
+  },
+  "lighthouse-core/audits/critical-request-chains.js | title": {
+    "message": "Minska antalet steg i viktiga orderkedjor"
+  },
+  "lighthouse-core/audits/deprecations.js | columnDeprecate": {
+    "message": "Utfasning/varning"
+  },
+  "lighthouse-core/audits/deprecations.js | columnLine": {
+    "message": "Rad"
+  },
+  "lighthouse-core/audits/deprecations.js | description": {
+    "message": "Utfasade API:er tas bort från webbläsaren efter hand. [Läs mer](https://web.dev/deprecations)."
+  },
+  "lighthouse-core/audits/deprecations.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 varning hittades}other{# varningar hittades}}"
+  },
+  "lighthouse-core/audits/deprecations.js | failureTitle": {
+    "message": "Utfasade API:er används"
+  },
+  "lighthouse-core/audits/deprecations.js | title": {
+    "message": "Utfasade API:er undviks"
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | description": {
+    "message": "Programmets cacheminne är utfasat. [Läs mer](https://web.dev/appcache-manifest)."
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | displayValue": {
+    "message": "{AppCacheManifest} hittades"
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | failureTitle": {
+    "message": "Använder programmets cacheminne"
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | title": {
+    "message": "Undviker programcache"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | description": {
+    "message": "En doctype förhindrar att webbläsaren byter till quirks-läge. [Läs mer](https://web.dev/doctype)."
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationBadDoctype": {
+    "message": "Doctype-namnet måste vara strängen `html` i gemener"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationNoDoctype": {
+    "message": "Dokument måste innehålla en doctype"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationPublicId": {
+    "message": "publicId förväntades vara en tom sträng"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationSystemId": {
+    "message": "systemId förväntades vara en tom sträng"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | failureTitle": {
+    "message": "Sidan har inte HTML som doctype, vilket aktiverar quirks-läge"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | title": {
+    "message": "Sidan har HTML som doctype"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | columnElement": {
+    "message": "Element"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | columnStatistic": {
+    "message": "Värde"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | columnValue": {
+    "message": "Antal"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | description": {
+    "message": "Webbutvecklare rekommenderar att sidor innehåller mindre än 1500 DOM-element. Det bästa är ett träddjup med mindre än 32 element och högst 60 underordnade/överordnade element. En stor DOM kan öka minnesförbrukningen, förlänga [formatberäkningarna](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations) och producera kostsamma [flödesuppdateringar för layouten](https://developers.google.com/speed/articles/reflow). [Läs mer](https://web.dev/dom-size)."
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 element}other{# element}}"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | failureTitle": {
+    "message": "Undvik ett onödigt stort DOM-träd"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | statisticDOMDepth": {
+    "message": "Största DOM-djup"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | statisticDOMElements": {
+    "message": "Totalt antal DOM-element"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | statisticDOMWidth": {
+    "message": "Högsta antal underordnade element"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | title": {
+    "message": "Undviker ett onödigt stort DOM-träd"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | columnRel": {
+    "message": "Rel"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | columnTarget": {
+    "message": "Mål"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | description": {
+    "message": "Lägg till `rel=\"noopener\"` eller `rel=\"noreferrer\"` i alla externa länkar för att förbättra prestanda och säkerhet. [Läs mer](https://web.dev/external-anchors-use-rel-noopener)."
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | failureTitle": {
+    "message": "Länkar till mål med korsursprung är osäkra"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | title": {
+    "message": "Länkar till mål med korsursprung är säkra"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | warning": {
+    "message": "Det går inte att fastställa målet för ankaret ({anchorHTML}). Det kan vara bra att ta bort target=_blank om det inte används som hyperlänk."
+  },
+  "lighthouse-core/audits/dobetterweb/geolocation-on-start.js | description": {
+    "message": "Användare blir misstänksamma eller förvirrade av webbplatser som ber om åtkomst till deras plats utan sammanhang. Det kan vara bättre att koppla förfrågan till något användaren gör. [Läs mer](https://web.dev/geolocation-on-start)."
+  },
+  "lighthouse-core/audits/dobetterweb/geolocation-on-start.js | failureTitle": {
+    "message": "Begär åtkomst till geografisk plats vid sidinläsning"
+  },
+  "lighthouse-core/audits/dobetterweb/geolocation-on-start.js | title": {
+    "message": "Undviker att begära åtkomst till geografisk plats vid sidinläsning"
+  },
+  "lighthouse-core/audits/dobetterweb/js-libraries.js | columnVersion": {
+    "message": "Version"
+  },
+  "lighthouse-core/audits/dobetterweb/js-libraries.js | description": {
+    "message": "Alla JavaScript-bibliotek på klientsidan har identifierats på den här sidan. [Läs mer](https://web.dev/js-libraries)."
+  },
+  "lighthouse-core/audits/dobetterweb/js-libraries.js | title": {
+    "message": "JavaScript-bibliotek har identifierats"
+  },
+  "lighthouse-core/audits/dobetterweb/no-document-write.js | description": {
+    "message": "För användare med långsam anslutning kan externa skript som infogas dynamiskt via `document.write()` fördröja sidinläsningen med tiotals sekunder. [Läs mer](https://web.dev/no-document-write)."
+  },
+  "lighthouse-core/audits/dobetterweb/no-document-write.js | failureTitle": {
+    "message": "`document.write()` används"
+  },
+  "lighthouse-core/audits/dobetterweb/no-document-write.js | title": {
+    "message": "`document.write()` undviks"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | columnSeverity": {
+    "message": "Högsta allvarlighetsgrad"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | columnVersion": {
+    "message": "Biblioteksversion"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | columnVuln": {
+    "message": "Antal säkerhetsbrister"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | description": {
+    "message": "Vissa skript från tredje part kan innehålla kända säkerhetsproblem som är lätta att identifiera och utnyttja för angripare. [Läs mer](https://web.dev/no-vulnerable-libraries)."
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 säkerhetsbrist har identifierats}other{# säkerhetsbrister har identifierats}}"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | failureTitle": {
+    "message": "Innehåller JavaScript-bibliotek på klientsidan med kända säkerhetsbrister"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | rowSeverityHigh": {
+    "message": "Hög"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | rowSeverityLow": {
+    "message": "Låg"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | rowSeverityMedium": {
+    "message": "Medelstor"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | title": {
+    "message": "Undviker JavaScript-bibliotek med kända säkerhetsproblem på klientsidan"
+  },
+  "lighthouse-core/audits/dobetterweb/notification-on-start.js | description": {
+    "message": "Användare blir misstänksamma eller förvirrade av webbplatser som ber om åtkomst att skicka aviseringar utan sammanhang. Det kan vara bättre att koppla förfrågan till rörelser. [Läs mer](https://web.dev/notification-on-start)."
+  },
+  "lighthouse-core/audits/dobetterweb/notification-on-start.js | failureTitle": {
+    "message": "Begär aviseringsbehörighet vid sidinläsning"
+  },
+  "lighthouse-core/audits/dobetterweb/notification-on-start.js | title": {
+    "message": "Undviker att begära aviseringsbehörighet vid sidinläsning"
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | columnFailingElem": {
+    "message": "Element med fel"
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | description": {
+    "message": "Att förhindra att lösenord klistras in underminerar en bra säkerhetspolicy. [Läs mer](https://web.dev/password-inputs-can-be-pasted-into)."
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | failureTitle": {
+    "message": "Användarna tillåts inte att klistra in i lösenordsfält"
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | title": {
+    "message": "Användarna tillåts klistra in i lösenordsfält"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | columnProtocol": {
+    "message": "Protokoll"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | description": {
+    "message": "HTTP/2 ger många fördelar jämfört med HTTP/1.1, inklusive binära rubriker, multiplexning och server push. [Läs mer](https://web.dev/uses-http2)."
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 begäran visades inte via HTTP/2}other{# begäranden visades inte via HTTP/2}}"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | failureTitle": {
+    "message": "Använder inte HTTP/2 för alla resurser"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | title": {
+    "message": "Använder HTTP/2 för egna resurser"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-passive-event-listeners.js | description": {
+    "message": "Det kan vara bra att märka dina händelselyssnare för tryck och hjul som `passive` för att förbättra sidans rullningsfunktion. [Läs mer](https://web.dev/uses-passive-event-listeners)."
+  },
+  "lighthouse-core/audits/dobetterweb/uses-passive-event-listeners.js | failureTitle": {
+    "message": "Passiva lyssnare används inte för att förbättra rullningsprestanda"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-passive-event-listeners.js | title": {
+    "message": "Passiva lyssnare används för att förbättra rullningsprestanda"
+  },
+  "lighthouse-core/audits/errors-in-console.js | columnDesc": {
+    "message": "Beskrivning"
+  },
+  "lighthouse-core/audits/errors-in-console.js | description": {
+    "message": "Fel som loggats i konsolen indikerar olösta problem. De kan bero på fel i nätverksförfrågningar och andra webbläsarproblem. [Läs mer](https://web.dev/errors-in-console)"
+  },
+  "lighthouse-core/audits/errors-in-console.js | failureTitle": {
+    "message": "Webbläsarfel loggades i konsolen"
+  },
+  "lighthouse-core/audits/errors-in-console.js | title": {
+    "message": "Inga webbläsarfel loggades i konsolen"
+  },
+  "lighthouse-core/audits/font-display.js | description": {
+    "message": "Använd funktionen font-display i CSS så att texten är synlig för användaren medan webbteckensnitten läses in. [Läs mer](https://developers.google.com/web/updates/2016/02/font-display)."
+  },
+  "lighthouse-core/audits/font-display.js | failureTitle": {
+    "message": "Se till att all text förblir synlig medan webbteckensnitten läses in"
+  },
+  "lighthouse-core/audits/font-display.js | title": {
+    "message": "All text förblir synlig medan webbteckensnitten läses in"
+  },
+  "lighthouse-core/audits/font-display.js | undeclaredFontURLWarning": {
+    "message": "Lighthouse kunde inte kontrollera värdet för teckensnittsvisning automatiskt för följande webbadress: {fontURL}."
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | columnActual": {
+    "message": "Bildproportioner (faktiska)"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | columnDisplayed": {
+    "message": "Bildproportioner (visade)"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | description": {
+    "message": "Bildens visningsformat ska matcha de naturliga proportionerna. [Läs mer](https://web.dev/image-aspect-ratio)."
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | failureTitle": {
+    "message": "Visar bilder med felaktiga bildproportioner"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | title": {
+    "message": "Bilder visas med korrekta bildproportioner"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | warningCompute": {
+    "message": "Ogiltig information om bildstorlek {url}"
+  },
+  "lighthouse-core/audits/installable-manifest.js | description": {
+    "message": "Webbläsare kan i förväg uppmana användare att lägga till appen på startskärmen, vilket leder till att de använder den mer. [Läs mer](https://developers.google.com/web/tools/lighthouse/audits/install-prompt)."
+  },
+  "lighthouse-core/audits/installable-manifest.js | failureTitle": {
+    "message": "Webbappens manifest uppfyller inte kraven för installation"
+  },
+  "lighthouse-core/audits/installable-manifest.js | title": {
+    "message": "Webbappens manifest uppfyller kraven för installation"
+  },
+  "lighthouse-core/audits/is-on-https.js | columnInsecureURL": {
+    "message": "Osäker webbadress"
+  },
+  "lighthouse-core/audits/is-on-https.js | description": {
+    "message": "Alla webbplatser ska skyddas med HTTPS, även de som inte hanterar känslig data. HTTPS förhindrar att inkräktare påverkar eller passivt avlyssnar kommunikationen mellan din app och dina användare, och är ett krav för HTTP/2 och många nya API:er för webbplattformar. [Läs mer](https://web.dev/is-on-https)."
+  },
+  "lighthouse-core/audits/is-on-https.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 osäker begäran hittades}other{# osäkra begäranden hittades}}"
+  },
+  "lighthouse-core/audits/is-on-https.js | failureTitle": {
+    "message": "Använder inte HTTPS"
+  },
+  "lighthouse-core/audits/is-on-https.js | title": {
+    "message": "Använder HTTPS"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | description": {
+    "message": "Snabb sidinläsning i mobila nätverk ger en bra upplevelse för mobila användare. [Läs mer](https://developers.google.com/web/tools/lighthouse/audits/fast-3g)."
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | displayValueText": {
+    "message": "Interaktiv vid {timeInMs, number, seconds} s"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | displayValueTextWithOverride": {
+    "message": "Interaktiv i simulerade mobilnätverk på {timeInMs, number, seconds} s"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | explanationLoadSlow": {
+    "message": "Sidan läses in för långsamt och är inte interaktiv inom tio sekunder. Ta en titt på möjligheter och diagnostik i avsnittet Prestanda för att se hur du kan förbättra sidan."
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | failureTitle": {
+    "message": "Sidor läses inte in tillräckligt snabbt i mobila nätverk"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | title": {
+    "message": "Sidan läses in tillräckligt snabbt i mobila nätverk"
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | columnCategory": {
+    "message": "Kategori"
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | description": {
+    "message": "Minska tiden det tar att tolka, kompilera och köra JS-kod. Det brukar hjälpa att minska storleken på JS-resurserna som skickas."
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | failureTitle": {
+    "message": "Minska arbetsbelastningen på modertråden"
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | title": {
+    "message": "Minskar arbetsbelastningen på modertråden"
+  },
+  "lighthouse-core/audits/manual/pwa-cross-browser.js | description": {
+    "message": "Webbplatser ska fungera i alla stora webbläsare för att nå så många användare som möjligt. [Läs mer](https://developers.google.com/web/progressive-web-apps/checklist#site-works-cross-browser)."
+  },
+  "lighthouse-core/audits/manual/pwa-cross-browser.js | title": {
+    "message": "Webbläsaren fungerar i olika webbläsare"
+  },
+  "lighthouse-core/audits/manual/pwa-each-page-has-url.js | description": {
+    "message": "Kontrollera att enskilda sidor går att djuplänka via en webbadress och att webbadresserna är unika för syftet att dela sidorna på sociala medier. [Läs mer](https://developers.google.com/web/progressive-web-apps/checklist#each-page-has-a-url)."
+  },
+  "lighthouse-core/audits/manual/pwa-each-page-has-url.js | title": {
+    "message": "Varje sida har en webbadress"
+  },
+  "lighthouse-core/audits/manual/pwa-page-transitions.js | description": {
+    "message": "Övergångar ska gå snabbt när du trycker i appen, även på långsamma nätverk. Det är avgörande för vad användarna uppfattar som prestanda. [Läs mer](https://developers.google.com/web/progressive-web-apps/checklist#page-transitions-dont-feel-like-they-block-on-the-network)."
+  },
+  "lighthouse-core/audits/manual/pwa-page-transitions.js | title": {
+    "message": "Det ska inte kännas som om övergångar mellan sidor blockeras på nätverket"
+  },
+  "lighthouse-core/audits/metrics/estimated-input-latency.js | description": {
+    "message": "Uppskattad inmatningslatens är en uppskattning av hur lång tid (i millisekunder) det tar innan appen svarar på användarens inmatning under den mest aktiva femsekundersperioden av sidinläsningen. Om latensen är högre än 50 ms kan användarna uppfatta appen som seg. [Läs mer](https://developers.google.com/web/tools/lighthouse/audits/estimated-input-latency)."
+  },
+  "lighthouse-core/audits/metrics/estimated-input-latency.js | title": {
+    "message": "Beräknad inmatningslatens"
+  },
+  "lighthouse-core/audits/metrics/first-contentful-paint.js | description": {
+    "message": "Första innehållsrenderingen anger när den första texten eller bilden ritades upp. [Läs mer](https://developers.google.com/web/tools/lighthouse/audits/first-contentful-paint)."
+  },
+  "lighthouse-core/audits/metrics/first-contentful-paint.js | title": {
+    "message": "Första uppritningen av innehåll"
+  },
+  "lighthouse-core/audits/metrics/first-cpu-idle.js | description": {
+    "message": "Första CPU-avbrottet anger när sidans modertråd först blev inaktiv nog att hantera indata. [Läs mer](https://developers.google.com/web/tools/lighthouse/audits/first-interactive)."
+  },
+  "lighthouse-core/audits/metrics/first-cpu-idle.js | title": {
+    "message": "Första CPU-inaktivitet"
+  },
+  "lighthouse-core/audits/metrics/first-meaningful-paint.js | description": {
+    "message": "Första användbara renderingen anger när sidans primära innehåll blev synligt. [Läs mer](https://developers.google.com/web/tools/lighthouse/audits/first-meaningful-paint)."
+  },
+  "lighthouse-core/audits/metrics/first-meaningful-paint.js | title": {
+    "message": "Första meningsfulla skärmuppritningen"
+  },
+  "lighthouse-core/audits/metrics/interactive.js | description": {
+    "message": "Tiden till interaktivitet är den tid det tar innan sidan är fullständigt interaktiv. [Läs mer](https://developers.google.com/web/tools/lighthouse/audits/consistently-interactive)."
+  },
+  "lighthouse-core/audits/metrics/interactive.js | title": {
+    "message": "Tid till interaktivt tillstånd"
+  },
+  "lighthouse-core/audits/metrics/max-potential-fid.js | description": {
+    "message": "Den högsta potentiella fördröjningen vid första indata som användarna kan få är längden på den längsta uppgiften i millisekunder. [Läs mer](https://developers.google.com/web/updates/2018/05/first-input-delay)."
+  },
+  "lighthouse-core/audits/metrics/max-potential-fid.js | title": {
+    "message": "Högsta potentiella fördröjning till första inmatningen"
+  },
+  "lighthouse-core/audits/metrics/speed-index.js | description": {
+    "message": "Hastighetsindexet visar hur snabbt en sida fylls med synligt innehåll. [Läs mer](https://developers.google.com/web/tools/lighthouse/audits/speed-index)."
+  },
+  "lighthouse-core/audits/metrics/speed-index.js | title": {
+    "message": "Hastighetsindex"
+  },
+  "lighthouse-core/audits/metrics/total-blocking-time.js | description": {
+    "message": "Summan av alla tidsperioder mellan FCP och Tid till interaktivt tillstånd när uppgiftstiden överskred 50 ms, uttryckt i millisekunder."
+  },
+  "lighthouse-core/audits/metrics/total-blocking-time.js | title": {
+    "message": "Total blockeringstid"
+  },
+  "lighthouse-core/audits/network-rtt.js | description": {
+    "message": "Nätverkets RTT-tider (Round Trip Times) har stor inverkan på prestanda. Om RTT-tiden till ett ursprung är för hög tyder det på att servrar närmare användaren skulle kunna förbättra prestanda. [Läs mer](https://hpbn.co/primer-on-latency-and-bandwidth/)."
+  },
+  "lighthouse-core/audits/network-rtt.js | title": {
+    "message": "Nätverkets RTT-tider"
+  },
+  "lighthouse-core/audits/network-server-latency.js | description": {
+    "message": "Serverlatens kan påverka webbprestanda. Om serverlatensen är hög för ett ursprung tyder det på att servern är överbelastad eller har dålig kapacitet. [Läs mer](https://hpbn.co/primer-on-web-performance/#analyzing-the-resource-waterfall)."
+  },
+  "lighthouse-core/audits/network-server-latency.js | title": {
+    "message": "Serverlatens"
+  },
+  "lighthouse-core/audits/offline-start-url.js | description": {
+    "message": "Med en tjänstefunktion kan appen användas under oförutsägbara nätverksförhållanden. [Läs mer](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)."
+  },
+  "lighthouse-core/audits/offline-start-url.js | failureTitle": {
+    "message": "HTTP-statuskoden 200 visas inte när `start_url` är offline"
+  },
+  "lighthouse-core/audits/offline-start-url.js | title": {
+    "message": "HTTP-statuskoden 200 visas när `start_url` är offline."
+  },
+  "lighthouse-core/audits/offline-start-url.js | warningCantStart": {
+    "message": "Lighthouse kunde inte läsa `start_url` i manifestet. Därför antogs det att `start_url` var dokumentets webbadress. Felmeddelande: {manifestWarning}."
+  },
+  "lighthouse-core/audits/performance-budget.js | columnOverBudget": {
+    "message": "Över budget"
+  },
+  "lighthouse-core/audits/performance-budget.js | description": {
+    "message": "Håll antal och storlek för nätverksbegäranden under de mål som anges i den angivna prestandabudgeten. [Läs mer](https://developers.google.com/web/tools/lighthouse/audits/budgets)."
+  },
+  "lighthouse-core/audits/performance-budget.js | requestCountOverBudget": {
+    "message": "{count,plural, =1{1 begäran}other{# begäranden}}"
+  },
+  "lighthouse-core/audits/performance-budget.js | title": {
+    "message": "Prestandabudget"
+  },
+  "lighthouse-core/audits/redirects-http.js | description": {
+    "message": "Om du redan har konfigurerat HTTPS ska du omdirigera all HTTP-trafik till HTTPS för att se till att webbfunktionerna är säkra för alla användare. [Läs mer](https://developers.google.com/web/tools/lighthouse/audits/http-redirects-to-https)."
+  },
+  "lighthouse-core/audits/redirects-http.js | failureTitle": {
+    "message": "Omdirigerar inte HTTP-trafik till HTTPS"
+  },
+  "lighthouse-core/audits/redirects-http.js | title": {
+    "message": "Omdirigerar HTTP-trafik till HTTPS"
+  },
+  "lighthouse-core/audits/redirects.js | description": {
+    "message": "Omdirigeringar medför en ytterligare fördröjning innan sidan kan läsas in. [Läs mer](https://developers.google.com/web/tools/lighthouse/audits/redirects)."
+  },
+  "lighthouse-core/audits/redirects.js | title": {
+    "message": "Undvik upprepade omdirigeringar"
+  },
+  "lighthouse-core/audits/resource-summary.js | description": {
+    "message": "Lägg till en budget.json-fil för att ange budget för kvantitet och storlek på sidresurser. [Läs mer](https://developers.google.com/web/tools/lighthouse/audits/budgets)."
+  },
+  "lighthouse-core/audits/resource-summary.js | displayValue": {
+    "message": "{requestCount,plural, =1{1 begäran • {byteCount, number, bytes} kB}other{# förfrågningar • {byteCount, number, bytes} kB}}"
+  },
+  "lighthouse-core/audits/resource-summary.js | title": {
+    "message": "Begränsa antalet begäranden och storleken på överföringar"
+  },
+  "lighthouse-core/audits/seo/canonical.js | description": {
+    "message": "Kanoniska länkar föreslår vilka webbadresser som ska visas i sökresultat. [Läs mer](https://web.dev/canonical)."
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationConflict": {
+    "message": "Flera webbadresser som står i konflikt ({urlList})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationDifferentDomain": {
+    "message": "Pekar på en annan domän ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationInvalid": {
+    "message": "Ogiltig webbadress ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationPointsElsewhere": {
+    "message": "Pekar på en annan `hreflang`-plats ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationRelative": {
+    "message": "Relativ webbadress ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationRoot": {
+    "message": "Pekar på domänens rotadress (startsidan) i stället för motsvarande sida med innehåll"
+  },
+  "lighthouse-core/audits/seo/canonical.js | failureTitle": {
+    "message": "Dokumentet har ingen giltig länk med `rel=canonical`"
+  },
+  "lighthouse-core/audits/seo/canonical.js | title": {
+    "message": "Dokumentet har ett giltigt `rel=canonical`-värde"
+  },
+  "lighthouse-core/audits/seo/font-size.js | description": {
+    "message": "Teckenstorlekar under 12 pixlar är för små för att kunna läsas och kräver att mobila användare zoomar genom att nypa för att kunna läsa. Försök ha minst 60 % av texten i 12 pixlar eller mer. [Läs mer](https://web.dev/font-size)."
+  },
+  "lighthouse-core/audits/seo/font-size.js | displayValue": {
+    "message": "{decimalProportion, number, extendedPercent} läslig text"
+  },
+  "lighthouse-core/audits/seo/font-size.js | explanationViewport": {
+    "message": "Text är oläslig eftersom det inte finns någon metatagg för visningsområde som är optimerad för mobila skärmar."
+  },
+  "lighthouse-core/audits/seo/font-size.js | explanationWithDisclaimer": {
+    "message": "{decimalProportion, number, extendedPercent} av texten är för liten (baserat på ett urval av {decimalProportionVisited, number, extendedPercent})."
+  },
+  "lighthouse-core/audits/seo/font-size.js | failureTitle": {
+    "message": "Dokumentet har inga läsliga teckenstorlekar"
+  },
+  "lighthouse-core/audits/seo/font-size.js | title": {
+    "message": "Dokumentet har läsliga teckenstorlekar"
+  },
+  "lighthouse-core/audits/seo/hreflang.js | description": {
+    "message": "hreflang-länkar informerar sökmotorer om vilken version av en sida de ska visa i sökresultatet för ett visst språk eller område. [Läs mer](https://web.dev/hreflang)."
+  },
+  "lighthouse-core/audits/seo/hreflang.js | failureTitle": {
+    "message": "Dokumentet har inte ett giltigt `hreflang`-värde"
+  },
+  "lighthouse-core/audits/seo/hreflang.js | title": {
+    "message": "Dokumentet har ett giltigt `hreflang`-värde"
+  },
+  "lighthouse-core/audits/seo/http-status-code.js | description": {
+    "message": "Sidor med HTTP-statuskoder som indikerar att begäran misslyckades kanske inte indexeras korrekt. [Läs mer](https://web.dev/http-status-code)."
+  },
+  "lighthouse-core/audits/seo/http-status-code.js | failureTitle": {
+    "message": "Sidan har en HTTP-statuskod som visar att begäran inte lyckades"
+  },
+  "lighthouse-core/audits/seo/http-status-code.js | title": {
+    "message": "Sidan har en giltig HTTP-statuskod"
+  },
+  "lighthouse-core/audits/seo/is-crawlable.js | description": {
+    "message": "Sökmotorer kan inte inkludera dina sidor i sökresultat om de inte har behörighet att genomsöka dem. [Läs mer](https://web.dev/is-crawable)."
+  },
+  "lighthouse-core/audits/seo/is-crawlable.js | failureTitle": {
+    "message": "Sidan är blockerad för indexering"
+  },
+  "lighthouse-core/audits/seo/is-crawlable.js | title": {
+    "message": "Sidan är inte blockerad från indexering"
+  },
+  "lighthouse-core/audits/seo/link-text.js | description": {
+    "message": "Beskrivande länktext hjälper sökmotorer att förstå innehållet. [Läs mer](https://web.dev/link-text)."
+  },
+  "lighthouse-core/audits/seo/link-text.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 länk hittades}other{# länkar hittades}}"
+  },
+  "lighthouse-core/audits/seo/link-text.js | failureTitle": {
+    "message": "Länkar har inte beskrivande text"
+  },
+  "lighthouse-core/audits/seo/link-text.js | title": {
+    "message": "Länkar har beskrivande text"
+  },
+  "lighthouse-core/audits/seo/manual/structured-data.js | description": {
+    "message": "Kör [testverktyget för strukturerad data](https://search.google.com/structured-data/testing-tool/) och [Structured Data Linter](http://linter.structured-data.org/) för att validera strukturerad data. [Läs mer](https://web.dev/structured-data)."
+  },
+  "lighthouse-core/audits/seo/manual/structured-data.js | title": {
+    "message": "Strukturerad data är giltig"
+  },
+  "lighthouse-core/audits/seo/meta-description.js | description": {
+    "message": "Metabeskrivningar kan inkluderas i sökresultat för att sammanfatta sidinnehållet. [Läs mer](https://web.dev/meta-description)."
+  },
+  "lighthouse-core/audits/seo/meta-description.js | explanation": {
+    "message": "Beskrivningstexten är tom."
+  },
+  "lighthouse-core/audits/seo/meta-description.js | failureTitle": {
+    "message": "Dokumentet har ingen metabeskrivning"
+  },
+  "lighthouse-core/audits/seo/meta-description.js | title": {
+    "message": "Dokumentet har en metabeskrivning"
+  },
+  "lighthouse-core/audits/seo/plugins.js | description": {
+    "message": "Sökmotorer kan inte indexera plugin-innehåll och många enheter begränsar plugin-program eller stöder dem inte. [Läs mer](https://web.dev/plugins)."
+  },
+  "lighthouse-core/audits/seo/plugins.js | failureTitle": {
+    "message": "Dokumentet använder plugin-program"
+  },
+  "lighthouse-core/audits/seo/plugins.js | title": {
+    "message": "Dokumentet undviker plugin-program"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | description": {
+    "message": "Om robots.txt-filen har felaktigt format kan sökrobotarna inte förstå hur du vill att din webbplats ska genomsökas eller indexeras. [Läs mer](https://web.dev/robots-txt)."
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | displayValueHttpBadCode": {
+    "message": "Begäran om robots.txt returnerade HTTP-status: {statusCode}"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | displayValueValidationError": {
+    "message": "{itemCount,plural, =1{Ett fel hittades}other{# fel hittades}}"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | explanation": {
+    "message": "Lighthouse kunde inte ladda ned en robots.txt-fil"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | failureTitle": {
+    "message": "robots.txt är inte giltig"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | title": {
+    "message": "robots.txt är giltig"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | description": {
+    "message": "Interaktiva element som knappar och länkar ska vara tillräckligt stora (48 × 48 pixlar) och ha tillräckligt mycket utrymme runt omkring för att vara lätta att trycka på utan att överlappa andra element. [Läs mer](https://web.dev/tap-targets)."
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | displayValue": {
+    "message": "{decimalProportion, number, percent} av tryckmålen har lämplig storlek"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | explanationViewportMetaNotOptimized": {
+    "message": "Tryckmålen är för små eftersom det inte finns någon metatagg för visningsområde som är optimerad för mobilskärmar"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | failureTitle": {
+    "message": "Tryckmålen har inte lämplig storlek"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | overlappingTargetHeader": {
+    "message": "Överlappande tryckmål"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | tapTargetHeader": {
+    "message": "Tryckmål"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | title": {
+    "message": "Tryckmål har lämplig storlek"
+  },
+  "lighthouse-core/audits/service-worker.js | description": {
+    "message": "Tjänstefunktioner är en teknik som gör det möjligt att använda flera funktioner för progressiva webbappar i appen, till exempel offlineanvändning, pushmeddelanden och att lägga till den på startskärmen. [Läs mer](https://developers.google.com/web/tools/lighthouse/audits/registered-service-worker)."
+  },
+  "lighthouse-core/audits/service-worker.js | explanationBadManifest": {
+    "message": "Sidan styrs av en tjänstefunktion, men `start_url` hittades inte eftersom det inte gick att analysera manifestet som giltigt JSON-format."
+  },
+  "lighthouse-core/audits/service-worker.js | explanationBadStartUrl": {
+    "message": "Den här sidan styrs av en tjänstefunktion, men `start_url` ({startUrl}) är inte inom tjänstefunktionens omfattning ({scopeUrl})"
+  },
+  "lighthouse-core/audits/service-worker.js | explanationNoManifest": {
+    "message": "Sidan styrs av en tjänstefunktion, men `start_url` hittades inte eftersom inget manifest hämtades."
+  },
+  "lighthouse-core/audits/service-worker.js | explanationOutOfScope": {
+    "message": "Ursprunget har en eller flera tjänstefunktioner, men sidan ({pageUrl}) är inte inom omfattningen."
+  },
+  "lighthouse-core/audits/service-worker.js | failureTitle": {
+    "message": "Registrerar inte en tjänstefunktion som styr sidan och `start_url`"
+  },
+  "lighthouse-core/audits/service-worker.js | title": {
+    "message": "Registrerar en tjänstefunktion som styr sidan och `start_url`"
+  },
+  "lighthouse-core/audits/splash-screen.js | description": {
+    "message": "Med hjälp av en välkomstskärm med ett tema som visas när användarna startar appen på startskärmen kan du se till att de får en bra upplevelse. [Läs mer](https://developers.google.com/web/tools/lighthouse/audits/custom-splash-screen)."
+  },
+  "lighthouse-core/audits/splash-screen.js | failureTitle": {
+    "message": "Har inte konfigurerats för en anpassad välkomstskärm"
+  },
+  "lighthouse-core/audits/splash-screen.js | title": {
+    "message": "Konfigurerad för en anpassad välkomstskärm"
+  },
+  "lighthouse-core/audits/themed-omnibox.js | description": {
+    "message": "Det går att ändra temat för webbläsarens adressfält så att det matchar din webbplats. [Läs mer](https://developers.google.com/web/tools/lighthouse/audits/address-bar)."
+  },
+  "lighthouse-core/audits/themed-omnibox.js | failureTitle": {
+    "message": "Anger inte ett färgtema för adressfältet."
+  },
+  "lighthouse-core/audits/themed-omnibox.js | title": {
+    "message": "Anger ett färgtema för adressfältet."
+  },
+  "lighthouse-core/audits/third-party-summary.js | columnBlockingTime": {
+    "message": "Tidsåtgång för blockering av huvudtråd"
+  },
+  "lighthouse-core/audits/third-party-summary.js | columnThirdParty": {
+    "message": "Tredje part"
+  },
+  "lighthouse-core/audits/third-party-summary.js | description": {
+    "message": "Kod från tredje part kan påverka inläsningsprestandan betydligt. Begränsa antalet överflödiga tredjepartsleverantörer och testa att låta tredjepartskod läsas in efter att sidans huvudinnehåll har lästs in helt. [Läs mer](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/loading-third-party-javascript/)."
+  },
+  "lighthouse-core/audits/third-party-summary.js | displayValue": {
+    "message": "Tredjepartskod blockerade huvudtråden i {timeInMs, number, milliseconds} ms"
+  },
+  "lighthouse-core/audits/third-party-summary.js | failureTitle": {
+    "message": "Minska påverkan från tredjepartskod"
+  },
+  "lighthouse-core/audits/third-party-summary.js | title": {
+    "message": "Tredjepartsanvändning"
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | description": {
+    "message": "Mätvärdet Tid till första byte anger när servern svarade. [Läs mer](https://developers.google.com/web/tools/lighthouse/audits/ttfb)."
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | displayValue": {
+    "message": "Rotdokumentet tog {timeInMs, number, milliseconds} ms"
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | failureTitle": {
+    "message": "Minska svarstiderna från servern (tid till första byte)"
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | title": {
+    "message": "Servern svarar snabbt (tid till första byte)"
+  },
+  "lighthouse-core/audits/user-timings.js | columnDuration": {
+    "message": "Varaktighet"
+  },
+  "lighthouse-core/audits/user-timings.js | columnStartTime": {
+    "message": "Starttid"
+  },
+  "lighthouse-core/audits/user-timings.js | columnType": {
+    "message": "Typ"
+  },
+  "lighthouse-core/audits/user-timings.js | description": {
+    "message": "Om du bygger in User Timing API i appen kan du mäta appens prestanda i realtid i samband med viktiga användarupplevelser. [Läs mer](https://developers.google.com/web/tools/lighthouse/audits/user-timing)."
+  },
+  "lighthouse-core/audits/user-timings.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 användartimer}other{# användartimer}}"
+  },
+  "lighthouse-core/audits/user-timings.js | title": {
+    "message": "User Timing API – tidsstämplar och mått"
+  },
+  "lighthouse-core/audits/uses-rel-preconnect.js | crossoriginWarning": {
+    "message": "Ett <link>-element för föranslutning till {securityOrigin} hittades men ignorerades av webbläsaren. Kontrollera att attributet `crossorigin` används korrekt."
+  },
+  "lighthouse-core/audits/uses-rel-preconnect.js | description": {
+    "message": "Lägg till signaler för `preconnect` eller `dns-prefetch` så att viktiga anslutningar till tredje part upprättas tidigt. [Läs mer](https://developers.google.com/web/fundamentals/performance/resource-prioritization#preconnect)."
+  },
+  "lighthouse-core/audits/uses-rel-preconnect.js | title": {
+    "message": "Föranslut till obligatoriska källor"
+  },
+  "lighthouse-core/audits/uses-rel-preload.js | crossoriginWarning": {
+    "message": "En <link> för förinläsning hittades för {preloadURL} men den användes inte av webbläsaren. Kontrollera att attributet `crossorigin` används korrekt."
+  },
+  "lighthouse-core/audits/uses-rel-preload.js | description": {
+    "message": "Det kan vara bra att använda `<link rel=preload>` för att prioritera hämtning av resurser som kommer att begäras senare i sidinläsningen. [Läs mer](https://developers.google.com/web/tools/lighthouse/audits/preload)."
+  },
+  "lighthouse-core/audits/uses-rel-preload.js | title": {
+    "message": "Läs in viktiga resurser i förväg"
+  },
+  "lighthouse-core/audits/viewport.js | description": {
+    "message": "Lägg till en `<meta name=\"viewport\">`-tagg för att optimera appen för mobilskärmar. [Läs mer](https://developers.google.com/web/tools/lighthouse/audits/has-viewport-meta-tag)."
+  },
+  "lighthouse-core/audits/viewport.js | explanationNoTag": {
+    "message": "Ingen `<meta name=\"viewport\">`-tagg hittades"
+  },
+  "lighthouse-core/audits/viewport.js | failureTitle": {
+    "message": "Har inte en `<meta name=\"viewport\">`-tagg med `width` eller `initial-scale`"
+  },
+  "lighthouse-core/audits/viewport.js | title": {
+    "message": "Har en `<meta name=\"viewport\">`-tagg med `width` eller `initial-scale`"
+  },
+  "lighthouse-core/audits/without-javascript.js | description": {
+    "message": "Appen ska visa innehåll när JavaScript är inaktiverat, även om det bara är en varning till användaren om att JavaScript krävs för att använda appen. [Läs mer](https://developers.google.com/web/tools/lighthouse/audits/no-js)."
+  },
+  "lighthouse-core/audits/without-javascript.js | explanation": {
+    "message": "Någon form av innehåll ska renderas för sidans brödtext om dess skript inte är tillgängliga."
+  },
+  "lighthouse-core/audits/without-javascript.js | failureTitle": {
+    "message": "Visar inte reservinnehåll när JavaScript inte är tillgängligt"
+  },
+  "lighthouse-core/audits/without-javascript.js | title": {
+    "message": "Visar innehåll när JavaScript inte är tillgängligt"
+  },
+  "lighthouse-core/audits/works-offline.js | description": {
+    "message": "Om du skapar en progressiv webbapp rekommenderar vi att du använder en tjänstefunktion så att appen kan användas offline. [Läs mer](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)."
+  },
+  "lighthouse-core/audits/works-offline.js | failureTitle": {
+    "message": "HTTP-statuskoden 200 visas inte för den aktuella sidan när den är offline"
+  },
+  "lighthouse-core/audits/works-offline.js | title": {
+    "message": "HTTP-statuskoden 200 visas för den aktuella sidan när den är offline"
+  },
+  "lighthouse-core/audits/works-offline.js | warningNoLoad": {
+    "message": "Sidan kanske inte läses in offline eftersom testwebbadressen ({requested}) omdirigerades till {final}. Testa den andra webbadressen direkt i stället."
+  },
+  "lighthouse-core/config/default-config.js | a11yAriaGroupDescription": {
+    "message": "Det här är förslag på hur ARIA kan förbättras i appen så att den fungerar bättre för den som använder skärmläsare eller andra hjälpmedel."
+  },
+  "lighthouse-core/config/default-config.js | a11yAriaGroupTitle": {
+    "message": "ARIA"
+  },
+  "lighthouse-core/config/default-config.js | a11yAudioVideoGroupDescription": {
+    "message": "Det här är möjligheter att tillhandahålla alternativt innehåll för ljud och video. Detta kan förbättra upplevelsen för användare med nedsatt syn eller hörsel."
+  },
+  "lighthouse-core/config/default-config.js | a11yAudioVideoGroupTitle": {
+    "message": "Ljud och bild"
+  },
+  "lighthouse-core/config/default-config.js | a11yBestPracticesGroupDescription": {
+    "message": "Dessa punkter visar bra metoder för vanliga hjälpmedel."
+  },
+  "lighthouse-core/config/default-config.js | a11yBestPracticesGroupTitle": {
+    "message": "Bästa metoder"
+  },
+  "lighthouse-core/config/default-config.js | a11yCategoryDescription": {
+    "message": "Dessa kontroller visar möjligheter att [förbättra tillgängligheten för din webbapp](https://developers.google.com/web/fundamentals/accessibility). Alla tillgänglighetsproblem kan inte identifieras automatiskt. Du bör därför även testa manuellt."
+  },
+  "lighthouse-core/config/default-config.js | a11yCategoryManualDescription": {
+    "message": "Dessa punkter beskriver områden som inte kan testas automatiskt. Läs mer i vår guide om att [granska tillgängligheten](https://developers.google.com/web/fundamentals/accessibility/how-to-review)."
+  },
+  "lighthouse-core/config/default-config.js | a11yCategoryTitle": {
+    "message": "Tillgänglighet"
+  },
+  "lighthouse-core/config/default-config.js | a11yColorContrastGroupDescription": {
+    "message": "Det här är förslag på hur du kan göra innehållet lättare att läsa."
+  },
+  "lighthouse-core/config/default-config.js | a11yColorContrastGroupTitle": {
+    "message": "Kontrast"
+  },
+  "lighthouse-core/config/default-config.js | a11yLanguageGroupDescription": {
+    "message": "Det här är förslag på hur du kan göra det lättare för användare med olika språkinställningar att tolka innehållet."
+  },
+  "lighthouse-core/config/default-config.js | a11yLanguageGroupTitle": {
+    "message": "Internationalisering och lokalisering"
+  },
+  "lighthouse-core/config/default-config.js | a11yNamesLabelsGroupDescription": {
+    "message": "Det här är förslag på hur du kan göra det tydligare vad olika objekt i appens gränssnitt är. Det kan förenkla för den som använder skärmläsare eller andra hjälpmedel."
+  },
+  "lighthouse-core/config/default-config.js | a11yNamesLabelsGroupTitle": {
+    "message": "Namn och etiketter"
+  },
+  "lighthouse-core/config/default-config.js | a11yNavigationGroupDescription": {
+    "message": "Det här är möjligheter att förbättra tangentbordsnavigeringen i appen."
+  },
+  "lighthouse-core/config/default-config.js | a11yNavigationGroupTitle": {
+    "message": "Navigering"
+  },
+  "lighthouse-core/config/default-config.js | a11yTablesListsVideoGroupDescription": {
+    "message": "Det här är möjligheter att förbättra upplevelsen av att läsa tabeller eller listor med skärmläsare eller andra hjälpmedel."
+  },
+  "lighthouse-core/config/default-config.js | a11yTablesListsVideoGroupTitle": {
+    "message": "Tabeller och listor"
+  },
+  "lighthouse-core/config/default-config.js | bestPracticesCategoryTitle": {
+    "message": "Bästa metoder"
+  },
+  "lighthouse-core/config/default-config.js | budgetsGroupDescription": {
+    "message": "Prestandabudget anger standard för webbplatsens prestanda."
+  },
+  "lighthouse-core/config/default-config.js | budgetsGroupTitle": {
+    "message": "Budgetar"
+  },
+  "lighthouse-core/config/default-config.js | diagnosticsGroupDescription": {
+    "message": "Mer information om appens prestanda. Värdena påverkar inte prestandapoängen [direkt](https://github.com/GoogleChrome/lighthouse/blob/d2ec9ffbb21de9ad1a0f86ed24575eda32c796f0/docs/scoring.md#how-are-the-scores-weighted)."
+  },
+  "lighthouse-core/config/default-config.js | diagnosticsGroupTitle": {
+    "message": "Diagnostik"
+  },
+  "lighthouse-core/config/default-config.js | firstPaintImprovementsGroupDescription": {
+    "message": "Den viktigaste delen av sidans prestanda är hur snabbt pixlarna renderas på skärmen. Viktiga mätvärden: Första uppritningen av innehåll, Första meningsfulla skärmuppritningen"
+  },
+  "lighthouse-core/config/default-config.js | firstPaintImprovementsGroupTitle": {
+    "message": "Förbättringar av första skärmuppritningen"
+  },
+  "lighthouse-core/config/default-config.js | loadOpportunitiesGroupDescription": {
+    "message": "Dessa förslag kan hjälpa sidan att läsas in snabbare. De påverkar inte prestandavärdet [direkt](https://github.com/GoogleChrome/lighthouse/blob/d2ec9ffbb21de9ad1a0f86ed24575eda32c796f0/docs/scoring.md#how-are-the-scores-weighted)."
+  },
+  "lighthouse-core/config/default-config.js | loadOpportunitiesGroupTitle": {
+    "message": "Möjligheter"
+  },
+  "lighthouse-core/config/default-config.js | metricGroupTitle": {
+    "message": "Mätvärden"
+  },
+  "lighthouse-core/config/default-config.js | overallImprovementsGroupDescription": {
+    "message": "Förbättra inläsningstiden överlag så att sidan upplevs som responsiv och blir klar att använda så snabbt som möjligt. Viktiga mätvärden: Tid till interaktivt tillstånd, Hastighetsindex"
+  },
+  "lighthouse-core/config/default-config.js | overallImprovementsGroupTitle": {
+    "message": "Övergripande förbättringar"
+  },
+  "lighthouse-core/config/default-config.js | performanceCategoryTitle": {
+    "message": "Prestanda"
+  },
+  "lighthouse-core/config/default-config.js | pwaCategoryDescription": {
+    "message": "Med dessa kontroller verifieras att webbplatsen är en progressiv webbapp. [Läs mer](https://developers.google.com/web/progressive-web-apps/checklist)."
+  },
+  "lighthouse-core/config/default-config.js | pwaCategoryManualDescription": {
+    "message": "Dessa kontroller krävs enligt [checklistan för progressiva webbappar](https://developers.google.com/web/progressive-web-apps/checklist) som används som baslinje, men de kontrolleras inte automatiskt av Lighthouse. De påverkar inte resultatet, men det är viktigt att du verifierar dem manuellt."
+  },
+  "lighthouse-core/config/default-config.js | pwaCategoryTitle": {
+    "message": "Progressiv webbapp"
+  },
+  "lighthouse-core/config/default-config.js | pwaFastReliableGroupTitle": {
+    "message": "Snabb och pålitlig"
+  },
+  "lighthouse-core/config/default-config.js | pwaInstallableGroupTitle": {
+    "message": "Kan installeras"
+  },
+  "lighthouse-core/config/default-config.js | pwaOptimizedGroupTitle": {
+    "message": "Optimerad för progressiv webbapp"
+  },
+  "lighthouse-core/config/default-config.js | seoCategoryDescription": {
+    "message": "Dessa kontroller ser till att din sida är optimerad för rankning i sökmotorresultat. Det finns fler faktorer som Lighthouse inte kontrollerar som kan påverka rankningen i sökresultat. [Läs mer](https://support.google.com/webmasters/answer/35769)."
+  },
+  "lighthouse-core/config/default-config.js | seoCategoryManualDescription": {
+    "message": "Kontrollera att fler av de bästa metoderna för sökmotoroptimering följs på din webbplats genom att köra dessa extra valideringar."
+  },
+  "lighthouse-core/config/default-config.js | seoCategoryTitle": {
+    "message": "SEO"
+  },
+  "lighthouse-core/config/default-config.js | seoContentGroupDescription": {
+    "message": "Formatera HTML-koden på ett sätt som gör det enklare för sökrobotar att tolka appens innehåll."
+  },
+  "lighthouse-core/config/default-config.js | seoContentGroupTitle": {
+    "message": "Bästa metoder för innehåll"
+  },
+  "lighthouse-core/config/default-config.js | seoCrawlingGroupDescription": {
+    "message": "Du måste ge sökrobotar tillgång till appen om den ska kunna visas i sökresultaten."
+  },
+  "lighthouse-core/config/default-config.js | seoCrawlingGroupTitle": {
+    "message": "Genomsökning och indexering"
+  },
+  "lighthouse-core/config/default-config.js | seoMobileGroupDescription": {
+    "message": "Gör sidorna mobilanpassade så att användarna kan läsa dem utan att behöva nypa eller zooma in. [Läs mer](https://developers.google.com/search/mobile-sites/)."
+  },
+  "lighthouse-core/config/default-config.js | seoMobileGroupTitle": {
+    "message": "Mobilanpassad"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnCacheTTL": {
+    "message": "Lagringstid i cacheminnet"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnLocation": {
+    "message": "Plats"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnName": {
+    "message": "Namn"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnRequests": {
+    "message": "Begäranden"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnResourceType": {
+    "message": "Resurstyp"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnSize": {
+    "message": "Storlek"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnTimeSpent": {
+    "message": "Tid som använts"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnTransferSize": {
+    "message": "Överföringsstorlek"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnURL": {
+    "message": "Webbadress"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnWastedBytes": {
+    "message": "Möjlig besparing"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnWastedMs": {
+    "message": "Möjlig besparing"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | displayValueByteSavings": {
+    "message": "Möjlig databesparing: {wastedBytes, number, bytes} kB"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | displayValueMsSavings": {
+    "message": "Möjlig tidsbesparing: {wastedMs, number, milliseconds} ms"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | documentResourceType": {
+    "message": "Dokument"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | fontResourceType": {
+    "message": "Teckensnitt"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | imageResourceType": {
+    "message": "Bild"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | mediaResourceType": {
+    "message": "Media"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | ms": {
+    "message": "{timeInMs, number, milliseconds} ms"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | otherResourceType": {
+    "message": "Annat"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | scriptResourceType": {
+    "message": "Skript"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | seconds": {
+    "message": "{timeInMs, number, seconds} s"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | stylesheetResourceType": {
+    "message": "Formatmall"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | thirdPartyResourceType": {
+    "message": "Tredje part"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | totalResourceType": {
+    "message": "Totalt"
+  },
+  "lighthouse-core/lib/lh-error.js | badTraceRecording": {
+    "message": "Ett fel uppstod när spårningen skulle registreras för sidinläsningen. Kör Lighthouse igen. ({errorCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | criTimeout": {
+    "message": "Tidsgränsen överskreds under väntan på den första anslutningen till felsökningsprotokollet."
+  },
+  "lighthouse-core/lib/lh-error.js | didntCollectScreenshots": {
+    "message": "Inga skärmdumpar togs i Chrome medan sidan lästes in. Kontrollera att det finns synligt innehåll på sidan och kör Lighthouse igen. ({errorCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | dnsFailure": {
+    "message": "Uppslagningen av den angivna domänen misslyckades på DNS-servern."
+  },
+  "lighthouse-core/lib/lh-error.js | erroredRequiredArtifact": {
+    "message": "En obligatorisk {artifactName}-insamlare påträffade ett fel: {errorMessage}"
+  },
+  "lighthouse-core/lib/lh-error.js | internalChromeError": {
+    "message": "Ett internt fel har uppstått i Chrome. Starta om Chrome och testa att köra Lighthouse igen."
+  },
+  "lighthouse-core/lib/lh-error.js | missingRequiredArtifact": {
+    "message": "En {artifactName}-samlare som krävs kördes inte."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailed": {
+    "message": "Det gick inte att läsa in den begärda sidan i Lighthouse. Kontrollera att du testar rätt webbadress och att servern svarar korrekt."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedHung": {
+    "message": "Det gick inte att läsa in den begärda webbadressen med Lighthouse eftersom sidan slutade svara."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedInsecure": {
+    "message": "Den webbadress du angav har inget giltigt säkerhetscertifikat. {securityMessages}"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedInterstitial": {
+    "message": "Chrome förhindrade sidhämtning med en mellansidesannons. Kontrollera att du testar rätt webbadress och att servern svarar korrekt."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedWithDetails": {
+    "message": "Det gick inte att läsa in den begärda sidan i Lighthouse. Kontrollera att du testar rätt webbadress och att servern svarar korrekt. (Mer information: {errorDetails})"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedWithStatusCode": {
+    "message": "Det gick inte att läsa in den begärda sidan i Lighthouse. Kontrollera att du testar rätt webbadress och att servern svarar korrekt. (Statuskod: {statusCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadTookTooLong": {
+    "message": "Det tog för lång tid att läsa in sidan. Minska sidans inläsningstid genom att följa förslagen i rapporten och kör sedan Lighthouse igen. ({errorCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | protocolTimeout": {
+    "message": "Den angivna väntetiden för svar med DevTools-protokollet har överskridits. (Metod: {protocolMethod})"
+  },
+  "lighthouse-core/lib/lh-error.js | requestContentTimeout": {
+    "message": "Den angivna tiden för att hämta resurser har överskridits"
+  },
+  "lighthouse-core/lib/lh-error.js | urlInvalid": {
+    "message": "Den angivna webbadressen verkar vara ogiltig."
+  },
+  "lighthouse-core/report/html/renderer/util.js | auditGroupExpandTooltip": {
+    "message": "Visa granskningar"
+  },
+  "lighthouse-core/report/html/renderer/util.js | crcInitialNavigation": {
+    "message": "Första navigering"
+  },
+  "lighthouse-core/report/html/renderer/util.js | crcLongestDurationLabel": {
+    "message": "Högsta latens för kritisk kedja:"
+  },
+  "lighthouse-core/report/html/renderer/util.js | errorLabel": {
+    "message": "Fel."
+  },
+  "lighthouse-core/report/html/renderer/util.js | errorMissingAuditInfo": {
+    "message": "Rapportfel: ingen granskningsinformation"
+  },
+  "lighthouse-core/report/html/renderer/util.js | labDataTitle": {
+    "message": "Labbdata"
+  },
+  "lighthouse-core/report/html/renderer/util.js | lsPerformanceCategoryDescription": {
+    "message": "Analys med [Lighthouse](https://developers.google.com/web/tools/lighthouse/) av den aktuella sidan i ett emulerat mobilnätverk. Värdena är uppskattningar och kan variera."
+  },
+  "lighthouse-core/report/html/renderer/util.js | manualAuditsGroupTitle": {
+    "message": "Fler saker att kolla manuellt"
+  },
+  "lighthouse-core/report/html/renderer/util.js | notApplicableAuditsGroupTitle": {
+    "message": "Ej tillämpligt"
+  },
+  "lighthouse-core/report/html/renderer/util.js | opportunityResourceColumnLabel": {
+    "message": "Möjlighet"
+  },
+  "lighthouse-core/report/html/renderer/util.js | opportunitySavingsColumnLabel": {
+    "message": "Uppskattad tidsbesparing"
+  },
+  "lighthouse-core/report/html/renderer/util.js | passedAuditsGroupTitle": {
+    "message": "Godkända granskningar"
+  },
+  "lighthouse-core/report/html/renderer/util.js | snippetCollapseButtonLabel": {
+    "message": "Komprimera utdrag"
+  },
+  "lighthouse-core/report/html/renderer/util.js | snippetExpandButtonLabel": {
+    "message": "Utöka utdrag"
+  },
+  "lighthouse-core/report/html/renderer/util.js | thirdPartyResourcesLabel": {
+    "message": "Visa resurser från tredje part"
+  },
+  "lighthouse-core/report/html/renderer/util.js | toplevelWarningsMessage": {
+    "message": "Problem uppstod med den här körningen av Lighthouse."
+  },
+  "lighthouse-core/report/html/renderer/util.js | varianceDisclaimer": {
+    "message": "Värdena är uppskattningar och kan variera. Prestandapoängen [baseras enbart på dessa mätvärden](https://github.com/GoogleChrome/lighthouse/blob/d2ec9ffbb21de9ad1a0f86ed24575eda32c796f0/docs/scoring.md#how-are-the-scores-weighted)."
+  },
+  "lighthouse-core/report/html/renderer/util.js | warningAuditsGroupTitle": {
+    "message": "Godkänd i granskningarna men med varningar"
+  },
+  "lighthouse-core/report/html/renderer/util.js | warningHeader": {
+    "message": "Varningar: "
+  },
+  "stack-packs/packs/wordpress.js | efficient_animated_content": {
+    "message": "Ladda upp GIF-filen till en tjänst som kan göra den tillgänglig för inbäddning som HTML5-video."
+  },
+  "stack-packs/packs/wordpress.js | offscreen_images": {
+    "message": "Installera en [WordPress-plugin för lat inläsning](https://wordpress.org/plugins/search/lazy+load/) som ger möjlighet att skjuta upp inläsningen av bilder som inte visas på skärmen, eller byt till ett tema som har den funktionen. Du kan även använda [AMP-pluginmodulen](https://wordpress.org/plugins/amp/)."
+  },
+  "stack-packs/packs/wordpress.js | render_blocking_resources": {
+    "message": "Det finns ett antal pluginmoduler för WordPress som kan hjälpa dig att [lägga till kritiska tillgångar direkt på sidan](https://wordpress.org/plugins/search/critical+css/) eller [skjuta upp inläsningen av mindre viktiga resurser](https://wordpress.org/plugins/search/defer+css+javascript/). Tänk på att optimeringarna som dessa pluginmoduler gör kan leda till att funktioner i teman eller andra pluginmoduler slutar fungera, så du kan behöva ändra i koden."
+  },
+  "stack-packs/packs/wordpress.js | time_to_first_byte": {
+    "message": "Serverns svarstider påverkas av teman, pluginmoduler och serverns prestanda. Du kan använda ett mer optimerat tema, välja en optimeringsplugin och/eller uppgradera servern."
+  },
+  "stack-packs/packs/wordpress.js | total_byte_weight": {
+    "message": "Du kan visa utdrag i inläggslistan (t.ex. via en more-tagg), minska antalet inlägg på sidan, dela upp långa inlägg på flera sidor eller använda en plugin som läser in kommentarer med lat inläsning."
+  },
+  "stack-packs/packs/wordpress.js | unminified_css": {
+    "message": "Det finns ett antal [pluginmoduler för WordPress](https://wordpress.org/plugins/search/minify+css/) som kan göra webbplatsen snabbare genom att sammanfoga, minifiera och komprimera skript. Du kan också göra minifieringen direkt i konstruktionsfasen om möjligt."
+  },
+  "stack-packs/packs/wordpress.js | unminified_javascript": {
+    "message": "Ett antal [pluginmoduler för WordPress](https://wordpress.org/plugins/search/minify+javascript/) kan göra webbplatsen snabbare genom att sammanfoga, minifiera och komprimera skript. Du kan också göra minifieringen direkt i konstruktionsfasen om möjligt."
+  },
+  "stack-packs/packs/wordpress.js | unused_css_rules": {
+    "message": "Du kan minska antalet [WordPress-pluginmoduler](https://wordpress.org/plugins/) som läser in CSS som inte används på sidan, eller byta ut dem. Testa fliken för [kodtäckning](https://developers.google.com/web/updates/2017/04/devtools-release-notes#coverage) i Chromes utvecklarverktyg om du vill se vilka pluginmoduler som lägger till överflödig CSS. Du ser på CSS-formatmallens webbadress vilket tema eller vilken plugin som koden kommer från. Titta efter pluginmoduler med många CSS-formatmallar på listan där en stor del av stapeln är röd. En plugin ska bara ställa en formatmall i kö för inläsning om den faktiskt används på sidan."
+  },
+  "stack-packs/packs/wordpress.js | unused_javascript": {
+    "message": "Du kan minska antalet [WordPress-pluginmoduler](https://wordpress.org/plugins/) som läser in JavaScript som inte används på sidan, eller byta ut dem. Testa fliken för [kodtäckning](https://developers.google.com/web/updates/2017/04/devtools-release-notes#coverage) i Chromes utvecklarverktyg om du vill se vilka pluginmoduler som lägger till överflödig JS. Du ser på skriptets webbadress vilket tema eller vilken plugin som koden kommer från. Titta efter pluginmoduler med många skript på listan där en stor del av stapeln är röd. En plugin ska bara ställa ett skript i kö för inläsning om det faktiskt används på sidan."
+  },
+  "stack-packs/packs/wordpress.js | uses_long_cache_ttl": {
+    "message": "Läs mer om [cachelagring i webbläsaren och WordPress](https://codex.wordpress.org/WordPress_Optimization#Browser_Caching)."
+  },
+  "stack-packs/packs/wordpress.js | uses_optimized_images": {
+    "message": "Du kan använda en [WordPress-plugin för bildoptimering](https://wordpress.org/plugins/search/optimize+images/) som komprimerar dina bilder utan att göra avkall på kvaliteten."
+  },
+  "stack-packs/packs/wordpress.js | uses_responsive_images": {
+    "message": "Säkerställ att de bildstorlekar som krävs finns tillgängliga genom att ladda upp bilderna direkt via [mediebiblioteket](https://codex.wordpress.org/Media_Library_Screen) och infoga dem sedan från mediebiblioteket eller med bildwidgeten, så att de optimala bildstorlekarna används (även för brytpunkterna för responsiv design). Undvik att använda `Full Size`-bilder såvida de inte har mått som passar där bilderna ska användas. [Läs mer](https://codex.wordpress.org/Inserting_Images_into_Posts_and_Pages#Image_Size)."
+  },
+  "stack-packs/packs/wordpress.js | uses_text_compression": {
+    "message": "Du kan aktivera textkomprimering i webbserverns konfiguration."
+  },
+  "stack-packs/packs/wordpress.js | uses_webp_images": {
+    "message": "Det kan vara bra att använda en [plugin](https://wordpress.org/plugins/search/convert+webp/) eller tjänst som automatiskt konverterar uppladdade bilder till optimalt format."
+  }
+}
diff --git a/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/ta.json b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/ta.json
new file mode 100644
index 0000000..e20bd6f
--- /dev/null
+++ b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/ta.json
@@ -0,0 +1,1541 @@
+{
+  "lighthouse-core/audits/accessibility/accesskeys.js | description": {
+    "message": "பக்கத்தின் ஏதேனும் ஒரு பகுதிக்கு விரைவாகச் செல்ல அணுகல் விசைகளைப் பயனர்கள் பயன்படுத்தலாம். சரியாகச் செல்வதற்கு, ஒவ்வொரு அணுகல் விசையும் தனித்துவமானதாக இருக்க வேண்டும். [மேலும் அறிக](https://web.dev/accesskeys/)."
+  },
+  "lighthouse-core/audits/accessibility/accesskeys.js | failureTitle": {
+    "message": "`[accesskey]` மதிப்புகள் பிரத்தியேகமானவையாக இல்லை"
+  },
+  "lighthouse-core/audits/accessibility/accesskeys.js | title": {
+    "message": "`[accesskey]` மதிப்புகள் தனித்துவமாக உள்ளன"
+  },
+  "lighthouse-core/audits/accessibility/aria-allowed-attr.js | description": {
+    "message": "ஒவ்வொரு ARIA `role` நியமனமும் `aria-*` பண்புக்கூறுகளின் குறிப்பிட்ட துணைத்தொகுப்பை ஆதரிக்கும். பொருந்தாதபட்சத்தில் `aria-*` பண்புக்கூறுகள் செல்லுபடியாகாதவையாகும். [மேலும் அறிக](https://web.dev/aria-allowed-attr/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-allowed-attr.js | failureTitle": {
+    "message": "`[aria-*]` பண்புக்கூறுகள் அவற்றின் பங்களிப்புகளுடன் பொருந்தவில்லை"
+  },
+  "lighthouse-core/audits/accessibility/aria-allowed-attr.js | title": {
+    "message": "`[aria-*]` பண்புக்கூறுகள் அவற்றின் பங்களிப்புகளுடன் பொருந்துகின்றன"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-attr.js | description": {
+    "message": "சில ARIA பங்களிப்புகளில் ஸ்க்ரீன் ரீடர்களுக்கு உறுப்பின் நிலையை விவரிக்கத் தேவையான பண்புக்கூறுகள் உள்ளன. [மேலும் அறிக](https://web.dev/aria-required-attr/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-required-attr.js | failureTitle": {
+    "message": "`[role]`கள் தேவையான அனைத்து `[aria-*]` பண்புக்கூறுகளையும் கொண்டிருக்கவில்லை"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-attr.js | title": {
+    "message": "தேவையான அனைத்து `[aria-*]` பண்புக்கூறுகளும் `[role]`களில் உள்ளன"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-children.js | description": {
+    "message": "சில ARIA முதல்நிலைப் பங்களிப்புகள், அவற்றுக்கான அணுகல்தன்மை செயல்பாடுகளை செய்ய, குறிப்பிட்ட உபநிலைப் பங்களிப்புகளைக் கொண்டிருக்க வேண்டும். [மேலும் அறிக](https://web.dev/aria-required-children/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-required-children.js | failureTitle": {
+    "message": "குறிப்பிட்ட உபநிலை `[role]`கள் தேவைப்படுகின்ற `[role]` உறுப்புகள் விடுபட்டுள்ளன."
+  },
+  "lighthouse-core/audits/accessibility/aria-required-children.js | title": {
+    "message": "குறிப்பிட்ட உபநிலை `[role]`களுக்குத் தேவையான உறுப்புகளுடன் இருக்கும் `[role]`கள் இருக்கின்றன"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-parent.js | description": {
+    "message": "சில ARIA உபநிலைப் பங்களிப்புகள் அவற்றுக்கான அணுகல்தன்மை செயல்பாடுகளை சரியாக செய்ய, குறிப்பிட்ட முதல்நிலைப் பங்களிப்புகளில் இருக்க வேண்டும். [மேலும் அறிக](https://web.dev/aria-required-parent/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-required-parent.js | failureTitle": {
+    "message": "`[role]`கள் அவற்றுக்குத் தேவையான முதல்நிலை உறுப்புக்குள் இல்லை"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-parent.js | title": {
+    "message": "`[role]`கள் அவற்றுக்குத் தேவையான முதல்நிலை உறுப்புகளுக்குள் உள்ளன"
+  },
+  "lighthouse-core/audits/accessibility/aria-roles.js | description": {
+    "message": "ARIA பங்களிப்புகள் தங்களுக்கான அணுகல்தன்மை செயல்பாடுகளை செய்ய அவற்றில் செல்லுபடியாகும் மதிப்புகள் இருக்க வேண்டும். [மேலும் அறிக](https://web.dev/aria-roles/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-roles.js | failureTitle": {
+    "message": "`[role]` செல்லுபடியாகாத மதிப்புகளைக் கொண்டுள்ளன"
+  },
+  "lighthouse-core/audits/accessibility/aria-roles.js | title": {
+    "message": "`[role]` செல்லுபடியாகும் மதிப்புகளைக் கொண்டுள்ளன"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr-value.js | description": {
+    "message": "செல்லுபடியாகாத மதிப்புகள் உள்ள ARIA பண்புக்கூறுகளை ஸ்க்ரீன் ரீடர்கள் போன்ற உதவிகரமான தொழில்நுட்பங்களால் புரிந்துகொள்ள இயலாது. [மேலும் அறிக](https://web.dev/aria-valid-attr-value/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr-value.js | failureTitle": {
+    "message": "`[aria-*]` பண்புக்கூறுகள் செல்லுபடியாகும் மதிப்புகளைக் கொண்டிருக்கவில்லை"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr-value.js | title": {
+    "message": "`[aria-*]` பண்புக்கூறுகள் செல்லுபடியாகும் மதிப்புகளைக் கொண்டுள்ளன"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr.js | description": {
+    "message": "செல்லுபடியாகாத பெயர்கள் உள்ள ARIA பண்புக்கூறுகளை ஸ்க்ரீன் ரீடர்கள் போன்ற உதவிகரமான தொழில்நுட்பங்களால் புரிந்துகொள்ள இயலாது. [மேலும் அறிக](https://web.dev/aria-valid-attr/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr.js | failureTitle": {
+    "message": "`[aria-*]` பண்புக்கூறுகள் செல்லுபடியாகாத மதிப்புகளைக் கொண்டுள்ளன அல்லது தவறாக உள்ளிடப்பட்டுள்ளன"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr.js | title": {
+    "message": "`[aria-*]` பண்புக்கூறுகள் செல்லுபடியாகும் மதிப்புகளைக் கொண்டுள்ளன, மேலும் அவை சரியாக உள்ளிடப்பட்டுள்ளன"
+  },
+  "lighthouse-core/audits/accessibility/audio-caption.js | description": {
+    "message": "காது கேளாதோர், செவித்திறன் குறைவானவர்கள் வசதிக்காக யார் என்ன பேசுகிறார்கள் என்பதையும் பேச்சல்லாத பிற தகவல்கள் போன்ற முக்கியமான தகவல்களையும் வழங்குவதன் மூலம் ஆடியோ உறுப்புகளைப் பயனுள்ளதாக்க தலைப்புகள் உதவுகின்றன. [மேலும் அறிக](https://web.dev/audio-caption/)."
+  },
+  "lighthouse-core/audits/accessibility/audio-caption.js | failureTitle": {
+    "message": "`<audio>` உறுப்புகளில் `[kind=\"captions\"]` உடன் இருக்கும்`<track>` உறுப்பு ஒன்று விடுபட்டுள்ளது."
+  },
+  "lighthouse-core/audits/accessibility/audio-caption.js | title": {
+    "message": "`<audio>` உறுப்புகளில் `[kind=\"captions\"]`ஐக் கொண்டுள்ள`<track>` உறுப்பு உள்ளது"
+  },
+  "lighthouse-core/audits/accessibility/axe-audit.js | failingElementsHeader": {
+    "message": "தோல்வியுற்ற உறுப்புகள்"
+  },
+  "lighthouse-core/audits/accessibility/button-name.js | description": {
+    "message": "ஒரு பட்டனுக்குத் தெளிவான பெயர் இல்லையெனில் ஸ்க்ரீன் ரீடர்கள் அதை \"பட்டன்\" என அறிவிக்கும், இது ஸ்க்ரீன் ரீடர்களைப் பயன்படுத்தும் பயனர்களுக்கு உதவியாக இருக்காது. [மேலும் அறிக](https://web.dev/button-name/)."
+  },
+  "lighthouse-core/audits/accessibility/button-name.js | failureTitle": {
+    "message": "பட்டன்களுக்குத் தெளிவான பெயர் இல்லை"
+  },
+  "lighthouse-core/audits/accessibility/button-name.js | title": {
+    "message": "பட்டன்களுக்கு ஸ்க்ரீன் ரீடர்களால் படிக்கக்கூடிய பெயர்கள் உள்ளன"
+  },
+  "lighthouse-core/audits/accessibility/bypass.js | description": {
+    "message": "திரும்பத்திரும்ப வரும் உள்ளடக்கத்தை மீறி செல்லும் வழிகளை சேர்த்தால், பக்கத்தைக் கீபோர்டுப் பயனர்கள் மேலும் திறனுள்ள வகையில் கையாள முடியும். [மேலும் அறிக](https://web.dev/bypass/)."
+  },
+  "lighthouse-core/audits/accessibility/bypass.js | failureTitle": {
+    "message": "பக்கத்தில் தலைப்பு, தவிர்ப்பு இணைப்பு அல்லது இட அடையாள மண்டலம் இல்லை"
+  },
+  "lighthouse-core/audits/accessibility/bypass.js | title": {
+    "message": "பக்கத்தில் தலைப்பு, தவிர்ப்பு இணைப்பு அல்லது இட அடையாள மண்டலம் உள்ளது"
+  },
+  "lighthouse-core/audits/accessibility/color-contrast.js | description": {
+    "message": "பல பயனர்களால் குறைவான ஒளி மாறுபாடுள்ள உரையைப் படிக்க இயலாது அல்லது கடினமாக இருக்கும். [மேலும் அறிக](https://web.dev/color-contrast/)."
+  },
+  "lighthouse-core/audits/accessibility/color-contrast.js | failureTitle": {
+    "message": "பின்னணி, முன்னணி நிறங்களுக்குப் போதுமான ஒளி மாறுபாடு விகிதம் இல்லை."
+  },
+  "lighthouse-core/audits/accessibility/color-contrast.js | title": {
+    "message": "பின்னணி, முன்னணி நிறங்கள் போதுமான ஒளி மாறுபாட்டு விகிதத்தைக் கொண்டுள்ளன"
+  },
+  "lighthouse-core/audits/accessibility/definition-list.js | description": {
+    "message": "வரையறைப் பட்டியல்கள் சரியாகக் குறிக்கப்படவில்லை எனில் ஸ்க்ரீன் ரீடர்கள் குழப்பமான அல்லது துல்லியமற்ற வெளியீட்டைத் தரக்கூடும். [மேலும் அறிக](https://web.dev/definition-list/)."
+  },
+  "lighthouse-core/audits/accessibility/definition-list.js | failureTitle": {
+    "message": "சரியாக வரிசைப்படுத்தப்பட்ட `<dt>`, `<dd>` குழுக்கள், `<script>` அல்லது `<template>` உறுப்புகள் மட்டுமல்லாது வேறு வகைகளையும் `<dl>` கொண்டுள்ளது."
+  },
+  "lighthouse-core/audits/accessibility/definition-list.js | title": {
+    "message": "`<dl>`கள் முறையாக வரிசைப்படுத்தப்பட்ட `<dt>`, `<dd>` குழுக்களையும் `<script>` அல்லது `<template>` உறுப்புகளையும் மட்டுமே கொண்டிருக்கும்."
+  },
+  "lighthouse-core/audits/accessibility/dlitem.js | description": {
+    "message": "விளக்கப்பட்டியலில் உள்ளவற்றை (`<dt>`,`<dd>`) ஸ்க்ரீன் ரீடர்கள் சரியாகப் படிக்க அவை ஒரு முதல்நிலை `<dl>` உறுப்பில் சேர்க்கப்பட்டிருக்க வேண்டும். [மேலும் அறிக](https://web.dev/dlitem/)."
+  },
+  "lighthouse-core/audits/accessibility/dlitem.js | failureTitle": {
+    "message": "விளக்கப்பட்டியலில் உள்ளவை`<dl>` உறுப்புகளில் சேர்க்கப்படவில்லை"
+  },
+  "lighthouse-core/audits/accessibility/dlitem.js | title": {
+    "message": "விளக்கப் பட்டியலில் உள்ளவை`<dl>` உறுப்புகளில் சேர்க்கப்பட்டுள்ளன"
+  },
+  "lighthouse-core/audits/accessibility/document-title.js | description": {
+    "message": "தலைப்பானது அந்தப் பக்கத்தைப் பற்றிய மேலோட்ட விவரங்களை ஸ்க்ரீன் ரீடர் பயனர்களுக்கு வழங்குகிறது, தேடல் இன்ஜின் பயனர்கள் தங்களுடைய தேடலுடன் பக்கம் பொருந்துகின்றதா என்பதைத் தீர்மானிக்க அதைப் பெரிதும் நம்பியுள்ளனர். [மேலும் அறிக](https://web.dev/document-title/)."
+  },
+  "lighthouse-core/audits/accessibility/document-title.js | failureTitle": {
+    "message": "ஆவணத்தில் `<title>` உறுப்பு இல்லை"
+  },
+  "lighthouse-core/audits/accessibility/document-title.js | title": {
+    "message": "ஆவணத்தில் `<title>` உறுப்பு உள்ளது"
+  },
+  "lighthouse-core/audits/accessibility/duplicate-id.js | description": {
+    "message": "உதவிகரமான தொழில்நுட்பங்களால் நேர்வுகள் புறக்கணிக்கப்படுவதைத் தடுக்க, ஐடி பண்புக்கூறின் மதிப்பு பிரத்தியேகமானவையாக இருக்க வேண்டும். [மேலும் அறிக](https://web.dev/duplicate-id/)."
+  },
+  "lighthouse-core/audits/accessibility/duplicate-id.js | failureTitle": {
+    "message": "பக்கத்திலுள்ள `[id]` பண்புக்கூறுகள் பிரத்தியேகமானவையாக இல்லை"
+  },
+  "lighthouse-core/audits/accessibility/duplicate-id.js | title": {
+    "message": "பக்கத்தில் உள்ள `[id]` பண்புக்கூறுகள் பிரத்தியேகமானவை"
+  },
+  "lighthouse-core/audits/accessibility/frame-title.js | description": {
+    "message": "ஃபிரேம்களில் உள்ளவற்றை விவரிக்க அவற்றின் தலைப்பை ஸ்க்ரீன் ரீடர் பயனர்கள் சார்ந்துள்ளனர். [மேலும் அறிக](https://web.dev/frame-title/)."
+  },
+  "lighthouse-core/audits/accessibility/frame-title.js | failureTitle": {
+    "message": "`<frame>` அல்லது `<iframe>` உறுப்புகளுக்குத் தலைப்பு இல்லை"
+  },
+  "lighthouse-core/audits/accessibility/frame-title.js | title": {
+    "message": "`<frame>` அல்லது `<iframe>` உறுப்புகளுக்குத் தலைப்பு உள்ளது"
+  },
+  "lighthouse-core/audits/accessibility/html-has-lang.js | description": {
+    "message": "ஒரு பக்கமானது மொழியின் பண்புக்கூறைக் குறிப்பிடவில்லை எனில் ஸ்க்ரீன் ரீடரை அமைக்கும்போது பயனர் தேர்வுசெய்த மொழியையே பக்கத்தின் இயல்பு மொழியாக ஸ்க்ரீன் ரீடர் கருதும். இயல்பு மொழியில் பக்கம் இல்லை எனில் பக்கத்தின் உரையை ஸ்க்ரீன் ரீடர் சரியாக வாசிக்க முடியாமல் போகக்கூடும். [மேலும் அறிக](https://web.dev/html-has-lang/)."
+  },
+  "lighthouse-core/audits/accessibility/html-has-lang.js | failureTitle": {
+    "message": "`<html>` உறுப்பில்`[lang]` பண்புக்கூறு இல்லை"
+  },
+  "lighthouse-core/audits/accessibility/html-has-lang.js | title": {
+    "message": "`<html>` உறுப்பானது`[lang]` பண்புக்கூறைக் கொண்டுள்ளது"
+  },
+  "lighthouse-core/audits/accessibility/html-lang-valid.js | description": {
+    "message": "செல்லுபடியாகும் [BCP 47 மொழியைக்](https://www.w3.org/International/questions/qa-choosing-language-tags#question) குறிப்பிட்டால், உரையை ஸ்க்ரீன் ரீடர்கள் சரியாகப் படிக்க அது உதவியாக இருக்கும். [மேலும் அறிக](https://web.dev/html-lang-valid/)."
+  },
+  "lighthouse-core/audits/accessibility/html-lang-valid.js | failureTitle": {
+    "message": "`<html>` உறுப்பில் அதன்`[lang]` பண்புக்கூறுக்கான செல்லுபடியாகும் மதிப்பு இல்லை."
+  },
+  "lighthouse-core/audits/accessibility/html-lang-valid.js | title": {
+    "message": "`<html>` உறுப்பில் அதன்`[lang]` பண்புக்கூறுக்கான செல்லுபடியாகும் மதிப்பு உள்ளது"
+  },
+  "lighthouse-core/audits/accessibility/image-alt.js | description": {
+    "message": "தகவல் உறுப்புகள் சுருக்கமான, விளக்கமான மாற்று உரையைக் கொண்டிருக்க வேண்டும். அலங்கார உறுப்புகளில் காலியான மாற்றுப் பண்புக்கூறு இருக்கலாம். [மேலும் அறிக](https://web.dev/image-alt/)."
+  },
+  "lighthouse-core/audits/accessibility/image-alt.js | failureTitle": {
+    "message": "பட உறுப்புகளில் `[alt]` பண்புக்கூறுகள் இல்லை"
+  },
+  "lighthouse-core/audits/accessibility/image-alt.js | title": {
+    "message": "பட உறுப்புகள் `[alt]` பண்புக்கூறுகளைக் கொண்டுள்ளன"
+  },
+  "lighthouse-core/audits/accessibility/input-image-alt.js | description": {
+    "message": "`<input>` பட்டனாக ஒரு படத்தைப் பயன்படுத்தும்போது அந்த பட்டனுக்கான மாற்று உரையை வழங்குவது அதன் செயல்பாட்டை ஸ்க்ரீன் ரீடர் பயனர்கள் புரிந்துகொள்ள உதவியாக இருக்கும். [மேலும் அறிக](https://web.dev/input-image-alt/)."
+  },
+  "lighthouse-core/audits/accessibility/input-image-alt.js | failureTitle": {
+    "message": "`<input type=\"image\">` உறுப்புகளில் `[alt]` உரை இல்லை"
+  },
+  "lighthouse-core/audits/accessibility/input-image-alt.js | title": {
+    "message": "`<input type=\"image\">` உறுப்புகள் `[alt]` உரையைக் கொண்டுள்ளன"
+  },
+  "lighthouse-core/audits/accessibility/label.js | description": {
+    "message": "ஸ்க்ரீன் ரீடர்கள் போன்ற உதவிகரமான தொழில்நுட்பங்களால் சரியாக அறிவிக்கப்படும் வகையில் படிவக் கட்டுப்பாடுகள் இருப்பதை லேபிள்கள் உறுதிசெய்கின்றன. [மேலும் அறிக](https://web.dev/label/)."
+  },
+  "lighthouse-core/audits/accessibility/label.js | failureTitle": {
+    "message": "படிவ உறுப்புகளுக்கு, தொடர்புடைய லேபிள்கள் இல்லை"
+  },
+  "lighthouse-core/audits/accessibility/label.js | title": {
+    "message": "படிவ உறுப்புகளுக்கு, தொடர்புடைய லேபிள்கள் உள்ளன"
+  },
+  "lighthouse-core/audits/accessibility/layout-table.js | description": {
+    "message": "தளவமைப்புக்காகப் பயன்படுத்தப்படும் அட்டவணையில் th, தலைப்பு உறுப்புகள், சுருக்கவிவரப் பண்புக்கூறு போன்ற தரவு உறுப்புகளை சேர்க்கக் கூடாது, ஏனெனில் இது ஸ்க்ரீன் ரீடர் பயனர்களுக்குக் குழப்பத்தை ஏற்படுத்தும். [மேலும் அறிக](https://web.dev/layout-table/)."
+  },
+  "lighthouse-core/audits/accessibility/layout-table.js | failureTitle": {
+    "message": "`<th>`, `<caption>` அல்லது `[summary]` பண்புக்கூறைப் பயன்படுத்துவதை விளக்க `<table>` உறுப்புகள் தவிர்க்கவில்லை."
+  },
+  "lighthouse-core/audits/accessibility/layout-table.js | title": {
+    "message": "`<th>`, `<caption>` அல்லது `[summary]` பண்புக்கூறைப் பயன்படுத்துவதை விளக்க `<table>` உறுப்புகள் தவிர்க்கும்."
+  },
+  "lighthouse-core/audits/accessibility/link-name.js | description": {
+    "message": "தெளிவான, தனித்துவமான, மையப்படுத்தக்கூடிய இணைப்பு உரை (மற்றும் இணைப்புகளாகப் பயன்படுத்தப்படும் படங்களுக்கான மாற்று உரை) ஸ்க்ரீன் ரீடர் பயனர்களுக்கான வழிகாட்டும் அனுபவத்தை மேம்படுத்தும். [மேலும் அறிக](https://web.dev/link-name/)."
+  },
+  "lighthouse-core/audits/accessibility/link-name.js | failureTitle": {
+    "message": "இணைப்புகளுக்குத் தெளிவான பெயர் இல்லை"
+  },
+  "lighthouse-core/audits/accessibility/link-name.js | title": {
+    "message": "இணைப்புகளுக்குத் தெளிவான பெயர்கள் உள்ளன"
+  },
+  "lighthouse-core/audits/accessibility/list.js | description": {
+    "message": "பட்டியல்களை அறிவிப்பதற்கு ஸ்க்ரீன் ரீடர்களுக்கென ஒரு குறிப்பிட்ட வழிமுறை உள்ளது. சரியான பட்டியல் வடிவமைப்பை உறுதிசெய்தால் அது ஸ்க்ரீன் ரீடர் வெளியீட்டுக்கு உதவிசெய்யும். [மேலும் அறிக](https://web.dev/list/)."
+  },
+  "lighthouse-core/audits/accessibility/list.js | failureTitle": {
+    "message": "பட்டியல்களில் `<li>` உறுப்புகள், ஸ்கிரிப்ட்டை ஆதரிக்கும் உறுப்புகள்(`<script>`,`<template>`) மட்டுமல்லாமல் வேறு உறுப்புகளும் உள்ளன."
+  },
+  "lighthouse-core/audits/accessibility/list.js | title": {
+    "message": "`<li>` உறுப்புகள், ஸ்கிரிப்ட்டை ஆதரிக்கும் உறுப்புகள் (`<script>`, `<template>`) ஆகியவை மட்டும் பட்டியல்களில் உள்ளன."
+  },
+  "lighthouse-core/audits/accessibility/listitem.js | description": {
+    "message": "பட்டியலில் உள்ளவற்றை (`<li>`) ஸ்க்ரீன் ரீடர்கள் சரியாகப் படிப்பதற்கு அவை ஒரு முதல்நிலை `<ul>` அல்லது `<ol>`க்குள் இருக்க வேண்டும். [மேலும் அறிக](https://web.dev/listitem/)."
+  },
+  "lighthouse-core/audits/accessibility/listitem.js | failureTitle": {
+    "message": "பட்டியலிலுள்ளவை (`<li>`) `<ul>` என்பதிலோ `<ol>` முதல்நிலை உறுப்புகளிலோ இல்லை."
+  },
+  "lighthouse-core/audits/accessibility/listitem.js | title": {
+    "message": "பட்டியலிலுள்ளவை (`<li>`), `<ul>` அல்லது `<ol>` முதல்நிலை உறுப்புகளுக்குள் உள்ளன"
+  },
+  "lighthouse-core/audits/accessibility/meta-refresh.js | description": {
+    "message": "பக்கம் தானாகப் புதுப்பிக்கும் எனப் பயனர்கள் எதிர்பார்க்க மாட்டார்கள். அவ்வாறு ஏற்பட்டால் பக்கம் மீண்டும் முதலில் இருந்தே காட்டப்படும். இது அவர்களுக்குக் குழப்பத்தை விளைவிக்கக்கூடும். [மேலும் அறிக](https://web.dev/meta-refresh/)."
+  },
+  "lighthouse-core/audits/accessibility/meta-refresh.js | failureTitle": {
+    "message": "ஆவணம் `<meta http-equiv=\"refresh\">`ஐப் பயன்படுத்துகிறது"
+  },
+  "lighthouse-core/audits/accessibility/meta-refresh.js | title": {
+    "message": "`<meta http-equiv=\"refresh\">`ஐ ஆவணம் பயன்படுத்தவில்லை"
+  },
+  "lighthouse-core/audits/accessibility/meta-viewport.js | description": {
+    "message": "அளவை மாற்றும் வசதியை முடக்கினால் இணையப் பக்கத்தில் உள்ளவற்றைத் தெளிவாகப் பார்க்க 'திரையைப் பெரிதாக்கும் செயல்பாட்டைப்' பயன்படுத்தும் பார்வைக் குறைபாடுள்ள பயனர்களுக்கு சிக்கல் ஏற்படும். [மேலும் அறிக](https://web.dev/meta-viewport/)."
+  },
+  "lighthouse-core/audits/accessibility/meta-viewport.js | failureTitle": {
+    "message": "`<meta name=\"viewport\">` உறுப்பில் `[user-scalable=\"no\"]` பயன்படுத்தப்பட்டுள்ளது அல்லது `[maximum-scale]` பண்புக்கூறின் மதிப்பு 5க்குக் கீழ் உள்ளது."
+  },
+  "lighthouse-core/audits/accessibility/meta-viewport.js | title": {
+    "message": "`<meta name=\"viewport\">` உறுப்பில் `[user-scalable=\"no\"]` பயன்படுத்தப்படவில்லை, `[maximum-scale]` பண்புக்கூறு 5க்குக் குறைவாக இல்லை."
+  },
+  "lighthouse-core/audits/accessibility/object-alt.js | description": {
+    "message": "உரை அல்லாதவற்றை ஸ்க்ரீன் ரீடர்களால் மொழிபெயர்க்க முடியாது. `<object>` உறுப்புகளுக்கு மாற்று உரையை சேர்த்தால் அவற்றுக்கான அர்த்தத்தை ஸ்க்ரீன் ரீடர்கள் பயனர்களுக்குத் தெரிவிக்கும். [மேலும் அறிக](https://web.dev/object-alt/)."
+  },
+  "lighthouse-core/audits/accessibility/object-alt.js | failureTitle": {
+    "message": "`<object>` உறுப்புகளில் `[alt]` உரை இல்லை"
+  },
+  "lighthouse-core/audits/accessibility/object-alt.js | title": {
+    "message": "`<object>` உறுப்புகள் `[alt]` உரையைக் கொண்டுள்ளன"
+  },
+  "lighthouse-core/audits/accessibility/tabindex.js | description": {
+    "message": "0க்கு அதிகமான மதிப்பானது வெளிப்படையான ஒரு வழிசெலுத்தல் வரிசை முறையைக் குறிப்பிடுகிறது. முறைப்படி செல்லுபடியாகும் என்றாலும் தொழில்நுட்பங்களை சார்ந்திருக்கும் மாற்றுத்திறன் பயனர்களுக்கு இது பெரும்பாலும் குழப்பமான அனுபவத்தையே உருவாக்கும். [மேலும் அறிக](https://web.dev/tabindex/)."
+  },
+  "lighthouse-core/audits/accessibility/tabindex.js | failureTitle": {
+    "message": "சில உறுப்புகளின் `[tabindex]` மதிப்பு 0க்கு அதிகமாக உள்ளது"
+  },
+  "lighthouse-core/audits/accessibility/tabindex.js | title": {
+    "message": "எந்த உறுப்புக்கும் `[tabindex]` மதிப்பு 0க்கு அதிகமாக இல்லை"
+  },
+  "lighthouse-core/audits/accessibility/td-headers-attr.js | description": {
+    "message": "அட்டவணைகளில் எளிதாகச் செல்வதற்கு ஸ்க்ரீன் ரீடர்களில் அம்சங்கள் உள்ளன. `[headers]` பண்புக்கூறைப் பயன்படுத்தும் `<td>` கலங்கள் அதே அட்டவணையில் உள்ள பிற கலங்களை மட்டும் குறிப்பிடுவதை உறுதிசெய்தால் அது ஸ்க்ரீன் ரீடர் பயனர்களின் அனுபவத்தை மேம்படுத்தக்கூடும். [மேலும் அறிக](https://web.dev/td-headers-attr/)."
+  },
+  "lighthouse-core/audits/accessibility/td-headers-attr.js | failureTitle": {
+    "message": "`<table>` பண்புக்கூறைப் பயன்படுத்தும் ஒரு `[headers]` உறுப்பிலுள்ள கலங்கள் அதே அட்டவணையின் பிற கலங்களைக் குறிப்பிடுகின்றன."
+  },
+  "lighthouse-core/audits/accessibility/td-headers-attr.js | title": {
+    "message": "`[headers]` பண்புக்கூறைப் பயன்படுத்தும் `<table>` உறுப்பிலுள்ள கலங்கள் அதே அட்டவணையின் பிற கலங்களைக் குறிப்பிடுகின்றன."
+  },
+  "lighthouse-core/audits/accessibility/th-has-data-cells.js | description": {
+    "message": "அட்டவணைகளில் எளிதாகச் செல்வதற்கு ஸ்க்ரீன் ரீடர்களில் அம்சங்கள் உள்ளன. டேபிள் தலைப்புகள் எப்போதும் சில கலங்களின் தொகுப்பைக் குறிப்பிடுமாறு அமைப்பது ஸ்க்ரீன் ரீடர் பயனர்களின் அனுபவத்தை மேம்படுத்தக்கூடும். [மேலும் அறிக](https://web.dev/th-has-data-cells/)."
+  },
+  "lighthouse-core/audits/accessibility/th-has-data-cells.js | failureTitle": {
+    "message": "`<th>` உறுப்புகளும் `[role=\"columnheader\"/\"rowheader\"]`ஐக் கொண்டுள்ள உறுப்புகளும் விவரிக்கும் தரவுக் கலங்கள் அவற்றுக்கு இல்லை."
+  },
+  "lighthouse-core/audits/accessibility/th-has-data-cells.js | title": {
+    "message": "`<th>` உறுப்புகளும் `[role=\"columnheader\"/\"rowheader\"]`ஐக் கொண்டுள்ள உறுப்புகளும் விவரிக்கும் தரவுக் கலங்கள் அவற்றுக்கு உள்ளன."
+  },
+  "lighthouse-core/audits/accessibility/valid-lang.js | description": {
+    "message": "உறுப்புகளில் செல்லுபடியாகும் [BCP 47 மொழியைக்](https://www.w3.org/International/questions/qa-choosing-language-tags#question) குறிப்பிட்டால், உரையை ஸ்க்ரீன் ரீடர் சரியாக உச்சரிக்கிறதா என்பதை உறுதிப்படுத்திக் கொள்ள அது உதவும். [மேலும் அறிக](https://web.dev/valid-lang/)."
+  },
+  "lighthouse-core/audits/accessibility/valid-lang.js | failureTitle": {
+    "message": "`[lang]` பண்புக்கூறுகள் செல்லுபடியாகும் மதிப்பைக் கொண்டிருக்கவில்லை"
+  },
+  "lighthouse-core/audits/accessibility/valid-lang.js | title": {
+    "message": "`[lang]` பண்புக்கூறுகள் செல்லுபடியாகும் மதிப்பைக் கொண்டுள்ளன"
+  },
+  "lighthouse-core/audits/accessibility/video-caption.js | description": {
+    "message": "வீடியோவில் தலைப்பு குறிப்பிடப்பட்டிருந்தால் காது கேளாதோர், செவித்திறன் குறைபாடுள்ளவர்கள் அதுகுறித்த தகவல்களை அறிந்துகொள்ள எளிதாக இருக்கும். [மேலும் அறிக](https://web.dev/video-caption/)."
+  },
+  "lighthouse-core/audits/accessibility/video-caption.js | failureTitle": {
+    "message": "`<video>` உறுப்புகளில் `[kind=\"captions\"]` உள்ள `<track>` உறுப்பு இல்லை."
+  },
+  "lighthouse-core/audits/accessibility/video-caption.js | title": {
+    "message": "`<video>` உறுப்புகளில் `[kind=\"captions\"]`ஐக் கொண்டுள்ள`<track>` உறுப்பு உள்ளது"
+  },
+  "lighthouse-core/audits/accessibility/video-description.js | description": {
+    "message": "வீடியோக்களில் வசனங்களால் வெளிப்படுத்த முடியாத முக பாவனைகள், காட்சிகள் போன்றவற்றுக்கான தொடர்புடைய தகவல்களை ஆடியோ விளக்கங்கள் வழங்கும். [மேலும் அறிக](https://web.dev/video-description/)."
+  },
+  "lighthouse-core/audits/accessibility/video-description.js | failureTitle": {
+    "message": "`<video>` உறுப்புகளில் `[kind=\"description\"]` உள்ள `<track>` உறுப்பு இல்லை."
+  },
+  "lighthouse-core/audits/accessibility/video-description.js | title": {
+    "message": "`<video>` உறுப்புகளில் `[kind=\"description\"]`ஐக் கொண்டுள்ள`<track>` உறுப்பு உள்ளது"
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | description": {
+    "message": "முகப்புத் திரையில் நவீன இணைய ஆப்ஸை பயனர்கள் சேர்க்கும் போது iOSஸில் சிறப்பாகத் தோன்ற `apple-touch-icon` ஒன்றை வரையறுக்கவும். அது ஒளிபுகுத்தன்மையற்ற 192 பிகசல் (அல்லது 180 பிக்சல்) அளவுள்ள கட்ட வடிவத்திலான PNGயைக் காட்ட வேண்டும். [மேலும் அறிக](https://developers.google.com/web/fundamentals/design-and-ux/browser-customization/)."
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | failureTitle": {
+    "message": "செல்லுபடியாகும் `apple-touch-icon`ஐ வழங்கவில்லை"
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | precomposedWarning": {
+    "message": "`apple-touch-icon-precomposed` காலாவதியாகிவிட்டது; `apple-touch-icon` பரிந்துரைக்கப்படுகிறது."
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | title": {
+    "message": "செல்லுபடியாகும் `apple-touch-icon`ஐ வழங்குகிறது"
+  },
+  "lighthouse-core/audits/bootup-time.js | chromeExtensionsWarning": {
+    "message": "Chrome நீட்டிப்புகள் இந்தப் பக்கத்தின் ஏற்றுதல் செயல்திறனை எதிர்மறையாகப் பாதிக்கின்றன. மறைநிலையிலோ, நீட்டிப்புகள் இல்லாத ஒரு Chrome கணக்கிலிருந்தோ பக்கத்தைத் தணிக்கை செய்ய முயலவும்."
+  },
+  "lighthouse-core/audits/bootup-time.js | columnScriptEval": {
+    "message": "ஸ்கிரிப்ட் மதிப்பாய்வு"
+  },
+  "lighthouse-core/audits/bootup-time.js | columnScriptParse": {
+    "message": "ஸ்கிரிப்ட் பாகுபடுத்துதல்"
+  },
+  "lighthouse-core/audits/bootup-time.js | columnTotal": {
+    "message": "மொத்த CPU நேரம்"
+  },
+  "lighthouse-core/audits/bootup-time.js | description": {
+    "message": "JSஸைப் பாகுபடுத்துதல், தொகுத்தல் மற்றும் இயக்குவதில் செலவழிக்கும் நேரத்தைக் குறைக்கவும். இதற்கு சிறிய அளவிலான JS ஆதாரங்களை வழங்குவது உதவக்கூடும். [மேலும் அறிக](https://developers.google.com/web/tools/lighthouse/audits/bootup)."
+  },
+  "lighthouse-core/audits/bootup-time.js | failureTitle": {
+    "message": "JavaScript செயல்பாட்டு நேரத்தைக் குறைக்கவும்"
+  },
+  "lighthouse-core/audits/bootup-time.js | title": {
+    "message": "JavaScript செயல்பாட்டு நேரம்"
+  },
+  "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | description": {
+    "message": "அனிமேஷன் செய்தவற்றைக் காட்டுவதற்கு பெரிய அளவிலான GIFகள் பொருத்தமானவை அல்ல. நெட்வொர்க் பைட்களை சேமிக்க GIFக்குப் பதிலாக அனிமேஷன்களுக்கு MPEG4/WebM வீடியோக்களையும் நிலையான படங்களுக்கு PNG/WebP வடிவமைப்புகளையும் பயன்படுத்தவும். [மேலும் அறிக](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/replace-animated-gifs-with-video/)"
+  },
+  "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | title": {
+    "message": "அனிமேஷன் செய்யப்பட்ட உள்ளடக்கங்களுக்கு வீடியோ வடிவமைப்புகளைப் பயன்படுத்தவும்"
+  },
+  "lighthouse-core/audits/byte-efficiency/offscreen-images.js | description": {
+    "message": "எதிர்வினையாற்றும் நேரத்தைக் குறைக்க முக்கியமான அனைத்து ஆதாரங்களும் ஏற்றப்பட்ட பின்னர், திரைக்கு வெளியிலுள்ள மற்றும் மறைக்கப்பட்ட படங்களை மெதுவாக ஏற்றுமாறு அமைக்கவும். [மேலும் அறிக](https://developers.google.com/web/tools/lighthouse/audits/offscreen-images)."
+  },
+  "lighthouse-core/audits/byte-efficiency/offscreen-images.js | title": {
+    "message": "திரைக்கு வெளியிலுள்ள படங்களைத் தவிர்க்கவும்"
+  },
+  "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | description": {
+    "message": "ஆதாரங்கள் உங்கள் பக்கத்தின் முதல் தோற்றத்தைத் தடுக்கின்றன. முக்கிய JS/CSSஸை இன்லைனில் வழங்கவும். முக்கியமல்லாத அனைத்து JS/ஸ்டைல்களையும் தவிர்க்கவும். [மேலும் அறிக](https://developers.google.com/web/tools/lighthouse/audits/blocking-resources)."
+  },
+  "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | title": {
+    "message": "ரென்டரிங்கைத் தடுக்கும் ஆதாரங்களை நீக்கவும்"
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | description": {
+    "message": "அதிகளவிலான நெட்வொர்க் ஆதாரங்கள், பயனர்களுக்குப் பண இழப்பை ஏற்படுத்துவதோடு பக்கங்கள் ஏற்றப்பட நீண்ட நேரமாவதற்கும் காரணமாகின்றன. [மேலும் அறிக](https://developers.google.com/web/tools/lighthouse/audits/network-payloads)."
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | displayValue": {
+    "message": "மொத்த அளவு: {totalBytes, number, bytes} கி.பை."
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | failureTitle": {
+    "message": "அபரிமிதமான நெட்வொர்க் ஆதாரங்களைத் தவிர்க்கவும்"
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | title": {
+    "message": "அபரிமிதமான நெட்வொர்க் ஆதாரங்களைத் தவிர்க்கிறது"
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-css.js | description": {
+    "message": "CSS கோப்புகளை சிறிதாக்கினால் நெட்வொர்க் ஆதாரங்களின் அளவுகள் குறையலாம். [மேலும் அறிக](https://developers.google.com/web/tools/lighthouse/audits/minify-css)."
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-css.js | title": {
+    "message": "CSSஸைச் சிறிதாக்கவும்"
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | description": {
+    "message": "JavaScript கோப்புகளை சிறிதாக்கி ஆதாரங்களின் அளவுகளையும் ஸ்கிரிப்ட் பாகுபடுத்தப்படும் நேரத்தையும் குறைக்கலாம். [மேலும் அறிக](https://developers.google.com/speed/docs/insights/MinifyResources)."
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | title": {
+    "message": "JavaScriptடைச் சிறிதாக்கவும்"
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | description": {
+    "message": "நெட்வொர்க் செயல்பாட்டின்போது பயன்படுத்தப்படும் தேவையற்ற பைட்களைக் குறைக்க, ஸ்டைல்ஷீட்களிலிருந்து காலாவதியான விதிகளை அகற்றி, பக்கத்தின் மேல் பகுதியில் உள்ள உள்ளடக்கத்தை ஏற்றுவதற்குப் பயன்படுத்தப்படுத்தப்படாத CSSஸை ஏற்றுவதைத் தவிர்க்கவும். [மேலும் அறிக](https://developers.google.com/web/tools/lighthouse/audits/unused-css)."
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | title": {
+    "message": "பயன்படுத்தப்படாத CSSசை அகற்றவும்"
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-javascript.js | description": {
+    "message": "நெட்வொர்க் செயல்பாடு பயன்படுத்தும் பைட்களைக் குறைப்பதற்கு, பயன்படுத்தப்படாத JavaScriptடை அகற்றவும்."
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-javascript.js | title": {
+    "message": "பயன்படுத்தப்படாத JavaScriptடை அகற்றவும்"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | description": {
+    "message": "தற்காலிக நினைவகத்தின் ஆயுட்காலம் நீண்டதாக இருந்தால் அது மீண்டும் மீண்டும் திறக்கப்படும் உங்கள் இணையப் பக்கங்களை விரைவாக ஏற்றக்கூடும். [மேலும் அறிக](https://developers.google.com/web/tools/lighthouse/audits/cache-policy)."
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 ஆதாரம் கண்டறியப்பட்டது}other{# ஆதாரங்கள் கண்டறியப்பட்டன}}"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | failureTitle": {
+    "message": "திறனுள்ள தற்காலிக நினைவகக் கொள்கையுடன் நிலையான உள்ளடக்கத்தை வழங்கவும்"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | title": {
+    "message": "நிலையான உள்ளடக்கத்தில் திறனுள்ள தற்காலிக நினைவகக் கொள்கையைப் பயன்படுத்துகிறது"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | description": {
+    "message": "மேம்படுத்தப்பட்ட படங்கள் குறைவான மொபைல் டேட்டாவைப் பயன்படுத்தி விரைவாக ஏற்றும். [மேலும் அறிக](https://developers.google.com/web/tools/lighthouse/audits/optimize-images)."
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | title": {
+    "message": "படங்களைத் திறம்பட என்கோடிங் செய்யவும்"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | description": {
+    "message": "மொபைல் டேட்டாவை சேமிக்கவும் பக்கத்தை விரைவாக ஏற்றவும் படங்களை சரியான அளவில் வழங்கவும். [மேலும் அறிக](https://developers.google.com/web/tools/lighthouse/audits/oversized-images)."
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | title": {
+    "message": "படங்களைச் சரியான அளவுக்கு மாற்றவும்"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | description": {
+    "message": "மொத்த நெட்வொர்க் பைட்களைக் குறைப்பதற்கு, உரை அடிப்படையிலான ஆதாரங்கள் சுருக்கப்பட்டு (gzip, deflate அல்லது brotli) வழங்கப்பட வேண்டும். [மேலும் அறிக](https://developers.google.com/web/tools/lighthouse/audits/text-compression)."
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | title": {
+    "message": "உரைச் சுருக்கத்தை இயக்கவும்"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | description": {
+    "message": "JPEG 2000, JPEG XR, WebP போன்ற பட வடிவமைப்புகளானது PNG அல்லது JPEGயைக் காட்டிலும் சிறந்த அளவு சுருக்கத்தை வழங்குகின்றன, இதன் மூலம் பதிவிறக்கங்கள் வேகமாக நடைபெறுவதுடன் டேட்டா உபயோகமும் குறையும். [மேலும் அறிக](https://developers.google.com/web/tools/lighthouse/audits/webp)."
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | title": {
+    "message": "படங்களை நவீன வடிவமைப்புகளில் வழங்கவும்"
+  },
+  "lighthouse-core/audits/content-width.js | description": {
+    "message": "ஆப்ஸின் உள்ளடக்க அகலம் காட்சிப் பகுதியின் அகலத்துடன் பொருந்தவில்லை எனில் மொபைல் திரைகளுக்கு ஏற்ற வகையில் உங்கள் ஆப்ஸ் மேம்படுத்தப்படாமல் போகலாம். [மேலும் அறிக](https://developers.google.com/web/tools/lighthouse/audits/content-sized-correctly-for-viewport)."
+  },
+  "lighthouse-core/audits/content-width.js | explanation": {
+    "message": "{innerWidth} என்ற காட்சிப் பகுதி அளவு பிக்சலுடன் {outerWidth} என்ற சாளரத்தின் அளவு பிக்சல் பொருந்தவில்லை."
+  },
+  "lighthouse-core/audits/content-width.js | failureTitle": {
+    "message": "காட்சிப் பகுதிக்கு ஏற்ற வகையில் உள்ளடக்கம் சரியாகப் பொருந்தவில்லை"
+  },
+  "lighthouse-core/audits/content-width.js | title": {
+    "message": "காட்சிப் பகுதிக்கு ஏற்ற வகையில் உள்ளடக்கம் சரியாகப் பொருந்துகிறது"
+  },
+  "lighthouse-core/audits/critical-request-chains.js | description": {
+    "message": "கீழே இருக்கும் 'முக்கியக் கோரிக்கை வரிசைகள்' எந்தெந்த ஆதாரங்கள் அதிக முன்னுரிமையுடன் ஏற்றப்பட்டன என்பதைக் காட்டுகின்றன. பக்கம் ஏற்றப்படுவதன் வேகத்தை அதிகரிக்க, வரிசைகளின் நீளத்தைக் குறைத்தல், ஆதாரங்களின் பதிவிறக்க அளவைக் குறைத்தல் அல்லது தேவையற்ற ஆதாரங்களைப் பதிவிறக்குவதைத் தவிர்த்தல் போன்றவற்றை முயற்சி செய்யவும். [மேலும் அறிக](https://developers.google.com/web/tools/lighthouse/audits/critical-request-chains)."
+  },
+  "lighthouse-core/audits/critical-request-chains.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 வரிசை கண்டறியப்பட்டது}other{# வரிசைகள் கண்டறியப்பட்டன}}"
+  },
+  "lighthouse-core/audits/critical-request-chains.js | title": {
+    "message": "'முக்கியக் கோரிக்கைகளின் அடுக்கைக்' குறைக்கவும்"
+  },
+  "lighthouse-core/audits/deprecations.js | columnDeprecate": {
+    "message": "தடுத்தல் / எச்சரித்தல்"
+  },
+  "lighthouse-core/audits/deprecations.js | columnLine": {
+    "message": "வரி"
+  },
+  "lighthouse-core/audits/deprecations.js | description": {
+    "message": "தடுக்கப்பட்ட APIகள் இறுதியில் உலாவியிலிருந்து அகற்றப்படும். [மேலும் அறிக](https://web.dev/deprecations)."
+  },
+  "lighthouse-core/audits/deprecations.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 எச்சரிக்கை கண்டறியப்பட்டது}other{# எச்சரிக்கைகள் கண்டறியப்பட்டுள்ளன}}"
+  },
+  "lighthouse-core/audits/deprecations.js | failureTitle": {
+    "message": "தடுக்கப்பட்ட APIகளைப் பயன்படுத்துகிறது"
+  },
+  "lighthouse-core/audits/deprecations.js | title": {
+    "message": "தடுக்கப்பட்டுள்ள APIகளைத் தவிர்க்கும்"
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | description": {
+    "message": "ஆப்ஸின் தற்காலிக சேமிப்பு தடுக்கப்பட்டுள்ளது. [மேலும் அறிக](https://web.dev/appcache-manifest)."
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | displayValue": {
+    "message": "\"{AppCacheManifest}\" கண்டறியப்பட்டது"
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | failureTitle": {
+    "message": "ஆப்ஸின் தற்காலிக சேமிப்பைப் பயன்படுத்துகிறது"
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | title": {
+    "message": "ஆப்ஸின் தற்காலிக சேமிப்பைத் தவிர்க்கும்"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | description": {
+    "message": "ஆவண வகையைக் குறிப்பிடுவது குவர்க்ஸ் பயன்முறைக்கு உலாவியை மாற்றுவதைத் தடுக்கும். [மேலும் அறிக](https://web.dev/doctype)."
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationBadDoctype": {
+    "message": "ஆவண வகையின் பெயர் சிற்றெழுத்துகளில் இருக்க வேண்டும் `html`"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationNoDoctype": {
+    "message": "ஆவணமானது ஏதேனுமொரு ஆவண வகையைக் கொண்டிருக்க வேண்டும்"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationPublicId": {
+    "message": "பப்ளிக்ஐடி காலியாக இருந்திருக்க வேண்டும்"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationSystemId": {
+    "message": "சிஸ்டம்ஐடி காலியாக இருந்திருக்க வேண்டும்"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | failureTitle": {
+    "message": "பக்கத்தில் HTML ஆவண வகை இல்லாததால் குவர்க்ஸ் பயன்முறையை இயக்குகிறது"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | title": {
+    "message": "இந்தப் பக்கமானது HTML ஆவண வகையில் உள்ளது"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | columnElement": {
+    "message": "உறுப்பு"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | columnStatistic": {
+    "message": "புள்ளிவிவரம்"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | columnValue": {
+    "message": "மதிப்பு"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | description": {
+    "message": "உலாவிப் பொறியாளர்கள் ~1,500 DOM உறுப்புகளுக்குக் குறைவாக இருக்கும் பக்கங்களையே பரிந்துரைக்கின்றனர். ட்ரீ டெப்த் 32 உறுப்புகளுக்குக் கீழ் இருப்பதும் உபநிலை/முதல்நிலை உறுப்புகள் 60க்குக் கீழ் இருப்பதும் மிக சரியான அளவுகளாகும். ஒரு பெரிய DOMமால் நினைவக உபயோகத்தை அதிகரிக்கவும், [ஸ்டைல் கணக்கீடுகளை](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations) நீட்டிக்கவும், அதிக செலவு பிடிக்கும் [தளவமைப்பு மறுசீராக்கங்களை](https://developers.google.com/speed/articles/reflow) ஏற்படுத்தவும் முடியும். [மேலும் அறிக](https://web.dev/dom-size)."
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 உறுப்பு}other{# உறுப்புகள்}}"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | failureTitle": {
+    "message": "அபரிமிதமான DOM அளவைத் தவிர்க்கவும்"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | statisticDOMDepth": {
+    "message": "அதிகபட்ச DOM கிளை அடுக்கு"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | statisticDOMElements": {
+    "message": "மொத்த DOM உறுப்புகள்"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | statisticDOMWidth": {
+    "message": "அதிகபட்சத் துணை உறுப்புகள்"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | title": {
+    "message": "அபரிமிதமான DOM அளவைத் தவிர்க்கிறது"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | columnRel": {
+    "message": "Rel"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | columnTarget": {
+    "message": "இலக்கு"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | description": {
+    "message": "ஏதேனும் புற இணைப்புகளின் செயல்திறனை அதிகரிக்கவும் அவற்றிலுள்ள பாதுகாப்புக் குறைபாடுகளைத் தடுக்கவும் `rel=\"noopener\"` அல்லது `rel=\"noreferrer\"`ஐ சேர்க்கவும். [மேலும் அறிக](https://web.dev/external-anchors-use-rel-noopener)."
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | failureTitle": {
+    "message": "வேறு மூலங்களுக்கு செல்லும் இணைப்புகள் பாதுகாப்பற்றவை"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | title": {
+    "message": "வேறு மூலங்களுக்கு செல்லும் இணைப்புகள் பாதுகாப்பானவை"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | warning": {
+    "message": "ஆங்கருக்கான இடத்தை நிர்ணயிக்க முடியவில்லை ({anchorHTML}). லிங்க்காகப் பயன்படாதபட்சத்தில் target=_blank என்பதை அகற்றவும்."
+  },
+  "lighthouse-core/audits/dobetterweb/geolocation-on-start.js | description": {
+    "message": "சரியான காரணங்கள் இன்றி இருப்பிடத்தை அறிய கோரிக்கையிடும் தளங்களால் பயனர்கள் குழப்பமடையலாம் அல்லது சந்தேகப்படலாம். அதற்கு பதிலாக பயனர் செயல்பாட்டை முயலவும். [மேலும் அறிக](https://web.dev/geolocation-on-start)."
+  },
+  "lighthouse-core/audits/dobetterweb/geolocation-on-start.js | failureTitle": {
+    "message": "பக்கம் ஏற்றப்படும்போது உங்கள் புவி இருப்பிடத்தைத் தெரிந்துகொள்வதற்கான அனுமதியைக் கோரும்"
+  },
+  "lighthouse-core/audits/dobetterweb/geolocation-on-start.js | title": {
+    "message": "பக்கம் ஏற்றப்படும்போது உங்கள் புவி இருப்பிடத்தைத் தெரிந்துகொள்வதற்கான அனுமதியைக் கோராது"
+  },
+  "lighthouse-core/audits/dobetterweb/js-libraries.js | columnVersion": {
+    "message": "பதிப்பு"
+  },
+  "lighthouse-core/audits/dobetterweb/js-libraries.js | description": {
+    "message": "பக்கத்திலுள்ள அனைத்து ஃபிரெண்ட் எண்ட் JavaScript லைப்ரரிகளையும் கண்டறிந்துள்ளது. [மேலும் அறிக](https://web.dev/js-libraries)."
+  },
+  "lighthouse-core/audits/dobetterweb/js-libraries.js | title": {
+    "message": "JavaScript லைப்ரரிகள் கண்டறியப்பட்டுள்ளன"
+  },
+  "lighthouse-core/audits/dobetterweb/no-document-write.js | description": {
+    "message": "வேகம் குறைந்த இணைய சேவை உள்ள பயனர்களுக்கு, வெளி ஸ்கிரிப்ட்களை `document.write()` வழியாக உட்செலுத்தும்போது பக்கத்தை ஏற்றுவதை அது பல வினாடிகள் தாமதிக்கும். [மேலும் அறிக](https://web.dev/no-document-write)."
+  },
+  "lighthouse-core/audits/dobetterweb/no-document-write.js | failureTitle": {
+    "message": "`document.write()`ஐப் பயன்படுத்துகிறது"
+  },
+  "lighthouse-core/audits/dobetterweb/no-document-write.js | title": {
+    "message": "`document.write()`ஐத் தவிர்க்கும்"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | columnSeverity": {
+    "message": "அதிகபட்ச அபாயம்"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | columnVersion": {
+    "message": "லைப்ரரி பதிப்பு"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | columnVuln": {
+    "message": "பாதுகாப்புக் குறைபாடுகளின் எண்ணிக்கை"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | description": {
+    "message": "சில மூன்றாம் தரப்பு ஸ்கிரிப்ட்களில் ஹேக்கர்கள் எளிதாக அடையாளம் கண்டுகொண்டு பயன்படுத்திக் கொள்ளக்கூடிய தெரிந்த பாதுகாப்புக் குறைபாடுகள் இருக்கக்கூடும். [மேலும் அறிக](https://web.dev/no-vulnerable-libraries)."
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 பாதுகாப்புக் குறைபாடு கண்டறியப்பட்டுள்ளது}other{# பாதுகாப்புக் குறைபாடுகள் கண்டறியப்பட்டுள்ளன}}"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | failureTitle": {
+    "message": "தெரிந்த பாதுகாப்புக் குறைபாடுகளுள்ள ஃபிரண்ட் எண்டு JavaScript லைப்ரரிகள் இதில் அடங்கும்"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | rowSeverityHigh": {
+    "message": "அதிகம்"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | rowSeverityLow": {
+    "message": "குறைவானது"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | rowSeverityMedium": {
+    "message": "நடுத்தரமானது"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | title": {
+    "message": "தெரிந்த பாதுகாப்புக் குறைபாடுகளுடைய ஃபிரண்ட் எண்ட் JavaScript லைப்ரரிகளைத் தவிர்க்கிறது"
+  },
+  "lighthouse-core/audits/dobetterweb/notification-on-start.js | description": {
+    "message": "சரியான காரணங்கள் இன்றி அறிவிப்புகளை அனுப்பக் கோரிக்கையிடும் தளங்களால் பயனர்கள் குழப்பமடையலாம் அல்லது சந்தேகப்படலாம். அதற்கு பதிலாக பயனர் சைகைகளை முயலவும். [மேலும் அறிக](https://web.dev/notification-on-start)."
+  },
+  "lighthouse-core/audits/dobetterweb/notification-on-start.js | failureTitle": {
+    "message": "பக்கம் ஏற்றப்படும்போது அதுகுறித்த அறிவிப்பைத் தெரிந்துகொள்வதற்கான அனுமதியைக் கோரும்"
+  },
+  "lighthouse-core/audits/dobetterweb/notification-on-start.js | title": {
+    "message": "பக்கம் ஏற்றப்படும்போது அதுகுறித்த அறிவிப்பைத் தெரிந்துகொள்வதற்கான அனுமதியைக் கோராது"
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | columnFailingElem": {
+    "message": "தோல்வியுறும் உறுப்புகள்"
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | description": {
+    "message": "கடவுச்சொல்லை ஒட்டுவதைத் தடுப்பதால் நல்ல பாதுகாப்புக் கொள்கை பாதிக்கப்படுகிறது. [மேலும் அறிக](https://web.dev/password-inputs-can-be-pasted-into)."
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | failureTitle": {
+    "message": "கடவுச்சொல் புலங்களில் பயனர்கள் ஒட்டுவதைத் தடுக்கும்"
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | title": {
+    "message": "கடவுச்சொல் புலங்களில் பயனர்கள் ஒட்டுவதை அனுமதிக்கும்"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | columnProtocol": {
+    "message": "நெறிமுறை"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | description": {
+    "message": "HTTP/1.1ஐ விட அதிகப் பலன்களை HTTP/2 வழங்குகிறது. அவற்றில் பைனரி ஹெட்டர்கள், மல்டிஃபிளெக்ஸிங் மற்றும் சர்வர் ஃபுஷ் போன்றவை அடங்கும். [மேலும் அறிக](https://web.dev/uses-http2)."
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | displayValue": {
+    "message": "{itemCount,plural, =1{HTTP/2 வழியாக 1 கோரிக்கை பதிலளிக்கப்படவில்லை}other{HTTP/2 வழியாக # கோரிக்கைகள் பதிலளிக்கப்படவில்லை}}"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | failureTitle": {
+    "message": "அதன் அனைத்து ஆதாரங்களுக்கும் HTTP/2வைப் பயன்படுத்தவில்லை"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | title": {
+    "message": "அதன் சொந்த ஆதாரங்களுக்கு HTTP/2வைப் பயன்படுத்துகிறது"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-passive-event-listeners.js | description": {
+    "message": "உங்கள் பக்கத்தின் நகர்த்துதல் செயல்திறனை மேம்படுத்த டச் மற்றும் வீல் ஈவண்ட் லிசனர்களை `passive` என அமைக்கவும். [மேலும் அறிக](https://web.dev/uses-passive-event-listeners)."
+  },
+  "lighthouse-core/audits/dobetterweb/uses-passive-event-listeners.js | failureTitle": {
+    "message": "நகர்த்துதல் செயல்திறனை மேம்படுத்துவதற்காக பேசிவ் லிசனர்களைப் பயன்படுத்தவில்லை"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-passive-event-listeners.js | title": {
+    "message": "நகர்த்துதல் செயல்திறனை மேம்படுத்துவதற்காக பேசிவ் லிசனர்களைப் பயன்படுத்துகின்றன"
+  },
+  "lighthouse-core/audits/errors-in-console.js | columnDesc": {
+    "message": "விளக்கம்"
+  },
+  "lighthouse-core/audits/errors-in-console.js | description": {
+    "message": "கன்சோலில் பதிவுசெய்யப்பட்ட பிழைகள் தீர்க்கப்படாத சிக்கல்களைக் குறிக்கின்றன. அவை நெட்வொர்க் கோரிக்கை பிழைகளினாலும் வேறு உலாவி சிக்கல்களினாலும் ஏற்பட்டிருக்கும். [மேலும் அறிக](https://web.dev/errors-in-console)"
+  },
+  "lighthouse-core/audits/errors-in-console.js | failureTitle": {
+    "message": "கன்சோலில் உலாவி தொடர்பான பிழைகள் பதிவு செய்யப்பட்டுள்ளன"
+  },
+  "lighthouse-core/audits/errors-in-console.js | title": {
+    "message": "கன்சோலில் உலாவியின் பிழைகள் எதுவும் பதிவு செய்யப்படவில்லை"
+  },
+  "lighthouse-core/audits/font-display.js | description": {
+    "message": "இணைய எழுத்துருக்கள் ஏற்றப்படும்போது உரை எழுத்துகள் பயனருக்குத் தெரிவதை உறுதிசெய்ய எழுத்துருக் காட்சியின் CSS அம்சத்தை சேர்க்கவும். [மேலும் அறிக](https://developers.google.com/web/updates/2016/02/font-display)."
+  },
+  "lighthouse-core/audits/font-display.js | failureTitle": {
+    "message": "இணைய எழுத்துரு ஏற்றப்படும்போது உரை எழுத்துகள் தெரிவதை உறுதிசெய்யவும்"
+  },
+  "lighthouse-core/audits/font-display.js | title": {
+    "message": "இணைய எழுத்துருக்கள் ஏற்றப்படும்போது உரை எழுத்துகள் அனைத்தும் தெரிகின்றன"
+  },
+  "lighthouse-core/audits/font-display.js | undeclaredFontURLWarning": {
+    "message": "பின்வரும் URLளுக்கான எழுத்துருக் காட்சியின் மதிப்பை Lighthouseஸால் தானாக சரிபார்க்க முடியவில்லை: {fontURL}."
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | columnActual": {
+    "message": "தோற்ற விகிதம் (அசல்)"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | columnDisplayed": {
+    "message": "தோற்ற விகிதம் (காட்சிப்படுத்தப்பட்டது)"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | description": {
+    "message": "படத்தின் காட்சிப் பரிமாணங்கள் இயல்பான தோற்ற விகிதத்துடன் பொருந்த வேண்டும். [மேலும் அறிக](https://web.dev/image-aspect-ratio)."
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | failureTitle": {
+    "message": "தவறான தோற்ற விகிதமுள்ள படங்களைக் காட்டுகிறது"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | title": {
+    "message": "சரியான தோற்ற விகிதத்துடன் படங்களைக் காட்டுகிறது"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | warningCompute": {
+    "message": "பட அளவு குறித்த தகவல் செல்லாதது {url}"
+  },
+  "lighthouse-core/audits/installable-manifest.js | description": {
+    "message": "முக்கியத்துவத்தின் காரணமாக ஆப்ஸை முகப்புத் திரையில் சேர்க்குமாறு முன்னெச்சரிக்கையாக உலாவிகள் பயனர்களுக்கு அறிவிக்கும். [மேலும் அறிக](https://developers.google.com/web/tools/lighthouse/audits/install-prompt)."
+  },
+  "lighthouse-core/audits/installable-manifest.js | failureTitle": {
+    "message": "இணைய ஆப்ஸ் மெனிஃபெஸ்ட் நிறுவுதலுக்கான தேவைகளைப் பூர்த்தி செய்யவில்லை"
+  },
+  "lighthouse-core/audits/installable-manifest.js | title": {
+    "message": "இணைய ஆப்ஸ் மெனிஃபெஸ்ட்டானது நிறுவுதலுக்கான தேவைகளைப் பூர்த்தி செய்கிறது"
+  },
+  "lighthouse-core/audits/is-on-https.js | columnInsecureURL": {
+    "message": "பாதுகாப்பில்லாத URL"
+  },
+  "lighthouse-core/audits/is-on-https.js | description": {
+    "message": "அனைத்துத் தளங்களும் HTTPS மூலம் பாதுகாக்கப்பட வேண்டும், பாதுகாக்கப்பட வேண்டிய தனிப்பட்ட தரவைக் கொண்டிருக்காத தளங்களுக்கும் இது பொருந்தும். உங்கள் ஆப்ஸிற்கும் பயனர்களுக்கும் இடையில் நடக்கும் தகவல் பரிமாற்றத்தில் குறுக்கிடுபவர்களையும் மறைந்திருந்து கவனிப்பவர்களையும் HTTPS தடுக்கிறது. அது HTTP/2 மற்றும் பல புதிய பிளாட்ஃபார்ம் APIகளில் முக்கியமாக இருக்க வேண்டியதாகும். [மேலும் அறிக](https://web.dev/is-on-https)."
+  },
+  "lighthouse-core/audits/is-on-https.js | displayValue": {
+    "message": "{itemCount,plural, =1{பாதுகாப்பு இல்லாத 1 கோரிக்கை கண்டறியப்பட்டுள்ளது}other{பாதுகாப்பு இல்லாத # கோரிக்கைகள் கண்டறியப்பட்டுள்ளன}}"
+  },
+  "lighthouse-core/audits/is-on-https.js | failureTitle": {
+    "message": "HTTPSஸைப் பயன்படுத்தவில்லை"
+  },
+  "lighthouse-core/audits/is-on-https.js | title": {
+    "message": "HTTPSஸைப் பயன்படுத்துகிறது"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | description": {
+    "message": "மொபைல் நெட்வொர்க்கில் பக்கம் வேகமாக ஏற்றப்பட்டால் அது மொபைல் பயனர்களுக்கு சிறந்த அனுபவத்தை வழங்கும். [மேலும் அறிக](https://developers.google.com/web/tools/lighthouse/audits/fast-3g)."
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | displayValueText": {
+    "message": "பக்கம் பதிலளிக்க எடுத்துக்கொண்ட நேரம்: {timeInMs, number, seconds} வி."
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | displayValueTextWithOverride": {
+    "message": "மாதிரி மொபைல் நெட்வொர்க்கில் {timeInMs, number, seconds} வினாடிகளில் பதிலளிக்கிறது"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | explanationLoadSlow": {
+    "message": "உங்கள் பக்கம் மிகவும் மெதுவாக ஏற்றப்படுவதால் 10 நொடிகளுக்குள் விரைவாகப் பதிலளிக்கவில்லை. எவ்வாறு மேம்படுத்துவது என்பதைத் தெரிந்து கொள்ள \"செயல்திறன்\" பிரிவில் உள்ள 'வாய்ப்புகள் மற்றும் பிழை கண்டறிதல்' என்பதைப் பார்க்கவும்."
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | failureTitle": {
+    "message": "மொபைல் நெட்வொர்க்குகளில் பக்கம் போதுமான வேகத்தில் ஏற்றப்படவில்லை"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | title": {
+    "message": "மொபைல் நெட்வொர்க்குகளில் பக்கம் போதுமான வேகத்தில் ஏற்றப்படுகிறது"
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | columnCategory": {
+    "message": "வகை"
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | description": {
+    "message": "JSஸைப் பாகுபடுத்துதல், தொகுத்தல் மற்றும் இயக்குவதில் செலவழிக்கும் நேரத்தைக் குறைக்க முயற்சி செய்யவும். இதற்கு, சிறிய அளவிலான JS ஆதாரங்களை வழங்குவது உதவக்கூடும்."
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | failureTitle": {
+    "message": "முக்கியத் தொடரிழையின் பணியைக் குறைக்கவும்"
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | title": {
+    "message": "முக்கியத் தொடரிழையின் பணியைக் குறைக்கிறது"
+  },
+  "lighthouse-core/audits/manual/pwa-cross-browser.js | description": {
+    "message": "அதிக அளவிலான பயனர்களைப் பெற பிரபலமான ஒவ்வொரு உலாவியிலும் தளங்கள் செயல்பட வேண்டும். [மேலும் அறிக](https://developers.google.com/web/progressive-web-apps/checklist#site-works-cross-browser)."
+  },
+  "lighthouse-core/audits/manual/pwa-cross-browser.js | title": {
+    "message": "வெவ்வேறு உலாவியிலும் தளம் செயல்படும்"
+  },
+  "lighthouse-core/audits/manual/pwa-each-page-has-url.js | description": {
+    "message": "URL மூலம் தனிப்பட்ட பக்கங்களை லிங்க் செய்யலாம் என்பதையும் சமூக வலைதளங்களில் பகிர்வதற்கு அந்த URLகள் தனித்துவமானவை என்பதையும் உறுதிப்படுத்தவும். [மேலும் அறிக](https://developers.google.com/web/progressive-web-apps/checklist#each-page-has-a-url)."
+  },
+  "lighthouse-core/audits/manual/pwa-each-page-has-url.js | title": {
+    "message": "ஒவ்வொரு பக்கத்திற்கும் URL உள்ளது"
+  },
+  "lighthouse-core/audits/manual/pwa-page-transitions.js | description": {
+    "message": "சிறந்த செயல்திறனுக்கான முக்கிய அம்சம் என்னவெனில் வேகம் குறைந்த நெட்வொர்க்காக இருந்தாலும் பக்கத்தை நீங்கள் தட்டும் போது 'பக்கத்தின் மாற்றங்கள்' அதனை வழங்குவதாகும். [மேலும் அறிக](https://developers.google.com/web/progressive-web-apps/checklist#page-transitions-dont-feel-like-they-block-on-the-network)."
+  },
+  "lighthouse-core/audits/manual/pwa-page-transitions.js | title": {
+    "message": "பக்கத்தின் மாற்றங்கள் நெட்வொர்க்கில் தடுக்கப்பட்டவை போன்று தோன்றக்கூடாது"
+  },
+  "lighthouse-core/audits/metrics/estimated-input-latency.js | description": {
+    "message": "'தோராய உள்ளீட்டுத் தாமதம்' என்பது பக்கம் ஏற்றப்படும் பிஸியான 5 வினாடி காலஅளவின்போது பயனரின் உள்ளீட்டுக்கு பதிலளிக்க உங்கள் ஆப்ஸ் எவ்வளவு நேரம் எடுத்துக் கொள்கிறது என்பதற்கான தோராய மதிப்பாகும். பதிலளிக்க 50 மி.வி.க்கு மேல் தாமதமானால் உங்கள் ஆப்ஸ் மெதுவானது என்று பயனர்கள் கருதக்கூடும். [மேலும் அறிக](https://developers.google.com/web/tools/lighthouse/audits/estimated-input-latency)."
+  },
+  "lighthouse-core/audits/metrics/estimated-input-latency.js | title": {
+    "message": "தோராயமான உள்ளீட்டுத் தாமதம்"
+  },
+  "lighthouse-core/audits/metrics/first-contentful-paint.js | description": {
+    "message": "'உள்ளடக்கமுள்ள முதல் தோற்றம்' என்பது முதல் உரையோ படமோ தோன்றும் நேரத்தைக் குறிக்கிறது. [மேலும் அறிக](https://developers.google.com/web/tools/lighthouse/audits/first-contentful-paint)."
+  },
+  "lighthouse-core/audits/metrics/first-contentful-paint.js | title": {
+    "message": "உள்ளடக்கமுள்ள முதல் தோற்றம்"
+  },
+  "lighthouse-core/audits/metrics/first-cpu-idle.js | description": {
+    "message": "'CPU செயல்படாநிலையின் தொடக்க நேரம்' என்பது உள்ளீட்டை பக்கத்தின் முக்கியத் தொடரிழை கையாள்வதற்குத் தயாராக, செயல்படாநிலையில் இருக்கும் நேரத்தின் தொடக்கத்தைக் குறிக்கிறது. [மேலும் அறிக](https://developers.google.com/web/tools/lighthouse/audits/first-interactive)."
+  },
+  "lighthouse-core/audits/metrics/first-cpu-idle.js | title": {
+    "message": "CPU செயல்படாநிலையின் தொடக்க நேரம்"
+  },
+  "lighthouse-core/audits/metrics/first-meaningful-paint.js | description": {
+    "message": "'பயனுள்ள முதல் தோற்றம்' என்பது பக்கத்தின் முதன்மை உள்ளடக்கம் எப்போது தெரிகிறது என்பதை அளவிடுகிறது. [மேலும் அறிக](https://developers.google.com/web/tools/lighthouse/audits/first-meaningful-paint)."
+  },
+  "lighthouse-core/audits/metrics/first-meaningful-paint.js | title": {
+    "message": "அர்த்தமுள்ள முதல் தோற்றம்"
+  },
+  "lighthouse-core/audits/metrics/interactive.js | description": {
+    "message": "எதிர்வினை நேரம் என்பது பக்கம் முழுமையாக எதிர்வினையாற்றும் வகையில் ஏற்றப்படுவதற்கான கால அளவாகும். [மேலும் அறிக](https://developers.google.com/web/tools/lighthouse/audits/consistently-interactive)."
+  },
+  "lighthouse-core/audits/metrics/interactive.js | title": {
+    "message": "எதிர்வினை நேரம்"
+  },
+  "lighthouse-core/audits/metrics/max-potential-fid.js | description": {
+    "message": "உங்கள் பயனர்கள் எதிர்கொள்ளக்கூடிய அதிக சாத்தியமான ’முதல் உள்ளீட்டுத் தாமதம்’ என்பது மிக நீண்ட பணியின் காலஅளவாகும் (மில்லி வினாடிகளில் குறிப்பிடப்படும்). [மேலும் அறிக](https://developers.google.com/web/updates/2018/05/first-input-delay)."
+  },
+  "lighthouse-core/audits/metrics/max-potential-fid.js | title": {
+    "message": "முதல் உள்ளீட்டிற்கு பதிலளிக்கக்கூடிய அதிகபட்ச நேரம்"
+  },
+  "lighthouse-core/audits/metrics/speed-index.js | description": {
+    "message": "பக்கத்திலுள்ள உள்ளடக்கங்கள் எவ்வளவு விரைவாகத் தெரிகின்றன என்பதை 'வேக அட்டவணை' காண்பிக்கிறது. [மேலும் அறிக](https://developers.google.com/web/tools/lighthouse/audits/speed-index)."
+  },
+  "lighthouse-core/audits/metrics/speed-index.js | title": {
+    "message": "வேக அட்டவணை"
+  },
+  "lighthouse-core/audits/metrics/total-blocking-time.js | description": {
+    "message": "பணியின் நீளம் 50மி.வி.களைத் தாண்டும்போது FCP மற்றும் எதிர்வினை நேரத்திற்கு இடையில் இருக்கும் மொத்தக் கால அளவுகளின் கூடுதல் (மில்லி வினாடிகளில்)."
+  },
+  "lighthouse-core/audits/metrics/total-blocking-time.js | title": {
+    "message": "தடுக்கப்படும் மொத்த நேரம்"
+  },
+  "lighthouse-core/audits/network-rtt.js | description": {
+    "message": "நெட்வொர்க் ரவுண்ட் டிரிப் டைம்ஸ் (Round Trip Times - RTT) செயல்திறனில் பெரும் தாக்கத்தை ஏற்படுத்தும். அசல் சேவையகத்துக்கான RTT அதிகமாக இருந்தால் பயனரின் அருகில் இருக்கும் சேவையகங்கள் இணையதளத்தின் செயல்திறனை மேம்படுத்தலாம் என்பதைக் குறிக்கும். [மேலும் அறிக](https://hpbn.co/primer-on-latency-and-bandwidth/)."
+  },
+  "lighthouse-core/audits/network-rtt.js | title": {
+    "message": "நெட்வொர்க் ரவுண்ட் டிரிப் நேரங்கள்"
+  },
+  "lighthouse-core/audits/network-server-latency.js | description": {
+    "message": "சேவையகத் தாமதங்கள் இணைய செயல்திறனைப் பாதிக்கக்கூடும். மூல சேவையகத்தில் தாமதம் அதிகமாக இருந்தால் சேவையகத்தின் வேலைப் பளு அதிகமாக உள்ளது அல்லது மோசமான பின்னணி செயல்திறன் உள்ளது என்று பொருள். [மேலும் அறிக](https://hpbn.co/primer-on-web-performance/#analyzing-the-resource-waterfall)."
+  },
+  "lighthouse-core/audits/network-server-latency.js | title": {
+    "message": "சேவையக பேக்எண்ட் தாமதங்கள்"
+  },
+  "lighthouse-core/audits/offline-start-url.js | description": {
+    "message": "கணிக்க முடியாத நெட்வொர்க் சூழல்களிலும் சேவைச் செயலாக்கி உங்கள் இணைய ஆப்ஸை நம்பகமானதாக மாற்றும். [மேலும் அறிக](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)."
+  },
+  "lighthouse-core/audits/offline-start-url.js | failureTitle": {
+    "message": "ஆஃப்லைனில் உள்ள போது 200 என்ற HTTP நிலைக் குறியீட்டுடன் `start_url` விரைவாகப் பதிலளிக்கவில்லை"
+  },
+  "lighthouse-core/audits/offline-start-url.js | title": {
+    "message": "ஆஃப்லைனில் உள்ள போது 200 என்ற HTTP நிலைக் குறியீட்டுடன் `start_url` விரைவாகப் பதிலளிக்கும்"
+  },
+  "lighthouse-core/audits/offline-start-url.js | warningCantStart": {
+    "message": "மெனிஃபெஸ்ட்டில் இருந்து `start_url`ஐ Lighthouseஸால் படிக்க முடியவில்லை. இதனால் `start_url` இந்த ஆவணத்தின் URL ஆகக் கருதப்பட்டது. பிழைச் செய்தி: '{manifestWarning}'."
+  },
+  "lighthouse-core/audits/performance-budget.js | columnOverBudget": {
+    "message": "பட்ஜெட்டைத் தாண்டிவிட்டது"
+  },
+  "lighthouse-core/audits/performance-budget.js | description": {
+    "message": "நெட்வொர்க் கோரிக்கைகளின் அளவையும் எண்ணிக்கையையும் செயல்திறன் பட்ஜெட் அமைத்துள்ள இலக்கீடுகளுக்குள் வைத்திருக்கவும். [மேலும் அறிக](https://developers.google.com/web/tools/lighthouse/audits/budgets)."
+  },
+  "lighthouse-core/audits/performance-budget.js | requestCountOverBudget": {
+    "message": "{count,plural, =1{1 கோரிக்கை}other{# கோரிக்கைகள்}}"
+  },
+  "lighthouse-core/audits/performance-budget.js | title": {
+    "message": "செயல்திறன் பட்ஜெட்"
+  },
+  "lighthouse-core/audits/redirects-http.js | description": {
+    "message": "HTTPSஐ ஏற்கனவே நீங்கள் அமைத்திருந்தால் உங்களின் அனைத்துப் பயனர்களுக்கும் பாதுகாப்பான இணைய அம்சங்களைச் செயல்படுத்தும் வகையில் எல்லா HTTP ட்ராஃபிக்கையும் HTTPSக்குத் திசைதிருப்பவும். [மேலும் அறிக](https://developers.google.com/web/tools/lighthouse/audits/http-redirects-to-https)."
+  },
+  "lighthouse-core/audits/redirects-http.js | failureTitle": {
+    "message": "HTTP ட்ராஃபிக் HTTPSக்குத் திசைதிருப்பப்படவில்லை"
+  },
+  "lighthouse-core/audits/redirects-http.js | title": {
+    "message": "HTTPSக்கு HTTP ட்ராஃபிக்கைத் திசைதிருப்பும்"
+  },
+  "lighthouse-core/audits/redirects.js | description": {
+    "message": "'திசைதிருப்புதல்கள்' பக்கம் ஏற்றப்படுவதற்கு முன்பு கூடுதல் தாமதங்களை ஏற்படுத்தலாம். [மேலும் அறிக](https://developers.google.com/web/tools/lighthouse/audits/redirects)."
+  },
+  "lighthouse-core/audits/redirects.js | title": {
+    "message": "பல பக்கங்களுக்குத் திசைதிருப்புவதைத் தவிர்க்கவும்"
+  },
+  "lighthouse-core/audits/resource-summary.js | description": {
+    "message": "பக்க ஆதாரங்களின் அளவையும் எண்ணிக்கைக்கான பட்ஜெட்களையும் அமைக்க budget.json கோப்பை சேர்க்கவும். [மேலும் அறிக](https://developers.google.com/web/tools/lighthouse/audits/budgets)."
+  },
+  "lighthouse-core/audits/resource-summary.js | displayValue": {
+    "message": "{requestCount,plural, =1{1 கோரிக்கை • {byteCount, number, bytes} KB}other{# கோரிக்கைகள் • {byteCount, number, bytes} KB}}"
+  },
+  "lighthouse-core/audits/resource-summary.js | title": {
+    "message": "கோரிக்கை எண்ணிக்கைகளைக் குறைவாகவும் பரிமாற்ற அளவுகளை சிறியதாகவும் வைத்திருங்கள்"
+  },
+  "lighthouse-core/audits/seo/canonical.js | description": {
+    "message": "தேடல் முடிவுகளில் எந்த URLலைக் காண்பிக்க வேண்டும் என்பதை ’முன்னுரிமை இணைப்புகள்’ பரிந்துரைக்கும். [மேலும் அறிக](https://web.dev/canonical)."
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationConflict": {
+    "message": "பல முரண்படும் URLகள் ({urlList})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationDifferentDomain": {
+    "message": "வேறொரு டொமைனைச் சுட்டுகிறது ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationInvalid": {
+    "message": "தவறான URL ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationPointsElsewhere": {
+    "message": "வேறொரு `hreflang` இருப்பிடத்தைச் சுட்டுகிறது ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationRelative": {
+    "message": "தொடர்புடைய URL ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationRoot": {
+    "message": "உள்ளடக்கத்திற்குப் பொருத்தமான பக்கத்திற்குப் பதிலாக டொமைனின் மூல URLலை (முகப்புப்பக்கம்) குறிப்பிடுகிறது"
+  },
+  "lighthouse-core/audits/seo/canonical.js | failureTitle": {
+    "message": "ஆவணத்தில் செல்லுபடியாகும் `rel=canonical` இல்லை"
+  },
+  "lighthouse-core/audits/seo/canonical.js | title": {
+    "message": "ஆவணத்தில் செல்லுபடியாகும்`rel=canonical` உள்ளது"
+  },
+  "lighthouse-core/audits/seo/font-size.js | description": {
+    "message": "12pxக்குக் குறைவான எழுத்துரு அளவுகள் படிப்பதற்கு மிக சிறியவை, இதனால் மொபைல் பயனாளர்கள் உரையைப் படிக்க, ”அளவை மாற்ற பின்ச் செய்தல்” அம்சத்தைப் பயன்படுத்த வேண்டியிருக்கும். எனவே பக்கத்தின் 60% அதிகமான உரைக்கு 12px அல்லது அதற்கு அதிகமான எழுத்துரு அளவை அமைக்க முயலவும். [மேலும் அறிக](https://web.dev/font-size)."
+  },
+  "lighthouse-core/audits/seo/font-size.js | displayValue": {
+    "message": "{decimalProportion, number, extendedPercent} தெளிவான உரை"
+  },
+  "lighthouse-core/audits/seo/font-size.js | explanationViewport": {
+    "message": "மொபைல் திரைகளுக்கேற்ப காட்சிப் பகுதி மேலதிகத் தகவல் மேம்படுத்தப்படாததால் உரையைச் சரியாகப் படிக்க முடியவில்லை."
+  },
+  "lighthouse-core/audits/seo/font-size.js | explanationWithDisclaimer": {
+    "message": "{decimalProportion, number, extendedPercent} உரை மிகவும் சிறியது ({decimalProportionVisited, number, extendedPercent} மாதிரியின் அடிப்படையில்)."
+  },
+  "lighthouse-core/audits/seo/font-size.js | failureTitle": {
+    "message": "ஆவணத்தில் தெளிவான எழுத்துரு அளவுகள் பயன்படுத்தப்படவில்லை"
+  },
+  "lighthouse-core/audits/seo/font-size.js | title": {
+    "message": "ஆவணத்தில் தெளிவான எழுத்துரு அளவுகள் பயன்படுத்தப்பட்டுள்ளன"
+  },
+  "lighthouse-core/audits/seo/hreflang.js | description": {
+    "message": "hreflang இணைப்புகளானவை குறிப்பிட்ட ஒரு மொழியிலான அல்லது பகுதிக்கான தேடல் முடிவுகளில், ஒரு பக்கத்தின் எந்தப் பதிப்பைப் பட்டியலிட வேண்டும் என்பதைத் தேடல் இன்ஜின்களுக்கு சொல்கின்றன. [மேலும் அறிக](https://web.dev/hreflang)."
+  },
+  "lighthouse-core/audits/seo/hreflang.js | failureTitle": {
+    "message": "ஆவணத்தில் செல்லுபடியாகும் `hreflang` இல்லை"
+  },
+  "lighthouse-core/audits/seo/hreflang.js | title": {
+    "message": "ஆவணத்தில் செல்லுபடியாகும்`hreflang` உள்ளது"
+  },
+  "lighthouse-core/audits/seo/http-status-code.js | description": {
+    "message": "வெற்றியடையாத HTTP நிலைக் குறியீடுகள் உள்ள பக்கங்கள் சரியாக அட்டவணைப்படுத்தப்படாமல் போகலாம். [மேலும் அறிக](https://web.dev/http-status-code)."
+  },
+  "lighthouse-core/audits/seo/http-status-code.js | failureTitle": {
+    "message": "பக்கத்தில் வெற்றியடையாத HTTP நிலைக் குறியீடு உள்ளது"
+  },
+  "lighthouse-core/audits/seo/http-status-code.js | title": {
+    "message": "பக்கத்தில் வெற்றிகரமான HTTP நிலைக் குறியீடு உள்ளது"
+  },
+  "lighthouse-core/audits/seo/is-crawlable.js | description": {
+    "message": "தேடல் இன்ஜின்களுக்கு உங்கள் பக்கங்களை உருட்டுவதற்கான அனுமதி இல்லையென்றால் அவற்றால் உங்கள் பக்கங்களைத் தேடல் முடிவுகளில் சேர்க்க முடியாது. [மேலும் அறிக](https://web.dev/is-crawable)."
+  },
+  "lighthouse-core/audits/seo/is-crawlable.js | failureTitle": {
+    "message": "பக்கம் அட்டவணைப்படுத்தப்படுவதிலிருந்து தடுக்கப்பட்டுள்ளது"
+  },
+  "lighthouse-core/audits/seo/is-crawlable.js | title": {
+    "message": "பக்கம் அட்டவணைப்படுத்தப்படுவதிலிருந்து தடுக்கப்படவில்லை"
+  },
+  "lighthouse-core/audits/seo/link-text.js | description": {
+    "message": "தேடல் இன்ஜின்கள் உங்கள் உள்ளடக்கத்தைப் புரிந்துகொள்ள இணைப்புக்கான விளக்க உரை உதவும். [மேலும் அறிக](https://web.dev/link-text)."
+  },
+  "lighthouse-core/audits/seo/link-text.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 இணைப்பு உள்ளது}other{# இணைப்புகள் உள்ளன}}"
+  },
+  "lighthouse-core/audits/seo/link-text.js | failureTitle": {
+    "message": "இணைப்புகளுக்கு விளக்க உரை இல்லை"
+  },
+  "lighthouse-core/audits/seo/link-text.js | title": {
+    "message": "இணைப்புகளுக்கு விளக்க உரை உள்ளது"
+  },
+  "lighthouse-core/audits/seo/manual/structured-data.js | description": {
+    "message": "கட்டமைந்த தரவை சரிபார்க்க [கட்டமைந்த தரவு சோதனைக் கருவியையும்](https://search.google.com/structured-data/testing-tool/) [கட்டமைந்த தரவு லிண்டரையும்](http://linter.structured-data.org/) இயக்கவும். [மேலும் அறிக](https://web.dev/structured-data)."
+  },
+  "lighthouse-core/audits/seo/manual/structured-data.js | title": {
+    "message": "கட்டமைந்த தரவு செல்லுபடியாகிறது"
+  },
+  "lighthouse-core/audits/seo/meta-description.js | description": {
+    "message": "பக்கத்தின் உள்ளடக்கத்தைத் தெளிவாக சுருக்கி விளக்குவதற்கு, மீவிளக்கங்களைத் தேடல் முடிவுகளில் சேர்க்கலாம். [மேலும் அறிக](https://web.dev/meta-description)."
+  },
+  "lighthouse-core/audits/seo/meta-description.js | explanation": {
+    "message": "விளக்க உரை காலியாக உள்ளது."
+  },
+  "lighthouse-core/audits/seo/meta-description.js | failureTitle": {
+    "message": "ஆவணத்தில் மீவிளக்கம் இல்லை"
+  },
+  "lighthouse-core/audits/seo/meta-description.js | title": {
+    "message": "ஆவணத்தில் மீவிளக்கம் உள்ளது"
+  },
+  "lighthouse-core/audits/seo/plugins.js | description": {
+    "message": "தேடல் இன்ஜின்களால் செருகுநிரல் உள்ளடக்கத்தை அட்டவணைப்படுத்த முடியாது, செருகுநிரல்களைப் பல சாதனங்கள் கட்டுப்படுத்தும் அல்லது ஆதரிக்காது. [மேலும் அறிக](https://web.dev/plugins)."
+  },
+  "lighthouse-core/audits/seo/plugins.js | failureTitle": {
+    "message": "ஆவணத்தில் செருகுநிரல்கள் உள்ளன"
+  },
+  "lighthouse-core/audits/seo/plugins.js | title": {
+    "message": "ஆவணத்தில் செருகுநிரல்கள் தவிர்க்கப்பட்டுள்ளன"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | description": {
+    "message": "உங்கள் robots.txt கோப்பு தவறான வடிவமைப்பில் இருந்தால் உங்கள் இணையதளத்தை எப்படி உலாவ அல்லது அட்டவணைப்படுத்த விரும்புகிறீர்கள் என்பதை crawlers மென்பொருட்களால் புரிந்துகொள்ள முடியாமல் போகக்கூடும். [மேலும் அறிக](https://web.dev/robots-txt)."
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | displayValueHttpBadCode": {
+    "message": "robots.txtக்கான கோரிக்கை இந்த HTTP நிலையைப் பதிலாக அனுப்பியுள்ளது: {statusCode}"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | displayValueValidationError": {
+    "message": "{itemCount,plural, =1{1 பிழை உள்ளது}other{# பிழைகள் உள்ளன}}"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | explanation": {
+    "message": "Lighthouseஸால் robots.txt கோப்பைப் பதிவிறக்க முடியவில்லை"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | failureTitle": {
+    "message": "robots.txt செல்லுபடியாகவில்லை"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | title": {
+    "message": "robots.txt செல்லுபடியாகிறது"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | description": {
+    "message": "பட்டன்கள், இணைப்புகள் போன்ற எதிர்வினையாற்றும் உறுப்புகள் போதுமான அளவு பெரிதாகவும் (48x48px) அவற்றைச் சுற்றி போதுமான இடத்துடனும் இருக்க வேண்டும், இதனால் அவற்றைப் பிற உறுப்புகளின் குறுக்கீடு இல்லாமல் எளிதாகத் தட்டலாம். [மேலும் அறிக](https://web.dev/tap-targets)."
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | displayValue": {
+    "message": "{decimalProportion, number, percent} தட்டுவதற்கான இலக்குகள் பொருத்தமான அளவில் இருக்கின்றன"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | explanationViewportMetaNotOptimized": {
+    "message": "மொபைல் திரைகளுக்கேற்ப காட்சிப் பகுதி மேலதிகத் தகவல் மேம்படுத்தப்படாததால் தட்டுவதற்கான இலக்குகள் மிகச் சிறிதாக உள்ளன"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | failureTitle": {
+    "message": "தட்டுவதற்கான இலக்குகள் சரியாக அளவிடப்படவில்லை"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | overlappingTargetHeader": {
+    "message": "குறுக்கிடும் இலக்கு"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | tapTargetHeader": {
+    "message": "தட்டுவதற்கான இலக்கு"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | title": {
+    "message": "தட்டுவதற்கான இலக்குகள் சரியாக அளவிடப்பட்டுள்ளன"
+  },
+  "lighthouse-core/audits/service-worker.js | description": {
+    "message": "சேவைச் செயலாக்கி என்பது ஆஃப்லைனில் பணிபுரிவது, முகப்புத்திரையில் சேர்ப்பது, புஷ் அறிவிப்புகள் போன்ற நவீன இணைய ஆப்ஸின் பல்வேறு அம்சங்களை உங்கள் ஆப்ஸ் பயன்படுத்த அனுமதிக்கும் தொழில்நுட்பமாகும். [மேலும் அறிக](https://developers.google.com/web/tools/lighthouse/audits/registered-service-worker)."
+  },
+  "lighthouse-core/audits/service-worker.js | explanationBadManifest": {
+    "message": "சேவைச் செயலாக்கி மூலம் இந்தப் பக்கம் கட்டுப்படுத்தப்படுகிறது, இருப்பினும் சரியான JSON ஆக மெனிஃபெஸ்ட்டைப் பாகுபடுத்த முடியாத காரணத்தால் `start_url` கண்டறியப்படவில்லை"
+  },
+  "lighthouse-core/audits/service-worker.js | explanationBadStartUrl": {
+    "message": "இந்தப் பக்கம் சேவைச் செயலாக்கி மூலம் கட்டுப்படுத்தப்படுகிறது, இருப்பினும் `start_url` ({startUrl}) சேவைச் செயாலாக்கியின் நோக்கத்தில் ({scopeUrl}) இல்லை"
+  },
+  "lighthouse-core/audits/service-worker.js | explanationNoManifest": {
+    "message": "இந்தப் பக்கம் சேவைச் செயலாக்கி மூலம் கட்டுப்படுத்தப்படுகிறது, இருப்பினும் மெனிஃபெஸ்ட் எதுவும் பெறப்படவில்லை என்பதால் `start_url` கண்டறியப்படவில்லை."
+  },
+  "lighthouse-core/audits/service-worker.js | explanationOutOfScope": {
+    "message": "இந்த இணையதளத்தில் ஒன்றோ அதற்கு மேற்பட்ட சேவைச் செயலாக்கிகளோ உள்ளன, இருப்பினும் இந்தப் பக்கம் ({pageUrl}) நோக்கத்தில் இல்லை."
+  },
+  "lighthouse-core/audits/service-worker.js | failureTitle": {
+    "message": "பக்கம், `start_url` போன்றவற்றைக் கட்டுப்படுத்துவதற்கான சேவைச் செயலாக்கி பதிவு செய்யப்படவில்லை"
+  },
+  "lighthouse-core/audits/service-worker.js | title": {
+    "message": "பக்கம், `start_url` போன்றவற்றைக் கட்டுப்படுத்தும் சேவைச் செயலாக்கியைப் பதிவுசெய்யும்."
+  },
+  "lighthouse-core/audits/splash-screen.js | description": {
+    "message": "தங்களின் முகப்புத் திரைகளில் இருந்து உங்களின் ஆப்ஸைப் பயனர்கள் தொடங்கும் போது உயர்தர அனுபவத்தை அவர்கள் பெறுவதை தீம் வண்ணம் அமைக்கப்பட்ட ஸ்பிளாஷ் திரை உறுதிப்படுத்தும். [மேலும் அறிக](https://developers.google.com/web/tools/lighthouse/audits/custom-splash-screen)."
+  },
+  "lighthouse-core/audits/splash-screen.js | failureTitle": {
+    "message": "பிரத்யேக ஸ்பிளாஷ் திரைக்கு உள்ளமைக்கப்படவில்லை"
+  },
+  "lighthouse-core/audits/splash-screen.js | title": {
+    "message": "பிரத்யேக ஸ்பிளாஷ் திரைக்கு உள்ளமைக்கப்பட்டது"
+  },
+  "lighthouse-core/audits/themed-omnibox.js | description": {
+    "message": "உங்களின் தளத்திற்குப் பொருந்தும் வகையில் உலாவி முகவரிப் பட்டியை வண்ணமிட முடியும். [மேலும் அறிக](https://developers.google.com/web/tools/lighthouse/audits/address-bar)."
+  },
+  "lighthouse-core/audits/themed-omnibox.js | failureTitle": {
+    "message": "முகவரிப் பட்டிக்கான தீம் வண்ணத்தை அமைக்க முடியவில்லை."
+  },
+  "lighthouse-core/audits/themed-omnibox.js | title": {
+    "message": "முகவரிப் பட்டிக்கான தீம் வண்ணத்தை அமைக்கும்."
+  },
+  "lighthouse-core/audits/third-party-summary.js | columnBlockingTime": {
+    "message": "முக்கியத் தொடரிழையில் தடுப்பதற்குச் செலவிட்ட நேரம்"
+  },
+  "lighthouse-core/audits/third-party-summary.js | columnThirdParty": {
+    "message": "மூன்றாம் தரப்பு"
+  },
+  "lighthouse-core/audits/third-party-summary.js | description": {
+    "message": "மூன்றாம் தரப்புக் குறியீடானது ஏற்றுதல் செயல்திறனைக் குறிப்பிடத்தக்க வகையில் பாதிக்கக்கூடும். தேவையற்ற மூன்றாம் தரப்பு சேவை வழங்குநர்களின் எண்ணிக்கையைக் குறைத்துக் கொள்ளவும். மேலும் உங்கள் பக்கத்தின் முதன்மை விவரங்களை ஏற்றியபிறகு மூன்றாம் தரப்புக் குறியீட்டை ஏற்ற முயலவும். [மேலும் அறிக](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/loading-third-party-javascript/)."
+  },
+  "lighthouse-core/audits/third-party-summary.js | displayValue": {
+    "message": "{timeInMs, number, milliseconds} msக்கான முக்கியத் தொடரிழையை மூன்றாம் தரப்புக் குறியீடு தடுத்துள்ளது"
+  },
+  "lighthouse-core/audits/third-party-summary.js | failureTitle": {
+    "message": "மூன்றாம் தரப்புக் குறியீட்டின் பாதிப்பைக் குறைக்கவும்"
+  },
+  "lighthouse-core/audits/third-party-summary.js | title": {
+    "message": "மூன்றாம் தரப்பு உபயோகம்"
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | description": {
+    "message": "'முதல் பைட்டின் நேரம்' என்பது உங்கள் சேவையகம் ஒரு பதிலை அனுப்பும் நேரத்தை சுட்டிக்காட்டுகிறது. [மேலும் அறிக](https://developers.google.com/web/tools/lighthouse/audits/ttfb)."
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | displayValue": {
+    "message": "மூல ஆவணம் எடுத்துக் கொண்ட நேரம்: {timeInMs, number, milliseconds} மி.வி."
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | failureTitle": {
+    "message": "சேவையக எதிர்வினை நேரங்களைக் குறைக்கவும் (TTFB)"
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | title": {
+    "message": "சேவையகம் எதிர்வினையாற்றும் நேரங்கள் குறைவாக உள்ளன (TTFB)"
+  },
+  "lighthouse-core/audits/user-timings.js | columnDuration": {
+    "message": "கால அளவு"
+  },
+  "lighthouse-core/audits/user-timings.js | columnStartTime": {
+    "message": "தொடக்க நேரம்"
+  },
+  "lighthouse-core/audits/user-timings.js | columnType": {
+    "message": "வகை"
+  },
+  "lighthouse-core/audits/user-timings.js | description": {
+    "message": "முக்கியமான பயனர் அனுபவங்களின்போது உங்கள் ஆப்ஸின் நிகழ்நேர செயல்திறனை அளவிட உங்கள் ஆப்ஸில் User Timing APIயைப் பயன்படுத்தவும். [மேலும் அறிக](https://developers.google.com/web/tools/lighthouse/audits/user-timing)."
+  },
+  "lighthouse-core/audits/user-timings.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 பயனர் நேரம்}other{# பயனர் நேரங்கள்}}"
+  },
+  "lighthouse-core/audits/user-timings.js | title": {
+    "message": "பயனர் நேரக் குறிப்புகளும் அளவீடுகளும்"
+  },
+  "lighthouse-core/audits/uses-rel-preconnect.js | crossoriginWarning": {
+    "message": "{securityOrigin}க்கான <link> முன்னிணைப்பு கண்டறியப்பட்டது, ஆனால் அது உலாவியால் பயன்படுத்தப்படவில்லை. `crossorigin` பண்புக்கூறை முறையாகப் பயன்படுத்துகிறீர்களா என்று சரிபார்க்கவும்."
+  },
+  "lighthouse-core/audits/uses-rel-preconnect.js | description": {
+    "message": "முக்கிய மூன்றாம் தரப்பு டொமைன்களுடன் விரைவான இணைப்புகளை ஏற்படுத்த `preconnect` அல்லது `dns-prefetch` ஆதாரக் குறிப்புகளைச் சேர்க்கலாம். [மேலும் அறிக](https://developers.google.com/web/fundamentals/performance/resource-prioritization#preconnect)."
+  },
+  "lighthouse-core/audits/uses-rel-preconnect.js | title": {
+    "message": "தேவைப்படும் டொமைன் பெயர்களுக்கு முன்கூட்டியே இணைப்பு வழங்கவும்"
+  },
+  "lighthouse-core/audits/uses-rel-preload.js | crossoriginWarning": {
+    "message": "\"{preloadURL}\"க்கான <link> முன்னிணைப்பு கண்டறியப்பட்டது, ஆனால் உலாவியால் அது பயன்படுத்தப்படவில்லை. `crossorigin` பண்புக்கூறை முறையாகப் பயன்படுத்துகிறீர்களா என்று சரிபார்க்கவும்."
+  },
+  "lighthouse-core/audits/uses-rel-preload.js | description": {
+    "message": "பக்கம் ஏற்றப்படும்போது தற்சமயம் பின்னர் கோரிக்கையளிக்கப்படும் ஆதாரங்களை முன்னுரிமை அளிக்க `<link rel=preload>`ஐப் பயன்படுத்தவும். [மேலும் அறிக](https://developers.google.com/web/tools/lighthouse/audits/preload)."
+  },
+  "lighthouse-core/audits/uses-rel-preload.js | title": {
+    "message": "முக்கியக் கோரிக்கைகளை முன்கூட்டியே ஏற்றவும்"
+  },
+  "lighthouse-core/audits/viewport.js | description": {
+    "message": "மொபைல் திரைகளுக்கு ஏற்றவாறு உங்களின் ஆப்ஸை மேம்படுத்தும் வகையில் `<meta name=\"viewport\">` குறிச்சொல்லைச் சேர்க்கவும். [மேலும் அறிக](https://developers.google.com/web/tools/lighthouse/audits/has-viewport-meta-tag)."
+  },
+  "lighthouse-core/audits/viewport.js | explanationNoTag": {
+    "message": "`<meta name=\"viewport\">` குறிச்சொல் எதுவும் இல்லை"
+  },
+  "lighthouse-core/audits/viewport.js | failureTitle": {
+    "message": "`width` அல்லது `initial-scale` உடன் கூடிய `<meta name=\"viewport\">` குறிச்சொல் அமைக்கப்படவில்லை"
+  },
+  "lighthouse-core/audits/viewport.js | title": {
+    "message": "`width` அல்லது `initial-scale` உடன் `<meta name=\"viewport\">` குறிச்சொல் அமைக்கப்பட்டுள்ளது"
+  },
+  "lighthouse-core/audits/without-javascript.js | description": {
+    "message": "JavaScript முடக்கத்தில் உள்ள போது சில உள்ளடக்கத்தை உங்கள் ஆப்ஸ் காட்ட வேண்டும். அது ஆப்ஸைப் பயன்படுத்த JavaScript தேவை என்ற எச்சரிக்கைச் செய்தியாக இருந்தாலும் பரவாயில்லை. [மேலும் அறிக](https://developers.google.com/web/tools/lighthouse/audits/no-js)."
+  },
+  "lighthouse-core/audits/without-javascript.js | explanation": {
+    "message": "ஸ்கிரிப்ட்கள் இல்லாத போது பக்கம் சில உள்ளடக்கத்தை ரெண்டர் செய்ய வேண்டும்."
+  },
+  "lighthouse-core/audits/without-javascript.js | failureTitle": {
+    "message": "JavaScript முடக்கத்தில் உள்ள போது ஃபால்பேக் உள்ளடக்கத்தை வழங்காது"
+  },
+  "lighthouse-core/audits/without-javascript.js | title": {
+    "message": "JavaScript முடக்கத்தில் உள்ள போது சில உள்ளடக்கம் காட்டப்படும்"
+  },
+  "lighthouse-core/audits/works-offline.js | description": {
+    "message": "நவீன இணைய ஆப்ஸை உருவாக்குகிறீர்கள் எனில் ஆஃப்லைனில் உங்கள் ஆப்ஸ் செயல்படும் வகையில் சேவைச் செயலாக்கியைப் பயன்படுத்தும்படி பரிந்துரைக்கிறோம். [மேலும் அறிக](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)."
+  },
+  "lighthouse-core/audits/works-offline.js | failureTitle": {
+    "message": "ஆஃப்லைனில் உள்ள போது 200 என்ற HTTP நிலைக் குறியீட்டுடன் தற்போதைய பக்கம் விரைவாகப் பதிலளிக்கவில்லை"
+  },
+  "lighthouse-core/audits/works-offline.js | title": {
+    "message": "ஆஃப்லைனில் உள்ள போது 200 என்ற HTTP நிலைக் குறியீட்டுடன் தற்போதைய பக்கம் விரைவாகப் பதிலளிக்கும்"
+  },
+  "lighthouse-core/audits/works-offline.js | warningNoLoad": {
+    "message": "\"{final}\"க்கு உங்களின் சோதனை URL ({requested}) திசைதிருப்பப்பட்டதால் இந்தப் பக்கத்தை ஆஃப்லைனில் ஏற்ற முடியாமல் போகக்கூடும். இரண்டாவது URLஐ நேரடியாகச் சோதித்துப் பார்க்கவும்."
+  },
+  "lighthouse-core/config/default-config.js | a11yAriaGroupDescription": {
+    "message": "இந்த வாய்ப்புகள் உங்கள் ஆப்ஸில் உள்ள ARIAயின் ஆப்ஸை மேம்படுத்தும், இது ஸ்க்ரீன் ரீடர் போன்ற உதவிகரமான தொழில்நுட்பத்தைப் பயன்படுத்தும் பயனர்களின் அனுபவத்தை மேம்படுத்தக்கூடும்."
+  },
+  "lighthouse-core/config/default-config.js | a11yAriaGroupTitle": {
+    "message": "ARIA"
+  },
+  "lighthouse-core/config/default-config.js | a11yAudioVideoGroupDescription": {
+    "message": "இவை ஆடியோவுக்கும் வீடியோவுக்கும் மாற்று உள்ளடக்கத்தை வழங்குவதற்கான வாய்ப்புகளாகும். இது செவித்திறன் அல்லது பார்வைக் குறைபாடுள்ள பயனர்களுக்கான அனுபவத்தை மேம்படுத்தக்கூடும்."
+  },
+  "lighthouse-core/config/default-config.js | a11yAudioVideoGroupTitle": {
+    "message": "ஆடியோ & வீடியோ"
+  },
+  "lighthouse-core/config/default-config.js | a11yBestPracticesGroupDescription": {
+    "message": "இவை பொதுவான அணுகல்தன்மைக்கான சிறந்த நடைமுறைகளைத் தனிப்படுத்துகின்றன."
+  },
+  "lighthouse-core/config/default-config.js | a11yBestPracticesGroupTitle": {
+    "message": "சிறந்த நடைமுறைகள்"
+  },
+  "lighthouse-core/config/default-config.js | a11yCategoryDescription": {
+    "message": "இந்த சரிபார்ப்புகள் [உங்கள் இணைய ஆப்ஸின் அணுகல்தன்மையை மேம்படுத்துவதற்கான](https://developers.google.com/web/fundamentals/accessibility) வாய்ப்புகளைத் தனிப்படுத்திக் காட்டுகின்றன. அணுகல்தன்மை சிக்கல்களில் சிலவற்றை மட்டுமே தானாகக் கண்டறிய முடியும் என்பதால் நேரடி பரிசோதனையையும் செய்ய ஊக்குவிக்கிறோம்."
+  },
+  "lighthouse-core/config/default-config.js | a11yCategoryManualDescription": {
+    "message": "தானியங்கி சோதனைக் கருவியால் சோதிக்க முடியாத பகுதிகளை இவை சோதிக்கும். எங்கள் வழிகாட்டியில் [அணுகல்தன்மை மதிப்பாய்வை நடத்துவதைப்](https://developers.google.com/web/fundamentals/accessibility/how-to-review) பற்றி மேலும் தெரிந்துகொள்ளலாம்."
+  },
+  "lighthouse-core/config/default-config.js | a11yCategoryTitle": {
+    "message": "அணுகல்தன்மை"
+  },
+  "lighthouse-core/config/default-config.js | a11yColorContrastGroupDescription": {
+    "message": "இவை உங்கள் உள்ளடக்கத்தின் நம்பகத்தன்மையை மேம்படுத்துவதற்கான வாய்ப்புகளாகும்."
+  },
+  "lighthouse-core/config/default-config.js | a11yColorContrastGroupTitle": {
+    "message": "ஒளி மாறுபாடு"
+  },
+  "lighthouse-core/config/default-config.js | a11yLanguageGroupDescription": {
+    "message": "இந்த வாய்ப்புகள், பல்வேறு மொழிப் பயனர்கள் உங்கள் உள்ளடக்கத்தைப் புரிந்துகொள்வதற்கான வாய்ப்பினை மேம்படுத்தும்."
+  },
+  "lighthouse-core/config/default-config.js | a11yLanguageGroupTitle": {
+    "message": "சர்வதேசமயமாக்குதல் & உள்ளூர்மயமாக்குதல்"
+  },
+  "lighthouse-core/config/default-config.js | a11yNamesLabelsGroupDescription": {
+    "message": "இந்த வாய்ப்புகள் உங்கள் ஆப்ஸின் கட்டுப்பாடுகளின் பொருள்விளக்கத்தை மேம்படுத்தும். இது ஸ்க்ரீன் ரீடர் போன்ற உதவிகரமான தொழில்நுட்பத்தைப் பயன்படுத்தும் பயனர்களின் அனுபவத்தை மேம்படுத்தக்கூடும்."
+  },
+  "lighthouse-core/config/default-config.js | a11yNamesLabelsGroupTitle": {
+    "message": "பெயர்கள் & லேபிள்கள்"
+  },
+  "lighthouse-core/config/default-config.js | a11yNavigationGroupDescription": {
+    "message": "இவை உங்கள் ஆப்ஸில் கீபோர்டு நேவிகேஷனை மேம்படுத்துவதற்கான வாய்ப்புகளாகும்."
+  },
+  "lighthouse-core/config/default-config.js | a11yNavigationGroupTitle": {
+    "message": "நேவிகேஷன்"
+  },
+  "lighthouse-core/config/default-config.js | a11yTablesListsVideoGroupDescription": {
+    "message": "இவை ஸ்க்ரீன் ரீடர் போன்ற உதவிகரமான தொழில்நுட்பத்தைப் பயன்படுத்தி அட்டவணை அல்லது பட்டியல் தரவைப் படிக்கும் அனுபவத்தை மேம்படுத்துவதற்கான வாய்ப்புகளாகும்."
+  },
+  "lighthouse-core/config/default-config.js | a11yTablesListsVideoGroupTitle": {
+    "message": "டேபிள்கள் & பட்டியல்கள்"
+  },
+  "lighthouse-core/config/default-config.js | bestPracticesCategoryTitle": {
+    "message": "சிறந்த நடைமுறைகள்"
+  },
+  "lighthouse-core/config/default-config.js | budgetsGroupDescription": {
+    "message": "செயல்திறன் பட்ஜெட்கள் உங்கள் தளத்தின் செயல்திறனுக்கான தர நிலைகளை அமைக்கும்."
+  },
+  "lighthouse-core/config/default-config.js | budgetsGroupTitle": {
+    "message": "பட்ஜெட்கள்"
+  },
+  "lighthouse-core/config/default-config.js | diagnosticsGroupDescription": {
+    "message": "உங்கள் ஆப்ஸின் செயல்திறன் பற்றிய மேலும் சில தகவல்கள். இந்த மதிப்புகளானது செயல்திறனின் ஸ்கோரை [நேரடியாகப் பாதிக்காது](https://github.com/GoogleChrome/lighthouse/blob/d2ec9ffbb21de9ad1a0f86ed24575eda32c796f0/docs/scoring.md#how-are-the-scores-weighted)."
+  },
+  "lighthouse-core/config/default-config.js | diagnosticsGroupTitle": {
+    "message": "பகுப்பாய்வு"
+  },
+  "lighthouse-core/config/default-config.js | firstPaintImprovementsGroupDescription": {
+    "message": "திரையில் பிக்சல்கள் எவ்வளவு விரைவாக ரென்டரிங் செய்யப்படுகின்றன என்பது செயல்திறனின் மிக முக்கிய அம்சமாகும். முக்கிய அளவீடுகள்: 'உள்ளடக்கமுள்ள முதல் தோற்றம்', 'அர்த்தமுள்ள முதல் தோற்றம்'"
+  },
+  "lighthouse-core/config/default-config.js | firstPaintImprovementsGroupTitle": {
+    "message": "முதல் தோற்ற மேம்பாடுகள்"
+  },
+  "lighthouse-core/config/default-config.js | loadOpportunitiesGroupDescription": {
+    "message": "இந்தப் பரிந்துரைகள் உங்கள் பக்கத்தை வேகமாக ஏற்ற உதவும். அவை செயல்திறன் ஸ்கோரை [நேரடியாகப் பாதிக்காது](https://github.com/GoogleChrome/lighthouse/blob/d2ec9ffbb21de9ad1a0f86ed24575eda32c796f0/docs/scoring.md#how-are-the-scores-weighted)."
+  },
+  "lighthouse-core/config/default-config.js | loadOpportunitiesGroupTitle": {
+    "message": "பரிந்துரைகள்"
+  },
+  "lighthouse-core/config/default-config.js | metricGroupTitle": {
+    "message": "அளவீடுகள்"
+  },
+  "lighthouse-core/config/default-config.js | overallImprovementsGroupDescription": {
+    "message": "ஒட்டுமொத்தமாகப் பக்கம் ஏற்றப்படும் அனுபவத்தை மேம்படுத்தவும், இதனால் பக்கம் விரைவாக எதிர்வினையாற்றும், அத்துடன் முடிந்தளவு விரைவாகப் பயன்படுத்தத் தயாராக இருக்கும். முக்கிய அளவீடுகள்: 'எதிர்வினை நேரம்', 'வேக அட்டவணை'"
+  },
+  "lighthouse-core/config/default-config.js | overallImprovementsGroupTitle": {
+    "message": "ஒட்டுமொத்த மேம்பாடுகள்"
+  },
+  "lighthouse-core/config/default-config.js | performanceCategoryTitle": {
+    "message": "இணையச் செயல்திறன்"
+  },
+  "lighthouse-core/config/default-config.js | pwaCategoryDescription": {
+    "message": "இந்தச் சரிபார்ப்புகள் நவீன இணைய ஆப்ஸின் அம்சங்களை மதிப்பிடும். [மேலும் அறிக](https://developers.google.com/web/progressive-web-apps/checklist)."
+  },
+  "lighthouse-core/config/default-config.js | pwaCategoryManualDescription": {
+    "message": "பேஸ்லைன் [PWA சரிபார்ப்புப் பட்டியலுக்கு ](https://developers.google.com/web/progressive-web-apps/checklist) இந்தச் சரிபார்ப்புகள் தேவை, இருப்பினும் இவற்றை Lighthouse தானாகச் சரிபார்ப்பதில்லை. அவை உங்களின் ஸ்கோரில் பாதிப்பை ஏற்படுத்தாது, இருப்பினும் நீங்களாகவே அவற்றைச் சரிபார்ப்பது முக்கியமாகும்."
+  },
+  "lighthouse-core/config/default-config.js | pwaCategoryTitle": {
+    "message": "நவீன இணைய ஆப்ஸ்"
+  },
+  "lighthouse-core/config/default-config.js | pwaFastReliableGroupTitle": {
+    "message": "விரைவானது, நம்பகமானது"
+  },
+  "lighthouse-core/config/default-config.js | pwaInstallableGroupTitle": {
+    "message": "நிறுவக்கூடியவை"
+  },
+  "lighthouse-core/config/default-config.js | pwaOptimizedGroupTitle": {
+    "message": "PWA மேம்படுத்தப்பட்டுள்ளது"
+  },
+  "lighthouse-core/config/default-config.js | seoCategoryDescription": {
+    "message": "தேடல் இன்ஜின் முடிவுகளில் ரேங்கிங்கிற்காக உங்கள் பக்கம் உகந்ததாக்கப்பட்டுள்ளதை இந்தச் சரிபார்ப்புகள் உறுதிசெய்யும். உங்கள் தேடல் ரேங்கிங்கைப் பாதிக்கக்கூடிய, Lighthouse சரிபார்க்காத கூடுதல் காரணிகள் உள்ளன. [மேலும் அறிக](https://support.google.com/webmasters/answer/35769)."
+  },
+  "lighthouse-core/config/default-config.js | seoCategoryManualDescription": {
+    "message": "மேலும் சில சிறந்த SEO நடைமுறைகளைச் சோதனை செய்ய, உங்கள் தளத்தில் இந்தக் கூடுதல் வேலிடேட்டர்களை இயக்கவும்."
+  },
+  "lighthouse-core/config/default-config.js | seoCategoryTitle": {
+    "message": "SEO"
+  },
+  "lighthouse-core/config/default-config.js | seoContentGroupDescription": {
+    "message": "ஆப்ஸின் உள்ளடக்கத்தை கிராலர்கள் நன்கு புரிந்துகொள்ள வசதியாக HTMLலைப் பொருத்தமாக வடிவமைக்கவும்."
+  },
+  "lighthouse-core/config/default-config.js | seoContentGroupTitle": {
+    "message": "உள்ளடக்கம் தொடர்பான சிறந்த நடைமுறைகள்"
+  },
+  "lighthouse-core/config/default-config.js | seoCrawlingGroupDescription": {
+    "message": "தேடல் முடிவுகளில் தோன்ற உங்கள் ஆப்ஸிற்கான அணுகல் கிராலர்களுக்குத் தேவை."
+  },
+  "lighthouse-core/config/default-config.js | seoCrawlingGroupTitle": {
+    "message": "கிராலிங் & அட்டவணைப்படுத்துதல்"
+  },
+  "lighthouse-core/config/default-config.js | seoMobileGroupDescription": {
+    "message": "பக்கங்களின் உள்ளடக்கத்தை பயனர்கள் பின்ச் செய்தோ பெரிதாக்கியோ படிக்க வேண்டிய அவசியம் ஏற்படாதவாறு உங்கள் பக்கங்கள் மொபைலுக்கு ஏற்றவையாக இருக்க வேண்டும். [மேலும் அறிக](https://developers.google.com/search/mobile-sites/)."
+  },
+  "lighthouse-core/config/default-config.js | seoMobileGroupTitle": {
+    "message": "மொபைலுக்கேற்றது"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnCacheTTL": {
+    "message": "தற்காலிக நினைவக TTL"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnLocation": {
+    "message": "இடம்"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnName": {
+    "message": "பெயர்"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnRequests": {
+    "message": "கோரிக்கைகள்"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnResourceType": {
+    "message": "ஆதார வகை"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnSize": {
+    "message": "அளவு"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnTimeSpent": {
+    "message": "செலவிட்ட நேரம்"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnTransferSize": {
+    "message": "பரிமாற்ற அளவு"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnURL": {
+    "message": "URL"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnWastedBytes": {
+    "message": "சேமிக்கப்படக்கூடியது"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnWastedMs": {
+    "message": "சேமிக்கப்படக்கூடியது"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | displayValueByteSavings": {
+    "message": "சேமிக்கக்கூடிய அளவு: {wastedBytes, number, bytes} கி.பை."
+  },
+  "lighthouse-core/lib/i18n/i18n.js | displayValueMsSavings": {
+    "message": "சேமிக்கக்கூடிய நேரம்: {wastedMs, number, milliseconds} மி.வி."
+  },
+  "lighthouse-core/lib/i18n/i18n.js | documentResourceType": {
+    "message": "ஆவணம்"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | fontResourceType": {
+    "message": "எழுத்துரு"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | imageResourceType": {
+    "message": "படம்"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | mediaResourceType": {
+    "message": "மீடியா"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | ms": {
+    "message": "{timeInMs, number, milliseconds} மி.வி."
+  },
+  "lighthouse-core/lib/i18n/i18n.js | otherResourceType": {
+    "message": "மற்றவை"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | scriptResourceType": {
+    "message": "ஸ்கிரிப்ட்"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | seconds": {
+    "message": "{timeInMs, number, seconds} வி."
+  },
+  "lighthouse-core/lib/i18n/i18n.js | stylesheetResourceType": {
+    "message": "ஸ்டைல்ஷீட்"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | thirdPartyResourceType": {
+    "message": "மூன்றாம் தரப்பு"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | totalResourceType": {
+    "message": "மொத்தம்"
+  },
+  "lighthouse-core/lib/lh-error.js | badTraceRecording": {
+    "message": "உங்கள் பக்கம் ஏற்றப்படுகையில் டிரேஸைப் பதிவுசெய்யும்போது ஏதோ தவறாகிவிட்டது. Lighthouseஸை மீண்டும் இயக்கவும். ({errorCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | criTimeout": {
+    "message": "முதல் பிழைதிருத்தும் நெறிமுறை இணைப்பிற்கான நேரமுடிவு காத்திருப்பு."
+  },
+  "lighthouse-core/lib/lh-error.js | didntCollectScreenshots": {
+    "message": "பக்கம் ஏற்றப்பட்டபோது ஸ்க்ரீன்ஷாட்கள் எதையும் Chrome சேகரிக்கவில்லை. பக்கத்தில் ஏதேனும் உள்ளடக்கம் காண்பிக்கப்படுவதை உறுதிப்படுத்திக் கொண்டு Lighthouseஸை மீண்டும் இயக்கவும். ({errorCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | dnsFailure": {
+    "message": "வழங்கப்பட்டுள்ள டொமைனை DNS சேவையகங்களால் அடையாளம் காண முடியவில்லை."
+  },
+  "lighthouse-core/lib/lh-error.js | erroredRequiredArtifact": {
+    "message": "தேவைப்படும் {artifactName} சேகரிப்பானில் பிழையொன்று ஏற்பட்டது: {errorMessage}"
+  },
+  "lighthouse-core/lib/lh-error.js | internalChromeError": {
+    "message": "Chrome அகப் பிழை நேர்ந்தது. Chromeமை மீண்டும் தொடங்கி, Lighthouseஸை மீண்டும் இயக்கவும்."
+  },
+  "lighthouse-core/lib/lh-error.js | missingRequiredArtifact": {
+    "message": "தேவைப்படும் {artifactName} சேகரிப்பான் இயங்கவில்லை."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailed": {
+    "message": "நீங்கள் கோரிய பக்கத்தை Lighthouseஸால் முழுமையாக ஏற்ற முடியவில்லை. நீங்கள் சரியான URLலைச் சோதிப்பதையும் அனைத்துக் கோரிக்கைகளுக்கும் சேவையகம் சரியாகப் பதிலளிப்பதையும் உறுதிசெய்யவும்."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedHung": {
+    "message": "பக்கம் பதிலளிப்பதை நிறுத்தியதால் நீங்கள் கோரிய URLலை Lighthouseஸால் முழுமையாக ஏற்ற முடியவில்லை."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedInsecure": {
+    "message": "நீங்கள் வழங்கியுள்ள URLலில் செல்லுபடியாகும் பாதுகாப்பு சான்றிதழ்கள் இல்லை. {securityMessages}"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedInterstitial": {
+    "message": "பக்கத்தை ஏற்றுவதை இடைச்செருகல் திரையொன்றின் மூலம் Chrome தடுத்துவிட்டது. நீங்கள் சரியான URLலைப் பரிசோதிப்பதையும் அனைத்துக் கோரிக்கைகளுக்கும் சேவையகம் முறையாக பதிலளிப்பதையும் உறுதிசெய்து கொள்ளவும்."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedWithDetails": {
+    "message": "நீங்கள் கோரிய பக்கத்தை Lighthouseஸால் முழுமையாக ஏற்ற முடியவில்லை. நீங்கள் சரியான URLலைப் பரிசோதிப்பதையும் அனைத்துக் கோரிக்கைகளுக்கும் சேவையகம் முறையாக பதிலளிப்பதையும் உறுதிசெய்து கொள்ளவும். (விவரங்கள்: {errorDetails})"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedWithStatusCode": {
+    "message": "நீங்கள் கோரிய பக்கத்தை Lighthouseஸால் முழுமையாக ஏற்ற முடியவில்லை. நீங்கள் சரியான URLலைப் பரிசோதிப்பதையும் அனைத்துக் கோரிக்கைகளுக்கும் சேவையகம் முறையாக பதிலளிப்பதையும் உறுதிசெய்து கொள்ளவும். (நிலைக் குறியீடு: {statusCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadTookTooLong": {
+    "message": "உங்கள் பக்கம் ஏற்றப்பட நீண்ட நேரம் எடுத்துக்கொண்டது. பக்கம் ஏற்றப்படும் நேரத்தைக் குறைக்க அறிக்கையிலுள்ள வாய்ப்புகளைப் பின்பற்றி Lighthouseஸை மீண்டும் இயக்கவும். ({errorCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | protocolTimeout": {
+    "message": "DevTools நெறிமுறைக்காகக் காத்திருக்கும் ஒதுக்கப்பட்ட நேரத்தை மீறிவிட்டது. (முறை:{protocolMethod})"
+  },
+  "lighthouse-core/lib/lh-error.js | requestContentTimeout": {
+    "message": "ஒதுக்கப்பட்ட நேரத்தை ஆதார உள்ளடக்கத்தைப் பெறுவதற்கான நேரம் மீறிவிட்டது"
+  },
+  "lighthouse-core/lib/lh-error.js | urlInvalid": {
+    "message": "நீங்கள் அளித்துள்ள URL செல்லாததெனத் தோன்றுகிறது."
+  },
+  "lighthouse-core/report/html/renderer/util.js | auditGroupExpandTooltip": {
+    "message": "தணிக்கைகளைக் காட்டு"
+  },
+  "lighthouse-core/report/html/renderer/util.js | crcInitialNavigation": {
+    "message": "துவக்க நெட்வொர்க் கோரிக்கை"
+  },
+  "lighthouse-core/report/html/renderer/util.js | crcLongestDurationLabel": {
+    "message": "முக்கியக் கோரிக்கைத் தடத்தின் அதிகபட்சத் தாமதம்:"
+  },
+  "lighthouse-core/report/html/renderer/util.js | errorLabel": {
+    "message": "பிழை!"
+  },
+  "lighthouse-core/report/html/renderer/util.js | errorMissingAuditInfo": {
+    "message": "அறிக்கைப் பிழை: தணிக்கைத் தகவல் இல்லை"
+  },
+  "lighthouse-core/report/html/renderer/util.js | labDataTitle": {
+    "message": "ஆய்வகத் தரவு"
+  },
+  "lighthouse-core/report/html/renderer/util.js | lsPerformanceCategoryDescription": {
+    "message": "மாதிரியாக உருவாக்கப்பட்ட மொபைல் நெட்வொர்க்கில் தற்போதைய பக்கத்திற்கான [Lighthouse](https://developers.google.com/web/tools/lighthouse/) பகுப்பாய்வு. மதிப்புகள் தோராயமானவை, மாறுபடக்கூடியவை."
+  },
+  "lighthouse-core/report/html/renderer/util.js | manualAuditsGroupTitle": {
+    "message": "கைமுறையாகச் சரிபார்க்க வேண்டிய கூடுதல் விஷயங்கள்"
+  },
+  "lighthouse-core/report/html/renderer/util.js | notApplicableAuditsGroupTitle": {
+    "message": "பொருந்தாதது"
+  },
+  "lighthouse-core/report/html/renderer/util.js | opportunityResourceColumnLabel": {
+    "message": "பரிந்துரை"
+  },
+  "lighthouse-core/report/html/renderer/util.js | opportunitySavingsColumnLabel": {
+    "message": "தோராயமான சேமிப்பு"
+  },
+  "lighthouse-core/report/html/renderer/util.js | passedAuditsGroupTitle": {
+    "message": "தேர்ச்சி பெற்ற தணிக்கைகள்"
+  },
+  "lighthouse-core/report/html/renderer/util.js | snippetCollapseButtonLabel": {
+    "message": "துணுக்கைச் சுருக்கு"
+  },
+  "lighthouse-core/report/html/renderer/util.js | snippetExpandButtonLabel": {
+    "message": "துணுக்கை விரி"
+  },
+  "lighthouse-core/report/html/renderer/util.js | thirdPartyResourcesLabel": {
+    "message": "மூன்றாம் தரப்பு ஆதாரங்களைக் காட்டு"
+  },
+  "lighthouse-core/report/html/renderer/util.js | toplevelWarningsMessage": {
+    "message": "Lighthouseஸின் இந்த இயக்கத்தைச் சில சிக்கல்கள் பாதிக்கின்றன:"
+  },
+  "lighthouse-core/report/html/renderer/util.js | varianceDisclaimer": {
+    "message": "மதிப்புகள் தோராயமானவை, மாறுபடக்கூடியவை. [இந்த அளவீடுகளின் அடிப்படையில் மட்டுமே](https://github.com/GoogleChrome/lighthouse/blob/d2ec9ffbb21de9ad1a0f86ed24575eda32c796f0/docs/scoring.md#how-are-the-scores-weighted) செயல்திறன் ஸ்கோர் கணக்கிடப்படும்."
+  },
+  "lighthouse-core/report/html/renderer/util.js | warningAuditsGroupTitle": {
+    "message": "தணிக்கைகளில் தேர்ச்சிபெற்றவை, ஆனால் எச்சரிக்கைகள் உள்ளவை"
+  },
+  "lighthouse-core/report/html/renderer/util.js | warningHeader": {
+    "message": "எச்சரிக்கைகள்: "
+  },
+  "stack-packs/packs/wordpress.js | efficient_animated_content": {
+    "message": "உங்கள் GIFஃபை HTML5 வீடியோவாக உட்பொதிந்து கிடைக்கச் செய்யும் சேவையில் பதிவேற்ற முயலுங்கள்."
+  },
+  "stack-packs/packs/wordpress.js | offscreen_images": {
+    "message": "[lazy-load WordPress செருகுநிரலை](https://wordpress.org/plugins/search/lazy+load/) நிறுவி திரைக்கு வெளியிலுள்ள படங்களைத் தேவையான போது ஏற்றும் திறனைப் பெறலாம் அல்லது அந்தத் திறன் கொண்ட தீமிற்கு மாறலாம். [AMP செருகுநிரலையும்](https://wordpress.org/plugins/amp/) பயன்படுத்திப் பார்க்கவும்."
+  },
+  "stack-packs/packs/wordpress.js | render_blocking_resources": {
+    "message": "[முக்கியமான சொத்துகளை முன்னிலைப்படுத்தவோ](https://wordpress.org/plugins/search/critical+css/) [முக்கியத்துவம் குறைவான ஆதாரங்களைத் தவிர்க்கவோ](https://wordpress.org/plugins/search/defer+css+javascript/) உங்களுக்கு உதவக்கூடிய பல WordPress செருகுநிரல்கள் உள்ளன. இந்த செருகுநிரல்கள் வழங்கும் மேம்படுத்துதல்கள் உங்கள் தீமிலோ செருகுநிரலிலோ உள்ள அம்சத்தைப் பாதிக்கலாம். அதனால் நீங்கள் குறியீட்டில் சில மாற்றங்களை செய்ய வேண்டியிருக்கும்."
+  },
+  "stack-packs/packs/wordpress.js | time_to_first_byte": {
+    "message": "தீம்கள், செருகுநிரல்கள், சேவையக விவரக்குறிப்புகள் அனைத்தும் சேவையகத்தின் வேகத்தை நிர்ணயிக்கும். மேலும் மேம்படுத்தப்பட்ட தீமைக் கண்டறிந்து, மேம்படுத்தும் செருகுநிரலைக் கவனமாகத் தேர்ந்தெடுத்து மற்றும்/அல்லது சேவையகத்தை மேம்படுத்தவும்."
+  },
+  "stack-packs/packs/wordpress.js | total_byte_weight": {
+    "message": "இடுகைப் பட்டியல்களில் முக்கியமான பகுதியை மட்டும் காட்டலாம் (உதாரணமாக மேலும் என்ற குறிச்சொல்லுடன்), பக்கத்தில் இடுகைகளின் எண்ணிக்கையைக் குறைக்கலாம், ஒரு பெரிய இடுகையைப் பல சின்ன பக்கங்களாகப் பிரிக்கலாம் அல்லது தேவையுள்ள போது மட்டும் கருத்துகளைச் செருகுநிரல்கள் மூலம் ஏற்றலாம்."
+  },
+  "stack-packs/packs/wordpress.js | unminified_css": {
+    "message": "பல [WordPress செருகுநிரல்கள்](https://wordpress.org/plugins/search/minify+css/) உங்கள் இணையதளத்தில் உள்ள ஸ்டைல்களை சிறிதாக்கியும், சுருக்கியும், ஒன்றிணைத்தும் அதை வேகப்படுத்த முடியும். முடிந்தால், ஸ்கிரிப்ட்களை முன்னதாகவே சிறிதாக்க பதிப்பு முறைமையைப் பயன்படுத்திப் பார்க்கலாம்."
+  },
+  "stack-packs/packs/wordpress.js | unminified_javascript": {
+    "message": "பல [WordPress செருகுநிரல்கள்](https://wordpress.org/plugins/search/minify+javascript/) உங்கள் இணையதளத்திலுள்ள ஸ்கிரிப்ட்களை சிறிதாக்கியும், சுருக்கியும், ஒன்றிணைத்தும் அதை வேகப்படுத்த முடியும். முடிந்தால், ஸ்கிரிப்ட்களை முன்னதாகவே சிறிதாக்க பதிப்பு முறைமையைப் பயன்படுத்திப் பார்க்கலாம்."
+  },
+  "stack-packs/packs/wordpress.js | unused_css_rules": {
+    "message": "உங்கள் பக்கத்தில் [WordPress செருகுநிரல்கள்](https://wordpress.org/plugins/) ஏற்றும் பயன்படுத்தப்படாத CSSஸின் எண்ணிக்கையைக் குறைக்கவும் அல்லது மாற்றிப் பார்க்கவும். Chrome DevToolsஸில் [குறியீட்டுக் கவரேஜ் ](https://developers.google.com/web/updates/2017/04/devtools-release-notes#coverage) என்பதை இயக்கி தேவையற்ற CSSஸை சேர்க்கும் செருகுநிரல்களைக் கண்டறியவும். ஸ்டைல்ஷீட்டின் URLலில் இதற்குக் காரணமான தீம்/செருகுநிரலைக் கண்டறியலாம். அதிகளவு சிவப்பில் உள்ள குறியீட்டுக் கவரேஜைக் கொண்ட பட்டியலில் பல ஸ்டைல்ஷீட்களைக் கொண்ட செருகுநிரல்களைக் கண்டறியவும். இணையப் பக்கத்தில் பயன்படுத்தும் பட்சத்தில் ஒரு செருகுநிரல் ஒரு ஸ்டைல்ஷீட்டை மட்டுமே வரிசையில் சேர்க்க வேண்டும்."
+  },
+  "stack-packs/packs/wordpress.js | unused_javascript": {
+    "message": "உங்கள் பக்கத்தில் [WordPress செருகுநிரல்கள்](https://wordpress.org/plugins/) ஏற்றும் பயன்படுத்தப்படாத JavaScriptகளின் எண்ணிக்கையைக் குறைக்கவும் அல்லது மாற்றிப் பார்க்கவும். Chrome DevToolsஸில் [குறியீட்டுக் கவரேஜ் ](https://developers.google.com/web/updates/2017/04/devtools-release-notes#coverage) என்பதை இயக்கி தேவையற்ற JSகளைச் சேர்க்கும் செருகுநிரல்களைக் கண்டறியவும். ஸ்கிரிப்ட்டின் URLலில் இதற்குக் காரணமான தீம்/செருகுநிரலைக் கண்டறியலாம். அதிகளவு சிவப்பில் உள்ள குறியீட்டுக் கவரேஜைக் கொண்ட பட்டியலில் பல ஸ்கிரிப்ட்களைக் கொண்ட செருகுநிரல்களைக் கண்டறியவும். இணையப் பக்கத்தில் பயன்படுத்தும் பட்சத்தில் ஒரு செருகுநிரல் ஒரு ஸ்கிரிப்ட்டை மட்டுமே வரிசையில் சேர்க்க வேண்டும்."
+  },
+  "stack-packs/packs/wordpress.js | uses_long_cache_ttl": {
+    "message": "[WordPressஸில் உலாவியின் தற்காலிக சேமிப்பு](https://codex.wordpress.org/WordPress_Optimization#Browser_Caching) பற்றித் தெரிந்துகொள்ளவும்."
+  },
+  "stack-packs/packs/wordpress.js | uses_optimized_images": {
+    "message": "[படங்களை மேம்படுத்தும் WordPress செருகுநிரலைப்](https://wordpress.org/plugins/search/optimize+images/) பயன்படுத்தி உங்கள் படங்களின் தரத்திற்குப் பாதிப்பு ஏற்படாமல் சுருக்கலாம்."
+  },
+  "stack-packs/packs/wordpress.js | uses_responsive_images": {
+    "message": "[மீடியா லைப்ரரி](https://codex.wordpress.org/Media_Library_Screen) மூலம் படத்தை நேரடியாகப் பதிவேற்றி சரியான அளவில் கிடைக்கிறதா என்று உறுதிப்படுத்திக் கொள்ளலாம். பிறகு மேம்படுத்தப்பட்ட அளவுகளில் (சிறப்பாகப் பதிலளிக்கும் புள்ளிகளுக்கும் ஏற்ற அளவுகளில்) படங்கள் பயன்படுத்தப்படுவதை உறுதி செய்ய மீடியா லைப்ரரியிலிருந்தோ பட விட்ஜெட்டைப் பயன்படுத்தியோ படங்களைச் செருகலாம். பயன்படுத்த ஏதுவான அளவுகள் உள்ளபோது மட்டுமே `Full Size` படங்களைப் பயன்படுத்தவும். [மேலும் அறிக](https://codex.wordpress.org/Inserting_Images_into_Posts_and_Pages#Image_Size)."
+  },
+  "stack-packs/packs/wordpress.js | uses_text_compression": {
+    "message": "இணையச் சேவையக உள்ளமைவில் உரை சுருக்குதலை இயக்கலாம்."
+  },
+  "stack-packs/packs/wordpress.js | uses_webp_images": {
+    "message": "நீங்கள் பதிவேற்றிய படங்களை மேம்படுத்தப்பட்ட வடிவமைப்புகளுக்குத் தானாக மாற்றும் ஒரு [செருகுநிரலையோ](https://wordpress.org/plugins/search/convert+webp/) சேவையையோ பயன்படுத்தவும்."
+  }
+}
diff --git a/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/te.json b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/te.json
new file mode 100644
index 0000000..16ed719
--- /dev/null
+++ b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/te.json
@@ -0,0 +1,1541 @@
+{
+  "lighthouse-core/audits/accessibility/accesskeys.js | description": {
+    "message": "యాక్సెస్ కీలతో వినియోగదారులు పేజీలోని నిర్దిష్ట భాగంపై వేగంగా దృష్టి సారించగలరు. సక్రమమైన నావిగేషన్ కోసం, ప్రతి యాక్సెస్ కీ తప్పనిసరిగా విభిన్నంగా ఉండాలి. [మరింత తెలుసుకోండి](https://web.dev/accesskeys/)."
+  },
+  "lighthouse-core/audits/accessibility/accesskeys.js | failureTitle": {
+    "message": "'`[accesskey]`' విలువలు విశిష్ఠమైనవి కావు"
+  },
+  "lighthouse-core/audits/accessibility/accesskeys.js | title": {
+    "message": "`[accesskey]` విలువలు ప్రత్యేకమైనవి"
+  },
+  "lighthouse-core/audits/accessibility/aria-allowed-attr.js | description": {
+    "message": "ప్రతి ARIA `role`, `aria-*` లక్షణాల నిర్ధిష్ట సబ్‌సెట్‌కు మద్దతు ఇస్తుంది. వీటికి సరిపోలకపోతే `aria-*` లక్షణాలను చెల్లనివిగా చేస్తుంది. [మరింత తెలుసుకోండి](https://web.dev/aria-allowed-attr/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-allowed-attr.js | failureTitle": {
+    "message": "``[aria-*]`` లక్షణాలు వాటి పాత్రలతో సరిపోలలేదు"
+  },
+  "lighthouse-core/audits/accessibility/aria-allowed-attr.js | title": {
+    "message": "'`[aria-*]`' లక్షణాలు వాటి పాత్రలతో సరిపోలాలి"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-attr.js | description": {
+    "message": "కొన్ని ARIA పాత్రలు మూలకం స్థితిని స్క్రీన్ రీడర్‌లకు వివరించే ఆవశ్యక లక్షణాలను కలిగి ఉన్నాయి. [మరింత తెలుసుకోండి](https://web.dev/aria-required-attr/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-required-attr.js | failureTitle": {
+    "message": "'`[role]`'లలో అవసరమైన అన్ని '`[aria-*]`' లక్షణాలు లేవు"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-attr.js | title": {
+    "message": "'`[role]`'లకు అన్ని అవసరమైన అన్ని '`[aria-*]`' లక్షణాలు ఉన్నాయి"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-children.js | description": {
+    "message": "కొన్ని ARIA మూలాధార పాత్రలు తప్పనిసరిగా నిర్దిష్ట ఉపాంశ పాత్రల కలయికతో వాటి ఉద్దేశిత యాక్సెసిబిలిటీ ఫంక్షన్‌లు సరిగ్గా అమలయ్యే విధంగా ఉండాలి. [మరింత తెలుసుకోండి](https://web.dev/aria-required-children/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-required-children.js | failureTitle": {
+    "message": "నిర్దిష్ట ఉపాంశ '`[role]`'లు అవసరమైన '`[role]`' గల మూలకాలు ఉన్నాయి."
+  },
+  "lighthouse-core/audits/accessibility/aria-required-children.js | title": {
+    "message": "నిర్దిష్ట ఉపాంశ '`[role]`'లు అవసరమైన '`[role]`' గల మూలకాలు ఉన్నాయి"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-parent.js | description": {
+    "message": "కొన్ని ARIA ఉపాంశ పాత్రలు తప్పనిసరిగా నిర్దిష్ట మూలధార పాత్రల కలయికతో వాటి ఉద్దేశిత యాక్సెసిబిలిటీ ఫంక్షన్‌లు సరిగ్గా అమలయ్యే విధంగా ఉండాలి. [మరింత తెలుసుకోండి](https://web.dev/aria-required-parent/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-required-parent.js | failureTitle": {
+    "message": "``[role]``లు వాటి అవసరమైన మూలాధార మూలకంతో లేవు"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-parent.js | title": {
+    "message": "``[role]``లు వాటికి అవసరమైన మూలాధార మూలకాలలో ఉన్నాయి."
+  },
+  "lighthouse-core/audits/accessibility/aria-roles.js | description": {
+    "message": "ARIA పాత్రలు వాటి ఉద్దేశిత యాక్సెసిబిలిటీ ఫంక్షన్‌లను అమలు చేయడానికి తప్పనిసరిగా వాటిలో చెల్లుబాటయ్యే విలువలు ఉండాలి. [మరింత తెలుసుకోండి](https://web.dev/aria-roles/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-roles.js | failureTitle": {
+    "message": "`[role]` విలువలు చెల్లుబాటు అయ్యేవి కావు"
+  },
+  "lighthouse-core/audits/accessibility/aria-roles.js | title": {
+    "message": "`[role]` విలువలు చెల్లుబాటు అయ్యేవి"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr-value.js | description": {
+    "message": "స్క్రీన్ రీడర్‌ల లాంటి సహాయక సాంకేతిక పరిజ్ఞానాలు చెల్లుబాటు కాని విలువలు గల ARIA లక్షణాలను అర్థం చేసుకోలేవు. [మరింత తెలుసుకోండి](https://web.dev/aria-valid-attr-value/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr-value.js | failureTitle": {
+    "message": "'`[aria-*]`' లక్షణాలలో చెల్లుబాటయ్యే విలువలు లేవు"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr-value.js | title": {
+    "message": "'`[aria-*]`' లక్షణాలు చెల్లుబాటయ్యే విలువలను కలిగి ఉన్నాయి"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr.js | description": {
+    "message": "స్క్రీన్ రీడర్‌ల లాంటి సహాయక సాంకేతిక పరిజ్ఞానాలు చెల్లుబాటు కాని పేర్లు గల ARIA లక్షణాలను అర్థం చేసుకోలేవు. [మరింత తెలుసుకోండి](https://web.dev/aria-valid-attr/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr.js | failureTitle": {
+    "message": "``[aria-*]`` లక్షణాలు చెల్లుబాటు అయ్యేవి కావు లేదా అక్షరదోషాలు ఉన్నాయి"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr.js | title": {
+    "message": "``[aria-*]`` లక్షణాలు చెల్లుబాటు అయ్యేవి, అక్షరదోషాలేవీ లేవు"
+  },
+  "lighthouse-core/audits/accessibility/audio-caption.js | description": {
+    "message": "శీర్షికల సహాయంతో ఆడియో మూలకాలలో ఏమి ఉన్నది చెవిటి లేదా వినికిడి సమస్య ఉన్న వినియోగదారులు అర్థం చేసుకోగలరు, దీని ద్వారా ఎవరు మాట్లాడుతున్నారు, ఏమి చెబుతున్నారు లాంటి కీలకమైన సమాచారం, ఇతర సంభాషణేతర సమాచారం అందించబడుతుంది. [మరింత తెలుసుకోండి](https://web.dev/audio-caption/)."
+  },
+  "lighthouse-core/audits/accessibility/audio-caption.js | failureTitle": {
+    "message": "'`<audio>`' మూలకాలలో '`[kind=\"captions\"]`'తో '`<track>`' మూలకం లేదు."
+  },
+  "lighthouse-core/audits/accessibility/audio-caption.js | title": {
+    "message": "'`<audio>`' మూలకాలు '`[kind=\"captions\"]`'తో '`<track>`' మూలకం కలిగి ఉన్నాయి"
+  },
+  "lighthouse-core/audits/accessibility/axe-audit.js | failingElementsHeader": {
+    "message": "విఫలం అవుతున్న మూలకాలు"
+  },
+  "lighthouse-core/audits/accessibility/button-name.js | description": {
+    "message": "ఒక బటన్‌కు యాక్సెస్ చేయదగిన పేరు లేనప్పుడు, స్క్రీన్ రీడర్‌లు దానిని \"బటన్\"గా ప్రకటిస్తాయి, తద్వారా స్క్రీన్ రీడర్‌లపై ఆధారపడే వినియోగదారులకు నిరుపయోగమైనవిగా చేస్తాయి. [మరింత తెలుసుకోండి](https://web.dev/button-name/)."
+  },
+  "lighthouse-core/audits/accessibility/button-name.js | failureTitle": {
+    "message": "బటన్‌లకు యాక్సెస్‌కి తగిన పేరు లేదు"
+  },
+  "lighthouse-core/audits/accessibility/button-name.js | title": {
+    "message": "బటన్‌లు యాక్సెస్ చేయదగిన పేరును కలిగి ఉన్నాయి"
+  },
+  "lighthouse-core/audits/accessibility/bypass.js | description": {
+    "message": "పునరావృత కంటెంట్‌ను దాటవేయడానికి మార్గాలను జోడించడం వలన కీబోర్డ్ వినియోగదారులు పేజీలో మరింత సమర్థవంతంగా నావిగేట్ చేయగలరు. [మరింత తెలుసుకోండి](https://web.dev/bypass/)."
+  },
+  "lighthouse-core/audits/accessibility/bypass.js | failureTitle": {
+    "message": "పేజీలో ముఖ్యశీర్షిక, దాటివేత లింక్ లేదా ల్యాండ్‌మార్క్ ప్రాంతం లేవు"
+  },
+  "lighthouse-core/audits/accessibility/bypass.js | title": {
+    "message": "పేజీలో ముఖ్య శీర్షిక, దాటివేత లింక్ లేదా ల్యాండ్‌మార్క్ ప్రాంతం ఉన్నాయి"
+  },
+  "lighthouse-core/audits/accessibility/color-contrast.js | description": {
+    "message": "తక్కువ వర్ణభేద వచనం- చాలా మంది వినియోగదారులు చదవడానికి కష్టసాధ్యమైనది లేదా అసలు సాధ్యం కానిది. [మరింత తెలుసుకోండి](https://web.dev/color-contrast/)."
+  },
+  "lighthouse-core/audits/accessibility/color-contrast.js | failureTitle": {
+    "message": "నేపథ్యం, ముందువైపు రంగులు తగినంత వర్ణభేద నిష్పత్తితో లేవు"
+  },
+  "lighthouse-core/audits/accessibility/color-contrast.js | title": {
+    "message": "నేపథ్యం మరియు ముందువైపు రంగులు తగినంత వర్ణభేద నిష్పత్తితో ఉంటున్నాయి"
+  },
+  "lighthouse-core/audits/accessibility/definition-list.js | description": {
+    "message": "నిర్వచన జాబితాలను సరిగ్గా గుర్తు పట్టే విధంగా సెట్ చేయనప్పుడు, స్క్రీన్ రీడర్‌లు అయోమయానికి గురి చేసే లేదా అనిర్దిష్టమైన అవుట్‌పుట్‌ను అందించవచ్చు. [మరింత తెలుసుకోండి](https://web.dev/definition-list/)."
+  },
+  "lighthouse-core/audits/accessibility/definition-list.js | failureTitle": {
+    "message": "'`<dl>`'లకు సంబంధించి కేవలం సక్రమంగా ఆర్డర్ చేసిన ఏకైక '`<dt>`', '`<dd>`' సమూహాలు, '`<script>`' లేదా '`<template>`' మూలకాలతో ఉండకూడదు."
+  },
+  "lighthouse-core/audits/accessibility/definition-list.js | title": {
+    "message": "'`<dl>`'లలో కేవలం సక్రమంగా ఆర్డర్ చేసిన '`<dt>`', '`<dd>`' సమూహాలు, '`<script>`' లేదా '`<template>`' మూలకాలు ఉన్నాయి."
+  },
+  "lighthouse-core/audits/accessibility/dlitem.js | description": {
+    "message": "స్క్రీన్ రీడర్‌లు నిర్వచన జాబితా అంశాలను ('`<dt>`', '`<dd>`') సక్రమంగా ప్రకటించడం కోసం వాటిని తప్పనిసరిగా మూలాధార '`<dl>`' మూలకంలో సర్దుబాటు చేయాలి. [మరింత తెలుసుకోండి](https://web.dev/dlitem/)."
+  },
+  "lighthouse-core/audits/accessibility/dlitem.js | failureTitle": {
+    "message": "నిర్వచన జాబితా అంశాలు '`<dl>`' మూలకాలలో సర్దుబాటు చేయబడలేదు"
+  },
+  "lighthouse-core/audits/accessibility/dlitem.js | title": {
+    "message": "నిర్వచన జాబితా అంశాలు '`<dl>`' మూలకాలలో సర్దుబాటు చేయబడ్డాయి"
+  },
+  "lighthouse-core/audits/accessibility/document-title.js | description": {
+    "message": "శీర్షిక అన్నది స్క్రీన్ రీడర్ వినియోగదారులకు పేజీ గురించి అవగాహన కలుగజేస్తుంది, అలాగే శోధన ఇంజిన్ వినియోగదారులు ఒక పేజీ వారి శోధనకు సంబంధితమైనదో కాదో గుర్తించడానికి చాలా ఎక్కువగా దీనిపై ఆధారపడుతుంటారు. [మరింత తెలుసుకోండి](https://web.dev/document-title/)."
+  },
+  "lighthouse-core/audits/accessibility/document-title.js | failureTitle": {
+    "message": "పత్రంలో '`<title>`' మూలకం లేదు"
+  },
+  "lighthouse-core/audits/accessibility/document-title.js | title": {
+    "message": "పత్రంలో '`<title>`' మూలకం ఉంది"
+  },
+  "lighthouse-core/audits/accessibility/duplicate-id.js | description": {
+    "message": "సహాయకర సాంకేతిక పరిజ్ఞానాల ద్వారా ఇతర సందర్భాలు విస్మరించబడకుండా నిరోధించడానికి id లక్షణం విలువ ప్రత్యేకంగా ఉండాలి. [మరింత తెలుసుకోండి](https://web.dev/duplicate-id/)."
+  },
+  "lighthouse-core/audits/accessibility/duplicate-id.js | failureTitle": {
+    "message": "పేజీలోని ``[id]`` లక్షణాలు విశిష్ఠమైనవి కావు"
+  },
+  "lighthouse-core/audits/accessibility/duplicate-id.js | title": {
+    "message": "పేజీలోని ``[id]`` లక్షణాలు విశిష్ఠంగా ఉన్నాయి"
+  },
+  "lighthouse-core/audits/accessibility/frame-title.js | description": {
+    "message": "స్క్రీన్ రీడర్ వినియోగదారులు ఫ్రేమ్‌ల కంటెంట్‌లను వివరించడానికి ఫ్రేమ్ శీర్షికలపై ఆధారపడతారు. [మరింత తెలుసుకోండి](https://web.dev/frame-title/)."
+  },
+  "lighthouse-core/audits/accessibility/frame-title.js | failureTitle": {
+    "message": "'`<frame>`' లేదా '`<iframe>`' మూలకాలకు పేరు అందించలేదు"
+  },
+  "lighthouse-core/audits/accessibility/frame-title.js | title": {
+    "message": "'`<frame>`' లేదా '`<iframe>`' మూలకాలలో శీర్షికలు ఉన్నాయి"
+  },
+  "lighthouse-core/audits/accessibility/html-has-lang.js | description": {
+    "message": "ఒక పేజీలో భాషా లక్షణాన్ని పేర్కొనకుంటే, స్క్రీన్ రీడర్‌ను సెట్ చేస్తున్నప్పుడు వినియోగదారు ఎంచుకున్న డిఫాల్ట్ భాషలో పేజీ ఉందని స్క్రీన్ రీడర్ భావిస్తుంది. ఒకవేళ ఆ పేజీ డిఫాల్ట్ భాషలో లేకపోతే, ఆ పేజీలోని వచనాన్ని స్క్రీన్ రీడర్ సరిగ్గా చదివి వినిపించలేకపోవచ్చు. [మరింత తెలుసుకోండి](https://web.dev/html-has-lang/)."
+  },
+  "lighthouse-core/audits/accessibility/html-has-lang.js | failureTitle": {
+    "message": "'`<html>`' మూలకంలో '`[lang]`' మూలకం లేదు"
+  },
+  "lighthouse-core/audits/accessibility/html-has-lang.js | title": {
+    "message": "'`<html>`' మూలకంలో `[lang]` లక్షణం ఉంది"
+  },
+  "lighthouse-core/audits/accessibility/html-lang-valid.js | description": {
+    "message": "చెల్లుబాటయ్యే [BCP 47 భాష](https://www.w3.org/International/questions/qa-choosing-language-tags#question)ను పేర్కొనడం అనేది, వచనాన్ని సక్రమంగా ప్రకటించడంలో స్క్రీన్ రీడర్‌లకు సహాయపడుతుంది. [మరింత తెలుసుకోండి](https://web.dev/html-lang-valid/)."
+  },
+  "lighthouse-core/audits/accessibility/html-lang-valid.js | failureTitle": {
+    "message": "'`<html>`' మూలకంలో దాని '`[lang]`' లక్షణం కోసం చెల్లుబాటయ్యే విలువ లేదు."
+  },
+  "lighthouse-core/audits/accessibility/html-lang-valid.js | title": {
+    "message": "'`<html>`' మూలకంలో దాని '`[lang]`' లక్షణానికి చెల్లుబాటయ్యే విలువ ఉంది"
+  },
+  "lighthouse-core/audits/accessibility/image-alt.js | description": {
+    "message": "సమాచార మూలకాలు సంక్షిప్తమైన, వివరణాత్మక ప్రత్యామ్నాయ వచనాన్ని లక్ష్యంగా చేసుకోవాలి. అలంకార మూలకాలను ఖాళీ alt లక్షణంతో విస్మరించవచ్చు. [మరింత తెలుసుకోండి](https://web.dev/image-alt/)."
+  },
+  "lighthouse-core/audits/accessibility/image-alt.js | failureTitle": {
+    "message": "చిత్రం మూలకాలలో '`[alt]`' లక్షణాలు ఏవీ లేవు"
+  },
+  "lighthouse-core/audits/accessibility/image-alt.js | title": {
+    "message": "చిత్ర మూలకాలు '`[alt]`' లక్షణాలను కలిగి ఉన్నాయి"
+  },
+  "lighthouse-core/audits/accessibility/input-image-alt.js | description": {
+    "message": "ఒక చిత్రం '`<input>`' బటన్‌గా ఉపయోగిస్తున్నప్పుడు, ప్రత్యామ్నాయ వచనం అందించడమనేది బటన్ ప్రయోజనాన్ని అర్థం చేసుకోవడంలో స్క్రీన్ రీడర్ వినియోగదారులకు సహాయం చేస్తుంది. [మరింత తెలుసుకోండి](https://web.dev/input-image-alt/)."
+  },
+  "lighthouse-core/audits/accessibility/input-image-alt.js | failureTitle": {
+    "message": "'`<input type=\"image\">`' మూలకాలలో '`[alt]`' వచనం లేదు"
+  },
+  "lighthouse-core/audits/accessibility/input-image-alt.js | title": {
+    "message": "'`<input type=\"image\">`' మూలకాలు '`[alt]`' వచనాన్ని కలిగి ఉన్నాయి"
+  },
+  "lighthouse-core/audits/accessibility/label.js | description": {
+    "message": "స్క్రీన్ రీడర్‌ల లాంటి సహాయక సాంకేతిక పరిజ్ఞానాల ద్వారా ఫారమ్ నియంత్రణలు సక్రమంగా ప్రకటించబడుతున్నాయని లేబుల్‌లు నిర్ధారిస్తున్నాయి. [మరింత తెలుసుకోండి](https://web.dev/label/)."
+  },
+  "lighthouse-core/audits/accessibility/label.js | failureTitle": {
+    "message": "ఫారమ్ మూలకాలలో అనుబంధిత లేబుల్‌లు లేవు"
+  },
+  "lighthouse-core/audits/accessibility/label.js | title": {
+    "message": "ఫారమ్ మూలకాలు అనుబంధిత లేబుల్‌లను కలిగి ఉన్నాయి"
+  },
+  "lighthouse-core/audits/accessibility/layout-table.js | description": {
+    "message": "లేఅవుట్ ప్రయోజనాల కోసం ఉపయోగించే పట్టికలో th లాంటి డేటా మూలకాలు లేదా శీర్షిక మూలకాలు లేదా సారంశ లక్షణం ఉండకూడదు, ఎందుకంటే ఇది స్క్రీన్ రీడర్ వినియోగదారులకు గందరగోళమైన అనుభవాన్ని అందించవచ్చు. [మరింత తెలుసుకోండి](https://web.dev/layout-table/)."
+  },
+  "lighthouse-core/audits/accessibility/layout-table.js | failureTitle": {
+    "message": "ప్రదర్శన సంబంధిత '`<table>`' మూలకాలలో '`<th>`', '`<caption>`' లేదా '`[summary]`' లక్షణాన్ని వినియోగించడం నివారించబడలేదు."
+  },
+  "lighthouse-core/audits/accessibility/layout-table.js | title": {
+    "message": "ప్రదర్శన సంబంధిత '`<table>`' మూలకాలు '`<th>`', '`<caption>`' లేదా `[summary]` లక్షణాన్ని వినియోగించడం నివారిస్తున్నాయి."
+  },
+  "lighthouse-core/audits/accessibility/link-name.js | description": {
+    "message": "కనుగొనదగిన, విశిష్ఠమైన, దృష్టి కేంద్రీకరించగలిగిన లింక్ వచనం (అలాగే చిత్రాలను లింక్‌లుగా ఉపయోగించినప్పుడు వాటి ప్రత్యామ్నాయ వచనం) సహాయంతో స్క్రీన్ రీడర్ వినియోగదారులకు నావిగేషన్ అనుభవం మరింత మెరుగవుతుంది. [మరింత తెలుసుకోండి](https://web.dev/link-name/)."
+  },
+  "lighthouse-core/audits/accessibility/link-name.js | failureTitle": {
+    "message": "లింక్‌లలో కనుగొనదగిన పేరు లేదు"
+  },
+  "lighthouse-core/audits/accessibility/link-name.js | title": {
+    "message": "లింక్‌లలో కనుగొనదగిన పేరు ఉంది"
+  },
+  "lighthouse-core/audits/accessibility/list.js | description": {
+    "message": "స్క్రీన్ రీడర్‌లు, జాబితాలను ఒక నిర్దిష్ట రకమైన రీతిలో ప్రకటిస్తాయి. జాబితా నిర్మాణక్రమం సక్రమ రీతిలో ఉందని నిర్ధారించుకుంటే, అది స్క్రీన్ రీడర్ అవుట్‌పుట్‌కు ఉపకరిస్తుంది. [మరింత తెలుసుకోండి](https://web.dev/list/)."
+  },
+  "lighthouse-core/audits/accessibility/list.js | failureTitle": {
+    "message": "జాబితాలు కేవలం '`<li>`' మూలకాలు, స్క్రిప్ట్ మద్దతు మూలకాలు ('`<script>`', '`<template>`')తో ఉండకూడదు."
+  },
+  "lighthouse-core/audits/accessibility/list.js | title": {
+    "message": "జాబితాలలో కేవలం '`<li>`' మూలకాలు, స్క్రిప్ట్ మద్దతు మూలకాలు (`<script>`, `<template>`) మాత్రమే ఉన్నాయి."
+  },
+  "lighthouse-core/audits/accessibility/listitem.js | description": {
+    "message": "జాబితా అంశాలను ('`<li>`') స్క్రీన్ రీడర్‌లు సక్రమంగా ప్రకటించాలంటే, వాటిని మూలాధార అంశం '`<ul>`' లేదా '`<ol>`'లో ఉంచాలి. [మరింత తెలుసుకోండి](https://web.dev/listitem/)."
+  },
+  "lighthouse-core/audits/accessibility/listitem.js | failureTitle": {
+    "message": "జాబితా అంశాలు ('`<li>`') అన్నవి '`<ul>`' లేదా '`<ol>`' మూలాధార మూలకాలలో లేవు."
+  },
+  "lighthouse-core/audits/accessibility/listitem.js | title": {
+    "message": "జాబితా అంశాలు ('`<li>`') అనేవి '`<ul>`' లేదా '`<ol>`' అనే మూలాధార మూలకాలలో భాగంగా ఉంటాయి"
+  },
+  "lighthouse-core/audits/accessibility/meta-refresh.js | description": {
+    "message": "వినియోగదారులు పేజీ ఆటోమేటిక్‌గా రిఫ్రెష్ కావాలని కోరుకోరు, అలా చేయడం వలన దృష్టి కేంద్రీకరణ తిరిగి పేజీ పైభాగంలోకి వెళ్తుంది. ఇది విసుగు తెప్పించే లేదా అయోమయానికి గురి చేసే అనుభవం అందించవచ్చు. [మరింత తెలుసుకోండి](https://web.dev/meta-refresh/)."
+  },
+  "lighthouse-core/audits/accessibility/meta-refresh.js | failureTitle": {
+    "message": "పత్రం '`<meta http-equiv=\"refresh\">`'ను వినియోగిస్తోంది"
+  },
+  "lighthouse-core/audits/accessibility/meta-refresh.js | title": {
+    "message": "పత్రంలో '`<meta http-equiv=\"refresh\">`'ను వినియోగించలేదు"
+  },
+  "lighthouse-core/audits/accessibility/meta-viewport.js | description": {
+    "message": "జూమ్ చేయగల సామర్థ్యం నిలిపివేస్తే, స్క్రీన్ మ్యాగ్నిఫికేషన్‌పై ఆధారపడే తక్కువ కంటిచూపు ఉన్న వినియోగదారులు వెబ్ పేజీ కంటెంట్‌లను సరిగ్గా చూడలేరు. [మరింత తెలుసుకోండి](https://web.dev/meta-viewport/)."
+  },
+  "lighthouse-core/audits/accessibility/meta-viewport.js | failureTitle": {
+    "message": "'`[user-scalable=\"no\"]`' అన్నది '`<meta name=\"viewport\">`' మూలకంలో ఉపయోగించబడింది, అలాగే '`[maximum-scale]`' లక్షణం 5 కంటే తక్కువ ఉంది."
+  },
+  "lighthouse-core/audits/accessibility/meta-viewport.js | title": {
+    "message": "'`[user-scalable=\"no\"]`' అన్నది '`<meta name=\"viewport\">`' మూలకంలో ఉపయోగించలేదు, అలాగే '`[maximum-scale]`' లక్షణం 5 కంటే తక్కువగా లేదు."
+  },
+  "lighthouse-core/audits/accessibility/object-alt.js | description": {
+    "message": "స్క్రీన్ రీడర్‌లు వచనేతర కంటెంట్‌ను అనువదించలేవు. '`<object>`' మూలకాలకు ప్రత్యామ్నాయ వచనాన్ని జోడించడం వలన స్క్రీన్ రీడర్‌లు వాటి అర్థాన్ని వినియోగదారులకు సరిగ్గా అందించగలుగుతాయి. [మరింత తెలుసుకోండి](https://web.dev/object-alt/)."
+  },
+  "lighthouse-core/audits/accessibility/object-alt.js | failureTitle": {
+    "message": "'`<object>`' మూలకాలలో '`[alt]`' వచనం లేదు"
+  },
+  "lighthouse-core/audits/accessibility/object-alt.js | title": {
+    "message": "'`<object>`' మూలకాలు '`[alt]`' వచనాన్ని కలిగి ఉన్నాయి"
+  },
+  "lighthouse-core/audits/accessibility/tabindex.js | description": {
+    "message": "0 కంటే పెద్ద విలువ విశిష్ఠమైన నావిగేషన్ క్రమాన్ని సూచిస్తుంది. సాంకేతికంగా చెల్లుబాటు అయినప్పటికీ, సహాయక సాంకేతిక పరిజ్ఞానంపై ఆధారపడిన వినియోగదారులకు ఇది తరచూ విసుగు తెప్పించే అనుభవాలను సృష్టిస్తుంది. [మరింత తెలుసుకోండి](https://web.dev/tabindex/)."
+  },
+  "lighthouse-core/audits/accessibility/tabindex.js | failureTitle": {
+    "message": "కొన్ని మూలకాలు 0 కంటే పెద్దవైన ``[tabindex]`` విలువను కలిగి ఉన్నాయి"
+  },
+  "lighthouse-core/audits/accessibility/tabindex.js | title": {
+    "message": "ఏ మూలకానికీ సున్నా కంటే పెద్ద ``[tabindex]`` విలువ లేదు"
+  },
+  "lighthouse-core/audits/accessibility/td-headers-attr.js | description": {
+    "message": "పట్టికలను నావిగేట్ చేయడం సులభతరం చేసే ఫీచర్‌లు స్క్రీన్ రీడర్‌లలో ఉంటాయి. '`[headers]`' లక్షణాన్ని ఉపయోగిస్తున్న '`<td>`' సెల్‌లు కేవలం అదే పట్టికలోని ఇతర సెల్‌లను సూచించడం స్క్రీన్ రీడర్ వినియోగదారుల అనుభవాన్ని మెరుగుపరచవచ్చు. [మరింత తెలుసుకోండి](https://web.dev/td-headers-attr/)."
+  },
+  "lighthouse-core/audits/accessibility/td-headers-attr.js | failureTitle": {
+    "message": "'`<table>`' మూలకంలో '`[headers]`' లక్షణాన్ని ఉపయోగించే సెల్‌లు కేవలం అదే పట్టికలోని ఇతర సెల్‌లను సూచిస్తాయి."
+  },
+  "lighthouse-core/audits/accessibility/td-headers-attr.js | title": {
+    "message": "'`<table>`' మూలకంలో '`[headers]`' లక్షణాన్ని వినియోగించే సెల్‌లు కేవలం అదే పట్టికలోని ఇతర సెల్‌లకు మాత్రమే సూచించబడతాయి."
+  },
+  "lighthouse-core/audits/accessibility/th-has-data-cells.js | description": {
+    "message": "పట్టికలను నావిగేట్ చేయడం సులభతరం చేసే ఫీచర్‌లు స్క్రీన్ రీడర్‌లలో ఉంటాయి. పట్టిక ముఖ్య శీర్షికలు ఎల్లప్పుడూ కొన్ని సెల్‌ల సెట్‌ను సూచించేలా నిర్ధారించుకోవడం ద్వారా స్క్రీన్ రీడర్ వినియోగదారుల అనుభవాన్ని మెరుగుపరచవచ్చు. [మరింత తెలుసుకోండి](https://web.dev/th-has-data-cells/)."
+  },
+  "lighthouse-core/audits/accessibility/th-has-data-cells.js | failureTitle": {
+    "message": "'`<th>`' మూలకాలలో, అలాగే '`[role=\"columnheader\"/\"rowheader\"]`' కలిగి ఉండే మూలకాలలో అవి వివరిస్తున్న డేటా సెల్‌లు లేవు."
+  },
+  "lighthouse-core/audits/accessibility/th-has-data-cells.js | title": {
+    "message": "'`<th>`' మూలకాలు, '`[role=\"columnheader\"/\"rowheader\"]`' కలిగి ఉన్న మూలకాలలో అవి వివరిస్తున్న డేటా సెల్‌లు ఉన్నాయి."
+  },
+  "lighthouse-core/audits/accessibility/valid-lang.js | description": {
+    "message": "మూలకాలలో చెల్లుబాటయ్యే [BCP 47 భాష](https://www.w3.org/International/questions/qa-choosing-language-tags#question) పేర్కొనడం అన్నది, వచనాన్ని స్క్రీన్ రీడర్ సరిగ్గా ఉచ్చరించేలా నిర్ధారిస్తుంది. [మరింత తెలుసుకోండి](https://web.dev/valid-lang/)."
+  },
+  "lighthouse-core/audits/accessibility/valid-lang.js | failureTitle": {
+    "message": "``[lang]`` లక్షణాలలో చెల్లుబాటు అయ్యే విలువ లేదు"
+  },
+  "lighthouse-core/audits/accessibility/valid-lang.js | title": {
+    "message": "'`[lang]`' లక్షణాలు చెల్లుబాటయ్యే విలువను కలిగి ఉన్నాయి"
+  },
+  "lighthouse-core/audits/accessibility/video-caption.js | description": {
+    "message": "వీడియోకు శీర్షికను అందిస్తే, చెవిటి వారు లేదా వినికిడి సమస్య ఉన్న వినియోగదారులు వీడియోలోని సమాచారాన్ని సులభంగా యాక్సెస్ చేయగలుగుతారు. [మరింత తెలుసుకోండి](https://web.dev/video-caption/)."
+  },
+  "lighthouse-core/audits/accessibility/video-caption.js | failureTitle": {
+    "message": "'`<video>`' మూలకాలలో '`[kind=\"captions\"]`'తో '`<track>`' మూలకం లేదు."
+  },
+  "lighthouse-core/audits/accessibility/video-caption.js | title": {
+    "message": "'`<video>`' మూలకాలు '`[kind=\"captions\"]`'తో '`<track>`' మూలకం కలిగి ఉన్నాయి"
+  },
+  "lighthouse-core/audits/accessibility/video-description.js | description": {
+    "message": "డైలాగ్‌లతో కాకుండా, ముఖంలోని హావభావాలు, దృశ్యాలతో నిండిన వీడియోలకు ఆడియో వివరణలు సంబంధిత సమాచారాన్ని అందిస్తాయి. [మరింత తెలుసుకోండి](https://web.dev/video-description/)."
+  },
+  "lighthouse-core/audits/accessibility/video-description.js | failureTitle": {
+    "message": "'`<video>`' మూలకాలలో '`[kind=\"description\"]`'తో '`<track>`' మూలకం లేదు."
+  },
+  "lighthouse-core/audits/accessibility/video-description.js | title": {
+    "message": "'`<video>`' మూలకాలు '`[kind=\"description\"]`'తో '`<track>`' మూలకం కలిగి ఉన్నాయి"
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | description": {
+    "message": "వినియోగదారులు హోమ్ స్క్రీన్‌కు ప్రోగ్రెసివ్ వెబ్ యాప్‌ను జోడించినప్పుడు, iOSలో ఉత్తమ ప్రదర్శన కోసం, '`apple-touch-icon`'ను నిర్వచించండి. అది తప్పనిసరిగా పారదర్శకం కాని 192px (లేదా 180px) చతురస్రాకార PNGని సూచించాలి. [మరింత తెలుసుకోండి](https://developers.google.com/web/fundamentals/design-and-ux/browser-customization/)."
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | failureTitle": {
+    "message": "చెల్లుబాటయ్యే '`apple-touch-icon`' లేదు"
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | precomposedWarning": {
+    "message": "'`apple-touch-icon-precomposed`' గడువు ముగిసింది, `apple-touch-icon`ను ప్రాధాన్యంగా తీసుకోవాలి."
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | title": {
+    "message": "చెల్లుబాటు అయ్యే '`apple-touch-icon`'ను అందిస్తుంది"
+  },
+  "lighthouse-core/audits/bootup-time.js | chromeExtensionsWarning": {
+    "message": "Chrome ఎక్స్‌టెన్షన్‌లు ఈ పేజీ లోడ్ పనితీరును ప్రతికూలంగా ప్రభావితం చేసాయి. ఎక్స్టెన్షన్‌లు లేకుండా పేజీని అజ్ఞాత మోడ్‌లో లేదా ఎక్స్‌టెన్షన్‌లు లేని Chrome ప్రొఫైల్‌లో ఆడిట్ చేయడాన్ని ప్రయత్నించండి."
+  },
+  "lighthouse-core/audits/bootup-time.js | columnScriptEval": {
+    "message": "స్క్రిప్ట్ మూల్యనిర్ధారణ"
+  },
+  "lighthouse-core/audits/bootup-time.js | columnScriptParse": {
+    "message": "స్క్రిప్ట్ అన్వయింపు"
+  },
+  "lighthouse-core/audits/bootup-time.js | columnTotal": {
+    "message": "మొత్తం CPU సమయం"
+  },
+  "lighthouse-core/audits/bootup-time.js | description": {
+    "message": "JSను అన్వయించడం, సంకలనం చేయడం, అమలు చేయడం కోసం వెచ్చించే సమయాన్ని తగ్గించడాన్ని పరిశీలించండి. చిన్న JS పేలోడ్‌లను అందించడం ఈ విషయంలో మీకు సహాయపడవచ్చు. [మరింత తెలుసుకోండి](https://developers.google.com/web/tools/lighthouse/audits/bootup)."
+  },
+  "lighthouse-core/audits/bootup-time.js | failureTitle": {
+    "message": "JavaScript అమలు సమయాన్ని తగ్గించండి"
+  },
+  "lighthouse-core/audits/bootup-time.js | title": {
+    "message": "JavaScript అమలు సమయం"
+  },
+  "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | description": {
+    "message": "యానిమేట్ చేయబడిన కంటెంట్‌ను అందించడంలో పెద్ద GIFలు సమర్థవంతంగా పని చేయవు. నెట్‌వర్క్ బైట్‌లను పొదుపు చేయడానికి, యానిమేషన్‌ల కోసం MPEG4/WebM వీడియోలను, GIFకి బదులుగా నిశ్చల చిత్రాల కోసం PNG/WebPను ఉపయోగించడం పరిశీలించండి. [మరింత తెలుసుకోండి](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/replace-animated-gifs-with-video/)"
+  },
+  "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | title": {
+    "message": "యానిమేటెడ్ కంటెంట్ కోసం వీడియో ఫార్మాట్‌లను ఉపయోగించండి"
+  },
+  "lighthouse-core/audits/byte-efficiency/offscreen-images.js | description": {
+    "message": "పేజీలో పూర్తి పరస్పర చర్యకు పట్టే సమయం తగ్గించడానికి అన్ని క్లిష్టమైన వనరులు లోడ్ అవ్వడం పూర్తయిన తర్వాతే ఆఫ్‌స్క్రీన్, దాగి ఉన్న చిత్రాలను నెమ్మదిగా లోడ్ చేయడాన్ని పరిశీలించండి. [మరింత తెలుసుకోండి](https://developers.google.com/web/tools/lighthouse/audits/offscreen-images)."
+  },
+  "lighthouse-core/audits/byte-efficiency/offscreen-images.js | title": {
+    "message": "ఆఫ్‌స్క్రీన్ చిత్రాలను వాయిదా వేయండి"
+  },
+  "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | description": {
+    "message": "వనరులు మీ పేజీలోని మొదటి పెయింట్‌ను బ్లాక్ చేస్తున్నాయి. ముఖ్యమైన JS/CSSలను ఇన్‌లైన్‌లో అందించడం, ముఖ్యం-కానటువంటి అన్ని JS/శైలులను తీసివేయడాన్ని పరిశీలించండి. [మరింత తెలుసుకోండి](https://developers.google.com/web/tools/lighthouse/audits/blocking-resources)."
+  },
+  "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | title": {
+    "message": "రెండర్-బ్లాకింగ్ వనరులను నివారించండి"
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | description": {
+    "message": "పెద్ద నెట్‌వర్క్ పేలోడ్‌లకు వినియోగదారులు నిజమైన డబ్బును చెల్లించాలి. అవి అధికంగా సుదీర్ఘ లోడ్ సమయాలతో ముడిపడి ఉంటాయి. [మరింత తెలుసుకోండి](https://developers.google.com/web/tools/lighthouse/audits/network-payloads)."
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | displayValue": {
+    "message": "మొత్త పరిమాణం {totalBytes, number, bytes} KBగా ఉండేది"
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | failureTitle": {
+    "message": "అతి పెద్ద నెట్‌వర్క్ పేలోడ్‌లను నివారించండి"
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | title": {
+    "message": "అతి పెద్ద నెట్‌వర్క్ పేలోడ్‌లను నివారిస్తుంది"
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-css.js | description": {
+    "message": "CSS ఫైల్‌లను చిన్నవిగా చేయడం వలన నెట్‌వర్క్ పేలోడ్ పరిమాణాలు తగ్గిపోగలవు. [మరింత తెలుసుకోండి](https://developers.google.com/web/tools/lighthouse/audits/minify-css)."
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-css.js | title": {
+    "message": "CSSని చిన్నదిగా చేయండి"
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | description": {
+    "message": "JavaScript ఫైల్‌లను చిన్నవిగా చేయడం పేలోడ్ పరిమాణాలను, స్క్రిప్ట్‌ను అన్వయించడానికి పట్టే సమయాన్ని తగ్గించగలదు. [మరింత తెలుసుకోండి](https://developers.google.com/speed/docs/insights/MinifyResources)."
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | title": {
+    "message": "JavaScriptను చిన్నదిగా చేయండి"
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | description": {
+    "message": "నెట్‌వర్క్ కార్యకలాపంలో ఉపయోగించబడే అనవసరమైన బైట్‌లను తగ్గించడం కోసం, స్టైల్‌షీట్‌ల నుండి గడువు ముగిసిన నియమాలను తీసివేయండి. అలాగే, మడత పైన ఉన్న కంటెంట్ కోసం ఉపయోగించని CSSను లోడ్ చేయకుండా ఆపివేయండి. [మరింత తెలుసుకోండి](https://developers.google.com/web/tools/lighthouse/audits/unused-css)."
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | title": {
+    "message": "ఉపయోగించని CSS తీసివేయబడింది"
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-javascript.js | description": {
+    "message": "నెట్‌వర్క్ కార్యకలాపం వినియోగించే బైట్‌లను తగ్గించడానికి ఉపయోగించని JavaScriptను తీసివేయండి."
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-javascript.js | title": {
+    "message": "ఉపయోగించని JavaScriptను తీసివేయండి"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | description": {
+    "message": "దీర్ఘమైన కాష్ జీవితకాలం మీ పేజీకి పునరావృత సందర్శనలను వేగవంతం చేయవచ్చు. [మరింత తెలుసుకోండి](https://developers.google.com/web/tools/lighthouse/audits/cache-policy)."
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 వనరు కనుగొనబడింది}other{ # వనరులు కనుగొనబడ్డాయి}}"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | failureTitle": {
+    "message": "నిశ్చల ఆస్తులను సమర్ధవంతమైన కాష్ విధానంతో అందించండి"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | title": {
+    "message": "నిశ్చలమైన ఆస్తులపై సమర్ధవంతమైన కాష్ విధానాన్ని ఉపయోగిస్తుంది"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | description": {
+    "message": "ఆప్టిమైజ్ చేసిన చిత్రాలు త్వరగా లోడ్ అవుతాయి, తక్కువ సెల్యులార్ డేటాను ఉపయోగిస్తాయి. [మరింత తెలుసుకోండి](https://developers.google.com/web/tools/lighthouse/audits/optimize-images)."
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | title": {
+    "message": "చిత్రాలను సమర్థవంతంగా ఎన్‌కోడ్ చేయండి"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | description": {
+    "message": "సెల్యులార్ డేటాను పొదుపు చేయడానికి, లోడ్ సమయాన్ని మెరుగుపరచడానికి తగిన-పరిమాణానికి మార్చబడిన చిత్రాలను అందించండి. [మరింత తెలుసుకోండి](https://developers.google.com/web/tools/lighthouse/audits/oversized-images)."
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | title": {
+    "message": "చిత్రాల పరిమాణాన్ని సరిగ్గా మార్చండి"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | description": {
+    "message": "మొత్తం నెట్‌వర్క్ బైట్‌లను తగ్గించడానికి వచనం-ఆధారిత వనరులు ఖచ్చితంగా కుదింపు (gzip, deflate లేదా brotli)తో అందించబడాలి. [మరింత తెలుసుకోండి](https://developers.google.com/web/tools/lighthouse/audits/text-compression)."
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | title": {
+    "message": "వచనం కుదింపును ప్రారంభించండి"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | description": {
+    "message": "JPEG 2000, JPEG XR, WebP లాంటి చిత్రం ఫార్మాట్‌లు తరచుగా PNG లేదా JPEG కంటే మెరుగైన కుదింపును అందిస్తాయి. దీని వలన, డౌన్‌లోడ్‌లు మరింత వేగంగా ఉంటాయి, తక్కువ డేటా వినియోగం అవుతుంది. [మరింత తెలుసుకోండి](https://developers.google.com/web/tools/lighthouse/audits/webp)."
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | title": {
+    "message": "చిత్రాలను తర్వాతి-తరం ఫార్మాట్‌లలో అందించండి"
+  },
+  "lighthouse-core/audits/content-width.js | description": {
+    "message": "ఒకవేళ వీక్షణ పోర్ట్ వెడల్పుతో మీ యాప్ కంటెంట్ వెడల్పు సరిపోలకుంటే, మొబైల్ స్క్రీన్‌లకు అనుగుణంగా మీ యాప్‌ను ఆప్టిమైజ్ చేయడం సాధ్యపడకపోవచ్చు. [మరింత తెలుసుకోండి](https://developers.google.com/web/tools/lighthouse/audits/content-sized-correctly-for-viewport)."
+  },
+  "lighthouse-core/audits/content-width.js | explanation": {
+    "message": "{outerWidth}px విండో సైజ్‌తో {innerWidth}px వీక్షణ పోర్ట్ సైజ్ సరిపోలలేదు."
+  },
+  "lighthouse-core/audits/content-width.js | failureTitle": {
+    "message": "వీక్షణ పోర్ట్‌కు తగినట్లుగా కంటెంట్ సైజ్ సర్దుబాటు చేయబడలేదు"
+  },
+  "lighthouse-core/audits/content-width.js | title": {
+    "message": "వీక్షణ పోర్ట్‌కు తగినట్లుగా కంటెంట్ సైజ్ సర్దుబాటు చేయబడింది"
+  },
+  "lighthouse-core/audits/critical-request-chains.js | description": {
+    "message": "కింద పేర్కొన్న ముఖ్యమైన అభ్యర్ధన గొలుసులు ఏ వనరులు అధిక ప్రాధాన్యతతో లోడ్ అయ్యాయో చూపిస్తాయి. పేజీ లోడ్‌ను మెరుగుపరచడానికి గొలుసుల పొడవును తగ్గించడం, వనరుల డౌన్‌లోడ్ పరిమాణాన్ని తగ్గించడం, లేదా అనవసర వనరులను డౌన్‌లోడ్ చేయడాన్ని వాయిదా వేయడం పరిశీలించండి. [మరింత తెలుసుకోండి](https://developers.google.com/web/tools/lighthouse/audits/critical-request-chains)."
+  },
+  "lighthouse-core/audits/critical-request-chains.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 గొలుసు కనుగొనబడింది}other{# గొలుసులు కనుగొనబడ్డాయి}}"
+  },
+  "lighthouse-core/audits/critical-request-chains.js | title": {
+    "message": "క్లిష్టమైన అభ్యర్ధనల గాఢత్వమును తగ్గించండి"
+  },
+  "lighthouse-core/audits/deprecations.js | columnDeprecate": {
+    "message": "విస్మరణ / హెచ్చరిక"
+  },
+  "lighthouse-core/audits/deprecations.js | columnLine": {
+    "message": "పంక్తి"
+  },
+  "lighthouse-core/audits/deprecations.js | description": {
+    "message": "విస్మరించబడిన APIలు క్రమంగా బ్రౌజర్ నుండి తీసివేయబడతాయి. [మరింత తెలుసుకోండి](https://web.dev/deprecations)."
+  },
+  "lighthouse-core/audits/deprecations.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 హెచ్చరిక కనుగొనబడింది}other{# హెచ్చరికలు కనుగొనబడ్డాయి}}"
+  },
+  "lighthouse-core/audits/deprecations.js | failureTitle": {
+    "message": "విస్మరించబడిన APIలను వినియోగిస్తోంది"
+  },
+  "lighthouse-core/audits/deprecations.js | title": {
+    "message": "విస్మరించబడిన APIలను నివారిస్తుంది"
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | description": {
+    "message": "అప్లికేషన్ కాష్ విస్మరించబడింది. [మరింత తెలుసుకోండి](https://web.dev/appcache-manifest)."
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | displayValue": {
+    "message": "\"{AppCacheManifest}\" కనుగొనబడింది"
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | failureTitle": {
+    "message": "అప్లికేషన్ కాష్‌ను వినియోగిస్తున్నారు"
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | title": {
+    "message": "అప్లికేషన్ కాష్‌ను నివారిస్తోంది"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | description": {
+    "message": "'doctype'ను పేర్కొనడం వలన క్విర్క్స్-మోడ్‌కు మారనివ్వకుండా బ్రౌజర్ నిరోధించబడుతుంది. [మరింత తెలుసుకోండి](https://web.dev/doctype)."
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationBadDoctype": {
+    "message": "'Doctype' పేరు తప్పనిసరిగా లోయర్-కేస్ స్ట్రింగ్ రూపంలో ఉండాలి `html`"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationNoDoctype": {
+    "message": "పత్రంలో తప్పనిసరిగా doctype ఉండాలి"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationPublicId": {
+    "message": "'publicId' ఒక ఖాళీ స్ట్రింగ్‌గా వదిలిపెట్టాలి"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationSystemId": {
+    "message": "'systemId' ఒక ఖాళీ స్ట్రింగ్‌గా వదిలిపెట్టాలి"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | failureTitle": {
+    "message": "పేజీలో HTML doctype లేదు, కనుక క్విర్క్స్-మోడ్‌ను ట్రిగ్గర్ చేస్తోంది"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | title": {
+    "message": "పేజీలో 'HTML doctype' ఉంది"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | columnElement": {
+    "message": "మూలకం"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | columnStatistic": {
+    "message": "గణాంక రకం"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | columnValue": {
+    "message": "విలువ"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | description": {
+    "message": "బ్రౌజర్ ఇంజినీర్‌లు ~1,500 కంటే తక్కువ DOM మూలకాలను కలిగి ఉండే పేజీలను సిఫార్సు చేస్తారు. అత్యుత్తమ ప్రమాణంలో ట్రీ డెప్త్ < 32 మూలకాలు, 60 కంటే తక్కువ ఉపాంశ/మూలాధార మూలకాలు ఉండాలి. పెద్ద DOM వలన మెమరీ వినియోగం పెరగవచ్చు. దీర్ఘమైన [స్టైల్ గణనలు](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations) జరగవచ్చు, ఖరీదైన [లేఅవుట్ రీఫ్లోలు](https://developers.google.com/speed/articles/reflow) అందించవచ్చు. [మరింత తెలుసుకోండి](https://web.dev/dom-size)."
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 మూలకం}other{# మూలకాలు}}"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | failureTitle": {
+    "message": "అధిక DOM పరిమాణాన్ని నివారించండి"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | statisticDOMDepth": {
+    "message": "DOM గరిష్ట గాఢత్వము"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | statisticDOMElements": {
+    "message": "మొత్తం DOM మూలకాలు"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | statisticDOMWidth": {
+    "message": "పిల్ల మూలకాల గరిష్ట సంఖ్య"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | title": {
+    "message": "అధిక DOM పరిమాణాన్ని నివారిస్తుంది"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | columnRel": {
+    "message": "Rel"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | columnTarget": {
+    "message": "లక్ష్యం"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | description": {
+    "message": "పనితీరును మెరుగుపరచడానికి, అలాగే భద్రతా ప్రమాదాలను నిరోధించడానికి ఏవైనా బయటి లింక్‌లకు '`rel=\"noopener\"`' లేదా '`rel=\"noreferrer\"`'లను జోడించండి. [మరింత తెలుసుకోండి](https://web.dev/external-anchors-use-rel-noopener)."
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | failureTitle": {
+    "message": "క్రాస్-ఆరిజిన్ గమ్యస్థానాలకు తీసుకెళ్లే లింక్‌లు అసురక్షితమైనవి"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | title": {
+    "message": "క్రాస్-ఆరిజిన్ గమ్యస్థానాలకు తీసుకెళ్లే లింక్‌లు సురక్షితమైనవి"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | warning": {
+    "message": "యాంకర్ ({anchorHTML}) కోసం గమ్యస్థానాన్ని కనుగొనడం సాధ్యపడలేదు. ఒకవేళ హైపర్‌లింక్ లాగా ఉపయోగించకుంటే, 'target=_blank'ను తీసివేయడం గురించి పరిశీలించండి."
+  },
+  "lighthouse-core/audits/dobetterweb/geolocation-on-start.js | description": {
+    "message": "సందర్భం ఏమీ లేకుండా స్థానాన్ని అభ్యర్థించే సైట్‌లను వినియోగదారులు నమ్మరు లేదా గందరగోళానికి గురి అవుతారు. దానికి బదులుగా, వినియోగదారు చర్యతో అభ్యర్థనను ప్రయత్నించడం పరిశీలించండి. [మరింత తెలుసుకోండి](https://web.dev/geolocation-on-start)."
+  },
+  "lighthouse-core/audits/dobetterweb/geolocation-on-start.js | failureTitle": {
+    "message": "పేజీ లోడ్ సమయంలో భౌగోళిక స్థానం అనుమతిని అభ్యర్థిస్తుంది"
+  },
+  "lighthouse-core/audits/dobetterweb/geolocation-on-start.js | title": {
+    "message": "పేజీ లోడ్ సమయంలో భౌగోళిక స్థానం అనుమతిని అభ్యర్థించడం నివారిస్తుంది"
+  },
+  "lighthouse-core/audits/dobetterweb/js-libraries.js | columnVersion": {
+    "message": "వెర్షన్"
+  },
+  "lighthouse-core/audits/dobetterweb/js-libraries.js | description": {
+    "message": "పేజీలోని అన్ని ఫ్రంట్-ఎండ్ JavaScript లైబ్రరీలు గుర్తించబడ్డాయి. [మరింత తెలుసుకోండి](https://web.dev/js-libraries)."
+  },
+  "lighthouse-core/audits/dobetterweb/js-libraries.js | title": {
+    "message": "JavaScript లైబ్రరీలు గుర్తించబడ్డాయి"
+  },
+  "lighthouse-core/audits/dobetterweb/no-document-write.js | description": {
+    "message": "కనెక్షన్‌లు నెమ్మదిగా పని చేస్తున్న వినియోగదారుల కోసం, '`document.write()`' ద్వారా డైనమిక్‌గా ఇంజెక్ట్ చేయబడే బయటి స్క్రిప్ట్‌ల వలన పేజీ పదుల సెకన్ల పాటు ఆలస్యంగా లోడ్ కాగలదు. [మరింత తెలుసుకోండి](https://web.dev/no-document-write)."
+  },
+  "lighthouse-core/audits/dobetterweb/no-document-write.js | failureTitle": {
+    "message": "'`document.write()`'ను వినియోగిస్తోంది"
+  },
+  "lighthouse-core/audits/dobetterweb/no-document-write.js | title": {
+    "message": "'`document.write()`'ను నివారిస్తుంది"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | columnSeverity": {
+    "message": "అత్యంత తీవ్రత"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | columnVersion": {
+    "message": "లైబ్రరీ వెర్షన్"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | columnVuln": {
+    "message": "భద్రతా ప్రమాదాల సంఖ్య"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | description": {
+    "message": "కొన్ని మూడవ పక్షం స్క్రిప్ట్‌లలో, దాడులకు పాల్పడేవారు సులభంగా గుర్తించగలిగే, సమాచారం దొంగిలించగలిగే తెలిసిన భద్రతా ప్రమాదాలు ఉండవచ్చు. [మరింత తెలుసుకోండి](https://web.dev/no-vulnerable-libraries)."
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 ప్రమాద కారకం గుర్తించబడింది}other{# ప్రమాద కారకాలు గుర్తించబడ్డాయి}}"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | failureTitle": {
+    "message": "తెలిసిన భద్రతా ప్రమాదాలను కలిగి ఉండే ఫ్రంట్-ఎండ్ JavaScript లైబ్రరీలను జోడిస్తుంది"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | rowSeverityHigh": {
+    "message": "అధికం"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | rowSeverityLow": {
+    "message": "తక్కువ"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | rowSeverityMedium": {
+    "message": "మధ్యస్థం"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | title": {
+    "message": "తెలిసిన భద్రతా ప్రమాదాలను కలిగి ఉండే ఫ్రంట్-ఎండ్ JavaScript లైబ్రరీలను నివారిస్తుంది"
+  },
+  "lighthouse-core/audits/dobetterweb/notification-on-start.js | description": {
+    "message": "సందర్భం ఏమీ లేకుండా నోటిఫికేషన్‌లను పంపడానికి అనుమతి కోరే సైట్‌లను వినియోగదారులు నమ్మరు లేదా గందరగోళానికి గురి అవుతారు. బదులుగా వినియోగదారు సంజ్ఞలకు అభ్యర్థనను ప్రయత్నించడం పరిశీలించండి. [మరింత తెలుసుకోండి](https://web.dev/notification-on-start)."
+  },
+  "lighthouse-core/audits/dobetterweb/notification-on-start.js | failureTitle": {
+    "message": "పేజీ లోడ్ సమయంలో నోటిఫికేషన్ అనుమతిని అభ్యర్థిస్తుంది"
+  },
+  "lighthouse-core/audits/dobetterweb/notification-on-start.js | title": {
+    "message": "పేజీ లోడ్ సమయంలో నోటిఫికేషన్ అనుమతిని అభ్యర్థించడం నివారిస్తుంది"
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | columnFailingElem": {
+    "message": "విఫలం అవుతున్న మూలకాలు"
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | description": {
+    "message": "పాస్‌వర్డ్‌లో అతికించే చర్యను నిరోధించడం వలన మంచి భద్రతా విధానానికి ఆటంకం ఏర్పడుతుంది. [మరింత తెలుసుకోండి](https://web.dev/password-inputs-can-be-pasted-into)."
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | failureTitle": {
+    "message": "పాస్‌వర్డ్ ఫీల్డ్‌లలో అతికించడం చేయలేకుండా వినియోగదారులను నిరోధిస్తుంది"
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | title": {
+    "message": "పాస్‌వర్డ్ ఫీల్డ్‌లలో అతికించడానికి వినియోగదారులను అనుమతిస్తుంది"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | columnProtocol": {
+    "message": "ప్రోటోకాల్"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | description": {
+    "message": "HTTP/2 ద్వారా HTTP/1.1 కంటే ఎక్కువ ప్రయోజనాలు, అలాగే బైనరీ హెడర్‌లు, మల్టీప్లెక్సింగ్, సర్వర్ పుష్ కూడా అందించబడతాయి. [మరింత తెలుసుకోండి](https://web.dev/uses-http2)."
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 అభ్యర్థన 'HTTP/2' ద్వారా అందించబడలేదు}other{# అభ్యర్థనలు 'HTTP/2' ద్వారా అందించబడలేదు}}"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | failureTitle": {
+    "message": "'HTTP/2' దాని వనరులు అన్నింటిలో వినియోగించబడలేదు"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | title": {
+    "message": "\"HTTP/2\" దాని స్వంత వనరులు అన్నింటిలో వినియోగించబడుతోంది"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-passive-event-listeners.js | description": {
+    "message": "మీ పేజీ స్క్రోలింగ్ పనితీరును మెరుగుపరచడానికి మీ స్పర్శ, చక్రం కదలికలను గుర్తుపట్టే లిజనర్‌లను '`passive`'కు సెట్ చేయడం పరిశీలించండి. [మరింత తెలుసుకోండి](https://web.dev/uses-passive-event-listeners)."
+  },
+  "lighthouse-core/audits/dobetterweb/uses-passive-event-listeners.js | failureTitle": {
+    "message": "స్క్రోలింగ్ పనితీరును మెరుగుపరచడానికి పాసివ్ లిజనర్‌లను వినియోగించడం లేదు"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-passive-event-listeners.js | title": {
+    "message": "స్క్రోలింగ్ పనితీరును మెరుగుపరచడానికి పాసివ్ లిజనర్‌లను వినియోగిస్తుంది"
+  },
+  "lighthouse-core/audits/errors-in-console.js | columnDesc": {
+    "message": "వివరణ"
+  },
+  "lighthouse-core/audits/errors-in-console.js | description": {
+    "message": "కన్సోల్‌లో లాగ్ చేయబడిన ఎర్రర్‌లు పరిష్కారం కాని సమస్యలను సూచిస్తాయి. నెట్‌వర్క్ అభ్యర్థన వైఫల్యాలు, ఇతర బ్రౌజర్ ఇబ్బందుల వలన అవి ఏర్పడి ఉంటాయి. [మరింత తెలుసుకోండి](https://web.dev/errors-in-console)"
+  },
+  "lighthouse-core/audits/errors-in-console.js | failureTitle": {
+    "message": "బ్రౌజర్ ఎర్రర్‌లు కన్సోల్‌లో లాగ్ చేయబడ్డాయి"
+  },
+  "lighthouse-core/audits/errors-in-console.js | title": {
+    "message": "కన్సోల్‌లో లాగ్ చేయబడిన బ్రౌజర్ ఎర్రర్‌లు ఏవీ లేవు"
+  },
+  "lighthouse-core/audits/font-display.js | description": {
+    "message": "వెబ్ ఫాంట్‌లు లోడ్ అవుతున్నప్పుడు వచనం వినియోగదారుకు కనిపించేలా ఉందని నిర్ధారించుకోవడానికి ఫాంట్-ప్రదర్శన CSS ఫీచర్‌ను శక్తివంతం చేయండి. [మరింత తెలుసుకోండి](https://developers.google.com/web/updates/2016/02/font-display)."
+  },
+  "lighthouse-core/audits/font-display.js | failureTitle": {
+    "message": "వెబ్ ఫాంట్ లోడ్ సమయంలో వచనం కనిపించేటట్లు నిర్ధారించుకోండి"
+  },
+  "lighthouse-core/audits/font-display.js | title": {
+    "message": "వెబ్ ఫాంట్ లోడ్‌ల సమయంలో వచనం మొత్తం కనిపిస్తూ ఉంటుంది"
+  },
+  "lighthouse-core/audits/font-display.js | undeclaredFontURLWarning": {
+    "message": "కింది URL కోసం ఫాంట్ ప్రదర్శన విలువను Lighthouse ఆటోమేటిక్‌గా తనిఖీ చేయలేకపోయింది: {fontURL}."
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | columnActual": {
+    "message": "ఆకార నిష్పత్తి (ఉండాల్సినది)"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | columnDisplayed": {
+    "message": "ఆకార నిష్పత్తి (ప్రదర్శించబడింది)"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | description": {
+    "message": "చిత్ర ప్రదర్శన కొలతలు సహజ ఆకార నిష్పత్తికి సరిపోలే విధంగా ఉండాలి. [మరింత తెలుసుకోండి](https://web.dev/image-aspect-ratio)."
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | failureTitle": {
+    "message": "తప్పు ఆకార నిష్పత్తిని కలిగి ఉన్న చిత్రాలను ప్రదర్శిస్తుంది"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | title": {
+    "message": "సరైన ఆకార నిష్పత్తితో చిత్రాలను ప్రదర్శిస్తుంది"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | warningCompute": {
+    "message": "చెల్లుబాటు కాని చిత్ర పరిమాణ సమాచారం {url}"
+  },
+  "lighthouse-core/audits/installable-manifest.js | description": {
+    "message": "మీ యాప్‌ను హోమ్ స్క్రీన్‌కు జోడించుకోవాల్సిందిగా బ్రౌజర్‌లు క్రియాశీలంగా వినియోగదారులను ప్రాంప్ట్ చేయగలవు, దీని వలన అధిక మంది జనాభాకు చేరువయ్యే అవకాశం పెరగవచ్చు. [మరింత తెలుసుకోండి](https://developers.google.com/web/tools/lighthouse/audits/install-prompt)."
+  },
+  "lighthouse-core/audits/installable-manifest.js | failureTitle": {
+    "message": "ఇన్‌స్టాల్ సామర్థ్య అవసరాలకు అనుగుణంగా వెబ్ యాప్ మానిఫెస్ట్ లేదు"
+  },
+  "lighthouse-core/audits/installable-manifest.js | title": {
+    "message": "ఇన్‌స్టాల్ సామర్థ్య అవసరాలకు అనుగుణంగా వెబ్ యాప్ మానిఫెస్ట్ ఉంది"
+  },
+  "lighthouse-core/audits/is-on-https.js | columnInsecureURL": {
+    "message": "అసురక్షితమైన URL"
+  },
+  "lighthouse-core/audits/is-on-https.js | description": {
+    "message": "అన్ని సైట్‌లకు 'HTTPS' రక్షణను జోడించాలి. సున్నితమైన వ్యక్తిగత సమాచారం ఏదీ లేని వాటికి కూడా ఈ రక్షణను జోడించాలి. HTTPS రక్షణను జోడించడం వలన దాడులకు పాల్పడేవారు ఎవరూ కూడా మీ యాప్, మీ వినియోగదారుల మధ్య జరిగే కమ్యూనికేషన్‌లను ట్యాంపర్ చేయడం లేదా దొంగచాటుగా వినడం లాంటివి చేయకుండా అడ్డుకోబడతారు. అలాగే HTTP/2, ఇంకా అనేక కొత్త వెబ్ ప్లాట్‌ఫామ్ APIల కోసం దీనిని తప్పనిసరిగా వినియోగించాలి. [మరింత తెలుసుకోండి](https://web.dev/is-on-https)."
+  },
+  "lighthouse-core/audits/is-on-https.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 అసురక్షితమైన అభ్యర్థన కనుగొనబడింది}other{# అసురక్షితమైన అభ్యర్థనలు కనుగొనబడ్డాయి}}"
+  },
+  "lighthouse-core/audits/is-on-https.js | failureTitle": {
+    "message": "'HTTPS'ను ఉపయోగించడం లేదు"
+  },
+  "lighthouse-core/audits/is-on-https.js | title": {
+    "message": "HTTPSను ఉపయోగిస్తుంది"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | description": {
+    "message": "పేజీ కనుక సెల్యులార్ నెట్‌వర్క్‌లో వేగంగా లోడ్ అయితే తప్పకుండా మంచి మొబైల్ వినియోగదారు అనుభవాన్ని అందిస్తుంది. [మరింత తెలుసుకోండి](https://developers.google.com/web/tools/lighthouse/audits/fast-3g)."
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | displayValueText": {
+    "message": "ప్రభావశీలత సమయం {timeInMs, number, seconds} సెకన్లు"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | displayValueTextWithOverride": {
+    "message": "సిములేటెడ్ మొబైల్ నెట్‌వర్క్‌లో ప్రభావశీలత సమయం {timeInMs, number, seconds} సెకన్లు"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | explanationLoadSlow": {
+    "message": "మీ పేజీ చాలా నెమ్మదిగా లోడ్ అవుతోంది. కనుక 10 సెకన్ల వ్యవధిలో ఇంటరాక్ట్ కాలేరు. ఎలా మెరుగుపరచాలో తెలుసుకోవడానికి \"పనితీరు\" విభాగంలోని అవకాశాలు, సమస్య విశ్లేషణలను చూడండి."
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | failureTitle": {
+    "message": "మొబైల్ నెట్‌వర్క్‌లలో పేజీ తగినంత వేగంగా లోడ్ కావడం లేదు"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | title": {
+    "message": "మొబైల్ నెట్‌వర్క్‌లలో పేజీ తగినంత వేగంగా లోడ్ అవుతోంది"
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | columnCategory": {
+    "message": "వర్గం"
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | description": {
+    "message": "అన్వయించడం, సంగ్రహణ చేయడం మరియు JSను అమలు చేయడానికి వెచ్చించే సమయాన్ని తగ్గించడాన్ని పరిగణించండి. చిన్న JS పేలోడ్‌లను అందించడం ఈ విషయంలో మీకు సహాయకరంగా అనిపించవచ్చు."
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | failureTitle": {
+    "message": "ప్రధాన థ్రెడ్ పనిని తగ్గించండి"
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | title": {
+    "message": "ప్రధాన థ్రెడ్ పనిని తగ్గిస్తుంది"
+  },
+  "lighthouse-core/audits/manual/pwa-cross-browser.js | description": {
+    "message": "అత్యధిక మంది వినియోగదారులకు చేరువ కావడానికి, సైట్‌లు ప్రతి ప్రధాన బ్రౌజర్‌లో పని చేయాలి. [మరింత తెలుసుకోండి](https://developers.google.com/web/progressive-web-apps/checklist#site-works-cross-browser)."
+  },
+  "lighthouse-core/audits/manual/pwa-cross-browser.js | title": {
+    "message": "వివిధ రకాల బ్రౌజర్‌లలో సైట్ పని చేస్తుంది"
+  },
+  "lighthouse-core/audits/manual/pwa-each-page-has-url.js | description": {
+    "message": "విడివిడిగా ఉన్న పేజీలు URL ద్వారా లోతైన లింక్‌తో అనుబంధించబడేలా, ఆ URLలు సోషల్ మీడియాలో షేర్ చేసుకోవడానికి ప్రత్యేక రీతిలో ఉండేలా జాగ్రత్త వహించండి. [మరింత తెలుసుకోండి](https://developers.google.com/web/progressive-web-apps/checklist#each-page-has-a-url)."
+  },
+  "lighthouse-core/audits/manual/pwa-each-page-has-url.js | title": {
+    "message": "ప్రతి పేజీకి URL ఉంది"
+  },
+  "lighthouse-core/audits/manual/pwa-page-transitions.js | description": {
+    "message": "నెట్‌వర్క్ కనెక్షన్ నెమ్మదిగా ఉన్నప్పటికీ మీరు ఎక్కడైనా నొక్కినప్పుడు, 'పరివర్తనలు' వీక్షణకు భంగం కలిగించకుండా మృదువుగా మారాలి. నిర్వహణాపరమైన పనితీరుకు ఇది చాలా కీలకమైన అంశం. [మరింత తెలుసుకోండి](https://developers.google.com/web/progressive-web-apps/checklist#page-transitions-dont-feel-like-they-block-on-the-network)."
+  },
+  "lighthouse-core/audits/manual/pwa-page-transitions.js | title": {
+    "message": "పేజీ పరివర్తనలు నెట్‌వర్క్‌లో లోడ్ అవుతున్నప్పుడు బ్లాక్ అవుతున్నట్లుగా కనిపించకూడదు"
+  },
+  "lighthouse-core/audits/metrics/estimated-input-latency.js | description": {
+    "message": "పేజీ లోడ్‌కు అత్యంత రద్దీ అయిన 5 సెకన్ల విండో సమయంలో, వినియోగదారు ఇన్‌పుట్‌కు ప్రతిస్పందించడానికి, మిల్లీ సెకన్లలో, మీ యాప్ తీసుకునే సమయం యొక్క అంచనాను 'అంచనా వేసిన ఇన్‌పుట్ ప్రతిస్పందన సమయం' అని అంటారు. మీ ప్రతిస్పందన సమయం 50 మిల్లీ సెక‌న్ల‌ కన్నా ఎక్కువ అయితే, మీ యాప్ వేగవంతంగా పని చేయట్లేదని వినియోగదారులు భావించవచ్చు. [మరింత తెలుసుకోండి](https://developers.google.com/web/tools/lighthouse/audits/estimated-input-latency)."
+  },
+  "lighthouse-core/audits/metrics/estimated-input-latency.js | title": {
+    "message": "అంచనా వేయబడిన ఇన్‌పుట్ ప్రతిస్పందన సమయం"
+  },
+  "lighthouse-core/audits/metrics/first-contentful-paint.js | description": {
+    "message": "మొదటి కంటెంట్ సహిత పెయింట్ ఏదైనా వచనం లేదా చిత్రం మొదటిసారి పెయింట్ చేయబడిన సమయాన్ని గుర్తిస్తుంది. [మరింత తెలుసుకోండి](https://developers.google.com/web/tools/lighthouse/audits/first-contentful-paint)."
+  },
+  "lighthouse-core/audits/metrics/first-contentful-paint.js | title": {
+    "message": "మొదటి కంటెంట్ సహిత పెయింట్"
+  },
+  "lighthouse-core/audits/metrics/first-cpu-idle.js | description": {
+    "message": "'మొదటి CPU ఖాళీ సమయం' కొలమానం, మొదటి సారి పేజీ యొక్క ప్రధాన థ్రెడ్ ఇన్‌పుట్‌ను నిర్వహించడానికి తీసుకున్న సమయాన్ని గుర్తిస్తుంది. [మరింత తెలుసుకోండి](https://developers.google.com/web/tools/lighthouse/audits/first-interactive)."
+  },
+  "lighthouse-core/audits/metrics/first-cpu-idle.js | title": {
+    "message": "CPU మొదటి ఖాళీ సమయం"
+  },
+  "lighthouse-core/audits/metrics/first-meaningful-paint.js | description": {
+    "message": "ఒక పేజీ ప్రాథమిక కంటెంట్ ఎప్పుడు కనిపించింది అనేదానికి, మొదటి అర్ధవంతమైన పెయింట్ ఒక కొలమానం. [మరింత తెలుసుకోండి](https://developers.google.com/web/tools/lighthouse/audits/first-meaningful-paint)."
+  },
+  "lighthouse-core/audits/metrics/first-meaningful-paint.js | title": {
+    "message": "మొదటి అర్థవంతమైన పెయింట్"
+  },
+  "lighthouse-core/audits/metrics/interactive.js | description": {
+    "message": "పరస్పర చర్య చేయడానికి పేజీ పూర్తిగా సిద్ధం అయ్యేందుకు పట్టే సమయాన్ని 'పేజీలో పూర్తి పరస్పర చర్యకు పట్టే సమయం' అంటారు. [మరింత తెలుసుకోండి](https://developers.google.com/web/tools/lighthouse/audits/consistently-interactive)."
+  },
+  "lighthouse-core/audits/metrics/interactive.js | title": {
+    "message": "పేజీలో పూర్తి పరస్పర చర్యకు పట్టే సమయం"
+  },
+  "lighthouse-core/audits/metrics/max-potential-fid.js | description": {
+    "message": "మీ వినియోగదారులు ఎదుర్కోగల గరిష్ఠ మొదటి ఇన్‌పుట్ ఆలస్యం అన్నది సుదీర్ఘ టాస్క్‌లో మిల్లీసెకన్ల వ్యవధిలో ఉంటుంది. [మరింత తెలుసుకోండి](https://developers.google.com/web/updates/2018/05/first-input-delay)."
+  },
+  "lighthouse-core/audits/metrics/max-potential-fid.js | title": {
+    "message": "మొదటి ఇన్‌పుట్ ఆలస్య గరిష్ఠ వ్యవధి"
+  },
+  "lighthouse-core/audits/metrics/speed-index.js | description": {
+    "message": "వేగం సూచిక అనేది, ఒక పేజీలోని కంటెంట్‌లు ఎంత వేగంగా ప్రత్యక్షంగా చూపించబడతాయో తెలియజేస్తుంది. [మరింత తెలుసుకోండి](https://developers.google.com/web/tools/lighthouse/audits/speed-index)."
+  },
+  "lighthouse-core/audits/metrics/speed-index.js | title": {
+    "message": "వేగం సూచిక"
+  },
+  "lighthouse-core/audits/metrics/total-blocking-time.js | description": {
+    "message": "టాస్క్ వ్యవధి 50 మిల్లీసెకన్లు మించిపోయినప్పుడు FCP మరియు పేజీలో పూర్తి పరస్పర చర్యకు పట్టే సమయం మధ్య వేచి ఉండాల్సిన మొత్తం కాలవ్యవధి మిల్లీసెకన్లలో పేర్కొనబడుతుంది."
+  },
+  "lighthouse-core/audits/metrics/total-blocking-time.js | title": {
+    "message": "మొత్తం బ్లాక్ చేయబడే సమయం"
+  },
+  "lighthouse-core/audits/network-rtt.js | description": {
+    "message": "నెట్‌వర్క్ రౌండ్ ట్రిప్ సమయాలు (RTT) పనితీరుపై తీవ్రమైన ప్రభావం చూపుతాయి. మూలానికి RTT ఎక్కువగా ఉంటే, వినియోగదారుకు దగ్గరగా ఉన్న సర్వర్‌ల పనితీరు మెరుగ్గా ఉండవచ్చని సంకేతం. [మరింత తెలుసుకోండి](https://hpbn.co/primer-on-latency-and-bandwidth/)."
+  },
+  "lighthouse-core/audits/network-rtt.js | title": {
+    "message": "నెట్‌వర్క్ రౌండ్ ట్రిప్ సమయాలు"
+  },
+  "lighthouse-core/audits/network-server-latency.js | description": {
+    "message": "సర్వర్ ప్రతిస్పందన సమయాలు వెబ్ పనితీరుపై ప్రభావం చూపగలవు. మూలంలో సర్వర్ ప్రతిస్పందన సమయం ఎక్కువగా ఉంటే, సర్వర్ ఓవర్‌లోడ్ అయినట్లు లేదా బ్యాక్ఎండ్ పనితీరు సరిగ్గా లేనట్లు అర్థం. [మరింత తెలుసుకోండి](https://hpbn.co/primer-on-web-performance/#analyzing-the-resource-waterfall)."
+  },
+  "lighthouse-core/audits/network-server-latency.js | title": {
+    "message": "సర్వర్ బ్యాక్ఎండ్ ప్రతిస్పందన సమయాలు"
+  },
+  "lighthouse-core/audits/offline-start-url.js | description": {
+    "message": "సర్వీస్ వర్కర్ సహాయంతో, మీ వెబ్ యాప్ ఇబ్బందికరమైన నెట్‌వర్క్ పరిస్థితులలో కూడా విశ్వసనీయత కోల్పోకుండా పని చేయగలుగుతుంది. [మరింత తెలుసుకోండి](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)."
+  },
+  "lighthouse-core/audits/offline-start-url.js | failureTitle": {
+    "message": "ఆఫ్‌లైన్‌‌లో ఉన్నప్పుడు `start_url` అన్నది '200' కోడ్‌తో స్పందించలేదు"
+  },
+  "lighthouse-core/audits/offline-start-url.js | title": {
+    "message": "ఆఫ్‌లైన్‌‌లో ఉన్నప్పుడు `start_url` అన్నది '200' కోడ్‌తో స్పందించింది"
+  },
+  "lighthouse-core/audits/offline-start-url.js | warningCantStart": {
+    "message": "మానిఫెస్ట్ నుండి '`start_url`'ను Lighthouse చదవలేకపోయింది. దీని ఫలితంగా, '`start_url`' అన్నది పత్రం యొక్క URLగా పరిగణించబడింది. ఎర్రర్ సందేశం: '{manifestWarning}'."
+  },
+  "lighthouse-core/audits/performance-budget.js | columnOverBudget": {
+    "message": "బడ్జెట్ దాటిపోయింది"
+  },
+  "lighthouse-core/audits/performance-budget.js | description": {
+    "message": "నెట్‌వర్క్ అభ్యర్థనల సంఖ్య, పరిమాణాన్ని అందించబడిన పనితీరు బడ్జెట్ ప్రకారం నిర్దేశించిన లక్ష్యాల కంటే తక్కువకు ఉంచండి. [మరింత తెలుసుకోండి](https://developers.google.com/web/tools/lighthouse/audits/budgets)."
+  },
+  "lighthouse-core/audits/performance-budget.js | requestCountOverBudget": {
+    "message": "{count,plural, =1{1 అభ్యర్థన}other{# అభ్యర్థనలు}}"
+  },
+  "lighthouse-core/audits/performance-budget.js | title": {
+    "message": "పనితీరు బడ్జెట్"
+  },
+  "lighthouse-core/audits/redirects-http.js | description": {
+    "message": "మీరు ఇప్పటికే 'HTTPS' సెటప్ చేసుకుని ఉంటే, మొత్తం 'HTTP' ట్రాఫిక్‌ను 'HTTPS'కు మళ్లించేలా జాగ్రత్త తీసుకోవడం ద్వారా మీ వినియోగదారులందరికీ సురక్షితమైన వెబ్ ఫీచర్‌లను అందించండి. [మరింత తెలుసుకోండి](https://developers.google.com/web/tools/lighthouse/audits/http-redirects-to-https)."
+  },
+  "lighthouse-core/audits/redirects-http.js | failureTitle": {
+    "message": "'HTTP' ట్రాఫిక్‌ను 'HTTPS'కు మళ్లించదు"
+  },
+  "lighthouse-core/audits/redirects-http.js | title": {
+    "message": "'HTTP' ట్రాఫిక్‌ను 'HTTPS'కు మళ్లిస్తుంది"
+  },
+  "lighthouse-core/audits/redirects.js | description": {
+    "message": "మళ్లింపులు పేజీ లోడ్ అవ్వడానికి ముందు అదనపు ఆలస్యాలను కలుగజేస్తాయి. [మరింత తెలుసుకోండి](https://developers.google.com/web/tools/lighthouse/audits/redirects)."
+  },
+  "lighthouse-core/audits/redirects.js | title": {
+    "message": "అనేక పేజీ మళ్లింపులను నివారించండి"
+  },
+  "lighthouse-core/audits/resource-summary.js | description": {
+    "message": "పేజీ వనరుల సంఖ్య, పరిమాణం కోసం బడ్జెట్‌లను సెట్ చేయడానికి, 'budget.json' ఫైల్‌ను జోడించండి. [మరింత తెలుసుకోండి](https://developers.google.com/web/tools/lighthouse/audits/budgets)."
+  },
+  "lighthouse-core/audits/resource-summary.js | displayValue": {
+    "message": "{requestCount,plural, =1{1 అభ్యర్థన • {byteCount, number, bytes} KB}other{# అభ్యర్థనలు • {byteCount, number, bytes} KB}}"
+  },
+  "lighthouse-core/audits/resource-summary.js | title": {
+    "message": "అభ్యర్థనల సంఖ్యను తగ్గించుకోండి, బదిలీ పరిమాణాలు తక్కువగా ఉండేలా చూసుకోండి"
+  },
+  "lighthouse-core/audits/seo/canonical.js | description": {
+    "message": "శోధన ఫలితాలలో ఏ URLను చూపాలో నియమానుగుణమైన లింక్‌లు సూచిస్తాయి. [మరింత తెలుసుకోండి](https://web.dev/canonical)."
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationConflict": {
+    "message": "వైరుధ్యమైన అనేక URLలు ({urlList})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationDifferentDomain": {
+    "message": "వేరొక డొమైన్ ({url})కు సూచిస్తోంది"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationInvalid": {
+    "message": "చెల్లని URL ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationPointsElsewhere": {
+    "message": "మరొక '`hreflang`' స్థానం ({url})కు నిర్దేశిస్తోంది"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationRelative": {
+    "message": "సంబంధిత URL ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationRoot": {
+    "message": "అలాంటి కంటెంట్‌ను కలిగిన పేజీకి బదులుగా డొమైన్ యొక్క మూలాధార URL (హోమ్‌పేజీ)ని సూచిస్తుంది"
+  },
+  "lighthouse-core/audits/seo/canonical.js | failureTitle": {
+    "message": "పత్రంలో చెల్లుబాటు అయ్యే '`rel=canonical`' లేదు"
+  },
+  "lighthouse-core/audits/seo/canonical.js | title": {
+    "message": "పత్రంలో చెల్లుబాటు అయ్యే '`rel=canonical`' ఉంది"
+  },
+  "lighthouse-core/audits/seo/font-size.js | description": {
+    "message": "12px కంటే తక్కువగా ఉన్న ఫాంట్ పరిమాణాలు చాలా చిన్నవిగా ఉంటాయి, కనుక అవి సముచితంగా పరిగణించబడవు. వీటిని చదవడం కోసం మొబైల్ సందర్శకులు “జూమ్ చేయడానికి స్క్రీన్‌పై రెండు వేళ్లను ఉంచి ఆ వేళ్లను దగ్గరకు లేదా దూరానికి లాగాలి”. మీరు కలిగి ఉండాల్సింది >పేజీ వచనంలో 60% ≥12px. [మరింత తెలుసుకోండి](https://web.dev/font-size)."
+  },
+  "lighthouse-core/audits/seo/font-size.js | displayValue": {
+    "message": "{decimalProportion, number, extendedPercent} సముచిత వచనం"
+  },
+  "lighthouse-core/audits/seo/font-size.js | explanationViewport": {
+    "message": "మొబైల్ స్క్రీన్‌ల కోసం ఆప్టిమైజ్ చేసిన వీక్షణ పోర్ట్ మెటా ట్యాగ్ అందుబాటులో లేదు కనుక వచనం సముచితంగా లేదు."
+  },
+  "lighthouse-core/audits/seo/font-size.js | explanationWithDisclaimer": {
+    "message": "'{decimalProportion, number, extendedPercent}' వచనం చాలా చిన్నదిగా ఉంది ('{decimalProportionVisited, number, extendedPercent}' నమూనా ఆధారంగా)."
+  },
+  "lighthouse-core/audits/seo/font-size.js | failureTitle": {
+    "message": "పత్రంలో సముచితమైన ఫాంట్ పరిమాణాలను ఉపయోగించలేదు"
+  },
+  "lighthouse-core/audits/seo/font-size.js | title": {
+    "message": "పత్రంలో ఫాంట్ పరిమాణాలు సముచితంగా ఉన్నాయి"
+  },
+  "lighthouse-core/audits/seo/hreflang.js | description": {
+    "message": "'hreflang' లింక్‌లు అన్నవి నిర్దిష్ట భాష లేదా ప్రాంతం కోసం పేజీ యొక్క ఏ వెర్షన్‌ను శోధన ఫలితాలలో చూపాలన్నది శోధన ఇంజిన్‌లకు తెలియజేస్తాయి. [మరింత తెలుసుకోండి](https://web.dev/hreflang)."
+  },
+  "lighthouse-core/audits/seo/hreflang.js | failureTitle": {
+    "message": "పత్రంలో చెల్లుబాటు అయ్యే ``hreflang`` లేదు"
+  },
+  "lighthouse-core/audits/seo/hreflang.js | title": {
+    "message": "పత్రంలో చెల్లుబాటు అయ్యే '`hreflang`' ఉంది"
+  },
+  "lighthouse-core/audits/seo/http-status-code.js | description": {
+    "message": "విజయవంతం కాని HTTP స్థితి కోడ్‌లను కలిగిన పేజీలు సరిగ్గా సూచిక చేయబడకపోవచ్చు. [మరింత తెలుసుకోండి](https://web.dev/http-status-code)."
+  },
+  "lighthouse-core/audits/seo/http-status-code.js | failureTitle": {
+    "message": "పేజీలో విజయవంతం కాని HTTP స్థితి కోడ్ ఉంది"
+  },
+  "lighthouse-core/audits/seo/http-status-code.js | title": {
+    "message": "పేజీలో విజయవంతమైన HTTP స్థితి కోడ్ ఉంది"
+  },
+  "lighthouse-core/audits/seo/is-crawlable.js | description": {
+    "message": "మీ పేజీలను క్రాల్ చేయడానికి శోధన ఇంజిన్‌లను అనుమతించకుంటే, అవి శోధన ఫలితాలలో మీ పేజీలను చూపడం సాధ్యం కాదు. [మరింత తెలుసుకోండి](https://web.dev/is-crawable)."
+  },
+  "lighthouse-core/audits/seo/is-crawlable.js | failureTitle": {
+    "message": "సూచిక చేయకుండా పేజీ బ్లాక్ చేయబడింది"
+  },
+  "lighthouse-core/audits/seo/is-crawlable.js | title": {
+    "message": "సూచికలో పేజీ బ్లాక్ చేయబడలేదు"
+  },
+  "lighthouse-core/audits/seo/link-text.js | description": {
+    "message": "మీ కంటెంట్‌ను అర్థం చేసుకోవడంలో శోధన ఇంజిన్‌లకు వివరణాత్మక లింక్ వచనం సహాయపడుతుంది. [మరింత తెలుసుకోండి](https://web.dev/link-text)."
+  },
+  "lighthouse-core/audits/seo/link-text.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 లింక్ కనుగొనబడింది}other{# లింక్‌లు కనుగొనబడ్డాయి}}"
+  },
+  "lighthouse-core/audits/seo/link-text.js | failureTitle": {
+    "message": "లింక్‌లలో వివరణాత్మక వచనం లేదు"
+  },
+  "lighthouse-core/audits/seo/link-text.js | title": {
+    "message": "లింక్‌లలో వివరణాత్మక వచనం ఉంది"
+  },
+  "lighthouse-core/audits/seo/manual/structured-data.js | description": {
+    "message": "నిర్మాణాత్మకమైన డేటాను ప్రామాణీకరించడం కోసం [నిర్మాణాత్మక డేటా పరీక్ష సాధనం](https://search.google.com/structured-data/testing-tool/), [నిర్మాణాత్మక డేటా లింటర్‌](http://linter.structured-data.org/)లను అమలు చేయండి. [మరింత తెలుసుకోండి](https://web.dev/structured-data)."
+  },
+  "lighthouse-core/audits/seo/manual/structured-data.js | title": {
+    "message": "నిర్మాణాత్మక డేటా చెల్లుబాటు అవుతుంది"
+  },
+  "lighthouse-core/audits/seo/meta-description.js | description": {
+    "message": "పేజీ కంటెంట్ సారాంశాన్ని క్లుప్తంగా అందించడం కోసం శోధన ఫలితాలలో మెటా వివరణలను జోడించవచ్చు. [మరింత తెలుసుకోండి](https://web.dev/meta-description)."
+  },
+  "lighthouse-core/audits/seo/meta-description.js | explanation": {
+    "message": "వివరణ వచనం ఖాళీగా ఉంది."
+  },
+  "lighthouse-core/audits/seo/meta-description.js | failureTitle": {
+    "message": "పత్రంలో మెటా వివరణ లేదు"
+  },
+  "lighthouse-core/audits/seo/meta-description.js | title": {
+    "message": "పత్రంలో మెటా వివరణ ఉంది"
+  },
+  "lighthouse-core/audits/seo/plugins.js | description": {
+    "message": "ప్లగ్ఇన్ కంటెంట్‌ను శోధన ఇంజిన్‌లు సూచిక చేయలేవు. అలాగే, చాలా పరికరాలలో ప్లగ్ఇన్‌లు నియంత్రించబడతాయి లేదా వాటికి మద్దతు ఉండదు. [మరింత తెలుసుకోండి](https://web.dev/plugins)."
+  },
+  "lighthouse-core/audits/seo/plugins.js | failureTitle": {
+    "message": "పత్రంలో ప్లగ్ఇన్‌లు ఉపయోగించబడుతున్నాయి"
+  },
+  "lighthouse-core/audits/seo/plugins.js | title": {
+    "message": "పత్రంలో ప్లగ్ఇన్‌లు నివారించబడ్డాయి"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | description": {
+    "message": "మీ robots.txt ఫైల్ పాడైతే, మీరు మీ వెబ్‌సైట్‌ను ఎలా క్రాల్ చేయాలనుకుంటున్నారు లేదా సూచిక చేయాలనుకుంటున్నారు అన్నది crawlerలకు అర్థం కాకపోవచ్చు. [మరింత తెలుసుకోండి](https://web.dev/robots-txt)."
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | displayValueHttpBadCode": {
+    "message": "robots.txt కోసం పంపిన అభ్యర్థనకు ప్రతిస్పందనగా అందించబడిన HTTP స్థితి: {statusCode}"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | displayValueValidationError": {
+    "message": "{itemCount,plural, =1{1 ఎర్రర్ కనుగొనబడింది}other{# ఎర్రర్‌లు కనుగొనబడ్డాయి}}"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | explanation": {
+    "message": "robots.txt ఫైల్‌ను డౌన్‌లోడ్ చేయడం లైట్‌హౌస్‌కు సాధ్యం కాలేదు"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | failureTitle": {
+    "message": "robots.txt చెల్లుబాటు కాదు"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | title": {
+    "message": "robots.txt చెల్లుబాటు అవుతుంది"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | description": {
+    "message": "బటన్‌లు మరియ లింక్‌లు వంటి సహకారాన్ని అందించే ఎలిమెంట్‌ల పరిమాణం తగినంత ఉండాలి (48x48px), వాటి చుట్టూ తగినంత ఖాళీ స్థలం ఉండాలి. అలా అయితే అవి ఇతర ఎలిమెంట్‌లతో ఓవర్‌ల్యాప్ కాకుండా ఉంటాయి. [మరింత తెలుసుకోండి](https://web.dev/tap-targets)."
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | displayValue": {
+    "message": "{decimalProportion, number, percent} సముచిత పరిమాణంలో ట్యాప్ టార్గెట్‌లను కలిగి ఉంది"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | explanationViewportMetaNotOptimized": {
+    "message": "మొబైల్ స్క్రీన్‌లలో ఆప్టిమైజ్ చేసిన వీక్షణ పోర్ట్ మెటా ట్యాగ్ అందుబాటులో లేదు కనుక ట్యాప్ టార్గెట్‌లు చాలా చిన్నవిగా ఉన్నాయి"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | failureTitle": {
+    "message": "ట్యాప్ టార్గెట్‌ల పరిమాణం సముచితంగా ఉంది"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | overlappingTargetHeader": {
+    "message": "లక్ష్యం ఓవర్‌ల్యాప్ అవుతోంది"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | tapTargetHeader": {
+    "message": "ట్యాప్ టార్గెట్"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | title": {
+    "message": "ట్యాప్‌టార్గెట్‌ల పరిమాణం సముచితంగా ఉంది"
+  },
+  "lighthouse-core/audits/service-worker.js | description": {
+    "message": "'సర్వీస్ వర్కర్' సాంకేతిక పరిజ్ఞానం సహాయంతో మీ యాప్ - 'ఆఫ్‌లైన్ వినియోగం', 'హోమ్ స్క్రీన్‌కు జోడింపు', 'పుష్ నోటిఫికేషన్‌లు' లాంటి అనేక ప్రోగ్రెసివ్ వెబ్ యాప్ ఫీచర్‌లను ఉపయోగించగలుగుతుంది. [మరింత తెలుసుకోండి](https://developers.google.com/web/tools/lighthouse/audits/registered-service-worker)."
+  },
+  "lighthouse-core/audits/service-worker.js | explanationBadManifest": {
+    "message": "ఈ పేజీ ఒక సర్వీస్ వర్కర్ ద్వారా నియంత్రించబడినప్పటికీ, చెల్లుబాటయ్యే JSON ఫార్మాట్‌లో అన్వయించడంలో మానిఫెస్ట్ విఫలమైనందున '`start_url`' ఏదీ కనుగొనబడలేదు"
+  },
+  "lighthouse-core/audits/service-worker.js | explanationBadStartUrl": {
+    "message": "ఈ పేజీ ఒక సర్వీస్ వర్కర్ ద్వారా నియంత్రించబడినప్పటికీ, '`start_url`' ({startUrl}) అన్నది సర్వీస్ వర్కర్ పరిధి ({scopeUrl})లో లేదు"
+  },
+  "lighthouse-core/audits/service-worker.js | explanationNoManifest": {
+    "message": "ఈ పేజీ ఒక సర్వీస్ వర్కర్ ద్వారా నియంత్రించబడినప్పటికీ, మానిఫెస్ట్ ఏదీ పొందనందున '`start_url`' ఏదీ కనుగొనబడలేదు."
+  },
+  "lighthouse-core/audits/service-worker.js | explanationOutOfScope": {
+    "message": "ఈ మూలాధారంలో ఒకటి లేదా అంతకంటే ఎక్కువ సర్వీస్ వర్కర్‌లు ఉన్నప్పటికీ, పేజీ ({pageUrl}) పరిధిలో లేదు."
+  },
+  "lighthouse-core/audits/service-worker.js | failureTitle": {
+    "message": "పేజీని, '`start_url`'ను నియంత్రించే సర్వీస్ వర్కర్ ఏదీ నమోదు చేయబడలేదు"
+  },
+  "lighthouse-core/audits/service-worker.js | title": {
+    "message": "పేజీని, '`start_url`'ను నియంత్రించే సర్వీస్ వర్కర్ నమోదు చేయబడింది"
+  },
+  "lighthouse-core/audits/splash-screen.js | description": {
+    "message": "ఒక థీమ్‌తో కూడిన స్ప్లాష్ స్క్రీన్ వలన వినియోగదారులు వారి హోమ్ స్క్రీన్‌ల నుండి మీ యాప్‌ను ప్రారంభించినప్పుడు అధిక నాణ్యత గల అనుభవం అందించబడుతుంది. [మరింత తెలుసుకోండి](https://developers.google.com/web/tools/lighthouse/audits/custom-splash-screen)."
+  },
+  "lighthouse-core/audits/splash-screen.js | failureTitle": {
+    "message": "అనుకూలమైన స్ప్లాష్ స్క్రీన్ కోసం కాన్ఫిగర్ చేయలేదు"
+  },
+  "lighthouse-core/audits/splash-screen.js | title": {
+    "message": "అనుకూలమైన స్ప్లాష్ స్క్రీన్ కోసం కాన్ఫిగర్ చేయబడింది"
+  },
+  "lighthouse-core/audits/themed-omnibox.js | description": {
+    "message": "బ్రౌజర్ చిరునామా బార్‌ను మీ సైట్‌తో సరిపోలే థీమ్‌లోకి మార్చుకోవచ్చు. [మరింత తెలుసుకోండి](https://developers.google.com/web/tools/lighthouse/audits/address-bar)."
+  },
+  "lighthouse-core/audits/themed-omnibox.js | failureTitle": {
+    "message": "చిరునామా బార్ కోసం థీమ్ రంగును సెట్ చేయలేదు."
+  },
+  "lighthouse-core/audits/themed-omnibox.js | title": {
+    "message": "చిరునామా బార్ కోసం థీమ్ రంగు సెట్ చేయబడింది."
+  },
+  "lighthouse-core/audits/third-party-summary.js | columnBlockingTime": {
+    "message": "ప్రధాన థ్రెడ్ బ్లాక్ చేయబడే సమయం"
+  },
+  "lighthouse-core/audits/third-party-summary.js | columnThirdParty": {
+    "message": "మూడవ పక్షం"
+  },
+  "lighthouse-core/audits/third-party-summary.js | description": {
+    "message": "మూడవ పక్షం కోడ్ గణనీయ స్థాయిలో లోడ్ పనితీరుపై ప్రభావం చూపవచ్చు. అవసరం లేని మూడవ పక్ష ప్రదాతల సంఖ్యను పరిమితం చేసి, మీ పేజీ ప్రాథమికంగా లోడ్ కావడం పూర్తయిన తర్వాత మూడవ పక్ష కోడ్‌ను లోడ్ చేయడానికి ప్రయత్నించండి. [మరింత తెలుసుకోండి](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/loading-third-party-javascript/)."
+  },
+  "lighthouse-core/audits/third-party-summary.js | displayValue": {
+    "message": "మూడవ పక్షం కోడ్ ఒక ప్రధానమైన థ్రెడ్‌ను {timeInMs, number, milliseconds} మిల్లీసెకన్ల పాటు బ్లాక్ చేసింది"
+  },
+  "lighthouse-core/audits/third-party-summary.js | failureTitle": {
+    "message": "మూడవ పక్షం కోడ్ ప్రభావాన్ని తగ్గించండి"
+  },
+  "lighthouse-core/audits/third-party-summary.js | title": {
+    "message": "మూడవ పక్షం వినియోగం"
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | description": {
+    "message": "మొదటి బైట్ సమయం మీ సర్వర్ ప్రతిస్పందనను పంపించిన సమయాన్ని గుర్తిస్తుంది. [మరింత తెలుసుకోండి](https://developers.google.com/web/tools/lighthouse/audits/ttfb)."
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | displayValue": {
+    "message": "రూట్ పత్రం {timeInMs, number, milliseconds} మి.సె తీసుకుంది"
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | failureTitle": {
+    "message": "సర్వర్ ప్రతిస్పందన సమయాలను తగ్గించండి (TTFB)"
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | title": {
+    "message": "సర్వర్ ప్రతిస్పందన సమయాలు తక్కువగా ఉన్నాయి (TTFB)"
+  },
+  "lighthouse-core/audits/user-timings.js | columnDuration": {
+    "message": "వ్యవధి"
+  },
+  "lighthouse-core/audits/user-timings.js | columnStartTime": {
+    "message": "ప్రారంభ సమయం"
+  },
+  "lighthouse-core/audits/user-timings.js | columnType": {
+    "message": "రకం"
+  },
+  "lighthouse-core/audits/user-timings.js | description": {
+    "message": "కీలక వినియోగదారు అనుభవాల సమయంలో మీ యాప్ వాస్తవ ప్రపంచ పనితీరును అంచనా వేయడానికి, మీ యాప్ కోసం వినియోగదారు సమయానుకూల APIని కొలమానంగా చేసుకుని పరిశీలించండి. [మరింత తెలుసుకోండి](https://developers.google.com/web/tools/lighthouse/audits/user-timing)."
+  },
+  "lighthouse-core/audits/user-timings.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 వినియోగదారు సమయం}other{# వినియోగదారు సమయాలు}}"
+  },
+  "lighthouse-core/audits/user-timings.js | title": {
+    "message": "వినియోగదారు సమయం మార్కులు మరియు కొలమానాలు"
+  },
+  "lighthouse-core/audits/uses-rel-preconnect.js | crossoriginWarning": {
+    "message": "\"{securityOrigin}\" కోసం ముందస్తు కనెక్షన్ <link> కనుగొనబడింది, కానీ బ్రౌజర్ ద్వారా ఉపయోగించబడలేదు. మీరు ``crossorigin`` లక్షణాన్ని సక్రమంగా ఉపయోగిస్తున్నారో లేదో తనిఖీ చేయండి."
+  },
+  "lighthouse-core/audits/uses-rel-preconnect.js | description": {
+    "message": "ముఖ్యమైన మూడవ పక్ష మూలాలకు ముందస్తు కనెక్షన్‌లను ఏర్పాటు చేయడానికి '`preconnect`' లేదా '`dns-prefetch`' వనరు సూచనలను జోడించడాన్ని పరిగణనలోకి తీసుకోండి. [మరింత తెలుసుకోండి](https://developers.google.com/web/fundamentals/performance/resource-prioritization#preconnect)."
+  },
+  "lighthouse-core/audits/uses-rel-preconnect.js | title": {
+    "message": "అవసరమైన మూలాలకు ముందుగా కనెక్ట్ చేయండి"
+  },
+  "lighthouse-core/audits/uses-rel-preload.js | crossoriginWarning": {
+    "message": "'{preloadURL}' కోసం ముందే లోడ్ చేసిన ఒక <link> కనుగొనబడింది. కానీ దానిని బ్రౌజర్ ఉపయోగించలేదు. మీరు ``crossorigin`` లక్షణాన్ని సక్రమంగా ఉపయోగిస్తున్నారో లేదో తనిఖీ చేయండి."
+  },
+  "lighthouse-core/audits/uses-rel-preload.js | description": {
+    "message": "ప్రస్తుతం పేజీ లోడ్‌లో తర్వాత అభ్యర్ధించబడిన వనరులను పొందడాన్ని ప్రాధాన్యపరచడానికి '`<link rel=preload>`'ను ఉపయోగించడం పరిశీలించండి. [మరింత తెలుసుకోండి](https://developers.google.com/web/tools/lighthouse/audits/preload)."
+  },
+  "lighthouse-core/audits/uses-rel-preload.js | title": {
+    "message": "కీలక అభ్యర్ధనలను ముందుగా లోడ్ చేయండి"
+  },
+  "lighthouse-core/audits/viewport.js | description": {
+    "message": "మీ యాప్‌ను మొబైల్ స్క్రీన్‌ల కోసం ఆప్టిమైజ్ చేయడానికి '`<meta name=\"viewport\">`' ట్యాగ్‌ను జోడించండి. [మరింత తెలుసుకోండి](https://developers.google.com/web/tools/lighthouse/audits/has-viewport-meta-tag)."
+  },
+  "lighthouse-core/audits/viewport.js | explanationNoTag": {
+    "message": "'`<meta name=\"viewport\">`' ట్యాగ్ ఏదీ కనుగొనబడలేదు"
+  },
+  "lighthouse-core/audits/viewport.js | failureTitle": {
+    "message": "'`width`' లేదా '`initial-scale`'తో '`<meta name=\"viewport\">`' 'ట్యాగ్ ఏదీ లేదు"
+  },
+  "lighthouse-core/audits/viewport.js | title": {
+    "message": "'`width`' లేదా '`initial-scale`'తో '`<meta name=\"viewport\">`' ట్యాగ్‌ను కలిగి ఉంది"
+  },
+  "lighthouse-core/audits/without-javascript.js | description": {
+    "message": "'JavaScript' నిలిపివేయబడినప్పుడు, దాని గురించి తెలియజేసే ఏదైనా సమాచారం, అంటే యాప్‌ను ఉపయోగించాలంటే 'JavaScript' కలిగి ఉండాలని వినియోగదారుకు తెలియజేసే హెచ్చరిక లాంటి ఏదొక కంటెంట్ మీ యాప్‌లో ప్రదర్శించబడాలి. [మరింత తెలుసుకోండి](https://developers.google.com/web/tools/lighthouse/audits/no-js)."
+  },
+  "lighthouse-core/audits/without-javascript.js | explanation": {
+    "message": "పేజీ విషయాంశంలో స్క్రిప్ట్‌లు ఏవైనా అందుబాటులో లేనప్పుడు, కొంత కంటెంట్‌ను రెండర్ చేయాలి."
+  },
+  "lighthouse-core/audits/without-javascript.js | failureTitle": {
+    "message": "JavaScript అందుబాటులో లేనప్పుడు ప్రత్యామ్నాయ కంటెంట్‌ను అందించలేదు"
+  },
+  "lighthouse-core/audits/without-javascript.js | title": {
+    "message": "JavaScript అందుబాటులో లేనప్పుడు, దాని గురించి తెలియజేసే కొంత కంటెంట్‌ను కలిగి ఉంది"
+  },
+  "lighthouse-core/audits/works-offline.js | description": {
+    "message": "మీరు ప్రోగ్రెసివ్ వెబ్ యాప్‌ను రూపొందిస్తున్నట్లయితే, సర్వీస్ వర్కర్‌ను ఉపయోగించడం పరిగణనలోకి తీసుకోండి. దీని వలన ఆఫ్‌లైన్‌లో కూడా మీ యాప్ పని చేయగలదు. [మరింత తెలుసుకోండి](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)."
+  },
+  "lighthouse-core/audits/works-offline.js | failureTitle": {
+    "message": "ఆఫ్‌లైన్‌‌లో ఉన్నప్పుడు, ప్రస్తుత పేజీ '200' కోడ్‌తో స్పందించలేదు"
+  },
+  "lighthouse-core/audits/works-offline.js | title": {
+    "message": "ఆఫ్‌లైన్‌‌లో ఉన్నప్పుడు ప్రస్తుత పేజీ '200' కోడ్‌తో స్పందించింది"
+  },
+  "lighthouse-core/audits/works-offline.js | warningNoLoad": {
+    "message": "మీ పరీక్ష URL ({requested}) అన్నది \"{final}\"కు మళ్లించబడినందున పేజీ ఆఫ్‌లైన్‌లో లోడ్ కాలేకపోతుండవచ్చు. నేరుగా రెండవ URLను పరీక్షించడానికి ప్రయత్నించండి."
+  },
+  "lighthouse-core/config/default-config.js | a11yAriaGroupDescription": {
+    "message": "మీ అప్లికేషన్‌లో ARIA వినియోగాన్ని మెరుగుపరచాడానికి ఇవి అవకాశాలుగా ఉపయోగపడతాయి, ఇది స్క్రీన్ రీడర్ లాంటి సహాయక సాంకేతిక పరిజ్ఞానం ఉపయోగించే వినియోగదారులకు మెరుగైన అనుభవాన్ని అందించవచ్చు."
+  },
+  "lighthouse-core/config/default-config.js | a11yAriaGroupTitle": {
+    "message": "ARIA"
+  },
+  "lighthouse-core/config/default-config.js | a11yAudioVideoGroupDescription": {
+    "message": "ఇవి, ఆడియో మరియు వీడియో కోసం ప్రత్యామ్నాయ వచనాన్ని అందించ‌గ‌ల అవకాశాలు. వినికిడి లేదా కంటిచూపులో సమస్యలు ఉన్న వినియోగదారులకు ఇది మెరుగైన అనుభవాన్ని అందించగలదు."
+  },
+  "lighthouse-core/config/default-config.js | a11yAudioVideoGroupTitle": {
+    "message": "ఆడియో మరియు వీడియో"
+  },
+  "lighthouse-core/config/default-config.js | a11yBestPracticesGroupDescription": {
+    "message": "సాధారణ యాక్సెసిబిలిటీ ఉత్తమ అభ్యాసాలను ఈ అంశాలు హైలైట్ చేస్తాయి."
+  },
+  "lighthouse-core/config/default-config.js | a11yBestPracticesGroupTitle": {
+    "message": "ఉత్తమ అభ్యాసాలు"
+  },
+  "lighthouse-core/config/default-config.js | a11yCategoryDescription": {
+    "message": "[మీ వెబ్ యాప్ యొక్క యాక్సెసిబిలిటీని మెరుగుపరచగల](https://developers.google.com/web/fundamentals/accessibility) అవకాశాలను ఈ తనిఖీలు హైలైట్ చేస్తాయి. యాక్సెసిబిలిటీ సమస్యలలోని ఒక సబ్‌సెట్‌ను మాత్రమే ఆటోమేటిక్‌గా గుర్తించడం సాధ్యపడుతుంది, కనుక మాన్యువల్ పరీక్ష కూడా చేయాల్సిందిగా సిఫార్సు చేస్తున్నాము."
+  },
+  "lighthouse-core/config/default-config.js | a11yCategoryManualDescription": {
+    "message": "ఆటోమేటెడ్ పరీక్ష సాధనం కవర్ చేయని ప్రాంతాలను ఈ అంశాలు పేర్కొంటాయి. [యాక్సెసిబిలిటీ సమీక్షను నిర్వహించడం](https://developers.google.com/web/fundamentals/accessibility/how-to-review) గురించి మా గైడ్‌లో మరింత తెలుసుకోండి."
+  },
+  "lighthouse-core/config/default-config.js | a11yCategoryTitle": {
+    "message": "యాక్సెసిబిలిటీ"
+  },
+  "lighthouse-core/config/default-config.js | a11yColorContrastGroupDescription": {
+    "message": "మీ కంటెంట్ స్పష్టతను మెరుగుపరచడానికి ఇవి అవకాశాలుగా ఉపయోగపడతాయి."
+  },
+  "lighthouse-core/config/default-config.js | a11yColorContrastGroupTitle": {
+    "message": "కాంట్రాస్ట్"
+  },
+  "lighthouse-core/config/default-config.js | a11yLanguageGroupDescription": {
+    "message": "వివిధ లొకేల్‌లలో వినియోగదారుల ద్వారా మీ కంటెంట్ భావ వ్యక్తీకరణను మెరుగుపరచడానికి ఇవి అవకాశాలుగా ఉపయోగపడతాయి."
+  },
+  "lighthouse-core/config/default-config.js | a11yLanguageGroupTitle": {
+    "message": "అంతర్జాతీయీకరణ మరియు స్థానికీకరణ"
+  },
+  "lighthouse-core/config/default-config.js | a11yNamesLabelsGroupDescription": {
+    "message": "మీ అప్లికేషన్‌లోని నియంత్రణల అర్థ విచారాలను మెరుగుపరచడానికి ఇవి అవకాశాలుగా ఉపయోగపడతాయి. స్క్రీన్ రీడర్ లాంటి సహాయక సాంకేతిక పరిజ్ఞాన వినియోగదారులకు ఇది మరింత మెరుగైన అనుభవాన్ని అందించవచ్చు."
+  },
+  "lighthouse-core/config/default-config.js | a11yNamesLabelsGroupTitle": {
+    "message": "పేరు మరియు లేబుల్‌లు"
+  },
+  "lighthouse-core/config/default-config.js | a11yNavigationGroupDescription": {
+    "message": "ఇవి, మీ అప్లికేషన్‌లో కీబోర్డ్ నావిగేషన్‌ను మెరుగ‌ప‌ర‌చ‌గ‌ల అవ‌కాశాలు."
+  },
+  "lighthouse-core/config/default-config.js | a11yNavigationGroupTitle": {
+    "message": "నావిగేషన్"
+  },
+  "lighthouse-core/config/default-config.js | a11yTablesListsVideoGroupDescription": {
+    "message": "ఇవి, స్క్రీన్ రీడర్ వంటి సహాయకరమైన సాంకేతికతను ఉపయోగించి పట్టికను లేదా జాబితా డేటాను చదువుతున్నప్పుడు మెరుగైన అనుభవాన్ని అందించగల అవకాశాలు."
+  },
+  "lighthouse-core/config/default-config.js | a11yTablesListsVideoGroupTitle": {
+    "message": "పట్టికలు మరియు జాబితాలు"
+  },
+  "lighthouse-core/config/default-config.js | bestPracticesCategoryTitle": {
+    "message": "ఉత్తమ అభ్యాసాలు"
+  },
+  "lighthouse-core/config/default-config.js | budgetsGroupDescription": {
+    "message": "పనితీరు బడ్జెట్‌లు అనేవి మీ సైట్ యొక్క పనితీరు ప్రమాణాలను నిర్దేశిస్తాయి."
+  },
+  "lighthouse-core/config/default-config.js | budgetsGroupTitle": {
+    "message": "బడ్జెట్‌లు"
+  },
+  "lighthouse-core/config/default-config.js | diagnosticsGroupDescription": {
+    "message": "మీ అప్లికేషన్ పనితీరు గురించి మరింత సమాచారం. ఈ సంఖ్యలు పనితీరు స్కోర్‌ను [నేరుగా ప్రభావితం చేయవు](https://github.com/GoogleChrome/lighthouse/blob/d2ec9ffbb21de9ad1a0f86ed24575eda32c796f0/docs/scoring.md#how-are-the-scores-weighted)."
+  },
+  "lighthouse-core/config/default-config.js | diagnosticsGroupTitle": {
+    "message": "సమస్య విశ్లేషణ"
+  },
+  "lighthouse-core/config/default-config.js | firstPaintImprovementsGroupDescription": {
+    "message": "పిక్సెల్‌లు ఎంత వేగంగా స్క్రీన్ పై ప్రదర్శింపబడతాయి అనేది పనితీరులో అతి క్లష్టమైన అంశం. కీలక గణంకాలు: మొదటి కంటెంట్ సహిత పెయింట్, మొదటి అర్ధవంతమైన పెయింట్"
+  },
+  "lighthouse-core/config/default-config.js | firstPaintImprovementsGroupTitle": {
+    "message": "మొదటి పెయింట్ మెరుగుదలలు"
+  },
+  "lighthouse-core/config/default-config.js | loadOpportunitiesGroupDescription": {
+    "message": "మీ పేజీని వేగంగా లోడ్ చేయడంలో ఈ సూచనలు సహాయపడగలవు. అవి పనితీరు స్కోర్‌పై [నేరుగా ప్రభావం](https://github.com/GoogleChrome/lighthouse/blob/d2ec9ffbb21de9ad1a0f86ed24575eda32c796f0/docs/scoring.md#how-are-the-scores-weighted) చూపవు."
+  },
+  "lighthouse-core/config/default-config.js | loadOpportunitiesGroupTitle": {
+    "message": "అవకాశాలు"
+  },
+  "lighthouse-core/config/default-config.js | metricGroupTitle": {
+    "message": "గణాంకాలు"
+  },
+  "lighthouse-core/config/default-config.js | overallImprovementsGroupDescription": {
+    "message": "పేజీ ఎంత త్వరగా వీలైతే అంత త్వరగా ప్రతిస్పందించి, ఉపయోగించడానికి సిద్దంగా ఉండడానికి, మొత్తం లోడింగ్ అనుభవాన్ని మెరుగుపరచండి. కీలక గణాంకాలు: పేజీలో పూర్తి పరస్పర చర్యకు పట్టే సమయం, వేగం సూచిక"
+  },
+  "lighthouse-core/config/default-config.js | overallImprovementsGroupTitle": {
+    "message": "మొత్తం మొరుగుదలలు"
+  },
+  "lighthouse-core/config/default-config.js | performanceCategoryTitle": {
+    "message": "పనితీరు"
+  },
+  "lighthouse-core/config/default-config.js | pwaCategoryDescription": {
+    "message": "ఈ తనిఖీల ద్వారా ప్రోగ్రెసివ్ వెబ్ యాప్ అంశాలు ధృవీకరించబడతాయి. [మరింత తెలుసుకోండి](https://developers.google.com/web/progressive-web-apps/checklist)."
+  },
+  "lighthouse-core/config/default-config.js | pwaCategoryManualDescription": {
+    "message": "మౌళికమైన [PWA తనిఖీ జాబితా](https://developers.google.com/web/progressive-web-apps/checklist) ప్రకారం ఈ తనిఖీలను తప్పనిసరిగా నిర్వహించాలి, కానీ ఇవి Lighthouse ద్వారా ఆటోమేటిక్‌గా తనిఖీ చేయబడవు. ఇవి మీ స్కోర్‌పై ప్రభావం చూపవు, కానీ మీరు వీటిని మాన్యువల్‌గా అయినా ధృవీకరించడం ముఖ్యం."
+  },
+  "lighthouse-core/config/default-config.js | pwaCategoryTitle": {
+    "message": "ప్రోగ్రెసివ్ వెబ్ యాప్"
+  },
+  "lighthouse-core/config/default-config.js | pwaFastReliableGroupTitle": {
+    "message": "వేగమైనది, విశ్వసనీయమైనది"
+  },
+  "lighthouse-core/config/default-config.js | pwaInstallableGroupTitle": {
+    "message": "ఇన్‌స్టాల్ చేయదగినవి"
+  },
+  "lighthouse-core/config/default-config.js | pwaOptimizedGroupTitle": {
+    "message": "PWA ఆప్టిమైజ్ చేసినవి"
+  },
+  "lighthouse-core/config/default-config.js | seoCategoryDescription": {
+    "message": "శోధన ఇంజిన్ ఫలితాల ర్యాంకింగ్ కోసం మీ పేజీ ఆప్టిమైజ్ చేయబడినట్లు ఈ తనిఖీలు నిర్ధారిస్తాయి. మీ శోధన ర్యాంకింగ్‌పై ప్రభావం చూపగల ఈ అదనపు అంశాలను Lighthouse తనిఖీ చేయదు. [మరింత తెలుసుకోండి](https://support.google.com/webmasters/answer/35769)."
+  },
+  "lighthouse-core/config/default-config.js | seoCategoryManualDescription": {
+    "message": "అదనపు SEO ఉత్తమ అభ్యాసాలను తనిఖీ చేయడం కోసం మీ సైట్‌లో అదనపు వాలిడేటర్‌లను అమలు చేయండి."
+  },
+  "lighthouse-core/config/default-config.js | seoCategoryTitle": {
+    "message": "SEO"
+  },
+  "lighthouse-core/config/default-config.js | seoContentGroupDescription": {
+    "message": "మీ యాప్ యొక్క కంటెంట్‌ను బాగా అర్థం చేసుకోవడానికి, crawlerలు ప్రారంభయ్యే విధంగా మీ HTMLను ఫార్మాట్ చేయండి."
+  },
+  "lighthouse-core/config/default-config.js | seoContentGroupTitle": {
+    "message": "కంటెంట్ ఉత్తమ అభ్యాసాలు"
+  },
+  "lighthouse-core/config/default-config.js | seoCrawlingGroupDescription": {
+    "message": "శోధన ఫలితాలలో కనిపించేందుకు, crawlerలకు మీ యాప్ యాక్సెస్ అవసరం."
+  },
+  "lighthouse-core/config/default-config.js | seoCrawlingGroupTitle": {
+    "message": "క్రాలింగ్ మరియు అనుక్రమణ"
+  },
+  "lighthouse-core/config/default-config.js | seoMobileGroupDescription": {
+    "message": "వినియోగదారులు కంటెంట్ పేజీలను చదవడం కోసం స్క్రీన్‌పై రెండు వేళ్లను ఉంచి దగ్గరకు లేదా దూరానికి లాగుతూ లేదా దగ్గరగా జూమ్ చేసి ఇబ్బందిపడేలా కాకుండా మీ పేజీలు మొబైల్ అనుకూలంగా ఉన్నాయని నిర్థారించుకోండి. [మరింత తెలుసుకోండి](https://developers.google.com/search/mobile-sites/)."
+  },
+  "lighthouse-core/config/default-config.js | seoMobileGroupTitle": {
+    "message": "మొబైల్-అనుకూలం"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnCacheTTL": {
+    "message": "కాష్ TTL"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnLocation": {
+    "message": "స్థానం"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnName": {
+    "message": "పేరు"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnRequests": {
+    "message": "అభ్యర్థనలు"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnResourceType": {
+    "message": "వనరు రకం"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnSize": {
+    "message": "పరిమాణం"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnTimeSpent": {
+    "message": "వెచ్చించిన సమయం"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnTransferSize": {
+    "message": "బదిలీ పరిమాణం"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnURL": {
+    "message": "URL"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnWastedBytes": {
+    "message": "ఆదా చేయగల పరిమాణం"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnWastedMs": {
+    "message": "ఆదా చేయగల వ్యవధి"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | displayValueByteSavings": {
+    "message": "ఆదా చేయగల పరిమాణం {wastedBytes, number, bytes} KB"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | displayValueMsSavings": {
+    "message": "ఆదా చేయగల వ్యవధి {wastedMs, number, milliseconds} మి.సెలు"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | documentResourceType": {
+    "message": "పత్రం"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | fontResourceType": {
+    "message": "ఫాంట్"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | imageResourceType": {
+    "message": "చిత్రం"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | mediaResourceType": {
+    "message": "మీడియా"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | ms": {
+    "message": "{timeInMs, number, milliseconds} మి.సె"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | otherResourceType": {
+    "message": "ఇతరం"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | scriptResourceType": {
+    "message": "స్క్రిప్ట్"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | seconds": {
+    "message": "{timeInMs, number, seconds} సె"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | stylesheetResourceType": {
+    "message": "స్టైల్‌షీట్"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | thirdPartyResourceType": {
+    "message": "మూడవ పక్షం"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | totalResourceType": {
+    "message": "మొత్తం"
+  },
+  "lighthouse-core/lib/lh-error.js | badTraceRecording": {
+    "message": "మీ పేజీ లోడ్ చేసే సమయంలో స్థితిగతిని రికార్డ్ చేస్తున్నప్పుడు ఏదో తప్పు జరిగింది. దయచేసి Lighthouseని మళ్లీ అమలు చేయండి. ({errorCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | criTimeout": {
+    "message": "ప్రారంభ డీబగ్గర్ ప్రోటోకాల్ కనెక్షన్ నిరీక్షణ సమయం గడువు ముగిసింది."
+  },
+  "lighthouse-core/lib/lh-error.js | didntCollectScreenshots": {
+    "message": "పేజీ లోడ్ సమయంలో Chrome ఎలాంటి స్క్రీన్‌షాట్‌లను సేకరించలేదు. దయచేసి పేజీలో కనిపించే కంటెంట్ ఉందని నిర్ధారించుకుని, ఆపై Lighthouseని తిరిగి అమలు చేయడం ప్రయత్నించండి. ({errorCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | dnsFailure": {
+    "message": "DNS సర్వర్‌లు అందించిన డొమైన్‌ని పరిష్కరించలేవు."
+  },
+  "lighthouse-core/lib/lh-error.js | erroredRequiredArtifact": {
+    "message": "అవసరమైన '{artifactName}' గ్యాదరర్ ఒక ఎర్రర్‌ను ఎదుర్కొంది: {errorMessage}"
+  },
+  "lighthouse-core/lib/lh-error.js | internalChromeError": {
+    "message": "అంతర్గత Chrome ఎర్రర్ ఏర్పడింది. దయచేసి Chromeని పునఃప్రారంభించి, Lighthouseని తిరిగి అమలు చేయడం ప్రయత్నించండి."
+  },
+  "lighthouse-core/lib/lh-error.js | missingRequiredArtifact": {
+    "message": "అవసరమైన '{artifactName}' గ్యాదరర్ అమలు కాలేదు."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailed": {
+    "message": "మీరు అభ్యర్థించిన పేజీని Lighthouse విశ్వసనీయ రీతిలో పేజీని లోడ్ చేయలేకపోయింది. మీరు సరైన URLని పరీక్షిస్తున్నారని, సర్వర్ అన్ని అభ్యర్థనలకు సరిగ్గా ప్రతిస్పందిస్తుందని నిర్ధారించుకోండి."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedHung": {
+    "message": "పేజీ ప్రతిస్పందించడం ఆపివేసినందున, మీరు అభ్యర్థించిన URLని విశ్వసనీయ రీతిలో Lighthouse లోడ్ చేయలేకపోయింది."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedInsecure": {
+    "message": "మీరు అందించిన URLకు చెల్లుబాటయ్యే భద్రత సర్టిఫికెట్ లేదు. {securityMessages}"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedInterstitial": {
+    "message": "మధ్యలో వచ్చే సందేశ బ్యానర్‌తో పేజీ లోడ్ కావడాన్ని Chrome నిరోధించింది. మీరు సరైన URLను పరీక్షిస్తున్నారని, సర్వర్ అన్ని అభ్యర్థనలకు సరిగ్గా ప్రతిస్పందిస్తోందని నిర్ధారించుకోండి."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedWithDetails": {
+    "message": "మీరు అభ్యర్థించిన పేజీని Lighthouse విశ్వసనీయ రీతిలో లోడ్ చేయలేకపోయింది. మీరు సరైన URLను పరీక్షిస్తున్నారని, సర్వర్ అన్ని అభ్యర్థనలకు సరిగ్గా ప్రతిస్పందిస్తోందని నిర్ధారించుకోండి. (వివరాలు: {errorDetails})"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedWithStatusCode": {
+    "message": "మీరు అభ్యర్థించిన పేజీని Lighthouse విశ్వసనీయ రీతిలో లోడ్ చేయలేకపోయింది. మీరు సరైన URLను పరీక్షిస్తున్నారని, సర్వర్ అన్ని అభ్యర్థనలకు సరిగ్గా ప్రతిస్పందిస్తోందని నిర్ధారించుకోండి. (స్థితి కోడ్: {statusCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadTookTooLong": {
+    "message": "మీ పేజీ లోడ్ కావడానికి చాలా ఎక్కువ సమయం పట్టింది. మీ పేజీ లోడ్ సమయం తగ్గించడానికి దయచేసి నివేదికలో ఉన్న అవకాశాలను అనుసరించి, ఆపై Lighthouseను తిరిగి అమలు చేయడానికి ప్రయత్నించండి. ({errorCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | protocolTimeout": {
+    "message": "DevTools ప్రోటోకాల్ ప్రతిస్పందన కోసం వేచి ఉండటం వలన కేటాయించిన సమయాన్ని దాటిపోయింది. (పద్ధతి: {protocolMethod})"
+  },
+  "lighthouse-core/lib/lh-error.js | requestContentTimeout": {
+    "message": "వనరు కంటెంట్‌ను పొందడంలో కేటాయించిన సమయం దాటిపోయింది"
+  },
+  "lighthouse-core/lib/lh-error.js | urlInvalid": {
+    "message": "మీరు అందించిన URL చెల్లనిదిగా కనిపిస్తోంది."
+  },
+  "lighthouse-core/report/html/renderer/util.js | auditGroupExpandTooltip": {
+    "message": "ఆడిట్‌లను చూపించండి"
+  },
+  "lighthouse-core/report/html/renderer/util.js | crcInitialNavigation": {
+    "message": "ప్రారంభ నావిగేషన్"
+  },
+  "lighthouse-core/report/html/renderer/util.js | crcLongestDurationLabel": {
+    "message": "గరిష్ట క్లిష్టమైన మార్గ ప్రతిస్పందన సమయం:"
+  },
+  "lighthouse-core/report/html/renderer/util.js | errorLabel": {
+    "message": "ఎర్రర్ ఏర్పడింది!"
+  },
+  "lighthouse-core/report/html/renderer/util.js | errorMissingAuditInfo": {
+    "message": "నివేదిక ఎర్రర్: ఆడిట్ సమాచారం లేదు"
+  },
+  "lighthouse-core/report/html/renderer/util.js | labDataTitle": {
+    "message": "ల్యాబ్ డేటా"
+  },
+  "lighthouse-core/report/html/renderer/util.js | lsPerformanceCategoryDescription": {
+    "message": "అనుకరణ మొబైల్ నెట్‌వర్క్‌లో ప్రస్తుత పేజీకి సంబంధించిన [Lighthouse](https://developers.google.com/web/tools/lighthouse/) విశ్లేషణ. విలువలు కేవలం అంచనా మాత్రమే, ఇవి మారే అవకాశం ఉంది."
+  },
+  "lighthouse-core/report/html/renderer/util.js | manualAuditsGroupTitle": {
+    "message": "మాన్యువల్‌గా తనిఖీ చేయవలసిన అదనపు అంశాలు"
+  },
+  "lighthouse-core/report/html/renderer/util.js | notApplicableAuditsGroupTitle": {
+    "message": "వర్తించదు"
+  },
+  "lighthouse-core/report/html/renderer/util.js | opportunityResourceColumnLabel": {
+    "message": "అవకాశం"
+  },
+  "lighthouse-core/report/html/renderer/util.js | opportunitySavingsColumnLabel": {
+    "message": "అంచనా వేసిన పొదుపులు"
+  },
+  "lighthouse-core/report/html/renderer/util.js | passedAuditsGroupTitle": {
+    "message": "ఉత్తీర్ణత సాధించిన ఆడిట్‌లు"
+  },
+  "lighthouse-core/report/html/renderer/util.js | snippetCollapseButtonLabel": {
+    "message": "స్నిప్పెట్‌ను కుదించు"
+  },
+  "lighthouse-core/report/html/renderer/util.js | snippetExpandButtonLabel": {
+    "message": "స్నిప్పెట్‌ను విస్తరించు"
+  },
+  "lighthouse-core/report/html/renderer/util.js | thirdPartyResourcesLabel": {
+    "message": "3వ పక్షం వనరులను చూపు"
+  },
+  "lighthouse-core/report/html/renderer/util.js | toplevelWarningsMessage": {
+    "message": "Lighthouse యొక్క ఈ అమలును ప్రభావితం చేసిన సమస్యలు ఉన్నాయి:"
+  },
+  "lighthouse-core/report/html/renderer/util.js | varianceDisclaimer": {
+    "message": "విలువలు కేవలం అంచనా మాత్రమే, ఇవి మారే అవకాశం ఉంది. పనితీరు స్కోర్ [కేవలం ఈ కొలమానాల ఆధారంగా అందించబడుతుంది](https://github.com/GoogleChrome/lighthouse/blob/d2ec9ffbb21de9ad1a0f86ed24575eda32c796f0/docs/scoring.md#how-are-the-scores-weighted)."
+  },
+  "lighthouse-core/report/html/renderer/util.js | warningAuditsGroupTitle": {
+    "message": "ఆడిట్‌లు పాస్ అయ్యాయి కానీ హెచ్చరికలు ఉన్నాయి"
+  },
+  "lighthouse-core/report/html/renderer/util.js | warningHeader": {
+    "message": "హెచ్చరికలు: "
+  },
+  "stack-packs/packs/wordpress.js | efficient_animated_content": {
+    "message": "మీ GIFను HTML5 వీడియోగా పొందుపరచగల సౌలభ్యం అందించే సేవకు అప్‌లోడ్ చేయడానికి ప్రయత్నించండి."
+  },
+  "stack-packs/packs/wordpress.js | offscreen_images": {
+    "message": "ఏవైనా ఆఫ్‌స్క్రీన్ చిత్రాలు ఉంటే, వాటిని మినహాయించగల సామర్థ్యం కలిగి ఉండే లేదా ఆ కార్యశీలతను అందించే థీమ్‌కు మార్చగలిగే [లేజీ-లోడ్ WordPress ప్లగ్ఇన్‌](https://wordpress.org/plugins/search/lazy+load/)ను ఇన్‌స్టాల్ చేసుకోండి. అలాగే, [AMP ప్లగ్ఇన్‌](https://wordpress.org/plugins/amp/)ను ఉపయోగించడం కూడా పరిశీలించండి."
+  },
+  "stack-packs/packs/wordpress.js | render_blocking_resources": {
+    "message": "[కీలకమైన ఆస్తులను ఇన్‌లైన్‌లో ఉంచడానికి](https://wordpress.org/plugins/search/critical+css/) లేదా [తక్కువ ప్రాముఖ్యత ఉన్న వనరులను మినహాయించడానికి](https://wordpress.org/plugins/search/defer+css+javascript/) మీకు సహాయపడగల అనేక WordPress ప్లగ్ఇన్‌లు ఉన్నాయి. ఈ ప్లగ్ఇన్‌ల ద్వారా అందించబడే ఆప్టిమైజేషన్‌లు మీ థీమ్ లేదా ప్లగ్ఇన్‌ల ఫీచర్‌లను విడగొట్టవచ్చని గుర్తుంచుకోండి, దీని వలన మీరు కోడ్‌కు మార్పులు చేయాల్సి రావచ్చు."
+  },
+  "stack-packs/packs/wordpress.js | time_to_first_byte": {
+    "message": "థీమ్‌లు, ప్లగ్ఇన్‌లు, సర్వర్ లక్షణాలన్నీ కూడా సర్వర్ ప్రతిస్పందన సమయాన్ని ప్రభావితం చేస్తాయి. మరింత ఆప్టిమైజ్ చేయబడిన థీమ్‌ను కనుగొనడానికి, చాలా జాగ్రత్తగా ఆప్టిమైజేషన్ ప్లగ్ఇన్‌ను ఎంచుకోవడానికి మరియు/లేదా మీ సర్వర్‌ను అప్‌గ్రేడ్ చేయడానికి ప్రయత్నించండి."
+  },
+  "stack-packs/packs/wordpress.js | total_byte_weight": {
+    "message": "ఇవ్వబడిన పేజీలో చూపబడే పోస్ట్‌ల సంఖ్యను తగ్గించడం, మీ పొడవైన పోస్ట్‌లను బహుళ పేజీలుగా విడగొట్టడం లేదా మందకొడి లోడింగ్ వ్యాఖ్యల కోసం ప్లగ్ఇన్‌ను ఉపయోగించడం ద్వారా (అంటే, మరిన్ని ట్యాగ్ ద్వారా) మీ పోస్ట్ జాబితాలలో సారాంశాలను చూపడానికి ప్రయత్నించండి."
+  },
+  "stack-packs/packs/wordpress.js | unminified_css": {
+    "message": "అనేక '[WordPress ప్లగ్ఇన్‌లు](https://wordpress.org/plugins/search/minify+css/)' మీ శైలులను క్రమపరచడం, చిన్నవిగా చేయడం, కుదించడం ద్వారా మీ సైట్‌ను మరింత వేగవంతం చేయవచ్చు. వీలైతే, ఈ కనిష్ఠీకరణను ముందుగానే నిర్వహించేలా కూడా మీరు ఒక బిల్డ్ ప్రాసెస్‌ను ఉపయోగించవచ్చు."
+  },
+  "stack-packs/packs/wordpress.js | unminified_javascript": {
+    "message": "అనేక [WordPress ప్లగ్ఇన్‌లు](https://wordpress.org/plugins/search/minify+javascript/) మీ స్క్రిప్ట్‌లను క్రమపరచడం, చిన్నవిగా చేయడం, కుదించడం ద్వారా మీ సైట్‌ను మరింత వేగవంతం చేయవచ్చు. వీలైతే, ఈ కనిష్ఠీకరణను ముందుగానే నిర్వహించేలా కూడా మీరు ఒక బిల్డ్ ప్రాసెస్‌ను ఉపయోగించడం పరిగణించవచ్చు."
+  },
+  "stack-packs/packs/wordpress.js | unused_css_rules": {
+    "message": "మీ పేజీలో ఉపయోగించని CSSను లోడ్ చేస్తున్న '[WordPress ప్లగ్ఇన్‌‌ల](https://wordpress.org/plugins/)' సంఖ్యను తగ్గించడం లేదా మార్చడాన్ని పరిశీలించండి. అదనపు CSSను జోడించే ప్లగ్ఇన్‌లను గుర్తించడానికి, Chrome DevToolsలో '[కోడ్ కవరేజీ](https://developers.google.com/web/updates/2017/04/devtools-release-notes#coverage)' అమలు చేయడానికి ప్రయత్నించండి. అందుకు కారణమైన థీమ్/ప్లగ్ఇన్‌ను స్టైల్‌షీట్‌లోని URL నుండి మీరు గుర్తించవచ్చు. కోడ్ కవరేజ్‌లో ఎక్కువ ఎరుపు రంగు కలిగి ఉన్న జాబితాలో అనేక స్టైల్‌షీట్‌లను కలిగి ఉన్న ప్లగ్ఇన్‌లను వెతకండి. నిజంగా ప్లగ్ఇన్‌ను ఆ పేజీలో ఉపయోగించినప్పుడు మాత్రమే స్టైల్‌షీట్‌కు జత చేయాలి."
+  },
+  "stack-packs/packs/wordpress.js | unused_javascript": {
+    "message": "మీ పేజీలో ఉపయోగించని JavaScriptను లోడ్ చేస్తున్న '[WordPress ప్లగ్ఇన్‌‌ల](https://wordpress.org/plugins/)' సంఖ్యను తగ్గించడం లేదా మార్చడాన్ని పరిశీలించండి. అదనపు JSను జోడించే ప్లగ్ఇన్‌లను గుర్తించడానికి, Chrome DevToolsలో '[కోడ్ కవరేజీ](https://developers.google.com/web/updates/2017/04/devtools-release-notes#coverage)' అమలు చేయడానికి ప్రయత్నించండి. అందుకు కారణమైన థీమ్/ప్లగ్ఇన్‌ను స్క్రిప్ట్ యొక్క URL నుండి మీరు గుర్తించవచ్చు. కోడ్ కవరేజ్‌లో ఎక్కువ ఎరుపు రంగు కలిగి ఉన్న జాబితాలో అనేక స్క్రిప్ట్‌లను కలిగి ఉన్న ప్లగ్ఇన్‌లను వెతకండి. నిజంగా ప్లగ్ఇన్‌ను ఆ పేజీలో ఉపయోగించినప్పుడు మాత్రమే స్క్రిప్ట్‌కు జత చేయాలి."
+  },
+  "stack-packs/packs/wordpress.js | uses_long_cache_ttl": {
+    "message": "[WordPressలో బ్రౌజర్ కాష్ విధానం](https://codex.wordpress.org/WordPress_Optimization#Browser_Caching) గురించి చదవండి."
+  },
+  "stack-packs/packs/wordpress.js | uses_optimized_images": {
+    "message": "నాణ్యత తగ్గకుండా మీ చిత్రాలను కుదించే [చిత్రం ఆప్టిమైజేషన్ WordPress ప్లగ్ఇన్‌](https://wordpress.org/plugins/search/optimize+images/)ను ఉపయోగించడం పరిశీలించండి."
+  },
+  "stack-packs/packs/wordpress.js | uses_responsive_images": {
+    "message": "అవసరమైన చిత్ర పరిమాణాలు అందుబాటులో ఉన్నాయో లేదో నిర్ధారించుకోవడానికి చిత్రాలను నేరుగా [మీడియా లైబ్రరీ](https://codex.wordpress.org/Media_Library_Screen) ద్వారా అప్‌లోడ్ చేయండి. ఆపై వాటిని మీడియా లైబ్రరీ నుండి చొప్పించండి లేదా అనుకూలమైన చిత్ర పరిమాణాలు ఉపయోగించబడ్డాయో లేదో నిర్ధారించుకోవడానికి (ప్రతిస్పందనాత్మక బ్రేక్ పాయింట్‌లు కలిగి ఉండే వాటికి కూడా) చిత్ర విడ్జెట్‌ను ఉపయోగించండి. కొలతలు వాటి వినియోగానికి తగినట్లుగా ఉంటే తప్పితే, '`Full Size`' చిత్రాలను వినియోగించడం నివారించండి. [మరింత తెలుసుకోండి](https://codex.wordpress.org/Inserting_Images_into_Posts_and_Pages#Image_Size)."
+  },
+  "stack-packs/packs/wordpress.js | uses_text_compression": {
+    "message": "మీరు మీ వెబ్ సర్వర్ కన్ఫిగరేషన్‌లో వచన కుదింపును ప్రారంభించవచ్చు."
+  },
+  "stack-packs/packs/wordpress.js | uses_webp_images": {
+    "message": "మీరు అప్‌లోడ్ చేసిన చిత్రాలను అనుకూలమైన ఫార్మాట్‌లలోకి ఆటోమేటిక్‌గా మార్చే [ప్లగ్ఇన్](https://wordpress.org/plugins/search/convert+webp/) లేదా సేవను ఉపయోగించడం పరిశీలించండి."
+  }
+}
diff --git a/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/th.json b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/th.json
new file mode 100644
index 0000000..a0ce750
--- /dev/null
+++ b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/th.json
@@ -0,0 +1,1541 @@
+{
+  "lighthouse-core/audits/accessibility/accesskeys.js | description": {
+    "message": "คีย์การเข้าถึงให้ผู้ใช้โฟกัสที่ส่วนหนึ่งของหน้าได้อย่างรวดเร็ว คีย์การเข้าถึงแต่ละรายการต้องไม่ซ้ำกันเพื่อให้ไปยังส่วนต่างๆ ได้อย่างถูกต้อง [ดูข้อมูลเพิ่มเติม](https://web.dev/accesskeys/)"
+  },
+  "lighthouse-core/audits/accessibility/accesskeys.js | failureTitle": {
+    "message": "ค่า `[accesskey]` ซ้ำกัน"
+  },
+  "lighthouse-core/audits/accessibility/accesskeys.js | title": {
+    "message": "ค่า `[accesskey]` ไม่ซ้ำกัน"
+  },
+  "lighthouse-core/audits/accessibility/aria-allowed-attr.js | description": {
+    "message": "`role` ของ ARIA แต่ละรายการรองรับชุดย่อยของแอตทริบิวต์ `aria-*` ที่เจาะจง หากรายการเหล่านี้ไม่ตรงกันจะทำให้แอตทริบิวต์ `aria-*` ไม่ถูกต้อง [ดูข้อมูลเพิ่มเติม](https://web.dev/aria-allowed-attr/)"
+  },
+  "lighthouse-core/audits/accessibility/aria-allowed-attr.js | failureTitle": {
+    "message": "แอตทริบิวต์ `[aria-*]` ไม่ตรงกับบทบาทของตน"
+  },
+  "lighthouse-core/audits/accessibility/aria-allowed-attr.js | title": {
+    "message": "แอตทริบิวต์ `[aria-*]` ตรงกับบทบาทของตน"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-attr.js | description": {
+    "message": "บทบาท ARIA บางบทบาทกำหนดให้มีแอตทริบิวต์ที่อธิบายสถานะขององค์ประกอบให้โปรแกรมอ่านหน้าจอทราบ [ดูข้อมูลเพิ่มเติม](https://web.dev/aria-required-attr/)"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-attr.js | failureTitle": {
+    "message": "`[role]` ไม่มีแอตทริบิวต์ `[aria-*]` ทั้งหมดที่จำเป็น"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-attr.js | title": {
+    "message": "`[role]` มีแอตทริบิวต์ `[aria-*]` ที่จำเป็นทั้งหมด"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-children.js | description": {
+    "message": "บทบาท ARIA ระดับบนสุดบางบทบาทต้องมีบทบาทย่อยที่เจาะจงเพื่อใช้ฟังก์ชันการช่วยเหลือพิเศษตามวัตถุประสงค์ [ดูข้อมูลเพิ่มเติม](https://web.dev/aria-required-children/)"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-children.js | failureTitle": {
+    "message": "ไม่มีองค์ประกอบที่มี `[role]` ซึ่งกำหนดให้มี `[role]` ย่อยที่เจาะจง"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-children.js | title": {
+    "message": "มีองค์ประกอบที่มี `[role]` ซึ่งกำหนดให้มี `[role]` ย่อยที่เจาะจง"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-parent.js | description": {
+    "message": "บทบาท ARIA ย่อยบางบทบาทต้องอยู่ในบทบาทระดับบนสุดที่เจาะจงเพื่อให้ใช้ฟังก์ชันการช่วยเหลือพิเศษตามวัตถุประสงค์ได้อย่างถูกต้อง [ดูข้อมูลเพิ่มเติม](https://web.dev/aria-required-parent/)"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-parent.js | failureTitle": {
+    "message": "`[role]` ไม่ได้อยู่ในองค์ประกอบระดับบนสุดที่กำหนด"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-parent.js | title": {
+    "message": "`[role]` อยู่ในองค์ประกอบระดับบนสุดที่กำหนด"
+  },
+  "lighthouse-core/audits/accessibility/aria-roles.js | description": {
+    "message": "บทบาท ARIA ต้องมีค่าที่ถูกต้องเพื่อใช้ฟังก์ชันการช่วยเหลือพิเศษตามวัตถุประสงค์ [ดูข้อมูลเพิ่มเติม](https://web.dev/aria-roles/)"
+  },
+  "lighthouse-core/audits/accessibility/aria-roles.js | failureTitle": {
+    "message": "ค่า `[role]` ไม่ถูกต้อง"
+  },
+  "lighthouse-core/audits/accessibility/aria-roles.js | title": {
+    "message": "ค่า `[role]` ถูกต้อง"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr-value.js | description": {
+    "message": "เทคโนโลยีอำนวยความสะดวก เช่น โปรแกรมอ่านหน้าจอ จะตีความแอตทริบิวต์ ARIA ที่มีค่าไม่ถูกต้องไม่ได้ [ดูข้อมูลเพิ่มเติม](https://web.dev/aria-valid-attr-value/)"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr-value.js | failureTitle": {
+    "message": "แอตทริบิวต์ `[aria-*]` ไม่มีค่าที่ถูกต้อง"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr-value.js | title": {
+    "message": "แอตทริบิวต์ `[aria-*]` มีค่าที่ถูกต้อง"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr.js | description": {
+    "message": "เทคโนโลยีอำนวยความสะดวก เช่น โปรแกรมอ่านหน้าจอ จะตีความแอตทริบิวต์ ARIA ที่มีชื่อไม่ถูกต้องไม่ได้ [ดูข้อมูลเพิ่มเติม](https://web.dev/aria-valid-attr/)"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr.js | failureTitle": {
+    "message": "แอตทริบิวต์ `[aria-*]` ไม่ถูกต้องหรือสะกดผิด"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr.js | title": {
+    "message": "แอตทริบิวต์ `[aria-*]` ถูกต้องและสะกดถูกต้อง"
+  },
+  "lighthouse-core/audits/accessibility/audio-caption.js | description": {
+    "message": "คำบรรยายวิดีโอช่วยให้คนหูหนวกหรือผู้ใช้ที่มีความบกพร่องทางการได้ยินเข้าใจองค์ประกอบเสียง โดยให้ข้อมูลสำคัญ เช่น ผู้ที่กำลังพูด สิ่งที่กำลังพูด และข้อมูลอื่นๆ ที่ไม่ใช่เสียงพูด [ดูข้อมูลเพิ่มเติม](https://web.dev/audio-caption/)"
+  },
+  "lighthouse-core/audits/accessibility/audio-caption.js | failureTitle": {
+    "message": "องค์ประกอบ `<audio>` ไม่มีองค์ประกอบ `<track>` ที่มี`[kind=\"captions\"]`"
+  },
+  "lighthouse-core/audits/accessibility/audio-caption.js | title": {
+    "message": "องค์ประกอบ `<audio>` มีองค์ประกอบ `<track>` ที่มี `[kind=\"captions\"]`"
+  },
+  "lighthouse-core/audits/accessibility/axe-audit.js | failingElementsHeader": {
+    "message": "องค์ประกอบที่ไม่ผ่านการตรวจสอบ"
+  },
+  "lighthouse-core/audits/accessibility/button-name.js | description": {
+    "message": "เมื่อปุ่มไม่มีชื่อสำหรับการช่วยเหลือพิเศษ โปรแกรมอ่านหน้าจอจะอ่านปุ่มนั้นว่า \"ปุ่ม\" ซึ่งทำให้ผู้ที่ต้องใช้โปรแกรมอ่านหน้าจอใช้ปุ่มดังกล่าวไม่ได้ [ดูข้อมูลเพิ่มเติม](https://web.dev/button-name/)"
+  },
+  "lighthouse-core/audits/accessibility/button-name.js | failureTitle": {
+    "message": "ปุ่มต่างๆ ไม่มีชื่อสำหรับการช่วยเหลือพิเศษ"
+  },
+  "lighthouse-core/audits/accessibility/button-name.js | title": {
+    "message": "ปุ่มต่างๆ มีชื่อสำหรับการช่วยเหลือพิเศษ"
+  },
+  "lighthouse-core/audits/accessibility/bypass.js | description": {
+    "message": "การเพิ่มวิธีข้ามผ่านเนื้อหาที่ซ้ำกันช่วยให้ผู้ใช้แป้นพิมพ์ไปยังส่วนต่างๆ ของหน้าได้อย่างมีประสิทธิภาพมากขึ้น [ดูข้อมูลเพิ่มเติม](https://web.dev/bypass/)"
+  },
+  "lighthouse-core/audits/accessibility/bypass.js | failureTitle": {
+    "message": "หน้าเว็บไม่มีส่วนหัว ลิงก์การข้าม หรือภูมิภาคของจุดสังเกต"
+  },
+  "lighthouse-core/audits/accessibility/bypass.js | title": {
+    "message": "หน้าเว็บมีส่วนหัว ลิงก์การข้าม หรือภูมิภาคของจุดสังเกต"
+  },
+  "lighthouse-core/audits/accessibility/color-contrast.js | description": {
+    "message": "ข้อความคอนทราสต์ต่ำมักทำให้ผู้ใช้จำนวนมากอ่านได้ยากหรืออ่านไม่ได้เลย [ดูข้อมูลเพิ่มเติม](https://web.dev/color-contrast/)"
+  },
+  "lighthouse-core/audits/accessibility/color-contrast.js | failureTitle": {
+    "message": "สีพื้นหลังและสีพื้นหน้ามีอัตราส่วนคอนทราสต์ไม่เพียงพอ"
+  },
+  "lighthouse-core/audits/accessibility/color-contrast.js | title": {
+    "message": "สีพื้นหลังและสีพื้นหน้ามีอัตราส่วนคอนทราสต์ที่เพียงพอ"
+  },
+  "lighthouse-core/audits/accessibility/definition-list.js | description": {
+    "message": "เมื่อมีการทำเครื่องหมายรายการคำจำกัดความอย่างไม่ถูกต้อง โปรแกรมอ่านหน้าจออาจสร้างเอาต์พุตที่ทำให้สับสนหรือไม่แม่นยำ [ดูข้อมูลเพิ่มเติม](https://web.dev/definition-list/)"
+  },
+  "lighthouse-core/audits/accessibility/definition-list.js | failureTitle": {
+    "message": "`<dl>` ไม่ได้มีเพียงกลุ่ม `<dt>` และ `<dd>` หรือองค์ประกอบ `<script>` หรือ `<template>` ที่เรียงลำดับอย่างถูกต้อง"
+  },
+  "lighthouse-core/audits/accessibility/definition-list.js | title": {
+    "message": "`<dl>` มีเพียงกลุ่ม `<dt>` และ `<dd>` องค์ประกอบ `<script>` หรือ `<template>` ที่เรียงลำดับอย่างถูกต้อง"
+  },
+  "lighthouse-core/audits/accessibility/dlitem.js | description": {
+    "message": "รายการย่อยของคำจำกัดความ (`<dt>` และ `<dd>`) ต้องรวมอยู่ในองค์ประกอบ `<dl>` ระดับบนสุดเพื่อดูแลให้โปรแกรมอ่านหน้าจออ่านได้อย่างถูกต้อง [ดูข้อมูลเพิ่มเติม](https://web.dev/dlitem/)"
+  },
+  "lighthouse-core/audits/accessibility/dlitem.js | failureTitle": {
+    "message": "รายการย่อยของคำจำกัดความไม่ได้รวมอยู่ในองค์ประกอบ `<dl>`"
+  },
+  "lighthouse-core/audits/accessibility/dlitem.js | title": {
+    "message": "รายการย่อยของคำจำกัดความรวมอยู่ในองค์ประกอบ `<dl>`"
+  },
+  "lighthouse-core/audits/accessibility/document-title.js | description": {
+    "message": "ชื่อช่วยให้ผู้ใช้โปรแกรมอ่านหน้าจอทราบถึงภาพรวมของหน้า และผู้ใช้เครื่องมือค้นหาจะดูความเกี่ยวข้องของหน้ากับการค้นหาของตนจากชื่อเป็นหลัก [ดูข้อมูลเพิ่มเติม](https://web.dev/document-title/)"
+  },
+  "lighthouse-core/audits/accessibility/document-title.js | failureTitle": {
+    "message": "เอกสารไม่มีองค์ประกอบ `<title>`"
+  },
+  "lighthouse-core/audits/accessibility/document-title.js | title": {
+    "message": "เอกสารมีองค์ประกอบ `<title>`"
+  },
+  "lighthouse-core/audits/accessibility/duplicate-id.js | description": {
+    "message": "ค่าของแอตทริบิวต์รหัสต้องไม่ซ้ำกันเพื่อป้องกันไม่ให้เทคโนโลยีอำนวยความสะดวกมองข้ามอินสแตนซ์อื่นๆ [ดูข้อมูลเพิ่มเติม](https://web.dev/duplicate-id/)"
+  },
+  "lighthouse-core/audits/accessibility/duplicate-id.js | failureTitle": {
+    "message": "แอตทริบิวต์ `[id]` ในหน้าเว็บซ้ำกัน"
+  },
+  "lighthouse-core/audits/accessibility/duplicate-id.js | title": {
+    "message": "แอตทริบิวต์ `[id]` ในหน้าเว็บไม่ซ้ำกัน"
+  },
+  "lighthouse-core/audits/accessibility/frame-title.js | description": {
+    "message": "ผู้ใช้โปรแกรมอ่านหน้าจอต้องใช้ชื่อเฟรมเพื่ออธิบายเนื้อหาของเฟรม [ดูข้อมูลเพิ่มเติม](https://web.dev/frame-title/)"
+  },
+  "lighthouse-core/audits/accessibility/frame-title.js | failureTitle": {
+    "message": "องค์ประกอบ `<frame>` หรือ `<iframe>` ไม่มีชื่อ"
+  },
+  "lighthouse-core/audits/accessibility/frame-title.js | title": {
+    "message": "องค์ประกอบ `<frame>` หรือ `<iframe>` มีชื่อ"
+  },
+  "lighthouse-core/audits/accessibility/html-has-lang.js | description": {
+    "message": "หากหน้าเว็บไม่ได้ระบุแอตทริบิวต์ lang โปรแกรมอ่านหน้าจอจะถือว่าหน้าดังกล่าวใช้ภาษาเริ่มต้นที่ผู้ใช้เลือกเมื่อตั้งค่าโปรแกรมอ่านหน้าจอ หากที่จริงแล้วหน้าดังกล่าวไม่ได้ใช้ภาษาเริ่มต้น โปรแกรมอ่านหน้าจออาจอ่านข้อความในหน้าได้ไม่ถูกต้อง [ดูข้อมูลเพิ่มเติม](https://web.dev/html-has-lang/)"
+  },
+  "lighthouse-core/audits/accessibility/html-has-lang.js | failureTitle": {
+    "message": "องค์ประกอบ `<html>` ไม่มีแอตทริบิวต์ `[lang]`"
+  },
+  "lighthouse-core/audits/accessibility/html-has-lang.js | title": {
+    "message": "องค์ประกอบ `<html>` มีแอตทริบิวต์ `[lang]`"
+  },
+  "lighthouse-core/audits/accessibility/html-lang-valid.js | description": {
+    "message": "การระบุ[ภาษา BCP 47](https://www.w3.org/International/questions/qa-choosing-language-tags#question) ที่ถูกต้องช่วยให้โปรแกรมอ่านหน้าจออ่านข้อความได้อย่างถูกต้อง [ดูข้อมูลเพิ่มเติม](https://web.dev/html-lang-valid/)"
+  },
+  "lighthouse-core/audits/accessibility/html-lang-valid.js | failureTitle": {
+    "message": "องค์ประกอบ `<html>` ไม่มีค่าที่ถูกต้องสำหรับแอตทริบิวต์ `[lang]`"
+  },
+  "lighthouse-core/audits/accessibility/html-lang-valid.js | title": {
+    "message": "องค์ประกอบ `<html>` มีค่าที่ถูกต้องสำหรับแอตทริบิวต์ `[lang]`"
+  },
+  "lighthouse-core/audits/accessibility/image-alt.js | description": {
+    "message": "องค์ประกอบเพื่อการให้ข้อมูลควรมีข้อความสำรองที่สั้นกระชับและสื่อความหมาย การใช้แอตทริบิวต์ Alt ที่ว่างเปล่าจะเป็นการเพิกเฉยต่อองค์ประกอบเพื่อการตกแต่ง [ดูข้อมูลเพิ่มเติม](https://web.dev/image-alt/)"
+  },
+  "lighthouse-core/audits/accessibility/image-alt.js | failureTitle": {
+    "message": "องค์ประกอบรูปภาพไม่มีแอตทริบิวต์ `[alt]`"
+  },
+  "lighthouse-core/audits/accessibility/image-alt.js | title": {
+    "message": "องค์ประกอบรูปภาพมีแอตทริบิวต์ `[alt]`"
+  },
+  "lighthouse-core/audits/accessibility/input-image-alt.js | description": {
+    "message": "เมื่อมีการใช้รูปภาพเป็นปุ่ม `<input>` การระบุข้อความสำรองจะช่วยให้ผู้ใช้โปรแกรมอ่านหน้าจอเข้าใจวัตถุประสงค์ของปุ่มได้ [ดูข้อมูลเพิ่มเติม](https://web.dev/input-image-alt/)"
+  },
+  "lighthouse-core/audits/accessibility/input-image-alt.js | failureTitle": {
+    "message": "องค์ประกอบ `<input type=\"image\">` ไม่มีข้อความ `[alt]`"
+  },
+  "lighthouse-core/audits/accessibility/input-image-alt.js | title": {
+    "message": "องค์ประกอบ `<input type=\"image\">` มีข้อความ `[alt]`"
+  },
+  "lighthouse-core/audits/accessibility/label.js | description": {
+    "message": "ป้ายกำกับช่วยดูแลให้เทคโนโลยีอำนวยความสะดวกอย่างเช่น โปรแกรมอ่านหน้าจอ อ่านส่วนควบคุมฟอร์มได้อย่างถูกต้อง [ดูข้อมูลเพิ่มเติม](https://web.dev/label/)"
+  },
+  "lighthouse-core/audits/accessibility/label.js | failureTitle": {
+    "message": "องค์ประกอบฟอร์มไม่มีป้ายกำกับที่เชื่อมโยง"
+  },
+  "lighthouse-core/audits/accessibility/label.js | title": {
+    "message": "องค์ประกอบฟอร์มมีป้ายกำกับที่เชื่อมโยงอยู่"
+  },
+  "lighthouse-core/audits/accessibility/layout-table.js | description": {
+    "message": "ตารางที่ใช้สำหรับการออกแบบต้องไม่มีองค์ประกอบข้อมูล เช่น องค์ประกอบ th หรือคำอธิบายภาพ หรือแอตทริบิวต์สรุป เพราะอาจสร้างความสับสนระหว่างการใช้งานของผู้ใช้โปรแกรมอ่านหน้าจอ [ดูข้อมูลเพิ่มเติม](https://web.dev/layout-table/)"
+  },
+  "lighthouse-core/audits/accessibility/layout-table.js | failureTitle": {
+    "message": "องค์ประกอบ `<table>` สำหรับการนำเสนอไม่หลีกเลี่ยงการใช้ `<th>`, `<caption>` หรือแอตทริบิวต์ `[summary]`"
+  },
+  "lighthouse-core/audits/accessibility/layout-table.js | title": {
+    "message": "องค์ประกอบ `<table>` สำหรับการนำเสนอหลีกเลี่ยงการใช้ `<th>`, `<caption>` หรือแอตทริบิวต์ `[summary]`"
+  },
+  "lighthouse-core/audits/accessibility/link-name.js | description": {
+    "message": "ข้อความลิงก์ (และข้อความสำรองสำหรับรูปภาพเมื่อใช้เป็นลิงก์) ที่แยกแยะได้ ไม่ซ้ำกัน และโฟกัสได้ ช่วยปรับปรุงประสบการณ์การไปยังส่วนต่างๆ สำหรับผู้ใช้โปรแกรมอ่านหน้าจอ [ดูข้อมูลเพิ่มเติม](https://web.dev/link-name/)"
+  },
+  "lighthouse-core/audits/accessibility/link-name.js | failureTitle": {
+    "message": "ลิงก์ไม่มีชื่อที่แยกแยะได้"
+  },
+  "lighthouse-core/audits/accessibility/link-name.js | title": {
+    "message": "ลิงก์มีชื่อที่แยกแยะได้"
+  },
+  "lighthouse-core/audits/accessibility/list.js | description": {
+    "message": "โปรแกรมอ่านหน้าจอมีวิธีเฉพาะในการอ่านรายการ การดูแลให้รายการมีโครงสร้างที่ถูกต้องช่วยโปรแกรมอ่านหน้าจอในการอ่านเนื้อหา [ดูข้อมูลเพิ่มเติม](https://web.dev/list/)"
+  },
+  "lighthouse-core/audits/accessibility/list.js | failureTitle": {
+    "message": "รายการไม่ได้มีแต่องค์ประกอบ `<li>` และองค์ประกอบที่รองรับสคริปต์ (`<script>` และ`<template>`)"
+  },
+  "lighthouse-core/audits/accessibility/list.js | title": {
+    "message": "รายการมีเพียงองค์ประกอบ `<li>` และองค์ประกอบที่รองรับสคริปต์ (`<script>` และ `<template>`)"
+  },
+  "lighthouse-core/audits/accessibility/listitem.js | description": {
+    "message": "โปรแกรมอ่านหน้าจอกำหนดให้รายการย่อย (`<li>`) อยู่ใน `<ul>` หรือ `<ol>` ระดับบนสุดเพื่อให้อ่านได้อย่างถูกต้อง [ดูข้อมูลเพิ่มเติม](https://web.dev/listitem/)"
+  },
+  "lighthouse-core/audits/accessibility/listitem.js | failureTitle": {
+    "message": "รายการย่อย (`<li>`) ไม่ได้อยู่ภายในองค์ประกอบระดับบนสุด `<ul>` หรือ `<ol>`"
+  },
+  "lighthouse-core/audits/accessibility/listitem.js | title": {
+    "message": "รายการย่อย (`<li>`) อยู่ในองค์ประกอบระดับบนสุด `<ul>` หรือ `<ol>`"
+  },
+  "lighthouse-core/audits/accessibility/meta-refresh.js | description": {
+    "message": "ผู้ใช้ไม่ได้คาดหวังให้หน้าเว็บรีเฟรชโดยอัตโนมัติ และการรีเฟรชหน้าเว็บจะย้ายโฟกัสกลับไปที่ด้านบนของหน้า ซึ่งอาจทำให้ผู้ใช้ได้รับประสบการณ์การใช้งานที่สับสนหรือน่าหงุดหงิด [ดูข้อมูลเพิ่มเติม](https://web.dev/meta-refresh/)"
+  },
+  "lighthouse-core/audits/accessibility/meta-refresh.js | failureTitle": {
+    "message": "เอกสารใช้ `<meta http-equiv=\"refresh\">`"
+  },
+  "lighthouse-core/audits/accessibility/meta-refresh.js | title": {
+    "message": "เอกสารนี้ไม่ได้ใช้ `<meta http-equiv=\"refresh\">`"
+  },
+  "lighthouse-core/audits/accessibility/meta-viewport.js | description": {
+    "message": "การปิดใช้การซูมจะเป็นปัญหาสำหรับผู้ใช้ที่มีสายตาเลือนรางซึ่งต้องใช้การขยายหน้าจอเพื่อให้ดูเนื้อหาของหน้าเว็บได้อย่างชัดเจน [ดูข้อมูลเพิ่มเติม](https://web.dev/meta-viewport/)"
+  },
+  "lighthouse-core/audits/accessibility/meta-viewport.js | failureTitle": {
+    "message": "มีการใช้ `[user-scalable=\"no\"]` ในองค์ประกอบ `<meta name=\"viewport\">`หรือแอตทริบิวต์ `[maximum-scale]` น้อยกว่า 5"
+  },
+  "lighthouse-core/audits/accessibility/meta-viewport.js | title": {
+    "message": "ไม่มีการใช้ `[user-scalable=\"no\"]` ในองค์ประกอบ `<meta name=\"viewport\">` และแอตทริบิวต์ `[maximum-scale]` ไม่น้อยกว่า 5"
+  },
+  "lighthouse-core/audits/accessibility/object-alt.js | description": {
+    "message": "โปรแกรมอ่านหน้าจอแปลเนื้อหาที่ไม่ใช่ข้อความไม่ได้ การเพิ่มข้อความแสดงแทนลงในองค์ประกอบ `<object>` ช่วยโปรแกรมอ่านหน้าจอถ่ายทอดความหมายให้แก่ผู้ใช้ [ดูข้อมูลเพิ่มเติม](https://web.dev/object-alt/)"
+  },
+  "lighthouse-core/audits/accessibility/object-alt.js | failureTitle": {
+    "message": "องค์ประกอบ `<object>` ไม่มีข้อความ `[alt]`"
+  },
+  "lighthouse-core/audits/accessibility/object-alt.js | title": {
+    "message": "องค์ประกอบ `<object>` มีข้อความ `[alt]`"
+  },
+  "lighthouse-core/audits/accessibility/tabindex.js | description": {
+    "message": "ค่าที่มากกว่า 0 หมายความว่ามีการจัดเรียงการนำทางที่ชัดเจน แม้ว่าการทำงานนี้จะไม่มีปัญหาในทางเทคนิค แต่มักก่อให้เกิดประสบการณ์การใช้งานที่น่าหงุดหงิดสำหรับผู้ใช้เทคโนโลยีอำนวยความสะดวก [ดูข้อมูลเพิ่มเติม](https://web.dev/tabindex/)"
+  },
+  "lighthouse-core/audits/accessibility/tabindex.js | failureTitle": {
+    "message": "องค์ประกอบบางอย่างมีค่า `[tabindex]` มากกว่า 0"
+  },
+  "lighthouse-core/audits/accessibility/tabindex.js | title": {
+    "message": "ไม่มีองค์ประกอบที่มีค่า `[tabindex]` มากกว่า 0"
+  },
+  "lighthouse-core/audits/accessibility/td-headers-attr.js | description": {
+    "message": "โปรแกรมอ่านหน้าจอมีฟีเจอร์ที่ช่วยให้ไปยังส่วนต่างๆ ของตารางได้ง่ายขึ้น การดูแลให้เซลล์ `<td>` ที่ใช้แอตทริบิวต์ `[headers]` อ้างอิงถึงเซลล์อื่นๆ ในตารางเดียวกันเท่านั้นอาจช่วยปรับปรุงประสบการณ์สำหรับผู้ใช้โปรแกรมอ่านหน้าจอ [ดูข้อมูลเพิ่มเติม](https://web.dev/td-headers-attr/)"
+  },
+  "lighthouse-core/audits/accessibility/td-headers-attr.js | failureTitle": {
+    "message": "เซลล์ในองค์ประกอบ `<table>` ที่ใช้แอตทริบิวต์ `[headers]` อ้างอิงถึงเซลล์อื่นๆ ของตารางเดียวกันเท่านั้น"
+  },
+  "lighthouse-core/audits/accessibility/td-headers-attr.js | title": {
+    "message": "เซลล์ในองค์ประกอบ `<table>` ที่ใช้แอตทริบิวต์ `[headers]` อ้างอิงถึงเซลล์อื่นๆ ของตารางเดียวกันเท่านั้น"
+  },
+  "lighthouse-core/audits/accessibility/th-has-data-cells.js | description": {
+    "message": "โปรแกรมอ่านหน้าจอมีฟีเจอร์ที่ช่วยให้ไปยังส่วนต่างๆ ของตารางได้ง่ายขึ้น การดูแลให้ส่วนหัวของตารางอ้างอิงถึงชุดเซลล์บางชุดอยู่เสมออาจช่วยปรับปรุงประสบการณ์สำหรับผู้ใช้โปรแกรมอ่านหน้าจอ [ดูข้อมูลเพิ่มเติม](https://web.dev/th-has-data-cells/)"
+  },
+  "lighthouse-core/audits/accessibility/th-has-data-cells.js | failureTitle": {
+    "message": "องค์ประกอบ `<th>` และองค์ประกอบที่มี `[role=\"columnheader\"/\"rowheader\"]` ไม่มีเซลล์ข้อมูลที่องค์ประกอบอธิบาย"
+  },
+  "lighthouse-core/audits/accessibility/th-has-data-cells.js | title": {
+    "message": "องค์ประกอบ `<th>` และองค์ประกอบที่มี `[role=\"columnheader\"/\"rowheader\"]` มีเซลล์ข้อมูลที่องค์ประกอบอธิบาย"
+  },
+  "lighthouse-core/audits/accessibility/valid-lang.js | description": {
+    "message": "การระบุ[ภาษา BCP 47](https://www.w3.org/International/questions/qa-choosing-language-tags#question) ที่ถูกต้องในองค์ประกอบต่างๆ ช่วยดูแลให้โปรแกรมอ่านหน้าจอออกเสียงข้อความได้อย่างถูกต้อง [ดูข้อมูลเพิ่มเติม](https://web.dev/valid-lang/)"
+  },
+  "lighthouse-core/audits/accessibility/valid-lang.js | failureTitle": {
+    "message": "แอตทริบิวต์ `[lang]` ไม่มีค่าที่ถูกต้อง"
+  },
+  "lighthouse-core/audits/accessibility/valid-lang.js | title": {
+    "message": "แอตทริบิวต์ `[lang]` มีค่าที่ถูกต้อง"
+  },
+  "lighthouse-core/audits/accessibility/video-caption.js | description": {
+    "message": "เมื่อวิดีโอมีคำอธิบายภาพ คนหูหนวกและผู้ใช้ที่มีความบกพร่องทางการได้ยินจะเข้าถึงข้อมูลของวิดีโอได้ง่ายขึ้น [ดูข้อมูลเพิ่มเติม](https://web.dev/video-caption/)"
+  },
+  "lighthouse-core/audits/accessibility/video-caption.js | failureTitle": {
+    "message": "องค์ประกอบ `<video>` ไม่มีองค์ประกอบ `<track>` ที่มี `[kind=\"captions\"]`"
+  },
+  "lighthouse-core/audits/accessibility/video-caption.js | title": {
+    "message": "องค์ประกอบ `<video>` มีองค์ประกอบ `<track>` ที่มี `[kind=\"captions\"]`"
+  },
+  "lighthouse-core/audits/accessibility/video-description.js | description": {
+    "message": "คำอธิบายเสียงให้ข้อมูลเกี่ยวข้องสำหรับวิดีโอที่สื่อสารผ่านบทพูดไม่ได้ เช่น สีหน้าและฉากต่างๆ [ดูข้อมูลเพิ่มเติม](https://web.dev/video-description/)"
+  },
+  "lighthouse-core/audits/accessibility/video-description.js | failureTitle": {
+    "message": "องค์ประกอบ `<video>` ไม่มีองค์ประกอบ `<track>` ที่มี `[kind=\"description\"]`"
+  },
+  "lighthouse-core/audits/accessibility/video-description.js | title": {
+    "message": "องค์ประกอบ `<video>` มีองค์ประกอบ `<track>` ที่มี `[kind=\"description\"]`"
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | description": {
+    "message": "ให้ระบุ `apple-touch-icon` เพื่อให้ปรากฏใน iOS ได้อย่างดีที่สุดเมื่อผู้ใช้เพิ่ม Progressive Web App ลงในหน้าจอหลัก โดยต้องชี้ไปที่สี่เหลี่ยมจตุรัสแบบไม่โปร่งใสขนาด 192 พิกเซล (หรือ 180 พิกเซล) รูปแบบ PNG [ดูข้อมูลเพิ่มเติม](https://developers.google.com/web/fundamentals/design-and-ux/browser-customization/)"
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | failureTitle": {
+    "message": "ไม่ได้ให้ `apple-touch-icon` ที่ถูกต้อง"
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | precomposedWarning": {
+    "message": "`apple-touch-icon-precomposed` ไม่อัปเดต แนะนำให้ใช้ `apple-touch-icon` จะดีกว่า"
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | title": {
+    "message": "มี `apple-touch-icon` ที่ถูกต้อง"
+  },
+  "lighthouse-core/audits/bootup-time.js | chromeExtensionsWarning": {
+    "message": "ส่วนขยาย Chrome ส่งผลเสียต่อประสิทธิภาพในการโหลดของหน้านี้ ลองตรวจสอบหน้าในโหมดไม่ระบุตัวตนหรือจากโปรไฟล์ Chrome ที่ไม่มีส่วนขยาย"
+  },
+  "lighthouse-core/audits/bootup-time.js | columnScriptEval": {
+    "message": "การประเมินสคริปต์"
+  },
+  "lighthouse-core/audits/bootup-time.js | columnScriptParse": {
+    "message": "การแยกวิเคราะห์สคริปต์"
+  },
+  "lighthouse-core/audits/bootup-time.js | columnTotal": {
+    "message": "เวลา CPU รวม"
+  },
+  "lighthouse-core/audits/bootup-time.js | description": {
+    "message": "พิจารณาลดเวลาที่ใช้ในการแยกวิเคราะห์ แปลโปรแกรม และดำเนินการกับ JS การส่งเปย์โหลด JS ปริมาณน้อยอาจช่วยในเรื่องนี้ได้ [ดูข้อมูลเพิ่มเติม](https://developers.google.com/web/tools/lighthouse/audits/bootup)"
+  },
+  "lighthouse-core/audits/bootup-time.js | failureTitle": {
+    "message": "ลดเวลาในการดำเนินการกับ JavaScript"
+  },
+  "lighthouse-core/audits/bootup-time.js | title": {
+    "message": "เวลาในการดำเนินการกับ JavaScript"
+  },
+  "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | description": {
+    "message": "GIF ขนาดใหญ่ไม่มีประสิทธิภาพในการแสดงเนื้อหาภาพเคลื่อนไหว พิจารณาใช้วิดีโอ MPEG4/WebM สำหรับภาพเคลื่อนไหวและใช้ PNG/WebP สำหรับภาพนิ่งแทน GIF เพื่อประหยัดไบต์ของเครือข่าย [ดูข้อมูลเพิ่มเติม](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/replace-animated-gifs-with-video/)"
+  },
+  "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | title": {
+    "message": "ใช้รูปแบบวิดีโอสำหรับเนื้อหาภาพเคลื่อนไหว"
+  },
+  "lighthouse-core/audits/byte-efficiency/offscreen-images.js | description": {
+    "message": "พิจารณาโหลดรูปภาพนอกหน้าจอและรูปภาพที่ซ่อนไว้แบบ Lazy Loading หลังจากที่ทรัพยากรที่สำคัญทั้งหมดโหลดเสร็จแล้วเพื่อลดเวลาในการโต้ตอบ [ดูข้อมูลเพิ่มเติม](https://developers.google.com/web/tools/lighthouse/audits/offscreen-images)"
+  },
+  "lighthouse-core/audits/byte-efficiency/offscreen-images.js | title": {
+    "message": "เลื่อนเวลาโหลดรูปภาพนอกจอภาพ"
+  },
+  "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | description": {
+    "message": "ทรัพยากรบล็อก First Paint ของหน้าเว็บอยู่ พิจารณาแสดง JS/CSS ที่สำคัญในหน้าและเลื่อนเวลาแสดง JS/สไตล์ที่ไม่สำคัญทั้งหมดออกไป [ดูข้อมูลเพิ่มเติม](https://developers.google.com/web/tools/lighthouse/audits/blocking-resources)"
+  },
+  "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | title": {
+    "message": "กำจัดทรัพยากรที่บล็อกการแสดงผล"
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | description": {
+    "message": "เปย์โหลดปริมาณมากของเครือข่ายทำให้ผู้ใช้เสียค่าใช้จ่ายสูงและสัมพันธ์กับเวลาการโหลดนานเป็นอย่างมาก [ดูข้อมูลเพิ่มเติม](https://developers.google.com/web/tools/lighthouse/audits/network-payloads)"
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | displayValue": {
+    "message": "ขนาดรวมเดิมคือ {totalBytes, number, bytes} KB"
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | failureTitle": {
+    "message": "หลีกเลี่ยงเปย์โหลดเครือข่ายปริมาณมาก"
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | title": {
+    "message": "หลีกเลี่ยงเปย์โหลดเครือข่ายปริมาณมาก"
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-css.js | description": {
+    "message": "การลดขนาดไฟล์ CSS ช่วยลดขนาดเปย์โหลดของเครือข่ายได้ [ดูข้อมูลเพิ่มเติม](https://developers.google.com/web/tools/lighthouse/audits/minify-css)"
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-css.js | title": {
+    "message": "ลดขนาด CSS"
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | description": {
+    "message": "การลดขนาดไฟล์ JavaScript ช่วยลดขนาดเปย์โหลดและเวลาในการแยกวิเคราะห์สคริปต์ได้ [ดูข้อมูลเพิ่มเติม](https://developers.google.com/speed/docs/insights/MinifyResources)"
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | title": {
+    "message": "ลดขนาด JavaScript"
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | description": {
+    "message": "นำกฎที่ไม่มีผลแล้วออกจากสไตล์ชีตและเลื่อนเวลาการโหลด CSS ที่ไม่ได้ใช้สำหรับเนื้อหาครึ่งหน้าบนเพื่อลดจำนวนไบต์ที่ไม่จำเป็นที่กิจกรรมเครือข่ายใช้ [ดูข้อมูลเพิ่มเติม](https://developers.google.com/web/tools/lighthouse/audits/unused-css)"
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | title": {
+    "message": "นำ CSS ที่ไม่ได้ใช้ออก"
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-javascript.js | description": {
+    "message": "นำ JavaScript ที่ไม่ได้ใช้ออกเพื่อลดจำนวนไบต์ที่กิจกรรมเครือข่ายใช้"
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-javascript.js | title": {
+    "message": "นำ JavaScript ที่ไม่ได้ใช้ออก"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | description": {
+    "message": "อายุการใช้งานแคชที่ยาวนานช่วยเพิ่มการเข้าชมหน้าเว็บซ้ำได้ [ดูข้อมูลเพิ่มเติม](https://developers.google.com/web/tools/lighthouse/audits/cache-policy)"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | displayValue": {
+    "message": "{itemCount,plural, =1{พบทรัพยากร 1 รายการ}other{พบทรัพยากร # รายการ}}"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | failureTitle": {
+    "message": "แสดงเนื้อหาคงที่ที่มีนโยบายแคชที่มีประสิทธิภาพ"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | title": {
+    "message": "ใช้นโยบายแคชที่มีประสิทธิภาพกับเนื้อหาคงที่"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | description": {
+    "message": "รูปภาพที่ได้รับการเพิ่มประสิทธิภาพจะโหลดได้เร็วขึ้นและใช้อินเทอร์เน็ตมือถือน้อยลง [ดูข้อมูลเพิ่มเติม](https://developers.google.com/web/tools/lighthouse/audits/optimize-images)"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | title": {
+    "message": "เข้ารหัสรูปภาพอย่างมีประสิทธิภาพ"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | description": {
+    "message": "แสดงรูปภาพที่มีขนาดที่เหมาะสมเพื่อประหยัดอินเทอร์เน็ตมือถือและปรับปรุงเวลาในการโหลด [ดูข้อมูลเพิ่มเติม](https://developers.google.com/web/tools/lighthouse/audits/oversized-images)"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | title": {
+    "message": "ปรับขนาดรูปภาพให้เหมาะสม"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | description": {
+    "message": "ทรัพยากรแบบข้อความควรแสดงผลโดยมีการบีบอัด (Gzip, Deflate หรือ Brotli) เพื่อลดจำนวนไบต์เครือข่ายทั้งหมด [ดูข้อมูลเพิ่มเติม](https://developers.google.com/web/tools/lighthouse/audits/text-compression)"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | title": {
+    "message": "เปิดใช้การบีบอัดข้อความ"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | description": {
+    "message": "รูปแบบรูปภาพอย่างเช่น JPEG 2000, JPEG XR และ WebP มักบีบอัดได้ดีกว่า PNG หรือ JPEG ซึ่งหมายความว่าจะดาวน์โหลดได้เร็วขึ้นและใช้อินเทอร์เน็ตน้อยลง [ดูข้อมูลเพิ่มเติม](https://developers.google.com/web/tools/lighthouse/audits/webp)"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | title": {
+    "message": "แสดงรูปภาพในรูปแบบสมัยใหม่"
+  },
+  "lighthouse-core/audits/content-width.js | description": {
+    "message": "หากความกว้างของเนื้อหาในแอปไม่ตรงกับความกว้างของวิวพอร์ต แอปอาจไม่ได้รับการเพิ่มประสิทธิภาพสำหรับหน้าจออุปกรณ์เคลื่อนที่ [ดูข้อมูลเพิ่มเติม](https://developers.google.com/web/tools/lighthouse/audits/content-sized-correctly-for-viewport)"
+  },
+  "lighthouse-core/audits/content-width.js | explanation": {
+    "message": "ขนาดวิวพอร์ต {innerWidth} พิกเซลไม่ตรงกับขนาดหน้าต่าง {outerWidth} พิกเซล"
+  },
+  "lighthouse-core/audits/content-width.js | failureTitle": {
+    "message": "ไม่ได้ปรับขนาดเนื้อหาอย่างถูกต้องสำหรับวิวพอร์ต"
+  },
+  "lighthouse-core/audits/content-width.js | title": {
+    "message": "มีการปรับขนาดเนื้อหาอย่างถูกต้องสำหรับวิวพอร์ต"
+  },
+  "lighthouse-core/audits/critical-request-chains.js | description": {
+    "message": "ห่วงโซ่คำขอที่สำคัญด้านล่างแสดงให้เห็นทรัพยากรที่โหลดโดยมีลำดับความสำคัญสูง พิจารณาลดความยาวของห่วงโซ่ ลดขนาดการดาวน์โหลดของทรัพยากร หรือเลื่อนเวลาการดาวน์โหลดทรัพยากรที่ไม่จำเป็นเพื่อปรับปรุงการโหลดหน้าเว็บ [ดูข้อมูลเพิ่มเติม](https://developers.google.com/web/tools/lighthouse/audits/critical-request-chains)"
+  },
+  "lighthouse-core/audits/critical-request-chains.js | displayValue": {
+    "message": "{itemCount,plural, =1{พบห่วงโซ่ 1 รายการ}other{พบห่วงโซ่ # รายการ}}"
+  },
+  "lighthouse-core/audits/critical-request-chains.js | title": {
+    "message": "ลดความลึกของคำขอที่สำคัญ"
+  },
+  "lighthouse-core/audits/deprecations.js | columnDeprecate": {
+    "message": "การเลิกใช้งาน / คำเตือน"
+  },
+  "lighthouse-core/audits/deprecations.js | columnLine": {
+    "message": "บรรทัด"
+  },
+  "lighthouse-core/audits/deprecations.js | description": {
+    "message": "API ที่เลิกใช้งานแล้วจะถูกนำออกจากเบราว์เซอร์ในท้ายที่สุด [ดูข้อมูลเพิ่มเติม](https://web.dev/deprecations)"
+  },
+  "lighthouse-core/audits/deprecations.js | displayValue": {
+    "message": "{itemCount,plural, =1{พบคำเตือน 1 รายการ}other{พบคำเตือน # รายการ}}"
+  },
+  "lighthouse-core/audits/deprecations.js | failureTitle": {
+    "message": "ใช้ API ที่เลิกใช้งานแล้ว"
+  },
+  "lighthouse-core/audits/deprecations.js | title": {
+    "message": "หลีกเลี่ยงการใช้ API ที่เลิกใช้งานแล้ว"
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | description": {
+    "message": "แคชของแอปพลิเคชันเลิกใช้งานแล้ว [ดูข้อมูลเพิ่มเติม](https://web.dev/appcache-manifest)"
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | displayValue": {
+    "message": "พบ \"{AppCacheManifest}\""
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | failureTitle": {
+    "message": "ใช้แคชของแอปพลิเคชัน"
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | title": {
+    "message": "หลีกเลี่ยงการใช้แคชของแอปพลิเคชัน"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | description": {
+    "message": "การระบุ DOCTYPE ช่วยป้องกันไม่ให้เบราว์เซอร์เปลี่ยนไปใช้โหมดที่ไม่มาตรฐาน [ดูข้อมูลเพิ่มเติม](https://web.dev/doctype)"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationBadDoctype": {
+    "message": "ชื่อ DOCTYPE ต้องเป็นสตริงตัวพิมพ์เล็ก `html`"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationNoDoctype": {
+    "message": "เอกสารต้องมี DOCTYPE"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationPublicId": {
+    "message": "สตริง publicId ควรจะว่าง"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationSystemId": {
+    "message": "สตริง systemId ควรจะว่าง"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | failureTitle": {
+    "message": "หน้าไม่มี DOCTYPE HTML ดังนั้นจึงทริกเกอร์โหมดที่ไม่มาตรฐาน"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | title": {
+    "message": "หน้ามี DOCTYPE HTML"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | columnElement": {
+    "message": "องค์ประกอบ"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | columnStatistic": {
+    "message": "สถิติ"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | columnValue": {
+    "message": "ค่า"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | description": {
+    "message": "วิศวกรเบราว์เซอร์แนะนำให้ใช้หน้าเว็บที่มีองค์ประกอบ DOM น้อยกว่า 1,500 รายการโดยประมาณ ความลึกที่เหมาะที่สุดคือแบบต้นไม้ซึ่งมีองค์ประกอบน้อยกว่า 32 รายการและมีองค์ประกอบย่อย/หลักน้อยกว่า 60 รายการ รายการ DOM ขนาดใหญ่อาจใช้หน่วยความจำเพิ่มขึ้น ทำให้[การคำนวณสไตล์](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations)ยาวนานขึ้น และสร้าง[การจัดเรียงการออกแบบใหม่](https://developers.google.com/speed/articles/reflow)ซึ่งมีค่าใช้จ่ายสูง [ดูข้อมูลเพิ่มเติม](https://web.dev/dom-size)"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 องค์ประกอบ}other{# องค์ประกอบ}}"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | failureTitle": {
+    "message": "หลีกเลี่ยง DOM ที่มีขนาดใหญ่เกินไป"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | statisticDOMDepth": {
+    "message": "ความลึก DOM สูงสุด"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | statisticDOMElements": {
+    "message": "องค์ประกอบ DOM ทั้งหมด"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | statisticDOMWidth": {
+    "message": "จำนวนองค์ประกอบย่อยสูงสุด"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | title": {
+    "message": "หลีกเลี่ยง DOM ที่มีขนาดใหญ่เกินไป"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | columnRel": {
+    "message": "Rel"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | columnTarget": {
+    "message": "เป้าหมาย"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | description": {
+    "message": "เพิ่ม `rel=\"noopener\"` หรือ `rel=\"noreferrer\"` ไปยังลิงก์ภายนอกใดๆ เพื่อปรับปรุงประสิทธิภาพและป้องกันช่องโหว่ด้านความปลอดภัย [ดูข้อมูลเพิ่มเติม](https://web.dev/external-anchors-use-rel-noopener)"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | failureTitle": {
+    "message": "ลิงก์ไปปลายทางแบบ Cross-Origin ไม่ปลอดภัย"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | title": {
+    "message": "ลิงก์ไปปลายทางแบบ Cross-Origin ปลอดภัย"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | warning": {
+    "message": "ระบุปลายทางสำหรับโฆษณาด้านล่างสุด ({anchorHTML}) ไม่ได้ หากไม่ได้ใช้เป็นไฮเปอร์ลิงก์ ลองเอา target=_blank ออก"
+  },
+  "lighthouse-core/audits/dobetterweb/geolocation-on-start.js | description": {
+    "message": "ผู้ใช้ไม่เชื่อถือหรือเกิดความสับสนในเว็บไซต์ที่ขอข้อมูลตำแหน่งโดยไม่มีบริบทให้ พิจารณาผูกคำขอกับการกระทำของผู้ใช้แทน [ดูข้อมูลเพิ่มเติม](https://web.dev/geolocation-on-start)"
+  },
+  "lighthouse-core/audits/dobetterweb/geolocation-on-start.js | failureTitle": {
+    "message": "ขอสิทธิ์เข้าถึงตำแหน่งทางภูมิศาสตร์ในการโหลดหน้าเว็บ"
+  },
+  "lighthouse-core/audits/dobetterweb/geolocation-on-start.js | title": {
+    "message": "หลีกเลี่ยงการขอสิทธิ์เข้าถึงตำแหน่งทางภูมิศาสตร์ในการโหลดหน้าเว็บ"
+  },
+  "lighthouse-core/audits/dobetterweb/js-libraries.js | columnVersion": {
+    "message": "เวอร์ชัน"
+  },
+  "lighthouse-core/audits/dobetterweb/js-libraries.js | description": {
+    "message": "ตรวจพบไลบรารี JavaScript ส่วนหน้าทั้งหมดในหน้าเว็บ [ดูข้อมูลเพิ่มเติม](https://web.dev/js-libraries)"
+  },
+  "lighthouse-core/audits/dobetterweb/js-libraries.js | title": {
+    "message": "ตรวจพบไลบรารี JavaScript"
+  },
+  "lighthouse-core/audits/dobetterweb/no-document-write.js | description": {
+    "message": "สำหรับผู้ใช้ที่การเชื่อมต่อช้า สคริปต์ภายนอกที่แทรกเข้ามาแบบไดนามิกผ่านทาง `document.write()` จะช่วยหน่วงการโหลดหน้าเว็บได้หลายสิบวินาที [ดูข้อมูลเพิ่มเติม](https://web.dev/no-document-write)"
+  },
+  "lighthouse-core/audits/dobetterweb/no-document-write.js | failureTitle": {
+    "message": "ใช้ `document.write()`"
+  },
+  "lighthouse-core/audits/dobetterweb/no-document-write.js | title": {
+    "message": "หลีกเลี่ยงการใช้ `document.write()`"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | columnSeverity": {
+    "message": "ความรุนแรงสูงสุด"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | columnVersion": {
+    "message": "เวอร์ชันของไลบรารี"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | columnVuln": {
+    "message": "จำนวนช่องโหว่"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | description": {
+    "message": "สคริปต์ของบุคคลที่สามบางรายการอาจมีช่องโหว่ด้านความปลอดภัยที่เป็นที่รู้จักซึ่งผู้โจมตีจะหาพบได้ง่ายและใช้ประโยชน์จากช่องโหว่นั้น [ดูข้อมูลเพิ่มเติม](https://web.dev/no-vulnerable-libraries)"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | displayValue": {
+    "message": "{itemCount,plural, =1{ตรวจพบช่องโหว่ 1 รายการ}other{ตรวจพบช่องโหว่ # รายการ}}"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | failureTitle": {
+    "message": "มีไลบรารี JavaScript ส่วนหน้าที่มีช่องโหว่ด้านความปลอดภัย"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | rowSeverityHigh": {
+    "message": "สูง"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | rowSeverityLow": {
+    "message": "ต่ำ"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | rowSeverityMedium": {
+    "message": "ปานกลาง"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | title": {
+    "message": "หลีกเลี่ยงการใช้ไลบรารี JavaScript ส่วนหน้าที่มีช่องโหว่ด้านความปลอดภัย"
+  },
+  "lighthouse-core/audits/dobetterweb/notification-on-start.js | description": {
+    "message": "ผู้ใช้ไม่เชื่อถือหรือเกิดความสับสนในเว็บไซต์ที่ขอส่งการแจ้งเตือนโดยไม่มีบริบทให้ พิจารณาผูกคำขอกับท่าทางสัมผัสของผู้ใช้แทน [ดูข้อมูลเพิ่มเติม](https://web.dev/notification-on-start)"
+  },
+  "lighthouse-core/audits/dobetterweb/notification-on-start.js | failureTitle": {
+    "message": "ขอสิทธิ์การแจ้งเตือนในการโหลดหน้าเว็บ"
+  },
+  "lighthouse-core/audits/dobetterweb/notification-on-start.js | title": {
+    "message": "หลีกเลี่ยงการขอสิทธิ์การแจ้งเตือนในการโหลดหน้าเว็บ"
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | columnFailingElem": {
+    "message": "องค์ประกอบที่ไม่ผ่านการตรวจสอบ"
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | description": {
+    "message": "การป้องกันการวางรหัสผ่านทำให้นโยบายความปลอดภัยที่ดีอ่อนแอลง [ดูข้อมูลเพิ่มเติม](https://web.dev/password-inputs-can-be-pasted-into)"
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | failureTitle": {
+    "message": "ป้องกันผู้ใช้ไม่ให้วางรหัสผ่านในช่อง"
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | title": {
+    "message": "อนุญาตผู้ใช้ให้วางรหัสผ่านในช่องได้"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | columnProtocol": {
+    "message": "โปรโตคอล"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | description": {
+    "message": "HTTP/2 มีข้อดีที่มากกว่า HTTP/1.1 คือ ส่วนหัวแบบไบนารี การทำมัลติเพล็กซิง และการ Push ไปที่เซิร์ฟเวอร์ [ดูข้อมูลเพิ่มเติม](https://web.dev/uses-http2)"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | displayValue": {
+    "message": "{itemCount,plural, =1{คำขอ 1 รายการไม่ได้แสดงผ่าน HTTP/2}other{คำขอ # รายการไม่ได้แสดงผ่าน HTTP/2}}"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | failureTitle": {
+    "message": "ไม่ได้ใช้ HTTP/2 สำหรับทรัพยากรทั้งหมด"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | title": {
+    "message": "ใช้ HTTP/2 กับทรัพยากรของตนเอง"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-passive-event-listeners.js | description": {
+    "message": "ลองระบุ Listener เหตุการณ์แบบแตะและลูกกลิ้งเป็น `passive` เพื่อปรับปรุงประสิทธิภาพการเลื่อนของหน้าเว็บ [ดูข้อมูลเพิ่มเติม](https://web.dev/uses-passive-event-listeners)"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-passive-event-listeners.js | failureTitle": {
+    "message": "ไม่ได้ใช้ Listener แบบแพสซีฟเพื่อปรับปรุงประสิทธิภาพการเลื่อน"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-passive-event-listeners.js | title": {
+    "message": "ใช้ Listener แบบแพสซีฟเพื่อปรับปรุงประสิทธิภาพการเลื่อน"
+  },
+  "lighthouse-core/audits/errors-in-console.js | columnDesc": {
+    "message": "รายละเอียด"
+  },
+  "lighthouse-core/audits/errors-in-console.js | description": {
+    "message": "ข้อผิดพลาดที่บันทึกลงในคอนโซลแสดงให้เห็นถึงปัญหาที่ไม่ได้รับการแก้ไข ข้อผิดพลาดอาจมาจากคำขอเครือข่ายที่ไม่สำเร็จ และปัญหาอื่นๆ เกี่ยวกับเบราว์เซอร์ [ดูข้อมูลเพิ่มเติม](https://web.dev/errors-in-console)"
+  },
+  "lighthouse-core/audits/errors-in-console.js | failureTitle": {
+    "message": "บันทึกข้อผิดพลาดเบราว์เซอร์ลงในคอนโซลแล้ว"
+  },
+  "lighthouse-core/audits/errors-in-console.js | title": {
+    "message": "ไม่มีข้อผิดพลาดเบราว์เซอร์บันทึกลงในคอนโซล"
+  },
+  "lighthouse-core/audits/font-display.js | description": {
+    "message": "ใช้ประโยชน์จากฟีเจอร์ CSS สำหรับแสดงแบบอักษรเพื่อให้ผู้ใช้มองเห็นข้อความได้ในขณะที่กำลังโหลดเว็บฟอนต์ [ดูข้อมูลเพิ่มเติม](https://developers.google.com/web/updates/2016/02/font-display)"
+  },
+  "lighthouse-core/audits/font-display.js | failureTitle": {
+    "message": "ตรวจสอบว่าข้อความจะยังมองเห็นได้ในระหว่างการโหลดเว็บฟอนต์"
+  },
+  "lighthouse-core/audits/font-display.js | title": {
+    "message": "ข้อความทั้งหมดจะยังมองเห็นได้ในระหว่างการโหลดเว็บฟอนต์"
+  },
+  "lighthouse-core/audits/font-display.js | undeclaredFontURLWarning": {
+    "message": "Lighthouse ตรวจสอบค่าการแสดงแบบอักษรสำหรับ URL ต่อไปนี้โดยอัตโนมัติไม่ได้: {fontURL}"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | columnActual": {
+    "message": "สัดส่วนภาพ (ขนาดจริง)"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | columnDisplayed": {
+    "message": "สัดส่วนภาพ (ที่แสดง)"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | description": {
+    "message": "ขนาดแสดงรูปภาพควรจะมีสัดส่วนที่เป็นธรรมชาติ [ดูข้อมูลเพิ่มเติม](https://web.dev/image-aspect-ratio)"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | failureTitle": {
+    "message": "แสดงรูปภาพที่มีสัดส่วนไม่ถูกต้อง"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | title": {
+    "message": "แสดงรูปภาพที่มีสัดส่วนถูกต้อง"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | warningCompute": {
+    "message": "ข้อมูลขนาดรูปภาพไมู่กต้อง {url}"
+  },
+  "lighthouse-core/audits/installable-manifest.js | description": {
+    "message": "เบราว์เซอร์แจ้งผู้ใช้อย่างชัดแจ้งให้เพิ่มแอปของคุณในหน้าจอหลัก ซึ่งจะทำให้ผู้ใช้มีส่วนร่วมเพิ่มขึ้นได้ [ดูข้อมูลเพิ่มเติม](https://developers.google.com/web/tools/lighthouse/audits/install-prompt)"
+  },
+  "lighthouse-core/audits/installable-manifest.js | failureTitle": {
+    "message": "ไฟล์ Manifest ของเว็บแอปไม่ตรงตามข้อกำหนดด้านความสามารถในการติดตั้ง"
+  },
+  "lighthouse-core/audits/installable-manifest.js | title": {
+    "message": "ไฟล์ Manifest ของเว็บแอปตรงตามข้อกำหนดด้านความสามารถในการติดตั้ง"
+  },
+  "lighthouse-core/audits/is-on-https.js | columnInsecureURL": {
+    "message": "URL ไม่ปลอดภัย"
+  },
+  "lighthouse-core/audits/is-on-https.js | description": {
+    "message": "ทุกเว็บไซต์ควรป้องกันด้วยการใช้ HTTPS แม้ว่าจะเป็นเว็บไซต์ที่ไม่มีข้อมูลที่ละเอียดอ่อนก็ตาม HTTPS ป้องกันผู้บุกรุกไม่ให้แทรกแซงหรือแอบฟังการสื่อสารระหว่างแอปกับผู้ใช้ของคุณ และเป็นข้อกำหนดที่ต้องทำก่อนสำหรับ HTTP/2 รวมถึง API ของแพลตฟอร์มเว็บใหม่ๆ อีกมาก [ดูข้อมูลเพิ่มเติม](https://web.dev/is-on-https)"
+  },
+  "lighthouse-core/audits/is-on-https.js | displayValue": {
+    "message": "{itemCount,plural, =1{พบคำขอที่ไม่ปลอดภัย 1 รายการ}other{พบคำขอที่ไม่ปลอดภัย # รายการ}}"
+  },
+  "lighthouse-core/audits/is-on-https.js | failureTitle": {
+    "message": "ไม่ได้ใช้ HTTPS"
+  },
+  "lighthouse-core/audits/is-on-https.js | title": {
+    "message": "ใช้ HTTPS"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | description": {
+    "message": "การโหลดหน้าเว็บที่รวดเร็วผ่านเครือข่ายมือถือช่วยให้มั่นใจว่าผู้ใช้ได้รับประสบการณ์การใช้งานที่ดีในอุปกรณ์เคลื่อนที่ [ดูข้อมูลเพิ่มเติม](https://developers.google.com/web/tools/lighthouse/audits/fast-3g)"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | displayValueText": {
+    "message": "โต้ตอบที่ {timeInMs, number, seconds} วินาที"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | displayValueTextWithOverride": {
+    "message": "มีการโต้ตอบในเครือข่ายมือถือจำลองที่ {timeInMs, number, seconds} วินาที"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | explanationLoadSlow": {
+    "message": "หน้าเว็บโหลดช้าเกินไปและไม่มีการโต้ตอบภายใน 10 วินาที ไปที่โอกาสและการวินิจฉัยในส่วน \"ประสิทธิภาพ\" เพื่อดูวิธีปรับปรุง"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | failureTitle": {
+    "message": "การโหลดหน้าเว็บไม่เร็วพอเมื่อใช้เครือข่ายมือถือ"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | title": {
+    "message": "การโหลดหน้าเว็บเร็วพอเมื่อใช้เครือข่ายมือถือ"
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | columnCategory": {
+    "message": "หมวดหมู่"
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | description": {
+    "message": "พิจารณาลดเวลาที่ใช้ในการแยกวิเคราะห์ แปลโปรแกรม และดำเนินการกับ JS การส่งเปย์โหลด JS ปริมาณน้อยอาจช่วยในเรื่องนี้ได้"
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | failureTitle": {
+    "message": "ลดการทำงานของเธรดหลัก"
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | title": {
+    "message": "ลดการทำงานของเธรดหลัก"
+  },
+  "lighthouse-core/audits/manual/pwa-cross-browser.js | description": {
+    "message": "เว็บไซต์ควรทำงานในเบราว์เซอร์หลักๆ ทั้งหมดได้เพื่อให้เข้าถึงผู้ใช้จำนวนมากที่สุด [ดูข้อมูลเพิ่มเติม](https://developers.google.com/web/progressive-web-apps/checklist#site-works-cross-browser)"
+  },
+  "lighthouse-core/audits/manual/pwa-cross-browser.js | title": {
+    "message": "เว็บไซต์ทำงานในเบราว์เซอร์ต่างๆ ได้"
+  },
+  "lighthouse-core/audits/manual/pwa-each-page-has-url.js | description": {
+    "message": "ตรวจดูว่าแต่ละหน้าทำ Deep Link ผ่าน URL ได้และ URL ต่างๆ ไม่ซ้ำกันเพื่อให้แชร์ได้ในโซเชียลมีเดีย [ดูข้อมูลเพิ่มเติม](https://developers.google.com/web/progressive-web-apps/checklist#each-page-has-a-url)"
+  },
+  "lighthouse-core/audits/manual/pwa-each-page-has-url.js | title": {
+    "message": "แต่ละหน้ามี URL ที่ไม่ซ้ำกัน"
+  },
+  "lighthouse-core/audits/manual/pwa-page-transitions.js | description": {
+    "message": "การเปลี่ยนควรจะดำเนินไปอย่างรวดเร็วขณะที่คุณแตะไปรอบๆ แม้ในเครือข่ายที่ช้า ซึ่งเป็นสิ่งสำคัญที่นำไปสู่ประสิทธิภาพที่รับรู้ได้ [ดูข้อมูลเพิ่มเติม](https://developers.google.com/web/progressive-web-apps/checklist#page-transitions-dont-feel-like-they-block-on-the-network)"
+  },
+  "lighthouse-core/audits/manual/pwa-page-transitions.js | title": {
+    "message": "เปลี่ยนหน้าได้รวดเร็วแม้ว่าเครือข่ายจะช้า"
+  },
+  "lighthouse-core/audits/metrics/estimated-input-latency.js | description": {
+    "message": "เวลาตอบสนองต่ออินพุตโดยประมาณเป็นระยะเวลาโดยประมาณที่แอปใช้เพื่อตอบสนองอินพุตของผู้ใช้ระหว่างการโหลดหน้าเว็บในกรอบเวลา 5 วินาทีที่ทำงานหนักที่สุด มีหน่วยเป็นมิลลิวินาที หากเวลาในการตอบสนองนานกว่า 50 มิลลิวินาที ผู้ใช้อาจรู้สึกว่าแอปช้า [ดูข้อมูลเพิ่มเติม](https://developers.google.com/web/tools/lighthouse/audits/estimated-input-latency)"
+  },
+  "lighthouse-core/audits/metrics/estimated-input-latency.js | title": {
+    "message": "เวลาในการตอบสนองต่ออินพุตโดยประมาณ"
+  },
+  "lighthouse-core/audits/metrics/first-contentful-paint.js | description": {
+    "message": "First Contentful Paint ระบุเวลาที่มีการแสดงผลข้อความหรือรูปภาพครั้งแรก [ดูข้อมูลเพิ่มเติม](https://developers.google.com/web/tools/lighthouse/audits/first-contentful-paint)"
+  },
+  "lighthouse-core/audits/metrics/first-contentful-paint.js | title": {
+    "message": "การแสดงผลที่มีเนื้อหาเต็มครั้งแรก"
+  },
+  "lighthouse-core/audits/metrics/first-cpu-idle.js | description": {
+    "message": "First CPU Idle ระบุครั้งแรกที่เธรดหลักของหน้าเว็บว่างพอที่จะจัดการกับอินพุต [ดูข้อมูลเพิ่มเติม](https://developers.google.com/web/tools/lighthouse/audits/first-interactive)"
+  },
+  "lighthouse-core/audits/metrics/first-cpu-idle.js | title": {
+    "message": "CPU ไม่ได้ใช้งานครั้งแรก"
+  },
+  "lighthouse-core/audits/metrics/first-meaningful-paint.js | description": {
+    "message": "การแสดงผลที่มีความหมายครั้งแรกวัดเมื่อเนื้อหาหลักของหน้าเว็บปรากฏ [ดูข้อมูลเพิ่มเติม](https://developers.google.com/web/tools/lighthouse/audits/first-meaningful-paint)"
+  },
+  "lighthouse-core/audits/metrics/first-meaningful-paint.js | title": {
+    "message": "การแสดงผลที่มีความหมายครั้งแรก"
+  },
+  "lighthouse-core/audits/metrics/interactive.js | description": {
+    "message": "เวลาในการตอบสนองคือระยะเวลาที่หน้าเว็บใช้ในการตอบสนองอย่างสมบูรณ์ [ดูข้อมูลเพิ่มเติม](https://developers.google.com/web/tools/lighthouse/audits/consistently-interactive)"
+  },
+  "lighthouse-core/audits/metrics/interactive.js | title": {
+    "message": "เวลาในการโต้ตอบ"
+  },
+  "lighthouse-core/audits/metrics/max-potential-fid.js | description": {
+    "message": "First Input Delay สูงสุดที่อาจเกิดขึ้นซึ่งผู้ใช้อาจเจอคือระยะเวลาของงานที่ยาวที่สุดเป็นมิลลิวินาที [ดูข้อมูลเพิ่มเติม](https://developers.google.com/web/updates/2018/05/first-input-delay)"
+  },
+  "lighthouse-core/audits/metrics/max-potential-fid.js | title": {
+    "message": "First Input Delay สูงสุดที่อาจเกิดขึ้น"
+  },
+  "lighthouse-core/audits/metrics/speed-index.js | description": {
+    "message": "ดัชนีความเร็วแสดงให้เห็นความเร็วที่เนื้อหาของหน้าปรากฏจนดูสมบูรณ์ [ดูข้อมูลเพิ่มเติม](https://developers.google.com/web/tools/lighthouse/audits/speed-index)"
+  },
+  "lighthouse-core/audits/metrics/speed-index.js | title": {
+    "message": "ดัชนีความเร็ว"
+  },
+  "lighthouse-core/audits/metrics/total-blocking-time.js | description": {
+    "message": "ผลรวมช่วงเวลาทั้งหมดระหว่าง FCP และเวลาในการตอบสนอง เมื่อความยาวของงานเกิน 50ms หน่วยเป็นมิลลิวินาที"
+  },
+  "lighthouse-core/audits/metrics/total-blocking-time.js | title": {
+    "message": "เวลาที่บล็อกทั้งหมด"
+  },
+  "lighthouse-core/audits/network-rtt.js | description": {
+    "message": "ระยะเวลารับส่งข้อมูล (RTT) ของเครือข่ายมีผลกระทบอย่างมากต่อประสิทธิภาพ หากต้นทางมี RTT สูง แสดงว่าเซิร์ฟเวอร์ที่อยู่ใกล้กับผู้ใช้มากกว่าอาจช่วยปรับปรุงประสิทธิภาพได้ [ดูข้อมูลเพิ่มเติม](https://hpbn.co/primer-on-latency-and-bandwidth/)"
+  },
+  "lighthouse-core/audits/network-rtt.js | title": {
+    "message": "ระยะเวลารับส่งข้อมูลของเครือข่าย"
+  },
+  "lighthouse-core/audits/network-server-latency.js | description": {
+    "message": "เวลาในการตอบสนองต่อเซิร์ฟเวอร์อาจส่งผลกระทบต่อประสิทธิภาพของเว็บ หากต้นทางใช้เวลาในการตอบสนองต่อเซิร์ฟเวอร์นาน แสดงว่ามีการใช้งานเซิร์ฟเวอร์มากเกินไปหรือประสิทธิภาพแบ็กเอนด์ของเซิร์ฟเวอร์ไม่ดี [ดูข้อมูลเพิ่มเติม](https://hpbn.co/primer-on-web-performance/#analyzing-the-resource-waterfall)"
+  },
+  "lighthouse-core/audits/network-server-latency.js | title": {
+    "message": "เวลาในการตอบสนองจากแบ็กเอนด์ของเซิร์ฟเวอร์"
+  },
+  "lighthouse-core/audits/offline-start-url.js | description": {
+    "message": "Service Worker ช่วยให้เว็บแอปของคุณเชื่อถือได้ในสภาวะของเครือข่ายที่คาดการณ์ไม่ได้ [ดูข้อมูลเพิ่มเติม](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)"
+  },
+  "lighthouse-core/audits/offline-start-url.js | failureTitle": {
+    "message": "`start_url` ไม่ตอบสนองด้วยรหัส 200 เมื่อออฟไลน์"
+  },
+  "lighthouse-core/audits/offline-start-url.js | title": {
+    "message": "`start_url` ตอบสนองด้วยรหัส 200 เมื่อออฟไลน์"
+  },
+  "lighthouse-core/audits/offline-start-url.js | warningCantStart": {
+    "message": "Lighthouse อ่าน `start_url` จากไฟล์ Manifest ไม่ได้ ด้วยเหตุนี้ ระบบจึงสันนิษฐานว่า `start_url` เป็น URL ของเอกสาร ข้อความแสดงข้อผิดพลาด: \"{manifestWarning}\""
+  },
+  "lighthouse-core/audits/performance-budget.js | columnOverBudget": {
+    "message": "เกินงบประมาณ"
+  },
+  "lighthouse-core/audits/performance-budget.js | description": {
+    "message": "ควบคุมให้จำนวนและขนาดของคำขอเครือข่ายอยู่ภายในเป้าหมายที่กำหนดตามงบประมาณประสิทธิภาพที่ให้มา [ดูข้อมูลเพิ่มเติม](https://developers.google.com/web/tools/lighthouse/audits/budgets)"
+  },
+  "lighthouse-core/audits/performance-budget.js | requestCountOverBudget": {
+    "message": "{count,plural, =1{1 คำขอ}other{# คำขอ}}"
+  },
+  "lighthouse-core/audits/performance-budget.js | title": {
+    "message": "งบประมาณประสิทธิภาพ"
+  },
+  "lighthouse-core/audits/redirects-http.js | description": {
+    "message": "หากคุณตั้งค่า HTTPS ไว้แล้ว ให้ตรวจสอบว่าได้เปลี่ยนเส้นทางการเข้าชมผ่าน HTTP ทั้งหมดไปยัง HTTPS เพื่อให้ผู้ใช้ทุกคนใช้ฟีเจอร์เว็บที่ปลอดภัยได้ [ดูข้อมูลเพิ่มเติม](https://developers.google.com/web/tools/lighthouse/audits/http-redirects-to-https)"
+  },
+  "lighthouse-core/audits/redirects-http.js | failureTitle": {
+    "message": "ไม่ได้เปลี่ยนเส้นทางการเข้าชมผ่าน HTTP ไปยัง HTTPS"
+  },
+  "lighthouse-core/audits/redirects-http.js | title": {
+    "message": "เปลี่ยนเส้นทางการเข้าชมผ่าน HTTP ไปยัง HTTPS"
+  },
+  "lighthouse-core/audits/redirects.js | description": {
+    "message": "การเปลี่ยนเส้นทางทำให้เกิดความล่าช้ามากขึ้นก่อนที่หน้าเว็บจะโหลดได้ [ดูข้อมูลเพิ่มเติม](https://developers.google.com/web/tools/lighthouse/audits/redirects)"
+  },
+  "lighthouse-core/audits/redirects.js | title": {
+    "message": "หลีกเลี่ยงการเปลี่ยนเส้นทางหลายหน้า"
+  },
+  "lighthouse-core/audits/resource-summary.js | description": {
+    "message": "หากต้องการตั้งงบประมาณสำหรับจำนวนและขนาดของทรัพยากรหน้า ให้เพิ่มไฟล์ budget.json [ดูข้อมูลเพิ่มเติม](https://developers.google.com/web/tools/lighthouse/audits/budgets)"
+  },
+  "lighthouse-core/audits/resource-summary.js | displayValue": {
+    "message": "{requestCount,plural, =1{คำขอ 1 รายการ • {byteCount, number, bytes} KB}other{คำขอ # รายการ • {byteCount, number, bytes} KB}}"
+  },
+  "lighthouse-core/audits/resource-summary.js | title": {
+    "message": "ควบคุมให้จำนวนคำขอมีไม่มากและการโอนมีขนาดเล็ก"
+  },
+  "lighthouse-core/audits/seo/canonical.js | description": {
+    "message": "ลิงก์ Canonical จะบอกถึง URL ที่จะแสดงในผลการค้นหา [ดูข้อมูลเพิ่มเติม](https://web.dev/canonical)"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationConflict": {
+    "message": "URL หลายรายการขัดแย้งกัน ({urlList})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationDifferentDomain": {
+    "message": "ชี้ไปที่โดเมนอื่น ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationInvalid": {
+    "message": "URL ไม่ถูกต้อง ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationPointsElsewhere": {
+    "message": "ชี้ไปที่ `hreflang` ตำแหน่งอื่น ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationRelative": {
+    "message": "URL แบบสัมพัทธ์ ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationRoot": {
+    "message": "ชี้ไปที่ URL ระดับรากของโดเมน (หน้าแรก) แทนที่จะเป็นหน้าที่เทียบเท่ากันของเนื้อหา"
+  },
+  "lighthouse-core/audits/seo/canonical.js | failureTitle": {
+    "message": "เอกสารไม่มี `rel=canonical` ที่ถูกต้อง"
+  },
+  "lighthouse-core/audits/seo/canonical.js | title": {
+    "message": "เอกสารมี `rel=canonical` ที่ถูกต้อง"
+  },
+  "lighthouse-core/audits/seo/font-size.js | description": {
+    "message": "ขนาดตัวอักษรที่เล็กกว่า 12 พิกเซลจะเล็กเกินไปจนอ่านไม่ออกและทำให้ผู้เข้าชมในอุปกรณ์เคลื่อนที่ต้อง “บีบเพื่อซูมเข้า” เพื่ออ่าน พยายามให้ข้อความในหน้าเว็บมากกว่า 60% มีขนาดอย่างน้อย 12 พิกเซล [ดูข้อมูลเพิ่มเติม](https://web.dev/font-size)"
+  },
+  "lighthouse-core/audits/seo/font-size.js | displayValue": {
+    "message": "ข้อความที่อ่านได้ชัดเจน {decimalProportion, number, extendedPercent}"
+  },
+  "lighthouse-core/audits/seo/font-size.js | explanationViewport": {
+    "message": "ข้อความอ่านได้ไม่ชัดเจนเพราะไม่มีเมตาแท็กวิวพอร์ตที่เพิ่มประสิทธิภาพให้เหมาะกับหน้าจออุปกรณ์เคลื่อนที่"
+  },
+  "lighthouse-core/audits/seo/font-size.js | explanationWithDisclaimer": {
+    "message": "{decimalProportion, number, extendedPercent} ของข้อความมีขนาดเล็กเกินไป (อิงจากตัวอย่าง {decimalProportionVisited, number, extendedPercent})"
+  },
+  "lighthouse-core/audits/seo/font-size.js | failureTitle": {
+    "message": "เอกสารไม่ได้ใช้ขนาดตัวอักษรที่อ่านได้ชัดเจน"
+  },
+  "lighthouse-core/audits/seo/font-size.js | title": {
+    "message": "เอกสารใช้ขนาดตัวอักษรที่อ่านได้ชัดเจน"
+  },
+  "lighthouse-core/audits/seo/hreflang.js | description": {
+    "message": "ลิงก์ hreflang จะบอกให้เครื่องมือค้นหาทราบถึงเวอร์ชันของหน้าเว็บที่ควรแสดงในผลการค้นหาสำหรับแต่ละภาษาหรือภูมิภาค [ดูข้อมูลเพิ่มเติม](https://web.dev/hreflang)"
+  },
+  "lighthouse-core/audits/seo/hreflang.js | failureTitle": {
+    "message": "เอกสารไม่มี `hreflang` ที่ถูกต้อง"
+  },
+  "lighthouse-core/audits/seo/hreflang.js | title": {
+    "message": "เอกสารมี `hreflang` ที่ถูกต้อง"
+  },
+  "lighthouse-core/audits/seo/http-status-code.js | description": {
+    "message": "หน้าเว็บที่มีรหัสสถานะ HTTP ไม่สำเร็จอาจไม่ได้รับการจัดทำดัชนีอย่างถูกต้อง [ดูข้อมูลเพิ่มเติม](https://web.dev/http-status-code)"
+  },
+  "lighthouse-core/audits/seo/http-status-code.js | failureTitle": {
+    "message": "หน้าเว็บมีรหัสสถานะ HTTP ไม่สำเร็จ"
+  },
+  "lighthouse-core/audits/seo/http-status-code.js | title": {
+    "message": "หน้าเว็บมีรหัสสถานะ HTTP สำเร็จ"
+  },
+  "lighthouse-core/audits/seo/is-crawlable.js | description": {
+    "message": "เครื่องมือค้นหาจะรวมหน้าเว็บของคุณไว้ในผลการค้นหาไม่ได้หากไม่มีสิทธิ์รวบรวมข้อมูลหน้าดังกล่าว [ดูข้อมูลเพิ่มเติม](https://web.dev/is-crawable)"
+  },
+  "lighthouse-core/audits/seo/is-crawlable.js | failureTitle": {
+    "message": "หน้าเว็บถูกบล็อกไม่ให้มีการจัดทำดัชนี"
+  },
+  "lighthouse-core/audits/seo/is-crawlable.js | title": {
+    "message": "หน้าไม่ได้ถูกบล็อกจากการจัดทำดัชนี"
+  },
+  "lighthouse-core/audits/seo/link-text.js | description": {
+    "message": "ข้อความอธิบายลิงก์ช่วยให้เครื่องมือค้นหาเข้าใจเนื้อหาของคุณ [ดูข้อมูลเพิ่มเติม](https://web.dev/link-text)"
+  },
+  "lighthouse-core/audits/seo/link-text.js | displayValue": {
+    "message": "{itemCount,plural, =1{พบ 1 ลิงก์}other{พบ # ลิงก์}}"
+  },
+  "lighthouse-core/audits/seo/link-text.js | failureTitle": {
+    "message": "ลิงก์ไม่มีข้อความอธิบาย"
+  },
+  "lighthouse-core/audits/seo/link-text.js | title": {
+    "message": "ลิงก์มีข้อความอธิบาย"
+  },
+  "lighthouse-core/audits/seo/manual/structured-data.js | description": {
+    "message": "เรียกใช้[เครื่องมือทดสอบข้อมูลที่มีโครงสร้าง](https://search.google.com/structured-data/testing-tool/)และ [Linter ข้อมูลที่มีโครงสร้าง](http://linter.structured-data.org/)เพื่อตรวจสอบความถูกต้องของข้อมูลที่มีโครงสร้าง [ดูข้อมูลเพิ่มเติม](https://web.dev/structured-data)"
+  },
+  "lighthouse-core/audits/seo/manual/structured-data.js | title": {
+    "message": "ข้อมูลที่มีโครงสร้างถูกต้อง"
+  },
+  "lighthouse-core/audits/seo/meta-description.js | description": {
+    "message": "อาจมีการรวมคำอธิบายเมตาในผลการค้นหาเพื่อสรุปเนื้อหาของหน้าเว็บให้สั้นกระชับ [ดูข้อมูลเพิ่มเติม](https://web.dev/meta-description)"
+  },
+  "lighthouse-core/audits/seo/meta-description.js | explanation": {
+    "message": "ข้อความอธิบายว่างเปล่า"
+  },
+  "lighthouse-core/audits/seo/meta-description.js | failureTitle": {
+    "message": "เอกสารไม่มีคำอธิบายเมตา"
+  },
+  "lighthouse-core/audits/seo/meta-description.js | title": {
+    "message": "เอกสารมีคำอธิบายเมตา"
+  },
+  "lighthouse-core/audits/seo/plugins.js | description": {
+    "message": "เครื่องมือค้นหาจัดทำดัชนีเนื้อหาปลั๊กอินไม่ได้ และอุปกรณ์จำนวนมากจำกัดการใช้หรือไม่รองรับปลั๊กอิน [ดูข้อมูลเพิ่มเติม](https://web.dev/plugins)"
+  },
+  "lighthouse-core/audits/seo/plugins.js | failureTitle": {
+    "message": "เอกสารใช้ปลั๊กอิน"
+  },
+  "lighthouse-core/audits/seo/plugins.js | title": {
+    "message": "เอกสารหลีกเลี่ยงการใช้ปลั๊กอิน"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | description": {
+    "message": "หากไฟล์ robots.txt มีรูปแบบไม่ถูกต้อง โปรแกรมรวบรวมข้อมูลอาจไม่เข้าใจวิธีที่คุณต้องการให้รวบรวมข้อมูลหรือจัดทำดัชนีเว็บไซต์ [ดูข้อมูลเพิ่มเติม](https://web.dev/robots-txt)"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | displayValueHttpBadCode": {
+    "message": "คำขอ robots.txt แสดงสถานะ HTTP ต่อไปนี้ {statusCode}"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | displayValueValidationError": {
+    "message": "{itemCount,plural, =1{พบข้อผิดพลาด 1 รายการ}other{พบข้อผิดพลาด # รายการ}}"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | explanation": {
+    "message": "Lighthouse ดาวน์โหลดไฟล์ robots.txt ไม่ได้"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | failureTitle": {
+    "message": "robots.txt ไม่ถูกต้อง"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | title": {
+    "message": "robots.txt ถูกต้อง"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | description": {
+    "message": "องค์ประกอบสำหรับการโต้ตอบ เช่น ปุ่มและลิงก์ ต้องมีขนาดใหญ่พอ (48x48 พิกเซล) และมีพื้นที่ว่างโดยรอบมากพอเพื่อให้แตะได้ง่ายๆ โดยไม่ซ้อนทับกับองค์ประกอบอื่นๆ [ดูข้อมูลเพิ่มเติม](https://web.dev/tap-targets)"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | displayValue": {
+    "message": "เป้าหมายการแตะที่มีขนาดเหมาะสม {decimalProportion, number, percent}"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | explanationViewportMetaNotOptimized": {
+    "message": "เป้าหมายการแตะมีขนาดเล็กเกินไปเพราะไม่มีเมตาแท็กวิวพอร์ตที่เพิ่มประสิทธิภาพให้เหมาะกับหน้าจออุปกรณ์เคลื่อนที่"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | failureTitle": {
+    "message": "เป้าหมายการแตะมีขนาดที่ไม่เหมาะสม"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | overlappingTargetHeader": {
+    "message": "เป้าหมายซ้อนทับกัน"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | tapTargetHeader": {
+    "message": "เป้าหมายการแตะ"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | title": {
+    "message": "เป้าหมายการแตะมีขนาดที่เหมาะสม"
+  },
+  "lighthouse-core/audits/service-worker.js | description": {
+    "message": "Service Worker เป็นเทคโนโลยีที่ช่วยให้แอปของคุณใช้ฟีเจอร์ของ Progressive Web App ได้หลายฟีเจอร์ เช่น ออฟไลน์ เพิ่มไปยังหน้าจอหลัก และข้อความ Push [ดูข้อมูลเพิ่มเติม](https://developers.google.com/web/tools/lighthouse/audits/registered-service-worker)"
+  },
+  "lighthouse-core/audits/service-worker.js | explanationBadManifest": {
+    "message": "หน้านี้ควบคุมโดย Service Worker แต่ไม่พบ `start_url` เนื่องจากไฟล์ Manifest แยกวิเคราะห์เป็น JSON ที่ถูกต้องไม่ได้"
+  },
+  "lighthouse-core/audits/service-worker.js | explanationBadStartUrl": {
+    "message": "หน้านี้ควบคุมโดย Service Worker แต่ `start_url` ({startUrl}) ไม่ได้อยู่ในขอบเขตของ Service Worker นั้น ({scopeUrl})"
+  },
+  "lighthouse-core/audits/service-worker.js | explanationNoManifest": {
+    "message": "หน้านี้ควบคุมโดย Service Worker แต่ไม่พบ `start_url` เพราะไม่มีการดึงไฟล์ Manifest"
+  },
+  "lighthouse-core/audits/service-worker.js | explanationOutOfScope": {
+    "message": "ต้นทางนี้มี Service Worker อย่างน้อย 1 ไฟล์ แต่หน้าเว็บ ({pageUrl}) ไม่อยู่ในขอบเขต"
+  },
+  "lighthouse-core/audits/service-worker.js | failureTitle": {
+    "message": "ไม่ได้ลงทะเบียน Service Worker ที่ควบคุมหน้าเว็บและ `start_url`"
+  },
+  "lighthouse-core/audits/service-worker.js | title": {
+    "message": "ลงทะเบียน Service Worker ที่ควบคุมหน้าเว็บและ `start_url`"
+  },
+  "lighthouse-core/audits/splash-screen.js | description": {
+    "message": "หน้าจอแนะนำที่มีธีมช่วยให้ผู้ใช้ได้รับประสบการณ์ที่มีคุณภาพสูงเมื่อเปิดแอปของคุณจากหน้าจอหลัก [ดูข้อมูลเพิ่มเติม](https://developers.google.com/web/tools/lighthouse/audits/custom-splash-screen)"
+  },
+  "lighthouse-core/audits/splash-screen.js | failureTitle": {
+    "message": "ไม่ได้กำหนดค่าให้ใช้หน้าจอแนะนำที่กำหนดเอง"
+  },
+  "lighthouse-core/audits/splash-screen.js | title": {
+    "message": "มีการกำหนดค่าให้ใช้หน้าจอแนะนำที่กำหนดเอง"
+  },
+  "lighthouse-core/audits/themed-omnibox.js | description": {
+    "message": "คุณกำหนดธีมของแถบที่อยู่เบราว์เซอร์ให้เข้ากับเว็บไซต์ได้ [ดูข้อมูลเพิ่มเติม](https://developers.google.com/web/tools/lighthouse/audits/address-bar)"
+  },
+  "lighthouse-core/audits/themed-omnibox.js | failureTitle": {
+    "message": "ไม่ได้กำหนดสีธีมสำหรับแถบที่อยู่"
+  },
+  "lighthouse-core/audits/themed-omnibox.js | title": {
+    "message": "กำหนดสีธีมของแถบที่อยู่"
+  },
+  "lighthouse-core/audits/third-party-summary.js | columnBlockingTime": {
+    "message": "เวลาในการบล็อกเทรดหลัก"
+  },
+  "lighthouse-core/audits/third-party-summary.js | columnThirdParty": {
+    "message": "บุคคลที่สาม"
+  },
+  "lighthouse-core/audits/third-party-summary.js | description": {
+    "message": "โค้ดของบุคคลที่สามอาจส่งผลกระทบที่สำคัญต่อประสิทธิภาพการโหลด จำกัดจำนวนผู้ให้บริการบุคคลที่สามที่มากเกินไปและพยายามโหลดโค้ดของบุคคลที่สามหลังจากที่หน้าเว็บโหลดเบื้องต้นเสร็จเรียบร้อยแล้ว [ดูข้อมูลเพิ่มเติม](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/loading-third-party-javascript/)"
+  },
+  "lighthouse-core/audits/third-party-summary.js | displayValue": {
+    "message": "โค้ดของบุคคลที่สามบล็อกเทรดหลักเป็นเวลา {timeInMs, number, milliseconds} วินาที"
+  },
+  "lighthouse-core/audits/third-party-summary.js | failureTitle": {
+    "message": "ลดผลกระทบจากโค้ดของบุคคลที่สาม"
+  },
+  "lighthouse-core/audits/third-party-summary.js | title": {
+    "message": "การใช้บุคคลที่สาม"
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | description": {
+    "message": "Time To First Byte ระบุเวลาที่เซิร์ฟเวอร์ส่งการตอบกลับ [ดูข้อมูลเพิ่มเติม](https://developers.google.com/web/tools/lighthouse/audits/ttfb)"
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | displayValue": {
+    "message": "เอกสารรากใช้เวลา {timeInMs, number, milliseconds} มิลลิวินาที"
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | failureTitle": {
+    "message": "ลดเวลาในการตอบกลับของเซิร์ฟเวอร์ (TTFB)"
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | title": {
+    "message": "เวลาตอบสนองของเซิร์ฟเวอร์ต่ำ (TTFB)"
+  },
+  "lighthouse-core/audits/user-timings.js | columnDuration": {
+    "message": "ระยะเวลา"
+  },
+  "lighthouse-core/audits/user-timings.js | columnStartTime": {
+    "message": "เวลาเริ่มต้น"
+  },
+  "lighthouse-core/audits/user-timings.js | columnType": {
+    "message": "ประเภท"
+  },
+  "lighthouse-core/audits/user-timings.js | description": {
+    "message": "พิจารณาติดตั้ง User Timing API ในแอปเพื่อวัดประสิทธิภาพในระหว่างประสบการณ์สำคัญของผู้ใช้ในชีวิตจริงได้ [ดูข้อมูลเพิ่มเติม](https://developers.google.com/web/tools/lighthouse/audits/user-timing)"
+  },
+  "lighthouse-core/audits/user-timings.js | displayValue": {
+    "message": "{itemCount,plural, =1{ระยะเวลาของผู้ใช้ 1 รายการ}other{ระยะเวลาของผู้ใช้ # รายการ}}"
+  },
+  "lighthouse-core/audits/user-timings.js | title": {
+    "message": "ระยะเวลาที่เจาะจงของผู้ใช้และระยะเวลาทั่วไป"
+  },
+  "lighthouse-core/audits/uses-rel-preconnect.js | crossoriginWarning": {
+    "message": "พบ <link> ที่เชื่อมต่อล่วงหน้าสำหรับ \"{securityOrigin}\" แต่เบราว์เซอร์ไม่ได้นำไปใช้งาน โปรดตรวจสอบว่าคุณใช้แอตทริบิวต์ `crossorigin` อย่างถูกต้องแล้ว"
+  },
+  "lighthouse-core/audits/uses-rel-preconnect.js | description": {
+    "message": "พิจารณาเพิ่ม `preconnect` หรือ `dns-prefetch` ซึ่งบอกถึงทรัพยากรเพื่อสร้างการเชื่อมต่อกับต้นทางที่สำคัญของบุคคลที่สามตั้งแต่เนิ่นๆ [ดูข้อมูลเพิ่มเติม](https://developers.google.com/web/fundamentals/performance/resource-prioritization#preconnect)"
+  },
+  "lighthouse-core/audits/uses-rel-preconnect.js | title": {
+    "message": "เชื่อมต่อกับต้นทางที่จำเป็นล่วงหน้า"
+  },
+  "lighthouse-core/audits/uses-rel-preload.js | crossoriginWarning": {
+    "message": "พบ <link> ที่โหลดล่วงหน้าสำหรับ \"{preloadURL}\" แต่เบราว์เซอร์ไม่ได้นำไปใช้งาน โปรดตรวจสอบว่าคุณใช้แอตทริบิวต์ `crossorigin` อย่างถูกต้องแล้ว"
+  },
+  "lighthouse-core/audits/uses-rel-preload.js | description": {
+    "message": "พิจารณาใช้ `<link rel=preload>` เพื่อจัดลำดับความสำคัญในการเรียกทรัพยากรที่มีการขอให้โหลดหน้าเว็บภายหลัง [ดูข้อมูลเพิ่มเติม](https://developers.google.com/web/tools/lighthouse/audits/preload)"
+  },
+  "lighthouse-core/audits/uses-rel-preload.js | title": {
+    "message": "โหลดคำขอสำคัญล่วงหน้า"
+  },
+  "lighthouse-core/audits/viewport.js | description": {
+    "message": "เพิ่มแท็ก `<meta name=\"viewport\">` เพื่อเพิ่มประสิทธิภาพแอปสำหรับหน้าจออุปกรณ์เคลื่อนที่ [ดูข้อมูลเพิ่มเติม](https://developers.google.com/web/tools/lighthouse/audits/has-viewport-meta-tag)"
+  },
+  "lighthouse-core/audits/viewport.js | explanationNoTag": {
+    "message": "ไม่พบแท็ก `<meta name=\"viewport\">`"
+  },
+  "lighthouse-core/audits/viewport.js | failureTitle": {
+    "message": "ไม่มีแท็ก `<meta name=\"viewport\">` ที่มี `width` หรือ `initial-scale`"
+  },
+  "lighthouse-core/audits/viewport.js | title": {
+    "message": "มีแท็ก `<meta name=\"viewport\">` ที่มี `width` หรือ `initial-scale`"
+  },
+  "lighthouse-core/audits/without-javascript.js | description": {
+    "message": "แอปควรแสดงเนื้อหาบางอย่างเมื่อมีการปิดใช้ JavaScript แม้จะเป็นเพียงการเตือนผู้ใช้ว่าการใช้แอปจำเป็นต้องใช้ JavaScript [ดูข้อมูลเพิ่มเติม](https://developers.google.com/web/tools/lighthouse/audits/no-js)"
+  },
+  "lighthouse-core/audits/without-javascript.js | explanation": {
+    "message": "ส่วนเนื้อหาในหน้าควรแสดงเนื้อหาบางอย่างถ้าสคริปต์ในหน้าไม่พร้อมใช้งาน"
+  },
+  "lighthouse-core/audits/without-javascript.js | failureTitle": {
+    "message": "ไม่แสดงเนื้อหาทางเลือกเมื่อ JavaScript ไม่พร้อมใช้งาน"
+  },
+  "lighthouse-core/audits/without-javascript.js | title": {
+    "message": "มีเนื้อหาบางอย่างแสดงขึ้นเมื่อ JavaScript ไม่พร้อมใช้งาน"
+  },
+  "lighthouse-core/audits/works-offline.js | description": {
+    "message": "หากคุณกำลังสร้าง Progressive Web App ให้พิจารณาใช้ Service Worker เพื่อให้แอปทำงานแบบออฟไลน์ได้ [ดูข้อมูลเพิ่มเติม](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)"
+  },
+  "lighthouse-core/audits/works-offline.js | failureTitle": {
+    "message": "หน้าปัจจุบันไม่ตอบสนองด้วยรหัส 200 เมื่อออฟไลน์"
+  },
+  "lighthouse-core/audits/works-offline.js | title": {
+    "message": "หน้าปัจจุบันตอบสนองด้วยรหัส 200 เมื่อออฟไลน์"
+  },
+  "lighthouse-core/audits/works-offline.js | warningNoLoad": {
+    "message": "หน้านี้อาจไม่โหลดขึ้นขณะออฟไลน์เนื่องจาก URL ทดสอบของคุณ ({requested}) มีการเปลี่ยนเส้นทางไปยัง \"{final}\" ลองทดสอบ URL ที่ 2 โดยตรง"
+  },
+  "lighthouse-core/config/default-config.js | a11yAriaGroupDescription": {
+    "message": "นี่เป็นโอกาสปรับปรุงการใช้งาน ARIA ในแอปพลิเคชันของคุณ ซึ่งอาจช่วยให้ผู้ใช้ได้รับประสบการณ์การใช้งานเทคโนโลยีอำนวยความสะดวก เช่น โปรแกรมอ่านหน้าจอ ที่ดียิ่งขึ้น"
+  },
+  "lighthouse-core/config/default-config.js | a11yAriaGroupTitle": {
+    "message": "ARIA"
+  },
+  "lighthouse-core/config/default-config.js | a11yAudioVideoGroupDescription": {
+    "message": "นี่เป็นโอกาสระบุเนื้อหาสำรองสำหรับเสียงและวิดีโอ การดำเนินการนี้อาจช่วยปรับปรุงประสบการณ์ของผู้ใช้ที่มีความบกพร่องทางการได้ยินหรือการมองเห็น"
+  },
+  "lighthouse-core/config/default-config.js | a11yAudioVideoGroupTitle": {
+    "message": "เสียงและวิดีโอ"
+  },
+  "lighthouse-core/config/default-config.js | a11yBestPracticesGroupDescription": {
+    "message": "รายการเหล่านี้ไฮไลต์แนวทางปฏิบัติที่ดีที่สุดที่พบบ่อยของการช่วยเหลือพิเศษ"
+  },
+  "lighthouse-core/config/default-config.js | a11yBestPracticesGroupTitle": {
+    "message": "แนวทางปฏิบัติที่ดีที่สุด"
+  },
+  "lighthouse-core/config/default-config.js | a11yCategoryDescription": {
+    "message": "การตรวจสอบเหล่านี้ไฮไลต์โอกาสในการ[ปรับปรุงการช่วยเหลือพิเศษของเว็บแอป](https://developers.google.com/web/fundamentals/accessibility) โดยจะตรวจพบอัตโนมัติได้เฉพาะปัญหากลุ่มย่อยด้านการช่วยเหลือพิเศษ เราจึงขอแนะนำให้ตรวจสอบด้วยตนเองด้วย"
+  },
+  "lighthouse-core/config/default-config.js | a11yCategoryManualDescription": {
+    "message": "รายการเหล่านี้จัดการพื้นที่ที่เครื่องมือทดสอบอัตโนมัติไม่ครอบคลุม ดูข้อมูลเพิ่มเติมในคำแนะนำเกี่ยวกับ[การดำเนินการตรวจสอบการช่วยเหลือพิเศษ](https://developers.google.com/web/fundamentals/accessibility/how-to-review)"
+  },
+  "lighthouse-core/config/default-config.js | a11yCategoryTitle": {
+    "message": "การช่วยเหลือพิเศษ"
+  },
+  "lighthouse-core/config/default-config.js | a11yColorContrastGroupDescription": {
+    "message": "นี่เป็นโอกาสปรับปรุงความอ่านง่ายของเนื้อหา"
+  },
+  "lighthouse-core/config/default-config.js | a11yColorContrastGroupTitle": {
+    "message": "คอนทราสต์"
+  },
+  "lighthouse-core/config/default-config.js | a11yLanguageGroupDescription": {
+    "message": "นี่เป็นโอกาสปรับปรุงการตีความเนื้อหาของคุณโดยผู้ใช้ภาษาต่างๆ"
+  },
+  "lighthouse-core/config/default-config.js | a11yLanguageGroupTitle": {
+    "message": "การปรับให้เป็นสากลและการแปล"
+  },
+  "lighthouse-core/config/default-config.js | a11yNamesLabelsGroupDescription": {
+    "message": "นี่เป็นโอกาสปรับปรุงความหมายของส่วนควบคุมในแอปพลิเคชันของคุณ การดำเนินการนี้อาจช่วยให้ผู้ใช้ได้รับประสบการณ์การใช้งานเทคโนโลยีอำนวยความสะดวก เช่น โปรแกรมอ่านหน้าจอ ที่ดียิ่งขึ้น"
+  },
+  "lighthouse-core/config/default-config.js | a11yNamesLabelsGroupTitle": {
+    "message": "ชื่อและป้ายกำกับ"
+  },
+  "lighthouse-core/config/default-config.js | a11yNavigationGroupDescription": {
+    "message": "นี่เป็นโอกาสปรับปรุงการไปยังส่วนต่างๆ ในแอปพลิเคชันของคุณด้วยแป้นพิมพ์"
+  },
+  "lighthouse-core/config/default-config.js | a11yNavigationGroupTitle": {
+    "message": "การนำทาง"
+  },
+  "lighthouse-core/config/default-config.js | a11yTablesListsVideoGroupDescription": {
+    "message": "นี่เป็นโอกาสปรับปรุงประสบการณ์การอ่านตารางหรือข้อมูลรายการโดยใช้เทคโนโลยีอำนวยความสะดวก เช่น โปรแกรมอ่านหน้าจอ"
+  },
+  "lighthouse-core/config/default-config.js | a11yTablesListsVideoGroupTitle": {
+    "message": "ตารางและรายการ"
+  },
+  "lighthouse-core/config/default-config.js | bestPracticesCategoryTitle": {
+    "message": "แนวทางปฏิบัติที่ดีที่สุด"
+  },
+  "lighthouse-core/config/default-config.js | budgetsGroupDescription": {
+    "message": "งบประมาณประสิทธิภาพจะใช้เป็นมาตรฐานสำหรับประสิทธิภาพของเว็บไซต์คุณ"
+  },
+  "lighthouse-core/config/default-config.js | budgetsGroupTitle": {
+    "message": "งบประมาณ"
+  },
+  "lighthouse-core/config/default-config.js | diagnosticsGroupDescription": {
+    "message": "ข้อมูลเพิ่มเติมเกี่ยวกับประสิทธิภาพของแอปพลิเคชัน ตัวเลขเหล่านี้ไม่[ส่งผลกระทบโดยตรง](https://github.com/GoogleChrome/lighthouse/blob/d2ec9ffbb21de9ad1a0f86ed24575eda32c796f0/docs/scoring.md#how-are-the-scores-weighted)ต่อคะแนนประสิทธิภาพ"
+  },
+  "lighthouse-core/config/default-config.js | diagnosticsGroupTitle": {
+    "message": "การวินิจฉัย"
+  },
+  "lighthouse-core/config/default-config.js | firstPaintImprovementsGroupDescription": {
+    "message": "ประสิทธิภาพที่สำคัญที่สุดคือความเร็วที่พิกเซลแสดงผลในหน้าจอ เมตริกที่สำคัญ ได้แก่ การแสดงผลที่มีเนื้อหาเต็มครั้งแรก การแสดงผลที่มีความหมายครั้งแรก"
+  },
+  "lighthouse-core/config/default-config.js | firstPaintImprovementsGroupTitle": {
+    "message": "การปรับปรุงการแสดงผลครั้งแรก"
+  },
+  "lighthouse-core/config/default-config.js | loadOpportunitiesGroupDescription": {
+    "message": "คำแนะนำเหล่านี้จะช่วยให้หน้าโหลดได้เร็วขึ้น โดยจะไม่[ส่งผลกระทบโดยตรง](https://github.com/GoogleChrome/lighthouse/blob/d2ec9ffbb21de9ad1a0f86ed24575eda32c796f0/docs/scoring.md#how-are-the-scores-weighted)ต่อคะแนนประสิทธิภาพ"
+  },
+  "lighthouse-core/config/default-config.js | loadOpportunitiesGroupTitle": {
+    "message": "โอกาส"
+  },
+  "lighthouse-core/config/default-config.js | metricGroupTitle": {
+    "message": "เมตริก"
+  },
+  "lighthouse-core/config/default-config.js | overallImprovementsGroupDescription": {
+    "message": "ปรับปรุงประสบการณ์ในการโหลดโดยรวมเพื่อให้หน้าเว็บตอบสนองและพร้อมใช้งานโดยเร็วที่สุด เมตริกที่สำคัญ ได้แก่ เวลาในการโต้ตอบ ดัชนีความเร็ว"
+  },
+  "lighthouse-core/config/default-config.js | overallImprovementsGroupTitle": {
+    "message": "การปรับปรุงโดยรวม"
+  },
+  "lighthouse-core/config/default-config.js | performanceCategoryTitle": {
+    "message": "ประสิทธิภาพ"
+  },
+  "lighthouse-core/config/default-config.js | pwaCategoryDescription": {
+    "message": "การตรวจสอบเหล่านี้ตรวจสอบความถูกต้องของลักษณะต่างๆ ของ Progressive Web App [ดูข้อมูลเพิ่มเติม](https://developers.google.com/web/progressive-web-apps/checklist)"
+  },
+  "lighthouse-core/config/default-config.js | pwaCategoryManualDescription": {
+    "message": "การตรวจสอบเหล่านี้เป็นสิ่งที่ต้องทำใน[รายการตรวจสอบ PWA](https://developers.google.com/web/progressive-web-apps/checklist) ซึ่งเป็นเกณฑ์พื้นฐาน แต่ Lighthouse ไม่ได้ทำการตรวจสอบดังกล่าวโดยอัตโนมัติ การตรวจสอบจะไม่ส่งผลต่อคะแนนของคุณ แต่คุณควรตรวจสอบด้วยตนเอง"
+  },
+  "lighthouse-core/config/default-config.js | pwaCategoryTitle": {
+    "message": "Progressive Web App"
+  },
+  "lighthouse-core/config/default-config.js | pwaFastReliableGroupTitle": {
+    "message": "ทำงานเร็วและวางใจได้"
+  },
+  "lighthouse-core/config/default-config.js | pwaInstallableGroupTitle": {
+    "message": "ติดตั้งได้"
+  },
+  "lighthouse-core/config/default-config.js | pwaOptimizedGroupTitle": {
+    "message": "เพิ่มประสิทธิภาพ PWA แล้ว"
+  },
+  "lighthouse-core/config/default-config.js | seoCategoryDescription": {
+    "message": "การตรวจสอบเหล่านี้ช่วยให้มั่นใจว่าหน้าเว็บของคุณได้รับการเพิ่มประสิทธิภาพสำหรับการจัดอันดับผลลัพธ์ของเครื่องมือค้นหา มีปัจจัยอื่นๆ ที่ Lighthouse ไม่ได้ตรวจสอบซึ่งอาจส่งผลกระทบต่อการจัดอันดับของคุณในการค้นหา [ดูข้อมูลเพิ่มเติม](https://support.google.com/webmasters/answer/35769)"
+  },
+  "lighthouse-core/config/default-config.js | seoCategoryManualDescription": {
+    "message": "เรียกใช้ตัวตรวจสอบความถูกต้องเพิ่มเติมเหล่านี้ในเว็บไซต์ของคุณเพื่อดูแนวทางปฏิบัติที่ดีที่สุดเพิ่มเติมเกี่ยวกับ SEO"
+  },
+  "lighthouse-core/config/default-config.js | seoCategoryTitle": {
+    "message": "SEO"
+  },
+  "lighthouse-core/config/default-config.js | seoContentGroupDescription": {
+    "message": "จัด HTML ให้อยู่ในรูปแบบที่ช่วยให้โปรแกรมรวบรวมข้อมูลเข้าใจเนื้อหาแอปได้ง่ายขึ้น"
+  },
+  "lighthouse-core/config/default-config.js | seoContentGroupTitle": {
+    "message": "แนวทางปฏิบัติที่ดีที่สุดเกี่ยวกับเนื้อหา"
+  },
+  "lighthouse-core/config/default-config.js | seoCrawlingGroupDescription": {
+    "message": "โปรแกรมรวบรวมข้อมูลจะต้องเข้าถึงแอปของคุณได้เพื่อให้แอปปรากฏในผลการค้นหา"
+  },
+  "lighthouse-core/config/default-config.js | seoCrawlingGroupTitle": {
+    "message": "การรวบรวมข้อมูลและจัดทำดัชนี"
+  },
+  "lighthouse-core/config/default-config.js | seoMobileGroupDescription": {
+    "message": "ตรวจสอบว่าหน้าเว็บเหมาะกับอุปกรณ์เคลื่อนที่ ผู้ใช้จะได้ไม่ต้องบีบนิ้วหรือซูมเข้าเพื่ออ่านหน้าเนื้อหา [ดูข้อมูลเพิ่มเติม](https://developers.google.com/search/mobile-sites/)"
+  },
+  "lighthouse-core/config/default-config.js | seoMobileGroupTitle": {
+    "message": "เหมาะกับอุปกรณ์เคลื่อนที่"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnCacheTTL": {
+    "message": "แคช TTL"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnLocation": {
+    "message": "ตำแหน่ง"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnName": {
+    "message": "ชื่อ"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnRequests": {
+    "message": "คำขอ"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnResourceType": {
+    "message": "ประเภททรัพยากร"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnSize": {
+    "message": "ขนาด"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnTimeSpent": {
+    "message": "เวลาที่ใช้"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnTransferSize": {
+    "message": "ขนาดการโอน"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnURL": {
+    "message": "URL"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnWastedBytes": {
+    "message": "เวลาที่อาจประหยัดได้"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnWastedMs": {
+    "message": "เวลาที่อาจประหยัดได้"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | displayValueByteSavings": {
+    "message": "อาจประหยัดได้ {wastedBytes, number, bytes} KB"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | displayValueMsSavings": {
+    "message": "อาจประหยัดได้ {wastedMs, number, milliseconds} มิลลิวินาที"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | documentResourceType": {
+    "message": "เอกสาร"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | fontResourceType": {
+    "message": "แบบอักษร"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | imageResourceType": {
+    "message": "รูปภาพ"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | mediaResourceType": {
+    "message": "สื่อ"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | ms": {
+    "message": "{timeInMs, number, milliseconds} มิลลิวินาที"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | otherResourceType": {
+    "message": "อื่นๆ"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | scriptResourceType": {
+    "message": "สคริปต์"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | seconds": {
+    "message": "{timeInMs, number, seconds} วินาที"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | stylesheetResourceType": {
+    "message": "สไตล์ชีต"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | thirdPartyResourceType": {
+    "message": "บุคคลที่สาม"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | totalResourceType": {
+    "message": "รวม"
+  },
+  "lighthouse-core/lib/lh-error.js | badTraceRecording": {
+    "message": "เกิดข้อผิดพลาดในการบันทึกการติดตามระหว่างการโหลดหน้าเว็บ โปรดเรียกใช้ Lighthouse อีกครั้ง ({errorCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | criTimeout": {
+    "message": "หมดเวลาระหว่างที่รอการเชื่อมต่อโปรโตคอลโปรแกรมแก้ไขข้อบกพร่องเริ่มต้น"
+  },
+  "lighthouse-core/lib/lh-error.js | didntCollectScreenshots": {
+    "message": "Chrome ไม่ได้รวบรวมภาพหน้าจอใดๆ ระหว่างการโหลดหน้า โปรดตรวจสอบว่ามีเนื้อหาที่มองเห็นได้ในหน้าเว็บ จากนั้นลองเรียกใช้ Lighthouse อีกครั้ง ({errorCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | dnsFailure": {
+    "message": "เซิร์ฟเวอร์ DNS แก้ปัญหาโดเมนที่ระบุไม่ได้"
+  },
+  "lighthouse-core/lib/lh-error.js | erroredRequiredArtifact": {
+    "message": "ตัวรวบรวม {artifactName} ที่จำเป็นพบข้อผิดพลาด: {errorMessage}"
+  },
+  "lighthouse-core/lib/lh-error.js | internalChromeError": {
+    "message": "เกิดข้อผิดพลาดภายในของ Chrome โปรดรีสตาร์ท Chrome และลองเรียกใช้ Lighthouse อีกครั้ง"
+  },
+  "lighthouse-core/lib/lh-error.js | missingRequiredArtifact": {
+    "message": "ตัวรวบรวม {artifactName} ที่จำเป็นไม่ทำงาน"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailed": {
+    "message": "Lighthouse โหลดหน้าเว็บที่คุณขออย่างน่าเชื่อถือไม่ได้ ตรวจสอบว่าคุณกำลังทดสอบ URL ที่ถูกต้องและเซิร์ฟเวอร์ตอบสนองคำขอทั้งหมดอย่างถูกต้อง"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedHung": {
+    "message": "Lighthouse โหลด URL ที่คุณขออย่างน่าเชื่อถือไม่ได้เพราะหน้าเว็บไม่ตอบสนอง"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedInsecure": {
+    "message": "URL ที่ระบุไม่มีใบรับรองความปลอดภัยที่ถูกต้อง {securityMessages}"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedInterstitial": {
+    "message": "Chrome ป้องกันการโหลดหน้าเว็บด้วยโฆษณาคั่นระหว่างหน้า ตรวจสอบว่าคุณกำลังทดสอบ URL ที่ถูกต้องและเซิร์ฟเวอร์ตอบสนองคำขอทั้งหมดอย่างถูกต้อง"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedWithDetails": {
+    "message": "Lighthouse โหลดหน้าเว็บที่คุณขออย่างน่าเชื่อถือไม่ได้ ตรวจสอบว่าคุณกำลังทดสอบ URL ที่ถูกต้องและเซิร์ฟเวอร์ตอบสนองคำขอทั้งหมดอย่างถูกต้อง (รายละเอียด: {errorDetails})"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedWithStatusCode": {
+    "message": "Lighthouse โหลดหน้าเว็บที่คุณขออย่างน่าเชื่อถือไม่ได้ ตรวจสอบว่าคุณกำลังทดสอบ URL ที่ถูกต้องและเซิร์ฟเวอร์ตอบสนองคำขอทั้งหมดอย่างถูกต้อง (รหัสสถานะ: {statusCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadTookTooLong": {
+    "message": "หน้าเว็บของคุณใช้เวลาโหลดนานเกินไป โปรดทำตามโอกาสในรายงานเพื่อลดเวลาในการโหลดหน้าเว็บแล้วลองเรียกใช้ Lighthouse อีกครั้ง ({errorCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | protocolTimeout": {
+    "message": "การรอการตอบสนองของโปรโตคอล DevTools เกินเวลาที่จัดสรรไว้ (เมธอด: {protocolMethod})"
+  },
+  "lighthouse-core/lib/lh-error.js | requestContentTimeout": {
+    "message": "การดึงข้อมูลเนื้อหาทรัพยากรเกินเวลาที่จัดสรรไว้"
+  },
+  "lighthouse-core/lib/lh-error.js | urlInvalid": {
+    "message": "ดูเหมือนว่า URL ที่ระบุจะไม่ถูกต้อง"
+  },
+  "lighthouse-core/report/html/renderer/util.js | auditGroupExpandTooltip": {
+    "message": "แสดงการตรวจสอบ"
+  },
+  "lighthouse-core/report/html/renderer/util.js | crcInitialNavigation": {
+    "message": "การนำทางเริ่มต้น"
+  },
+  "lighthouse-core/report/html/renderer/util.js | crcLongestDurationLabel": {
+    "message": "เวลาในการตอบสนองของเส้นทางสำคัญที่ยาวที่สุด"
+  },
+  "lighthouse-core/report/html/renderer/util.js | errorLabel": {
+    "message": "ข้อผิดพลาด!"
+  },
+  "lighthouse-core/report/html/renderer/util.js | errorMissingAuditInfo": {
+    "message": "ข้อผิดพลาดในรายงาน: ไม่มีข้อมูลการตรวจสอบ"
+  },
+  "lighthouse-core/report/html/renderer/util.js | labDataTitle": {
+    "message": "ข้อมูลในห้องทดลอง"
+  },
+  "lighthouse-core/report/html/renderer/util.js | lsPerformanceCategoryDescription": {
+    "message": "การวิเคราะห์หน้าปัจจุบันในเครือข่ายมือถือจำลองโดย [Lighthouse](https://developers.google.com/web/tools/lighthouse/) ค่ามาจากการประมาณและอาจแตกต่างกันไป"
+  },
+  "lighthouse-core/report/html/renderer/util.js | manualAuditsGroupTitle": {
+    "message": "รายการเพิ่มเติมที่ควรตรวจสอบด้วยตนเอง"
+  },
+  "lighthouse-core/report/html/renderer/util.js | notApplicableAuditsGroupTitle": {
+    "message": "ไม่เกี่ยวข้อง"
+  },
+  "lighthouse-core/report/html/renderer/util.js | opportunityResourceColumnLabel": {
+    "message": "โอกาส"
+  },
+  "lighthouse-core/report/html/renderer/util.js | opportunitySavingsColumnLabel": {
+    "message": "เวลาที่ประหยัดได้โดยประมาณ"
+  },
+  "lighthouse-core/report/html/renderer/util.js | passedAuditsGroupTitle": {
+    "message": "การตรวจสอบที่ผ่านแล้ว"
+  },
+  "lighthouse-core/report/html/renderer/util.js | snippetCollapseButtonLabel": {
+    "message": "ยุบตัวอย่างข้อมูล"
+  },
+  "lighthouse-core/report/html/renderer/util.js | snippetExpandButtonLabel": {
+    "message": "ขยายตัวอย่างข้อมูล"
+  },
+  "lighthouse-core/report/html/renderer/util.js | thirdPartyResourcesLabel": {
+    "message": "แสดงทรัพยากรของบุคคลที่สาม"
+  },
+  "lighthouse-core/report/html/renderer/util.js | toplevelWarningsMessage": {
+    "message": "เกิดปัญหาที่มีผลต่อการทำงานนี้ของ Lighthouse"
+  },
+  "lighthouse-core/report/html/renderer/util.js | varianceDisclaimer": {
+    "message": "ค่ามาจากการประมาณและอาจแตกต่างกันไป คะแนนประสิทธิภาพ[อิงจากเมตริกเหล่านี้เท่านั้น](https://github.com/GoogleChrome/lighthouse/blob/d2ec9ffbb21de9ad1a0f86ed24575eda32c796f0/docs/scoring.md#how-are-the-scores-weighted)"
+  },
+  "lighthouse-core/report/html/renderer/util.js | warningAuditsGroupTitle": {
+    "message": "ผ่านการตรวจสอบแต่มีคำเตือน"
+  },
+  "lighthouse-core/report/html/renderer/util.js | warningHeader": {
+    "message": "คำเตือน "
+  },
+  "stack-packs/packs/wordpress.js | efficient_animated_content": {
+    "message": "ลองอัปโหลด GIF ไปยังบริการซึ่งจะทำให้ใช้ GIF เพื่อฝังเป็นวิดีโอ HTML5 ได้"
+  },
+  "stack-packs/packs/wordpress.js | offscreen_images": {
+    "message": "ติดตั้ง[ปลั๊กอินการโหลดแบบ Lazy Loading ของ WordPress](https://wordpress.org/plugins/search/lazy+load/) ที่จะช่วยเลื่อนเวลาโหลดรูปภาพนอกหน้าจอ หรือเปลี่ยนไปใช้ธีมที่มีฟังก์ชันดังกล่าว และอาจลองพิจารณาใช้[ปลั๊กอิน AMP](https://wordpress.org/plugins/amp/)"
+  },
+  "stack-packs/packs/wordpress.js | render_blocking_resources": {
+    "message": "มีปลั๊กอิน WordPress หลายรายการที่ช่วยคุณ[แทรกเนื้อหาที่สำคัญ](https://wordpress.org/plugins/search/critical+css/) หรือ[เลื่อนเวลาโหลดทรัพยากรที่สำคัญน้อยกว่า](https://wordpress.org/plugins/search/defer+css+javascript/) โปรดระวังว่าการเพิ่มประสิทธิภาพโดยปลั๊กอินเหล่านี้อาจทำให้ฟีเจอร์ของธีมหรือปลั๊กอินของคุณเสียหาย ซึ่งน่าจะทำให้คุณต้องแก้ไขโค้ด"
+  },
+  "stack-packs/packs/wordpress.js | time_to_first_byte": {
+    "message": "การกำหนดธีม ปลั๊กอิน และเซิร์ฟเวอร์ล้วนส่งผลต่อเวลาการตอบสนองของเซิร์ฟเวอร์ ลองหาธีมที่เพิ่มประสิทธิภาพมากขึ้น พยายามเลือกปลั๊กอินการเพิ่มประสิทธิภาพด้วยความระมัดระวัง และ/หรืออัปเกรดเซิร์ฟเวอร์"
+  },
+  "stack-packs/packs/wordpress.js | total_byte_weight": {
+    "message": "ลองแสดงข้อความที่ตัดตอนมาในรายการโพสต์ (เช่น ผ่านแท็ก \"เพิ่มเติม\") ลดจำนวนโพสต์ที่แสดงในหน้าหนึ่งๆ แบ่งโพสต์ยาวๆ เป็นหลายหน้า หรือใช้ปลั๊กอินเพื่อโหลดความคิดเห็นแบบ Lazy Loading"
+  },
+  "stack-packs/packs/wordpress.js | unminified_css": {
+    "message": "มี[ปลั๊กอิน WordPress](https://wordpress.org/plugins/search/minify+css/) หลายอย่างที่ช่วยให้เว็บไซต์เร็วขึ้นได้ด้วยการลิงก์ ลดขนาด และบีบอัดสไตล์ นอกจากนี้คุณอาจใช้กระบวนการของเวอร์ชันเพื่อลดขนาดล่วงหน้าหากเป็นไปได้"
+  },
+  "stack-packs/packs/wordpress.js | unminified_javascript": {
+    "message": "มี[ปลั๊กอิน WordPress](https://wordpress.org/plugins/search/minify+javascript/) หลายอย่างที่ช่วยให้เว็บไซต์เร็วขึ้นได้ด้วยการลิงก์ ลดขนาด และบีบอัดสคริปต์ นอกจากนี้คุณอาจใช้กระบวนการของเวอร์ชันเพื่อลดขนาดล่วงหน้าหากเป็นไปได้"
+  },
+  "stack-packs/packs/wordpress.js | unused_css_rules": {
+    "message": "ลองลดหรือเปลี่ยนจำนวน[ปลั๊กอิน WordPress](https://wordpress.org/plugins/) ที่โหลด CSS ที่ไม่ได้ใช้ในหน้าเว็บของคุณ หากต้องการระบุปลั๊กอินที่เพิ่ม CSS โดยไม่จำเป็น ให้ลองเรียกใช้[การครอบคลุมโค้ด](https://developers.google.com/web/updates/2017/04/devtools-release-notes#coverage)ใน DevTools ของ Chrome คุณระบุธีม/ปลั๊กอินที่รับผิดชอบได้จาก URL ของสไตล์ชีต หาปลั๊กอินที่มีสไตล์ชีตจำนวนมากอยู่ในรายการซึ่งมีสีแดงอยู่จำนวนมากในการครอบคลุมโค้ด ปลั๊กอินควรเป็นเพียงตัวกำหนดลำดับของสไตล์ชีตเท่านั้นหากใช้ปลั๊กอินในหน้าจริงๆ"
+  },
+  "stack-packs/packs/wordpress.js | unused_javascript": {
+    "message": "ลองลดหรือเปลี่ยนจำนวน[ปลั๊กอิน WordPress](https://wordpress.org/plugins/) ที่โหลด JavaScript ที่ไม่ได้ใช้ในหน้าเว็บของคุณ หากต้องการระบุปลั๊กอินที่เพิ่ม JS โดยไม่จำเป็น ให้ลองเรียกใช้ [การครอบคลุมโค้ด](https://developers.google.com/web/updates/2017/04/devtools-release-notes#coverage)ใน DevTools ของ Chrome คุณระบุธีม/ปลั๊กอินที่รับผิดชอบได้จาก URL ของสคริปต์ หาปลั๊กอินที่มีสคริปต์จำนวนมากอยู่ในรายการซึ่งมีสีแดงอยู่จำนวนมากในการครอบคลุมโค้ด ปลั๊กอินควรเป็นเพียงตัวกำหนดลำดับของสคริปต์เท่านั้นหากใช้ปลั๊กอินในหน้าจริงๆ"
+  },
+  "stack-packs/packs/wordpress.js | uses_long_cache_ttl": {
+    "message": "อ่านเกี่ยวกับ[การแคชของเบราว์เซอร์ใน WordPress](https://codex.wordpress.org/WordPress_Optimization#Browser_Caching)"
+  },
+  "stack-packs/packs/wordpress.js | uses_optimized_images": {
+    "message": "พิจารณาใช้[ปลั๊กอิน WordPress การเพิ่มประสิทธิภาพรูปภาพ](https://wordpress.org/plugins/search/optimize+images/)ที่บีบอัดรูปภาพแต่ยังคงคุณภาพไว้ได้"
+  },
+  "stack-packs/packs/wordpress.js | uses_responsive_images": {
+    "message": "อัปโหลดรูปภาพโดยตรงผ่าน[ไลบรารีสื่อ](https://codex.wordpress.org/Media_Library_Screen)เพื่อให้แน่ใจว่ามีขนาดรูปภาพที่จำเป็นพร้อมใช้งาน จากนั้นแทรกรูปภาพจากไลบรารีสื่อหรือใช้วิดเจ็ตรูปภาพเพื่อให้มีการใช้ขนาดรูปภาพที่มีประสิทธิภาพสูงสุด (รวมถึงขนาดสำหรับเบรกพอยท์ที่ปรับเปลี่ยนตามอุปกรณ์) หลีกเลี่ยงการใช้รูปภาพ`Full Size` นอกเสียจากว่าขนาดจะเพียงพอต่อการใช้งาน [ดูข้อมูลเพิ่มเติม](https://codex.wordpress.org/Inserting_Images_into_Posts_and_Pages#Image_Size)"
+  },
+  "stack-packs/packs/wordpress.js | uses_text_compression": {
+    "message": "คุณเปิดใช้การบีบอัดข้อความในการกำหนดค่าเว็บเซิร์ฟเวอร์ได้"
+  },
+  "stack-packs/packs/wordpress.js | uses_webp_images": {
+    "message": "พิจารณาใช้[ปลั๊กอิน](https://wordpress.org/plugins/search/convert+webp/)หรือบริการที่จะแปลงรูปภาพที่อัปโหลดเป็นรูปแบบที่เหมาะสมที่สุดโดยอัตโนมัติ"
+  }
+}
diff --git a/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/tr.json b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/tr.json
new file mode 100644
index 0000000..47168cd5
--- /dev/null
+++ b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/tr.json
@@ -0,0 +1,1541 @@
+{
+  "lighthouse-core/audits/accessibility/accesskeys.js | description": {
+    "message": "Erişim anahtarları, kullanıcıların sayfanın bir bölümüne hızlıca odaklanmalarını sağlar. Gezinmenin düzgün bir şekilde gerçekleştirilebilmesi için her bir erişim anahtarının benzersiz olması gerekir [Daha fazla bilgi](https://web.dev/accesskeys/)."
+  },
+  "lighthouse-core/audits/accessibility/accesskeys.js | failureTitle": {
+    "message": "`[accesskey]` değerleri benzersiz değil"
+  },
+  "lighthouse-core/audits/accessibility/accesskeys.js | title": {
+    "message": "`[accesskey]` değerleri benzersiz"
+  },
+  "lighthouse-core/audits/accessibility/aria-allowed-attr.js | description": {
+    "message": "Her ARIA `role`, belirli bir `aria-*` özellik alt kümesini destekler. Bunların eşleşmemesi `aria-*` özelliklerini geçersiz kılar. [Daha fazla bilgi](https://web.dev/aria-allowed-attr/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-allowed-attr.js | failureTitle": {
+    "message": "`[aria-*]` özellikleri, rolleriyle eşleşmiyor"
+  },
+  "lighthouse-core/audits/accessibility/aria-allowed-attr.js | title": {
+    "message": "`[aria-*]` özellikleri rolleriyle eşleşiyor"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-attr.js | description": {
+    "message": "Bazı ARIA rolleri, öğenin durumunu ekran okuyuculara açıklayan gerekli özelliklere sahiptir. [Daha fazla bilgi](https://web.dev/aria-required-attr/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-required-attr.js | failureTitle": {
+    "message": "`[role]` rolleri gereken tüm `[aria-*]` özelliklerine sahip değil"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-attr.js | title": {
+    "message": "`[role]` öğelerinin rolleri, gereken tüm`[aria-*]` özelliklerine sahip"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-children.js | description": {
+    "message": "Bazı ARIA üst rollerinin amaçlanan erişilebilirlik işlevlerini gerçekleştirebilmek için belirli alt rolleri içermesi gerekir. [Daha fazla bilgi](https://web.dev/aria-required-children/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-required-children.js | failureTitle": {
+    "message": "Belirli alt `[role]`rolleri gerektiren,`[role]` rolüne sahip öğeler eksik."
+  },
+  "lighthouse-core/audits/accessibility/aria-required-children.js | title": {
+    "message": "Belirli alt `[role]` rolleri gerektiren,`[role]` rolüne sahip öğeler mevcut"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-parent.js | description": {
+    "message": "Bazı ARIA alt rollerinin amaçlanan erişilebilirlik işlevlerini gerektiği gibi gerçekleştirebilmesi için belirli üst rollerin içinde bulunması gerekir. [Daha fazla bilgi](https://web.dev/aria-required-parent/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-required-parent.js | failureTitle": {
+    "message": "`[role]` rolleri gerekli üst öğelerinin içinde bulunmuyor"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-parent.js | title": {
+    "message": "`[role]` öğeleri gerekli üst öğelerinin içinde bulunuyor"
+  },
+  "lighthouse-core/audits/accessibility/aria-roles.js | description": {
+    "message": "ARIA rollerinin amaçlanan erişilebilirlik işlevlerini gerçekleştirebilmesi için geçerli değerlere sahip olması gerekir. [Daha fazla bilgi](https://web.dev/aria-roles/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-roles.js | failureTitle": {
+    "message": "`[role]` değerleri geçerli değil"
+  },
+  "lighthouse-core/audits/accessibility/aria-roles.js | title": {
+    "message": "`[role]` değerleri geçerli"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr-value.js | description": {
+    "message": "Ekran okuyucular gibi yardımcı teknolojiler geçersiz değerlere sahip ARIA özelliklerini yorumlayamaz. [Daha fazla bilgi](https://web.dev/aria-valid-attr-value/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr-value.js | failureTitle": {
+    "message": "`[aria-*]` özellikleri geçerli değerlere sahip değil"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr-value.js | title": {
+    "message": "`[aria-*]` özelliklerinin geçerli değerleri var"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr.js | description": {
+    "message": "Ekran okuyucular gibi yardımcı teknolojiler geçersiz adlara sahip ARIA özelliklerini yorumlayamaz. [Daha fazla bilgi](https://web.dev/aria-valid-attr/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr.js | failureTitle": {
+    "message": "`[aria-*]` özellikleri geçerli değil veya yanlış yazılmış"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr.js | title": {
+    "message": "`[aria-*]` özellikleri geçerli ve yanlış yazılmamış"
+  },
+  "lighthouse-core/audits/accessibility/audio-caption.js | description": {
+    "message": "Altyazılar kimin konuştuğu, neler dediği gibi önemli bilgiler ve konuşma dışında başka bilgiler sağlayarak ses öğelerinin işitme engelli veya işitme zorluğuna sahip kullanıcılar tarafından kullanılabilmesini sağlar. [Daha fazla bilgi](https://web.dev/audio-caption/)."
+  },
+  "lighthouse-core/audits/accessibility/audio-caption.js | failureTitle": {
+    "message": "`<audio>` öğelerinde `[kind=\"captions\"]` içeren bir `<track>` öğesi bulunmuyor."
+  },
+  "lighthouse-core/audits/accessibility/audio-caption.js | title": {
+    "message": "`<audio>` öğelerinde `[kind=\"captions\"]`içeren bir `<track>` öğesi bulunuyor"
+  },
+  "lighthouse-core/audits/accessibility/axe-audit.js | failingElementsHeader": {
+    "message": "Başarısız Öğeler"
+  },
+  "lighthouse-core/audits/accessibility/button-name.js | description": {
+    "message": "Bir düğmenin erişilebilir özellikli bir adı yoksa ekran okuyucular bu düğmeyi yalnızca \"düğme\" olarak okuyacağı için bu, ekran okuyuculardan yararlanan kullanıcılar için yararlı olmaz. [Daha fazla bilgi](https://web.dev/button-name/)."
+  },
+  "lighthouse-core/audits/accessibility/button-name.js | failureTitle": {
+    "message": "Düğmelerin erişilebilir adları yok"
+  },
+  "lighthouse-core/audits/accessibility/button-name.js | title": {
+    "message": "Düğmeler erişilebilir bir ada sahip"
+  },
+  "lighthouse-core/audits/accessibility/bypass.js | description": {
+    "message": "Tekrar eden içeriği atlamanın yollarını eklemek, klavye kullanıcılarının sayfada daha verimli bir şekilde gezinmesini sağlar. [Daha fazla bilgi](https://web.dev/bypass/)."
+  },
+  "lighthouse-core/audits/accessibility/bypass.js | failureTitle": {
+    "message": "Bu sayfa bir başlık, atlama bağlantısı veya önemli nokta bölgesi içermiyor"
+  },
+  "lighthouse-core/audits/accessibility/bypass.js | title": {
+    "message": "Sayfa bir başlık, atlama bağlantısı veya önemli nokta bölgesi içeriyor"
+  },
+  "lighthouse-core/audits/accessibility/color-contrast.js | description": {
+    "message": "Birçok kullanıcı, düşük kontrastlı metni okumakta zorlanır veya okuyamaz. [Daha fazla bilgi](https://web.dev/color-contrast/)."
+  },
+  "lighthouse-core/audits/accessibility/color-contrast.js | failureTitle": {
+    "message": "Arka plan ve ön plan renkleri yeterli kontrast oranına sahip değil."
+  },
+  "lighthouse-core/audits/accessibility/color-contrast.js | title": {
+    "message": "Arka plan ve ön plan renkleri yeterli kontrast oranına sahip"
+  },
+  "lighthouse-core/audits/accessibility/definition-list.js | description": {
+    "message": "Tanım listeleri gerektiği gibi işaretlenmediğinde ekran okuyucular kafa karışıklığına yol açan veya yanlış çıkışlar sunabilir. [Daha fazla bilgi](https://web.dev/definition-list/)."
+  },
+  "lighthouse-core/audits/accessibility/definition-list.js | failureTitle": {
+    "message": "`<dl>` öğeleri yalnızca gerektiği gibi sıralanmış `<dt>` ve `<dd>` gruplarını,`<script>` veya `<template>` öğelerini içermiyor."
+  },
+  "lighthouse-core/audits/accessibility/definition-list.js | title": {
+    "message": "`<dl>` öğeleri yalnızca gerektiği gibi sıralanmış `<dt>` ve `<dd>` gruplarını, `<script>` veya `<template>` öğelerini içeriyor."
+  },
+  "lighthouse-core/audits/accessibility/dlitem.js | description": {
+    "message": "Tanım listesi öğelerinin (`<dt>` ve `<dd>`) ekran okuyucular tarafından düzgün bir şekilde duyurulabilmesi için üst `<dl>` öğesinin içine yerleştirilmesi gerekir. [Daha fazla bilgi](https://web.dev/dlitem/)."
+  },
+  "lighthouse-core/audits/accessibility/dlitem.js | failureTitle": {
+    "message": "Tanım listesi öğeleri `<dl>` öğeleri arasına yerleştirilmemiş"
+  },
+  "lighthouse-core/audits/accessibility/dlitem.js | title": {
+    "message": "Tanım listesi öğeleri `<dl>` öğeleri arasına yerleştirilmiş"
+  },
+  "lighthouse-core/audits/accessibility/document-title.js | description": {
+    "message": "Başlık, ekran okuyucu kullanıcılarına sayfayla ilgili genel bir fikir verir ve arama motoru kullanıcılarının bir sayfanın aramalarıyla ilgili olup olmadığını belirlemeleri açısından son derece önemlidir. [Daha fazla bilgi](https://web.dev/document-title/)."
+  },
+  "lighthouse-core/audits/accessibility/document-title.js | failureTitle": {
+    "message": "Dokümanın `<title>` öğesi yok"
+  },
+  "lighthouse-core/audits/accessibility/document-title.js | title": {
+    "message": "Doküman geçerli bir `<title>` öğesi içeriyor"
+  },
+  "lighthouse-core/audits/accessibility/duplicate-id.js | description": {
+    "message": "Kimlik özelliğinin değeri benzersiz olmalıdır. Bunun nedeni, yardımcı teknolojilerin farkına varmadan diğer örnekleri atlamasını önlemektir. [Daha fazla bilgi](https://web.dev/duplicate-id/)."
+  },
+  "lighthouse-core/audits/accessibility/duplicate-id.js | failureTitle": {
+    "message": "Sayfadaki `[id]` özellikleri benzersiz değil"
+  },
+  "lighthouse-core/audits/accessibility/duplicate-id.js | title": {
+    "message": "Sayfadaki `[id]` özellikleri benzersiz"
+  },
+  "lighthouse-core/audits/accessibility/frame-title.js | description": {
+    "message": "Ekran okuyucu kullanıcıları, çerçevelerin içeriklerinin açıklanması için çerçeve başlıklarından yararlanır. [Daha fazla bilgi](https://web.dev/frame-title/)."
+  },
+  "lighthouse-core/audits/accessibility/frame-title.js | failureTitle": {
+    "message": "`<frame>` veya `<iframe>` öğelerinin başlığı yok"
+  },
+  "lighthouse-core/audits/accessibility/frame-title.js | title": {
+    "message": "`<frame>` veya `<iframe>` öğesi bir başlığa sahip"
+  },
+  "lighthouse-core/audits/accessibility/html-has-lang.js | description": {
+    "message": "Sayfa bir lang özelliği belirtmezse ekran okuyucu, sayfanın kullanıcı ekran okuyucuyu kurarken seçtiği varsayılan dilde olduğunu varsayar. Sayfa aslında varsayılan dilde değilse ekran okuyucu, sayfanın metnini doğru bir şekilde duyurmayabilir. [Daha fazla bilgi](https://web.dev/html-has-lang/)."
+  },
+  "lighthouse-core/audits/accessibility/html-has-lang.js | failureTitle": {
+    "message": "`<html>` öğesinin `[lang]` özelliği yok"
+  },
+  "lighthouse-core/audits/accessibility/html-has-lang.js | title": {
+    "message": "`<html>` öğesi `[lang]` özelliği içeriyor"
+  },
+  "lighthouse-core/audits/accessibility/html-lang-valid.js | description": {
+    "message": "Geçerli bir [BCP 47 language](https://www.w3.org/International/questions/qa-choosing-language-tags#question) belirtilmesi, ekran okuyucuların metni düzgün bir şekilde duyurmasına yardımcı olur. [Daha fazla bilgi](https://web.dev/html-lang-valid/)."
+  },
+  "lighthouse-core/audits/accessibility/html-lang-valid.js | failureTitle": {
+    "message": "`<html>` öğesi, `[lang]` özelliği için geçerli bir değeri sahip değil."
+  },
+  "lighthouse-core/audits/accessibility/html-lang-valid.js | title": {
+    "message": "`<html>` öğesi, `[lang]` özelliği için geçerli bir değere sahip"
+  },
+  "lighthouse-core/audits/accessibility/image-alt.js | description": {
+    "message": "Bilgilendirme amaçlı öğelerin hedefi, kısa ve açıklayıcı alternatif metinler olmalıdır. Dekoratif öğeler boş bir alt özelliğiyle yok sayılabilir. [Daha fazla bilgi](https://web.dev/image-alt/)."
+  },
+  "lighthouse-core/audits/accessibility/image-alt.js | failureTitle": {
+    "message": "Resim öğelerinin `[alt]` özellikleri yok"
+  },
+  "lighthouse-core/audits/accessibility/image-alt.js | title": {
+    "message": "Resim öğelerinin `[alt]` özellikleri var"
+  },
+  "lighthouse-core/audits/accessibility/input-image-alt.js | description": {
+    "message": "Bir resim `<input>` düğmesi olarak kullanılırken alternatif metin sağlamak, ekran okuyucu kullanıcılarının düğmenin amacını anlamalarına yardımcı olabilir. [Daha fazla bilgi](https://web.dev/input-image-alt/)."
+  },
+  "lighthouse-core/audits/accessibility/input-image-alt.js | failureTitle": {
+    "message": "`<input type=\"image\">` öğelerinin `[alt]` metni yok"
+  },
+  "lighthouse-core/audits/accessibility/input-image-alt.js | title": {
+    "message": "`<input type=\"image\">` öğelerinin `[alt]` metni var"
+  },
+  "lighthouse-core/audits/accessibility/label.js | description": {
+    "message": "Etiketler, form kontrollerinin ekran okuyucular gibi yardımcı teknolojiler tarafından düzgün bir şekilde duyurulmasını sağlar. [Daha fazla bilgi](https://web.dev/label/)."
+  },
+  "lighthouse-core/audits/accessibility/label.js | failureTitle": {
+    "message": "Form öğelerinin ilişkili etiketleri yok"
+  },
+  "lighthouse-core/audits/accessibility/label.js | title": {
+    "message": "Form öğelerinin ilişkili etiketleri var"
+  },
+  "lighthouse-core/audits/accessibility/layout-table.js | description": {
+    "message": "Düzen amaçlı kullanılan bir tablonun, veri öğeleri (ör. th veya başlık öğeleri ya da özet özelliği) içermemesi gerekir. Zira bu durum, ekran okuyucu kullanıcılarının kafa karıştırıcı bir deneyim yaşamalarına neden olabilir. [Daha fazla bilgi](https://web.dev/layout-table/)."
+  },
+  "lighthouse-core/audits/accessibility/layout-table.js | failureTitle": {
+    "message": "Sunu amaçlı `<table>` öğeleri `<th>`, `<caption>` veya `[summary]` özelliğini kullanmaktan kaçınmıyor."
+  },
+  "lighthouse-core/audits/accessibility/layout-table.js | title": {
+    "message": "Sunum amaçlı `<table>` öğeleri `<th>`, `<caption>` veya `[summary]` özelliğini kullanmaktan kaçınıyor."
+  },
+  "lighthouse-core/audits/accessibility/link-name.js | description": {
+    "message": "Ayırt edilebilir, benzersiz ve odaklanılabilir bağlantı metni (ve bağlantı olarak kullanıldığında resimler için alternatif metin), ekran okuyucu kullanıcılarına daha iyi bir gezinme deneyimi sunar. [Daha fazla bilgi](https://web.dev/link-name/)."
+  },
+  "lighthouse-core/audits/accessibility/link-name.js | failureTitle": {
+    "message": "Bağlantıların ayırt edilebilir adları yok"
+  },
+  "lighthouse-core/audits/accessibility/link-name.js | title": {
+    "message": "Bağlantıların ayırt edilebilir adları var"
+  },
+  "lighthouse-core/audits/accessibility/list.js | description": {
+    "message": "Ekran okuyucular listeleri duyurmak için belirli bir yöntem kullanır. Liste yapısının gerektiği gibi olmasını sağlamak, ekran okuyucu çıkışının düzgün olmasına yardımcı olur. [Daha fazla bilgi](https://web.dev/list/)."
+  },
+  "lighthouse-core/audits/accessibility/list.js | failureTitle": {
+    "message": "Listeler yalnızca `<li>` öğelerini ve komut dosyası destekleyen öğeleri (`<script>` ve `<template>`) içermiyor."
+  },
+  "lighthouse-core/audits/accessibility/list.js | title": {
+    "message": "Listeler yalnızca `<li>` öğelerini ve komut dosyası destekleyen öğeleri (`<script>` ve `<template>`) içeriyor."
+  },
+  "lighthouse-core/audits/accessibility/listitem.js | description": {
+    "message": "Ekran okuyucuların liste öğelerini (`<li>`) düzgün bir şekilde okuyabilmesi için liste öğelerinin, üst `<ul>` veya `<ol>` öğesinde yer alması gerekir. [Daha fazla bilgi](https://web.dev/listitem/)."
+  },
+  "lighthouse-core/audits/accessibility/listitem.js | failureTitle": {
+    "message": "Liste öğeleri (`<li>`), `<ul>` veya `<ol>` üst öğelerinde yer almıyor."
+  },
+  "lighthouse-core/audits/accessibility/listitem.js | title": {
+    "message": "Liste öğeleri (`<li>`), `<ul>` veya `<ol>` üst öğelerinde yer alıyor"
+  },
+  "lighthouse-core/audits/accessibility/meta-refresh.js | description": {
+    "message": "Kullanıcılar bir sayfanın otomatik olarak yenileneceğini düşünmez ve bu işlem yeniden sayfanın üst tarafına odaklanılmasına neden olur. Bu durum, can sıkıcı veya kafa karışıklığına yol açan bir deneyime yol açabilir. [Daha fazla bilgi](https://web.dev/meta-refresh/)."
+  },
+  "lighthouse-core/audits/accessibility/meta-refresh.js | failureTitle": {
+    "message": "Doküman `<meta http-equiv=\"refresh\">` kullanıyor"
+  },
+  "lighthouse-core/audits/accessibility/meta-refresh.js | title": {
+    "message": "Doküman `<meta http-equiv=\"refresh\">` öğesini kullanmıyor"
+  },
+  "lighthouse-core/audits/accessibility/meta-viewport.js | description": {
+    "message": "Yakınlaştırmanın devre dışı bırakılması, az gören ve bir web sayfasının içeriğini düzgün bir şekilde görebilmek için ekran büyütme özelliğinden yararlanan kullanıcılar için sorun teşkil eder. [Daha fazla bilgi](https://web.dev/meta-viewport/)."
+  },
+  "lighthouse-core/audits/accessibility/meta-viewport.js | failureTitle": {
+    "message": "`[user-scalable=\"no\"]`, `<meta name=\"viewport\">` öğesinde kullanılmış veya `[maximum-scale]` özelliği 5'ten küçük."
+  },
+  "lighthouse-core/audits/accessibility/meta-viewport.js | title": {
+    "message": "`[user-scalable=\"no\"]`, `<meta name=\"viewport\">` öğesinde kullanılmamış ve `[maximum-scale]` özelliği 5'ten küçük değil."
+  },
+  "lighthouse-core/audits/accessibility/object-alt.js | description": {
+    "message": "Ekran okuyucular metin dışı içeriği çeviremez. `<object>` öğelerine alternatif metin eklemek, ekran okuyucuların ilgili öğenin ne anlama geldiğini kullanıcılara söylemesine yardımcı olur. [Daha fazla bilgi](https://web.dev/object-alt/)."
+  },
+  "lighthouse-core/audits/accessibility/object-alt.js | failureTitle": {
+    "message": "`<object>` öğelerinin `[alt]` metni yok"
+  },
+  "lighthouse-core/audits/accessibility/object-alt.js | title": {
+    "message": "`<object>` öğelerinin `[alt]` metni var"
+  },
+  "lighthouse-core/audits/accessibility/tabindex.js | description": {
+    "message": "0'dan büyük bir değer, açık bir gezinme sıralamasını belirtir. Bu durum teknik olarak geçerli olsa da yardımcı teknolojilerden yararlanan kullanıcıların genellikle sinir bozucu deneyimler yaşamalarına neden olur. [Daha fazla bilgi](https://web.dev/tabindex/)."
+  },
+  "lighthouse-core/audits/accessibility/tabindex.js | failureTitle": {
+    "message": "Bazı öğeler 0'dan büyük bir `[tabindex]` değeri içeriyor"
+  },
+  "lighthouse-core/audits/accessibility/tabindex.js | title": {
+    "message": "Hiçbir öğe 0'dan büyük `[tabindex]` değeri içermiyor"
+  },
+  "lighthouse-core/audits/accessibility/td-headers-attr.js | description": {
+    "message": "Ekran okuyucuların tablolarda daha kolay gezinmeyi sağlayan özellikleri vardır. `[headers]` özelliğini kullanan`<td>` hücrelerinin yalnızca aynı tablodaki diğer hücrelere atıfta bulunmasını sağlamak, ekran okuyucu kullanıcılarına daha iyi bir deneyim sunabilir. [Daha fazla bilgi](https://web.dev/td-headers-attr/)."
+  },
+  "lighthouse-core/audits/accessibility/td-headers-attr.js | failureTitle": {
+    "message": "`<table>` öğesinde olup `[headers]` özelliğini kullanan hücreler, aynı tablodaki diğer hücrelere atıfta bulunuyor."
+  },
+  "lighthouse-core/audits/accessibility/td-headers-attr.js | title": {
+    "message": "`<table>` öğesinde olup `[headers]` özelliğini kullanan hücreler yalnızca aynı tablodaki diğer hücrelere atıfta bulunuyor."
+  },
+  "lighthouse-core/audits/accessibility/th-has-data-cells.js | description": {
+    "message": "Ekran okuyucuların tablolarda daha kolay gezinmeyi sağlayan özellikleri vardır. Tablo başlıklarının her zaman bazı hücre kümelerine atıfta bulunmasını sağlamak, ekran okuyucu kullanıcılarına daha iyi bir deneyim sunabilir. [Daha fazla bilgi](https://web.dev/th-has-data-cells/)."
+  },
+  "lighthouse-core/audits/accessibility/th-has-data-cells.js | failureTitle": {
+    "message": "`<th>` öğelerinin ve `[role=\"columnheader\"/\"rowheader\"]` içeren öğelerin açıkladıkları veri hücreleri yok."
+  },
+  "lighthouse-core/audits/accessibility/th-has-data-cells.js | title": {
+    "message": "`<th>` öğelerinin ve`[role=\"columnheader\"/\"rowheader\"]` içeren öğelerin açıkladıkları veri hücreleri var."
+  },
+  "lighthouse-core/audits/accessibility/valid-lang.js | description": {
+    "message": "Öğelerde geçerli bir [BCP 47 language](https://www.w3.org/International/questions/qa-choosing-language-tags#question) belirtilmesi, ekran okuyucunun metni doğru telaffuz etmesini sağlar. [Daha fazla bilgi](https://web.dev/valid-lang/)."
+  },
+  "lighthouse-core/audits/accessibility/valid-lang.js | failureTitle": {
+    "message": "`[lang]` özellikleri geçerli bir değere sahip değil"
+  },
+  "lighthouse-core/audits/accessibility/valid-lang.js | title": {
+    "message": "`[lang]` özellikleri geçerli bir değere sahip"
+  },
+  "lighthouse-core/audits/accessibility/video-caption.js | description": {
+    "message": "Bir videoda altyazının yer alması işitme engelli ve işitme zorluğuna sahip kullanıcıların videonun bilgilerine daha kolay erişmelerini sağlar. [Daha fazla bilgi](https://web.dev/video-caption/)."
+  },
+  "lighthouse-core/audits/accessibility/video-caption.js | failureTitle": {
+    "message": "`<video>` öğelerinde `[kind=\"captions\"]` içeren bir `<track>` öğesi bulunmuyor."
+  },
+  "lighthouse-core/audits/accessibility/video-caption.js | title": {
+    "message": "`<video>` öğelerinde `[kind=\"captions\"]`içeren bir `<track>` öğesi bulunuyor"
+  },
+  "lighthouse-core/audits/accessibility/video-description.js | description": {
+    "message": "Sesli açıklamalar, videolarla ilgili olarak diyaloğun sağlayamayacağı bilgiler (ör. yüz ifadeleri ve sahneler) sağlar. [Daha fazla bilgi](https://web.dev/video-description/)."
+  },
+  "lighthouse-core/audits/accessibility/video-description.js | failureTitle": {
+    "message": "`<video>` öğelerinde `[kind=\"description\"]` içeren bir `<track>` öğesi bulunmuyor."
+  },
+  "lighthouse-core/audits/accessibility/video-description.js | title": {
+    "message": "`<video>` öğelerinde `[kind=\"description\"]`içeren bir `<track>` öğesi bulunuyor"
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | description": {
+    "message": "Kullanıcılar ana ekranlarına progresif web uygulaması eklerinde iOS'ta ideal görünüm için bir `apple-touch-icon` öğesi tanımlayın. Tanım, saydam olmayan bir 192 piksel (veya 180 piksel) kare PNG'ye götürmelidir. [Daha Fazla Bilgi](https://developers.google.com/web/fundamentals/design-and-ux/browser-customization/)."
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | failureTitle": {
+    "message": "Geçerli bir `apple-touch-icon` öğesi içermiyor"
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | precomposedWarning": {
+    "message": "`apple-touch-icon-precomposed` güncel değil; `apple-touch-icon` tercih edilir."
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | title": {
+    "message": "Geçerli bir `apple-touch-icon` sunuyor"
+  },
+  "lighthouse-core/audits/bootup-time.js | chromeExtensionsWarning": {
+    "message": "Chrome uzantıları bu sayfanın yükleme performansını olumsuz etkilemiştir. Sayfayı gizli modda veya uzantı içermeyen bir Chrome profilinden denetlemeyi deneyin."
+  },
+  "lighthouse-core/audits/bootup-time.js | columnScriptEval": {
+    "message": "Komut Dosyası Değerlendirmesi"
+  },
+  "lighthouse-core/audits/bootup-time.js | columnScriptParse": {
+    "message": "Komut Dosyası Ayrıştırma"
+  },
+  "lighthouse-core/audits/bootup-time.js | columnTotal": {
+    "message": "Toplam CPU Süresi"
+  },
+  "lighthouse-core/audits/bootup-time.js | description": {
+    "message": "JS'yi ayrıştırma, derleme ve yürütme için harcanan zamanı kısaltmayı düşünün. Daha küçük JS yüklerinin sağlanması bu konuda yardımcı olabilir. [Daha fazla bilgi](https://developers.google.com/web/tools/lighthouse/audits/bootup)."
+  },
+  "lighthouse-core/audits/bootup-time.js | failureTitle": {
+    "message": "JavaScript yürütme süresini azaltın"
+  },
+  "lighthouse-core/audits/bootup-time.js | title": {
+    "message": "JavaScript yürütme süresi"
+  },
+  "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | description": {
+    "message": "Büyük GIF'ler, animasyonlu içeriğin sunulmasında verimli olmaz. Ağ veri miktarından tasarruf etmek üzere animasyonlar için MPEG4/WebM videoları ve statik resimler için GIF yerine PNG/WebP kullanma seçeneğini değerlendirin. [Daha fazla bilgi](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/replace-animated-gifs-with-video/)"
+  },
+  "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | title": {
+    "message": "Animasyonlu içerik için video biçimleri kullanın"
+  },
+  "lighthouse-core/audits/byte-efficiency/offscreen-images.js | description": {
+    "message": "Etkileşim için hazır olma süresini kısaltmak için ekran dışı ve gizli resimleri, tüm kritik kaynakların yüklenmesi bittikten sonra gecikmeli olarak yükleme seçeneğini değerlendirin. [Daha fazla bilgi](https://developers.google.com/web/tools/lighthouse/audits/offscreen-images)."
+  },
+  "lighthouse-core/audits/byte-efficiency/offscreen-images.js | title": {
+    "message": "Ekran dışındaki resimleri ertele"
+  },
+  "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | description": {
+    "message": "Kaynaklar, sayfanızda ilk boyamayı engelliyor. Kritik JS/CSS'yi satır içinde yayınlama ve kritik olmayan tüm JS/stilleri erteleme seçeneğini değerlendirin. [Daha fazla bilgi](https://developers.google.com/web/tools/lighthouse/audits/blocking-resources)."
+  },
+  "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | title": {
+    "message": "Oluşturmayı engelleyen kaynakları ortadan kaldırın"
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | description": {
+    "message": "Büyük ağ yükleri kullanıcılar için parasal maliyet anlamına gelir ve yükleme sürelerinin uzamasında yüksek bir etkiye sahiptir. [Daha fazla bilgi](https://developers.google.com/web/tools/lighthouse/audits/network-payloads)."
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | displayValue": {
+    "message": "Toplam boyut {totalBytes, number, bytes} KB'tı"
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | failureTitle": {
+    "message": "Çok büyük ağ yüklerinden kaçının"
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | title": {
+    "message": "Çok büyük ağ yüklerini önler"
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-css.js | description": {
+    "message": "CSS dosyalarının küçültülmesi ağ yükü boyutlarını azaltabilir. [Daha fazla bilgi](https://developers.google.com/web/tools/lighthouse/audits/minify-css)."
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-css.js | title": {
+    "message": "CSS'yi küçültün"
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | description": {
+    "message": "JavaScript dosyalarının küçültülmesi yük boyutlarını azaltabilir ve komut dosyası ayrıştırma süresini kısaltabilir. [Daha fazla bilgi](https://developers.google.com/speed/docs/insights/MinifyResources)."
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | title": {
+    "message": "JavaScript'i küçült"
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | description": {
+    "message": "Ağ etkinliğinin gereksiz yere kullandığı bayt sayısını azaltmak için, kullanılmayan kuralları stil sayfalarından kaldırın ve ekranın üst kısmında içerik için kullanılmayan CSS'nin yüklenmesini erteleyin. [Daha fazla bilgi](https://developers.google.com/web/tools/lighthouse/audits/unused-css)."
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | title": {
+    "message": "Kullanılmayan CSS'yi kaldırın"
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-javascript.js | description": {
+    "message": "Ağ etkinliğinin kullandığı bayt sayısını azaltmak için kullanılmayan JavaScript'i kaldırın."
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-javascript.js | title": {
+    "message": "Kullanılmayan JavaScript'i kaldırın"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | description": {
+    "message": "Uzun önbellek ömrü, sayfanızın tekrar ziyaret edilmesi sürecini hızlandırabilir. [Daha fazla bilgi](https://developers.google.com/web/tools/lighthouse/audits/cache-policy)."
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 kaynak bulundu}other{# kaynak bulundu}}"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | failureTitle": {
+    "message": "Statik öğeleri verimli bir önbellek politikasıyla yayınlayın"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | title": {
+    "message": "Statik öğelerde verimli önbellek politikası kullanır"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | description": {
+    "message": "Optimize edilmiş resimler daha hızlı yüklenir ve daha az hücresel veri kullanır. [Daha fazla bilgi](https://developers.google.com/web/tools/lighthouse/audits/optimize-images)."
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | title": {
+    "message": "Resimleri verimli bir şekilde kodlayın"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | description": {
+    "message": "Hücresel veriden tasarruf etmek ve yükleme süresini kısaltmak için uygun boyutlu resimler sunun. [Daha fazla bilgi](https://developers.google.com/web/tools/lighthouse/audits/oversized-images)."
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | title": {
+    "message": "Doğru boyuta sahip resimler"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | description": {
+    "message": "Metne dayalı kaynaklar, toplam ağ baytı sayısını en aza indirmek için sıkıştırılarak (gizp, deflate veya brotli) yayınlanmalıdır. [Daha fazla bilgi](https://developers.google.com/web/tools/lighthouse/audits/text-compression)."
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | title": {
+    "message": "Metin sıkıştırmayı etkinleştirin"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | description": {
+    "message": "JPEG 2000, JPEG XR ve WebP gibi resim biçimleri genellikle PNG veya JPEG'den daha iyi sıkıştırma sağlar. Böylece indirme işlemleri daha hızlı tamamlanır ve veri tüketimi daha az olur. [Daha fazla bilgi](https://developers.google.com/web/tools/lighthouse/audits/webp)."
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | title": {
+    "message": "Resimleri yeni nesil biçimlerde yayınlayın"
+  },
+  "lighthouse-core/audits/content-width.js | description": {
+    "message": "Uygulamanızın içeriğinin genişliği, görüntü alanının genişliğiyle eşleşmiyorsa uygulamanız mobil ekranlar için optimize edilmemiş olabilir. [Daha fazla bilgi](https://developers.google.com/web/tools/lighthouse/audits/content-sized-correctly-for-viewport)."
+  },
+  "lighthouse-core/audits/content-width.js | explanation": {
+    "message": "{innerWidth} piksel görüntü alanı boyutu, {outerWidth} piksel pencere boyutuyla eşleşmiyor."
+  },
+  "lighthouse-core/audits/content-width.js | failureTitle": {
+    "message": "İçerik, görüntü alanı için doğru boyutlandırılmadı"
+  },
+  "lighthouse-core/audits/content-width.js | title": {
+    "message": "İçerik görüntü alanı için doğru boyutlandırıldı"
+  },
+  "lighthouse-core/audits/critical-request-chains.js | description": {
+    "message": "Aşağıdaki Kritik İstek Zincirleri, hangi kaynakların yüksek öncelikle yüklendiğini göstermektedir. Sayfa yüklemesini iyileştirmek için zincir uzunluğunu azaltma, kaynakların indirme boyutunu küçültme veya gereksiz kaynakların indirilmesini erteleme seçeneğini değerlendirin. [Daha fazla bilgi](https://developers.google.com/web/tools/lighthouse/audits/critical-request-chains)."
+  },
+  "lighthouse-core/audits/critical-request-chains.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 zincir bulundu}other{# zincir bulundu}}"
+  },
+  "lighthouse-core/audits/critical-request-chains.js | title": {
+    "message": "Kritik İsteklerin Derinliğini En Aza İndirin"
+  },
+  "lighthouse-core/audits/deprecations.js | columnDeprecate": {
+    "message": "Kullanımdan Kaldırma / Uyarı"
+  },
+  "lighthouse-core/audits/deprecations.js | columnLine": {
+    "message": "Satır"
+  },
+  "lighthouse-core/audits/deprecations.js | description": {
+    "message": "Kullanımdan kaldırılan API'ler sonunda tarayıcıdan kaldırılacaktır. [Daha fazla bilgi](https://web.dev/deprecations)."
+  },
+  "lighthouse-core/audits/deprecations.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 uyarı bulundu}other{# uyarı bulundu}}"
+  },
+  "lighthouse-core/audits/deprecations.js | failureTitle": {
+    "message": "Kullanımdan kaldırılan API'leri kullanıyor"
+  },
+  "lighthouse-core/audits/deprecations.js | title": {
+    "message": "Kullanımdan kaldırılan API'leri içermiyor"
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | description": {
+    "message": "Application Cache API'si kullanımdan kaldırılmıştır. [Daha fazla bilgi](https://web.dev/appcache-manifest)."
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | displayValue": {
+    "message": "\"{AppCacheManifest}\" bulundu"
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | failureTitle": {
+    "message": "Uygulama Önbelleği Kullanma"
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | title": {
+    "message": "Uygulama Önbelleği Kullanılmıyor"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | description": {
+    "message": "Bir DOCTYPE belirlemek, tarayıcının Quirks moduna geçmesini önler. [Daha fazla bilgi](https://web.dev/doctype)."
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationBadDoctype": {
+    "message": "DOCTYPE adı, küçük harf `html` dizesi olmalıdır"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationNoDoctype": {
+    "message": "Doküman bir DOCTYPE içermelidir"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationPublicId": {
+    "message": "Beklenen publicId boş bir dize olmalı"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationSystemId": {
+    "message": "Beklenen systemId boş bir dize olmalı"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | failureTitle": {
+    "message": "Sayfada HTML DOCTYPE eksik, bu nedenle Quirks modunu tetikliyor"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | title": {
+    "message": "Sayfa HTML DOCTYPE içeriyor"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | columnElement": {
+    "message": "Öğe"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | columnStatistic": {
+    "message": "İstatistik"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | columnValue": {
+    "message": "Değer"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | description": {
+    "message": "Tarayıcı mühendisleri, sayfaların yaklaşık olarak 1.500'den az DOM öğesi içermesini önerir. En iyisi, 32 öğeden ve 60 alt/üst öğeden az olan bir ağaç derinliğidir. Büyük bir DOM, bellek kullanımını artırarak daha uzun [stil hesaplamalarına](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), yol açabilir ve yüksek maliyetli [düzen yeniden düzenlemeleri](https://developers.google.com/speed/articles/reflow). [Daha fazla bilgi](https://web.dev/dom-size)."
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 öğe}other{# öğe}}"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | failureTitle": {
+    "message": "Aşırı büyük bir DOM boyutundan kaçının"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | statisticDOMDepth": {
+    "message": "Maksimum DOM Derinliği"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | statisticDOMElements": {
+    "message": "Tüm DOM Öğeleri"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | statisticDOMWidth": {
+    "message": "Maksimum Alt Öğe"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | title": {
+    "message": "Aşırı büyük bir DOM boyutunu önler"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | columnRel": {
+    "message": "Rel"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | columnTarget": {
+    "message": "Hedef"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | description": {
+    "message": "Performansı artırmak ve güvenlik açıklarını önlemek için harici bağlantılara `rel=\"noopener\"` veya `rel=\"noreferrer\"` ekleyin. [Daha fazla bilgi](https://web.dev/external-anchors-use-rel-noopener)."
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | failureTitle": {
+    "message": "Çapraz kökenli hedeflere bağlantılar güvenli değildir"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | title": {
+    "message": "Çapraz kökenli hedeflere bağlantılar güvenli"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | warning": {
+    "message": "Bağlantı için hedef belirlenemedi ({anchorHTML}). Köprü olarak kullanılmadıysa target=_blank öğesini kaldırmayı değerlendirin."
+  },
+  "lighthouse-core/audits/dobetterweb/geolocation-on-start.js | description": {
+    "message": "Kullanıcılar herhangi bir bağlam olmadan konum bilgilerini isteyen sitelere şüpheyle bakarlar veya bu istek karşısında şaşırırlar. Onun yerine isteği bir kullanıcı işlemine bağlamayı değerlendirin. [Daha fazla bilgi](https://web.dev/geolocation-on-start)."
+  },
+  "lighthouse-core/audits/dobetterweb/geolocation-on-start.js | failureTitle": {
+    "message": "Sayfa yüklemede coğrafi konum izni istiyor"
+  },
+  "lighthouse-core/audits/dobetterweb/geolocation-on-start.js | title": {
+    "message": "Sayfa yüklemede coğrafi konum izni istemiyor"
+  },
+  "lighthouse-core/audits/dobetterweb/js-libraries.js | columnVersion": {
+    "message": "Sürüm"
+  },
+  "lighthouse-core/audits/dobetterweb/js-libraries.js | description": {
+    "message": "Sayfadaki tüm JavaScript kitaplıkları kullanıcı arabirimleri algılandı. [Daha fazla bilgi](https://web.dev/js-libraries)."
+  },
+  "lighthouse-core/audits/dobetterweb/js-libraries.js | title": {
+    "message": "JavaScript kitaplıkları algılandı"
+  },
+  "lighthouse-core/audits/dobetterweb/no-document-write.js | description": {
+    "message": "`document.write()` aracılığıyla dinamik olarak enjekte edilen harici komut dosyaları, yavaş bağlantıdaki kullanıcılar için sayfa yüklemeyi onlarca saniye geciktirebilir. [Daha fazla bilgi](https://web.dev/no-document-write)."
+  },
+  "lighthouse-core/audits/dobetterweb/no-document-write.js | failureTitle": {
+    "message": "`document.write()` öğesini kullanıyor"
+  },
+  "lighthouse-core/audits/dobetterweb/no-document-write.js | title": {
+    "message": "`document.write()` öğesinden kaçınıyor"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | columnSeverity": {
+    "message": "En Yüksek Önem Derecesi"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | columnVersion": {
+    "message": "Kitaplık Sürümü"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | columnVuln": {
+    "message": "Güvenlik Açığı Sayısı"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | description": {
+    "message": "Bazı üçüncü taraf komut dosyaları, saldırganlar tarafından kolayca belirlenen ve istismar edilen bilinen güvenlik açıkları içerebilir. [Daha fazla bilgi](https://web.dev/no-vulnerable-libraries)."
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 güvenlik açığı algılandı}other{# güvenlik açığı algılandı}}"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | failureTitle": {
+    "message": "Bilinen güvenlik açıklarına sahip JavaScript kitaplıkları kullanıcı arabirimi içeriyor"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | rowSeverityHigh": {
+    "message": "Yüksek"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | rowSeverityLow": {
+    "message": "Düşük"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | rowSeverityMedium": {
+    "message": "Orta"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | title": {
+    "message": "Bilinen güvenlik açıklarına sahip JavaScript kitaplıkları kullanıcı arabirimini önlüyor"
+  },
+  "lighthouse-core/audits/dobetterweb/notification-on-start.js | description": {
+    "message": "Kullanıcılar herhangi bir bağlam olmadan bildirim göndermek isteyen sitelere şüpheyle bakarlar veya bu istek karşısında şaşırırlar. Onun yerine isteği kullanıcı hareketlerine bağlamayı değerlendirin. [Daha fazla bilgi](https://web.dev/notification-on-start)."
+  },
+  "lighthouse-core/audits/dobetterweb/notification-on-start.js | failureTitle": {
+    "message": "Sayfa yüklemede bildirim izni istiyor"
+  },
+  "lighthouse-core/audits/dobetterweb/notification-on-start.js | title": {
+    "message": "Sayfa yüklemede bildirim izni istemiyor"
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | columnFailingElem": {
+    "message": "Başarısız Öğeler"
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | description": {
+    "message": "Şifre yapıştırmanın engellenmesi, iyi güvenlik politikasına zarar verir. [Daha fazla bilgi](https://web.dev/password-inputs-can-be-pasted-into)."
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | failureTitle": {
+    "message": "Kullanıcıların şifre alanlarına yapıştırmalarını önler"
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | title": {
+    "message": "Kullanıcıların şifre alanlarına yapıştırmalarına izin verir"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | columnProtocol": {
+    "message": "Protokol"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | description": {
+    "message": "HTTP/2, HTTP/1.1'e kıyasla ikili başlıklar, çoğullama ve sunucu push mesajları dahil olmak üzere birçok avantaj sunar. [Daha fazla bilgi](https://web.dev/uses-http2)."
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 istek HTTP/2 üzerinden sunulmuyor}other{# istek HTTP/2 üzerinden sunulmuyor}}"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | failureTitle": {
+    "message": "Tüm kaynakları için HTTP/2 kullanmıyor"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | title": {
+    "message": "Kendi kaynakları için HTTP/2 kullanıyor"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-passive-event-listeners.js | description": {
+    "message": "Sayfanızın kaydırma performansını artırmak için dokunma ve ve tekerlek etkinliği işleyicilerini `passive` olarak işaretlemeyi değerlendirin. [Daha fazla bilgi](https://web.dev/uses-passive-event-listeners)."
+  },
+  "lighthouse-core/audits/dobetterweb/uses-passive-event-listeners.js | failureTitle": {
+    "message": "Kaydırma performansını artırmak için pasif işleyicileri kullanmıyor"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-passive-event-listeners.js | title": {
+    "message": "Kaydırma performansını artırmak için pasif işleyicileri kullanıyor"
+  },
+  "lighthouse-core/audits/errors-in-console.js | columnDesc": {
+    "message": "Açıklama"
+  },
+  "lighthouse-core/audits/errors-in-console.js | description": {
+    "message": "Konsola kaydedilen hatalar çözülmemiş problemleri belirtir Bunlar, ağ istek hatalarından ve diğer tarayıcı sorunlarından gelebilir. [Daha fazla bilgi](https://web.dev/errors-in-console)"
+  },
+  "lighthouse-core/audits/errors-in-console.js | failureTitle": {
+    "message": "Tarayıcı hataları konsola kaydedildi"
+  },
+  "lighthouse-core/audits/errors-in-console.js | title": {
+    "message": "Konsola tarayıcı hatası kaydedilmedi"
+  },
+  "lighthouse-core/audits/font-display.js | description": {
+    "message": "Web yazı tipleri yüklenirken kullanıcının metni görebilmesini sağlamak için yazı tipi görüntüleme CSS özelliğinden yararlanın. [Daha fazla bilgi](https://developers.google.com/web/updates/2016/02/font-display)."
+  },
+  "lighthouse-core/audits/font-display.js | failureTitle": {
+    "message": "Web yazı tipi yüklemesi sırasında metnin görünür halde kalmasını sağlayın"
+  },
+  "lighthouse-core/audits/font-display.js | title": {
+    "message": "Web yazı tipi yüklenirken tüm metin görünür halde kalır"
+  },
+  "lighthouse-core/audits/font-display.js | undeclaredFontURLWarning": {
+    "message": "Lighthouse, şu URL için yazı tipi görüntüleme değerini otomatik olarak kontrol edemedi: {fontURL}."
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | columnActual": {
+    "message": "En Boy Oranı (Gerçek)"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | columnDisplayed": {
+    "message": "En Boy Oranı (Görüntülenen)"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | description": {
+    "message": "Resim görüntüleme boyutları doğal en boy oranıyla eşleşmeli. [Daha fazla bilgi](https://web.dev/image-aspect-ratio)."
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | failureTitle": {
+    "message": "Yanlış en boy oranına sahip resimler görüntülüyor"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | title": {
+    "message": "Resimleri doğru en boy oranıyla görüntülüyor"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | warningCompute": {
+    "message": "Geçersiz resim boyutlandırma bilgileri {url}"
+  },
+  "lighthouse-core/audits/installable-manifest.js | description": {
+    "message": "Tarayıcılar proaktif olarak kullanıcılardan uygulamanızı ana ekranlarına eklemelerini isteyebilirler ve bu da daha yüksek etkileşim sağlayabilir. [Daha fazla bilgi](https://developers.google.com/web/tools/lighthouse/audits/install-prompt)."
+  },
+  "lighthouse-core/audits/installable-manifest.js | failureTitle": {
+    "message": "Web uygulaması manifest dosyası yüklenebilir olma gerekliliklerini karşılamıyor"
+  },
+  "lighthouse-core/audits/installable-manifest.js | title": {
+    "message": "Web uygulaması manifest dosyası yüklenebilir olma gereklerini karşılar"
+  },
+  "lighthouse-core/audits/is-on-https.js | columnInsecureURL": {
+    "message": "Güvenli olmayan URL"
+  },
+  "lighthouse-core/audits/is-on-https.js | description": {
+    "message": "Tüm siteler (hassas veriler işlemeyenler dahi) HTTPS ile korunmalıdır . HTTPS, izinsiz kişilerin uygulamanızla kullanıcılarınız arasındaki iletişime müdahale etmelerine veya pasif olarak dinlemelerini önler ayrıca HTTP/2 ve birçok yeni web platformu için ön koşuldur. [Daha fazla bilgi](https://web.dev/is-on-https)."
+  },
+  "lighthouse-core/audits/is-on-https.js | displayValue": {
+    "message": "{itemCount,plural, =1{Güvenli olmayan 1 istek bulundu}other{Güvenli olmayan # istek bulundu}}"
+  },
+  "lighthouse-core/audits/is-on-https.js | failureTitle": {
+    "message": "HTTPS kullanmıyor"
+  },
+  "lighthouse-core/audits/is-on-https.js | title": {
+    "message": "HTTPS kullanıyor"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | description": {
+    "message": "Sayfaların hücresel ağ üzerinden hızlı bir şekilde yüklenmesi, mobil cihaz kullanıcılarının iyi bir deneyim yaşamalarını sağlar. [Daha fazla bilgi](https://developers.google.com/web/tools/lighthouse/audits/fast-3g)."
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | displayValueText": {
+    "message": "Etkileşimli hale gelme süresi: {timeInMs, number, seconds} sn."
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | displayValueTextWithOverride": {
+    "message": "Sayfanın simüle mobil ağda etkileşime hazır hale gelmesi {timeInMs, number, seconds} sn. sürdü"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | explanationLoadSlow": {
+    "message": "Sayfanız çok yavaş yükleniyor ve etkileşimli hale gelmesi 10 saniyeyi geçiyor. Nasıl iyileştireceğinizi öğrenmek için \"Performans\" bölümünde fırsatlara ve teşhise bakın."
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | failureTitle": {
+    "message": "Sayfalar mobil ağlarda yeterince hızlı yüklenmiyor"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | title": {
+    "message": "Sayfalar mobil ağlarda yeterince hızlı yükleniyor"
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | columnCategory": {
+    "message": "Kategori"
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | description": {
+    "message": "JS'yi ayrıştırma, derleme ve yürütme için harcanan zamanı kısaltma seçeneğini değerlendirin. Daha küçük JS yüklerinin sağlanması bu konuda yardımcı olabilir."
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | failureTitle": {
+    "message": "Ana iş parçacığı çalışmasını en aza indir"
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | title": {
+    "message": "Ana iş parçacığının çalışmasını en aza indirir"
+  },
+  "lighthouse-core/audits/manual/pwa-cross-browser.js | description": {
+    "message": "Mümkün olduğunca fazla sayıda kullanıcıya ulaşmak için sitelerin belli başlı her tarayıcıda çalışması gerekir. [Daha fazla bilgi](https://developers.google.com/web/progressive-web-apps/checklist#site-works-cross-browser)."
+  },
+  "lighthouse-core/audits/manual/pwa-cross-browser.js | title": {
+    "message": "Site farklı tarayıcılarda çalışıyor"
+  },
+  "lighthouse-core/audits/manual/pwa-each-page-has-url.js | description": {
+    "message": "Her bir sayfaya URL aracılığıyla derin bağlantı verilebildiğinden ve URL'lerin sosyal medyada paylaşılabilmesi için benzersiz olduğundan emin olun. [Daha fazla bilgi](https://developers.google.com/web/progressive-web-apps/checklist#each-page-has-a-url)."
+  },
+  "lighthouse-core/audits/manual/pwa-each-page-has-url.js | title": {
+    "message": "Her sayfa bir URL'ye sahip"
+  },
+  "lighthouse-core/audits/manual/pwa-page-transitions.js | description": {
+    "message": "Yavaş ağlarda bile sağa sola dokundukça geçişlerin hızlı gerçekleştiği hissedilmelidir. Bu, algılanan performansın temel unsurlarındandır. [Daha fazla bilgi](https://developers.google.com/web/progressive-web-apps/checklist#page-transitions-dont-feel-like-they-block-on-the-network)."
+  },
+  "lighthouse-core/audits/manual/pwa-page-transitions.js | title": {
+    "message": "Sayfa geçişleri ağda takılıyorlarmış gibi hissedilmiyor"
+  },
+  "lighthouse-core/audits/metrics/estimated-input-latency.js | description": {
+    "message": "Tahmini Giriş Gecikmesi, sayfa yüklemesinin en yoğun olduğu 5 saniyelik zaman aralığında uygulamanızın kullanıcı girişine kaç milisaniye içinde yanıt vereceğine dair bir tahmindir. Gecikmeniz 50 ms.nin üzerinde olursa kullanıcılar uygulamanızın durakladığını düşünebilir. [Daha fazla bilgi](https://developers.google.com/web/tools/lighthouse/audits/estimated-input-latency)."
+  },
+  "lighthouse-core/audits/metrics/estimated-input-latency.js | title": {
+    "message": "Tahmini Giriş Gecikmesi"
+  },
+  "lighthouse-core/audits/metrics/first-contentful-paint.js | description": {
+    "message": "İlk Zengin İçerikli Boyama, ilk metnin veya resmin boyandığı zamanı işaret eder. [Daha fazla bilgi](https://developers.google.com/web/tools/lighthouse/audits/first-contentful-paint)."
+  },
+  "lighthouse-core/audits/metrics/first-contentful-paint.js | title": {
+    "message": "İlk Zengin İçerikli Boya"
+  },
+  "lighthouse-core/audits/metrics/first-cpu-idle.js | description": {
+    "message": "İlk CPU Boşta metriği, sayfanın ana iş parçacığının girişi işlemek için yeterli olduğu ilk anı işaret eder. [Daha fazla bilgi](https://developers.google.com/web/tools/lighthouse/audits/first-interactive)."
+  },
+  "lighthouse-core/audits/metrics/first-cpu-idle.js | title": {
+    "message": "İlk CPU Boşta"
+  },
+  "lighthouse-core/audits/metrics/first-meaningful-paint.js | description": {
+    "message": "İlk Anlamlı Boyama, bir sayfanın ana içeriğinin ne zaman görünür hale geldiğini ölçer. [Daha fazla bilgi](https://developers.google.com/web/tools/lighthouse/audits/first-meaningful-paint)."
+  },
+  "lighthouse-core/audits/metrics/first-meaningful-paint.js | title": {
+    "message": "İlk Anlamlı Boya"
+  },
+  "lighthouse-core/audits/metrics/interactive.js | description": {
+    "message": "Etkileşime hazır olma süresi, sayfanın tamamen etkileşime hazır hale gelmesi için geçmesi gereken süreyi ifade eder. [Daha fazla bilgi](https://developers.google.com/web/tools/lighthouse/audits/consistently-interactive)."
+  },
+  "lighthouse-core/audits/metrics/interactive.js | title": {
+    "message": "Etkileşim Süresi"
+  },
+  "lighthouse-core/audits/metrics/max-potential-fid.js | description": {
+    "message": "Kullanıcılarınızın karşılaşabileceği olası maksimum İlk Giriş Gecikmesi, en uzun görevin milisaniye cinsinden süresidir. [Daha fazla bilgi](https://developers.google.com/web/updates/2018/05/first-input-delay)."
+  },
+  "lighthouse-core/audits/metrics/max-potential-fid.js | title": {
+    "message": "Maksimum Olası İlk Giriş Gecikmesi"
+  },
+  "lighthouse-core/audits/metrics/speed-index.js | description": {
+    "message": "Hız Endeksi, bir sayfa içeriğinin görsel olarak ne kadar hızlı doldurulabildiğini gösterir. [Daha fazla bilgi](https://developers.google.com/web/tools/lighthouse/audits/speed-index)."
+  },
+  "lighthouse-core/audits/metrics/speed-index.js | title": {
+    "message": "Hız İndeksi"
+  },
+  "lighthouse-core/audits/metrics/total-blocking-time.js | description": {
+    "message": "Görev süresi 50 ms.yi aştığında, FCP ile Etkileşime Hazır Olma Süresi arasındaki tüm dönemlerin milisaniye cinsinden toplamı."
+  },
+  "lighthouse-core/audits/metrics/total-blocking-time.js | title": {
+    "message": "Toplam Engellenme Süresi"
+  },
+  "lighthouse-core/audits/network-rtt.js | description": {
+    "message": "Ağ gidiş dönüş sürelerinin (RTT) performans üzerinde büyük bir etkisi vardır. Kaynağa RTT'nin fazla olması, kullanıcıya daha yakın olan sunucuların performansı iyileştirebileceğinin göstergesidir. [Daha fazla bilgi](https://hpbn.co/primer-on-latency-and-bandwidth/)."
+  },
+  "lighthouse-core/audits/network-rtt.js | title": {
+    "message": "Ağ Gidiş Dönüş Süreleri"
+  },
+  "lighthouse-core/audits/network-server-latency.js | description": {
+    "message": "Sunucudan kaynaklanan gecikmeler web performansını etkileyebilir. Bir kaynakta sunucu gecikmesinin fazla olması, sunucunun aşırı yüklendiğinin veya arka uç performansının kötü olduğunun göstergesidir. [Daha fazla bilgi](https://hpbn.co/primer-on-web-performance/#analyzing-the-resource-waterfall)."
+  },
+  "lighthouse-core/audits/network-server-latency.js | title": {
+    "message": "Sunucunun Arka Uç Gecikmeleri"
+  },
+  "lighthouse-core/audits/offline-start-url.js | description": {
+    "message": "Hizmet çalışanı web uygulamanızın öngörülemeyen ağ koşullarında güvenilir olmasını sağlar. [Daha fazla bilgi](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)."
+  },
+  "lighthouse-core/audits/offline-start-url.js | failureTitle": {
+    "message": "`start_url` çevrimdışıyken 200 koduyla yanıt vermiyor"
+  },
+  "lighthouse-core/audits/offline-start-url.js | title": {
+    "message": "`start_url` çevrimdışıyken 200 koduyla yanıt veriyor"
+  },
+  "lighthouse-core/audits/offline-start-url.js | warningCantStart": {
+    "message": "Lighthouse, manifest dosyasından `start_url` öğesini okuyamadı. Bu yüzden `start_url` dokümanın URL'si olarak kabul edildi. Hata mesajı: \"{manifestWarning}\"."
+  },
+  "lighthouse-core/audits/performance-budget.js | columnOverBudget": {
+    "message": "Bütçe Aşımı"
+  },
+  "lighthouse-core/audits/performance-budget.js | description": {
+    "message": "Ağ isteklerinin miktarını ve büyüklüğünü, performans bütçesi tarafından belirlenen hedeflerin altında tutun. [Daha fazla bilgi](https://developers.google.com/web/tools/lighthouse/audits/budgets)."
+  },
+  "lighthouse-core/audits/performance-budget.js | requestCountOverBudget": {
+    "message": "{count,plural, =1{1 istek}other{# istek}}"
+  },
+  "lighthouse-core/audits/performance-budget.js | title": {
+    "message": "Performans bütçesi"
+  },
+  "lighthouse-core/audits/redirects-http.js | description": {
+    "message": "Zaten HTTPS kurduysanız kullanıcılarınıza güvenli web özellikleri sağlayabilmek için tüm HTTP trafiğini HTTPS'ye yönlendirdiğinizden emin olun. [Daha fazla bilgi](https://developers.google.com/web/tools/lighthouse/audits/http-redirects-to-https)."
+  },
+  "lighthouse-core/audits/redirects-http.js | failureTitle": {
+    "message": "HTTP trafiğini HTTPS'ye yönlendirmiyor"
+  },
+  "lighthouse-core/audits/redirects-http.js | title": {
+    "message": "HTTP trafiğini HTTPS'ye yönlendiriyor"
+  },
+  "lighthouse-core/audits/redirects.js | description": {
+    "message": "Yönlendirmeler, sayfanın yüklenmesinden önce ek gecikmelere neden olur. [Daha fazla bilgi](https://developers.google.com/web/tools/lighthouse/audits/redirects)."
+  },
+  "lighthouse-core/audits/redirects.js | title": {
+    "message": "Birden çok sayfa yönlendirmesini önleyin"
+  },
+  "lighthouse-core/audits/resource-summary.js | description": {
+    "message": "Sayfa kaynaklarının miktarı ve büyüklüğü için bütçeler belirlemek üzere bir budget.json dosyası ekleyin. [Daha fazla bilgi](https://developers.google.com/web/tools/lighthouse/audits/budgets)."
+  },
+  "lighthouse-core/audits/resource-summary.js | displayValue": {
+    "message": "{requestCount,plural, =1{1 istek • {byteCount, number, bytes} KB}other{# istek • {byteCount, number, bytes} KB}}"
+  },
+  "lighthouse-core/audits/resource-summary.js | title": {
+    "message": "İstek sayısını az ve aktarma boyutlarını küçük tutun"
+  },
+  "lighthouse-core/audits/seo/canonical.js | description": {
+    "message": "Standart bağlantılar, arama sonuçlarında hangi URL'nin gösterileceğini belirtir. [Daha fazla bilgi](https://web.dev/canonical)."
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationConflict": {
+    "message": "Birden fazla çakışan URL ({urlList})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationDifferentDomain": {
+    "message": "Farklı bir alan adına yönlendiriyor ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationInvalid": {
+    "message": "Geçersiz URL ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationPointsElsewhere": {
+    "message": "Başka bir `hreflang` konumuna ({url}) yönlendiriyor"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationRelative": {
+    "message": "Göreli URL ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationRoot": {
+    "message": "İçeriğe eşdeğer bir sayfanın yerine alan adının kök URL'sine (ana sayfa) yönlendiriyor"
+  },
+  "lighthouse-core/audits/seo/canonical.js | failureTitle": {
+    "message": "Doküman geçerli bir `rel=canonical` değeri içermiyor"
+  },
+  "lighthouse-core/audits/seo/canonical.js | title": {
+    "message": "Doküman geçerli bir `rel=canonical` öğesi içeriyor"
+  },
+  "lighthouse-core/audits/seo/font-size.js | description": {
+    "message": "12 pikselden küçük yazı tipi boyutları okunamayacak kadar küçüktür ve mobil cihaz kullanıcılarının içeriği okuyabilmek için parmaklarıyla sıkıştırma hareketi yaparak yakınlaştırmalarını gerektirir. Sayfanın %60'ından fazlasının en az 12 piksel boyutunda olmasını sağlamaya çalışın. [Daha fazla bilgi](https://web.dev/font-size)."
+  },
+  "lighthouse-core/audits/seo/font-size.js | displayValue": {
+    "message": "{decimalProportion, number, extendedPercent} kadar okunabilir metin"
+  },
+  "lighthouse-core/audits/seo/font-size.js | explanationViewport": {
+    "message": "Mobil ekranlar için optimize edilmiş görüntü alanı meta etiketi olmadığından metin okunaklı değil."
+  },
+  "lighthouse-core/audits/seo/font-size.js | explanationWithDisclaimer": {
+    "message": "Metnin {decimalProportion, number, extendedPercent} kadarı çok küçük ({decimalProportionVisited, number, extendedPercent} örneği baz alınarak)."
+  },
+  "lighthouse-core/audits/seo/font-size.js | failureTitle": {
+    "message": "Dokümanda okunabilir yazı tipi boyutları kullanılmıyor"
+  },
+  "lighthouse-core/audits/seo/font-size.js | title": {
+    "message": "Dokümanda okunabilir yazı tipi boyutları kullanılıyor"
+  },
+  "lighthouse-core/audits/seo/hreflang.js | description": {
+    "message": "hreflang bağlantıları, arama motorlarına, belirli bir dildeki veya bölgedeki arama sonuçlarında bir sayfanın hangi sürümünün listeleneceğini bildirir. [Daha fazla bilgi](https://web.dev/hreflang)."
+  },
+  "lighthouse-core/audits/seo/hreflang.js | failureTitle": {
+    "message": "Doküman geçerli bir `hreflang` öğesi içermiyor"
+  },
+  "lighthouse-core/audits/seo/hreflang.js | title": {
+    "message": "Doküman geçerli bir `hreflang` öğesi içeriyor"
+  },
+  "lighthouse-core/audits/seo/http-status-code.js | description": {
+    "message": "Başarısız HTTP durum kodlarına sahip olan sayfalar düzgün bir şekilde dizine eklenmeyebilir. [Daha fazla bilgi](https://web.dev/http-status-code)."
+  },
+  "lighthouse-core/audits/seo/http-status-code.js | failureTitle": {
+    "message": "Sayfa başarısız bir HTTP durum koduna sahip"
+  },
+  "lighthouse-core/audits/seo/http-status-code.js | title": {
+    "message": "Sayfa başarılı bir HTTP durum koduna sahip"
+  },
+  "lighthouse-core/audits/seo/is-crawlable.js | description": {
+    "message": "Sayfalarınız, tarama iznine sahip olmayan arama motorları tarafından arama sonuçlarına eklenemez. [Daha fazla bilgi](https://web.dev/is-crawable)."
+  },
+  "lighthouse-core/audits/seo/is-crawlable.js | failureTitle": {
+    "message": "Sayfanın dizine eklenmesi engellenmiş"
+  },
+  "lighthouse-core/audits/seo/is-crawlable.js | title": {
+    "message": "Sayfanın dizine eklenmesi engellenmemiş"
+  },
+  "lighthouse-core/audits/seo/link-text.js | description": {
+    "message": "Açıklayıcı bağlantı metni, arama motorlarının içeriğinizi anlamasına yardımcı olur. [Daha fazla bilgi](https://web.dev/link-text)."
+  },
+  "lighthouse-core/audits/seo/link-text.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 bağlantı bulundu}other{# bağlantı bulundu}}"
+  },
+  "lighthouse-core/audits/seo/link-text.js | failureTitle": {
+    "message": "Bağlantılar açıklayıcı metin içermiyor"
+  },
+  "lighthouse-core/audits/seo/link-text.js | title": {
+    "message": "Bağlantılar açıklayıcı metin içeriyor"
+  },
+  "lighthouse-core/audits/seo/manual/structured-data.js | description": {
+    "message": "Yapılandırılmış verileri doğrulamak için [Yapılandırılmış Veri Test Aracı](https://search.google.com/structured-data/testing-tool/)'nı ve [Structured Data Linter](http://linter.structured-data.org/)'ı çalıştırın. [Daha fazla bilgi](https://web.dev/structured-data)."
+  },
+  "lighthouse-core/audits/seo/manual/structured-data.js | title": {
+    "message": "Yapılandırılmış veriler geçerli"
+  },
+  "lighthouse-core/audits/seo/meta-description.js | description": {
+    "message": "Sayfa içeriğini kısa ve öz bir şekilde özetlemek amacıyla arama sonuçlarına meta tanımlar eklenebilir. [Daha fazla bilgi](https://web.dev/meta-description)."
+  },
+  "lighthouse-core/audits/seo/meta-description.js | explanation": {
+    "message": "Açıklama metni boş."
+  },
+  "lighthouse-core/audits/seo/meta-description.js | failureTitle": {
+    "message": "Doküman meta tanım içermiyor"
+  },
+  "lighthouse-core/audits/seo/meta-description.js | title": {
+    "message": "Doküman meta tanım içeriyor"
+  },
+  "lighthouse-core/audits/seo/plugins.js | description": {
+    "message": "Arama motorları eklenti içeriğini dizine ekleyemez. Ayrıca birçok cihaz eklentileri kısıtlar veya desteklemez. [Daha fazla bilgi](https://web.dev/plugins)."
+  },
+  "lighthouse-core/audits/seo/plugins.js | failureTitle": {
+    "message": "Doküman, eklenti kullanıyor"
+  },
+  "lighthouse-core/audits/seo/plugins.js | title": {
+    "message": "Doküman eklenti içermiyor"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | description": {
+    "message": "robots.txt dosyanız yanlış biçimlendirilmişse, tarayıcılar web sitenizin nasıl taranmasını veya dizine eklenmesini istediğinizi anlayamayabilir. [Daha fazla bilgi](https://web.dev/robots-txt)."
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | displayValueHttpBadCode": {
+    "message": "Robots.txt isteği şu HTTP durumunu döndürdü: {statusCode}"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | displayValueValidationError": {
+    "message": "{itemCount,plural, =1{1 hata bulundu}other{# hata bulundu}}"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | explanation": {
+    "message": "Lighthouse bir robots.txt dosyasını indiremedi"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | failureTitle": {
+    "message": "robots.txt dosyası geçerli değil"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | title": {
+    "message": "robots.txt dosyası geçerli"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | description": {
+    "message": "Düğmeler ve bağlantılar gibi etkileşimli öğelerin, başka öğelerle üst üste binmeden rahatlıkla dokunulabilecek kadar büyük olması (48x48 piksel) ve etrafında yeterli boşluk bulunması gerekir. [Daha fazla bilgi](https://web.dev/tap-targets)."
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | displayValue": {
+    "message": "Dokunma hedeflerinin {decimalProportion, number, percent} kadarı uygun boyutta"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | explanationViewportMetaNotOptimized": {
+    "message": "Mobil ekranlar için optimize edilmiş görüntü alanı meta etiketi olmadığından dokunma hedefleri çok küçük"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | failureTitle": {
+    "message": "Dokunma hedefleri uygun boyutta değil"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | overlappingTargetHeader": {
+    "message": "Çakışan Hedef"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | tapTargetHeader": {
+    "message": "Dokunma Hedefi"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | title": {
+    "message": "Dokunma hedefleri uygun boyutta"
+  },
+  "lighthouse-core/audits/service-worker.js | description": {
+    "message": "Servis çalışanı, uygulamanızın çevrimdışı çalışma, ana ekrana ekleme ve push bildirimleri gibi pek çok Progresif Web Uygulaması özelliğini kullanmasını sağlayan teknolojidir. [Daha fazla bilgi](https://developers.google.com/web/tools/lighthouse/audits/registered-service-worker)."
+  },
+  "lighthouse-core/audits/service-worker.js | explanationBadManifest": {
+    "message": "Sayfa bir hizmet çalışanı tarafından kontrol ediliyor ancak manifest dosyası geçerli JSON olarak ayrışmadığından `start_url` bulunamadı"
+  },
+  "lighthouse-core/audits/service-worker.js | explanationBadStartUrl": {
+    "message": "Sayfa bir hizmet çalışanı tarafından kontrol ediliyor ancak `start_url` ({startUrl}) öğesi hizmet çalışanının kapsamında ({scopeUrl}) değil"
+  },
+  "lighthouse-core/audits/service-worker.js | explanationNoManifest": {
+    "message": "Bu sayfa bir hizmet çalışanı tarafından yönetiliyor ancak manifest dosyası getirilmediğinden `start_url` öğesi bulunamadı."
+  },
+  "lighthouse-core/audits/service-worker.js | explanationOutOfScope": {
+    "message": "Bu kaynak bir veya daha fazla hizmet çalışanına sahip ancak sayfa ({pageUrl}) kapsam içinde değil."
+  },
+  "lighthouse-core/audits/service-worker.js | failureTitle": {
+    "message": "Sayfayı kontrol eden bir hizmet çalışanı ve `start_url` öğesi kaydedilmiyor"
+  },
+  "lighthouse-core/audits/service-worker.js | title": {
+    "message": "Sayfayı kontrol eden bir hizmet çalışanı ve `start_url` öğesi kaydediliyor"
+  },
+  "lighthouse-core/audits/splash-screen.js | description": {
+    "message": "Temalı başlangıç ekranı, kullanıcılar uygulamanızı ana ekranlarında başlattığında yüksek kaliteli bir deneyim sağlar. [Daha fazla bilgi](https://developers.google.com/web/tools/lighthouse/audits/custom-splash-screen)."
+  },
+  "lighthouse-core/audits/splash-screen.js | failureTitle": {
+    "message": "Özel başlangıç ekranı için yapılandırılmadı"
+  },
+  "lighthouse-core/audits/splash-screen.js | title": {
+    "message": "Özel başlangıç ekranı için yapılandırıldı"
+  },
+  "lighthouse-core/audits/themed-omnibox.js | description": {
+    "message": "Sitenizle eşleşmesi için tarayıcı adres çubuğu temalı yapılabilir. [Daha fazla bilgi](https://developers.google.com/web/tools/lighthouse/audits/address-bar)."
+  },
+  "lighthouse-core/audits/themed-omnibox.js | failureTitle": {
+    "message": "Adres çubuğu için tema rengi ayarlamıyor."
+  },
+  "lighthouse-core/audits/themed-omnibox.js | title": {
+    "message": "Adres çubuğu için tema rengi ayarlar."
+  },
+  "lighthouse-core/audits/third-party-summary.js | columnBlockingTime": {
+    "message": "Ana İleti Dizisi Engelleme Süresi"
+  },
+  "lighthouse-core/audits/third-party-summary.js | columnThirdParty": {
+    "message": "Üçüncü Taraf"
+  },
+  "lighthouse-core/audits/third-party-summary.js | description": {
+    "message": "Üçüncü taraf kodu, yükleme performansını önemli ölçüde etkileyebilir. Yedekli üçüncü taraf sağlayıcıların sayısını sınırlayın ve öncelikle sayfanızın yüklenmesi tamamlandıktan sonra üçüncü taraf kodunu yükleyin. [Daha fazla bilgi](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/loading-third-party-javascript/)."
+  },
+  "lighthouse-core/audits/third-party-summary.js | displayValue": {
+    "message": "Üçüncü taraf kodu, ana ileti dizisini {timeInMs, number, milliseconds} ms. süreyle engelledi"
+  },
+  "lighthouse-core/audits/third-party-summary.js | failureTitle": {
+    "message": "Üçüncü taraf kodun etkisini azaltın"
+  },
+  "lighthouse-core/audits/third-party-summary.js | title": {
+    "message": "Üçüncü Taraf Kullanımı"
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | description": {
+    "message": "İlk Bayt Zamanı, sunucunuzun yanıt gönderme zamanını tanımlar. [Daha fazla bilgi](https://developers.google.com/web/tools/lighthouse/audits/ttfb)."
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | displayValue": {
+    "message": "Root doküman {timeInMs, number, milliseconds} ms. sürdü"
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | failureTitle": {
+    "message": "Sunucu yanıt sürelerini kısaltın (TTFB)"
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | title": {
+    "message": "Sunucu yanıt süreleri düşük (TTFB)"
+  },
+  "lighthouse-core/audits/user-timings.js | columnDuration": {
+    "message": "Süre"
+  },
+  "lighthouse-core/audits/user-timings.js | columnStartTime": {
+    "message": "Başlangıç Zamanı"
+  },
+  "lighthouse-core/audits/user-timings.js | columnType": {
+    "message": "Tür"
+  },
+  "lighthouse-core/audits/user-timings.js | description": {
+    "message": "Önemli kullanıcı deneyimleri esnasında uygulamanızın gerçek dünya performansını ölçmek için uygulamanıza User Timing API'si ekleme seçeneğini değerlendirin. [Daha fazla bilgi](https://developers.google.com/web/tools/lighthouse/audits/user-timing)."
+  },
+  "lighthouse-core/audits/user-timings.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 kullanıcı zamanlaması}other{# kullanıcı zamanlaması}}"
+  },
+  "lighthouse-core/audits/user-timings.js | title": {
+    "message": "Kullanıcı Zamanlaması işaretleri ve ölçüleri"
+  },
+  "lighthouse-core/audits/uses-rel-preconnect.js | crossoriginWarning": {
+    "message": "\"{securityOrigin}\" için bir önceden bağlanma <link> öğesi bulundu ancak tarayıcı tarafından kullanılmadı. `crossorigin` özelliğini gerektiği gibi kullandığınızdan emin olun."
+  },
+  "lighthouse-core/audits/uses-rel-preconnect.js | description": {
+    "message": "Önemli üçüncü taraf kaynaklarına erken bağlantılar oluşturmak için `preconnect` veya `dns-prefetch` kaynak ipuçları ekleme seçeneğini değerlendirin. [Daha fazla bilgi](https://developers.google.com/web/fundamentals/performance/resource-prioritization#preconnect)."
+  },
+  "lighthouse-core/audits/uses-rel-preconnect.js | title": {
+    "message": "Gerekli kaynaklara önceden bağlan"
+  },
+  "lighthouse-core/audits/uses-rel-preload.js | crossoriginWarning": {
+    "message": "\"{preloadURL}\" için bir önceden yükleme <link> bulundu ancak tarayıcı tarafından kullanılmadı. `crossorigin` özelliğini gerektiği gibi kullandığınızdan emin olun."
+  },
+  "lighthouse-core/audits/uses-rel-preload.js | description": {
+    "message": "Mevcut durumda sayfa yüklemesinden sonra istenen kaynakları daha önce getirmek için `<link rel=preload>` kullanmayı düşünün. [Daha fazla bilgi](https://developers.google.com/web/tools/lighthouse/audits/preload)."
+  },
+  "lighthouse-core/audits/uses-rel-preload.js | title": {
+    "message": "Önemli istekleri önceden yükleyin"
+  },
+  "lighthouse-core/audits/viewport.js | description": {
+    "message": "Uygulamanızı mobil ekranlar için optimize etmek üzere `<meta name=\"viewport\">` etiketi ekleyin. [Daha fazla bilgi](https://developers.google.com/web/tools/lighthouse/audits/has-viewport-meta-tag)."
+  },
+  "lighthouse-core/audits/viewport.js | explanationNoTag": {
+    "message": "`<meta name=\"viewport\">` etiketi bulunamadı"
+  },
+  "lighthouse-core/audits/viewport.js | failureTitle": {
+    "message": "`width` veya `initial-scale` değerleri olan bir `<meta name=\"viewport\">` etiketi yok"
+  },
+  "lighthouse-core/audits/viewport.js | title": {
+    "message": "`width` veya `initial-scale` değerleri olan bir `<meta name=\"viewport\">` etiketi var"
+  },
+  "lighthouse-core/audits/without-javascript.js | description": {
+    "message": "Uygulamanız, JavaScript devre dışı bırakıldığında bazı içerikler görüntülemelidir. Bu içerik, kullanıcıya uygulamayı kullanmak için JavaScript gerektiğini belirten bir uyarı bile olabilir. [Daha fazla bilgi](https://developers.google.com/web/tools/lighthouse/audits/no-js)."
+  },
+  "lighthouse-core/audits/without-javascript.js | explanation": {
+    "message": "Komut dosyaları kullanılamıyorsa sayfa gövdesi bazı içerikler oluşturmalıdır."
+  },
+  "lighthouse-core/audits/without-javascript.js | failureTitle": {
+    "message": "JavaScript kullanılamadığında ikame içerik sağlamıyor"
+  },
+  "lighthouse-core/audits/without-javascript.js | title": {
+    "message": "JavaScript kullanılamadığında bazı içerikler bulundurur"
+  },
+  "lighthouse-core/audits/works-offline.js | description": {
+    "message": "Progresif Web Uygulaması oluşturuyorsanız uygulamanızın çevrimdışı da çalışabilmesi için hizmet çalışanı kullanmayı düşünün. [Daha fazla bilgi](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)."
+  },
+  "lighthouse-core/audits/works-offline.js | failureTitle": {
+    "message": "Geçerli sayfa çevrimdışıyken 200 koduyla yanıt vermiyor"
+  },
+  "lighthouse-core/audits/works-offline.js | title": {
+    "message": "Geçerli sayfa çevrimdışıyken 200 koduyla yanıt veriyor"
+  },
+  "lighthouse-core/audits/works-offline.js | warningNoLoad": {
+    "message": "Sayfa, test URL'niz ({requested}) \"{final}\" adresine yönlendirildiğinden çevrimdışı yüklenmiyor olabilir. Doğrudan ikinci URL'yi test etmeyi deneyin."
+  },
+  "lighthouse-core/config/default-config.js | a11yAriaGroupDescription": {
+    "message": "Bu fırsatlar, uygulamanızda ARIA kullanımının iyileştirilmesine olanak tanır. Bu da ekran okuyucu gibi yardımcı teknolojilerin kullanıcılarına daha iyi bir deneyim sunulmasını sağlayabilir."
+  },
+  "lighthouse-core/config/default-config.js | a11yAriaGroupTitle": {
+    "message": "ARIA"
+  },
+  "lighthouse-core/config/default-config.js | a11yAudioVideoGroupDescription": {
+    "message": "Bu fırsatlar, alternatif ses ve video içerikleri sağlanmasına olanak tanır. Bu durum, işitme veya görme bozukluğu olan kullanıcıların daha iyi bir deneyim yaşamalarını sağlayabilir."
+  },
+  "lighthouse-core/config/default-config.js | a11yAudioVideoGroupTitle": {
+    "message": "Ses ve video"
+  },
+  "lighthouse-core/config/default-config.js | a11yBestPracticesGroupDescription": {
+    "message": "Bu öğeler, erişilebilirlikle ilgili yaygın en iyi uygulamaları öne çıkarır."
+  },
+  "lighthouse-core/config/default-config.js | a11yBestPracticesGroupTitle": {
+    "message": "En iyi uygulamalar"
+  },
+  "lighthouse-core/config/default-config.js | a11yCategoryDescription": {
+    "message": "Bu kontroller, [web uygulamanızın erişilebilirliğini iyileştirme](https://developers.google.com/web/fundamentals/accessibility) fırsatlarını ön plana çıkarır. Erişilebilirlik sorunlarının yalnızca bir alt kümesi otomatik olarak algılanabildiğinden manuel test yapılması da önerilir."
+  },
+  "lighthouse-core/config/default-config.js | a11yCategoryManualDescription": {
+    "message": "Bu öğeler, otomatik test aracının kapsamında yer almayan alanları ele alır. [Erişilebilirlik incelemesi gerçekleştirme](https://developers.google.com/web/fundamentals/accessibility/how-to-review) hakkında daha fazla bilgiyi rehberimizde bulabilirsiniz."
+  },
+  "lighthouse-core/config/default-config.js | a11yCategoryTitle": {
+    "message": "Erişilebilirlik"
+  },
+  "lighthouse-core/config/default-config.js | a11yColorContrastGroupDescription": {
+    "message": "Bu fırsatlar, içeriğinizin daha rahat okunmasına olanak tanır."
+  },
+  "lighthouse-core/config/default-config.js | a11yColorContrastGroupTitle": {
+    "message": "Kontrast"
+  },
+  "lighthouse-core/config/default-config.js | a11yLanguageGroupDescription": {
+    "message": "Bu fırsatlar, içeriğinizin farklı ülkelerdeki kullanıcılar tarafından daha iyi yorumlanmasına olanak tanır."
+  },
+  "lighthouse-core/config/default-config.js | a11yLanguageGroupTitle": {
+    "message": "Uluslararası hale getirme ve yerelleştirme"
+  },
+  "lighthouse-core/config/default-config.js | a11yNamesLabelsGroupDescription": {
+    "message": "Bu fırsatlar, uygulamanızdaki kontrollerin anlamının iyileştirilmesine olanak tanır. Bu durum, ekran okuyucu gibi yardımcı teknolojilerin kullanıcılarına daha iyi bir deneyim sunulmasını sağlayabilir."
+  },
+  "lighthouse-core/config/default-config.js | a11yNamesLabelsGroupTitle": {
+    "message": "Adlar ve etiketler"
+  },
+  "lighthouse-core/config/default-config.js | a11yNavigationGroupDescription": {
+    "message": "Bu fırsatlar, uygulamanızda klavyeyle gezinmeyi kolaylaştırır."
+  },
+  "lighthouse-core/config/default-config.js | a11yNavigationGroupTitle": {
+    "message": "Gezinme"
+  },
+  "lighthouse-core/config/default-config.js | a11yTablesListsVideoGroupDescription": {
+    "message": "Bu fırsatlar, tablo veya liste halindeki verilerin ekran okuyucu gibi yardımcı teknolojiler kullanılarak daha rahat okunmasına olanak tanır."
+  },
+  "lighthouse-core/config/default-config.js | a11yTablesListsVideoGroupTitle": {
+    "message": "Tablolar ve listeler"
+  },
+  "lighthouse-core/config/default-config.js | bestPracticesCategoryTitle": {
+    "message": "En İyi Uygulamalar"
+  },
+  "lighthouse-core/config/default-config.js | budgetsGroupDescription": {
+    "message": "Performans bütçeleri, sitenizin performansı için standartları belirler."
+  },
+  "lighthouse-core/config/default-config.js | budgetsGroupTitle": {
+    "message": "Bütçeler"
+  },
+  "lighthouse-core/config/default-config.js | diagnosticsGroupDescription": {
+    "message": "Uygulamanızın performansı hakkında daha fazla bilgi. Bu sayılar Performan skoruna [doğrudan etki](https://github.com/GoogleChrome/lighthouse/blob/d2ec9ffbb21de9ad1a0f86ed24575eda32c796f0/docs/scoring.md#how-are-the-scores-weighted) etmezler."
+  },
+  "lighthouse-core/config/default-config.js | diagnosticsGroupTitle": {
+    "message": "Teşhis"
+  },
+  "lighthouse-core/config/default-config.js | firstPaintImprovementsGroupDescription": {
+    "message": "Performansın en kritik unsuru, piksellerin ekranda oluşturulma hızıdır. Önemli metrikler: İlk Zengin İçerikli Boya, İlk Anlamlı Boya"
+  },
+  "lighthouse-core/config/default-config.js | firstPaintImprovementsGroupTitle": {
+    "message": "İlk Boya İyileştirmeleri"
+  },
+  "lighthouse-core/config/default-config.js | loadOpportunitiesGroupDescription": {
+    "message": "Bu öneriler, sayfanızın daha hızlı yüklenmesine yardımcı olabilir. Performan skoruna [doğrudan etki](https://github.com/GoogleChrome/lighthouse/blob/d2ec9ffbb21de9ad1a0f86ed24575eda32c796f0/docs/scoring.md#how-are-the-scores-weighted) etmezler."
+  },
+  "lighthouse-core/config/default-config.js | loadOpportunitiesGroupTitle": {
+    "message": "Fırsatlar"
+  },
+  "lighthouse-core/config/default-config.js | metricGroupTitle": {
+    "message": "Metrikler"
+  },
+  "lighthouse-core/config/default-config.js | overallImprovementsGroupDescription": {
+    "message": "Toplam yükleme deneyimini geliştirerek sayfanın mümkün olan en kısa sürede duyarlı ve kullanıma hazır olmasını sağlayın. Önemli metrikler: Etkileşim Süresi, Hız İndeksi"
+  },
+  "lighthouse-core/config/default-config.js | overallImprovementsGroupTitle": {
+    "message": "Toplam İyileştirmeler"
+  },
+  "lighthouse-core/config/default-config.js | performanceCategoryTitle": {
+    "message": "Performans"
+  },
+  "lighthouse-core/config/default-config.js | pwaCategoryDescription": {
+    "message": "Bu denetimler, bir Progresif Web Uygulamasının çeşitli yönlerini doğrular. [Daha fazla bilgi](https://developers.google.com/web/progressive-web-apps/checklist)."
+  },
+  "lighthouse-core/config/default-config.js | pwaCategoryManualDescription": {
+    "message": "Temel [Progresif Web Uygulaması Yapılacaklar Listesi](https://developers.google.com/web/progressive-web-apps/checklist) tarafından zorunlu tutulan bu denetimler, Lighthouse tarafından otomatik olarak kontrol edilmez. Bunlar skorunuzu etkilemez ancak manuel olarak doğrulamanız önemlidir."
+  },
+  "lighthouse-core/config/default-config.js | pwaCategoryTitle": {
+    "message": "Progresif Web Uygulaması"
+  },
+  "lighthouse-core/config/default-config.js | pwaFastReliableGroupTitle": {
+    "message": "Hızlı ve güvenilir"
+  },
+  "lighthouse-core/config/default-config.js | pwaInstallableGroupTitle": {
+    "message": "Yüklenebilir"
+  },
+  "lighthouse-core/config/default-config.js | pwaOptimizedGroupTitle": {
+    "message": "Optimize Edilmiş PWA (Progresif Web Uygulaması)"
+  },
+  "lighthouse-core/config/default-config.js | seoCategoryDescription": {
+    "message": "Bu kontroller, sayfanızın arama motoru sonuç sıralaması için optimize edilmesini sağlar. Lighthouse tarafından kontrol edilmeyen, ancak aramadaki sıralamanızı etkileyebilecek başka faktörler de vardır. [Daha fazla bilgi](https://support.google.com/webmasters/answer/35769)."
+  },
+  "lighthouse-core/config/default-config.js | seoCategoryManualDescription": {
+    "message": "SEO ile ilgili diğer en iyi uygulamaları kontrol etmek için sitenizde bu ek doğrulayıcıları çalıştırın."
+  },
+  "lighthouse-core/config/default-config.js | seoCategoryTitle": {
+    "message": "SEO"
+  },
+  "lighthouse-core/config/default-config.js | seoContentGroupDescription": {
+    "message": "Tarayıcıların uygulamanızın içeriğini daha iyi anlamasını sağlayacak şekilde HTML kodunuzu biçimlendirin."
+  },
+  "lighthouse-core/config/default-config.js | seoContentGroupTitle": {
+    "message": "İçerik En İyi Uygulamaları"
+  },
+  "lighthouse-core/config/default-config.js | seoCrawlingGroupDescription": {
+    "message": "Uygulamanızın arama sonuçlarında görünmesi için, tarayıcıların uygulamanıza erişmesi gerekir."
+  },
+  "lighthouse-core/config/default-config.js | seoCrawlingGroupTitle": {
+    "message": "Tarama ve Dizine Ekleme"
+  },
+  "lighthouse-core/config/default-config.js | seoMobileGroupDescription": {
+    "message": "Kullanıcıların küçültme veya yakınlaştırma hareketi yapmadan sayfadaki içerikleri okuyabilmelerini sağlamak için sayfalarınızın mobil uyumlu olduğundan emin olun. [Daha fazla bilgi](https://developers.google.com/search/mobile-sites/)."
+  },
+  "lighthouse-core/config/default-config.js | seoMobileGroupTitle": {
+    "message": "Mobil Uyumlu"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnCacheTTL": {
+    "message": "TTL'yi Önbelleğe Alma"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnLocation": {
+    "message": "Konum"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnName": {
+    "message": "Ad"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnRequests": {
+    "message": "İstek Sayısı"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnResourceType": {
+    "message": "Kaynak Türü"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnSize": {
+    "message": "Boyut"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnTimeSpent": {
+    "message": "Harcanan Süre"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnTransferSize": {
+    "message": "Aktarım Boyutu"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnURL": {
+    "message": "URL"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnWastedBytes": {
+    "message": "Potansiyel Tasarruflar"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnWastedMs": {
+    "message": "Potansiyel Tasarruflar"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | displayValueByteSavings": {
+    "message": "{wastedBytes, number, bytes} KB potansiyel tasarruf"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | displayValueMsSavings": {
+    "message": "{wastedMs, number, milliseconds} ms. potansiyel tasarruf"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | documentResourceType": {
+    "message": "Doküman"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | fontResourceType": {
+    "message": "Yazı tipi"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | imageResourceType": {
+    "message": "Resim"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | mediaResourceType": {
+    "message": "Medya"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | ms": {
+    "message": "{timeInMs, number, milliseconds} ms."
+  },
+  "lighthouse-core/lib/i18n/i18n.js | otherResourceType": {
+    "message": "Diğer"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | scriptResourceType": {
+    "message": "Komut dosyası"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | seconds": {
+    "message": "{timeInMs, number, seconds} sn."
+  },
+  "lighthouse-core/lib/i18n/i18n.js | stylesheetResourceType": {
+    "message": "Stil Sayfası"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | thirdPartyResourceType": {
+    "message": "Üçüncü taraf"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | totalResourceType": {
+    "message": "Toplam"
+  },
+  "lighthouse-core/lib/lh-error.js | badTraceRecording": {
+    "message": "Sayfa yüklemenizin izlemesi kaydedilirken bir sorun oluştu. Lütfen Lighthouse'u tekrar çalıştırın. ({errorCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | criTimeout": {
+    "message": "İlk Hata Ayıklayıcı Protokolü bağlantısı beklenirken zaman aşımı oluştu."
+  },
+  "lighthouse-core/lib/lh-error.js | didntCollectScreenshots": {
+    "message": "Chrome, sayfa yükleme sırasında ekran görüntüsü toplayamadı. Lütfen sayfada görülebilir içerik olduğundan emin olun ve sonra Lighthouse'u tekrar çalıştırmayı deneyin. ({errorCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | dnsFailure": {
+    "message": "DNS sunucuları sağlanan alan adını çözümleyemedi."
+  },
+  "lighthouse-core/lib/lh-error.js | erroredRequiredArtifact": {
+    "message": "Zorunlu {artifactName} toplayıcı bir hatayla karşılaştı: {errorMessage}"
+  },
+  "lighthouse-core/lib/lh-error.js | internalChromeError": {
+    "message": "Dahili bir Chrome hatası oluştu. Lütfen Chrome'u yeniden başlatıp Lighthouse'u tekrar çalıştırmayı deneyin."
+  },
+  "lighthouse-core/lib/lh-error.js | missingRequiredArtifact": {
+    "message": "Zorunlu {artifactName} toplayıcı çalışmadı."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailed": {
+    "message": "Lighthouse istediğiniz sayfayı güvenli bir şekilde yükleyemedi. Doğru URL'yi test ettiğinizden ve sunucunun tüm isteklere gerektiği gibi yanıt verdiğinden emin olun."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedHung": {
+    "message": "Sayfa yanıt vermeyi durdurduğu için Lighthouse istediğiniz URL'yi güvenli bir şekilde yükleyemedi."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedInsecure": {
+    "message": "Sağladığınız URL, geçerli güvenlik sertifikasına sahip değil. {securityMessages}"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedInterstitial": {
+    "message": "Chrome bir geçiş reklamıyla sayfa yüklemesini önledi. Doğru URL'yi test ettiğinizden ve sunucunun tüm isteklere gerektiği gibi yanıt verdiğinden emin olun."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedWithDetails": {
+    "message": "Lighthouse istediğiniz sayfayı güvenli bir şekilde yükleyemedi. Doğru URL'yi test ettiğinizden ve sunucunun tüm isteklere gerektiği gibi yanıt verdiğinden emin olun. (Ayrıntılar: {errorDetails})"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedWithStatusCode": {
+    "message": "Lighthouse istediğiniz sayfayı güvenli bir şekilde yükleyemedi. Doğru URL'yi test ettiğinizden ve sunucunun tüm isteklere gerektiği gibi yanıt verdiğinden emin olun. (Durum kodu: {statusCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadTookTooLong": {
+    "message": "Sayfanın yüklenmesi çok uzun sürdü. Sayfanızın yüklenme süresini azaltmak için lütfen rapordaki fırsatları uygulayın ve sonra Lighthouse'u tekrar çalıştırmayı deneyin. ({errorCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | protocolTimeout": {
+    "message": "DevTools protokol yanıtının beklenmesi için ayrılan süre aşıldı. (Yöntem: {protocolMethod})"
+  },
+  "lighthouse-core/lib/lh-error.js | requestContentTimeout": {
+    "message": "Kaynak içeriğinin getirilmesi için ayrılan süre aşıldı"
+  },
+  "lighthouse-core/lib/lh-error.js | urlInvalid": {
+    "message": "Sağladığınız URL'nin geçersiz olduğu anlaşılıyor."
+  },
+  "lighthouse-core/report/html/renderer/util.js | auditGroupExpandTooltip": {
+    "message": "Denetimleri göster"
+  },
+  "lighthouse-core/report/html/renderer/util.js | crcInitialNavigation": {
+    "message": "İlk Gezinme"
+  },
+  "lighthouse-core/report/html/renderer/util.js | crcLongestDurationLabel": {
+    "message": "Maksimum kritik yol gecikmesi:"
+  },
+  "lighthouse-core/report/html/renderer/util.js | errorLabel": {
+    "message": "Hata!"
+  },
+  "lighthouse-core/report/html/renderer/util.js | errorMissingAuditInfo": {
+    "message": "Bildirme hatası: denetim bilgisi yok"
+  },
+  "lighthouse-core/report/html/renderer/util.js | labDataTitle": {
+    "message": "Test Verileri"
+  },
+  "lighthouse-core/report/html/renderer/util.js | lsPerformanceCategoryDescription": {
+    "message": "Mevcut sayfanın mobil ağ kullanılarak gerçekleştirilen [Lighthouse](https://developers.google.com/web/tools/lighthouse/) analizi. Değerler tahminidir ve değişiklik gösterebilir."
+  },
+  "lighthouse-core/report/html/renderer/util.js | manualAuditsGroupTitle": {
+    "message": "Manuel olarak kontrol edilecek ek öğeler"
+  },
+  "lighthouse-core/report/html/renderer/util.js | notApplicableAuditsGroupTitle": {
+    "message": "Geçerli değil"
+  },
+  "lighthouse-core/report/html/renderer/util.js | opportunityResourceColumnLabel": {
+    "message": "Fırsat"
+  },
+  "lighthouse-core/report/html/renderer/util.js | opportunitySavingsColumnLabel": {
+    "message": "Tahmini Tasarruf Miktarı"
+  },
+  "lighthouse-core/report/html/renderer/util.js | passedAuditsGroupTitle": {
+    "message": "Başarılı denetimler"
+  },
+  "lighthouse-core/report/html/renderer/util.js | snippetCollapseButtonLabel": {
+    "message": "Snippet'i daralt"
+  },
+  "lighthouse-core/report/html/renderer/util.js | snippetExpandButtonLabel": {
+    "message": "Snippet'i genişlet"
+  },
+  "lighthouse-core/report/html/renderer/util.js | thirdPartyResourcesLabel": {
+    "message": "3. taraf kaynaklarını göster"
+  },
+  "lighthouse-core/report/html/renderer/util.js | toplevelWarningsMessage": {
+    "message": "Şu Lighthouse çalışmasını etkileyen sorunlar vardı:"
+  },
+  "lighthouse-core/report/html/renderer/util.js | varianceDisclaimer": {
+    "message": "Değerler tahminidir ve değişiklik gösterebilir. Performans skoru [sadece bu metriklere dayanır](https://github.com/GoogleChrome/lighthouse/blob/d2ec9ffbb21de9ad1a0f86ed24575eda32c796f0/docs/scoring.md#how-are-the-scores-weighted)."
+  },
+  "lighthouse-core/report/html/renderer/util.js | warningAuditsGroupTitle": {
+    "message": "Kontrollerden geçti, ancak uyarılar var"
+  },
+  "lighthouse-core/report/html/renderer/util.js | warningHeader": {
+    "message": "Uyarılar: "
+  },
+  "stack-packs/packs/wordpress.js | efficient_animated_content": {
+    "message": "GIF dosyanızı, HTML5 videosu olarak katıştırmak için kullanılabilmesini sağlayacak bir hizmete yüklemeyi düşünün."
+  },
+  "stack-packs/packs/wordpress.js | offscreen_images": {
+    "message": "Ekran dışı görüntüleri erteleme veya bu işlevselliği sağlayan bir temaya geçiş yapma olanağı veren bir [WordPress geç yükleme (lazy-load) eklentisi](https://wordpress.org/plugins/search/lazy+load/) yükleyin. Ayrıca [AMP eklentisini](https://wordpress.org/plugins/amp/) kullanmayı da değerlendirin."
+  },
+  "stack-packs/packs/wordpress.js | render_blocking_resources": {
+    "message": "[Kritik öğeleri satır içi yapmanıza](https://wordpress.org/plugins/search/critical+css/) veya [daha az önemli kaynakları ertelemenize](https://wordpress.org/plugins/search/defer+css+javascript/) yardımcı olabilecek çeşitli WordPress eklentileri vardır. Bu eklentilerin sağlayacağı optimizasyonların tema veya eklentilerinizin özelliklerini bozabileceğine dikkat edin. Bunu engellemek için muhtemelen kodda değişiklik yapmanız gerekecektir."
+  },
+  "stack-packs/packs/wordpress.js | time_to_first_byte": {
+    "message": "Temalar, eklentiler ve sunucu özellikleri öğelerinin tümü sunucunun yanıt süresini etkiler. Bir optimizayon eklentisini dikkatle seçerek ve/veya sunucunuzu yeni sürüme geçirerek, daha ileri düzeyde optimize edilmiş bir tema bulmayı düşünün."
+  },
+  "stack-packs/packs/wordpress.js | total_byte_weight": {
+    "message": "Yayın listelerinizde alıntılar göstermeyi (ör. daha fazla etiket kullanarak), belirli bir sayfada gösterilen yayınların sayısını azaltmayı, uzun yayınlarınızı birden fazla sayfaya bölmeyi veya yorumların geç yüklenmesi için bir eklenti kullanmayı düşünün."
+  },
+  "stack-packs/packs/wordpress.js | unminified_css": {
+    "message": "Çeşitli [WordPress eklentileri](https://wordpress.org/plugins/search/minify+css/) stillerinizi sıralayarak, küçülterek ve sıkıştırarak sitenizi hızlandırabilir. Ayrıca mümkünse bu küçültme yapmak için bir derleme işlemi kullanmak isteyebilirsiniz."
+  },
+  "stack-packs/packs/wordpress.js | unminified_javascript": {
+    "message": "Çeşitli [WordPress eklentileri](https://wordpress.org/plugins/search/minify+javascript/) komut dosyalarınızı sıralayarak, küçülterek ve sıkıştırarak sitenizi hızlandırabilir. Ayrıca mümkünse bu sadeleştirmeyi yapmak için bir derleme işlemi kullanmak isteyebilirsiniz."
+  },
+  "stack-packs/packs/wordpress.js | unused_css_rules": {
+    "message": "Sayfanızda kullanılmayan CSS'ler yükleyen [WordPress eklentilerinin](https://wordpress.org/plugins/) sayısını azaltmayı veya değiştirmeyi düşünün. Gereksiz CSS ekleyen eklentileri belirlemek için Chrome Geliştirme Araçlarında [kod kapsamını](https://developers.google.com/web/updates/2017/04/devtools-release-notes#coverage) çalıştırmayı deneyin. Sorumlu temayı/eklentiyi stil sayfasının URL'sinden belirleyebilirsiniz. Listede çok sayıda stil sayfasına sahip olan ve kod kapsamında çok sayıda kırmızı işaret taşıyan eklentileri arayın. Bir eklenti sadece sayfada gerçekten kullanılan bir stil sayfasını kuyruğa almalıdır."
+  },
+  "stack-packs/packs/wordpress.js | unused_javascript": {
+    "message": "Sayfanızda kullanılmayan JavaScript'ler yükleyen [WordPress eklentilerinin](https://wordpress.org/plugins/) sayısını azaltmayı veya değiştirmeyi değerlendirin. Gereksiz JS ekleyen eklentileri belirlemek için Chrome Geliştirme Araçlarında [kod kapsamını](https://developers.google.com/web/updates/2017/04/devtools-release-notes#coverage) çalıştırmayı düşünün. Sorumlu temayı/eklentiyi komut dosyasının URL'sinden belirleyebilirsiniz. Listede çok sayıda komut dosyasına sahip olan ve kod kapsamında çok sayıda kırmızı işaret taşıyan eklentileri arayın. Bir eklenti sadece sayfada gerçekten kullanılan bir komut dosyasını kuyruğa almalıdır."
+  },
+  "stack-packs/packs/wordpress.js | uses_long_cache_ttl": {
+    "message": "[WordPress'te Tarayıcı Önbelleği](https://codex.wordpress.org/WordPress_Optimization#Browser_Caching) ile ilgili bilgi edinin."
+  },
+  "stack-packs/packs/wordpress.js | uses_optimized_images": {
+    "message": "Kaliteden ödün vermeden resimlerinizi sıkıştıran bir [resim optimizasyonu WordPress eklentisi](https://wordpress.org/plugins/search/optimize+images/) kullanmayı değerlendirin."
+  },
+  "stack-packs/packs/wordpress.js | uses_responsive_images": {
+    "message": "Gerekli resim boyutlarının kullanılabilmesi için resimleri doğrudan [medya kitaplığından](https://codex.wordpress.org/Media_Library_Screen) yükleyin, ardından ideal resim boyutlarının kullanıldığından (esnek ayrılma noktası için olanlar dahil) emin olmak için resimleri medya kitaplığından ekleyin veya resim widget'ını kullanın. Boyutları kullanım için yeterli değilse `Full Size` resimler kullanmaktan kaçının. [Daha fazla bilgi](https://codex.wordpress.org/Inserting_Images_into_Posts_and_Pages#Image_Size)."
+  },
+  "stack-packs/packs/wordpress.js | uses_text_compression": {
+    "message": "Web sunucunuzun yapılandırmasında metin sıkıştırmayı etkinleştirebilirsiniz."
+  },
+  "stack-packs/packs/wordpress.js | uses_webp_images": {
+    "message": "Yüklediğiniz resimleri ideal biçimlere otomatik olarak dönüştürecek bir [eklenti](https://wordpress.org/plugins/search/convert+webp/) veya hizmet kullanmayı değerlendirin."
+  }
+}
diff --git a/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/uk.json b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/uk.json
new file mode 100644
index 0000000..36c05185
--- /dev/null
+++ b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/uk.json
@@ -0,0 +1,1541 @@
+{
+  "lighthouse-core/audits/accessibility/accesskeys.js | description": {
+    "message": "Ключі доступу дають змогу швидко виділяти частину сторінки. Для належної навігації кожний ключ доступу має бути унікальним. [Докладніше](https://web.dev/accesskeys/)."
+  },
+  "lighthouse-core/audits/accessibility/accesskeys.js | failureTitle": {
+    "message": "Значення `[accesskey]` неунікальні"
+  },
+  "lighthouse-core/audits/accessibility/accesskeys.js | title": {
+    "message": "Значення `[accesskey]` унікальні"
+  },
+  "lighthouse-core/audits/accessibility/aria-allowed-attr.js | description": {
+    "message": "Кожна `role` ARIA підтримує конкретний набір атрибутів `aria-*`. Якщо вони не збігаються, атрибути `aria-*` стають недійсними. [Докладніше](https://web.dev/aria-allowed-attr/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-allowed-attr.js | failureTitle": {
+    "message": "Атрибути `[aria-*]` не відповідають своїм ролям"
+  },
+  "lighthouse-core/audits/accessibility/aria-allowed-attr.js | title": {
+    "message": "Атрибути `[aria-*]` відповідають своїм ролям"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-attr.js | description": {
+    "message": "Деякі ролі ARIA мають обов'язкові атрибути, що описують стан елемента для програм зчитування з екрана. [Докладніше](https://web.dev/aria-required-attr/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-required-attr.js | failureTitle": {
+    "message": "Ролі `[role]` не мають усіх обов'язкових атрибутів `[aria-*]`"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-attr.js | title": {
+    "message": "Ролі `[role]` мають усі потрібні атрибути `[aria-*]`"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-children.js | description": {
+    "message": "Щоб виконувати потрібні функції спеціальних можливостей, деякі батьківські ролі ARIA повинні містити відповідні дочірні ролі. [Докладніше](https://web.dev/aria-required-children/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-required-children.js | failureTitle": {
+    "message": "Відсутні елементи з роллю `[role]`, які вимагають наявності конкретних дочірніх ролей `[role]`."
+  },
+  "lighthouse-core/audits/accessibility/aria-required-children.js | title": {
+    "message": "Присутні елементи з роллю `[role]`, які вимагають наявності конкретних дочірніх ролей `[role]`"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-parent.js | description": {
+    "message": "Щоб належно виконувати потрібні функції спеціальних можливостей, відповідні батьківські ролі повинні містити деякі дочірні ролі ARIA. [Докладніше](https://web.dev/aria-required-parent/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-required-parent.js | failureTitle": {
+    "message": "Ролі `[role]` не містяться в обов'язковому батьківському елементі"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-parent.js | title": {
+    "message": "Ролі `[role]` містяться у відповідному батьківському елементі"
+  },
+  "lighthouse-core/audits/accessibility/aria-roles.js | description": {
+    "message": "Щоб належно виконувати функції спеціальних можливостей, ролі ARIA повинні мати дійсні значення. [Докладніше](https://web.dev/aria-roles/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-roles.js | failureTitle": {
+    "message": "Значення `[role]` недійсні"
+  },
+  "lighthouse-core/audits/accessibility/aria-roles.js | title": {
+    "message": "Значення `[role]` дійсні"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr-value.js | description": {
+    "message": "Допоміжні технології, як-от програми зчитування з екрана, не можуть тлумачити атрибути ARIA з недійсними значеннями. [Докладніше](https://web.dev/aria-valid-attr-value/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr-value.js | failureTitle": {
+    "message": "Атрибути `[aria-*]` не мають дійсних значень"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr-value.js | title": {
+    "message": "Атрибути `[aria-*]` мають дійсні значення"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr.js | description": {
+    "message": "Допоміжні технології, як-от програми зчитування з екрана, не можуть тлумачити атрибути ARIA з недійсними назвами. [Докладніше](https://web.dev/aria-valid-attr/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr.js | failureTitle": {
+    "message": "Атрибути `[aria-*]` недійсні або написані неправильно"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr.js | title": {
+    "message": "Атрибути `[aria-*]` дійсні та написані правильно"
+  },
+  "lighthouse-core/audits/accessibility/audio-caption.js | description": {
+    "message": "Субтитри роблять звукові елементи ефективнішими для користувачів із вадами слуху, зокрема надають важливу інформацію про те, хто й що говорить, а також інші непов'язані з мовленням деталі. [Докладніше](https://web.dev/audio-caption/)."
+  },
+  "lighthouse-core/audits/accessibility/audio-caption.js | failureTitle": {
+    "message": "Елементи `<audio>` не містять елемент `<track>` з атрибутом `[kind=\"captions\"]`."
+  },
+  "lighthouse-core/audits/accessibility/audio-caption.js | title": {
+    "message": "Елементи `<audio>` містять елемент `<track>` з атрибутом `[kind=\"captions\"]`"
+  },
+  "lighthouse-core/audits/accessibility/axe-audit.js | failingElementsHeader": {
+    "message": "Елементи, що не пройшли перевірку"
+  },
+  "lighthouse-core/audits/accessibility/button-name.js | description": {
+    "message": "Коли кнопка не має зрозумілої назви, програми зчитування з екрана озвучують її словом \"кнопка\", через що вона стає непридатною для користувачів. [Докладніше](https://web.dev/button-name/)."
+  },
+  "lighthouse-core/audits/accessibility/button-name.js | failureTitle": {
+    "message": "Кнопки не мають доступних для зчитування назв"
+  },
+  "lighthouse-core/audits/accessibility/button-name.js | title": {
+    "message": "Кнопки мають доступну для зчитування назву"
+  },
+  "lighthouse-core/audits/accessibility/bypass.js | description": {
+    "message": "Якщо додати способи обходу вмісту, що повторюється, користувачам буде простіше переходити між елементами на сторінці за допомогою клавіатури. [Докладніше](https://web.dev/bypass/)."
+  },
+  "lighthouse-core/audits/accessibility/bypass.js | failureTitle": {
+    "message": "Сторінка не містить заголовка, посилання для пропуску вмісту чи мітки області"
+  },
+  "lighthouse-core/audits/accessibility/bypass.js | title": {
+    "message": "Сторінка містить заголовок, посилання для пропуску вмісту чи мітку області"
+  },
+  "lighthouse-core/audits/accessibility/color-contrast.js | description": {
+    "message": "Для багатьох користувачів складно або неможливо читати текст із низькою контрастністю. [Докладніше](https://web.dev/color-contrast/)."
+  },
+  "lighthouse-core/audits/accessibility/color-contrast.js | failureTitle": {
+    "message": "Між кольорами фону та переднього плану недостатній коефіцієнт контрастності."
+  },
+  "lighthouse-core/audits/accessibility/color-contrast.js | title": {
+    "message": "Між кольорами фону та переднього плану достатній коефіцієнт контрастності"
+  },
+  "lighthouse-core/audits/accessibility/definition-list.js | description": {
+    "message": "Коли списки визначень мають неправильну розмітку, програми зчитування з екрана можуть генерувати незрозумілі або неточні дані. [Докладніше](https://web.dev/definition-list/)."
+  },
+  "lighthouse-core/audits/accessibility/definition-list.js | failureTitle": {
+    "message": "Списки визначення `<dl>` містять не лише належно впорядковані групи `<dt>` і `<dd>` чи елементи `<script>` або `<template>`."
+  },
+  "lighthouse-core/audits/accessibility/definition-list.js | title": {
+    "message": "Списки визначення `<dl>` містять лише належно впорядковані групи `<dt>` та `<dd>` чи елементи `<script>` або `<template>`."
+  },
+  "lighthouse-core/audits/accessibility/dlitem.js | description": {
+    "message": "Щоб програми зчитування з екрана правильно озвучували елементи списку визначень (`<dt>` і `<dd>`), елементи має бути згруповано в батьківському елементі `<dl>`. [Докладніше](https://web.dev/dlitem/)."
+  },
+  "lighthouse-core/audits/accessibility/dlitem.js | failureTitle": {
+    "message": "Елементи списку визначень не згруповано в елементах `<dl>`"
+  },
+  "lighthouse-core/audits/accessibility/dlitem.js | title": {
+    "message": "Елементи списку визначень згруповано в елементах `<dl>`"
+  },
+  "lighthouse-core/audits/accessibility/document-title.js | description": {
+    "message": "Завдяки назві користувачі програми зчитування з екрана дізнаються загальну інформацію про сторінку, а користувачі пошукових систем визначають, чи сторінка відповідає їхньому запиту. [Докладніше](https://web.dev/document-title/)."
+  },
+  "lighthouse-core/audits/accessibility/document-title.js | failureTitle": {
+    "message": "Документ не має елемента `<title>`"
+  },
+  "lighthouse-core/audits/accessibility/document-title.js | title": {
+    "message": "Документ містить елемент `<title>`"
+  },
+  "lighthouse-core/audits/accessibility/duplicate-id.js | description": {
+    "message": "Значення атрибута ідентифікатора має бути унікальним, щоб допоміжні технології не пропускали інші копії. [Докладніше](https://web.dev/duplicate-id/)."
+  },
+  "lighthouse-core/audits/accessibility/duplicate-id.js | failureTitle": {
+    "message": "Атрибути `[id]` на сторінці неунікальні"
+  },
+  "lighthouse-core/audits/accessibility/duplicate-id.js | title": {
+    "message": "Атрибути `[id]` на сторінці унікальні"
+  },
+  "lighthouse-core/audits/accessibility/frame-title.js | description": {
+    "message": "Користувачі програм зчитування з екрана використовують назви фреймів, щоб дізнатися їх вміст. [Докладніше](https://web.dev/frame-title/)."
+  },
+  "lighthouse-core/audits/accessibility/frame-title.js | failureTitle": {
+    "message": "Елементи `<frame>` або `<iframe>` не мають назви"
+  },
+  "lighthouse-core/audits/accessibility/frame-title.js | title": {
+    "message": "Елементи `<frame>` або `<iframe>` мають назву"
+  },
+  "lighthouse-core/audits/accessibility/html-has-lang.js | description": {
+    "message": "Якщо для сторінки не вказано атрибут мови, програма зчитування з екрана припускає, що мовою сторінки є мова за умовчанням, яку користувач вибрав під час налаштування програми зчитування. Якщо насправді мова сторінки інша, програма зчитування з екрана може неправильно озвучувати текст на сторінці. [Докладніше](https://web.dev/html-has-lang/)."
+  },
+  "lighthouse-core/audits/accessibility/html-has-lang.js | failureTitle": {
+    "message": "Елемент `<html>` не має атрибута `[lang]`"
+  },
+  "lighthouse-core/audits/accessibility/html-has-lang.js | title": {
+    "message": "Елемент `<html>` містить атрибут `[lang]`"
+  },
+  "lighthouse-core/audits/accessibility/html-lang-valid.js | description": {
+    "message": "Якщо указати дійсний тег мови за [стандартом BCP 47](https://www.w3.org/International/questions/qa-choosing-language-tags#question), це допоможе програмі зчитування з екрана правильно озвучувати текст. [Докладніше](https://web.dev/html-lang-valid/)."
+  },
+  "lighthouse-core/audits/accessibility/html-lang-valid.js | failureTitle": {
+    "message": "Елемент `<html>` не містить дійсного значення для атрибута `[lang]`."
+  },
+  "lighthouse-core/audits/accessibility/html-lang-valid.js | title": {
+    "message": "Елемент `<html>` має дійсне значення атрибута `[lang]`"
+  },
+  "lighthouse-core/audits/accessibility/image-alt.js | description": {
+    "message": "Інформативні елементи повинні містити короткий, описовий альтернативний текст. Декоративні елементи можуть ігноруватись і мати порожній атрибут alt. [Докладніше](https://web.dev/image-alt/)."
+  },
+  "lighthouse-core/audits/accessibility/image-alt.js | failureTitle": {
+    "message": "Елементи зображення не мають атрибутів `[alt]`"
+  },
+  "lighthouse-core/audits/accessibility/image-alt.js | title": {
+    "message": "Елементи зображення мають атрибути `[alt]`"
+  },
+  "lighthouse-core/audits/accessibility/input-image-alt.js | description": {
+    "message": "Коли зображення використовується як кнопка `<input>`, додавши альтернативний текст, ви допоможете користувачам програм зчитування з екрана зрозуміти призначення кнопки. [Докладніше](https://web.dev/input-image-alt/)."
+  },
+  "lighthouse-core/audits/accessibility/input-image-alt.js | failureTitle": {
+    "message": "Елементи `<input type=\"image\">` не містять текст `[alt]`"
+  },
+  "lighthouse-core/audits/accessibility/input-image-alt.js | title": {
+    "message": "Елементи `<input type=\"image\">` містять текст `[alt]`"
+  },
+  "lighthouse-core/audits/accessibility/label.js | description": {
+    "message": "Завдяки міткам допоміжні технології, як-от програми зчитування з екрана, правильно озвучують елементи керування формою. [Докладніше](https://web.dev/label/)."
+  },
+  "lighthouse-core/audits/accessibility/label.js | failureTitle": {
+    "message": "Елементи форми не мають пов’язаних міток"
+  },
+  "lighthouse-core/audits/accessibility/label.js | title": {
+    "message": "Елементи форми мають пов’язані мітки"
+  },
+  "lighthouse-core/audits/accessibility/layout-table.js | description": {
+    "message": "Таблиця, яка використовується як макет, не повинна містити елементів даних, як-от елементів th або caption чи атрибут summary, оскільки це може спантеличити користувачів програм зчитування з екрана. [Докладніше](https://web.dev/layout-table/)."
+  },
+  "lighthouse-core/audits/accessibility/layout-table.js | failureTitle": {
+    "message": "Презентаційні елементи `<table>` використовують атрибути `<th>`, `<caption>` або `[summary]`."
+  },
+  "lighthouse-core/audits/accessibility/layout-table.js | title": {
+    "message": "Презентаційні елементи `<table>` не використовують атрибути `<th>`, `<caption>` або `[summary]`."
+  },
+  "lighthouse-core/audits/accessibility/link-name.js | description": {
+    "message": "Унікальний і доступний для виділення текст посилання (а також альтернативний текст для зображень, коли вони використовуються як посилання), який можна розпізнати, покращує навігацію для користувачів програм зчитування з екрана. [Докладніше](https://web.dev/link-name/)."
+  },
+  "lighthouse-core/audits/accessibility/link-name.js | failureTitle": {
+    "message": "Посилання не мають назв, які можна розпізнати"
+  },
+  "lighthouse-core/audits/accessibility/link-name.js | title": {
+    "message": "Посилання мають назви, які можна розпізнати"
+  },
+  "lighthouse-core/audits/accessibility/list.js | description": {
+    "message": "Програми зчитування з екрана озвучують списки в особливий спосіб. Правильна структура списків допомагає таким програмам правильно розпізнавати інформацію. [Докладніше](https://web.dev/list/)."
+  },
+  "lighthouse-core/audits/accessibility/list.js | failureTitle": {
+    "message": "Списки не містять лише елементи `<li>` і елементи для підтримки виконання сценарію (`<script>` та `<template>`)."
+  },
+  "lighthouse-core/audits/accessibility/list.js | title": {
+    "message": "Списки містять лише елементи `<li>` й елементи для підтримки виконання сценарію (`<script>` і `<template>`)."
+  },
+  "lighthouse-core/audits/accessibility/listitem.js | description": {
+    "message": "Щоб програми зчитування з екрана правильно озвучували елементи списку (`<li>`), ці елементи повинні міститися в батьківських елементах `<ul>` або `<ol>`. [Докладніше](https://web.dev/listitem/)."
+  },
+  "lighthouse-core/audits/accessibility/listitem.js | failureTitle": {
+    "message": "Елементів списку (`<li>`) немає в батьківських елементах `<ul>` або `<ol>`."
+  },
+  "lighthouse-core/audits/accessibility/listitem.js | title": {
+    "message": "Елементи списку (`<li>`) містяться в батьківських елементах `<ul>` або `<ol>`"
+  },
+  "lighthouse-core/audits/accessibility/meta-refresh.js | description": {
+    "message": "Користувачі не очікують, що сторінка оновлюватиметься автоматично. Таке оновлення перемістить фокус назад угору сторінки. Це може роздратувати або спантеличити користувачів. [Докладніше](https://web.dev/meta-refresh/)."
+  },
+  "lighthouse-core/audits/accessibility/meta-refresh.js | failureTitle": {
+    "message": "Документ використовує `<meta http-equiv=\"refresh\">`"
+  },
+  "lighthouse-core/audits/accessibility/meta-refresh.js | title": {
+    "message": "Документ не використовує тег `<meta http-equiv=\"refresh\">`"
+  },
+  "lighthouse-core/audits/accessibility/meta-viewport.js | description": {
+    "message": "Якщо вимкнути масштабування, користувачі з поганим зором не зможуть збільшити екран, щоб краще бачити вміст веб-сторінки. [Докладніше](https://web.dev/meta-viewport/)."
+  },
+  "lighthouse-core/audits/accessibility/meta-viewport.js | failureTitle": {
+    "message": "Параметр `[user-scalable=\"no\"]` використовується в елементі `<meta name=\"viewport\">` або атрибут `[maximum-scale]` менший за 5."
+  },
+  "lighthouse-core/audits/accessibility/meta-viewport.js | title": {
+    "message": "Параметр `[user-scalable=\"no\"]` не використовується в елементі `<meta name=\"viewport\">`, а атрибут `[maximum-scale]` має значення не менше 5."
+  },
+  "lighthouse-core/audits/accessibility/object-alt.js | description": {
+    "message": "Програми зчитування з екрана розпізнають лише текст. Якщо додати текст заміщення до елементів `<object>`, це допоможе таким програмам передати їх значення користувачам. [Докладніше](https://web.dev/object-alt/)."
+  },
+  "lighthouse-core/audits/accessibility/object-alt.js | failureTitle": {
+    "message": "Елементи `<object>` не містять текст `[alt]`"
+  },
+  "lighthouse-core/audits/accessibility/object-alt.js | title": {
+    "message": "Елементи `<object>` містять текст `[alt]`"
+  },
+  "lighthouse-core/audits/accessibility/tabindex.js | description": {
+    "message": "Значення, що перевищує 0, передбачає явне встановлення порядку навігації. Хоча технічно воно дійсне, це часто ускладнює взаємодію для користувачів, які застосовують допоміжні технології. [Докладніше](https://web.dev/tabindex/)."
+  },
+  "lighthouse-core/audits/accessibility/tabindex.js | failureTitle": {
+    "message": "Деякі елементи мають значення `[tabindex]`, що перевищує 0"
+  },
+  "lighthouse-core/audits/accessibility/tabindex.js | title": {
+    "message": "Жоден елемент не має значення `[tabindex]`, що перевищує 0"
+  },
+  "lighthouse-core/audits/accessibility/td-headers-attr.js | description": {
+    "message": "Програми зчитування з екрана мають функції, які полегшують навігацію в таблицях. Якщо клітинки `<td>`, які використовують атрибут `[headers]`, посилаються лише на інші клітинки в тій самій таблиці, це може покращити взаємодію для користувачів програми зчитування з екрана. [Докладніше](https://web.dev/td-headers-attr/)."
+  },
+  "lighthouse-core/audits/accessibility/td-headers-attr.js | failureTitle": {
+    "message": "Клітинки в елементі `<table>`, які використовують атрибут `[headers]`, посилаються на інші клітинки тієї ж таблиці."
+  },
+  "lighthouse-core/audits/accessibility/td-headers-attr.js | title": {
+    "message": "Клітинки в елементі `<table>`, які використовують атрибут `[headers]`, посилаються лише на інші клітинки в тій самій таблиці."
+  },
+  "lighthouse-core/audits/accessibility/th-has-data-cells.js | description": {
+    "message": "Програми зчитування з екрана мають функції, які полегшують навігацію в таблицях. Якщо заголовки таблиці завжди посилаються на певні набори клітинок, це може покращити взаємодію для користувачів програм зчитування з екрана. [Докладніше](https://web.dev/th-has-data-cells/)."
+  },
+  "lighthouse-core/audits/accessibility/th-has-data-cells.js | failureTitle": {
+    "message": "Елементи `<th>` і елементи з роллю `[role=\"columnheader\"/\"rowheader\"]` не містять клітинок із даними, які описують."
+  },
+  "lighthouse-core/audits/accessibility/th-has-data-cells.js | title": {
+    "message": "Елементи `<th>` і елементи з роллю `[role=\"columnheader\"/\"rowheader\"]` містять клітинки з даними, які описують."
+  },
+  "lighthouse-core/audits/accessibility/valid-lang.js | description": {
+    "message": "Якщо для елементів указати дійсний тег мови за [стандартом BCP 47](https://www.w3.org/International/questions/qa-choosing-language-tags#question), це допоможе програмі зчитування з екрана правильно озвучувати текст. [Докладніше](https://web.dev/valid-lang/)."
+  },
+  "lighthouse-core/audits/accessibility/valid-lang.js | failureTitle": {
+    "message": "Атрибути `[lang]` не мають дійсного значення"
+  },
+  "lighthouse-core/audits/accessibility/valid-lang.js | title": {
+    "message": "Атрибути `[lang]` мають дійсне значення"
+  },
+  "lighthouse-core/audits/accessibility/video-caption.js | description": {
+    "message": "Коли відео має субтитри, користувачам із вадами слуху простіше зрозуміти його. [Докладніше](https://web.dev/video-caption/)."
+  },
+  "lighthouse-core/audits/accessibility/video-caption.js | failureTitle": {
+    "message": "Елементи `<video>` не містять елемент `<track>` з атрибутом `[kind=\"captions\"]`."
+  },
+  "lighthouse-core/audits/accessibility/video-caption.js | title": {
+    "message": "Елементи `<video>` містять елемент `<track>` з атрибутом `[kind=\"captions\"]`"
+  },
+  "lighthouse-core/audits/accessibility/video-description.js | description": {
+    "message": "Звукові описи надають важливу інформацію про відео (як-от міміка й оточення), яку не можуть забезпечити діалоги. [Докладніше](https://web.dev/video-description/)."
+  },
+  "lighthouse-core/audits/accessibility/video-description.js | failureTitle": {
+    "message": "Елементи `<video>` не містять елемент `<track>` з атрибутом `[kind=\"description\"]`."
+  },
+  "lighthouse-core/audits/accessibility/video-description.js | title": {
+    "message": "Елементи `<video>` містять елемент `<track>` з атрибутом `[kind=\"description\"]`"
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | description": {
+    "message": "Налаштуйте параметр `apple-touch-icon` для ідеального вигляду на пристроях iOS, коли користувачі додають прогресивний веб-додаток на головний екран. Цей параметр має вказувати на непрозоре квадратне зображення PNG розміром 192 пікс. (або 180 пікс.). [Докладніше](https://developers.google.com/web/fundamentals/design-and-ux/browser-customization/)."
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | failureTitle": {
+    "message": "Не містить дійсного значка `apple-touch-icon`"
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | precomposedWarning": {
+    "message": "Атрибут `apple-touch-icon-precomposed` застарів. Радимо використовувати `apple-touch-icon`."
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | title": {
+    "message": "Містить дійсний значок `apple-touch-icon`"
+  },
+  "lighthouse-core/audits/bootup-time.js | chromeExtensionsWarning": {
+    "message": "Розширення Chrome негативно впливають на завантаження цієї сторінки. Спробуйте перевірити сторінку в режимі анонімного перегляду або в профілі Chrome без розширень."
+  },
+  "lighthouse-core/audits/bootup-time.js | columnScriptEval": {
+    "message": "Оцінка сценарію"
+  },
+  "lighthouse-core/audits/bootup-time.js | columnScriptParse": {
+    "message": "Синтаксичний аналіз сценарію"
+  },
+  "lighthouse-core/audits/bootup-time.js | columnTotal": {
+    "message": "Загальний процесорний час"
+  },
+  "lighthouse-core/audits/bootup-time.js | description": {
+    "message": "Зменште час виконання синтаксичного аналізу, компілювання й запуску сценаріїв JavaScript. Для цього корисно завантажувати менші обсяги даних JavaScript. [Докладніше](https://developers.google.com/web/tools/lighthouse/audits/bootup)."
+  },
+  "lighthouse-core/audits/bootup-time.js | failureTitle": {
+    "message": "Зменште час виконання JavaScript"
+  },
+  "lighthouse-core/audits/bootup-time.js | title": {
+    "message": "Час виконання JavaScript"
+  },
+  "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | description": {
+    "message": "Великі файли GIF неефективні для передавання анімованого вмісту. Щоб заощадити мережевий трафік даних, радимо замість формату GIF використовувати MPEG4 або WebM для анімацій і PNG чи WebP для статичних зображень. [Докладніше](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/replace-animated-gifs-with-video/)"
+  },
+  "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | title": {
+    "message": "Використовуйте формати відео для анімованого вмісту"
+  },
+  "lighthouse-core/audits/byte-efficiency/offscreen-images.js | description": {
+    "message": "Щоб зменшити час до повного завантаження, використовуйте закадрові й приховані зображення, коли завантажаться всі важливі ресурси. [Докладніше](https://developers.google.com/web/tools/lighthouse/audits/offscreen-images)."
+  },
+  "lighthouse-core/audits/byte-efficiency/offscreen-images.js | title": {
+    "message": "Відкладіть закадрові зображення"
+  },
+  "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | description": {
+    "message": "Ресурси блокують першу візуалізацію сторінки. Надсилайте спершу важливі фрагменти JavaScript або таблиці CSS і відкладайте всі некритичні елементи. [Докладніше](https://developers.google.com/web/tools/lighthouse/audits/blocking-resources)."
+  },
+  "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | title": {
+    "message": "Вилучіть ресурси, які блокують відображення"
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | description": {
+    "message": "Великі обсяги мережевих даних використовують багато коштовного трафіку відвідувачів і довго завантажуються. [Докладніше](https://developers.google.com/web/tools/lighthouse/audits/network-payloads)."
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | displayValue": {
+    "message": "Загальний розмір – {totalBytes, number, bytes} КБ"
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | failureTitle": {
+    "message": "Уникайте великих обсягів даних у мережі"
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | title": {
+    "message": "Уникається великий обсяг даних мережі"
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-css.js | description": {
+    "message": "Стиснення файлів CSS може зменшити обсяг даних у мережі. [Докладніше](https://developers.google.com/web/tools/lighthouse/audits/minify-css)."
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-css.js | title": {
+    "message": "Зменште СSS"
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | description": {
+    "message": "Стиснення файлів JavaScript може зменшити обсяг даних і час синтаксичного аналізу сценарію. [Докладніше](https://developers.google.com/speed/docs/insights/MinifyResources)."
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | title": {
+    "message": "Зменште файл JavaScript"
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | description": {
+    "message": "Щоб зменшити трафік даних у мережі, видаліть непотрібні правила з таблиць стилів і відкладіть завантаження таблиць CSS, що не використовуються для вмісту у верхній частині сторінки. [Докладніше](https://developers.google.com/web/tools/lighthouse/audits/unused-css)."
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | title": {
+    "message": "Видаліть вміст CSS, який не використовується"
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-javascript.js | description": {
+    "message": "Видаліть файли JavaScript, які ви не використовуєте, щоб зменшити кількість байтів під час активності в мережі."
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-javascript.js | title": {
+    "message": "Вилучіть файли JavaScript, які ви не використовуєте"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | description": {
+    "message": "Якщо зберігати кеш за тривалий період часу, сторінки можуть завантажуватися швидше під час повторних відвідувань. [Докладніше](https://developers.google.com/web/tools/lighthouse/audits/cache-policy)."
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | displayValue": {
+    "message": "{itemCount,plural, =1{Знайдено 1 ресурс}one{Знайдено # ресурс}few{Знайдено # ресурси}many{Знайдено # ресурсів}other{Знайдено # ресурсу}}"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | failureTitle": {
+    "message": "Показуйте статичні об’єкти за допомогою ефективних правил кешування"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | title": {
+    "message": "Використовуються ефективні правила кешування статичних об’єктів"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | description": {
+    "message": "Оптимізовані зображення завантажуються швидше й використовують менше мобільного трафіку. [Докладніше](https://developers.google.com/web/tools/lighthouse/audits/optimize-images)."
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | title": {
+    "message": "Ефективно кодуйте зображення"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | description": {
+    "message": "Показуйте зображення правильного розміру, щоб заощадити мобільний трафік і покращити час завантаження. [Докладніше](https://developers.google.com/web/tools/lighthouse/audits/oversized-images)."
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | title": {
+    "message": "Правильно виберіть розмір зображень"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | description": {
+    "message": "Текстові ресурси потрібно відображати зі стисненням (Gzip, Deflate чи Brotli), щоб мінімізувати загальний трафік мережі. [Докладніше](https://developers.google.com/web/tools/lighthouse/audits/text-compression)."
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | title": {
+    "message": "Увімкніть стиснення тексту"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | description": {
+    "message": "Формати зображень JPEG 2000, JPEG XR і WebP часто стискаються краще, ніж PNG чи JPEG. Тому вони швидше завантажуються й використовують менше даних. [Докладніше](https://developers.google.com/web/tools/lighthouse/audits/webp)."
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | title": {
+    "message": "Показуйте зображення в нових форматах"
+  },
+  "lighthouse-core/audits/content-width.js | description": {
+    "message": "Якщо ширина контенту додатка не збігається з шириною області перегляду, можливо, додаток не вдасться оптимізувати для екранів мобільних пристроїв. [Докладніше](https://developers.google.com/web/tools/lighthouse/audits/content-sized-correctly-for-viewport)."
+  },
+  "lighthouse-core/audits/content-width.js | explanation": {
+    "message": "Розмір області перегляду ({innerWidth} пікс.) не збігається з розміром вікна ({outerWidth} пікс.)."
+  },
+  "lighthouse-core/audits/content-width.js | failureTitle": {
+    "message": "Розмір контенту не відповідає області перегляду"
+  },
+  "lighthouse-core/audits/content-width.js | title": {
+    "message": "Розмір контенту відповідає області перегляду"
+  },
+  "lighthouse-core/audits/critical-request-chains.js | description": {
+    "message": "Ланцюжки важливих запитів нижче показують, які ресурси мають високий пріоритет. Щоб пришвидшити завантаження сторінки, зменште довжину ланцюжків і розмір завантажень або відкладіть завантаження непотрібних ресурсів. [Докладніше](https://developers.google.com/web/tools/lighthouse/audits/critical-request-chains)."
+  },
+  "lighthouse-core/audits/critical-request-chains.js | displayValue": {
+    "message": "{itemCount,plural, =1{Знайдено 1 ланцюжок}one{Знайдено # ланцюжок}few{Знайдено # ланцюжки}many{Знайдено # ланцюжків}other{Знайдено # ланцюжка}}"
+  },
+  "lighthouse-core/audits/critical-request-chains.js | title": {
+    "message": "Мінімізуйте глибину важливих запитів"
+  },
+  "lighthouse-core/audits/deprecations.js | columnDeprecate": {
+    "message": "Припинення підтримки/застереження"
+  },
+  "lighthouse-core/audits/deprecations.js | columnLine": {
+    "message": "Рядок"
+  },
+  "lighthouse-core/audits/deprecations.js | description": {
+    "message": "API, які більше не підтримуються, будуть видалені з веб-переглядача. [Докладніше](https://web.dev/deprecations)."
+  },
+  "lighthouse-core/audits/deprecations.js | displayValue": {
+    "message": "{itemCount,plural, =1{Знайдено 1 застереження}one{Знайдено # застереження}few{Знайдено # застереження}many{Знайдено # застережень}other{Знайдено # застереження}}"
+  },
+  "lighthouse-core/audits/deprecations.js | failureTitle": {
+    "message": "Використовує непідтримувані API"
+  },
+  "lighthouse-core/audits/deprecations.js | title": {
+    "message": "Уникає інтерфейсів API, які більше не підтримуються"
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | description": {
+    "message": "Application Cache API більше не підтримується. [Докладніше](https://web.dev/appcache-manifest)."
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | displayValue": {
+    "message": "Знайдено кеш \"{AppCacheManifest}\""
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | failureTitle": {
+    "message": "Використовує кеш додатка"
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | title": {
+    "message": "Уникає кешу додатка"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | description": {
+    "message": "Якщо вказати елемент doctype, веб-переглядач не перейде в режим сумісності. [Докладніше](https://web.dev/doctype)."
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationBadDoctype": {
+    "message": "Назва елемента doctype має починатися з малої літери й мати значення `html`"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationNoDoctype": {
+    "message": "Документ має містити тег doctype"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationPublicId": {
+    "message": "Очікується, що поле publicId буде порожнім"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationSystemId": {
+    "message": "Очікується, що поле systemId буде порожнім"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | failureTitle": {
+    "message": "Для сторінки не вказано елемента HTML doctype, що активує режим сумісності"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | title": {
+    "message": "Сторінка має елемент HTML doctype"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | columnElement": {
+    "message": "Елемент"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | columnStatistic": {
+    "message": "Статистика"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | columnValue": {
+    "message": "Значення"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | description": {
+    "message": "Розробники веб-переглядачів радять розміщувати на сторінці до ~1500 елементів DOM. Зона найкращого сприйняття – глибина дерева, що має менше 32 елементів і менше ніж 60 дочірніх чи батьківських елементів. Через великий файл DOM використовується більше пам'яті, [стилі обчислюються](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations) довше, а [перекомпонування макетів](https://developers.google.com/speed/articles/reflow) коштує дорого. [Докладніше](https://web.dev/dom-size)."
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 елемент}one{# елемент}few{# елементи}many{# елементів}other{# елемента}}"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | failureTitle": {
+    "message": "Уникайте надмірного розміру DOM"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | statisticDOMDepth": {
+    "message": "Максимальна глибина DOM"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | statisticDOMElements": {
+    "message": "Усього елементів DOM"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | statisticDOMWidth": {
+    "message": "Максимальна кількість дочірніх елементів"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | title": {
+    "message": "Уникається надмірний розмір DOM"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | columnRel": {
+    "message": "Rel"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | columnTarget": {
+    "message": "Ціль"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | description": {
+    "message": "Додайте `rel=\"noopener\"` або `rel=\"noreferrer\"` до зовнішніх посилань, щоб покращити ефективність і підвищити їх захищеність. [Докладніше](https://web.dev/external-anchors-use-rel-noopener)."
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | failureTitle": {
+    "message": "Міждоменні посилання на веб-сторінці ненадійні"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | title": {
+    "message": "Міждоменні посилання на веб-сторінці надійні"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | warning": {
+    "message": "Не вдалося визначити сервіс для прив'язки ({anchorHTML}). Якщо гіперпосилання не використовується, видаліть цю частину: \"target=_blank\"."
+  },
+  "lighthouse-core/audits/dobetterweb/geolocation-on-start.js | description": {
+    "message": "Сайти, які надсилають запит на доступ до місцезнаходження без пояснення, викликають у користувачів недовіру або спантеличеність. Радимо пов'язувати запит із діями користувача. [Докладніше](https://web.dev/geolocation-on-start)."
+  },
+  "lighthouse-core/audits/dobetterweb/geolocation-on-start.js | failureTitle": {
+    "message": "Надсилає запит на доступ до геолокації під час завантаження сторінки"
+  },
+  "lighthouse-core/audits/dobetterweb/geolocation-on-start.js | title": {
+    "message": "Уникає надсилання запитів на доступ до геолокації під час завантаження сторінки"
+  },
+  "lighthouse-core/audits/dobetterweb/js-libraries.js | columnVersion": {
+    "message": "Версія"
+  },
+  "lighthouse-core/audits/dobetterweb/js-libraries.js | description": {
+    "message": "Усі бібліотеки JavaScript зовнішнього інтерфейсу виявлено на сторінці. [Докладніше](https://web.dev/js-libraries)."
+  },
+  "lighthouse-core/audits/dobetterweb/js-libraries.js | title": {
+    "message": "Виявлені бібліотеки JavaScript"
+  },
+  "lighthouse-core/audits/dobetterweb/no-document-write.js | description": {
+    "message": "Зовнішні сценарії, динамічно вставлені методом `document.write()`, можуть затримувати завантаження сторінки на десятки секунд для користувачів із повільним з'єднанням. [Докладніше](https://web.dev/no-document-write)."
+  },
+  "lighthouse-core/audits/dobetterweb/no-document-write.js | failureTitle": {
+    "message": "Використовує `document.write()`"
+  },
+  "lighthouse-core/audits/dobetterweb/no-document-write.js | title": {
+    "message": "Уникає `document.write()`"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | columnSeverity": {
+    "message": "Найвищий рівень серйозності"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | columnVersion": {
+    "message": "Версія бібліотеки"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | columnVuln": {
+    "message": "Кількість прогалин системи безпеки"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | description": {
+    "message": "Деякі сторонні сценарії можуть містити відомі прогалини системи безпеки, які зловмисники можуть легко виявити та використати. [Докладніше](https://web.dev/no-vulnerable-libraries)."
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | displayValue": {
+    "message": "{itemCount,plural, =1{Виявлено 1 прогалину системи безпеки}one{Виявлено # прогалину системи безпеки}few{Виявлено # прогалини системи безпеки}many{Виявлено # прогалин системи безпеки}other{Виявлено # прогалини системи безпеки}}"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | failureTitle": {
+    "message": "Включає бібліотеки JavaScript зовнішнього інтерфейсу з відомими прогалинами системи безпеки"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | rowSeverityHigh": {
+    "message": "Високий"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | rowSeverityLow": {
+    "message": "Низький"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | rowSeverityMedium": {
+    "message": "Середній"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | title": {
+    "message": "Уникає бібліотек JavaScript зовнішнього інтерфейсу з відомими прогалинами в системі безпеки"
+  },
+  "lighthouse-core/audits/dobetterweb/notification-on-start.js | description": {
+    "message": "Сайти, які надсилають запит на показ сповіщень без пояснення, викликають у користувачів недовіру або спантеличеність. Радимо пов'язувати запит із жестами користувача. [Докладніше](https://web.dev/notification-on-start)."
+  },
+  "lighthouse-core/audits/dobetterweb/notification-on-start.js | failureTitle": {
+    "message": "Надсилає запит на показ сповіщень під час завантаження сторінки"
+  },
+  "lighthouse-core/audits/dobetterweb/notification-on-start.js | title": {
+    "message": "Уникає надсилання запитів на показ сповіщень під час завантаження сторінки"
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | columnFailingElem": {
+    "message": "Відхилені елементи"
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | description": {
+    "message": "Якщо заборонити вставляти пароль, це порушить правила щодо високого рівня безпеки. [Докладніше](https://web.dev/password-inputs-can-be-pasted-into)."
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | failureTitle": {
+    "message": "Не дозволяє користувачам вставляти вміст у поля паролів"
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | title": {
+    "message": "Дає змогу користувачам вставляти вміст у поля паролів"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | columnProtocol": {
+    "message": "Протокол"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | description": {
+    "message": "Протокол HTTP/2 має низку переваг над HTTP/1.1, як-от двійкові заголовки, мультиплексування та технологія Server Push. [Докладніше](https://web.dev/uses-http2)."
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 запит не розміщено через протокол HTTP/2}one{# запит не розміщено через протокол HTTP/2}few{# запити не розміщено через протокол HTTP/2}many{# запитів не розміщено через протокол HTTP/2}other{# запиту не розміщено через протокол HTTP/2}}"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | failureTitle": {
+    "message": "Не використовує протокол HTTP/2 для всіх ресурсів"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | title": {
+    "message": "Використовує протокол HTTP/2 для власних ресурсів"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-passive-event-listeners.js | description": {
+    "message": "Щоб сторінка краще прокручувалася, позначте блоки прослуховування подій сенсорного екрана та коліщатка як `passive`. [Докладніше](https://web.dev/uses-passive-event-listeners)."
+  },
+  "lighthouse-core/audits/dobetterweb/uses-passive-event-listeners.js | failureTitle": {
+    "message": "Не використовує пасивні прослуховувачі, щоб покращити функцію прокручування"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-passive-event-listeners.js | title": {
+    "message": "Використовує пасивні прослуховувачі, щоб покращити прокручування сторінки"
+  },
+  "lighthouse-core/audits/errors-in-console.js | columnDesc": {
+    "message": "Опис"
+  },
+  "lighthouse-core/audits/errors-in-console.js | description": {
+    "message": "Помилки, записані в журнал консолі, указують на невирішені проблеми. Вони можуть бути викликані збоями запитів мережі або іншими проблемами веб-переглядача. [Докладніше](https://web.dev/errors-in-console)"
+  },
+  "lighthouse-core/audits/errors-in-console.js | failureTitle": {
+    "message": "Помилки веб-переглядача записано в журнал консолі"
+  },
+  "lighthouse-core/audits/errors-in-console.js | title": {
+    "message": "Помилки веб-переглядача не записано в журнал консолі"
+  },
+  "lighthouse-core/audits/font-display.js | description": {
+    "message": "Використовуйте функцію відображення шрифтів CSS, щоб текст було видно під час завантаження веб-шрифтів. [Докладніше](https://developers.google.com/web/updates/2016/02/font-display)."
+  },
+  "lighthouse-core/audits/font-display.js | failureTitle": {
+    "message": "Переконайтеся, що текст залишається видимим під час завантаження веб-шрифту"
+  },
+  "lighthouse-core/audits/font-display.js | title": {
+    "message": "Увесь текст залишається видимим під час завантаження веб-шрифтів"
+  },
+  "lighthouse-core/audits/font-display.js | undeclaredFontURLWarning": {
+    "message": "Інструменту Lighthouse не вдалось автоматично перевірити значення відображення шрифтів для цієї URL-адреси: {fontURL}."
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | columnActual": {
+    "message": "Формат (фактичний)"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | columnDisplayed": {
+    "message": "Формат (відображуваний)"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | description": {
+    "message": "Розміри показаного зображення мають відповідати реальному формату. [Докладніше](https://web.dev/image-aspect-ratio)."
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | failureTitle": {
+    "message": "Показує зображення неправильного формату"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | title": {
+    "message": "Показує зображення правильного формату"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | warningCompute": {
+    "message": "Недійсна інформація про розмір зображення {url}"
+  },
+  "lighthouse-core/audits/installable-manifest.js | description": {
+    "message": "Веб-переглядачі можуть активно заохочувати користувачів установити ваш додаток на головний екран, що сприятиме кращій взаємодії. [Докладніше](https://developers.google.com/web/tools/lighthouse/audits/install-prompt)."
+  },
+  "lighthouse-core/audits/installable-manifest.js | failureTitle": {
+    "message": "Маніфест веб-додатка не відповідає умовам для встановлення"
+  },
+  "lighthouse-core/audits/installable-manifest.js | title": {
+    "message": "Маніфест веб-додатка відповідає умовам щодо встановлення"
+  },
+  "lighthouse-core/audits/is-on-https.js | columnInsecureURL": {
+    "message": "Ненадійна URL-адреса"
+  },
+  "lighthouse-core/audits/is-on-https.js | description": {
+    "message": "Усі сайти мають бути захищені протоколом HTTPS, навіть якщо вони не обробляють конфіденційні дані. HTTPS не дозволяє зловмисникам втручатись в обмін даними між додатком і користувачами або пасивно прослуховувати супутні події. Це обов'язкова умова для протоколу HTTP/2 та багатьох нових API веб-платформ. [Докладніше](https://web.dev/is-on-https)."
+  },
+  "lighthouse-core/audits/is-on-https.js | displayValue": {
+    "message": "{itemCount,plural, =1{Знайдено 1 ненадійний запит}one{Знайдено # ненадійний запит}few{Знайдено # ненадійні запити}many{Знайдено # ненадійних запитів}other{Знайдено # ненадійного запиту}}"
+  },
+  "lighthouse-core/audits/is-on-https.js | failureTitle": {
+    "message": "Не використовує протокол HTTPS"
+  },
+  "lighthouse-core/audits/is-on-https.js | title": {
+    "message": "Використовує протокол HTTPS"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | description": {
+    "message": "Якщо сторінка швидко завантажується в мобільній мережі, це покращує враження користувачів мобільних пристроїв. [Докладніше](https://developers.google.com/web/tools/lighthouse/audits/fast-3g)."
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | displayValueText": {
+    "message": "Стає інтерактивною через {timeInMs, number, seconds} с"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | displayValueTextWithOverride": {
+    "message": "Стає інтерактивною в емульованій мобільній мережі через {timeInMs, number, seconds} с"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | explanationLoadSlow": {
+    "message": "Сторінка завантажується надто повільно й неактивна впродовж 10 секунд. Щоб дізнатися, як виправити цю ситуацію, перегляньте можливості та дані діагностики в розділі \"Ефективність\"."
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | failureTitle": {
+    "message": "Швидкість завантаження сторінки через мобільну мережу недостатньо висока"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | title": {
+    "message": "Швидкість завантаження сторінки через мобільну мережу достатньо висока"
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | columnCategory": {
+    "message": "Категорія"
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | description": {
+    "message": "Зменште час виконання синтаксичного аналізу, компілювання й запуску сценаріїв JavaScript. Завантажувати менші обсяги даних JavaScript може бути корисно."
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | failureTitle": {
+    "message": "Мінімізуйте роботу основного потоку"
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | title": {
+    "message": "Мінімізується робота основного потоку"
+  },
+  "lighthouse-core/audits/manual/pwa-cross-browser.js | description": {
+    "message": "Щоб охопити якомога більше користувачів, сайти мають працювати в усіх відомих веб-переглядачах. [Докладніше](https://developers.google.com/web/progressive-web-apps/checklist#site-works-cross-browser)."
+  },
+  "lighthouse-core/audits/manual/pwa-cross-browser.js | title": {
+    "message": "Сайт працює у різних веб-переглядачах"
+  },
+  "lighthouse-core/audits/manual/pwa-each-page-has-url.js | description": {
+    "message": "Переконайтеся, що окремі сторінки можна відкрити за допомогою прямого посилання, а URL-адреси унікальні, щоб ними можна було ділитися в соціальних мережах. [Докладніше](https://developers.google.com/web/progressive-web-apps/checklist#each-page-has-a-url)."
+  },
+  "lighthouse-core/audits/manual/pwa-each-page-has-url.js | title": {
+    "message": "Кожна сторінка має URL-адресу"
+  },
+  "lighthouse-core/audits/manual/pwa-page-transitions.js | description": {
+    "message": "Додаток має швидко реагувати на дії користувача, навіть якщо мережа працює повільно, тоді користувач високо оцінить роботу вашого додатка. [Докладніше](https://developers.google.com/web/progressive-web-apps/checklist#page-transitions-dont-feel-like-they-block-on-the-network)."
+  },
+  "lighthouse-core/audits/manual/pwa-page-transitions.js | title": {
+    "message": "Схоже, перехід між сторінками не блокує мережу"
+  },
+  "lighthouse-core/audits/metrics/estimated-input-latency.js | description": {
+    "message": "Приблизна затримка введення показує, скільки часу в мілісекундах додаток відповідає на ввід користувача під час п'ятисекундного періоду завантаження сторінки. Якщо затримка перевищує 50 мс, користувачі можуть вважати ваш додаток повільним. [Докладніше](https://developers.google.com/web/tools/lighthouse/audits/estimated-input-latency)."
+  },
+  "lighthouse-core/audits/metrics/estimated-input-latency.js | title": {
+    "message": "Приблизна затримка введення"
+  },
+  "lighthouse-core/audits/metrics/first-contentful-paint.js | description": {
+    "message": "Перша візуалізація вмісту показує, коли з'являється текст чи зображення. [Докладніше](https://developers.google.com/web/tools/lighthouse/audits/first-contentful-paint)."
+  },
+  "lighthouse-core/audits/metrics/first-contentful-paint.js | title": {
+    "message": "Перше відображення всього вмісту"
+  },
+  "lighthouse-core/audits/metrics/first-cpu-idle.js | description": {
+    "message": "Перший простій ЦП вказує, коли основний ланцюжок сторінки вперше може обробити введення. [Докладніше](https://developers.google.com/web/tools/lighthouse/audits/first-interactive)."
+  },
+  "lighthouse-core/audits/metrics/first-cpu-idle.js | title": {
+    "message": "Перший простій ЦП"
+  },
+  "lighthouse-core/audits/metrics/first-meaningful-paint.js | description": {
+    "message": "Час початку візуалізації вказує, коли видно основний вміст сторінки. [Докладніше](https://developers.google.com/web/tools/lighthouse/audits/first-meaningful-paint)."
+  },
+  "lighthouse-core/audits/metrics/first-meaningful-paint.js | title": {
+    "message": "Перше значне відображення"
+  },
+  "lighthouse-core/audits/metrics/interactive.js | description": {
+    "message": "Час до повного завантаження – це період часу, через який сторінка стане повністю інтерактивною. [Докладніше](https://developers.google.com/web/tools/lighthouse/audits/consistently-interactive)."
+  },
+  "lighthouse-core/audits/metrics/interactive.js | title": {
+    "message": "Час до повної взаємодії"
+  },
+  "lighthouse-core/audits/metrics/max-potential-fid.js | description": {
+    "message": "Максимальна потенційна затримка відповіді на першу дію – це тривалість найдовшого завдання в мілісекундах. [Докладніше](https://developers.google.com/web/updates/2018/05/first-input-delay)."
+  },
+  "lighthouse-core/audits/metrics/max-potential-fid.js | title": {
+    "message": "Максимальна потенційна затримка відповіді на першу дію"
+  },
+  "lighthouse-core/audits/metrics/speed-index.js | description": {
+    "message": "Індекс швидкості показує, через скільки часу відображається вміст сторінки. [Докладніше](https://developers.google.com/web/tools/lighthouse/audits/speed-index)."
+  },
+  "lighthouse-core/audits/metrics/speed-index.js | title": {
+    "message": "Індекс швидкості"
+  },
+  "lighthouse-core/audits/metrics/total-blocking-time.js | description": {
+    "message": "Загальна тривалість усіх періодів часу в мілісекундах між першою візуалізацією вмісту та часом до повного завантаження, коли час виконання завдання перевищує 50 мс."
+  },
+  "lighthouse-core/audits/metrics/total-blocking-time.js | title": {
+    "message": "Загальний час блокування"
+  },
+  "lighthouse-core/audits/network-rtt.js | description": {
+    "message": "Час затримки передачі сигналу мережі (RTT) суттєво впливає на ефективність. Якщо показник RTT високий, це означає, що сервери, розташовані ближче до користувача, можуть покращити ефективність. [Докладніше](https://hpbn.co/primer-on-latency-and-bandwidth/)."
+  },
+  "lighthouse-core/audits/network-rtt.js | title": {
+    "message": "Час затримки передачі сигналу мережі"
+  },
+  "lighthouse-core/audits/network-server-latency.js | description": {
+    "message": "Затримка сервера може впливати на ефективність веб-сайту. Якщо показник затримки сервера високий, це означає, що сервер перевантажено або в нього низька ефективність. [Докладніше](https://hpbn.co/primer-on-web-performance/#analyzing-the-resource-waterfall)."
+  },
+  "lighthouse-core/audits/network-server-latency.js | title": {
+    "message": "Затримка сервера"
+  },
+  "lighthouse-core/audits/offline-start-url.js | description": {
+    "message": "Синтаксис Service Worker забезпечує надійність вашого веб-додатка в разі непередбачуваних умов у мережі. [Докладніше](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)."
+  },
+  "lighthouse-core/audits/offline-start-url.js | failureTitle": {
+    "message": "`start_url` не надсилає код 200 у режимі офлайн"
+  },
+  "lighthouse-core/audits/offline-start-url.js | title": {
+    "message": "`start_url` надсилає код 200 у режимі офлайн"
+  },
+  "lighthouse-core/audits/offline-start-url.js | warningCantStart": {
+    "message": "Lighthouse не може прочитати `start_url` з маніфесту. Через це `start_url` вважається URL-адресою документа. Повідомлення про помилку: \"{manifestWarning}\"."
+  },
+  "lighthouse-core/audits/performance-budget.js | columnOverBudget": {
+    "message": "Перевищення бюджету"
+  },
+  "lighthouse-core/audits/performance-budget.js | description": {
+    "message": "Стежте, щоб кількість і розмір мережевих запитів не перевищували цільових значень, указаних у бюджеті ефективності. [Докладніше](https://developers.google.com/web/tools/lighthouse/audits/budgets)."
+  },
+  "lighthouse-core/audits/performance-budget.js | requestCountOverBudget": {
+    "message": "{count,plural, =1{1 запит}one{# запит}few{# запити}many{# запитів}other{# запиту}}"
+  },
+  "lighthouse-core/audits/performance-budget.js | title": {
+    "message": "Бюджет ефективності"
+  },
+  "lighthouse-core/audits/redirects-http.js | description": {
+    "message": "Якщо ви вже налаштували HTTPS, переконайтеся, що весь трафік HTTP переспрямовується на HTTPS, щоб увімкнути безпечні веб-функції для всіх користувачів. [Докладніше](https://developers.google.com/web/tools/lighthouse/audits/http-redirects-to-https)."
+  },
+  "lighthouse-core/audits/redirects-http.js | failureTitle": {
+    "message": "Трафік HTTP не перепрямовується на HTTPS"
+  },
+  "lighthouse-core/audits/redirects-http.js | title": {
+    "message": "Трафік HTTP переспрямовується на HTTPS"
+  },
+  "lighthouse-core/audits/redirects.js | description": {
+    "message": "Переспрямування викликають додаткові затримки під час завантаження сторінки. [Докладніше](https://developers.google.com/web/tools/lighthouse/audits/redirects)."
+  },
+  "lighthouse-core/audits/redirects.js | title": {
+    "message": "Уникайте переспрямувань кількох сторінок"
+  },
+  "lighthouse-core/audits/resource-summary.js | description": {
+    "message": "Щоб установити бюджет відповідно до кількості та розміру ресурсів на сторінці, додайте файл budget.json. [Докладніше](https://developers.google.com/web/tools/lighthouse/audits/budgets)."
+  },
+  "lighthouse-core/audits/resource-summary.js | displayValue": {
+    "message": "{requestCount,plural, =1{1 запит • {byteCount, number, bytes} КБ}one{# запит • {byteCount, number, bytes} КБ}few{# запити • {byteCount, number, bytes} КБ}many{# запитів • {byteCount, number, bytes} КБ}other{# запиту • {byteCount, number, bytes} КБ}}"
+  },
+  "lighthouse-core/audits/resource-summary.js | title": {
+    "message": "Не надсилайте багато запитів і передавайте вміст малого розміру"
+  },
+  "lighthouse-core/audits/seo/canonical.js | description": {
+    "message": "Канонічні посилання вказують, які URL-адреси показувати в результатах пошуку. [Докладніше](https://web.dev/canonical)."
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationConflict": {
+    "message": "Кілька URL-адрес конфліктують ({urlList})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationDifferentDomain": {
+    "message": "Указує на інший домен ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationInvalid": {
+    "message": "Недійсна URL-адреса ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationPointsElsewhere": {
+    "message": "Указує на інше місце `hreflang` ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationRelative": {
+    "message": "Відносна URL-адреса ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationRoot": {
+    "message": "Указує на основну URL-адресу домену (домашню сторінку), а не на еквівалентну сторінку вмісту"
+  },
+  "lighthouse-core/audits/seo/canonical.js | failureTitle": {
+    "message": "Документ не має дійсного посилання `rel=canonical`"
+  },
+  "lighthouse-core/audits/seo/canonical.js | title": {
+    "message": "Документ має дійсний атрибут `rel=canonical`"
+  },
+  "lighthouse-core/audits/seo/font-size.js | description": {
+    "message": "Розміри шрифту до 12px замалі й нечитабельні. Щоб користувачі мобільних пристроїв змогли прочитати текст, їм потрібно буде збільшувати масштаб пальцями. Бажано, щоб понад 60% тексту на сторінці було написано щонайменше шрифтом 12px. [Докладніше](https://web.dev/font-size)."
+  },
+  "lighthouse-core/audits/seo/font-size.js | displayValue": {
+    "message": "{decimalProportion, number, extendedPercent} читабельного тексту"
+  },
+  "lighthouse-core/audits/seo/font-size.js | explanationViewport": {
+    "message": "Текст нечитабельний, оскільки метатег області перегляду не оптимізовано для мобільних пристроїв."
+  },
+  "lighthouse-core/audits/seo/font-size.js | explanationWithDisclaimer": {
+    "message": "{decimalProportion, number, extendedPercent} тексту має замалий шрифт (на основі {decimalProportionVisited, number, extendedPercent} вибірки)."
+  },
+  "lighthouse-core/audits/seo/font-size.js | failureTitle": {
+    "message": "У документі використано нечитабельні розміри шрифтів"
+  },
+  "lighthouse-core/audits/seo/font-size.js | title": {
+    "message": "У документі використано читабельні розміри шрифтів"
+  },
+  "lighthouse-core/audits/seo/hreflang.js | description": {
+    "message": "Посилання hreflang указують пошуковим системам версію сторінки, яку потрібно додати в результати пошуку для певної мови чи регіону. [Докладніше](https://web.dev/hreflang)."
+  },
+  "lighthouse-core/audits/seo/hreflang.js | failureTitle": {
+    "message": "Документ не має дійсного атрибута `hreflang`"
+  },
+  "lighthouse-core/audits/seo/hreflang.js | title": {
+    "message": "Документ має дійсний атрибут `hreflang`"
+  },
+  "lighthouse-core/audits/seo/http-status-code.js | description": {
+    "message": "Сторінки з недійсними кодами статусу HTTP можуть неправильно індексуватися. [Докладніше](https://web.dev/http-status-code)."
+  },
+  "lighthouse-core/audits/seo/http-status-code.js | failureTitle": {
+    "message": "Сторінка має недійсний код статусу HTTP"
+  },
+  "lighthouse-core/audits/seo/http-status-code.js | title": {
+    "message": "Сторінка має дійсний код статусу HTTP"
+  },
+  "lighthouse-core/audits/seo/is-crawlable.js | description": {
+    "message": "Пошукові системи не зможуть включити ваші сторінки в результати пошуку, якщо в них немає дозволу сканувати їх. [Докладніше](https://web.dev/is-crawable)."
+  },
+  "lighthouse-core/audits/seo/is-crawlable.js | failureTitle": {
+    "message": "Сторінку не можна індексувати"
+  },
+  "lighthouse-core/audits/seo/is-crawlable.js | title": {
+    "message": "Сторінку можна індексувати"
+  },
+  "lighthouse-core/audits/seo/link-text.js | description": {
+    "message": "Описовий текст посилання допомагає пошуковим системам розуміти ваш вміст. [Докладніше](https://web.dev/link-text)."
+  },
+  "lighthouse-core/audits/seo/link-text.js | displayValue": {
+    "message": "{itemCount,plural, =1{Знайдено 1 посилання}one{Знайдено # посилання}few{Знайдено # посилання}many{Знайдено # посилань}other{Знайдено # посилання}}"
+  },
+  "lighthouse-core/audits/seo/link-text.js | failureTitle": {
+    "message": "Посилання не містять опису"
+  },
+  "lighthouse-core/audits/seo/link-text.js | title": {
+    "message": "Посилання містять опис"
+  },
+  "lighthouse-core/audits/seo/manual/structured-data.js | description": {
+    "message": "Щоб перевірити структуровані дані, скористайтесь [інструментом тестування](https://search.google.com/structured-data/testing-tool/) й [інструментом статичного аналізу структурованих даних](http://linter.structured-data.org/). [Докладніше](https://web.dev/structured-data)."
+  },
+  "lighthouse-core/audits/seo/manual/structured-data.js | title": {
+    "message": "Структуровані дані дійсні"
+  },
+  "lighthouse-core/audits/seo/meta-description.js | description": {
+    "message": "Результати пошуку можуть містити метаописи для короткого підсумку вмісту сторінки. [Докладніше](https://web.dev/meta-description)."
+  },
+  "lighthouse-core/audits/seo/meta-description.js | explanation": {
+    "message": "Немає опису."
+  },
+  "lighthouse-core/audits/seo/meta-description.js | failureTitle": {
+    "message": "Документ не містить метаопису"
+  },
+  "lighthouse-core/audits/seo/meta-description.js | title": {
+    "message": "Документ містить метаопис"
+  },
+  "lighthouse-core/audits/seo/plugins.js | description": {
+    "message": "Пошукові системи не можуть індексувати вміст плагінів. Багато пристроїв обмежують або не підтримують плагіни. [Докладніше](https://web.dev/plugins)."
+  },
+  "lighthouse-core/audits/seo/plugins.js | failureTitle": {
+    "message": "Документ використовує плагіни"
+  },
+  "lighthouse-core/audits/seo/plugins.js | title": {
+    "message": "Документ уникає плагінів"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | description": {
+    "message": "Якщо файл robots.txt недійсний, веб-сканери можуть не зрозуміти, як потрібно індексувати або сканувати ваш веб-сайт. [Докладніше](https://web.dev/robots-txt)."
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | displayValueHttpBadCode": {
+    "message": "У відповідь на запит robots.txt отримано такий статус HTTP: {statusCode}"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | displayValueValidationError": {
+    "message": "{itemCount,plural, =1{Знайдено 1 помилку}one{Знайдено # помилку}few{Знайдено # помилки}many{Знайдено # помилок}other{Знайдено # помилки}}"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | explanation": {
+    "message": "Інструменту Lighthouse не вдалося завантажити файл robots.txt"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | failureTitle": {
+    "message": "Файл robots.txt недійсний"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | title": {
+    "message": "Файл robots.txt дійсний"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | description": {
+    "message": "Інтерактивні елементи, як-от кнопки та посилання, мають бути достатньо великі (48x48 пікселів), а навколо них має бути достатньо місця, щоб їх можна було легко натиснути, не зачепивши інші елементи. [Докладніше](https://web.dev/tap-targets)."
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | displayValue": {
+    "message": "{decimalProportion, number, percent} елементів для натискання мають правильний розмір"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | explanationViewportMetaNotOptimized": {
+    "message": "Елементи для натискання замалі, оскільки метатег області перегляду не оптимізовано для мобільних пристроїв"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | failureTitle": {
+    "message": "Елементи для натискання мають неправильний розмір"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | overlappingTargetHeader": {
+    "message": "Елементи для натискання накладаються"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | tapTargetHeader": {
+    "message": "Елемент для натискання"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | title": {
+    "message": "Елементи для натискання мають правильний розмір"
+  },
+  "lighthouse-core/audits/service-worker.js | description": {
+    "message": "Синтаксис Service Worker – це технологія, яка дає змогу додатку використовувати багато функцій прогресивного веб-додатка, як-от режим офлайн, додавання на головний екран і push-сповіщення. [Докладніше](https://developers.google.com/web/tools/lighthouse/audits/registered-service-worker)."
+  },
+  "lighthouse-core/audits/service-worker.js | explanationBadManifest": {
+    "message": "Цією сторінкою керує синтаксис Service Worker, однак `start_url` не знайдено, оскільки не вдалося виконати синтаксичний аналіз маніфесту як дійсного файлу JSON"
+  },
+  "lighthouse-core/audits/service-worker.js | explanationBadStartUrl": {
+    "message": "Цією сторінкою керує синтаксис Service Worker, однак параметр `start_url` ({startUrl}) перебуває за межами дії служби ({scopeUrl})"
+  },
+  "lighthouse-core/audits/service-worker.js | explanationNoManifest": {
+    "message": "Цією сторінкою керує синтаксис Service Worker, однак `start_url` не знайдено, оскільки маніфест не завантажено."
+  },
+  "lighthouse-core/audits/service-worker.js | explanationOutOfScope": {
+    "message": "Це джерело містить один або кілька синтаксисів Service Worker, але сторінка ({pageUrl}) перебуває за межами дії служби."
+  },
+  "lighthouse-core/audits/service-worker.js | failureTitle": {
+    "message": "Немає синтаксису Service Worker, який керує сторінкою та `start_url`"
+  },
+  "lighthouse-core/audits/service-worker.js | title": {
+    "message": "Наявний синтаксис Service Worker, який керує сторінкою та `start_url`"
+  },
+  "lighthouse-core/audits/splash-screen.js | description": {
+    "message": "Тематична заставка покращує взаємодію з користувачами під час запуску додатка з головного екрана. [Докладніше](https://developers.google.com/web/tools/lighthouse/audits/custom-splash-screen)."
+  },
+  "lighthouse-core/audits/splash-screen.js | failureTitle": {
+    "message": "Власну заставку не налаштовано"
+  },
+  "lighthouse-core/audits/splash-screen.js | title": {
+    "message": "Налаштовано власну заставку"
+  },
+  "lighthouse-core/audits/themed-omnibox.js | description": {
+    "message": "Для адресного рядка веб-переглядача можна створити тему, яка відповідатиме вашому сайту [Докладніше](https://developers.google.com/web/tools/lighthouse/audits/address-bar)."
+  },
+  "lighthouse-core/audits/themed-omnibox.js | failureTitle": {
+    "message": "Не змінює колір адресного рядка відповідно до теми."
+  },
+  "lighthouse-core/audits/themed-omnibox.js | title": {
+    "message": "Змінює колір адресного рядка відповідно до теми."
+  },
+  "lighthouse-core/audits/third-party-summary.js | columnBlockingTime": {
+    "message": "Час блокування основного ланцюжка"
+  },
+  "lighthouse-core/audits/third-party-summary.js | columnThirdParty": {
+    "message": "Сторонні розробники"
+  },
+  "lighthouse-core/audits/third-party-summary.js | description": {
+    "message": "Сторонній код може значно погіршити швидкість завантаження. Не використовуйте зайвий раз елементи коду сторонніх розробників та налаштуйте сторінку так, щоб сторонній код завантажувався після її основної частини. [Докладніше](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/loading-third-party-javascript/)."
+  },
+  "lighthouse-core/audits/third-party-summary.js | displayValue": {
+    "message": "Сторонній код заблокував основний ланцюжок на {timeInMs, number, milliseconds} мс"
+  },
+  "lighthouse-core/audits/third-party-summary.js | failureTitle": {
+    "message": "Зменште вплив стороннього коду"
+  },
+  "lighthouse-core/audits/third-party-summary.js | title": {
+    "message": "Використання стороннього коду"
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | description": {
+    "message": "Час до першого байта визначає швидкість реакції сервера. [Докладніше](https://developers.google.com/web/tools/lighthouse/audits/ttfb)."
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | displayValue": {
+    "message": "Кореневий документ відповів через {timeInMs, number, milliseconds} мс"
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | failureTitle": {
+    "message": "Зменште час відповіді сервера (TTFB)"
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | title": {
+    "message": "Сервер довго відповідає (TTFB)"
+  },
+  "lighthouse-core/audits/user-timings.js | columnDuration": {
+    "message": "Тривалість"
+  },
+  "lighthouse-core/audits/user-timings.js | columnStartTime": {
+    "message": "Час початку"
+  },
+  "lighthouse-core/audits/user-timings.js | columnType": {
+    "message": "Тип"
+  },
+  "lighthouse-core/audits/user-timings.js | description": {
+    "message": "Використовуйте в додатку User Timing API, щоб отримувати показники ефективності додатка під час взаємодії з користувачами. [Докладніше](https://developers.google.com/web/tools/lighthouse/audits/user-timing)."
+  },
+  "lighthouse-core/audits/user-timings.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 позначка часу користувача}one{# позначка часу користувача}few{# позначки часу користувача}many{# позначок часу користувача}other{# позначки часу користувача}}"
+  },
+  "lighthouse-core/audits/user-timings.js | title": {
+    "message": "Показники й мітки часу користувача"
+  },
+  "lighthouse-core/audits/uses-rel-preconnect.js | crossoriginWarning": {
+    "message": "Для {securityOrigin} знайдено посилання для попереднього з'єднання <link>, але веб-переглядач його не використав. Переконайтеся, що ви правильно використовуєте атрибут `crossorigin`."
+  },
+  "lighthouse-core/audits/uses-rel-preconnect.js | description": {
+    "message": "Додайте в ресурси корективи `preconnect` чи `dns-prefetch`, щоб заздалегідь встановлювати з'єднання з важливими сторонніми джерелами. [Докладніше](https://developers.google.com/web/fundamentals/performance/resource-prioritization#preconnect)."
+  },
+  "lighthouse-core/audits/uses-rel-preconnect.js | title": {
+    "message": "Попередньо під’єднуйтеся до потрібних джерел"
+  },
+  "lighthouse-core/audits/uses-rel-preload.js | crossoriginWarning": {
+    "message": "Для {preloadURL} знайдено посилання для попереднього завантаження <link>, але веб-переглядач його не використав. Переконайтеся, що ви правильно використовуєте атрибут `crossorigin`."
+  },
+  "lighthouse-core/audits/uses-rel-preload.js | description": {
+    "message": "Використовуйте `<link rel=preload>`, щоб указати пріоритетність завантаження ресурсів, які наразі отримуються пізніше під час завантаження сторінки. [Докладніше](https://developers.google.com/web/tools/lighthouse/audits/preload)."
+  },
+  "lighthouse-core/audits/uses-rel-preload.js | title": {
+    "message": "Попередньо завантажуйте основні запити"
+  },
+  "lighthouse-core/audits/viewport.js | description": {
+    "message": "Додайте тег `<meta name=\"viewport\">`, щоб оптимізувати додаток для екранів мобільних пристроїв. [Докладніше](https://developers.google.com/web/tools/lighthouse/audits/has-viewport-meta-tag)."
+  },
+  "lighthouse-core/audits/viewport.js | explanationNoTag": {
+    "message": "Тег `<meta name=\"viewport\">` не знайдено"
+  },
+  "lighthouse-core/audits/viewport.js | failureTitle": {
+    "message": "Немає тегу `<meta name=\"viewport\">` з атрибутами `width` або `initial-scale`"
+  },
+  "lighthouse-core/audits/viewport.js | title": {
+    "message": "Має тег `<meta name=\"viewport\">` з атрибутами `width` або `initial-scale`"
+  },
+  "lighthouse-core/audits/without-javascript.js | description": {
+    "message": "Ваш додаток має відображати певний контент, коли JavaScript вимкнено, навіть якщо це просто сповіщення для користувачів про те, що для використання додатка потрібно ввімкнути JavaScript. [Докладніше](https://developers.google.com/web/tools/lighthouse/audits/no-js)."
+  },
+  "lighthouse-core/audits/without-javascript.js | explanation": {
+    "message": "Сторінка має відображати контент, навіть якщо її сценарії недоступні."
+  },
+  "lighthouse-core/audits/without-javascript.js | failureTitle": {
+    "message": "Резервний контент не відображається, коли JavaScript вимкнено"
+  },
+  "lighthouse-core/audits/without-javascript.js | title": {
+    "message": "Певний контент відображається, коли JavaScript вимкнено"
+  },
+  "lighthouse-core/audits/works-offline.js | description": {
+    "message": "Якщо ви створюєте прогресивний веб-додаток, можете скористатися синтаксисом Service Worker, щоб додаток працював офлайн. [Докладніше](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)."
+  },
+  "lighthouse-core/audits/works-offline.js | failureTitle": {
+    "message": "Поточна сторінка не надсилає код 200 у режимі офлайн"
+  },
+  "lighthouse-core/audits/works-offline.js | title": {
+    "message": "Поточна сторінка надсилає код 200 у режимі офлайн"
+  },
+  "lighthouse-core/audits/works-offline.js | warningNoLoad": {
+    "message": "Ця сторінка може не завантажуватись офлайн, оскільки тестову URL-адресу ({requested}) було переспрямовано на {final}. Спробуйте перевірити другу URL-адресу напряму."
+  },
+  "lighthouse-core/config/default-config.js | a11yAriaGroupDescription": {
+    "message": "Ці рекомендації допоможуть покращити використання ролей ARIA у вашому додатку, що може позитивно вплинути на взаємодію для користувачів допоміжних технологій, як-от програм зчитування з екрана."
+  },
+  "lighthouse-core/config/default-config.js | a11yAriaGroupTitle": {
+    "message": "ARIA"
+  },
+  "lighthouse-core/config/default-config.js | a11yAudioVideoGroupDescription": {
+    "message": "Ці рекомендації допоможуть надати альтернативний вміст для аудіо та відео. Це може покращити взаємодію для користувачів із вадами слуху або зору."
+  },
+  "lighthouse-core/config/default-config.js | a11yAudioVideoGroupTitle": {
+    "message": "Аудіо та відео"
+  },
+  "lighthouse-core/config/default-config.js | a11yBestPracticesGroupDescription": {
+    "message": "Ці елементи надають поширені практичні поради щодо спеціальних можливостей."
+  },
+  "lighthouse-core/config/default-config.js | a11yBestPracticesGroupTitle": {
+    "message": "Практичні поради"
+  },
+  "lighthouse-core/config/default-config.js | a11yCategoryDescription": {
+    "message": "Ці перевірки визначають можливості для [покращення доступності веб-додатка](https://developers.google.com/web/fundamentals/accessibility). Радимо також проводити перевірки вручну, оскільки не всі проблеми з доступністю визначаються автоматично."
+  },
+  "lighthouse-core/config/default-config.js | a11yCategoryManualDescription": {
+    "message": "Ці елементи опрацьовують області, які не може охопити автоматизований інструмент перевірки. Докладніше читайте в нашому посібнику з [перевірки доступності](https://developers.google.com/web/fundamentals/accessibility/how-to-review)."
+  },
+  "lighthouse-core/config/default-config.js | a11yCategoryTitle": {
+    "message": "Спеціальні можливості"
+  },
+  "lighthouse-core/config/default-config.js | a11yColorContrastGroupDescription": {
+    "message": "Ці рекомендації допоможуть покращити читабельність вмісту."
+  },
+  "lighthouse-core/config/default-config.js | a11yColorContrastGroupTitle": {
+    "message": "Контраст"
+  },
+  "lighthouse-core/config/default-config.js | a11yLanguageGroupDescription": {
+    "message": "Ці рекомендації допоможуть покращити те, як користувачі тлумачать ваш вміст різними мовами."
+  },
+  "lighthouse-core/config/default-config.js | a11yLanguageGroupTitle": {
+    "message": "Інтернаціоналізація та локалізація"
+  },
+  "lighthouse-core/config/default-config.js | a11yNamesLabelsGroupDescription": {
+    "message": "Ці рекомендації допоможуть удосконалити семантику елементів керування в додатку. Це може покращити взаємодію для користувачів допоміжних технологій, як-от програм зчитування з екрана."
+  },
+  "lighthouse-core/config/default-config.js | a11yNamesLabelsGroupTitle": {
+    "message": "Назви та мітки"
+  },
+  "lighthouse-core/config/default-config.js | a11yNavigationGroupDescription": {
+    "message": "Ці рекомендації допоможуть покращити навігацію клавіатурою в додатку."
+  },
+  "lighthouse-core/config/default-config.js | a11yNavigationGroupTitle": {
+    "message": "Навігація"
+  },
+  "lighthouse-core/config/default-config.js | a11yTablesListsVideoGroupDescription": {
+    "message": "Ці рекомендації допоможуть покращити перегляд даних у таблиці чи списку за допомогою допоміжної технології, наприклад програми зчитування з екрана."
+  },
+  "lighthouse-core/config/default-config.js | a11yTablesListsVideoGroupTitle": {
+    "message": "Таблиці та списки"
+  },
+  "lighthouse-core/config/default-config.js | bestPracticesCategoryTitle": {
+    "message": "Практичні поради"
+  },
+  "lighthouse-core/config/default-config.js | budgetsGroupDescription": {
+    "message": "Бюджети визначають стандарти ефективності вашого сайту."
+  },
+  "lighthouse-core/config/default-config.js | budgetsGroupTitle": {
+    "message": "Бюджети"
+  },
+  "lighthouse-core/config/default-config.js | diagnosticsGroupDescription": {
+    "message": "Докладніше про ефективність додатка. Ці числа не [впливають безпосередньо](https://github.com/GoogleChrome/lighthouse/blob/d2ec9ffbb21de9ad1a0f86ed24575eda32c796f0/docs/scoring.md#how-are-the-scores-weighted) на значення ефективності."
+  },
+  "lighthouse-core/config/default-config.js | diagnosticsGroupTitle": {
+    "message": "Діагностика"
+  },
+  "lighthouse-core/config/default-config.js | firstPaintImprovementsGroupDescription": {
+    "message": "Найважливішим аспектом ефективності є швидкість відображення пікселів на екрані. Основні показники: перше відображення вмісту, перше значне відображення"
+  },
+  "lighthouse-core/config/default-config.js | firstPaintImprovementsGroupTitle": {
+    "message": "Покращення першого відображення"
+  },
+  "lighthouse-core/config/default-config.js | loadOpportunitiesGroupDescription": {
+    "message": "Ці пропозиції допоможуть завантажувати сторінку швидше. Вони не [впливають безпосередньо](https://github.com/GoogleChrome/lighthouse/blob/d2ec9ffbb21de9ad1a0f86ed24575eda32c796f0/docs/scoring.md#how-are-the-scores-weighted) на значення ефективності."
+  },
+  "lighthouse-core/config/default-config.js | loadOpportunitiesGroupTitle": {
+    "message": "Можливості"
+  },
+  "lighthouse-core/config/default-config.js | metricGroupTitle": {
+    "message": "Показники"
+  },
+  "lighthouse-core/config/default-config.js | overallImprovementsGroupDescription": {
+    "message": "Покращте загальну ефективність завантаження, щоб сторінка швидко реагувала й завантажувалася. Основні показники: час до повної взаємодії, індекс швидкості"
+  },
+  "lighthouse-core/config/default-config.js | overallImprovementsGroupTitle": {
+    "message": "Загальні покращення"
+  },
+  "lighthouse-core/config/default-config.js | performanceCategoryTitle": {
+    "message": "Ефективність"
+  },
+  "lighthouse-core/config/default-config.js | pwaCategoryDescription": {
+    "message": "Ці категорії підтверджують аспекти прогресивного веб-додатка. [Докладніше](https://developers.google.com/web/progressive-web-apps/checklist)."
+  },
+  "lighthouse-core/config/default-config.js | pwaCategoryManualDescription": {
+    "message": "Ці категорії обов'язкові відповідно до основного [контрольного списку для прогресивних веб-додатків](https://developers.google.com/web/progressive-web-apps/checklist), але Lighthouse не перевіряє їх автоматично. Вони не впливають на ваш показник, проте їх потрібно підтвердити вручну."
+  },
+  "lighthouse-core/config/default-config.js | pwaCategoryTitle": {
+    "message": "Прогресивний веб-додаток"
+  },
+  "lighthouse-core/config/default-config.js | pwaFastReliableGroupTitle": {
+    "message": "Швидкість і надійність"
+  },
+  "lighthouse-core/config/default-config.js | pwaInstallableGroupTitle": {
+    "message": "Можна встановити"
+  },
+  "lighthouse-core/config/default-config.js | pwaOptimizedGroupTitle": {
+    "message": "Оптимізовано для прогресивного веб-додатка"
+  },
+  "lighthouse-core/config/default-config.js | seoCategoryDescription": {
+    "message": "Ці перевірки визначають, чи сторінка оптимізована для позиціонування результатів пошукової системи. Lighthouse не перевіряє певні додаткові чинники, які можуть впливати на позицію веб-сайту в результатах пошуку. [Докладніше](https://support.google.com/webmasters/answer/35769)."
+  },
+  "lighthouse-core/config/default-config.js | seoCategoryManualDescription": {
+    "message": "Щоб отримати додаткові практичні поради щодо оптимізації пошукових систем, скористайтеся додатковими засобами перевірки на своєму сайті."
+  },
+  "lighthouse-core/config/default-config.js | seoCategoryTitle": {
+    "message": "Оптим. пошук. систем"
+  },
+  "lighthouse-core/config/default-config.js | seoContentGroupDescription": {
+    "message": "Відформатуйте HTML так, щоб веб-сканери краще розуміли вміст вашого додатка."
+  },
+  "lighthouse-core/config/default-config.js | seoContentGroupTitle": {
+    "message": "Практичні поради щодо вмісту"
+  },
+  "lighthouse-core/config/default-config.js | seoCrawlingGroupDescription": {
+    "message": "Щоб ваш вміст з’являвся в результатах пошуку, веб-сканерам потрібно надати доступ до додатка."
+  },
+  "lighthouse-core/config/default-config.js | seoCrawlingGroupTitle": {
+    "message": "Сканування й індексування"
+  },
+  "lighthouse-core/config/default-config.js | seoMobileGroupDescription": {
+    "message": "Переконайтеся, що ваші сторінки адаптовані для мобільних пристроїв і користувачам не потрібно зменшувати чи збільшувати масштаб, щоб читати їх вміст. [Докладніше](https://developers.google.com/search/mobile-sites/)."
+  },
+  "lighthouse-core/config/default-config.js | seoMobileGroupTitle": {
+    "message": "Для мобільних пристроїв"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnCacheTTL": {
+    "message": "TTL кешу"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnLocation": {
+    "message": "Місцезнаходження"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnName": {
+    "message": "Назва"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnRequests": {
+    "message": "Запити"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnResourceType": {
+    "message": "Тип ресурсу"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnSize": {
+    "message": "Розмір"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnTimeSpent": {
+    "message": "Витрачений час"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnTransferSize": {
+    "message": "Розмір передавання"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnURL": {
+    "message": "URL-адреса"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnWastedBytes": {
+    "message": "Потенційне заощадження"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnWastedMs": {
+    "message": "Потенційне заощадження"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | displayValueByteSavings": {
+    "message": "Потенційне заощадження – {wastedBytes, number, bytes} КБ"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | displayValueMsSavings": {
+    "message": "Потенційне заощадження – {wastedMs, number, milliseconds} мс"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | documentResourceType": {
+    "message": "Документ"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | fontResourceType": {
+    "message": "Шрифт"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | imageResourceType": {
+    "message": "Зображення"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | mediaResourceType": {
+    "message": "Медіа"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | ms": {
+    "message": "{timeInMs, number, milliseconds} мс"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | otherResourceType": {
+    "message": "Інше"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | scriptResourceType": {
+    "message": "Сценарій"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | seconds": {
+    "message": "{timeInMs, number, seconds} с"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | stylesheetResourceType": {
+    "message": "Таблиця стилів"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | thirdPartyResourceType": {
+    "message": "Сторонні"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | totalResourceType": {
+    "message": "Усього"
+  },
+  "lighthouse-core/lib/lh-error.js | badTraceRecording": {
+    "message": "Не вдалося записати результати трасування для завантаження вашої сторінки. Запустіть інструмент Lighthouse ще раз. ({errorCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | criTimeout": {
+    "message": "Час очікування початкового з’єднання з протоколом Debugger минув."
+  },
+  "lighthouse-core/lib/lh-error.js | didntCollectScreenshots": {
+    "message": "Веб-переглядач Chrome не отримав знімки екрана під час завантаження сторінки. Переконайтеся, що на сторінці є видимий вміст, а потім спробуйте перезапустити інструмент Lighthouse. ({errorCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | dnsFailure": {
+    "message": "DNS-серверам не вдалось обробити вказаний домен."
+  },
+  "lighthouse-core/lib/lh-error.js | erroredRequiredArtifact": {
+    "message": "У збирачі обов'язкових ресурсів {artifactName} сталася помилка: {errorMessage}"
+  },
+  "lighthouse-core/lib/lh-error.js | internalChromeError": {
+    "message": "Сталася внутрішня помилка Chrome. Перезапустіть Chrome і спробуйте знову запустити інструмент Lighthouse."
+  },
+  "lighthouse-core/lib/lh-error.js | missingRequiredArtifact": {
+    "message": "Збирач обов'язкових ресурсів {artifactName} не запущено."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailed": {
+    "message": "Інструменту Lighthouse не вдалося безпечно завантажити сторінку, яку ви вказали. Переконайтеся, що ви тестуєте правильну URL-адресу, а сервер належним чином відповідає на всі запити."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedHung": {
+    "message": "Інструменту Lighthouse не вдалося безпечно завантажити URL-адресу, яку ви вказали, оскільки сторінка перестала відповідати."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedInsecure": {
+    "message": "Указана вами URL-адреса не має дійсного сертифіката безпеки. {securityMessages}"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedInterstitial": {
+    "message": "Веб-переглядач Chrome заблокував завантаження сторінки та відобразив проміжний екран. Переконайтеся, що ви тестуєте правильну URL-адресу, а сервер належним чином відповідає на всі запити."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedWithDetails": {
+    "message": "Інструменту Lighthouse не вдалося безпечно завантажити сторінку, яку ви вказали. Переконайтеся, що ви тестуєте правильну URL-адресу, а сервер належним чином відповідає на всі запити. (Деталі: {errorDetails})"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedWithStatusCode": {
+    "message": "Інструменту Lighthouse не вдалося безпечно завантажити сторінку, яку ви вказали. Переконайтеся, що ви тестуєте правильну URL-адресу, а сервер належним чином відповідає на всі запити. (Код статусу: {statusCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadTookTooLong": {
+    "message": "Сторінка завантажувалася задовго. Дотримуйтеся рекомендацій у звіті, щоб зменшити час завантаження сторінки, а потім спробуйте перезапустити інструмент Lighthouse. ({errorCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | protocolTimeout": {
+    "message": "Час очікування відповіді протоколу DevTools перевищив установлений період. (Метод: {protocolMethod})"
+  },
+  "lighthouse-core/lib/lh-error.js | requestContentTimeout": {
+    "message": "Час отримання вмісту ресурсу перевищив установлений час"
+  },
+  "lighthouse-core/lib/lh-error.js | urlInvalid": {
+    "message": "Схоже, указана вами URL-адреса недійсна."
+  },
+  "lighthouse-core/report/html/renderer/util.js | auditGroupExpandTooltip": {
+    "message": "Показати перевірки"
+  },
+  "lighthouse-core/report/html/renderer/util.js | crcInitialNavigation": {
+    "message": "Початкова навігація"
+  },
+  "lighthouse-core/report/html/renderer/util.js | crcLongestDurationLabel": {
+    "message": "Максимальна критична затримка шляху:"
+  },
+  "lighthouse-core/report/html/renderer/util.js | errorLabel": {
+    "message": "Помилка."
+  },
+  "lighthouse-core/report/html/renderer/util.js | errorMissingAuditInfo": {
+    "message": "Повідомлення про помилку: немає інформації про перевірку"
+  },
+  "lighthouse-core/report/html/renderer/util.js | labDataTitle": {
+    "message": "Дані тестів"
+  },
+  "lighthouse-core/report/html/renderer/util.js | lsPerformanceCategoryDescription": {
+    "message": "Аналіз [Lighthouse](https://developers.google.com/web/tools/lighthouse/) поточної сторінки в емульованій мобільній мережі. Значення приблизні й можуть відрізнятися."
+  },
+  "lighthouse-core/report/html/renderer/util.js | manualAuditsGroupTitle": {
+    "message": "Додаткові елементи, які потрібно перевірити вручну"
+  },
+  "lighthouse-core/report/html/renderer/util.js | notApplicableAuditsGroupTitle": {
+    "message": "Не застосовуються"
+  },
+  "lighthouse-core/report/html/renderer/util.js | opportunityResourceColumnLabel": {
+    "message": "Можливість"
+  },
+  "lighthouse-core/report/html/renderer/util.js | opportunitySavingsColumnLabel": {
+    "message": "Приблизне заощадження"
+  },
+  "lighthouse-core/report/html/renderer/util.js | passedAuditsGroupTitle": {
+    "message": "Виконані перевірки"
+  },
+  "lighthouse-core/report/html/renderer/util.js | snippetCollapseButtonLabel": {
+    "message": "Згорнути фрагмент"
+  },
+  "lighthouse-core/report/html/renderer/util.js | snippetExpandButtonLabel": {
+    "message": "Розгорнути фрагмент"
+  },
+  "lighthouse-core/report/html/renderer/util.js | thirdPartyResourcesLabel": {
+    "message": "Показати сторонні ресурси"
+  },
+  "lighthouse-core/report/html/renderer/util.js | toplevelWarningsMessage": {
+    "message": "Під час запуску Lighthouse виникли перелічені нижче проблеми."
+  },
+  "lighthouse-core/report/html/renderer/util.js | varianceDisclaimer": {
+    "message": "Значення приблизні й можуть відрізнятися. Значення ефективності визначається [на основі цих показників](https://github.com/GoogleChrome/lighthouse/blob/d2ec9ffbb21de9ad1a0f86ed24575eda32c796f0/docs/scoring.md#how-are-the-scores-weighted)."
+  },
+  "lighthouse-core/report/html/renderer/util.js | warningAuditsGroupTitle": {
+    "message": "Перевірки зі статусом \"Пройдено\", що містять застереження"
+  },
+  "lighthouse-core/report/html/renderer/util.js | warningHeader": {
+    "message": "Застереження. "
+  },
+  "stack-packs/packs/wordpress.js | efficient_animated_content": {
+    "message": "Спробуйте завантажити файл GIF у сервіс, де його можна вставити як відео HTML5."
+  },
+  "stack-packs/packs/wordpress.js | offscreen_images": {
+    "message": "Установіть [плагін lazy-load від WordPress](https://wordpress.org/plugins/search/lazy+load/), який дає змогу відкласти завантаження закадрових зображень, або виберіть тему, що дозволяє це зробити. Також можете скористатися [плагіном AMP](https://wordpress.org/plugins/amp/)."
+  },
+  "stack-packs/packs/wordpress.js | render_blocking_resources": {
+    "message": "Існує багато плагінів WordPress, які можуть допомогти [вбудувати важливі об'єкти](https://wordpress.org/plugins/search/critical+css/) або [відкласти менш важливі ресурси](https://wordpress.org/plugins/search/defer+css+javascript/). Зауважте, що така оптимізація може порушити функції теми або плагінів, тож доведеться змінити код."
+  },
+  "stack-packs/packs/wordpress.js | time_to_first_byte": {
+    "message": "Теми, плагіни й характеристики сервера впливають на час відповіді. Спробуйте знайти більш оптимізовану тему, підібрати плагін для оптимізації та/або оновити сервер."
+  },
+  "stack-packs/packs/wordpress.js | total_byte_weight": {
+    "message": "Спробуйте показувати витяги в списках дописів (через тег \"більше\"), зменшити кількість показаних публікацій на сторінці, розділити довгі дописи на кілька сторінок або скористатися плагіном, щоб відкласти завантаження коментарів."
+  },
+  "stack-packs/packs/wordpress.js | unminified_css": {
+    "message": "Багато [плагінів WordPress](https://wordpress.org/plugins/search/minify+css/) можуть пришвидшити ваш сайт: вони об'єднують, зменшують і стискають стилі. Також можна скористатися процесом складання, щоб завчасно зменшити розмір, якщо це можливо."
+  },
+  "stack-packs/packs/wordpress.js | unminified_javascript": {
+    "message": "Багато [плагінів WordPress](https://wordpress.org/plugins/search/minify+javascript/) можуть пришвидшити ваш сайт: вони об'єднують, зменшують і стискають сценарії. Також можна скористатися процесом складання, щоб завчасно зменшити розмір, якщо це можливо."
+  },
+  "stack-packs/packs/wordpress.js | unused_css_rules": {
+    "message": "Спробуйте зменшити кількість [плагінів WordPress](https://wordpress.org/plugins/), що завантажують на сторінці непотрібні таблиці стилів CSS. Щоб визначити плагіни, які додають зайві таблиці CSS, перевірте [покриття коду](https://developers.google.com/web/updates/2017/04/devtools-release-notes#coverage) в Chrome DevTools. Ви можете визначити тему чи плагін через URL-адресу таблиці стилів. У покритті коду знайдіть плагіни з багатьма таблицями стилів за великим обсягом червоного тексту. Плагін має ставити таблицю стилів у чергу, лише коли вона дійсно використовується на сторінці."
+  },
+  "stack-packs/packs/wordpress.js | unused_javascript": {
+    "message": "Спробуйте зменшити кількість [плагінів WordPress](https://wordpress.org/plugins/), що завантажують на сторінці непотрібні фрагменти JavaScript. Щоб визначити плагіни, які додають зайвий код JavaScript, перевірте [покриття коду](https://developers.google.com/web/updates/2017/04/devtools-release-notes#coverage) в Chrome DevTools. Ви можете визначити тему чи плагін через URL-адресу сценарію. У покритті коду знайдіть плагіни з багатьма сценаріями за великим обсягом червоного тексту. Плагін має ставити сценарій у чергу, лише коли він дійсно використовується на сторінці."
+  },
+  "stack-packs/packs/wordpress.js | uses_long_cache_ttl": {
+    "message": "Дізнайтеся про [кешування веб-переглядача у WordPress](https://codex.wordpress.org/WordPress_Optimization#Browser_Caching)."
+  },
+  "stack-packs/packs/wordpress.js | uses_optimized_images": {
+    "message": "Спробуйте [плагін WordPress для оптимізації зображень](https://wordpress.org/plugins/search/optimize+images/), який стискає зображення, але зберігає їх якість."
+  },
+  "stack-packs/packs/wordpress.js | uses_responsive_images": {
+    "message": "Завантажуйте зображення через [бібліотеку медіафайлів](https://codex.wordpress.org/Media_Library_Screen), щоб переконатися, що вони доступні в потрібному розмірі. Потім вставляйте їх в оптимальному розмірі з бібліотеки або через віджет для зображень (зокрема для адаптивних точок переходу). Використовуйте зображення, що мають `Full Size`, лише якщо вони повністю поміщаються. [Докладніше](https://codex.wordpress.org/Inserting_Images_into_Posts_and_Pages#Image_Size)."
+  },
+  "stack-packs/packs/wordpress.js | uses_text_compression": {
+    "message": "Ви можете ввімкнути стиснення тексту в конфігурації веб-сервера."
+  },
+  "stack-packs/packs/wordpress.js | uses_webp_images": {
+    "message": "Скористайтеся [плагіном](https://wordpress.org/plugins/search/convert+webp/) або сервісом, який автоматично конвертує завантажені зображення в оптимальні формати."
+  }
+}
diff --git a/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/vi.json b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/vi.json
new file mode 100644
index 0000000..8c75577
--- /dev/null
+++ b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/vi.json
@@ -0,0 +1,1541 @@
+{
+  "lighthouse-core/audits/accessibility/accesskeys.js | description": {
+    "message": "Các phím truy cập cho phép người dùng chuyển nhanh đến một phần của trang. Để di chuyển đúng cách, mỗi phím truy cập phải là duy nhất. [Tìm hiểu thêm](https://web.dev/accesskeys/)."
+  },
+  "lighthouse-core/audits/accessibility/accesskeys.js | failureTitle": {
+    "message": "Các giá trị của `[accesskey]` không phải là duy nhất"
+  },
+  "lighthouse-core/audits/accessibility/accesskeys.js | title": {
+    "message": "Các giá trị của `[accesskey]` là duy nhất"
+  },
+  "lighthouse-core/audits/accessibility/aria-allowed-attr.js | description": {
+    "message": "Mỗi `role` của Ứng dụng Internet phong phú dễ dùng (ARIA) hỗ trợ một tập hợp con cụ thể các thuộc tính `aria-*`. Nếu không trùng khớp, các thuộc tính `aria-*` sẽ bị vô hiệu. [Tìm hiểu thêm](https://web.dev/aria-allowed-attr/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-allowed-attr.js | failureTitle": {
+    "message": "Các thuộc tính `[aria-*]` không khớp với vai trò tương ứng"
+  },
+  "lighthouse-core/audits/accessibility/aria-allowed-attr.js | title": {
+    "message": "Các thuộc tính `[aria-*]` khớp với vai trò tương ứng"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-attr.js | description": {
+    "message": "Một số vai trò ARIA có các thuộc tính bắt buộc mô tả trạng thái của phần tử cho trình đọc màn hình. [Tìm hiểu thêm](https://web.dev/aria-required-attr/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-required-attr.js | failureTitle": {
+    "message": "`[role]` không có tất cả các thuộc tính `[aria-*]` bắt buộc"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-attr.js | title": {
+    "message": "`[role]` có tất cả các thuộc tính `[aria-*]` bắt buộc"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-children.js | description": {
+    "message": "Một số vai trò mẹ của Ứng dụng Internet phong phú dễ dùng (ARIA) phải chứa vai trò con cụ thể để thực hiện các chức năng hỗ trợ tiếp cận chủ định tương ứng. [Tìm hiểu thêm](https://web.dev/aria-required-children/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-required-children.js | failureTitle": {
+    "message": "Thiếu các phần tử có `[role]` yêu cầu phải có vai trò con `[role]` cụ thể."
+  },
+  "lighthouse-core/audits/accessibility/aria-required-children.js | title": {
+    "message": "Các phần tử có `[role]` yêu cầu phải có phần tử con `[role]` cụ thể đang hiện diện"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-parent.js | description": {
+    "message": "Các vai trò mẹ cụ thể phải chứa một số vai trò con của Ứng dụng Internet phong phú dễ dùng (ARIA) để thực hiện đúng cách các chức năng hỗ trợ tiếp cận chủ định tương ứng. [Tìm hiểu thêm](https://web.dev/aria-required-parent/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-required-parent.js | failureTitle": {
+    "message": "`[role]` không có trong phần tử mẹ bắt buộc tương ứng"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-parent.js | title": {
+    "message": "`[role]` có trong phần tử mẹ bắt buộc tương ứng"
+  },
+  "lighthouse-core/audits/accessibility/aria-roles.js | description": {
+    "message": "Các vai trò của Ứng dụng Internet phong phú dễ dùng (ARIA) phải có giá trị hợp lệ để thực hiện những chức năng hỗ trợ tiếp cận chủ định tương ứng. [Tìm hiểu thêm](https://web.dev/aria-roles/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-roles.js | failureTitle": {
+    "message": "Các giá trị của `[role]` là không hợp lệ"
+  },
+  "lighthouse-core/audits/accessibility/aria-roles.js | title": {
+    "message": "Các giá trị của `[role]` là hợp lệ"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr-value.js | description": {
+    "message": "Các công nghệ hỗ trợ, chẳng hạn như trình đọc màn hình, không thể diễn giải thuộc tính của Ứng dụng Internet phong phú dễ dùng (ARIA) có giá trị không hợp lệ. [Tìm hiểu thêm](https://web.dev/aria-valid-attr-value/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr-value.js | failureTitle": {
+    "message": "Giá trị của các thuộc tính `[aria-*]` là không hợp lệ"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr-value.js | title": {
+    "message": "Các thuộc tính `[aria-*]` có giá trị hợp lệ"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr.js | description": {
+    "message": "Các công nghệ hỗ trợ, chẳng hạn như trình đọc màn hình, không thể diễn giải các thuộc tính của Ứng dụng Internet phong phú dễ dùng (ARIA) có tên không hợp lệ. [Tìm hiểu thêm](https://web.dev/aria-valid-attr/)."
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr.js | failureTitle": {
+    "message": "Các thuộc tính `[aria-*]` là không hợp lệ hoặc bị sai chính tả"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr.js | title": {
+    "message": "Các thuộc tính `[aria-*]` là hợp lệ và không bị sai chính tả"
+  },
+  "lighthouse-core/audits/accessibility/audio-caption.js | description": {
+    "message": "Phụ đề giúp người điếc hoặc người dùng khiếm thính có thể sử dụng các phần tử âm thanh, cung cấp cho họ những thông tin quan trọng như ai đang nói chuyện, những người đó đang nói gì và các thông tin khác không phải lời nói. [Tìm hiểu thêm](https://web.dev/audio-caption/)."
+  },
+  "lighthouse-core/audits/accessibility/audio-caption.js | failureTitle": {
+    "message": "Các phần tử `<audio>` bị thiếu phần tử `<track>` có `[kind=\"captions\"]`."
+  },
+  "lighthouse-core/audits/accessibility/audio-caption.js | title": {
+    "message": "Các phần tử `<audio>` chứa phần tử `<track>` có `[kind=\"captions\"]`"
+  },
+  "lighthouse-core/audits/accessibility/axe-audit.js | failingElementsHeader": {
+    "message": "Các phần tử không đạt"
+  },
+  "lighthouse-core/audits/accessibility/button-name.js | description": {
+    "message": "Khi một nút không có tên có thể tiếp cận, trình đọc màn hình sẽ thông báo đó là \"nút\", khiến người dùng trình đọc màn hình không sử dụng được nút này. [Tìm hiểu thêm](https://web.dev/button-name/)."
+  },
+  "lighthouse-core/audits/accessibility/button-name.js | failureTitle": {
+    "message": "Các nút không có tên có thể tiếp cận được"
+  },
+  "lighthouse-core/audits/accessibility/button-name.js | title": {
+    "message": "Các nút có tên tiếp cận được"
+  },
+  "lighthouse-core/audits/accessibility/bypass.js | description": {
+    "message": "Bằng việc thêm các cách bỏ qua nội dung lặp lại, người dùng bàn phím có thể khám phá trang một cách hiệu quả hơn. [Tìm hiểu thêm](https://web.dev/bypass/)."
+  },
+  "lighthouse-core/audits/accessibility/bypass.js | failureTitle": {
+    "message": "Trang này không chứa tiêu đề, đường dẫn liên kết bỏ qua hoặc vùng mốc"
+  },
+  "lighthouse-core/audits/accessibility/bypass.js | title": {
+    "message": "Trang này chứa tiêu đề, phần tử liên kết bỏ qua hoặc vùng mốc"
+  },
+  "lighthouse-core/audits/accessibility/color-contrast.js | description": {
+    "message": "Nhiều người dùng gặp khó khăn khi đọc hoặc không thể đọc được văn bản có độ tương phản thấp. [Tìm hiểu thêm](https://web.dev/color-contrast/)."
+  },
+  "lighthouse-core/audits/accessibility/color-contrast.js | failureTitle": {
+    "message": "Màu nền trước và nền sau không có đủ tỷ lệ tương phản."
+  },
+  "lighthouse-core/audits/accessibility/color-contrast.js | title": {
+    "message": "Màu nền trước và nền sau có đủ tỷ lệ tương phản"
+  },
+  "lighthouse-core/audits/accessibility/definition-list.js | description": {
+    "message": "Khi danh sách định nghĩa không được đánh dấu đúng cách, thì trình đọc màn hình có thể tạo ra thông báo gây nhầm lẫn hoặc không chính xác. [Tìm hiểu thêm](https://web.dev/definition-list/)."
+  },
+  "lighthouse-core/audits/accessibility/definition-list.js | failureTitle": {
+    "message": "`<dl>` không chỉ chứa các nhóm `<dt>` và `<dd>` được sắp xếp đúng cách, các phần tử `<script>` hoặc `<template>`."
+  },
+  "lighthouse-core/audits/accessibility/definition-list.js | title": {
+    "message": "`<dl>` chỉ chứa các nhóm `<dt>` và `<dd>` được sắp xếp đúng cách, các phần tử `<script>` hoặc `<template>`."
+  },
+  "lighthouse-core/audits/accessibility/dlitem.js | description": {
+    "message": "Các mục trong danh sách định nghĩa (`<dt>` và `<dd>`) phải được đưa vào một phần tử `<dl>` mẹ để đảm bảo rằng trình đọc màn hình có thể thông báo đúng cách các mục này. [Tìm hiểu thêm](https://web.dev/dlitem/)."
+  },
+  "lighthouse-core/audits/accessibility/dlitem.js | failureTitle": {
+    "message": "Các phần tử `<dl>` không bao gồm những mục trong danh sách định nghĩa"
+  },
+  "lighthouse-core/audits/accessibility/dlitem.js | title": {
+    "message": "Các phần tử `<dl>` chứa mục trong danh sách định nghĩa"
+  },
+  "lighthouse-core/audits/accessibility/document-title.js | description": {
+    "message": "Tiêu đề giúp người dùng trình đọc màn hình nắm được thông tin tổng quan về trang, và giúp người dùng công cụ tìm kiếm chủ yếu dựa vào tiêu đề này xác định xem một trang có liên quan đến nội dung tìm kiếm của họ hay không. [Tìm hiểu thêm](https://web.dev/document-title/)."
+  },
+  "lighthouse-core/audits/accessibility/document-title.js | failureTitle": {
+    "message": "Tài liệu không có phần tử `<title>`"
+  },
+  "lighthouse-core/audits/accessibility/document-title.js | title": {
+    "message": "Tài liệu có phần tử `<title>`"
+  },
+  "lighthouse-core/audits/accessibility/duplicate-id.js | description": {
+    "message": "Giá trị của thuộc tính id phải là duy nhất, có như vậy công nghệ hỗ trợ mới không bỏ qua các điểm dữ liệu khác. [Tìm hiểu thêm](https://web.dev/duplicate-id/)."
+  },
+  "lighthouse-core/audits/accessibility/duplicate-id.js | failureTitle": {
+    "message": "Các thuộc tính `[id]` trên trang không phải là duy nhất"
+  },
+  "lighthouse-core/audits/accessibility/duplicate-id.js | title": {
+    "message": "Các thuộc tính `[id]` trên trang là duy nhất"
+  },
+  "lighthouse-core/audits/accessibility/frame-title.js | description": {
+    "message": "Người dùng trình đọc màn hình dựa vào tiêu đề khung để mô tả nội dung của khung. [Tìm hiểu thêm](https://web.dev/frame-title/)."
+  },
+  "lighthouse-core/audits/accessibility/frame-title.js | failureTitle": {
+    "message": "Phần tử `<frame>` hoặc `<iframe>` không có tiêu đề"
+  },
+  "lighthouse-core/audits/accessibility/frame-title.js | title": {
+    "message": "Các phần tử `<frame>` hoặc `<iframe>` có tiêu đề"
+  },
+  "lighthouse-core/audits/accessibility/html-has-lang.js | description": {
+    "message": "Nếu một trang chưa chỉ định thuộc tính ngôn ngữ, thì trình đọc màn hình sẽ xem như trang đó đang hiển thị bằng ngôn ngữ mặc định mà người dùng chọn khi thiết lập trình đọc màn hình. Nếu trên thực tế, trang đó không hiển thị bằng ngôn ngữ mặc định, tức là trình đọc màn hình có thể thông báo sai về văn bản của trang đó. [Tìm hiểu thêm](https://web.dev/html-has-lang/)."
+  },
+  "lighthouse-core/audits/accessibility/html-has-lang.js | failureTitle": {
+    "message": "Phần tử `<html>` chưa có thuộc tính `[lang]`"
+  },
+  "lighthouse-core/audits/accessibility/html-has-lang.js | title": {
+    "message": "Phần tử `<html>` có thuộc tính `[lang]`"
+  },
+  "lighthouse-core/audits/accessibility/html-lang-valid.js | description": {
+    "message": "Việc chỉ định [BCP 47 language](https://www.w3.org/International/questions/qa-choosing-language-tags#question) hợp lệ sẽ giúp trình đọc màn hình thông báo văn bản đúng cách. [Tìm hiểu thêm](https://web.dev/html-lang-valid/)."
+  },
+  "lighthouse-core/audits/accessibility/html-lang-valid.js | failureTitle": {
+    "message": "Thuộc tính `[lang]` của phần tử `<html>` không có giá trị hợp lệ."
+  },
+  "lighthouse-core/audits/accessibility/html-lang-valid.js | title": {
+    "message": "Thuộc tính `[lang]` của phần tử `<html>` có giá trị hợp lệ"
+  },
+  "lighthouse-core/audits/accessibility/image-alt.js | description": {
+    "message": "Các phần tử thông tin nên là đoạn văn bản thay thế ngắn, có tính mô tả. Có thể bỏ qua phần tử trang trí bằng một thuộc tính alt trống. [Tìm hiểu thêm](https://web.dev/image-alt/)."
+  },
+  "lighthouse-core/audits/accessibility/image-alt.js | failureTitle": {
+    "message": "Phần tử hình ảnh không có thuộc tính `[alt]`"
+  },
+  "lighthouse-core/audits/accessibility/image-alt.js | title": {
+    "message": "Các phần tử hình ảnh có thuộc tính `[alt]`"
+  },
+  "lighthouse-core/audits/accessibility/input-image-alt.js | description": {
+    "message": "Khi dùng một hình ảnh làm nút `<input>`, thì việc cung cấp văn bản thay thế có thể giúp người dùng trình đọc màn hình hiểu rõ mục đích của nút đó. [Tìm hiểu thêm](https://web.dev/input-image-alt/)."
+  },
+  "lighthouse-core/audits/accessibility/input-image-alt.js | failureTitle": {
+    "message": "Các phần tử `<input type=\"image\">` không có văn bản `[alt]`"
+  },
+  "lighthouse-core/audits/accessibility/input-image-alt.js | title": {
+    "message": "Các phần tử `<input type=\"image\">` có văn bản `[alt]`"
+  },
+  "lighthouse-core/audits/accessibility/label.js | description": {
+    "message": "Các nhãn đảm bảo rằng những công nghệ hỗ trợ, chẳng hạn như trình đọc màn hình, thông báo các biện pháp kiểm soát biểu mẫu đúng cách. [Tìm hiểu thêm](https://web.dev/label/)."
+  },
+  "lighthouse-core/audits/accessibility/label.js | failureTitle": {
+    "message": "Các phần tử biểu mẫu không có nhãn liên kết"
+  },
+  "lighthouse-core/audits/accessibility/label.js | title": {
+    "message": "Các phần tử biểu mẫu có nhãn liên quan"
+  },
+  "lighthouse-core/audits/accessibility/layout-table.js | description": {
+    "message": "Bảng đang dùng cho mục đích bố cục không nên bao gồm phần tử dữ liệu, chẳng hạn như th, phần tử chú thích hoặc thuộc tính tóm tắt, vì điều này có thể tạo ra trải nghiệm gây bối rối cho người dùng trình đọc màn hình. [Tìm hiểu thêm](https://web.dev/layout-table/)."
+  },
+  "lighthouse-core/audits/accessibility/layout-table.js | failureTitle": {
+    "message": "Các phần tử `<table>` dạng trình bày không tránh sử dụng `<th>`, `<caption>` hoặc thuộc tính `[summary]`."
+  },
+  "lighthouse-core/audits/accessibility/layout-table.js | title": {
+    "message": "Các phần tử `<table>` dạng trình bày tránh sử dụng `<th>`, `<caption>` hoặc thuộc tính `[summary]`."
+  },
+  "lighthouse-core/audits/accessibility/link-name.js | description": {
+    "message": "Văn bản liên kết (và văn bản thay thế cho hình ảnh, khi dùng làm đường dẫn liên kết) có thể thấy rõ, duy nhất và có thể lấy tiêu điểm sẽ cải thiện trải nghiệm khám phá cho người dùng trình đọc màn hình. [Tìm hiểu thêm](https://web.dev/link-name/)."
+  },
+  "lighthouse-core/audits/accessibility/link-name.js | failureTitle": {
+    "message": "Các phần tử liên kết không có tên có thể nhận rõ"
+  },
+  "lighthouse-core/audits/accessibility/link-name.js | title": {
+    "message": "Các phần tử liên kết có tên có thể nhận rõ"
+  },
+  "lighthouse-core/audits/accessibility/list.js | description": {
+    "message": "Các trình đọc màn hình có cách riêng để thông báo về danh sách. Khi danh sách có cấu trúc phù hợp, trình đọc màn hình sẽ thông báo về danh sách chính xác hơn. [Tìm hiểu thêm](https://web.dev/list/)."
+  },
+  "lighthouse-core/audits/accessibility/list.js | failureTitle": {
+    "message": "Danh sách không chỉ chứa các phần tử `<li>` và phần tử hỗ trợ tập lệnh (`<script>` và `<template>`)."
+  },
+  "lighthouse-core/audits/accessibility/list.js | title": {
+    "message": "Danh sách chỉ chứa các phần tử `<li>` và phần tử hỗ trợ tập lệnh (`<script>` và `<template>`)."
+  },
+  "lighthouse-core/audits/accessibility/listitem.js | description": {
+    "message": "Trình đọc màn hình yêu cầu các mục danh sách (`<li>`) phải có trong một `<ul>` hoặc `<ol>` mẹ để được thông báo đúng cách. [Tìm hiểu thêm](https://web.dev/listitem/)."
+  },
+  "lighthouse-core/audits/accessibility/listitem.js | failureTitle": {
+    "message": "Các mục trong danh sách (`<li>`) không có trong phần tử `<ul>` hoặc `<ol>` mẹ."
+  },
+  "lighthouse-core/audits/accessibility/listitem.js | title": {
+    "message": "Các mục trong danh sách (`<li>`) có trong phần tử mẹ `<ul>` hoặc `<ol>`"
+  },
+  "lighthouse-core/audits/accessibility/meta-refresh.js | description": {
+    "message": "Người dùng không muốn trang tự động làm mới. Khi trang tự động làm mới, tiêu điểm sẽ quay về đầu trang. Người dùng có thể cảm thấy khó chịu hoặc bị nhầm lẫn nếu gặp trường hợp này. [Tìm hiểu thêm](https://web.dev/meta-refresh/)."
+  },
+  "lighthouse-core/audits/accessibility/meta-refresh.js | failureTitle": {
+    "message": "Tài liệu này sử dụng `<meta http-equiv=\"refresh\">`"
+  },
+  "lighthouse-core/audits/accessibility/meta-refresh.js | title": {
+    "message": "Tài liệu này không dùng `<meta http-equiv=\"refresh\">`"
+  },
+  "lighthouse-core/audits/accessibility/meta-viewport.js | description": {
+    "message": "Việc tắt tính năng thu phóng sẽ gây trở ngại cho những người dùng có thị lực kém bị lệ thuộc vào chức năng phóng to màn hình để thấy rõ nội dung trang web. [Tìm hiểu thêm](https://web.dev/meta-viewport/)."
+  },
+  "lighthouse-core/audits/accessibility/meta-viewport.js | failureTitle": {
+    "message": "`[user-scalable=\"no\"]` được dùng trong phần tử `<meta name=\"viewport\">` hoặc thuộc tính `[maximum-scale]` nhỏ hơn 5."
+  },
+  "lighthouse-core/audits/accessibility/meta-viewport.js | title": {
+    "message": "`[user-scalable=\"no\"]` không được sử dụng trong phần tử `<meta name=\"viewport\">` và thuộc tính `[maximum-scale]` không nhỏ hơn 5."
+  },
+  "lighthouse-core/audits/accessibility/object-alt.js | description": {
+    "message": "Trình đọc màn hình không thể dịch nội dung không ở dạng văn bản. Khi bạn thêm văn bản thay thế vào các phần tử `<object>`, trình đọc màn hình sẽ truyền đạt được ý nghĩa cho người dùng. [Tìm hiểu thêm](https://web.dev/object-alt/)."
+  },
+  "lighthouse-core/audits/accessibility/object-alt.js | failureTitle": {
+    "message": "Các phần tử `<object>` không có văn bản `[alt]`"
+  },
+  "lighthouse-core/audits/accessibility/object-alt.js | title": {
+    "message": "Các phần tử `<object>` có văn bản `[alt]`"
+  },
+  "lighthouse-core/audits/accessibility/tabindex.js | description": {
+    "message": "Giá trị lớn hơn 0 ngụ ý thứ tự di chuyển rõ ràng. Mặc dù hợp lệ về mặt kỹ thuật nhưng điều này thường tạo ra trải nghiệm khó chịu cho những người dùng bị lệ thuộc vào công nghệ hỗ trợ. [Tìm hiểu thêm](https://web.dev/tabindex/)."
+  },
+  "lighthouse-core/audits/accessibility/tabindex.js | failureTitle": {
+    "message": "Một số phần tử có giá trị `[tabindex]` lớn hơn 0"
+  },
+  "lighthouse-core/audits/accessibility/tabindex.js | title": {
+    "message": "Không phần tử nào có giá trị `[tabindex]` lớn hơn 0"
+  },
+  "lighthouse-core/audits/accessibility/td-headers-attr.js | description": {
+    "message": "Trình đọc màn hình có các tính năng giúp người dùng dễ sử dụng bảng hơn. Việc đảm bảo các ô `<td>` sử dụng thuộc tính `[headers]` chỉ tham chiếu các ô khác trong cùng bảng có thể cải thiện trải nghiệm của người dùng trình đọc màn hình. [Tìm hiểu thêm](https://web.dev/td-headers-attr/)."
+  },
+  "lighthouse-core/audits/accessibility/td-headers-attr.js | failureTitle": {
+    "message": "Các ô trong một phần tử `<table>` sử dụng thuộc tính `[headers]` tham chiếu các ô khác trong chính bảng đó."
+  },
+  "lighthouse-core/audits/accessibility/td-headers-attr.js | title": {
+    "message": "Các ô trong phần tử `<table>` dùng thuộc tính `[headers]` chỉ tham chiếu các ô khác trong chính bảng đó."
+  },
+  "lighthouse-core/audits/accessibility/th-has-data-cells.js | description": {
+    "message": "Trình đọc màn hình có các tính năng giúp người dùng dễ sử dụng bảng hơn. Việc đảm bảo tiêu đề bảng luôn tham chiếu đến một nhóm ô nào đó có thể cải thiện trải nghiệm của người dùng trình đọc màn hình. [Tìm hiểu thêm](https://web.dev/th-has-data-cells/)."
+  },
+  "lighthouse-core/audits/accessibility/th-has-data-cells.js | failureTitle": {
+    "message": "Các phần tử `<th>` và phần tử có `[role=\"columnheader\"/\"rowheader\"]` không chứa các ô dữ liệu mà các phần tử đó mô tả."
+  },
+  "lighthouse-core/audits/accessibility/th-has-data-cells.js | title": {
+    "message": "Các phần tử `<th>` và phần tử có `[role=\"columnheader\"/\"rowheader\"]` chứa các ô dữ liệu mà các phần tử này mô tả."
+  },
+  "lighthouse-core/audits/accessibility/valid-lang.js | description": {
+    "message": "Việc chỉ định một [BCP 47 language](https://www.w3.org/International/questions/qa-choosing-language-tags#question) hợp lệ cho các phần tử sẽ giúp trình đọc màn hình phát âm văn bản chính xác. [Tìm hiểu thêm](https://web.dev/valid-lang/)."
+  },
+  "lighthouse-core/audits/accessibility/valid-lang.js | failureTitle": {
+    "message": "Các thuộc tính `[lang]` không có giá trị hợp lệ"
+  },
+  "lighthouse-core/audits/accessibility/valid-lang.js | title": {
+    "message": "Các thuộc tính `[lang]` có giá trị hợp lệ"
+  },
+  "lighthouse-core/audits/accessibility/video-caption.js | description": {
+    "message": "Video có phụ đề có thể giúp người dùng bị khiếm thính và nặng tai dễ dàng tiếp cận nội dung video hơn. [Tìm hiểu thêm](https://web.dev/video-caption/)."
+  },
+  "lighthouse-core/audits/accessibility/video-caption.js | failureTitle": {
+    "message": "Các phần tử `<video>` không chứa phần tử `<track>` có `[kind=\"captions\"]`."
+  },
+  "lighthouse-core/audits/accessibility/video-caption.js | title": {
+    "message": "Các phần tử `<video>` chứa phần tử `<track>` có `[kind=\"captions\"]`"
+  },
+  "lighthouse-core/audits/accessibility/video-description.js | description": {
+    "message": "Phần mô tả âm thanh cung cấp thông tin liên quan cho video mà phần hội thoại không thể làm được, chẳng hạn như cảnh và biểu cảm khuôn mặt. [Tìm hiểu thêm](https://web.dev/video-description/)."
+  },
+  "lighthouse-core/audits/accessibility/video-description.js | failureTitle": {
+    "message": "Các phần tử `<video>` không chứa phần tử `<track>` có `[kind=\"description\"]`."
+  },
+  "lighthouse-core/audits/accessibility/video-description.js | title": {
+    "message": "Các phần tử `<video>` chứa phần tử `<track>` có `[kind=\"description\"]`"
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | description": {
+    "message": "Hãy xác định `apple-touch-icon` để hiển thị đúng cách trên iOS khi người dùng thêm một ứng dụng web tiến bộ vào màn hình chính. Thuộc tính này phải trỏ đến ảnh PNG vuông có kích thước 192px (hoặc 180px) ở dạng không trong suốt. [Tìm hiểu thêm](https://developers.google.com/web/fundamentals/design-and-ux/browser-customization/)"
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | failureTitle": {
+    "message": "Chưa cung cấp `apple-touch-icon` hợp lệ"
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | precomposedWarning": {
+    "message": "`apple-touch-icon-precomposed` đã lỗi thời, nên dùng `apple-touch-icon`."
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | title": {
+    "message": "Hãy cung cấp `apple-touch-icon` hợp lệ"
+  },
+  "lighthouse-core/audits/bootup-time.js | chromeExtensionsWarning": {
+    "message": "Các tiện ích của Chrome ảnh hưởng tiêu cực đến hiệu suất tải của trang này. Hãy thử kiểm tra trang ở chế độ ẩn danh hoặc từ một hồ sơ trên Chrome không có tiện ích."
+  },
+  "lighthouse-core/audits/bootup-time.js | columnScriptEval": {
+    "message": "Đánh giá tập lệnh"
+  },
+  "lighthouse-core/audits/bootup-time.js | columnScriptParse": {
+    "message": "Phân tích cú pháp tập lệnh"
+  },
+  "lighthouse-core/audits/bootup-time.js | columnTotal": {
+    "message": "Tổng thời gian của CPU"
+  },
+  "lighthouse-core/audits/bootup-time.js | description": {
+    "message": "Hãy cân nhắc giảm thời gian dùng để phân tích cú pháp, biên soạn và thực thi JS. Bạn có thể giải quyết vấn đề này bằng cách phân phối các tải trọng JS nhỏ hơn. [Tìm hiểu thêm](https://developers.google.com/web/tools/lighthouse/audits/bootup)."
+  },
+  "lighthouse-core/audits/bootup-time.js | failureTitle": {
+    "message": "Giảm thời gian thực thi JavaScript"
+  },
+  "lighthouse-core/audits/bootup-time.js | title": {
+    "message": "Thời gian thực thi JavaScript"
+  },
+  "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | description": {
+    "message": "Ảnh GIF lớn không có hiệu quả trong việc phân phối nội dung động. Hãy cân nhắc sử dụng video MPEG4/WebM cho ảnh động và PNG/WebP cho ảnh tĩnh thay vì ảnh GIF để tiết kiệm dữ liệu mạng. [Tìm hiểu thêm](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/replace-animated-gifs-with-video/)"
+  },
+  "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | title": {
+    "message": "Sử dụng các định dạng video cho nội dung động"
+  },
+  "lighthouse-core/audits/byte-efficiency/offscreen-images.js | description": {
+    "message": "Hãy cân nhắc tải từng phần các hình ảnh ẩn và nằm ngoài màn hình sau khi tải xong tất cả tài nguyên quan trọng nhằm giảm thời gian tương tác. [Tìm hiểu thêm](https://developers.google.com/web/tools/lighthouse/audits/offscreen-images)."
+  },
+  "lighthouse-core/audits/byte-efficiency/offscreen-images.js | title": {
+    "message": "Trì hoãn tải các hình ảnh ngoài màn hình"
+  },
+  "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | description": {
+    "message": "Các tài nguyên đang chặn lần hiển thị đầu tiên của trang. Hãy cân nhắc phân phối nội dòng JS/Biểu định kiểu xếp chồng (CSS) quan trọng và trì hoãn mọi JS/kiểu không quan trọng. [Tìm hiểu thêm](https://developers.google.com/web/tools/lighthouse/audits/blocking-resources)."
+  },
+  "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | title": {
+    "message": "Loại bỏ các tài nguyên chặn hiển thị"
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | description": {
+    "message": "Tải trọng mạng lớn gây tốn kém cho người dùng và thường khiến thời gian tải lâu. [Tìm hiểu thêm](https://developers.google.com/web/tools/lighthouse/audits/network-payloads)."
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | displayValue": {
+    "message": "Tổng kích thước là {totalBytes, number, bytes} KB"
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | failureTitle": {
+    "message": "Tránh các tài nguyên lớn trên mạng"
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | title": {
+    "message": "Tránh tài nguyên lớn trên mạng"
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-css.js | description": {
+    "message": "Việc giảm kích thước tệp Biểu định kiểu xếp chồng (CSS) có thể giảm kích thước tải trọng mạng. [Tìm hiểu thêm](https://developers.google.com/web/tools/lighthouse/audits/minify-css)."
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-css.js | title": {
+    "message": "Rút gọn CSS"
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | description": {
+    "message": "Việc giảm kích thước tệp JavaScript có thể giảm kích thước tải trọng và thời gian phân tích cú pháp tập lệnh. [Tìm hiểu thêm](https://developers.google.com/speed/docs/insights/MinifyResources)."
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | title": {
+    "message": "Rút gọn JavaScript"
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | description": {
+    "message": "Hãy xóa các quy tắc vô hiệu khỏi biểu định kiểu và trì hoãn tải Biểu định kiểu xếp chồng (CSS) không dùng cho nội dung trong màn hình đầu tiên để giảm số byte không cần thiết mà hoạt động mạng sử dụng. [Tìm hiểu thêm](https://developers.google.com/web/tools/lighthouse/audits/unused-css)."
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | title": {
+    "message": "Xóa biểu định kiểu xếp chồng (CSS) không dùng"
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-javascript.js | description": {
+    "message": "Xóa JavaScript không dùng để giảm số byte tiêu tốn vào hoạt động mạng."
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-javascript.js | title": {
+    "message": "Xóa JavaScript không dùng"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | description": {
+    "message": "Bộ nhớ đệm có thời gian hữu dụng dài có thể giúp tăng tốc số lượt truy cập lặp lại vào trang của bạn. [Tìm hiểu thêm](https://developers.google.com/web/tools/lighthouse/audits/cache-policy)."
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | displayValue": {
+    "message": "{itemCount,plural, =1{Đã tìm thấy 1 tài nguyên}other{Đã tìm thấy # tài nguyên}}"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | failureTitle": {
+    "message": "Phân phối các nội dung tĩnh bằng chính sách bộ nhớ đệm hiệu quả"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | title": {
+    "message": "Sử dụng chính sách bộ nhớ đệm hiệu quả cho các nội dung tĩnh"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | description": {
+    "message": "Hình ảnh được tối ưu hóa sẽ tải nhanh hơn và tiêu tốn ít dữ liệu di động hơn. [Tìm hiểu thêm](https://developers.google.com/web/tools/lighthouse/audits/optimize-images)."
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | title": {
+    "message": "Mã hóa hình ảnh hiệu quả"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | description": {
+    "message": "Phân phát hình ảnh có kích thước phù hợp để tiết kiệm dữ liệu di động và cải thiện thời gian tải. [Tìm hiểu thêm](https://developers.google.com/web/tools/lighthouse/audits/oversized-images)."
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | title": {
+    "message": "Thay đổi kích thước hình ảnh cho phù hợp"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | description": {
+    "message": "Phải phân phát các tài nguyên dựa trên văn bản ở định dạng nén (gzip, deflate hoặc brotli) để giảm thiểu tổng số byte mạng. [Tìm hiểu thêm](https://developers.google.com/web/tools/lighthouse/audits/text-compression)."
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | title": {
+    "message": "Bật tính năng nén văn bản"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | description": {
+    "message": "Các định dạng hình ảnh như JPEG 2000, JPEG XR và WebP thường nén tốt hơn PNG hoặc JPEG, tức là tải xuống nhanh hơn và tiêu tốn ít dữ liệu hơn. [Tìm hiểu thêm](https://developers.google.com/web/tools/lighthouse/audits/webp)."
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | title": {
+    "message": "Phân phối hình ảnh ở định dạng mới và hiệu quả hơn"
+  },
+  "lighthouse-core/audits/content-width.js | description": {
+    "message": "Nếu chiều rộng của nội dung trong ứng dụng không khớp với chiều rộng của khung nhìn, thì ứng dụng có thể không được tối ưu hóa cho màn hình thiết bị di động. [Tìm hiểu thêm](https://developers.google.com/web/tools/lighthouse/audits/content-sized-correctly-for-viewport)"
+  },
+  "lighthouse-core/audits/content-width.js | explanation": {
+    "message": "Kích thước khung nhìn {innerWidth}px không khớp với kích thước cửa sổ {outerWidth}px."
+  },
+  "lighthouse-core/audits/content-width.js | failureTitle": {
+    "message": "Kích thước của nội dung không phù hợp với khung nhìn"
+  },
+  "lighthouse-core/audits/content-width.js | title": {
+    "message": "Kích thước của nội dung phù hợp với khung nhìn"
+  },
+  "lighthouse-core/audits/critical-request-chains.js | description": {
+    "message": "Các Chuỗi yêu cầu quan trọng dưới đây cho bạn biết những tài nguyên có mức độ ưu tiên cao sẽ được tải. Hãy cân nhắc giảm độ dài chuỗi, giảm kích thước tài nguyên tải xuống hoặc trì hoãn tải xuống các tài nguyên không cần thiết để cải thiện tốc độ tải trang. [Tìm hiểu thêm](https://developers.google.com/web/tools/lighthouse/audits/critical-request-chains)."
+  },
+  "lighthouse-core/audits/critical-request-chains.js | displayValue": {
+    "message": "{itemCount,plural, =1{Đã tìm thấy 1 chuỗi}other{Đã tìm thấy # chuỗi}}"
+  },
+  "lighthouse-core/audits/critical-request-chains.js | title": {
+    "message": "Giảm thiểu độ sâu của các yêu cầu quan trọng"
+  },
+  "lighthouse-core/audits/deprecations.js | columnDeprecate": {
+    "message": "Không dùng nữa/Cảnh báo"
+  },
+  "lighthouse-core/audits/deprecations.js | columnLine": {
+    "message": "Dòng"
+  },
+  "lighthouse-core/audits/deprecations.js | description": {
+    "message": "Cuối cùng, các API không dùng nữa sẽ bị xóa khỏi trình duyệt. [Tìm hiểu thêm](https://web.dev/deprecations)."
+  },
+  "lighthouse-core/audits/deprecations.js | displayValue": {
+    "message": "{itemCount,plural, =1{Tìm thấy 1 cảnh báo}other{Tìm thấy # cảnh báo}}"
+  },
+  "lighthouse-core/audits/deprecations.js | failureTitle": {
+    "message": "Sử dụng các API không dùng nữa"
+  },
+  "lighthouse-core/audits/deprecations.js | title": {
+    "message": "Tránh các API không dùng nữa"
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | description": {
+    "message": "Bộ nhớ đệm của ứng dụng không còn dùng nữa. [Tìm hiểu thêm](https://web.dev/appcache-manifest)."
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | displayValue": {
+    "message": "Tìm thấy \"{AppCacheManifest}\""
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | failureTitle": {
+    "message": "Dùng bộ nhớ đệm của ứng dụng"
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | title": {
+    "message": "Tránh sử dụng bộ nhớ đệm của ứng dụng"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | description": {
+    "message": "Khi bạn chỉ định loại tài liệu, trình duyệt sẽ không chuyển sang chế độ tương thích ngược. [Tìm hiểu thêm](https://web.dev/doctype)"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationBadDoctype": {
+    "message": "Tên loại tài liệu phải là chuỗi `html` viết thường"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationNoDoctype": {
+    "message": "Tài liệu phải chứa một loại tài liệu"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationPublicId": {
+    "message": "publicId lẽ ra phải là một chuỗi trống"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationSystemId": {
+    "message": "systemId lẽ ra phải là một chuỗi trống"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | failureTitle": {
+    "message": "Trang thiếu loại tài liệu HTML nên đã kích hoạt chế độ tương thích ngược"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | title": {
+    "message": "Trang có loại tài liệu HTML"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | columnElement": {
+    "message": "Phần tử"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | columnStatistic": {
+    "message": "Thống kê"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | columnValue": {
+    "message": "Giá trị"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | description": {
+    "message": "Các kỹ sư trình duyệt khuyến cáo rằng các trang không nên chứa quá 1.500 phần tử DOM. Tốt nhất là có độ sâu của cây nhỏ hơn 32 phần tử và có ít hơn 60 phần tử con/phần tử mẹ. Một DOM lớn có thể làm tăng mức sử dụng bộ nhớ, khiến [các phép tính về kiểu](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations) dài hơn, đồng thời tạo ra [các quy trình trình bày lại bố cục](https://developers.google.com/speed/articles/reflow) tốn kém. [Tìm hiểu thêm](https://web.dev/dom-size)."
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 phần tử}other{# phần tử}}"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | failureTitle": {
+    "message": "Tránh kích thước DOM quá lớn"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | statisticDOMDepth": {
+    "message": "Độ sâu DOM tối đa"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | statisticDOMElements": {
+    "message": "Tổng số các phần tử DOM"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | statisticDOMWidth": {
+    "message": "Phần tử con tối đa"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | title": {
+    "message": "Tránh kích thước DOM quá lớn"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | columnRel": {
+    "message": "Rel"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | columnTarget": {
+    "message": "Mục tiêu"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | description": {
+    "message": "Thêm `rel=\"noopener\"` hoặc `rel=\"noreferrer\"` vào mọi đường dẫn liên kết ngoài để cải thiện hiệu suất và ngăn chặn các lỗ hổng bảo mật. [Tìm hiểu thêm](https://web.dev/external-anchors-use-rel-noopener)."
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | failureTitle": {
+    "message": "Các đường dẫn liên kết đến các trang đích trên nhiều nguồn gốc là không an toàn"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | title": {
+    "message": "Các đường dẫn liên kết đến các trang đích trên nhiều nguồn gốc là an toàn"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | warning": {
+    "message": "Không thể xác định trang đích cho phần tử neo ({anchorHTML}). Nếu không dùng làm siêu liên kết, hãy cân nhắc xóa target=_blank."
+  },
+  "lighthouse-core/audits/dobetterweb/geolocation-on-start.js | description": {
+    "message": "Các trang web yêu cầu vị trí của người dùng mà không cung cấp ngữ cảnh sẽ khiến người dùng không tin tưởng hoặc bối rối. Hãy cân nhắc liên kết yêu cầu với hành động của người dùng. [Tìm hiểu thêm](https://web.dev/geolocation-on-start)."
+  },
+  "lighthouse-core/audits/dobetterweb/geolocation-on-start.js | failureTitle": {
+    "message": "Yêu cầu quyền truy cập vị trí địa lý khi tải trang"
+  },
+  "lighthouse-core/audits/dobetterweb/geolocation-on-start.js | title": {
+    "message": "Tránh yêu cầu quyền truy cập vị trí địa lý khi tải trang"
+  },
+  "lighthouse-core/audits/dobetterweb/js-libraries.js | columnVersion": {
+    "message": "Phiên bản"
+  },
+  "lighthouse-core/audits/dobetterweb/js-libraries.js | description": {
+    "message": "Phát hiện tất cả thư viện giao diện người dùng JavaScript trên trang này. [Tìm hiểu thêm](https://web.dev/js-libraries)"
+  },
+  "lighthouse-core/audits/dobetterweb/js-libraries.js | title": {
+    "message": "Thư viện JavaScript phát hiện được"
+  },
+  "lighthouse-core/audits/dobetterweb/no-document-write.js | description": {
+    "message": "Đối với những người dùng có kết nối chậm, các tập lệnh bên ngoài tự động được đưa vào qua `document.write()` có thể làm trang tải chậm hàng chục giây. [Tìm hiểu thêm](https://web.dev/no-document-write)."
+  },
+  "lighthouse-core/audits/dobetterweb/no-document-write.js | failureTitle": {
+    "message": "Sử dụng `document.write()`"
+  },
+  "lighthouse-core/audits/dobetterweb/no-document-write.js | title": {
+    "message": "Tránh `document.write()`"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | columnSeverity": {
+    "message": "Mức độ nghiêm trọng cao nhất"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | columnVersion": {
+    "message": "Phiên bản thư viện"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | columnVuln": {
+    "message": "Số lượng lỗ hổng"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | description": {
+    "message": "Một số tập lệnh của bên thứ ba có thể chứa các lỗ hổng bảo mật đã biết mà kẻ tấn công dễ dàng xác định và khai thác. [Tìm hiểu thêm](https://web.dev/no-vulnerable-libraries)."
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | displayValue": {
+    "message": "{itemCount,plural, =1{Phát hiện thấy 1 lỗ hổng}other{Phát hiện thấy # lỗ hổng}}"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | failureTitle": {
+    "message": "Bao gồm các thư viện giao diện người dùng JavaScript có những lỗ hổng bảo mật đã biết"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | rowSeverityHigh": {
+    "message": "Cao"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | rowSeverityLow": {
+    "message": "Thấp"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | rowSeverityMedium": {
+    "message": "Trung bình"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | title": {
+    "message": "Tránh các thư viện giao diện người dùng JavaScript có lỗ hổng bảo mật đã biết"
+  },
+  "lighthouse-core/audits/dobetterweb/notification-on-start.js | description": {
+    "message": "Các trang web gửi thông báo không có ngữ cảnh sẽ khiến người dùng không tin tưởng hoặc bối rối. Hãy cân nhắc liên kết yêu cầu với cử chỉ của người dùng. [Tìm hiểu thêm](https://web.dev/notification-on-start)."
+  },
+  "lighthouse-core/audits/dobetterweb/notification-on-start.js | failureTitle": {
+    "message": "Yêu cầu quyền truy cập thông báo khi tải trang"
+  },
+  "lighthouse-core/audits/dobetterweb/notification-on-start.js | title": {
+    "message": "Tránh yêu cầu quyền truy cập thông báo khi tải trang"
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | columnFailingElem": {
+    "message": "Các phần tử không đạt"
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | description": {
+    "message": "Việc ngăn dán mật khẩu sẽ làm giảm tác dụng của chính sách bảo mật hiệu quả. [Tìm hiểu thêm](https://web.dev/password-inputs-can-be-pasted-into)."
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | failureTitle": {
+    "message": "Ngăn người dùng dán vào các trường mật khẩu"
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | title": {
+    "message": "Cho phép người dùng dán vào các trường mật khẩu"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | columnProtocol": {
+    "message": "Giao thức"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | description": {
+    "message": "HTTP/2 mang lại nhiều lợi ích hơn HTTP/1.1, trong đó có tiêu đề nhị phân, đa hợp và máy chủ tự quyết. [Tìm hiểu thêm](https://web.dev/uses-http2)."
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | displayValue": {
+    "message": "{itemCount,plural, =1{Chưa phân phát 1 yêu cầu qua HTTP/2}other{Chưa phân phát # yêu cầu qua HTTP/2}}"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | failureTitle": {
+    "message": "Không sử dụng HTTP/2 cho tất cả các tài nguyên của trang web"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | title": {
+    "message": "Sử dụng HTTP/2 cho các tài nguyên của chính trang web"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-passive-event-listeners.js | description": {
+    "message": "Hãy cân nhắc đánh dấu trình xử lý sự kiện chạm và di chuyển con lăn là `passive` để cải thiện hiệu suất cuộn trên trang. [Tìm hiểu thêm](https://web.dev/uses-passive-event-listeners)."
+  },
+  "lighthouse-core/audits/dobetterweb/uses-passive-event-listeners.js | failureTitle": {
+    "message": "Không sử dụng trình nghe bị động để cải thiện hiệu suất cuộn"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-passive-event-listeners.js | title": {
+    "message": "Sử dụng trình nghe bị động để cải thiện hiệu suất cuộn"
+  },
+  "lighthouse-core/audits/errors-in-console.js | columnDesc": {
+    "message": "Nội dung mô tả"
+  },
+  "lighthouse-core/audits/errors-in-console.js | description": {
+    "message": "Các lỗi được ghi vào bảng điều khiển là những sự cố chưa giải quyết. Những sự cố này có thể do lỗi yêu cầu mạng và các vấn đề khác của trình duyệt gây ra. [Tìm hiểu thêm](https://web.dev/errors-in-console)"
+  },
+  "lighthouse-core/audits/errors-in-console.js | failureTitle": {
+    "message": "Đã ghi lỗi của trình duyệt vào bảng điều khiển"
+  },
+  "lighthouse-core/audits/errors-in-console.js | title": {
+    "message": "Chưa ghi lỗi nào của trình duyệt vào bảng điều khiển"
+  },
+  "lighthouse-core/audits/font-display.js | description": {
+    "message": "Sử dụng tính năng Biểu định kiểu xếp chồng (CSS) hiển thị phông chữ để đảm bảo văn bản hiển thị với người dùng khi phông chữ web đang tải. [Tìm hiểu thêm](https://developers.google.com/web/updates/2016/02/font-display)."
+  },
+  "lighthouse-core/audits/font-display.js | failureTitle": {
+    "message": "Đảm bảo văn bản vẫn hiển thị trong khi tải phông chữ web"
+  },
+  "lighthouse-core/audits/font-display.js | title": {
+    "message": "Tất cả văn bản vẫn hiển thị trong khi tải phông chữ web"
+  },
+  "lighthouse-core/audits/font-display.js | undeclaredFontURLWarning": {
+    "message": "Lighthouse không thể tự động kiểm tra giá trị hiển thị phông chữ cho URL sau: {fontURL}."
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | columnActual": {
+    "message": "Tỷ lệ khung hình (Thực tế)"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | columnDisplayed": {
+    "message": "Tỷ lệ khung hình (Hiển thị)"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | description": {
+    "message": "Kích thước hiển thị của hình ảnh phải khớp với tỷ lệ khung hình tự nhiên. [Tìm hiểu thêm](https://web.dev/image-aspect-ratio)."
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | failureTitle": {
+    "message": "Hiển thị hình ảnh có tỷ lệ khung hình không chính xác"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | title": {
+    "message": "Hiển thị hình ảnh có tỷ lệ khung hình chính xác"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | warningCompute": {
+    "message": "Thông tin kích thước hình ảnh không hợp lệ {url}"
+  },
+  "lighthouse-core/audits/installable-manifest.js | description": {
+    "message": "Các trình duyệt có thể chủ động nhắc người dùng thêm ứng dụng của bạn vào màn hình chính để tăng mức độ tương tác. [Tìm hiểu thêm](https://developers.google.com/web/tools/lighthouse/audits/install-prompt)"
+  },
+  "lighthouse-core/audits/installable-manifest.js | failureTitle": {
+    "message": "Tệp kê khai ứng dụng web không đáp ứng các yêu cầu về khả năng cài đặt"
+  },
+  "lighthouse-core/audits/installable-manifest.js | title": {
+    "message": "Tệp kê khai ứng dụng web đáp ứng các yêu cầu về khả năng cài đặt"
+  },
+  "lighthouse-core/audits/is-on-https.js | columnInsecureURL": {
+    "message": "URL không an toàn"
+  },
+  "lighthouse-core/audits/is-on-https.js | description": {
+    "message": "Bạn phải bảo vệ tất cả các trang web bằng HTTPS, kể cả những trang web không xử lý dữ liệu nhạy cảm. HTTPS ngăn kẻ xâm nhập can thiệp hoặc vô tình biết được nội dung trao đổi giữa ứng dụng và người dùng của bạn, đồng thời là điều kiện tiên quyết nếu bạn muốn dùng HTTP/2 và nhiều API nền tảng web mới. [Tìm hiểu thêm](https://web.dev/is-on-https)."
+  },
+  "lighthouse-core/audits/is-on-https.js | displayValue": {
+    "message": "{itemCount,plural, =1{Tìm thấy 1 yêu cầu không an toàn}other{Tìm thấy # yêu cầu không an toàn}}"
+  },
+  "lighthouse-core/audits/is-on-https.js | failureTitle": {
+    "message": "Không sử dụng HTTPS"
+  },
+  "lighthouse-core/audits/is-on-https.js | title": {
+    "message": "Sử dụng HTTPS"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | description": {
+    "message": "Tốc độ tải trang nhanh trên mạng di động giúp mang đến trải nghiệm tích cực cho người dùng thiết bị di động. [Tìm hiểu thêm](https://developers.google.com/web/tools/lighthouse/audits/fast-3g)."
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | displayValueText": {
+    "message": "Tương tác ở giây thứ {timeInMs, number, seconds}"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | displayValueTextWithOverride": {
+    "message": "Tương tác trên mạng di động mô phỏng ở giây thứ {timeInMs, number, seconds}"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | explanationLoadSlow": {
+    "message": "Trang của bạn tải quá chậm và không tương tác trong vòng 10 giây. Hãy xem các cơ hội và thông tin chẩn đoán trong phần \"Hiệu suất\" để tìm hiểu cách cải thiện."
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | failureTitle": {
+    "message": "Tốc độ tải trang không đủ nhanh trên mạng di động"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | title": {
+    "message": "Tốc độ tải trang đủ nhanh trên mạng di động"
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | columnCategory": {
+    "message": "Danh mục"
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | description": {
+    "message": "Hãy xem xét giảm thời gian dùng để phân tích cú pháp, biên soạn và thực thi JS. Bạn có thể giải quyết vấn đề này bằng cách phân phối các tải trọng JS nhỏ hơn."
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | failureTitle": {
+    "message": "Giảm thiểu công việc theo chuỗi chính"
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | title": {
+    "message": "Giảm thiểu công việc theo chuỗi chính"
+  },
+  "lighthouse-core/audits/manual/pwa-cross-browser.js | description": {
+    "message": "Để tiếp cận nhiều người dùng nhất, các trang web phải hoạt động trên mọi trình duyệt chính. [Tìm hiểu thêm](https://developers.google.com/web/progressive-web-apps/checklist#site-works-cross-browser)"
+  },
+  "lighthouse-core/audits/manual/pwa-cross-browser.js | title": {
+    "message": "Trang web hoạt động trên nhiều trình duyệt"
+  },
+  "lighthouse-core/audits/manual/pwa-each-page-has-url.js | description": {
+    "message": "Đảm bảo từng trang có thể liên kết sâu qua URL và URL là duy nhất, có như vậy thì mới chia sẻ được trên mạng xã hội. [Tìm hiểu thêm](https://developers.google.com/web/progressive-web-apps/checklist#each-page-has-a-url)"
+  },
+  "lighthouse-core/audits/manual/pwa-each-page-has-url.js | title": {
+    "message": "Mỗi trang có một URL"
+  },
+  "lighthouse-core/audits/manual/pwa-page-transitions.js | description": {
+    "message": "Quá trình chuyển tiếp phải diễn ra ngay khi bạn nhấn vào, kể cả khi mạng chậm, một yếu tố then chốt để tăng hiệu suất cảm nhận. [Tìm hiểu thêm](https://developers.google.com/web/progressive-web-apps/checklist#page-transitions-dont-feel-like-they-block-on-the-network)"
+  },
+  "lighthouse-core/audits/manual/pwa-page-transitions.js | title": {
+    "message": "Quá trình chuyển tiếp trang không bị chậm trễ do mạng"
+  },
+  "lighthouse-core/audits/metrics/estimated-input-latency.js | description": {
+    "message": "Thời gian chờ nhập thông tin theo ước tính là thời gian ước tính mà ứng dụng cần để phản hồi thông tin do người dùng nhập (tính bằng mili giây) trong khoảng thời gian 5 giây tải nhiều trang nhất. Nếu người dùng phải chờ quá 50 mili giây, thì ứng dụng của bạn bị coi là chạy chậm. [Tìm hiểu thêm](https://developers.google.com/web/tools/lighthouse/audits/estimated-input-latency)."
+  },
+  "lighthouse-core/audits/metrics/estimated-input-latency.js | title": {
+    "message": "Thời gian chờ nhập thông tin theo ước tính"
+  },
+  "lighthouse-core/audits/metrics/first-contentful-paint.js | description": {
+    "message": "Chỉ số Hiển thị nội dung đầu tiên đánh dấu thời điểm hiển thị văn bản hoặc hình ảnh đầu tiên. [Tìm hiểu thêm](https://developers.google.com/web/tools/lighthouse/audits/first-contentful-paint)."
+  },
+  "lighthouse-core/audits/metrics/first-contentful-paint.js | title": {
+    "message": "Hình ảnh có nội dung đầu tiên"
+  },
+  "lighthouse-core/audits/metrics/first-cpu-idle.js | description": {
+    "message": "Chỉ số CPU nhàn rỗi đầu tiên đánh dấu thời điểm đầu tiên chuỗi chính của trang không phải xử lý quá nhiều thông tin nhập vào. [Tìm hiểu thêm](https://developers.google.com/web/tools/lighthouse/audits/first-interactive)."
+  },
+  "lighthouse-core/audits/metrics/first-cpu-idle.js | title": {
+    "message": "CPU nhàn rỗi đầu tiên"
+  },
+  "lighthouse-core/audits/metrics/first-meaningful-paint.js | description": {
+    "message": "Chỉ số Hiển thị nội dung đầu tiên đo lường thời điểm hiển thị nội dung chính của trang. [Tìm hiểu thêm](https://developers.google.com/web/tools/lighthouse/audits/first-meaningful-paint)."
+  },
+  "lighthouse-core/audits/metrics/first-meaningful-paint.js | title": {
+    "message": "Hình ảnh có ý nghĩa đầu tiên"
+  },
+  "lighthouse-core/audits/metrics/interactive.js | description": {
+    "message": "Thời điểm tương tác là khoảng thời gian mà trang cần để trở nên hoàn toàn tương tác. [Tìm hiểu thêm](https://developers.google.com/web/tools/lighthouse/audits/consistently-interactive)."
+  },
+  "lighthouse-core/audits/metrics/interactive.js | title": {
+    "message": "Thời điểm tương tác"
+  },
+  "lighthouse-core/audits/metrics/max-potential-fid.js | description": {
+    "message": "Thời gian phản hồi lần tương tác đầu tiên tối đa mà người dùng có thể gặp phải là thời gian thực hiện nhiệm vụ lâu nhất (tính bằng mili giây). [Tìm hiểu thêm](https://developers.google.com/web/updates/2018/05/first-input-delay)."
+  },
+  "lighthouse-core/audits/metrics/max-potential-fid.js | title": {
+    "message": "Thời gian phản hồi lần tương tác đầu tiên tối đa có thể"
+  },
+  "lighthouse-core/audits/metrics/speed-index.js | description": {
+    "message": "Chỉ số tốc độ cho biết nội dung của một trang hiển thị nhanh chóng đến mức nào. [Tìm hiểu thêm](https://developers.google.com/web/tools/lighthouse/audits/speed-index)."
+  },
+  "lighthouse-core/audits/metrics/speed-index.js | title": {
+    "message": "Chỉ số tốc độ"
+  },
+  "lighthouse-core/audits/metrics/total-blocking-time.js | description": {
+    "message": "Tổng tất cả các khoảng thời gian giữa thời điểm Hiển thị nội dung đầu tiên (FCP) và Thời điểm tương tác khi thời gian nhiệm vụ vượt quá 50 mili giây được biểu thị bằng đơn vị mili giây."
+  },
+  "lighthouse-core/audits/metrics/total-blocking-time.js | title": {
+    "message": "Tổng thời gian chặn"
+  },
+  "lighthouse-core/audits/network-rtt.js | description": {
+    "message": "Thời gian trọn vòng (RTT) của mạng có ảnh hưởng lớn đến hiệu suất. Nếu mất nhiều thời gian trọn vòng (RTT) để đến một nguồn gốc, tức là máy chủ càng gần người dùng thì hiệu quả càng cao. [Tìm hiểu thêm](https://hpbn.co/primer-on-latency-and-bandwidth/)."
+  },
+  "lighthouse-core/audits/network-rtt.js | title": {
+    "message": "Thời gian trọn vòng của mạng"
+  },
+  "lighthouse-core/audits/network-server-latency.js | description": {
+    "message": "Thời gian chờ của máy chủ có thể ảnh hưởng đến hiệu suất của trang web. Nếu máy chủ của một nguồn gốc có thời gian chờ cao, tức là máy chủ bị quá tải hoặc có hiệu suất phụ trợ thấp. [Tìm hiểu thêm](https://hpbn.co/primer-on-web-performance/#analyzing-the-resource-waterfall)."
+  },
+  "lighthouse-core/audits/network-server-latency.js | title": {
+    "message": "Thời gian dưới nền của máy chủ"
+  },
+  "lighthouse-core/audits/offline-start-url.js | description": {
+    "message": "Trình chạy dịch vụ giúp ứng dụng web của bạn hoạt động ổn định trong điều kiện mạng chập chờn. [Tìm hiểu thêm](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)"
+  },
+  "lighthouse-core/audits/offline-start-url.js | failureTitle": {
+    "message": "`start_url` không phản hồi kèm mã trạng thái 200 khi không có mạng"
+  },
+  "lighthouse-core/audits/offline-start-url.js | title": {
+    "message": "`start_url` phản hồi kèm mã trạng thái 200 khi không có mạng"
+  },
+  "lighthouse-core/audits/offline-start-url.js | warningCantStart": {
+    "message": "Lighthouse không đọc được `start_url` trong tệp kê khai. Do đó, `start_url` được giả định là URL của tài liệu. Thông báo lỗi: '{manifestWarning}'."
+  },
+  "lighthouse-core/audits/performance-budget.js | columnOverBudget": {
+    "message": "Vượt ngân sách"
+  },
+  "lighthouse-core/audits/performance-budget.js | description": {
+    "message": "Đảm bảo số lượng và quy mô của yêu cầu mạng thấp hơn mục tiêu đặt ra của ngân sách hiệu suất đã cung cấp. [Tìm hiểu thêm](https://developers.google.com/web/tools/lighthouse/audits/budgets)."
+  },
+  "lighthouse-core/audits/performance-budget.js | requestCountOverBudget": {
+    "message": "{count,plural, =1{1 yêu cầu}other{# yêu cầu}}"
+  },
+  "lighthouse-core/audits/performance-budget.js | title": {
+    "message": "Ngân sách hiệu suất"
+  },
+  "lighthouse-core/audits/redirects-http.js | description": {
+    "message": "Nếu bạn thiết lập HTTPS từ trước, hãy nhớ chuyển hướng toàn bộ lưu lượng truy cập HTTP tới HTTPS để bật các tính năng web an toàn cho tất cả người dùng. [Tìm hiểu thêm](https://developers.google.com/web/tools/lighthouse/audits/http-redirects-to-https)"
+  },
+  "lighthouse-core/audits/redirects-http.js | failureTitle": {
+    "message": "Không chuyển hướng lưu lượng truy cập HTTP tới HTTPS"
+  },
+  "lighthouse-core/audits/redirects-http.js | title": {
+    "message": "Chuyển hướng lưu lượng truy cập HTTP tới HTTPS"
+  },
+  "lighthouse-core/audits/redirects.js | description": {
+    "message": "Các lần chuyển hướng sẽ làm giảm tốc độ tải trang. [Tìm hiểu thêm](https://developers.google.com/web/tools/lighthouse/audits/redirects)."
+  },
+  "lighthouse-core/audits/redirects.js | title": {
+    "message": "Tránh chuyển hướng trang nhiều lần"
+  },
+  "lighthouse-core/audits/resource-summary.js | description": {
+    "message": "Để thiết lập ngân sách cho số lượng và quy mô của tài nguyên trang, hãy thêm tệp budget.json. [Tìm hiểu thêm](https://developers.google.com/web/tools/lighthouse/audits/budgets)."
+  },
+  "lighthouse-core/audits/resource-summary.js | displayValue": {
+    "message": "{requestCount,plural, =1{1 yêu cầu • {byteCount, number, bytes} KB}other{# yêu cầu • {byteCount, number, bytes} KB}}"
+  },
+  "lighthouse-core/audits/resource-summary.js | title": {
+    "message": "Giảm số lượng yêu cầu và chuyển những tài nguyên có kích thước nhỏ"
+  },
+  "lighthouse-core/audits/seo/canonical.js | description": {
+    "message": "Phần tử liên kết chính tắc đề xuất URL nào nên hiển thị trong kết quả tìm kiếm. [Tìm hiểu thêm](https://web.dev/canonical)."
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationConflict": {
+    "message": "Nhiều URL xung đột ({urlList})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationDifferentDomain": {
+    "message": "Trỏ đến một miền khác ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationInvalid": {
+    "message": "URL không hợp lệ ({url})."
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationPointsElsewhere": {
+    "message": "Trỏ đến một vị trí `hreflang` khác ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationRelative": {
+    "message": "URL tương đối ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationRoot": {
+    "message": "Trỏ đến URL gốc của miền (trang chủ) thay vì trang nội dung tương đương"
+  },
+  "lighthouse-core/audits/seo/canonical.js | failureTitle": {
+    "message": "Tài liệu không có `rel=canonical` hợp lệ"
+  },
+  "lighthouse-core/audits/seo/canonical.js | title": {
+    "message": "Tài liệu có `rel=canonical` hợp lệ"
+  },
+  "lighthouse-core/audits/seo/font-size.js | description": {
+    "message": "Cỡ chữ dưới 12 pixel là quá nhỏ và khó đọc, buộc khách truy cập trên thiết bị di động phải “chụm để thu phóng” mới đọc được. Tốt nhất là hơn 60% văn bản trên trang có cỡ chữ lớn hơn hoặc bằng 12 pixel. [Tìm hiểu thêm](https://web.dev/font-size)."
+  },
+  "lighthouse-core/audits/seo/font-size.js | displayValue": {
+    "message": "{decimalProportion, number, extendedPercent} văn bản dễ đọc"
+  },
+  "lighthouse-core/audits/seo/font-size.js | explanationViewport": {
+    "message": "Văn bản không đọc được vì không có thẻ meta viewport nào được tối ưu hóa cho màn hình thiết bị di động."
+  },
+  "lighthouse-core/audits/seo/font-size.js | explanationWithDisclaimer": {
+    "message": "Văn bản có tỷ lệ {decimalProportion, number, extendedPercent} là quá nhỏ (căn cứ vào mẫu {decimalProportionVisited, number, extendedPercent})."
+  },
+  "lighthouse-core/audits/seo/font-size.js | failureTitle": {
+    "message": "Tài liệu không sử dụng cỡ chữ dễ đọc"
+  },
+  "lighthouse-core/audits/seo/font-size.js | title": {
+    "message": "Tài liệu sử dụng cỡ chữ dễ đọc"
+  },
+  "lighthouse-core/audits/seo/hreflang.js | description": {
+    "message": "Các phần tử liên kết hreflang cho công cụ tìm kiếm biết nên liệt kê phiên bản trang nào trong kết quả tìm kiếm cho một ngôn ngữ hoặc khu vực cụ thể. [Tìm hiểu thêm](https://web.dev/hreflang)."
+  },
+  "lighthouse-core/audits/seo/hreflang.js | failureTitle": {
+    "message": "Tài liệu không có `hreflang` hợp lệ"
+  },
+  "lighthouse-core/audits/seo/hreflang.js | title": {
+    "message": "Tài liệu có `hreflang` hợp lệ"
+  },
+  "lighthouse-core/audits/seo/http-status-code.js | description": {
+    "message": "Các trang có mã trạng thái HTTP không thành công có thể được lập chỉ mục không chính xác. [Tìm hiểu thêm](https://web.dev/http-status-code)."
+  },
+  "lighthouse-core/audits/seo/http-status-code.js | failureTitle": {
+    "message": "Trang có mã trạng thái HTTP không thành công"
+  },
+  "lighthouse-core/audits/seo/http-status-code.js | title": {
+    "message": "Trang có mã trạng thái HTTP thành công"
+  },
+  "lighthouse-core/audits/seo/is-crawlable.js | description": {
+    "message": "Các công cụ tìm kiếm không thể đưa trang của bạn vào kết quả tìm kiếm nếu bạn không cấp cho các công cụ này quyền thu thập thông tin của trang. [Tìm hiểu thêm](https://web.dev/is-crawable)."
+  },
+  "lighthouse-core/audits/seo/is-crawlable.js | failureTitle": {
+    "message": "Trang bị chặn lập chỉ mục"
+  },
+  "lighthouse-core/audits/seo/is-crawlable.js | title": {
+    "message": "Trang không bị chặn lập chỉ mục"
+  },
+  "lighthouse-core/audits/seo/link-text.js | description": {
+    "message": "Văn bản mô tả trên đường dẫn liên kết giúp công cụ tìm kiếm hiểu được nội dung của bạn. [Tìm hiểu thêm](https://web.dev/link-text)."
+  },
+  "lighthouse-core/audits/seo/link-text.js | displayValue": {
+    "message": "{itemCount,plural, =1{Đã tìm thấy 1 liên kết}other{Đã tìm thấy # liên kết}}"
+  },
+  "lighthouse-core/audits/seo/link-text.js | failureTitle": {
+    "message": "Các phần tử liên kết không có văn bản mô tả"
+  },
+  "lighthouse-core/audits/seo/link-text.js | title": {
+    "message": "Các phần tử liên kết có văn bản mô tả"
+  },
+  "lighthouse-core/audits/seo/manual/structured-data.js | description": {
+    "message": "Chạy [Công cụ kiểm tra dữ liệu có cấu trúc](https://search.google.com/structured-data/testing-tool/) và [Công cụ khử lỗi dữ liệu có cấu trúc](http://linter.structured-data.org/) để xác thực loại dữ liệu này. [Tìm hiểu thêm](https://web.dev/structured-data)."
+  },
+  "lighthouse-core/audits/seo/manual/structured-data.js | title": {
+    "message": "Dữ liệu có cấu trúc là hợp lệ"
+  },
+  "lighthouse-core/audits/seo/meta-description.js | description": {
+    "message": "Bạn có thể thêm phần mô tả meta vào kết quả tìm kiếm để tóm tắt ngắn gọn nội dung trang. [Tìm hiểu thêm](https://web.dev/meta-description)."
+  },
+  "lighthouse-core/audits/seo/meta-description.js | explanation": {
+    "message": "Văn bản mô tả hiện đang trống."
+  },
+  "lighthouse-core/audits/seo/meta-description.js | failureTitle": {
+    "message": "Tài liệu không có phần mô tả meta"
+  },
+  "lighthouse-core/audits/seo/meta-description.js | title": {
+    "message": "Tài liệu có phần mô tả meta"
+  },
+  "lighthouse-core/audits/seo/plugins.js | description": {
+    "message": "Các công cụ tìm kiếm không thể lập chỉ mục nội dung plugin và nhiều thiết bị hạn chế hoặc không hỗ trợ plugin. [Tìm hiểu thêm](https://web.dev/plugins)."
+  },
+  "lighthouse-core/audits/seo/plugins.js | failureTitle": {
+    "message": "Tài liệu sử dụng plugin"
+  },
+  "lighthouse-core/audits/seo/plugins.js | title": {
+    "message": "Tài liệu tránh sử dụng plugin"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | description": {
+    "message": "Nếu định dạng của tệp robots.txt không đúng, thì trình thu thập thông tin có thể không hiểu được cách bạn muốn thu thập thông tin hoặc lập chỉ mục trang web. [Tìm hiểu thêm](https://web.dev/robots-txt)"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | displayValueHttpBadCode": {
+    "message": "Yêu cầu robots.txt trả về trạng thái HTTP: {statusCode}"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | displayValueValidationError": {
+    "message": "{itemCount,plural, =1{Đã tìm thấy 1 lỗi}other{Đã tìm thấy # lỗi}}"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | explanation": {
+    "message": "Lighthouse không tải được tệp robots.txt xuống"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | failureTitle": {
+    "message": "robots.txt không hợp lệ"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | title": {
+    "message": "robots.txt hợp lệ"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | description": {
+    "message": "Các phần tử tương tác, chẳng hạn như nút và phần tử liên kết, nên có kích thước đủ lớn (48x48 pixel) và khoảng cách xung quanh các phần tử này đủ để nhấn mà không chồng chéo lên các phần tử khác. [Tìm hiểu thêm](https://web.dev/tap-targets)."
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | displayValue": {
+    "message": "{decimalProportion, number, percent} mục tiêu nhấn có kích thước phù hợp"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | explanationViewportMetaNotOptimized": {
+    "message": "Mục tiêu nhấn có kích thước quá nhỏ do không có thẻ meta viewport nào được tối ưu hóa cho màn hình thiết bị di động"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | failureTitle": {
+    "message": "Các mục tiêu nhấn có kích thước không phù hợp"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | overlappingTargetHeader": {
+    "message": "Mục tiêu chồng chéo"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | tapTargetHeader": {
+    "message": "Mục tiêu nhấn"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | title": {
+    "message": "Mục tiêu nhấn có kích thước phù hợp"
+  },
+  "lighthouse-core/audits/service-worker.js | description": {
+    "message": "Trình chạy dịch vụ là công nghệ cho phép ứng dụng của bạn dùng nhiều tính năng của Ứng dụng web tiến bộ, chẳng hạn như thêm vào màn hình chính khi không có mạng và thông báo đẩy. [Tìm hiểu thêm](https://developers.google.com/web/tools/lighthouse/audits/registered-service-worker)"
+  },
+  "lighthouse-core/audits/service-worker.js | explanationBadManifest": {
+    "message": "Trang này do một trình chạy dịch vụ kiểm soát. Tuy nhiên, không tìm thấy `start_url` vì tệp kê khai không thể phân tích cú pháp thành tệp JSON hợp lệ"
+  },
+  "lighthouse-core/audits/service-worker.js | explanationBadStartUrl": {
+    "message": "Trang này do một trình chạy dịch vụ kiểm soát. Tuy nhiên, `start_url` ({startUrl}) không thuộc phạm vi kiểm soát của trình chạy này ({scopeUrl})"
+  },
+  "lighthouse-core/audits/service-worker.js | explanationNoManifest": {
+    "message": "Trang này do một trình chạy dịch vụ kiểm soát. Tuy nhiên, không tìm thấy `start_url` vì không tìm nạp được tệp kê khai."
+  },
+  "lighthouse-core/audits/service-worker.js | explanationOutOfScope": {
+    "message": "Nguồn gốc này có tối thiểu một trình chạy dịch vụ. Tuy nhiên, trang ({pageUrl}) không thuộc phạm vi kiểm soát của các trình chạy này."
+  },
+  "lighthouse-core/audits/service-worker.js | failureTitle": {
+    "message": "Không đăng ký một trình chạy dịch vụ kiểm soát trang và `start_url`"
+  },
+  "lighthouse-core/audits/service-worker.js | title": {
+    "message": "Đăng ký một trình chạy dịch vụ kiểm soát trang và `start_url`"
+  },
+  "lighthouse-core/audits/splash-screen.js | description": {
+    "message": "Màn hình chờ theo chủ đề giúp đảm bảo người dùng có trải nghiệm chất lượng cao khi chạy ứng dụng từ màn hình chính. [Tìm hiểu thêm](https://developers.google.com/web/tools/lighthouse/audits/custom-splash-screen)"
+  },
+  "lighthouse-core/audits/splash-screen.js | failureTitle": {
+    "message": "Chưa được định cấu hình cho màn hình chờ tùy chỉnh"
+  },
+  "lighthouse-core/audits/splash-screen.js | title": {
+    "message": "Đã định cấu hình cho màn hình chờ tùy chỉnh"
+  },
+  "lighthouse-core/audits/themed-omnibox.js | description": {
+    "message": "Bạn có thể đặt màu chủ đề cho thanh địa chỉ trên trình duyệt để phù hợp với trang web của mình. [Tìm hiểu thêm](https://developers.google.com/web/tools/lighthouse/audits/address-bar)"
+  },
+  "lighthouse-core/audits/themed-omnibox.js | failureTitle": {
+    "message": "Không đặt màu chủ đề cho thanh địa chỉ."
+  },
+  "lighthouse-core/audits/themed-omnibox.js | title": {
+    "message": "Đặt màu chủ đề cho thanh địa chỉ."
+  },
+  "lighthouse-core/audits/third-party-summary.js | columnBlockingTime": {
+    "message": "Thời gian chặn chuỗi chính"
+  },
+  "lighthouse-core/audits/third-party-summary.js | columnThirdParty": {
+    "message": "Bên thứ ba"
+  },
+  "lighthouse-core/audits/third-party-summary.js | description": {
+    "message": "Mã của bên thứ ba có thể tác động đáng kể đến hiệu suất tải. Hãy hạn chế số nhà cung cấp bên thứ ba dư thừa và cố gắng tải mã của bên thứ ba sau khi trang của bạn hoàn thành phần lớn quá trình tải. [Tìm hiểu thêm](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/loading-third-party-javascript/)."
+  },
+  "lighthouse-core/audits/third-party-summary.js | displayValue": {
+    "message": "Mã của bên thứ ba đã chặn chuỗi chính trong {timeInMs, number, milliseconds} mili giây"
+  },
+  "lighthouse-core/audits/third-party-summary.js | failureTitle": {
+    "message": "Giảm mức ảnh hưởng của mã bên thứ ba"
+  },
+  "lighthouse-core/audits/third-party-summary.js | title": {
+    "message": "Việc sử dụng mã của bên thứ ba"
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | description": {
+    "message": "Chỉ số Thời gian cho byte đầu tiên xác định thời gian máy chủ của bạn gửi phản hồi. [Tìm hiểu thêm](https://developers.google.com/web/tools/lighthouse/audits/ttfb)."
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | displayValue": {
+    "message": "Tài liệu gốc mất {timeInMs, number, milliseconds} mili giây"
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | failureTitle": {
+    "message": "Giảm thời gian phản hồi của máy chủ (TTFB)"
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | title": {
+    "message": "Thời gian phản hồi của máy chủ chậm (TTFB)"
+  },
+  "lighthouse-core/audits/user-timings.js | columnDuration": {
+    "message": "Thời lượng"
+  },
+  "lighthouse-core/audits/user-timings.js | columnStartTime": {
+    "message": "Thời gian bắt đầu"
+  },
+  "lighthouse-core/audits/user-timings.js | columnType": {
+    "message": "Loại"
+  },
+  "lighthouse-core/audits/user-timings.js | description": {
+    "message": "Hãy cân nhắc trang bị API Thời gian người dùng cho ứng dụng để đo lường hiệu suất thực tế của ứng dụng trong trải nghiệm người dùng chính. [Tìm hiểu thêm](https://developers.google.com/web/tools/lighthouse/audits/user-timing)."
+  },
+  "lighthouse-core/audits/user-timings.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 dấu thời gian người dùng}other{# dấu thời gian người dùng}}"
+  },
+  "lighthouse-core/audits/user-timings.js | title": {
+    "message": "Các thời điểm cụ thể và khoảng thời gian được ghi lại bằng API Thời gian người dùng"
+  },
+  "lighthouse-core/audits/uses-rel-preconnect.js | crossoriginWarning": {
+    "message": "Tìm thấy <link> kết nối trước cho \"{securityOrigin}\" nhưng trình duyệt không sử dụng phần tử liên kết này. Hãy kiểm tra để đảm bảo rằng bạn đang sử dụng thuộc tính `crossorigin` đúng cách."
+  },
+  "lighthouse-core/audits/uses-rel-preconnect.js | description": {
+    "message": "Hãy cân nhắc thêm các gợi ý về tài nguyên `preconnect` hoặc `dns-prefetch` để thiết lập kết nối sớm tới những nguồn gốc quan trọng của bên thứ ba. [Tìm hiểu thêm](https://developers.google.com/web/fundamentals/performance/resource-prioritization#preconnect)"
+  },
+  "lighthouse-core/audits/uses-rel-preconnect.js | title": {
+    "message": "Kết nối trước với các tên miền bắt buộc"
+  },
+  "lighthouse-core/audits/uses-rel-preload.js | crossoriginWarning": {
+    "message": "Tìm thấy <link> tải trước cho \"{preloadURL}\" nhưng trình duyệt không sử dụng phần tử liên kết này. Hãy kiểm tra để đảm bảo rằng bạn đang sử dụng thuộc tính `crossorigin` đúng cách."
+  },
+  "lighthouse-core/audits/uses-rel-preload.js | description": {
+    "message": "Hãy cân nhắc sử dụng `<link rel=preload>` để ưu tiên tìm nạp các tài nguyên đang được yêu cầu vào một thời điểm khác trong quá trình tải trang. [Tìm hiểu thêm](https://developers.google.com/web/tools/lighthouse/audits/preload)."
+  },
+  "lighthouse-core/audits/uses-rel-preload.js | title": {
+    "message": "Tải trước các yêu cầu chính"
+  },
+  "lighthouse-core/audits/viewport.js | description": {
+    "message": "Thêm thẻ `<meta name=\"viewport\">` để tối ưu hóa ứng dụng của bạn cho màn hình thiết bị di động. [Tìm hiểu thêm](https://developers.google.com/web/tools/lighthouse/audits/has-viewport-meta-tag)"
+  },
+  "lighthouse-core/audits/viewport.js | explanationNoTag": {
+    "message": "Không tìm thấy thẻ `<meta name=\"viewport\">`"
+  },
+  "lighthouse-core/audits/viewport.js | failureTitle": {
+    "message": "Không có thẻ `<meta name=\"viewport\">` có `width` hoặc `initial-scale`"
+  },
+  "lighthouse-core/audits/viewport.js | title": {
+    "message": "Có thẻ `<meta name=\"viewport\">` có `width` hoặc `initial-scale`"
+  },
+  "lighthouse-core/audits/without-javascript.js | description": {
+    "message": "Ứng dụng của bạn phải hiển thị nội dung nào đó khi JavaScript bị tắt, ngay cả khi đó chỉ là cảnh báo cho người dùng biết phải có JavaScript mới dùng được ứng dụng. [Tìm hiểu thêm](https://developers.google.com/web/tools/lighthouse/audits/no-js)."
+  },
+  "lighthouse-core/audits/without-javascript.js | explanation": {
+    "message": "Phần nội dung trang phải hiển thị nội dung nào đó ngay cả khi không tải được tập lệnh"
+  },
+  "lighthouse-core/audits/without-javascript.js | failureTitle": {
+    "message": "Không cung cấp nội dung dự phòng khi JavaScript không hoạt động"
+  },
+  "lighthouse-core/audits/without-javascript.js | title": {
+    "message": "Chứa nội dung nào đó khi JavaScript không hoạt động"
+  },
+  "lighthouse-core/audits/works-offline.js | description": {
+    "message": "Nếu bạn đang tạo một Ứng dụng web tiến bộ, hãy cân nhắc dùng trình chạy dịch vụ để ứng dụng có thể hoạt động khi không có mạng. [Tìm hiểu thêm](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)"
+  },
+  "lighthouse-core/audits/works-offline.js | failureTitle": {
+    "message": "Trang hiện tại không phản hồi kèm mã trạng thái 200 khi không có mạng"
+  },
+  "lighthouse-core/audits/works-offline.js | title": {
+    "message": "Trang hiện tại phản hồi kèm mã trạng thái 200 khi không có mạng"
+  },
+  "lighthouse-core/audits/works-offline.js | warningNoLoad": {
+    "message": "Trang này có thể không tải được khi không có mạng vì URL kiểm tra ({requested}) đã được chuyển hướng tới \"{final}\". Hãy thử kiểm tra trực tiếp URL thứ hai."
+  },
+  "lighthouse-core/config/default-config.js | a11yAriaGroupDescription": {
+    "message": "Đây là những cơ hội giúp cải thiện việc sử dụng ARIA trong ứng dụng của bạn, nhờ đó có thể nâng cao trải nghiệm cho người dùng công nghệ hỗ trợ, chẳng hạn như trình đọc màn hình."
+  },
+  "lighthouse-core/config/default-config.js | a11yAriaGroupTitle": {
+    "message": "ARIA"
+  },
+  "lighthouse-core/config/default-config.js | a11yAudioVideoGroupDescription": {
+    "message": "Đây là các cơ hội để cung cấp nội dung thay thế cho âm thanh và video. Điều này có thể cải thiện trải nghiệm của người dùng khiếm thính hoặc khiếm thị."
+  },
+  "lighthouse-core/config/default-config.js | a11yAudioVideoGroupTitle": {
+    "message": "Âm thanh và video"
+  },
+  "lighthouse-core/config/default-config.js | a11yBestPracticesGroupDescription": {
+    "message": "Những mục này nêu bật các phương pháp hay nhất thường dùng cho hỗ trợ tiếp cận"
+  },
+  "lighthouse-core/config/default-config.js | a11yBestPracticesGroupTitle": {
+    "message": "Các phương pháp hay nhất"
+  },
+  "lighthouse-core/config/default-config.js | a11yCategoryDescription": {
+    "message": "Các hoạt động kiểm tra này giúp xác định cơ hội [cải thiện khả năng hỗ trợ tiếp cận của ứng dụng web](https://developers.google.com/web/fundamentals/accessibility). Các hoạt động này chỉ có thể tự động phát hiện một phần vấn đề liên quan đến khả năng hỗ trợ tiếp cận, do đó, bạn nên kiểm tra cả theo cách thủ công."
+  },
+  "lighthouse-core/config/default-config.js | a11yCategoryManualDescription": {
+    "message": "Các mục này nằm trong vùng không thể sử dụng công cụ kiểm tra tự động. Tìm hiểu thêm trong hướng dẫn của chúng tôi về cách [đánh giá khả năng hỗ trợ tiếp cận](https://developers.google.com/web/fundamentals/accessibility/how-to-review)."
+  },
+  "lighthouse-core/config/default-config.js | a11yCategoryTitle": {
+    "message": "Hỗ trợ tiếp cận"
+  },
+  "lighthouse-core/config/default-config.js | a11yColorContrastGroupDescription": {
+    "message": "Đây là các cơ hội giúp cải thiện độ dễ đọc cho nội dung của bạn."
+  },
+  "lighthouse-core/config/default-config.js | a11yColorContrastGroupTitle": {
+    "message": "Độ tương phản"
+  },
+  "lighthouse-core/config/default-config.js | a11yLanguageGroupDescription": {
+    "message": "Đây là những cơ hội giúp cải thiện khả năng diễn giải của người dùng đối với nội dung của bạn ở các ngôn ngữ khác nhau."
+  },
+  "lighthouse-core/config/default-config.js | a11yLanguageGroupTitle": {
+    "message": "Quốc tế hóa và bản địa hóa"
+  },
+  "lighthouse-core/config/default-config.js | a11yNamesLabelsGroupDescription": {
+    "message": "Đây là những cơ hội giúp cải thiện chức năng diễn giải ngữ nghĩa của các biện pháp kiểm soát trong ứng dụng của bạn. Điều này có thể nâng cao trải nghiệm cho những người dùng công nghệ hỗ trợ, chẳng hạn như trình đọc màn hình."
+  },
+  "lighthouse-core/config/default-config.js | a11yNamesLabelsGroupTitle": {
+    "message": "Tên và nhãn"
+  },
+  "lighthouse-core/config/default-config.js | a11yNavigationGroupDescription": {
+    "message": "Đây là các cơ hội để cải thiện khả năng điều hướng bằng bàn phím trong ứng dụng của bạn."
+  },
+  "lighthouse-core/config/default-config.js | a11yNavigationGroupTitle": {
+    "message": "Điều hướng"
+  },
+  "lighthouse-core/config/default-config.js | a11yTablesListsVideoGroupDescription": {
+    "message": "Đây là các cơ hội để cải thiện trải nghiệm đọc dữ liệu trong bảng hoặc danh sách bằng công nghệ hỗ trợ, chẳng hạn như trình đọc màn hình."
+  },
+  "lighthouse-core/config/default-config.js | a11yTablesListsVideoGroupTitle": {
+    "message": "Bảng và danh sách"
+  },
+  "lighthouse-core/config/default-config.js | bestPracticesCategoryTitle": {
+    "message": "Phương pháp hay nhất"
+  },
+  "lighthouse-core/config/default-config.js | budgetsGroupDescription": {
+    "message": "Phần Ngân sách hiệu suất đặt ra tiêu chuẩn về hiệu suất của trang web."
+  },
+  "lighthouse-core/config/default-config.js | budgetsGroupTitle": {
+    "message": "Ngân sách"
+  },
+  "lighthouse-core/config/default-config.js | diagnosticsGroupDescription": {
+    "message": "Thông tin bổ sung về hiệu suất của ứng dụng. Những số liệu này không [trực tiếp ảnh hưởng](https://github.com/GoogleChrome/lighthouse/blob/d2ec9ffbb21de9ad1a0f86ed24575eda32c796f0/docs/scoring.md#how-are-the-scores-weighted) đến Điểm hiệu suất."
+  },
+  "lighthouse-core/config/default-config.js | diagnosticsGroupTitle": {
+    "message": "Chẩn đoán"
+  },
+  "lighthouse-core/config/default-config.js | firstPaintImprovementsGroupDescription": {
+    "message": "Khía cạnh quan trọng nhất của hiệu suất là tốc độ hiển thị pixel nhanh chóng trên màn hình. Các chỉ số chính: Hình ảnh có nội dung đầu tiên, Hình ảnh có ý nghĩa đầu tiên"
+  },
+  "lighthouse-core/config/default-config.js | firstPaintImprovementsGroupTitle": {
+    "message": "Các thao tác để cải thiện thời gian hiển thị hình ảnh đầu tiên"
+  },
+  "lighthouse-core/config/default-config.js | loadOpportunitiesGroupDescription": {
+    "message": "Những đề xuất này có thể giúp trang của bạn tải nhanh hơn, chứ không [trực tiếp ảnh hưởng](https://github.com/GoogleChrome/lighthouse/blob/d2ec9ffbb21de9ad1a0f86ed24575eda32c796f0/docs/scoring.md#how-are-the-scores-weighted) đến Điểm hiệu suất."
+  },
+  "lighthouse-core/config/default-config.js | loadOpportunitiesGroupTitle": {
+    "message": "Cơ hội"
+  },
+  "lighthouse-core/config/default-config.js | metricGroupTitle": {
+    "message": "Các chỉ số"
+  },
+  "lighthouse-core/config/default-config.js | overallImprovementsGroupDescription": {
+    "message": "Cải thiện trải nghiệm tải tổng thể để trang phản hồi và sẵn sàng cho bạn sử dụng sớm nhất có thể. Các số liệu chính: Thời điểm tương tác, Chỉ số tốc độ"
+  },
+  "lighthouse-core/config/default-config.js | overallImprovementsGroupTitle": {
+    "message": "Các thao tác để cải thiện hiệu suất tổng thể"
+  },
+  "lighthouse-core/config/default-config.js | performanceCategoryTitle": {
+    "message": "Hiệu suất"
+  },
+  "lighthouse-core/config/default-config.js | pwaCategoryDescription": {
+    "message": "Những hoạt động kiểm tra này sẽ xác thực các khía cạnh của một Ứng dụng web tiến bộ. [Tìm hiểu thêm](https://developers.google.com/web/progressive-web-apps/checklist)."
+  },
+  "lighthouse-core/config/default-config.js | pwaCategoryManualDescription": {
+    "message": "Bạn phải tiến hành những hoạt động kiểm tra mà Lighthouse không tự động thực hiện trong [Danh sách kiểm tra ứng dụng web tiến bộ (PWA)](https://developers.google.com/web/progressive-web-apps/checklist). Các hoạt động kiểm tra này không ảnh hưởng đến điểm số của bạn, nhưng bạn phải xác minh theo cách thủ công."
+  },
+  "lighthouse-core/config/default-config.js | pwaCategoryTitle": {
+    "message": "Ứng dụng web tiến bộ"
+  },
+  "lighthouse-core/config/default-config.js | pwaFastReliableGroupTitle": {
+    "message": "Nhanh và đáng tin cậy"
+  },
+  "lighthouse-core/config/default-config.js | pwaInstallableGroupTitle": {
+    "message": "Có thể cài đặt"
+  },
+  "lighthouse-core/config/default-config.js | pwaOptimizedGroupTitle": {
+    "message": "PWA đã tối ưu hóa"
+  },
+  "lighthouse-core/config/default-config.js | seoCategoryDescription": {
+    "message": "Các hoạt động kiểm tra này đảm bảo rằng trang của bạn được tối ưu hóa cho thứ hạng trong kết quả của công cụ tìm kiếm. Những yếu tố bổ sung mà Lighthouse không kiểm tra có thể ảnh hưởng đến thứ hạng của bạn trong kết quả tìm kiếm. [Tìm hiểu thêm](https://support.google.com/webmasters/answer/35769)."
+  },
+  "lighthouse-core/config/default-config.js | seoCategoryManualDescription": {
+    "message": "Chạy những trình xác thực bổ sung này trên trang web của bạn để xem thêm các phương pháp hay nhất dành cho quy trình Tối ưu hóa cho công cụ tìm kiếm (SEO)."
+  },
+  "lighthouse-core/config/default-config.js | seoCategoryTitle": {
+    "message": "SEO"
+  },
+  "lighthouse-core/config/default-config.js | seoContentGroupDescription": {
+    "message": "Định dạng HTML sao cho các trình thu thập thông tin có thể hiểu rõ hơn nội dung trong ứng dụng của bạn."
+  },
+  "lighthouse-core/config/default-config.js | seoContentGroupTitle": {
+    "message": "Các phương pháp hay nhất về nội dung"
+  },
+  "lighthouse-core/config/default-config.js | seoCrawlingGroupDescription": {
+    "message": "Để xuất hiện trong kết quả tìm kiếm, các trình thu thập thông tin cần quyền truy cập vào ứng dụng của bạn."
+  },
+  "lighthouse-core/config/default-config.js | seoCrawlingGroupTitle": {
+    "message": "Thu thập thông tin và lập chỉ mục"
+  },
+  "lighthouse-core/config/default-config.js | seoMobileGroupDescription": {
+    "message": "Đảm bảo các trang của bạn thân thiện với thiết bị di động để người dùng có thể đọc các trang nội dung mà không cần phải chụm hoặc thu phóng. [Tìm hiểu thêm](https://developers.google.com/search/mobile-sites/)."
+  },
+  "lighthouse-core/config/default-config.js | seoMobileGroupTitle": {
+    "message": "Thân thiện với thiết bị di động"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnCacheTTL": {
+    "message": "Thời gian tồn tại (TTL) của bộ nhớ đệm"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnLocation": {
+    "message": "Vị trí"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnName": {
+    "message": "Tên"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnRequests": {
+    "message": "Số yêu cầu"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnResourceType": {
+    "message": "Loại tài nguyên"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnSize": {
+    "message": "Kích thước"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnTimeSpent": {
+    "message": "Thời gian sử dụng"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnTransferSize": {
+    "message": "Kích thước cần chuyển"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnURL": {
+    "message": "URL"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnWastedBytes": {
+    "message": "Lượng dữ liệu có thể tiết kiệm được"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnWastedMs": {
+    "message": "Thời gian có thể tiết kiệm được"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | displayValueByteSavings": {
+    "message": "Lượng dữ liệu có thể tiết kiệm được là {wastedBytes, number, bytes} KB"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | displayValueMsSavings": {
+    "message": "Thời gian có thể tiết kiệm được là {wastedMs, number, milliseconds} mili giây"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | documentResourceType": {
+    "message": "Tài liệu"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | fontResourceType": {
+    "message": "Phông chữ"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | imageResourceType": {
+    "message": "Hình ảnh"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | mediaResourceType": {
+    "message": "Nội dung nghe nhìn"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | ms": {
+    "message": "{timeInMs, number, milliseconds} mili giây"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | otherResourceType": {
+    "message": "Khác"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | scriptResourceType": {
+    "message": "Tập lệnh"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | seconds": {
+    "message": "{timeInMs, number, seconds} giây"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | stylesheetResourceType": {
+    "message": "Biểu định kiểu"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | thirdPartyResourceType": {
+    "message": "Bên thứ ba"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | totalResourceType": {
+    "message": "Tổng"
+  },
+  "lighthouse-core/lib/lh-error.js | badTraceRecording": {
+    "message": "Đã xảy ra lỗi khi ghi dấu vết quá trình tải trang của bạn. Vui lòng chạy lại Lighthouse. ({errorCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | criTimeout": {
+    "message": "Đã hết thời gian chờ kết nối với Giao thức của trình gỡ lỗi ban đầu ban đầu."
+  },
+  "lighthouse-core/lib/lh-error.js | didntCollectScreenshots": {
+    "message": "Chrome không thu thập được bất kỳ ảnh chụp màn hình nào trong quá trình tải trang. Hãy đảm bảo trang có nội dung hiển thị, sau đó thử chạy lại Lighthouse. ({errorCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | dnsFailure": {
+    "message": "Máy chủ DNS không thể phân giải miền đã cung cấp."
+  },
+  "lighthouse-core/lib/lh-error.js | erroredRequiredArtifact": {
+    "message": "Trình thu thập {artifactName} bắt buộc đã gặp lỗi: {errorMessage}"
+  },
+  "lighthouse-core/lib/lh-error.js | internalChromeError": {
+    "message": "Đã xảy ra lỗi Chrome nội bộ. Vui lòng khởi động lại Chrome và thử chạy lại Lighthouse."
+  },
+  "lighthouse-core/lib/lh-error.js | missingRequiredArtifact": {
+    "message": "Trình thu thập {artifactName} bắt buộc không chạy."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailed": {
+    "message": "Lighthouse không thể tải trang bạn đã yêu cầu một cách đáng tin cậy. Hãy đảm bảo bạn đang kiểm tra URL chính xác và máy chủ đang phản hồi tất cả các yêu cầu đúng cách."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedHung": {
+    "message": "Lighthouse không thể tải URL bạn yêu cầu một cách đáng tin cậy vì trang này đã ngừng phản hồi."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedInsecure": {
+    "message": "URL bạn cung cấp không có chứng chỉ bảo mật hợp lệ. {securityMessages}"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedInterstitial": {
+    "message": "Chrome đã ngăn tải trang có quảng cáo xen kẽ. Hãy đảm bảo bạn đang kiểm tra URL chính xác và máy chủ đang phản hồi tất cả các yêu cầu đúng cách."
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedWithDetails": {
+    "message": "Lighthouse không thể tải trang bạn đã yêu cầu một cách đáng tin cậy. Hãy đảm bảo bạn đang kiểm tra URL chính xác và máy chủ đang phản hồi tất cả các yêu cầu đúng cách. (Chi tiết: {errorDetails})"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedWithStatusCode": {
+    "message": "Lighthouse không thể tải trang bạn đã yêu cầu một cách đáng tin cậy. Hãy đảm bảo bạn đang kiểm tra URL chính xác và máy chủ đang phản hồi tất cả các yêu cầu đúng cách. (Mã trạng thái: {statusCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadTookTooLong": {
+    "message": "Thời gian tải trang quá lâu. Hãy thực hiện các khuyến nghị trong báo cáo để giảm thời gian tải trang rồi thử chạy lại Lighthouse. ({errorCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | protocolTimeout": {
+    "message": "Quá trình chờ phản hồi của giao thức DevTools đã vượt quá thời gian phân bổ. (Phương thức: {protocolMethod})"
+  },
+  "lighthouse-core/lib/lh-error.js | requestContentTimeout": {
+    "message": "Quá trình tìm nạp nội dung tài nguyên đã vượt quá thời gian phân bổ"
+  },
+  "lighthouse-core/lib/lh-error.js | urlInvalid": {
+    "message": "URL bạn cung cấp có vẻ không hợp lệ."
+  },
+  "lighthouse-core/report/html/renderer/util.js | auditGroupExpandTooltip": {
+    "message": "Hiển thị kết quả kiểm tra"
+  },
+  "lighthouse-core/report/html/renderer/util.js | crcInitialNavigation": {
+    "message": "Điều hướng ban đầu"
+  },
+  "lighthouse-core/report/html/renderer/util.js | crcLongestDurationLabel": {
+    "message": "Độ trễ tối đa của đường dẫn quan trọng:"
+  },
+  "lighthouse-core/report/html/renderer/util.js | errorLabel": {
+    "message": "Lỗi!"
+  },
+  "lighthouse-core/report/html/renderer/util.js | errorMissingAuditInfo": {
+    "message": "Lỗi báo cáo: không có thông tin kiểm tra"
+  },
+  "lighthouse-core/report/html/renderer/util.js | labDataTitle": {
+    "message": "Dữ liệu của phòng thí nghiệm"
+  },
+  "lighthouse-core/report/html/renderer/util.js | lsPerformanceCategoryDescription": {
+    "message": "Kết quả phân tích [Lighthouse](https://developers.google.com/web/tools/lighthouse/) cho trang hiện tại dựa trên một mạng di động mô phỏng. Các giá trị chỉ là ước tính và có thể thay đổi."
+  },
+  "lighthouse-core/report/html/renderer/util.js | manualAuditsGroupTitle": {
+    "message": "Các mục bổ sung cần kiểm tra theo cách thủ công"
+  },
+  "lighthouse-core/report/html/renderer/util.js | notApplicableAuditsGroupTitle": {
+    "message": "Không áp dụng"
+  },
+  "lighthouse-core/report/html/renderer/util.js | opportunityResourceColumnLabel": {
+    "message": "Cơ hội"
+  },
+  "lighthouse-core/report/html/renderer/util.js | opportunitySavingsColumnLabel": {
+    "message": "Thời lượng tiết kiệm được theo ước tính"
+  },
+  "lighthouse-core/report/html/renderer/util.js | passedAuditsGroupTitle": {
+    "message": "Số lần kiểm tra đạt yêu cầu"
+  },
+  "lighthouse-core/report/html/renderer/util.js | snippetCollapseButtonLabel": {
+    "message": "Thu gọn đoạn mã"
+  },
+  "lighthouse-core/report/html/renderer/util.js | snippetExpandButtonLabel": {
+    "message": "Mở rộng đoạn mã"
+  },
+  "lighthouse-core/report/html/renderer/util.js | thirdPartyResourcesLabel": {
+    "message": "Hiển thị tài nguyên của bên thứ ba"
+  },
+  "lighthouse-core/report/html/renderer/util.js | toplevelWarningsMessage": {
+    "message": "Đã xảy ra sự cố ảnh hưởng đến lần chạy Lighthouse này:"
+  },
+  "lighthouse-core/report/html/renderer/util.js | varianceDisclaimer": {
+    "message": "Các giá trị chỉ là ước tính và có thể thay đổi. Điểm hiệu suất [chỉ căn cứ vào các chỉ số này](https://github.com/GoogleChrome/lighthouse/blob/d2ec9ffbb21de9ad1a0f86ed24575eda32c796f0/docs/scoring.md#how-are-the-scores-weighted)."
+  },
+  "lighthouse-core/report/html/renderer/util.js | warningAuditsGroupTitle": {
+    "message": "Đã vượt qua bài kiểm tra nhưng có cảnh báo"
+  },
+  "lighthouse-core/report/html/renderer/util.js | warningHeader": {
+    "message": "Cảnh báo: "
+  },
+  "stack-packs/packs/wordpress.js | efficient_animated_content": {
+    "message": "Hãy cân nhắc tải tệp GIF lên một dịch vụ mà nhờ đó, tệp GIF có thể được nhúng ở dạng video HTML5."
+  },
+  "stack-packs/packs/wordpress.js | offscreen_images": {
+    "message": "Cài đặt một [plugin tải từng phần của WordPress](https://wordpress.org/plugins/search/lazy+load/) để trì hoãn mọi hình ảnh ngoài màn hình, hoặc chuyển sang một giao diện cung cấp chức năng đó. Ngoài ra, hãy cân nhắc sử dụng [plugin AMP (Accelerated Mobile Pages)](https://wordpress.org/plugins/amp/)."
+  },
+  "stack-packs/packs/wordpress.js | render_blocking_resources": {
+    "message": "Có một số plugin của WordPress có thể giúp bạn [đưa phần tử quan trọng vào nội tuyến](https://wordpress.org/plugins/search/critical+css/) hoặc [trì hoãn tài nguyên ít quan trọng hơn](https://wordpress.org/plugins/search/defer+css+javascript/). Xin lưu ý rằng những phương thức tối ưu hóa mà các plugin này cung cấp có thể làm gián đoạn tính năng của giao diện hoặc plugin, do đó, có thể bạn cần thay đổi mã."
+  },
+  "stack-packs/packs/wordpress.js | time_to_first_byte": {
+    "message": "Giao diện, plugin và thông số máy chủ đều tác động đến thời gian phản hồi của máy chủ. Hãy cân nhắc tìm một giao diện được tối ưu hóa, lựa chọn cẩn thận một plugin tối ưu hóa và/hoặc nâng cấp máy chủ."
+  },
+  "stack-packs/packs/wordpress.js | total_byte_weight": {
+    "message": "Hãy cân nhắc hiển thị phần trích dẫn trong danh sách bài đăng (ví dụ như qua thẻ thêm), giảm số lượng bài đăng hiển thị trên một trang cụ thể, chia các bài đăng dài thành nhiều trang hoặc sử dụng một plugin để tải nhận xét theo từng phần."
+  },
+  "stack-packs/packs/wordpress.js | unminified_css": {
+    "message": "Một số [plugin của WordPress](https://wordpress.org/plugins/search/minify+css/) có thể làm tăng tốc độ của trang web bằng cách ghép, giảm kích thước và nén kiểu. Bạn cũng có thể dùng quy trình tạo để tiến hành thu nhỏ trước, nếu có thể."
+  },
+  "stack-packs/packs/wordpress.js | unminified_javascript": {
+    "message": "Một số [plugin của WordPress](https://wordpress.org/plugins/search/minify+javascript/) có thể làm tăng tốc độ của trang web bằng cách ghép, giảm kích thước và nén tập lệnh. Ngoài ra, bạn nên dùng quy trình tạo để tiến hành thu nhỏ trước, nếu có thể."
+  },
+  "stack-packs/packs/wordpress.js | unused_css_rules": {
+    "message": "Hãy cân nhắc giảm hoặc chuyển đổi số lượng [plugin của WordPress](https://wordpress.org/plugins/) tải Biểu định kiểu xếp chồng (CSS) không dùng đến trong trang của bạn. Để xác định các plugin đang thêm Biểu định kiểu xếp chồng (CSS) không liên quan, hãy thử chạy [phạm vi của mã](https://developers.google.com/web/updates/2017/04/devtools-release-notes#coverage) trong Chrome DevTools. Bạn có thể xác định giao diện/plugin gây ra tình trạng này từ URL của biểu định kiểu. Hãy chú ý đến những plugin có nhiều biểu định kiểu trong danh sách. Những plugin này có nhiều màu đỏ trong phạm vi của mã. Một plugin chỉ nên thêm một biểu định kiểu vào hàng đợi nếu biểu định kiểu đó thực sự được sử dụng trên trang."
+  },
+  "stack-packs/packs/wordpress.js | unused_javascript": {
+    "message": "Hãy cân nhắc giảm hoặc chuyển đổi số lượng [plugin của WordPress](https://wordpress.org/plugins/) tải JavaScript không dùng đến trong trang của bạn. Để xác định các plugin đang thêm JS không liên quan, hãy thử chạy [phạm vi của mã](https://developers.google.com/web/updates/2017/04/devtools-release-notes#coverage) trong Chrome DevTools. Bạn có thể xác định giao diện/plugin gây ra tình trạng này từ URL của tập lệnh. Hãy chú ý đến những plugin có nhiều tập lệnh trong danh sách. Những plugin này có nhiều màu đỏ trong phạm vi của mã. Một plugin chỉ nên thêm một tập lệnh vào hàng đợi nếu tập lệnh đó thực sự được dùng trên trang."
+  },
+  "stack-packs/packs/wordpress.js | uses_long_cache_ttl": {
+    "message": "Hãy đọc về [Bộ nhớ đệm của trình duyệt trong WordPress](https://codex.wordpress.org/WordPress_Optimization#Browser_Caching)."
+  },
+  "stack-packs/packs/wordpress.js | uses_optimized_images": {
+    "message": "Hãy cân nhắc sử dụng một [plugin tối ưu hóa hình ảnh của WordPress](https://wordpress.org/plugins/search/optimize+images/) có khả năng nén hình ảnh mà vẫn đảm bảo chất lượng."
+  },
+  "stack-packs/packs/wordpress.js | uses_responsive_images": {
+    "message": "Trực tiếp tải hình ảnh lên thông qua [thư viện nội dung đa phương tiện](https://codex.wordpress.org/Media_Library_Screen) để đảm bảo có các kích thước hình ảnh theo yêu cầu, sau đó chèn hình ảnh từ thư viện nội dung đa phương tiện hoặc sử dụng tiện ích hình ảnh để đảm bảo sử dụng kích thước hình ảnh tối ưu (bao gồm cả các kích thước dành cho điểm ngắt thích ứng). Tránh sử dụng hình ảnh có `Full Size` trừ khi những hình ảnh đó có kích thước phù hợp. [Tìm hiểu thêm](https://codex.wordpress.org/Inserting_Images_into_Posts_and_Pages#Image_Size)."
+  },
+  "stack-packs/packs/wordpress.js | uses_text_compression": {
+    "message": "Bạn có thể bật tính năng nén văn bản trong cấu hình máy chủ web."
+  },
+  "stack-packs/packs/wordpress.js | uses_webp_images": {
+    "message": "Hãy cân nhắc sử dụng một [plugin](https://wordpress.org/plugins/search/convert+webp/) hoặc dịch vụ tự động chuyển các hình ảnh đã tải lên sang định dạng tối ưu."
+  }
+}
diff --git a/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/zh-HK.json b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/zh-HK.json
new file mode 100644
index 0000000..788fa82f
--- /dev/null
+++ b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/zh-HK.json
@@ -0,0 +1,1541 @@
+{
+  "lighthouse-core/audits/accessibility/accesskeys.js | description": {
+    "message": "快速鍵可讓使用者快速聚焦網頁的特定部分。如要讓使用者正確瀏覽,每個快速鍵一律不可重複。[瞭解詳情](https://web.dev/accesskeys/)。"
+  },
+  "lighthouse-core/audits/accessibility/accesskeys.js | failureTitle": {
+    "message": "`[accesskey]` 的值重複"
+  },
+  "lighthouse-core/audits/accessibility/accesskeys.js | title": {
+    "message": "`[accesskey]` 值獨一無二"
+  },
+  "lighthouse-core/audits/accessibility/aria-allowed-attr.js | description": {
+    "message": "每個 ARIA「`role`」都支援一部分特定的「`aria-*`」屬性。配對錯誤會導致「`aria-*`」屬性無效。[瞭解詳情](https://web.dev/aria-allowed-attr/)。"
+  },
+  "lighthouse-core/audits/accessibility/aria-allowed-attr.js | failureTitle": {
+    "message": "`[aria-*]` 屬性與其角色不符"
+  },
+  "lighthouse-core/audits/accessibility/aria-allowed-attr.js | title": {
+    "message": "`[aria-*]` 屬性與其角色相符"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-attr.js | description": {
+    "message": "部分 ARIA 角色的必要屬性會向螢幕閱讀器使用者說明元素的狀態。[瞭解詳情](https://web.dev/aria-required-attr/)。"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-attr.js | failureTitle": {
+    "message": "`[role]` 未具備所有必要的 `[aria-*]` 屬性"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-attr.js | title": {
+    "message": "`[role]` 具備所有必要的 `[aria-*]` 屬性"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-children.js | description": {
+    "message": "部分 ARIA 父角色必須包含特定的子角色,才能正確執行無障礙功能。[瞭解詳情](https://web.dev/aria-required-children/)。"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-children.js | failureTitle": {
+    "message": "設有 `[role]` 的元素缺少必需的特定子元素 `[role]`。"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-children.js | title": {
+    "message": "`[role]` 的元素具備必需的特定子元素 `[role]`。"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-parent.js | description": {
+    "message": "部分 ARIA 子角色必須包括在特定的父角色中,才能正確執行無障礙功能。[瞭解詳情](https://web.dev/aria-required-parent/)。"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-parent.js | failureTitle": {
+    "message": "`[role]` 未包含在必要的父元素中"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-parent.js | title": {
+    "message": "`[role]` 已包含在必要的父元素中"
+  },
+  "lighthouse-core/audits/accessibility/aria-roles.js | description": {
+    "message": "ARIA 角色必須具備有效的值,才能執行無障礙功能。[瞭解詳情](https://web.dev/aria-roles/)。"
+  },
+  "lighthouse-core/audits/accessibility/aria-roles.js | failureTitle": {
+    "message": "`[role]` 值無效"
+  },
+  "lighthouse-core/audits/accessibility/aria-roles.js | title": {
+    "message": "`[role]` 值有效"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr-value.js | description": {
+    "message": "輔助技術 (如螢幕閱讀器) 無法解讀具有無效值的 ARIA 屬性。[瞭解詳情](https://web.dev/aria-valid-attr-value/)。"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr-value.js | failureTitle": {
+    "message": "`[aria-*]` 屬性並無有效的值"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr-value.js | title": {
+    "message": "`[aria-*]` 屬性具備有效的值"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr.js | description": {
+    "message": "輔助技術 (例如螢幕閱讀器) 無法解讀名稱無效的 ARIA 屬性。[瞭解詳情](https://web.dev/aria-valid-attr/)。"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr.js | failureTitle": {
+    "message": "`[aria-*]` 屬性無效或拼字錯誤"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr.js | title": {
+    "message": "`[aria-*]` 屬性有效且無拼字錯誤"
+  },
+  "lighthouse-core/audits/accessibility/audio-caption.js | description": {
+    "message": "字幕可提供說話者身分、說話內容等關鍵資訊以及其他非口語資訊,方便失聰或聽障使用者使用音訊元素。[瞭解詳情](https://web.dev/audio-caption/)。"
+  },
+  "lighthouse-core/audits/accessibility/audio-caption.js | failureTitle": {
+    "message": "`<audio>` 元素缺少帶有 `[kind=\"captions\"]` 的 `<track>` 元素。"
+  },
+  "lighthouse-core/audits/accessibility/audio-caption.js | title": {
+    "message": "`<audio>` 元素包含帶有 `[kind=\"captions\"]` 的`<track>` 元素"
+  },
+  "lighthouse-core/audits/accessibility/axe-audit.js | failingElementsHeader": {
+    "message": "審核失敗的元素"
+  },
+  "lighthouse-core/audits/accessibility/button-name.js | description": {
+    "message": "如果按鈕沒有可存取的名稱,螢幕閱讀器只會讀出「按鈕」,導致依賴螢幕閱讀器的使用者並法使用該按鈕。[瞭解詳情](https://web.dev/button-name/)。"
+  },
+  "lighthouse-core/audits/accessibility/button-name.js | failureTitle": {
+    "message": "按鈕沒有可存取的名稱"
+  },
+  "lighthouse-core/audits/accessibility/button-name.js | title": {
+    "message": "按鈕有可存取的名稱"
+  },
+  "lighthouse-core/audits/accessibility/bypass.js | description": {
+    "message": "為重複的內容新增略過選項,可提高鍵盤使用者的網頁瀏覽效率。[瞭解詳情](https://web.dev/bypass/)。"
+  },
+  "lighthouse-core/audits/accessibility/bypass.js | failureTitle": {
+    "message": "網頁中沒有標題、略過連結或地標區域"
+  },
+  "lighthouse-core/audits/accessibility/bypass.js | title": {
+    "message": "網頁包含標題、略過連結或地標區域"
+  },
+  "lighthouse-core/audits/accessibility/color-contrast.js | description": {
+    "message": "大部分使用者難以閱讀或無法閱讀低對比度的文字。[瞭解詳情](https://web.dev/color-contrast/)。"
+  },
+  "lighthouse-core/audits/accessibility/color-contrast.js | failureTitle": {
+    "message": "背景和前景顏色沒有足夠的對比度。"
+  },
+  "lighthouse-core/audits/accessibility/color-contrast.js | title": {
+    "message": "背景和前景顏色有足夠的對比度"
+  },
+  "lighthouse-core/audits/accessibility/definition-list.js | description": {
+    "message": "如果定義清單的標記不正確,螢幕閱讀器可能會輸出令人混淆或不正確的內容。[瞭解詳情](https://web.dev/definition-list/)。"
+  },
+  "lighthouse-core/audits/accessibility/definition-list.js | failureTitle": {
+    "message": "`<dl>` 並非只包含排序正確的 `<dt>` 和 `<dd>` 群組、`<script>` 或 `<template>` 元素。"
+  },
+  "lighthouse-core/audits/accessibility/definition-list.js | title": {
+    "message": "`<dl>` 只包含排序正確的 `<dt>` 和 `<dd>` 群組、`<script>` 或 `<template>` 元素。"
+  },
+  "lighthouse-core/audits/accessibility/dlitem.js | description": {
+    "message": "定義清單項目 (`<dt>` 和 `<dd>`) 必須納入在父 `<dl>` 元素中,才能確保螢幕閱讀器正確朗讀這些項目。[瞭解詳情](https://web.dev/dlitem/)。"
+  },
+  "lighthouse-core/audits/accessibility/dlitem.js | failureTitle": {
+    "message": "定義清單項目未納入在 `<dl>` 元素中"
+  },
+  "lighthouse-core/audits/accessibility/dlitem.js | title": {
+    "message": "定義清單項目已納入在 `<dl>` 元素中"
+  },
+  "lighthouse-core/audits/accessibility/document-title.js | description": {
+    "message": "標題可讓螢幕閱讀器使用者概略瞭解網頁內容;搜尋引擎使用者經常需要使用此資料,判斷網頁內容是否與他們的搜尋查詢有關。[瞭解詳情](https://web.dev/document-title/)。"
+  },
+  "lighthouse-core/audits/accessibility/document-title.js | failureTitle": {
+    "message": "文件並無有效的 `<title>` 元素"
+  },
+  "lighthouse-core/audits/accessibility/document-title.js | title": {
+    "message": "文件具備 `<title>` 元素"
+  },
+  "lighthouse-core/audits/accessibility/duplicate-id.js | description": {
+    "message": "ID 屬性的值不可重複,以免輔助技術忽略其他例項。[瞭解詳情](https://web.dev/duplicate-id/)。"
+  },
+  "lighthouse-core/audits/accessibility/duplicate-id.js | failureTitle": {
+    "message": "網頁中的 `[id]` 屬性重複"
+  },
+  "lighthouse-core/audits/accessibility/duplicate-id.js | title": {
+    "message": "網頁中的 `[id]` 屬性沒有重複"
+  },
+  "lighthouse-core/audits/accessibility/frame-title.js | description": {
+    "message": "螢幕閱讀器使用者依賴頁框標題來瞭解頁框內容。[瞭解詳情](https://web.dev/frame-title/)。"
+  },
+  "lighthouse-core/audits/accessibility/frame-title.js | failureTitle": {
+    "message": "`<frame>` 或 `<iframe>` 元素沒有標題"
+  },
+  "lighthouse-core/audits/accessibility/frame-title.js | title": {
+    "message": "`<frame>` 或 `<iframe>` 元素包含名稱"
+  },
+  "lighthouse-core/audits/accessibility/html-has-lang.js | description": {
+    "message": "如果網頁未指定 [lang] 屬性,螢幕閱讀器會假設網頁採用使用者設定螢幕閱讀器時選擇的預設語言。如果網頁實際並非採用預設語言,螢幕閱讀器可能無法正確朗讀文字。[瞭解詳情](https://web.dev/html-has-lang/)。"
+  },
+  "lighthouse-core/audits/accessibility/html-has-lang.js | failureTitle": {
+    "message": "`<html>` 元素並無 `[lang]` 屬性"
+  },
+  "lighthouse-core/audits/accessibility/html-has-lang.js | title": {
+    "message": "`<html>` 元素具備 `[lang]` 屬性"
+  },
+  "lighthouse-core/audits/accessibility/html-lang-valid.js | description": {
+    "message": "指定有效的 [BCP 47 語言](https://www.w3.org/International/questions/qa-choosing-language-tags#question)可協助螢幕閱讀器正確朗讀文字。[瞭解詳情](https://web.dev/html-lang-valid/)。"
+  },
+  "lighthouse-core/audits/accessibility/html-lang-valid.js | failureTitle": {
+    "message": "`<html>` 元素的 `[lang]` 屬性並無有效的值。"
+  },
+  "lighthouse-core/audits/accessibility/html-lang-valid.js | title": {
+    "message": "`<html>` 元素的 `[lang]` 屬性具備有效的值"
+  },
+  "lighthouse-core/audits/accessibility/image-alt.js | description": {
+    "message": "資訊型元素應提供簡短貼切的替代文字。只要將 alt 屬性留空,系統便會忽略該裝飾元素。[瞭解詳情](https://web.dev/image-alt/)。"
+  },
+  "lighthouse-core/audits/accessibility/image-alt.js | failureTitle": {
+    "message": "圖片元素並無 `[alt]` 屬性"
+  },
+  "lighthouse-core/audits/accessibility/image-alt.js | title": {
+    "message": "圖片元素具有 `[alt]` 屬性"
+  },
+  "lighthouse-core/audits/accessibility/input-image-alt.js | description": {
+    "message": "如果 `<input>` 按鈕是以圖片呈現,提供替代文字可協助螢幕閱讀器使用者瞭解該按鈕的用途。[瞭解詳情](https://web.dev/input-image-alt/)。"
+  },
+  "lighthouse-core/audits/accessibility/input-image-alt.js | failureTitle": {
+    "message": "`<input type=\"image\">` 元素未設定 `[alt]` 文字"
+  },
+  "lighthouse-core/audits/accessibility/input-image-alt.js | title": {
+    "message": "`<input type=\"image\">` 元素具有 `[alt]` 文字"
+  },
+  "lighthouse-core/audits/accessibility/label.js | description": {
+    "message": "標籤可以確保輔助技術 (例如螢幕閱讀器) 正確朗讀表格控制項。[瞭解詳情](https://web.dev/label/)。"
+  },
+  "lighthouse-core/audits/accessibility/label.js | failureTitle": {
+    "message": "表格元素沒有相關聯的標籤"
+  },
+  "lighthouse-core/audits/accessibility/label.js | title": {
+    "message": "表格元素具有相關聯的標籤"
+  },
+  "lighthouse-core/audits/accessibility/layout-table.js | description": {
+    "message": "用於版面配置的表格不應包含資料元素 (例如 th、字幕元素或摘要屬性),因為這些元素可能會對螢幕閱讀器使用者造成混淆。[瞭解詳情](https://web.dev/layout-table/)。"
+  },
+  "lighthouse-core/audits/accessibility/layout-table.js | failureTitle": {
+    "message": "展示性元素 `<table>` 使用了 `<th>`、`<caption>` 元素或 `[summary]` 屬性。"
+  },
+  "lighthouse-core/audits/accessibility/layout-table.js | title": {
+    "message": "展示性元素 `<table>` 並未使用`<th>`、`<caption>` `[summary]` 屬性。"
+  },
+  "lighthouse-core/audits/accessibility/link-name.js | description": {
+    "message": "使用可辨別、不重複且可聚焦的連結文字 (以及連結圖片的替代文字),有助改善螢幕閱讀器使用者的瀏覽體驗。[瞭解詳情](https://web.dev/link-name/)。"
+  },
+  "lighthouse-core/audits/accessibility/link-name.js | failureTitle": {
+    "message": "連結並無可辨別的名稱"
+  },
+  "lighthouse-core/audits/accessibility/link-name.js | title": {
+    "message": "連結具有可辨別的名稱"
+  },
+  "lighthouse-core/audits/accessibility/list.js | description": {
+    "message": "螢幕閱讀器會以特定方式朗讀清單。確認清單採用正確的結構有助螢幕閱讀器順利輸出內容。[瞭解詳情](https://web.dev/list/)。"
+  },
+  "lighthouse-core/audits/accessibility/list.js | failureTitle": {
+    "message": "清單中並非只包含 `<li>` 元素和指令碼支援元素 (`<script>` 和 `<template>`)。"
+  },
+  "lighthouse-core/audits/accessibility/list.js | title": {
+    "message": "清單只包含 `<li>` 元素和支援指令碼的元素 (`<script>` 和 `<template>`)。"
+  },
+  "lighthouse-core/audits/accessibility/listitem.js | description": {
+    "message": "清單項目 `<li>` 必須包含在父元素 `<ul>` 或 `<ol>` 中,螢幕閱讀器才能正確朗讀這些項目。[瞭解詳情](https://web.dev/listitem/)。"
+  },
+  "lighthouse-core/audits/accessibility/listitem.js | failureTitle": {
+    "message": "清單項目 (`<li>`) 未包含在 `<ul>` 或 `<ol>` 父元素中。"
+  },
+  "lighthouse-core/audits/accessibility/listitem.js | title": {
+    "message": "清單項目 (`<li>`) 已包含在 `<ul>` 或 `<ol>` 父元素中。"
+  },
+  "lighthouse-core/audits/accessibility/meta-refresh.js | description": {
+    "message": "使用者不會預期系統自動重新整理網頁,且執行此操作會將焦點移回網頁頂端。這可能會對使用者造成困擾或混淆。[瞭解詳情](https://web.dev/meta-refresh/)。"
+  },
+  "lighthouse-core/audits/accessibility/meta-refresh.js | failureTitle": {
+    "message": "文件使用 `<meta http-equiv=\"refresh\">`"
+  },
+  "lighthouse-core/audits/accessibility/meta-refresh.js | title": {
+    "message": "文件未使用 `<meta http-equiv=\"refresh\">`"
+  },
+  "lighthouse-core/audits/accessibility/meta-viewport.js | description": {
+    "message": "停用縮放功能會對低視力人士造成困擾,他們需要透過螢幕放大功能才能清楚看見網頁內容。[瞭解詳情](https://web.dev/meta-viewport/)。"
+  },
+  "lighthouse-core/audits/accessibility/meta-viewport.js | failureTitle": {
+    "message": "`<meta name=\"viewport\">` 元素中使用了 `[user-scalable=\"no\"]`,或 `[maximum-scale]` 屬性少於 5。"
+  },
+  "lighthouse-core/audits/accessibility/meta-viewport.js | title": {
+    "message": "`<meta name=\"viewport\">` 元素中未有使用 `[user-scalable=\"no\"]` 元素,而且 `[maximum-scale]` 屬性少於 5。"
+  },
+  "lighthouse-core/audits/accessibility/object-alt.js | description": {
+    "message": "螢幕閱讀器無法翻譯非文字內容。為 `<object>` 元素新增替代文字,可協助螢幕閱讀器向使用者傳達其意義。[瞭解詳情](https://web.dev/object-alt/)。"
+  },
+  "lighthouse-core/audits/accessibility/object-alt.js | failureTitle": {
+    "message": "`<object>` 元素未設定 `[alt]` 文字"
+  },
+  "lighthouse-core/audits/accessibility/object-alt.js | title": {
+    "message": "`<object>` 元素具有 `[alt]` 文字"
+  },
+  "lighthouse-core/audits/accessibility/tabindex.js | description": {
+    "message": "如果值大於 0,表示採用的是明確的瀏覽排序。雖然此做法在技術上可行,但通常會對依賴輔助技術的使用者造成困擾。[瞭解詳情](https://web.dev/tabindex/)。"
+  },
+  "lighthouse-core/audits/accessibility/tabindex.js | failureTitle": {
+    "message": "部分元素的 `[tabindex]` 值大於 0"
+  },
+  "lighthouse-core/audits/accessibility/tabindex.js | title": {
+    "message": "所有元素的 `[tabindex]` 值皆未超過 0"
+  },
+  "lighthouse-core/audits/accessibility/td-headers-attr.js | description": {
+    "message": "螢幕閱讀器的功能可讓使用者更輕鬆瀏覽表格。如能確保採用 `[headers]` 屬性的 `<td>` 儲存格只參照同一表格中的其他儲存格,或許能改善螢幕閱讀器的使用體驗。[瞭解詳情](https://web.dev/td-headers-attr/)。"
+  },
+  "lighthouse-core/audits/accessibility/td-headers-attr.js | failureTitle": {
+    "message": "`<table>` 元素中採用 `[headers]` 屬性的儲存格,參照了同一表格中的其他儲存格。"
+  },
+  "lighthouse-core/audits/accessibility/td-headers-attr.js | title": {
+    "message": "`[headers]` 元素中採用 `<table>` 屬性的儲存格,只參照了同一表格中的其他儲存格。"
+  },
+  "lighthouse-core/audits/accessibility/th-has-data-cells.js | description": {
+    "message": "螢幕閱讀器的功能可讓使用者更輕鬆瀏覽表格。如能確保表格標題一律參照特定一組儲存格,或許能有助改善螢幕閱讀器使用者的體驗。[瞭解詳情](https://web.dev/th-has-data-cells/)。"
+  },
+  "lighthouse-core/audits/accessibility/th-has-data-cells.js | failureTitle": {
+    "message": "`<th>` 元素及帶有 `[role=\"columnheader\"/\"rowheader\"]` 的元素沒有所描述的資料儲存格。"
+  },
+  "lighthouse-core/audits/accessibility/th-has-data-cells.js | title": {
+    "message": "`<th>` 元素和帶有 `[role=\"columnheader\"/\"rowheader\"]` 的元素有其描述的資料儲存格。"
+  },
+  "lighthouse-core/audits/accessibility/valid-lang.js | description": {
+    "message": "指定元素有效的[[BCP 47 語言](https://www.w3.org/International/questions/qa-choosing-language-tags#question)] 可協助螢幕閱讀器正確朗讀文字。[瞭解詳情](https://web.dev/valid-lang/)。"
+  },
+  "lighthouse-core/audits/accessibility/valid-lang.js | failureTitle": {
+    "message": "`[lang]` 屬性並無有效的值"
+  },
+  "lighthouse-core/audits/accessibility/valid-lang.js | title": {
+    "message": "`[lang]` 屬性具備有效的值"
+  },
+  "lighthouse-core/audits/accessibility/video-caption.js | description": {
+    "message": "如果在影片中提供字幕,將有助於失聰或聽障使用者取得影片資料。[瞭解詳情](https://web.dev/video-caption/)。"
+  },
+  "lighthouse-core/audits/accessibility/video-caption.js | failureTitle": {
+    "message": "`<video>` 元素不含任何帶有 `[kind=\"captions\"]``<track>` 的元素"
+  },
+  "lighthouse-core/audits/accessibility/video-caption.js | title": {
+    "message": "`<video>` 元素包含帶有 `[kind=\"captions\"]` 的`<track>` 元素"
+  },
+  "lighthouse-core/audits/accessibility/video-description.js | description": {
+    "message": "音訊說明可為影片提供對話功能無法提供的相關資料,例如面部表情和場景。[瞭解詳情](https://web.dev/video-description/)。"
+  },
+  "lighthouse-core/audits/accessibility/video-description.js | failureTitle": {
+    "message": "`<video>` 元素不含任何帶有 `[kind=\"description\"]``<track>` 的元素"
+  },
+  "lighthouse-core/audits/accessibility/video-description.js | title": {
+    "message": "`<video>` 元素包含帶有 `[kind=\"description\"]` 的`<track>` 元素"
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | description": {
+    "message": "請定義 `apple-touch-icon`。這樣,當 iOS 使用者將漸進式網絡應用程式新增到主畫面時,系統才會顯示正確圖示。apple-touch-icon 必須指向大小為 192 像素 (或 180 像素) 的不透明正方形 PNG。[瞭解詳情](https://developers.google.com/web/fundamentals/design-and-ux/browser-customization/)。"
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | failureTitle": {
+    "message": "未提供有效的 `apple-touch-icon`"
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | precomposedWarning": {
+    "message": "`apple-touch-icon-precomposed` 版本過舊,建議使用 `apple-touch-icon`。"
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | title": {
+    "message": "提供有效的 `apple-touch-icon`"
+  },
+  "lighthouse-core/audits/bootup-time.js | chromeExtensionsWarning": {
+    "message": "Chrome 擴充程式會對此頁面的載入效能產生負面影響。建議透過無痕模式或使用未安裝擴充程式的 Chrome 設定檔來審核頁面。"
+  },
+  "lighthouse-core/audits/bootup-time.js | columnScriptEval": {
+    "message": "指令碼評估"
+  },
+  "lighthouse-core/audits/bootup-time.js | columnScriptParse": {
+    "message": "指令碼剖析"
+  },
+  "lighthouse-core/audits/bootup-time.js | columnTotal": {
+    "message": "CPU 總執行時間"
+  },
+  "lighthouse-core/audits/bootup-time.js | description": {
+    "message": "建議減少剖析、編譯和執行 JS 所用的時間。傳送較小的 JS 負載可能有所幫助。[瞭解詳情](https://developers.google.com/web/tools/lighthouse/audits/bootup)。"
+  },
+  "lighthouse-core/audits/bootup-time.js | failureTitle": {
+    "message": "縮短 JavaScript 執行時間"
+  },
+  "lighthouse-core/audits/bootup-time.js | title": {
+    "message": "JavaScript 執行時間"
+  },
+  "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | description": {
+    "message": "大型 GIF 放送動畫內容效率往往不佳。建議改用 MPEG4/WebM 格式的動畫影片和 PNG/WebP 格式的靜態圖片,以節省網絡位元組。[瞭解詳情](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/replace-animated-gifs-with-video/)"
+  },
+  "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | title": {
+    "message": "使用影片格式的動畫內容"
+  },
+  "lighthouse-core/audits/byte-efficiency/offscreen-images.js | description": {
+    "message": "建議延遲載入螢幕外的項目並隱藏圖片,直到重要資源全部載入後再開始操作,以縮短可互動時間。[瞭解詳情](https://developers.google.com/web/tools/lighthouse/audits/offscreen-images)。"
+  },
+  "lighthouse-core/audits/byte-efficiency/offscreen-images.js | title": {
+    "message": "延遲載入螢幕外圖片"
+  },
+  "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | description": {
+    "message": "過多資源往往會阻止系統首次繪製頁面。建議內嵌重要的 JS/CSS,延遲所有不重要的 JS/樣式。[瞭解詳情](https://developers.google.com/web/tools/lighthouse/audits/blocking-resources)。"
+  },
+  "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | title": {
+    "message": "排除阻止呈現的資源"
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | description": {
+    "message": "網絡負載過大會造成使用者的費用負擔,且往往與過長載入時間息息相關。[瞭解詳情](https://developers.google.com/web/tools/lighthouse/audits/network-payloads)。"
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | displayValue": {
+    "message": "總大小為 {totalBytes, number, bytes} KB"
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | failureTitle": {
+    "message": "避免網絡負載過大"
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | title": {
+    "message": "避免網絡負載過大"
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-css.js | description": {
+    "message": "壓縮 CSS 檔案可減少網絡負載大小。[瞭解詳情](https://developers.google.com/web/tools/lighthouse/audits/minify-css)。"
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-css.js | title": {
+    "message": "壓縮 CSS"
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | description": {
+    "message": "壓縮 JavaScript 檔案可減少負載大小和指令碼剖析時間。[瞭解詳情](https://developers.google.com/speed/docs/insights/MinifyResources)。"
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | title": {
+    "message": "壓縮 Javascript"
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | description": {
+    "message": "從樣式表中移除無用的規則,並延遲載在毋需捲動的當眼位置內容中未使用的 CSS,減少網絡活動耗用不必要的位元組。[瞭解詳情](https://developers.google.com/web/tools/lighthouse/audits/unused-css)。"
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | title": {
+    "message": "移除未使用的 CSS"
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-javascript.js | description": {
+    "message": "移除未使用的 JavaScript,以減少網絡活動耗用的位元組。"
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-javascript.js | title": {
+    "message": "移除未使用的 JavaScript"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | description": {
+    "message": "延長快取期限可加快重覆瀏覽頁面的速度。[瞭解詳情](https://developers.google.com/web/tools/lighthouse/audits/cache-policy)。"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | displayValue": {
+    "message": "{itemCount,plural, =1{已找到 1 項資源}other{已找到 # 項資源}}"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | failureTitle": {
+    "message": "採用有效的快取政策提供靜態資產"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | title": {
+    "message": "使用有效的快取政策處理靜態資產"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | description": {
+    "message": "優化圖片以加快載入速度,減少流動數據用量。[瞭解詳情](https://developers.google.com/web/tools/lighthouse/audits/optimize-images)。"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | title": {
+    "message": "有效地進行圖片編碼"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | description": {
+    "message": "提供適當大小的圖片有助節省流動數據用量,並縮短載入時間。[瞭解詳情](https://developers.google.com/web/tools/lighthouse/audits/oversized-images)。"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | title": {
+    "message": "適當調整圖片大小"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | description": {
+    "message": "文字資源應經過 (gzip、deflate 或 brotli) 壓縮,以將網絡位元總數減至最少。[瞭解詳情](https://developers.google.com/web/tools/lighthouse/audits/text-compression)。"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | title": {
+    "message": "啟用文字壓縮"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | description": {
+    "message": "JPEG 2000、JPEG XR 和 WebP 等圖片格式通常比 PNG 或 JPEG 有更好的壓縮效果,能夠更快完成下載及減少數據用量。[瞭解詳情](https://developers.google.com/web/tools/lighthouse/audits/webp)。"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | title": {
+    "message": "提供 next-gen 格式的圖片"
+  },
+  "lighthouse-core/audits/content-width.js | description": {
+    "message": "如果應用程式內容寬度與檢視區的寬度不相符,應用程式可能無法在流動裝置螢幕上呈現優化效果。[瞭解詳情](https://developers.google.com/web/tools/lighthouse/audits/content-sized-correctly-for-viewport)。"
+  },
+  "lighthouse-core/audits/content-width.js | explanation": {
+    "message": "檢視區大小 ({innerWidth} 像素) 與視窗大小 ({outerWidth} 像素) 不相符。"
+  },
+  "lighthouse-core/audits/content-width.js | failureTitle": {
+    "message": "尚未為檢視區正確調整內容大小"
+  },
+  "lighthouse-core/audits/content-width.js | title": {
+    "message": "已將檢視區正確調整內容大小"
+  },
+  "lighthouse-core/audits/critical-request-chains.js | description": {
+    "message": "下方的「關鍵要求鏈結」顯示以高優先次序發佈的資源。為了提高頁面載入速度,建議您縮短鏈結長度,縮減下載資源的大小,或延遲下載不必要資源。[瞭解詳情](https://developers.google.com/web/tools/lighthouse/audits/critical-request-chains)。"
+  },
+  "lighthouse-core/audits/critical-request-chains.js | displayValue": {
+    "message": "{itemCount,plural, =1{已找到 1 個鏈結}other{已找到 # 個鏈結}}"
+  },
+  "lighthouse-core/audits/critical-request-chains.js | title": {
+    "message": "將重要要求深度降至最低"
+  },
+  "lighthouse-core/audits/deprecations.js | columnDeprecate": {
+    "message": "淘汰/警告"
+  },
+  "lighthouse-core/audits/deprecations.js | columnLine": {
+    "message": "行數"
+  },
+  "lighthouse-core/audits/deprecations.js | description": {
+    "message": "系統最終會從瀏覽器中移除已淘汰的 API。[瞭解詳情](https://web.dev/deprecations)。"
+  },
+  "lighthouse-core/audits/deprecations.js | displayValue": {
+    "message": "{itemCount,plural, =1{發現 1 個警告}other{發現 # 個警告}}"
+  },
+  "lighthouse-core/audits/deprecations.js | failureTitle": {
+    "message": "使用已淘汰的 API"
+  },
+  "lighthouse-core/audits/deprecations.js | title": {
+    "message": "避免使用已淘汰的 API"
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | description": {
+    "message": "應用程式快取已被淘汰。[瞭解詳情](https://web.dev/appcache-manifest)。"
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | displayValue": {
+    "message": "已找到「{AppCacheManifest}」"
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | failureTitle": {
+    "message": "使用應用程式快取"
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | title": {
+    "message": "避免使用應用程式快取"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | description": {
+    "message": "指定 DOCTYPE 能防止瀏覽器切換至怪異模式。[瞭解詳情](https://web.dev/doctype)。"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationBadDoctype": {
+    "message": "DOCTYPE 名稱必須是小寫字串 `html`"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationNoDoctype": {
+    "message": "文件必須包含 doctype"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationPublicId": {
+    "message": "publicId 必須為空白字串"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationSystemId": {
+    "message": "systemId 必須為空白字串"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | failureTitle": {
+    "message": "網頁缺少 HTML DOCTYPE,因此觸發了怪異模式"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | title": {
+    "message": "網頁含有 HTML DOCTYPE"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | columnElement": {
+    "message": "元素"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | columnStatistic": {
+    "message": "統計資料"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | columnValue": {
+    "message": "值"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | description": {
+    "message": "瀏覽器工程師建議網頁包含的 DOM 元素數量應少於 1,500 個左右。理想的樹狀結構深度包含少於 32 個元素,且子/父元素少於 60 個。大型 DOM 會增加記憶體用量、延長[樣式運算](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations)的時間,並產生高昂的[版面配置重排](https://developers.google.com/speed/articles/reflow)。[瞭解詳情](https://web.dev/dom-size)。"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 個元素}other{# 個元素}}"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | failureTitle": {
+    "message": "避免 DOM 過大"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | statisticDOMDepth": {
+    "message": "DOM 深度上限"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | statisticDOMElements": {
+    "message": "DOM 元素總數"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | statisticDOMWidth": {
+    "message": "子元素數量上限"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | title": {
+    "message": "避免 DOM 過大"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | columnRel": {
+    "message": "Rel"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | columnTarget": {
+    "message": "目標"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | description": {
+    "message": "將 `rel=\"noopener\"` 或 `rel=\"noreferrer\"` 新增至所有外部連結,可提升效能並防範安全漏洞。[瞭解詳情](https://web.dev/external-anchors-use-rel-noopener)。"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | failureTitle": {
+    "message": "跨原始來源目的地的連結不安全"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | title": {
+    "message": "跨來源目的地的連結安全"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | warning": {
+    "message": "無法判斷錨點的目的地 ({anchorHTML})。如果 target=_blank 不是用作連結,請考慮移除。"
+  },
+  "lighthouse-core/audits/dobetterweb/geolocation-on-start.js | description": {
+    "message": "如果未提供其他資訊就要求存取使用者的位置資訊,會讓使用者感到困惑而不信任網站。建議您在使用者執行特定動作時,再提出這項要求。[瞭解詳情](https://web.dev/geolocation-on-start)。"
+  },
+  "lighthouse-core/audits/dobetterweb/geolocation-on-start.js | failureTitle": {
+    "message": "在載入網頁時要求存取使用者的地理位置"
+  },
+  "lighthouse-core/audits/dobetterweb/geolocation-on-start.js | title": {
+    "message": "避免在載入網頁時要求存取使用者的地理位置"
+  },
+  "lighthouse-core/audits/dobetterweb/js-libraries.js | columnVersion": {
+    "message": "版本"
+  },
+  "lighthouse-core/audits/dobetterweb/js-libraries.js | description": {
+    "message": "在此網頁上偵測到的所有前端 JavaScript 程式庫。[瞭解詳情](https://web.dev/js-libraries)。"
+  },
+  "lighthouse-core/audits/dobetterweb/js-libraries.js | title": {
+    "message": "偵測到的 JavaScript 媒體庫"
+  },
+  "lighthouse-core/audits/dobetterweb/no-document-write.js | description": {
+    "message": "對於連線速度較慢的使用者,透過 `document.write()` 動態插入的外部指令碼可能會導致網頁延遲載入數十秒。[瞭解詳情](https://web.dev/no-document-write)。"
+  },
+  "lighthouse-core/audits/dobetterweb/no-document-write.js | failureTitle": {
+    "message": "使用 `document.write()`"
+  },
+  "lighthouse-core/audits/dobetterweb/no-document-write.js | title": {
+    "message": "避免使用 `document.write()`"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | columnSeverity": {
+    "message": "嚴重程度"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | columnVersion": {
+    "message": "程式庫版本"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | columnVuln": {
+    "message": "安全漏洞數量"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | description": {
+    "message": "部分第三方指令碼可能包含已知的安全漏洞,攻擊者將能輕易識別及利用這些漏洞。[瞭解詳情](https://web.dev/no-vulnerable-libraries)。"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | displayValue": {
+    "message": "{itemCount,plural, =1{偵測到 1 個安全漏洞}other{偵測到 # 個安全漏洞}}"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | failureTitle": {
+    "message": "包括前端 JavaScript 程式庫具有已知安全漏洞"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | rowSeverityHigh": {
+    "message": "高"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | rowSeverityLow": {
+    "message": "低"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | rowSeverityMedium": {
+    "message": "中"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | title": {
+    "message": "避免使用包含已知安全漏洞的前端 JavaScript 程式庫"
+  },
+  "lighthouse-core/audits/dobetterweb/notification-on-start.js | description": {
+    "message": "如果未提供其他資訊就要求使用者允許網站顯示通知,會讓使用者感到困惑而不信任網站。建議您在使用者操作特定手勢時,再提出這項要求。[瞭解詳情](https://web.dev/notification-on-start)。"
+  },
+  "lighthouse-core/audits/dobetterweb/notification-on-start.js | failureTitle": {
+    "message": "在載入網頁時要求使用者允許網站顯示通知"
+  },
+  "lighthouse-core/audits/dobetterweb/notification-on-start.js | title": {
+    "message": "避免在載入網頁時要求使用者允許網站顯示通知"
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | columnFailingElem": {
+    "message": "審核失敗的元素"
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | description": {
+    "message": "禁止貼上密碼會對安全政策造成不良影響。[瞭解詳情](https://web.dev/password-inputs-can-be-pasted-into)。"
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | failureTitle": {
+    "message": "禁止使用者貼到密碼欄位"
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | title": {
+    "message": "允許使用者貼到密碼欄位"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | columnProtocol": {
+    "message": "通訊協定"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | description": {
+    "message": "HTTP/2 具備很多 HTTP/1.1 沒有的優點,包括二進制標題、多工處理和伺服器推送。[瞭解詳情](https://web.dev/uses-http2)。"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | displayValue": {
+    "message": "{itemCount,plural, =1{有 1 個要求未透過 HTTP/2 傳送}other{有 # 個要求未透過 HTTP/2 傳送}}"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | failureTitle": {
+    "message": "網頁要求的部分資源未使用 HTTP/2"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | title": {
+    "message": "為本身的資源使用 HTTP/2"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-passive-event-listeners.js | description": {
+    "message": "建議將輕觸動作和滑鼠滾輪活動監聽器標示為 `passive`,以提升網頁的捲動效能。[瞭解詳情](https://web.dev/uses-passive-event-listeners)。"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-passive-event-listeners.js | failureTitle": {
+    "message": "未使用被動事件監聽器來提升捲動效能"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-passive-event-listeners.js | title": {
+    "message": "使用被動活動監聽器來提升捲動效能"
+  },
+  "lighthouse-core/audits/errors-in-console.js | columnDesc": {
+    "message": "說明"
+  },
+  "lighthouse-core/audits/errors-in-console.js | description": {
+    "message": "如果管理中心有錯誤記錄,表示系統仍有問題尚待解決,例如網絡要求錯誤和其他瀏覽器問題。[瞭解詳情](https://web.dev/errors-in-console)"
+  },
+  "lighthouse-core/audits/errors-in-console.js | failureTitle": {
+    "message": "瀏覽器錯誤已記錄在控制台"
+  },
+  "lighthouse-core/audits/errors-in-console.js | title": {
+    "message": "系統未在管理中心記錄瀏覽器發生的錯誤"
+  },
+  "lighthouse-core/audits/font-display.js | description": {
+    "message": "運用顯示字型的 CSS 功能,確保使用者可在網頁字型載入時看到文字。[瞭解詳情](https://developers.google.com/web/updates/2016/02/font-display)。"
+  },
+  "lighthouse-core/audits/font-display.js | failureTitle": {
+    "message": "確保文字在網頁字型載入時仍然顯示"
+  },
+  "lighthouse-core/audits/font-display.js | title": {
+    "message": "在網頁字型載入時,所有文字仍然顯示"
+  },
+  "lighthouse-core/audits/font-display.js | undeclaredFontURLWarning": {
+    "message": "Lighthouse 無法自動檢查以下網址顯示字型的值:{fontURL}。"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | columnActual": {
+    "message": "實際的圖片長寬比"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | columnDisplayed": {
+    "message": "網頁上顯示的圖片長寬比"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | description": {
+    "message": "圖片顯示尺寸應符合正常顯示長寬比。[瞭解詳情](https://web.dev/image-aspect-ratio)。"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | failureTitle": {
+    "message": "顯示的圖片長寬比不正確"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | title": {
+    "message": "顯示的圖片長寬比正確"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | warningCompute": {
+    "message": "圖片大小資料無效 {url}"
+  },
+  "lighthouse-core/audits/installable-manifest.js | description": {
+    "message": "瀏覽器可主動提示使用者,建議他們將您的應用程式新增至主畫面,藉此提高參與度[瞭解詳情](https://developers.google.com/web/tools/lighthouse/audits/install-prompt)。"
+  },
+  "lighthouse-core/audits/installable-manifest.js | failureTitle": {
+    "message": "網絡應用程式資訊清單不符合可安裝性要求"
+  },
+  "lighthouse-core/audits/installable-manifest.js | title": {
+    "message": "網絡應用程式資訊清單符合可安裝性要求"
+  },
+  "lighthouse-core/audits/is-on-https.js | columnInsecureURL": {
+    "message": "不安全的網址"
+  },
+  "lighthouse-core/audits/is-on-https.js | description": {
+    "message": "所有網站都應該使用 HTTPS 確保安全,即使網站不處理敏感資料亦然。HTTPS 能防範入侵者竄改或被動監聽應用程式與使用者之間的通訊,且 HTTP/2 和很多新的網絡平台 API 都要求使用 HTTPS。[瞭解詳情](https://web.dev/is-on-https)。"
+  },
+  "lighthouse-core/audits/is-on-https.js | displayValue": {
+    "message": "{itemCount,plural, =1{發現 1 個不安全的要求}other{發現 # 個不安全的要求}}"
+  },
+  "lighthouse-core/audits/is-on-https.js | failureTitle": {
+    "message": "未使用 HTTPS"
+  },
+  "lighthouse-core/audits/is-on-https.js | title": {
+    "message": "使用 HTTPS"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | description": {
+    "message": "如果網頁在流動網絡中能快速載入,可為流動裝置使用者提供良好的使用體驗。[瞭解詳情](https://developers.google.com/web/tools/lighthouse/audits/fast-3g)。"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | displayValueText": {
+    "message": "在 {timeInMs, number, seconds} 秒開始互動"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | displayValueTextWithOverride": {
+    "message": "在 {timeInMs, number, seconds} 秒時於模擬流動網絡上開始互動"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | explanationLoadSlow": {
+    "message": "您的網頁載入速度太慢,無法在 10 秒內與使用者互動。請參閱「效能」部分的優化建議和診斷,瞭解如何改善載入速度。"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | failureTitle": {
+    "message": "網頁在流動網絡中的載入速度不夠快"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | title": {
+    "message": "網頁在流動網絡中的載入速度夠快"
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | columnCategory": {
+    "message": "類別"
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | description": {
+    "message": "建議減少剖析、編譯和執行 JS 所用的時間。傳送較小的 JS 負載可能有所幫助。"
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | failureTitle": {
+    "message": "將主要執行緒的工作減至最少"
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | title": {
+    "message": "將主要執行緒的工作減至最少"
+  },
+  "lighthouse-core/audits/manual/pwa-cross-browser.js | description": {
+    "message": "為盡量觸及最多使用者,網站應能在每個主要瀏覽器上暢順運作。[瞭解詳情](https://developers.google.com/web/progressive-web-apps/checklist#site-works-cross-browser)。"
+  },
+  "lighthouse-core/audits/manual/pwa-cross-browser.js | title": {
+    "message": "網站可以在不同瀏覽器上運作"
+  },
+  "lighthouse-core/audits/manual/pwa-each-page-has-url.js | description": {
+    "message": "確保每個網頁都可透過網址進行深層連結,且具有專屬網址,方便您在社交媒體上分享。[瞭解詳情](https://developers.google.com/web/progressive-web-apps/checklist#each-page-has-a-url)。"
+  },
+  "lighthouse-core/audits/manual/pwa-each-page-has-url.js | title": {
+    "message": "每個網頁都有一個網址"
+  },
+  "lighthouse-core/audits/manual/pwa-page-transitions.js | description": {
+    "message": "即使網絡速度緩慢,只要使用者瀏覽不同網頁也能營造流暢切換的感覺,這就是高效感觀的關鍵。[瞭解詳情](https://developers.google.com/web/progressive-web-apps/checklist#page-transitions-dont-feel-like-they-block-on-the-network)。"
+  },
+  "lighthouse-core/audits/manual/pwa-page-transitions.js | title": {
+    "message": "使用者在切換頁面時不會覺得網絡速度緩慢"
+  },
+  "lighthouse-core/audits/metrics/estimated-input-latency.js | description": {
+    "message": "預計輸入延遲時間是在頁面載入視窗最忙碌的 5 秒期間,您的應用程式對使用者輸入動作的預計回應時間 (以毫秒為單位)。如果延遲超過 50 毫秒,使用者可能會認為應用程式的速度緩慢。[瞭解詳情](https://developers.google.com/web/tools/lighthouse/audits/estimated-input-latency)。"
+  },
+  "lighthouse-core/audits/metrics/estimated-input-latency.js | title": {
+    "message": "預計輸入延遲時間"
+  },
+  "lighthouse-core/audits/metrics/first-contentful-paint.js | description": {
+    "message": "「首次內容繪製時間」標示繪製首個文字/首張圖片的時間。[瞭解詳情](https://developers.google.com/web/tools/lighthouse/audits/first-contentful-paint)。"
+  },
+  "lighthouse-core/audits/metrics/first-contentful-paint.js | title": {
+    "message": "首次內容繪製時間"
+  },
+  "lighthouse-core/audits/metrics/first-cpu-idle.js | description": {
+    "message": "「首次 CPU 閒置時間」標示頁面的主要執行緒首次有空處理輸入的時間。[瞭解詳情](https://developers.google.com/web/tools/lighthouse/audits/first-interactive)。"
+  },
+  "lighthouse-core/audits/metrics/first-cpu-idle.js | title": {
+    "message": "首次 CPU 閒置時間"
+  },
+  "lighthouse-core/audits/metrics/first-meaningful-paint.js | description": {
+    "message": "「首次有效繪製時間」評估頁面主要內容顯示的時間。[瞭解詳情](https://developers.google.com/web/tools/lighthouse/audits/first-meaningful-paint)。"
+  },
+  "lighthouse-core/audits/metrics/first-meaningful-paint.js | title": {
+    "message": "首次有效繪製時間"
+  },
+  "lighthouse-core/audits/metrics/interactive.js | description": {
+    "message": "互動準備時間是網頁進入完整互動狀態前所花的時間。[瞭解詳情](https://developers.google.com/web/tools/lighthouse/audits/consistently-interactive)。"
+  },
+  "lighthouse-core/audits/metrics/interactive.js | title": {
+    "message": "可互動所需時間"
+  },
+  "lighthouse-core/audits/metrics/max-potential-fid.js | description": {
+    "message": "使用者可以體驗到最長的「首次輸入延遲時間」就是最長的工作持續時間 (以毫秒為單位)。[瞭解詳情](https://developers.google.com/web/updates/2018/05/first-input-delay)。"
+  },
+  "lighthouse-core/audits/metrics/max-potential-fid.js | title": {
+    "message": "首次輸入延遲時間最長預計值"
+  },
+  "lighthouse-core/audits/metrics/speed-index.js | description": {
+    "message": "「速度指數」會顯示頁面內容的展現速度。[瞭解詳情](https://developers.google.com/web/tools/lighthouse/audits/speed-index)。"
+  },
+  "lighthouse-core/audits/metrics/speed-index.js | title": {
+    "message": "速度指數"
+  },
+  "lighthouse-core/audits/metrics/total-blocking-time.js | description": {
+    "message": "當工作長度超過 50 毫秒時,所有 FCP 和「可互動所需時間」之間的時長總和 (以毫秒為單位)。"
+  },
+  "lighthouse-core/audits/metrics/total-blocking-time.js | title": {
+    "message": "總封鎖時間"
+  },
+  "lighthouse-core/audits/network-rtt.js | description": {
+    "message": "網絡來回通訊時間 (RTT) 對效能有很大影響。如果系統傳送到某個來源的來回通訊時間很高,表示靠近使用者端的伺服器可改善效能。[瞭解詳情](https://hpbn.co/primer-on-latency-and-bandwidth/)。"
+  },
+  "lighthouse-core/audits/network-rtt.js | title": {
+    "message": "網絡來回通訊時間"
+  },
+  "lighthouse-core/audits/network-server-latency.js | description": {
+    "message": "伺服器延遲時間可能會影響網頁效能。如果來源端的伺服器延遲時間高,代表伺服器已超載或後端效能欠佳。[瞭解詳情](https://hpbn.co/primer-on-web-performance/#analyzing-the-resource-waterfall)。"
+  },
+  "lighthouse-core/audits/network-server-latency.js | title": {
+    "message": "伺服器後端延遲時間"
+  },
+  "lighthouse-core/audits/offline-start-url.js | description": {
+    "message": "Service Worker 可確保您的網絡應用程式運作可靠,即使網絡連線不穩定亦然。[瞭解詳情](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)。"
+  },
+  "lighthouse-core/audits/offline-start-url.js | failureTitle": {
+    "message": "`start_url` 在離線時不會傳回狀態碼 200 的回應"
+  },
+  "lighthouse-core/audits/offline-start-url.js | title": {
+    "message": "`start_url` 在離線時會傳回狀態碼 200 的回應"
+  },
+  "lighthouse-core/audits/offline-start-url.js | warningCantStart": {
+    "message": "Lighthouse 無法從資訊清單中讀取 `start_url`,因此將 `start_url` 假設為文件的網址。錯誤訊息:「{manifestWarning}」。"
+  },
+  "lighthouse-core/audits/performance-budget.js | columnOverBudget": {
+    "message": "超出預算"
+  },
+  "lighthouse-core/audits/performance-budget.js | description": {
+    "message": "讓網絡要求的數量和大小低於使用者根據效能預算所設定的目標。[瞭解詳情](https://developers.google.com/web/tools/lighthouse/audits/budgets)。"
+  },
+  "lighthouse-core/audits/performance-budget.js | requestCountOverBudget": {
+    "message": "{count,plural, =1{1 個要求}other{# 個要求}}"
+  },
+  "lighthouse-core/audits/performance-budget.js | title": {
+    "message": "效能預算"
+  },
+  "lighthouse-core/audits/redirects-http.js | description": {
+    "message": "如果您已設定 HTTPS,請確認是否已將所有 HTTP 流量重新導向至 HTTPS,以便為所有使用者提供安全的網絡功能。[瞭解詳情](https://developers.google.com/web/tools/lighthouse/audits/http-redirects-to-https)。"
+  },
+  "lighthouse-core/audits/redirects-http.js | failureTitle": {
+    "message": "尚未將 HTTP 流量重新導向至 HTTPS"
+  },
+  "lighthouse-core/audits/redirects-http.js | title": {
+    "message": "將 HTTP 流量重新導向至 HTTPS"
+  },
+  "lighthouse-core/audits/redirects.js | description": {
+    "message": "重新導向會導致頁面延遲載入。[瞭解詳情](https://developers.google.com/web/tools/lighthouse/audits/redirects)。"
+  },
+  "lighthouse-core/audits/redirects.js | title": {
+    "message": "避免多次頁面重新導向"
+  },
+  "lighthouse-core/audits/resource-summary.js | description": {
+    "message": "如要設定網頁資源的數量和大小的預算,請新增 budget.json 檔案。[瞭解詳情](https://developers.google.com/web/tools/lighthouse/audits/budgets)。"
+  },
+  "lighthouse-core/audits/resource-summary.js | displayValue": {
+    "message": "{requestCount,plural, =1{1 個要求 • {byteCount, number, bytes} KB}other{# 個要求 • {byteCount, number, bytes} KB}}"
+  },
+  "lighthouse-core/audits/resource-summary.js | title": {
+    "message": "降低要求數量並減少傳輸大小"
+  },
+  "lighthouse-core/audits/seo/canonical.js | description": {
+    "message": "標準連結會建議要在搜尋結果中顯示哪個網址。[瞭解詳情](https://web.dev/canonical)。"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationConflict": {
+    "message": "多個互相衝突的網址 ({urlList})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationDifferentDomain": {
+    "message": "指向其他網域 ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationInvalid": {
+    "message": "網址無效 ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationPointsElsewhere": {
+    "message": "指向其他 `hreflang` 位置 ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationRelative": {
+    "message": "相對網址 ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationRoot": {
+    "message": "指向目標為網域的根網址 (首頁),而非相應的內容網頁"
+  },
+  "lighthouse-core/audits/seo/canonical.js | failureTitle": {
+    "message": "文件並無有效的 `rel=canonical`"
+  },
+  "lighthouse-core/audits/seo/canonical.js | title": {
+    "message": "文件具備有效的 `rel=canonical`"
+  },
+  "lighthouse-core/audits/seo/font-size.js | description": {
+    "message": "如果字型小於 12 像素,文字會太小而難以辨識,流動裝置訪客需要「兩指縮放」才能閱讀內容。網頁中應有超過 60% 採用 12 像素或以上大小的文字。[瞭解詳情](https://web.dev/font-size)。"
+  },
+  "lighthouse-core/audits/seo/font-size.js | displayValue": {
+    "message": "{decimalProportion, number, extendedPercent} 的文字清晰可讀"
+  },
+  "lighthouse-core/audits/seo/font-size.js | explanationViewport": {
+    "message": "由於網頁沒有為流動裝置螢幕設定合適的檢視區中繼標記,因文字難以辨識。"
+  },
+  "lighthouse-core/audits/seo/font-size.js | explanationWithDisclaimer": {
+    "message": "{decimalProportion, number, extendedPercent} 的文字過小 (以 {decimalProportionVisited, number, extendedPercent} 範例為準)。"
+  },
+  "lighthouse-core/audits/seo/font-size.js | failureTitle": {
+    "message": "文件使用的字型大小難以辨識"
+  },
+  "lighthouse-core/audits/seo/font-size.js | title": {
+    "message": "文件使用的字型大小清晰可讀"
+  },
+  "lighthouse-core/audits/seo/hreflang.js | description": {
+    "message": "hreflang 連結會通知搜尋引擎,應在特定語言或區域的搜尋結果中該顯示哪個版本的網頁。[瞭解詳情](https://web.dev/hreflang)。"
+  },
+  "lighthouse-core/audits/seo/hreflang.js | failureTitle": {
+    "message": "文件並無有效的 `hreflang`"
+  },
+  "lighthouse-core/audits/seo/hreflang.js | title": {
+    "message": "文件具備有效的 `hreflang`"
+  },
+  "lighthouse-core/audits/seo/http-status-code.js | description": {
+    "message": "如果網頁傳回失敗的 HTTP 狀態碼,可能無法正確加入索引。[瞭解詳情](https://web.dev/http-status-code)。"
+  },
+  "lighthouse-core/audits/seo/http-status-code.js | failureTitle": {
+    "message": "網頁傳回失敗的 HTTP 狀態碼"
+  },
+  "lighthouse-core/audits/seo/http-status-code.js | title": {
+    "message": "網頁傳回成功的 HTTP 狀態碼"
+  },
+  "lighthouse-core/audits/seo/is-crawlable.js | description": {
+    "message": "如果搜尋引擎沒有檢索網頁的權限,將無法在搜尋結果中顯示您的網頁。[瞭解詳情](https://web.dev/is-crawable)。"
+  },
+  "lighthouse-core/audits/seo/is-crawlable.js | failureTitle": {
+    "message": "網頁的索引功能被封鎖"
+  },
+  "lighthouse-core/audits/seo/is-crawlable.js | title": {
+    "message": "網頁的索引功能未被封鎖"
+  },
+  "lighthouse-core/audits/seo/link-text.js | description": {
+    "message": "連結說明文字可協助搜尋引擎瞭解您的內容。[瞭解詳情](https://web.dev/link-text)。"
+  },
+  "lighthouse-core/audits/seo/link-text.js | displayValue": {
+    "message": "{itemCount,plural, =1{找到 1 個連結}other{找到 # 個連結}}"
+  },
+  "lighthouse-core/audits/seo/link-text.js | failureTitle": {
+    "message": "連結並無說明文字"
+  },
+  "lighthouse-core/audits/seo/link-text.js | title": {
+    "message": "連結具有說明文字"
+  },
+  "lighthouse-core/audits/seo/manual/structured-data.js | description": {
+    "message": "執行[結構化資料測試工具](https://search.google.com/structured-data/testing-tool/)和[結構化資料 Linter](http://linter.structured-data.org/) 來驗證結構化資料。[瞭解詳情](https://web.dev/structured-data)。"
+  },
+  "lighthouse-core/audits/seo/manual/structured-data.js | title": {
+    "message": "結構化資料有效"
+  },
+  "lighthouse-core/audits/seo/meta-description.js | description": {
+    "message": "您可在搜尋結果中加入中繼說明,簡要描述網頁內容。[瞭解詳情](https://web.dev/meta-description)。"
+  },
+  "lighthouse-core/audits/seo/meta-description.js | explanation": {
+    "message": "沒有說明文字。"
+  },
+  "lighthouse-core/audits/seo/meta-description.js | failureTitle": {
+    "message": "文件並無中繼說明"
+  },
+  "lighthouse-core/audits/seo/meta-description.js | title": {
+    "message": "文件具有中繼說明"
+  },
+  "lighthouse-core/audits/seo/plugins.js | description": {
+    "message": "搜尋引擎無法為外掛程式內容加入索引,而且很多裝置對外掛程式都設有限制甚至不提供支援。[瞭解詳情](https://web.dev/plugins)。"
+  },
+  "lighthouse-core/audits/seo/plugins.js | failureTitle": {
+    "message": "文件使用外掛程式"
+  },
+  "lighthouse-core/audits/seo/plugins.js | title": {
+    "message": "文件避免使用外掛程式"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | description": {
+    "message": "如果您的 robots.txt 檔案格式錯誤,檢索器可能無法瞭解您偏好的網站檢索或加入索引方式。[瞭解詳情](https://web.dev/robots-txt)。"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | displayValueHttpBadCode": {
+    "message": "robots.txt 要求傳回以下 HTTP 狀態:{statusCode}"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | displayValueValidationError": {
+    "message": "{itemCount,plural, =1{找到 1 個錯誤}other{找到 # 個錯誤}}"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | explanation": {
+    "message": "Lighthouse 無法下載 robots.txt 檔"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | failureTitle": {
+    "message": "robots.txt 無效"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | title": {
+    "message": "robots.txt 有效"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | description": {
+    "message": "按鈕和連結等互動元素的大小應至少有 48x48 像素,且周圍應保留足夠空間以便使用者輕按,同時避免與其他元素重疊的情況。[瞭解詳情](https://web.dev/tap-targets)。"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | displayValue": {
+    "message": "{decimalProportion, number, percent} 的輕按目標大小適中"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | explanationViewportMetaNotOptimized": {
+    "message": "由於網頁沒有為流動裝置螢幕設定合適的檢視區中繼標記,因此輕按目標太小"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | failureTitle": {
+    "message": "輕按目標未設定成適當大小"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | overlappingTargetHeader": {
+    "message": "重疊的目標"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | tapTargetHeader": {
+    "message": "輕按目標"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | title": {
+    "message": "輕按目標已設定成適當大小"
+  },
+  "lighthouse-core/audits/service-worker.js | description": {
+    "message": "Service Worker 技術可讓您的應用程式使用多項漸進式網絡應用程式的功能,例如離線存取、新增到主畫面和推送通知。[瞭解詳情](https://developers.google.com/web/tools/lighthouse/audits/registered-service-worker)。"
+  },
+  "lighthouse-core/audits/service-worker.js | explanationBadManifest": {
+    "message": "此網頁由 Service Worker 控制,但系統無法將資訊清單剖析為有效的 JSON,因此找不到任何 `start_url`"
+  },
+  "lighthouse-core/audits/service-worker.js | explanationBadStartUrl": {
+    "message": "此網頁由 Service Worker 控制,但 `start_url` ({startUrl}) 不在 Service Worker 的範圍內 ({scopeUrl})"
+  },
+  "lighthouse-core/audits/service-worker.js | explanationNoManifest": {
+    "message": "此網頁由 Service Worker 控制,但系統未能擷取任何資訊清單,因此找不到任何 `start_url`。"
+  },
+  "lighthouse-core/audits/service-worker.js | explanationOutOfScope": {
+    "message": "此來源包含一個或多個 Service Worker,但該頁面 ({pageUrl}) 不在 Service Worker 的範圍內。"
+  },
+  "lighthouse-core/audits/service-worker.js | failureTitle": {
+    "message": "未註冊可控制網頁和 `start_url` 的 Service Worker"
+  },
+  "lighthouse-core/audits/service-worker.js | title": {
+    "message": "已註冊可控制網頁和 `start_url` 的 Service Worker"
+  },
+  "lighthouse-core/audits/splash-screen.js | description": {
+    "message": "透過設定啟動畫面的主題,可確保使用者從主畫面啟動您的應用程式時享有優質體驗。[瞭解詳情](https://developers.google.com/web/tools/lighthouse/audits/custom-splash-screen)。"
+  },
+  "lighthouse-core/audits/splash-screen.js | failureTitle": {
+    "message": "未設定自訂啟動畫面"
+  },
+  "lighthouse-core/audits/splash-screen.js | title": {
+    "message": "設有自訂啟動畫面"
+  },
+  "lighthouse-core/audits/themed-omnibox.js | description": {
+    "message": "您可以將瀏覽器網址列的主題設定為與網站相符。[瞭解詳情](https://developers.google.com/web/tools/lighthouse/audits/address-bar)。"
+  },
+  "lighthouse-core/audits/themed-omnibox.js | failureTitle": {
+    "message": "未設定網址列的主題顏色。"
+  },
+  "lighthouse-core/audits/themed-omnibox.js | title": {
+    "message": "設定網址列的主題顏色。"
+  },
+  "lighthouse-core/audits/third-party-summary.js | columnBlockingTime": {
+    "message": "主要執行緒封鎖時間"
+  },
+  "lighthouse-core/audits/third-party-summary.js | columnThirdParty": {
+    "message": "第三方"
+  },
+  "lighthouse-core/audits/third-party-summary.js | description": {
+    "message": "第三方程式碼可能會嚴重影響載入效能。請盡量減少不必要的第三方供應商,並在網頁的主要內容載入完成後,再載入第三方程式碼。[瞭解詳情](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/loading-third-party-javascript/)。"
+  },
+  "lighthouse-core/audits/third-party-summary.js | displayValue": {
+    "message": "第三方程式碼將主要執行緒封鎖了 {timeInMs, number, milliseconds} 毫秒"
+  },
+  "lighthouse-core/audits/third-party-summary.js | failureTitle": {
+    "message": "減低第三方程式碼的影響"
+  },
+  "lighthouse-core/audits/third-party-summary.js | title": {
+    "message": "第三方程式碼使用情況"
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | description": {
+    "message": "「首個字節時間」會指出您的伺服器傳送回應的時間。[瞭解詳情](https://developers.google.com/web/tools/lighthouse/audits/ttfb)。"
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | displayValue": {
+    "message": "根文件回應時間為 {timeInMs, number, milliseconds} 毫秒"
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | failureTitle": {
+    "message": "縮短伺服器回應時間 (TTFB)"
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | title": {
+    "message": "伺服器回應時間短 (TTFB)"
+  },
+  "lighthouse-core/audits/user-timings.js | columnDuration": {
+    "message": "時間長度"
+  },
+  "lighthouse-core/audits/user-timings.js | columnStartTime": {
+    "message": "開始時間"
+  },
+  "lighthouse-core/audits/user-timings.js | columnType": {
+    "message": "類別"
+  },
+  "lighthouse-core/audits/user-timings.js | description": {
+    "message": "建議使用「用戶使用時間」檢測您的應用程式,評估其在關鍵使用者體驗期間的實際成效。[瞭解詳情](https://developers.google.com/web/tools/lighthouse/audits/user-timing)。"
+  },
+  "lighthouse-core/audits/user-timings.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 個用戶使用時間標記}other{# 個用戶使用時間標記}}"
+  },
+  "lighthouse-core/audits/user-timings.js | title": {
+    "message": "用戶使用時間標記和測量結果"
+  },
+  "lighthouse-core/audits/uses-rel-preconnect.js | crossoriginWarning": {
+    "message": "「{securityOrigin}」有預先連線的 <link>,但瀏覽器沒有使用。請檢查您使用 `crossorigin` 屬性的方式是否正確。"
+  },
+  "lighthouse-core/audits/uses-rel-preconnect.js | description": {
+    "message": "建議您新增 `preconnect` 或 `dns-prefetch` 資源提示,及早連線至重要的第三方來源。[瞭解詳情](https://developers.google.com/web/fundamentals/performance/resource-prioritization#preconnect)。"
+  },
+  "lighthouse-core/audits/uses-rel-preconnect.js | title": {
+    "message": "預先連接至必要來源"
+  },
+  "lighthouse-core/audits/uses-rel-preload.js | crossoriginWarning": {
+    "message": "{preloadURL} 有預先載入的 <link>,但瀏覽器沒有使用。請檢查您使用 `crossorigin` 屬性的方式是否正確。"
+  },
+  "lighthouse-core/audits/uses-rel-preload.js | description": {
+    "message": "建議使用 `<link rel=preload>` 來指定優先需要的網絡要求,並預先擷取資源。[瞭解詳情](https://developers.google.com/web/tools/lighthouse/audits/preload)。"
+  },
+  "lighthouse-core/audits/uses-rel-preload.js | title": {
+    "message": "預先載入關鍵要求"
+  },
+  "lighthouse-core/audits/viewport.js | description": {
+    "message": "新增 `<meta name=\"viewport\">` 標籤以對流動裝置螢幕優化您的應用程式。[瞭解詳情](https://developers.google.com/web/tools/lighthouse/audits/has-viewport-meta-tag)。"
+  },
+  "lighthouse-core/audits/viewport.js | explanationNoTag": {
+    "message": "找不到任何 `<meta name=\"viewport\">` 標籤"
+  },
+  "lighthouse-core/audits/viewport.js | failureTitle": {
+    "message": "缺少包括 `width` 或 `initial-scale` 的 `<meta name=\"viewport\">` 標籤"
+  },
+  "lighthouse-core/audits/viewport.js | title": {
+    "message": "具備包括 `<meta name=\"viewport\">` 或 `width` 的 `initial-scale` 標籤"
+  },
+  "lighthouse-core/audits/without-javascript.js | description": {
+    "message": "當 JavaScript 停用時,您的應用程式應該要顯示一些內容,即使只是向使用者顯示「必須啟用 JavaScript 才能使用此應用程式」這類警告訊息亦可。[瞭解詳情](https://developers.google.com/web/tools/lighthouse/audits/no-js)。"
+  },
+  "lighthouse-core/audits/without-javascript.js | explanation": {
+    "message": "即使網頁的指令碼無法使用,網頁內文仍應顯示一些內容。"
+  },
+  "lighthouse-core/audits/without-javascript.js | failureTitle": {
+    "message": "當 JavaScript 無法使用時不提供備用內容"
+  },
+  "lighthouse-core/audits/without-javascript.js | title": {
+    "message": "當 JavaScript 無法使用時包含一些內容"
+  },
+  "lighthouse-core/audits/works-offline.js | description": {
+    "message": "如果您正在建立漸進式網絡應用程式,請考慮使用 Service Worker,以便您的應用程式離線運作。[瞭解詳情](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)。"
+  },
+  "lighthouse-core/audits/works-offline.js | failureTitle": {
+    "message": "目前的網頁在離線時不會傳回狀態碼 200 的回應"
+  },
+  "lighthouse-core/audits/works-offline.js | title": {
+    "message": "目前的網頁在離線時會傳回狀態碼 200 的回應"
+  },
+  "lighthouse-core/audits/works-offline.js | warningNoLoad": {
+    "message": "由於您的測試網址 ({requested}) 已重新導向至「{final}」,因此此頁面可能無法在離線時載入。請試著直接測試第二個網址。"
+  },
+  "lighthouse-core/config/default-config.js | a11yAriaGroupDescription": {
+    "message": "這些提示可協助改善 ARIA 在應用程式中的使用情況,進而提升輔助技術 (例如螢幕閱讀器) 使用者的體驗。"
+  },
+  "lighthouse-core/config/default-config.js | a11yAriaGroupTitle": {
+    "message": "ARIA"
+  },
+  "lighthouse-core/config/default-config.js | a11yAudioVideoGroupDescription": {
+    "message": "這些審核結果建議您為音訊和影片提供替代內容。這或許能改善聽障或視障人士的使用體驗。"
+  },
+  "lighthouse-core/config/default-config.js | a11yAudioVideoGroupTitle": {
+    "message": "音訊和影片"
+  },
+  "lighthouse-core/config/default-config.js | a11yBestPracticesGroupDescription": {
+    "message": "這些審核項目會提供常見的無障礙功能最佳做法。"
+  },
+  "lighthouse-core/config/default-config.js | a11yBestPracticesGroupTitle": {
+    "message": "最佳做法"
+  },
+  "lighthouse-core/config/default-config.js | a11yCategoryDescription": {
+    "message": "這些檢查會提供[網頁應用程式無障礙功能的改善建議](https://developers.google.com/web/fundamentals/accessibility)。系統只能自動偵測一部分的無障礙功能問題,因此建議您另行手動測試。"
+  },
+  "lighthouse-core/config/default-config.js | a11yCategoryManualDescription": {
+    "message": "這些審核項目會檢查自動化測試工具未涵蓋的區域。詳情請參閱[無障礙功能審查的執行指南](https://developers.google.com/web/fundamentals/accessibility/how-to-review)。"
+  },
+  "lighthouse-core/config/default-config.js | a11yCategoryTitle": {
+    "message": "無障礙功能"
+  },
+  "lighthouse-core/config/default-config.js | a11yColorContrastGroupDescription": {
+    "message": "這些提示有助提高內容的易讀性。"
+  },
+  "lighthouse-core/config/default-config.js | a11yColorContrastGroupTitle": {
+    "message": "對比"
+  },
+  "lighthouse-core/config/default-config.js | a11yLanguageGroupDescription": {
+    "message": "您可以根據這些提示作出改善,讓其他地區的使用者更容易理解您的內容。"
+  },
+  "lighthouse-core/config/default-config.js | a11yLanguageGroupTitle": {
+    "message": "國際化和本地化"
+  },
+  "lighthouse-core/config/default-config.js | a11yNamesLabelsGroupDescription": {
+    "message": "這些提示可協助提高應用程式中的控制項語義品質。這或許能改善輔助技術 (例如螢幕閱讀器) 的使用體驗。"
+  },
+  "lighthouse-core/config/default-config.js | a11yNamesLabelsGroupTitle": {
+    "message": "名稱和標籤"
+  },
+  "lighthouse-core/config/default-config.js | a11yNavigationGroupDescription": {
+    "message": "這些審核結果可協助提高應用程式中的鍵盤瀏覽體驗。"
+  },
+  "lighthouse-core/config/default-config.js | a11yNavigationGroupTitle": {
+    "message": "導覽"
+  },
+  "lighthouse-core/config/default-config.js | a11yTablesListsVideoGroupDescription": {
+    "message": "這些審核結果建議您運用輔助技術 (例如螢幕閱讀器),改善表格或清單資料的閱讀體驗。"
+  },
+  "lighthouse-core/config/default-config.js | a11yTablesListsVideoGroupTitle": {
+    "message": "表格和清單"
+  },
+  "lighthouse-core/config/default-config.js | bestPracticesCategoryTitle": {
+    "message": "最佳做法"
+  },
+  "lighthouse-core/config/default-config.js | budgetsGroupDescription": {
+    "message": "您可根據效能預算設定網站效能的標準。"
+  },
+  "lighthouse-core/config/default-config.js | budgetsGroupTitle": {
+    "message": "預算"
+  },
+  "lighthouse-core/config/default-config.js | diagnosticsGroupDescription": {
+    "message": "進一步瞭解應用程式效能。這些數字不會[直接影響](https://github.com/GoogleChrome/lighthouse/blob/d2ec9ffbb21de9ad1a0f86ed24575eda32c796f0/docs/scoring.md#how-are-the-scores-weighted)「效能」分數。"
+  },
+  "lighthouse-core/config/default-config.js | diagnosticsGroupTitle": {
+    "message": "診斷"
+  },
+  "lighthouse-core/config/default-config.js | firstPaintImprovementsGroupDescription": {
+    "message": "評估效能的最重要指標在於像素在畫面上的呈現速度。關鍵數據:「首次內容繪製時間」、「首次有效繪製時間」"
+  },
+  "lighthouse-core/config/default-config.js | firstPaintImprovementsGroupTitle": {
+    "message": "首次繪製改進"
+  },
+  "lighthouse-core/config/default-config.js | loadOpportunitiesGroupDescription": {
+    "message": "這些建議可加快網頁載入速度,但不會[直接影響](https://github.com/GoogleChrome/lighthouse/blob/d2ec9ffbb21de9ad1a0f86ed24575eda32c796f0/docs/scoring.md#how-are-the-scores-weighted)「效能」分數。"
+  },
+  "lighthouse-core/config/default-config.js | loadOpportunitiesGroupTitle": {
+    "message": "優化建議"
+  },
+  "lighthouse-core/config/default-config.js | metricGroupTitle": {
+    "message": "數據"
+  },
+  "lighthouse-core/config/default-config.js | overallImprovementsGroupDescription": {
+    "message": "改善整體載入體驗,令網頁反應更靈敏快捷,盡快可供用戶使用。關鍵數據:可互動時間、速度指數"
+  },
+  "lighthouse-core/config/default-config.js | overallImprovementsGroupTitle": {
+    "message": "整體改進"
+  },
+  "lighthouse-core/config/default-config.js | performanceCategoryTitle": {
+    "message": "效能"
+  },
+  "lighthouse-core/config/default-config.js | pwaCategoryDescription": {
+    "message": "這些檢查項目可驗證漸進式網絡應用程式的不同層面。[瞭解詳情](https://developers.google.com/web/progressive-web-apps/checklist)。"
+  },
+  "lighthouse-core/config/default-config.js | pwaCategoryManualDescription": {
+    "message": "這些是基本 [PWA 檢查清單](https://developers.google.com/web/progressive-web-apps/checklist)規定的檢查項目,但 Lighthouse 不會自動檢查這些項目。它們不會影響您的分數,但請務必手動驗證這些項目。"
+  },
+  "lighthouse-core/config/default-config.js | pwaCategoryTitle": {
+    "message": "漸進式網絡應用程式"
+  },
+  "lighthouse-core/config/default-config.js | pwaFastReliableGroupTitle": {
+    "message": "運作快速,效能可靠"
+  },
+  "lighthouse-core/config/default-config.js | pwaInstallableGroupTitle": {
+    "message": "可安裝"
+  },
+  "lighthouse-core/config/default-config.js | pwaOptimizedGroupTitle": {
+    "message": "已優化 PWA"
+  },
+  "lighthouse-core/config/default-config.js | seoCategoryDescription": {
+    "message": "這些檢查可確保網頁採用已優化的搜尋引擎結果排名設定。部分其他因素不在 Lighthouse 檢查範圍內,仍可能會影響您的搜尋排名。[瞭解詳情](https://support.google.com/webmasters/answer/35769)。"
+  },
+  "lighthouse-core/config/default-config.js | seoCategoryManualDescription": {
+    "message": "在您的網站上執行這些額外的驗證工具,以檢查其他 SEO 最佳做法。"
+  },
+  "lighthouse-core/config/default-config.js | seoCategoryTitle": {
+    "message": "搜尋引擎優化 (SEO)"
+  },
+  "lighthouse-core/config/default-config.js | seoContentGroupDescription": {
+    "message": "請設定您的 HTML 格式,讓檢索器更能瞭解應用程式內容。"
+  },
+  "lighthouse-core/config/default-config.js | seoContentGroupTitle": {
+    "message": "關於內容的最佳做法"
+  },
+  "lighthouse-core/config/default-config.js | seoCrawlingGroupDescription": {
+    "message": "檢索器需要存取您的應用程式,網站才會在搜尋結果中顯示。"
+  },
+  "lighthouse-core/config/default-config.js | seoCrawlingGroupTitle": {
+    "message": "檢索和加入索引"
+  },
+  "lighthouse-core/config/default-config.js | seoMobileGroupDescription": {
+    "message": "請確保您的頁面適合透過流動裝置瀏覽,讓使用者無需兩指縮放或放大螢幕即可閱讀網頁內容。[瞭解詳情](https://developers.google.com/search/mobile-sites/)。"
+  },
+  "lighthouse-core/config/default-config.js | seoMobileGroupTitle": {
+    "message": "適合透過流動裝置瀏覽"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnCacheTTL": {
+    "message": "快取 TTL"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnLocation": {
+    "message": "位置"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnName": {
+    "message": "名稱"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnRequests": {
+    "message": "要求"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnResourceType": {
+    "message": "資源類型"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnSize": {
+    "message": "大小"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnTimeSpent": {
+    "message": "所用的時間"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnTransferSize": {
+    "message": "傳輸大小"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnURL": {
+    "message": "網址"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnWastedBytes": {
+    "message": "可節省的數據用量"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnWastedMs": {
+    "message": "可節省的數據用量"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | displayValueByteSavings": {
+    "message": "可節省 {wastedBytes, number, bytes} KB"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | displayValueMsSavings": {
+    "message": "可減少 {wastedMs, number, milliseconds} 毫秒"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | documentResourceType": {
+    "message": "文件"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | fontResourceType": {
+    "message": "字型"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | imageResourceType": {
+    "message": "圖片"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | mediaResourceType": {
+    "message": "媒體"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | ms": {
+    "message": "{timeInMs, number, milliseconds} 毫秒"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | otherResourceType": {
+    "message": "其他"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | scriptResourceType": {
+    "message": "指令碼"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | seconds": {
+    "message": "{timeInMs, number, seconds} 秒"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | stylesheetResourceType": {
+    "message": "樣式表"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | thirdPartyResourceType": {
+    "message": "第三方"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | totalResourceType": {
+    "message": "總計"
+  },
+  "lighthouse-core/lib/lh-error.js | badTraceRecording": {
+    "message": "追蹤記錄網頁載入情況時發生錯誤。請重新執行 Lighthouse。({errorCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | criTimeout": {
+    "message": "等待「Debugger 通訊協定」初始連線時逾時。"
+  },
+  "lighthouse-core/lib/lh-error.js | didntCollectScreenshots": {
+    "message": "Chrome 在網頁載入期間未能收集任何螢幕擷取畫面。請確認網頁上有可見內容,然後嘗試重新執行 Lighthouse。({errorCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | dnsFailure": {
+    "message": "DNS 伺服器無法解析您提供的網域。"
+  },
+  "lighthouse-core/lib/lh-error.js | erroredRequiredArtifact": {
+    "message": "必要的 {artifactName} 收集程式發生錯誤:{errorMessage}"
+  },
+  "lighthouse-core/lib/lh-error.js | internalChromeError": {
+    "message": "Chrome 發生內部錯誤。請重新啟動 Chrome,並嘗試重新執行 Lighthouse。"
+  },
+  "lighthouse-core/lib/lh-error.js | missingRequiredArtifact": {
+    "message": "未執行必要的 {artifactName} 收集程式。"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailed": {
+    "message": "Lighthouse 無法穩定載入您要求的網頁。請確認您測試的網址是否正確,以及伺服器是否正確回應所有要求。"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedHung": {
+    "message": "您要求的網頁已停止回應,因此 Lighthouse 無法穩定載入該網址。"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedInsecure": {
+    "message": "您提供的網址並無有效的安全憑證。{securityMessages}"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedInterstitial": {
+    "message": "Chrome 使用插頁式畫面阻止系統載入網頁。請確認您測試的網址是否正確,以及伺服器是否正確回應所有要求。"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedWithDetails": {
+    "message": "Lighthouse 無法穩定載入您要求的網頁。請確認您測試的網址是否正確,以及伺服器是否正確回應所有要求。(詳情:{errorDetails})"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedWithStatusCode": {
+    "message": "Lighthouse 無法穩定載入您要求的網頁。請確認您測試的網址是否正確,以及伺服器是否正確回應所有要求。(狀態代碼:{statusCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadTookTooLong": {
+    "message": "網頁的載入時間過長。請按照報告中的建議縮短網頁的載入時間,並嘗試重新啟動 Lighthouse。({errorCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | protocolTimeout": {
+    "message": "等待 DevTools 通訊協定回應的時間超出系統分配上限。(方法:{protocolMethod})"
+  },
+  "lighthouse-core/lib/lh-error.js | requestContentTimeout": {
+    "message": "擷取資源內容的時間超出系統分配上限。"
+  },
+  "lighthouse-core/lib/lh-error.js | urlInvalid": {
+    "message": "您提供的網址無效。"
+  },
+  "lighthouse-core/report/html/renderer/util.js | auditGroupExpandTooltip": {
+    "message": "顯示審核結果"
+  },
+  "lighthouse-core/report/html/renderer/util.js | crcInitialNavigation": {
+    "message": "初始導覽"
+  },
+  "lighthouse-core/report/html/renderer/util.js | crcLongestDurationLabel": {
+    "message": "關鍵路徑延遲時間上限:"
+  },
+  "lighthouse-core/report/html/renderer/util.js | errorLabel": {
+    "message": "發生錯誤!"
+  },
+  "lighthouse-core/report/html/renderer/util.js | errorMissingAuditInfo": {
+    "message": "報告錯誤:無審核資料"
+  },
+  "lighthouse-core/report/html/renderer/util.js | labDataTitle": {
+    "message": "實驗室數據"
+  },
+  "lighthouse-core/report/html/renderer/util.js | lsPerformanceCategoryDescription": {
+    "message": "[Lighthouse](https://developers.google.com/web/tools/lighthouse/) 在模擬流動網絡上對目前網頁進行的分析。此為預計值,可能與實際值有所不同。"
+  },
+  "lighthouse-core/report/html/renderer/util.js | manualAuditsGroupTitle": {
+    "message": "其他手動檢查項目"
+  },
+  "lighthouse-core/report/html/renderer/util.js | notApplicableAuditsGroupTitle": {
+    "message": "不適用"
+  },
+  "lighthouse-core/report/html/renderer/util.js | opportunityResourceColumnLabel": {
+    "message": "優化建議"
+  },
+  "lighthouse-core/report/html/renderer/util.js | opportunitySavingsColumnLabel": {
+    "message": "預計節省的時間"
+  },
+  "lighthouse-core/report/html/renderer/util.js | passedAuditsGroupTitle": {
+    "message": "已通過的審核"
+  },
+  "lighthouse-core/report/html/renderer/util.js | snippetCollapseButtonLabel": {
+    "message": "收合片段"
+  },
+  "lighthouse-core/report/html/renderer/util.js | snippetExpandButtonLabel": {
+    "message": "展開片段"
+  },
+  "lighthouse-core/report/html/renderer/util.js | thirdPartyResourcesLabel": {
+    "message": "顯示第三方資源"
+  },
+  "lighthouse-core/report/html/renderer/util.js | toplevelWarningsMessage": {
+    "message": "導致這次 Lighthouse 無法順利執行的問題:"
+  },
+  "lighthouse-core/report/html/renderer/util.js | varianceDisclaimer": {
+    "message": "此為預計值,可能與實際值有所不同。系統[只會根據這些數據](https://github.com/GoogleChrome/lighthouse/blob/d2ec9ffbb21de9ad1a0f86ed24575eda32c796f0/docs/scoring.md#how-are-the-scores-weighted)計算效能分數。"
+  },
+  "lighthouse-core/report/html/renderer/util.js | warningAuditsGroupTitle": {
+    "message": "經過審核,但附有警告訊息"
+  },
+  "lighthouse-core/report/html/renderer/util.js | warningHeader": {
+    "message": "警告: "
+  },
+  "stack-packs/packs/wordpress.js | efficient_animated_content": {
+    "message": "建議將 GIF 上載至可將 GIF 用作 HTML5 影片嵌入的伺服器。"
+  },
+  "stack-packs/packs/wordpress.js | offscreen_images": {
+    "message": "安裝可延遲載入所有畫面外圖片的[延遲載入 WordPress 外掛程式](https://wordpress.org/plugins/search/lazy+load/),或改用提供此功能的主題。您亦可考慮使用 [AMP 外掛程式](https://wordpress.org/plugins/amp/)。"
+  },
+  "stack-packs/packs/wordpress.js | render_blocking_resources": {
+    "message": "部分 WordPress 外掛程式可助您[內嵌重要資產](https://wordpress.org/plugins/search/critical+css/)或[延後載入較不重要的資源](https://wordpress.org/plugins/search/defer+css+javascript/)。請注意,這些外掛程式的優化設定可能影響主題或外掛程式的功能,因此您可能需要變更程式碼。"
+  },
+  "stack-packs/packs/wordpress.js | time_to_first_byte": {
+    "message": "主題、外掛程式和伺服器規格均會影響伺服器回應時間。建議尋找更優化的主題、謹慎選擇優化外掛程式和/或升級伺服器。"
+  },
+  "stack-packs/packs/wordpress.js | total_byte_weight": {
+    "message": "建議在文章清單中顯示摘錄 (例如加入更多標籤)、減少特定頁面顯示的文章數量、將較長的文章分為多個頁面,或使用可延遲載入留言的外掛程式。"
+  },
+  "stack-packs/packs/wordpress.js | unminified_css": {
+    "message": "部分 [WordPress 外掛程式](https://wordpress.org/plugins/search/minify+css/) 可以透過串連、縮小及壓縮樣式來提升網站速度。可以的話,您亦可建立流程來直接進行此壓縮操作。"
+  },
+  "stack-packs/packs/wordpress.js | unminified_javascript": {
+    "message": "部分 [WordPress 外掛程式](https://wordpress.org/plugins/search/minify+javascript/) 可透過串連、縮小及壓縮指令碼來提升網站速度。可以的話,您亦可建立流程來直接進行此壓縮操作。"
+  },
+  "stack-packs/packs/wordpress.js | unused_css_rules": {
+    "message": "部分 [WordPress 外掛程式](https://wordpress.org/plugins/)會在網頁中載入未使用的 CSS,建議你減少這類外掛程式的數量,或改用其他外掛程式。如要找出會新增多餘 CSS 的外掛程式,請嘗試在 Chrome DevTools 中執[程式碼覆蓋率](https://developers.google.com/web/updates/2017/04/devtools-release-notes#coverage)。您可透過樣式表網址找出有問題的主題/外掛程式。請留意清單中包含很多樣式表,且程式碼覆蓋率中有大量紅色標示的外掛程式。外掛程式應只將網頁上實際使用的樣式表加入清單。"
+  },
+  "stack-packs/packs/wordpress.js | unused_javascript": {
+    "message": "部分 [WordPress 外掛程式](https://wordpress.org/plugins/)會在網頁中載入未使用的 JavaScript,建議你減少這類外掛程式的數量,或改用其他外掛程式。如要找出會新增多餘 JS 的外掛程式,請嘗試在 Chrome DevTools 中執[程式碼覆蓋率](https://developers.google.com/web/updates/2017/04/devtools-release-notes#coverage)。您可透過指令碼網址找出有問題的主題/外掛程式。請留意清單中包含很多指令碼,且程式碼覆蓋率中有大量紅色標示的外掛程式。外掛程式應只將網頁上實際使用的指令碼加入清單。"
+  },
+  "stack-packs/packs/wordpress.js | uses_long_cache_ttl": {
+    "message": "瞭解 [WordPress 的瀏覽器快取功能](https://codex.wordpress.org/WordPress_Optimization#Browser_Caching)。"
+  },
+  "stack-packs/packs/wordpress.js | uses_optimized_images": {
+    "message": "建議使用[圖片優化 WordPress 外掛程式](https://wordpress.org/plugins/search/optimize+images/),在壓縮圖片時保持畫質。"
+  },
+  "stack-packs/packs/wordpress.js | uses_responsive_images": {
+    "message": "您可直接透過[媒體庫](https://codex.wordpress.org/Media_Library_Screen)上載圖片,確保可使用所需的圖片大小,然後從媒體庫插入圖片,或使用圖片小工具來確保您使用優化的圖片大小 (包括回應式中斷點適用的圖片大小)。除非可用空間足夠,否則請避免使用「`Full Size`」圖片。[瞭解詳情](https://codex.wordpress.org/Inserting_Images_into_Posts_and_Pages#Image_Size)。"
+  },
+  "stack-packs/packs/wordpress.js | uses_text_compression": {
+    "message": "您可在網絡伺服器設定中啟用文字壓縮功能。"
+  },
+  "stack-packs/packs/wordpress.js | uses_webp_images": {
+    "message": "建議使用會自動將已上載圖片轉換成最佳格式的[外掛程式](https://wordpress.org/plugins/search/convert+webp/)或服務。"
+  }
+}
diff --git a/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/zh-TW.json b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/zh-TW.json
new file mode 100644
index 0000000..d69e31c0
--- /dev/null
+++ b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/zh-TW.json
@@ -0,0 +1,1541 @@
+{
+  "lighthouse-core/audits/accessibility/accesskeys.js | description": {
+    "message": "快速鍵可讓使用者快速聚焦網頁的特定部分。要讓使用者正確瀏覽,每個快速鍵一律不得重複。[瞭解詳情](https://web.dev/accesskeys/)。"
+  },
+  "lighthouse-core/audits/accessibility/accesskeys.js | failureTitle": {
+    "message": "`[accesskey]` 的值重複"
+  },
+  "lighthouse-core/audits/accessibility/accesskeys.js | title": {
+    "message": "`[accesskey]` 的值沒有重複"
+  },
+  "lighthouse-core/audits/accessibility/aria-allowed-attr.js | description": {
+    "message": "每個 ARIA `role`都支援一部分特定的 `aria-*` 屬性。若配對錯誤,`aria-*` 屬性將失去效力。[瞭解詳情](https://web.dev/aria-allowed-attr/)。"
+  },
+  "lighthouse-core/audits/accessibility/aria-allowed-attr.js | failureTitle": {
+    "message": "`[aria-*]` 屬性與其角色不符"
+  },
+  "lighthouse-core/audits/accessibility/aria-allowed-attr.js | title": {
+    "message": "`[aria-*]` 屬性與其角色相符"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-attr.js | description": {
+    "message": "部分 ARIA 角色的必要屬性會向螢幕閱讀器的使用者說明元素狀態。[瞭解詳情](https://web.dev/aria-required-attr/)。"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-attr.js | failureTitle": {
+    "message": "`[role]` 未具備所有必要的 `[aria-*]` 屬性"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-attr.js | title": {
+    "message": "`[role]` 具備所有必要的 `[aria-*]` 屬性"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-children.js | description": {
+    "message": "部分 ARIA 父項角色必須包含特定的子項角色,才能正確執行無障礙功能。[瞭解詳情](https://web.dev/aria-required-children/)。"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-children.js | failureTitle": {
+    "message": "設有 `[role]` 的元素缺少必備的特定子項 `[role]`。"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-children.js | title": {
+    "message": "設有 `[role]` 的元素具有必備的特定子項 `[role]`"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-parent.js | description": {
+    "message": "部分 ARIA 子項角色必須包含在特定的父項角色中,才能正確執行其無障礙功能。[瞭解詳情](https://web.dev/aria-required-parent/)。"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-parent.js | failureTitle": {
+    "message": "`[role]` 未包含在必要的父項元素中"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-parent.js | title": {
+    "message": "`[role]` 包含在必要的父項元素中"
+  },
+  "lighthouse-core/audits/accessibility/aria-roles.js | description": {
+    "message": "ARIA 角色必須具備有效的值,才能執行其無障礙功能。[瞭解詳情](https://web.dev/aria-roles/)。"
+  },
+  "lighthouse-core/audits/accessibility/aria-roles.js | failureTitle": {
+    "message": "`[role]` 不具備有效的值"
+  },
+  "lighthouse-core/audits/accessibility/aria-roles.js | title": {
+    "message": "`[role]` 具備有效的值"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr-value.js | description": {
+    "message": "輔助技術 (例如螢幕閱讀器) 無法解讀數值無效的 ARIA 屬性。[瞭解詳情](https://web.dev/aria-valid-attr-value/)。"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr-value.js | failureTitle": {
+    "message": "`[aria-*]` 屬性缺少有效的值"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr-value.js | title": {
+    "message": "`[aria-*]` 屬性具備有效的值"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr.js | description": {
+    "message": "輔助技術 (例如螢幕閱讀器) 無法解讀包含無效名稱的 ARIA 屬性。[瞭解詳情](https://web.dev/aria-valid-attr/)。"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr.js | failureTitle": {
+    "message": "`[aria-*]` 屬性無效或有錯字"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr.js | title": {
+    "message": "`[aria-*]` 屬性有效且拼字正確"
+  },
+  "lighthouse-core/audits/accessibility/audio-caption.js | description": {
+    "message": "字幕可提供說話者身分、說話內容等關鍵資訊以及其他非口語資訊,方便失聰或聽障使用者使用音訊元素。[瞭解詳情](https://web.dev/audio-caption/)。"
+  },
+  "lighthouse-core/audits/accessibility/audio-caption.js | failureTitle": {
+    "message": "`<audio>` 元素缺少帶有 `[kind=\"captions\"]` 的 `<track>` 元素。"
+  },
+  "lighthouse-core/audits/accessibility/audio-caption.js | title": {
+    "message": "`<audio>` 元素包含帶有 `[kind=\"captions\"]` 的 `<track>` 元素"
+  },
+  "lighthouse-core/audits/accessibility/axe-audit.js | failingElementsHeader": {
+    "message": "未通過稽核的元素"
+  },
+  "lighthouse-core/audits/accessibility/button-name.js | description": {
+    "message": "如果沒有可解讀的按鈕名稱,螢幕閱讀器只會讀出「按鈕」,這樣仰賴螢幕閱讀器的使用者就無法知道這個按鈕的用途。[瞭解詳情](https://web.dev/button-name/)。"
+  },
+  "lighthouse-core/audits/accessibility/button-name.js | failureTitle": {
+    "message": "按鈕沒有可存取的名稱"
+  },
+  "lighthouse-core/audits/accessibility/button-name.js | title": {
+    "message": "按鈕具有可解讀的名稱"
+  },
+  "lighthouse-core/audits/accessibility/bypass.js | description": {
+    "message": "針對重複的內容增設略過選項,可提高鍵盤使用者的網頁瀏覽效率。[瞭解詳情](https://web.dev/bypass/)。"
+  },
+  "lighthouse-core/audits/accessibility/bypass.js | failureTitle": {
+    "message": "這個網頁中沒有標題、略過連結或標記區域"
+  },
+  "lighthouse-core/audits/accessibility/bypass.js | title": {
+    "message": "這個網頁包含標題、略過連結或標記區域"
+  },
+  "lighthouse-core/audits/accessibility/color-contrast.js | description": {
+    "message": "低對比度的文字對許多讀者來說難以閱讀或無法閱讀。[瞭解詳情](https://web.dev/color-contrast/)。"
+  },
+  "lighthouse-core/audits/accessibility/color-contrast.js | failureTitle": {
+    "message": "背景和前景顏色沒有足夠的對比度。"
+  },
+  "lighthouse-core/audits/accessibility/color-contrast.js | title": {
+    "message": "背景和前景顏色具有足夠的對比度"
+  },
+  "lighthouse-core/audits/accessibility/definition-list.js | description": {
+    "message": "如果定義清單的標記不正確,螢幕閱讀器可能會輸出令人混淆或不正確的內容。[瞭解詳情](https://web.dev/definition-list/)。"
+  },
+  "lighthouse-core/audits/accessibility/definition-list.js | failureTitle": {
+    "message": "`<dl>` 所含項目不只有排序正確的 `<dt>` 和 `<dd>` 群組、`<script>` 或 `<template>` 元素。"
+  },
+  "lighthouse-core/audits/accessibility/definition-list.js | title": {
+    "message": "`<dl>` 所含項目只有排序正確的 `<dt>` 和 `<dd>` 群組、`<script>` 或 `<template>` 元素。"
+  },
+  "lighthouse-core/audits/accessibility/dlitem.js | description": {
+    "message": "定義清單項目 (`<dt>` 和 `<dd>`) 必須納入在父項 `<dl>` 元素中,才能確保螢幕閱讀器正確朗讀這些項目。[瞭解詳情](https://web.dev/dlitem/)。"
+  },
+  "lighthouse-core/audits/accessibility/dlitem.js | failureTitle": {
+    "message": "定義清單項目未納入在 `<dl>` 元素中"
+  },
+  "lighthouse-core/audits/accessibility/dlitem.js | title": {
+    "message": "定義清單項目已納入在 `<dl>` 元素中"
+  },
+  "lighthouse-core/audits/accessibility/document-title.js | description": {
+    "message": "標題可讓螢幕閱讀器使用者概略瞭解網頁內容;搜尋引擎使用者經常需要使用這項資訊,以判斷網頁內容是否與他們的搜尋項目有關。[瞭解詳情](https://web.dev/document-title/)。"
+  },
+  "lighthouse-core/audits/accessibility/document-title.js | failureTitle": {
+    "message": "文件缺少 `<title>` 元素"
+  },
+  "lighthouse-core/audits/accessibility/document-title.js | title": {
+    "message": "文件具有 `<title>` 元素"
+  },
+  "lighthouse-core/audits/accessibility/duplicate-id.js | description": {
+    "message": "ID 屬性的值不得重複,以免輔助技術忽略其他重複的值。[瞭解詳情](https://web.dev/duplicate-id/)。"
+  },
+  "lighthouse-core/audits/accessibility/duplicate-id.js | failureTitle": {
+    "message": "網頁中的 `[id]` 屬性重複"
+  },
+  "lighthouse-core/audits/accessibility/duplicate-id.js | title": {
+    "message": "網頁中的 `[id]` 屬性沒有重複"
+  },
+  "lighthouse-core/audits/accessibility/frame-title.js | description": {
+    "message": "螢幕閱讀器需使用頁框標題才能說明頁框內容。[瞭解詳情](https://web.dev/frame-title/)。"
+  },
+  "lighthouse-core/audits/accessibility/frame-title.js | failureTitle": {
+    "message": "`<frame>` 或 `<iframe>` 元素缺少名稱"
+  },
+  "lighthouse-core/audits/accessibility/frame-title.js | title": {
+    "message": "`<frame>` 或 `<iframe>` 元素包含名稱"
+  },
+  "lighthouse-core/audits/accessibility/html-has-lang.js | description": {
+    "message": "如果網頁未指定 [lang] 屬性,螢幕閱讀器會假設網頁採用的是使用者在設定螢幕閱讀器時所選擇的預設語言。如果網頁實際採用的語言並非預設語言,那麼螢幕閱讀器可能無法正確朗讀網頁文字。[瞭解詳情](https://web.dev/html-has-lang/)。"
+  },
+  "lighthouse-core/audits/accessibility/html-has-lang.js | failureTitle": {
+    "message": "`<html>` 元素缺少 `[lang]` 屬性"
+  },
+  "lighthouse-core/audits/accessibility/html-has-lang.js | title": {
+    "message": "`<html>` 元素具備 `[lang]` 屬性"
+  },
+  "lighthouse-core/audits/accessibility/html-lang-valid.js | description": {
+    "message": "指定有效的 [BCP 47 語言](https://www.w3.org/International/questions/qa-choosing-language-tags#question),可協助螢幕閱讀器正確朗讀文字。[瞭解詳情](https://web.dev/html-lang-valid/)。"
+  },
+  "lighthouse-core/audits/accessibility/html-lang-valid.js | failureTitle": {
+    "message": "`<html>` 元素的 `[lang]` 屬性缺少有效的值。"
+  },
+  "lighthouse-core/audits/accessibility/html-lang-valid.js | title": {
+    "message": "`<html>` 元素的 `[lang]` 屬性具備有效的值"
+  },
+  "lighthouse-core/audits/accessibility/image-alt.js | description": {
+    "message": "說明元素應提供簡短貼切的替代文字。如果是裝飾元素,只要將 alt 屬性留空,系統即會忽略該元素。[瞭解詳情](https://web.dev/image-alt/)。"
+  },
+  "lighthouse-core/audits/accessibility/image-alt.js | failureTitle": {
+    "message": "圖片元素缺少 `[alt]` 屬性"
+  },
+  "lighthouse-core/audits/accessibility/image-alt.js | title": {
+    "message": "圖片元素具有 `[alt]` 屬性"
+  },
+  "lighthouse-core/audits/accessibility/input-image-alt.js | description": {
+    "message": "如果 `<input>` 按鈕是以圖片呈現,提供替代文字可協助螢幕閱讀器使用者瞭解該按鈕的用途。[瞭解詳情](https://web.dev/input-image-alt/)。"
+  },
+  "lighthouse-core/audits/accessibility/input-image-alt.js | failureTitle": {
+    "message": "`<input type=\"image\">` 元素未設定 `[alt]` 文字"
+  },
+  "lighthouse-core/audits/accessibility/input-image-alt.js | title": {
+    "message": "`<input type=\"image\">` 元素具有 `[alt]` 文字"
+  },
+  "lighthouse-core/audits/accessibility/label.js | description": {
+    "message": "標籤可確保輔助技術 (例如螢幕閱讀器) 正確朗讀表單控制項。[瞭解詳情](https://web.dev/label/)。"
+  },
+  "lighthouse-core/audits/accessibility/label.js | failureTitle": {
+    "message": "表單元素沒有相關聯的標籤"
+  },
+  "lighthouse-core/audits/accessibility/label.js | title": {
+    "message": "表單元素具有相關聯的標籤"
+  },
+  "lighthouse-core/audits/accessibility/layout-table.js | description": {
+    "message": "用於版面配置的表格不應包含資料元素 (例如 th、字幕元素或摘要屬性),否則可能會對螢幕閱讀器使用者造成混淆。[瞭解詳情](https://web.dev/layout-table/)。"
+  },
+  "lighthouse-core/audits/accessibility/layout-table.js | failureTitle": {
+    "message": "表示性元素 `<table>` 未避免使用 `<th>`、`<caption>` 元素或 `[summary]` 屬性。"
+  },
+  "lighthouse-core/audits/accessibility/layout-table.js | title": {
+    "message": "表示性元素 `<table>` 並未使用 `<th>`、`<caption>` 或 `[summary]` 屬性。"
+  },
+  "lighthouse-core/audits/accessibility/link-name.js | description": {
+    "message": "使用可辨別、未重複且可聚焦的連結文字 (以及連結圖片的替代文字),有助於改善螢幕閱讀器使用者的瀏覽體驗。[瞭解詳情](https://web.dev/link-name/)。"
+  },
+  "lighthouse-core/audits/accessibility/link-name.js | failureTitle": {
+    "message": "連結缺少可辨別的名稱"
+  },
+  "lighthouse-core/audits/accessibility/link-name.js | title": {
+    "message": "連結具有可辨別的名稱"
+  },
+  "lighthouse-core/audits/accessibility/list.js | description": {
+    "message": "螢幕閱讀器會以特定方式朗讀清單。請務必採用正確的清單結構,這樣螢幕閱讀器才能順利讀出畫面內容。[瞭解詳情](https://web.dev/list/)。"
+  },
+  "lighthouse-core/audits/accessibility/list.js | failureTitle": {
+    "message": "清單中並非只包含 `<li>` 元素和指令碼支援元素 (`<script>` 和 `<template>`)。"
+  },
+  "lighthouse-core/audits/accessibility/list.js | title": {
+    "message": "清單只包含 `<li>` 元素和指令碼支援元素 (`<script>` 和 `<template>`)。"
+  },
+  "lighthouse-core/audits/accessibility/listitem.js | description": {
+    "message": "清單項目 (`<li>`) 必須包含在父項元素 `<ul>` 或 `<ol>` 中,螢幕閱讀器才能正確朗讀這些項目。[瞭解詳情](https://web.dev/listitem/)。"
+  },
+  "lighthouse-core/audits/accessibility/listitem.js | failureTitle": {
+    "message": "清單項目 (`<li>`) 未包含在 `<ul>` 或 `<ol>` 父項元素中。"
+  },
+  "lighthouse-core/audits/accessibility/listitem.js | title": {
+    "message": "清單項目 (`<li>`) 已包含在 `<ul>` 或 `<ol>` 父項元素中"
+  },
+  "lighthouse-core/audits/accessibility/meta-refresh.js | description": {
+    "message": "使用者不會預期系統自動重新整理網頁,而且這麼做會將焦點移回網頁頂端。這可能會對使用者造成困擾或混淆。[瞭解詳情](https://web.dev/meta-refresh/)。"
+  },
+  "lighthouse-core/audits/accessibility/meta-refresh.js | failureTitle": {
+    "message": "這個文件使用 `<meta http-equiv=\"refresh\">`"
+  },
+  "lighthouse-core/audits/accessibility/meta-refresh.js | title": {
+    "message": "這個文件未使用 `<meta http-equiv=\"refresh\">`"
+  },
+  "lighthouse-core/audits/accessibility/meta-viewport.js | description": {
+    "message": "停用縮放功能會對低視能使用者造成困擾,他們需要使用螢幕放大功能才能清楚看見網頁內容。[瞭解詳情](https://web.dev/meta-viewport/)。"
+  },
+  "lighthouse-core/audits/accessibility/meta-viewport.js | failureTitle": {
+    "message": "`<meta name=\"viewport\">` 元素中使用了 `[user-scalable=\"no\"]`,或是 `[maximum-scale]` 屬性小於 5。"
+  },
+  "lighthouse-core/audits/accessibility/meta-viewport.js | title": {
+    "message": "`<meta name=\"viewport\">` 元素中未使用 `[user-scalable=\"no\"]`,而且 `[maximum-scale]` 屬性大於或等於 5。"
+  },
+  "lighthouse-core/audits/accessibility/object-alt.js | description": {
+    "message": "螢幕閱讀器無法解讀非文字內容。為 `<object>` 元素新增替代文字,可協助螢幕閱讀器向使用者傳達該元素的意義。[瞭解詳情](https://web.dev/object-alt/)。"
+  },
+  "lighthouse-core/audits/accessibility/object-alt.js | failureTitle": {
+    "message": "`<object>` 元素未設定 `[alt]` 文字"
+  },
+  "lighthouse-core/audits/accessibility/object-alt.js | title": {
+    "message": "`<object>` 元素具有 `[alt]` 文字"
+  },
+  "lighthouse-core/audits/accessibility/tabindex.js | description": {
+    "message": "如果值大於 0,表示採用的是明確的瀏覽排序。雖然這在技術上可行,但經常會對仰賴輔助技術的使用者造成困擾。[瞭解詳情](https://web.dev/tabindex/)。"
+  },
+  "lighthouse-core/audits/accessibility/tabindex.js | failureTitle": {
+    "message": "部分元素的 `[tabindex]` 值大於 0"
+  },
+  "lighthouse-core/audits/accessibility/tabindex.js | title": {
+    "message": "所有元素的 `[tabindex]` 值皆未超過 0"
+  },
+  "lighthouse-core/audits/accessibility/td-headers-attr.js | description": {
+    "message": "螢幕閱讀器的功能可讓使用者輕鬆瀏覽表格。請確保使用 `[headers]` 屬性的 `<td>` 儲存格只參照同一表格中的其他儲存格,這樣可改善螢幕閱讀器的使用體驗。[瞭解詳情](https://web.dev/td-headers-attr/)。"
+  },
+  "lighthouse-core/audits/accessibility/td-headers-attr.js | failureTitle": {
+    "message": "`<table>` 元素中採用 `[headers]` 屬性的儲存格,參照了同一表格中的其他儲存格。"
+  },
+  "lighthouse-core/audits/accessibility/td-headers-attr.js | title": {
+    "message": "在 `<table>` 元素中使用 `[headers]` 屬性的儲存格只參照同一表格中的其他儲存格。"
+  },
+  "lighthouse-core/audits/accessibility/th-has-data-cells.js | description": {
+    "message": "螢幕閱讀器的功能可讓使用者輕鬆瀏覽表格。如果能確保表格標題一律參照特定一組儲存格,或許能讓螢幕閱讀器的使用體驗更上一層樓。[瞭解詳情](https://web.dev/th-has-data-cells/)。"
+  },
+  "lighthouse-core/audits/accessibility/th-has-data-cells.js | failureTitle": {
+    "message": "`<th>` 元素和具有 `[role=\"columnheader\"/\"rowheader\"]` 的元素不包含所描述的資料儲存格。"
+  },
+  "lighthouse-core/audits/accessibility/th-has-data-cells.js | title": {
+    "message": "`<th>` 元素和帶有 `[role=\"columnheader\"/\"rowheader\"]` 的元素具有其所描述的資料儲存格。"
+  },
+  "lighthouse-core/audits/accessibility/valid-lang.js | description": {
+    "message": "為元素指定有效的 [BCP 47 語言](https://www.w3.org/International/questions/qa-choosing-language-tags#question),可協助確保螢幕閱讀器正確朗讀文字。[瞭解詳情](https://web.dev/valid-lang/)。"
+  },
+  "lighthouse-core/audits/accessibility/valid-lang.js | failureTitle": {
+    "message": "`[lang]` 屬性缺少有效的值"
+  },
+  "lighthouse-core/audits/accessibility/valid-lang.js | title": {
+    "message": "`[lang]` 屬性具備有效的值"
+  },
+  "lighthouse-core/audits/accessibility/video-caption.js | description": {
+    "message": "如果在影片中提供字幕,將有助於失聰或聽障使用者瞭解影片資訊。[瞭解詳情](https://web.dev/video-caption/)。"
+  },
+  "lighthouse-core/audits/accessibility/video-caption.js | failureTitle": {
+    "message": "`<video>` 元素不含任何帶有 `[kind=\"captions\"]` 的 `<track>` 元素。"
+  },
+  "lighthouse-core/audits/accessibility/video-caption.js | title": {
+    "message": "`<video>` 元素包含帶有 `[kind=\"captions\"]` 的 `<track>` 元素"
+  },
+  "lighthouse-core/audits/accessibility/video-description.js | description": {
+    "message": "音訊說明可為影片提供對話功能無法提供的相關資訊,例如面部表情和場景。[瞭解詳情](https://web.dev/video-description/)。"
+  },
+  "lighthouse-core/audits/accessibility/video-description.js | failureTitle": {
+    "message": "`<video>` 元素不含任何帶有 `[kind=\"description\"]` 的 `<track>` 元素。"
+  },
+  "lighthouse-core/audits/accessibility/video-description.js | title": {
+    "message": "`<video>` 元素包含帶有 `[kind=\"description\"]` 的 `<track>` 元素"
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | description": {
+    "message": "請定義「`apple-touch-icon`」,這樣一來,當 iOS 使用者將漸進式網頁應用程式新增到主螢幕時,系統才會顯示正確圖示。apple-touch-icon 必須指向大小為 192 像素 (或 180 像素) 的不透明正方形 PNG。[瞭解詳情](https://developers.google.com/web/fundamentals/design-and-ux/browser-customization/)。"
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | failureTitle": {
+    "message": "未提供有效的 `apple-touch-icon`"
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | precomposedWarning": {
+    "message": "`apple-touch-icon-precomposed` 版本過舊,建議使用 `apple-touch-icon`。"
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | title": {
+    "message": "具備有效的 `apple-touch-icon`"
+  },
+  "lighthouse-core/audits/bootup-time.js | chromeExtensionsWarning": {
+    "message": "Chrome 擴充功能對這個頁面的載入效能有負面影響。建議透過無痕模式或不含擴充功能的 Chrome 設定檔來稽核頁面。"
+  },
+  "lighthouse-core/audits/bootup-time.js | columnScriptEval": {
+    "message": "指令碼評估"
+  },
+  "lighthouse-core/audits/bootup-time.js | columnScriptParse": {
+    "message": "指令碼剖析"
+  },
+  "lighthouse-core/audits/bootup-time.js | columnTotal": {
+    "message": "CPU 總執行時間"
+  },
+  "lighthouse-core/audits/bootup-time.js | description": {
+    "message": "建議你縮短剖析、編譯及執行 JavaScript 所耗費的時間。提供較小的 JavaScript 酬載可能會有幫助。[瞭解詳情](https://developers.google.com/web/tools/lighthouse/audits/bootup)。"
+  },
+  "lighthouse-core/audits/bootup-time.js | failureTitle": {
+    "message": "減少 JavaScript 執行時間"
+  },
+  "lighthouse-core/audits/bootup-time.js | title": {
+    "message": "JavaScript 執行時間"
+  },
+  "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | description": {
+    "message": "使用大型 GIF 檔案呈現動畫內容會降低網路傳輸效率。建議你改用 MPEG4/WebM 影片格式呈現動畫內容,或是使用 PNG/WebP 格式顯示靜態圖片,以減少網路傳輸的資料量。[瞭解詳情](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/replace-animated-gifs-with-video/)"
+  },
+  "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | title": {
+    "message": "使用影片格式的動畫內容"
+  },
+  "lighthouse-core/audits/byte-efficiency/offscreen-images.js | description": {
+    "message": "建議在所有重要資源載入完成之前,延遲載入畫面外圖片和隱藏項目,以縮短互動準備時間。[瞭解詳情](https://developers.google.com/web/tools/lighthouse/audits/offscreen-images)。"
+  },
+  "lighthouse-core/audits/byte-efficiency/offscreen-images.js | title": {
+    "message": "延後載入畫面外圖片"
+  },
+  "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | description": {
+    "message": "網頁的資源過多,因此妨礙了首次顯示畫面的時間。建議你先載入重要的內嵌 JavaScript/CSS,並延後載入不重要的 JavaScript/樣式。[瞭解詳情](https://developers.google.com/web/tools/lighthouse/audits/blocking-resources)。"
+  },
+  "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | title": {
+    "message": "排除禁止轉譯的資源"
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | description": {
+    "message": "大量的網路酬載會增加使用者的費用負擔,而且往往會延長網頁載入時間。[瞭解詳情](https://developers.google.com/web/tools/lighthouse/audits/network-payloads)。"
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | displayValue": {
+    "message": "總大小為 {totalBytes, number, bytes} KB"
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | failureTitle": {
+    "message": "避免耗用大量網路資源"
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | title": {
+    "message": "避免耗用大量網路資源"
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-css.js | description": {
+    "message": "壓縮 CSS 檔案能減少網路酬載大小。[瞭解詳情](https://developers.google.com/web/tools/lighthouse/audits/minify-css)。"
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-css.js | title": {
+    "message": "壓縮 CSS"
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | description": {
+    "message": "壓縮 JavaScript 檔案能減少酬載大小,並縮短剖析指令碼的時間。[瞭解詳情](https://developers.google.com/speed/docs/insights/MinifyResources)。"
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | title": {
+    "message": "壓縮 JavaScript"
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | description": {
+    "message": "移除樣式表中的無用規則,並延遲載入在不需捲動位置內容中未使用的 CSS,儘量避免網路活動消耗不必要的流量。[瞭解詳情](https://developers.google.com/web/tools/lighthouse/audits/unused-css)。"
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | title": {
+    "message": "移除未使用的 CSS"
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-javascript.js | description": {
+    "message": "移除未使用的 JavaScript,減少網路活動消耗的流量。"
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-javascript.js | title": {
+    "message": "移除未使用的 JavaScript"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | description": {
+    "message": "延長快取生命週期可以加快使用者再次造訪網頁的速度。[瞭解詳情](https://developers.google.com/web/tools/lighthouse/audits/cache-policy)。"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | displayValue": {
+    "message": "{itemCount,plural, =1{找到 1 項資源}other{找到 # 項資源}}"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | failureTitle": {
+    "message": "運用有效的快取政策提供靜態資產"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | title": {
+    "message": "使用有效的快取政策處理靜態資產"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | description": {
+    "message": "經過最佳化的圖片載入速度較快,且能節省使用者的行動數據用量。[瞭解詳情](https://developers.google.com/web/tools/lighthouse/audits/optimize-images)。"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | title": {
+    "message": "圖片編碼有效率"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | description": {
+    "message": "使用大小合適的圖片有助於節省行動數據用量並縮短載入時間。[瞭解詳情](https://developers.google.com/web/tools/lighthouse/audits/oversized-images)。"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | title": {
+    "message": "使用合適的圖片大小"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | description": {
+    "message": "提供的文字資源應經過 (gzip、deflate 或 brotli) 壓縮,將網路傳輸的資料量降至最低。[瞭解詳情](https://developers.google.com/web/tools/lighthouse/audits/text-compression)。"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | title": {
+    "message": "啟用文字壓縮"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | description": {
+    "message": "JPEG 2000、JPEG XR 和 WebP 等圖片格式的壓縮效果通常優於 PNG 或 JPEG,因此能提高下載速度並節省使用者的數據用量。[瞭解詳情](https://developers.google.com/web/tools/lighthouse/audits/webp)。"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | title": {
+    "message": "提供 next-gen 格式的圖片"
+  },
+  "lighthouse-core/audits/content-width.js | description": {
+    "message": "如果你的應用程式內容寬度與可視區域的寬度不相符,應用程式可能無法在行動裝置螢幕上呈現最佳效果。[瞭解詳情](https://developers.google.com/web/tools/lighthouse/audits/content-sized-correctly-for-viewport)。"
+  },
+  "lighthouse-core/audits/content-width.js | explanation": {
+    "message": "可視區域大小 ({innerWidth} 像素) 與視窗大小 ({outerWidth} 像素) 不相符。"
+  },
+  "lighthouse-core/audits/content-width.js | failureTitle": {
+    "message": "未針對可視區域正確調整內容大小"
+  },
+  "lighthouse-core/audits/content-width.js | title": {
+    "message": "已針對可視區域正確調整內容大小"
+  },
+  "lighthouse-core/audits/critical-request-chains.js | description": {
+    "message": "下方的「關鍵要求鏈結」顯示優先載入的資源。建議你縮短鏈結長度、降低下載資源的大小,或是將非必要資源延後載入,以提高網頁載入速度。[瞭解詳情](https://developers.google.com/web/tools/lighthouse/audits/critical-request-chains)。"
+  },
+  "lighthouse-core/audits/critical-request-chains.js | displayValue": {
+    "message": "{itemCount,plural, =1{找到 1 個鏈結}other{找到 # 個鏈結}}"
+  },
+  "lighthouse-core/audits/critical-request-chains.js | title": {
+    "message": "將關鍵要求層級降至最低"
+  },
+  "lighthouse-core/audits/deprecations.js | columnDeprecate": {
+    "message": "淘汰/警告"
+  },
+  "lighthouse-core/audits/deprecations.js | columnLine": {
+    "message": "行數"
+  },
+  "lighthouse-core/audits/deprecations.js | description": {
+    "message": "系統最終會從瀏覽器中移除已淘汰的 API。[瞭解詳情](https://web.dev/deprecations)。"
+  },
+  "lighthouse-core/audits/deprecations.js | displayValue": {
+    "message": "{itemCount,plural, =1{發現 1 則警告}other{發現 # 則警告}}"
+  },
+  "lighthouse-core/audits/deprecations.js | failureTitle": {
+    "message": "使用已淘汰的 API"
+  },
+  "lighthouse-core/audits/deprecations.js | title": {
+    "message": "避免使用已淘汰的 API"
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | description": {
+    "message": "應用程式快取已遭到淘汰。[瞭解詳情](https://web.dev/appcache-manifest)。"
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | displayValue": {
+    "message": "已找到「{AppCacheManifest}」"
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | failureTitle": {
+    "message": "使用應用程式快取"
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | title": {
+    "message": "避免使用應用程式快取"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | description": {
+    "message": "指定 DOCTYPE 能防止瀏覽器切換至相容模式。[瞭解詳情](https://web.dev/doctype)。"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationBadDoctype": {
+    "message": "DOCTYPE 名稱必須是小寫字串 `html`"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationNoDoctype": {
+    "message": "文件必須包含 DOCTYPE"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationPublicId": {
+    "message": "publicId 須為空白字串"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationSystemId": {
+    "message": "systemId 須為空白字串"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | failureTitle": {
+    "message": "網頁缺少 HTML DOCTYPE,因此觸發了相容模式"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | title": {
+    "message": "網頁含有 HTML DOCTYPE"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | columnElement": {
+    "message": "元素"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | columnStatistic": {
+    "message": "統計資料"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | columnValue": {
+    "message": "值"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | description": {
+    "message": "瀏覽器工程師建議網頁包含的 DOM 元素數量應少於 1,500 個左右。最理想的情況是樹狀結構深度包含的元素少於 32 個,且子項/父項元素少於 60 個。大型 DOM 會增加記憶體用量、延長[樣式運算](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations)的時間,並產生費工的[版面配置重排](https://developers.google.com/speed/articles/reflow)。[瞭解詳情](https://web.dev/dom-size)。"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 個元素}other{# 個元素}}"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | failureTitle": {
+    "message": "避免 DOM 過大"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | statisticDOMDepth": {
+    "message": "DOM 層級上限"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | statisticDOMElements": {
+    "message": "DOM 元素總計"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | statisticDOMWidth": {
+    "message": "子元素數量上限"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | title": {
+    "message": "避免 DOM 過大"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | columnRel": {
+    "message": "Rel"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | columnTarget": {
+    "message": "目標"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | description": {
+    "message": "將 `rel=\"noopener\"` 或 `rel=\"noreferrer\"` 新增至所有外部連結,可提升效能並防範安全漏洞。[瞭解詳情](https://web.dev/external-anchors-use-rel-noopener)。"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | failureTitle": {
+    "message": "跨原始來源目的地的連結不安全"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | title": {
+    "message": "跨來源目的地的連結很安全"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | warning": {
+    "message": "無法判定錨點的目的地 ({anchorHTML})。如果 target=_blank 不是做為超連結使用,請考慮移除它。"
+  },
+  "lighthouse-core/audits/dobetterweb/geolocation-on-start.js | description": {
+    "message": "如果未提供其他資訊就要求存取使用者的位置資訊,會讓使用者感到困惑而不信任網站。建議你在使用者執行特定動作時,再提出這項要求。[瞭解詳情](https://web.dev/geolocation-on-start)。"
+  },
+  "lighthouse-core/audits/dobetterweb/geolocation-on-start.js | failureTitle": {
+    "message": "在載入網頁時要求存取使用者的位置資訊"
+  },
+  "lighthouse-core/audits/dobetterweb/geolocation-on-start.js | title": {
+    "message": "避免在載入網頁時要求存取使用者的位置資訊"
+  },
+  "lighthouse-core/audits/dobetterweb/js-libraries.js | columnVersion": {
+    "message": "版本"
+  },
+  "lighthouse-core/audits/dobetterweb/js-libraries.js | description": {
+    "message": "在此網頁上偵測到的所有前端 JavaScript 程式庫。[瞭解詳情](https://web.dev/js-libraries)。"
+  },
+  "lighthouse-core/audits/dobetterweb/js-libraries.js | title": {
+    "message": "偵測到 JavaScript 程式庫"
+  },
+  "lighthouse-core/audits/dobetterweb/no-document-write.js | description": {
+    "message": "對於連線速度較慢的使用者,透過 `document.write()` 動態置入的外部指令碼可能會導致網頁延遲數十秒載入。[瞭解詳情](https://web.dev/no-document-write)。"
+  },
+  "lighthouse-core/audits/dobetterweb/no-document-write.js | failureTitle": {
+    "message": "使用 `document.write()`"
+  },
+  "lighthouse-core/audits/dobetterweb/no-document-write.js | title": {
+    "message": "避免使用 `document.write()`"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | columnSeverity": {
+    "message": "最高嚴重性"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | columnVersion": {
+    "message": "程式庫版本"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | columnVuln": {
+    "message": "安全漏洞數量"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | description": {
+    "message": "部分第三方指令碼可能包含已知的安全漏洞,攻擊者將能輕易識別及利用這些漏洞。[瞭解詳情](https://web.dev/no-vulnerable-libraries)。"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | displayValue": {
+    "message": "{itemCount,plural, =1{偵測到 1 項安全漏洞}other{偵測到 # 項安全漏洞}}"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | failureTitle": {
+    "message": "包含的前端 JavaScript 程式庫具有已知安全漏洞"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | rowSeverityHigh": {
+    "message": "高"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | rowSeverityLow": {
+    "message": "低"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | rowSeverityMedium": {
+    "message": "中"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | title": {
+    "message": "避免使用包含已知安全漏洞的前端 JavaScript 程式庫"
+  },
+  "lighthouse-core/audits/dobetterweb/notification-on-start.js | description": {
+    "message": "如果未提供其他資訊就要求使用者允許網站顯示通知,會讓使用者感到困惑而不信任網站。建議你在使用者操作特定手勢時,再提出這項要求。[瞭解詳情](https://web.dev/notification-on-start)。"
+  },
+  "lighthouse-core/audits/dobetterweb/notification-on-start.js | failureTitle": {
+    "message": "在載入網頁時要求使用者允許網站顯示通知"
+  },
+  "lighthouse-core/audits/dobetterweb/notification-on-start.js | title": {
+    "message": "避免在載入網頁時要求使用者允許網站顯示通知"
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | columnFailingElem": {
+    "message": "未通過稽核的元素"
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | description": {
+    "message": "禁止貼上密碼會對安全性政策造成不良影響[瞭解詳情](https://web.dev/password-inputs-can-be-pasted-into)。"
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | failureTitle": {
+    "message": "禁止使用者貼到密碼欄位"
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | title": {
+    "message": "允許使用者貼到密碼欄位"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | columnProtocol": {
+    "message": "通訊協定"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | description": {
+    "message": "HTTP/2 具備許多 HTTP/1.1 沒有的優點,包括二進位標題、多工處理和伺服器推送。[瞭解詳情](https://web.dev/uses-http2)。"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | displayValue": {
+    "message": "{itemCount,plural, =1{有 1 項要求未透過 HTTP/2 傳送}other{有 # 項要求未透過 HTTP/2 傳送}}"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | failureTitle": {
+    "message": "網頁要求的部分資源未使用 HTTP/2"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | title": {
+    "message": "針對本身的資源使用 HTTP/2"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-passive-event-listeners.js | description": {
+    "message": "建議將輕觸動作和滑鼠滾輪事件監聽器標示為 `passive`,以提升網頁的捲動效能。[瞭解詳情](https://web.dev/uses-passive-event-listeners)。"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-passive-event-listeners.js | failureTitle": {
+    "message": "未使用被動事件監聽器來提升捲動效能"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-passive-event-listeners.js | title": {
+    "message": "使用被動事件監聽器來提升捲動效能"
+  },
+  "lighthouse-core/audits/errors-in-console.js | columnDesc": {
+    "message": "說明"
+  },
+  "lighthouse-core/audits/errors-in-console.js | description": {
+    "message": "如果主控台有錯誤記錄,表示系統有問題尚待解決,例如網路要求錯誤和其他瀏覽器問題。[瞭解詳情](https://web.dev/errors-in-console)"
+  },
+  "lighthouse-core/audits/errors-in-console.js | failureTitle": {
+    "message": "主控台已記錄瀏覽器發生的錯誤"
+  },
+  "lighthouse-core/audits/errors-in-console.js | title": {
+    "message": "系統未在主控台中記錄瀏覽器發生的錯誤"
+  },
+  "lighthouse-core/audits/font-display.js | description": {
+    "message": "運用顯示字型的 CSS 功能,確保使用者可以在網站字型載入期間看到文字。[瞭解詳情](https://developers.google.com/web/updates/2016/02/font-display)。"
+  },
+  "lighthouse-core/audits/font-display.js | failureTitle": {
+    "message": "確認載入網站字型時文字不會消失"
+  },
+  "lighthouse-core/audits/font-display.js | title": {
+    "message": "載入網站字型時沒有任何文字消失"
+  },
+  "lighthouse-core/audits/font-display.js | undeclaredFontURLWarning": {
+    "message": "Lighthouse 無法自動檢查以下網址顯示字型的值:{fontURL}"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | columnActual": {
+    "message": "實際顯示比例"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | columnDisplayed": {
+    "message": "網頁上顯示的圖片比例"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | description": {
+    "message": "圖片顯示尺寸應符合正常顯示比例。[瞭解詳情](https://web.dev/image-aspect-ratio)。"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | failureTitle": {
+    "message": "圖片的顯示比例不正確"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | title": {
+    "message": "圖片的顯示比例正確"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | warningCompute": {
+    "message": "圖片大小資訊無效 ({url})"
+  },
+  "lighthouse-core/audits/installable-manifest.js | description": {
+    "message": "瀏覽器可以主動提示使用者,建議他們將你的應用程式新增到主螢幕,藉此提高參與度。[瞭解詳情](https://developers.google.com/web/tools/lighthouse/audits/install-prompt)。"
+  },
+  "lighthouse-core/audits/installable-manifest.js | failureTitle": {
+    "message": "網頁應用程式資訊清單不符合安裝規定"
+  },
+  "lighthouse-core/audits/installable-manifest.js | title": {
+    "message": "網頁應用程式資訊清單符合安裝規定"
+  },
+  "lighthouse-core/audits/is-on-https.js | columnInsecureURL": {
+    "message": "不安全的網址"
+  },
+  "lighthouse-core/audits/is-on-https.js | description": {
+    "message": "所有網站都應該使用 HTTPS 確保安全,即使網站未處理機密資料也一樣。HTTPS 能防範入侵者竄改或被動監聽應用程式與使用者之間的通訊,且 HTTP/2 和許多新的網路平台 API 都要求使用 HTTPS。[瞭解詳情](https://web.dev/is-on-https)。"
+  },
+  "lighthouse-core/audits/is-on-https.js | displayValue": {
+    "message": "{itemCount,plural, =1{發現 1 個不安全的要求}other{發現 # 個不安全的要求}}"
+  },
+  "lighthouse-core/audits/is-on-https.js | failureTitle": {
+    "message": "未使用 HTTPS"
+  },
+  "lighthouse-core/audits/is-on-https.js | title": {
+    "message": "使用 HTTPS"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | description": {
+    "message": "如果網頁能透過行動網路快速載入,就可確保行動裝置使用者獲得良好的使用體驗。[瞭解詳情](https://developers.google.com/web/tools/lighthouse/audits/fast-3g)。"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | displayValueText": {
+    "message": "在 {timeInMs, number, seconds} 秒開始互動"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | displayValueTextWithOverride": {
+    "message": "在 {timeInMs, number, seconds} 秒於模擬行動網路上開始互動"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | explanationLoadSlow": {
+    "message": "你的網頁載入速度太慢,無法在 10 秒內與使用者互動。請參閱「效能」部分的最佳化建議與診斷報告,瞭解如何改善載入速度。"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | failureTitle": {
+    "message": "網頁在行動網路中的載入速度不夠快"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | title": {
+    "message": "網頁在行動網路中的載入速度夠快"
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | columnCategory": {
+    "message": "類別"
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | description": {
+    "message": "建議減少剖析、編譯和執行 JS 所耗費的時間。提供較小的 JS 酬載可能會有幫助。"
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | failureTitle": {
+    "message": "將主要執行緒的工作降到最低"
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | title": {
+    "message": "將主要執行緒的工作降到最低"
+  },
+  "lighthouse-core/audits/manual/pwa-cross-browser.js | description": {
+    "message": "為觸及大多數使用者,網站應在每個主要瀏覽器上運作。[瞭解詳情](https://developers.google.com/web/progressive-web-apps/checklist#site-works-cross-browser)。"
+  },
+  "lighthouse-core/audits/manual/pwa-cross-browser.js | title": {
+    "message": "網站可以在不同瀏覽器上運作"
+  },
+  "lighthouse-core/audits/manual/pwa-each-page-has-url.js | description": {
+    "message": "可確保每個網頁都能透過網址進行深層連結,而且具有專屬網址,方便你在社交媒體上分享。[瞭解詳情](https://developers.google.com/web/progressive-web-apps/checklist#each-page-has-a-url)。"
+  },
+  "lighthouse-core/audits/manual/pwa-each-page-has-url.js | title": {
+    "message": "每個網頁都有一個網址"
+  },
+  "lighthouse-core/audits/manual/pwa-page-transitions.js | description": {
+    "message": "即使網路速度緩慢,當使用者輕觸不同網頁也應該要能流暢切換,這是展現效能的重要關鍵。[瞭解詳情](https://developers.google.com/web/progressive-web-apps/checklist#page-transitions-dont-feel-like-they-block-on-the-network)。"
+  },
+  "lighthouse-core/audits/manual/pwa-page-transitions.js | title": {
+    "message": "使用者在切換頁面時不會覺得網路速度緩慢"
+  },
+  "lighthouse-core/audits/metrics/estimated-input-latency.js | description": {
+    "message": "預估輸入延遲時間是指在頁面載入作業最忙碌的 5 秒中,應用程式對於使用者輸入動作的預估回應時間 (以毫秒為單位)。如果延遲時間超過 50 毫秒,使用者可能會覺得應用程式的速度很慢。[瞭解詳情](https://developers.google.com/web/tools/lighthouse/audits/estimated-input-latency)。"
+  },
+  "lighthouse-core/audits/metrics/estimated-input-latency.js | title": {
+    "message": "預估輸入延遲"
+  },
+  "lighthouse-core/audits/metrics/first-contentful-paint.js | description": {
+    "message": "首次顯示內容所需時間是指瀏覽器首次顯示文字或圖片的時間。[瞭解詳情](https://developers.google.com/web/tools/lighthouse/audits/first-contentful-paint)。"
+  },
+  "lighthouse-core/audits/metrics/first-contentful-paint.js | title": {
+    "message": "首次內容繪製"
+  },
+  "lighthouse-core/audits/metrics/first-cpu-idle.js | description": {
+    "message": "首次 CPU 閒置時間是指網頁的主要執行緒已不再忙碌,且有能力處理輸入內容的最早時間。[瞭解詳情](https://developers.google.com/web/tools/lighthouse/audits/first-interactive)。"
+  },
+  "lighthouse-core/audits/metrics/first-cpu-idle.js | title": {
+    "message": "首次 CPU 閒置"
+  },
+  "lighthouse-core/audits/metrics/first-meaningful-paint.js | description": {
+    "message": "畫面首次有效顯示所需時間是指網頁顯示主要內容的時間。[瞭解詳情](https://developers.google.com/web/tools/lighthouse/audits/first-meaningful-paint)。"
+  },
+  "lighthouse-core/audits/metrics/first-meaningful-paint.js | title": {
+    "message": "首次有效繪製"
+  },
+  "lighthouse-core/audits/metrics/interactive.js | description": {
+    "message": "互動準備時間是網頁進入完整互動狀態前花費的時間。[瞭解詳情](https://developers.google.com/web/tools/lighthouse/audits/consistently-interactive)。"
+  },
+  "lighthouse-core/audits/metrics/interactive.js | title": {
+    "message": "可互動時間"
+  },
+  "lighthouse-core/audits/metrics/max-potential-fid.js | description": {
+    "message": "使用者可能要等待的最長「首次輸入延遲時間」就是耗時最久的工作所需要的處理時間 (以毫秒為單位)。[瞭解詳情](https://developers.google.com/web/updates/2018/05/first-input-delay)。"
+  },
+  "lighthouse-core/audits/metrics/max-potential-fid.js | title": {
+    "message": "首次輸入延遲時間最長預估值"
+  },
+  "lighthouse-core/audits/metrics/speed-index.js | description": {
+    "message": "速度指數會顯示網頁可見內容的填入速度。[瞭解詳情](https://developers.google.com/web/tools/lighthouse/audits/speed-index)。"
+  },
+  "lighthouse-core/audits/metrics/speed-index.js | title": {
+    "message": "速度指數"
+  },
+  "lighthouse-core/audits/metrics/total-blocking-time.js | description": {
+    "message": "當工作長度超過 50 毫秒時,從 FCP 到互動準備時間的時間範圍總計 (以毫秒為單位)。"
+  },
+  "lighthouse-core/audits/metrics/total-blocking-time.js | title": {
+    "message": "封鎖時間總計"
+  },
+  "lighthouse-core/audits/network-rtt.js | description": {
+    "message": "網路封包往返時間 (RTT) 對效能有很大的影響。如果將封包傳送到某個來源的 RTT 很高,表示靠近使用者端的伺服器在效能方面有改善空間。[瞭解詳情](https://hpbn.co/primer-on-latency-and-bandwidth/)。"
+  },
+  "lighthouse-core/audits/network-rtt.js | title": {
+    "message": "網路封包往返時間"
+  },
+  "lighthouse-core/audits/network-server-latency.js | description": {
+    "message": "伺服器延遲時間可能會影響網站效能。如果原始伺服器的延遲時間很高,表示伺服器有超載情形或後端效能不佳。[瞭解詳情](https://hpbn.co/primer-on-web-performance/#analyzing-the-resource-waterfall)。"
+  },
+  "lighthouse-core/audits/network-server-latency.js | title": {
+    "message": "伺服器後端延遲時間"
+  },
+  "lighthouse-core/audits/offline-start-url.js | description": {
+    "message": "Service Worker 可讓你的網路應用程式即使在連線不穩定時依然維持正常運作。[瞭解詳情](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)。"
+  },
+  "lighthouse-core/audits/offline-start-url.js | failureTitle": {
+    "message": "`start_url` 在離線時不會傳回狀態碼 200 的回應"
+  },
+  "lighthouse-core/audits/offline-start-url.js | title": {
+    "message": "`start_url` 在離線時會傳回狀態碼 200 的回應"
+  },
+  "lighthouse-core/audits/offline-start-url.js | warningCantStart": {
+    "message": "Lighthouse 無法從資訊清單中讀取 `start_url`,因此將 `start_url` 假設為文件的網址。錯誤訊息:「{manifestWarning}」。"
+  },
+  "lighthouse-core/audits/performance-budget.js | columnOverBudget": {
+    "message": "超過預算"
+  },
+  "lighthouse-core/audits/performance-budget.js | description": {
+    "message": "讓網路要求的數量和大小低於使用者根據效能預算所設定的目標。[瞭解詳情](https://developers.google.com/web/tools/lighthouse/audits/budgets)。"
+  },
+  "lighthouse-core/audits/performance-budget.js | requestCountOverBudget": {
+    "message": "{count,plural, =1{1 個要求}other{# 個要求}}"
+  },
+  "lighthouse-core/audits/performance-budget.js | title": {
+    "message": "效能預算"
+  },
+  "lighthouse-core/audits/redirects-http.js | description": {
+    "message": "如果你已設定 HTTPS,請確認是否已將所有 HTTP 流量都重新導向至 HTTPS,以便為所有使用者提供安全的網路功能。[瞭解詳情](https://developers.google.com/web/tools/lighthouse/audits/http-redirects-to-https)。"
+  },
+  "lighthouse-core/audits/redirects-http.js | failureTitle": {
+    "message": "未將 HTTP 流量重新導向至 HTTPS"
+  },
+  "lighthouse-core/audits/redirects-http.js | title": {
+    "message": "將 HTTP 流量重新導向至 HTTPS"
+  },
+  "lighthouse-core/audits/redirects.js | description": {
+    "message": "重新導向會導致頁面延遲載入。[瞭解詳情](https://developers.google.com/web/tools/lighthouse/audits/redirects)。"
+  },
+  "lighthouse-core/audits/redirects.js | title": {
+    "message": "避免進行多次頁面重新導向"
+  },
+  "lighthouse-core/audits/resource-summary.js | description": {
+    "message": "如要針對網頁資源的數量和大小設定預算,請新增 budget.json 檔案。[瞭解詳情](https://developers.google.com/web/tools/lighthouse/audits/budgets)。"
+  },
+  "lighthouse-core/audits/resource-summary.js | displayValue": {
+    "message": "{requestCount,plural, =1{1 個要求 • {byteCount, number, bytes} KB}other{# 個要求 • {byteCount, number, bytes} KB}}"
+  },
+  "lighthouse-core/audits/resource-summary.js | title": {
+    "message": "降低要求數量並減少傳輸大小"
+  },
+  "lighthouse-core/audits/seo/canonical.js | description": {
+    "message": "標準連結可指出要在搜尋結果中顯示哪個網址。[瞭解詳情](https://web.dev/canonical)。"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationConflict": {
+    "message": "多個衝突的網址 ({urlList})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationDifferentDomain": {
+    "message": "指向其他網域 ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationInvalid": {
+    "message": "網址無效 ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationPointsElsewhere": {
+    "message": "指向其他 `hreflang` 位置 ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationRelative": {
+    "message": "相對網址 ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationRoot": {
+    "message": "指向目標為網域的根網址 (首頁),而不是相應的內容網頁"
+  },
+  "lighthouse-core/audits/seo/canonical.js | failureTitle": {
+    "message": "文件缺少有效的 `rel=canonical`"
+  },
+  "lighthouse-core/audits/seo/canonical.js | title": {
+    "message": "文件具備有效的 `rel=canonical`"
+  },
+  "lighthouse-core/audits/seo/font-size.js | description": {
+    "message": "如果字型小於 12 像素,文字會太小而難以辨識;行動裝置訪客必須「以雙指撥動縮放」才能閱讀內容。網頁中應有超過 60% 的文字採用 12 像素以上的大小。[瞭解詳情](https://web.dev/font-size)。"
+  },
+  "lighthouse-core/audits/seo/font-size.js | displayValue": {
+    "message": "{decimalProportion, number, extendedPercent} 的文字清晰易讀"
+  },
+  "lighthouse-core/audits/seo/font-size.js | explanationViewport": {
+    "message": "文字難以辨識,這是因為網頁沒有針對行動裝置螢幕設定合適的可視區域中繼標記。"
+  },
+  "lighthouse-core/audits/seo/font-size.js | explanationWithDisclaimer": {
+    "message": "{decimalProportion, number, extendedPercent} 的文字過小 (根據 {decimalProportionVisited, number, extendedPercent} 的取樣結果)。"
+  },
+  "lighthouse-core/audits/seo/font-size.js | failureTitle": {
+    "message": "文件使用的字型大小難以辨識"
+  },
+  "lighthouse-core/audits/seo/font-size.js | title": {
+    "message": "文件使用的字型大小清晰易讀"
+  },
+  "lighthouse-core/audits/seo/hreflang.js | description": {
+    "message": "hreflang 連結會告訴搜尋引擎在特定語言或區域的搜尋結果中應顯示哪種版本的網頁。[瞭解詳情](https://web.dev/hreflang)。"
+  },
+  "lighthouse-core/audits/seo/hreflang.js | failureTitle": {
+    "message": "文件缺少有效的 `hreflang`"
+  },
+  "lighthouse-core/audits/seo/hreflang.js | title": {
+    "message": "文件具備有效的 `hreflang`"
+  },
+  "lighthouse-core/audits/seo/http-status-code.js | description": {
+    "message": "如果網頁傳回失敗的 HTTP 狀態碼,可能無法正確編入索引。[瞭解詳情](https://web.dev/http-status-code)。"
+  },
+  "lighthouse-core/audits/seo/http-status-code.js | failureTitle": {
+    "message": "網頁傳回失敗的 HTTP 狀態碼"
+  },
+  "lighthouse-core/audits/seo/http-status-code.js | title": {
+    "message": "網頁傳回成功的 HTTP 狀態碼"
+  },
+  "lighthouse-core/audits/seo/is-crawlable.js | description": {
+    "message": "如果搜尋引擎沒有檢索網頁的權限,將無法在搜尋結果中顯示你的網頁。[瞭解詳情](https://web.dev/is-crawable)。"
+  },
+  "lighthouse-core/audits/seo/is-crawlable.js | failureTitle": {
+    "message": "網頁的索引功能遭到封鎖"
+  },
+  "lighthouse-core/audits/seo/is-crawlable.js | title": {
+    "message": "網頁的索引功能未遭到封鎖"
+  },
+  "lighthouse-core/audits/seo/link-text.js | description": {
+    "message": "連結說明文字可協助搜尋引擎瞭解你的內容。[瞭解詳情](https://web.dev/link-text)。"
+  },
+  "lighthouse-core/audits/seo/link-text.js | displayValue": {
+    "message": "{itemCount,plural, =1{找到 1 個連結}other{找到 # 個連結}}"
+  },
+  "lighthouse-core/audits/seo/link-text.js | failureTitle": {
+    "message": "連結缺少說明文字"
+  },
+  "lighthouse-core/audits/seo/link-text.js | title": {
+    "message": "連結具有說明文字"
+  },
+  "lighthouse-core/audits/seo/manual/structured-data.js | description": {
+    "message": "執行[結構化資料測試工具](https://search.google.com/structured-data/testing-tool/)和 [Structured Data Linter](http://linter.structured-data.org/) 來驗證結構化資料。[瞭解詳情](https://web.dev/structured-data)。"
+  },
+  "lighthouse-core/audits/seo/manual/structured-data.js | title": {
+    "message": "結構化資料有效"
+  },
+  "lighthouse-core/audits/seo/meta-description.js | description": {
+    "message": "你可以在搜尋結果中加入中繼說明,簡要描述網頁內容。[瞭解詳情](https://web.dev/meta-description)。"
+  },
+  "lighthouse-core/audits/seo/meta-description.js | explanation": {
+    "message": "沒有說明文字。"
+  },
+  "lighthouse-core/audits/seo/meta-description.js | failureTitle": {
+    "message": "文件缺少中繼說明"
+  },
+  "lighthouse-core/audits/seo/meta-description.js | title": {
+    "message": "文件具有中繼說明"
+  },
+  "lighthouse-core/audits/seo/plugins.js | description": {
+    "message": "搜尋引擎無法為外掛程式內容建立索引,而且許多裝置對外掛程式設有限制或不提供支援。[瞭解詳情](https://web.dev/plugins)。"
+  },
+  "lighthouse-core/audits/seo/plugins.js | failureTitle": {
+    "message": "文件使用外掛程式"
+  },
+  "lighthouse-core/audits/seo/plugins.js | title": {
+    "message": "文件盡量不使用外掛程式"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | description": {
+    "message": "如果你的 robots.txt 檔案格式錯誤,檢索器可能無法瞭解你偏好的網站檢索方式或索引建立方式。[瞭解詳情](https://web.dev/robots-txt)。"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | displayValueHttpBadCode": {
+    "message": "robots.txt 要求傳回以下 HTTP 狀態:{statusCode}"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | displayValueValidationError": {
+    "message": "{itemCount,plural, =1{發現 1 項錯誤}other{發現 # 項錯誤}}"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | explanation": {
+    "message": "Lighthouse 無法下載 robots.txt 檔"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | failureTitle": {
+    "message": "robots.txt 無效"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | title": {
+    "message": "robots.txt 有效"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | description": {
+    "message": "按鈕和連結等互動元素的大小應至少有 48x48 像素,且周圍應保留足夠空間,讓使用者能輕鬆點選,同時避免與其他元素重疊的情況。[瞭解詳情](https://web.dev/tap-targets)。"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | displayValue": {
+    "message": "{decimalProportion, number, percent} 的輕觸目標大小適中"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | explanationViewportMetaNotOptimized": {
+    "message": "輕觸目標太小,這是因為網頁沒有針對行動裝置螢幕設定合適的可視區域中繼標記"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | failureTitle": {
+    "message": "輕觸目標未設定成適當大小"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | overlappingTargetHeader": {
+    "message": "重疊的目標"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | tapTargetHeader": {
+    "message": "輕觸目標"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | title": {
+    "message": "輕觸目標已設定成適當大小"
+  },
+  "lighthouse-core/audits/service-worker.js | description": {
+    "message": "Service Worker 技術可讓你的應用程式使用許多漸進式網頁應用程式的功能,例如離線存取、新增到主螢幕,以及推播通知。[瞭解詳情](https://developers.google.com/web/tools/lighthouse/audits/registered-service-worker)。"
+  },
+  "lighthouse-core/audits/service-worker.js | explanationBadManifest": {
+    "message": "此網頁由 Service Worker 所控管,但系統無法將資訊清單剖析為有效的 JSON,因此找不到任何 `start_url`"
+  },
+  "lighthouse-core/audits/service-worker.js | explanationBadStartUrl": {
+    "message": "這個網頁由 Service Worker 所控管,但是 `start_url` ({startUrl}) 不在 Service Worker 的範圍內 ({scopeUrl})"
+  },
+  "lighthouse-core/audits/service-worker.js | explanationNoManifest": {
+    "message": "這個網頁由 Service Worker 所控管,但系統未擷取任何資訊清單,因此找不到任何 `start_url`。"
+  },
+  "lighthouse-core/audits/service-worker.js | explanationOutOfScope": {
+    "message": "此來源包含一個或多個 Service Worker,但該頁面 ({pageUrl}) 不在 Service Worker 的範圍內。"
+  },
+  "lighthouse-core/audits/service-worker.js | failureTitle": {
+    "message": "未註冊可控管網頁和 `start_url` 的 Service Worker"
+  },
+  "lighthouse-core/audits/service-worker.js | title": {
+    "message": "已註冊可控管網頁和 `start_url` 的 Service Worker"
+  },
+  "lighthouse-core/audits/splash-screen.js | description": {
+    "message": "透過設定啟動畫面的主題,可確保使用者從主螢幕啟動你的應用程式時享有優質體驗。[瞭解詳情](https://developers.google.com/web/tools/lighthouse/audits/custom-splash-screen)。"
+  },
+  "lighthouse-core/audits/splash-screen.js | failureTitle": {
+    "message": "未設定自訂啟動畫面"
+  },
+  "lighthouse-core/audits/splash-screen.js | title": {
+    "message": "設有自訂啟動畫面"
+  },
+  "lighthouse-core/audits/themed-omnibox.js | description": {
+    "message": "你可以將瀏覽器網址列的主題設定為與網站相符。[瞭解詳情](https://developers.google.com/web/tools/lighthouse/audits/address-bar)。"
+  },
+  "lighthouse-core/audits/themed-omnibox.js | failureTitle": {
+    "message": "尚未設定網址列的主題顏色。"
+  },
+  "lighthouse-core/audits/themed-omnibox.js | title": {
+    "message": "設定網址列的主題顏色。"
+  },
+  "lighthouse-core/audits/third-party-summary.js | columnBlockingTime": {
+    "message": "主要執行緒封鎖時間"
+  },
+  "lighthouse-core/audits/third-party-summary.js | columnThirdParty": {
+    "message": "第三方"
+  },
+  "lighthouse-core/audits/third-party-summary.js | description": {
+    "message": "第三方程式碼可能會嚴重影響載入效能。請儘量減少不必要的第三方供應商,並在網頁的主要內容載入完畢後,再載入第三方程式碼。[瞭解詳情](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/loading-third-party-javascript/)。"
+  },
+  "lighthouse-core/audits/third-party-summary.js | displayValue": {
+    "message": "第三方程式碼將主要執行緒封鎖了 {timeInMs, number, milliseconds} 毫秒"
+  },
+  "lighthouse-core/audits/third-party-summary.js | failureTitle": {
+    "message": "降低第三方程式碼的影響"
+  },
+  "lighthouse-core/audits/third-party-summary.js | title": {
+    "message": "第三方程式碼使用情形"
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | description": {
+    "message": "第一個位元組時間會指出你的伺服器傳送回應的時間。[瞭解詳情](https://developers.google.com/web/tools/lighthouse/audits/ttfb)。"
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | displayValue": {
+    "message": "根文件回應時間為 {timeInMs, number, milliseconds} 毫秒"
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | failureTitle": {
+    "message": "減少伺服器回應時間 (TTFB)"
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | title": {
+    "message": "伺服器回應時間低 (TTFB)"
+  },
+  "lighthouse-core/audits/user-timings.js | columnDuration": {
+    "message": "時間長度"
+  },
+  "lighthouse-core/audits/user-timings.js | columnStartTime": {
+    "message": "開始時間"
+  },
+  "lighthouse-core/audits/user-timings.js | columnType": {
+    "message": "類型"
+  },
+  "lighthouse-core/audits/user-timings.js | description": {
+    "message": "建議你使用 User Timing API 評估應用程式在關鍵使用者體驗期間的實際效能。[瞭解詳情](https://developers.google.com/web/tools/lighthouse/audits/user-timing)。"
+  },
+  "lighthouse-core/audits/user-timings.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 個 User Timing 標記}other{# 個 User Timing 標記}}"
+  },
+  "lighthouse-core/audits/user-timings.js | title": {
+    "message": "User Timing 標記和測量結果"
+  },
+  "lighthouse-core/audits/uses-rel-preconnect.js | crossoriginWarning": {
+    "message": "「{securityOrigin}」有預先連線的 <link>,但未獲瀏覽器使用。請檢查你使用 `crossorigin` 屬性的方式是否正確。"
+  },
+  "lighthouse-core/audits/uses-rel-preconnect.js | description": {
+    "message": "建議你新增 `preconnect` 或 `dns-prefetch` 資源提示,及早連線至重要的第三方來源。[瞭解詳情](https://developers.google.com/web/fundamentals/performance/resource-prioritization#preconnect)。"
+  },
+  "lighthouse-core/audits/uses-rel-preconnect.js | title": {
+    "message": "預先連上必要來源"
+  },
+  "lighthouse-core/audits/uses-rel-preload.js | crossoriginWarning": {
+    "message": "「{preloadURL}」有預先載入的 <link>,但未獲瀏覽器使用。請檢查你使用 `crossorigin` 屬性的方式是否正確。"
+  },
+  "lighthouse-core/audits/uses-rel-preload.js | description": {
+    "message": "建議使用 `<link rel=preload>` 優先擷取目前在網頁載入時較晚要求的資源。[瞭解詳情](https://developers.google.com/web/tools/lighthouse/audits/preload)。"
+  },
+  "lighthouse-core/audits/uses-rel-preload.js | title": {
+    "message": "預先載入重要要求"
+  },
+  "lighthouse-core/audits/viewport.js | description": {
+    "message": "如要配合行動裝置螢幕將你的應用程式進行最佳化調整,請新增 `<meta name=\"viewport\">` 標記。[瞭解詳情](https://developers.google.com/web/tools/lighthouse/audits/has-viewport-meta-tag)。"
+  },
+  "lighthouse-core/audits/viewport.js | explanationNoTag": {
+    "message": "找不到任何 `<meta name=\"viewport\">` 標記"
+  },
+  "lighthouse-core/audits/viewport.js | failureTitle": {
+    "message": "缺少包含 `width` 或 `initial-scale` 的 `<meta name=\"viewport\">` 標記"
+  },
+  "lighthouse-core/audits/viewport.js | title": {
+    "message": "具備包含 `width` 或 `initial-scale` 的 `<meta name=\"viewport\">` 標記"
+  },
+  "lighthouse-core/audits/without-javascript.js | description": {
+    "message": "當 JavaScript 停用時,你的應用程式應該要顯示一些內容,即使只是向使用者顯示「必須啟用 JavaScript 才能使用此應用程式」這類警告訊息也可以。[瞭解詳情](https://developers.google.com/web/tools/lighthouse/audits/no-js)。"
+  },
+  "lighthouse-core/audits/without-javascript.js | explanation": {
+    "message": "即使網頁的指令碼無法使用,網頁內文仍應顯示一些內容。"
+  },
+  "lighthouse-core/audits/without-javascript.js | failureTitle": {
+    "message": "當 JavaScript 無法使用時不提供備用內容"
+  },
+  "lighthouse-core/audits/without-javascript.js | title": {
+    "message": "當 JavaScript 無法使用時包含一些內容"
+  },
+  "lighthouse-core/audits/works-offline.js | description": {
+    "message": "如果你正在建構漸進式網頁應用程式,請考慮使用 Service Worker,讓你的應用程式可以離線運作。[瞭解詳情](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)。"
+  },
+  "lighthouse-core/audits/works-offline.js | failureTitle": {
+    "message": "目前的網頁在離線時不會傳回狀態碼 200 的回應"
+  },
+  "lighthouse-core/audits/works-offline.js | title": {
+    "message": "目前的網頁在離線時會傳回狀態碼 200 的回應"
+  },
+  "lighthouse-core/audits/works-offline.js | warningNoLoad": {
+    "message": "由於你的測試網址 ({requested}) 重新導向到「{final}」,因此這個頁面可能無法在離線時載入。請試著直接測試第二個網址。"
+  },
+  "lighthouse-core/config/default-config.js | a11yAriaGroupDescription": {
+    "message": "這些稽核建議可協助改善 ARIA 在應用程式中的使用情形,進而讓輔助技術 (例如螢幕閱讀器) 的使用體驗更上一層樓。"
+  },
+  "lighthouse-core/config/default-config.js | a11yAriaGroupTitle": {
+    "message": "ARIA"
+  },
+  "lighthouse-core/config/default-config.js | a11yAudioVideoGroupDescription": {
+    "message": "你可以根據這些資訊判斷是否要提供用來替代音訊和影片的內容。這或許能改善聽障或視障人士的使用體驗。"
+  },
+  "lighthouse-core/config/default-config.js | a11yAudioVideoGroupTitle": {
+    "message": "音訊和影片"
+  },
+  "lighthouse-core/config/default-config.js | a11yBestPracticesGroupDescription": {
+    "message": "這些稽核項目會提供常見的無障礙功能最佳做法。"
+  },
+  "lighthouse-core/config/default-config.js | a11yBestPracticesGroupTitle": {
+    "message": "最佳做法"
+  },
+  "lighthouse-core/config/default-config.js | a11yCategoryDescription": {
+    "message": "這些檢查會清楚說明[網頁應用程式無障礙功能的改善建議](https://developers.google.com/web/fundamentals/accessibility),但系統只能自動偵測一部分的無障礙功能問題,因此建議你另外進行手動測試。"
+  },
+  "lighthouse-core/config/default-config.js | a11yCategoryManualDescription": {
+    "message": "這些稽核項目會檢查自動化測試工具未涵蓋的區域。詳情請參閱[無障礙功能審查的執行指南](https://developers.google.com/web/fundamentals/accessibility/how-to-review)。"
+  },
+  "lighthouse-core/config/default-config.js | a11yCategoryTitle": {
+    "message": "無障礙功能"
+  },
+  "lighthouse-core/config/default-config.js | a11yColorContrastGroupDescription": {
+    "message": "這些稽核建議有助於提高內容的易讀性。"
+  },
+  "lighthouse-core/config/default-config.js | a11yColorContrastGroupTitle": {
+    "message": "對比"
+  },
+  "lighthouse-core/config/default-config.js | a11yLanguageGroupDescription": {
+    "message": "你可以根據這些稽核建議做出改善,讓其他地區的使用者更容易理解你的內容。"
+  },
+  "lighthouse-core/config/default-config.js | a11yLanguageGroupTitle": {
+    "message": "國際化和本地化"
+  },
+  "lighthouse-core/config/default-config.js | a11yNamesLabelsGroupDescription": {
+    "message": "這些稽核建議可協助提高應用程式中的控制項語義品質。這或許能改善輔助技術 (例如螢幕閱讀器) 的使用體驗。"
+  },
+  "lighthouse-core/config/default-config.js | a11yNamesLabelsGroupTitle": {
+    "message": "名稱和標籤"
+  },
+  "lighthouse-core/config/default-config.js | a11yNavigationGroupDescription": {
+    "message": "你可以根據這些資訊來改善應用程式的鍵盤瀏覽操作方式。"
+  },
+  "lighthouse-core/config/default-config.js | a11yNavigationGroupTitle": {
+    "message": "瀏覽"
+  },
+  "lighthouse-core/config/default-config.js | a11yTablesListsVideoGroupDescription": {
+    "message": "這些稽核結果建議你運用輔助技術 (例如螢幕閱讀器),改善表格或清單資料的閱讀體驗。"
+  },
+  "lighthouse-core/config/default-config.js | a11yTablesListsVideoGroupTitle": {
+    "message": "表格和清單"
+  },
+  "lighthouse-core/config/default-config.js | bestPracticesCategoryTitle": {
+    "message": "最佳做法"
+  },
+  "lighthouse-core/config/default-config.js | budgetsGroupDescription": {
+    "message": "你可以根據效能預算設定網站效能的標準。"
+  },
+  "lighthouse-core/config/default-config.js | budgetsGroupTitle": {
+    "message": "預算"
+  },
+  "lighthouse-core/config/default-config.js | diagnosticsGroupDescription": {
+    "message": "進一步瞭解應用程式的效能。這些數字不會[直接影響](https://github.com/GoogleChrome/lighthouse/blob/d2ec9ffbb21de9ad1a0f86ed24575eda32c796f0/docs/scoring.md#how-are-the-scores-weighted)「效能」分數。"
+  },
+  "lighthouse-core/config/default-config.js | diagnosticsGroupTitle": {
+    "message": "診斷"
+  },
+  "lighthouse-core/config/default-config.js | firstPaintImprovementsGroupDescription": {
+    "message": "像素呈現在畫面上的速度是最重要的效能層面。重要指標:首次內容繪製、首次有效繪製"
+  },
+  "lighthouse-core/config/default-config.js | firstPaintImprovementsGroupTitle": {
+    "message": "改進首次繪製程序"
+  },
+  "lighthouse-core/config/default-config.js | loadOpportunitiesGroupDescription": {
+    "message": "這些建議有助於提升網頁載入速度,但不會[直接影響](https://github.com/GoogleChrome/lighthouse/blob/d2ec9ffbb21de9ad1a0f86ed24575eda32c796f0/docs/scoring.md#how-are-the-scores-weighted)「效能」分數。"
+  },
+  "lighthouse-core/config/default-config.js | loadOpportunitiesGroupTitle": {
+    "message": "最佳化建議"
+  },
+  "lighthouse-core/config/default-config.js | metricGroupTitle": {
+    "message": "指標"
+  },
+  "lighthouse-core/config/default-config.js | overallImprovementsGroupDescription": {
+    "message": "改進整體載入體驗,採用回應式頁面設計,儘快為使用者提供服務。重要指標:可互動時間、速度指數"
+  },
+  "lighthouse-core/config/default-config.js | overallImprovementsGroupTitle": {
+    "message": "整體改進"
+  },
+  "lighthouse-core/config/default-config.js | performanceCategoryTitle": {
+    "message": "效能"
+  },
+  "lighthouse-core/config/default-config.js | pwaCategoryDescription": {
+    "message": "這些檢查項目可驗證漸進式網頁應用程式的不同層面。[瞭解詳情](https://developers.google.com/web/progressive-web-apps/checklist)。"
+  },
+  "lighthouse-core/config/default-config.js | pwaCategoryManualDescription": {
+    "message": "這些是基本 [PWA 檢查清單](https://developers.google.com/web/progressive-web-apps/checklist)規定的項目,但 Lighthouse 不會自動進行檢查。它們不會影響你的分數,但請務必手動驗證這些項目。"
+  },
+  "lighthouse-core/config/default-config.js | pwaCategoryTitle": {
+    "message": "漸進式網頁應用程式"
+  },
+  "lighthouse-core/config/default-config.js | pwaFastReliableGroupTitle": {
+    "message": "快速穩定"
+  },
+  "lighthouse-core/config/default-config.js | pwaInstallableGroupTitle": {
+    "message": "可安裝"
+  },
+  "lighthouse-core/config/default-config.js | pwaOptimizedGroupTitle": {
+    "message": "PWA 最佳化"
+  },
+  "lighthouse-core/config/default-config.js | seoCategoryDescription": {
+    "message": "這些檢查可確保你的網頁採用的是最佳的搜尋引擎結果排名設定。有一些其他因素不在 Lighthouse 檢查範圍內,仍可能會影響你的搜尋排名。[瞭解詳情](https://support.google.com/webmasters/answer/35769)。"
+  },
+  "lighthouse-core/config/default-config.js | seoCategoryManualDescription": {
+    "message": "在您的網站上執行這些額外的驗證工具,以檢查其他 SEO 最佳做法。"
+  },
+  "lighthouse-core/config/default-config.js | seoCategoryTitle": {
+    "message": "搜尋引擎最佳化 (SEO)"
+  },
+  "lighthouse-core/config/default-config.js | seoContentGroupDescription": {
+    "message": "請設定適當的 HTML 格式,讓檢索器更容易辨識你的應用程式內容。"
+  },
+  "lighthouse-core/config/default-config.js | seoContentGroupTitle": {
+    "message": "內容最佳做法"
+  },
+  "lighthouse-core/config/default-config.js | seoCrawlingGroupDescription": {
+    "message": "檢索器需要存取你的應用程式,才能將網站顯示在搜尋結果中。"
+  },
+  "lighthouse-core/config/default-config.js | seoCrawlingGroupTitle": {
+    "message": "檢索及建立索引"
+  },
+  "lighthouse-core/config/default-config.js | seoMobileGroupDescription": {
+    "message": "請確認你的網頁適合透過行動裝置瀏覽,使用者不須撥動雙指或縮放螢幕即可閱讀網頁內容。[瞭解詳情](https://developers.google.com/search/mobile-sites/)。"
+  },
+  "lighthouse-core/config/default-config.js | seoMobileGroupTitle": {
+    "message": "適合透過行動裝置瀏覽"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnCacheTTL": {
+    "message": "快取 TTL"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnLocation": {
+    "message": "位置"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnName": {
+    "message": "名稱"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnRequests": {
+    "message": "要求"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnResourceType": {
+    "message": "資源類型"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnSize": {
+    "message": "大小"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnTimeSpent": {
+    "message": "花費的時間"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnTransferSize": {
+    "message": "傳輸大小"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnURL": {
+    "message": "網址"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnWastedBytes": {
+    "message": "可節省的數據用量"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnWastedMs": {
+    "message": "可節省的時間"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | displayValueByteSavings": {
+    "message": "可減少 {wastedBytes, number, bytes} KB"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | displayValueMsSavings": {
+    "message": "可減少 {wastedMs, number, milliseconds} 毫秒"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | documentResourceType": {
+    "message": "文件"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | fontResourceType": {
+    "message": "字型"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | imageResourceType": {
+    "message": "圖片"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | mediaResourceType": {
+    "message": "媒體"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | ms": {
+    "message": "{timeInMs, number, milliseconds} 毫秒"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | otherResourceType": {
+    "message": "其他"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | scriptResourceType": {
+    "message": "指令碼"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | seconds": {
+    "message": "{timeInMs, number, seconds} 秒"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | stylesheetResourceType": {
+    "message": "樣式表"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | thirdPartyResourceType": {
+    "message": "第三方"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | totalResourceType": {
+    "message": "總計"
+  },
+  "lighthouse-core/lib/lh-error.js | badTraceRecording": {
+    "message": "追蹤記錄網頁載入情形時發生錯誤。請重新執行 Lighthouse。({errorCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | criTimeout": {
+    "message": "等候偵錯工具通訊協定初始連線時發生逾時。"
+  },
+  "lighthouse-core/lib/lh-error.js | didntCollectScreenshots": {
+    "message": "Chrome 在網頁載入期間未能擷取螢幕畫面。請確認網頁上有可見內容,然後嘗試重新執行 Lighthouse。({errorCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | dnsFailure": {
+    "message": "DNS 伺服器無法解析你提供的網域。"
+  },
+  "lighthouse-core/lib/lh-error.js | erroredRequiredArtifact": {
+    "message": "必要的 {artifactName} 收集程式發生錯誤:{errorMessage}"
+  },
+  "lighthouse-core/lib/lh-error.js | internalChromeError": {
+    "message": "Chrome 發生內部錯誤。請重新啟動 Chrome,並嘗試重新執行 Lighthouse。"
+  },
+  "lighthouse-core/lib/lh-error.js | missingRequiredArtifact": {
+    "message": "未執行必要的 {artifactName} 收集程式。"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailed": {
+    "message": "Lighthouse 無法穩定載入你要求的網頁。請確認你測試的網址是否正確,以及伺服器是否正確回應所有要求。"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedHung": {
+    "message": "你要求的網頁已停止回應,因此 Lighthouse 無法穩定載入該網址。"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedInsecure": {
+    "message": "你所提供的網址缺少有效的安全性憑證。{securityMessages}"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedInterstitial": {
+    "message": "Chrome 使用插頁式畫面阻止系統載入網頁。請確認你的測試網址是否正確,以及伺服器是否正確回應所有要求。"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedWithDetails": {
+    "message": "Lighthouse 無法穩定載入你要求的網頁。請確認你的測試網址是否正確,以及伺服器是否正確回應所有要求。(詳細資訊:{errorDetails})"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedWithStatusCode": {
+    "message": "Lighthouse 無法穩定載入你要求的網頁。請確認你的測試網址是否正確,以及伺服器是否正確回應所有要求。(狀態碼:{statusCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadTookTooLong": {
+    "message": "網頁載入時間過長。請按照報告中的建議做法縮短網頁載入時間,然後嘗試重新執行 Lighthouse。({errorCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | protocolTimeout": {
+    "message": "等待 DevTools 通訊協定回應的時間超出系統分配上限。(方法:{protocolMethod})"
+  },
+  "lighthouse-core/lib/lh-error.js | requestContentTimeout": {
+    "message": "擷取資源內容的時間超出系統分配上限。"
+  },
+  "lighthouse-core/lib/lh-error.js | urlInvalid": {
+    "message": "你所提供的網址無效。"
+  },
+  "lighthouse-core/report/html/renderer/util.js | auditGroupExpandTooltip": {
+    "message": "顯示稽核結果"
+  },
+  "lighthouse-core/report/html/renderer/util.js | crcInitialNavigation": {
+    "message": "起始導覽"
+  },
+  "lighthouse-core/report/html/renderer/util.js | crcLongestDurationLabel": {
+    "message": "關鍵路徑延遲時間上限:"
+  },
+  "lighthouse-core/report/html/renderer/util.js | errorLabel": {
+    "message": "發生錯誤!"
+  },
+  "lighthouse-core/report/html/renderer/util.js | errorMissingAuditInfo": {
+    "message": "回報錯誤:無稽核資訊"
+  },
+  "lighthouse-core/report/html/renderer/util.js | labDataTitle": {
+    "message": "研究資料"
+  },
+  "lighthouse-core/report/html/renderer/util.js | lsPerformanceCategoryDescription": {
+    "message": "[Lighthouse](https://developers.google.com/web/tools/lighthouse/) 在模擬行動網路上對目前網頁進行的分析。此為預估值,可能與實際情況有所不同。"
+  },
+  "lighthouse-core/report/html/renderer/util.js | manualAuditsGroupTitle": {
+    "message": "其他手動檢查項目"
+  },
+  "lighthouse-core/report/html/renderer/util.js | notApplicableAuditsGroupTitle": {
+    "message": "不適用"
+  },
+  "lighthouse-core/report/html/renderer/util.js | opportunityResourceColumnLabel": {
+    "message": "最佳化建議"
+  },
+  "lighthouse-core/report/html/renderer/util.js | opportunitySavingsColumnLabel": {
+    "message": "預估減少量"
+  },
+  "lighthouse-core/report/html/renderer/util.js | passedAuditsGroupTitle": {
+    "message": "通過稽核項目"
+  },
+  "lighthouse-core/report/html/renderer/util.js | snippetCollapseButtonLabel": {
+    "message": "收合程式碼片段"
+  },
+  "lighthouse-core/report/html/renderer/util.js | snippetExpandButtonLabel": {
+    "message": "展開程式碼片段"
+  },
+  "lighthouse-core/report/html/renderer/util.js | thirdPartyResourcesLabel": {
+    "message": "顯示第三方資源"
+  },
+  "lighthouse-core/report/html/renderer/util.js | toplevelWarningsMessage": {
+    "message": "有問題導致 Lighthouse 無法順利執行這項作業:"
+  },
+  "lighthouse-core/report/html/renderer/util.js | varianceDisclaimer": {
+    "message": "此為預估值,可能與實際情況有所出入。系統[只會根據這些指標](https://github.com/GoogleChrome/lighthouse/blob/d2ec9ffbb21de9ad1a0f86ed24575eda32c796f0/docs/scoring.md#how-are-the-scores-weighted)計算效能分數。"
+  },
+  "lighthouse-core/report/html/renderer/util.js | warningAuditsGroupTitle": {
+    "message": "通過稽核,但附有警告訊息"
+  },
+  "lighthouse-core/report/html/renderer/util.js | warningHeader": {
+    "message": "警告: "
+  },
+  "stack-packs/packs/wordpress.js | efficient_animated_content": {
+    "message": "建議你將 GIF 上傳到可將 GIF 做為 HTML5 影片嵌入的服務。"
+  },
+  "stack-packs/packs/wordpress.js | offscreen_images": {
+    "message": "安裝可延遲載入所有畫面外圖片的[延遲載入 WordPress 外掛程式](https://wordpress.org/plugins/search/lazy+load/),或改用提供這項功能的主題。你也可以考慮使用 [AMP 外掛程式](https://wordpress.org/plugins/amp/)。"
+  },
+  "stack-packs/packs/wordpress.js | render_blocking_resources": {
+    "message": "有些 WordPress 外掛程式能協助你[內嵌重要的素材資源](https://wordpress.org/plugins/search/critical+css/)或[延後載入較不重要的資源](https://wordpress.org/plugins/search/defer+css+javascript/)。請注意,這些外掛程式的最佳化設定可能會對現有主題或外掛程式的功能有不良影響,因此你可能需要變更程式碼。"
+  },
+  "stack-packs/packs/wordpress.js | time_to_first_byte": {
+    "message": "主題、外掛程式和伺服器規格都會影響伺服器回應時間。建議你尋找經過最佳化調整的主題、謹慎選擇最佳化外掛程式,並 (或) 升級伺服器。"
+  },
+  "stack-packs/packs/wordpress.js | total_byte_weight": {
+    "message": "建議你在文章清單中顯示摘錄 (例如加入更多標記)、減少特定頁面顯示的文章數量、將較長的文章分為多個頁面,或使用可延遲載入留言的外掛程式。"
+  },
+  "stack-packs/packs/wordpress.js | unminified_css": {
+    "message": "有些 [WordPress 外掛程式](https://wordpress.org/plugins/search/minify+css/) 可以透過串連、縮小及壓縮樣式來提升網站速度。你也可以透過建構流程直接執行這項壓縮作業 (如果可行的話)。"
+  },
+  "stack-packs/packs/wordpress.js | unminified_javascript": {
+    "message": "有些 [WordPress 外掛程式](https://wordpress.org/plugins/search/minify+javascript/) 可以透過串連、縮小及壓縮指令碼來提升網站速度。你也可以透過建構流程直接執行這項壓縮作業 (如果可行的話)。"
+  },
+  "stack-packs/packs/wordpress.js | unused_css_rules": {
+    "message": "有些 [WordPress 外掛程式](https://wordpress.org/plugins/)會在網頁中載入未使用的 CSS,建議你減少這類外掛程式的數量,或改用其他外掛程式。如要找出會新增多餘 CSS 的外掛程式,請嘗試在 Chrome DevTools 中執行[程式碼涵蓋率](https://developers.google.com/web/updates/2017/04/devtools-release-notes#coverage)功能。你可以透過樣式表網址找出有問題的主題/外掛程式。請留意在清單中包含許多樣式表,且程式碼涵蓋率中有許多紅色標示的外掛程式。外掛程式只應將網頁上實際使用的樣式表加入清單。"
+  },
+  "stack-packs/packs/wordpress.js | unused_javascript": {
+    "message": "有些 [WordPress 外掛程式](https://wordpress.org/plugins/)會在網頁中載入未使用的 JavaScript,建議你減少這類外掛程式的數量,或改用其他外掛程式。如要找出會新增多餘 JavaScript 的外掛程式,請嘗試在 Chrome DevTools 中執行[程式碼涵蓋率](https://developers.google.com/web/updates/2017/04/devtools-release-notes#coverage)功能。你可以透過指令碼網址找出有問題的主題/外掛程式。請留意在清單中包含許多指令碼,且程式碼涵蓋率中有許多紅色標示的外掛程式。外掛程式只應將網頁實際使用的指令碼加入佇列。"
+  },
+  "stack-packs/packs/wordpress.js | uses_long_cache_ttl": {
+    "message": "瞭解 [WordPress 的瀏覽器快取功能](https://codex.wordpress.org/WordPress_Optimization#Browser_Caching)。"
+  },
+  "stack-packs/packs/wordpress.js | uses_optimized_images": {
+    "message": "建議你使用壓縮圖片時不會影響到畫質的[圖片最佳化 WordPress 外掛程式](https://wordpress.org/plugins/search/optimize+images/)。"
+  },
+  "stack-packs/packs/wordpress.js | uses_responsive_images": {
+    "message": "你可以直接透過[媒體庫](https://codex.wordpress.org/Media_Library_Screen)上傳圖片,確保你可以使用所需的圖片大小,然後透過從媒體庫插入圖片,或使用圖片小工具來確保你使用的是最佳圖片大小 (包括回應式中斷點適用的圖片大小)。除非圖片尺寸符合使用目的,否則請避免使用`Full Size`圖片。[瞭解詳情](https://codex.wordpress.org/Inserting_Images_into_Posts_and_Pages#Image_Size)。"
+  },
+  "stack-packs/packs/wordpress.js | uses_text_compression": {
+    "message": "你可以在網路伺服器設定中啟用文字壓縮功能。"
+  },
+  "stack-packs/packs/wordpress.js | uses_webp_images": {
+    "message": "建議你使用會自動將已上傳圖片轉換成最佳格式的[外掛程式](https://wordpress.org/plugins/search/convert+webp/)或服務。"
+  }
+}
diff --git a/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/zh.json b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/zh.json
new file mode 100644
index 0000000..61b341d
--- /dev/null
+++ b/third_party/blink/renderer/devtools/front_end/audits_worker/lighthouse/locales/zh.json
@@ -0,0 +1,1541 @@
+{
+  "lighthouse-core/audits/accessibility/accesskeys.js | description": {
+    "message": "快捷键可让用户快速转到页面的某个部分。为确保正确进行导航,每个快捷键都必须是独一无二的。[了解详情](https://web.dev/accesskeys/)。"
+  },
+  "lighthouse-core/audits/accessibility/accesskeys.js | failureTitle": {
+    "message": "`[accesskey]` 的值重复"
+  },
+  "lighthouse-core/audits/accessibility/accesskeys.js | title": {
+    "message": "“`[accesskey]`”值是独一无二的"
+  },
+  "lighthouse-core/audits/accessibility/aria-allowed-attr.js | description": {
+    "message": "每个 ARIA“`role`”都支持一部分特定的“`aria-*`”属性。如果这些项不匹配,会导致“`aria-*`”属性无效。[了解详情](https://web.dev/aria-allowed-attr/)。"
+  },
+  "lighthouse-core/audits/accessibility/aria-allowed-attr.js | failureTitle": {
+    "message": "`[aria-*]` 属性与其角色不匹配"
+  },
+  "lighthouse-core/audits/accessibility/aria-allowed-attr.js | title": {
+    "message": "`[aria-*]` 属性与其角色匹配"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-attr.js | description": {
+    "message": "一些 ARIA 角色有必需属性,这些属性向屏幕阅读器描述了相应元素的状态。[了解详情](https://web.dev/aria-required-attr/)。"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-attr.js | failureTitle": {
+    "message": "`[role]` 缺少部分必需的 `[aria-*]` 属性"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-attr.js | title": {
+    "message": "`[role]` 具备所有必需的 `[aria-*]` 属性"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-children.js | description": {
+    "message": "一些 ARIA 父角色必须包含特定子角色,才能执行它们的预期无障碍功能。[了解详情](https://web.dev/aria-required-children/)。"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-children.js | failureTitle": {
+    "message": "角色为 `[role]` 的元素缺少必需的特定子元素 `[role]`。"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-children.js | title": {
+    "message": "角色为 `[role]` 的元素缺少必需的特定子元素 `[role]`"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-parent.js | description": {
+    "message": "一些 ARIA 子角色必须包含在特定的父角色中,才能正确执行它们的预期无障碍功能。[了解详情](https://web.dev/aria-required-parent/)。"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-parent.js | failureTitle": {
+    "message": "`[role]` 未包含在其必需的父元素中"
+  },
+  "lighthouse-core/audits/accessibility/aria-required-parent.js | title": {
+    "message": "`[role]` 包含在其必需的父元素中"
+  },
+  "lighthouse-core/audits/accessibility/aria-roles.js | description": {
+    "message": "ARIA 角色必须具备有效值,才能执行它们的预期无障碍功能。[了解详情](https://web.dev/aria-roles/)。"
+  },
+  "lighthouse-core/audits/accessibility/aria-roles.js | failureTitle": {
+    "message": "`[role]` 值无效"
+  },
+  "lighthouse-core/audits/accessibility/aria-roles.js | title": {
+    "message": "`[role]` 值有效"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr-value.js | description": {
+    "message": "辅助技术(如屏幕阅读器)无法解读值无效的 ARIA 属性。[了解详情](https://web.dev/aria-valid-attr-value/)。"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr-value.js | failureTitle": {
+    "message": "`[aria-*]` 属性缺少有效值"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr-value.js | title": {
+    "message": "`[aria-*]` 属性具备有效值"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr.js | description": {
+    "message": "辅助技术(如屏幕阅读器)无法解读名称无效的 ARIA 属性。[了解详情](https://web.dev/aria-valid-attr/)。"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr.js | failureTitle": {
+    "message": "`[aria-*]` 属性无效或拼写有误"
+  },
+  "lighthouse-core/audits/accessibility/aria-valid-attr.js | title": {
+    "message": "`[aria-*]` 属性有效且拼写正确"
+  },
+  "lighthouse-core/audits/accessibility/audio-caption.js | description": {
+    "message": "字幕让失聪用户或听障用户能够使用音频元素,并可提供关键信息(例如谁在说话、他们在说什么以及其他非语音信息)。[了解详情](https://web.dev/audio-caption/)。"
+  },
+  "lighthouse-core/audits/accessibility/audio-caption.js | failureTitle": {
+    "message": "`<audio>` 元素缺少含 `[kind=\"captions\"]` 的 `<track>` 元素。"
+  },
+  "lighthouse-core/audits/accessibility/audio-caption.js | title": {
+    "message": "`<audio>` 元素包含带 `[kind=\"captions\"]` 的 `<track>` 元素"
+  },
+  "lighthouse-core/audits/accessibility/axe-audit.js | failingElementsHeader": {
+    "message": "未通过审核的元素"
+  },
+  "lighthouse-core/audits/accessibility/button-name.js | description": {
+    "message": "当某个按钮没有可供访问的名称时,屏幕阅读器会将它读为“按钮”,这会导致依赖屏幕阅读器的用户无法使用它。[了解详情](https://web.dev/button-name/)。"
+  },
+  "lighthouse-core/audits/accessibility/button-name.js | failureTitle": {
+    "message": "按钮缺少可供访问的名称"
+  },
+  "lighthouse-core/audits/accessibility/button-name.js | title": {
+    "message": "按钮有可供访问的名称"
+  },
+  "lighthouse-core/audits/accessibility/bypass.js | description": {
+    "message": "添加用于绕过重复内容的方式有助于键盘用户更高效地浏览页面。[了解详情](https://web.dev/bypass/)。"
+  },
+  "lighthouse-core/audits/accessibility/bypass.js | failureTitle": {
+    "message": "该页面不含任何标题、跳过链接或地标区域"
+  },
+  "lighthouse-core/audits/accessibility/bypass.js | title": {
+    "message": "该页面包含一个标题、跳过链接或地标区域"
+  },
+  "lighthouse-core/audits/accessibility/color-contrast.js | description": {
+    "message": "对于许多用户而言,对比度低的文字都是难以阅读或无法阅读的。[了解详情](https://web.dev/color-contrast/)。"
+  },
+  "lighthouse-core/audits/accessibility/color-contrast.js | failureTitle": {
+    "message": "背景色和前景色没有足够高的对比度。"
+  },
+  "lighthouse-core/audits/accessibility/color-contrast.js | title": {
+    "message": "背景色和前景色具有足够高的对比度"
+  },
+  "lighthouse-core/audits/accessibility/definition-list.js | description": {
+    "message": "如果未正确标记定义列表,屏幕阅读器可能会读出令人困惑或不准确的内容。[了解详情](https://web.dev/definition-list/)。"
+  },
+  "lighthouse-core/audits/accessibility/definition-list.js | failureTitle": {
+    "message": "`<dl>` 并非只包含经过适当排序的 `<dt>` 和 `<dd>` 组及 `<script>` 或 `<template>` 元素。"
+  },
+  "lighthouse-core/audits/accessibility/definition-list.js | title": {
+    "message": "`<dl>` 只包含经过适当排序的 `<dt>` 和 `<dd>` 组及 `<script>` 或 `<template>` 元素。"
+  },
+  "lighthouse-core/audits/accessibility/dlitem.js | description": {
+    "message": "定义列表项 (`<dt>` 和 `<dd>`) 必须封装在父 `<dl>` 元素中,以确保屏幕阅读器可以正确地读出它们。[了解详情](https://web.dev/dlitem/)。"
+  },
+  "lighthouse-core/audits/accessibility/dlitem.js | failureTitle": {
+    "message": "定义列表项已封装在 `<dl>` 元素中"
+  },
+  "lighthouse-core/audits/accessibility/dlitem.js | title": {
+    "message": "定义列表项已封装在 `<dl>` 元素中"
+  },
+  "lighthouse-core/audits/accessibility/document-title.js | description": {
+    "message": "屏幕阅读器用户可借助标题来大致了解某个页面的内容,搜索引擎用户则非常依赖标题来确定某个页面是否与其搜索相关。[了解详情](https://web.dev/document-title/)。"
+  },
+  "lighthouse-core/audits/accessibility/document-title.js | failureTitle": {
+    "message": "文档不含 `<title>` 元素"
+  },
+  "lighthouse-core/audits/accessibility/document-title.js | title": {
+    "message": "文档包含 `<title>` 元素"
+  },
+  "lighthouse-core/audits/accessibility/duplicate-id.js | description": {
+    "message": "id 属性的值必须独一无二,以防其他实例被辅助技术忽略。[了解详情](https://web.dev/duplicate-id/)。"
+  },
+  "lighthouse-core/audits/accessibility/duplicate-id.js | failureTitle": {
+    "message": "页面上的 `[id]` 属性不是独一无二的"
+  },
+  "lighthouse-core/audits/accessibility/duplicate-id.js | title": {
+    "message": "页面上的 `[id]` 属性是独一无二的"
+  },
+  "lighthouse-core/audits/accessibility/frame-title.js | description": {
+    "message": "屏幕阅读器用户依靠框架标题来描述框架的内容。[了解详情](https://web.dev/frame-title/)。"
+  },
+  "lighthouse-core/audits/accessibility/frame-title.js | failureTitle": {
+    "message": "`<frame>` 或 `<iframe>` 元素缺少标题"
+  },
+  "lighthouse-core/audits/accessibility/frame-title.js | title": {
+    "message": "`<frame>` 或 `<iframe>` 元素有标题"
+  },
+  "lighthouse-core/audits/accessibility/html-has-lang.js | description": {
+    "message": "如果页面未指定 lang 属性,屏幕阅读器便会假定该页面采用的是用户在设置屏幕阅读器时选择的默认语言。如果该页面实际上并未采用默认语言,则屏幕阅读器可能无法正确读出该页面中的文字。[了解详情](https://web.dev/html-has-lang/)。"
+  },
+  "lighthouse-core/audits/accessibility/html-has-lang.js | failureTitle": {
+    "message": "`<html>` 元素缺少 `[lang]` 属性"
+  },
+  "lighthouse-core/audits/accessibility/html-has-lang.js | title": {
+    "message": "`<html>` 元素包含 `[lang]` 属性"
+  },
+  "lighthouse-core/audits/accessibility/html-lang-valid.js | description": {
+    "message": "指定有效的 [BCP 47 语言](https://www.w3.org/International/questions/qa-choosing-language-tags#question)有助于屏幕阅读器正确读出文字。[了解详情](https://web.dev/html-lang-valid/)。"
+  },
+  "lighthouse-core/audits/accessibility/html-lang-valid.js | failureTitle": {
+    "message": "`<html>` 元素的 `[lang]` 属性缺少有效值。"
+  },
+  "lighthouse-core/audits/accessibility/html-lang-valid.js | title": {
+    "message": "`<html>` 元素的 `[lang]` 属性具备有效值"
+  },
+  "lighthouse-core/audits/accessibility/image-alt.js | description": {
+    "message": "说明性元素应力求使用简短的描述性替代文字。未指定 alt 属性的装饰性元素可被忽略。[了解详情](https://web.dev/image-alt/)。"
+  },
+  "lighthouse-core/audits/accessibility/image-alt.js | failureTitle": {
+    "message": "图片元素缺少 `[alt]` 属性"
+  },
+  "lighthouse-core/audits/accessibility/image-alt.js | title": {
+    "message": "图片元素具备 `[alt]` 属性"
+  },
+  "lighthouse-core/audits/accessibility/input-image-alt.js | description": {
+    "message": "将图片用作 `<input>` 按钮时,提供替代文字有助于屏幕阅读器用户了解该按钮的用途。[了解详情](https://web.dev/input-image-alt/)。"
+  },
+  "lighthouse-core/audits/accessibility/input-image-alt.js | failureTitle": {
+    "message": "`<input type=\"image\">` 元素缺少 `[alt]` 文字"
+  },
+  "lighthouse-core/audits/accessibility/input-image-alt.js | title": {
+    "message": "`<input type=\"image\">` 元素包含 `[alt]` 文字"
+  },
+  "lighthouse-core/audits/accessibility/label.js | description": {
+    "message": "标签可确保辅助技术(如屏幕阅读器)正确读出表单控件。[了解详情](https://web.dev/label/)。"
+  },
+  "lighthouse-core/audits/accessibility/label.js | failureTitle": {
+    "message": "表单元素不具备关联的标签"
+  },
+  "lighthouse-core/audits/accessibility/label.js | title": {
+    "message": "表单元素具有关联的标签"
+  },
+  "lighthouse-core/audits/accessibility/layout-table.js | description": {
+    "message": "用于实现布局用途的表格不应包含数据元素(例如 th 或 caption 元素或 summary 属性),因为这会令屏幕阅读器用户感到困惑。[了解详情](https://web.dev/layout-table/)。"
+  },
+  "lighthouse-core/audits/accessibility/layout-table.js | failureTitle": {
+    "message": "展示性 `<table>` 元素未避免使用 `<th>`、`<caption>` 或 `[summary]` 属性。"
+  },
+  "lighthouse-core/audits/accessibility/layout-table.js | title": {
+    "message": "展示性 `<table>` 元素未使用 `<th>`、`<caption>` 或 `[summary]` 属性。"
+  },
+  "lighthouse-core/audits/accessibility/link-name.js | description": {
+    "message": "请确保链接文字(以及用作链接的图片替代文字)可识别、独一无二且可成为焦点,这样做会提升屏幕阅读器用户的导航体验。[了解详情](https://web.dev/link-name/)。"
+  },
+  "lighthouse-core/audits/accessibility/link-name.js | failureTitle": {
+    "message": "链接缺少可识别的名称"
+  },
+  "lighthouse-core/audits/accessibility/link-name.js | title": {
+    "message": "链接具备可识别的名称"
+  },
+  "lighthouse-core/audits/accessibility/list.js | description": {
+    "message": "屏幕阅读器会采用特定的方法来读出列表内容。确保列表结构正确有助于屏幕阅读器顺利读出相应内容。[了解详情](https://web.dev/list/)。"
+  },
+  "lighthouse-core/audits/accessibility/list.js | failureTitle": {
+    "message": "列表并非只包含 `<li>` 元素和脚本支持元素(`<script>` 和 `<template>`)。"
+  },
+  "lighthouse-core/audits/accessibility/list.js | title": {
+    "message": "列表只包含 `<li>` 元素和脚本支持元素(`<script>` 和 `<template>`)。"
+  },
+  "lighthouse-core/audits/accessibility/listitem.js | description": {
+    "message": "屏幕阅读器要求列表项 (`<li>`) 必须包含在父 `<ul>` 或 `<ol>` 中,这样才能正确读出它们。[了解详情](https://web.dev/listitem/)。"
+  },
+  "lighthouse-core/audits/accessibility/listitem.js | failureTitle": {
+    "message": "列表项 (`<li>`) 未包含在 `<ul>` 或 `<ol>` 父元素中。"
+  },
+  "lighthouse-core/audits/accessibility/listitem.js | title": {
+    "message": "列表项 (`<li>`) 包含在 `<ul>` 或 `<ol>` 父元素中"
+  },
+  "lighthouse-core/audits/accessibility/meta-refresh.js | description": {
+    "message": "用户并不希望网页自动刷新,因为自动刷新会不断地将焦点移回到页面顶部。这可能会让用户感到沮丧或困惑。[了解详情](https://web.dev/meta-refresh/)。"
+  },
+  "lighthouse-core/audits/accessibility/meta-refresh.js | failureTitle": {
+    "message": "文档使用了 `<meta http-equiv=\"refresh\">`"
+  },
+  "lighthouse-core/audits/accessibility/meta-refresh.js | title": {
+    "message": "文档未使用 `<meta http-equiv=\"refresh\">`"
+  },
+  "lighthouse-core/audits/accessibility/meta-viewport.js | description": {
+    "message": "对于必须依靠放大屏幕才能清晰看到网页内容的弱视用户而言,停用缩放功能会给他们带来问题。[了解详情](https://web.dev/meta-viewport/)。"
+  },
+  "lighthouse-core/audits/accessibility/meta-viewport.js | failureTitle": {
+    "message": "`<meta name=\"viewport\">` 元素中使用了 `[user-scalable=\"no\"]`,或者 `[maximum-scale]` 属性小于 5。"
+  },
+  "lighthouse-core/audits/accessibility/meta-viewport.js | title": {
+    "message": "`[user-scalable=\"no\"]` 未用在 `<meta name=\"viewport\">` 元素中,并且 `[maximum-scale]` 属性不小于 5。"
+  },
+  "lighthouse-core/audits/accessibility/object-alt.js | description": {
+    "message": "屏幕阅读器无法转换非文字内容。向 `<object>` 元素添加替代文字可帮助屏幕阅读器将含义传达给用户。[了解详情](https://web.dev/object-alt/)。"
+  },
+  "lighthouse-core/audits/accessibility/object-alt.js | failureTitle": {
+    "message": "`<object>` 元素缺少 `[alt]` 文字"
+  },
+  "lighthouse-core/audits/accessibility/object-alt.js | title": {
+    "message": "`<object>` 元素包含 `[alt]` 文字"
+  },
+  "lighthouse-core/audits/accessibility/tabindex.js | description": {
+    "message": "值大于 0 意味着明确的导航顺序。尽管这在技术上可行,但往往会让依赖辅助技术的用户感到沮丧。[了解详情](https://web.dev/tabindex/)。"
+  },
+  "lighthouse-core/audits/accessibility/tabindex.js | failureTitle": {
+    "message": "一些元素的 `[tabindex]` 值大于 0"
+  },
+  "lighthouse-core/audits/accessibility/tabindex.js | title": {
+    "message": "所有元素的 `[tabindex]` 值都不大于 0"
+  },
+  "lighthouse-core/audits/accessibility/td-headers-attr.js | description": {
+    "message": "屏幕阅读器提供了更便于用户浏览表格内容的功能。请确保那些使用 `[headers]` 属性的 `<td>` 单元格仅引用同一个表格中的其他单元格,这样做可提升屏幕阅读器用户的体验。[了解详情](https://web.dev/td-headers-attr/)。"
+  },
+  "lighthouse-core/audits/accessibility/td-headers-attr.js | failureTitle": {
+    "message": "`<table>` 元素中使用 `[headers]` 属性的单元格仅会引用同一个表格中的其他单元格。"
+  },
+  "lighthouse-core/audits/accessibility/td-headers-attr.js | title": {
+    "message": "`<table>` 元素中使用 `[headers]` 属性的单元格仅会引用同一个表格中的其他单元格。"
+  },
+  "lighthouse-core/audits/accessibility/th-has-data-cells.js | description": {
+    "message": "屏幕阅读器提供了更便于用户浏览表格内容的功能。确保表格标头始终引用特定一组单元格可以提升屏幕阅读器用户的体验。[了解详情](https://web.dev/th-has-data-cells/)。"
+  },
+  "lighthouse-core/audits/accessibility/th-has-data-cells.js | failureTitle": {
+    "message": "`<th>` 元素和 `[role=\"columnheader\"/\"rowheader\"]` 的元素缺少它们所描述的数据单元格。"
+  },
+  "lighthouse-core/audits/accessibility/th-has-data-cells.js | title": {
+    "message": "`<th>` 元素和 `[role=\"columnheader\"/\"rowheader\"]` 的元素具备它们所描述的数据单元格。"
+  },
+  "lighthouse-core/audits/accessibility/valid-lang.js | description": {
+    "message": "为元素指定有效的 [BCP 47 语言](https://www.w3.org/International/questions/qa-choosing-language-tags#question)有助于确保屏幕阅读器正确读出文字。[了解详情](https://web.dev/valid-lang/)。"
+  },
+  "lighthouse-core/audits/accessibility/valid-lang.js | failureTitle": {
+    "message": "`[lang]` 属性缺少有效值"
+  },
+  "lighthouse-core/audits/accessibility/valid-lang.js | title": {
+    "message": "`[lang]` 属性的值有效"
+  },
+  "lighthouse-core/audits/accessibility/video-caption.js | description": {
+    "message": "如果视频提供了字幕,失聪用户和听障用户便能更轻松地获取此视频中的信息。[了解详情](https://web.dev/video-caption/)。"
+  },
+  "lighthouse-core/audits/accessibility/video-caption.js | failureTitle": {
+    "message": "`<video>` 元素缺少含 `[kind=\"captions\"]` 的 `<track>` 元素。"
+  },
+  "lighthouse-core/audits/accessibility/video-caption.js | title": {
+    "message": "`<video>` 元素包含带 `[kind=\"captions\"]` 的 `<track>` 元素"
+  },
+  "lighthouse-core/audits/accessibility/video-description.js | description": {
+    "message": "音频说明可提供对话框无法提供的视频相关信息(例如面部表情和场景)。[了解详情](https://web.dev/video-description/)。"
+  },
+  "lighthouse-core/audits/accessibility/video-description.js | failureTitle": {
+    "message": "`<video>` 元素缺少含 `[kind=\"description\"]` 的 `<track>` 元素。"
+  },
+  "lighthouse-core/audits/accessibility/video-description.js | title": {
+    "message": "`<video>` 元素包含带 `[kind=\"description\"]` 的 `<track>` 元素"
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | description": {
+    "message": "请定义一个 `apple-touch-icon`,以在 iOS 用户向主屏幕添加渐进式 Web 应用时获得理想的外观。它必须指向一张不透明的 192px(或 180px)方形 PNG 图片。[了解详情](https://developers.google.com/web/fundamentals/design-and-ux/browser-customization/)。"
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | failureTitle": {
+    "message": "未提供有效的 `apple-touch-icon`"
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | precomposedWarning": {
+    "message": "`apple-touch-icon-precomposed` 不是最新版本,建议使用 `apple-touch-icon`。"
+  },
+  "lighthouse-core/audits/apple-touch-icon.js | title": {
+    "message": "提供了有效的 `apple-touch-icon`"
+  },
+  "lighthouse-core/audits/bootup-time.js | chromeExtensionsWarning": {
+    "message": "Chrome 扩展程序对此网页的加载性能产生了负面影响。请尝试在无痕模式下或使用未安装这些扩展程序的 Chrome 个人资料审核此网页。"
+  },
+  "lighthouse-core/audits/bootup-time.js | columnScriptEval": {
+    "message": "脚本评估"
+  },
+  "lighthouse-core/audits/bootup-time.js | columnScriptParse": {
+    "message": "脚本解析"
+  },
+  "lighthouse-core/audits/bootup-time.js | columnTotal": {
+    "message": "总 CPU 时间"
+  },
+  "lighthouse-core/audits/bootup-time.js | description": {
+    "message": "建议您减少为解析、编译和执行 JS 而花费的时间。您可能会发现,提供较小的 JS 负载有助于实现此目标。[了解详情](https://developers.google.com/web/tools/lighthouse/audits/bootup)。"
+  },
+  "lighthouse-core/audits/bootup-time.js | failureTitle": {
+    "message": "缩短 JavaScript 执行用时"
+  },
+  "lighthouse-core/audits/bootup-time.js | title": {
+    "message": "JavaScript 执行用时"
+  },
+  "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | description": {
+    "message": "使用大型 GIF 提供动画内容会导致效率低下。建议您改用 MPEG4/WebM 视频(来提供动画)和 PNG/WebP(来提供静态图片)以减少网络活动消耗的字节数。[了解详情](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/replace-animated-gifs-with-video/)"
+  },
+  "lighthouse-core/audits/byte-efficiency/efficient-animated-content.js | title": {
+    "message": "使用视频格式提供动画内容"
+  },
+  "lighthouse-core/audits/byte-efficiency/offscreen-images.js | description": {
+    "message": "建议您在所有关键资源加载完毕后推迟加载屏幕外图片和处于隐藏状态的图片,从而缩短可交互前的耗时。[了解详情](https://developers.google.com/web/tools/lighthouse/audits/offscreen-images)。"
+  },
+  "lighthouse-core/audits/byte-efficiency/offscreen-images.js | title": {
+    "message": "推迟加载屏幕外图片"
+  },
+  "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | description": {
+    "message": "资源阻止了系统对您网页的首次渲染。建议以内嵌方式提供关键的 JS/CSS,并推迟提供所有非关键的 JS/样式。[了解详情](https://developers.google.com/web/tools/lighthouse/audits/blocking-resources)。"
+  },
+  "lighthouse-core/audits/byte-efficiency/render-blocking-resources.js | title": {
+    "message": "移除阻塞渲染的资源"
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | description": {
+    "message": "网络负载过大不仅会让用户付出真金白银,还极有可能会延长加载用时。[了解详情](https://developers.google.com/web/tools/lighthouse/audits/network-payloads)。"
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | displayValue": {
+    "message": "总大小为 {totalBytes, number, bytes} KB"
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | failureTitle": {
+    "message": "避免网络负载过大"
+  },
+  "lighthouse-core/audits/byte-efficiency/total-byte-weight.js | title": {
+    "message": "避免网络负载过大"
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-css.js | description": {
+    "message": "缩减 CSS 文件大小可缩减网络负载规模。[了解详情](https://developers.google.com/web/tools/lighthouse/audits/minify-css)。"
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-css.js | title": {
+    "message": "缩减 CSS"
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | description": {
+    "message": "如果缩减 JavaScript 文件大小,则既能缩减负载规模,又能缩短脚本解析用时。[了解详情](https://developers.google.com/speed/docs/insights/MinifyResources)。"
+  },
+  "lighthouse-core/audits/byte-efficiency/unminified-javascript.js | title": {
+    "message": "缩减 JavaScript"
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | description": {
+    "message": "从样式表中移除无效规则并延迟加载首屏内容未使用的 CSS 可减少网络活动的无谓消耗。[了解详情](https://developers.google.com/web/tools/lighthouse/audits/unused-css)。"
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-css-rules.js | title": {
+    "message": "移除未使用的 CSS"
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-javascript.js | description": {
+    "message": "移除未使用的 JavaScript 可减少网络活动消耗的字节数。"
+  },
+  "lighthouse-core/audits/byte-efficiency/unused-javascript.js | title": {
+    "message": "移除未使用的 JavaScript"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | description": {
+    "message": "延长缓存期限可加快重访您网页的速度。[了解详情](https://developers.google.com/web/tools/lighthouse/audits/cache-policy)。"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | displayValue": {
+    "message": "{itemCount,plural, =1{找到了 1 项资源}other{找到了 # 项资源}}"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | failureTitle": {
+    "message": "采用高效的缓存策略提供静态资源"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-long-cache-ttl.js | title": {
+    "message": "针对静态资源使用高效的缓存策略"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | description": {
+    "message": "如果图片经过了优化,则加载速度会更快,且消耗的移动数据网络流量会更少。[了解详情](https://developers.google.com/web/tools/lighthouse/audits/optimize-images)。"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-optimized-images.js | title": {
+    "message": "对图片进行高效编码"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | description": {
+    "message": "提供大小合适的图片可节省移动数据网络流量并缩短加载用时。[了解详情](https://developers.google.com/web/tools/lighthouse/audits/oversized-images)。"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-responsive-images.js | title": {
+    "message": "适当调整图片大小"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | description": {
+    "message": "对于文本资源,应先压缩(gzip、deflate 或 brotli),然后再提供,以最大限度地减少网络活动消耗的字节总数。[了解详情](https://developers.google.com/web/tools/lighthouse/audits/text-compression)。"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-text-compression.js | title": {
+    "message": "启用文本压缩"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | description": {
+    "message": "JPEG 2000、JPEG XR 和 WebP 等图片格式的压缩效果通常比 PNG 或 JPEG 好,因此下载速度更快,消耗的数据流量更少。[了解详情](https://developers.google.com/web/tools/lighthouse/audits/webp)。"
+  },
+  "lighthouse-core/audits/byte-efficiency/uses-webp-images.js | title": {
+    "message": "采用新一代格式提供图片"
+  },
+  "lighthouse-core/audits/content-width.js | description": {
+    "message": "如果应用内容的宽度与视口的宽度不一致,该应用可能不会针对移动设备屏幕进行优化。[了解详情](https://developers.google.com/web/tools/lighthouse/audits/content-sized-correctly-for-viewport)。"
+  },
+  "lighthouse-core/audits/content-width.js | explanation": {
+    "message": "视口大小({innerWidth} 像素)与窗口大小({outerWidth} 像素)不一致。"
+  },
+  "lighthouse-core/audits/content-width.js | failureTitle": {
+    "message": "未根据视口正确设置内容尺寸"
+  },
+  "lighthouse-core/audits/content-width.js | title": {
+    "message": "已根据视口正确设置内容尺寸"
+  },
+  "lighthouse-core/audits/critical-request-chains.js | description": {
+    "message": "下面的关键请求链显示了以高优先级加载的资源。请考虑缩短链长、缩减资源的下载文件大小,或者推迟下载不必要的资源,从而提高网页加载速度。[了解详情](https://developers.google.com/web/tools/lighthouse/audits/critical-request-chains)。"
+  },
+  "lighthouse-core/audits/critical-request-chains.js | displayValue": {
+    "message": "{itemCount,plural, =1{找到了 1 条请求链}other{找到了 # 条请求链}}"
+  },
+  "lighthouse-core/audits/critical-request-chains.js | title": {
+    "message": "最大限度地缩短关键请求深度"
+  },
+  "lighthouse-core/audits/deprecations.js | columnDeprecate": {
+    "message": "弃用/警告"
+  },
+  "lighthouse-core/audits/deprecations.js | columnLine": {
+    "message": "Line"
+  },
+  "lighthouse-core/audits/deprecations.js | description": {
+    "message": "已弃用的的 API 最终将从浏览器中移除。[了解详情](https://web.dev/deprecations)。"
+  },
+  "lighthouse-core/audits/deprecations.js | displayValue": {
+    "message": "{itemCount,plural, =1{发现了 1 条警告}other{发现了 # 条警告}}"
+  },
+  "lighthouse-core/audits/deprecations.js | failureTitle": {
+    "message": "使用了已弃用的 API"
+  },
+  "lighthouse-core/audits/deprecations.js | title": {
+    "message": "请勿使用已弃用的 API"
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | description": {
+    "message": "应用缓存已被弃用。[了解详情](https://web.dev/appcache-manifest)。"
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | displayValue": {
+    "message": "发现了“{AppCacheManifest}”"
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | failureTitle": {
+    "message": "使用了应用缓存"
+  },
+  "lighthouse-core/audits/dobetterweb/appcache-manifest.js | title": {
+    "message": "请勿使用应用缓存"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | description": {
+    "message": "指定 DOCTYPE 会阻止浏览器切换到怪异模式。[了解详情](https://web.dev/doctype)。"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationBadDoctype": {
+    "message": "DOCTYPE 名称必须为小写字符串 `html`"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationNoDoctype": {
+    "message": "文档必需包含 DOCTYPE"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationPublicId": {
+    "message": "publicId 应为空字符串"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | explanationSystemId": {
+    "message": "systemId 应为空字符串"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | failureTitle": {
+    "message": "页面缺少 HTML DOCTYPE,从而触发了怪异模式"
+  },
+  "lighthouse-core/audits/dobetterweb/doctype.js | title": {
+    "message": "页面包含 HTML DOCTYPE"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | columnElement": {
+    "message": "元素"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | columnStatistic": {
+    "message": "统计信息"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | columnValue": {
+    "message": "值"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | description": {
+    "message": "浏览器工程师建议,页面包含的 DOM 元素最好少于 1,500 个左右。理想状况是,树深度少于 32 个元素,且少于 60 个子/父元素。大型 DOM 可能会增加内存使用量、导致[样式计算](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations)用时延长,并产生高昂的[布局重排](https://developers.google.com/speed/articles/reflow)费用。[了解详情](https://web.dev/dom-size)。"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 个元素}other{# 个元素}}"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | failureTitle": {
+    "message": "避免 DOM 规模过大"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | statisticDOMDepth": {
+    "message": "最大 DOM 深度"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | statisticDOMElements": {
+    "message": "DOM 元素总数"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | statisticDOMWidth": {
+    "message": "子元素数量最大值"
+  },
+  "lighthouse-core/audits/dobetterweb/dom-size.js | title": {
+    "message": "避免 DOM 规模过大"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | columnRel": {
+    "message": "Rel"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | columnTarget": {
+    "message": "目标"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | description": {
+    "message": "向任何外部链接添加 `rel=\"noopener\"` 或 `rel=\"noreferrer\"`,可提高性能并减少安全漏洞。[了解详情](https://web.dev/external-anchors-use-rel-noopener)。"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | failureTitle": {
+    "message": "指向跨域目的地的链接不安全"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | title": {
+    "message": "指向跨域目的地的链接安全"
+  },
+  "lighthouse-core/audits/dobetterweb/external-anchors-use-rel-noopener.js | warning": {
+    "message": "无法确定锚点 ({anchorHTML}) 的目的地。如果不用作超链接,建议移除 target=_blank。"
+  },
+  "lighthouse-core/audits/dobetterweb/geolocation-on-start.js | description": {
+    "message": "如果网站在缺少上下文的情况下请求位置,会导致用户不信任网站或感到困惑。建议将请求与用户操作进行绑定。[了解详情](https://web.dev/geolocation-on-start)。"
+  },
+  "lighthouse-core/audits/dobetterweb/geolocation-on-start.js | failureTitle": {
+    "message": "在网页加载时请求地理定位权限"
+  },
+  "lighthouse-core/audits/dobetterweb/geolocation-on-start.js | title": {
+    "message": "避免在网页加载时请求地理定位权限"
+  },
+  "lighthouse-core/audits/dobetterweb/js-libraries.js | columnVersion": {
+    "message": "版本"
+  },
+  "lighthouse-core/audits/dobetterweb/js-libraries.js | description": {
+    "message": "页面上检测到的所有前端 JavaScript 库。[了解详情](https://web.dev/js-libraries)。"
+  },
+  "lighthouse-core/audits/dobetterweb/js-libraries.js | title": {
+    "message": "已检测到的 JavaScript 库"
+  },
+  "lighthouse-core/audits/dobetterweb/no-document-write.js | description": {
+    "message": "对于连接速度较慢的用户,通过 `document.write()` 动态注入的外部脚本可将网页加载延迟数十秒。[了解详情](https://web.dev/no-document-write)。"
+  },
+  "lighthouse-core/audits/dobetterweb/no-document-write.js | failureTitle": {
+    "message": "使用了 `document.write()`"
+  },
+  "lighthouse-core/audits/dobetterweb/no-document-write.js | title": {
+    "message": "请勿使用 `document.write()`"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | columnSeverity": {
+    "message": "最高严重程度"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | columnVersion": {
+    "message": "库版本"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | columnVuln": {
+    "message": "漏洞数量"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | description": {
+    "message": "某些第三方脚本可能包含已知的安全漏洞,攻击者很容易识别和利用这些漏洞。[了解详情](https://web.dev/no-vulnerable-libraries)。"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | displayValue": {
+    "message": "{itemCount,plural, =1{检测到 1 个漏洞}other{检测到 # 个漏洞}}"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | failureTitle": {
+    "message": "包含有已知安全漏洞的前端 JavaScript 库"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | rowSeverityHigh": {
+    "message": "高"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | rowSeverityLow": {
+    "message": "低"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | rowSeverityMedium": {
+    "message": "中"
+  },
+  "lighthouse-core/audits/dobetterweb/no-vulnerable-libraries.js | title": {
+    "message": "避免使用含已知安全漏洞的前端 JavaScript 库"
+  },
+  "lighthouse-core/audits/dobetterweb/notification-on-start.js | description": {
+    "message": "如果网站在缺少上下文的情况下请求发送通知,会导致用户不信任网站或感到困惑。建议将请求与用户手势进行绑定。[了解详情](https://web.dev/notification-on-start)。"
+  },
+  "lighthouse-core/audits/dobetterweb/notification-on-start.js | failureTitle": {
+    "message": "在网页加载时请求通知权限"
+  },
+  "lighthouse-core/audits/dobetterweb/notification-on-start.js | title": {
+    "message": "避免在网页加载时请求通知权限"
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | columnFailingElem": {
+    "message": "失败的元素"
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | description": {
+    "message": "阻止密码粘贴,会破坏良好的安全政策。[了解详情](https://web.dev/password-inputs-can-be-pasted-into)。"
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | failureTitle": {
+    "message": "不允许用户粘贴内容到密码字段"
+  },
+  "lighthouse-core/audits/dobetterweb/password-inputs-can-be-pasted-into.js | title": {
+    "message": "允许用户粘贴内容到密码字段"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | columnProtocol": {
+    "message": "协议"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | description": {
+    "message": "HTTP/2 提供了许多优于 HTTP/1.1的优点,包括二进制标头、多路复用和服务器推送等。[了解详情](https://web.dev/uses-http2)。"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 条请求未通过 HTTP/2 传送}other{# 条请求未通过 HTTP/2 传送}}"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | failureTitle": {
+    "message": "没有对所有网页资源使用 HTTP/2"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-http2.js | title": {
+    "message": "对其自身资源使用了 HTTP/2"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-passive-event-listeners.js | description": {
+    "message": "建议您将触摸和滚轮事件监听器标记为 `passive`,以提高页面的滚动性能。[了解详情](https://web.dev/uses-passive-event-listeners)。"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-passive-event-listeners.js | failureTitle": {
+    "message": "未使用被动式监听器来提高滚动性能"
+  },
+  "lighthouse-core/audits/dobetterweb/uses-passive-event-listeners.js | title": {
+    "message": "使用被动式监听器来提高滚动性能"
+  },
+  "lighthouse-core/audits/errors-in-console.js | columnDesc": {
+    "message": "说明"
+  },
+  "lighthouse-core/audits/errors-in-console.js | description": {
+    "message": "控制台中记录的错误表明有未解决的问题。导致这些错误的可能原因是网络请求失败和其他浏览器问题。[了解详情](https://web.dev/errors-in-console)"
+  },
+  "lighthouse-core/audits/errors-in-console.js | failureTitle": {
+    "message": "控制台日志中已记录浏览器错误"
+  },
+  "lighthouse-core/audits/errors-in-console.js | title": {
+    "message": "控制台日志中未记录浏览器错误"
+  },
+  "lighthouse-core/audits/font-display.js | description": {
+    "message": "利用 font-display 这项 CSS 功能,确保文本在网页字体加载期间始终对用户可见。[了解详情](https://developers.google.com/web/updates/2016/02/font-display)。"
+  },
+  "lighthouse-core/audits/font-display.js | failureTitle": {
+    "message": "确保文本在网页字体加载期间保持可见状态"
+  },
+  "lighthouse-core/audits/font-display.js | title": {
+    "message": "在网页字体加载期间,所有文本都保持可见状态"
+  },
+  "lighthouse-core/audits/font-display.js | undeclaredFontURLWarning": {
+    "message": "Lighthouse 无法自动检查以下网址的字体显示值:{fontURL}。"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | columnActual": {
+    "message": "宽高比(实际)"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | columnDisplayed": {
+    "message": "宽高比(显示)"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | description": {
+    "message": "图像显示尺寸应与自然宽高比相匹配。[了解详情](https://web.dev/image-aspect-ratio)。"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | failureTitle": {
+    "message": "显示的图像宽高比不正确"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | title": {
+    "message": "显示的图像宽高比正确"
+  },
+  "lighthouse-core/audits/image-aspect-ratio.js | warningCompute": {
+    "message": "无效的图片大小信息 {url}"
+  },
+  "lighthouse-core/audits/installable-manifest.js | description": {
+    "message": "浏览器可主动提示用户向其主屏幕中添加您的应用,这有助于提高互动度。[了解详情](https://developers.google.com/web/tools/lighthouse/audits/install-prompt)。"
+  },
+  "lighthouse-core/audits/installable-manifest.js | failureTitle": {
+    "message": "Web 应用清单不符合可安装性要求"
+  },
+  "lighthouse-core/audits/installable-manifest.js | title": {
+    "message": "Web 应用清单符合可安装性要求"
+  },
+  "lighthouse-core/audits/is-on-https.js | columnInsecureURL": {
+    "message": "不安全的网址"
+  },
+  "lighthouse-core/audits/is-on-https.js | description": {
+    "message": "应该使用 HTTPS 保护所有网站(包括不会处理敏感数据的网站)。HTTPS 可防止入侵程序篡改或被动地监听您的应用与用户之间的通信,它是HTTP/2 和许多新的网络平台 API 的先决条件。[了解详情](https://web.dev/is-on-https)。"
+  },
+  "lighthouse-core/audits/is-on-https.js | displayValue": {
+    "message": "{itemCount,plural, =1{发现 1 条不安全的请求}other{发现 # 条不安全的请求}}"
+  },
+  "lighthouse-core/audits/is-on-https.js | failureTitle": {
+    "message": "未使用 HTTPS"
+  },
+  "lighthouse-core/audits/is-on-https.js | title": {
+    "message": "使用 HTTPS"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | description": {
+    "message": "如果网页在移动网络中的加载速度较快,则可确保良好的移动用户体验。[了解详情](https://developers.google.com/web/tools/lighthouse/audits/fast-3g)。"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | displayValueText": {
+    "message": "页面交互需要 {timeInMs, number, seconds} 秒"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | displayValueTextWithOverride": {
+    "message": "在模拟移动网络上需要 {timeInMs, number, seconds} 秒才能支持交互"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | explanationLoadSlow": {
+    "message": "您的网页加载速度过慢,在 10 秒钟内一直未进行互动。要了解如何改进,请查看“性能”部分中的优化建议和诊断结果。"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | failureTitle": {
+    "message": "页面在移动网络上的加载速度不够快"
+  },
+  "lighthouse-core/audits/load-fast-enough-for-pwa.js | title": {
+    "message": "页面在移动网络上的加载速度足够快"
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | columnCategory": {
+    "message": "类别"
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | description": {
+    "message": "考虑减少为解析、编译和执行 JS 而花费的时间。您可能会发现,提供较小的 JS 负载有助于实现此目标。"
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | failureTitle": {
+    "message": "最大限度地减少主线程工作"
+  },
+  "lighthouse-core/audits/mainthread-work-breakdown.js | title": {
+    "message": "最大限度地减少主线程工作"
+  },
+  "lighthouse-core/audits/manual/pwa-cross-browser.js | description": {
+    "message": "网站应该能在所有主流浏览器中正常显示,以便覆盖数量最多的用户。[了解详情](https://developers.google.com/web/progressive-web-apps/checklist#site-works-cross-browser)。"
+  },
+  "lighthouse-core/audits/manual/pwa-cross-browser.js | title": {
+    "message": "网站能在各种浏览器中正常显示"
+  },
+  "lighthouse-core/audits/manual/pwa-each-page-has-url.js | description": {
+    "message": "确保各个网页可通过网址建立深层链接,并且这些网址是独一无二的,可以在社交媒体上共享。[了解详情](https://developers.google.com/web/progressive-web-apps/checklist#each-page-has-a-url)。"
+  },
+  "lighthouse-core/audits/manual/pwa-each-page-has-url.js | title": {
+    "message": "每个网页都有一个网址"
+  },
+  "lighthouse-core/audits/manual/pwa-page-transitions.js | description": {
+    "message": "在您点按某个网页后,系统应该快速跳转到另一个网页(即使网速缓慢也是如此),这是衡量网页加载速度的关键指标。[了解详情](https://developers.google.com/web/progressive-web-apps/checklist#page-transitions-dont-feel-like-they-block-on-the-network)。"
+  },
+  "lighthouse-core/audits/manual/pwa-page-transitions.js | title": {
+    "message": "在不同网页之间跳转时,用户感觉不到网页加载缓慢"
+  },
+  "lighthouse-core/audits/metrics/estimated-input-latency.js | description": {
+    "message": "预计输入延迟是估算值,表示您的应用在网页加载最繁忙的 5 秒期间大概需要花费多长时间(以毫秒为单位)才能对用户输入做出响应。如果您的延迟时间超过了 50 毫秒,用户可能会感觉您的应用运行迟缓。[了解详情](https://developers.google.com/web/tools/lighthouse/audits/estimated-input-latency)。"
+  },
+  "lighthouse-core/audits/metrics/estimated-input-latency.js | title": {
+    "message": "输入延迟(估算值)"
+  },
+  "lighthouse-core/audits/metrics/first-contentful-paint.js | description": {
+    "message": "首次内容渲染时间标记了渲染出首个文本或首张图片的时间。[了解详情](https://developers.google.com/web/tools/lighthouse/audits/first-contentful-paint)。"
+  },
+  "lighthouse-core/audits/metrics/first-contentful-paint.js | title": {
+    "message": "首次内容绘制时间"
+  },
+  "lighthouse-core/audits/metrics/first-cpu-idle.js | description": {
+    "message": "首次 CPU 闲置时间标记了网页的主线程首次有空处理输入操作的时间。[了解详情](https://developers.google.com/web/tools/lighthouse/audits/first-interactive)。"
+  },
+  "lighthouse-core/audits/metrics/first-cpu-idle.js | title": {
+    "message": "首次 CPU 闲置时间"
+  },
+  "lighthouse-core/audits/metrics/first-meaningful-paint.js | description": {
+    "message": "首次有效渲染时间测量了网页主要内容开始对用户显示的时间。[了解详情](https://developers.google.com/web/tools/lighthouse/audits/first-meaningful-paint)。"
+  },
+  "lighthouse-core/audits/metrics/first-meaningful-paint.js | title": {
+    "message": "首次有效绘制时间"
+  },
+  "lighthouse-core/audits/metrics/interactive.js | description": {
+    "message": "可交互时间是指网页需要多长时间才能提供完整交互功能。[了解详情](https://developers.google.com/web/tools/lighthouse/audits/consistently-interactive)。"
+  },
+  "lighthouse-core/audits/metrics/interactive.js | title": {
+    "message": "可交互前的耗时"
+  },
+  "lighthouse-core/audits/metrics/max-potential-fid.js | description": {
+    "message": "您的用户可能会遇到的最长首次输入延迟是用时最长的任务的耗时(以毫秒为单位)。[了解详情](https://developers.google.com/web/updates/2018/05/first-input-delay)。"
+  },
+  "lighthouse-core/audits/metrics/max-potential-fid.js | title": {
+    "message": "首次输入延迟最长预估值"
+  },
+  "lighthouse-core/audits/metrics/speed-index.js | description": {
+    "message": "速度指数表明了网页内容的可见填充速度。[了解详情](https://developers.google.com/web/tools/lighthouse/audits/speed-index)。"
+  },
+  "lighthouse-core/audits/metrics/speed-index.js | title": {
+    "message": "速度指数"
+  },
+  "lighthouse-core/audits/metrics/total-blocking-time.js | description": {
+    "message": "当任务长度超过 50 毫秒时,首次内容渲染 (FCP) 和可交互时间之间的所有时间段的总和,以毫秒表示。"
+  },
+  "lighthouse-core/audits/metrics/total-blocking-time.js | title": {
+    "message": "总阻塞时间"
+  },
+  "lighthouse-core/audits/network-rtt.js | description": {
+    "message": "网络往返时间 (RTT) 对性能有很大的影响。如果与来源之间的 RTT 较长,则表明缩短服务器与用户之间的距离可能会提高性能。[了解详情](https://hpbn.co/primer-on-latency-and-bandwidth/)。"
+  },
+  "lighthouse-core/audits/network-rtt.js | title": {
+    "message": "网络往返时间"
+  },
+  "lighthouse-core/audits/network-server-latency.js | description": {
+    "message": "服务器延迟时间可能会对网站性能产生不良影响。如果源服务器的延迟时间较长,则表明服务器过载或后端性能较差。[了解详情](https://hpbn.co/primer-on-web-performance/#analyzing-the-resource-waterfall)。"
+  },
+  "lighthouse-core/audits/network-server-latency.js | title": {
+    "message": "服务器后端延迟"
+  },
+  "lighthouse-core/audits/offline-start-url.js | description": {
+    "message": "Service Worker 可让您的 Web 应用在无法预测的网络状况下正常运行。[了解详情](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)。"
+  },
+  "lighthouse-core/audits/offline-start-url.js | failureTitle": {
+    "message": "`start_url` 在离线时没有响应,并返回 200"
+  },
+  "lighthouse-core/audits/offline-start-url.js | title": {
+    "message": "`start_url` 在离线时也能成功做出响应,并返回 200"
+  },
+  "lighthouse-core/audits/offline-start-url.js | warningCantStart": {
+    "message": "Lighthouse 无法从清单读取 `start_url`。因此,系统已将 `start_url` 视为该文档的网址。错误消息:“{manifestWarning}”。"
+  },
+  "lighthouse-core/audits/performance-budget.js | columnOverBudget": {
+    "message": "超出预算"
+  },
+  "lighthouse-core/audits/performance-budget.js | description": {
+    "message": "请将网络请求的数量和数据大小保持在提供的性能预算所设定的目标之内。[了解详情](https://developers.google.com/web/tools/lighthouse/audits/budgets)。"
+  },
+  "lighthouse-core/audits/performance-budget.js | requestCountOverBudget": {
+    "message": "{count,plural, =1{1 条请求}other{# 条请求}}"
+  },
+  "lighthouse-core/audits/performance-budget.js | title": {
+    "message": "性能预算"
+  },
+  "lighthouse-core/audits/redirects-http.js | description": {
+    "message": "如果您已设置 HTTPS,请确保将所有 HTTP 流量重定向到 HTTPS,以便让所有用户都能使用安全的网络功能。[了解详情](https://developers.google.com/web/tools/lighthouse/audits/http-redirects-to-https)。"
+  },
+  "lighthouse-core/audits/redirects-http.js | failureTitle": {
+    "message": "未将 HTTP 流量重定向到 HTTPS"
+  },
+  "lighthouse-core/audits/redirects-http.js | title": {
+    "message": "将 HTTP 流量重定向到 HTTPS"
+  },
+  "lighthouse-core/audits/redirects.js | description": {
+    "message": "重定向会在网页可加载前引入更多延迟。[了解详情](https://developers.google.com/web/tools/lighthouse/audits/redirects)。"
+  },
+  "lighthouse-core/audits/redirects.js | title": {
+    "message": "避免多次网页重定向"
+  },
+  "lighthouse-core/audits/resource-summary.js | description": {
+    "message": "若要设置页面资源数量和大小的预算,请添加 budget.json 文件。[了解详情](https://developers.google.com/web/tools/lighthouse/audits/budgets)。"
+  },
+  "lighthouse-core/audits/resource-summary.js | displayValue": {
+    "message": "{requestCount,plural, =1{1 项请求 • {byteCount, number, bytes} KB}other{# 项请求 • {byteCount, number, bytes} KB}}"
+  },
+  "lighthouse-core/audits/resource-summary.js | title": {
+    "message": "请保持较低的请求数量和较小的传输大小"
+  },
+  "lighthouse-core/audits/seo/canonical.js | description": {
+    "message": "规范链接用于建议应在搜索结果中显示哪个网址。[了解详情](https://web.dev/canonical)。"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationConflict": {
+    "message": "存在多个相互冲突的网址({urlList})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationDifferentDomain": {
+    "message": "指向不同的域名 ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationInvalid": {
+    "message": "网址无效 ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationPointsElsewhere": {
+    "message": "指向了其他 `hreflang` 位置 ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationRelative": {
+    "message": "相对网址 ({url})"
+  },
+  "lighthouse-core/audits/seo/canonical.js | explanationRoot": {
+    "message": "指向了网域的根网址(首页),而非等效内容页面"
+  },
+  "lighthouse-core/audits/seo/canonical.js | failureTitle": {
+    "message": "文档缺少有效的 `rel=canonical`"
+  },
+  "lighthouse-core/audits/seo/canonical.js | title": {
+    "message": "文档的 `rel=canonical` 有效"
+  },
+  "lighthouse-core/audits/seo/font-size.js | description": {
+    "message": "12px 以下的字体过小,会导致用户无法辨认;此外,这样的字体需要移动设备访问者“张合双指进行缩放”才能阅读。请尽量让 60% 以上的页面文字不小于 12px。[了解详情](https://web.dev/font-size)。"
+  },
+  "lighthouse-core/audits/seo/font-size.js | displayValue": {
+    "message": "{decimalProportion, number, extendedPercent} 清晰可辨的文字"
+  },
+  "lighthouse-core/audits/seo/font-size.js | explanationViewport": {
+    "message": "无法辨认文字,因为缺少已针对移动设备屏幕进行优化的 viewport meta 标记。"
+  },
+  "lighthouse-core/audits/seo/font-size.js | explanationWithDisclaimer": {
+    "message": "{decimalProportion, number, extendedPercent} 的文字过小(基于规模为 {decimalProportionVisited, number, extendedPercent} 的样本)。"
+  },
+  "lighthouse-core/audits/seo/font-size.js | failureTitle": {
+    "message": "文档未使用清晰可辨的字体大小"
+  },
+  "lighthouse-core/audits/seo/font-size.js | title": {
+    "message": "文档所用的字体大小清晰可辨"
+  },
+  "lighthouse-core/audits/seo/hreflang.js | description": {
+    "message": "hreflang 链接用于告知搜索引擎应在特定语言或地区的搜索结果中显示哪种版本的网页。[了解详情](https://web.dev/hreflang)。"
+  },
+  "lighthouse-core/audits/seo/hreflang.js | failureTitle": {
+    "message": "文档的 `hreflang` 无效"
+  },
+  "lighthouse-core/audits/seo/hreflang.js | title": {
+    "message": "文档的 `hreflang` 有效"
+  },
+  "lighthouse-core/audits/seo/http-status-code.js | description": {
+    "message": "返回无效 HTTP 状态代码的页面可能无法被正确编入索引。[了解详情](https://web.dev/http-status-code)。"
+  },
+  "lighthouse-core/audits/seo/http-status-code.js | failureTitle": {
+    "message": "页面返回了无效的 HTTP 状态代码"
+  },
+  "lighthouse-core/audits/seo/http-status-code.js | title": {
+    "message": "页面返回了有效的 HTTP 状态代码"
+  },
+  "lighthouse-core/audits/seo/is-crawlable.js | description": {
+    "message": "如果搜索引擎无权抓取您的网页,则无法将它们添加到搜索结果中。[了解详情](https://web.dev/is-crawable)。"
+  },
+  "lighthouse-core/audits/seo/is-crawlable.js | failureTitle": {
+    "message": "页面已被屏蔽,无法编入索引"
+  },
+  "lighthouse-core/audits/seo/is-crawlable.js | title": {
+    "message": "页面未被屏蔽,可编入索引"
+  },
+  "lighthouse-core/audits/seo/link-text.js | description": {
+    "message": "描述性链接文字有助于搜索引擎理解您的内容。[了解详情](https://web.dev/link-text)。"
+  },
+  "lighthouse-core/audits/seo/link-text.js | displayValue": {
+    "message": "{itemCount,plural, =1{找到了 1 个链接}other{找到了 # 个链接}}"
+  },
+  "lighthouse-core/audits/seo/link-text.js | failureTitle": {
+    "message": "链接缺少描述性文字"
+  },
+  "lighthouse-core/audits/seo/link-text.js | title": {
+    "message": "链接有描述性文字"
+  },
+  "lighthouse-core/audits/seo/manual/structured-data.js | description": {
+    "message": "运行[结构化数据测试工具](https://search.google.com/structured-data/testing-tool/) 和 [Structured Data Linter](http://linter.structured-data.org/) 可验证结构化数据。[了解详情](https://web.dev/structured-data)。"
+  },
+  "lighthouse-core/audits/seo/manual/structured-data.js | title": {
+    "message": "结构化数据有效"
+  },
+  "lighthouse-core/audits/seo/meta-description.js | description": {
+    "message": "元描述可能会被包含在搜索结果中,以简要概括网页内容。[了解详情](https://web.dev/meta-description)。"
+  },
+  "lighthouse-core/audits/seo/meta-description.js | explanation": {
+    "message": "描述性文字为空。"
+  },
+  "lighthouse-core/audits/seo/meta-description.js | failureTitle": {
+    "message": "文档缺少 meta 描述"
+  },
+  "lighthouse-core/audits/seo/meta-description.js | title": {
+    "message": "文档有 meta 描述"
+  },
+  "lighthouse-core/audits/seo/plugins.js | description": {
+    "message": "搜索引擎无法将插件内容编入索引,而且许多设备都限制或不支持使用插件。[了解详情](https://web.dev/plugins)。"
+  },
+  "lighthouse-core/audits/seo/plugins.js | failureTitle": {
+    "message": "文档使用了插件"
+  },
+  "lighthouse-core/audits/seo/plugins.js | title": {
+    "message": "文档中没有插件"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | description": {
+    "message": "如果 robots.txt 文件的格式不正确,抓取工具可能无法理解您希望以何种方式抓取网站内容或将其编入索引。[了解详情](https://web.dev/robots-txt)。"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | displayValueHttpBadCode": {
+    "message": "对 robots.txt 的请求返回了 HTTP 状态代码:{statusCode}"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | displayValueValidationError": {
+    "message": "{itemCount,plural, =1{发现了 1 处错误}other{发现了 # 处错误}}"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | explanation": {
+    "message": "Lighthouse 无法下载 robots.txt 文件"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | failureTitle": {
+    "message": "robots.txt 无效"
+  },
+  "lighthouse-core/audits/seo/robots-txt.js | title": {
+    "message": "robots.txt 有效"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | description": {
+    "message": "交互式元素(例如按钮和链接)应足够大 (48x48px),且其周围应有足够的空间,以便用户轻松点按且避免遮挡其他元素。[了解详情](https://web.dev/tap-targets)。"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | displayValue": {
+    "message": "{decimalProportion, number, percent} 的点按目标大小合适"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | explanationViewportMetaNotOptimized": {
+    "message": "点按目标过小,因为缺少已针对移动设备屏幕进行优化的 viewport meta 标记"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | failureTitle": {
+    "message": "点按目标的大小不合适"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | overlappingTargetHeader": {
+    "message": "点按目标重叠"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | tapTargetHeader": {
+    "message": "点按目标"
+  },
+  "lighthouse-core/audits/seo/tap-targets.js | title": {
+    "message": "点按目标的大小合适"
+  },
+  "lighthouse-core/audits/service-worker.js | description": {
+    "message": "Service Worker 是一项技术,可让您的应用使用很多渐进式 Web 应用功能,例如离线、添加到主屏幕和推送通知。[了解详情](https://developers.google.com/web/tools/lighthouse/audits/registered-service-worker)。"
+  },
+  "lighthouse-core/audits/service-worker.js | explanationBadManifest": {
+    "message": "此网页由 Service Worker 控制,但由于清单未能解析为有效的 JSON,因此未找到 `start_url`"
+  },
+  "lighthouse-core/audits/service-worker.js | explanationBadStartUrl": {
+    "message": "此网页由 Service Worker 控制,但 `start_url` ({startUrl}) 不在 Service Worker 的控制范围内 ({scopeUrl})"
+  },
+  "lighthouse-core/audits/service-worker.js | explanationNoManifest": {
+    "message": "此网页由 Service Worker 控制,但由于未提取任何清单,因此未找到 `start_url`。"
+  },
+  "lighthouse-core/audits/service-worker.js | explanationOutOfScope": {
+    "message": "此来源有一个或多个 Service Worker,但网页 ({pageUrl}) 不在控制范围内。"
+  },
+  "lighthouse-core/audits/service-worker.js | failureTitle": {
+    "message": "无法注册用于控制网页和 `start_url` 的 Service Worker"
+  },
+  "lighthouse-core/audits/service-worker.js | title": {
+    "message": "注册用于控制网页和 `start_url` 的 Service Worker"
+  },
+  "lighthouse-core/audits/splash-screen.js | description": {
+    "message": "选定主题的启动画面可确保用户在从主屏幕中启动您应用时获得优质体验。[了解详情](https://developers.google.com/web/tools/lighthouse/audits/custom-splash-screen)。"
+  },
+  "lighthouse-core/audits/splash-screen.js | failureTitle": {
+    "message": "未针对自定义启动画面进行配置"
+  },
+  "lighthouse-core/audits/splash-screen.js | title": {
+    "message": "已针对自定义启动画面进行配置"
+  },
+  "lighthouse-core/audits/themed-omnibox.js | description": {
+    "message": "可以为浏览器地址栏设置与您的网站相契合的主题背景。[了解详情](https://developers.google.com/web/tools/lighthouse/audits/address-bar)。"
+  },
+  "lighthouse-core/audits/themed-omnibox.js | failureTitle": {
+    "message": "没有为地址栏设置主题背景颜色。"
+  },
+  "lighthouse-core/audits/themed-omnibox.js | title": {
+    "message": "为地址栏设置主题背景颜色。"
+  },
+  "lighthouse-core/audits/third-party-summary.js | columnBlockingTime": {
+    "message": "主线程拦截时间"
+  },
+  "lighthouse-core/audits/third-party-summary.js | columnThirdParty": {
+    "message": "第三方"
+  },
+  "lighthouse-core/audits/third-party-summary.js | description": {
+    "message": "第三方代码可能会显著影响加载性能。请限制冗余第三方提供商的数量,并尝试在页面完成主要加载后再加载第三方代码。[了解详情](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/loading-third-party-javascript/)。"
+  },
+  "lighthouse-core/audits/third-party-summary.js | displayValue": {
+    "message": "第三方代码将主线程阻止了 {timeInMs, number, milliseconds} 毫秒"
+  },
+  "lighthouse-core/audits/third-party-summary.js | failureTitle": {
+    "message": "降低第三方代码的影响"
+  },
+  "lighthouse-core/audits/third-party-summary.js | title": {
+    "message": "第三方使用"
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | description": {
+    "message": "首字节显示前的耗时表明了服务器发出响应的时间。[了解详情](https://developers.google.com/web/tools/lighthouse/audits/ttfb)。"
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | displayValue": {
+    "message": "根文档花费了 {timeInMs, number, milliseconds} 毫秒"
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | failureTitle": {
+    "message": "缩短服务器响应用时 (TTFB)"
+  },
+  "lighthouse-core/audits/time-to-first-byte.js | title": {
+    "message": "服务器响应用时较短 (TTFB)"
+  },
+  "lighthouse-core/audits/user-timings.js | columnDuration": {
+    "message": "时长"
+  },
+  "lighthouse-core/audits/user-timings.js | columnStartTime": {
+    "message": "开始时间"
+  },
+  "lighthouse-core/audits/user-timings.js | columnType": {
+    "message": "类型"
+  },
+  "lighthouse-core/audits/user-timings.js | description": {
+    "message": "建议使用 User Timing API 检测您的应用,从而衡量应用在关键用户体验中的实际性能。[了解详情](https://developers.google.com/web/tools/lighthouse/audits/user-timing)。"
+  },
+  "lighthouse-core/audits/user-timings.js | displayValue": {
+    "message": "{itemCount,plural, =1{1 项 User Timing 结果}other{# 项 User Timing 结果}}"
+  },
+  "lighthouse-core/audits/user-timings.js | title": {
+    "message": "User Timing 标记和测量结果"
+  },
+  "lighthouse-core/audits/uses-rel-preconnect.js | crossoriginWarning": {
+    "message": "发现了“{securityOrigin}”的预连接 <link>,但浏览器未使用该连接。请检查并确保您正确地使用了 `crossorigin` 属性。"
+  },
+  "lighthouse-core/audits/uses-rel-preconnect.js | description": {
+    "message": "建议添加 `preconnect` 或 `dns-prefetch` 资源提示,以尽早与重要的第三方来源建立连接。[了解详情](https://developers.google.com/web/fundamentals/performance/resource-prioritization#preconnect)。"
+  },
+  "lighthouse-core/audits/uses-rel-preconnect.js | title": {
+    "message": "预先连接到必要的来源"
+  },
+  "lighthouse-core/audits/uses-rel-preload.js | crossoriginWarning": {
+    "message": "发现了“{preloadURL}”的预加载 <link>,但浏览器未使用该链接。请检查并确保您正确地使用了 `crossorigin` 属性。"
+  },
+  "lighthouse-core/audits/uses-rel-preload.js | description": {
+    "message": "建议使用 `<link rel=preload>` 来优先提取当前在网页加载后期请求的资源。[了解详情](https://developers.google.com/web/tools/lighthouse/audits/preload)。"
+  },
+  "lighthouse-core/audits/uses-rel-preload.js | title": {
+    "message": "预加载关键请求"
+  },
+  "lighthouse-core/audits/viewport.js | description": {
+    "message": "添加 `<meta name=\"viewport\">` 标记以针对移动设备屏幕优化您的应用。[了解详情](https://developers.google.com/web/tools/lighthouse/audits/has-viewport-meta-tag)。"
+  },
+  "lighthouse-core/audits/viewport.js | explanationNoTag": {
+    "message": "未找到任何 `<meta name=\"viewport\">` 标记"
+  },
+  "lighthouse-core/audits/viewport.js | failureTitle": {
+    "message": "没有包含 `width` 或 `initial-scale` 的 `<meta name=\"viewport\">` 标记"
+  },
+  "lighthouse-core/audits/viewport.js | title": {
+    "message": "具有包含 `width` 或 `initial-scale` 的 `<meta name=\"viewport\">` 标记"
+  },
+  "lighthouse-core/audits/without-javascript.js | description": {
+    "message": "您的应用应该在 JavaScript 被禁用时显示一些内容,哪怕只是向用户显示一则警告(告知其必须启用 JavaScript 才能使用该应用)。[了解详情](https://developers.google.com/web/tools/lighthouse/audits/no-js)。"
+  },
+  "lighthouse-core/audits/without-javascript.js | explanation": {
+    "message": "网页正文应该能在其脚本不可用时呈现一些内容。"
+  },
+  "lighthouse-core/audits/without-javascript.js | failureTitle": {
+    "message": "不提供在 JavaScript 未启用时显示的后备内容"
+  },
+  "lighthouse-core/audits/without-javascript.js | title": {
+    "message": "包含一些 JavaScript 未启用时显示的内容"
+  },
+  "lighthouse-core/audits/works-offline.js | description": {
+    "message": "如果您想构建渐进式 Web 应用,不妨考虑使用 Service Worker,以确保您的应用可离线工作。[了解详情](https://developers.google.com/web/tools/lighthouse/audits/http-200-when-offline)。"
+  },
+  "lighthouse-core/audits/works-offline.js | failureTitle": {
+    "message": "当前网页在离线时没有响应,并返回 200"
+  },
+  "lighthouse-core/audits/works-offline.js | title": {
+    "message": "当前网页即使在离线时也能成功做出响应,并返回 200"
+  },
+  "lighthouse-core/audits/works-offline.js | warningNoLoad": {
+    "message": "由于您的测试网址 ({requested}) 已重定向到“{final}”,因此该网页可能无法离线加载。请尝试直接测试另一个网址。"
+  },
+  "lighthouse-core/config/default-config.js | a11yAriaGroupDescription": {
+    "message": "这些提示旨在帮助改进 ARIA 在您的应用内的使用情况,从而改善辅助技术(例如屏幕阅读器)用户的体验。"
+  },
+  "lighthouse-core/config/default-config.js | a11yAriaGroupTitle": {
+    "message": "ARIA"
+  },
+  "lighthouse-core/config/default-config.js | a11yAudioVideoGroupDescription": {
+    "message": "这提示旨在为音频和视频提供替代内容。这或许能改善听障用户或视障用户的体验。"
+  },
+  "lighthouse-core/config/default-config.js | a11yAudioVideoGroupTitle": {
+    "message": "音频和视频"
+  },
+  "lighthouse-core/config/default-config.js | a11yBestPracticesGroupDescription": {
+    "message": "这些条目突出显示了常见的无障碍功能最佳做法。"
+  },
+  "lighthouse-core/config/default-config.js | a11yBestPracticesGroupTitle": {
+    "message": "最佳做法"
+  },
+  "lighthouse-core/config/default-config.js | a11yCategoryDescription": {
+    "message": "这些检查会突出显示可[改进您网络应用的无障碍功能](https://developers.google.com/web/fundamentals/accessibility)的提示。系统只能自动检测到一小部分无障碍功能问题,因此您最好也手动测试一下。"
+  },
+  "lighthouse-core/config/default-config.js | a11yCategoryManualDescription": {
+    "message": "这些条目旨在检查自动化测试工具未涵盖的方面。如需了解详情,请参阅有关如何[执行无障碍功能审查](https://developers.google.com/web/fundamentals/accessibility/how-to-review)的指南。"
+  },
+  "lighthouse-core/config/default-config.js | a11yCategoryTitle": {
+    "message": "无障碍"
+  },
+  "lighthouse-core/config/default-config.js | a11yColorContrastGroupDescription": {
+    "message": "这些提示旨在帮助改进您的内容的易读性。"
+  },
+  "lighthouse-core/config/default-config.js | a11yColorContrastGroupTitle": {
+    "message": "对比度"
+  },
+  "lighthouse-core/config/default-config.js | a11yLanguageGroupDescription": {
+    "message": "这些提示旨在让不同语言区域中的用户能够更好地解读您的内容。"
+  },
+  "lighthouse-core/config/default-config.js | a11yLanguageGroupTitle": {
+    "message": "国际化和本地化"
+  },
+  "lighthouse-core/config/default-config.js | a11yNamesLabelsGroupDescription": {
+    "message": "这些提示旨在帮助改进您的应用内控件的语义。这可以改善辅助技术(例如屏幕阅读器)用户的体验。"
+  },
+  "lighthouse-core/config/default-config.js | a11yNamesLabelsGroupTitle": {
+    "message": "名称和标签"
+  },
+  "lighthouse-core/config/default-config.js | a11yNavigationGroupDescription": {
+    "message": "这些提示旨在改进您应用中的键盘导航。"
+  },
+  "lighthouse-core/config/default-config.js | a11yNavigationGroupTitle": {
+    "message": "导航"
+  },
+  "lighthouse-core/config/default-config.js | a11yTablesListsVideoGroupDescription": {
+    "message": "这些提示旨在改善使用辅助技术(例如屏幕阅读器)查看表格数据或列表数据的体验。"
+  },
+  "lighthouse-core/config/default-config.js | a11yTablesListsVideoGroupTitle": {
+    "message": "表格和列表"
+  },
+  "lighthouse-core/config/default-config.js | bestPracticesCategoryTitle": {
+    "message": "最佳做法"
+  },
+  "lighthouse-core/config/default-config.js | budgetsGroupDescription": {
+    "message": "性能预算为您的网站的性能设置了标准。"
+  },
+  "lighthouse-core/config/default-config.js | budgetsGroupTitle": {
+    "message": "预算"
+  },
+  "lighthouse-core/config/default-config.js | diagnosticsGroupDescription": {
+    "message": "详细了解您的应用的性能。这些数字不会[直接影响](https://github.com/GoogleChrome/lighthouse/blob/d2ec9ffbb21de9ad1a0f86ed24575eda32c796f0/docs/scoring.md#how-are-the-scores-weighted)性能得分。"
+  },
+  "lighthouse-core/config/default-config.js | diagnosticsGroupTitle": {
+    "message": "诊断结果"
+  },
+  "lighthouse-core/config/default-config.js | firstPaintImprovementsGroupDescription": {
+    "message": "像素在屏幕上的呈现速度是性能的最重要方面。关键指标:首次内容绘制时间、首次有效绘制时间"
+  },
+  "lighthouse-core/config/default-config.js | firstPaintImprovementsGroupTitle": {
+    "message": "改进首次绘制"
+  },
+  "lighthouse-core/config/default-config.js | loadOpportunitiesGroupDescription": {
+    "message": "这些建议可以帮助您提高网页加载速度。它们不会[直接影响](https://github.com/GoogleChrome/lighthouse/blob/d2ec9ffbb21de9ad1a0f86ed24575eda32c796f0/docs/scoring.md#how-are-the-scores-weighted)性能得分。"
+  },
+  "lighthouse-core/config/default-config.js | loadOpportunitiesGroupTitle": {
+    "message": "优化建议"
+  },
+  "lighthouse-core/config/default-config.js | metricGroupTitle": {
+    "message": "指标"
+  },
+  "lighthouse-core/config/default-config.js | overallImprovementsGroupDescription": {
+    "message": "改善整体的加载体验,使该网页响应迅速且可尽快投入使用。关键指标:可交互前的耗时、速度指数"
+  },
+  "lighthouse-core/config/default-config.js | overallImprovementsGroupTitle": {
+    "message": "整体改进"
+  },
+  "lighthouse-core/config/default-config.js | performanceCategoryTitle": {
+    "message": "性能"
+  },
+  "lighthouse-core/config/default-config.js | pwaCategoryDescription": {
+    "message": "此类检查会验证渐进式 Web 应用的各个方面。[了解详情](https://developers.google.com/web/progressive-web-apps/checklist)。"
+  },
+  "lighthouse-core/config/default-config.js | pwaCategoryManualDescription": {
+    "message": "基准 [PWA 核对清单](https://developers.google.com/web/progressive-web-apps/checklist)要求必须进行此类检查,但 Lighthouse 不会自动进行此类检查。它们不会影响您的得分,但您必须手动对其进行验证。"
+  },
+  "lighthouse-core/config/default-config.js | pwaCategoryTitle": {
+    "message": "渐进式 Web 应用"
+  },
+  "lighthouse-core/config/default-config.js | pwaFastReliableGroupTitle": {
+    "message": "快速且可靠"
+  },
+  "lighthouse-core/config/default-config.js | pwaInstallableGroupTitle": {
+    "message": "可安装"
+  },
+  "lighthouse-core/config/default-config.js | pwaOptimizedGroupTitle": {
+    "message": "优化 PWA"
+  },
+  "lighthouse-core/config/default-config.js | seoCategoryDescription": {
+    "message": "这些检查可确保您的页面已经过优化,有利于其在搜索引擎结果中的排名。不在 Lighthouse 检查范围内的其他因素可能会影响您的搜索排名。[了解详情](https://support.google.com/webmasters/answer/35769)。"
+  },
+  "lighthouse-core/config/default-config.js | seoCategoryManualDescription": {
+    "message": "请在您的网站上运行这些额外的验证程序,以检查其他 SEO 最佳做法。"
+  },
+  "lighthouse-core/config/default-config.js | seoCategoryTitle": {
+    "message": "SEO"
+  },
+  "lighthouse-core/config/default-config.js | seoContentGroupDescription": {
+    "message": "请确保您的 HTML 格式正确,以便抓取工具更好地了解您的应用的内容。"
+  },
+  "lighthouse-core/config/default-config.js | seoContentGroupTitle": {
+    "message": "内容最佳做法"
+  },
+  "lighthouse-core/config/default-config.js | seoCrawlingGroupDescription": {
+    "message": "若想让您的应用显示在搜索结果中,您需要先授权抓取工具访问该应用。"
+  },
+  "lighthouse-core/config/default-config.js | seoCrawlingGroupTitle": {
+    "message": "抓取和编入索引"
+  },
+  "lighthouse-core/config/default-config.js | seoMobileGroupDescription": {
+    "message": "请确保您的网页适合移动设备,以便用户无需进行缩放即可轻松阅读内容页面。[了解详情](https://developers.google.com/search/mobile-sites/)。"
+  },
+  "lighthouse-core/config/default-config.js | seoMobileGroupTitle": {
+    "message": "适合移动设备"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnCacheTTL": {
+    "message": "缓存 TTL"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnLocation": {
+    "message": "位置"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnName": {
+    "message": "名称"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnRequests": {
+    "message": "请求"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnResourceType": {
+    "message": "资源类型"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnSize": {
+    "message": "大小"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnTimeSpent": {
+    "message": "花费的时间"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnTransferSize": {
+    "message": "传输文件大小"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnURL": {
+    "message": "网址"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnWastedBytes": {
+    "message": "可能达到的节省程度"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | columnWastedMs": {
+    "message": "可能达到的节省程度"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | displayValueByteSavings": {
+    "message": "有望节省 {wastedBytes, number, bytes} KB"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | displayValueMsSavings": {
+    "message": "有望节省 {wastedMs, number, milliseconds} 毫秒"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | documentResourceType": {
+    "message": "文档"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | fontResourceType": {
+    "message": "字体"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | imageResourceType": {
+    "message": "图片"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | mediaResourceType": {
+    "message": "媒体"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | ms": {
+    "message": "{timeInMs, number, milliseconds} 毫秒"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | otherResourceType": {
+    "message": "其他"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | scriptResourceType": {
+    "message": "脚本"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | seconds": {
+    "message": "{timeInMs, number, seconds} 秒"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | stylesheetResourceType": {
+    "message": "样式表"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | thirdPartyResourceType": {
+    "message": "第三方"
+  },
+  "lighthouse-core/lib/i18n/i18n.js | totalResourceType": {
+    "message": "总计"
+  },
+  "lighthouse-core/lib/lh-error.js | badTraceRecording": {
+    "message": "在您加载的网页上录制跟踪记录时发生了错误。请重新运行 Lighthouse。({errorCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | criTimeout": {
+    "message": "等待调试程序协议初次连接时超时。"
+  },
+  "lighthouse-core/lib/lh-error.js | didntCollectScreenshots": {
+    "message": "Chrome 在网页加载期间未收集任何屏幕截图。请确保网页上有可见的内容,然后尝试重新运行 Lighthouse。({errorCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | dnsFailure": {
+    "message": "DNS 服务器无法解析所提供的网域。"
+  },
+  "lighthouse-core/lib/lh-error.js | erroredRequiredArtifact": {
+    "message": "必需的 {artifactName} 收集器出现错误:{errorMessage}"
+  },
+  "lighthouse-core/lib/lh-error.js | internalChromeError": {
+    "message": "发生了内部 Chrome 错误。请重新启动 Chrome,然后尝试重新运行 Lighthouse。"
+  },
+  "lighthouse-core/lib/lh-error.js | missingRequiredArtifact": {
+    "message": "必需的 {artifactName} 收集器未运行。"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailed": {
+    "message": "Lighthouse 无法可靠地加载您请求的页面。请确保您测试的网址正确无误并且服务器可正确响应所有请求。"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedHung": {
+    "message": "Lighthouse 无法可靠地加载您请求的网址,因为页面已停止响应。"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedInsecure": {
+    "message": "您提供的网址缺少有效的安全证书。{securityMessages}"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedInterstitial": {
+    "message": "Chrome 阻止了带有插页式广告的网页加载。请确保您测试的网址正确无误并且服务器可正确响应所有请求。"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedWithDetails": {
+    "message": "Lighthouse 无法可靠地加载您请求的页面。请确保您测试的网址正确无误并且服务器可正确响应所有请求。(详细信息:{errorDetails})"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadFailedWithStatusCode": {
+    "message": "Lighthouse 无法可靠地加载您请求的页面。请确保您测试的网址正确无误并且服务器可正确响应所有请求。(状态代码:{statusCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | pageLoadTookTooLong": {
+    "message": "您的网页加载时间过长。请按照报告中给出的提示缩短网页加载时间,然后尝试重新运行 Lighthouse。({errorCode})"
+  },
+  "lighthouse-core/lib/lh-error.js | protocolTimeout": {
+    "message": "等待 DevTools 协议响应的用时超出了分配的时间。(方法:{protocolMethod})"
+  },
+  "lighthouse-core/lib/lh-error.js | requestContentTimeout": {
+    "message": "提取资源内容的用时超出了分配的时间"
+  },
+  "lighthouse-core/lib/lh-error.js | urlInvalid": {
+    "message": "您提供的网址似乎无效。"
+  },
+  "lighthouse-core/report/html/renderer/util.js | auditGroupExpandTooltip": {
+    "message": "显示审核结果"
+  },
+  "lighthouse-core/report/html/renderer/util.js | crcInitialNavigation": {
+    "message": "初始导航"
+  },
+  "lighthouse-core/report/html/renderer/util.js | crcLongestDurationLabel": {
+    "message": "关键路径延迟时间上限:"
+  },
+  "lighthouse-core/report/html/renderer/util.js | errorLabel": {
+    "message": "出错了!"
+  },
+  "lighthouse-core/report/html/renderer/util.js | errorMissingAuditInfo": {
+    "message": "报告错误:没有任何审核信息"
+  },
+  "lighthouse-core/report/html/renderer/util.js | labDataTitle": {
+    "message": "实验室数据"
+  },
+  "lighthouse-core/report/html/renderer/util.js | lsPerformanceCategoryDescription": {
+    "message": "[Lighthouse](https://developers.google.com/web/tools/lighthouse/) 使用模拟的移动网络对当前页面进行的分析。这些值都是估算值,且可能会因时而异。"
+  },
+  "lighthouse-core/report/html/renderer/util.js | manualAuditsGroupTitle": {
+    "message": "待手动检查的其他项"
+  },
+  "lighthouse-core/report/html/renderer/util.js | notApplicableAuditsGroupTitle": {
+    "message": "不适用"
+  },
+  "lighthouse-core/report/html/renderer/util.js | opportunityResourceColumnLabel": {
+    "message": "优化建议"
+  },
+  "lighthouse-core/report/html/renderer/util.js | opportunitySavingsColumnLabel": {
+    "message": "有望节省的总时间(估算值)"
+  },
+  "lighthouse-core/report/html/renderer/util.js | passedAuditsGroupTitle": {
+    "message": "已通过的审核"
+  },
+  "lighthouse-core/report/html/renderer/util.js | snippetCollapseButtonLabel": {
+    "message": "收起代码段"
+  },
+  "lighthouse-core/report/html/renderer/util.js | snippetExpandButtonLabel": {
+    "message": "展开代码段"
+  },
+  "lighthouse-core/report/html/renderer/util.js | thirdPartyResourcesLabel": {
+    "message": "显示第三方资源"
+  },
+  "lighthouse-core/report/html/renderer/util.js | toplevelWarningsMessage": {
+    "message": "此次 Lighthouse 运行并不顺利,原因如下:"
+  },
+  "lighthouse-core/report/html/renderer/util.js | varianceDisclaimer": {
+    "message": "这些值都是估算值,且可能会因时而异。性能得分[仅基于这些指标](https://github.com/GoogleChrome/lighthouse/blob/d2ec9ffbb21de9ad1a0f86ed24575eda32c796f0/docs/scoring.md#how-are-the-scores-weighted)。"
+  },
+  "lighthouse-core/report/html/renderer/util.js | warningAuditsGroupTitle": {
+    "message": "已顺利通过审核,但有警告消息"
+  },
+  "lighthouse-core/report/html/renderer/util.js | warningHeader": {
+    "message": "警告: "
+  },
+  "stack-packs/packs/wordpress.js | efficient_animated_content": {
+    "message": "建议您将 GIF 上传到可让其作为 HTML5 视频嵌入的服务。"
+  },
+  "stack-packs/packs/wordpress.js | offscreen_images": {
+    "message": "安装[延迟加载 WordPress 插件](https://wordpress.org/plugins/search/lazy+load/)以便能够推迟加载所有的屏幕外图片,或者改用可提供该功能的主题背景。另外,建议您使用 [AMP 插件](https://wordpress.org/plugins/amp/)。"
+  },
+  "stack-packs/packs/wordpress.js | render_blocking_resources": {
+    "message": "有很多 WordPress 插件可帮助您[内嵌重要资源](https://wordpress.org/plugins/search/critical+css/)或[推迟加载不太重要的资源](https://wordpress.org/plugins/search/defer+css+javascript/)。请注意,这些插件提供的优化可能会导致您的主题背景或插件的功能中断,因此您可能需要更改代码。"
+  },
+  "stack-packs/packs/wordpress.js | time_to_first_byte": {
+    "message": "主题背景、插件和服务器规范都会影响服务器响应用时。建议您查找更优化的主题背景、仔细选择所需的优化插件并/或升级您的服务器。"
+  },
+  "stack-packs/packs/wordpress.js | total_byte_weight": {
+    "message": "建议您在博文列表中显示摘录(例如,通过“更多”标签)、减少给定页面上显示的博文的数量、将您的长博文拆分成多个页面或者使用插件延迟加载评论。"
+  },
+  "stack-packs/packs/wordpress.js | unminified_css": {
+    "message": "很多 [WordPress 插件](https://wordpress.org/plugins/search/minify+css/)都可通过连接、削减和压缩您的样式来加快您网站的加载速度。另外,您最好使用编译流程预先执行此缩减操作(如果可能的话)。"
+  },
+  "stack-packs/packs/wordpress.js | unminified_javascript": {
+    "message": "很多 [WordPress 插件](https://wordpress.org/plugins/search/minify+javascript/)都可通过连接、削减和压缩您的脚本来加快您网站的加载速度。另外,您最好使用编译流程预先执行此缩减操作(如果可能的话)。"
+  },
+  "stack-packs/packs/wordpress.js | unused_css_rules": {
+    "message": "建议您减少或改变会在您网页中加载未使用的 CSS 的 [WordPress 插件](https://wordpress.org/plugins/)的数量。若想找出会添加无关 CSS 的插件,请尝试在 Chrome DevTools 中运行[代码覆盖率](https://developers.google.com/web/updates/2017/04/devtools-release-notes#coverage)测试。您可根据样式表网址找出导致问题的主题背景/插件。请留意在列表中包含多个以大量红色显示代码覆盖率的样式表的插件。插件应该只将网页中确实用到的样式表加入队列。"
+  },
+  "stack-packs/packs/wordpress.js | unused_javascript": {
+    "message": "建议您减少或改变会在您网页中加载未使用的 JavaScript 的 [WordPress 插件](https://wordpress.org/plugins/)的数量。若想找出会添加无关 JS 的插件,请尝试在 Chrome DevTools 中运行[代码覆盖率](https://developers.google.com/web/updates/2017/04/devtools-release-notes#coverage)测试。您可根据脚本网址找出导致问题的主题背景/插件。请留意在列表中包含多个以大量红色显示代码覆盖率的脚本的插件。插件应只将网页中确实用到的脚本加入队列。"
+  },
+  "stack-packs/packs/wordpress.js | uses_long_cache_ttl": {
+    "message": "了解 [WordPress 中的浏览器缓存](https://codex.wordpress.org/WordPress_Optimization#Browser_Caching)。"
+  },
+  "stack-packs/packs/wordpress.js | uses_optimized_images": {
+    "message": "建议您使用[图片优化 WordPress 插件](https://wordpress.org/plugins/search/optimize+images/),以在不影响图片质量的前提下压缩图片大小。"
+  },
+  "stack-packs/packs/wordpress.js | uses_responsive_images": {
+    "message": "直接通过[媒体库](https://codex.wordpress.org/Media_Library_Screen)上传图片,以确保能够按要求的尺寸提供图片,然后从媒体库插入图片,或使用图片微件来确保采用最佳的图片尺寸(包括适用于自适应断点的尺寸)。避免使用 `Full Size` 图片,除非有足够的可用空间。[了解详情](https://codex.wordpress.org/Inserting_Images_into_Posts_and_Pages#Image_Size)。"
+  },
+  "stack-packs/packs/wordpress.js | uses_text_compression": {
+    "message": "您可以在网络服务器配置中启用文本压缩。"
+  },
+  "stack-packs/packs/wordpress.js | uses_webp_images": {
+    "message": "建议您使用可自动将您上传的图片转换为最佳格式的[插件](https://wordpress.org/plugins/search/convert+webp/)或服务。"
+  }
+}
diff --git a/third_party/blink/renderer/devtools/front_end/emulation/emulation_strings.grdp b/third_party/blink/renderer/devtools/front_end/emulation/emulation_strings.grdp
index d12103de..313f6988 100644
--- a/third_party/blink/renderer/devtools/front_end/emulation/emulation_strings.grdp
+++ b/third_party/blink/renderer/devtools/front_end/emulation/emulation_strings.grdp
@@ -120,18 +120,30 @@
   <message name="IDS_DEVTOOLS_526d688f37a86d3c3f27d0c5016eb71d" desc="Text of orientation reset button in Sensors View of the Device Toolbar">
     Reset
   </message>
+  <message name="IDS_DEVTOOLS_5466ee572bcbc75830d044e66ab429bc" desc="City name in Geolocations Settings">
+    Shanghai
+  </message>
   <message name="IDS_DEVTOOLS_58cc7602635a11277aa7531e14b32c97" desc="Text in Sensors View of the Device Toolbar">
     Portrait upside down
   </message>
   <message name="IDS_DEVTOOLS_59c06928c1dcdb1a687bf21d73e53a09" desc="Text in Device Mode Toolbar of the Device Toolbar">
     Show device frame
   </message>
+  <message name="IDS_DEVTOOLS_59ead8d1e124ccfb79f3ace06f43e703" desc="City name in Geolocations Settings">
+    London
+  </message>
+  <message name="IDS_DEVTOOLS_5b4f1c0e2bd8bc1ba726cd51dd70c1a6" desc="City name in Geolocations Settings">
+    Mountain View
+  </message>
   <message name="IDS_DEVTOOLS_614103b76fd0d9de068d69034fb6f987" desc="Text in Device Mode View of the Device Toolbar">
     (<ph name="THIS__MODEL_DEVICE___TITLE">$1s<ex>iPhone X</ex></ph>)
   </message>
   <message name="IDS_DEVTOOLS_6149711fb8edc5e2adeea7aa63ee11ff" desc="Text in Device Mode Toolbar of the Device Toolbar">
     150%
   </message>
+  <message name="IDS_DEVTOOLS_62413a57c5e3dc51177995fa175d3286" desc="City name in Geolocations Settings">
+    Tokyo
+  </message>
   <message name="IDS_DEVTOOLS_62759e0d418d7391bf2d54e70cbcc05d" desc="Text in Device Mode Toolbar of the Device Toolbar">
     Remove device type
   </message>
@@ -171,9 +183,15 @@
   <message name="IDS_DEVTOOLS_7b4b2de0aae3a60aa3cf502a19f9c748" desc="Error message in the Devices settings pane that declares that the device name input must not be empty">
     Device name cannot be empty.
   </message>
+  <message name="IDS_DEVTOOLS_7e35e74e610188414ad24235dd787c78" desc="City name in Geolocations Settings">
+    Moscow
+  </message>
   <message name="IDS_DEVTOOLS_7f163d0494446906a484df67e90c1d6b" desc="Text in Device Mode Toolbar of the Device Toolbar">
     Hide device frame
   </message>
+  <message name="IDS_DEVTOOLS_7fc2515293d99e95b1745e81d6abbdf4" desc="City name in Geolocations Settings">
+    São Paulo
+  </message>
   <message name="IDS_DEVTOOLS_815dff01257e5ef182b25d4c1ef0a7a0" desc="Text in Device Mode Toolbar of the Device Toolbar">
     Landscape
   </message>
@@ -195,6 +213,9 @@
   <message name="IDS_DEVTOOLS_8d7b5211545faceef57a041ee56a2f5e" desc="Title of an action in the emulation tool to capture full height screenshot">
     Capture full size screenshot
   </message>
+  <message name="IDS_DEVTOOLS_8ebaad59980c95ade797c903761fa815" desc="City name in Geolocations Settings">
+    Mumbai
+  </message>
   <message name="IDS_DEVTOOLS_901bc0a4714ff81c24943a50e620de71" desc="Text in Devices Settings Tab of the Device Toolbar">
     User agent string
   </message>
@@ -312,6 +333,9 @@
   <message name="IDS_DEVTOOLS_eccbc87e4b5ce2fe28308fd9f2a7baf3" desc="Text in Device Mode Toolbar of the Device Toolbar">
     3
   </message>
+  <message name="IDS_DEVTOOLS_ee1611b61f5688e70c12b40684dbb395" desc="City name in Geolocations Settings">
+    Berlin
+  </message>
   <message name="IDS_DEVTOOLS_ee1cab1975e28575b1631ee8fc4ea749" desc="Title of an action in the emulation tool to capture node screenshot">
     Capture node screenshot
   </message>
@@ -330,6 +354,9 @@
   <message name="IDS_DEVTOOLS_f2a72a44f7b7d30829c0405ed2385345" desc="Text in Device Mode View of the Device Toolbar">
     Mobile S
   </message>
+  <message name="IDS_DEVTOOLS_f4334fdfa1c728eae375fe781e2e2d9d" desc="City name in Geolocations Settings">
+    San Francisco
+  </message>
   <message name="IDS_DEVTOOLS_f819de81247be4a5428dc0e169de28b8" desc="Text in Device Mode Toolbar of the Device Toolbar">
     75%
   </message>
diff --git a/third_party/blink/renderer/devtools/front_end/layer_viewer/Layers3DView.js b/third_party/blink/renderer/devtools/front_end/layer_viewer/Layers3DView.js
index 779e227e..3a56560 100644
--- a/third_party/blink/renderer/devtools/front_end/layer_viewer/Layers3DView.js
+++ b/third_party/blink/renderer/devtools/front_end/layer_viewer/Layers3DView.js
@@ -678,10 +678,10 @@
   _initToolbar() {
     this._panelToolbar = this._transformController.toolbar();
     this.contentElement.appendChild(this._panelToolbar.element);
-    this._showSlowScrollRectsSetting =
-        this._createVisibilitySetting('Slow scroll rects', 'frameViewerShowSlowScrollRects', true, this._panelToolbar);
+    this._showSlowScrollRectsSetting = this._createVisibilitySetting(
+        ls`Slow scroll rects`, 'frameViewerShowSlowScrollRects', true, this._panelToolbar);
     this._showPaintsSetting =
-        this._createVisibilitySetting('Paints', 'frameViewerShowPaints', true, this._panelToolbar);
+        this._createVisibilitySetting(ls`Paints`, 'frameViewerShowPaints', true, this._panelToolbar);
     this._showPaintsSetting.addChangeListener(this._updatePaints, this);
     Common.moduleSetting('frameViewerHideChromeWindow').addChangeListener(this._update, this);
   }
diff --git a/third_party/blink/renderer/devtools/front_end/layer_viewer/layer_viewer_strings.grdp b/third_party/blink/renderer/devtools/front_end/layer_viewer/layer_viewer_strings.grdp
index 33d1cdc..45c92a3f 100644
--- a/third_party/blink/renderer/devtools/front_end/layer_viewer/layer_viewer_strings.grdp
+++ b/third_party/blink/renderer/devtools/front_end/layer_viewer/layer_viewer_strings.grdp
@@ -210,4 +210,10 @@
   <message name="IDS_DEVTOOLS_fd63c694ddc8073cf10bb8025aa9aaaf" desc="Text in Layer Details View of the Layers panel">
     Layer for scrollbar.
   </message>
+  <message name="IDS_DEVTOOLS_a3ed19b48390aad906de764e0476142d" desc="Text for a checkbox in the toolbar of the Layers panel to show the paints of the page">
+    Paints
+  </message>
+  <message name="IDS_DEVTOOLS_4f6faa156251f75fbefe3270d94a7a28" desc="Text for a checkbox in the toolbar of the Layers panel to show the area of slow scroll rect">
+    Slow scroll rects
+  </message>
 </grit-part>
\ No newline at end of file
diff --git a/third_party/blink/renderer/devtools/front_end/profiler/ProfilesPanel.js b/third_party/blink/renderer/devtools/front_end/profiler/ProfilesPanel.js
index d3383a05..17c999b 100644
--- a/third_party/blink/renderer/devtools/front_end/profiler/ProfilesPanel.js
+++ b/third_party/blink/renderer/devtools/front_end/profiler/ProfilesPanel.js
@@ -52,6 +52,8 @@
 
     this._sidebarTree.appendChild(this.profilesItemTreeElement);
 
+    this._sidebarTree.element.addEventListener('keydown', this._onKeyDown.bind(this), false);
+
     this.profileViews = createElement('div');
     this.profileViews.id = 'profile-views';
     this.profileViews.classList.add('vbox');
@@ -95,8 +97,6 @@
     this._createFileSelectorElement();
     this.element.addEventListener('contextmenu', this._handleContextMenuEvent.bind(this), false);
 
-    this.contentElement.addEventListener('keydown', this._onKeyDown.bind(this), false);
-
     SDK.targetManager.addEventListener(SDK.TargetManager.Events.SuspendStateChanged, this._onSuspendStateChanged, this);
     UI.context.addFlavorChangeListener(SDK.CPUProfilerModel, this._updateProfileTypeSpecificUI, this);
     UI.context.addFlavorChangeListener(SDK.HeapProfilerModel, this._updateProfileTypeSpecificUI, this);
diff --git a/third_party/blink/renderer/devtools/scripts/localization_utils/check_localized_strings.js b/third_party/blink/renderer/devtools/scripts/localization_utils/check_localized_strings.js
index 148740e..d2ac8e67 100644
--- a/third_party/blink/renderer/devtools/scripts/localization_utils/check_localized_strings.js
+++ b/third_party/blink/renderer/devtools/scripts/localization_utils/check_localized_strings.js
@@ -115,6 +115,11 @@
           if (option.text !== undefined)
             addString(option.text, option.text, filePath);
         }
+      } else if (key === 'defaultValue' && Array.isArray(extension[key])) {
+        for (const defaultVal of extension[key]) {
+          if (defaultVal.title)
+            addString(defaultVal.title, defaultVal.title, filePath);
+        }
       }
     }
   }
diff --git a/third_party/blink/renderer/modules/canvas/canvas2d/base_rendering_context_2d.cc b/third_party/blink/renderer/modules/canvas/canvas2d/base_rendering_context_2d.cc
index 9d49f83..5110563a 100644
--- a/third_party/blink/renderer/modules/canvas/canvas2d/base_rendering_context_2d.cc
+++ b/third_party/blink/renderer/modules/canvas/canvas2d/base_rendering_context_2d.cc
@@ -1597,6 +1597,9 @@
   WTF::ArrayBufferContents contents;
 
   const CanvasColorParams& color_params = ColorParams();
+  // Deferred offscreen canvases might have recorded commands, make sure
+  // that those get drawn here
+  FinalizeFrame();
   scoped_refptr<StaticBitmapImage> snapshot = GetImage(kPreferNoAcceleration);
 
   if (!StaticBitmapImage::ConvertToArrayBufferContents(
@@ -1605,8 +1608,6 @@
     return nullptr;
   }
 
-  NeedsFinalizeFrame();
-
   // Convert pixels to proper storage format if needed
   if (PixelFormat() != kRGBA8CanvasPixelFormat) {
     ImageDataStorageFormat storage_format =
diff --git a/third_party/blink/renderer/modules/canvas/canvas2d/base_rendering_context_2d.h b/third_party/blink/renderer/modules/canvas/canvas2d/base_rendering_context_2d.h
index 112f4aa..940d189 100644
--- a/third_party/blink/renderer/modules/canvas/canvas2d/base_rendering_context_2d.h
+++ b/third_party/blink/renderer/modules/canvas/canvas2d/base_rendering_context_2d.h
@@ -193,6 +193,8 @@
                              ImageDataColorSettings*,
                              ExceptionState&) const;
 
+  // For deferred canvases this will have the side effect of drawing recorded
+  // commands in order to finalize the frame
   ImageData* getImageData(int sx, int sy, int sw, int sh, ExceptionState&);
   void putImageData(ImageData*, int dx, int dy, ExceptionState&);
   void putImageData(ImageData*,
@@ -361,7 +363,7 @@
 
   mutable UsageCounters usage_counters_;
 
-  virtual void NeedsFinalizeFrame() {}
+  virtual void FinalizeFrame() {}
 
   float GetFontBaseline(const SimpleFontData&) const;
 
diff --git a/third_party/blink/renderer/modules/canvas/canvas2d/canvas_rendering_context_2d.cc b/third_party/blink/renderer/modules/canvas/canvas2d/canvas_rendering_context_2d.cc
index 5df98e9f..17cf4489 100644
--- a/third_party/blink/renderer/modules/canvas/canvas2d/canvas_rendering_context_2d.cc
+++ b/third_party/blink/renderer/modules/canvas/canvas2d/canvas_rendering_context_2d.cc
@@ -671,6 +671,12 @@
   return canvas()->GetCanvas2DLayerBridge()->NewImageSnapshot(hint);
 }
 
+void CanvasRenderingContext2D::FinalizeFrame() {
+  if (canvas() && canvas()->GetCanvas2DLayerBridge())
+    canvas()->GetCanvas2DLayerBridge()->FinalizeFrame();
+  usage_counters_.num_frames_since_reset++;
+}
+
 bool CanvasRenderingContext2D::ParseColorOrCurrentColor(
     Color& color,
     const String& color_string) const {
diff --git a/third_party/blink/renderer/modules/canvas/canvas2d/canvas_rendering_context_2d.h b/third_party/blink/renderer/modules/canvas/canvas2d/canvas_rendering_context_2d.h
index 4f26dd2..a8fe248 100644
--- a/third_party/blink/renderer/modules/canvas/canvas2d/canvas_rendering_context_2d.h
+++ b/third_party/blink/renderer/modules/canvas/canvas2d/canvas_rendering_context_2d.h
@@ -190,7 +190,7 @@
 
   void ValidateStateStack() const final;
 
-  void FinalizeFrame() override { usage_counters_.num_frames_since_reset++; }
+  void FinalizeFrame() override;
 
   bool IsPaintable() const final { return canvas()->GetCanvas2DLayerBridge(); }
 
@@ -201,10 +201,6 @@
   CanvasColorParams ColorParamsForTest() const { return ColorParams(); }
 
  protected:
-  void NeedsFinalizeFrame() override {
-    CanvasRenderingContext::NeedsFinalizeFrame();
-  }
-
   CanvasColorParams ColorParams() const override;
   bool WritePixels(const SkImageInfo& orig_info,
                    const void* pixels,
diff --git a/third_party/blink/renderer/modules/canvas/offscreencanvas2d/offscreen_canvas_rendering_context_2d.h b/third_party/blink/renderer/modules/canvas/offscreencanvas2d/offscreen_canvas_rendering_context_2d.h
index 89270c56..5e659bd 100644
--- a/third_party/blink/renderer/modules/canvas/offscreencanvas2d/offscreen_canvas_rendering_context_2d.h
+++ b/third_party/blink/renderer/modules/canvas/offscreencanvas2d/offscreen_canvas_rendering_context_2d.h
@@ -121,9 +121,6 @@
   void PushFrame() override;
 
  protected:
-  void NeedsFinalizeFrame() override {
-    CanvasRenderingContext::NeedsFinalizeFrame();
-  }
 
   CanvasColorParams ColorParams() const override;
   bool WritePixels(const SkImageInfo& orig_info,
diff --git a/third_party/blink/renderer/modules/webgpu/dawn_conversions.cc b/third_party/blink/renderer/modules/webgpu/dawn_conversions.cc
index 8689267..1ace8be 100644
--- a/third_party/blink/renderer/modules/webgpu/dawn_conversions.cc
+++ b/third_party/blink/renderer/modules/webgpu/dawn_conversions.cc
@@ -665,6 +665,22 @@
   return DAWN_FRONT_FACE_FORCE32;
 }
 
+template <>
+DawnTextureAspect AsDawnEnum<DawnTextureAspect>(
+    const WTF::String& webgpu_enum) {
+  if (webgpu_enum == "all") {
+    return DAWN_TEXTURE_ASPECT_ALL;
+  }
+  if (webgpu_enum == "stencil-only") {
+    return DAWN_TEXTURE_ASPECT_STENCIL_ONLY;
+  }
+  if (webgpu_enum == "depth-only") {
+    return DAWN_TEXTURE_ASPECT_DEPTH_ONLY;
+  }
+  NOTREACHED();
+  return DAWN_TEXTURE_ASPECT_FORCE32;
+}
+
 DawnColor AsDawnType(const GPUColor* webgpu_color) {
   DCHECK(webgpu_color);
 
diff --git a/third_party/blink/renderer/modules/webgpu/gpu_bind_group_layout.cc b/third_party/blink/renderer/modules/webgpu/gpu_bind_group_layout.cc
index 859082c..93252552 100644
--- a/third_party/blink/renderer/modules/webgpu/gpu_bind_group_layout.cc
+++ b/third_party/blink/renderer/modules/webgpu/gpu_bind_group_layout.cc
@@ -18,6 +18,8 @@
   dawn_binding.type = AsDawnEnum<DawnBindingType>(webgpu_binding->type());
   dawn_binding.visibility =
       AsDawnEnum<DawnShaderStage>(webgpu_binding->visibility());
+  dawn_binding.textureDimension =
+      AsDawnEnum<DawnTextureViewDimension>(webgpu_binding->textureDimension());
   dawn_binding.textureComponentType = AsDawnEnum<DawnTextureComponentType>(
       webgpu_binding->textureComponentType());
   dawn_binding.multisampled = webgpu_binding->multisampled();
diff --git a/third_party/blink/renderer/modules/webgpu/gpu_bind_group_layout_binding.idl b/third_party/blink/renderer/modules/webgpu/gpu_bind_group_layout_binding.idl
index 372f408..df5acb6 100644
--- a/third_party/blink/renderer/modules/webgpu/gpu_bind_group_layout_binding.idl
+++ b/third_party/blink/renderer/modules/webgpu/gpu_bind_group_layout_binding.idl
@@ -8,6 +8,7 @@
     required unsigned long binding;
     required GPUShaderStageFlags visibility;
     required GPUBindingType type;
+    GPUTextureViewDimension textureDimension = "2d";
     GPUTextureComponentType textureComponentType = "float";
     boolean multisampled = false;
     boolean dynamic = false;
diff --git a/third_party/blink/renderer/modules/webgpu/gpu_command_encoder.cc b/third_party/blink/renderer/modules/webgpu/gpu_command_encoder.cc
index 438330e..a6e2babf 100644
--- a/third_party/blink/renderer/modules/webgpu/gpu_command_encoder.cc
+++ b/third_party/blink/renderer/modules/webgpu/gpu_command_encoder.cc
@@ -260,6 +260,20 @@
       GetHandle(), &dawn_source, &dawn_destination, &dawn_copy_size);
 }
 
+void GPUCommandEncoder::pushDebugGroup(String groupLabel) {
+  GetProcs().commandEncoderPushDebugGroup(GetHandle(),
+                                          groupLabel.Utf8().data());
+}
+
+void GPUCommandEncoder::popDebugGroup() {
+  GetProcs().commandEncoderPopDebugGroup(GetHandle());
+}
+
+void GPUCommandEncoder::insertDebugMarker(String markerLabel) {
+  GetProcs().commandEncoderInsertDebugMarker(GetHandle(),
+                                             markerLabel.Utf8().data());
+}
+
 GPUCommandBuffer* GPUCommandEncoder::finish() {
   return GPUCommandBuffer::Create(
       device_, GetProcs().commandEncoderFinish(GetHandle(), nullptr));
diff --git a/third_party/blink/renderer/modules/webgpu/gpu_command_encoder.h b/third_party/blink/renderer/modules/webgpu/gpu_command_encoder.h
index adb50dc..86a2303 100644
--- a/third_party/blink/renderer/modules/webgpu/gpu_command_encoder.h
+++ b/third_party/blink/renderer/modules/webgpu/gpu_command_encoder.h
@@ -48,6 +48,9 @@
   void copyTextureToTexture(GPUTextureCopyView* source,
                             GPUTextureCopyView* destination,
                             GPUExtent3D* copy_size);
+  void pushDebugGroup(String groupLabel);
+  void popDebugGroup();
+  void insertDebugMarker(String markerLabel);
   GPUCommandBuffer* finish();
 
  private:
diff --git a/third_party/blink/renderer/modules/webgpu/gpu_command_encoder.idl b/third_party/blink/renderer/modules/webgpu/gpu_command_encoder.idl
index 1a76aca1..4977bb7 100644
--- a/third_party/blink/renderer/modules/webgpu/gpu_command_encoder.idl
+++ b/third_party/blink/renderer/modules/webgpu/gpu_command_encoder.idl
@@ -30,5 +30,9 @@
         GPUTextureCopyView destination,
         GPUExtent3D copySize);
 
+    void pushDebugGroup(DOMString groupLabel);
+    void popDebugGroup();
+    void insertDebugMarker(DOMString markerLabel);
+
     GPUCommandBuffer finish();
 };
diff --git a/third_party/blink/renderer/modules/webgpu/gpu_texture.cc b/third_party/blink/renderer/modules/webgpu/gpu_texture.cc
index 6006899d..83c3ae6 100644
--- a/third_party/blink/renderer/modules/webgpu/gpu_texture.cc
+++ b/third_party/blink/renderer/modules/webgpu/gpu_texture.cc
@@ -44,6 +44,7 @@
   dawn_desc.mipLevelCount = webgpu_desc->mipLevelCount();
   dawn_desc.baseArrayLayer = webgpu_desc->baseArrayLayer();
   dawn_desc.arrayLayerCount = webgpu_desc->arrayLayerCount();
+  dawn_desc.aspect = AsDawnEnum<DawnTextureAspect>(webgpu_desc->aspect());
 
   return dawn_desc;
 }
diff --git a/third_party/blink/renderer/modules/xr/xr.h b/third_party/blink/renderer/modules/xr/xr.h
index b5ca34a..ab43dca 100644
--- a/third_party/blink/renderer/modules/xr/xr.h
+++ b/third_party/blink/renderer/modules/xr/xr.h
@@ -79,6 +79,8 @@
   int64_t GetSourceId() const { return ukm_source_id_; }
 
   using EnvironmentProviderErrorCallback = base::OnceCallback<void()>;
+  // Registers a callback that'll be invoked when mojo invokes a disconnect
+  // handler on the underlying XREnvironmentIntegrationProvider remote.
   void AddEnvironmentProviderErrorHandler(
       EnvironmentProviderErrorCallback callback);
 
diff --git a/third_party/blink/renderer/modules/xr/xr_anchor.cc b/third_party/blink/renderer/modules/xr/xr_anchor.cc
index 2d04e94..fee23ea2 100644
--- a/third_party/blink/renderer/modules/xr/xr_anchor.cc
+++ b/third_party/blink/renderer/modules/xr/xr_anchor.cc
@@ -68,8 +68,7 @@
 }
 
 void XRAnchor::detach() {
-  // TODO(992033): Actually detach anchor once anchor creation is implemented.
-  DVLOG(2) << "Detaching anchor, id_=" << id_;
+  session_->xr()->xrEnvironmentProviderPtr()->DetachAnchor(id_);
 }
 
 void XRAnchor::Trace(blink::Visitor* visitor) {
diff --git a/third_party/blink/renderer/modules/xr/xr_frame_provider.cc b/third_party/blink/renderer/modules/xr/xr_frame_provider.cc
index b50db17..7bdfb7c 100644
--- a/third_party/blink/renderer/modules/xr/xr_frame_provider.cc
+++ b/third_party/blink/renderer/modules/xr/xr_frame_provider.cc
@@ -376,12 +376,12 @@
       immersive_session_->UpdateStageParameters(frame_data->stage_parameters);
     }
     if (frame_data) {
-      immersive_session_->OnFrame(high_res_now_ms, std::move(pose_matrix),
-                                  buffer_mailbox_holder_,
-                                  frame_data->detected_planes_data);
+      immersive_session_->OnFrame(
+          high_res_now_ms, std::move(pose_matrix), buffer_mailbox_holder_,
+          frame_data->detected_planes_data, frame_data->anchors_data);
     } else {
       immersive_session_->OnFrame(high_res_now_ms, std::move(pose_matrix),
-                                  buffer_mailbox_holder_, nullptr);
+                                  buffer_mailbox_holder_, nullptr, nullptr);
     }
   } else {
     // In the process of fulfilling the frame requests for each session they are
@@ -425,10 +425,11 @@
           getPoseMatrix(frame_pose_);
       if (frame_data) {
         session->OnFrame(high_res_now_ms, std::move(pose_matrix), base::nullopt,
-                         frame_data->detected_planes_data);
+                         frame_data->detected_planes_data,
+                         frame_data->anchors_data);
       } else {
         session->OnFrame(high_res_now_ms, std::move(pose_matrix), base::nullopt,
-                         nullptr);
+                         nullptr, nullptr);
       }
     }
 
diff --git a/third_party/blink/renderer/modules/xr/xr_plane.cc b/third_party/blink/renderer/modules/xr/xr_plane.cc
index ce7c5cb5..14496fb 100644
--- a/third_party/blink/renderer/modules/xr/xr_plane.cc
+++ b/third_party/blink/renderer/modules/xr/xr_plane.cc
@@ -83,14 +83,10 @@
 
 ScriptPromise XRPlane::createAnchor(ScriptState* script_state,
                                     XRRigidTransform* initial_pose,
-                                    XRSpace* space) {
-  // TODO(https://crbug.com/992033): Implement anchor creation from a plane
-  // instead of rejecting the promise. This'll cause the string literal used
-  // below to be removed.
-  return ScriptPromise::RejectWithDOMException(
-      script_state,
-      MakeGarbageCollected<DOMException>(DOMExceptionCode::kNotSupportedError,
-                                         "Device does not support anchors!"));
+                                    XRSpace* space,
+                                    ExceptionState& exception_state) {
+  return session_->CreateAnchor(script_state, initial_pose, space, this,
+                                exception_state);
 }
 
 void XRPlane::Update(const device::mojom::blink::XRPlaneDataPtr& plane_data,
diff --git a/third_party/blink/renderer/modules/xr/xr_plane.h b/third_party/blink/renderer/modules/xr/xr_plane.h
index 1bde049..e7cf645c 100644
--- a/third_party/blink/renderer/modules/xr/xr_plane.h
+++ b/third_party/blink/renderer/modules/xr/xr_plane.h
@@ -16,6 +16,7 @@
 
 namespace blink {
 
+class ExceptionState;
 class XRRigidTransform;
 class XRSession;
 class XRSpace;
@@ -49,7 +50,8 @@
 
   ScriptPromise createAnchor(ScriptState* script_state,
                              XRRigidTransform* initial_pose,
-                             XRSpace* space);
+                             XRSpace* space,
+                             ExceptionState& exception_state);
 
   // Updates plane data from passed in |plane_data|. The resulting instance
   // should be equivalent to the instance that would be create by calling
diff --git a/third_party/blink/renderer/modules/xr/xr_plane.idl b/third_party/blink/renderer/modules/xr/xr_plane.idl
index 9528f82..2c2f6820 100644
--- a/third_party/blink/renderer/modules/xr/xr_plane.idl
+++ b/third_party/blink/renderer/modules/xr/xr_plane.idl
@@ -20,5 +20,5 @@
     readonly attribute XRPlaneOrientation? orientation;
     readonly attribute DOMHighResTimeStamp lastChangedTime;
 
-    [RuntimeEnabled=WebXRAnchors, CallWith=ScriptState] Promise<XRAnchor> createAnchor(XRRigidTransform initial_pose, XRSpace space);
+    [RuntimeEnabled=WebXRAnchors, CallWith=ScriptState, RaisesException] Promise<XRAnchor> createAnchor(XRRigidTransform initial_pose, XRSpace space);
 };
diff --git a/third_party/blink/renderer/modules/xr/xr_session.cc b/third_party/blink/renderer/modules/xr/xr_session.cc
index 8fa662c..2047445 100644
--- a/third_party/blink/renderer/modules/xr/xr_session.cc
+++ b/third_party/blink/renderer/modules/xr/xr_session.cc
@@ -21,6 +21,7 @@
 #include "third_party/blink/renderer/modules/event_target_modules.h"
 #include "third_party/blink/renderer/modules/screen_orientation/screen_orientation.h"
 #include "third_party/blink/renderer/modules/xr/xr.h"
+#include "third_party/blink/renderer/modules/xr/xr_anchor_set.h"
 #include "third_party/blink/renderer/modules/xr/xr_bounded_reference_space.h"
 #include "third_party/blink/renderer/modules/xr/xr_canvas_input_provider.h"
 #include "third_party/blink/renderer/modules/xr/xr_frame.h"
@@ -28,6 +29,7 @@
 #include "third_party/blink/renderer/modules/xr/xr_hit_result.h"
 #include "third_party/blink/renderer/modules/xr/xr_input_source_event.h"
 #include "third_party/blink/renderer/modules/xr/xr_input_sources_change_event.h"
+#include "third_party/blink/renderer/modules/xr/xr_plane.h"
 #include "third_party/blink/renderer/modules/xr/xr_ray.h"
 #include "third_party/blink/renderer/modules/xr/xr_reference_space.h"
 #include "third_party/blink/renderer/modules/xr/xr_render_state.h"
@@ -59,6 +61,8 @@
 
 const char kNoSpaceSpecified[] = "No XRSpace specified.";
 
+const char kNoRigidTransformSpecified[] = "No XRRigidTransform specified.";
+
 const char kHitTestNotSupported[] = "Device does not support hit-test!";
 
 const char kAnchorsNotSupported[] = "Device does not support anchors!";
@@ -67,6 +71,14 @@
 
 const char kNotImplemented[] = "The operation has not been implemented yet.";
 
+const char kNonInvertibleMatrix[] =
+    "The operation encountered non-invertible matrix and could not be "
+    "completed.";
+
+const char kUnableToDecomposeMatrix[] =
+    "The operation was unable to decompose a matrix and could not be "
+    "completed.";
+
 const double kDegToRad = M_PI / 180.0;
 
 // Indices into the views array.
@@ -177,6 +189,21 @@
   }
 }
 
+XRAnchorSet* XRSession::trackedAnchors() const {
+  DVLOG(3) << __func__;
+
+  HeapHashSet<Member<XRAnchor>> result;
+
+  if (is_tracked_anchors_null_)
+    return nullptr;
+
+  for (auto& anchor_id_and_anchor : anchor_ids_to_anchors_) {
+    result.insert(anchor_id_and_anchor.value);
+  }
+
+  return MakeGarbageCollected<XRAnchorSet>(result);
+}
+
 bool XRSession::immersive() const {
   return mode_ == kModeImmersiveVR || mode_ == kModeImmersiveAR;
 }
@@ -361,15 +388,113 @@
   return promise;
 }
 
+ScriptPromise XRSession::CreateAnchor(ScriptState* script_state,
+                                      XRRigidTransform* initial_pose,
+                                      XRSpace* space,
+                                      XRPlane* plane,
+                                      ExceptionState& exception_state) {
+  if (ended_) {
+    exception_state.ThrowDOMException(DOMExceptionCode::kInvalidStateError,
+                                      kSessionEnded);
+    return ScriptPromise();
+  }
+
+  if (!initial_pose) {
+    exception_state.ThrowDOMException(DOMExceptionCode::kInvalidStateError,
+                                      kNoRigidTransformSpecified);
+    return ScriptPromise();
+  }
+
+  if (!space) {
+    exception_state.ThrowDOMException(DOMExceptionCode::kInvalidStateError,
+                                      kNoSpaceSpecified);
+    return ScriptPromise();
+  }
+
+  // Reject the promise if device doesn't support the anchors API.
+  if (!xr_->xrEnvironmentProviderPtr()) {
+    exception_state.ThrowDOMException(DOMExceptionCode::kInvalidStateError,
+                                      kAnchorsNotSupported);
+    return ScriptPromise();
+  }
+
+  auto* resolver = MakeGarbageCollected<ScriptPromiseResolver>(script_state);
+  ScriptPromise promise = resolver->Promise();
+
+  // Transformation from mojo space to passed in |space|.
+  std::unique_ptr<TransformationMatrix> space_from_mojo =
+      space->GetTransformToMojoSpace();
+
+  DVLOG(3) << __func__
+           << ": space_from_mojo = " << space_from_mojo->ToString(true);
+
+  // Matrix will be null if transformation from mojo space to object space is
+  // not invertible, log & bail out in that case.
+  if (!space_from_mojo || !space_from_mojo->IsInvertible()) {
+    exception_state.ThrowDOMException(DOMExceptionCode::kInvalidStateError,
+                                      kNonInvertibleMatrix);
+    return ScriptPromise();
+  }
+
+  auto mojo_from_space = space_from_mojo->Inverse();
+
+  DVLOG(3) << __func__
+           << ": mojo_from_space = " << mojo_from_space.ToString(true);
+
+  // Transformation from passed in pose to |space|.
+  auto space_from_initial_pose = initial_pose->TransformMatrix();
+  auto mojo_from_initial_pose = mojo_from_space * space_from_initial_pose;
+
+  DVLOG(3) << __func__ << ": space_from_initial_pose = "
+           << space_from_initial_pose.ToString(true);
+
+  DVLOG(3) << __func__ << ": mojo_from_initial_pose = "
+           << mojo_from_initial_pose.ToString(true);
+
+  TransformationMatrix::DecomposedType decomposed;
+  if (!mojo_from_initial_pose.Decompose(decomposed)) {
+    exception_state.ThrowDOMException(DOMExceptionCode::kInvalidStateError,
+                                      kUnableToDecomposeMatrix);
+    return ScriptPromise();
+  }
+
+  device::mojom::blink::VRPosePtr pose_ptr =
+      device::mojom::blink::VRPose::New();
+
+  pose_ptr->orientation =
+      gfx::Quaternion(-decomposed.quaternion_x, -decomposed.quaternion_y,
+                      -decomposed.quaternion_z, decomposed.quaternion_w);
+  pose_ptr->position = blink::WebFloatPoint3D(
+      decomposed.translate_x, decomposed.translate_y, decomposed.translate_z);
+
+  DVLOG(3) << __func__
+           << ": pose_ptr->orientation = " << pose_ptr->orientation->ToString()
+           << ", pose_ptr->position = [" << pose_ptr->position->x << ", "
+           << pose_ptr->position->y << ", " << pose_ptr->position->z << "]";
+
+  EnsureEnvironmentErrorHandler();
+  if (plane) {
+    xr_->xrEnvironmentProviderPtr()->CreatePlaneAnchor(
+        std::move(pose_ptr), plane->id(),
+        WTF::Bind(&XRSession::OnCreateAnchorResult, WrapPersistent(this),
+                  WrapPersistent(resolver)));
+  } else {
+    xr_->xrEnvironmentProviderPtr()->CreateAnchor(
+        std::move(pose_ptr),
+        WTF::Bind(&XRSession::OnCreateAnchorResult, WrapPersistent(this),
+                  WrapPersistent(resolver)));
+  }
+  create_anchor_promises_.insert(resolver);
+
+  return promise;
+}
+
 ScriptPromise XRSession::createAnchor(ScriptState* script_state,
                                       XRRigidTransform* initial_pose,
                                       XRSpace* space,
                                       ExceptionState& exception_state) {
-  // TODO(https://crbug.com/992033): Implement anchor creation from a session
-  // instead of rejecting the promise.
-  exception_state.ThrowDOMException(DOMExceptionCode::kNotSupportedError,
-                                    kAnchorsNotSupported);
-  return ScriptPromise();
+  return CreateAnchor(script_state, initial_pose, space, nullptr,
+                      exception_state);
 }
 
 int XRSession::requestAnimationFrame(V8XRFrameRequestCallback* callback) {
@@ -474,7 +599,22 @@
   resolver->Resolve(hit_results);
 }
 
+void XRSession::OnCreateAnchorResult(ScriptPromiseResolver* resolver,
+                                     device::mojom::CreateAnchorResult result,
+                                     int32_t id) {
+  DCHECK(create_anchor_promises_.Contains(resolver));
+  create_anchor_promises_.erase(resolver);
+
+  XRAnchor* anchor = MakeGarbageCollected<XRAnchor>(id, this);
+
+  anchor_ids_to_anchors_.insert(id, anchor);
+
+  resolver->Resolve(anchor);
+}
+
 void XRSession::EnsureEnvironmentErrorHandler() {
+  // Install error handler on environment provider to ensure that we get
+  // notified so that we can clean up all relevant pending promises.
   if (!environment_error_handler_subscribed_ &&
       xr_->xrEnvironmentProviderPtr()) {
     environment_error_handler_subscribed_ = true;
@@ -490,6 +630,72 @@
     resolver->Reject(MakeGarbageCollected<DOMException>(
         DOMExceptionCode::kInvalidStateError, kDeviceDisconnected));
   }
+
+  HeapHashSet<Member<ScriptPromiseResolver>> create_anchor_promises;
+  create_anchor_promises_.swap(create_anchor_promises);
+  for (ScriptPromiseResolver* resolver : create_anchor_promises) {
+    resolver->Reject(MakeGarbageCollected<DOMException>(
+        DOMExceptionCode::kInvalidStateError, kDeviceDisconnected));
+  }
+}
+
+void XRSession::ProcessAnchorsData(
+    const device::mojom::blink::XRAnchorsDataPtr& tracked_anchors_data,
+    double timestamp) {
+  TRACE_EVENT0("xr", __FUNCTION__);
+
+  if (!tracked_anchors_data) {
+    DVLOG(3) << __func__ << ": tracked_anchors_data is null";
+
+    // We have received a null ptr. Mark tracked_anchors as null & clear stored
+    // anchors.
+    is_tracked_anchors_null_ = true;
+    anchor_ids_to_anchors_.clear();
+    return;
+  }
+
+  TRACE_COUNTER2("xr", "Anchor statistics", "All anchors",
+                 tracked_anchors_data->all_anchors_ids.size(),
+                 "Updated anchors",
+                 tracked_anchors_data->updated_anchors_data.size());
+
+  DVLOG(3) << __func__ << ": updated anchors size="
+           << tracked_anchors_data->updated_anchors_data.size()
+           << ", all anchors size="
+           << tracked_anchors_data->all_anchors_ids.size();
+
+  is_tracked_anchors_null_ = false;
+
+  HeapHashMap<int32_t, Member<XRAnchor>> updated_anchors;
+
+  // First, process all planes that had their information updated (new planes
+  // are also processed here).
+  for (const auto& anchor : tracked_anchors_data->updated_anchors_data) {
+    auto it = anchor_ids_to_anchors_.find(anchor->id);
+    if (it != anchor_ids_to_anchors_.end()) {
+      updated_anchors.insert(anchor->id, it->value);
+      it->value->Update(anchor, timestamp);
+    } else {
+      updated_anchors.insert(
+          anchor->id,
+          MakeGarbageCollected<XRAnchor>(anchor->id, this, anchor, timestamp));
+    }
+  }
+
+  // Then, copy over the planes that were not updated but are still present.
+  for (const auto& anchor_id : tracked_anchors_data->all_anchors_ids) {
+    auto it_updated = updated_anchors.find(anchor_id);
+
+    // If the plane was already updated, there is nothing to do as it was
+    // already moved to |updated_anchors|. Otherwise just copy it over as-is.
+    if (it_updated == updated_anchors.end()) {
+      auto it = anchor_ids_to_anchors_.find(anchor_id);
+      DCHECK(it != anchor_ids_to_anchors_.end());
+      updated_anchors.insert(anchor_id, it->value);
+    }
+  }
+
+  anchor_ids_to_anchors_.swap(updated_anchors);
 }
 
 ScriptPromise XRSession::end(ScriptState* script_state,
@@ -687,7 +893,8 @@
     double timestamp,
     std::unique_ptr<TransformationMatrix> base_pose_matrix,
     const base::Optional<gpu::MailboxHolder>& output_mailbox_holder,
-    const device::mojom::blink::XRPlaneDetectionDataPtr& detected_planes_data) {
+    const device::mojom::blink::XRPlaneDetectionDataPtr& detected_planes_data,
+    const device::mojom::blink::XRAnchorsDataPtr& tracked_anchors_data) {
   TRACE_EVENT0("gpu", __FUNCTION__);
   DVLOG(2) << __FUNCTION__;
   // Don't process any outstanding frames once the session is ended.
@@ -699,7 +906,9 @@
   // If there are pending render state changes, apply them now.
   ApplyPendingRenderState();
 
+  // Update objects that might change on per-frame basis.
   world_information_->ProcessPlaneInformation(detected_planes_data, timestamp);
+  ProcessAnchorsData(tracked_anchors_data, timestamp);
 
   if (pending_frame_) {
     pending_frame_ = false;
@@ -1026,7 +1235,9 @@
   visitor->Trace(canvas_input_provider_);
   visitor->Trace(callback_collection_);
   visitor->Trace(hit_test_promises_);
+  visitor->Trace(create_anchor_promises_);
   visitor->Trace(reference_spaces_);
+  visitor->Trace(anchor_ids_to_anchors_);
   EventTargetWithInlineData::Trace(visitor);
 }
 
diff --git a/third_party/blink/renderer/modules/xr/xr_session.h b/third_party/blink/renderer/modules/xr/xr_session.h
index 97ddda8..274ecb2 100644
--- a/third_party/blink/renderer/modules/xr/xr_session.h
+++ b/third_party/blink/renderer/modules/xr/xr_session.h
@@ -33,9 +33,11 @@
 class ScriptPromiseResolver;
 class V8XRFrameRequestCallback;
 class XR;
+class XRAnchor;
 class XRAnchorSet;
 class XRCanvasInputProvider;
 class XRHitTestOptionsInit;
+class XRPlane;
 class XRRay;
 class XRReferenceSpace;
 class XRRenderState;
@@ -81,7 +83,7 @@
   XRRenderState* renderState() const { return render_state_; }
   XRWorldTrackingState* worldTrackingState() { return world_tracking_state_; }
   XRSpace* viewerSpace() const;
-  XRAnchorSet* trackedAnchors() const { return nullptr; }
+  XRAnchorSet* trackedAnchors() const;
 
   bool immersive() const;
 
@@ -101,10 +103,18 @@
                                       const String& type,
                                       ExceptionState&);
 
+  // IDL-exposed
   ScriptPromise createAnchor(ScriptState* script_state,
                              XRRigidTransform* initial_pose,
                              XRSpace* space,
-                             ExceptionState&);
+                             ExceptionState& exception_state);
+
+  // helper, not IDL-exposed
+  ScriptPromise CreateAnchor(ScriptState* script_state,
+                             XRRigidTransform* pose,
+                             XRSpace* space,
+                             XRPlane* plane,
+                             ExceptionState& exception_state);
 
   int requestAnimationFrame(V8XRFrameRequestCallback* callback);
   void cancelAnimationFrame(int id);
@@ -149,11 +159,12 @@
   const AtomicString& InterfaceName() const override;
 
   void OnFocusChanged();
-  void OnFrame(double timestamp,
-               std::unique_ptr<TransformationMatrix> base_pose_matrix,
-               const base::Optional<gpu::MailboxHolder>& output_mailbox_holder,
-               const device::mojom::blink::XRPlaneDetectionDataPtr&
-                   detected_planes_data);
+  void OnFrame(
+      double timestamp,
+      std::unique_ptr<TransformationMatrix> base_pose_matrix,
+      const base::Optional<gpu::MailboxHolder>& output_mailbox_holder,
+      const device::mojom::blink::XRPlaneDetectionDataPtr& detected_planes_data,
+      const device::mojom::blink::XRAnchorsDataPtr& tracked_anchors_data);
 
   void OnInputStateChange(
       int16_t frame_id,
@@ -241,9 +252,17 @@
       base::Optional<WTF::Vector<device::mojom::blink::XRHitResultPtr>>
           results);
 
+  void OnCreateAnchorResult(ScriptPromiseResolver* resolver,
+                            device::mojom::CreateAnchorResult result,
+                            int32_t id);
+
   void EnsureEnvironmentErrorHandler();
   void OnEnvironmentProviderError();
 
+  void ProcessAnchorsData(
+      const device::mojom::blink::XRAnchorsDataPtr& tracked_anchors_data,
+      double timestamp);
+
   const Member<XR> xr_;
   const SessionMode mode_;
   const bool environment_integration_;
@@ -255,6 +274,10 @@
   HeapVector<Member<XRRenderStateInit>> pending_render_state_;
 
   XRSessionFeatureSet enabled_features_;
+
+  bool is_tracked_anchors_null_ = true;
+  HeapHashMap<int32_t, Member<XRAnchor>> anchor_ids_to_anchors_;
+
   WTF::Vector<XRViewData> views_;
 
   Member<XRInputSourceArray> input_sources_;
@@ -262,6 +285,8 @@
   Member<XRCanvasInputProvider> canvas_input_provider_;
   bool environment_error_handler_subscribed_ = false;
   HeapHashSet<Member<ScriptPromiseResolver>> hit_test_promises_;
+  // Set of promises returned from CreateAnchor that are still in-flight.
+  HeapHashSet<Member<ScriptPromiseResolver>> create_anchor_promises_;
   HeapVector<Member<XRReferenceSpace>> reference_spaces_;
 
   bool has_xr_focus_ = true;
diff --git a/third_party/blink/renderer/modules/xr/xr_space.h b/third_party/blink/renderer/modules/xr/xr_space.h
index c2c832d..e825c44b 100644
--- a/third_party/blink/renderer/modules/xr/xr_space.h
+++ b/third_party/blink/renderer/modules/xr/xr_space.h
@@ -28,7 +28,9 @@
   explicit XRSpace(XRSession*);
   ~XRSpace() override;
 
-  // Get a transform that maps from this space to mojo space.
+  // Get a transform that maps from this space to mojo space (aka device space).
+  // Unless noted otherwise, all data returned over vr_service.mojom interfaces
+  // is relative to mojo space.
   // Returns nullptr if computing a transform is not possible.
   virtual std::unique_ptr<TransformationMatrix> GetTransformToMojoSpace();
 
diff --git a/third_party/blink/renderer/platform/graphics/canvas_2d_layer_bridge.cc b/third_party/blink/renderer/platform/graphics/canvas_2d_layer_bridge.cc
index 777a3ed..7cb2d20 100644
--- a/third_party/blink/renderer/platform/graphics/canvas_2d_layer_bridge.cc
+++ b/third_party/blink/renderer/platform/graphics/canvas_2d_layer_bridge.cc
@@ -124,8 +124,6 @@
 
   if (resource_host_)
     resource_host_->RestoreCanvasMatrixClipStack(canvas);
-
-  recording_pixel_count_ = 0;
 }
 
 void Canvas2DLayerBridge::ResetResourceProvider() {
@@ -731,7 +729,7 @@
 
   ++frames_since_last_commit_;
   if (frames_since_last_commit_ >= 2) {
-    ResourceProvider()->FlushSkia();
+    FlushRecording();
     if (IsAccelerated() && !rate_limiter_) {
       // Make sure the GPU is never more than two animation frames behind.
       constexpr unsigned kMaxCanvasAnimationBacklog = 2;
diff --git a/third_party/blink/renderer/platform/graphics/canvas_2d_layer_bridge.h b/third_party/blink/renderer/platform/graphics/canvas_2d_layer_bridge.h
index 3bc812c..21a4d5fed 100644
--- a/third_party/blink/renderer/platform/graphics/canvas_2d_layer_bridge.h
+++ b/third_party/blink/renderer/platform/graphics/canvas_2d_layer_bridge.h
@@ -170,7 +170,6 @@
   CanvasResourceProvider* ResourceProvider() const;
   void FlushRecording();
 
-  PaintRecorder* getRecorder() { return recorder_.get(); }
   sk_sp<cc::PaintRecord> getLastRecord() { return last_recording_; }
 
  private:
@@ -195,7 +194,6 @@
   int frames_since_last_commit_ = 0;
   bool have_recorded_draw_commands_;
   bool is_hidden_;
-  // See the implementation of DisableDeferral() for more information.
   bool is_deferral_enabled_;
   bool software_rendering_while_hidden_;
   bool hibernation_scheduled_ = false;
@@ -205,7 +203,6 @@
   const AccelerationMode acceleration_mode_;
   const CanvasColorParams color_params_;
   const IntSize size_;
-  base::CheckedNumeric<int> recording_pixel_count_;
 
   enum SnapshotState {
     kInitialSnapshotState,
diff --git a/third_party/blink/renderer/platform/loader/fetch/resource_loader.cc b/third_party/blink/renderer/platform/loader/fetch/resource_loader.cc
index 7a82d5a0..6fe377e 100644
--- a/third_party/blink/renderer/platform/loader/fetch/resource_loader.cc
+++ b/third_party/blink/renderer/platform/loader/fetch/resource_loader.cc
@@ -685,7 +685,6 @@
 bool ResourceLoader::WillFollowRedirect(
     const WebURL& new_url,
     const WebURL& new_site_for_cookies,
-    const base::Optional<WebSecurityOrigin>& new_top_frame_origin,
     const WebString& new_referrer,
     network::mojom::ReferrerPolicy new_referrer_policy,
     const WebString& new_method,
@@ -700,14 +699,10 @@
     return false;
   }
 
-  scoped_refptr<const SecurityOrigin> top_frame_origin =
-      new_top_frame_origin
-          ? base::WrapRefCounted(new_top_frame_origin.value().Get())
-          : scoped_refptr<SecurityOrigin>();
   std::unique_ptr<ResourceRequest> new_request =
       resource_->LastResourceRequest().CreateRedirectRequest(
-          new_url, new_method, new_site_for_cookies, top_frame_origin,
-          new_referrer, new_referrer_policy,
+          new_url, new_method, new_site_for_cookies, new_referrer,
+          new_referrer_policy,
 
           !passed_redirect_response.WasFetchedViaServiceWorker());
 
diff --git a/third_party/blink/renderer/platform/loader/fetch/resource_loader.h b/third_party/blink/renderer/platform/loader/fetch/resource_loader.h
index 4ffb63c0..dcbcd3ca3 100644
--- a/third_party/blink/renderer/platform/loader/fetch/resource_loader.h
+++ b/third_party/blink/renderer/platform/loader/fetch/resource_loader.h
@@ -116,7 +116,6 @@
   bool WillFollowRedirect(
       const WebURL& new_url,
       const WebURL& new_site_for_cookies,
-      const base::Optional<WebSecurityOrigin>& new_top_frame_origin,
       const WebString& new_referrer,
       network::mojom::ReferrerPolicy new_referrer_policy,
       const WebString& new_method,
diff --git a/third_party/blink/renderer/platform/loader/fetch/resource_request.cc b/third_party/blink/renderer/platform/loader/fetch/resource_request.cc
index 3794d2f..952e86f 100644
--- a/third_party/blink/renderer/platform/loader/fetch/resource_request.cc
+++ b/third_party/blink/renderer/platform/loader/fetch/resource_request.cc
@@ -88,7 +88,6 @@
     const KURL& new_url,
     const AtomicString& new_method,
     const KURL& new_site_for_cookies,
-    scoped_refptr<const SecurityOrigin> new_top_frame_origin,
     const String& new_referrer,
     network::mojom::ReferrerPolicy new_referrer_policy,
     bool skip_service_worker) const {
@@ -97,7 +96,6 @@
   request->SetRequestorOrigin(RequestorOrigin());
   request->SetHttpMethod(new_method);
   request->SetSiteForCookies(new_site_for_cookies);
-  request->SetTopFrameOrigin(std::move(new_top_frame_origin));
   String referrer =
       new_referrer.IsEmpty() ? Referrer::NoReferrer() : String(new_referrer);
   // TODO(domfarolino): Stop storing ResourceRequest's generated referrer as a
diff --git a/third_party/blink/renderer/platform/loader/fetch/resource_request.h b/third_party/blink/renderer/platform/loader/fetch/resource_request.h
index d4055c4..d3ce04d 100644
--- a/third_party/blink/renderer/platform/loader/fetch/resource_request.h
+++ b/third_party/blink/renderer/platform/loader/fetch/resource_request.h
@@ -83,7 +83,6 @@
       const KURL& new_url,
       const AtomicString& new_method,
       const KURL& new_site_for_cookies,
-      scoped_refptr<const SecurityOrigin> new_top_frame_origin,
       const String& new_referrer,
       network::mojom::ReferrerPolicy new_referrer_policy,
       bool skip_service_worker) const;
diff --git a/third_party/blink/renderer/platform/loader/fetch/resource_request_test.cc b/third_party/blink/renderer/platform/loader/fetch/resource_request_test.cc
index 188cbd4e..ffb5fbc 100644
--- a/third_party/blink/renderer/platform/loader/fetch/resource_request_test.cc
+++ b/third_party/blink/renderer/platform/loader/fetch/resource_request_test.cc
@@ -33,28 +33,11 @@
   std::unique_ptr<ResourceRequest> redirect_request =
       original.CreateRedirectRequest(
           KURL("https://example.test/redirect"), original.HttpMethod(),
-          original.SiteForCookies(), original.TopFrameOrigin(),
-          original.HttpReferrer(), original.GetReferrerPolicy(),
-          original.GetSkipServiceWorker());
+          original.SiteForCookies(), original.HttpReferrer(),
+          original.GetReferrerPolicy(), original.GetSkipServiceWorker());
   EXPECT_TRUE(redirect_request->IsAdResource());
 }
 
-TEST(ResourceRequestTest, SetTopFrameURL) {
-  KURL url("http://example.com");
-  scoped_refptr<SecurityOrigin> origin = SecurityOrigin::Create(url);
-  ResourceRequest original;
-  original.SetTopFrameOrigin(origin);
-
-  // Should persist across redirects.
-  std::unique_ptr<ResourceRequest> redirect_request =
-      original.CreateRedirectRequest(
-          KURL("https://example.test/redirect"), original.HttpMethod(),
-          original.SiteForCookies(), original.TopFrameOrigin(),
-          original.HttpReferrer(), original.GetReferrerPolicy(),
-          original.GetSkipServiceWorker());
-  EXPECT_EQ(origin, redirect_request->TopFrameOrigin());
-}
-
 TEST(ResourceRequestTest, UpgradeIfInsecureAcrossRedirects) {
   ResourceRequest original;
   EXPECT_FALSE(original.UpgradeIfInsecure());
@@ -65,9 +48,8 @@
   std::unique_ptr<ResourceRequest> redirect_request =
       original.CreateRedirectRequest(
           KURL("https://example.test/redirect"), original.HttpMethod(),
-          original.SiteForCookies(), original.TopFrameOrigin(),
-          original.HttpReferrer(), original.GetReferrerPolicy(),
-          original.GetSkipServiceWorker());
+          original.SiteForCookies(), original.HttpReferrer(),
+          original.GetReferrerPolicy(), original.GetSkipServiceWorker());
   EXPECT_TRUE(redirect_request->UpgradeIfInsecure());
 }
 
diff --git a/third_party/blink/renderer/platform/testing/weburl_loader_mock.cc b/third_party/blink/renderer/platform/testing/weburl_loader_mock.cc
index 49f71b9..b389c9c 100644
--- a/third_party/blink/renderer/platform/testing/weburl_loader_mock.cc
+++ b/third_party/blink/renderer/platform/testing/weburl_loader_mock.cc
@@ -78,8 +78,7 @@
 
   bool report_raw_headers = false;
   bool follow = client_->WillFollowRedirect(
-      redirect_url, redirect_url,
-      WebSecurityOrigin::Create(WebURL(redirect_url)), WebString(),
+      redirect_url, redirect_url, WebString(),
       network::mojom::ReferrerPolicy::kDefault, request.HttpMethod(),
       redirect_response, report_raw_headers);
   // |this| might be deleted in willFollowRedirect().
diff --git a/third_party/blink/web_tests/WebDriverExpectations b/third_party/blink/web_tests/WebDriverExpectations
index 2d51ecd..6334604 100644
--- a/third_party/blink/web_tests/WebDriverExpectations
+++ b/third_party/blink/web_tests/WebDriverExpectations
@@ -69,15 +69,6 @@
 crbug.com/977228 [ Linux ] external/wpt/webdriver/tests/element_click/scroll_into_view.py>>test_partially_visible_does_not_scroll[8] [ Failure Pass ]
 crbug.com/977228 [ Linux ] external/wpt/webdriver/tests/element_click/scroll_into_view.py>>test_partially_visible_does_not_scroll[9] [ Failure Pass ]
 crbug.com/977228 [ Linux ] external/wpt/webdriver/tests/element_click/scroll_into_view.py>>test_scroll_into_view [ Failure Pass ]
-crbug.com/999814 [ Linux ] external/wpt/webdriver/tests/perform_actions/pointer_origin.py>>test_viewport_inside [ Failure Pass ]
-crbug.com/999814 [ Linux ] external/wpt/webdriver/tests/perform_actions/pointer_origin.py>>test_viewport_outside [ Failure Pass ]
-crbug.com/999814 [ Linux ] external/wpt/webdriver/tests/perform_actions/pointer_origin.py>>test_pointer_inside [ Failure Pass ]
-crbug.com/999814 [ Linux ] external/wpt/webdriver/tests/perform_actions/pointer_origin.py>>test_pointer_outside [ Failure Pass ]
-crbug.com/999814 [ Linux ] external/wpt/webdriver/tests/perform_actions/pointer_origin.py>>test_element_center_point [ Failure Pass ]
-crbug.com/999814 [ Linux ] external/wpt/webdriver/tests/perform_actions/pointer_origin.py>>test_element_center_point_with_offset [ Failure Pass ]
-crbug.com/999814 [ Linux ] external/wpt/webdriver/tests/perform_actions/pointer_origin.py>>test_element_in_view_center_point_partly_visible [ Failure Pass ]
-crbug.com/999814 [ Linux ] external/wpt/webdriver/tests/perform_actions/pointer_origin.py>>test_element_larger_than_viewport [ Failure Pass ]
-crbug.com/999814 [ Linux ] external/wpt/webdriver/tests/perform_actions/pointer_origin.py>>test_element_outside_of_view_port [ Failure Pass ]
 
 # ====== New tests from wpt-importer added here ======
 crbug.com/626703 [ Linux ] external/wpt/webdriver/tests/interface.html [ Failure ]
diff --git a/third_party/blink/web_tests/external/WPT_BASE_MANIFEST_6.json b/third_party/blink/web_tests/external/WPT_BASE_MANIFEST_6.json
index 13b88ae4..8586359 100644
--- a/third_party/blink/web_tests/external/WPT_BASE_MANIFEST_6.json
+++ b/third_party/blink/web_tests/external/WPT_BASE_MANIFEST_6.json
@@ -50441,6 +50441,30 @@
      {}
     ]
    ],
+   "css/css-grid/grid-items/grid-items-percentage-margins-003.html": [
+    [
+     "css/css-grid/grid-items/grid-items-percentage-margins-003.html",
+     [
+      [
+       "/css/reference/ref-filled-green-100px-square.xht",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
+   "css/css-grid/grid-items/grid-items-percentage-margins-004.html": [
+    [
+     "css/css-grid/grid-items/grid-items-percentage-margins-004.html",
+     [
+      [
+       "/css/reference/ref-filled-green-100px-square.xht",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
    "css/css-grid/grid-items/grid-items-sizing-alignment-001.html": [
     [
      "css/css-grid/grid-items/grid-items-sizing-alignment-001.html",
@@ -132826,6 +132850,9 @@
    "css/css-backgrounds/parsing/background-image-computed.sub-expected.txt": [
     []
    ],
+   "css/css-backgrounds/parsing/background-invalid-expected.txt": [
+    []
+   ],
    "css/css-backgrounds/parsing/background-position-computed-expected.txt": [
     []
    ],
@@ -150517,6 +150544,9 @@
    "css/motion/offset-rotate-ref.html": [
     []
    ],
+   "css/motion/parsing/offset-path-computed-expected.txt": [
+    []
+   ],
    "css/motion/parsing/offset-path-parsing-valid-expected.txt": [
     []
    ],
@@ -156004,6 +156034,9 @@
    "geolocation-API/getCurrentPosition_permission_allow.https-expected.txt": [
     []
    ],
+   "geolocation-API/idlharness.https.window-expected.txt": [
+    []
+   ],
    "geolocation-API/support.js": [
     []
    ],
@@ -177073,6 +177106,9 @@
    "web-share/resources/manual-helper.js": [
     []
    ],
+   "web-share/share-sharePromise-internal-slot.https-expected.txt": [
+    []
+   ],
    "webaudio/.gitignore": [
     []
    ],
@@ -203247,6 +203283,12 @@
      {}
     ]
    ],
+   "css/CSS2/linebox/vertical-align-top-bottom-001.html": [
+    [
+     "css/CSS2/linebox/vertical-align-top-bottom-001.html",
+     {}
+    ]
+   ],
    "css/CSS2/linebox/video-needs-layout-crash.html": [
     [
      "css/CSS2/linebox/video-needs-layout-crash.html",
@@ -203319,6 +203361,12 @@
      {}
     ]
    ],
+   "css/CSS2/positioning/inline-static-position-001.html": [
+    [
+     "css/CSS2/positioning/inline-static-position-001.html",
+     {}
+    ]
+   ],
    "css/css-align/animation/column-gap-interpolation.html": [
     [
      "css/css-align/animation/column-gap-interpolation.html",
@@ -206435,6 +206483,12 @@
      {}
     ]
    ],
+   "css/css-fonts/parsing/font-computed.html": [
+    [
+     "css/css-fonts/parsing/font-computed.html",
+     {}
+    ]
+   ],
    "css/css-fonts/parsing/font-family-computed.html": [
     [
      "css/css-fonts/parsing/font-family-computed.html",
@@ -209145,6 +209199,12 @@
      {}
     ]
    ],
+   "css/css-lists/inherit-overwrites.html": [
+    [
+     "css/css-lists/inherit-overwrites.html",
+     {}
+    ]
+   ],
    "css/css-lists/inheritance.html": [
     [
      "css/css-lists/inheritance.html",
@@ -220885,6 +220945,12 @@
      {}
     ]
    ],
+   "css/motion/parsing/offset-anchor-computed.html": [
+    [
+     "css/motion/parsing/offset-anchor-computed.html",
+     {}
+    ]
+   ],
    "css/motion/parsing/offset-anchor-parsing-invalid.html": [
     [
      "css/motion/parsing/offset-anchor-parsing-invalid.html",
@@ -220897,6 +220963,12 @@
      {}
     ]
    ],
+   "css/motion/parsing/offset-distance-computed.html": [
+    [
+     "css/motion/parsing/offset-distance-computed.html",
+     {}
+    ]
+   ],
    "css/motion/parsing/offset-distance-parsing-invalid.html": [
     [
      "css/motion/parsing/offset-distance-parsing-invalid.html",
@@ -220921,6 +220993,12 @@
      {}
     ]
    ],
+   "css/motion/parsing/offset-path-computed.html": [
+    [
+     "css/motion/parsing/offset-path-computed.html",
+     {}
+    ]
+   ],
    "css/motion/parsing/offset-path-parsing-invalid.html": [
     [
      "css/motion/parsing/offset-path-parsing-invalid.html",
@@ -220933,6 +221011,12 @@
      {}
     ]
    ],
+   "css/motion/parsing/offset-position-computed.html": [
+    [
+     "css/motion/parsing/offset-position-computed.html",
+     {}
+    ]
+   ],
    "css/motion/parsing/offset-position-parsing-invalid.html": [
     [
      "css/motion/parsing/offset-position-parsing-invalid.html",
@@ -239400,9 +239484,9 @@
      {}
     ]
    ],
-   "geolocation-API/idlharness.window.js": [
+   "geolocation-API/idlharness.https.window.js": [
     [
-     "geolocation-API/idlharness.window.html",
+     "geolocation-API/idlharness.https.window.html",
      {
       "script_metadata": [
        [
@@ -301423,6 +301507,14 @@
      {}
     ]
    ],
+   "web-share/share-sharePromise-internal-slot.https.html": [
+    [
+     "web-share/share-sharePromise-internal-slot.https.html",
+     {
+      "testdriver": true
+     }
+    ]
+   ],
    "web-share/share-url-invalid.https.html": [
     [
      "web-share/share-url-invalid.https.html",
@@ -321724,15 +321816,15 @@
  },
  "paths": {
   ".github/workflows/pull_request.yml": [
-   "8f3940a291b25f48e578b22dc68f7cf94ce32202",
+   "9d288c0c9209904091a9b66b9334929aee02c3c7",
    "support"
   ],
   ".github/workflows/push-build-publish-documentation-website.yml": [
-   "de226d173fb300dd07e4ff5855b3fa2b7325434b",
+   "167e0d930f4da142ffab22b8c685119495c52702",
    "support"
   ],
   ".github/workflows/push-build-release-manifest.yml": [
-   "6c97a2f7b9f952a41df100a9982e31617498347b",
+   "af677454fdd2cf692929c68ef80bcfe8fb52b69f",
    "support"
   ],
   ".gitignore": [
@@ -340871,6 +340963,10 @@
    "80100809b3490a336dbbb08d79275d011da46d92",
    "reftest"
   ],
+  "css/CSS2/linebox/vertical-align-top-bottom-001.html": [
+   "c08674da4b359800ce7f1821dd36277a74a780f3",
+   "testharness"
+  ],
   "css/CSS2/linebox/vertical-align-top-bottom-padding-ref.html": [
    "f855bab6a2f4a8845aebd98fb33b7c9e0d4adc8c",
    "support"
@@ -346491,6 +346587,10 @@
    "c74a27be78db56c8313327857b5cdac800b98a25",
    "visual"
   ],
+  "css/CSS2/positioning/inline-static-position-001.html": [
+   "d5695bd75246f9482ee6250213c38a7311919ec5",
+   "testharness"
+  ],
   "css/CSS2/positioning/left-004-ref.xht": [
    "237186090738866c86455de96d580e7afe02f8c3",
    "support"
@@ -355047,8 +355147,12 @@
    "51c67b96ccb52ac09ef6d78e598506317ff784ab",
    "testharness"
   ],
+  "css/css-backgrounds/parsing/background-invalid-expected.txt": [
+   "4e890e2d1a745f42c8feed70f21e1be0d617182f",
+   "support"
+  ],
   "css/css-backgrounds/parsing/background-invalid.html": [
-   "4ea58da801961ba9c8a315ebb0b1de846e16f889",
+   "76ff18f35d1f7471f165c61d731f8838a8563059",
    "testharness"
   ],
   "css/css-backgrounds/parsing/background-origin-computed.html": [
@@ -364159,6 +364263,10 @@
    "56cb1eca09d7741275df03ea217e2b31acb04371",
    "testharness"
   ],
+  "css/css-fonts/parsing/font-computed.html": [
+   "b3f104e62439d48d167559cfd2aeb5e509991f82",
+   "testharness"
+  ],
   "css/css-fonts/parsing/font-family-computed-expected.txt": [
    "c937bbbe523b0f57c4c98912eaf40b14bf2a38e1",
    "support"
@@ -372863,6 +372971,14 @@
    "e45530b2fd4a380ba62c3b42ba52157cec098a00",
    "testharness"
   ],
+  "css/css-grid/grid-items/grid-items-percentage-margins-003.html": [
+   "dba467c17a82f02d6c5250b54c832c815994ef76",
+   "reftest"
+  ],
+  "css/css-grid/grid-items/grid-items-percentage-margins-004.html": [
+   "5a3da68572ce70b8a97db7f337379ce0a4a7d652",
+   "reftest"
+  ],
   "css/css-grid/grid-items/grid-items-percentage-margins-vertical-lr-001.html": [
    "aa0ff96985878c5f21d7e7a8175b1351e9841656",
    "testharness"
@@ -374971,6 +375087,10 @@
    "a4792599826cf13bb40a70c36d850e6593fbce55",
    "reftest"
   ],
+  "css/css-lists/inherit-overwrites.html": [
+   "d1f8072993abf47b2944f7e90c29390dae44af5c",
+   "testharness"
+  ],
   "css/css-lists/inheritance.html": [
    "590319d63fd09466f4d5fffe6943b4ff0430fcee",
    "testharness"
@@ -377868,11 +377988,11 @@
    "reftest"
   ],
   "css/css-multicol/multicol-span-all-children-height-006-ref.html": [
-   "e34036b008b6d30fe5784a5519e54b52412590e5",
+   "85dfa522c7de9152020342ddb67484b7f1e6977b",
    "support"
   ],
   "css/css-multicol/multicol-span-all-children-height-006.html": [
-   "dd63cd8716f58c4cae15b894196081607c1cb4fd",
+   "479fb2d0ced056f24b39126fa29574a6a811f8e6",
    "reftest"
   ],
   "css/css-multicol/multicol-span-all-children-height-007-ref.html": [
@@ -414359,6 +414479,10 @@
    "907694f7fc32ebb1c44787fcfbf5980627d2919e",
    "testharness"
   ],
+  "css/motion/parsing/offset-anchor-computed.html": [
+   "fc9ddb3d0c05030ce63951ad1b3d0867a507950e",
+   "testharness"
+  ],
   "css/motion/parsing/offset-anchor-parsing-invalid.html": [
    "af32ae2c5a588131d2404836af50cd114030c5b3",
    "testharness"
@@ -414367,6 +414491,10 @@
    "6cb4d44117fa6361fc87efdee22e79bc6df749b5",
    "testharness"
   ],
+  "css/motion/parsing/offset-distance-computed.html": [
+   "e9de1ef255f4936b8a5ae18121e62b8bd8061ad4",
+   "testharness"
+  ],
   "css/motion/parsing/offset-distance-parsing-invalid.html": [
    "2d0be83e03b455813bc3107ba758d9108081e935",
    "testharness"
@@ -414383,6 +414511,14 @@
    "3fe8a5b20d805ae3d330b8c653593b6b0c0e0d9e",
    "testharness"
   ],
+  "css/motion/parsing/offset-path-computed-expected.txt": [
+   "6138a7e1e1119c7973183e3f89ffcffa413759d1",
+   "support"
+  ],
+  "css/motion/parsing/offset-path-computed.html": [
+   "95210dd2376722f32d846bf033921c504ed2705c",
+   "testharness"
+  ],
   "css/motion/parsing/offset-path-parsing-invalid.html": [
    "c69f7c81a9d479c2334769b85d0553f659b8bd83",
    "testharness"
@@ -414395,6 +414531,10 @@
    "0ed360f6e369e5b53ae4ae0b1b535a7ff8e31ca9",
    "testharness"
   ],
+  "css/motion/parsing/offset-position-computed.html": [
+   "1cbdbdb0fe212c229c3b627cf6790a59a517a8bb",
+   "testharness"
+  ],
   "css/motion/parsing/offset-position-parsing-invalid.html": [
    "5e749e5b4ec5fe9bb39d1135a9ae74c524677e26",
    "testharness"
@@ -430928,75 +431068,75 @@
    "support"
   ],
   "forced-colors-mode/backplate/forced-colors-mode-backplate-01-ref.html": [
-   "d7a04936d58bac36f7bca4c8c87e1f83a23fef2e",
+   "387aecacfb52afb1c6fe9c9fb535076e18e195ba",
    "support"
   ],
   "forced-colors-mode/backplate/forced-colors-mode-backplate-01.html": [
-   "0e627b98a1fcd3bf2f4bcce11a4c0ed0b3730664",
+   "05d362328a30c22324870626766a2f2c71465b5d",
    "reftest"
   ],
   "forced-colors-mode/backplate/forced-colors-mode-backplate-02-ref.html": [
-   "51109a8c696ab8ba66754608d4b4d02d50301e64",
+   "36bfaef0eeef70a7df21e6574bf06a26648b4d74",
    "support"
   ],
   "forced-colors-mode/backplate/forced-colors-mode-backplate-02.html": [
-   "b8a498e0ff3225ed19487b34f9759f67cbf0cd99",
+   "cf521533c9e244d43edbb586cc66ffa22bb82bc6",
    "reftest"
   ],
   "forced-colors-mode/backplate/forced-colors-mode-backplate-03-ref.html": [
-   "c9894d85b533271869737499eb4585402d809937",
+   "81659a026c7af5dabc383965b2ce7d21dc19fae9",
    "support"
   ],
   "forced-colors-mode/backplate/forced-colors-mode-backplate-03.html": [
-   "f0ec227d4de8d7d67650e4a95b7510759eacd950",
+   "936332a2d17be8800d1771e01c84dc0a3dc02662",
    "reftest"
   ],
   "forced-colors-mode/backplate/forced-colors-mode-backplate-04-ref.html": [
-   "9fefe5e41065e3e047db3dcd7ee4197e3cb80c7a",
+   "f1fda49bf9b55205ab1e2b0e2eb578d67e952811",
    "support"
   ],
   "forced-colors-mode/backplate/forced-colors-mode-backplate-04.html": [
-   "82d1a79cff7207f0a8c12f5755113cb75d613993",
+   "c9b8136fdf9b8179ff5b60231532b3ed6c7c4476",
    "reftest"
   ],
   "forced-colors-mode/backplate/forced-colors-mode-backplate-05-ref.html": [
-   "82014853f5db2583984a634d7fcdf6855b214877",
+   "e3665525188f7647c01449f097ea1d685bbfa4ef",
    "support"
   ],
   "forced-colors-mode/backplate/forced-colors-mode-backplate-05.html": [
-   "7a7f60d1f517e50b8f9ca7fd3ccf9a3574683deb",
+   "69ab33b23eb3a74232eaf6708da4f5be4488f522",
    "reftest"
   ],
   "forced-colors-mode/backplate/forced-colors-mode-backplate-06-ref.html": [
-   "98a660bcfa037494f3cddffe7cedb4a117053d24",
+   "a7cc320334db77409bd1bb70a6d3ff037e37a3ff",
    "support"
   ],
   "forced-colors-mode/backplate/forced-colors-mode-backplate-06.html": [
-   "d16593b04e037c01530d424181c07df33c29a98c",
+   "c45a25a540b12fcbd87e078d5d084d65f57bbf85",
    "reftest"
   ],
   "forced-colors-mode/backplate/forced-colors-mode-backplate-08-ref.html": [
-   "87a750d5c3f7385eb203208e8ac2f8263ae7854e",
+   "ff2c8de952bb5b584756b7f2fd4462fec70f0cfb",
    "support"
   ],
   "forced-colors-mode/backplate/forced-colors-mode-backplate-08.html": [
-   "87517685114b9aac82a9f431b4406a8fc68856d7",
+   "829d73900ce3eba7173e129558256cfdfd5a78c3",
    "reftest"
   ],
   "forced-colors-mode/backplate/forced-colors-mode-backplate-09-ref.html": [
-   "fd1558e11b01879a13c97b04c1598997841d52f1",
+   "1e7aed22429261a64a3276097ebcb60028b35a3f",
    "support"
   ],
   "forced-colors-mode/backplate/forced-colors-mode-backplate-09.html": [
-   "f5cdf942907d9e9f35a725571a6d92120ebfc620",
+   "4e9f517e08f3a16bbdc5b850305e4e0bfd7a7ee2",
    "reftest"
   ],
   "forced-colors-mode/backplate/forced-colors-mode-backplate-10-ref.html": [
-   "386313392b3fa3c86f2bd578020731d4937fc802",
+   "78148be9b865a274dbeca71e9798958fcbc2d818",
    "support"
   ],
   "forced-colors-mode/backplate/forced-colors-mode-backplate-10.html": [
-   "c6fa7928e13421f77221e1760559ef3cbc77cba0",
+   "cc7f977212bea378864c3668d57e57593ed190c1",
    "reftest"
   ],
   "forced-colors-mode/forced-colors-mode-01-ref.html": [
@@ -431523,7 +431663,11 @@
    "50129608ac7e6e8d64e6dd966eda1172b5929a70",
    "testharness"
   ],
-  "geolocation-API/idlharness.window.js": [
+  "geolocation-API/idlharness.https.window-expected.txt": [
+   "5f60ebaf31a337874f940db5963fee823f2cd241",
+   "support"
+  ],
+  "geolocation-API/idlharness.https.window.js": [
    "fe4ac8895dfb6e889eded7d694e3c87905868b4f",
    "testharness"
   ],
@@ -453464,7 +453608,7 @@
    "support"
   ],
   "interfaces/geolocation-API.idl": [
-   "802e76ce85fed6b9ac5bf8d139b79ea8612182ed",
+   "e8dd1526fd071eb0ffe32f21d624d41c0ccfd1cd",
    "support"
   ],
   "interfaces/geolocation-sensor.idl": [
@@ -453628,7 +453772,7 @@
    "support"
   ],
   "interfaces/presentation-api.idl": [
-   "6ce0f5623ff1291406ca2d6191913a6df0b21c65",
+   "c1e566538aa0211ecebbd8d177765fc1dd02c2ce",
    "support"
   ],
   "interfaces/proximity.idl": [
@@ -453636,7 +453780,7 @@
    "support"
   ],
   "interfaces/push-api.idl": [
-   "74725a3025680c91af9d44d6aec80b89519d217f",
+   "419fe25e08b95eb45b0bb5da7e0aceb18163c1bf",
    "support"
   ],
   "interfaces/referrer-policy.idl": [
@@ -453664,7 +453808,7 @@
    "support"
   ],
   "interfaces/screen-capture.idl": [
-   "b5b0067650d3e6de5fa78991409a3744a1995066",
+   "4936ee9a519562d27531e7a4eeb28b76322d9486",
    "support"
   ],
   "interfaces/screen-orientation.idl": [
@@ -455548,7 +455692,7 @@
    "testharness"
   ],
   "mathml/relations/html5-tree/clipboard-event-handlers.tentative.html": [
-   "042603416fb0d1b2c348767f8a1129f581990f4f",
+   "57ababb4a919d8a5ba876c9ecf7a72c7a113b676",
    "testharness"
   ],
   "mathml/relations/html5-tree/color-attributes-1-ref.html": [
@@ -455560,7 +455704,7 @@
    "reftest"
   ],
   "mathml/relations/html5-tree/css-inline-style-dynamic.tentative-ref.html": [
-   "13f0139273690992825daa68fcc0666679590490",
+   "19f3e6c82aa80a395b5d24c069303b7b9b4cf41a",
    "support"
   ],
   "mathml/relations/html5-tree/css-inline-style-dynamic.tentative.html": [
@@ -455636,7 +455780,7 @@
    "testharness"
   ],
   "mathml/relations/html5-tree/math-global-event-handlers.tentative.html": [
-   "807a29ee315f2a0d4680b693bb9137a6cd50ca1c",
+   "b5b9c75dac1c6c09b4bc74c464f468c681b43b4e",
    "testharness"
   ],
   "mathml/relations/html5-tree/required-extensions-2-ref.html": [
@@ -466596,7 +466740,7 @@
    "testharness"
   ],
   "orientation-event/META.yml": [
-   "ba1811f6742078a6d05139527ac3873539a7d7ce",
+   "88014849d067082afcb56964bc3446ba93350c1b",
    "support"
   ],
   "orientation-event/OWNERS": [
@@ -480556,7 +480700,7 @@
    "support"
   ],
   "scroll-to-text-fragment/scroll-to-text-fragment.html": [
-   "21db280dc90eb21613f152520725f3436b1e8118",
+   "3e3cfcbbb5bdf9f9e7715f7c3c300211bfb1ab92",
    "testharness"
   ],
   "secure-contexts/META.yml": [
@@ -489304,7 +489448,7 @@
    "support"
   ],
   "tools/ci/run_tc.py": [
-   "18168446f56499bfed09900599814c1238517f94",
+   "ea4a1ac1a6ac4a9a2b2a0265e74c70dc5fdc957d",
    "support"
   ],
   "tools/ci/taskcluster-run.py": [
@@ -493596,7 +493740,7 @@
    "support"
   ],
   "tools/wpt/android.py": [
-   "1dc057ff502f2539afb848b45752ea5a2c3ddc61",
+   "51deb71e316538148e06b146bca7555fb7b046df",
    "support"
   ],
   "tools/wpt/browser.py": [
@@ -493632,11 +493776,11 @@
    "support"
   ],
   "tools/wpt/run.py": [
-   "0bccc687b7c044648d1270fff0def31d3f5a8796",
+   "b52137ec9fa4e7ced12982e4a8929392bb0c8b3b",
    "support"
   ],
   "tools/wpt/testfiles.py": [
-   "b5a0e6457398c840c368cfbd8e28e1450de1c8b4",
+   "cf12a59c8e68a70f782563a81c1511242962edf3",
    "support"
   ],
   "tools/wpt/tox.ini": [
@@ -494012,7 +494156,7 @@
    "support"
   ],
   "tools/wptrunner/wptrunner/testrunner.py": [
-   "c6dbd70f1bfdcf00706317c1315a16a0a6128b2a",
+   "5c0c60a07a9613d70ac2f2166de753dc0a007a56",
    "support"
   ],
   "tools/wptrunner/wptrunner/update/__init__.py": [
@@ -494040,7 +494184,7 @@
    "support"
   ],
   "tools/wptrunner/wptrunner/update/update.py": [
-   "c4f1e7e93ec5b93efede7853103cb48ff52c0767",
+   "96302ee267e905aa8a48af12b65978e025ebd492",
    "support"
   ],
   "tools/wptrunner/wptrunner/vcs.py": [
@@ -494116,7 +494260,7 @@
    "support"
   ],
   "tools/wptrunner/wptrunner/wptrunner.py": [
-   "6b4e70b30468618f71378c3be7c4779d79dbe6c1",
+   "8dcdcdebe154fc09087624f20f802a8b2e0717d7",
    "support"
   ],
   "tools/wptrunner/wptrunner/wpttest.py": [
@@ -494184,7 +494328,7 @@
    "support"
   ],
   "tools/wptserve/wptserve/server.py": [
-   "e58b4acd7195d798bd829ce0d10e8d4d1986e253",
+   "c037732a6baef31d58b3dff927b074dfcfabb4ff",
    "support"
   ],
   "tools/wptserve/wptserve/sslutils/__init__.py": [
@@ -494400,7 +494544,7 @@
    "testharness"
   ],
   "trusted-types/block-eval.tentative.html": [
-   "cd4f5827c5331318a86dc71a42bc9eb037eb5b95",
+   "f7d7132505fa42fb4e244a9d6e512c153e56dfbf",
    "testharness"
   ],
   "trusted-types/block-string-assignment-to-DOMParser-parseFromString.tentative.html": [
@@ -494508,7 +494652,7 @@
    "support"
   ],
   "trusted-types/trusted-types-eval-reporting-no-unsafe-eval.tentative.https.html": [
-   "f60bb9fe5140297b324e7e618c6c0230890feb30",
+   "dc8653617504f5ed895789cff92c2553dce972e7",
    "testharness"
   ],
   "trusted-types/trusted-types-eval-reporting-no-unsafe-eval.tentative.https.html.headers": [
@@ -496919,6 +497063,14 @@
    "8139c411e128f6fc556e6f1d63682e066cb39992",
    "testharness"
   ],
+  "web-share/share-sharePromise-internal-slot.https-expected.txt": [
+   "a2c76d3c1b941d6670baf010b037f79c9da3d7e1",
+   "support"
+  ],
+  "web-share/share-sharePromise-internal-slot.https.html": [
+   "5a71eaa4abf359008d84d1f219083ec1a91a6458",
+   "testharness"
+  ],
   "web-share/share-simple-manual.html": [
    "d88beda83c621fb78888557a97b1ff5a2bc08ed0",
    "manual"
diff --git a/third_party/blink/web_tests/external/wpt/.github/workflows/pull_request.yml b/third_party/blink/web_tests/external/wpt/.github/workflows/pull_request.yml
index 8f3940a2..9d288c0 100644
--- a/third_party/blink/web_tests/external/wpt/.github/workflows/pull_request.yml
+++ b/third_party/blink/web_tests/external/wpt/.github/workflows/pull_request.yml
@@ -2,9 +2,9 @@
 name: Synchronize the Pull Request Preview
 jobs:
   update-pr-preview:
-    runs-on: ubuntu-latest
+    runs-on: ubuntu-18.04
     steps:
-    - uses: actions/checkout@v1.0.0
+    - uses: actions/checkout@v1
       with:
         ref: refs/heads/master
         fetch-depth: 1
diff --git a/third_party/blink/web_tests/external/wpt/.github/workflows/push-build-publish-documentation-website.yml b/third_party/blink/web_tests/external/wpt/.github/workflows/push-build-publish-documentation-website.yml
index de226d17..167e0d9 100644
--- a/third_party/blink/web_tests/external/wpt/.github/workflows/push-build-publish-documentation-website.yml
+++ b/third_party/blink/web_tests/external/wpt/.github/workflows/push-build-publish-documentation-website.yml
@@ -1,10 +1,15 @@
-on: push
+on:
+  push:
+    branches:
+      - master
 name: Build & Publish Documentation Website
 jobs:
   website-build-and-publish:
-    runs-on: ubuntu-latest
+    runs-on: ubuntu-18.04
     steps:
-    - uses: actions/checkout@master
+    - uses: actions/checkout@v1
+      with:
+        fetch-depth: 1
     - name: website-build-and-publish
       uses: ./tools/docker/documentation
       env:
diff --git a/third_party/blink/web_tests/external/wpt/.github/workflows/push-build-release-manifest.yml b/third_party/blink/web_tests/external/wpt/.github/workflows/push-build-release-manifest.yml
index 6c97a2f..af67745 100644
--- a/third_party/blink/web_tests/external/wpt/.github/workflows/push-build-release-manifest.yml
+++ b/third_party/blink/web_tests/external/wpt/.github/workflows/push-build-release-manifest.yml
@@ -1,10 +1,15 @@
-on: push
+on:
+  push:
+    branches:
+      - master
 name: Build & Release Manifest
 jobs:
   manifest-build-and-tag:
-    runs-on: ubuntu-latest
+    runs-on: ubuntu-18.04
     steps:
-    - uses: actions/checkout@master
+    - uses: actions/checkout@v1
+      with:
+        fetch-depth: 1
     - name: manifest-build-and-tag
       uses: ./tools/docker/github
       env:
diff --git a/third_party/blink/web_tests/external/wpt/css/CSS2/linebox/vertical-align-top-bottom-001.html b/third_party/blink/web_tests/external/wpt/css/CSS2/linebox/vertical-align-top-bottom-001.html
new file mode 100644
index 0000000..c08674d
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/CSS2/linebox/vertical-align-top-bottom-001.html
@@ -0,0 +1,82 @@
+<!DOCTYPE html>
+<link rel="help" href="https://drafts.csswg.org/css2/visudet.html#propdef-vertical-align" />
+<link rel="author" href="mailto:kojii@chromium.org">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<style>
+section.test {
+  display: inline-block;
+  font-size: 20px;
+  line-height: 1.5;
+  font-family: Arial;
+  font-family: Ahem;
+}
+section.test > div {
+  background: blue;
+  margin-bottom: 1em;
+}
+.filler {
+  display: inline-block;
+  background: cyan;
+  height: 3em;
+  width: 1em;
+}
+.target {
+  display: inline-block;
+  background: orange;
+  width: 1em;
+  height: 1em;
+}
+div.top, section.top .target { vertical-align: top; }
+div.text-top, section.text-top .target { vertical-align: text-top; }
+div.text-bottom, section.text-bottom .target { vertical-align: text-bottom; }
+div.bottom, section.bottom .target { vertical-align: bottom; }
+.test .fail {
+  outline: red solid 5px;
+}
+</style>
+<body>
+<section class="test top">
+  <div><div class="filler"></div><div class="target" data-y="0"></div></div>
+  <div><div class="filler top"></div><div class="target" data-y="0"></div></div>
+  <div><div class="filler text-top"></div><div class="target" data-y="0"></div></div>
+  <div><div class="filler bottom"></div><div class="target" data-y="0"></div></div>
+  <div><div class="filler text-bottom"></div><div class="target" data-y="0"></div></div>
+</section>
+<section class="test text-top">
+  <div><div class="filler"></div><div class="target" data-y="44"></div></div>
+  <div><div class="filler top"></div><div class="target" data-y="5"></div></div>
+  <div><div class="filler text-top"></div><div class="target" data-y="5"></div></div>
+  <div><div class="filler bottom"></div><div class="target" data-y="35"></div></div>
+  <div><div class="filler text-bottom"></div><div class="target" data-y="40"></div></div>
+</section>
+<section class="test text-bottom">
+  <div><div class="filler"></div><div class="target" data-y="44"></div></div>
+  <div><div class="filler top"></div><div class="target" data-y="5"></div></div>
+  <div><div class="filler text-top"></div><div class="target" data-y="5"></div></div>
+  <div><div class="filler bottom"></div><div class="target" data-y="35"></div></div>
+  <div><div class="filler text-bottom"></div><div class="target" data-y="40"></div></div>
+</section>
+<section class="test bottom">
+  <div><div class="filler"></div><div class="target" data-y="49"></div></div>
+  <div><div class="filler top"></div><div class="target" data-y="40"></div></div>
+  <div><div class="filler text-top"></div><div class="target" data-y="45"></div></div>
+  <div><div class="filler bottom"></div><div class="target" data-y="40"></div></div>
+  <div><div class="filler text-bottom"></div><div class="target" data-y="45"></div></div>
+</section>
+<script>
+for (let target of document.getElementsByClassName('target')) {
+  let container = target.parentElement;
+  let filler = container.firstElementChild;
+  let section = container.parentElement;
+  let pass = false;
+  test(() => {
+    let y = target.offsetTop - container.offsetTop;
+    assert_approx_equals(y, target.dataset.y, 0);
+    pass = true;
+  }, `${section.className.substr(5)}+${filler.className.substr(7)}`);
+  if (!pass)
+    container.classList.add('fail');
+}
+</script>
+</body>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-backgrounds/animations/background-position-interpolation.html b/third_party/blink/web_tests/external/wpt/css/css-backgrounds/animations/background-position-interpolation.html
index 35100fb..2e7f2e2 100644
--- a/third_party/blink/web_tests/external/wpt/css/css-backgrounds/animations/background-position-interpolation.html
+++ b/third_party/blink/web_tests/external/wpt/css/css-backgrounds/animations/background-position-interpolation.html
@@ -45,18 +45,20 @@
   {at: 1.25, expect:  '90px 90px, 90px 90px, 90px 90px, 90px 90px'},
 ]);
 
+// background-position's initial value is 0% 0%, and calcs involving percentages
+// are never resolved by the calc spec (even when the percentage is 0%).
 test_interpolation({
   property: 'background-position',
   from: 'initial',
   to: '80px 80px, 80px 80px, 80px 80px, 80px 80px',
 }, [
-  {at: -0.25, expect: '-20px -20px, -20px -20px, -20px -20px, -20px -20px'},
-  {at: 0, expect:     '  0%    0% ,   0%    0% ,   0%    0% ,   0%    0% '}, // TODO(alancutter): Should these be 0px?
-  {at: 0.25, expect:  ' 20px  20px,  20px  20px,  20px  20px,  20px  20px'},
-  {at: 0.5, expect:   ' 40px  40px,  40px  40px,  40px  40px,  40px  40px'},
-  {at: 0.75, expect:  ' 60px  60px,  60px  60px,  60px  60px,  60px  60px'},
-  {at: 1, expect:     ' 80px  80px,  80px  80px,  80px  80px,  80px  80px'},
-  {at: 1.25, expect:  '100px 100px, 100px 100px, 100px 100px, 100px 100px'},
+  {at: -0.25, expect: 'calc(0% - 20px)  calc(0% - 20px),  calc(0% - 20px)  calc(0% - 20px),  calc(0% - 20px)  calc(0% - 20px),  calc(0% - 20px)  calc(0% - 20px)'},
+  {at: 0, expect:     '0% 0%, 0% 0%, 0% 0%, 0% 0%'},
+  {at: 0.25, expect:  'calc(0% + 20px)  calc(0% + 20px),  calc(0% + 20px)  calc(0% + 20px),  calc(0% + 20px)  calc(0% + 20px),  calc(0% + 20px)  calc(0% + 20px)'},
+  {at: 0.5, expect:   'calc(0% + 40px)  calc(0% + 40px),  calc(0% + 40px)  calc(0% + 40px),  calc(0% + 40px)  calc(0% + 40px),  calc(0% + 40px)  calc(0% + 40px)'},
+  {at: 0.75, expect:  'calc(0% + 60px)  calc(0% + 60px),  calc(0% + 60px)  calc(0% + 60px),  calc(0% + 60px)  calc(0% + 60px),  calc(0% + 60px)  calc(0% + 60px)'},
+  {at: 1, expect:     'calc(0% + 80px)  calc(0% + 80px),  calc(0% + 80px)  calc(0% + 80px),  calc(0% + 80px)  calc(0% + 80px),  calc(0% + 80px)  calc(0% + 80px)'},
+  {at: 1.25, expect:  'calc(0% + 100px) calc(0% + 100px), calc(0% + 100px) calc(0% + 100px), calc(0% + 100px) calc(0% + 100px), calc(0% + 100px) calc(0% + 100px)'},
 ]);
 
 test_interpolation({
@@ -73,18 +75,19 @@
   {at: 1.25, expect:  '85px 85px, 85px 85px, 85px 85px, 85px 85px'},
 ]);
 
+// background-position is not inherited, so 'unset' is equivalent to initial.
 test_interpolation({
   property: 'background-position',
   from: 'unset',
   to: '80px 80px, 80px 80px, 80px 80px, 80px 80px',
 }, [
-  {at: -0.25, expect: '-20px -20px, -20px -20px, -20px -20px, -20px -20px'},
-  {at: 0, expect:     '  0%    0% ,   0%    0% ,   0%    0% ,   0%    0% '},
-  {at: 0.25, expect:  ' 20px  20px,  20px  20px,  20px  20px,  20px  20px'},
-  {at: 0.5, expect:   ' 40px  40px,  40px  40px,  40px  40px,  40px  40px'},
-  {at: 0.75, expect:  ' 60px  60px,  60px  60px,  60px  60px,  60px  60px'},
-  {at: 1, expect:     ' 80px  80px,  80px  80px,  80px  80px,  80px  80px'},
-  {at: 1.25, expect:  '100px 100px, 100px 100px, 100px 100px, 100px 100px'},
+  {at: -0.25, expect: 'calc(0% - 20px)  calc(0% - 20px),  calc(0% - 20px)  calc(0% - 20px),  calc(0% - 20px)  calc(0% - 20px),  calc(0% - 20px)  calc(0% - 20px)'},
+  {at: 0, expect:     '0% 0%, 0% 0%, 0% 0%, 0% 0%'},
+  {at: 0.25, expect:  'calc(0% + 20px)  calc(0% + 20px),  calc(0% + 20px)  calc(0% + 20px),  calc(0% + 20px)  calc(0% + 20px),  calc(0% + 20px)  calc(0% + 20px)'},
+  {at: 0.5, expect:   'calc(0% + 40px)  calc(0% + 40px),  calc(0% + 40px)  calc(0% + 40px),  calc(0% + 40px)  calc(0% + 40px),  calc(0% + 40px)  calc(0% + 40px)'},
+  {at: 0.75, expect:  'calc(0% + 60px)  calc(0% + 60px),  calc(0% + 60px)  calc(0% + 60px),  calc(0% + 60px)  calc(0% + 60px),  calc(0% + 60px)  calc(0% + 60px)'},
+  {at: 1, expect:     'calc(0% + 80px)  calc(0% + 80px),  calc(0% + 80px)  calc(0% + 80px),  calc(0% + 80px)  calc(0% + 80px),  calc(0% + 80px)  calc(0% + 80px)'},
+  {at: 1.25, expect:  'calc(0% + 100px) calc(0% + 100px), calc(0% + 100px) calc(0% + 100px), calc(0% + 100px) calc(0% + 100px), calc(0% + 100px) calc(0% + 100px)'},
 ]);
 
 // Test equal number of position values as background images.
diff --git a/third_party/blink/web_tests/external/wpt/css/css-backgrounds/parsing/background-invalid-expected.txt b/third_party/blink/web_tests/external/wpt/css/css-backgrounds/parsing/background-invalid-expected.txt
new file mode 100644
index 0000000..4e890e2d
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-backgrounds/parsing/background-invalid-expected.txt
@@ -0,0 +1,5 @@
+This is a testharness.js-based test.
+PASS e.style['background'] = "red, green" should not set the property value
+FAIL e.style['background'] = "black 0 url(https://example.invalid/) / cover" should not set the property value assert_equals: expected "" but got "url(\"https://example.invalid/\") 0px center / cover black"
+Harness: the test ran to completion.
+
diff --git a/third_party/blink/web_tests/external/wpt/css/css-backgrounds/parsing/background-invalid.html b/third_party/blink/web_tests/external/wpt/css/css-backgrounds/parsing/background-invalid.html
index 4ea58da8..76ff18f 100644
--- a/third_party/blink/web_tests/external/wpt/css/css-backgrounds/parsing/background-invalid.html
+++ b/third_party/blink/web_tests/external/wpt/css/css-backgrounds/parsing/background-invalid.html
@@ -12,7 +12,11 @@
 </head>
 <body>
 <script>
+// <bg-layer> does not allow a <color>.
 test_invalid_value("background", "red, green");
+
+// A `/ <bg-size>` is only allowed directly after a <bg-position>.
+test_invalid_value("background", "black 0 url(https://example.invalid/) / cover");
 </script>
 </body>
 </html>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-multicol/multicol-span-all-children-height-006-ref.html b/third_party/blink/web_tests/external/wpt/css/css-multicol/multicol-span-all-children-height-006-ref.html
index e34036b..85dfa52 100644
--- a/third_party/blink/web_tests/external/wpt/css/css-multicol/multicol-span-all-children-height-006-ref.html
+++ b/third_party/blink/web_tests/external/wpt/css/css-multicol/multicol-span-all-children-height-006-ref.html
@@ -29,7 +29,7 @@
   </style>
 
   <article>
-    <div class="container" style="border-bottom: none; height: 200px;">
+    <div class="container" style="border-bottom: none; height: 200px; margin-top: 1em;">
       <div class="block">block1</div>
     </div>
   </article>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-multicol/multicol-span-all-children-height-006.html b/third_party/blink/web_tests/external/wpt/css/css-multicol/multicol-span-all-children-height-006.html
index dd63cd8..479fb2d 100644
--- a/third_party/blink/web_tests/external/wpt/css/css-multicol/multicol-span-all-children-height-006.html
+++ b/third_party/blink/web_tests/external/wpt/css/css-multicol/multicol-span-all-children-height-006.html
@@ -18,6 +18,7 @@
     height: 250px;
     background-color: pink;
     border: 20px solid purple;
+    margin-top: 1em;
   }
   div.block {
     width: 100px;
diff --git a/third_party/blink/web_tests/external/wpt/forced-colors-mode/backplate/forced-colors-mode-backplate-01-ref.html b/third_party/blink/web_tests/external/wpt/forced-colors-mode/backplate/forced-colors-mode-backplate-01-ref.html
index d7a04936..387aeca 100644
--- a/third_party/blink/web_tests/external/wpt/forced-colors-mode/backplate/forced-colors-mode-backplate-01-ref.html
+++ b/third_party/blink/web_tests/external/wpt/forced-colors-mode/backplate/forced-colors-mode-backplate-01-ref.html
@@ -3,6 +3,7 @@
 <title>
   Forced colors mode - backplate reference.
 </title>
+<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
 <style>
   body {
     background-image: url("../resources/test-image.jpg");
diff --git a/third_party/blink/web_tests/external/wpt/forced-colors-mode/backplate/forced-colors-mode-backplate-01.html b/third_party/blink/web_tests/external/wpt/forced-colors-mode/backplate/forced-colors-mode-backplate-01.html
index 0e627b9..05d3623 100644
--- a/third_party/blink/web_tests/external/wpt/forced-colors-mode/backplate/forced-colors-mode-backplate-01.html
+++ b/third_party/blink/web_tests/external/wpt/forced-colors-mode/backplate/forced-colors-mode-backplate-01.html
@@ -5,6 +5,7 @@
 </title>
 <link rel="help" href="https://www.w3.org/TR/css-color-adjust-1/#forced">
 <link rel=match href="forced-colors-mode-backplate-01-ref.html">
+<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
 <style>
   body {
     background-image: url("../resources/test-image.jpg");
diff --git a/third_party/blink/web_tests/external/wpt/forced-colors-mode/backplate/forced-colors-mode-backplate-02-ref.html b/third_party/blink/web_tests/external/wpt/forced-colors-mode/backplate/forced-colors-mode-backplate-02-ref.html
index 51109a8c..36bfaef 100644
--- a/third_party/blink/web_tests/external/wpt/forced-colors-mode/backplate/forced-colors-mode-backplate-02-ref.html
+++ b/third_party/blink/web_tests/external/wpt/forced-colors-mode/backplate/forced-colors-mode-backplate-02-ref.html
@@ -4,6 +4,7 @@
   Forced colors mode - backplate reference.
   Tests that the backplate feature with a varying number of line breaks.
 </title>
+<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
 <style>
   body {
     background-image: url("../resources/test-image.jpg");
diff --git a/third_party/blink/web_tests/external/wpt/forced-colors-mode/backplate/forced-colors-mode-backplate-02.html b/third_party/blink/web_tests/external/wpt/forced-colors-mode/backplate/forced-colors-mode-backplate-02.html
index b8a498e0..cf52153 100644
--- a/third_party/blink/web_tests/external/wpt/forced-colors-mode/backplate/forced-colors-mode-backplate-02.html
+++ b/third_party/blink/web_tests/external/wpt/forced-colors-mode/backplate/forced-colors-mode-backplate-02.html
@@ -6,6 +6,7 @@
 </title>
 <link rel="help" href="https://www.w3.org/TR/css-color-adjust-1/#forced">
 <link rel=match href="forced-colors-mode-backplate-02-ref.html">
+<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
 <style>
   body {
     background-image: url("../resources/test-image.jpg");
diff --git a/third_party/blink/web_tests/external/wpt/forced-colors-mode/backplate/forced-colors-mode-backplate-03-ref.html b/third_party/blink/web_tests/external/wpt/forced-colors-mode/backplate/forced-colors-mode-backplate-03-ref.html
index c9894d8..81659a02 100644
--- a/third_party/blink/web_tests/external/wpt/forced-colors-mode/backplate/forced-colors-mode-backplate-03-ref.html
+++ b/third_party/blink/web_tests/external/wpt/forced-colors-mode/backplate/forced-colors-mode-backplate-03-ref.html
@@ -4,6 +4,7 @@
   Forced colors mode - backplate reference.
   Tests the backplate feature behind lists.
 </title>
+<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
 <style>
   body {
     background-image: url("../resources/test-image.jpg");
diff --git a/third_party/blink/web_tests/external/wpt/forced-colors-mode/backplate/forced-colors-mode-backplate-03.html b/third_party/blink/web_tests/external/wpt/forced-colors-mode/backplate/forced-colors-mode-backplate-03.html
index f0ec227..936332a 100644
--- a/third_party/blink/web_tests/external/wpt/forced-colors-mode/backplate/forced-colors-mode-backplate-03.html
+++ b/third_party/blink/web_tests/external/wpt/forced-colors-mode/backplate/forced-colors-mode-backplate-03.html
@@ -6,6 +6,7 @@
 </title>
 <link rel="help" href="https://www.w3.org/TR/css-color-adjust-1/#forced">
 <link rel=match href="forced-colors-mode-backplate-03-ref.html">
+<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
 <style>
   body {
     background-image: url("../resources/test-image.jpg");
diff --git a/third_party/blink/web_tests/external/wpt/forced-colors-mode/backplate/forced-colors-mode-backplate-04-ref.html b/third_party/blink/web_tests/external/wpt/forced-colors-mode/backplate/forced-colors-mode-backplate-04-ref.html
index 9fefe5e4..f1fda49b 100644
--- a/third_party/blink/web_tests/external/wpt/forced-colors-mode/backplate/forced-colors-mode-backplate-04-ref.html
+++ b/third_party/blink/web_tests/external/wpt/forced-colors-mode/backplate/forced-colors-mode-backplate-04-ref.html
@@ -4,6 +4,7 @@
   Forced colors mode - backplate reference.
   Tests the backplate feature behind links.
 </title>
+<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
 <style>
   body {
     background-image: url("../resources/test-image.jpg");
diff --git a/third_party/blink/web_tests/external/wpt/forced-colors-mode/backplate/forced-colors-mode-backplate-04.html b/third_party/blink/web_tests/external/wpt/forced-colors-mode/backplate/forced-colors-mode-backplate-04.html
index 82d1a79..c9b8136f 100644
--- a/third_party/blink/web_tests/external/wpt/forced-colors-mode/backplate/forced-colors-mode-backplate-04.html
+++ b/third_party/blink/web_tests/external/wpt/forced-colors-mode/backplate/forced-colors-mode-backplate-04.html
@@ -6,6 +6,7 @@
 </title>
 <link rel="help" href="https://www.w3.org/TR/css-color-adjust-1/#forced">
 <link rel=match href="forced-colors-mode-backplate-04-ref.html">
+<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
 <style>
   body {
     background-image: url("../resources/test-image.jpg");
diff --git a/third_party/blink/web_tests/external/wpt/forced-colors-mode/backplate/forced-colors-mode-backplate-05-ref.html b/third_party/blink/web_tests/external/wpt/forced-colors-mode/backplate/forced-colors-mode-backplate-05-ref.html
index 8201485..e366552 100644
--- a/third_party/blink/web_tests/external/wpt/forced-colors-mode/backplate/forced-colors-mode-backplate-05-ref.html
+++ b/third_party/blink/web_tests/external/wpt/forced-colors-mode/backplate/forced-colors-mode-backplate-05-ref.html
@@ -4,6 +4,7 @@
   Forced colors mode - backplate reference.
   Tests the backplate feature for display inline/relative position.
 </title>
+<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
 <style>
   body {
     background-image: url("../resources/test-image.jpg");
diff --git a/third_party/blink/web_tests/external/wpt/forced-colors-mode/backplate/forced-colors-mode-backplate-05.html b/third_party/blink/web_tests/external/wpt/forced-colors-mode/backplate/forced-colors-mode-backplate-05.html
index 7a7f60d1..69ab33b 100644
--- a/third_party/blink/web_tests/external/wpt/forced-colors-mode/backplate/forced-colors-mode-backplate-05.html
+++ b/third_party/blink/web_tests/external/wpt/forced-colors-mode/backplate/forced-colors-mode-backplate-05.html
@@ -6,6 +6,7 @@
 </title>
 <link rel="help" href="https://www.w3.org/TR/css-color-adjust-1/#forced">
 <link rel=match href="forced-colors-mode-backplate-05-ref.html">
+<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
 <style>
   body {
     background-image: url("../resources/test-image.jpg");
diff --git a/third_party/blink/web_tests/external/wpt/forced-colors-mode/backplate/forced-colors-mode-backplate-06-ref.html b/third_party/blink/web_tests/external/wpt/forced-colors-mode/backplate/forced-colors-mode-backplate-06-ref.html
index 98a660b..a7cc320 100644
--- a/third_party/blink/web_tests/external/wpt/forced-colors-mode/backplate/forced-colors-mode-backplate-06-ref.html
+++ b/third_party/blink/web_tests/external/wpt/forced-colors-mode/backplate/forced-colors-mode-backplate-06-ref.html
@@ -6,6 +6,7 @@
   parent element follow the backplate behavior of that parent in forced colors
   mode.
 </title>
+<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
 <style>
   body {
     background-image: url("../resources/test-image.jpg");
diff --git a/third_party/blink/web_tests/external/wpt/forced-colors-mode/backplate/forced-colors-mode-backplate-06.html b/third_party/blink/web_tests/external/wpt/forced-colors-mode/backplate/forced-colors-mode-backplate-06.html
index d16593b..c45a25a54 100644
--- a/third_party/blink/web_tests/external/wpt/forced-colors-mode/backplate/forced-colors-mode-backplate-06.html
+++ b/third_party/blink/web_tests/external/wpt/forced-colors-mode/backplate/forced-colors-mode-backplate-06.html
@@ -8,6 +8,7 @@
 </title>
 <link rel="help" href="https://www.w3.org/TR/css-color-adjust-1/#forced">
 <link rel=match href="forced-colors-mode-backplate-06-ref.html">
+<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
 <style>
   body {
     background-image: url("../resources/test-image.jpg");
diff --git a/third_party/blink/web_tests/external/wpt/forced-colors-mode/backplate/forced-colors-mode-backplate-08-ref.html b/third_party/blink/web_tests/external/wpt/forced-colors-mode/backplate/forced-colors-mode-backplate-08-ref.html
index 87a750d5c..ff2c8de95 100644
--- a/third_party/blink/web_tests/external/wpt/forced-colors-mode/backplate/forced-colors-mode-backplate-08-ref.html
+++ b/third_party/blink/web_tests/external/wpt/forced-colors-mode/backplate/forced-colors-mode-backplate-08-ref.html
@@ -4,6 +4,7 @@
     Forced colors mode - backplate reference.
     Tests backplate is drawn when text is located outside the cull rect.
   </title>
+<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
 <style>
   body {
     background-image: url("../resources/test-image.jpg");
diff --git a/third_party/blink/web_tests/external/wpt/forced-colors-mode/backplate/forced-colors-mode-backplate-08.html b/third_party/blink/web_tests/external/wpt/forced-colors-mode/backplate/forced-colors-mode-backplate-08.html
index 87517685..829d7390 100644
--- a/third_party/blink/web_tests/external/wpt/forced-colors-mode/backplate/forced-colors-mode-backplate-08.html
+++ b/third_party/blink/web_tests/external/wpt/forced-colors-mode/backplate/forced-colors-mode-backplate-08.html
@@ -6,6 +6,7 @@
 </title>
 <link rel="help" href="https://www.w3.org/TR/css-color-adjust-1/#forced">
 <link rel=match href="forced-colors-mode-backplate-08-ref.html">
+<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
 <style>
   body {
     background-image: url("../resources/test-image.jpg");
diff --git a/third_party/blink/web_tests/external/wpt/forced-colors-mode/backplate/forced-colors-mode-backplate-09-ref.html b/third_party/blink/web_tests/external/wpt/forced-colors-mode/backplate/forced-colors-mode-backplate-09-ref.html
index fd1558e..1e7aed224 100644
--- a/third_party/blink/web_tests/external/wpt/forced-colors-mode/backplate/forced-colors-mode-backplate-09-ref.html
+++ b/third_party/blink/web_tests/external/wpt/forced-colors-mode/backplate/forced-colors-mode-backplate-09-ref.html
@@ -4,6 +4,7 @@
   Forced colors mode - backplate reference.
   Tests that backplate is not drawn above floats.
 </title>
+<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
 <style>
   body {
     background-image: url("../resources/test-image.jpg");
diff --git a/third_party/blink/web_tests/external/wpt/forced-colors-mode/backplate/forced-colors-mode-backplate-09.html b/third_party/blink/web_tests/external/wpt/forced-colors-mode/backplate/forced-colors-mode-backplate-09.html
index f5cdf94..4e9f517e 100644
--- a/third_party/blink/web_tests/external/wpt/forced-colors-mode/backplate/forced-colors-mode-backplate-09.html
+++ b/third_party/blink/web_tests/external/wpt/forced-colors-mode/backplate/forced-colors-mode-backplate-09.html
@@ -6,6 +6,7 @@
 </title>
 <link rel="help" href="https://www.w3.org/TR/css-color-adjust-1/#forced">
 <link rel=match href="forced-colors-mode-backplate-09-ref.html">
+<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
 <style>
   body {
     background-image: url("../resources/test-image.jpg");
@@ -25,4 +26,4 @@
     In forced colors mode, the backplate for this paragraph should lie below the
     the floating image.
   </div>
-</body>
\ No newline at end of file
+</body>
diff --git a/third_party/blink/web_tests/external/wpt/forced-colors-mode/backplate/forced-colors-mode-backplate-10-ref.html b/third_party/blink/web_tests/external/wpt/forced-colors-mode/backplate/forced-colors-mode-backplate-10-ref.html
index 3863133..78148be 100644
--- a/third_party/blink/web_tests/external/wpt/forced-colors-mode/backplate/forced-colors-mode-backplate-10-ref.html
+++ b/third_party/blink/web_tests/external/wpt/forced-colors-mode/backplate/forced-colors-mode-backplate-10-ref.html
@@ -4,6 +4,7 @@
   Forced colors mode - backplate reference.
   Tests that backplates of overlapping inline boxes do not overlap.
 </title>
+<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
 <style>
   body {
     background-image: url("../resources/test-image.jpg");
diff --git a/third_party/blink/web_tests/external/wpt/forced-colors-mode/backplate/forced-colors-mode-backplate-10.html b/third_party/blink/web_tests/external/wpt/forced-colors-mode/backplate/forced-colors-mode-backplate-10.html
index c6fa792..cc7f977 100644
--- a/third_party/blink/web_tests/external/wpt/forced-colors-mode/backplate/forced-colors-mode-backplate-10.html
+++ b/third_party/blink/web_tests/external/wpt/forced-colors-mode/backplate/forced-colors-mode-backplate-10.html
@@ -6,6 +6,7 @@
 </title>
 <link rel="help" href="https://www.w3.org/TR/css-color-adjust-1/#forced">
 <link rel=match href="forced-colors-mode-backplate-10-ref.html">
+<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
 <style>
   body {
     background-image: url("../resources/test-image.jpg");
diff --git a/third_party/blink/web_tests/external/wpt/geolocation-API/idlharness.https.window-expected.txt b/third_party/blink/web_tests/external/wpt/geolocation-API/idlharness.https.window-expected.txt
new file mode 100644
index 0000000..5f60ebaf
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/geolocation-API/idlharness.https.window-expected.txt
@@ -0,0 +1,60 @@
+This is a testharness.js-based test.
+Found 56 tests; 11 PASS, 45 FAIL, 0 TIMEOUT, 0 NOTRUN.
+PASS idl_test setup
+PASS Partial interface Navigator: original interface defined
+FAIL Geolocation interface: existence and properties of interface object assert_own_property: self does not have own property "Geolocation" expected property "Geolocation" missing
+FAIL Geolocation interface object length assert_own_property: self does not have own property "Geolocation" expected property "Geolocation" missing
+FAIL Geolocation interface object name assert_own_property: self does not have own property "Geolocation" expected property "Geolocation" missing
+FAIL Geolocation interface: existence and properties of interface prototype object assert_own_property: self does not have own property "Geolocation" expected property "Geolocation" missing
+FAIL Geolocation interface: existence and properties of interface prototype object's "constructor" property assert_own_property: self does not have own property "Geolocation" expected property "Geolocation" missing
+FAIL Geolocation interface: existence and properties of interface prototype object's @@unscopables property assert_own_property: self does not have own property "Geolocation" expected property "Geolocation" missing
+FAIL Geolocation interface: operation getCurrentPosition(PositionCallback, PositionErrorCallback, PositionOptions) assert_own_property: self does not have own property "Geolocation" expected property "Geolocation" missing
+FAIL Geolocation interface: operation watchPosition(PositionCallback, PositionErrorCallback, PositionOptions) assert_own_property: self does not have own property "Geolocation" expected property "Geolocation" missing
+FAIL Geolocation interface: operation clearWatch(long) assert_own_property: self does not have own property "Geolocation" expected property "Geolocation" missing
+FAIL Geolocation must be primary interface of navigator.geolocation assert_own_property: self does not have own property "Geolocation" expected property "Geolocation" missing
+PASS Stringification of navigator.geolocation
+PASS Geolocation interface: navigator.geolocation must inherit property "getCurrentPosition(PositionCallback, PositionErrorCallback, PositionOptions)" with the proper type
+PASS Geolocation interface: calling getCurrentPosition(PositionCallback, PositionErrorCallback, PositionOptions) on navigator.geolocation with too few arguments must throw TypeError
+PASS Geolocation interface: navigator.geolocation must inherit property "watchPosition(PositionCallback, PositionErrorCallback, PositionOptions)" with the proper type
+PASS Geolocation interface: calling watchPosition(PositionCallback, PositionErrorCallback, PositionOptions) on navigator.geolocation with too few arguments must throw TypeError
+PASS Geolocation interface: navigator.geolocation must inherit property "clearWatch(long)" with the proper type
+PASS Geolocation interface: calling clearWatch(long) on navigator.geolocation with too few arguments must throw TypeError
+FAIL GeolocationPosition interface: existence and properties of interface object assert_own_property: self does not have own property "GeolocationPosition" expected property "GeolocationPosition" missing
+FAIL GeolocationPosition interface object length assert_own_property: self does not have own property "GeolocationPosition" expected property "GeolocationPosition" missing
+FAIL GeolocationPosition interface object name assert_own_property: self does not have own property "GeolocationPosition" expected property "GeolocationPosition" missing
+FAIL GeolocationPosition interface: existence and properties of interface prototype object assert_own_property: self does not have own property "GeolocationPosition" expected property "GeolocationPosition" missing
+FAIL GeolocationPosition interface: existence and properties of interface prototype object's "constructor" property assert_own_property: self does not have own property "GeolocationPosition" expected property "GeolocationPosition" missing
+FAIL GeolocationPosition interface: existence and properties of interface prototype object's @@unscopables property assert_own_property: self does not have own property "GeolocationPosition" expected property "GeolocationPosition" missing
+FAIL GeolocationPosition interface: attribute coords assert_own_property: self does not have own property "GeolocationPosition" expected property "GeolocationPosition" missing
+FAIL GeolocationPosition interface: attribute timestamp assert_own_property: self does not have own property "GeolocationPosition" expected property "GeolocationPosition" missing
+FAIL GeolocationCoordinates interface: existence and properties of interface object assert_own_property: self does not have own property "GeolocationCoordinates" expected property "GeolocationCoordinates" missing
+FAIL GeolocationCoordinates interface object length assert_own_property: self does not have own property "GeolocationCoordinates" expected property "GeolocationCoordinates" missing
+FAIL GeolocationCoordinates interface object name assert_own_property: self does not have own property "GeolocationCoordinates" expected property "GeolocationCoordinates" missing
+FAIL GeolocationCoordinates interface: existence and properties of interface prototype object assert_own_property: self does not have own property "GeolocationCoordinates" expected property "GeolocationCoordinates" missing
+FAIL GeolocationCoordinates interface: existence and properties of interface prototype object's "constructor" property assert_own_property: self does not have own property "GeolocationCoordinates" expected property "GeolocationCoordinates" missing
+FAIL GeolocationCoordinates interface: existence and properties of interface prototype object's @@unscopables property assert_own_property: self does not have own property "GeolocationCoordinates" expected property "GeolocationCoordinates" missing
+FAIL GeolocationCoordinates interface: attribute latitude assert_own_property: self does not have own property "GeolocationCoordinates" expected property "GeolocationCoordinates" missing
+FAIL GeolocationCoordinates interface: attribute longitude assert_own_property: self does not have own property "GeolocationCoordinates" expected property "GeolocationCoordinates" missing
+FAIL GeolocationCoordinates interface: attribute altitude assert_own_property: self does not have own property "GeolocationCoordinates" expected property "GeolocationCoordinates" missing
+FAIL GeolocationCoordinates interface: attribute accuracy assert_own_property: self does not have own property "GeolocationCoordinates" expected property "GeolocationCoordinates" missing
+FAIL GeolocationCoordinates interface: attribute altitudeAccuracy assert_own_property: self does not have own property "GeolocationCoordinates" expected property "GeolocationCoordinates" missing
+FAIL GeolocationCoordinates interface: attribute heading assert_own_property: self does not have own property "GeolocationCoordinates" expected property "GeolocationCoordinates" missing
+FAIL GeolocationCoordinates interface: attribute speed assert_own_property: self does not have own property "GeolocationCoordinates" expected property "GeolocationCoordinates" missing
+FAIL GeolocationPositionError interface: existence and properties of interface object assert_own_property: self does not have own property "GeolocationPositionError" expected property "GeolocationPositionError" missing
+FAIL GeolocationPositionError interface object length assert_own_property: self does not have own property "GeolocationPositionError" expected property "GeolocationPositionError" missing
+FAIL GeolocationPositionError interface object name assert_own_property: self does not have own property "GeolocationPositionError" expected property "GeolocationPositionError" missing
+FAIL GeolocationPositionError interface: existence and properties of interface prototype object assert_own_property: self does not have own property "GeolocationPositionError" expected property "GeolocationPositionError" missing
+FAIL GeolocationPositionError interface: existence and properties of interface prototype object's "constructor" property assert_own_property: self does not have own property "GeolocationPositionError" expected property "GeolocationPositionError" missing
+FAIL GeolocationPositionError interface: existence and properties of interface prototype object's @@unscopables property assert_own_property: self does not have own property "GeolocationPositionError" expected property "GeolocationPositionError" missing
+FAIL GeolocationPositionError interface: constant PERMISSION_DENIED on interface object assert_own_property: self does not have own property "GeolocationPositionError" expected property "GeolocationPositionError" missing
+FAIL GeolocationPositionError interface: constant PERMISSION_DENIED on interface prototype object assert_own_property: self does not have own property "GeolocationPositionError" expected property "GeolocationPositionError" missing
+FAIL GeolocationPositionError interface: constant POSITION_UNAVAILABLE on interface object assert_own_property: self does not have own property "GeolocationPositionError" expected property "GeolocationPositionError" missing
+FAIL GeolocationPositionError interface: constant POSITION_UNAVAILABLE on interface prototype object assert_own_property: self does not have own property "GeolocationPositionError" expected property "GeolocationPositionError" missing
+FAIL GeolocationPositionError interface: constant TIMEOUT on interface object assert_own_property: self does not have own property "GeolocationPositionError" expected property "GeolocationPositionError" missing
+FAIL GeolocationPositionError interface: constant TIMEOUT on interface prototype object assert_own_property: self does not have own property "GeolocationPositionError" expected property "GeolocationPositionError" missing
+FAIL GeolocationPositionError interface: attribute code assert_own_property: self does not have own property "GeolocationPositionError" expected property "GeolocationPositionError" missing
+FAIL GeolocationPositionError interface: attribute message assert_own_property: self does not have own property "GeolocationPositionError" expected property "GeolocationPositionError" missing
+PASS Navigator interface: attribute geolocation
+PASS Navigator interface: navigator must inherit property "geolocation" with the proper type
+Harness: the test ran to completion.
+
diff --git a/third_party/blink/web_tests/external/wpt/geolocation-API/idlharness.window.js b/third_party/blink/web_tests/external/wpt/geolocation-API/idlharness.https.window.js
similarity index 100%
rename from third_party/blink/web_tests/external/wpt/geolocation-API/idlharness.window.js
rename to third_party/blink/web_tests/external/wpt/geolocation-API/idlharness.https.window.js
diff --git a/third_party/blink/web_tests/external/wpt/interfaces/geolocation-API.idl b/third_party/blink/web_tests/external/wpt/interfaces/geolocation-API.idl
index 802e76c..e8dd1526 100644
--- a/third_party/blink/web_tests/external/wpt/interfaces/geolocation-API.idl
+++ b/third_party/blink/web_tests/external/wpt/interfaces/geolocation-API.idl
@@ -1,28 +1,28 @@
 // GENERATED CONTENT - DO NOT EDIT
 // Content was automatically extracted by Reffy into reffy-reports
 // (https://github.com/tidoust/reffy-reports)
-// Source: Geolocation API Specification 2nd Edition (https://www.w3.org/TR/geolocation-API/)
+// Source: Geolocation API Specification (https://w3c.github.io/geolocation-api/)
 
 partial interface Navigator {
-  readonly attribute Geolocation geolocation;
+  [SameObject] readonly attribute Geolocation geolocation;
 };
 
-[NoInterfaceObject]
+[Exposed=Window]
 interface Geolocation {
   void getCurrentPosition(PositionCallback successCallback,
                           optional PositionErrorCallback errorCallback,
-                          optional PositionOptions options);
+                          optional PositionOptions options = {});
 
   long watchPosition(PositionCallback successCallback,
                      optional PositionErrorCallback errorCallback,
-                     optional PositionOptions options);
+                     optional PositionOptions options = {});
 
   void clearWatch(long watchId);
 };
 
-callback PositionCallback = void (Position position);
+callback PositionCallback = void (GeolocationPosition position);
 
-callback PositionErrorCallback = void (PositionError positionError);
+callback PositionErrorCallback = void (GeolocationPositionError positionError);
 
 dictionary PositionOptions {
   boolean enableHighAccuracy = false;
@@ -30,14 +30,14 @@
   [Clamp] unsigned long maximumAge = 0;
 };
 
-[NoInterfaceObject]
-interface Position {
-  readonly attribute Coordinates coords;
+[Exposed=Window, SecureContext]
+interface GeolocationPosition {
+  readonly attribute GeolocationCoordinates coords;
   readonly attribute DOMTimeStamp timestamp;
 };
 
-[NoInterfaceObject]
-interface Coordinates {
+[Exposed=Window, SecureContext]
+interface GeolocationCoordinates {
   readonly attribute double latitude;
   readonly attribute double longitude;
   readonly attribute double? altitude;
@@ -47,8 +47,8 @@
   readonly attribute double? speed;
 };
 
-[NoInterfaceObject]
-interface PositionError {
+[Exposed=Window]
+interface GeolocationPositionError {
   const unsigned short PERMISSION_DENIED = 1;
   const unsigned short POSITION_UNAVAILABLE = 2;
   const unsigned short TIMEOUT = 3;
diff --git a/third_party/blink/web_tests/external/wpt/interfaces/presentation-api.idl b/third_party/blink/web_tests/external/wpt/interfaces/presentation-api.idl
index 6ce0f56..c1e5665 100644
--- a/third_party/blink/web_tests/external/wpt/interfaces/presentation-api.idl
+++ b/third_party/blink/web_tests/external/wpt/interfaces/presentation-api.idl
@@ -19,10 +19,10 @@
   readonly attribute PresentationReceiver? receiver;
 };
 
-[Constructor(USVString url),
- Constructor(sequence<USVString> urls),
- SecureContext, Exposed=Window]
+[SecureContext, Exposed=Window]
 interface PresentationRequest : EventTarget {
+  constructor(USVString url);
+  constructor(sequence<USVString> urls);
   Promise<PresentationConnection> start();
   Promise<PresentationConnection> reconnect(USVString presentationId);
   Promise<PresentationAvailability> getAvailability();
@@ -37,9 +37,9 @@
   attribute EventHandler onchange;
 };
 
-[Constructor(DOMString type, PresentationConnectionAvailableEventInit eventInitDict),
- SecureContext, Exposed=Window]
+[SecureContext, Exposed=Window]
 interface PresentationConnectionAvailableEvent : Event {
+  constructor(DOMString type, PresentationConnectionAvailableEventInit eventInitDict);
   [SameObject] readonly attribute PresentationConnection connection;
 };
 
@@ -64,17 +64,17 @@
   // Communication
   attribute BinaryType binaryType;
   attribute EventHandler onmessage;
-  void send(DOMString message);
-  void send(Blob data);
-  void send(ArrayBuffer data);
-  void send(ArrayBufferView data);
+  void send (DOMString message);
+  void send (Blob data);
+  void send (ArrayBuffer data);
+  void send (ArrayBufferView data);
 };
 
 enum PresentationConnectionCloseReason { "error", "closed", "wentaway" };
 
-[Constructor(DOMString type, PresentationConnectionCloseEventInit eventInitDict),
- SecureContext, Exposed=Window]
+[SecureContext, Exposed=Window]
 interface PresentationConnectionCloseEvent : Event {
+  constructor(DOMString type, PresentationConnectionCloseEventInit eventInitDict);
   readonly attribute PresentationConnectionCloseReason reason;
   readonly attribute DOMString message;
 };
diff --git a/third_party/blink/web_tests/external/wpt/interfaces/push-api.idl b/third_party/blink/web_tests/external/wpt/interfaces/push-api.idl
index 74725a3..419fe25 100644
--- a/third_party/blink/web_tests/external/wpt/interfaces/push-api.idl
+++ b/third_party/blink/web_tests/external/wpt/interfaces/push-api.idl
@@ -64,8 +64,9 @@
   attribute EventHandler onpushsubscriptionchange;
 };
 
-[Constructor(DOMString type, optional PushEventInit eventInitDict = {}), Exposed=ServiceWorker, SecureContext]
+[Exposed=ServiceWorker, SecureContext]
 interface PushEvent : ExtendableEvent {
+  constructor(DOMString type, optional PushEventInit eventInitDict = {});
   readonly attribute PushMessageData? data;
 };
 
@@ -75,8 +76,9 @@
   PushMessageDataInit data;
 };
 
-[Constructor(DOMString type, optional PushSubscriptionChangeEventInit eventInitDict = {}), Exposed=ServiceWorker, SecureContext]
+[Exposed=ServiceWorker, SecureContext]
 interface PushSubscriptionChangeEvent : ExtendableEvent {
+  constructor(DOMString type, optional PushSubscriptionChangeEventInit eventInitDict = {});
   readonly attribute PushSubscription? newSubscription;
   readonly attribute PushSubscription? oldSubscription;
 };
diff --git a/third_party/blink/web_tests/external/wpt/interfaces/screen-capture.idl b/third_party/blink/web_tests/external/wpt/interfaces/screen-capture.idl
index b5b00676..4936ee9 100644
--- a/third_party/blink/web_tests/external/wpt/interfaces/screen-capture.idl
+++ b/third_party/blink/web_tests/external/wpt/interfaces/screen-capture.idl
@@ -4,43 +4,43 @@
 // Source: Screen Capture (https://w3c.github.io/mediacapture-screen-share/)
 
 partial interface MediaDevices {
-    Promise<MediaStream> getDisplayMedia (optional DisplayMediaStreamConstraints constraints = {});
+  Promise<MediaStream> getDisplayMedia(optional DisplayMediaStreamConstraints constraints = {});
 };
 
 dictionary DisplayMediaStreamConstraints {
-    (boolean or MediaTrackConstraints) video = true;
-    (boolean or MediaTrackConstraints) audio = false;
+  (boolean or MediaTrackConstraints) video = true;
+  (boolean or MediaTrackConstraints) audio = false;
 };
 
 partial dictionary MediaTrackSupportedConstraints {
-             boolean displaySurface = true;
-             boolean logicalSurface = true;
-             boolean cursor = true;
-             boolean restrictOwnAudio = true;
+  boolean displaySurface = true;
+  boolean logicalSurface = true;
+  boolean cursor = true;
+  boolean restrictOwnAudio = true;
 };
 
 partial dictionary MediaTrackConstraintSet {
-             ConstrainDOMString displaySurface;
-             ConstrainBoolean logicalSurface;
-             ConstrainDOMString cursor;
-             ConstrainBoolean restrictOwnAudio;
+  ConstrainDOMString displaySurface;
+  ConstrainBoolean logicalSurface;
+  ConstrainDOMString cursor;
+  ConstrainBoolean restrictOwnAudio;
 };
 
 partial dictionary MediaTrackSettings {
-             DOMString displaySurface;
-             boolean logicalSurface;
-             DOMString cursor;
+  DOMString displaySurface;
+  boolean logicalSurface;
+  DOMString cursor;
 };
 
 enum DisplayCaptureSurfaceType {
-    "monitor",
-    "window",
-    "application",
-    "browser"
+  "monitor",
+  "window",
+  "application",
+  "browser"
 };
 
 enum CursorCaptureConstraint {
-    "never",
-    "always",
-    "motion"
+  "never",
+  "always",
+  "motion"
 };
diff --git a/third_party/blink/web_tests/external/wpt/mathml/relations/html5-tree/clipboard-event-handlers.tentative.html b/third_party/blink/web_tests/external/wpt/mathml/relations/html5-tree/clipboard-event-handlers.tentative.html
index 0426034..57ababb4 100644
--- a/third_party/blink/web_tests/external/wpt/mathml/relations/html5-tree/clipboard-event-handlers.tentative.html
+++ b/third_party/blink/web_tests/external/wpt/mathml/relations/html5-tree/clipboard-event-handlers.tentative.html
@@ -14,9 +14,9 @@
 <script src="/resources/testharnessreport.js"></script>
 <div id="log"></div>
 <math
-  oncopy="window.copyHappened = true"
-  oncut="window.cutHappened = true"
-  onpaste="window.pasteHappened = true"
+  oncopy="window.copyHappened1 = true"
+  oncut="window.cutHappened1 = true"
+  onpaste="window.pasteHappened1 = true"
 >
   <mi>E</mi>
 </math>
@@ -56,10 +56,62 @@
       );
       compiledHandler();
       assert_true(
-        window[name + "Happened"],
+        window[`${name}Happened1`],
         "Calling the handler must run the code"
       );
     }, `${handlerName}: the content attribute must be compiled into a function as the corresponding property`);
+
+    test(() => {
+        const mathEl = document.createElementNS(
+            "http://www.w3.org/1998/Math/MathML",
+            "math"
+        );
+        assert_equals(mathEl[handlerName], null, `The ${handlerName} property must be null (no attribute)`);
+
+        mathEl.setAttribute(handlerName, `window.${handlerName}Happened2 = true;`);
+        const compiledHandler = mathEl[handlerName];
+        assert_equals(
+            typeof compiledHandler,
+            "function",
+            `The ${handlerName} property must be a function (set attribute)`
+        );
+        compiledHandler();
+        assert_true(
+            window[`${handlerName}Happened2`],
+            "Calling the handler must run the code (set attribute)"
+        );
+
+        window[`${handlerName}Happened2`] = false;
+        const clonedMathEl = mathEl.cloneNode(true);
+        const clonedCompiledHandler = clonedMathEl[handlerName];
+        assert_equals(
+            typeof clonedCompiledHandler,
+            "function",
+            `The ${handlerName} property must be a function (clone node)`
+        );
+        clonedCompiledHandler();
+        assert_true(
+            window[`${handlerName}Happened2`],
+            "Calling the handler must run the code (clone node)"
+        );
+
+        mathEl.setAttribute(handlerName, `window.${handlerName}Happened3 = true;`);
+        const newCompiledHandler = mathEl[handlerName];
+        assert_equals(
+            typeof newCompiledHandler,
+            "function",
+            `The ${handlerName} property must be a function (modify attribute)`
+        );
+        newCompiledHandler();
+        assert_true(
+            window[`${handlerName}Happened3`],
+            "Calling the handler must run the code (modify attribute)"
+        );
+
+        mathEl.removeAttribute(handlerName);
+        assert_equals(mathEl[handlerName], null, `The ${handlerName} property must be null (remove attribute)`);
+    }, `${handlerName}: dynamic changes on the attribute`);
+
   }
 
   EVENTS.forEach(name => {
diff --git a/third_party/blink/web_tests/external/wpt/mathml/relations/html5-tree/css-inline-style-dynamic.tentative-ref.html b/third_party/blink/web_tests/external/wpt/mathml/relations/html5-tree/css-inline-style-dynamic.tentative-ref.html
index 13f01392..19f3e6c 100644
--- a/third_party/blink/web_tests/external/wpt/mathml/relations/html5-tree/css-inline-style-dynamic.tentative-ref.html
+++ b/third_party/blink/web_tests/external/wpt/mathml/relations/html5-tree/css-inline-style-dynamic.tentative-ref.html
@@ -3,11 +3,16 @@
 <head>
 <meta charset="utf-8"/>
 <title>MathML 'ElementCSSInlineStyle` Dynamic Tests</title>
+<style>
+mspace {
+  background-color: green;
+}
+</style>
 </head>
 <body>
   <span>This tests that `ElementCSSInlineStyle` interface changes update rendering.</span>
   <div>
-    <math style="background-color: green"><mspace width="50px" height="100px"/><mspace width="50px" height="100px"/></math>
+    <math><mspace width="50px" height="100px"/><mspace width="50px" height="100px"/></math>
   </div>
 </body>
 </html>
diff --git a/third_party/blink/web_tests/external/wpt/mathml/relations/html5-tree/math-global-event-handlers.tentative.html b/third_party/blink/web_tests/external/wpt/mathml/relations/html5-tree/math-global-event-handlers.tentative.html
index 807a29e..b5b9c75 100644
--- a/third_party/blink/web_tests/external/wpt/mathml/relations/html5-tree/math-global-event-handlers.tentative.html
+++ b/third_party/blink/web_tests/external/wpt/mathml/relations/html5-tree/math-global-event-handlers.tentative.html
@@ -58,13 +58,9 @@
         }, `${name}: the default value must be null`);
 
         test(() => {
-          const el = document.createElementNS(
-            "http://www.w3.org/1998/Math/MathML",
-            "math"
-          );
-          el.setAttribute(name, `window.${name}Happened = true;`);
-          const compiledHandler = el[name];
-
+          const div = document.getElementById("container");
+          div.innerHTML = `<math ${name}="window.${name}Happened1 = true;"></math>`;
+          const compiledHandler = div.firstElementChild[name];
           assert_equals(
             typeof compiledHandler,
             "function",
@@ -72,12 +68,63 @@
           );
           compiledHandler();
           assert_true(
-            window[name + "Happened"],
+            window[`${name}Happened1`],
             "Calling the handler must run the code"
           );
         }, `${name}: the content attribute must be compiled into a function as the corresponding property`);
 
         test(() => {
+          const el = document.createElementNS(
+            "http://www.w3.org/1998/Math/MathML",
+            "math"
+          );
+          assert_equals(el[name], null, `The ${name} property must be null (no attribute)`);
+
+          el.setAttribute(name, `window.${name}Happened2 = true;`);
+          const compiledHandler = el[name];
+          assert_equals(
+            typeof compiledHandler,
+            "function",
+            `The ${name} property must be a function (set attribute)`
+          );
+          compiledHandler();
+          assert_true(
+            window[`${name}Happened2`],
+            "Calling the handler must run the code (set attribute)"
+          );
+
+          window[`${name}Happened2`] = false;
+          const clonedEl = el.cloneNode(true);
+          const clonedCompiledHandler = clonedEl[name];
+          assert_equals(
+            typeof clonedCompiledHandler,
+            "function",
+            `The ${name} property must be a function (clone node)`
+          );
+          clonedCompiledHandler();
+          assert_true(
+            window[`${name}Happened2`],
+            "Calling the handler must run the code (clone node)"
+          );
+
+          el.setAttribute(name, `window.${name}Happened3 = true;`);
+          const newCompiledHandler = el[name];
+          assert_equals(
+            typeof newCompiledHandler,
+            "function",
+            `The ${name} property must be a function (modify attribute)`
+          );
+          newCompiledHandler();
+          assert_true(
+            window[`${name}Happened3`],
+            "Calling the handler must run the code (modify attribute)"
+          );
+
+          el.removeAttribute(name);
+          assert_equals(el[name], null, `The ${name} property must be null (remove attribute)`);
+        }, `${name}: dynamic changes on the attribute`);
+
+        test(() => {
           const element = document.createElementNS(
             "http://www.w3.org/1998/Math/MathML",
             "math"
@@ -97,3 +144,5 @@
       done();
     });
 </script>
+
+<div style="display: none" id="container"></div>
diff --git a/third_party/blink/web_tests/external/wpt/orientation-event/META.yml b/third_party/blink/web_tests/external/wpt/orientation-event/META.yml
index ba1811f..8801484 100644
--- a/third_party/blink/web_tests/external/wpt/orientation-event/META.yml
+++ b/third_party/blink/web_tests/external/wpt/orientation-event/META.yml
@@ -1,4 +1,4 @@
-spec: https://w3c.github.io/deviceorientation/spec-source-orientation.html
+spec: https://w3c.github.io/deviceorientation/
 suggested_reviewers:
   - reillyeon
   - timvolodine
diff --git a/third_party/blink/web_tests/external/wpt/tools/ci/run_tc.py b/third_party/blink/web_tests/external/wpt/tools/ci/run_tc.py
index 1816844..ea4a1ac 100755
--- a/third_party/blink/web_tests/external/wpt/tools/ci/run_tc.py
+++ b/third_party/blink/web_tests/external/wpt/tools/ci/run_tc.py
@@ -267,7 +267,10 @@
 def main():
     args = get_parser().parse_args()
 
-    event = fetch_event_data()
+    if "TASK_EVENT" in os.environ:
+        event = json.loads(os.environ["TASK_EVENT"])
+    else:
+        event = fetch_event_data()
 
     if event:
         set_variables(event)
diff --git a/third_party/blink/web_tests/external/wpt/tools/wpt/android.py b/third_party/blink/web_tests/external/wpt/tools/wpt/android.py
index 1dc057f..51deb71 100644
--- a/third_party/blink/web_tests/external/wpt/tools/wpt/android.py
+++ b/third_party/blink/web_tests/external/wpt/tools/wpt/android.py
@@ -58,7 +58,7 @@
 
     os_name = platform.system().lower()
     if os_name not in ["darwin", "linux", "windows"]:
-        logger.error("Unsupported platform %s" % os_name)
+        logger.critical("Unsupported platform %s" % os_name)
         raise NotImplementedError
 
     os_name = 'darwin' if os_name == 'macosx' else os_name
diff --git a/third_party/blink/web_tests/external/wpt/tools/wpt/run.py b/third_party/blink/web_tests/external/wpt/tools/wpt/run.py
index 0bccc68..b52137ec 100644
--- a/third_party/blink/web_tests/external/wpt/tools/wpt/run.py
+++ b/third_party/blink/web_tests/external/wpt/tools/wpt/run.py
@@ -67,7 +67,7 @@
 
 def exit(msg=None):
     if msg:
-        logger.error(msg)
+        logger.critical(msg)
         sys.exit(1)
     else:
         sys.exit(0)
diff --git a/third_party/blink/web_tests/external/wpt/tools/wpt/testfiles.py b/third_party/blink/web_tests/external/wpt/tools/wpt/testfiles.py
index b5a0e64..cf12a59c 100644
--- a/third_party/blink/web_tests/external/wpt/tools/wpt/testfiles.py
+++ b/third_party/blink/web_tests/external/wpt/tools/wpt/testfiles.py
@@ -53,8 +53,8 @@
             logger.debug(" ".join(full_cmd))
             return subprocess.check_output(full_cmd, cwd=repo_path).decode("utf8").strip()
         except subprocess.CalledProcessError as e:
-            logger.error("Git command exited with status %i" % e.returncode)
-            logger.error(e.output)
+            logger.critical("Git command exited with status %i" % e.returncode)
+            logger.critical(e.output)
             sys.exit(1)
     return git
 
diff --git a/third_party/blink/web_tests/external/wpt/tools/wptrunner/wptrunner/testrunner.py b/third_party/blink/web_tests/external/wpt/tools/wptrunner/wptrunner/testrunner.py
index c6dbd70f..5c0c60a 100644
--- a/third_party/blink/web_tests/external/wpt/tools/wptrunner/wptrunner/testrunner.py
+++ b/third_party/blink/web_tests/external/wpt/tools/wptrunner/wptrunner/testrunner.py
@@ -473,7 +473,7 @@
     def init(self):
         assert isinstance(self.state, RunnerManagerState.initializing)
         if self.state.failure_count > self.max_restarts:
-            self.logger.error("Max restarts exceeded")
+            self.logger.critical("Max restarts exceeded")
             return RunnerManagerState.error()
 
         self.browser.update_settings(self.state.test)
diff --git a/third_party/blink/web_tests/external/wpt/tools/wptrunner/wptrunner/update/update.py b/third_party/blink/web_tests/external/wpt/tools/wptrunner/wptrunner/update/update.py
index c4f1e7e..96302ee 100644
--- a/third_party/blink/web_tests/external/wpt/tools/wptrunner/wptrunner/update/update.py
+++ b/third_party/blink/web_tests/external/wpt/tools/wptrunner/wptrunner/update/update.py
@@ -164,7 +164,7 @@
             return exit_clean
 
         if not self.kwargs["continue"] and not self.state.is_empty():
-            self.logger.error("Found existing state. Run with --continue to resume or --abort to clear state")
+            self.logger.critical("Found existing state. Run with --continue to resume or --abort to clear state")
             return exit_unclean
 
         if self.kwargs["continue"]:
diff --git a/third_party/blink/web_tests/external/wpt/tools/wptrunner/wptrunner/wptrunner.py b/third_party/blink/web_tests/external/wpt/tools/wptrunner/wptrunner/wptrunner.py
index 6b4e70b..8dcdcde 100644
--- a/third_party/blink/web_tests/external/wpt/tools/wptrunner/wptrunner/wptrunner.py
+++ b/third_party/blink/web_tests/external/wpt/tools/wptrunner/wptrunner/wptrunner.py
@@ -169,10 +169,10 @@
         unexpected_total = 0
 
         if len(test_loader.test_ids) == 0 and kwargs["test_list"]:
-            logger.error("Unable to find any tests at the path(s):")
+            logger.critical("Unable to find any tests at the path(s):")
             for path in kwargs["test_list"]:
-                logger.error("  %s" % path)
-            logger.error("Please check spelling and make sure there are tests in the specified path(s).")
+                logger.critical("  %s" % path)
+            logger.critical("Please check spelling and make sure there are tests in the specified path(s).")
             return False
         kwargs["pause_after_test"] = get_pause_after_test(test_loader, **kwargs)
 
@@ -302,7 +302,7 @@
                 logger.info("No tests ran")
                 return True
             else:
-                logger.error("No tests ran")
+                logger.critical("No tests ran")
                 return False
 
     if unexpected_total and not kwargs["fail_on_unexpected"]:
diff --git a/third_party/blink/web_tests/external/wpt/tools/wptserve/wptserve/server.py b/third_party/blink/web_tests/external/wpt/tools/wptserve/wptserve/server.py
index e58b4ac..c037732a 100644
--- a/third_party/blink/web_tests/external/wpt/tools/wptserve/wptserve/server.py
+++ b/third_party/blink/web_tests/external/wpt/tools/wptserve/wptserve/server.py
@@ -676,7 +676,7 @@
 
             _host, self.port = self.httpd.socket.getsockname()
         except Exception:
-            self.logger.error("Failed to start HTTP server. {}".format(EDIT_HOSTS_HELP))
+            self.logger.critical("Failed to start HTTP server. {}".format(EDIT_HOSTS_HELP))
             raise
 
     def start(self, block=False):
diff --git a/third_party/blink/web_tests/external/wpt/web-share/share-sharePromise-internal-slot.https-expected.txt b/third_party/blink/web_tests/external/wpt/web-share/share-sharePromise-internal-slot.https-expected.txt
new file mode 100644
index 0000000..a2c76d3
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/web-share/share-sharePromise-internal-slot.https-expected.txt
@@ -0,0 +1,4 @@
+This is a testharness.js-based test.
+FAIL Only allow one share call at a time, which is controlled by the [[sharePromise]] internal slot. assert_throws: function "function() { throw e }" threw object "AbortError: Internal error: could not connect to Web Share interface." that is not a DOMException InvalidStateError: property "code" is equal to 20, expected 11
+Harness: the test ran to completion.
+
diff --git a/third_party/blink/web_tests/external/wpt/web-share/share-sharePromise-internal-slot.https.html b/third_party/blink/web_tests/external/wpt/web-share/share-sharePromise-internal-slot.https.html
new file mode 100644
index 0000000..5a71eaa
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/web-share/share-sharePromise-internal-slot.https.html
@@ -0,0 +1,32 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <meta charset="utf-8" />
+    <link rel="help" href="https://github.com/w3c/web-share/pull/113" />
+    <title>WebShare Test: only one share at a time</title>
+    <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>
+  </head>
+  <body>
+    <script>
+      promise_test(async t => {
+        const [, promise2, promise3] = await test_driver.bless(
+          "share needs user activation",
+          () => {
+            return [
+              navigator.share({ title: "should be pending" }),
+              navigator.share({ title: "should reject" }),
+              navigator.share({ title: "should also reject" }),
+            ];
+          }
+        );
+        await Promise.all([
+          promise_rejects(t, "InvalidStateError", promise2),
+          promise_rejects(t, "InvalidStateError", promise3),
+        ]);
+      }, "Only allow one share call at a time, which is controlled by the [[sharePromise]] internal slot.");
+    </script>
+  </body>
+</html>
diff --git a/third_party/blink/web_tests/fast/replaced/replaced-breaking.html b/third_party/blink/web_tests/fast/replaced/replaced-breaking.html
index 2553a0a3..665fcf9 100644
--- a/third_party/blink/web_tests/fast/replaced/replaced-breaking.html
+++ b/third_party/blink/web_tests/fast/replaced/replaced-breaking.html
@@ -4,7 +4,30 @@
     embed, iframe, img { border: 1px solid black; width: 25px; height: 25px; }
 </style>
 </head>
-<body>
+<script>
+if (window.testRunner) {
+    // Due to scheduler changes the "Blink Test Plugin: initializing" console log is flaky.
+    testRunner.setDumpConsoleMessages(false);
+    testRunner.waitUntilDone();
+}
+
+// We need to wait for both plugins to load before finishing to ensure a stable screenshot.
+function waitForEmbedsToLoad() {
+  var pending = 2;
+  
+  function waitForLoad(object) {
+    object.addEventListener("message", function(message) {
+      if (message.data == 'loaded' && --pending == 0)
+        testRunner.notifyDone();
+    });
+  }
+  
+  waitForLoad(document.getElementById("embed1"));
+  waitForLoad(document.getElementById("embed2"));
+}
+
+</script>
+<body onload="waitForEmbedsToLoad();">
     <div style="width: 30px; border: 1px solid red;">
         <input type="text"><input type="text">
         <img><img>
@@ -15,7 +38,7 @@
         <input type="checkbox"><input type="checkbox">
         <input type="radio"><input type="radio">
         <iframe></iframe><iframe></iframe>
-        <embed type="application/x-blink-test-plugin"></embed><embed type="application/x-blink-test-plugin"></embed>
+        <embed id="embed1" type="application/x-blink-test-plugin"></embed><embed id="embed2" type="application/x-blink-test-plugin"></embed>
     </div>
 </body>
 </html>
diff --git a/third_party/blink/web_tests/http/tests/htmlimports/loading-attempt.html b/third_party/blink/web_tests/http/tests/htmlimports/loading-attempt.html
index 7c1b442..dc3002b9 100644
--- a/third_party/blink/web_tests/http/tests/htmlimports/loading-attempt.html
+++ b/third_party/blink/web_tests/http/tests/htmlimports/loading-attempt.html
@@ -22,15 +22,21 @@
 <link rel="import" href="resources/no-such.html" onload="nosuchLoadHandler()" onerror="nosuchErrorHandler()">
 
 <script>
-test(function() {
-    assert_true(onloadWasCalledOnSuccess);
-    assert_false(onerrorWasCalledOnSuccess);
-}, 'The loading attempt must be considered successful if IMPORT is not null on the algorithm completion, and failed otherwise. (1)');
+var onloadTest = async_test("Testing html import load order");
 
-test(function() {
-    assert_false(onloadWasCalledOnFail);
-    assert_true(onerrorWasCalledOnFail);
-}, 'The loading attempt must be considered successful if IMPORT is not null on the algorithm completion, and failed otherwise. (2)');
+window.onload = function () {
+    test(() => { 
+        assert_true(onloadWasCalledOnSuccess);
+        assert_false(onerrorWasCalledOnSuccess);
+    }, 'The loading attempt must be considered successful if IMPORT is not null on the algorithm completion, and failed otherwise. (1)');
+
+    test(() => {
+        assert_false(onloadWasCalledOnFail);
+        assert_true(onerrorWasCalledOnFail);
+    }, 'The loading attempt must be considered successful if IMPORT is not null on the algorithm completion, and failed otherwise. (2)');
+
+    onloadTest.done();
+};
 
 t1 = async_test('The loading attempt must be considered successful if IMPORT is not null on the algorithm completion, and failed otherwise. (3)')
 t1.step(function() {
diff --git a/third_party/blink/web_tests/inspector-protocol/memory/sampling-native-profile.js b/third_party/blink/web_tests/inspector-protocol/memory/sampling-native-profile.js
index e054cca..d433396 100644
--- a/third_party/blink/web_tests/inspector-protocol/memory/sampling-native-profile.js
+++ b/third_party/blink/web_tests/inspector-protocol/memory/sampling-native-profile.js
@@ -19,7 +19,8 @@
 
   const profile = message.result.profile;
   const foundTheSample = profile.samples.some(sample =>
-    sample.size >= 500 * 200 && sample.stack.some(frame => frame.includes('HTMLCanvasElement')));
+    sample.size >= 500 * 200 && sample.stack.some(frame =>
+      frame.includes('HTMLCanvasElement') || frame.includes('CanvasRenderingContext')));
   testRunner.log('Found sample: ' + foundTheSample);
   if (!foundTheSample)
     testRunner.log(profile);
diff --git a/third_party/blink/web_tests/inspector-protocol/memory/sampling-native-snapshot.js b/third_party/blink/web_tests/inspector-protocol/memory/sampling-native-snapshot.js
index a70e09dfc..e1e5644c 100644
--- a/third_party/blink/web_tests/inspector-protocol/memory/sampling-native-snapshot.js
+++ b/third_party/blink/web_tests/inspector-protocol/memory/sampling-native-snapshot.js
@@ -16,7 +16,8 @@
 
   const profile = message.result.profile;
   const foundTheSample = profile.samples.some(sample =>
-    sample.size >= 640 * 1024 && sample.stack.some(frame => frame.includes('HTMLCanvasElement')));
+    sample.size >= 640 * 1024 && sample.stack.some(frame =>
+      frame.includes('HTMLCanvasElement') || frame.includes('CanvasRenderingContext')));
   testRunner.log('Found sample: ' + foundTheSample);
 
   testRunner.completeTest();
diff --git a/third_party/blink/web_tests/platform/linux/fast/replaced/replaced-breaking-expected.png b/third_party/blink/web_tests/platform/linux/fast/replaced/replaced-breaking-expected.png
index b0851d5..529303a 100644
--- a/third_party/blink/web_tests/platform/linux/fast/replaced/replaced-breaking-expected.png
+++ b/third_party/blink/web_tests/platform/linux/fast/replaced/replaced-breaking-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-accelerated-keyboard-navigation-expected.png b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-accelerated-keyboard-navigation-expected.png
index f3c6ca4..c938f29 100644
--- a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-accelerated-keyboard-navigation-expected.png
+++ b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-accelerated-keyboard-navigation-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-click-expected.png b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-click-expected.png
index 290ef86..2b2826d 100644
--- a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-click-expected.png
+++ b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-click-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-accelerated-keyboard-navigation-from-top-left-corner-expected.png b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-accelerated-keyboard-navigation-from-top-left-corner-expected.png
index 023fee9..d50a7b09 100644
--- a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-accelerated-keyboard-navigation-from-top-left-corner-expected.png
+++ b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-accelerated-keyboard-navigation-from-top-left-corner-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-accelerated-keyboard-navigation-from-top-right-corner-expected.png b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-accelerated-keyboard-navigation-from-top-right-corner-expected.png
index d66ff3e..f005826c 100644
--- a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-accelerated-keyboard-navigation-from-top-right-corner-expected.png
+++ b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-accelerated-keyboard-navigation-from-top-right-corner-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-keyboard-navigation-from-top-left-corner-expected.png b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-keyboard-navigation-from-top-left-corner-expected.png
index 7cea601..1923d0d 100644
--- a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-keyboard-navigation-from-top-left-corner-expected.png
+++ b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-keyboard-navigation-from-top-left-corner-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-keyboard-navigation-from-top-right-corner-expected.png b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-keyboard-navigation-from-top-right-corner-expected.png
index 1a829b9..d80c396 100644
--- a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-keyboard-navigation-from-top-right-corner-expected.png
+++ b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-keyboard-navigation-from-top-right-corner-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-drag-expected.png b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-drag-expected.png
index 290ef86..2b2826d 100644
--- a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-drag-expected.png
+++ b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-drag-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-after-drag-expected.png b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-after-drag-expected.png
index c14cb83..b3b0fd9 100644
--- a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-after-drag-expected.png
+++ b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-after-drag-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-expected.png b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-expected.png
index b2b14ff..1db6f6e 100644
--- a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-expected.png
+++ b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-accelerated-keyboard-navigation-from-bottom-right-corner-expected.png b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-accelerated-keyboard-navigation-from-bottom-right-corner-expected.png
index a3a7d81..85d19e0 100644
--- a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-accelerated-keyboard-navigation-from-bottom-right-corner-expected.png
+++ b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-accelerated-keyboard-navigation-from-bottom-right-corner-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-accelerated-keyboard-navigation-from-top-right-corner-expected.png b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-accelerated-keyboard-navigation-from-top-right-corner-expected.png
index f364fe7..dedb0be 100644
--- a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-accelerated-keyboard-navigation-from-top-right-corner-expected.png
+++ b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-accelerated-keyboard-navigation-from-top-right-corner-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-keyboard-navigation-from-bottom-right-corner-expected.png b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-keyboard-navigation-from-bottom-right-corner-expected.png
index 2f947addec..c1d2dd9 100644
--- a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-keyboard-navigation-from-bottom-right-corner-expected.png
+++ b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-keyboard-navigation-from-bottom-right-corner-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-keyboard-navigation-from-top-right-corner-expected.png b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-keyboard-navigation-from-top-right-corner-expected.png
index e02071859..f5aa62627 100644
--- a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-keyboard-navigation-from-top-right-corner-expected.png
+++ b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-keyboard-navigation-from-top-right-corner-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-accelerated-keyboard-navigation-from-bottom-left-corner-expected.png b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-accelerated-keyboard-navigation-from-bottom-left-corner-expected.png
index 2529bfd..9f32693 100644
--- a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-accelerated-keyboard-navigation-from-bottom-left-corner-expected.png
+++ b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-accelerated-keyboard-navigation-from-bottom-left-corner-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-accelerated-keyboard-navigation-from-top-left-corner-expected.png b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-accelerated-keyboard-navigation-from-top-left-corner-expected.png
index 46e2ed20..9bd0edd 100644
--- a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-accelerated-keyboard-navigation-from-top-left-corner-expected.png
+++ b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-accelerated-keyboard-navigation-from-top-left-corner-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-keyboard-navigation-from-bottom-left-corner-expected.png b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-keyboard-navigation-from-bottom-left-corner-expected.png
index e8f291e..e724374 100644
--- a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-keyboard-navigation-from-bottom-left-corner-expected.png
+++ b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-keyboard-navigation-from-bottom-left-corner-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-keyboard-navigation-from-top-left-corner-expected.png b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-keyboard-navigation-from-top-left-corner-expected.png
index ada857e5..d2fcb59 100644
--- a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-keyboard-navigation-from-top-left-corner-expected.png
+++ b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-keyboard-navigation-from-top-left-corner-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-accelerated-keyboard-navigation-from-bottom-left-corner-expected.png b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-accelerated-keyboard-navigation-from-bottom-left-corner-expected.png
index e8d3870..fc9f9fa6 100644
--- a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-accelerated-keyboard-navigation-from-bottom-left-corner-expected.png
+++ b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-accelerated-keyboard-navigation-from-bottom-left-corner-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-accelerated-keyboard-navigation-from-bottom-right-corner-expected.png b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-accelerated-keyboard-navigation-from-bottom-right-corner-expected.png
index b45c1ed..aafde509 100644
--- a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-accelerated-keyboard-navigation-from-bottom-right-corner-expected.png
+++ b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-accelerated-keyboard-navigation-from-bottom-right-corner-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-keyboard-navigation-from-bottom-left-corner-expected.png b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-keyboard-navigation-from-bottom-left-corner-expected.png
index dd0a1bc..8437e06 100644
--- a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-keyboard-navigation-from-bottom-left-corner-expected.png
+++ b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-keyboard-navigation-from-bottom-left-corner-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-keyboard-navigation-from-bottom-right-corner-expected.png b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-keyboard-navigation-from-bottom-right-corner-expected.png
index 2ca70b9e..017873c2 100644
--- a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-keyboard-navigation-from-bottom-right-corner-expected.png
+++ b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-keyboard-navigation-from-bottom-right-corner-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-expected.png b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-expected.png
index 1cc4653..0cfe0f1 100644
--- a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-expected.png
+++ b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hex-format-expected.png b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hex-format-expected.png
index 95e7fb7..7435d31 100644
--- a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hex-format-expected.png
+++ b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hex-format-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hsl-format-expected.png b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hsl-format-expected.png
index 992eb05..dd3c40a 100644
--- a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hsl-format-expected.png
+++ b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hsl-format-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-accelerated-keyboard-navigation-expected.png b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-accelerated-keyboard-navigation-expected.png
index 12aeae7..73d01f9 100644
--- a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-accelerated-keyboard-navigation-expected.png
+++ b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-accelerated-keyboard-navigation-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-click-expected.png b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-click-expected.png
index 1a8956d3..cf1d256 100644
--- a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-click-expected.png
+++ b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-click-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-drag-expected.png b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-drag-expected.png
index 1a8956d3..cf1d256 100644
--- a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-drag-expected.png
+++ b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-drag-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-keyboard-navigation-expected.png b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-keyboard-navigation-expected.png
index dfd4cb4..697e016e 100644
--- a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-keyboard-navigation-expected.png
+++ b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-keyboard-navigation-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-left-edge-zero-hue-expected.png b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-left-edge-zero-hue-expected.png
index 68afb4c..592c73b 100644
--- a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-left-edge-zero-hue-expected.png
+++ b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-left-edge-zero-hue-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-right-edge-zero-hue-expected.png b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-right-edge-zero-hue-expected.png
index 3d61ba3..e4d355f 100644
--- a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-right-edge-zero-hue-expected.png
+++ b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-right-edge-zero-hue-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-imperfect-match-expected.png b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-imperfect-match-expected.png
index 2bb26e3e..b51a3b8 100644
--- a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-imperfect-match-expected.png
+++ b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-imperfect-match-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-manual-color-change-expected.png b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-manual-color-change-expected.png
index cd360e0a..dab82e64 100644
--- a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-manual-color-change-expected.png
+++ b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-manual-color-change-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-set-value-expected.png b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-set-value-expected.png
index fd75baf..ba22656 100644
--- a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-set-value-expected.png
+++ b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-set-value-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-value-attribute-expected.png b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-value-attribute-expected.png
index 10ca19c..3506c0f 100644
--- a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-value-attribute-expected.png
+++ b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-value-attribute-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-zoom125-expected.png b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-zoom125-expected.png
index 5dd9dcd8..05aff4d2 100644
--- a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-zoom125-expected.png
+++ b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-zoom125-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-zoom200-expected.png b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-zoom200-expected.png
index 2ce807c0..fe86ee1 100644
--- a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-zoom200-expected.png
+++ b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-zoom200-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-accelerated-keyboard-navigation-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-accelerated-keyboard-navigation-expected.png
index 9cf4305..97cc793 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-accelerated-keyboard-navigation-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-accelerated-keyboard-navigation-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-click-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-click-expected.png
index 738581f3..74f49e2 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-click-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-click-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-accelerated-keyboard-navigation-from-top-left-corner-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-accelerated-keyboard-navigation-from-top-left-corner-expected.png
index f85f0153..78c70a4 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-accelerated-keyboard-navigation-from-top-left-corner-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-accelerated-keyboard-navigation-from-top-left-corner-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-accelerated-keyboard-navigation-from-top-right-corner-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-accelerated-keyboard-navigation-from-top-right-corner-expected.png
index 97087ade..2692915 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-accelerated-keyboard-navigation-from-top-right-corner-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-accelerated-keyboard-navigation-from-top-right-corner-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-keyboard-navigation-from-top-left-corner-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-keyboard-navigation-from-top-left-corner-expected.png
index f20339b2..a3ff8f5 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-keyboard-navigation-from-top-left-corner-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-keyboard-navigation-from-top-left-corner-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-keyboard-navigation-from-top-right-corner-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-keyboard-navigation-from-top-right-corner-expected.png
index e082657..ac670b6f 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-keyboard-navigation-from-top-right-corner-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-keyboard-navigation-from-top-right-corner-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-drag-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-drag-expected.png
index 738581f3..74f49e2 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-drag-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-drag-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-after-drag-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-after-drag-expected.png
index af56a0ff..9276a92c 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-after-drag-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-after-drag-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-expected.png
index 8510a81..6e25cb5f 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-accelerated-keyboard-navigation-from-bottom-right-corner-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-accelerated-keyboard-navigation-from-bottom-right-corner-expected.png
index b26c64626..626a7034 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-accelerated-keyboard-navigation-from-bottom-right-corner-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-accelerated-keyboard-navigation-from-bottom-right-corner-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-accelerated-keyboard-navigation-from-top-right-corner-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-accelerated-keyboard-navigation-from-top-right-corner-expected.png
index 1e1e71f..ca7f3e2 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-accelerated-keyboard-navigation-from-top-right-corner-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-accelerated-keyboard-navigation-from-top-right-corner-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-keyboard-navigation-from-bottom-right-corner-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-keyboard-navigation-from-bottom-right-corner-expected.png
index 42b31b0..dfb6339 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-keyboard-navigation-from-bottom-right-corner-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-keyboard-navigation-from-bottom-right-corner-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-keyboard-navigation-from-top-right-corner-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-keyboard-navigation-from-top-right-corner-expected.png
index 00daf90..2b4e560 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-keyboard-navigation-from-top-right-corner-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-keyboard-navigation-from-top-right-corner-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-accelerated-keyboard-navigation-from-bottom-left-corner-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-accelerated-keyboard-navigation-from-bottom-left-corner-expected.png
index 051f78d..d48e9e33 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-accelerated-keyboard-navigation-from-bottom-left-corner-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-accelerated-keyboard-navigation-from-bottom-left-corner-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-accelerated-keyboard-navigation-from-top-left-corner-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-accelerated-keyboard-navigation-from-top-left-corner-expected.png
index 38a2dfd1..6fd67c19 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-accelerated-keyboard-navigation-from-top-left-corner-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-accelerated-keyboard-navigation-from-top-left-corner-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-keyboard-navigation-from-bottom-left-corner-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-keyboard-navigation-from-bottom-left-corner-expected.png
index 6bfddc50..0fe70ff 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-keyboard-navigation-from-bottom-left-corner-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-keyboard-navigation-from-bottom-left-corner-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-keyboard-navigation-from-top-left-corner-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-keyboard-navigation-from-top-left-corner-expected.png
index 3d3a3a3..7e9d150 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-keyboard-navigation-from-top-left-corner-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-keyboard-navigation-from-top-left-corner-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-accelerated-keyboard-navigation-from-bottom-left-corner-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-accelerated-keyboard-navigation-from-bottom-left-corner-expected.png
index 8beb5ec..4215ebe10 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-accelerated-keyboard-navigation-from-bottom-left-corner-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-accelerated-keyboard-navigation-from-bottom-left-corner-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-accelerated-keyboard-navigation-from-bottom-right-corner-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-accelerated-keyboard-navigation-from-bottom-right-corner-expected.png
index 58257dc3..4577b736 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-accelerated-keyboard-navigation-from-bottom-right-corner-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-accelerated-keyboard-navigation-from-bottom-right-corner-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-keyboard-navigation-from-bottom-left-corner-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-keyboard-navigation-from-bottom-left-corner-expected.png
index 3d4ba6b..975ca10e 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-keyboard-navigation-from-bottom-left-corner-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-keyboard-navigation-from-bottom-left-corner-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-keyboard-navigation-from-bottom-right-corner-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-keyboard-navigation-from-bottom-right-corner-expected.png
index 4d93860..00e252c 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-keyboard-navigation-from-bottom-right-corner-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-keyboard-navigation-from-bottom-right-corner-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-expected.png
index 931c3dc..b2b00ca 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hex-format-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hex-format-expected.png
index 96977e89..8fa44349 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hex-format-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hex-format-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hsl-format-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hsl-format-expected.png
index 85c0c18..15a7452 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hsl-format-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hsl-format-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-accelerated-keyboard-navigation-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-accelerated-keyboard-navigation-expected.png
index fed3e3a..8df6bfcf 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-accelerated-keyboard-navigation-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-accelerated-keyboard-navigation-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-click-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-click-expected.png
index 4fea012..d3a5532 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-click-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-click-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-drag-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-drag-expected.png
index 4fea012..d3a5532 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-drag-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-drag-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-keyboard-navigation-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-keyboard-navigation-expected.png
index b2fabb50..77f6cc38 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-keyboard-navigation-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-keyboard-navigation-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-left-edge-zero-hue-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-left-edge-zero-hue-expected.png
index 79c64c4..67197f9 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-left-edge-zero-hue-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-left-edge-zero-hue-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-right-edge-zero-hue-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-right-edge-zero-hue-expected.png
index 420c07b..1ea425c6 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-right-edge-zero-hue-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-right-edge-zero-hue-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-imperfect-match-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-imperfect-match-expected.png
index 0c1d55d..ad4ae26 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-imperfect-match-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-imperfect-match-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-manual-color-change-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-manual-color-change-expected.png
index c91d2b4..fb1a328d 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-manual-color-change-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-manual-color-change-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-set-value-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-set-value-expected.png
index 191dc5f..5794e24 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-set-value-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-set-value-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-value-attribute-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-value-attribute-expected.png
index cde0033..d293115 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-value-attribute-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-value-attribute-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-zoom125-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-zoom125-expected.png
index b4a394e..139ef26 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-zoom125-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-zoom125-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-zoom200-expected.png b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-zoom200-expected.png
index dfdcdb9..0a2f0e8 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-zoom200-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.10/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-zoom200-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-accelerated-keyboard-navigation-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-accelerated-keyboard-navigation-expected.png
index 8124d81..97cc793 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-accelerated-keyboard-navigation-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-accelerated-keyboard-navigation-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-click-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-click-expected.png
index 0c155fd..74f49e2 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-click-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-click-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-accelerated-keyboard-navigation-from-top-left-corner-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-accelerated-keyboard-navigation-from-top-left-corner-expected.png
index be09e39..78c70a4 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-accelerated-keyboard-navigation-from-top-left-corner-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-accelerated-keyboard-navigation-from-top-left-corner-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-accelerated-keyboard-navigation-from-top-right-corner-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-accelerated-keyboard-navigation-from-top-right-corner-expected.png
index abd1fdd..2692915 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-accelerated-keyboard-navigation-from-top-right-corner-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-accelerated-keyboard-navigation-from-top-right-corner-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-keyboard-navigation-from-top-left-corner-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-keyboard-navigation-from-top-left-corner-expected.png
index 806c7628..a3ff8f5 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-keyboard-navigation-from-top-left-corner-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-keyboard-navigation-from-top-left-corner-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-keyboard-navigation-from-top-right-corner-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-keyboard-navigation-from-top-right-corner-expected.png
index 0e625ca..ac670b6f 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-keyboard-navigation-from-top-right-corner-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-keyboard-navigation-from-top-right-corner-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-drag-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-drag-expected.png
index 0c155fd..74f49e2 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-drag-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-drag-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-after-drag-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-after-drag-expected.png
index bff0779..9276a92c 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-after-drag-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-after-drag-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-expected.png
index ff5fb21..6e25cb5f 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-accelerated-keyboard-navigation-from-bottom-right-corner-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-accelerated-keyboard-navigation-from-bottom-right-corner-expected.png
index 3ec53832..626a7034 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-accelerated-keyboard-navigation-from-bottom-right-corner-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-accelerated-keyboard-navigation-from-bottom-right-corner-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-accelerated-keyboard-navigation-from-top-right-corner-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-accelerated-keyboard-navigation-from-top-right-corner-expected.png
index a40a0ee..ca7f3e2 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-accelerated-keyboard-navigation-from-top-right-corner-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-accelerated-keyboard-navigation-from-top-right-corner-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-keyboard-navigation-from-bottom-right-corner-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-keyboard-navigation-from-bottom-right-corner-expected.png
index 0534a82..dfb6339 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-keyboard-navigation-from-bottom-right-corner-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-keyboard-navigation-from-bottom-right-corner-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-keyboard-navigation-from-top-right-corner-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-keyboard-navigation-from-top-right-corner-expected.png
index e55aa175..2b4e560 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-keyboard-navigation-from-top-right-corner-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-keyboard-navigation-from-top-right-corner-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-accelerated-keyboard-navigation-from-bottom-left-corner-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-accelerated-keyboard-navigation-from-bottom-left-corner-expected.png
index dbf0c11b..d48e9e33 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-accelerated-keyboard-navigation-from-bottom-left-corner-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-accelerated-keyboard-navigation-from-bottom-left-corner-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-accelerated-keyboard-navigation-from-top-left-corner-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-accelerated-keyboard-navigation-from-top-left-corner-expected.png
index 42bd2e11..6fd67c19 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-accelerated-keyboard-navigation-from-top-left-corner-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-accelerated-keyboard-navigation-from-top-left-corner-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-keyboard-navigation-from-bottom-left-corner-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-keyboard-navigation-from-bottom-left-corner-expected.png
index 27ee8bc..0fe70ff 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-keyboard-navigation-from-bottom-left-corner-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-keyboard-navigation-from-bottom-left-corner-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-keyboard-navigation-from-top-left-corner-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-keyboard-navigation-from-top-left-corner-expected.png
index 0cf9a90..7e9d150 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-keyboard-navigation-from-top-left-corner-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-keyboard-navigation-from-top-left-corner-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-accelerated-keyboard-navigation-from-bottom-left-corner-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-accelerated-keyboard-navigation-from-bottom-left-corner-expected.png
index fe2f3227..4215ebe10 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-accelerated-keyboard-navigation-from-bottom-left-corner-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-accelerated-keyboard-navigation-from-bottom-left-corner-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-accelerated-keyboard-navigation-from-bottom-right-corner-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-accelerated-keyboard-navigation-from-bottom-right-corner-expected.png
index a688255..4577b736 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-accelerated-keyboard-navigation-from-bottom-right-corner-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-accelerated-keyboard-navigation-from-bottom-right-corner-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-keyboard-navigation-from-bottom-left-corner-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-keyboard-navigation-from-bottom-left-corner-expected.png
index c31a336..975ca10e 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-keyboard-navigation-from-bottom-left-corner-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-keyboard-navigation-from-bottom-left-corner-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-keyboard-navigation-from-bottom-right-corner-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-keyboard-navigation-from-bottom-right-corner-expected.png
index cdf8e59..00e252c 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-keyboard-navigation-from-bottom-right-corner-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-keyboard-navigation-from-bottom-right-corner-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-expected.png
index c9117799..b2b00ca 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hex-format-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hex-format-expected.png
index 39eef19f..8fa44349 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hex-format-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hex-format-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hsl-format-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hsl-format-expected.png
index b345ddb..15a7452 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hsl-format-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hsl-format-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-accelerated-keyboard-navigation-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-accelerated-keyboard-navigation-expected.png
index 9a08ea1..8df6bfcf 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-accelerated-keyboard-navigation-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-accelerated-keyboard-navigation-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-click-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-click-expected.png
index 2130cbe..d3a5532 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-click-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-click-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-drag-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-drag-expected.png
index 2130cbe..d3a5532 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-drag-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-drag-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-keyboard-navigation-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-keyboard-navigation-expected.png
index 663cd243..77f6cc38 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-keyboard-navigation-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-keyboard-navigation-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-left-edge-zero-hue-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-left-edge-zero-hue-expected.png
index 1a1024a..67197f9 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-left-edge-zero-hue-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-left-edge-zero-hue-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-right-edge-zero-hue-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-right-edge-zero-hue-expected.png
index d89adeb..1ea425c6 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-right-edge-zero-hue-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-right-edge-zero-hue-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-imperfect-match-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-imperfect-match-expected.png
index 7e57edb..ad4ae26 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-imperfect-match-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-imperfect-match-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-manual-color-change-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-manual-color-change-expected.png
index a1266f7..fb1a328d 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-manual-color-change-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-manual-color-change-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-set-value-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-set-value-expected.png
index 84dfa2ae..5794e24 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-set-value-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-set-value-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-value-attribute-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-value-attribute-expected.png
index b3ea6e3..d293115 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-value-attribute-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-value-attribute-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-zoom125-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-zoom125-expected.png
index ae551468..139ef26 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-zoom125-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-zoom125-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-zoom200-expected.png b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-zoom200-expected.png
index 72d216c..0a2f0e8 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-zoom200-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.11/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-zoom200-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-accelerated-keyboard-navigation-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-accelerated-keyboard-navigation-expected.png
index 3b8e26f..97cc793 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-accelerated-keyboard-navigation-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-accelerated-keyboard-navigation-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-click-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-click-expected.png
index 788a23f3..74f49e2 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-click-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-click-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-accelerated-keyboard-navigation-from-top-left-corner-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-accelerated-keyboard-navigation-from-top-left-corner-expected.png
index 4b83082..78c70a4 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-accelerated-keyboard-navigation-from-top-left-corner-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-accelerated-keyboard-navigation-from-top-left-corner-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-accelerated-keyboard-navigation-from-top-right-corner-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-accelerated-keyboard-navigation-from-top-right-corner-expected.png
index d939fe7..2692915 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-accelerated-keyboard-navigation-from-top-right-corner-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-accelerated-keyboard-navigation-from-top-right-corner-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-keyboard-navigation-from-top-left-corner-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-keyboard-navigation-from-top-left-corner-expected.png
index 36b81568a..a3ff8f5 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-keyboard-navigation-from-top-left-corner-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-keyboard-navigation-from-top-left-corner-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-keyboard-navigation-from-top-right-corner-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-keyboard-navigation-from-top-right-corner-expected.png
index eda0465..ac670b6f 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-keyboard-navigation-from-top-right-corner-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-keyboard-navigation-from-top-right-corner-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-drag-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-drag-expected.png
index 788a23f3..74f49e2 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-drag-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-drag-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-after-drag-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-after-drag-expected.png
index 90afc496..9276a92c 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-after-drag-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-after-drag-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-expected.png
index 4034d5b3..6e25cb5f 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-accelerated-keyboard-navigation-from-bottom-right-corner-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-accelerated-keyboard-navigation-from-bottom-right-corner-expected.png
index 57e87ee2..626a7034 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-accelerated-keyboard-navigation-from-bottom-right-corner-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-accelerated-keyboard-navigation-from-bottom-right-corner-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-accelerated-keyboard-navigation-from-top-right-corner-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-accelerated-keyboard-navigation-from-top-right-corner-expected.png
index 69571b6..ca7f3e2 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-accelerated-keyboard-navigation-from-top-right-corner-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-accelerated-keyboard-navigation-from-top-right-corner-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-keyboard-navigation-from-bottom-right-corner-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-keyboard-navigation-from-bottom-right-corner-expected.png
index 6d82e74..dfb6339 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-keyboard-navigation-from-bottom-right-corner-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-keyboard-navigation-from-bottom-right-corner-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-keyboard-navigation-from-top-right-corner-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-keyboard-navigation-from-top-right-corner-expected.png
index c3fabe3f..2b4e560 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-keyboard-navigation-from-top-right-corner-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-keyboard-navigation-from-top-right-corner-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-accelerated-keyboard-navigation-from-bottom-left-corner-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-accelerated-keyboard-navigation-from-bottom-left-corner-expected.png
index 31a41d6..d48e9e33 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-accelerated-keyboard-navigation-from-bottom-left-corner-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-accelerated-keyboard-navigation-from-bottom-left-corner-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-accelerated-keyboard-navigation-from-top-left-corner-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-accelerated-keyboard-navigation-from-top-left-corner-expected.png
index c1c1ce6..6fd67c19 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-accelerated-keyboard-navigation-from-top-left-corner-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-accelerated-keyboard-navigation-from-top-left-corner-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-keyboard-navigation-from-bottom-left-corner-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-keyboard-navigation-from-bottom-left-corner-expected.png
index b1ab40c..0fe70ff 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-keyboard-navigation-from-bottom-left-corner-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-keyboard-navigation-from-bottom-left-corner-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-keyboard-navigation-from-top-left-corner-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-keyboard-navigation-from-top-left-corner-expected.png
index cc38f0c..7e9d150 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-keyboard-navigation-from-top-left-corner-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-keyboard-navigation-from-top-left-corner-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-accelerated-keyboard-navigation-from-bottom-left-corner-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-accelerated-keyboard-navigation-from-bottom-left-corner-expected.png
index 5128ca1..4215ebe10 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-accelerated-keyboard-navigation-from-bottom-left-corner-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-accelerated-keyboard-navigation-from-bottom-left-corner-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-accelerated-keyboard-navigation-from-bottom-right-corner-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-accelerated-keyboard-navigation-from-bottom-right-corner-expected.png
index 02fef93..4577b736 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-accelerated-keyboard-navigation-from-bottom-right-corner-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-accelerated-keyboard-navigation-from-bottom-right-corner-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-keyboard-navigation-from-bottom-left-corner-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-keyboard-navigation-from-bottom-left-corner-expected.png
index 09c7eb8..975ca10e 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-keyboard-navigation-from-bottom-left-corner-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-keyboard-navigation-from-bottom-left-corner-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-keyboard-navigation-from-bottom-right-corner-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-keyboard-navigation-from-bottom-right-corner-expected.png
index 8b18add..00e252c 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-keyboard-navigation-from-bottom-right-corner-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-keyboard-navigation-from-bottom-right-corner-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-expected.png
index 766d9ba88d..b2b00ca 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hex-format-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hex-format-expected.png
index 90e4da6..8fa44349 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hex-format-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hex-format-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hsl-format-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hsl-format-expected.png
index 5957af2..15a7452 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hsl-format-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hsl-format-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-accelerated-keyboard-navigation-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-accelerated-keyboard-navigation-expected.png
index d95bd0d..8df6bfcf 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-accelerated-keyboard-navigation-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-accelerated-keyboard-navigation-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-click-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-click-expected.png
index c5bcd67..d3a5532 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-click-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-click-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-drag-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-drag-expected.png
index c5bcd67..d3a5532 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-drag-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-drag-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-keyboard-navigation-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-keyboard-navigation-expected.png
index 55787b3..77f6cc38 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-keyboard-navigation-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-keyboard-navigation-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-left-edge-zero-hue-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-left-edge-zero-hue-expected.png
index 70eee753..67197f9 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-left-edge-zero-hue-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-left-edge-zero-hue-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-right-edge-zero-hue-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-right-edge-zero-hue-expected.png
index 6004551e..1ea425c6 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-right-edge-zero-hue-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-right-edge-zero-hue-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-imperfect-match-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-imperfect-match-expected.png
index 9e40a9e..ad4ae26 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-imperfect-match-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-imperfect-match-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-manual-color-change-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-manual-color-change-expected.png
index d598b1d0..fb1a328d 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-manual-color-change-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-manual-color-change-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-set-value-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-set-value-expected.png
index ae52f7f..5794e24 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-set-value-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-set-value-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-value-attribute-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-value-attribute-expected.png
index 8706e725e..d293115 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-value-attribute-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-value-attribute-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-zoom125-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-zoom125-expected.png
index 1b0f72e..139ef26 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-zoom125-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-zoom125-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-zoom200-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-zoom200-expected.png
index 214405ee..0a2f0e8 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-zoom200-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-zoom200-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-accelerated-keyboard-navigation-expected.png b/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-accelerated-keyboard-navigation-expected.png
index 3b8e26f..129adc8 100644
--- a/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-accelerated-keyboard-navigation-expected.png
+++ b/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-accelerated-keyboard-navigation-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-click-expected.png b/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-click-expected.png
index 788a23f3..6bf11e8 100644
--- a/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-click-expected.png
+++ b/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-click-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-accelerated-keyboard-navigation-from-top-left-corner-expected.png b/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-accelerated-keyboard-navigation-from-top-left-corner-expected.png
index 4b83082..e4b5de44 100644
--- a/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-accelerated-keyboard-navigation-from-top-left-corner-expected.png
+++ b/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-accelerated-keyboard-navigation-from-top-left-corner-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-accelerated-keyboard-navigation-from-top-right-corner-expected.png b/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-accelerated-keyboard-navigation-from-top-right-corner-expected.png
index d939fe7..fff5e4d 100644
--- a/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-accelerated-keyboard-navigation-from-top-right-corner-expected.png
+++ b/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-accelerated-keyboard-navigation-from-top-right-corner-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-keyboard-navigation-from-top-left-corner-expected.png b/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-keyboard-navigation-from-top-left-corner-expected.png
index 36b81568a..4491f97 100644
--- a/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-keyboard-navigation-from-top-left-corner-expected.png
+++ b/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-keyboard-navigation-from-top-left-corner-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-keyboard-navigation-from-top-right-corner-expected.png b/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-keyboard-navigation-from-top-right-corner-expected.png
index eda0465..f71675a9 100644
--- a/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-keyboard-navigation-from-top-right-corner-expected.png
+++ b/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-keyboard-navigation-from-top-right-corner-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-drag-expected.png b/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-drag-expected.png
index 788a23f3..6bf11e8 100644
--- a/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-drag-expected.png
+++ b/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-drag-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-after-drag-expected.png b/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-after-drag-expected.png
index 28c5c96..065cff1 100644
--- a/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-after-drag-expected.png
+++ b/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-after-drag-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-expected.png b/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-expected.png
index 786f67f..4cab342 100644
--- a/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-expected.png
+++ b/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-accelerated-keyboard-navigation-from-bottom-right-corner-expected.png b/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-accelerated-keyboard-navigation-from-bottom-right-corner-expected.png
index 57e87ee2..ed7d334 100644
--- a/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-accelerated-keyboard-navigation-from-bottom-right-corner-expected.png
+++ b/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-accelerated-keyboard-navigation-from-bottom-right-corner-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-accelerated-keyboard-navigation-from-top-right-corner-expected.png b/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-accelerated-keyboard-navigation-from-top-right-corner-expected.png
index b60ec9b..35a44799 100644
--- a/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-accelerated-keyboard-navigation-from-top-right-corner-expected.png
+++ b/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-accelerated-keyboard-navigation-from-top-right-corner-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-keyboard-navigation-from-bottom-right-corner-expected.png b/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-keyboard-navigation-from-bottom-right-corner-expected.png
index 6d82e74..1602af4 100644
--- a/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-keyboard-navigation-from-bottom-right-corner-expected.png
+++ b/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-keyboard-navigation-from-bottom-right-corner-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-keyboard-navigation-from-top-right-corner-expected.png b/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-keyboard-navigation-from-top-right-corner-expected.png
index 39a9dc0..2bfb45b 100644
--- a/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-keyboard-navigation-from-top-right-corner-expected.png
+++ b/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-keyboard-navigation-from-top-right-corner-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-accelerated-keyboard-navigation-from-bottom-left-corner-expected.png b/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-accelerated-keyboard-navigation-from-bottom-left-corner-expected.png
index 31a41d6..37cff23 100644
--- a/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-accelerated-keyboard-navigation-from-bottom-left-corner-expected.png
+++ b/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-accelerated-keyboard-navigation-from-bottom-left-corner-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-accelerated-keyboard-navigation-from-top-left-corner-expected.png b/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-accelerated-keyboard-navigation-from-top-left-corner-expected.png
index 62a9e337..71f19c42 100644
--- a/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-accelerated-keyboard-navigation-from-top-left-corner-expected.png
+++ b/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-accelerated-keyboard-navigation-from-top-left-corner-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-keyboard-navigation-from-bottom-left-corner-expected.png b/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-keyboard-navigation-from-bottom-left-corner-expected.png
index b1ab40c..a2fdb5e 100644
--- a/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-keyboard-navigation-from-bottom-left-corner-expected.png
+++ b/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-keyboard-navigation-from-bottom-left-corner-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-keyboard-navigation-from-top-left-corner-expected.png b/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-keyboard-navigation-from-top-left-corner-expected.png
index 72ef717..358b6e2 100644
--- a/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-keyboard-navigation-from-top-left-corner-expected.png
+++ b/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-keyboard-navigation-from-top-left-corner-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-accelerated-keyboard-navigation-from-bottom-left-corner-expected.png b/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-accelerated-keyboard-navigation-from-bottom-left-corner-expected.png
index 5128ca1..5fa35de 100644
--- a/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-accelerated-keyboard-navigation-from-bottom-left-corner-expected.png
+++ b/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-accelerated-keyboard-navigation-from-bottom-left-corner-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-accelerated-keyboard-navigation-from-bottom-right-corner-expected.png b/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-accelerated-keyboard-navigation-from-bottom-right-corner-expected.png
index 02fef93..934e209 100644
--- a/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-accelerated-keyboard-navigation-from-bottom-right-corner-expected.png
+++ b/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-accelerated-keyboard-navigation-from-bottom-right-corner-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-keyboard-navigation-from-bottom-left-corner-expected.png b/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-keyboard-navigation-from-bottom-left-corner-expected.png
index 09c7eb8..ce435da8 100644
--- a/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-keyboard-navigation-from-bottom-left-corner-expected.png
+++ b/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-keyboard-navigation-from-bottom-left-corner-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-keyboard-navigation-from-bottom-right-corner-expected.png b/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-keyboard-navigation-from-bottom-right-corner-expected.png
index 8b18add..5892c80 100644
--- a/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-keyboard-navigation-from-bottom-right-corner-expected.png
+++ b/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-keyboard-navigation-from-bottom-right-corner-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-expected.png b/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-expected.png
index 766d9ba88d..1692a62c 100644
--- a/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-expected.png
+++ b/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hex-format-expected.png b/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hex-format-expected.png
index a14781d..8095a29 100644
--- a/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hex-format-expected.png
+++ b/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hex-format-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hsl-format-expected.png b/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hsl-format-expected.png
index ae4e9be..0ec76978 100644
--- a/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hsl-format-expected.png
+++ b/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hsl-format-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-accelerated-keyboard-navigation-expected.png b/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-accelerated-keyboard-navigation-expected.png
index d95bd0d..4bf7436 100644
--- a/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-accelerated-keyboard-navigation-expected.png
+++ b/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-accelerated-keyboard-navigation-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-click-expected.png b/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-click-expected.png
index c5bcd67..1f4606f6 100644
--- a/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-click-expected.png
+++ b/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-click-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-drag-expected.png b/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-drag-expected.png
index c5bcd67..1f4606f6 100644
--- a/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-drag-expected.png
+++ b/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-drag-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-keyboard-navigation-expected.png b/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-keyboard-navigation-expected.png
index 55787b3..c95f913 100644
--- a/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-keyboard-navigation-expected.png
+++ b/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-keyboard-navigation-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-left-edge-zero-hue-expected.png b/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-left-edge-zero-hue-expected.png
index 92f01c09..ae76a47d 100644
--- a/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-left-edge-zero-hue-expected.png
+++ b/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-left-edge-zero-hue-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-right-edge-zero-hue-expected.png b/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-right-edge-zero-hue-expected.png
index face5a7..cdec9d0 100644
--- a/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-right-edge-zero-hue-expected.png
+++ b/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-right-edge-zero-hue-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-imperfect-match-expected.png b/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-imperfect-match-expected.png
index c4bb77f..280d225 100644
--- a/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-imperfect-match-expected.png
+++ b/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-imperfect-match-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-manual-color-change-expected.png b/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-manual-color-change-expected.png
index 7ba66d2..8422596 100644
--- a/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-manual-color-change-expected.png
+++ b/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-manual-color-change-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-set-value-expected.png b/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-set-value-expected.png
index ae52f7f..ddb6e3bd 100644
--- a/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-set-value-expected.png
+++ b/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-set-value-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-value-attribute-expected.png b/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-value-attribute-expected.png
index acf3815..7cf98ba 100644
--- a/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-value-attribute-expected.png
+++ b/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-value-attribute-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-zoom125-expected.png b/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-zoom125-expected.png
index 1b0f72e..5cf7d9d 100644
--- a/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-zoom125-expected.png
+++ b/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-zoom125-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-zoom200-expected.png b/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-zoom200-expected.png
index 6c2851a..7a07326 100644
--- a/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-zoom200-expected.png
+++ b/third_party/blink/web_tests/platform/mac-retina/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-zoom200-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-accelerated-keyboard-navigation-expected.png b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-accelerated-keyboard-navigation-expected.png
index 3b8e26f..129adc8 100644
--- a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-accelerated-keyboard-navigation-expected.png
+++ b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-accelerated-keyboard-navigation-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-click-expected.png b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-click-expected.png
index 788a23f3..6bf11e8 100644
--- a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-click-expected.png
+++ b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-click-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-accelerated-keyboard-navigation-from-top-left-corner-expected.png b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-accelerated-keyboard-navigation-from-top-left-corner-expected.png
index 4b83082..e4b5de44 100644
--- a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-accelerated-keyboard-navigation-from-top-left-corner-expected.png
+++ b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-accelerated-keyboard-navigation-from-top-left-corner-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-accelerated-keyboard-navigation-from-top-right-corner-expected.png b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-accelerated-keyboard-navigation-from-top-right-corner-expected.png
index d939fe7..fff5e4d 100644
--- a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-accelerated-keyboard-navigation-from-top-right-corner-expected.png
+++ b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-accelerated-keyboard-navigation-from-top-right-corner-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-keyboard-navigation-from-top-left-corner-expected.png b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-keyboard-navigation-from-top-left-corner-expected.png
index 36b81568a..4491f97 100644
--- a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-keyboard-navigation-from-top-left-corner-expected.png
+++ b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-keyboard-navigation-from-top-left-corner-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-keyboard-navigation-from-top-right-corner-expected.png b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-keyboard-navigation-from-top-right-corner-expected.png
index eda0465..f71675a9 100644
--- a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-keyboard-navigation-from-top-right-corner-expected.png
+++ b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-keyboard-navigation-from-top-right-corner-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-drag-expected.png b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-drag-expected.png
index 788a23f3..6bf11e8 100644
--- a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-drag-expected.png
+++ b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-drag-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-after-drag-expected.png b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-after-drag-expected.png
index 28c5c96..065cff1 100644
--- a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-after-drag-expected.png
+++ b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-after-drag-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-expected.png b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-expected.png
index 786f67f..4cab342 100644
--- a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-expected.png
+++ b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-accelerated-keyboard-navigation-from-bottom-right-corner-expected.png b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-accelerated-keyboard-navigation-from-bottom-right-corner-expected.png
index 57e87ee2..ed7d334 100644
--- a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-accelerated-keyboard-navigation-from-bottom-right-corner-expected.png
+++ b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-accelerated-keyboard-navigation-from-bottom-right-corner-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-accelerated-keyboard-navigation-from-top-right-corner-expected.png b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-accelerated-keyboard-navigation-from-top-right-corner-expected.png
index b60ec9b..35a44799 100644
--- a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-accelerated-keyboard-navigation-from-top-right-corner-expected.png
+++ b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-accelerated-keyboard-navigation-from-top-right-corner-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-keyboard-navigation-from-bottom-right-corner-expected.png b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-keyboard-navigation-from-bottom-right-corner-expected.png
index 6d82e74..1602af4 100644
--- a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-keyboard-navigation-from-bottom-right-corner-expected.png
+++ b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-keyboard-navigation-from-bottom-right-corner-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-keyboard-navigation-from-top-right-corner-expected.png b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-keyboard-navigation-from-top-right-corner-expected.png
index 39a9dc0..2bfb45b 100644
--- a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-keyboard-navigation-from-top-right-corner-expected.png
+++ b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-keyboard-navigation-from-top-right-corner-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-accelerated-keyboard-navigation-from-bottom-left-corner-expected.png b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-accelerated-keyboard-navigation-from-bottom-left-corner-expected.png
index 31a41d6..37cff23 100644
--- a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-accelerated-keyboard-navigation-from-bottom-left-corner-expected.png
+++ b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-accelerated-keyboard-navigation-from-bottom-left-corner-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-accelerated-keyboard-navigation-from-top-left-corner-expected.png b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-accelerated-keyboard-navigation-from-top-left-corner-expected.png
index 62a9e337..71f19c42 100644
--- a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-accelerated-keyboard-navigation-from-top-left-corner-expected.png
+++ b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-accelerated-keyboard-navigation-from-top-left-corner-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-keyboard-navigation-from-bottom-left-corner-expected.png b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-keyboard-navigation-from-bottom-left-corner-expected.png
index b1ab40c..a2fdb5e 100644
--- a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-keyboard-navigation-from-bottom-left-corner-expected.png
+++ b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-keyboard-navigation-from-bottom-left-corner-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-keyboard-navigation-from-top-left-corner-expected.png b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-keyboard-navigation-from-top-left-corner-expected.png
index 72ef717..358b6e2 100644
--- a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-keyboard-navigation-from-top-left-corner-expected.png
+++ b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-keyboard-navigation-from-top-left-corner-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-accelerated-keyboard-navigation-from-bottom-left-corner-expected.png b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-accelerated-keyboard-navigation-from-bottom-left-corner-expected.png
index 5128ca1..5fa35de 100644
--- a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-accelerated-keyboard-navigation-from-bottom-left-corner-expected.png
+++ b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-accelerated-keyboard-navigation-from-bottom-left-corner-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-accelerated-keyboard-navigation-from-bottom-right-corner-expected.png b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-accelerated-keyboard-navigation-from-bottom-right-corner-expected.png
index 02fef93..934e209 100644
--- a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-accelerated-keyboard-navigation-from-bottom-right-corner-expected.png
+++ b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-accelerated-keyboard-navigation-from-bottom-right-corner-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-keyboard-navigation-from-bottom-left-corner-expected.png b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-keyboard-navigation-from-bottom-left-corner-expected.png
index 09c7eb8..ce435da8 100644
--- a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-keyboard-navigation-from-bottom-left-corner-expected.png
+++ b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-keyboard-navigation-from-bottom-left-corner-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-keyboard-navigation-from-bottom-right-corner-expected.png b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-keyboard-navigation-from-bottom-right-corner-expected.png
index 8b18add..5892c80 100644
--- a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-keyboard-navigation-from-bottom-right-corner-expected.png
+++ b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-keyboard-navigation-from-bottom-right-corner-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-expected.png b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-expected.png
index 766d9ba88d..1692a62c 100644
--- a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-expected.png
+++ b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hex-format-expected.png b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hex-format-expected.png
index a14781d..8095a29 100644
--- a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hex-format-expected.png
+++ b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hex-format-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hsl-format-expected.png b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hsl-format-expected.png
index ae4e9be..0ec76978 100644
--- a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hsl-format-expected.png
+++ b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hsl-format-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-accelerated-keyboard-navigation-expected.png b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-accelerated-keyboard-navigation-expected.png
index d95bd0d..4bf7436 100644
--- a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-accelerated-keyboard-navigation-expected.png
+++ b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-accelerated-keyboard-navigation-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-click-expected.png b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-click-expected.png
index c5bcd67..1f4606f6 100644
--- a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-click-expected.png
+++ b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-click-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-drag-expected.png b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-drag-expected.png
index c5bcd67..1f4606f6 100644
--- a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-drag-expected.png
+++ b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-drag-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-keyboard-navigation-expected.png b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-keyboard-navigation-expected.png
index 55787b3..c95f913 100644
--- a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-keyboard-navigation-expected.png
+++ b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-keyboard-navigation-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-left-edge-zero-hue-expected.png b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-left-edge-zero-hue-expected.png
index 92f01c09..ae76a47d 100644
--- a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-left-edge-zero-hue-expected.png
+++ b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-left-edge-zero-hue-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-right-edge-zero-hue-expected.png b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-right-edge-zero-hue-expected.png
index face5a7..cdec9d0 100644
--- a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-right-edge-zero-hue-expected.png
+++ b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-right-edge-zero-hue-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-imperfect-match-expected.png b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-imperfect-match-expected.png
index c4bb77f..280d225 100644
--- a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-imperfect-match-expected.png
+++ b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-imperfect-match-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-manual-color-change-expected.png b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-manual-color-change-expected.png
index 7ba66d2..8422596 100644
--- a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-manual-color-change-expected.png
+++ b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-manual-color-change-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-set-value-expected.png b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-set-value-expected.png
index ae52f7f..ddb6e3bd 100644
--- a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-set-value-expected.png
+++ b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-set-value-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-value-attribute-expected.png b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-value-attribute-expected.png
index acf3815..7cf98ba 100644
--- a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-value-attribute-expected.png
+++ b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-value-attribute-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-zoom125-expected.png b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-zoom125-expected.png
index 1b0f72e..5cf7d9d 100644
--- a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-zoom125-expected.png
+++ b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-zoom125-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-zoom200-expected.png b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-zoom200-expected.png
index 6c2851a..7a07326 100644
--- a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-zoom200-expected.png
+++ b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-zoom200-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-accelerated-keyboard-navigation-expected.png b/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-accelerated-keyboard-navigation-expected.png
index d5d0a3a4..c0223054 100644
--- a/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-accelerated-keyboard-navigation-expected.png
+++ b/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-accelerated-keyboard-navigation-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-click-expected.png b/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-click-expected.png
index 722790d8..70e91ab 100644
--- a/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-click-expected.png
+++ b/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-click-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-accelerated-keyboard-navigation-from-top-left-corner-expected.png b/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-accelerated-keyboard-navigation-from-top-left-corner-expected.png
index 62603c8..4dc8ba17 100644
--- a/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-accelerated-keyboard-navigation-from-top-left-corner-expected.png
+++ b/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-accelerated-keyboard-navigation-from-top-left-corner-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-accelerated-keyboard-navigation-from-top-right-corner-expected.png b/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-accelerated-keyboard-navigation-from-top-right-corner-expected.png
index 8edfe5d..4e5798e 100644
--- a/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-accelerated-keyboard-navigation-from-top-right-corner-expected.png
+++ b/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-accelerated-keyboard-navigation-from-top-right-corner-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-keyboard-navigation-from-top-left-corner-expected.png b/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-keyboard-navigation-from-top-left-corner-expected.png
index 9c9ea399..22889e7 100644
--- a/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-keyboard-navigation-from-top-left-corner-expected.png
+++ b/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-keyboard-navigation-from-top-left-corner-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-keyboard-navigation-from-top-right-corner-expected.png b/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-keyboard-navigation-from-top-right-corner-expected.png
index d8ca525..e0d6a601 100644
--- a/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-keyboard-navigation-from-top-right-corner-expected.png
+++ b/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-keyboard-navigation-from-top-right-corner-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-drag-expected.png b/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-drag-expected.png
index 722790d8..70e91ab 100644
--- a/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-drag-expected.png
+++ b/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-drag-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-after-drag-expected.png b/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-after-drag-expected.png
index e0b5606..fe5e2e2 100644
--- a/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-after-drag-expected.png
+++ b/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-after-drag-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-expected.png b/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-expected.png
index df836a4a..4aa6076 100644
--- a/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-expected.png
+++ b/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-accelerated-keyboard-navigation-from-top-right-corner-expected.png b/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-accelerated-keyboard-navigation-from-top-right-corner-expected.png
index c11cf38..aa26fe4 100644
--- a/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-accelerated-keyboard-navigation-from-top-right-corner-expected.png
+++ b/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-accelerated-keyboard-navigation-from-top-right-corner-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-keyboard-navigation-from-top-right-corner-expected.png b/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-keyboard-navigation-from-top-right-corner-expected.png
index cbbc0b9..ef266bfd 100644
--- a/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-keyboard-navigation-from-top-right-corner-expected.png
+++ b/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-keyboard-navigation-from-top-right-corner-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-accelerated-keyboard-navigation-from-top-left-corner-expected.png b/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-accelerated-keyboard-navigation-from-top-left-corner-expected.png
index 29f539e6..874650b 100644
--- a/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-accelerated-keyboard-navigation-from-top-left-corner-expected.png
+++ b/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-accelerated-keyboard-navigation-from-top-left-corner-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-keyboard-navigation-from-top-left-corner-expected.png b/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-keyboard-navigation-from-top-left-corner-expected.png
index 4fc389fe..3b3b662 100644
--- a/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-keyboard-navigation-from-top-left-corner-expected.png
+++ b/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-keyboard-navigation-from-top-left-corner-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-accelerated-keyboard-navigation-from-bottom-left-corner-expected.png b/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-accelerated-keyboard-navigation-from-bottom-left-corner-expected.png
index fda3274..ff3a1ad 100644
--- a/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-accelerated-keyboard-navigation-from-bottom-left-corner-expected.png
+++ b/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-accelerated-keyboard-navigation-from-bottom-left-corner-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-accelerated-keyboard-navigation-from-bottom-right-corner-expected.png b/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-accelerated-keyboard-navigation-from-bottom-right-corner-expected.png
index 323a976..87effa5a 100644
--- a/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-accelerated-keyboard-navigation-from-bottom-right-corner-expected.png
+++ b/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-accelerated-keyboard-navigation-from-bottom-right-corner-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-keyboard-navigation-from-bottom-left-corner-expected.png b/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-keyboard-navigation-from-bottom-left-corner-expected.png
index 022025f..20631627 100644
--- a/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-keyboard-navigation-from-bottom-left-corner-expected.png
+++ b/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-keyboard-navigation-from-bottom-left-corner-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-keyboard-navigation-from-bottom-right-corner-expected.png b/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-keyboard-navigation-from-bottom-right-corner-expected.png
index 1a067fba..da59433 100644
--- a/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-keyboard-navigation-from-bottom-right-corner-expected.png
+++ b/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-keyboard-navigation-from-bottom-right-corner-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-expected.png b/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-expected.png
index 91e7d3b3..80fe133 100644
--- a/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-expected.png
+++ b/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hex-format-expected.png b/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hex-format-expected.png
index 328e495..b9c1433 100644
--- a/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hex-format-expected.png
+++ b/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hex-format-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hsl-format-expected.png b/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hsl-format-expected.png
index bb57d96..4c37386bc 100644
--- a/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hsl-format-expected.png
+++ b/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hsl-format-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-keyboard-navigation-expected.png b/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-keyboard-navigation-expected.png
index 4f179e95..f904e675 100644
--- a/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-keyboard-navigation-expected.png
+++ b/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-keyboard-navigation-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-left-edge-zero-hue-expected.png b/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-left-edge-zero-hue-expected.png
index 1d189a8d..f93a8348 100644
--- a/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-left-edge-zero-hue-expected.png
+++ b/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-left-edge-zero-hue-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-right-edge-zero-hue-expected.png b/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-right-edge-zero-hue-expected.png
index bc3553f..ff354762 100644
--- a/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-right-edge-zero-hue-expected.png
+++ b/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-right-edge-zero-hue-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-imperfect-match-expected.png b/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-imperfect-match-expected.png
index 39ef1e76..687c6c55 100644
--- a/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-imperfect-match-expected.png
+++ b/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-imperfect-match-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-manual-color-change-expected.png b/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-manual-color-change-expected.png
index 516552d..fc90aae 100644
--- a/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-manual-color-change-expected.png
+++ b/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-manual-color-change-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-set-value-expected.png b/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-set-value-expected.png
index 8ddbaa95..010531f 100644
--- a/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-set-value-expected.png
+++ b/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-set-value-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-value-attribute-expected.png b/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-value-attribute-expected.png
index 1d2d4714..1bb63e6 100644
--- a/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-value-attribute-expected.png
+++ b/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-value-attribute-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-zoom125-expected.png b/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-zoom125-expected.png
index 8776a9ec..81ed505 100644
--- a/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-zoom125-expected.png
+++ b/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-zoom125-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-zoom200-expected.png b/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-zoom200-expected.png
index 53358e2..0b0b9212 100644
--- a/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-zoom200-expected.png
+++ b/third_party/blink/web_tests/platform/win7/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-zoom200-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-accelerated-keyboard-navigation-expected.png b/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-accelerated-keyboard-navigation-expected.png
index abbde4b7..c0223054 100644
--- a/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-accelerated-keyboard-navigation-expected.png
+++ b/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-accelerated-keyboard-navigation-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-click-expected.png b/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-click-expected.png
index bae2cb7..70e91ab 100644
--- a/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-click-expected.png
+++ b/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-click-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-accelerated-keyboard-navigation-from-top-left-corner-expected.png b/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-accelerated-keyboard-navigation-from-top-left-corner-expected.png
index ee1da2c1c..4dc8ba17 100644
--- a/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-accelerated-keyboard-navigation-from-top-left-corner-expected.png
+++ b/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-accelerated-keyboard-navigation-from-top-left-corner-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-accelerated-keyboard-navigation-from-top-right-corner-expected.png b/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-accelerated-keyboard-navigation-from-top-right-corner-expected.png
index ad6d0532..4e5798e 100644
--- a/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-accelerated-keyboard-navigation-from-top-right-corner-expected.png
+++ b/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-accelerated-keyboard-navigation-from-top-right-corner-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-keyboard-navigation-from-top-left-corner-expected.png b/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-keyboard-navigation-from-top-left-corner-expected.png
index cf9b7d4c..22889e7 100644
--- a/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-keyboard-navigation-from-top-left-corner-expected.png
+++ b/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-keyboard-navigation-from-top-left-corner-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-keyboard-navigation-from-top-right-corner-expected.png b/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-keyboard-navigation-from-top-right-corner-expected.png
index 25f960a7..e0d6a601 100644
--- a/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-keyboard-navigation-from-top-right-corner-expected.png
+++ b/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-down-keyboard-navigation-from-top-right-corner-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-drag-expected.png b/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-drag-expected.png
index bae2cb7..70e91ab 100644
--- a/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-drag-expected.png
+++ b/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-drag-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-after-drag-expected.png b/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-after-drag-expected.png
index 790535bf..fe5e2e2 100644
--- a/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-after-drag-expected.png
+++ b/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-after-drag-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-expected.png b/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-expected.png
index 16ac88a..4aa6076 100644
--- a/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-expected.png
+++ b/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-keyboard-navigation-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-accelerated-keyboard-navigation-from-bottom-right-corner-expected.png b/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-accelerated-keyboard-navigation-from-bottom-right-corner-expected.png
index afc0d97..6cc8559 100644
--- a/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-accelerated-keyboard-navigation-from-bottom-right-corner-expected.png
+++ b/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-accelerated-keyboard-navigation-from-bottom-right-corner-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-accelerated-keyboard-navigation-from-top-right-corner-expected.png b/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-accelerated-keyboard-navigation-from-top-right-corner-expected.png
index 066c09b..aa26fe4 100644
--- a/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-accelerated-keyboard-navigation-from-top-right-corner-expected.png
+++ b/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-accelerated-keyboard-navigation-from-top-right-corner-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-keyboard-navigation-from-bottom-right-corner-expected.png b/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-keyboard-navigation-from-bottom-right-corner-expected.png
index 721d4ad..3ed9a01 100644
--- a/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-keyboard-navigation-from-bottom-right-corner-expected.png
+++ b/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-keyboard-navigation-from-bottom-right-corner-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-keyboard-navigation-from-top-right-corner-expected.png b/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-keyboard-navigation-from-top-right-corner-expected.png
index 05c4f357..ef266bfd 100644
--- a/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-keyboard-navigation-from-top-right-corner-expected.png
+++ b/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-left-keyboard-navigation-from-top-right-corner-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-accelerated-keyboard-navigation-from-bottom-left-corner-expected.png b/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-accelerated-keyboard-navigation-from-bottom-left-corner-expected.png
index 63a4739c..8073d34 100644
--- a/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-accelerated-keyboard-navigation-from-bottom-left-corner-expected.png
+++ b/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-accelerated-keyboard-navigation-from-bottom-left-corner-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-accelerated-keyboard-navigation-from-top-left-corner-expected.png b/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-accelerated-keyboard-navigation-from-top-left-corner-expected.png
index a57fb99..874650b 100644
--- a/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-accelerated-keyboard-navigation-from-top-left-corner-expected.png
+++ b/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-accelerated-keyboard-navigation-from-top-left-corner-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-keyboard-navigation-from-bottom-left-corner-expected.png b/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-keyboard-navigation-from-bottom-left-corner-expected.png
index efdc7f65..d34c671 100644
--- a/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-keyboard-navigation-from-bottom-left-corner-expected.png
+++ b/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-keyboard-navigation-from-bottom-left-corner-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-keyboard-navigation-from-top-left-corner-expected.png b/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-keyboard-navigation-from-top-left-corner-expected.png
index ec04222..3b3b662 100644
--- a/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-keyboard-navigation-from-top-left-corner-expected.png
+++ b/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-right-keyboard-navigation-from-top-left-corner-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-accelerated-keyboard-navigation-from-bottom-left-corner-expected.png b/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-accelerated-keyboard-navigation-from-bottom-left-corner-expected.png
index 4b52f2df..ff3a1ad 100644
--- a/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-accelerated-keyboard-navigation-from-bottom-left-corner-expected.png
+++ b/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-accelerated-keyboard-navigation-from-bottom-left-corner-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-accelerated-keyboard-navigation-from-bottom-right-corner-expected.png b/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-accelerated-keyboard-navigation-from-bottom-right-corner-expected.png
index b1d29c77..87effa5a 100644
--- a/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-accelerated-keyboard-navigation-from-bottom-right-corner-expected.png
+++ b/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-accelerated-keyboard-navigation-from-bottom-right-corner-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-keyboard-navigation-from-bottom-left-corner-expected.png b/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-keyboard-navigation-from-bottom-left-corner-expected.png
index fafbae2..20631627 100644
--- a/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-keyboard-navigation-from-bottom-left-corner-expected.png
+++ b/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-keyboard-navigation-from-bottom-left-corner-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-keyboard-navigation-from-bottom-right-corner-expected.png b/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-keyboard-navigation-from-bottom-right-corner-expected.png
index 3070029..da59433 100644
--- a/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-keyboard-navigation-from-bottom-right-corner-expected.png
+++ b/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-color-well-up-keyboard-navigation-from-bottom-right-corner-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-expected.png b/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-expected.png
index 91e7d3b3..80fe133 100644
--- a/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-expected.png
+++ b/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hex-format-expected.png b/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hex-format-expected.png
index ef58dfc..b9c1433 100644
--- a/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hex-format-expected.png
+++ b/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hex-format-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hsl-format-expected.png b/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hsl-format-expected.png
index 099af98..4c37386bc 100644
--- a/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hsl-format-expected.png
+++ b/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hsl-format-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-accelerated-keyboard-navigation-expected.png b/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-accelerated-keyboard-navigation-expected.png
index 6b14deb..38bfd58 100644
--- a/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-accelerated-keyboard-navigation-expected.png
+++ b/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-accelerated-keyboard-navigation-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-click-expected.png b/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-click-expected.png
index b273c0b..dd641d9 100644
--- a/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-click-expected.png
+++ b/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-click-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-drag-expected.png b/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-drag-expected.png
index b273c0b..dd641d9 100644
--- a/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-drag-expected.png
+++ b/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-drag-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-keyboard-navigation-expected.png b/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-keyboard-navigation-expected.png
index 4f179e95..f904e675 100644
--- a/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-keyboard-navigation-expected.png
+++ b/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-keyboard-navigation-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-left-edge-zero-hue-expected.png b/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-left-edge-zero-hue-expected.png
index 05ea0a59..f93a8348 100644
--- a/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-left-edge-zero-hue-expected.png
+++ b/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-left-edge-zero-hue-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-right-edge-zero-hue-expected.png b/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-right-edge-zero-hue-expected.png
index fe18f34..ff354762 100644
--- a/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-right-edge-zero-hue-expected.png
+++ b/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-hue-slider-right-edge-zero-hue-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-imperfect-match-expected.png b/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-imperfect-match-expected.png
index 12a1f6ec..687c6c55 100644
--- a/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-imperfect-match-expected.png
+++ b/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-imperfect-match-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-manual-color-change-expected.png b/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-manual-color-change-expected.png
index 1f84122..fc90aae 100644
--- a/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-manual-color-change-expected.png
+++ b/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-manual-color-change-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-set-value-expected.png b/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-set-value-expected.png
index 8ddbaa95..010531f 100644
--- a/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-set-value-expected.png
+++ b/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-set-value-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-value-attribute-expected.png b/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-value-attribute-expected.png
index 6b2cc8ae..1bb63e6 100644
--- a/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-value-attribute-expected.png
+++ b/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-value-attribute-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-zoom125-expected.png b/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-zoom125-expected.png
index 8776a9ec..81ed505 100644
--- a/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-zoom125-expected.png
+++ b/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-zoom125-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-zoom200-expected.png b/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-zoom200-expected.png
index 53358e2..0b0b9212 100644
--- a/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-zoom200-expected.png
+++ b/third_party/blink/web_tests/virtual/controls-refresh/fast/forms/controls-new-ui/color/color-picker-appearance-zoom200-expected.png
Binary files differ
diff --git a/tools/android/roll/android_deps/buildSrc/src/main/groovy/BuildConfigGenerator.groovy b/tools/android/roll/android_deps/buildSrc/src/main/groovy/BuildConfigGenerator.groovy
index 6f8f56e..e05012a 100644
--- a/tools/android/roll/android_deps/buildSrc/src/main/groovy/BuildConfigGenerator.groovy
+++ b/tools/android/roll/android_deps/buildSrc/src/main/groovy/BuildConfigGenerator.groovy
@@ -229,7 +229,8 @@
         if (isPlayServicesTarget(dependencyId)) {
             if (Pattern.matches(".*cast_framework.*", dependencyId)) {
                 sb.append('  # Removing all resources from cast framework as they are unused bloat.\n')
-                sb.append('  strip_resources = true\n')
+                sb.append('  # Can only safely remove them when R8 will strip the path that accesses them.\n')
+                sb.append('  strip_resources = !is_java_debug\n')
             } else {
                 sb.append('  # Removing drawables from GMS .aars as they are unused bloat.\n')
                 sb.append('  strip_drawables = true\n')
diff --git a/tools/mb/mb.py b/tools/mb/mb.py
index 6fbb096..2fb8c7a 100755
--- a/tools/mb/mb.py
+++ b/tools/mb/mb.py
@@ -1092,7 +1092,7 @@
       # Skip a few configs that need extra cleanup for now.
       # TODO(https://crbug.com/912946): Fix everything on all platforms and
       # enable check everywhere.
-      if is_android or is_cros:
+      if is_android:
         break
 
       # Skip a few existing violations that need to be cleaned up. Each of
@@ -1104,40 +1104,35 @@
           f == 'locales/' or
           f.startswith('nacl_test_data/') or
           f.startswith('ppapi_nacl_tests_libs/') or
+          (is_cros and f in (  # https://crbug.com/1002509
+              'chromevox_test_data/',
+              'gen/ui/file_manager/file_manager/',
+              'resources/chromeos/',
+              'resources/chromeos/autoclick/',
+              'resources/chromeos/chromevox/',
+              'resources/chromeos/select_to_speak/',
+              'test_data/chrome/browser/resources/chromeos/autoclick/',
+              'test_data/chrome/browser/resources/chromeos/chromevox/',
+              'test_data/chrome/browser/resources/chromeos/select_to_speak/',
+          )) or
           (is_mac and f in (  # https://crbug.com/1000667
-              'AlertNotificationService.dSYM/',
               'AlertNotificationService.xpc/',
-              'Chromium Framework.dSYM/',
               'Chromium Framework.framework/',
               'Chromium Helper.app/',
               'Chromium.app/',
-              'Chromium.dSYM/',
               'Content Shell.app/',
-              'Content Shell.dSYM/',
-              'Google Chrome Framework.dSYM/',
               'Google Chrome Framework.framework/',
               'Google Chrome Helper (GPU).app/',
-              'Google Chrome Helper (GPU).dSYM/',
               'Google Chrome Helper (Plugin).app/',
-              'Google Chrome Helper (Plugin).dSYM/',
               'Google Chrome Helper (Renderer).app/',
-              'Google Chrome Helper (Renderer).dSYM/',
               'Google Chrome Helper.app/',
-              'Google Chrome Helper.dSYM/',
               'Google Chrome.app/',
-              'Google Chrome.dSYM/',
               'blink_deprecated_test_plugin.plugin/',
-              'blink_deprecated_test_plugin.so.dSYM/',
               'blink_test_plugin.plugin/',
-              'blink_test_plugin.so.dSYM/',
               'corb_test_plugin.plugin/',
-              'corb_test_plugin.so.dSYM/',
               'obj/tools/grit/brotli_mac_asan_workaround/',
               'power_saver_test_plugin.plugin/',
-              'power_saver_test_plugin.so.dSYM/',
               'ppapi_tests.plugin/',
-              'ppapi_tests.so.dSYM/',
-              'ui_unittests Framework.dSYM/',
               'ui_unittests Framework.framework/',
           ))):
         continue
@@ -1291,14 +1286,19 @@
     java_coverage = 'jacoco_coverage=true' in vals['gn_args']
 
     test_type = isolate_map[target]['type']
+    use_python3 = isolate_map[target].get('use_python3', False)
 
     executable = isolate_map[target].get('executable', target)
     executable_suffix = isolate_map[target].get(
         'executable_suffix', '.exe' if is_win else '')
 
-    cmdline = []
-    extra_files = [
-      '../../.vpython',
+    if use_python3:
+      cmdline = [ 'vpython3' ]
+      extra_files = [ '../../.vpython3' ]
+    else:
+      cmdline = [ 'vpython' ]
+      extra_files = [ '../../.vpython' ]
+    extra_files += [
       '../../testing/test_env.py',
     ]
 
@@ -1310,19 +1310,18 @@
       script = isolate_map[target]['script']
       if self.platform == 'win32':
         script += '.bat'
-      cmdline = [
+      cmdline += [
           '../../testing/test_env.py',
           script,
       ]
     elif test_type == 'fuzzer':
-      cmdline = [
+      cmdline += [
         '../../testing/test_env.py',
         '../../tools/code_coverage/run_fuzz_target.py',
         '--fuzzer', './' + target,
         '--output-dir', '${ISOLATED_OUTDIR}',
         '--timeout', '3600']
     elif is_android and test_type != "script":
-      cmdline = []
       if asan:
         cmdline += [os.path.join('bin', 'run_with_asan'), '--']
       cmdline += [
@@ -1334,20 +1333,20 @@
       if java_coverage:
         cmdline += ['--coverage-dir', '${ISOLATED_OUTDIR}']
     elif is_fuchsia and test_type != 'script':
-      cmdline = [
+      cmdline += [
           '../../testing/test_env.py',
           os.path.join('bin', 'run_%s' % target),
           '--test-launcher-bot-mode',
           '--system-log-file', '${ISOLATED_OUTDIR}/system_log'
       ]
     elif is_simplechrome and test_type != 'script':
-      cmdline = [
+      cmdline += [
           '../../testing/test_env.py',
           os.path.join('bin', 'run_%s' % target),
       ]
     elif use_xvfb and test_type == 'windowed_test_launcher':
       extra_files.append('../../testing/xvfb.py')
-      cmdline = [
+      cmdline += [
           '../../testing/xvfb.py',
           './' + str(executable) + executable_suffix,
           '--test-launcher-bot-mode',
@@ -1362,7 +1361,7 @@
           '--cfi-diag=%d' % cfi_diag,
       ]
     elif test_type in ('windowed_test_launcher', 'console_test_launcher'):
-      cmdline = [
+      cmdline += [
           '../../testing/test_env.py',
           './' + str(executable) + executable_suffix,
           '--test-launcher-bot-mode',
@@ -1377,7 +1376,6 @@
           '--cfi-diag=%d' % cfi_diag,
       ]
     elif test_type == 'script':
-      cmdline = []
       # If we're testing a CrOS simplechrome build, assume we need to prepare a
       # DUT for testing. So prepend the command to run with the test wrapper.
       if is_simplechrome:
diff --git a/tools/metrics/histograms/enums.xml b/tools/metrics/histograms/enums.xml
index 260cb7a..cd5e45d 100644
--- a/tools/metrics/histograms/enums.xml
+++ b/tools/metrics/histograms/enums.xml
@@ -35542,6 +35542,8 @@
   <int value="-874602599" label="HorizontalTabSwitcherAndroid:enabled"/>
   <int value="-872764392" label="ContextualSuggestionsBottomSheet:disabled"/>
   <int value="-872302695" label="PeriodicBackgroundSync:enabled"/>
+  <int value="-871520682"
+      label="AccessibilityInternalsPageImprovements:enabled"/>
   <int value="-870120067" label="EnableSearchBoxSelection:enabled"/>
   <int value="-867087281" label="enable-virtual-keyboard"/>
   <int value="-866993841" label="OfflinePagesCTV2:disabled"/>
@@ -37439,6 +37441,8 @@
   <int value="1777059507" label="trust-autofill-server-name-types"/>
   <int value="1777695562" label="SendTabToSelfShowSendingUI:disabled"/>
   <int value="1777806335" label="UsePasswordSeparatedSigninFlow:disabled"/>
+  <int value="1779530254"
+      label="AccessibilityInternalsPageImprovements:disabled"/>
   <int value="1782210532" label="PerNavigationMojoInterface:disabled"/>
   <int value="1783293530" label="disallow-autofill-sync-credential"/>
   <int value="1783837132" label="enable-threaded-gpu-rasterization"/>
diff --git a/tools/metrics/histograms/histograms.xml b/tools/metrics/histograms/histograms.xml
index 9356773c..415d95f9 100644
--- a/tools/metrics/histograms/histograms.xml
+++ b/tools/metrics/histograms/histograms.xml
@@ -172,7 +172,8 @@
   </summary>
 </histogram>
 
-<histogram name="Accessibility.CrosDictation" enum="BooleanEnabled">
+<histogram name="Accessibility.CrosDictation" enum="BooleanEnabled"
+    expires_after="M81">
   <owner>anastasi@google.com</owner>
   <owner>dtseng@chromium.org</owner>
   <summary>
@@ -198,7 +199,8 @@
   </summary>
 </histogram>
 
-<histogram name="Accessibility.CrosFocusHighlight" enum="BooleanEnabled">
+<histogram name="Accessibility.CrosFocusHighlight" enum="BooleanEnabled"
+    expires_after="M81">
   <owner>dmazzoni@chromium.org</owner>
   <summary>
     Whether the Chrome OS focus highlighting is on (logged once 45 secs after
@@ -234,7 +236,8 @@
   </summary>
 </histogram>
 
-<histogram name="Accessibility.CrosScreenMagnifier" enum="BooleanEnabled">
+<histogram name="Accessibility.CrosScreenMagnifier" enum="BooleanEnabled"
+    expires_after="M81">
   <owner>dmazzoni@chromium.org</owner>
   <owner>kenjibaheux@google.com</owner>
   <summary>
@@ -243,7 +246,8 @@
   </summary>
 </histogram>
 
-<histogram name="Accessibility.CrosSelectToSpeak" enum="BooleanEnabled">
+<histogram name="Accessibility.CrosSelectToSpeak" enum="BooleanEnabled"
+    expires_after="2020-03-08">
   <owner>dmazzoni@chromium.org</owner>
   <summary>
     Whether the Chrome OS select-to-speak is on (logged once 45 secs after
@@ -588,7 +592,8 @@
   </summary>
 </histogram>
 
-<histogram name="Accessibility.WinAPIs" enum="AccessibilityWinAPIEnum">
+<histogram name="Accessibility.WinAPIs" enum="AccessibilityWinAPIEnum"
+    expires_after="M81">
   <owner>dmazzoni@chromium.org</owner>
   <owner>nektar@chromium.org</owner>
   <summary>Tracks usage of all public Windows accessibility APIs.</summary>
@@ -605,7 +610,7 @@
 </histogram>
 
 <histogram name="Accessibility.WinAudioDescription" enum="BooleanEnabled"
-    expires_after="2019-11-02">
+    expires_after="2020-03-08">
   <owner>dmazzoni@chromium.org</owner>
   <owner>kenjibaheux@google.com</owner>
   <summary>
@@ -1243,7 +1248,7 @@
 </histogram>
 
 <histogram name="AnchorElementMetrics.Clicked.NavigationScoreRank" units="rank"
-    expires_after="M77">
+    expires_after="2020-03-08">
   <owner>chelu@chromium.org</owner>
   <owner>tbansal@chromium.org</owner>
   <summary>
@@ -1317,7 +1322,7 @@
 </histogram>
 
 <histogram name="AnchorElementMetrics.Clicked.RatioRootHeight" units="%"
-    expires_after="M78">
+    expires_after="2020-03-08">
   <owner>chelu@chromium.org</owner>
   <owner>tbansal@chromium.org</owner>
   <summary>
@@ -1786,7 +1791,7 @@
 </histogram>
 
 <histogram name="Android.ChromeBrowserProvider.CallerHasPermission"
-    enum="ClientAppId">
+    enum="ClientAppId" expires_after="M81">
   <owner>yfriedman@chromium.org</owner>
   <summary>
     Android: Count of requests to Chrome browser which are granted to other apps
@@ -2313,7 +2318,8 @@
   <summary>The count of Download Home top level menu actions taken.</summary>
 </histogram>
 
-<histogram name="Android.DownloadManager.Menu.Delete.SelectedCount">
+<histogram name="Android.DownloadManager.Menu.Delete.SelectedCount"
+    expires_after="M81">
   <owner>dtrainor@chromium.org</owner>
   <owner>clank-downloads@google.com</owner>
   <summary>
@@ -2321,7 +2327,8 @@
   </summary>
 </histogram>
 
-<histogram name="Android.DownloadManager.Menu.Share.SelectedCount">
+<histogram name="Android.DownloadManager.Menu.Share.SelectedCount"
+    expires_after="M81">
   <owner>dtrainor@chromium.org</owner>
   <owner>clank-downloads@google.com</owner>
   <summary>
@@ -2408,7 +2415,7 @@
 </histogram>
 
 <histogram name="Android.DownloadManager.OtherExtensions.InitialCount"
-    enum="AndroidDownloadExtensionType">
+    enum="AndroidDownloadExtensionType" expires_after="M81">
   <owner>twellington@chromium.org</owner>
   <owner>clank-downloads@google.com</owner>
   <summary>
@@ -2593,7 +2600,7 @@
 </histogram>
 
 <histogram base="true" name="Android.FeatureModules.InstallStatus"
-    enum="FeatureModuleInstallStatus" expires_after="2020-01-01">
+    enum="FeatureModuleInstallStatus" expires_after="2020-03-08">
 <!-- Name completed by histogram_suffixes
        name="AndroidFeatureModuleName" -->
 
@@ -2849,7 +2856,8 @@
   </summary>
 </histogram>
 
-<histogram name="Android.ManageSpace.TotalDiskUsageMB" units="MB">
+<histogram name="Android.ManageSpace.TotalDiskUsageMB" units="MB"
+    expires_after="2020-03-08">
   <owner>dmurph@chromium.org</owner>
   <summary>
     Recorded when the user opens the 'Manage Space' screen for Chrome, after the
@@ -2858,7 +2866,8 @@
   </summary>
 </histogram>
 
-<histogram name="Android.ManageSpace.UnimportantDiskUsageMB" units="MB">
+<histogram name="Android.ManageSpace.UnimportantDiskUsageMB" units="MB"
+    expires_after="2020-03-08">
   <owner>dmurph@chromium.org</owner>
   <summary>
     Recorded when the user opens the 'Manage Space' screen for Chrome, after the
@@ -3658,7 +3667,8 @@
   </summary>
 </histogram>
 
-<histogram name="Android.StrictMode.OverrideUrlLoadingTime" units="ms">
+<histogram name="Android.StrictMode.OverrideUrlLoadingTime" units="ms"
+    expires_after="M81">
   <owner>yfriedman@chromium.org</owner>
   <owner>wnwen@chromium.org</owner>
   <summary>
@@ -4412,7 +4422,8 @@
   </summary>
 </histogram>
 
-<histogram name="AppBanners.MinutesFromFirstVisitToBannerShown" units="minutes">
+<histogram name="AppBanners.MinutesFromFirstVisitToBannerShown" units="minutes"
+    expires_after="M81">
   <owner>dominickn@chromium.org</owner>
   <summary>
     App banners promote an application related to the current website, and are
@@ -5494,7 +5505,7 @@
   </summary>
 </histogram>
 
-<histogram name="Apps.AppsInFolders" units="Apps">
+<histogram name="Apps.AppsInFolders" units="Apps" expires_after="M81">
 <!-- Name completed by histogram_suffixes
      name="AppListFolderExperiment" -->
 
@@ -5838,7 +5849,7 @@
   </summary>
 </histogram>
 
-<histogram name="Apps.NumberOfFolders" units="folder(s)">
+<histogram name="Apps.NumberOfFolders" units="folder(s)" expires_after="M81">
   <owner>newcomer@google.com</owner>
   <summary>
     The number of folders that users have in their Launcher. Includes the OEM
@@ -6399,7 +6410,8 @@
   <summary>Arc OptIn action taken by user.</summary>
 </histogram>
 
-<histogram name="Arc.OptInCancel" enum="ArcOptInCancel">
+<histogram name="Arc.OptInCancel" enum="ArcOptInCancel"
+    expires_after="2020-03-08">
   <owner>elijahtaylor@google.com</owner>
   <owner>shihuis@google.com</owner>
   <summary>Arc OptIn cancelation reason.</summary>
@@ -6574,7 +6586,8 @@
   <summary>Render quality with maximum 100%.</summary>
 </histogram>
 
-<histogram name="Arc.SdkVersionUpgradeType" enum="ArcSdkVersionUpgradeType">
+<histogram name="Arc.SdkVersionUpgradeType" enum="ArcSdkVersionUpgradeType"
+    expires_after="2020-03-08">
   <owner>niwa@google.com</owner>
   <owner>yusukes@google.com</owner>
   <summary>
@@ -6698,7 +6711,8 @@
   <summary>The status of account check before GMS Sign-in.</summary>
 </histogram>
 
-<histogram name="ArcAuth.AccountCheckTime" units="ms" expires_after="M77">
+<histogram name="ArcAuth.AccountCheckTime" units="ms"
+    expires_after="2020-03-08">
   <owner>elijahtaylor@chromium.org</owner>
   <summary>
     Elapsed time waiting for the account status check to be completed. This is
@@ -6715,7 +6729,7 @@
   </summary>
 </histogram>
 
-<histogram name="ArcAuth.CheckinTime" units="ms">
+<histogram name="ArcAuth.CheckinTime" units="ms" expires_after="2020-03-08">
   <owner>elijahtaylor@chromium.org</owner>
   <summary>
     Elapsed time waiting for the check-in task to be completed. This is recorded
@@ -6910,7 +6924,8 @@
   </summary>
 </histogram>
 
-<histogram name="Ash.Desks.RemoveDesk" enum="DesksCreationRemovalSource">
+<histogram name="Ash.Desks.RemoveDesk" enum="DesksCreationRemovalSource"
+    expires_after="M81">
   <owner>afakhry@chromium.org</owner>
   <summary>
     Emitted when a virtual desk is removed to specify the source of this remove
@@ -7432,7 +7447,8 @@
   </summary>
 </histogram>
 
-<histogram name="Ash.Shelf.NumberOfUnpinnedItems" units="Icons">
+<histogram name="Ash.Shelf.NumberOfUnpinnedItems" units="Icons"
+    expires_after="2020-03-08">
   <owner>bruthig@google.com</owner>
   <owner>tdanderson@google.com</owner>
   <summary>
@@ -8165,7 +8181,7 @@
   </summary>
 </histogram>
 
-<histogram name="Ash.WindowSelector.ArrowKeyPresses">
+<histogram name="Ash.WindowSelector.ArrowKeyPresses" expires_after="M81">
   <owner>flackr@chromium.org</owner>
   <summary>
     The number of times the arrow keys are pressed in overview mode per session,
@@ -8297,7 +8313,7 @@
 </histogram>
 
 <histogram name="Assistant.ButtonClickCount" enum="AssistantButtonId"
-    expires_after="2019-11-13">
+    expires_after="2020-03-08">
   <owner>xiaohuic@chromium.org</owner>
   <owner>meilinw@chromium.org</owner>
   <summary>
@@ -12353,7 +12369,7 @@
 
 <histogram
     name="AutoScreenBrightness.AdapterDecisionAtUserChange.BrightnessChange.Cause"
-    enum="AutoScreenBrightnessBrightnessChangeCause" expires_after="2019-12-31">
+    enum="AutoScreenBrightnessBrightnessChangeCause" expires_after="2020-03-08">
   <owner>jiameng@chromium.org</owner>
   <summary>
     When user changes brightness manually, we will ask the model whether it also
@@ -12693,7 +12709,7 @@
 </histogram>
 
 <histogram name="AutoScreenBrightness.TrainingCompleteDuration.NewCurve"
-    units="ms" expires_after="2019-12-31">
+    units="ms" expires_after="2020-03-08">
   <owner>jiameng@chromium.org</owner>
   <summary>
     The time elapsed to complete training after which a new curve was generated.
@@ -14128,7 +14144,7 @@
 </histogram>
 
 <histogram name="Blink.ColorSpace.Destination.ICCResult"
-    enum="ICCProfileAnalyzeResult">
+    enum="ICCProfileAnalyzeResult" expires_after="2020-03-08">
   <owner>brianosman@chromium.org</owner>
   <owner>mcasas@google.com</owner>
   <owner>ccameron@chromium.org</owner>
@@ -14583,7 +14599,7 @@
   </summary>
 </histogram>
 
-<histogram name="Blink.Fonts.ShapeCache">
+<histogram name="Blink.Fonts.ShapeCache" expires_after="M81">
   <owner>eae@chromium.org</owner>
   <summary>
     Total number of entries in all Blink ShapeCache instances. The value is
@@ -15579,14 +15595,16 @@
   </summary>
 </histogram>
 
-<histogram name="Blink.Sms.Receive.Outcome" enum="SMSReceiverOutcome">
+<histogram name="Blink.Sms.Receive.Outcome" enum="SMSReceiverOutcome"
+    expires_after="2020-03-08">
   <owner>goto@chromium.org</owner>
   <owner>reillyg@chromium.org</owner>
   <owner>ayui@chromium.org</owner>
   <summary>Records the result of a call to the SmsReceiver API.</summary>
 </histogram>
 
-<histogram name="Blink.Sms.Receive.RequestedTimeout" units="ms">
+<histogram name="Blink.Sms.Receive.RequestedTimeout" units="ms"
+    expires_after="M81">
   <owner>goto@chromium.org</owner>
   <owner>reillyg@chromium.org</owner>
   <owner>ayui@chromium.org</owner>
@@ -15628,7 +15646,8 @@
   </summary>
 </histogram>
 
-<histogram name="Blink.Sms.Receive.TimeContinueOnSuccess" units="ms">
+<histogram name="Blink.Sms.Receive.TimeContinueOnSuccess" units="ms"
+    expires_after="2020-03-08">
   <owner>goto@chromium.org</owner>
   <owner>reillyg@chromium.org</owner>
   <owner>ayui@chromium.org</owner>
@@ -15638,7 +15657,8 @@
   </summary>
 </histogram>
 
-<histogram name="Blink.Sms.Receive.TimeSmsReceive" units="ms">
+<histogram name="Blink.Sms.Receive.TimeSmsReceive" units="ms"
+    expires_after="2020-03-08">
   <owner>goto@chromium.org</owner>
   <owner>reillyg@chromium.org</owner>
   <owner>ayui@chromium.org</owner>
@@ -15648,7 +15668,8 @@
   </summary>
 </histogram>
 
-<histogram name="Blink.Sms.Receive.TimeSuccess" units="ms">
+<histogram name="Blink.Sms.Receive.TimeSuccess" units="ms"
+    expires_after="2020-03-08">
   <owner>goto@chromium.org</owner>
   <owner>reillyg@chromium.org</owner>
   <owner>ayui@chromium.org</owner>
@@ -15659,7 +15680,8 @@
   </summary>
 </histogram>
 
-<histogram name="Blink.Sms.Receive.TimeTimeoutExceeded" units="ms">
+<histogram name="Blink.Sms.Receive.TimeTimeoutExceeded" units="ms"
+    expires_after="M81">
   <owner>goto@chromium.org</owner>
   <owner>reillyg@chromium.org</owner>
   <owner>ayui@chromium.org</owner>
@@ -16293,7 +16315,8 @@
   </summary>
 </histogram>
 
-<histogram name="BlinkGC.ObjectSizeFreedByHeapCompaction" units="KB">
+<histogram name="BlinkGC.ObjectSizeFreedByHeapCompaction" units="KB"
+    expires_after="M81">
   <owner>haraken@chromium.org</owner>
   <summary>
     The total size of objects freed by BlinkGC's heap compaction. This is
@@ -19161,7 +19184,8 @@
   </summary>
 </histogram>
 
-<histogram name="ChildProcess.BadMessgeTerminated" enum="ProcessType2">
+<histogram name="ChildProcess.BadMessgeTerminated" enum="ProcessType2"
+    expires_after="M81">
   <owner>jam@chromium.org</owner>
   <summary>
     Count of child processes killed because they sent an IPC that couldn't be
@@ -19525,7 +19549,8 @@
   </summary>
 </histogram>
 
-<histogram name="Chrome.MessageLoopProblem" enum="MessageLoopProblems">
+<histogram name="Chrome.MessageLoopProblem" enum="MessageLoopProblems"
+    expires_after="M81">
   <owner>gab@chromium.org</owner>
   <summary>
     Track set of Windows errors inside the meessage loop/pump system, where
@@ -19564,7 +19589,7 @@
 </histogram>
 
 <histogram name="Chrome.ProcessSingleton.RemoteProcessInteractionResult"
-    enum="RemoteProcessInteractionResult">
+    enum="RemoteProcessInteractionResult" expires_after="M81">
   <owner>aseren@yandex-team.ru</owner>
   <owner>gab@chromium.org</owner>
   <summary>
@@ -19584,7 +19609,7 @@
 </histogram>
 
 <histogram name="Chrome.ProcessSingleton.TerminateProcessErrorCode.Windows"
-    enum="WinGetLastError">
+    enum="WinGetLastError" expires_after="M81">
   <owner>aseren@yandex-team.ru</owner>
   <owner>gab@chromium.org</owner>
   <summary>
@@ -19594,7 +19619,7 @@
 </histogram>
 
 <histogram name="Chrome.ProcessSingleton.TerminateProcessTime" units="ms"
-    expires_after="M77">
+    expires_after="2020-03-08">
   <owner>aseren@yandex-team.ru</owner>
   <owner>gab@chromium.org</owner>
   <summary>
@@ -19604,7 +19629,7 @@
 </histogram>
 
 <histogram name="Chrome.ProcessSingleton.TerminationWaitErrorCode.Windows"
-    enum="WinGetLastError">
+    enum="WinGetLastError" expires_after="M81">
   <owner>aseren@yandex-team.ru</owner>
   <owner>gab@chromium.org</owner>
   <summary>
@@ -20781,7 +20806,7 @@
   <summary>Event counts in CloudPrintAuth.</summary>
 </histogram>
 
-<histogram name="CloudPrint.AvailablePrinters">
+<histogram name="CloudPrint.AvailablePrinters" expires_after="M81">
   <owner>thestig@chromium.org</owner>
   <summary>The number of printers availible for registration.</summary>
 </histogram>
@@ -21930,7 +21955,8 @@
   </summary>
 </histogram>
 
-<histogram name="Compositing.RenderPass.AppendQuadData.NumMissingTiles">
+<histogram name="Compositing.RenderPass.AppendQuadData.NumMissingTiles"
+    expires_after="M81">
   <owner>weiliangc@chromium.org</owner>
   <summary>
     Keeps track of number of missing tiles in a drawn compositor frame while
@@ -22120,13 +22146,13 @@
 </histogram>
 
 <histogram name="Compositing.SurfaceManager.RemovedTemporaryReference"
-    enum="TemporaryReferenceRemovedReason">
+    enum="TemporaryReferenceRemovedReason" expires_after="M81">
   <owner>kylechar@chromium.org</owner>
   <summary>Tracks the reason for removing a temporary reference.</summary>
 </histogram>
 
 <histogram name="Compositing.SurfaceManager.TemporaryReferences"
-    units="references">
+    units="references" expires_after="M81">
   <owner>akaba@chromium.org</owner>
   <owner>kylechar@chromium.org</owner>
   <summary>
@@ -22330,7 +22356,8 @@
   </details>
 </histogram>
 
-<histogram name="ConnectivityDiagnostics.HTTP_LATENCY" units="ms">
+<histogram name="ConnectivityDiagnostics.HTTP_LATENCY" units="ms"
+    expires_after="M81">
   <owner>ebeach@google.com</owner>
   <summary>HTTP latency seen by the Connectivity Diagnostics.</summary>
   <details>
@@ -22476,7 +22503,8 @@
   </summary>
 </histogram>
 
-<histogram name="ContentSettings.DefaultAutoplaySetting" enum="ContentSetting">
+<histogram name="ContentSettings.DefaultAutoplaySetting" enum="ContentSetting"
+    expires_after="M81">
   <owner>mlamouri@chromium.org</owner>
   <summary>The default autoplay setting at profile open.</summary>
 </histogram>
@@ -22571,7 +22599,8 @@
   <summary>The default notification setting at profile open.</summary>
 </histogram>
 
-<histogram name="ContentSettings.DefaultPluginsSetting" enum="ContentSetting">
+<histogram name="ContentSettings.DefaultPluginsSetting" enum="ContentSetting"
+    expires_after="M81">
   <owner>toyoshim@chromium.org</owner>
   <summary>The default plugins setting at profile open.</summary>
 </histogram>
@@ -22979,7 +23008,7 @@
 </histogram>
 
 <histogram name="ContentSettings.Popups.StrongBlockerActions"
-    enum="StrongPopupBlockerAction">
+    enum="StrongPopupBlockerAction" expires_after="M81">
   <owner>csharrison@chromium.org</owner>
   <summary>
     Counts of various events related to the strong popup blocker (aka abusive
@@ -24143,7 +24172,7 @@
 </histogram>
 
 <histogram name="Cookie.CookieDeleteEquivalent" enum="CookieDeleteEquivalent"
-    expires_after="M77">
+    expires_after="2020-03-08">
   <owner>mkwst@chromium.org</owner>
   <summary>
     Record when at attempt is made to delete an equivalent cookie on a set
@@ -24169,7 +24198,8 @@
   </summary>
 </histogram>
 
-<histogram name="Cookie.CookiePrefix" enum="CookiePrefix">
+<histogram name="Cookie.CookiePrefix" enum="CookiePrefix"
+    expires_after="2020-03-08">
   <owner>estark@chromium.org</owner>
   <summary>
     Number of times a cookie was set with a name prefixed by
@@ -24179,7 +24209,7 @@
 </histogram>
 
 <histogram name="Cookie.CookiePrefixBlocked" enum="CookiePrefix"
-    expires_after="M77">
+    expires_after="2020-03-08">
   <owner>estark@chromium.org</owner>
   <summary>
     Number of times a cookie was set with a name prefixed by
@@ -24301,7 +24331,7 @@
   </summary>
 </histogram>
 
-<histogram name="Cookie.HeaderLength" units="bytes">
+<histogram name="Cookie.HeaderLength" units="bytes" expires_after="2020-03-08">
   <owner>mkwst@chromium.org</owner>
   <summary>
     The size of each outgoing request's 'Cookie' header field's value, in bytes.
@@ -24380,7 +24410,8 @@
   </summary>
 </histogram>
 
-<histogram name="Cookie.PriorityBlockingTime" units="ms" expires_after="M77">
+<histogram name="Cookie.PriorityBlockingTime" units="ms"
+    expires_after="2020-03-08">
   <owner>pwnall@chromium.org</owner>
   <summary>
     This histogram records the total duration of time during which at least one
@@ -24506,7 +24537,7 @@
 </histogram>
 
 <histogram name="Cookie.Startup.TimeSpentDeletingCookies" units="ms"
-    expires_after="M77">
+    expires_after="2020-03-08">
   <owner>erikchen@chromium.org</owner>
   <summary>
     The amount of time required to delete session cookies on startup. This
@@ -24766,7 +24797,8 @@
   </summary>
 </histogram>
 
-<histogram name="Cras.HighestOutputHardwareLevel" units="frames">
+<histogram name="Cras.HighestOutputHardwareLevel" units="frames"
+    expires_after="M81">
   <owner>yuhsuan@chromium.org</owner>
   <owner>chromeos-audio@google.com</owner>
   <summary>
@@ -25780,7 +25812,8 @@
   </summary>
 </histogram>
 
-<histogram name="Crostini.UninstallResult" enum="CrostiniUninstallResult">
+<histogram name="Crostini.UninstallResult" enum="CrostiniUninstallResult"
+    expires_after="M81">
   <owner>benwells@chromium.org</owner>
   <owner>tbuckley@chromium.org</owner>
   <summary>
@@ -26200,7 +26233,7 @@
 </histogram>
 
 <histogram name="Cryptohome.DircryptoMigrationFailedErrorCode"
-    enum="PlatformFileError">
+    enum="PlatformFileError" expires_after="M81">
   <owner>kinaba@chromium.org</owner>
   <summary>
     The error code of file operation by which the user home directory migration
@@ -26616,7 +26649,7 @@
 </histogram>
 
 <histogram base="true" name="CustomTabs.DetachedResourceRequest.Duration"
-    units="ms">
+    units="ms" expires_after="M81">
   <owner>lizeb@chromium.org</owner>
   <summary>
     Time between the start of a detached resource request and its completion
@@ -26774,7 +26807,8 @@
   </summary>
 </histogram>
 
-<histogram name="CustomTabs.IntentToFirstCommitNavigationTime3" units="ms">
+<histogram name="CustomTabs.IntentToFirstCommitNavigationTime3" units="ms"
+    expires_after="M81">
   <owner>lizeb@chromium.org</owner>
   <summary>
     Time between the intent arrival to a Custom Tab and the first navigation
@@ -26783,7 +26817,8 @@
   </summary>
 </histogram>
 
-<histogram name="CustomTabs.IntentToFirstNavigationStartTime" units="ms">
+<histogram name="CustomTabs.IntentToFirstNavigationStartTime" units="ms"
+    expires_after="M81">
   <owner>lizeb@chromium.org</owner>
   <summary>
     Time between the intent arrival to a Custom Tab and the navigation start.
@@ -26899,7 +26934,7 @@
 </histogram>
 
 <histogram name="CustomTabs.SpareWebContents.Status2"
-    enum="SpareWebContentsStatus2">
+    enum="SpareWebContentsStatus2" expires_after="2020-03-08">
   <owner>lizeb@chromium.org</owner>
   <owner>mthiesse@chromium.org</owner>
   <summary>
@@ -26910,7 +26945,8 @@
   </summary>
 </histogram>
 
-<histogram name="CustomTabs.SpareWebContents.TimeBeforeDeath" units="ms">
+<histogram name="CustomTabs.SpareWebContents.TimeBeforeDeath" units="ms"
+    expires_after="2020-03-08">
   <owner>lizeb@chromium.org</owner>
   <summary>
     Android: When a spare WebContents is created from Custom Tabs, record how
@@ -27652,7 +27688,8 @@
   </summary>
 </histogram>
 
-<histogram name="DataReductionProxy.Pingback.Attempted" enum="BooleanAttempted">
+<histogram name="DataReductionProxy.Pingback.Attempted" enum="BooleanAttempted"
+    expires_after="M81">
   <owner>ryansturm@chromium.org</owner>
   <summary>
     Counts the number of times that pageload metrics were queued to be attempted
@@ -27661,7 +27698,7 @@
 </histogram>
 
 <histogram name="DataReductionProxy.Pingback.CrashAction"
-    enum="DataReductionProxyPingbackCrashAction">
+    enum="DataReductionProxyPingbackCrashAction" expires_after="M81">
   <owner>ryansturm@chromium.org</owner>
   <summary>
     Counts various actions related to crash detection in the pingback client.
@@ -27670,7 +27707,8 @@
   </summary>
 </histogram>
 
-<histogram name="DataReductionProxy.Pingback.Succeeded" enum="BooleanSuccess">
+<histogram name="DataReductionProxy.Pingback.Succeeded" enum="BooleanSuccess"
+    expires_after="M81">
   <owner>ryansturm@chromium.org</owner>
   <summary>
     Counts the number of times that a batched pingback request succeeded or
@@ -27787,7 +27825,7 @@
 </histogram>
 
 <histogram name="DataReductionProxy.Quic.ProxyStatus"
-    enum="DataReductionProxyQuicProxyStatus">
+    enum="DataReductionProxyQuicProxyStatus" expires_after="M81">
   <owner>tbansal@chromium.org</owner>
   <summary>
     Records the result of the attempt to use a data reduction proxy that
@@ -27912,7 +27950,8 @@
   </summary>
 </histogram>
 
-<histogram name="DataReductionProxy.StartupNegativeSavingsPercent" units="%">
+<histogram name="DataReductionProxy.StartupNegativeSavingsPercent" units="%"
+    expires_after="M81">
   <owner>rajendrant@chromium.org</owner>
   <owner>bengr@chromium.org</owner>
   <summary>
@@ -27945,7 +27984,7 @@
 </histogram>
 
 <histogram name="DataReductionProxy.SuccessfulRequestCompletionCounts"
-    units="count">
+    units="count" expires_after="M81">
   <owner>tbansal@chromium.org</owner>
   <owner>bengr@chromium.org</owner>
   <summary>
@@ -28475,7 +28514,7 @@
   </summary>
 </histogram>
 
-<histogram name="DataUse.AppTabState" units="bytes">
+<histogram name="DataUse.AppTabState" units="bytes" expires_after="M81">
   <owner>rajendrant@chromium.org</owner>
   <owner>bengr@chromium.org</owner>
   <summary>
@@ -28513,7 +28552,7 @@
   </summary>
 </histogram>
 
-<histogram name="DataUse.BytesSent" units="bytes">
+<histogram name="DataUse.BytesSent" units="bytes" expires_after="M81">
   <owner>tbansal@chromium.org</owner>
   <summary>
     Count of total bytes sent by the Chrome on the network. With network
@@ -28710,7 +28749,7 @@
   </summary>
 </histogram>
 
-<histogram name="DataUse.TrafficSize.User" units="bytes">
+<histogram name="DataUse.TrafficSize.User" units="bytes" expires_after="M81">
   <owner>bengr@chromium.org</owner>
   <summary>
     The total amount of data use of Chrome for user traffic. This traffic has
@@ -32559,7 +32598,8 @@
   <summary>The actual bandwidth (per read) of a download.</summary>
 </histogram>
 
-<histogram name="Download.ApiFunctions" enum="DownloadFunctions">
+<histogram name="Download.ApiFunctions" enum="DownloadFunctions"
+    expires_after="2020-03-08">
   <owner>dtrainor@chromium.org</owner>
   <summary>Downloads extension API function calls.</summary>
 </histogram>
@@ -32753,7 +32793,7 @@
 </histogram>
 
 <histogram name="Download.DangerousFile.DangerousDownloadValidated"
-    enum="DownloadItem.DangerousFileType">
+    enum="DownloadItem.DangerousFileType" expires_after="M81">
   <owner>dtrainor@chromium.org</owner>
   <owner>felt@chromium.org</owner>
   <summary>
@@ -33304,7 +33344,8 @@
   </summary>
 </histogram>
 
-<histogram name="Download.IOSDownloadMimeType" enum="DownloadMimeTypeResult">
+<histogram name="Download.IOSDownloadMimeType" enum="DownloadMimeTypeResult"
+    expires_after="2020-03-08">
   <owner>eugenebut@chromium.org</owner>
   <summary>
     MIME type of a download response. Logged when the download UI was offered by
@@ -34186,7 +34227,8 @@
   </summary>
 </histogram>
 
-<histogram name="Download.SourcesChrome" enum="ChromeDownloadSource">
+<histogram name="Download.SourcesChrome" enum="ChromeDownloadSource"
+    expires_after="M81">
   <owner>xingliu@chromium.org</owner>
   <summary>
     The initiation source (if initiated within the above-content layer of
@@ -34743,7 +34785,8 @@
   </summary>
 </histogram>
 
-<histogram name="DriveCommon.Lifecycle.FirstLaunchTime" units="ms">
+<histogram name="DriveCommon.Lifecycle.FirstLaunchTime" units="ms"
+    expires_after="M81">
   <owner>dats@chromium.org</owner>
   <owner>sammc@chromium.org</owner>
   <summary>
@@ -34751,7 +34794,8 @@
   </summary>
 </histogram>
 
-<histogram name="DriveCommon.Lifecycle.Mount" enum="DriveMountStatus">
+<histogram name="DriveCommon.Lifecycle.Mount" enum="DriveMountStatus"
+    expires_after="M81">
   <owner>dats@chromium.org</owner>
   <owner>sammc@chromium.org</owner>
   <summary>Records outcomes of attempts to mount Google Drive.</summary>
@@ -35842,7 +35886,7 @@
 </histogram>
 
 <histogram name="Enterprise.FCMInvalidationService.PolicyInvalidations"
-    enum="EnterprisePolicyInvalidations" expires_after="2020-01-01">
+    enum="EnterprisePolicyInvalidations" expires_after="2020-03-08">
   <owner>askaraitzhan@google.com</owner>
   <owner>isandrk@chromium.org</owner>
   <summary>
@@ -35857,7 +35901,7 @@
 
 <histogram
     name="Enterprise.FCMInvalidationService.PolicyInvalidationsRegistrationResult"
-    enum="BooleanSuccess" expires_after="2020-01-01">
+    enum="BooleanSuccess" expires_after="2020-03-08">
   <owner>askaraitzhan@google.com</owner>
   <owner>isandrk@chromium.org</owner>
   <summary>
@@ -35870,7 +35914,7 @@
 </histogram>
 
 <histogram name="Enterprise.FCMInvalidationService.PolicyRefresh"
-    enum="EnterprisePolicyRefresh" expires_after="2020-01-01">
+    enum="EnterprisePolicyRefresh" expires_after="2020-03-08">
   <owner>askaraitzhan@google.com</owner>
   <owner>isandrk@chromium.org</owner>
   <summary>
@@ -35927,7 +35971,7 @@
 
 <histogram
     name="Enterprise.MachineLevelUserCloudPolicyEnrollment.InstallLevel_Win"
-    enum="BooleanIsSystemLevelInstall">
+    enum="BooleanIsSystemLevelInstall" expires_after="2020-03-08">
   <owner>zmin@chromium.org</owner>
   <summary>
     Records whether the Chrome install is system level or user level when trying
@@ -36253,7 +36297,7 @@
 </histogram>
 
 <histogram name="Enterprise.TiclInvalidationService.PolicyInvalidations"
-    enum="EnterprisePolicyInvalidations" expires_after="2020-01-01">
+    enum="EnterprisePolicyInvalidations" expires_after="2020-03-08">
   <owner>askaraitzhan@google.com</owner>
   <owner>isandrk@chromium.org</owner>
   <summary>
@@ -36268,7 +36312,7 @@
 
 <histogram
     name="Enterprise.TiclInvalidationService.PolicyInvalidationsRegistrationResult"
-    enum="BooleanSuccess" expires_after="2020-01-01">
+    enum="BooleanSuccess" expires_after="2020-03-08">
   <owner>askaraitzhan@google.com</owner>
   <owner>isandrk@chromium.org</owner>
   <summary>
@@ -36953,7 +36997,8 @@
   </summary>
 </histogram>
 
-<histogram name="Event.DragDrop.AcceptDragUpdate" enum="Boolean">
+<histogram name="Event.DragDrop.AcceptDragUpdate" enum="Boolean"
+    expires_after="M81">
   <owner>dcheng@chromium.org</owner>
   <owner>sadrul@chromium.org</owner>
   <summary>
@@ -38127,7 +38172,7 @@
 </histogram>
 
 <histogram name="Event.Latency.Scroll.Wheel.TimeToHandled2"
-    units="microseconds">
+    units="microseconds" expires_after="M81">
   <owner>tdresser@chromium.org</owner>
   <summary>
     Time between initial creation of a wheel event and the generated
@@ -39665,7 +39710,8 @@
   </summary>
 </histogram>
 
-<histogram name="Event.PassiveListeners.Latency" units="microseconds">
+<histogram name="Event.PassiveListeners.Latency" units="microseconds"
+    expires_after="M81">
   <owner>dtapuska@chromium.org</owner>
   <summary>
     Time between when a cancelable event was generated and the event processed
@@ -40436,7 +40482,7 @@
 </histogram>
 
 <histogram name="ExploreSites.ExploreSitesStore.StoreEvent"
-    enum="ExploreSitesStoreEvent">
+    enum="ExploreSitesStoreEvent" expires_after="M81">
   <owner>dewittj@chromium.org</owner>
   <summary>Counts when the explore sites store is opened or closed.</summary>
 </histogram>
@@ -40458,7 +40504,7 @@
   </summary>
 </histogram>
 
-<histogram name="ExploreSites.ImageDecoded" units="Boolean">
+<histogram name="ExploreSites.ImageDecoded" units="Boolean" expires_after="M81">
   <owner>freedjm@chromium.org</owner>
   <summary>Tracks the result of image decoding for the favicons.</summary>
 </histogram>
@@ -41458,7 +41504,7 @@
 </histogram>
 
 <histogram name="Extensions.Bindings.UpdateBindingsForContextTime"
-    units="microseconds">
+    units="microseconds" expires_after="M81">
   <owner>rdevlin.cronin@chromium.org</owner>
   <summary>
     The elapsed time to update the bindings for a new or existing v8::Context.
@@ -41972,7 +42018,8 @@
   </summary>
 </histogram>
 
-<histogram name="Extensions.Database.Open" enum="LevelDBStatus">
+<histogram name="Extensions.Database.Open" enum="LevelDBStatus"
+    expires_after="M81">
   <owner>cmumford@chromium.org</owner>
   <summary>The result of an open attempt to an Extensions database.</summary>
 </histogram>
@@ -42547,7 +42594,8 @@
   <summary>The time an extension's event page has spent loaded.</summary>
 </histogram>
 
-<histogram name="Extensions.EventPageActiveTime2" units="ms">
+<histogram name="Extensions.EventPageActiveTime2" units="ms"
+    expires_after="M81">
   <owner>rdevlin.cronin@chromium.org</owner>
   <summary>
     The time between an extension's event page loading its first URL and the
@@ -42571,7 +42619,7 @@
   <summary>The time for an extension's event page to load.</summary>
 </histogram>
 
-<histogram name="Extensions.EventPageLoadTime2" units="ms">
+<histogram name="Extensions.EventPageLoadTime2" units="ms" expires_after="M81">
   <owner>rdevlin.cronin@chromium.org</owner>
   <summary>
     The time taken for an extension's event page to load its initial URL.
@@ -42592,7 +42640,7 @@
 </histogram>
 
 <histogram name="Extensions.Events.DispatchToComponentWithSuspendedEventPage"
-    enum="ExtensionEvents">
+    enum="ExtensionEvents" expires_after="M81">
   <owner>mfoltz@chromium.org</owner>
   <summary>
     Recorded every time an event is dispatched to a *component* extension with a
@@ -42602,7 +42650,7 @@
 </histogram>
 
 <histogram name="Extensions.Events.DispatchWithPersistentBackgroundPage"
-    enum="ExtensionEvents">
+    enum="ExtensionEvents" expires_after="M81">
   <owner>rdevlin.cronin@chromium.org</owner>
   <summary>
     Recorded every time an event is dispatched to an extension with a persistent
@@ -42614,7 +42662,7 @@
 </histogram>
 
 <histogram name="Extensions.Events.DispatchWithRunningEventPage"
-    enum="ExtensionEvents">
+    enum="ExtensionEvents" expires_after="M81">
   <owner>rdevlin.cronin@chromium.org</owner>
   <summary>
     Recorded every time an event is dispatched to an extension with an event
@@ -42627,7 +42675,7 @@
 </histogram>
 
 <histogram name="Extensions.Events.DispatchWithSuspendedEventPage"
-    enum="ExtensionEvents">
+    enum="ExtensionEvents" expires_after="M81">
   <owner>rdevlin.cronin@chromium.org</owner>
   <summary>
     Recorded every time an event is dispatched to an extension with an event
@@ -42868,7 +42916,8 @@
   </summary>
 </histogram>
 
-<histogram name="Extensions.ExternalExtensionEvent" enum="SideloadUIEvents">
+<histogram name="Extensions.ExternalExtensionEvent" enum="SideloadUIEvents"
+    expires_after="M81">
   <owner>Please list the metric's owners. Add more owner tags as needed.</owner>
   <summary>
     Records what happens to extensions that are sideloaded, grouped by the
@@ -43108,7 +43157,8 @@
   </summary>
 </histogram>
 
-<histogram name="Extensions.Functions.FailedTime" enum="ExtensionFunctions">
+<histogram name="Extensions.Functions.FailedTime" enum="ExtensionFunctions"
+    expires_after="M81">
   <owner>rdevlin.cronin@chromium.org</owner>
   <summary>
     Recorded when an extension function call fails and finishes execution. The
@@ -43117,7 +43167,8 @@
   </summary>
 </histogram>
 
-<histogram name="Extensions.Functions.FailedTotalExecutionTime" units="ms">
+<histogram name="Extensions.Functions.FailedTotalExecutionTime" units="ms"
+    expires_after="M81">
   <owner>rdevlin.cronin@chromium.org</owner>
   <summary>
     The total amount of time it took to execute an extension function that
@@ -43168,7 +43219,8 @@
   </summary>
 </histogram>
 
-<histogram name="Extensions.Functions.SynchronousExecutionTime" units="ms">
+<histogram name="Extensions.Functions.SynchronousExecutionTime" units="ms"
+    expires_after="M81">
   <owner>rdevlin.cronin@chromium.org</owner>
   <summary>
     The synchronous amount of time an extension function takes. Note that many
@@ -43866,7 +43918,7 @@
   </summary>
 </histogram>
 
-<histogram name="Extensions.LoadUserScript">
+<histogram name="Extensions.LoadUserScript" expires_after="M81">
   <owner>rdevlin.cronin@chromium.org</owner>
   <summary>
     The number of converted user scripts loaded at profile open.
@@ -44101,12 +44153,13 @@
   </summary>
 </histogram>
 
-<histogram name="Extensions.NetworkDelay" units="ms">
+<histogram name="Extensions.NetworkDelay" units="ms" expires_after="M81">
   <owner>battre@chromium.org</owner>
   <summary>Time that network requests were blocked due to extensions.</summary>
 </histogram>
 
-<histogram name="Extensions.NetworkDelayPercentage" units="%">
+<histogram name="Extensions.NetworkDelayPercentage" units="%"
+    expires_after="M81">
   <owner>battre@chromium.org</owner>
   <summary>
     Percentage of total lifetime a network request was blocked due to an
@@ -44158,7 +44211,7 @@
   </summary>
 </histogram>
 
-<histogram name="Extensions.NonWebStoreNewTabPageOverrides">
+<histogram name="Extensions.NonWebStoreNewTabPageOverrides" expires_after="M81">
   <owner>Please list the metric's owners. Add more owner tags as needed.</owner>
   <summary>
     Number of non-WebStore extensions on startup that override the new tab page.
@@ -45074,7 +45127,7 @@
 </histogram>
 
 <histogram name="Extensions.UnifiedExtensionUpdaterUpdateCheckErrors"
-    enum="CombinedHttpResponseAndNetErrorCode">
+    enum="CombinedHttpResponseAndNetErrorCode" expires_after="M81">
   <owner>waffles@chromium.org</owner>
   <summary>
     Records the error codes of the unified extension updater update check
@@ -45084,7 +45137,7 @@
 </histogram>
 
 <histogram name="Extensions.UnifiedExtensionUpdaterUpdateResults"
-    enum="ExtensionUpdaterUpdateResult">
+    enum="ExtensionUpdaterUpdateResult" expires_after="M81">
   <owner>waffles@chromium.org</owner>
   <summary>
     Records the update results of extensions in an unified extension updater
@@ -45112,7 +45165,8 @@
   </summary>
 </histogram>
 
-<histogram name="Extensions.UninstallSource" enum="ExtensionUninstallSource">
+<histogram name="Extensions.UninstallSource" enum="ExtensionUninstallSource"
+    expires_after="M81">
   <owner>rdevlin.cronin@chromium.org</owner>
   <summary>
     The source for the extension uninstall. This is only recorded if an
@@ -45736,7 +45790,8 @@
   </summary>
 </histogram>
 
-<histogram name="Extensions.WebUi.DocumentLoadedInMainFrameTime" units="ms">
+<histogram name="Extensions.WebUi.DocumentLoadedInMainFrameTime" units="ms"
+    expires_after="M81">
   <owner>rdevlin.cronin@chromium.org</owner>
   <summary>
     The amount of time between starting the provisional load and fully loading
@@ -47437,7 +47492,7 @@
 </histogram>
 
 <histogram name="FontFallback.GetLinkedFonts.CacheMissTiming" units="ms"
-    expires_after="2019-11-01">
+    expires_after="2020-03-08">
   <owner>etienneb@chromium.org</owner>
   <summary>
     Time to retrieve the fallback fonts on the system when not found in cache.
@@ -48971,7 +49026,8 @@
   </summary>
 </histogram>
 
-<histogram name="GPU.ANGLE.Buffer11CPUMemoryMB" units="MB">
+<histogram name="GPU.ANGLE.Buffer11CPUMemoryMB" units="MB"
+    expires_after="2020-03-08">
   <owner>cwallez@chromium.org</owner>
   <summary>
     The sum of the size of the CPU-side memory allocations of Buffer11's copies
@@ -49030,7 +49086,7 @@
   </summary>
 </histogram>
 
-<histogram name="GPU.ANGLE.D3DCompileMS" units="ms">
+<histogram name="GPU.ANGLE.D3DCompileMS" units="ms" expires_after="M81">
   <owner>jmadill@chromium.org</owner>
   <summary>
     The time ANGLE spends calling the D3D shader compiler. Tracks total time we
@@ -49239,7 +49295,7 @@
 </histogram>
 
 <histogram name="GPU.BlacklistFeatureTestResultsWindows2"
-    enum="GPUBlacklistFeatureTestResultsWindows2">
+    enum="GPUBlacklistFeatureTestResultsWindows2" expires_after="2020-03-08">
   <owner>vmiura@chromium.org</owner>
   <summary>
     Counts number of browser invocations for which a GPU feature is
@@ -49406,7 +49462,7 @@
 </histogram>
 
 <histogram name="GPU.DirectComposition.CompositionMode"
-    enum="DxgiFramePresentationMode">
+    enum="DxgiFramePresentationMode" expires_after="2020-03-08">
   <owner>sunnyps@chromium.org</owner>
   <owner>zmo@chromium.org</owner>
   <summary>
@@ -49570,7 +49626,7 @@
 </histogram>
 
 <histogram name="GPU.DirectComposition.NumPendingFrames" units="frames"
-    expires_after="2019-12-31">
+    expires_after="2020-03-08">
   <owner>sunnyps@chromium.org</owner>
   <owner>zmo@chromium.org</owner>
   <summary>
@@ -49612,7 +49668,7 @@
 </histogram>
 
 <histogram name="GPU.DirectComposition.OverlayFullScreenTypes"
-    enum="OverlayFullScreenTypes" expires_after="2019-12-31">
+    enum="OverlayFullScreenTypes" expires_after="2020-03-08">
   <owner>magchen@chromium.org</owner>
   <owner>zmo@chromium.org</owner>
   <summary>
@@ -49825,7 +49881,7 @@
   </summary>
 </histogram>
 
-<histogram name="GPU.DoLinkProgramTime" units="ms">
+<histogram name="GPU.DoLinkProgramTime" units="ms" expires_after="2020-03-08">
   <owner>jmadill@chromium.org</owner>
   <owner>jonahr@chromium.org</owner>
   <summary>
@@ -50183,7 +50239,8 @@
   </summary>
 </histogram>
 
-<histogram name="GPU.Output.ColorSpace" enum="DXGI_COLOR_SPACE_TYPE">
+<histogram name="GPU.Output.ColorSpace" enum="DXGI_COLOR_SPACE_TYPE"
+    expires_after="2020-03-08">
   <owner>hubbe@chromium.org</owner>
   <owner>media-dev@chromium.org</owner>
   <summary>
@@ -50285,7 +50342,8 @@
   </summary>
 </histogram>
 
-<histogram name="GPU.ProgramCache.CacheHit" enum="BooleanSuccess">
+<histogram name="GPU.ProgramCache.CacheHit" enum="BooleanSuccess"
+    expires_after="M81">
   <owner>jmadill@chromium.org</owner>
   <summary>
     If a successfully linked program was found in the GPU program cache during a
@@ -52289,7 +52347,8 @@
   </summary>
 </histogram>
 
-<histogram base="true" name="HttpCache.AfterSend" units="ms">
+<histogram base="true" name="HttpCache.AfterSend" units="ms"
+    expires_after="M81">
   <owner>morlovich@chromium.org</owner>
   <summary>
     For http cache transactions in which a network request was sent, the time
@@ -52331,7 +52390,7 @@
 </histogram>
 
 <histogram name="HttpCache.CantConditionalizeZeroFreshnessFromMemHint"
-    enum="Boolean">
+    enum="Boolean" expires_after="M81">
   <owner>morlovich@chromium.org</owner>
   <summary>
     For each request with HttpCache.CantConditionalizeCause == Zero Freshness,
@@ -56417,12 +56476,13 @@
   <summary>Tracks cryptohome failure during kiosk launch.</summary>
 </histogram>
 
-<histogram name="Kiosk.Launch.Error" enum="KioskLaunchError">
+<histogram name="Kiosk.Launch.Error" enum="KioskLaunchError"
+    expires_after="M81">
   <owner>xiyuan@chromium.org</owner>
   <summary>Tracks kiosk launch errors.</summary>
 </histogram>
 
-<histogram name="Kiosk.LaunchType" enum="KioskLaunchType">
+<histogram name="Kiosk.LaunchType" enum="KioskLaunchType" expires_after="M81">
   <owner>xiyuan@chromium.org</owner>
   <owner>aghuie@chromium.org</owner>
   <summary>
@@ -56767,7 +56827,7 @@
 </histogram>
 
 <histogram name="Layout.ScrollAnchor.TimeToRestoreAnchor" units="microseconds"
-    expires_after="M77">
+    expires_after="2020-03-08">
   <owner>pnoland@chromium.org</owner>
   <summary>
     The time it took to restore the scroll anchor using the serialized anchor
@@ -69297,7 +69357,7 @@
 </histogram>
 
 <histogram name="MultiDevice.PostOOBESetupFlow.PageShown"
-    enum="MultiDevice_PostOOBESetupFlow_Page">
+    enum="MultiDevice_PostOOBESetupFlow_Page" expires_after="M81">
   <owner>hansberry@chromium.org</owner>
   <owner>khorimoto@chromium.org</owner>
   <summary>
@@ -69376,7 +69436,7 @@
 
 <histogram
     name="MultiDevice.SecureChannel.BLE.Performance.StartScanToConnectionDuration.Background"
-    units="ms">
+    units="ms" expires_after="2020-03-08">
   <owner>hansberry@chromium.org</owner>
   <owner>khorimoto@chromium.org</owner>
   <summary>
@@ -69442,7 +69502,7 @@
 </histogram>
 
 <histogram name="MultiDevice.VerifyButtonClicked"
-    enum="MultiDevice_VerifyAndForgetHostConfirmationState">
+    enum="MultiDevice_VerifyAndForgetHostConfirmationState" expires_after="M81">
   <owner>hansberry@chromium.org</owner>
   <owner>khorimoto@chromium.org</owner>
   <summary>
@@ -69462,7 +69522,7 @@
 </histogram>
 
 <histogram name="MultiDeviceSetup_NotificationClicked"
-    enum="MultiDeviceSetupNotification">
+    enum="MultiDeviceSetupNotification" expires_after="M81">
   <owner>jordynass@chromium.org</owner>
   <owner>khorimoto@chromium.org</owner>
   <summary>
@@ -69483,7 +69543,7 @@
 </histogram>
 
 <histogram name="MultiDeviceSetup_NotificationShown"
-    enum="MultiDeviceSetupNotification">
+    enum="MultiDeviceSetupNotification" expires_after="M81">
   <owner>jordynass@chromium.org</owner>
   <owner>khorimoto@chromium.org</owner>
   <summary>
@@ -69533,7 +69593,7 @@
 </histogram>
 
 <histogram name="MultiProfile.SwitchActiveUserUIPath"
-    enum="MultiProfileSwitchActiveUserAction">
+    enum="MultiProfileSwitchActiveUserAction" expires_after="2020-03-08">
   <owner>skuhne@chromium.org</owner>
   <summary>
     Count the number of times each UI path is taken for switching the active
@@ -89243,7 +89303,8 @@
   </summary>
 </histogram>
 
-<histogram name="NQE.EndToEndRTT.OnECTComputation" units="ms">
+<histogram name="NQE.EndToEndRTT.OnECTComputation" units="ms"
+    expires_after="2020-03-08">
   <owner>tbansal@chromium.org</owner>
   <summary>
     Rough estimate of the computed end-to-end round trip time. Recorded by the
@@ -89339,7 +89400,8 @@
   </summary>
 </histogram>
 
-<histogram name="NQE.Kbps.ObservationSource" enum="NQEObservationSource">
+<histogram name="NQE.Kbps.ObservationSource" enum="NQEObservationSource"
+    expires_after="M81">
   <owner>tbansal@chromium.org</owner>
   <owner>bengr@chromium.org</owner>
   <summary>
@@ -89382,7 +89444,7 @@
   </summary>
 </histogram>
 
-<histogram name="NQE.MainFrame.Kbps" units="Kbps">
+<histogram name="NQE.MainFrame.Kbps" units="Kbps" expires_after="M81">
   <owner>bengr@chromium.org</owner>
   <owner>tbansal@chromium.org</owner>
   <summary>
@@ -94158,7 +94220,8 @@
   </summary>
 </histogram>
 
-<histogram name="Overscroll.Cancelled3" enum="OverscrollNavigationType">
+<histogram name="Overscroll.Cancelled3" enum="OverscrollNavigationType"
+    expires_after="2020-03-08">
   <owner>nzolghadr@chromium.org</owner>
   <summary>
     Overscroll gestures that were aborted before they were completed.
@@ -106642,7 +106705,8 @@
   </summary>
 </histogram>
 
-<histogram name="Plugin.PpapiBrokerLoadErrorCode" enum="WinGetLastError">
+<histogram name="Plugin.PpapiBrokerLoadErrorCode" enum="WinGetLastError"
+    expires_after="M81">
   <owner>xhwang@chromium.org</owner>
   <summary>
     The error code of a PPAPI broker load failure. Only reported on Windows.
@@ -108770,7 +108834,8 @@
   </summary>
 </histogram>
 
-<histogram name="Prerender.NoStatePrefetchRendererParseTime" units="ms">
+<histogram name="Prerender.NoStatePrefetchRendererParseTime" units="ms"
+    expires_after="M81">
   <owner>jam@chromium.org</owner>
   <summary>
     Time between prefetch renderer startup and when parsing is complete.
@@ -108800,7 +108865,8 @@
   </summary>
 </histogram>
 
-<histogram name="Prerender.OmniboxNavigationsCouldPrerender">
+<histogram name="Prerender.OmniboxNavigationsCouldPrerender"
+    expires_after="M81">
   <owner>pasko@chromium.org</owner>
   <summary>
     A boolean that indicates whether the Omnibox navigation being committed
@@ -109514,7 +109580,7 @@
 </histogram>
 
 <histogram name="Previews.CacheControlNoTransform.BlockedPreview"
-    enum="PreviewsType">
+    enum="PreviewsType" expires_after="M81">
   <owner>dougarnett@chromium.org</owner>
   <summary>
     Blocked previews due to Cache-Control:no-transform directive.
@@ -110894,7 +110960,8 @@
   </summary>
 </histogram>
 
-<histogram name="Process.Sandbox.Launch.Warning" enum="WinGetLastError">
+<histogram name="Process.Sandbox.Launch.Warning" enum="WinGetLastError"
+    expires_after="M81">
   <owner>forshaw@chromium.org</owner>
   <summary>
     Warnings returned while launching sandboxed process on Windows. For decoding
@@ -110905,7 +110972,7 @@
 </histogram>
 
 <histogram name="Process.Sandbox.Launch.WarningResultCode"
-    units="LaunchErrorCodes">
+    units="LaunchErrorCodes" expires_after="M81">
   <owner>forshaw@chromium.org</owner>
   <summary>
     The warning launch error returned while launching sandboxed process on
@@ -111994,7 +112061,7 @@
 </histogram>
 
 <histogram name="PurgeAndSuspend.Experimental.TimeToFirstActivePaint"
-    units="ms">
+    units="ms" expires_after="M81">
   <owner>tasak@google.com</owner>
   <summary>
     Time elapsed from when the backgrounded and purged renderer is foregrounded
@@ -112227,7 +112294,8 @@
   </summary>
 </histogram>
 
-<histogram name="PushMessaging.UnregistrationIIDResult" enum="InstanceIDResult">
+<histogram name="PushMessaging.UnregistrationIIDResult" enum="InstanceIDResult"
+    expires_after="M81">
   <owner>peter@chromium.org</owner>
   <summary>
     When unregistering an InstanceID push messaging subscription, this records
@@ -112582,7 +112650,7 @@
   <summary>Amount of free disk space for profile directory.</summary>
 </histogram>
 
-<histogram name="Quota.GlobalTemporaryPoolSize" units="MB">
+<histogram name="Quota.GlobalTemporaryPoolSize" units="MB" expires_after="M81">
   <owner>jarrydg@chromium.org</owner>
   <summary>
     The size of the global temporary storage pool. Logged at irregular
@@ -112708,7 +112776,8 @@
   </summary>
 </histogram>
 
-<histogram name="Quota.PercentUsedForTemporaryStorage" units="%">
+<histogram name="Quota.PercentUsedForTemporaryStorage" units="%"
+    expires_after="M81">
   <owner>jarrydg@chromium.org</owner>
   <summary>
     Percentage of the storage device that is being use for temporary storage.
@@ -112725,7 +112794,7 @@
   </summary>
 </histogram>
 
-<histogram name="Quota.QuotaForOrigin" units="MB">
+<histogram name="Quota.QuotaForOrigin" units="MB" expires_after="M81">
   <owner>jarrydg@chromium.org</owner>
   <summary>
     The quota value computed for an origin using temporary storage. Logged at
@@ -120253,7 +120322,7 @@
 </histogram>
 
 <histogram name="SB2.RemoteCall.ThreatSubType.PotentiallyHarmfulApp"
-    enum="SB2RemoteCallThreatSubType">
+    enum="SB2RemoteCallThreatSubType" expires_after="M81">
   <owner>vakh@chromium.org</owner>
   <owner>chrome-safebrowsing-alerts@google.com</owner>
   <summary>
@@ -120264,7 +120333,7 @@
 </histogram>
 
 <histogram name="SB2.RemoteCall.ThreatSubType.SocialEngineering"
-    enum="SB2RemoteCallThreatSubType">
+    enum="SB2RemoteCallThreatSubType" expires_after="M81">
   <owner>vakh@chromium.org</owner>
   <owner>chrome-safebrowsing-alerts@google.com</owner>
   <summary>
@@ -120653,7 +120722,7 @@
 </histogram>
 
 <histogram name="SBClientDownload.DownloadFileHasDetachedSignatures"
-    enum="Boolean" expires_after="M78">
+    enum="Boolean" expires_after="2020-03-08">
   <obsolete>
     Deprecated 09/19, since the metric was not being actively used and there
     were no near-term plans to begin using it.
@@ -120954,7 +121023,8 @@
   </summary>
 </histogram>
 
-<histogram name="SBClientDownload.RarFileHasExecutable" enum="Boolean">
+<histogram name="SBClientDownload.RarFileHasExecutable" enum="Boolean"
+    expires_after="M81">
   <owner>vakh@chromium.org</owner>
   <owner>chrome-safebrowsing-alerts@google.com</owner>
   <summary>
@@ -120963,7 +121033,8 @@
   </summary>
 </histogram>
 
-<histogram name="SBClientDownload.RarFileSuccess" enum="BooleanSuccess">
+<histogram name="SBClientDownload.RarFileSuccess" enum="BooleanSuccess"
+    expires_after="M81">
   <owner>vakh@chromium.org</owner>
   <owner>chrome-safebrowsing-alerts@google.com</owner>
   <summary>
@@ -120984,7 +121055,8 @@
   </summary>
 </histogram>
 
-<histogram name="SBClientDownload.RarOpenSuccess" enum="BooleanSuccess">
+<histogram name="SBClientDownload.RarOpenSuccess" enum="BooleanSuccess"
+    expires_after="M81">
   <owner>vakh@chromium.org</owner>
   <owner>chrome-safebrowsing-alerts@google.com</owner>
   <summary>
@@ -120995,7 +121067,8 @@
   </summary>
 </histogram>
 
-<histogram name="SBClientDownload.RarValidArchive" enum="BooleanSuccess">
+<histogram name="SBClientDownload.RarValidArchive" enum="BooleanSuccess"
+    expires_after="M81">
   <owner>vakh@chromium.org</owner>
   <owner>chrome-safebrowsing-alerts@google.com</owner>
   <summary>
@@ -121631,7 +121704,7 @@
 </histogram>
 
 <histogram name="SBDownloadFeedback.FileErrors"
-    enum="CombinedHttpResponseAndNetErrorCode">
+    enum="CombinedHttpResponseAndNetErrorCode" expires_after="2020-03-08">
   <owner>drubery@chromium.org</owner>
   <owner>chrome-safebrowsing-alerts@google.com</owner>
   <summary>
@@ -121882,7 +121955,7 @@
   </summary>
 </histogram>
 
-<histogram name="SBIRS.PSSDataStoreSize" units="bytes">
+<histogram name="SBIRS.PSSDataStoreSize" units="bytes" expires_after="M81">
   <owner>grt@google.com</owner>
   <summary>
     The size, in bytes, of a profile's platform state store. This hisogram is
@@ -121890,7 +121963,8 @@
   </summary>
 </histogram>
 
-<histogram name="SBIRS.PSSLoadResult" enum="PlatformStateStoreLoadResult">
+<histogram name="SBIRS.PSSLoadResult" enum="PlatformStateStoreLoadResult"
+    expires_after="M81">
   <owner>grt@google.com</owner>
   <summary>The result of loading data from the platform state store.</summary>
 </histogram>
@@ -135930,7 +136004,8 @@
   </summary>
 </histogram>
 
-<histogram name="Stability.Internals.SystemCrashCount" units="crashes">
+<histogram name="Stability.Internals.SystemCrashCount" units="crashes"
+    expires_after="2020-03-08">
   <owner>siggi@chromium.org</owner>
   <summary>
     Number of times a browser crash was detected, where the browser was last
@@ -136321,7 +136396,8 @@
   </summary>
 </histogram>
 
-<histogram name="Startup.AfterStartupTaskDelayedUntilTime" units="ms">
+<histogram name="Startup.AfterStartupTaskDelayedUntilTime" units="ms"
+    expires_after="2020-03-08">
   <owner>michaeln@chromium.org</owner>
   <summary>
     Time from the process creation until deferred after-startup tasks began
@@ -136444,7 +136520,8 @@
   </summary>
 </histogram>
 
-<histogram name="Startup.BrowserLaunchURLCount" units="urls">
+<histogram name="Startup.BrowserLaunchURLCount" units="urls"
+    expires_after="M81">
   <owner>rkaplow@chromium.org</owner>
   <summary>
     Measured when Chrome is invoked, this counts the number of URLs passed via
@@ -137063,7 +137140,7 @@
   </summary>
 </histogram>
 
-<histogram name="Startup.LoadTime.ProcessCreateToDllMain2">
+<histogram name="Startup.LoadTime.ProcessCreateToDllMain2" expires_after="M81">
   <owner>fdoray@chromium.org</owner>
   <owner>gab@chromium.org</owner>
   <summary>Time from the process creation to chrome.dll's main().</summary>
@@ -137228,7 +137305,7 @@
   </summary>
 </histogram>
 
-<histogram name="Startup.SameVersionStartupCount">
+<histogram name="Startup.SameVersionStartupCount" expires_after="2020-03-08">
   <obsolete>
     Deprecated 8/2019. See startup_metric_utils.cc for a summary of old data.
   </obsolete>
@@ -137441,7 +137518,8 @@
   </summary>
 </histogram>
 
-<histogram name="Startup.WarmStartTimeFromRemoteProcessStart" units="ms">
+<histogram name="Startup.WarmStartTimeFromRemoteProcessStart" units="ms"
+    expires_after="M81">
   <owner>fdoray@chromium.org</owner>
   <summary>
     Time for a running browser process to start processing the command line
@@ -138187,7 +138265,7 @@
 </histogram>
 
 <histogram name="SubresourceFilter.DocumentLoad.ActivationState"
-    enum="SubresourceFilterActivationState" expires_after="M77">
+    enum="SubresourceFilterActivationState" expires_after="2020-03-08">
   <owner>engedy@chromium.org</owner>
   <summary>
     Whenever a document load is committed in a main frame or subframe, records
@@ -141317,7 +141395,7 @@
 </histogram>
 
 <histogram name="Sync.ResolveSimpleConflict"
-    enum="SyncSimpleConflictResolutions" expires_after="M78">
+    enum="SyncSimpleConflictResolutions" expires_after="2020-03-08">
   <owner>zea@chromium.org</owner>
   <summary>Enumeration of types of simple conflict resolutions.</summary>
 </histogram>
@@ -141900,7 +141978,7 @@
   <summary>Time taken during bookmark association.</summary>
 </histogram>
 
-<histogram name="Sync.USSLoadModelsTime" units="ms">
+<histogram name="Sync.USSLoadModelsTime" units="ms" expires_after="M81">
   <owner>pavely@chromium.org</owner>
   <summary>Time it took sync to load models for USS datatypes.</summary>
 </histogram>
@@ -146282,7 +146360,7 @@
 </histogram>
 
 <histogram name="Translate.CompactInfobar.TranslationsPerPage"
-    units="translations">
+    units="translations" expires_after="M81">
   <owner>anthonyvd@chromium.org</owner>
   <summary>
     Records the number of times a page is translated, every time the page is
@@ -146929,7 +147007,7 @@
   </summary>
 </histogram>
 
-<histogram name="UI.DeviceScale" units="%">
+<histogram name="UI.DeviceScale" units="%" expires_after="2020-03-08">
   <owner>bsep@chromium.org</owner>
   <summary>
     The device scales available on the system at startup. A system may report
@@ -147203,7 +147281,7 @@
 </histogram>
 
 <histogram name="UMA.AntiVirusMetricsProvider.Result"
-    enum="AntiVirusMetricsProviderResult">
+    enum="AntiVirusMetricsProviderResult" expires_after="2020-03-08">
   <owner>wfh@chromium.org</owner>
   <owner>src/base/metrics/OWNERS</owner>
   <summary>
@@ -147904,7 +147982,8 @@
   </summary>
 </histogram>
 
-<histogram name="UMA.MetricsIDsReset" enum="BooleanHit" expires_after="M77">
+<histogram name="UMA.MetricsIDsReset" enum="BooleanHit"
+    expires_after="2020-03-08">
   <owner>jwd@chromium.org</owner>
   <owner>src/base/metrics/OWNERS</owner>
   <summary>
@@ -147913,7 +147992,8 @@
   </summary>
 </histogram>
 
-<histogram name="UMA.MetricsReporting.Toggle" enum="MetricsReportingChange">
+<histogram name="UMA.MetricsReporting.Toggle" enum="MetricsReportingChange"
+    expires_after="M81">
   <owner>asvitkine@chromium.org</owner>
   <owner>src/base/metrics/OWNERS</owner>
   <summary>
@@ -148099,7 +148179,7 @@
   </summary>
 </histogram>
 
-<histogram name="UMA.ProtoCompressionRatio" units="%">
+<histogram name="UMA.ProtoCompressionRatio" units="%" expires_after="M81">
   <owner>asvitkine@chromium.org</owner>
   <owner>src/base/metrics/OWNERS</owner>
   <summary>
@@ -148195,7 +148275,7 @@
 </histogram>
 
 <histogram name="UMA.TruncatedEvents.UserAction" units="events"
-    expires_after="2020-03-01">
+    expires_after="2020-03-08">
   <owner>rkaplow@chromium.org</owner>
   <owner>src/base/metrics/OWNERS</owner>
   <summary>
@@ -148279,7 +148359,7 @@
 </histogram>
 
 <histogram name="UMA.UserDemographics.Status" enum="UserDemographicsStatus"
-    expires_after="2020-01-07">
+    expires_after="2020-03-08">
   <owner>vincb@google.com</owner>
   <owner>src/base/metrics/OWNERS</owner>
   <summary>
@@ -152931,7 +153011,7 @@
   </summary>
 </histogram>
 
-<histogram name="WebApk.LaunchInterval2" units="minutes">
+<histogram name="WebApk.LaunchInterval2" units="minutes" expires_after="M81">
   <owner>hanxi@chromium.org</owner>
   <owner>pkotwicz@chromium.org</owner>
   <owner>yfriedman@chromium.org</owner>
@@ -152994,7 +153074,7 @@
 </histogram>
 
 <histogram name="WebApk.Permission.ChromeWithoutPermission"
-    enum="WebApkPermissionType">
+    enum="WebApkPermissionType" expires_after="M81">
   <owner>hanxi@chromium.org</owner>
   <owner>pkotwicz@chromium.org</owner>
   <owner>yfriedman@chromium.org</owner>
@@ -153093,7 +153173,7 @@
 </histogram>
 
 <histogram name="WebApk.Update.GooglePlayUpdateResult"
-    enum="WebApkGooglePlayInstallResult">
+    enum="WebApkGooglePlayInstallResult" expires_after="M81">
   <owner>hanxi@chromium.org</owner>
   <owner>pkotwicz@chromium.org</owner>
   <owner>yfriedman@chromium.org</owner>
@@ -153515,7 +153595,8 @@
   </summary>
 </histogram>
 
-<histogram name="WebAudio.AudioDestination.HardwareBufferSize">
+<histogram name="WebAudio.AudioDestination.HardwareBufferSize"
+    expires_after="2020-03-08">
   <owner>rtoy@chromium.org</owner>
   <owner>hongchan@chromium.org</owner>
   <summary>
@@ -153630,7 +153711,8 @@
   </summary>
 </histogram>
 
-<histogram name="WebAudio.BiquadFilter.Type" enum="BiquadFilterType">
+<histogram name="WebAudio.BiquadFilter.Type" enum="BiquadFilterType"
+    expires_after="M81">
   <owner>rtoy@chromium.org</owner>
   <owner>hongchan@chromium.org</owner>
   <summary>
@@ -153641,7 +153723,7 @@
   </summary>
 </histogram>
 
-<histogram name="WebAudio.IIRFilterNode.Order">
+<histogram name="WebAudio.IIRFilterNode.Order" expires_after="M81">
   <owner>rtoy@chromium.org</owner>
   <owner>hongchan@chromium.org</owner>
   <summary>
@@ -153743,7 +153825,7 @@
 </histogram>
 
 <histogram name="WebAuthentication.AttestationPromptResult"
-    enum="WebAuthenticationAttestationPromptResult">
+    enum="WebAuthenticationAttestationPromptResult" expires_after="2020-03-08">
   <owner>agl@chromium.org</owner>
   <summary>
     Tracks events related to prompting users for permission to pass WebAuthn
@@ -153757,7 +153839,7 @@
 </histogram>
 
 <histogram name="WebAuthentication.CredentialRequestAllowCredentialsCount"
-    units="credentials" expires_after="2019-12-31">
+    units="credentials" expires_after="2020-03-08">
   <owner>kenrb@chromium.org</owner>
   <owner>kpaulhamus@chromium.org</owner>
   <summary>
@@ -153779,7 +153861,7 @@
 </histogram>
 
 <histogram name="WebAuthentication.GetAssertionResponseTransport"
-    enum="WebAuthenticationFidoTransport" expires_after="2019-12-31">
+    enum="WebAuthenticationFidoTransport" expires_after="2020-03-08">
   <owner>kenrb@chromium.org</owner>
   <owner>kpaulhamus@chromium.org</owner>
   <summary>
@@ -153789,7 +153871,7 @@
 </histogram>
 
 <histogram name="WebAuthentication.MakeCredentialExcludeCredentialsCount"
-    units="credentials" expires_after="2019-12-31">
+    units="credentials" expires_after="2020-03-08">
   <owner>kenrb@chromium.org</owner>
   <summary>
     When a relying party is attempting to register a credential for a new user
@@ -153799,7 +153881,7 @@
 </histogram>
 
 <histogram name="WebAuthentication.MakeCredentialRequestTransport"
-    enum="WebAuthenticationFidoTransport" expires_after="2019-12-31">
+    enum="WebAuthenticationFidoTransport" expires_after="2020-03-08">
   <owner>kenrb@chromium.org</owner>
   <owner>kpaulhamus@chromium.org</owner>
   <summary>
@@ -153833,7 +153915,8 @@
 </histogram>
 
 <histogram name="WebAuthentication.U2FAttestationPromptResult"
-    enum="WebAuthenticationU2FAttestationPromptResult">
+    enum="WebAuthenticationU2FAttestationPromptResult"
+    expires_after="2020-03-08">
   <owner>agl@chromium.org</owner>
   <summary>
     Tracks events related to prompting users for permission to pass U2F
@@ -153956,7 +154039,8 @@
   </summary>
 </histogram>
 
-<histogram name="WebCore.DistillabilityUs" units="microseconds">
+<histogram name="WebCore.DistillabilityUs" units="microseconds"
+    expires_after="M81">
   <owner>wychen@chromium.org</owner>
   <summary>
     The time spent on collecting the statistics of the document in the main
@@ -155661,7 +155745,8 @@
   </summary>
 </histogram>
 
-<histogram name="WebFont.PackageFormat" enum="WebFontPackageFormat">
+<histogram name="WebFont.PackageFormat" enum="WebFontPackageFormat"
+    expires_after="M81">
   <owner>kenjibaheux@chromium.org</owner>
   <owner>ksakamoto@chromium.org</owner>
   <summary>
@@ -155861,7 +155946,8 @@
   </summary>
 </histogram>
 
-<histogram name="WebRTC.ApplicationPercentPacketsDiscarded" units="%">
+<histogram name="WebRTC.ApplicationPercentPacketsDiscarded" units="%"
+    expires_after="M81">
   <owner>guoweis@chromium.org</owner>
   <summary>
     The percentage of packets discarded by WebRTC's socket layer due to
@@ -158009,7 +158095,8 @@
   </summary>
 </histogram>
 
-<histogram name="WebRTC.Video.InterframeDelay95PercentileInMs" units="ms">
+<histogram name="WebRTC.Video.InterframeDelay95PercentileInMs" units="ms"
+    expires_after="2020-03-08">
   <owner>ilnik@chromium.org</owner>
   <summary>
     The 95th percentile of interframe delay for a received video stream.
@@ -158017,7 +158104,8 @@
   </summary>
 </histogram>
 
-<histogram name="WebRTC.Video.InterframeDelayInMs" units="ms">
+<histogram name="WebRTC.Video.InterframeDelayInMs" units="ms"
+    expires_after="M81">
   <owner>ilnik@chromium.org</owner>
   <summary>
     The average interframe delay for a received video stream. Recorded when a
@@ -158025,7 +158113,8 @@
   </summary>
 </histogram>
 
-<histogram name="WebRTC.Video.InterframeDelayMaxInMs" units="ms">
+<histogram name="WebRTC.Video.InterframeDelayMaxInMs" units="ms"
+    expires_after="M81">
   <owner>ilnik@chromium.org</owner>
   <summary>
     The maximum interframe delay for a received video stream. Recorded when a
@@ -158364,7 +158453,8 @@
   </summary>
 </histogram>
 
-<histogram name="WebRTC.Video.Screenshare.BitrateSentInKbps" units="kbps">
+<histogram name="WebRTC.Video.Screenshare.BitrateSentInKbps" units="kbps"
+    expires_after="M81">
   <owner>sprang@chromium.org</owner>
   <summary>
     The number of sent bits per second for a sent screenshare stream. Recorded
@@ -158427,7 +158517,8 @@
   </summary>
 </histogram>
 
-<histogram name="WebRTC.Video.Screenshare.EndToEndDelayInMs" units="ms">
+<histogram name="WebRTC.Video.Screenshare.EndToEndDelayInMs" units="ms"
+    expires_after="M81">
   <owner>ilnik@chromium.org</owner>
   <summary>
     The average end-to-end delay per frame for a received screenshare stream.
@@ -158435,7 +158526,8 @@
   </summary>
 </histogram>
 
-<histogram name="WebRTC.Video.Screenshare.EndToEndDelayMaxInMs" units="ms">
+<histogram name="WebRTC.Video.Screenshare.EndToEndDelayMaxInMs" units="ms"
+    expires_after="M81">
   <owner>ilnik@chromium.org</owner>
   <summary>
     The maximum end-to-end delay per frame for a received screenshare stream.
@@ -158512,7 +158604,7 @@
 </histogram>
 
 <histogram name="WebRTC.Video.Screenshare.InterframeDelay95PercentileInMs"
-    units="ms">
+    units="ms" expires_after="M81">
   <owner>ilnik@chromium.org</owner>
   <summary>
     The 95th percentile of interframe delay for a received screenshare stream.
@@ -158529,7 +158621,8 @@
   </summary>
 </histogram>
 
-<histogram name="WebRTC.Video.Screenshare.InterframeDelayMaxInMs" units="ms">
+<histogram name="WebRTC.Video.Screenshare.InterframeDelayMaxInMs" units="ms"
+    expires_after="M81">
   <owner>ilnik@chromium.org</owner>
   <summary>
     The maximum interframe delay for a received screenshare stream. Recorded
@@ -158547,7 +158640,7 @@
 </histogram>
 
 <histogram name="WebRTC.Video.Screenshare.KeyFramesSentInPermille"
-    units="permille">
+    units="permille" expires_after="M81">
   <owner>sprang@chromium.org</owner>
   <summary>
     Permille of frames that are key frames for a sent (screen content) video
@@ -158555,14 +158648,14 @@
   </summary>
 </histogram>
 
-<histogram name="WebRTC.Video.Screenshare.Layer0">
+<histogram name="WebRTC.Video.Screenshare.Layer0" expires_after="M81">
   <owner>sprang@chromium.org</owner>
   <summary>
     Stats for the lower layer (TL0) of a screenshare stream in conference mode.
   </summary>
 </histogram>
 
-<histogram name="WebRTC.Video.Screenshare.Layer1">
+<histogram name="WebRTC.Video.Screenshare.Layer1" expires_after="M81">
   <owner>sprang@chromium.org</owner>
   <summary>
     Stats for the higher layer (TL1) of a screenshare stream in conference mode.
@@ -158608,7 +158701,7 @@
 </histogram>
 
 <histogram name="WebRTC.Video.Screenshare.NackPacketsReceivedPerMinute"
-    units="packets/minute">
+    units="packets/minute" expires_after="M81">
   <owner>sprang@chromium.org</owner>
   <summary>
     The number of received RTCP NACK packets per minute for a sent screenshare
@@ -158619,7 +158712,7 @@
 
 <histogram
     name="WebRTC.Video.Screenshare.NumberResolutionDownswitchesPerMinute"
-    units="switches/minute">
+    units="switches/minute" expires_after="M81">
   <owner>ilnik@chromium.org</owner>
   <summary>
     The average number of resolution down-switches per minute for a receive
@@ -158704,7 +158797,7 @@
 </histogram>
 
 <histogram name="WebRTC.Video.Screenshare.RetransmittedBitrateSentInKbps"
-    units="kbps">
+    units="kbps" expires_after="M81">
   <owner>sprang@chromium.org</owner>
   <summary>
     The number of retransmitted bits per second for a sent screenshare stream.
@@ -158723,7 +158816,8 @@
   </summary>
 </histogram>
 
-<histogram name="WebRTC.Video.Screenshare.SendSideDelayInMs" units="ms">
+<histogram name="WebRTC.Video.Screenshare.SendSideDelayInMs" units="ms"
+    expires_after="M81">
   <owner>sprang@chromium.org</owner>
   <summary>
     The average delay (of average delays) of sent packets for a sent (screen
@@ -158735,7 +158829,8 @@
   </summary>
 </histogram>
 
-<histogram name="WebRTC.Video.Screenshare.SendSideDelayMaxInMs" units="ms">
+<histogram name="WebRTC.Video.Screenshare.SendSideDelayMaxInMs" units="ms"
+    expires_after="M81">
   <owner>sprang@chromium.org</owner>
   <summary>
     The average delay (of max delays) of sent packets for a sent (screen
@@ -158765,7 +158860,8 @@
   </summary>
 </histogram>
 
-<histogram name="WebRTC.Video.Screenshare.SentPacketsLostInPercent" units="%">
+<histogram name="WebRTC.Video.Screenshare.SentPacketsLostInPercent" units="%"
+    expires_after="M81">
   <owner>sprang@chromium.org</owner>
   <summary>
     Percentage of sent packets lost for a sent screenshare stream. Recorded when
@@ -159541,7 +159637,8 @@
   </summary>
 </histogram>
 
-<histogram name="Windows.ComputeNativeWindowOcclusionTime" units="microseconds">
+<histogram name="Windows.ComputeNativeWindowOcclusionTime" units="microseconds"
+    expires_after="M81">
   <owner>fdoray@chromium.org</owner>
   <summary>
     The amount of CPU time a call to ComputeNativeWindowOcclusionStatus() takes.
@@ -159555,7 +159652,8 @@
   </summary>
 </histogram>
 
-<histogram base="true" name="Windows.FilesystemError" enum="WinGetLastError">
+<histogram base="true" name="Windows.FilesystemError" enum="WinGetLastError"
+    expires_after="M81">
   <owner>grt@chromium.org</owner>
   <summary>
     The Windows error code relating to a failed attempt to operate on a file or
@@ -159572,7 +159670,8 @@
   </summary>
 </histogram>
 
-<histogram name="Windows.HasHighResolutionTimeTicks" enum="Boolean">
+<histogram name="Windows.HasHighResolutionTimeTicks" enum="Boolean"
+    expires_after="M81">
   <owner>gab@chromium.org</owner>
   <summary>
     The value of TimeTicks::IsHighResolution(). Reported once per browser
@@ -159580,7 +159679,8 @@
   </summary>
 </histogram>
 
-<histogram name="Windows.HighResolutionTimerUsage" units="%">
+<histogram name="Windows.HighResolutionTimerUsage" units="%"
+    expires_after="M81">
   <owner>stanisc@chromium.org</owner>
   <summary>
     Percentage of elapsed time the high resolution timer is activated. The usage
@@ -159604,7 +159704,7 @@
 </histogram>
 
 <histogram name="Windows.InspectModule.ConnectionError"
-    enum="BooleanConnectionError">
+    enum="BooleanConnectionError" expires_after="M81">
   <owner>pmonette@chromium.org</owner>
   <summary>
     Whether connection error has happened for the UtilWin service. Every time a
@@ -159665,7 +159765,8 @@
   </summary>
 </histogram>
 
-<histogram name="Windows.NativeWindowVisibility" units="windows">
+<histogram name="Windows.NativeWindowVisibility" units="windows"
+    expires_after="M81">
   <owner>fdoray@chromium.org</owner>
   <summary>
     The number of Chrome browser windows in a given visibility state. This is
@@ -159707,7 +159808,7 @@
 </histogram>
 
 <histogram base="true" name="Windows.PostOperationState"
-    enum="PostOperationState">
+    enum="PostOperationState" expires_after="M81">
   <owner>grt@chromium.org</owner>
   <summary>
     The state of an item in the filesystem following an operation on it.
@@ -160194,7 +160295,8 @@
   </summary>
 </histogram>
 
-<histogram name="XHR.Async.PageDismissal" enum="XHRPageDismissalState">
+<histogram name="XHR.Async.PageDismissal" enum="XHRPageDismissalState"
+    expires_after="M81">
   <owner>panicker@chromium.org</owner>
   <summary>
     Records occurence of async XHR during page dismissal state (unload,
@@ -160202,7 +160304,8 @@
   </summary>
 </histogram>
 
-<histogram name="XHR.Sync.PageDismissal" enum="XHRPageDismissalState">
+<histogram name="XHR.Sync.PageDismissal" enum="XHRPageDismissalState"
+    expires_after="M81">
   <owner>panicker@chromium.org</owner>
   <summary>
     Records occurence of sync XHR during page dismissal state (unload,
diff --git a/tools/metrics/ukm/ukm.xml b/tools/metrics/ukm/ukm.xml
index f7ddcb0a..7bd6fb9 100644
--- a/tools/metrics/ukm/ukm.xml
+++ b/tools/metrics/ukm/ukm.xml
@@ -6083,6 +6083,9 @@
     </summary>
   </metric>
   <metric name="Generation.SpecPriority">
+    <obsolete>
+      Deprecated 09/2019.
+    </obsolete>
     <summary>
       Reports the priority of a PasswordGenerationRequirementsSpec for a
       generated password. This can be used for debugging as a 0 means that no
@@ -6106,6 +6109,9 @@
     </summary>
   </metric>
   <metric name="ParsingComparison">
+    <obsolete>
+      Deprecated 09/2019.
+    </obsolete>
     <summary>
       Records comparison result of old and new password form parsing algorithms.
       Metric is recorded on a password form detection. Recorded values
@@ -6114,6 +6120,9 @@
     </summary>
   </metric>
   <metric name="ParsingOnSavingDifference">
+    <obsolete>
+      Deprecated 09/2019.
+    </obsolete>
     <summary>
       Records the comparison of the old and new password form parsing for
       saving. Multiple values from the
diff --git a/tools/perf/cli_tools/pinboard/pinboard.py b/tools/perf/cli_tools/pinboard/pinboard.py
index 28e48f2..9db33e06 100644
--- a/tools/perf/cli_tools/pinboard/pinboard.py
+++ b/tools/perf/cli_tools/pinboard/pinboard.py
@@ -35,16 +35,24 @@
 
 # Only these are exported and uploaded to the Cloud Storage dataset.
 MEASUREMENTS = set([
-    'memory:chrome:renderer_processes:reported_by_chrome:v8:effective_size',
+    # V8 metrics.
     'JavaScript:duration',
-    'Optimize:duration',
     'Optimize-Background:duration',
-    'Total:duration',
-    'V8-Only:duration',
+    'Optimize:duration',
+    'RunsPerMinute',
     'Total-Main-Thread:duration',
+    'Total:duration',
     'V8-Only-Main-Thread:duration',
+    'V8-Only:duration',
+    'memory:chrome:renderer_processes:reported_by_chrome:v8:effective_size',
     'total:500ms_window:renderer_eqt:v8',
-    'RunsPerMinute'
+
+    # Startup metrics.
+    'experimental_content_start_time',
+    'experimental_navigation_start_time',
+    'first_contentful_paint_time',
+    'messageloop_start_time',
+    'navigation_commit_time',
 ])
 
 # Compute averages over a fixed set of active stories. These may need to be
@@ -66,7 +74,8 @@
     'load:media:facebook_photos',
     'load:media:youtube:2018',
     'load:news:irctc',
-    'load:news:wikipedia:2018'
+    'load:news:wikipedia:2018',
+    'intent:coldish:bbc',
 ])
 
 
diff --git a/tools/perf/expectations.config b/tools/perf/expectations.config
index 9072a298..1751d377 100644
--- a/tools/perf/expectations.config
+++ b/tools/perf/expectations.config
@@ -314,6 +314,7 @@
 crbug.com/954949 [ android-nexus-5x android-webview ] system_health.common_mobile/browse:news:washingtonpost [ Skip ]
 crbug.com/961417 [ android-go ] system_health.common_mobile/browse:social:tumblr_infinite_scroll:2018 [ Skip ]
 crbug.com/979786 [ android-nexus-5x android-webview ] system_health.common_mobile/browse:news:cricbuzz [ Skip ]
+crbug.com/1002546 [ android ] system_health.common_mobile/background:news:nytimes [ Skip ]
 
 # Benchmark: system_health.memory_desktop
 crbug.com/984599 [ linux ] system_health.memory_desktop/long_running:tools:gmail-foreground [ Skip ]
diff --git a/ui/android/java/res/values-v17/styles.xml b/ui/android/java/res/values-v17/styles.xml
index 815ec29..cf42b1df 100644
--- a/ui/android/java/res/values-v17/styles.xml
+++ b/ui/android/java/res/values-v17/styles.xml
@@ -160,6 +160,11 @@
         <item name="android:textSize">@dimen/text_size_medium</item>
         <item name="android:textStyle">bold</item>
     </style>
+    <style name="TextAppearance.BlackToolbarTitle" tools:ignore="UnusedResources">
+        <item name="android:textColor">@color/default_text_color_secondary_list</item>
+        <item name="android:textSize">@dimen/text_size_large</item>
+        <item name="android:textStyle">bold</item>
+    </style>
 
     <!-- White Text Styles -->
     <style name="TextAppearance.WhiteHeadline" tools:ignore="UnusedResources">
diff --git a/ui/aura/window_tree_host_platform.cc b/ui/aura/window_tree_host_platform.cc
index 247c414..4d04060 100644
--- a/ui/aura/window_tree_host_platform.cc
+++ b/ui/aura/window_tree_host_platform.cc
@@ -18,6 +18,8 @@
 #include "ui/aura/window_tree_host_observer.h"
 #include "ui/base/layout.h"
 #include "ui/compositor/compositor.h"
+#include "ui/display/display.h"
+#include "ui/display/screen.h"
 #include "ui/events/event.h"
 #include "ui/events/keyboard_hook.h"
 #include "ui/events/keycodes/dom/dom_code.h"
@@ -273,4 +275,14 @@
 
 void WindowTreeHostPlatform::OnActivationChanged(bool active) {}
 
+void WindowTreeHostPlatform::OnMouseEnter() {
+  client::CursorClient* cursor_client = client::GetCursorClient(window());
+  if (cursor_client) {
+    auto display =
+        display::Screen::GetScreen()->GetDisplayNearestWindow(window());
+    DCHECK(display.is_valid());
+    cursor_client->SetDisplay(display);
+  }
+}
+
 }  // namespace aura
diff --git a/ui/aura/window_tree_host_platform.h b/ui/aura/window_tree_host_platform.h
index 7483b1f..a2af44f 100644
--- a/ui/aura/window_tree_host_platform.h
+++ b/ui/aura/window_tree_host_platform.h
@@ -79,6 +79,7 @@
   void OnAcceleratedWidgetAvailable(gfx::AcceleratedWidget widget) override;
   void OnAcceleratedWidgetDestroyed() override;
   void OnActivationChanged(bool active) override;
+  void OnMouseEnter() override;
 
   // Overridden from aura::WindowTreeHost:
   bool CaptureSystemKeyEventsImpl(
diff --git a/ui/compositor/layer.cc b/ui/compositor/layer.cc
index 9da2d35..bcf6c7f 100644
--- a/ui/compositor/layer.cc
+++ b/ui/compositor/layer.cc
@@ -668,10 +668,6 @@
   return layer == nullptr;
 }
 
-bool Layer::ShouldDraw() const {
-  return type_ != LAYER_NOT_DRAWN && GetCombinedOpacity() > 0.0f;
-}
-
 void Layer::SetRoundedCornerRadius(const gfx::RoundedCornersF& corner_radii) {
   GetAnimator()->SetRoundedCorners(corner_radii);
 }
diff --git a/ui/compositor/layer.h b/ui/compositor/layer.h
index 2e77a40e0..429d9f4b 100644
--- a/ui/compositor/layer.h
+++ b/ui/compositor/layer.h
@@ -296,10 +296,6 @@
   // are visible.
   bool IsDrawn() const;
 
-  // Returns true if this layer can have a texture (has_texture_ is true)
-  // and is not completely obscured by a child.
-  bool ShouldDraw() const;
-
   // If set to true, this layer can receive hit test events, this property does
   // not affect the layer's descendants.
   void SetAcceptEvents(bool accept_events);
diff --git a/ui/compositor/test/test_compositor_host_ozone.cc b/ui/compositor/test/test_compositor_host_ozone.cc
index 3efd045..7dbbe5c 100644
--- a/ui/compositor/test/test_compositor_host_ozone.cc
+++ b/ui/compositor/test/test_compositor_host_ozone.cc
@@ -50,6 +50,7 @@
     widget_ = gfx::kNullAcceleratedWidget;
   }
   void OnActivationChanged(bool active) override {}
+  void OnMouseEnter() override {}
 
  private:
   gfx::AcceleratedWidget widget_ = gfx::kNullAcceleratedWidget;
diff --git a/ui/gl/direct_composition_surface_win_unittest.cc b/ui/gl/direct_composition_surface_win_unittest.cc
index 141b9c7..82ad4be 100644
--- a/ui/gl/direct_composition_surface_win_unittest.cc
+++ b/ui/gl/direct_composition_surface_win_unittest.cc
@@ -44,6 +44,7 @@
   void OnAcceleratedWidgetAvailable(gfx::AcceleratedWidget widget) override {}
   void OnAcceleratedWidgetDestroyed() override {}
   void OnActivationChanged(bool active) override {}
+  void OnMouseEnter() override {}
 };
 
 void RunPendingTasks(scoped_refptr<base::TaskRunner> task_runner) {
diff --git a/ui/gl/gl_surface_egl_unittest.cc b/ui/gl/gl_surface_egl_unittest.cc
index 8d9af305..cb7a861b 100644
--- a/ui/gl/gl_surface_egl_unittest.cc
+++ b/ui/gl/gl_surface_egl_unittest.cc
@@ -81,6 +81,7 @@
   void OnAcceleratedWidgetAvailable(gfx::AcceleratedWidget widget) override {}
   void OnAcceleratedWidgetDestroyed() override {}
   void OnActivationChanged(bool active) override {}
+  void OnMouseEnter() override {}
 };
 
 TEST_F(GLSurfaceEGLTest, FixedSizeExtension) {
diff --git a/ui/ozone/demo/demo_window.cc b/ui/ozone/demo/demo_window.cc
index 08913f3..caf78c2 100644
--- a/ui/ozone/demo/demo_window.cc
+++ b/ui/ozone/demo/demo_window.cc
@@ -69,6 +69,8 @@
   StartRendererIfNecessary();
 }
 
+void DemoWindow::OnMouseEnter() {}
+
 void DemoWindow::OnDamageRect(const gfx::Rect& damaged_region) {}
 
 void DemoWindow::DispatchEvent(Event* event) {
diff --git a/ui/ozone/demo/demo_window.h b/ui/ozone/demo/demo_window.h
index 5abe21f..9514366f 100644
--- a/ui/ozone/demo/demo_window.h
+++ b/ui/ozone/demo/demo_window.h
@@ -45,6 +45,7 @@
   void OnAcceleratedWidgetAvailable(gfx::AcceleratedWidget widget) override;
   void OnAcceleratedWidgetDestroyed() override;
   void OnActivationChanged(bool active) override;
+  void OnMouseEnter() override;
 
  private:
   // Since we pretend to have a GPU process, we should also pretend to
diff --git a/ui/ozone/platform/drm/host/drm_window_host.cc b/ui/ozone/platform/drm/host/drm_window_host.cc
index 2abe167..7e8d57a 100644
--- a/ui/ozone/platform/drm/host/drm_window_host.cc
+++ b/ui/ozone/platform/drm/host/drm_window_host.cc
@@ -144,6 +144,10 @@
   return gfx::Rect();
 }
 
+void DrmWindowHost::OnMouseEnter() {
+  delegate_->OnMouseEnter();
+}
+
 bool DrmWindowHost::CanDispatchEvent(const PlatformEvent& event) {
   DCHECK(event);
 
@@ -190,6 +194,14 @@
   if (event->IsLocatedEvent()) {
     // Make the event location relative to this window's origin.
     LocatedEvent* located_event = event->AsLocatedEvent();
+
+    if (event->IsMouseEvent()) {
+      DrmWindowHost* window_on_mouse =
+          window_manager_->GetWindowAt(located_event->location());
+      if (window_on_mouse)
+        window_manager_->MouseOnWindow(window_on_mouse);
+    }
+
     gfx::PointF location = located_event->location_f();
     location -= gfx::Vector2dF(bounds_.OffsetFromOrigin());
     located_event->set_location_f(location);
diff --git a/ui/ozone/platform/drm/host/drm_window_host.h b/ui/ozone/platform/drm/host/drm_window_host.h
index 7601afa0..8624a57 100644
--- a/ui/ozone/platform/drm/host/drm_window_host.h
+++ b/ui/ozone/platform/drm/host/drm_window_host.h
@@ -81,6 +81,7 @@
   void ConfineCursorToBounds(const gfx::Rect& bounds) override;
   void SetRestoredBoundsInPixels(const gfx::Rect& bounds) override;
   gfx::Rect GetRestoredBoundsInPixels() const override;
+  void OnMouseEnter();
 
   // PlatformEventDispatcher:
   bool CanDispatchEvent(const PlatformEvent& event) override;
diff --git a/ui/ozone/platform/drm/host/drm_window_host_manager.cc b/ui/ozone/platform/drm/host/drm_window_host_manager.cc
index 4aad9162..14c2d468 100644
--- a/ui/ozone/platform/drm/host/drm_window_host_manager.cc
+++ b/ui/ozone/platform/drm/host/drm_window_host_manager.cc
@@ -30,10 +30,13 @@
 
 void DrmWindowHostManager::RemoveWindow(gfx::AcceleratedWidget widget) {
   WidgetToWindowMap::iterator it = window_map_.find(widget);
-  if (it != window_map_.end())
+  if (it != window_map_.end()) {
+    if (window_mouse_currently_on_ == it->second)
+      window_mouse_currently_on_ = nullptr;
     window_map_.erase(it);
-  else
+  } else {
     NOTREACHED() << "Attempting to remove non-existing window " << widget;
+  }
 
   if (event_grabber_ == widget)
     event_grabber_ = gfx::kNullAcceleratedWidget;
@@ -73,4 +76,11 @@
   event_grabber_ = gfx::kNullAcceleratedWidget;
 }
 
+void DrmWindowHostManager::MouseOnWindow(DrmWindowHost* window) {
+  if (window_mouse_currently_on_ == window)
+    return;
+  window_mouse_currently_on_ = window;
+  window->OnMouseEnter();
+}
+
 }  // namespace ui
diff --git a/ui/ozone/platform/drm/host/drm_window_host_manager.h b/ui/ozone/platform/drm/host/drm_window_host_manager.h
index dee2ace..d77d7d4 100644
--- a/ui/ozone/platform/drm/host/drm_window_host_manager.h
+++ b/ui/ozone/platform/drm/host/drm_window_host_manager.h
@@ -53,6 +53,9 @@
   // Unsets a given widget as the recipient for events.
   void UngrabEvents(gfx::AcceleratedWidget widget);
 
+  // Called when a mouse physicall moved into the |window|.
+  void MouseOnWindow(DrmWindowHost* window);
+
   // Gets the current widget recipient of mouse events.
   gfx::AcceleratedWidget event_grabber() const { return event_grabber_; }
 
@@ -61,6 +64,7 @@
 
   gfx::AcceleratedWidget last_allocated_widget_ = 0;
   WidgetToWindowMap window_map_;
+  DrmWindowHost* window_mouse_currently_on_ = nullptr;
 
   gfx::AcceleratedWidget event_grabber_ = gfx::kNullAcceleratedWidget;
 
diff --git a/ui/ozone/platform/x11/x11_window_manager_ozone.cc b/ui/ozone/platform/x11/x11_window_manager_ozone.cc
index 6a50b079..3da2e8e 100644
--- a/ui/ozone/platform/x11/x11_window_manager_ozone.cc
+++ b/ui/ozone/platform/x11/x11_window_manager_ozone.cc
@@ -43,6 +43,8 @@
   DCHECK_NE(gfx::kNullAcceleratedWidget, window->widget());
   auto it = windows_.find(window->widget());
   DCHECK(it != windows_.end());
+  if (window_mouse_currently_on_ == it->second)
+    window_mouse_currently_on_ = nullptr;
   windows_.erase(it);
 }
 
@@ -53,4 +55,12 @@
   return it != windows_.end() ? it->second : nullptr;
 }
 
+void X11WindowManagerOzone::MouseOnWindow(X11WindowOzone* window) {
+  if (window_mouse_currently_on_ == window)
+    return;
+
+  window_mouse_currently_on_ = window;
+  window->OnMouseEnter();
+}
+
 }  // namespace ui
diff --git a/ui/ozone/platform/x11/x11_window_manager_ozone.h b/ui/ozone/platform/x11/x11_window_manager_ozone.h
index 05051a6..d492ebb 100644
--- a/ui/ozone/platform/x11/x11_window_manager_ozone.h
+++ b/ui/ozone/platform/x11/x11_window_manager_ozone.h
@@ -34,8 +34,15 @@
   void RemoveWindow(X11WindowOzone* window);
   X11WindowOzone* GetWindow(gfx::AcceleratedWidget widget) const;
 
+  void MouseOnWindow(X11WindowOzone* delegate);
+
+  const X11WindowOzone* window_mouse_currently_on_for_test() const {
+    return window_mouse_currently_on_;
+  }
+
  private:
   X11WindowOzone* event_grabber_;
+  X11WindowOzone* window_mouse_currently_on_ = nullptr;
 
   base::flat_map<gfx::AcceleratedWidget, X11WindowOzone*> windows_;
 
diff --git a/ui/ozone/platform/x11/x11_window_ozone.cc b/ui/ozone/platform/x11/x11_window_ozone.cc
index b88ce99..fae825f 100644
--- a/ui/ozone/platform/x11/x11_window_ozone.cc
+++ b/ui/ozone/platform/x11/x11_window_ozone.cc
@@ -82,6 +82,10 @@
   XWindow::SetCursor(cursor_ozone->xcursor());
 }
 
+void X11WindowOzone::OnMouseEnter() {
+  platform_window_delegate()->OnMouseEnter();
+}
+
 void X11WindowOzone::RemoveFromWindowManager() {
   DCHECK(window_manager_);
   if (widget_ != gfx::kNullAcceleratedWidget) {
@@ -125,6 +129,9 @@
 uint32_t X11WindowOzone::DispatchEvent(const PlatformEvent& event) {
   DCHECK_NE(XWindow::window(), x11::None);
 
+  if (event->IsMouseEvent() && handle_next_event_)
+    window_manager_->MouseOnWindow(this);
+
   if (!window_manager_->event_grabber() ||
       window_manager_->event_grabber() == this) {
     // This is unfortunately needed otherwise events that depend on global state
diff --git a/ui/ozone/platform/x11/x11_window_ozone.h b/ui/ozone/platform/x11/x11_window_ozone.h
index 8b66d6ef..4496935 100644
--- a/ui/ozone/platform/x11/x11_window_ozone.h
+++ b/ui/ozone/platform/x11/x11_window_ozone.h
@@ -46,6 +46,8 @@
   bool HasCapture() const override;
   void SetCursor(PlatformCursor cursor) override;
 
+  void OnMouseEnter();
+
   // Overridden from ui::XEventDispatcher:
   void CheckCanDispatchNextPlatformEvent(XEvent* xev) override;
   void PlatformEventDispatchFinished() override;
diff --git a/ui/ozone/platform/x11/x11_window_ozone_unittest.cc b/ui/ozone/platform/x11/x11_window_ozone_unittest.cc
index 0d11004..1a393e9 100644
--- a/ui/ozone/platform/x11/x11_window_ozone_unittest.cc
+++ b/ui/ozone/platform/x11/x11_window_ozone_unittest.cc
@@ -180,4 +180,33 @@
   EXPECT_EQ(nullptr, window_manager()->GetWindow(widget_2));
 }
 
+// This test case ensures that OnMouseEnter is called once when a mouse location
+// moved to the window, and |window_mouse_currently_on_| is properly reset when
+// the window is deleted.
+TEST_F(X11WindowOzoneTest, MouseEnterAndDelete) {
+  gfx::Rect bounds_1(0, 0, 100, 100);
+  MockPlatformWindowDelegate delegate_1;
+  gfx::AcceleratedWidget widget_1;
+  auto window_1 = CreatePlatformWindow(&delegate_1, bounds_1, &widget_1);
+
+  MockPlatformWindowDelegate delegate_2;
+  gfx::AcceleratedWidget widget_2;
+  gfx::Rect bounds_2(0, 100, 100, 100);
+  auto window_2 = CreatePlatformWindow(&delegate_2, bounds_2, &widget_2);
+
+  EXPECT_CALL(delegate_1, OnMouseEnter()).Times(1);
+  window_manager()->MouseOnWindow(static_cast<X11WindowOzone*>(window_1.get()));
+  // The mouse is already on window_1, and this should not call OnMouseEnter.
+  window_manager()->MouseOnWindow(static_cast<X11WindowOzone*>(window_1.get()));
+
+  EXPECT_CALL(delegate_2, OnMouseEnter()).Times(1);
+  window_manager()->MouseOnWindow(static_cast<X11WindowOzone*>(window_2.get()));
+
+  // Removing the window should reset the |window_mouse_currently_on_|.
+  EXPECT_EQ(window_2.get(),
+            window_manager()->window_mouse_currently_on_for_test());
+  window_2.reset();
+  EXPECT_FALSE(window_manager()->window_mouse_currently_on_for_test());
+}
+
 }  // namespace ui
diff --git a/ui/ozone/test/mock_platform_window_delegate.h b/ui/ozone/test/mock_platform_window_delegate.h
index 8ace6bb..21ab4f3 100644
--- a/ui/ozone/test/mock_platform_window_delegate.h
+++ b/ui/ozone/test/mock_platform_window_delegate.h
@@ -27,6 +27,7 @@
                void(gfx::AcceleratedWidget widget));
   MOCK_METHOD0(OnAcceleratedWidgetDestroyed, void());
   MOCK_METHOD1(OnActivationChanged, void(bool active));
+  MOCK_METHOD0(OnMouseEnter, void());
 
  private:
   DISALLOW_COPY_AND_ASSIGN(MockPlatformWindowDelegate);
diff --git a/ui/platform_window/platform_window_delegate_base.h b/ui/platform_window/platform_window_delegate_base.h
index e76ae56..9bc0782 100644
--- a/ui/platform_window/platform_window_delegate_base.h
+++ b/ui/platform_window/platform_window_delegate_base.h
@@ -61,6 +61,11 @@
   // Requests size constraints for the PlatformWindow.
   virtual base::Optional<gfx::Size> GetMinimumSizeForWindow();
   virtual base::Optional<gfx::Size> GetMaximumSizeForWindow();
+
+  // Called when the location of mouse pointer entered the window.  This is
+  // different from ui::ET_MOUSE_ENTERED which may not be generated when mouse
+  // is captured either by implicitly or explicitly.
+  virtual void OnMouseEnter() = 0;
 };
 
 }  // namespace ui
diff --git a/ui/views/controls/throbber.cc b/ui/views/controls/throbber.cc
index 44bd36d..90231f3 100644
--- a/ui/views/controls/throbber.cc
+++ b/ui/views/controls/throbber.cc
@@ -97,15 +97,9 @@
 
 // Smoothed throbber ---------------------------------------------------------
 
-// Delay after work starts before starting throbber, in milliseconds.
-static constexpr int kStartDelay = 200;
-
-// Delay after work stops before stopping, in milliseconds.
-static constexpr int kStopDelay = 50;
-
 SmoothedThrobber::SmoothedThrobber()
-    : start_delay_ms_(kStartDelay), stop_delay_ms_(kStopDelay) {
-}
+    : start_delay_(base::TimeDelta::FromMilliseconds(200)),
+      stop_delay_(base::TimeDelta::FromMilliseconds(50)) {}
 
 SmoothedThrobber::~SmoothedThrobber() = default;
 
@@ -113,8 +107,7 @@
   stop_timer_.Stop();
 
   if (!IsRunning() && !start_timer_.IsRunning()) {
-    start_timer_.Start(FROM_HERE,
-                       base::TimeDelta::FromMilliseconds(start_delay_ms_), this,
+    start_timer_.Start(FROM_HERE, start_delay_, this,
                        &SmoothedThrobber::StartDelayOver);
   }
 }
@@ -128,31 +121,30 @@
     start_timer_.Stop();
 
   stop_timer_.Stop();
-  stop_timer_.Start(FROM_HERE,
-                    base::TimeDelta::FromMilliseconds(stop_delay_ms_), this,
+  stop_timer_.Start(FROM_HERE, stop_delay_, this,
                     &SmoothedThrobber::StopDelayOver);
 }
 
-int SmoothedThrobber::GetStartDelayMs() const {
-  return start_delay_ms_;
+base::TimeDelta SmoothedThrobber::GetStartDelay() const {
+  return start_delay_;
 }
 
-void SmoothedThrobber::SetStartDelayMs(int start_delay_ms) {
-  if (start_delay_ms == start_delay_ms_)
+void SmoothedThrobber::SetStartDelay(const base::TimeDelta& start_delay) {
+  if (start_delay == start_delay_)
     return;
-  start_delay_ms_ = start_delay_ms;
-  OnPropertyChanged(&start_delay_ms_, kPropertyEffectsNone);
+  start_delay_ = start_delay;
+  OnPropertyChanged(&start_delay_, kPropertyEffectsNone);
 }
 
-int SmoothedThrobber::GetStopDelayMs() const {
-  return stop_delay_ms_;
+base::TimeDelta SmoothedThrobber::GetStopDelay() const {
+  return stop_delay_;
 }
 
-void SmoothedThrobber::SetStopDelayMs(int stop_delay_ms) {
-  if (stop_delay_ms == stop_delay_ms_)
+void SmoothedThrobber::SetStopDelay(const base::TimeDelta& stop_delay) {
+  if (stop_delay == stop_delay_)
     return;
-  stop_delay_ms_ = stop_delay_ms;
-  OnPropertyChanged(&stop_delay_ms_, kPropertyEffectsNone);
+  stop_delay_ = stop_delay;
+  OnPropertyChanged(&stop_delay_, kPropertyEffectsNone);
 }
 
 void SmoothedThrobber::StopDelayOver() {
@@ -161,8 +153,8 @@
 
 BEGIN_METADATA(SmoothedThrobber)
 METADATA_PARENT_CLASS(Throbber)
-ADD_PROPERTY_METADATA(SmoothedThrobber, int, StartDelayMs)
-ADD_PROPERTY_METADATA(SmoothedThrobber, int, StopDelayMs)
+ADD_PROPERTY_METADATA(SmoothedThrobber, base::TimeDelta, StartDelay)
+ADD_PROPERTY_METADATA(SmoothedThrobber, base::TimeDelta, StopDelay)
 END_METADATA()
 
 }  // namespace views
diff --git a/ui/views/controls/throbber.h b/ui/views/controls/throbber.h
index 2b19d996..ff27172 100644
--- a/ui/views/controls/throbber.h
+++ b/ui/views/controls/throbber.h
@@ -61,11 +61,11 @@
   void Start() override;
   void Stop() override;
 
-  int GetStartDelayMs() const;
-  void SetStartDelayMs(int start_delay_ms);
+  base::TimeDelta GetStartDelay() const;
+  void SetStartDelay(const base::TimeDelta& start_delay);
 
-  int GetStopDelayMs() const;
-  void SetStopDelayMs(int stop_delay_ms);
+  base::TimeDelta GetStopDelay() const;
+  void SetStopDelay(const base::TimeDelta& stop_delay);
 
  private:
   // Called when the startup-delay timer fires
@@ -76,11 +76,11 @@
   // This function stops the actual throbbing.
   void StopDelayOver();
 
-  // Delay after work starts before starting throbber, in milliseconds.
-  int start_delay_ms_;
+  // Delay after work starts before starting throbber.
+  base::TimeDelta start_delay_;
 
-  // Delay after work stops before stopping, in milliseconds.
-  int stop_delay_ms_;
+  // Delay after work stops before stopping.
+  base::TimeDelta stop_delay_;
 
   base::OneShotTimer start_timer_;
   base::OneShotTimer stop_timer_;
diff --git a/ui/views/metadata/type_conversion.cc b/ui/views/metadata/type_conversion.cc
index b165b286..f1fbb6f 100644
--- a/ui/views/metadata/type_conversion.cc
+++ b/ui/views/metadata/type_conversion.cc
@@ -45,10 +45,8 @@
   return base::ASCIIToUTF16(source_value ? "true" : "false");
 }
 
-base::string16 TypeConverter<gfx::Size>::ToString(
-    const gfx::Size& source_value) {
-  return base::ASCIIToUTF16(base::StringPrintf("{%i, %i}", source_value.width(),
-                                               source_value.height()));
+base::string16 TypeConverter<const char*>::ToString(const char* source_value) {
+  return base::UTF8ToUTF16(source_value);
 }
 
 base::string16 TypeConverter<base::string16>::ToString(
@@ -56,8 +54,10 @@
   return source_value;
 }
 
-base::string16 TypeConverter<const char*>::ToString(const char* source_value) {
-  return base::UTF8ToUTF16(source_value);
+base::string16 TypeConverter<base::TimeDelta>::ToString(
+    const base::TimeDelta& source_value) {
+  return base::NumberToString16(source_value.InSecondsF()) +
+         base::ASCIIToUTF16(" s");
 }
 
 base::string16 TypeConverter<gfx::ShadowValues>::ToString(
@@ -72,6 +72,12 @@
   return ret;
 }
 
+base::string16 TypeConverter<gfx::Size>::ToString(
+    const gfx::Size& source_value) {
+  return base::ASCIIToUTF16(base::StringPrintf("{%i, %i}", source_value.width(),
+                                               source_value.height()));
+}
+
 base::string16 TypeConverter<gfx::Range>::ToString(
     const gfx::Range& source_value) {
   return base::ASCIIToUTF16(base::StringPrintf(
@@ -170,24 +176,23 @@
   return base::nullopt;
 }
 
-base::Optional<gfx::Size> TypeConverter<gfx::Size>::FromString(
-    const base::string16& source_value) {
-  const auto values =
-      base::SplitStringPiece(source_value, base::ASCIIToUTF16("{,}"),
-                             base::TRIM_WHITESPACE, base::SPLIT_WANT_NONEMPTY);
-  int width, height;
-  if ((values.size() == 2) && base::StringToInt(values[0], &width) &&
-      base::StringToInt(values[1], &height)) {
-    return gfx::Size(width, height);
-  }
-  return base::nullopt;
-}
-
 base::Optional<base::string16> TypeConverter<base::string16>::FromString(
     const base::string16& source_value) {
   return source_value;
 }
 
+base::Optional<base::TimeDelta> TypeConverter<base::TimeDelta>::FromString(
+    const base::string16& source_value) {
+  if (!base::EndsWith(source_value, base::ASCIIToUTF16(" s"),
+                      base::CompareCase::SENSITIVE))
+    return base::nullopt;
+  double ret;
+  return base::StringToDouble(source_value.substr(0, source_value.length() - 2),
+                              &ret)
+             ? base::make_optional(base::TimeDelta::FromSecondsD(ret))
+             : base::nullopt;
+}
+
 base::Optional<gfx::ShadowValues> TypeConverter<gfx::ShadowValues>::FromString(
     const base::string16& source_value) {
   gfx::ShadowValues ret;
@@ -216,6 +221,19 @@
   return ret;
 }
 
+base::Optional<gfx::Size> TypeConverter<gfx::Size>::FromString(
+    const base::string16& source_value) {
+  const auto values =
+      base::SplitStringPiece(source_value, base::ASCIIToUTF16("{,}"),
+                             base::TRIM_WHITESPACE, base::SPLIT_WANT_NONEMPTY);
+  int width, height;
+  if ((values.size() == 2) && base::StringToInt(values[0], &width) &&
+      base::StringToInt(values[1], &height)) {
+    return gfx::Size(width, height);
+  }
+  return base::nullopt;
+}
+
 base::Optional<gfx::Range> TypeConverter<gfx::Range>::FromString(
     const base::string16& source_value) {
   const auto values =
diff --git a/ui/views/metadata/type_conversion.h b/ui/views/metadata/type_conversion.h
index 347f249..d4368590 100644
--- a/ui/views/metadata/type_conversion.h
+++ b/ui/views/metadata/type_conversion.h
@@ -15,6 +15,7 @@
 #include "base/strings/stringprintf.h"
 #include "base/strings/sys_string_conversions.h"
 #include "base/strings/utf_string_conversions.h"
+#include "base/time/time.h"
 #include "ui/gfx/geometry/size.h"
 #include "ui/gfx/range/range.h"
 #include "ui/gfx/shadow_value.h"
@@ -113,10 +114,11 @@
 DECLARE_CONVERSIONS(float)
 DECLARE_CONVERSIONS(double)
 DECLARE_CONVERSIONS(bool)
-DECLARE_CONVERSIONS(gfx::Size)
-DECLARE_CONVERSIONS(base::string16)
 DECLARE_CONVERSIONS(const char*)
+DECLARE_CONVERSIONS(base::string16)
+DECLARE_CONVERSIONS(base::TimeDelta)
 DECLARE_CONVERSIONS(gfx::ShadowValues)
+DECLARE_CONVERSIONS(gfx::Size)
 DECLARE_CONVERSIONS(gfx::Range)
 
 #undef DECLARE_CONVERSIONS
diff --git a/ui/webui/resources/cr_elements/BUILD.gn b/ui/webui/resources/cr_elements/BUILD.gn
index eb830f8e..fd13eb9 100644
--- a/ui/webui/resources/cr_elements/BUILD.gn
+++ b/ui/webui/resources/cr_elements/BUILD.gn
@@ -45,6 +45,7 @@
     "cr_tabs:closure_compile_module",
     "cr_toast:closure_compile_module",
     "cr_toggle:closure_compile_module",
+    "cr_toolbar:closure_compile_module",
     "cr_view_manager:closure_compile_module",
     "policy:closure_compile_module",
   ]
@@ -148,6 +149,9 @@
     "cr_tabs:cr_tabs_module",
     "cr_toast:cr_toast_module",
     "cr_toggle:cr_toggle_module",
+    "cr_toolbar:cr_toolbar_module",
+    "cr_toolbar:cr_toolbar_search_field_module",
+    "cr_toolbar:cr_toolbar_selection_overlay_module",
     "cr_view_manager:cr_view_manager_module",
     "policy:cr_tooltip_icon_module",
   ]
diff --git a/ui/webui/resources/cr_elements/cr_toolbar/BUILD.gn b/ui/webui/resources/cr_elements/cr_toolbar/BUILD.gn
index 385c0cd..1ca2ad13 100644
--- a/ui/webui/resources/cr_elements/cr_toolbar/BUILD.gn
+++ b/ui/webui/resources/cr_elements/cr_toolbar/BUILD.gn
@@ -3,6 +3,7 @@
 # found in the LICENSE file.
 
 import("//third_party/closure_compiler/compile_js.gni")
+import("//tools/polymer/polymer.gni")
 
 js_type_check("closure_compile") {
   deps = [
@@ -27,3 +28,66 @@
   ]
   externs_list = [ "$externs_path/web_animations.js" ]
 }
+
+polymer_modulizer("cr_toolbar") {
+  js_file = "cr_toolbar.js"
+  html_file = "cr_toolbar.html"
+  html_type = "dom-module"
+  auto_imports =
+      [ "ui/webui/resources/html/polymer.html|afterNextRender,html,Polymer" ]
+  namespace_rewrites =
+      [ "Polymer.RenderStatus.afterNextRender|afterNextRender" ]
+}
+
+polymer_modulizer("cr_toolbar_search_field") {
+  js_file = "cr_toolbar_search_field.js"
+  html_file = "cr_toolbar_search_field.html"
+  html_type = "dom-module"
+  auto_imports = [ "ui/webui/resources/cr_elements/cr_search_field/cr_search_field_behavior.html|CrSearchFieldBehavior" ]
+}
+
+polymer_modulizer("cr_toolbar_selection_overlay") {
+  js_file = "cr_toolbar_selection_overlay.js"
+  html_file = "cr_toolbar_selection_overlay.html"
+  html_type = "dom-module"
+}
+
+js_type_check("closure_compile_module") {
+  is_polymer3 = true
+  deps = [
+    ":cr_toolbar.m",
+    ":cr_toolbar_search_field.m",
+    ":cr_toolbar_selection_overlay.m",
+  ]
+}
+
+js_library("cr_toolbar.m") {
+  sources = [
+    "$root_gen_dir/ui/webui/resources/cr_elements/cr_toolbar/cr_toolbar.m.js",
+  ]
+  deps = [
+    "//third_party/polymer/v3_0/components-chromium/polymer:polymer_bundled",
+  ]
+  extra_deps = [ ":cr_toolbar_module" ]
+}
+
+js_library("cr_toolbar_search_field.m") {
+  sources = [
+    "$root_gen_dir/ui/webui/resources/cr_elements/cr_toolbar/cr_toolbar_search_field.m.js",
+  ]
+  deps = [
+    "//third_party/polymer/v3_0/components-chromium/polymer:polymer_bundled",
+    "//ui/webui/resources/cr_elements/cr_search_field:cr_search_field_behavior.m",
+  ]
+  extra_deps = [ ":cr_toolbar_search_field_module" ]
+}
+
+js_library("cr_toolbar_selection_overlay.m") {
+  sources = [
+    "$root_gen_dir/ui/webui/resources/cr_elements/cr_toolbar/cr_toolbar_selection_overlay.m.js",
+  ]
+  deps = [
+    "//third_party/polymer/v3_0/components-chromium/polymer:polymer_bundled",
+  ]
+  extra_deps = [ ":cr_toolbar_selection_overlay_module" ]
+}
diff --git a/ui/webui/resources/cr_elements/cr_toolbar/cr_toolbar.js b/ui/webui/resources/cr_elements/cr_toolbar/cr_toolbar.js
index f47d2d7..a12fae1 100644
--- a/ui/webui/resources/cr_elements/cr_toolbar/cr_toolbar.js
+++ b/ui/webui/resources/cr_elements/cr_toolbar/cr_toolbar.js
@@ -70,7 +70,7 @@
 
   /** @return {!CrToolbarSearchFieldElement} */
   getSearchField: function() {
-    return this.$.search;
+    return /** @type {!CrToolbarSearchFieldElement} */ (this.$.search);
   },
 
   /** @private */
diff --git a/ui/webui/resources/cr_elements/cr_toolbar/cr_toolbar_search_field.js b/ui/webui/resources/cr_elements/cr_toolbar/cr_toolbar_search_field.js
index cef431c..ae9a1ede 100644
--- a/ui/webui/resources/cr_elements/cr_toolbar/cr_toolbar_search_field.js
+++ b/ui/webui/resources/cr_elements/cr_toolbar/cr_toolbar_search_field.js
@@ -48,7 +48,7 @@
 
   /** @return {!HTMLInputElement} */
   getSearchInput: function() {
-    return this.$.searchInput;
+    return /** @type {!HTMLInputElement} */ (this.$.searchInput);
   },
 
   /** @return {boolean} */
diff --git a/ui/webui/resources/cr_elements_resources_v3.grdp b/ui/webui/resources/cr_elements_resources_v3.grdp
index 04a536e5..6f7363d 100644
--- a/ui/webui/resources/cr_elements_resources_v3.grdp
+++ b/ui/webui/resources/cr_elements_resources_v3.grdp
@@ -106,6 +106,21 @@
          use_base_dir="false"
          type="BINDATA"
          compress="gzip" />
+  <include name="IDR_CR_ELEMENTS_CR_TOOLBAR_M_JS"
+         file="${root_gen_dir}/ui/webui/resources/cr_elements/cr_toolbar/cr_toolbar.m.js"
+         use_base_dir="false"
+         type="BINDATA"
+         compress="gzip" />
+  <include name="IDR_CR_ELEMENTS_CR_TOOLBAR_SEARCH_FIELD_M_JS"
+         file="${root_gen_dir}/ui/webui/resources/cr_elements/cr_toolbar/cr_toolbar_search_field.m.js"
+         use_base_dir="false"
+         type="BINDATA"
+         compress="gzip" />
+  <include name="IDR_CR_ELEMENTS_CR_TOOLBAR_SELECTION_OVERLAY_M_JS"
+         file="${root_gen_dir}/ui/webui/resources/cr_elements/cr_toolbar/cr_toolbar_selection_overlay.m.js"
+         use_base_dir="false"
+         type="BINDATA"
+         compress="gzip" />
   <include name="IDR_CR_ELEMENTS_CR_TOOLTIP_ICON_M_JS"
          file="${root_gen_dir}/ui/webui/resources/cr_elements/policy/cr_tooltip_icon.m.js"
          use_base_dir="false"
diff --git a/ui/webui/resources/js/icon.js b/ui/webui/resources/js/icon.js
index 2ade7c1..123caae 100644
--- a/ui/webui/resources/js/icon.js
+++ b/ui/webui/resources/js/icon.js
@@ -41,14 +41,8 @@
     // http://www.w3.org/TR/css3-values/#uris
     // Parentheses, commas, whitespace characters, single quotes (') and double
     // quotes (") appearing in a URI must be escaped with a backslash
-    let s2 = s.replace(/(\(|\)|\,|\s|\'|\"|\\)/g, '\\$1');
-    // WebKit has a bug when it comes to URLs that end with \
-    // https://bugs.webkit.org/show_bug.cgi?id=28885
-    if (/\\\\$/.test(s2)) {
-      // Add a space to work around the WebKit bug.
-      s2 += ' ';
-    }
-    return 'url("' + s2 + '")';
+    const s2 = s.replace(/(\(|\)|\,|\s|\'|\"|\\)/g, '\\$1');
+    return `url("${s2}")`;
   }
 
   /**
diff --git a/weblayer/public/java/BUILD.gn b/weblayer/public/java/BUILD.gn
index cd6e1824..02ab5b77 100644
--- a/weblayer/public/java/BUILD.gn
+++ b/weblayer/public/java/BUILD.gn
@@ -12,6 +12,7 @@
     "org/chromium/weblayer/Navigation.java",
     "org/chromium/weblayer/NavigationController.java",
     "org/chromium/weblayer/NavigationObserver.java",
+    "org/chromium/weblayer/ObserverList.java",
     "org/chromium/weblayer/Profile.java",
     "org/chromium/weblayer/WebLayer.java",
   ]
diff --git a/weblayer/public/java/org/chromium/weblayer/BrowserController.java b/weblayer/public/java/org/chromium/weblayer/BrowserController.java
index 1a2a909..453f031 100644
--- a/weblayer/public/java/org/chromium/weblayer/BrowserController.java
+++ b/weblayer/public/java/org/chromium/weblayer/BrowserController.java
@@ -14,15 +14,12 @@
 import org.chromium.weblayer_private.aidl.IBrowserControllerClient;
 import org.chromium.weblayer_private.aidl.ObjectWrapper;
 
-import java.util.concurrent.CopyOnWriteArrayList;
-
 public final class BrowserController {
     private static final String TAG = "WL_BrowserController";
 
     private final IBrowserController mImpl;
     private final NavigationController mNavigationController;
-    // TODO(sky): copy ObserverList from base and use it instead.
-    private final CopyOnWriteArrayList<BrowserObserver> mObservers;
+    private final ObserverList<BrowserObserver> mObservers;
 
     public BrowserController(IBrowserController impl) {
         mImpl = impl;
@@ -33,7 +30,7 @@
             throw new AndroidRuntimeException(e);
         }
 
-        mObservers = new CopyOnWriteArrayList<BrowserObserver>();
+        mObservers = new ObserverList<BrowserObserver>();
         mNavigationController = NavigationController.create(mImpl);
     }
 
@@ -56,11 +53,11 @@
     }
 
     public void addObserver(BrowserObserver observer) {
-        mObservers.add(observer);
+        mObservers.addObserver(observer);
     }
 
     public void removeObserver(BrowserObserver observer) {
-        mObservers.remove(observer);
+        mObservers.removeObserver(observer);
     }
 
     public void destroy() {
diff --git a/weblayer/public/java/org/chromium/weblayer/NavigationController.java b/weblayer/public/java/org/chromium/weblayer/NavigationController.java
index 9f05c67..3514e53 100644
--- a/weblayer/public/java/org/chromium/weblayer/NavigationController.java
+++ b/weblayer/public/java/org/chromium/weblayer/NavigationController.java
@@ -15,16 +15,13 @@
 import org.chromium.weblayer_private.aidl.INavigationController;
 import org.chromium.weblayer_private.aidl.INavigationControllerClient;
 
-import java.util.concurrent.CopyOnWriteArrayList;
-
 /**
  * Provides methods to control navigation, along with maintaining the current list of navigations.
  */
 public final class NavigationController {
     private static final String TAG = "WebLayer";
     private INavigationController mNavigationController;
-    // TODO(sky): copy ObserverList from base and use it instead.
-    private final CopyOnWriteArrayList<NavigationObserver> mObservers;
+    private final ObserverList<NavigationObserver> mObservers;
 
     static NavigationController create(IBrowserController browserController) {
         NavigationController navigationController = new NavigationController();
@@ -40,7 +37,7 @@
     }
 
     private NavigationController() {
-        mObservers = new CopyOnWriteArrayList<NavigationObserver>();
+        mObservers = new ObserverList<NavigationObserver>();
     }
 
     public void navigate(Uri uri) {
@@ -116,11 +113,11 @@
     }
 
     public void addObserver(NavigationObserver observer) {
-        mObservers.add(observer);
+        mObservers.addObserver(observer);
     }
 
     public void removeObserver(NavigationObserver observer) {
-        mObservers.remove(observer);
+        mObservers.removeObserver(observer);
     }
 
     private final class NavigationControllerClientImpl extends INavigationControllerClient.Stub {
diff --git a/weblayer/public/java/org/chromium/weblayer/ObserverList.java b/weblayer/public/java/org/chromium/weblayer/ObserverList.java
new file mode 100644
index 0000000..e320f2b
--- /dev/null
+++ b/weblayer/public/java/org/chromium/weblayer/ObserverList.java
@@ -0,0 +1,246 @@
+// Copyright 2013 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+package org.chromium.weblayer;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import java.util.NoSuchElementException;
+
+/**
+ * A container for a list of observers.
+ * <p/>
+ * This container can be modified during iteration without invalidating the iterator.
+ * So, it safely handles the case of an observer removing itself or other observers from the list
+ * while observers are being notified.
+ * <p/>
+ * The implementation (and the interface) is heavily influenced by the C++ ObserverList.
+ * Notable differences:
+ *   - The iterator implements NOTIFY_EXISTING_ONLY.
+ *   - The range-based for loop is left to the clients to implement in terms of iterator().
+ * <p/>
+ * This class is not threadsafe. Observers MUST be added, removed and will be notified on the same
+ * thread this is created.
+ *
+ * @param <E> The type of observers that this list should hold.
+ */
+class ObserverList<E> implements Iterable<E> {
+    /**
+     * Extended iterator interface that provides rewind functionality.
+     */
+    public interface RewindableIterator<E> extends Iterator<E> {
+        /**
+         * Rewind the iterator back to the beginning.
+         *
+         * If we need to iterate multiple times, we can avoid iterator object reallocation by using
+         * this method.
+         */
+        public void rewind();
+    }
+
+    public final List<E> mObservers = new ArrayList<E>();
+    private int mIterationDepth;
+    private int mCount;
+    private boolean mNeedsCompact;
+
+    public ObserverList() {}
+
+    /**
+     * Add an observer to the list.
+     * <p/>
+     * An observer should not be added to the same list more than once. If an iteration is already
+     * in progress, this observer will be not be visible during that iteration.
+     *
+     * @return true if the observer list changed as a result of the call.
+     */
+    public boolean addObserver(E obs) {
+        // Avoid adding null elements to the list as they may be removed on a compaction.
+        if (obs == null || mObservers.contains(obs)) {
+            return false;
+        }
+
+        // Structurally modifying the underlying list here. This means we
+        // cannot use the underlying list's iterator to iterate over the list.
+        boolean result = mObservers.add(obs);
+        assert result;
+
+        ++mCount;
+        return true;
+    }
+
+    /**
+     * Remove an observer from the list if it is in the list.
+     *
+     * @return true if an element was removed as a result of this call.
+     */
+    public boolean removeObserver(E obs) {
+        if (obs == null) {
+            return false;
+        }
+
+        int index = mObservers.indexOf(obs);
+        if (index == -1) {
+            return false;
+        }
+
+        if (mIterationDepth == 0) {
+            // No one is iterating over the list.
+            mObservers.remove(index);
+        } else {
+            mNeedsCompact = true;
+            mObservers.set(index, null);
+        }
+        --mCount;
+        assert mCount >= 0;
+
+        return true;
+    }
+
+    public boolean hasObserver(E obs) {
+        return mObservers.contains(obs);
+    }
+
+    public void clear() {
+        mCount = 0;
+
+        if (mIterationDepth == 0) {
+            mObservers.clear();
+            return;
+        }
+
+        int size = mObservers.size();
+        mNeedsCompact |= size != 0;
+        for (int i = 0; i < size; i++) {
+            mObservers.set(i, null);
+        }
+    }
+
+    @Override
+    public Iterator<E> iterator() {
+        return new ObserverListIterator();
+    }
+
+    /**
+     * It's the same as {@link ObserverList#iterator()} but the return type is
+     * {@link RewindableIterator}. Use this iterator type if you need to use
+     * {@link RewindableIterator#rewind()}.
+     */
+    public RewindableIterator<E> rewindableIterator() {
+        return new ObserverListIterator();
+    }
+
+    /**
+     * Returns the number of observers currently registered in the ObserverList.
+     * This is equivalent to the number of non-empty spaces in |mObservers|.
+     */
+    public int size() {
+        return mCount;
+    }
+
+    /**
+     * Returns true if the ObserverList contains no observers.
+     */
+    public boolean isEmpty() {
+        return mCount == 0;
+    }
+
+    /**
+     * Compact the underlying list be removing null elements.
+     * <p/>
+     * Should only be called when mIterationDepth is zero.
+     */
+    private void compact() {
+        assert mIterationDepth == 0;
+        for (int i = mObservers.size() - 1; i >= 0; i--) {
+            if (mObservers.get(i) == null) {
+                mObservers.remove(i);
+            }
+        }
+    }
+
+    private void incrementIterationDepth() {
+        mIterationDepth++;
+    }
+
+    private void decrementIterationDepthAndCompactIfNeeded() {
+        mIterationDepth--;
+        assert mIterationDepth >= 0;
+        if (mIterationDepth > 0) return;
+        if (!mNeedsCompact) return;
+        mNeedsCompact = false;
+        compact();
+    }
+
+    /**
+     * Returns the size of the underlying storage of the ObserverList.
+     * It will take into account the empty spaces inside |mObservers|.
+     */
+    private int capacity() {
+        return mObservers.size();
+    }
+
+    private E getObserverAt(int index) {
+        return mObservers.get(index);
+    }
+
+    private class ObserverListIterator implements RewindableIterator<E> {
+        private int mListEndMarker;
+        private int mIndex;
+        private boolean mIsExhausted;
+
+        private ObserverListIterator() {
+            ObserverList.this.incrementIterationDepth();
+            mListEndMarker = ObserverList.this.capacity();
+        }
+
+        @Override
+        public void rewind() {
+            compactListIfNeeded();
+            ObserverList.this.incrementIterationDepth();
+            mListEndMarker = ObserverList.this.capacity();
+            mIsExhausted = false;
+            mIndex = 0;
+        }
+
+        @Override
+        public boolean hasNext() {
+            int lookupIndex = mIndex;
+            while (lookupIndex < mListEndMarker
+                    && ObserverList.this.getObserverAt(lookupIndex) == null) {
+                lookupIndex++;
+            }
+            if (lookupIndex < mListEndMarker) return true;
+
+            // We have reached the end of the list, allow for compaction.
+            compactListIfNeeded();
+            return false;
+        }
+
+        @Override
+        public E next() {
+            // Advance if the current element is null.
+            while (mIndex < mListEndMarker && ObserverList.this.getObserverAt(mIndex) == null) {
+                mIndex++;
+            }
+            if (mIndex < mListEndMarker) return ObserverList.this.getObserverAt(mIndex++);
+
+            // We have reached the end of the list, allow for compaction.
+            compactListIfNeeded();
+            throw new NoSuchElementException();
+        }
+
+        @Override
+        public void remove() {
+            throw new UnsupportedOperationException();
+        }
+
+        private void compactListIfNeeded() {
+            if (!mIsExhausted) {
+                mIsExhausted = true;
+                ObserverList.this.decrementIterationDepthAndCompactIfNeeded();
+            }
+        }
+    }
+}