diff --git a/DEPS b/DEPS
index aa93e94..5d7bbd72 100644
--- a/DEPS
+++ b/DEPS
@@ -96,7 +96,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': '5cdfbfc974591fbaca53645b670c8191cb89f8aa',
+  'catapult_revision': '4550ebce30c0593fb85be7890b84b942e8b7af57',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling libFuzzer
   # and whatever else without interference from each other.
diff --git a/ash/BUILD.gn b/ash/BUILD.gn
index bcdd6844..1dbd302 100644
--- a/ash/BUILD.gn
+++ b/ash/BUILD.gn
@@ -1189,6 +1189,7 @@
     "common/system/date/date_view_unittest.cc",
     "common/system/date/system_info_default_view_unittest.cc",
     "common/system/ime/tray_ime_chromeos_unittest.cc",
+    "common/system/status_area_widget_unittest.cc",
     "common/system/tiles/tray_tiles_unittest.cc",
     "common/system/tray/size_range_layout_unittest.cc",
     "common/system/tray/system_tray_unittest.cc",
diff --git a/ash/common/system/status_area_widget.h b/ash/common/system/status_area_widget.h
index acea237..6cb1dfa1 100644
--- a/ash/common/system/status_area_widget.h
+++ b/ash/common/system/status_area_widget.h
@@ -81,6 +81,14 @@
   // ShelfBackgroundAnimatorObserver:
   void UpdateShelfItemBackground(SkColor color) override;
 
+  LogoutButtonTray* logout_button_tray_for_testing() {
+    return logout_button_tray_;
+  }
+
+  VirtualKeyboardTray* virtual_keyboard_tray_for_testing() {
+    return virtual_keyboard_tray_;
+  }
+
  private:
   void AddSystemTray();
   void AddWebNotificationTray();
diff --git a/ash/common/system/status_area_widget_unittest.cc b/ash/common/system/status_area_widget_unittest.cc
new file mode 100644
index 0000000..18dfe91
--- /dev/null
+++ b/ash/common/system/status_area_widget_unittest.cc
@@ -0,0 +1,86 @@
+// Copyright 2017 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 "ash/common/system/status_area_widget.h"
+
+#include "ash/common/ash_switches.h"
+#include "ash/common/system/chromeos/ime_menu/ime_menu_tray.h"
+#include "ash/common/system/chromeos/palette/palette_tray.h"
+#include "ash/common/system/chromeos/session/logout_button_tray.h"
+#include "ash/common/system/chromeos/virtual_keyboard/virtual_keyboard_tray.h"
+#include "ash/common/system/overview/overview_button_tray.h"
+#include "ash/common/system/tray/system_tray.h"
+#include "ash/common/system/web_notification/web_notification_tray.h"
+#include "ash/test/ash_test_base.h"
+#include "ash/test/status_area_widget_test_helper.h"
+#include "base/command_line.h"
+
+namespace ash {
+
+using StatusAreaWidgetTest = test::AshTestBase;
+
+// Tests that status area trays are constructed.
+TEST_F(StatusAreaWidgetTest, Basics) {
+  StatusAreaWidget* status = StatusAreaWidgetTestHelper::GetStatusAreaWidget();
+
+  // Status area is visible by default.
+  EXPECT_TRUE(status->IsVisible());
+
+  // No bubbles are open at startup.
+  EXPECT_FALSE(status->IsMessageBubbleShown());
+
+  // Auto-hidden shelf would not be forced to be visible.
+  EXPECT_FALSE(status->ShouldShowShelf());
+
+  // Default trays are constructed.
+  EXPECT_TRUE(status->overview_button_tray());
+  EXPECT_TRUE(status->system_tray());
+  EXPECT_TRUE(status->web_notification_tray());
+  EXPECT_TRUE(status->logout_button_tray_for_testing());
+  EXPECT_TRUE(status->ime_menu_tray());
+  EXPECT_TRUE(status->virtual_keyboard_tray_for_testing());
+
+  // Stylus palette is only constructed if hardware supports it.
+  EXPECT_FALSE(status->palette_tray());
+
+  // Needed because WebNotificationTray updates its initial visibility
+  // asynchronously.
+  RunAllPendingInMessageLoop();
+
+  // Default trays are visible.
+  EXPECT_FALSE(status->overview_button_tray()->visible());
+  EXPECT_TRUE(status->system_tray()->visible());
+  EXPECT_TRUE(status->web_notification_tray()->visible());
+  EXPECT_FALSE(status->logout_button_tray_for_testing()->visible());
+  EXPECT_FALSE(status->ime_menu_tray()->visible());
+  EXPECT_FALSE(status->virtual_keyboard_tray_for_testing()->visible());
+}
+
+class StatusAreaWidgetPaletteTest : public test::AshTestBase {
+ public:
+  StatusAreaWidgetPaletteTest() {}
+  ~StatusAreaWidgetPaletteTest() override {}
+
+  // testing::Test:
+  void SetUp() override {
+    base::CommandLine* cmd = base::CommandLine::ForCurrentProcess();
+    cmd->AppendSwitch(switches::kAshForceEnablePalette);
+    // It's difficult to write a test that marks the primary display as
+    // internal before the status area is constructed. Just force the palette
+    // for all displays.
+    cmd->AppendSwitch(switches::kAshEnablePaletteOnAllDisplays);
+    AshTestBase::SetUp();
+  }
+};
+
+// Tests that the stylus palette tray is constructed.
+TEST_F(StatusAreaWidgetPaletteTest, Basics) {
+  StatusAreaWidget* status = StatusAreaWidgetTestHelper::GetStatusAreaWidget();
+  EXPECT_TRUE(status->palette_tray());
+
+  // Auto-hidden shelf would not be forced to be visible.
+  EXPECT_FALSE(status->ShouldShowShelf());
+}
+
+}  // namespace ash
diff --git a/base/trace_event/memory_dump_manager.cc b/base/trace_event/memory_dump_manager.cc
index 31016f9..5a54a77 100644
--- a/base/trace_event/memory_dump_manager.cc
+++ b/base/trace_event/memory_dump_manager.cc
@@ -514,6 +514,9 @@
     // disabled.
     CHECK(!session_state_ ||
           session_state_->IsDumpModeAllowed(args.level_of_detail));
+
+    if (dump_scheduler_)
+      dump_scheduler_->NotifyDumpTriggered();
   }
 
   TRACE_EVENT_WITH_FLOW0(kTraceCategory, "MemoryDumpManager::CreateProcessDump",
diff --git a/base/trace_event/memory_dump_scheduler.cc b/base/trace_event/memory_dump_scheduler.cc
index 4086ca8..eaa8d63 100644
--- a/base/trace_event/memory_dump_scheduler.cc
+++ b/base/trace_event/memory_dump_scheduler.cc
@@ -33,16 +33,16 @@
                                      uint32_t min_time_between_dumps_ms) {
   if (trigger_type == MemoryDumpType::PEAK_MEMORY_USAGE) {
     DCHECK(!periodic_state_.is_configured);
-    DCHECK(!polling_state_.is_configured);
+    DCHECK_EQ(PollingTriggerState::DISABLED, polling_state_.current_state);
     DCHECK_NE(0u, min_time_between_dumps_ms);
 
     polling_state_.level_of_detail = level_of_detail;
     polling_state_.min_polls_between_dumps =
         (min_time_between_dumps_ms + polling_state_.polling_interval_ms - 1) /
         polling_state_.polling_interval_ms;
-    polling_state_.is_configured = true;
+    polling_state_.current_state = PollingTriggerState::CONFIGURED;
   } else if (trigger_type == MemoryDumpType::PERIODIC_INTERVAL) {
-    DCHECK(!polling_state_.is_configured);
+    DCHECK_EQ(PollingTriggerState::DISABLED, polling_state_.current_state);
     periodic_state_.is_configured = true;
     DCHECK_NE(0u, min_time_between_dumps_ms);
     switch (level_of_detail) {
@@ -83,32 +83,31 @@
 }
 
 void MemoryDumpScheduler::NotifyPollingSupported() {
-  if (!polling_state_.is_configured || polling_state_.is_polling_enabled)
+  if (polling_state_.current_state != PollingTriggerState::CONFIGURED)
     return;
-  polling_state_.is_polling_enabled = true;
-  for (uint32_t i = 0; i < PollingTriggerState::kMaxNumMemorySamples; ++i)
-    polling_state_.last_memory_totals_kb[i] = 0;
-  polling_state_.last_memory_totals_kb_index = 0;
-  polling_state_.num_polls_from_last_dump = 0;
-  polling_state_.last_dump_memory_total = 0;
 
-  if (!polling_state_.memory_increase_threshold) {
-    polling_state_.memory_increase_threshold = kDefaultMemoryIncreaseThreshold;
-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || \
-    defined(OS_ANDROID)
-    // Set threshold to 1% of total system memory.
-    SystemMemoryInfoKB meminfo;
-    bool res = GetSystemMemoryInfo(&meminfo);
-    if (res)
-      polling_state_.memory_increase_threshold = (meminfo.total / 100) * 1024;
-#endif
-  }
+  polling_state_.current_state = PollingTriggerState::ENABLED;
+  polling_state_.ResetTotals();
 
   polling_state_.polling_task_runner->PostTask(
       FROM_HERE,
       Bind(&MemoryDumpScheduler::PollMemoryOnPollingThread, Unretained(this)));
 }
 
+void MemoryDumpScheduler::NotifyDumpTriggered() {
+  if (polling_state_.polling_task_runner &&
+      polling_state_.polling_task_runner->RunsTasksOnCurrentThread()) {
+    polling_state_.polling_task_runner->PostTask(
+        FROM_HERE,
+        Bind(&MemoryDumpScheduler::NotifyDumpTriggered, Unretained(this)));
+    return;
+  }
+  if (polling_state_.current_state != PollingTriggerState::ENABLED)
+    return;
+
+  polling_state_.ResetTotals();
+}
+
 void MemoryDumpScheduler::DisableAllTriggers() {
   if (periodic_state_.timer.IsRunning())
     periodic_state_.timer.Stop();
@@ -116,14 +115,13 @@
 }
 
 void MemoryDumpScheduler::DisablePolling() {
-  if (ThreadTaskRunnerHandle::Get() != polling_state_.polling_task_runner) {
+  if (polling_state_.polling_task_runner->RunsTasksOnCurrentThread()) {
     if (polling_state_.polling_task_runner->PostTask(
             FROM_HERE,
             Bind(&MemoryDumpScheduler::DisablePolling, Unretained(this))))
       return;
   }
-  polling_state_.is_polling_enabled = false;
-  polling_state_.is_configured = false;
+  polling_state_.current_state = PollingTriggerState::DISABLED;
   polling_state_.polling_task_runner = nullptr;
 }
 
@@ -150,7 +148,7 @@
 }
 
 void MemoryDumpScheduler::PollMemoryOnPollingThread() {
-  if (!polling_state_.is_configured)
+  if (polling_state_.current_state != PollingTriggerState::ENABLED)
     return;
 
   uint64_t polled_memory = 0;
@@ -200,13 +198,8 @@
   should_dump |=
       increase_from_last_dump > polling_state_.memory_increase_threshold;
   should_dump |= IsCurrentSamplePeak(current_memory_total);
-  if (should_dump) {
-    polling_state_.last_dump_memory_total = current_memory_total;
-    polling_state_.num_polls_from_last_dump = 0;
-    for (uint32_t i = 0; i < PollingTriggerState::kMaxNumMemorySamples; ++i)
-      polling_state_.last_memory_totals_kb[i] = 0;
-    polling_state_.last_memory_totals_kb_index = 0;
-  }
+  if (should_dump)
+    polling_state_.ResetTotals();
   return should_dump;
 }
 
@@ -265,15 +258,14 @@
 
 MemoryDumpScheduler::PollingTriggerState::PollingTriggerState(
     scoped_refptr<SingleThreadTaskRunner> polling_task_runner)
-    : is_configured(false),
-      is_polling_enabled(false),
+    : current_state(DISABLED),
       level_of_detail(MemoryDumpLevelOfDetail::FIRST),
       polling_task_runner(polling_task_runner),
       polling_interval_ms(g_polling_interval_ms_for_testing
                               ? g_polling_interval_ms_for_testing
                               : kMemoryTotalsPollingInterval),
       min_polls_between_dumps(0),
-      num_polls_from_last_dump(0),
+      num_polls_from_last_dump(-1),
       last_dump_memory_total(0),
       memory_increase_threshold(0),
       last_memory_totals_kb_index(0) {}
@@ -282,5 +274,31 @@
   DCHECK(!polling_task_runner);
 }
 
+void MemoryDumpScheduler::PollingTriggerState::ResetTotals() {
+  if (!memory_increase_threshold) {
+    memory_increase_threshold = kDefaultMemoryIncreaseThreshold;
+#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || \
+    defined(OS_ANDROID)
+    // Set threshold to 1% of total system memory.
+    SystemMemoryInfoKB meminfo;
+    bool res = GetSystemMemoryInfo(&meminfo);
+    if (res)
+      memory_increase_threshold = (meminfo.total / 100) * 1024;
+#endif
+  }
+
+  // Update the |last_dump_memory_total|'s value from the totals if it's not
+  // first poll.
+  if (num_polls_from_last_dump >= 0 &&
+      last_memory_totals_kb[last_memory_totals_kb_index]) {
+    last_dump_memory_total =
+        last_memory_totals_kb[last_memory_totals_kb_index] * 1024;
+  }
+  num_polls_from_last_dump = 0;
+  for (uint32_t i = 0; i < kMaxNumMemorySamples; ++i)
+    last_memory_totals_kb[i] = 0;
+  last_memory_totals_kb_index = 0;
+}
+
 }  // namespace trace_event
 }  // namespace base
diff --git a/base/trace_event/memory_dump_scheduler.h b/base/trace_event/memory_dump_scheduler.h
index be75306..fd21fce8 100644
--- a/base/trace_event/memory_dump_scheduler.h
+++ b/base/trace_event/memory_dump_scheduler.h
@@ -41,6 +41,10 @@
   // Starts polling memory total.
   void NotifyPollingSupported();
 
+  // Resets time for triggering dump to account for minimum time between the
+  // dumps.
+  void NotifyDumpTriggered();
+
   // Disables all triggers.
   void DisableAllTriggers();
 
@@ -68,14 +72,22 @@
   };
 
   struct PollingTriggerState {
+    enum State {
+      CONFIGURED,  // Polling trigger was added.
+      ENABLED,     // Polling is running.
+      DISABLED     // Polling is disabled.
+    };
+
     static const uint32_t kMaxNumMemorySamples = 50;
 
     explicit PollingTriggerState(
         scoped_refptr<SingleThreadTaskRunner> polling_task_runner);
     ~PollingTriggerState();
 
-    bool is_configured;
-    bool is_polling_enabled;
+    // Helper to clear the tracked memory totals and poll count from last dump.
+    void ResetTotals();
+
+    State current_state;
     MemoryDumpLevelOfDetail level_of_detail;
 
     scoped_refptr<SingleThreadTaskRunner> polling_task_runner;
diff --git a/build/vs_toolchain.py b/build/vs_toolchain.py
index d2b8197..d73d509 100755
--- a/build/vs_toolchain.py
+++ b/build/vs_toolchain.py
@@ -21,9 +21,6 @@
 json_data_file = os.path.join(script_dir, 'win_toolchain.json')
 
 
-import gyp
-
-
 # Use MSVS2015 as the default toolchain.
 CURRENT_DEFAULT_TOOLCHAIN_VERSION = '2015'
 
@@ -60,6 +57,12 @@
 
     os.environ['GYP_MSVS_OVERRIDE_PATH'] = toolchain
     os.environ['GYP_MSVS_VERSION'] = version
+
+    # Limit the scope of the gyp import to only where it is used. This
+    # potentially lets build configs that never execute this block to drop
+    # their GYP checkout.
+    import gyp
+
     # We need to make sure windows_sdk_path is set to the automated
     # toolchain values in GYP_DEFINES, but don't want to override any
     # otheroptions.express
@@ -68,6 +71,7 @@
     gyp_defines_dict['windows_sdk_path'] = win_sdk
     os.environ['GYP_DEFINES'] = ' '.join('%s=%s' % (k, pipes.quote(str(v)))
         for k, v in gyp_defines_dict.iteritems())
+
     os.environ['WINDOWSSDKDIR'] = win_sdk
     os.environ['WDK_DIR'] = wdk
     # Include the VS runtime in the PATH in case it's not machine-installed.
@@ -171,12 +175,11 @@
   vs_version = GetVisualStudioVersion()
   if vs_version == '2013':
     return '120'
-  elif vs_version == '2015':
+  if vs_version == '2015':
     return '140'
-  elif vs_version == '2017':
+  if vs_version == '2017':
     return '150'
-  else:
-    raise ValueError('Unexpected GYP_MSVS_VERSION')
+  raise ValueError('Unexpected GYP_MSVS_VERSION')
 
 
 def _CopyRuntimeImpl(target, source, verbose=True):
@@ -340,13 +343,13 @@
 def _GetDesiredVsToolchainHashes():
   """Load a list of SHA1s corresponding to the toolchains that we want installed
   to build with."""
-  if GetVisualStudioVersion() == '2015':
+  env_version = GetVisualStudioVersion()
+  if env_version == '2013':
+    return ['03a4e939cd325d6bc5216af41b92d02dda1366a6']
+  if env_version == '2015':
     # Update 3 final with patches with 10.0.14393.0 SDK.
     return ['d3cb0e37bdd120ad0ac4650b674b09e81be45616']
-  elif GetVisualStudioVersion() == '2013':
-    return ['03a4e939cd325d6bc5216af41b92d02dda1366a6']
-  else:
-    raise Exception('Unsupported VS version %s' % GetVisualStudioVersion())
+  raise Exception('Unsupported VS version %s' % env_version)
 
 
 def ShouldUpdateToolchain():
diff --git a/cc/resources/resource_pool.cc b/cc/resources/resource_pool.cc
index 50eef3c4..c200375 100644
--- a/cc/resources/resource_pool.cc
+++ b/cc/resources/resource_pool.cc
@@ -24,35 +24,8 @@
 using base::trace_event::MemoryDumpLevelOfDetail;
 
 namespace cc {
-namespace {
-bool ResourceMeetsSizeRequirements(const gfx::Size& requested_size,
-                                   const gfx::Size& actual_size) {
-  const float kReuseThreshold = 2.0f;
-
-  // Allocating new resources is expensive, and we'd like to re-use our
-  // existing ones within reason. Allow a larger resource to be used for a
-  // smaller request.
-  if (actual_size.width() < requested_size.width() ||
-      actual_size.height() < requested_size.height())
-    return false;
-
-  // GetArea will crash on overflow, however all sizes in use are tile sizes.
-  // These are capped at ResourceProvider::max_texture_size(), and will not
-  // overflow.
-  float actual_area = actual_size.GetArea();
-  float requested_area = requested_size.GetArea();
-  // Don't use a resource that is more than |kReuseThreshold| times the
-  // requested pixel area, as we want to free unnecessarily large resources.
-  if (actual_area / requested_area > kReuseThreshold)
-    return false;
-
-  return true;
-}
-
-}  // namespace
-
 base::TimeDelta ResourcePool::kDefaultExpirationDelay =
-    base::TimeDelta::FromSeconds(5);
+    base::TimeDelta::FromSeconds(1);
 
 void ResourcePool::PoolResource::OnMemoryDump(
     base::trace_event::ProcessMemoryDump* pmd,
@@ -146,7 +119,7 @@
 
     if (resource->format() != format)
       continue;
-    if (!ResourceMeetsSizeRequirements(size, resource->size()))
+    if (resource->size() != size)
       continue;
     if (resource->color_space() != color_space)
       continue;
diff --git a/cc/resources/resource_pool_unittest.cc b/cc/resources/resource_pool_unittest.cc
index ec9bae41..aa8e853e 100644
--- a/cc/resources/resource_pool_unittest.cc
+++ b/cc/resources/resource_pool_unittest.cc
@@ -33,12 +33,6 @@
   }
 
  protected:
-  void CheckAndReturnResource(Resource* resource) {
-    EXPECT_NE(nullptr, resource);
-    resource_pool_->ReleaseResource(resource);
-    resource_pool_->CheckBusyResources();
-  }
-
   scoped_refptr<TestContextProvider> context_provider_;
   std::unique_ptr<SharedBitmapManager> shared_bitmap_manager_;
   std::unique_ptr<ResourceProvider> resource_provider_;
@@ -111,28 +105,32 @@
   gfx::ColorSpace color_space1;
   gfx::ColorSpace color_space2 = gfx::ColorSpace::CreateSRGB();
 
-  CheckAndReturnResource(
-      resource_pool_->AcquireResource(size, format, color_space1));
+  Resource* resource =
+      resource_pool_->AcquireResource(size, format, color_space1);
+  resource_pool_->ReleaseResource(resource);
+  resource_pool_->CheckBusyResources();
   EXPECT_EQ(1u, resource_provider_->num_resources());
 
   // Same size/format should re-use resource.
-  Resource* resource =
-      resource_pool_->AcquireResource(size, format, color_space1);
+  resource = resource_pool_->AcquireResource(size, format, color_space1);
   EXPECT_EQ(1u, resource_provider_->num_resources());
-  CheckAndReturnResource(resource);
+  resource_pool_->ReleaseResource(resource);
+  resource_pool_->CheckBusyResources();
   EXPECT_EQ(1u, resource_provider_->num_resources());
 
   // Different size/format should allocate new resource.
   resource = resource_pool_->AcquireResource(gfx::Size(50, 50), LUMINANCE_8,
                                              color_space1);
   EXPECT_EQ(2u, resource_provider_->num_resources());
-  CheckAndReturnResource(resource);
+  resource_pool_->ReleaseResource(resource);
+  resource_pool_->CheckBusyResources();
   EXPECT_EQ(2u, resource_provider_->num_resources());
 
   // Different color space should allocate new resource.
   resource = resource_pool_->AcquireResource(size, format, color_space2);
   EXPECT_EQ(3u, resource_provider_->num_resources());
-  CheckAndReturnResource(resource);
+  resource_pool_->ReleaseResource(resource);
+  resource_pool_->CheckBusyResources();
   EXPECT_EQ(3u, resource_provider_->num_resources());
 }
 
@@ -319,47 +317,25 @@
   ResourceFormat format = RGBA_8888;
   gfx::ColorSpace color_space = gfx::ColorSpace::CreateSRGB();
 
-  // Create unused resource with size 100x100.
-  CheckAndReturnResource(
-      resource_pool_->CreateResource(gfx::Size(100, 100), format, color_space));
+  // Create unused resources with sizes close to 100, 100.
+  resource_pool_->ReleaseResource(
+      resource_pool_->CreateResource(gfx::Size(99, 100), format, color_space));
+  resource_pool_->ReleaseResource(
+      resource_pool_->CreateResource(gfx::Size(99, 99), format, color_space));
+  resource_pool_->ReleaseResource(
+      resource_pool_->CreateResource(gfx::Size(100, 99), format, color_space));
+  resource_pool_->ReleaseResource(
+      resource_pool_->CreateResource(gfx::Size(101, 101), format, color_space));
+  resource_pool_->CheckBusyResources();
 
-  // Try some cases that are too large, none should succeed.
-  EXPECT_EQ(nullptr, resource_pool_->ReuseResource(gfx::Size(101, 100), format,
-                                                   color_space));
-  EXPECT_EQ(nullptr, resource_pool_->ReuseResource(gfx::Size(100, 101), format,
-                                                   color_space));
-  EXPECT_EQ(nullptr, resource_pool_->ReuseResource(gfx::Size(90, 120), format,
-                                                   color_space));
-  EXPECT_EQ(nullptr, resource_pool_->ReuseResource(gfx::Size(120, 120), format,
-                                                   color_space));
-
-  // Try some cases that are more than 2x smaller than 100x100 in area and
-  // won't be re-used.
-  EXPECT_EQ(nullptr, resource_pool_->ReuseResource(gfx::Size(49, 100), format,
-                                                   color_space));
-  EXPECT_EQ(nullptr, resource_pool_->ReuseResource(gfx::Size(100, 49), format,
-                                                   color_space));
-  EXPECT_EQ(nullptr, resource_pool_->ReuseResource(gfx::Size(50, 50), format,
-                                                   color_space));
-  EXPECT_EQ(nullptr, resource_pool_->ReuseResource(gfx::Size(70, 70), format,
-                                                   color_space));
-
-  // Try some cases that are smaller than 100x100, but within 2x area. Reuse
-  // should succeed.
-  CheckAndReturnResource(
-      resource_pool_->ReuseResource(gfx::Size(50, 100), format, color_space));
-  CheckAndReturnResource(
-      resource_pool_->ReuseResource(gfx::Size(100, 50), format, color_space));
-  CheckAndReturnResource(
-      resource_pool_->ReuseResource(gfx::Size(71, 71), format, color_space));
-
-  // 100x100 is an exact match and should succeed. A subsequent request for
-  // the same size should fail (the resource is already in use).
-  Resource* resource =
-      resource_pool_->ReuseResource(gfx::Size(100, 100), format, color_space);
-  EXPECT_EQ(nullptr, resource_pool_->ReuseResource(gfx::Size(100, 100), format,
-                                                   color_space));
-  CheckAndReturnResource(resource);
+  gfx::Size size(100, 100);
+  Resource* resource = resource_pool_->ReuseResource(size, format, color_space);
+  EXPECT_EQ(nullptr, resource);
+  size = gfx::Size(100, 99);
+  resource = resource_pool_->ReuseResource(size, format, color_space);
+  EXPECT_NE(nullptr, resource);
+  ASSERT_EQ(nullptr, resource_pool_->ReuseResource(size, format, color_space));
+  resource_pool_->ReleaseResource(resource);
 }
 
 TEST_F(ResourcePoolTest, MemoryStateSuspended) {
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
index 2b42dbe..e1dc768 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
@@ -343,7 +343,7 @@
 
         // Set up the animation placeholder to be the SurfaceView. This disables the
         // SurfaceView's 'hole' clipping during animations that are notified to the window.
-        mWindowAndroid.setAnimationPlaceholderView(mCompositorViewHolder.getCompositorView());
+        mWindowAndroid.setAnimationPlaceholderView(mCompositorViewHolder.getSurfaceView());
 
         // Inform the WindowAndroid of the keyboard accessory view.
         mWindowAndroid.setKeyboardAccessoryView((ViewGroup) findViewById(R.id.keyboard_accessory));
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/CompositorSurfaceManager.java b/chrome/android/java/src/org/chromium/chrome/browser/compositor/CompositorSurfaceManager.java
deleted file mode 100644
index 0fe5e71..0000000
--- a/chrome/android/java/src/org/chromium/chrome/browser/compositor/CompositorSurfaceManager.java
+++ /dev/null
@@ -1,455 +0,0 @@
-// Copyright 2017 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.chrome.browser.compositor;
-
-import android.content.Context;
-import android.graphics.PixelFormat;
-import android.graphics.drawable.Drawable;
-import android.view.SurfaceHolder;
-import android.view.SurfaceView;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.FrameLayout;
-
-/**
- * Manage multiple SurfaceViews for the compositor, so that transitions between
- * surfaces with and without an alpha channel can be visually smooth.
- *
- * This class allows a client to request a 'translucent' or 'opaque' surface, and we will signal via
- * SurfaceHolder.Callback when it's ready.  We guarantee that the client will receive surfaceCreated
- * / surfaceDestroyed only for a surface that represents the most recently requested PixelFormat.
- *
- * Internally, we maintain two SurfaceViews, since calling setFormat() to change the PixelFormat
- * results in a visual glitch as the surface is torn down.  crbug.com/679902
- *
- * The client has the responsibility to call doneWithUnownedSurface() at some point between when we
- * call back its surfaceCreated, when it is safe for us to hide the SurfaceView with the wrong
- * format.  It is okay if it requests multiple surfaces without calling doneWithUnownedSurface.
- *
- * If the client requests the same format more than once in a row, it will still receive destroyed /
- * created / changed messages for it, even though we won't tear it down.
- *
- * The full design doc is at https://goo.gl/aAmQzR .
- */
-class CompositorSurfaceManager implements SurfaceHolder.Callback {
-    private static class SurfaceState {
-        public SurfaceView surfaceView;
-
-        // Do we expect a surfaceCreated?
-        public boolean createPending;
-
-        // Have we started destroying |surfaceView|, but haven't received surfaceDestroyed yet?
-        public boolean destroyPending;
-
-        // Last PixelFormat that we received, or UNKNOWN if we don't know / don't want to cache it.
-        public int format;
-
-        // Last known width, height for thsi surface.
-        public int width;
-        public int height;
-
-        // Parent ViewGroup, or null.
-        private ViewGroup mParent;
-
-        public SurfaceState(Context context, int format, SurfaceHolder.Callback callback) {
-            surfaceView = new SurfaceView(context);
-            surfaceView.setZOrderMediaOverlay(true);
-            surfaceView.setVisibility(View.VISIBLE);
-            surfaceHolder().setFormat(format);
-            surfaceHolder().addCallback(callback);
-
-            // Set this to UNKNOWN until we get a format back.
-            this.format = PixelFormat.UNKNOWN;
-        }
-
-        public SurfaceHolder surfaceHolder() {
-            return surfaceView.getHolder();
-        }
-
-        public boolean isValid() {
-            return surfaceHolder().getSurface().isValid();
-        }
-
-        // Attach to |parent|, such that isAttached() will be correct immediately.  Otherwise,
-        // attaching and detaching can cause surfaceCreated / surfaceDestroyed callbacks without
-        // View.hasParent being up to date.
-        public void attachTo(ViewGroup parent, FrameLayout.LayoutParams lp) {
-            mParent = parent;
-            mParent.addView(surfaceView, lp);
-        }
-
-        public void detachFromParent() {
-            final ViewGroup parent = mParent;
-            // Since removeView can call surfaceDestroyed before returning, be sure that isAttached
-            // will return false.
-            mParent = null;
-            parent.removeView(surfaceView);
-        }
-
-        public boolean isAttached() {
-            return mParent != null;
-        }
-    }
-
-    // SurfaceView with a translucent PixelFormat.
-    private final SurfaceState mTranslucent;
-
-    // SurfaceView with an opaque PixelFormat.
-    private final SurfaceState mOpaque;
-
-    // Surface that we last gave to the client with surfaceCreated.  Cleared when we call
-    // surfaceDestroyed on |mClient|.  Note that it's not necessary that Android has notified us
-    // the surface has been destroyed; we deliberately keep it around until the client tells us that
-    // it's okay to get rid of it.
-    private SurfaceState mOwnedByClient;
-
-    // Surface that was most recently requested by the client.
-    private SurfaceState mRequestedByClient;
-
-    // Client that we notify about surface change events.
-    private SurfaceHolder.Callback mClient;
-
-    // View to which we'll attach the SurfaceView.
-    private final ViewGroup mParentView;
-
-    public CompositorSurfaceManager(ViewGroup parentView, SurfaceHolder.Callback client) {
-        mParentView = parentView;
-        mClient = client;
-
-        mTranslucent = new SurfaceState(parentView.getContext(), PixelFormat.TRANSLUCENT, this);
-        mOpaque = new SurfaceState(mParentView.getContext(), PixelFormat.OPAQUE, this);
-    }
-
-    /**
-     * Turn off everything.
-     */
-    public void shutDown() {
-        mTranslucent.surfaceHolder().removeCallback(this);
-        mOpaque.surfaceHolder().removeCallback(this);
-    }
-
-    /**
-     * Called by the client to request a surface.  Once called, we guarantee that the next call to
-     * surfaceCreated will match the most recent value of |format|.  If the surface is already
-     * available for use, then we'll send synthetic callbacks as though it were destroyed and
-     * recreated.  Note that |format| must be either OPAQUE or TRANSLUCENT.
-     */
-    public void requestSurface(int format) {
-        mRequestedByClient = (format == PixelFormat.TRANSLUCENT) ? mTranslucent : mOpaque;
-
-        // If destruction is pending, then we must wait for it to complete.  When we're notified
-        // that it is destroyed, we'll re-start construction if the client still wants this surface.
-        // Note that we could send a surfaceDestroyed for the owned surface, if there is one, but we
-        // defer it until later so that the client can still use it until the new one is ready.
-        if (mRequestedByClient.destroyPending) return;
-
-        // The requested surface isn't being torn down.
-
-        // If the surface isn't attached yet, then attach it.  Otherwise, we're still waiting for
-        // the surface to be created, or we've already received surfaceCreated for it.
-        if (!mRequestedByClient.isAttached()) {
-            attachSurfaceNow(mRequestedByClient);
-            assert mRequestedByClient.isAttached();
-            return;
-        }
-
-        // Surface is not pending destroy, and is attached.  See if we need to send any synthetic
-        // callbacks to the client.  If we're expecting a callback from Android, then we'll handle
-        // it when it arrives instead.
-        if (mRequestedByClient.createPending) return;
-
-        // Surface is attached and no create is pending.  Send a synthetic create.  Note that, if
-        // Android destroyed the surface itself, then we'd have set |createPending| at that point.
-        // We don't check |isValid| here, since, technically, there could be a destroy in flight
-        // from Android.  It's okay; we'll just notify the client at that point.  Either way, we
-        // must tell the client that it now owns the surface.
-
-        // Send a notification about any owned surface.  Note that this can be |mRequestedByClient|
-        // which is fine.  We'll send destroy / create for it.  Also note that we don't actually
-        // start tear-down of the owned surface; the client notifies us via doneWithUnownedSurface
-        // when it is safe to do that.
-        disownClientSurface(mOwnedByClient);
-
-        // The client now owns |mRequestedByClient|.  Notify it that it's ready.
-        mOwnedByClient = mRequestedByClient;
-        mClient.surfaceCreated(mOwnedByClient.surfaceHolder());
-
-        // See if we're expecting a surfaceChanged.  If not, then send a synthetic one.
-        if (mOwnedByClient.format != PixelFormat.UNKNOWN) {
-            mClient.surfaceChanged(mOwnedByClient.surfaceHolder(), mOwnedByClient.width,
-                    mOwnedByClient.height, mOwnedByClient.format);
-        }
-    }
-
-    /**
-     * Called to notify us that the client no longer needs the surface that it doesn't own.  This
-     * tells us that we may destroy it.  Note that it's okay if it never had an unowned surface.
-     */
-    public void doneWithUnownedSurface() {
-        if (mOwnedByClient == null) return;
-
-        SurfaceState unowned = (mOwnedByClient == mTranslucent) ? mOpaque : mTranslucent;
-
-        if (mRequestedByClient == unowned) {
-            // Client is giving us back a surface that it's since requested but hasn't gotten yet.
-            // Do nothing.  It will be notified when the new surface is ready, and it can call us
-            // again for the other surface, if it wants.
-            return;
-        }
-
-        // Start destruction of this surface.  To prevent recursive call-backs to the client, we
-        // post this for later.
-        detachSurfaceLater(unowned);
-    }
-
-    /**
-     * Return the currently owned SurfaceHolder, if any.
-     */
-    public SurfaceHolder getHolder() {
-        return mOwnedByClient != null ? mOwnedByClient.surfaceHolder() : null;
-    }
-
-    /**
-     * Destroy and re-create the surface.  Useful for a JB workaround needed by CompositorView.
-     */
-    public void recreateSurfaceForJellyBean() {
-        // If they don't have a surface, then they'll get a new one anyway.
-        if (mOwnedByClient == null) return;
-
-        // Notify the client that it no longer owns this surface, then destroy it.  When destruction
-        // completes, we will recreate it automatically, since it will look like the client since
-        // re-requested it.  That's why we send surfaceDestroyed here rather than letting our
-        // surfaceDestroyed do it when destruction completes.  If we just started destruction while
-        // the client still owns the surface, then our surfaceDestroyed would assume that Android
-        // initiated the destruction, and wait for Android to recreate it.
-
-        mParentView.post(new Runnable() {
-            @Override
-            public void run() {
-                if (mOwnedByClient == null) return;
-                SurfaceState owned = mOwnedByClient;
-                mClient.surfaceDestroyed(mOwnedByClient.surfaceHolder());
-                mOwnedByClient = null;
-                detachSurfaceNow(owned);
-            }
-        });
-    }
-
-    @Override
-    public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
-        SurfaceState state = getStateForHolder(holder);
-        assert state != null;
-
-        // If this is the surface that the client currently cares about, then notify the client.
-        // Note that surfaceChanged is guaranteed to come only after surfaceCreated.  Also, if the
-        // client has requested a different surface but hasn't gotten it yet, then skip this.
-        if (state == mOwnedByClient && state == mRequestedByClient) {
-            state.width = width;
-            state.height = height;
-            state.format = format;
-            mClient.surfaceChanged(holder, format, width, height);
-        }
-    }
-
-    @Override
-    public void surfaceCreated(SurfaceHolder holder) {
-        SurfaceState state = getStateForHolder(holder);
-        assert state != null;
-        // Note that |createPending| might not be set, if Android destroyed and recreated this
-        // surface on its own.
-
-        if (state != mRequestedByClient) {
-            // Surface is created, but it's not the one that's been requested most recently.  Just
-            // destroy it again.
-            detachSurfaceLater(state);
-            return;
-        }
-
-        // No create is pending.
-        state.createPending = false;
-
-        // A surfaceChanged should arrive.
-        state.format = PixelFormat.UNKNOWN;
-
-        // The client requested a surface, and it's now available.  If the client owns a surface,
-        // then notify it that it doesn't.  Note that the client can't own |state| at this point,
-        // since we would have removed ownership when we got surfaceDestroyed.  It's okay if the
-        // client doesn't own either surface.
-        assert mOwnedByClient != state;
-        disownClientSurface(mOwnedByClient);
-
-        // The client now owns this surface, so notify it.
-        mOwnedByClient = mRequestedByClient;
-        mClient.surfaceCreated(mOwnedByClient.surfaceHolder());
-    }
-
-    @Override
-    public void surfaceDestroyed(SurfaceHolder holder) {
-        SurfaceState state = getStateForHolder(holder);
-        assert state != null;
-
-        // If no destroy is pending, then Android chose to destroy this surface and will, hopefully,
-        // re-create it at some point.  Otherwise, a destroy is either posted or has already
-        // detached this SurfaceView.  If it's already detached, then the destruction is complete
-        // and we can clear |destroyPending|.  Otherwise, Android has destroyed this surface while
-        // our destroy was posted, and might even return it before it runs.  When the post runs, it
-        // can sort that out based on whether the surface is valid or not.
-        if (!state.destroyPending) {
-            state.createPending = true;
-        } else if (!state.isAttached()) {
-            state.destroyPending = false;
-        }
-
-        state.format = PixelFormat.UNKNOWN;
-
-        // If the client owns this surface, then notify it synchronously that it no longer does.
-        // This can happen if Android destroys the surface on its own.  It's also possible that
-        // we've detached it, if a destroy was pending.  Either way, notify the client.
-        if (state == mOwnedByClient) {
-            disownClientSurface(mOwnedByClient);
-
-            // Do not re-request the surface here.  If android gives the surface back, then we'll
-            // re-signal the client about construction.
-            return;
-        }
-
-        // The client doesn't own this surface, but might want it.
-        // If the client has requested this surface, then start construction on it.  The client will
-        // be notified when it completes.  This can happen if the client re-requests a surface after
-        // we start destruction on it from a previous request, for example.  We post this for later,
-        // since we might be called while removing |state| from the view tree. In general, posting
-        // from here is good.
-        if (state == mRequestedByClient && !state.isAttached()) {
-            attachSurfaceLater(state);
-        } else if (state != mRequestedByClient && state.isAttached()) {
-            // This isn't the requested surface.  If android destroyed it, then also unhook it so
-            // that it isn't recreated later.
-            detachSurfaceLater(state);
-        }
-    }
-
-    /**
-     * Update the background drawable on all surfaces.
-     */
-    public void setBackgroundDrawable(Drawable background) {
-        mTranslucent.surfaceView.setBackgroundDrawable(background);
-        mOpaque.surfaceView.setBackgroundDrawable(background);
-    }
-
-    /**
-     * Set |willNotDraw| on all surfaces.
-     */
-    public void setWillNotDraw(boolean willNotDraw) {
-        mTranslucent.surfaceView.setWillNotDraw(willNotDraw);
-        mOpaque.surfaceView.setWillNotDraw(willNotDraw);
-    }
-
-    /**
-     * Return the SurfaceState for |holder|, or null if it isn't either.
-     */
-    private SurfaceState getStateForHolder(SurfaceHolder holder) {
-        if (mTranslucent.surfaceHolder() == holder) return mTranslucent;
-
-        if (mOpaque.surfaceHolder() == holder) return mOpaque;
-
-        return null;
-    }
-
-    /**
-     * Attach |state| to |mParentView| immedaitely.
-     */
-    private void attachSurfaceNow(SurfaceState state) {
-        if (state.isAttached()) return;
-
-        // If there is a destroy in-flight for this surface, then do nothing.
-        if (state.destroyPending) return;
-
-        state.createPending = true;
-        FrameLayout.LayoutParams lp = new FrameLayout.LayoutParams(
-                ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
-        state.attachTo(mParentView, lp);
-        mParentView.bringChildToFront(state.surfaceView);
-        mParentView.postInvalidateOnAnimation();
-    }
-
-    /**
-     * Post a Runnable to attach |state|.  This is helpful, since one cannot directly interact with
-     * the View heirarchy during Surface callbacks.
-     */
-    private void attachSurfaceLater(final SurfaceState state) {
-        // We shouldn't try to post construction if there's an in-flight destroy.
-        assert !state.destroyPending;
-        state.createPending = true;
-
-        mParentView.post(new Runnable() {
-            @Override
-            public void run() {
-                attachSurfaceNow(state);
-            }
-        });
-    }
-
-    /**
-     * Cause the client to disown |state| if it currently owns it.  This involves notifying it that
-     * the surface has been destroyed (recall that ownership involves getting created).  It's okay
-     * if |state| is null or isn't owned by the client.
-     */
-    private void disownClientSurface(SurfaceState state) {
-        if (mOwnedByClient != state || state == null) return;
-
-        mClient.surfaceDestroyed(mOwnedByClient.surfaceHolder());
-        mOwnedByClient = null;
-    }
-
-    /**
-     * Detach |state| from |mParentView| immediately.
-     */
-    private void detachSurfaceNow(SurfaceState state) {
-        // If we're called while we're not attached, then do nothing.  This makes it easier for the
-        // client, since it doesn't have to keep track of whether the outgoing surface has been
-        // destroyed or not.  The client will be notified (or has already) when the surface is
-        // destroyed, if it currently owns it.
-        if (state.isAttached()) {
-            // We are attached.  If the surface is not valid, then Android has destroyed it for some
-            // other reason, and we should clean up.  Otherwise, just wait for Android to finish.
-            final boolean valid = state.isValid();
-
-            // If the surface is valid, then we expect a callback to surfaceDestroyed eventually.
-            state.destroyPending = valid;
-
-            // Note that this might call back surfaceDestroyed before returning!
-            state.detachFromParent();
-
-            // If the surface was valid before, then we expect a surfaceDestroyed callback, which
-            // might have arrived during removeView.  Either way, that callback will finish cleanup
-            // of |state|.
-            if (valid) return;
-        }
-
-        // The surface isn't attached, or was attached but wasn't currently valid.  Either way,
-        // we're not going to get a destroy, so notify the client now if needed.
-        disownClientSurface(state);
-
-        // If the client has since re-requested the surface, then start construction.
-        if (state == mRequestedByClient) attachSurfaceNow(mRequestedByClient);
-    }
-
-    /**
-     * Post detachment of |state|.  This is safe during Surface callbacks.
-     */
-    private void detachSurfaceLater(final SurfaceState state) {
-        // If |state| is not attached, then do nothing.  There might be a destroy pending from
-        // Android, but in any case leave it be.
-        if (!state.isAttached()) return;
-
-        state.destroyPending = true;
-        mParentView.post(new Runnable() {
-            @Override
-            public void run() {
-                detachSurfaceNow(state);
-            }
-        });
-    }
-}
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/CompositorView.java b/chrome/android/java/src/org/chromium/chrome/browser/compositor/CompositorView.java
index 1d520a3..8fb53663 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/compositor/CompositorView.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/compositor/CompositorView.java
@@ -1,4 +1,4 @@
-// Copyright 2016 The Chromium Authors. All rights reserved.
+// Copyright 2015 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.
 
@@ -9,7 +9,6 @@
 import android.graphics.Color;
 import android.graphics.PixelFormat;
 import android.graphics.Rect;
-import android.graphics.drawable.Drawable;
 import android.os.Build;
 import android.view.Display;
 import android.view.MotionEvent;
@@ -18,9 +17,9 @@
 import android.view.SurfaceView;
 import android.view.View;
 import android.view.WindowManager;
-import android.widget.FrameLayout;
 
 import org.chromium.base.CommandLine;
+import org.chromium.base.Log;
 import org.chromium.base.TraceEvent;
 import org.chromium.base.annotations.CalledByNative;
 import org.chromium.base.annotations.JNINamespace;
@@ -48,7 +47,7 @@
  * The is the {@link View} displaying the ui compositor results; including webpages and tabswitcher.
  */
 @JNINamespace("android")
-public class CompositorView extends FrameLayout implements SurfaceHolder.Callback2 {
+public class CompositorView extends SurfaceView implements SurfaceHolder.Callback2 {
     private static final String TAG = "CompositorView";
     private static final long NANOSECONDS_PER_MILLISECOND = 1000000;
 
@@ -56,14 +55,6 @@
     private final Rect mCacheAppRect = new Rect();
     private final int[] mCacheViewPosition = new int[2];
 
-    private CompositorSurfaceManager mCompositorSurfaceManager;
-    private boolean mOverlayVideoEnabled;
-    private boolean mAlwaysTranslucent;
-
-    // Are we waiting to hide the outgoing surface until the foreground has something to display?
-    // If == 0, then no.  If > 0, then yes.  We'll hide when it transitions from one to zero.
-    private int mFramesUntilHideBackground;
-
     private long mNativeCompositorView;
     private final LayoutRenderHost mRenderHost;
     private boolean mEnableTabletTabStack;
@@ -82,9 +73,14 @@
     private TabContentManager mTabContentManager;
 
     private View mRootView;
+    private int mSurfaceWidth;
+    private int mSurfaceHeight;
     private boolean mPreloadedResources;
     private List<Runnable> mDrawingFinishedCallbacks;
 
+    // The current SurfaceView pixel format. Defaults to OPAQUE.
+    private int mCurrentPixelFormat = PixelFormat.OPAQUE;
+
     /**
      * Creates a {@link CompositorView}. This can be called only after the native library is
      * properly loaded.
@@ -95,8 +91,8 @@
         super(c);
         mRenderHost = host;
         resetFlags();
-
         setVisibility(View.INVISIBLE);
+        setZOrderMediaOverlay(true);
     }
 
     /**
@@ -165,7 +161,7 @@
      * Should be called for cleanup when the CompositorView instance is no longer used.
      */
     public void shutDown() {
-        mCompositorSurfaceManager.shutDown();
+        getHolder().removeCallback(this);
         if (mNativeCompositorView != 0) nativeDestroy(mNativeCompositorView);
         mNativeCompositorView = 0;
     }
@@ -186,23 +182,9 @@
         mNativeCompositorView = nativeInit(lowMemDevice,
                 windowAndroid.getNativePointer(), layerTitleCache, tabContentManager);
 
-        // compositor_impl_android.cc will use 565 EGL surfaces if and only if we're using a low
-        // memory device, and no alpha channel is desired.  Otherwise, it will use 8888.  Since
-        // SurfaceFlinger doesn't need the eOpaque flag to optimize out alpha blending during
-        // composition if the buffer has no alpha channel, we can avoid using the extra background
-        // surface (and the memory it requires) in the low memory case.  The output buffer will
-        // either have an alpha channel or not, depending on whether the compositor needs it.  We
-        // can keep the surface translucent all the times without worrying about the impact on power
-        // usage during SurfaceFlinger composition. We might also want to set |mAlwaysTranslucent|
-        // on non-low memory devices, if we are running on hardware that implements efficient alpha
-        // blending.
-        mAlwaysTranslucent = lowMemDevice;
-
-        mCompositorSurfaceManager = new CompositorSurfaceManager(this, this);
-        // In case the background drawable was set before now, update it.
-        mCompositorSurfaceManager.setBackgroundDrawable(getBackground());
-        mCompositorSurfaceManager.setWillNotDraw(willNotDraw());
-        mCompositorSurfaceManager.requestSurface(getSurfacePixelFormat());
+        assert !getHolder().getSurface().isValid()
+            : "Surface created before native library loaded.";
+        getHolder().addCallback(this);
 
         // Cover the black surface before it has valid content.
         setBackgroundColor(Color.WHITE);
@@ -233,30 +215,13 @@
     }
 
     /**
-     * @see SurfaceView#getHolder
-     */
-    SurfaceHolder getHolder() {
-        return mCompositorSurfaceManager.getHolder();
-    }
-
-    /**
      * Enables/disables overlay video mode. Affects alpha blending on this view.
      * @param enabled Whether to enter or leave overlay video mode.
      */
     public void setOverlayVideoMode(boolean enabled) {
+        mCurrentPixelFormat = enabled ? PixelFormat.TRANSLUCENT : PixelFormat.OPAQUE;
+        getHolder().setFormat(mCurrentPixelFormat);
         nativeSetOverlayVideoMode(mNativeCompositorView, enabled);
-
-        mOverlayVideoEnabled = enabled;
-        // Request the new surface, even if it's the same as the old one.  We'll get a synthetic
-        // destroy / create / changed callback in that case, possibly before this returns.
-        mCompositorSurfaceManager.requestSurface(getSurfacePixelFormat());
-        // Note that we don't know if we'll get a surfaceCreated / surfaceDestoyed for this surface.
-        // We do know that if we do get one, then it will be for the surface that we just requested.
-    }
-
-    private int getSurfacePixelFormat() {
-        return (mOverlayVideoEnabled || mAlwaysTranslucent) ? PixelFormat.TRANSLUCENT
-                                                            : PixelFormat.OPAQUE;
     }
 
     @Override
@@ -275,24 +240,22 @@
     @Override
     public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
         if (mNativeCompositorView == 0) return;
-
         nativeSurfaceChanged(mNativeCompositorView, format, width, height, holder.getSurface());
         mRenderHost.onPhysicalBackingSizeChanged(width, height);
+        mSurfaceWidth = width;
+        mSurfaceHeight = height;
     }
 
     @Override
     public void surfaceCreated(SurfaceHolder holder) {
         if (mNativeCompositorView == 0) return;
-
         nativeSurfaceCreated(mNativeCompositorView);
-        mFramesUntilHideBackground = 2;
         mRenderHost.onSurfaceCreated();
     }
 
     @Override
     public void surfaceDestroyed(SurfaceHolder holder) {
         if (mNativeCompositorView == 0) return;
-
         nativeSurfaceDestroyed(mNativeCompositorView);
     }
 
@@ -321,7 +284,29 @@
      */
     @CalledByNative
     private void onJellyBeanSurfaceDisconnectWorkaround(boolean inOverlayMode) {
-        mCompositorSurfaceManager.recreateSurfaceForJellyBean();
+        // There is a bug in JellyBean because of which we will not be able to
+        // reconnect to the existing Surface after we launch a new GPU process.
+        // We simply trick the JB Android code to allocate a new Surface.
+        // It does a strict comparison between the current format and the requested
+        // one, even if they are the same in practice. Furthermore, the format
+        // does not matter here since the producer-side EGL config overwrites it
+        // (but transparency might matter).
+        switch (mCurrentPixelFormat) {
+            case PixelFormat.OPAQUE:
+                mCurrentPixelFormat = PixelFormat.RGBA_8888;
+                break;
+            case PixelFormat.RGBA_8888:
+                mCurrentPixelFormat = inOverlayMode
+                        ? PixelFormat.TRANSLUCENT : PixelFormat.OPAQUE;
+                break;
+            case PixelFormat.TRANSLUCENT:
+                mCurrentPixelFormat = PixelFormat.RGBA_8888;
+                break;
+            default:
+                assert false;
+                Log.e(TAG, "Unknown current pixel format.");
+        }
+        getHolder().setFormat(mCurrentPixelFormat);
     }
 
     /**
@@ -348,20 +333,6 @@
 
     @CalledByNative
     private void didSwapBuffers() {
-        // If we're in the middle of a surface swap, then see if we've received a new frame yet for
-        // the new surface before hiding the outgoing surface.
-        if (mFramesUntilHideBackground > 1) {
-            // We need at least one more frame before we hide the outgoing surface.  Make sure that
-            // there will be a frame.
-            mFramesUntilHideBackground--;
-            requestRender();
-        } else if (mFramesUntilHideBackground == 1) {
-            // We can hide the outgoing surface, since the incoming one has a frame.  It's okay if
-            // we've don't have an unowned surface.
-            mFramesUntilHideBackground = 0;
-            mCompositorSurfaceManager.doneWithUnownedSurface();
-        }
-
         List<Runnable> runnables = mDrawingFinishedCallbacks;
         mDrawingFinishedCallbacks = null;
         if (runnables == null) return;
@@ -410,24 +381,6 @@
         TraceEvent.end("CompositorView:finalizeLayers");
     }
 
-    @Override
-    public void setWillNotDraw(boolean willNotDraw) {
-        if (mCompositorSurfaceManager != null) {
-            mCompositorSurfaceManager.setWillNotDraw(willNotDraw);
-        }
-    }
-
-    @Override
-    public void setBackgroundDrawable(Drawable background) {
-        // We override setBackgroundDrawable since that's the common entry point from all the
-        // setBackground* calls in View.  We still call to setBackground on the SurfaceView because
-        // SetBackgroundDrawable is deprecated, and the semantics are the same I think.
-        super.setBackgroundDrawable(background);
-        if (mCompositorSurfaceManager != null) {
-            mCompositorSurfaceManager.setBackgroundDrawable(background);
-        }
-    }
-
     // Implemented in native
     private native long nativeInit(boolean lowMemDevice, long nativeWindowAndroid,
             LayerTitleCache layerTitleCache, TabContentManager tabContentManager);
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/CompositorViewHolder.java b/chrome/android/java/src/org/chromium/chrome/browser/compositor/CompositorViewHolder.java
index 61e195c2..9499106 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/compositor/CompositorViewHolder.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/compositor/CompositorViewHolder.java
@@ -20,6 +20,7 @@
 import android.util.Pair;
 import android.view.DragEvent;
 import android.view.MotionEvent;
+import android.view.SurfaceView;
 import android.view.View;
 import android.view.ViewGroup;
 import android.view.accessibility.AccessibilityEvent;
@@ -417,9 +418,9 @@
     }
 
     /**
-     * @return The SurfaceView proxy used by the Compositor.
+     * @return The SurfaceView used by the Compositor.
      */
-    public View getCompositorView() {
+    public SurfaceView getSurfaceView() {
         return mCompositorView;
     }
 
@@ -975,7 +976,7 @@
         mTabModelSelector = null;
         mLayerTitleCache.setTabModelSelector(null);
         setTab(null);
-        getCompositorView().setVisibility(View.INVISIBLE);
+        getSurfaceView().setVisibility(View.INVISIBLE);
         return selector;
     }
 
@@ -985,7 +986,7 @@
      * @param tabModelSelector
      */
     public void onExitVR(TabModelSelector tabModelSelector) {
-        getCompositorView().setVisibility(View.VISIBLE);
+        getSurfaceView().setVisibility(View.VISIBLE);
         attachToTabModelSelector(tabModelSelector);
     }
 
diff --git a/chrome/android/java_sources.gni b/chrome/android/java_sources.gni
index 1f3e667..0f5e903 100644
--- a/chrome/android/java_sources.gni
+++ b/chrome/android/java_sources.gni
@@ -126,7 +126,6 @@
   "java/src/org/chromium/chrome/browser/childaccounts/ChildAccountFeedbackReporter.java",
   "java/src/org/chromium/chrome/browser/childaccounts/ChildAccountService.java",
   "java/src/org/chromium/chrome/browser/childaccounts/ExternalFeedbackReporter.java",
-  "java/src/org/chromium/chrome/browser/compositor/CompositorSurfaceManager.java",
   "java/src/org/chromium/chrome/browser/compositor/CompositorView.java",
   "java/src/org/chromium/chrome/browser/compositor/CompositorViewHolder.java",
   "java/src/org/chromium/chrome/browser/compositor/Invalidator.java",
@@ -1462,6 +1461,7 @@
   "javatests/src/org/chromium/chrome/browser/preferences/password/SavePasswordsPreferencesTest.java",
   "javatests/src/org/chromium/chrome/browser/preferences/privacy/ClearBrowsingDataPreferencesTest.java",
   "javatests/src/org/chromium/chrome/browser/preferences/privacy/PrivacyPreferencesManagerTest.java",
+  "javatests/src/org/chromium/chrome/browser/preferences/privacy/PrivacyPreferencesManagerNativeTest.java",
   "javatests/src/org/chromium/chrome/browser/preferences/website/ManageSpaceActivityTest.java",
   "javatests/src/org/chromium/chrome/browser/preferences/website/SiteSettingsPreferencesTest.java",
   "javatests/src/org/chromium/chrome/browser/preferences/website/WebsiteAddressTest.java",
@@ -1560,7 +1560,6 @@
   "junit/src/org/chromium/chrome/browser/ShortcutHelperTest.java",
   "junit/src/org/chromium/chrome/browser/SSLClientCertificateRequestTest.java",
   "junit/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelperTest.java",
-  "junit/src/org/chromium/chrome/browser/compositor/CompositorSurfaceManagerTest.java",
   "junit/src/org/chromium/chrome/browser/contextualsearch/ContextualSearchSelectionControllerTest.java",
   "junit/src/org/chromium/chrome/browser/cookies/CanonicalCookieTest.java",
   "junit/src/org/chromium/chrome/browser/crash/LogcatExtractionRunnableUnitTest.java",
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/preferences/privacy/PrivacyPreferencesManagerNativeTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/preferences/privacy/PrivacyPreferencesManagerNativeTest.java
index 1f62534c..4010656 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/preferences/privacy/PrivacyPreferencesManagerNativeTest.java
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/preferences/privacy/PrivacyPreferencesManagerNativeTest.java
@@ -12,6 +12,7 @@
 import org.chromium.base.CommandLine;
 import org.chromium.base.ContextUtils;
 import org.chromium.base.test.util.AdvancedMockContext;
+import org.chromium.base.test.util.DisabledTest;
 import org.chromium.base.test.util.Feature;
 import org.chromium.chrome.browser.preferences.PrefServiceBridge;
 import org.chromium.content.browser.test.NativeLibraryTestBase;
@@ -29,7 +30,7 @@
     @SmallTest
     @Feature({"Android-AppBase"})
     @UiThreadTest
-    public void testSyncUsageAndCrashReporting {
+    public void testSyncUsageAndCrashReporting() {
         CommandLine.init(null);
         PermissionContext context = new PermissionContext(getInstrumentation().getTargetContext());
         PrefServiceBridge prefBridge = PrefServiceBridge.getInstance();
@@ -47,6 +48,7 @@
     @SmallTest
     @Feature({"Android-AppBase"})
     @UiThreadTest
+    @DisabledTest(message = "crbug.com/700500")
     public void testSetUsageAndCrashReporting() {
         CommandLine.init(null);
         PermissionContext context = new PermissionContext(getInstrumentation().getTargetContext());
diff --git a/chrome/android/junit/src/org/chromium/chrome/browser/compositor/CompositorSurfaceManagerTest.java b/chrome/android/junit/src/org/chromium/chrome/browser/compositor/CompositorSurfaceManagerTest.java
deleted file mode 100644
index 4ed9c7c..0000000
--- a/chrome/android/junit/src/org/chromium/chrome/browser/compositor/CompositorSurfaceManagerTest.java
+++ /dev/null
@@ -1,440 +0,0 @@
-// Copyright 2017 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.chrome.browser.compositor;
-
-import android.app.Activity;
-import android.graphics.PixelFormat;
-import android.view.Surface;
-import android.view.SurfaceHolder;
-import android.view.SurfaceView;
-import android.widget.FrameLayout;
-
-import static org.hamcrest.Matchers.lessThan;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertThat;
-import static org.junit.Assert.assertTrue;
-import static org.mockito.ArgumentMatchers.anyInt;
-import static org.mockito.ArgumentMatchers.eq;
-import static org.mockito.Mockito.times;
-import static org.mockito.Mockito.verify;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.ArgumentMatchers;
-import org.mockito.Mock;
-import org.mockito.MockitoAnnotations;
-import org.robolectric.Robolectric;
-import org.robolectric.Shadows;
-import org.robolectric.annotation.Config;
-import org.robolectric.annotation.Implementation;
-import org.robolectric.annotation.Implements;
-import org.robolectric.shadows.ShadowLooper;
-import org.robolectric.shadows.ShadowSurfaceView;
-
-import org.chromium.base.test.util.Feature;
-import org.chromium.testing.local.LocalRobolectricTestRunner;
-
-import java.util.Set;
-
-/**
- * Unit tests for the CompositorSurfaceManager.
- */
-@RunWith(LocalRobolectricTestRunner.class)
-@Config(manifest = Config.NONE)
-public class CompositorSurfaceManagerTest {
-    @Mock
-    private SurfaceHolder.Callback mCallback;
-
-    private CompositorSurfaceManager mManager;
-
-    private FrameLayout mLayout;
-
-    /**
-     * Implementation of a SurfaceView shadow that provides additional functionality for controlling
-     * the state of the underlying (fake) Surface.
-     */
-    @Implements(SurfaceView.class)
-    public static class MyShadowSurfaceView extends ShadowSurfaceView {
-        private final MyFakeSurfaceHolder mHolder = new MyFakeSurfaceHolder();
-
-        /**
-         * Robolectric's FakeSurfaceHolder doesn't keep track of the format, etc.
-         */
-        public static class MyFakeSurfaceHolder extends ShadowSurfaceView.FakeSurfaceHolder {
-            /**
-             * Fake surface that lets us control whether it's valid or not.
-             */
-            public static class MyFakeSurface extends Surface {
-                public boolean valid = false;
-
-                @Override
-                public boolean isValid() {
-                    return valid;
-                }
-            }
-
-            private int mFormat = PixelFormat.UNKNOWN;
-            private final MyFakeSurface mSurface = new MyFakeSurface();
-
-            @Implementation
-            public void setFormat(int format) {
-                mFormat = format;
-            }
-
-            public int getFormat() {
-                return mFormat;
-            }
-
-            // Return a surface that we can control if it's valid or not.
-            @Override
-            public Surface getSurface() {
-                return getFakeSurface();
-            }
-
-            public MyFakeSurface getFakeSurface() {
-                return mSurface;
-            }
-        }
-
-        public MyShadowSurfaceView() {}
-
-        @Implementation
-        public SurfaceHolder getHolder() {
-            return getMyFakeSurfaceHolder();
-        }
-
-        @Override
-        public FakeSurfaceHolder getFakeSurfaceHolder() {
-            return getMyFakeSurfaceHolder();
-        }
-
-        public MyFakeSurfaceHolder getMyFakeSurfaceHolder() {
-            return mHolder;
-        }
-    }
-
-    @Before
-    public void beforeTest() {
-        MockitoAnnotations.initMocks(this);
-        Activity activity = Robolectric.buildActivity(Activity.class).setup().get();
-        mLayout = new FrameLayout(activity);
-        mManager = new CompositorSurfaceManager(mLayout, mCallback);
-    }
-
-    private void runDelayedTasks() {
-        ShadowLooper.runUiThreadTasksIncludingDelayedTasks();
-    }
-
-    /**
-     * Return the callback for |view|, or null.  Will get mad if there's more than one.
-     */
-    private SurfaceHolder.Callback callbackFor(SurfaceView view) {
-        MyShadowSurfaceView viewShadow = (MyShadowSurfaceView) Shadows.shadowOf(view);
-        ShadowSurfaceView.FakeSurfaceHolder viewHolder = viewShadow.getFakeSurfaceHolder();
-        Set<SurfaceHolder.Callback> callbacks = viewHolder.getCallbacks();
-        // Zero or one is okay.
-        assertThat(callbacks.size(), lessThan(2));
-
-        if (callbacks.size() == 1) return callbacks.iterator().next();
-
-        return null;
-    }
-
-    private MyShadowSurfaceView.MyFakeSurfaceHolder fakeHolderFor(SurfaceView view) {
-        MyShadowSurfaceView viewShadow = (MyShadowSurfaceView) Shadows.shadowOf(view);
-        return viewShadow.getMyFakeSurfaceHolder();
-    }
-
-    private void setSurfaceValid(SurfaceView view, boolean valid) {
-        fakeHolderFor(view).getFakeSurface().valid = valid;
-    }
-
-    /**
-     * Find and return the SurfaceView with format |format|.
-     */
-    private SurfaceView findSurface(int format) {
-        final int childCount = mLayout.getChildCount();
-        for (int i = 0; i < childCount; i++) {
-            final SurfaceView child = (SurfaceView) mLayout.getChildAt(i);
-            if (fakeHolderFor(child).getFormat() == format) return child;
-        }
-
-        return null;
-    }
-
-    /**
-     * Request the pixel format |format|, and return the SurfaceView for it if it's attached.  You
-     * are responsible for sending surfaceCreated / Changed to |mManager| if you want it to think
-     * that Android has provided the Surface.
-     */
-    private SurfaceView requestSurface(int format) {
-        mManager.requestSurface(format);
-        runDelayedTasks();
-
-        return findSurface(format);
-    }
-
-    /**
-     * Request format |format|, and send created / changed callbacks to |mManager| as if Android
-     * had provided the underlying Surface.
-     */
-    private SurfaceView requestThenCreateSurface(int format) {
-        SurfaceView view = requestSurface(format);
-        setSurfaceValid(view, true);
-        callbackFor(view).surfaceCreated(view.getHolder());
-        final int actualFormat =
-                (format == PixelFormat.OPAQUE) ? PixelFormat.RGB_565 : PixelFormat.RGBA_8888;
-        final int width = 320;
-        final int height = 240;
-        callbackFor(view).surfaceChanged(view.getHolder(), actualFormat, width, height);
-
-        return view;
-    }
-
-    @Test
-    @Feature("Compositor")
-    @Config(shadows = {MyShadowSurfaceView.class})
-    public void testRequestOpaqueSurface() {
-        // Request a SurfaceView, and test in detail that it worked.
-        SurfaceView opaque = requestSurface(PixelFormat.OPAQUE);
-        verify(mCallback, times(0)).surfaceCreated(ArgumentMatchers.<SurfaceHolder>any());
-        verify(mCallback, times(0))
-                .surfaceChanged(
-                        ArgumentMatchers.<SurfaceHolder>any(), anyInt(), anyInt(), anyInt());
-        verify(mCallback, times(0)).surfaceDestroyed(ArgumentMatchers.<SurfaceHolder>any());
-
-        // Check that there's an opaque SurfaceView .
-        assertEquals(1, mLayout.getChildCount());
-        assertTrue(fakeHolderFor(opaque).getFormat() == PixelFormat.OPAQUE);
-
-        // Verify that we are notified when the surface is created.
-        callbackFor(opaque).surfaceCreated(opaque.getHolder());
-        verify(mCallback, times(1)).surfaceCreated(opaque.getHolder());
-        verify(mCallback, times(0)).surfaceDestroyed(ArgumentMatchers.<SurfaceHolder>any());
-
-        // Verify that we are notified when the surface is changed.
-        final int format = PixelFormat.RGB_565;
-        final int width = 320;
-        final int height = 240;
-        callbackFor(opaque).surfaceChanged(opaque.getHolder(), format, width, height);
-        verify(mCallback, times(1)).surfaceCreated(opaque.getHolder());
-        verify(mCallback, times(1)).surfaceChanged(opaque.getHolder(), format, width, height);
-        verify(mCallback, times(0)).surfaceDestroyed(ArgumentMatchers.<SurfaceHolder>any());
-
-        // Verify that we are notified when the surface is destroyed.
-        callbackFor(opaque).surfaceDestroyed(opaque.getHolder());
-        verify(mCallback, times(1)).surfaceCreated(opaque.getHolder());
-        verify(mCallback, times(1)).surfaceChanged(opaque.getHolder(), format, width, height);
-        verify(mCallback, times(1)).surfaceDestroyed(opaque.getHolder());
-    }
-
-    @Test
-    @Feature("Compositor")
-    @Config(shadows = {MyShadowSurfaceView.class})
-    public void testRequestOpaqueThenTranslucentSurface() {
-        // Request opaque then translucent.
-        SurfaceView opaque = requestThenCreateSurface(PixelFormat.OPAQUE);
-        SurfaceView translucent = requestThenCreateSurface(PixelFormat.TRANSLUCENT);
-
-        // Verify that we received a destroy for |opaque| and created / changed for |translucent|.
-        verify(mCallback, times(1)).surfaceDestroyed(opaque.getHolder());
-        verify(mCallback, times(1)).surfaceCreated(translucent.getHolder());
-        verify(mCallback, times(1))
-                .surfaceChanged(eq(translucent.getHolder()), anyInt(), anyInt(), anyInt());
-
-        // Both views should be present.
-        assertEquals(2, mLayout.getChildCount());
-
-        // Only the translucent surface should be left.  Note that the old view is still valid.
-        mManager.doneWithUnownedSurface();
-        runDelayedTasks();
-        assertEquals(1, mLayout.getChildCount());
-        assertNotNull(findSurface(PixelFormat.TRANSLUCENT));
-    }
-
-    @Test
-    @Feature("Compositor")
-    @Config(shadows = {MyShadowSurfaceView.class})
-    public void testRequestSameSurface() {
-        // Request an opaque surface, get it, then request it again.  Verify that we get synthetic
-        // create / destroy callbacks.
-        SurfaceView opaque = requestThenCreateSurface(PixelFormat.OPAQUE);
-        verify(mCallback, times(1)).surfaceCreated(opaque.getHolder());
-        verify(mCallback, times(1))
-                .surfaceChanged(eq(opaque.getHolder()), anyInt(), anyInt(), anyInt());
-        verify(mCallback, times(0)).surfaceDestroyed(opaque.getHolder());
-
-        // Surface is curerntly valid.  Request again.  We should get back a destroy and create.
-        assertEquals(opaque, requestSurface(PixelFormat.OPAQUE));
-        verify(mCallback, times(2)).surfaceCreated(opaque.getHolder());
-        verify(mCallback, times(2))
-                .surfaceChanged(eq(opaque.getHolder()), anyInt(), anyInt(), anyInt());
-        verify(mCallback, times(1)).surfaceDestroyed(opaque.getHolder());
-        assertEquals(1, mLayout.getChildCount());
-    }
-
-    @Test
-    @Feature("Compositor")
-    @Config(shadows = {MyShadowSurfaceView.class})
-    public void testRequestSameSurfaceBeforeReady() {
-        // Request an opaque surface, then request it again before the first one shows up.
-        SurfaceView opaque = requestSurface(PixelFormat.OPAQUE);
-        verify(mCallback, times(0)).surfaceCreated(opaque.getHolder());
-        verify(mCallback, times(0))
-                .surfaceChanged(eq(opaque.getHolder()), anyInt(), anyInt(), anyInt());
-        verify(mCallback, times(0)).surfaceDestroyed(opaque.getHolder());
-
-        // Request again.  We shouldn't get any callbacks, since the surface is still pending.
-        assertEquals(opaque, requestSurface(PixelFormat.OPAQUE));
-        verify(mCallback, times(0)).surfaceCreated(opaque.getHolder());
-        verify(mCallback, times(0))
-                .surfaceChanged(eq(opaque.getHolder()), anyInt(), anyInt(), anyInt());
-        verify(mCallback, times(0)).surfaceDestroyed(opaque.getHolder());
-
-        // Only the opaque view should be attached.
-        assertEquals(1, mLayout.getChildCount());
-
-        // When the surface is created, we should get notified created / changed, but not destroyed.
-        callbackFor(opaque).surfaceCreated(opaque.getHolder());
-        verify(mCallback, times(1)).surfaceCreated(opaque.getHolder());
-
-        callbackFor(opaque).surfaceChanged(opaque.getHolder(), PixelFormat.RGB_565, 320, 240);
-        verify(mCallback, times(1))
-                .surfaceChanged(eq(opaque.getHolder()), anyInt(), anyInt(), anyInt());
-        verify(mCallback, times(0)).surfaceDestroyed(opaque.getHolder());
-    }
-
-    @Test
-    @Feature("Compositor")
-    @Config(shadows = {MyShadowSurfaceView.class})
-    public void testRequestDifferentSurfacesBeforeReady() {
-        // Request an opaque surface, then request the translucent one before the it one shows up.
-        SurfaceView opaque = requestSurface(PixelFormat.OPAQUE);
-        verify(mCallback, times(0)).surfaceCreated(opaque.getHolder());
-        verify(mCallback, times(0))
-                .surfaceChanged(eq(opaque.getHolder()), anyInt(), anyInt(), anyInt());
-        verify(mCallback, times(0)).surfaceDestroyed(opaque.getHolder());
-
-        // Request translucent.  We should get no callbacks, but both views should be attached.
-        SurfaceView translucent = requestSurface(PixelFormat.TRANSLUCENT);
-        verify(mCallback, times(0)).surfaceCreated(opaque.getHolder());
-        verify(mCallback, times(0)).surfaceCreated(translucent.getHolder());
-        assertEquals(2, mLayout.getChildCount());
-
-        // If the opaque surface arrives, we shouldn't hear about it.  It should be detached, since
-        // we've requested the other one.
-        callbackFor(opaque).surfaceCreated(opaque.getHolder());
-        runDelayedTasks();
-        assertEquals(1, mLayout.getChildCount());
-        verify(mCallback, times(0)).surfaceCreated(opaque.getHolder());
-        verify(mCallback, times(0)).surfaceCreated(translucent.getHolder());
-        verify(mCallback, times(0)).surfaceDestroyed(opaque.getHolder());
-
-        // When we create the translucent surface, we should be notified.
-        callbackFor(translucent).surfaceCreated(translucent.getHolder());
-        verify(mCallback, times(0)).surfaceCreated(opaque.getHolder());
-        verify(mCallback, times(1)).surfaceCreated(translucent.getHolder());
-    }
-
-    @Test
-    @Feature("Compositor")
-    @Config(shadows = {MyShadowSurfaceView.class})
-    public void testPendingSurfaceChangedCallback() {
-        // Request an opaque surface, and request it again between 'created' and 'changed'.  We
-        // should get a synthetic 'created', but a real 'changed' callback.
-        SurfaceView opaque = requestSurface(PixelFormat.OPAQUE);
-        callbackFor(opaque).surfaceCreated(opaque.getHolder());
-        runDelayedTasks();
-
-        // Sanity check.
-        verify(mCallback, times(1)).surfaceCreated(opaque.getHolder());
-        verify(mCallback, times(0))
-                .surfaceChanged(eq(opaque.getHolder()), anyInt(), anyInt(), anyInt());
-
-        // Re-request while 'changed' is still pending.  We should get a synthetic 'destroyed' and
-        // synthetic 'created'.
-        assertEquals(opaque, requestSurface(PixelFormat.OPAQUE));
-        verify(mCallback, times(2)).surfaceCreated(opaque.getHolder());
-        verify(mCallback, times(1)).surfaceDestroyed(opaque.getHolder());
-        verify(mCallback, times(0))
-                .surfaceChanged(eq(opaque.getHolder()), anyInt(), anyInt(), anyInt());
-
-        // Send 'changed', and expect that we'll receive it.
-        callbackFor(opaque).surfaceChanged(opaque.getHolder(), PixelFormat.RGB_565, 320, 240);
-        verify(mCallback, times(1))
-                .surfaceChanged(eq(opaque.getHolder()), anyInt(), anyInt(), anyInt());
-    }
-
-    @Test
-    @Feature("Compositor")
-    @Config(shadows = {MyShadowSurfaceView.class})
-    public void testJellyBeanWorkaround() {
-        // See if recreateSurfaceForJellyBean destroys / re-creates the surface.
-        // should get a synthetic 'created', but a real 'changed' callback.
-        SurfaceView opaque = requestThenCreateSurface(PixelFormat.OPAQUE);
-        verify(mCallback, times(1)).surfaceCreated(opaque.getHolder());
-        assertEquals(1, mLayout.getChildCount());
-
-        // We should be notified that the surface was destroyed via synthetic callback, and the
-        // surface should be detached.
-        mManager.recreateSurfaceForJellyBean();
-        verify(mCallback, times(1)).surfaceCreated(opaque.getHolder());
-        verify(mCallback, times(1)).surfaceDestroyed(opaque.getHolder());
-        assertEquals(0, mLayout.getChildCount());
-
-        // When the surface really is destroyed, it should be re-attached.  We should not be
-        // notified again, though.
-        callbackFor(opaque).surfaceDestroyed(opaque.getHolder());
-        verify(mCallback, times(1)).surfaceCreated(opaque.getHolder());
-        verify(mCallback, times(1)).surfaceDestroyed(opaque.getHolder());
-        assertEquals(1, mLayout.getChildCount());
-
-        // When the surface is re-created, we should be notified.
-        callbackFor(opaque).surfaceCreated(opaque.getHolder());
-        verify(mCallback, times(2)).surfaceCreated(opaque.getHolder());
-        verify(mCallback, times(1)).surfaceDestroyed(opaque.getHolder());
-        assertEquals(1, mLayout.getChildCount());
-    }
-
-    @Test
-    @Feature("Compositor")
-    @Config(shadows = {MyShadowSurfaceView.class})
-    public void testRequestSurfaceDuringDestruction() {
-        // If we re-request a surface while we're tearing it down, it should be re-attached and
-        // given back to us once the destruction completes.
-        SurfaceView opaque = requestThenCreateSurface(PixelFormat.OPAQUE);
-        SurfaceView translucent = requestThenCreateSurface(PixelFormat.TRANSLUCENT);
-        mManager.doneWithUnownedSurface();
-
-        // The transparent surface should be attached, and the opaque one detached.
-        assertEquals(1, mLayout.getChildCount());
-        assertNotNull(findSurface(PixelFormat.TRANSLUCENT));
-
-        // Re-request the opaque surface.  Nothing should happen until it's destroyed.  It should
-        // not be re-attached, since that is also deferred until destruction.
-        assertEquals(null, requestSurface(PixelFormat.OPAQUE));
-        assertEquals(1, mLayout.getChildCount());
-        assertNotNull(findSurface(PixelFormat.TRANSLUCENT));
-
-        // When the opaque surface is destroyed, then it should be re-attached.  No callbacks shoud
-        // have arrived yet, except for initial creation and (synthetic) destroyed when we got the
-        // translucent surface.
-        callbackFor(opaque).surfaceDestroyed(opaque.getHolder());
-        assertEquals(2, mLayout.getChildCount());
-        verify(mCallback, times(1)).surfaceCreated(opaque.getHolder());
-        verify(mCallback, times(1)).surfaceDestroyed(opaque.getHolder());
-        verify(mCallback, times(0)).surfaceDestroyed(translucent.getHolder());
-
-        // When the opaque surface becomes available, we'll get the synthetic destroy for the
-        // translucent one that we lost ownership of, and the real create for the opaque one.
-        callbackFor(opaque).surfaceCreated(opaque.getHolder());
-        assertEquals(2, mLayout.getChildCount());
-        verify(mCallback, times(2)).surfaceCreated(opaque.getHolder());
-        verify(mCallback, times(1)).surfaceDestroyed(opaque.getHolder());
-        verify(mCallback, times(1)).surfaceDestroyed(translucent.getHolder());
-    }
-}
diff --git a/chrome/app/settings_strings.grdp b/chrome/app/settings_strings.grdp
index a49eecf..b25cfb1 100644
--- a/chrome/app/settings_strings.grdp
+++ b/chrome/app/settings_strings.grdp
@@ -1803,6 +1803,9 @@
   <message name="IDS_SETTINGS_SITE_SETTINGS_USB_DEVICES" desc="Label for the USB devices in site settings.">
     USB devices
   </message>
+  <message name="IDS_SETTINGS_SITE_SETTINGS_REMOVE_ZOOM_LEVEL" desc="Title tooltip and accessibility text for the button to remove zoom levels in site settings">
+    Remove zoom level
+  </message>
   <message name="IDS_SETTINGS_SITE_SETTINGS_ZOOM_LEVELS" desc="Label for the Zoom levels category in site settings.">
     Zoom levels
   </message>
diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
index 9cdec6b..17fcc30 100644
--- a/chrome/browser/BUILD.gn
+++ b/chrome/browser/BUILD.gn
@@ -3346,8 +3346,6 @@
       "obsolete_system/obsolete_system_win.cc",
       "pdf/pdf_extension_util.cc",
       "pdf/pdf_extension_util.h",
-      "power_usage_monitor/power_usage_monitor.cc",
-      "power_usage_monitor/power_usage_monitor.h",
       "process_singleton_modal_dialog_lock.cc",
       "process_singleton_modal_dialog_lock.h",
       "process_singleton_posix.cc",
diff --git a/chrome/browser/android/vr_shell/BUILD.gn b/chrome/browser/android/vr_shell/BUILD.gn
index fd7b38e..3cda088 100644
--- a/chrome/browser/android/vr_shell/BUILD.gn
+++ b/chrome/browser/android/vr_shell/BUILD.gn
@@ -19,6 +19,8 @@
       "animation.h",
       "easing.cc",
       "easing.h",
+      "mailbox_to_surface_bridge.cc",
+      "mailbox_to_surface_bridge.h",
       "non_presenting_gvr_delegate.cc",
       "non_presenting_gvr_delegate.h",
       "ui_elements.cc",
@@ -72,6 +74,7 @@
       "//content/public/common",
       "//device/gamepad",
       "//device/vr",
+      "//services/ui/public/cpp/gpu",
       "//ui/android",
       "//ui/base",
       "//ui/display",
diff --git a/chrome/browser/android/vr_shell/mailbox_to_surface_bridge.cc b/chrome/browser/android/vr_shell/mailbox_to_surface_bridge.cc
new file mode 100644
index 0000000..0972c3e
--- /dev/null
+++ b/chrome/browser/android/vr_shell/mailbox_to_surface_bridge.cc
@@ -0,0 +1,345 @@
+// Copyright 2017 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/android/vr_shell/mailbox_to_surface_bridge.h"
+
+#include <string>
+
+#include "base/logging.h"
+#include "base/memory/ptr_util.h"
+#include "base/sys_info.h"
+#include "cc/output/context_provider.h"
+#include "content/public/browser/android/compositor.h"
+#include "gpu/GLES2/gl2extchromium.h"
+#include "gpu/command_buffer/client/gles2_interface.h"
+#include "gpu/command_buffer/common/mailbox.h"
+#include "gpu/command_buffer/common/mailbox_holder.h"
+#include "gpu/command_buffer/common/sync_token.h"
+#include "gpu/ipc/client/gpu_channel_host.h"
+#include "gpu/ipc/common/gpu_surface_tracker.h"
+#include "services/ui/public/cpp/gpu/context_provider_command_buffer.h"
+#include "ui/gl/android/surface_texture.h"
+
+#include <android/native_window_jni.h>
+
+#define VOID_OFFSET(x) reinterpret_cast<void*>(x)
+#define SHADER(Src) #Src
+
+namespace {
+
+const char kQuadCopyVertex[] = SHADER(
+    /* clang-format off */
+    attribute vec4 a_Position;
+    attribute vec2 a_TexCoordinate;
+    varying vec2 v_TexCoordinate;
+    void main() {
+      v_TexCoordinate = a_TexCoordinate;
+      gl_Position = a_Position;
+    }
+); /* clang-format on */
+
+const char kQuadCopyFragment[] = SHADER(
+    /* clang-format off */
+    precision highp float;
+    uniform sampler2D u_Texture;
+    varying vec2 v_TexCoordinate;
+    void main() {
+      gl_FragColor = texture2D(u_Texture, v_TexCoordinate);
+    }
+); /* clang-format on */
+
+const float kQuadVertices[] = {
+    // clang-format off
+    // x     y    u,   v
+    -1.f,  1.f, 0.f, 1.f,
+    -1.f, -1.f, 0.f, 0.f,
+     1.f, -1.f, 1.f, 0.f,
+     1.f,  1.f, 1.f, 1.f};
+static constexpr int kQuadVerticesSize = sizeof(kQuadVertices);
+
+GLuint CompileShader(gpu::gles2::GLES2Interface* gl,
+                     GLenum shader_type,
+                     const GLchar* shader_source) {
+  GLuint shader_handle = gl->CreateShader(shader_type);
+  if (shader_handle != 0) {
+    // Pass in the shader source.
+    GLint len = strlen(shader_source);
+    gl->ShaderSource(shader_handle, 1, &shader_source, &len);
+    // Compile the shader.
+    gl->CompileShader(shader_handle);
+    // Get the compilation status.
+    GLint status = 0;
+    gl->GetShaderiv(shader_handle, GL_COMPILE_STATUS, &status);
+    if (status == GL_FALSE) {
+      GLint info_log_length = 0;
+      gl->GetShaderiv(shader_handle, GL_INFO_LOG_LENGTH, &info_log_length);
+      auto str_info_log = base::MakeUnique<GLchar[]>(info_log_length + 1);
+      gl->GetShaderInfoLog(shader_handle, info_log_length, nullptr,
+                           str_info_log.get());
+      DLOG(ERROR) << "Error compiling shader: " << str_info_log.get();
+      gl->DeleteShader(shader_handle);
+      shader_handle = 0;
+    }
+  }
+
+  return shader_handle;
+}
+
+GLuint CreateAndLinkProgram(gpu::gles2::GLES2Interface* gl,
+                            GLuint vertex_shader_handle,
+                            GLuint fragment_shader_handle) {
+  GLuint program_handle = gl->CreateProgram();
+
+  if (program_handle != 0) {
+    // Bind the vertex shader to the program.
+    gl->AttachShader(program_handle, vertex_shader_handle);
+
+    // Bind the fragment shader to the program.
+    gl->AttachShader(program_handle, fragment_shader_handle);
+
+    // Link the two shaders together into a program.
+    gl->LinkProgram(program_handle);
+
+    // Get the link status.
+    GLint link_status = 0;
+    gl->GetProgramiv(program_handle, GL_LINK_STATUS, &link_status);
+
+    // If the link failed, delete the program.
+    if (link_status == GL_FALSE) {
+      GLint info_log_length;
+      gl->GetProgramiv(program_handle, GL_INFO_LOG_LENGTH, &info_log_length);
+
+      auto str_info_log = base::MakeUnique<GLchar[]>(info_log_length + 1);
+      gl->GetProgramInfoLog(program_handle, info_log_length, nullptr,
+                            str_info_log.get());
+      DLOG(ERROR) << "Error compiling program: " << str_info_log.get();
+      gl->DeleteProgram(program_handle);
+      program_handle = 0;
+    }
+  }
+
+  return program_handle;
+}
+
+GLuint ConsumeTexture(gpu::gles2::GLES2Interface* gl,
+                      const gpu::MailboxHolder& mailbox) {
+  TRACE_EVENT0("gpu", "MailboxToSurfaceBridge::ConsumeTexture");
+  gl->WaitSyncTokenCHROMIUM(mailbox.sync_token.GetConstData());
+
+  return gl->CreateAndConsumeTextureCHROMIUM(GL_TEXTURE_2D,
+                                             mailbox.mailbox.name);
+}
+
+}  // namespace
+
+namespace vr_shell {
+
+MailboxToSurfaceBridge::MailboxToSurfaceBridge() : weak_ptr_factory_(this) {}
+
+MailboxToSurfaceBridge::~MailboxToSurfaceBridge() {
+  if (surface_handle_) {
+    // Unregister from the surface tracker to avoid a resource leak.
+    gpu::GpuSurfaceTracker* tracker = gpu::GpuSurfaceTracker::Get();
+    tracker->UnregisterViewSurface(surface_handle_);
+  }
+  DestroyContext();
+}
+
+void MailboxToSurfaceBridge::OnContextAvailable(
+    scoped_refptr<cc::ContextProvider> provider) {
+  // Must save a reference to the ContextProvider to keep it alive,
+  // otherwise the GL context created from it becomes invalid.
+  context_provider_ = std::move(provider);
+
+  if (!context_provider_->BindToCurrentThread()) {
+    DLOG(ERROR) << "Failed to init ContextProvider";
+    return;
+  }
+
+  gl_ = context_provider_->ContextGL();
+
+  if (!gl_) {
+    DLOG(ERROR) << "Did not get a GL context";
+    return;
+  }
+  InitializeRenderer();
+}
+
+void MailboxToSurfaceBridge::CreateSurface(
+    gl::SurfaceTexture* surface_texture) {
+  ANativeWindow* window = surface_texture->CreateSurface();
+  gpu::GpuSurfaceTracker* tracker = gpu::GpuSurfaceTracker::Get();
+  ANativeWindow_acquire(window);
+  // Skip ANativeWindow_setBuffersGeometry, the default size appears to work.
+  surface_handle_ = tracker->AddSurfaceForNativeWidget(window);
+
+  auto surface = base::MakeUnique<gl::ScopedJavaSurface>(surface_texture);
+  tracker->RegisterViewSurface(surface_handle_, surface->j_surface().obj());
+  // Unregistering happens in the destructor.
+  ANativeWindow_release(window);
+
+  // Our attributes must be compatible with the shared offscreen
+  // surface used by virtualized contexts, otherwise mailbox
+  // synchronization doesn't work properly - it assumes a shared
+  // underlying GL context. See GetCompositorContextAttributes
+  // in content/browser/renderer_host/compositor_impl_android.cc
+  // and crbug.com/699330.
+
+  gpu::gles2::ContextCreationAttribHelper attributes;
+  attributes.alpha_size = -1;
+  attributes.red_size = 8;
+  attributes.green_size = 8;
+  attributes.blue_size = 8;
+  attributes.stencil_size = 0;
+  attributes.depth_size = 0;
+  attributes.samples = 0;
+  attributes.sample_buffers = 0;
+  attributes.bind_generates_resource = false;
+  if (base::SysInfo::IsLowEndDevice()) {
+    attributes.alpha_size = 0;
+    attributes.red_size = 5;
+    attributes.green_size = 6;
+    attributes.blue_size = 5;
+  }
+
+  content::Compositor::CreateContextProvider(
+      surface_handle_, attributes, gpu::SharedMemoryLimits::ForMailboxContext(),
+      base::Bind(&MailboxToSurfaceBridge::OnContextAvailable,
+                 weak_ptr_factory_.GetWeakPtr()));
+}
+
+void MailboxToSurfaceBridge::ResizeSurface(int width, int height) {
+  if (!gl_) {
+    // We're not initialized yet, save the requested size for later.
+    needs_resize_ = true;
+    resize_width_ = width;
+    resize_height_ = height;
+    return;
+  }
+  DVLOG(1) << __FUNCTION__ << ": resize Surface to " <<
+      width << "x" << height;
+  gl_->ResizeCHROMIUM(width, height, 1.f, false);
+  gl_->Viewport(0, 0, width, height);
+}
+
+bool MailboxToSurfaceBridge::CopyMailboxToSurfaceAndSwap(
+    const gpu::MailboxHolder& mailbox) {
+  if (!gl_) {
+    // We may not have a context yet, i.e. due to surface initialization
+    // being incomplete. This is not an error, but we obviously can't draw
+    // yet.
+    return false;
+  }
+
+  if (needs_resize_) {
+    ResizeSurface(resize_width_, resize_height_);
+    needs_resize_ = false;
+  }
+
+  GLuint sourceTexture = ConsumeTexture(gl_, mailbox);
+  DrawQuad(sourceTexture);
+  gl_->SwapBuffers();
+  return true;
+}
+
+void MailboxToSurfaceBridge::DestroyContext() {
+  gl_ = nullptr;
+  context_provider_ = nullptr;
+}
+
+void MailboxToSurfaceBridge::InitializeRenderer() {
+  GLuint vertex_shader_handle =
+      CompileShader(gl_, GL_VERTEX_SHADER, kQuadCopyVertex);
+  if (!vertex_shader_handle) {
+    DestroyContext();
+    return;
+  }
+
+  GLuint fragment_shader_handle =
+      CompileShader(gl_, GL_FRAGMENT_SHADER, kQuadCopyFragment);
+  if (!fragment_shader_handle) {
+    DestroyContext();
+    return;
+  }
+
+  GLuint program_handle =
+      CreateAndLinkProgram(gl_, vertex_shader_handle, fragment_shader_handle);
+  if (!program_handle) {
+    DestroyContext();
+    return;
+  }
+
+  // Once the program is linked the shader objects are no longer needed
+  gl_->DeleteShader(vertex_shader_handle);
+  gl_->DeleteShader(fragment_shader_handle);
+
+  GLuint position_handle = gl_->GetAttribLocation(program_handle, "a_Position");
+  GLuint texCoord_handle =
+      gl_->GetAttribLocation(program_handle, "a_TexCoordinate");
+  GLuint texUniform_handle =
+      gl_->GetUniformLocation(program_handle, "u_Texture");
+
+  GLuint vertexBuffer = 0;
+  gl_->GenBuffers(1, &vertexBuffer);
+  gl_->BindBuffer(GL_ARRAY_BUFFER, vertexBuffer);
+  gl_->BufferData(GL_ARRAY_BUFFER, kQuadVerticesSize, kQuadVertices,
+                  GL_STATIC_DRAW);
+
+  // Set state once only, we assume that nobody else modifies GL state in a way
+  // that would interfere with our operations.
+  gl_->Disable(GL_CULL_FACE);
+  gl_->DepthMask(GL_FALSE);
+  gl_->Disable(GL_DEPTH_TEST);
+  gl_->Disable(GL_SCISSOR_TEST);
+  gl_->Disable(GL_BLEND);
+  gl_->Disable(GL_POLYGON_OFFSET_FILL);
+
+  // Not using gl_->Viewport, we assume that it defaults to the whole
+  // surface and gets updated by ResizeSurface externally as
+  // appropriate.
+
+  gl_->UseProgram(program_handle);
+
+  // Bind vertex attributes
+  gl_->BindBuffer(GL_ARRAY_BUFFER, vertexBuffer);
+
+  gl_->EnableVertexAttribArray(position_handle);
+  gl_->EnableVertexAttribArray(texCoord_handle);
+
+  static constexpr size_t VERTEX_STRIDE = sizeof(float) * 4;
+  static constexpr size_t POSITION_ELEMENTS = 2;
+  static constexpr size_t TEXCOORD_ELEMENTS = 2;
+  static constexpr size_t POSITION_OFFSET = 0;
+  static constexpr size_t TEXCOORD_OFFSET = sizeof(float) * 2;
+
+  gl_->VertexAttribPointer(position_handle, POSITION_ELEMENTS, GL_FLOAT, false,
+                           VERTEX_STRIDE, VOID_OFFSET(POSITION_OFFSET));
+  gl_->VertexAttribPointer(texCoord_handle, TEXCOORD_ELEMENTS, GL_FLOAT, false,
+                           VERTEX_STRIDE, VOID_OFFSET(TEXCOORD_OFFSET));
+
+  gl_->ActiveTexture(GL_TEXTURE0);
+  gl_->Uniform1i(texUniform_handle, 0);
+}
+
+void MailboxToSurfaceBridge::DrawQuad(unsigned int texture_handle) {
+  // We're redrawing over the entire viewport, but it's generally more
+  // efficient on mobile tiling GPUs to clear anyway as a hint that
+  // we're done with the old content. TODO(klausw,crbug.com/700389):
+  // investigate using gl_->DiscardFramebufferEXT here since that's more
+  // efficient on desktop, but it would need a capability check since
+  // it's not supported on older devices such as Nexus 5X.
+  gl_->Clear(GL_COLOR_BUFFER_BIT);
+
+  // Configure texture. This is a 1:1 pixel copy since the surface
+  // size is resized to match the source canvas, so we can use
+  // GL_NEAREST.
+  gl_->BindTexture(GL_TEXTURE_2D, texture_handle);
+  gl_->TexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
+  gl_->TexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
+  gl_->TexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
+  gl_->TexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
+  gl_->DrawArrays(GL_TRIANGLE_FAN, 0, 4);
+}
+
+}  // namespace vr_shell
diff --git a/chrome/browser/android/vr_shell/mailbox_to_surface_bridge.h b/chrome/browser/android/vr_shell/mailbox_to_surface_bridge.h
new file mode 100644
index 0000000..8ba1540
--- /dev/null
+++ b/chrome/browser/android/vr_shell/mailbox_to_surface_bridge.h
@@ -0,0 +1,63 @@
+// Copyright 2017 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_ANDROID_VR_SHELL_MAILBOX_TO_SURFACE_BRIDGE_H_
+#define CHROME_BROWSER_ANDROID_VR_SHELL_MAILBOX_TO_SURFACE_BRIDGE_H_
+
+#include "base/memory/weak_ptr.h"
+
+namespace gl {
+class SurfaceTexture;
+}
+
+namespace gpu {
+struct MailboxHolder;
+namespace gles2 {
+class GLES2Interface;
+}
+}
+
+namespace cc {
+class ContextProvider;
+}
+
+namespace vr_shell {
+
+class MailboxToSurfaceBridge {
+ public:
+  MailboxToSurfaceBridge();
+  ~MailboxToSurfaceBridge();
+
+  void CreateSurface(gl::SurfaceTexture*);
+
+  void ResizeSurface(int width, int height);
+
+  // Returns true if swapped successfully. This can fail if the GL
+  // context isn't ready for use yet, in that case the caller
+  // won't get a new frame on the SurfaceTexture.
+  bool CopyMailboxToSurfaceAndSwap(const gpu::MailboxHolder& mailbox);
+
+ private:
+  void OnContextAvailable(scoped_refptr<cc::ContextProvider>);
+  void InitializeRenderer();
+  void DestroyContext();
+  void DrawQuad(unsigned int textureHandle);
+
+  scoped_refptr<cc::ContextProvider> context_provider_;
+  gpu::gles2::GLES2Interface* gl_ = nullptr;
+  int surface_handle_ = 0;
+
+  // Saved state for a pending resize, the dimensions are only
+  // valid if needs_resize_ is true.
+  bool needs_resize_ = false;
+  int resize_width_;
+  int resize_height_;
+
+  // Must be last.
+  base::WeakPtrFactory<MailboxToSurfaceBridge> weak_ptr_factory_;
+};
+
+}  // namespace vr_shell
+
+#endif  // CHROME_BROWSER_ANDROID_VR_SHELL_MAILBOX_TO_SURFACE_BRIDGE_H_
diff --git a/chrome/browser/android/vr_shell/non_presenting_gvr_delegate.cc b/chrome/browser/android/vr_shell/non_presenting_gvr_delegate.cc
index c25da54..c2457ba 100644
--- a/chrome/browser/android/vr_shell/non_presenting_gvr_delegate.cc
+++ b/chrome/browser/android/vr_shell/non_presenting_gvr_delegate.cc
@@ -20,7 +20,11 @@
     : task_runner_(base::ThreadTaskRunnerHandle::Get()),
       binding_(this),
       weak_ptr_factory_(this) {
-  gvr_api_ = gvr::GvrApi::WrapNonOwned(context);
+  // Context may be null, see VrShellDelegate#createNonPresentingNativeContext
+  // for possible reasons a context could fail to be created. For example,
+  // the user might uninstall apps or clear data after VR support was detected.
+  if (context)
+    gvr_api_ = gvr::GvrApi::WrapNonOwned(context);
 }
 
 NonPresentingGvrDelegate::~NonPresentingGvrDelegate() {
@@ -40,7 +44,8 @@
 void NonPresentingGvrDelegate::Pause() {
   vsync_task_.Cancel();
   vsync_paused_ = true;
-  gvr_api_->PauseTracking();
+  if (gvr_api_)
+    gvr_api_->PauseTracking();
 }
 
 void NonPresentingGvrDelegate::Resume() {
@@ -60,12 +65,14 @@
 
 void NonPresentingGvrDelegate::StopVSyncLoop() {
   vsync_task_.Cancel();
+  binding_.Close();
   if (!callback_.is_null()) {
     base::ResetAndReturn(&callback_)
         .Run(nullptr, base::TimeDelta(), -1,
-             device::mojom::VRVSyncProvider::Status::RETRY);
+             device::mojom::VRVSyncProvider::Status::CLOSING);
   }
-  gvr_api_->PauseTracking();
+  if (gvr_api_)
+    gvr_api_->PauseTracking();
   // If the loop is stopped, it's not considered to be paused.
   vsync_paused_ = false;
 }
@@ -73,8 +80,10 @@
 void NonPresentingGvrDelegate::StartVSyncLoop() {
   vsync_task_.Reset(
       base::Bind(&NonPresentingGvrDelegate::OnVSync, base::Unretained(this)));
-  gvr_api_->RefreshViewerProfile();
-  gvr_api_->ResumeTracking();
+  if (gvr_api_) {
+    gvr_api_->RefreshViewerProfile();
+    gvr_api_->ResumeTracking();
+  }
   OnVSync();
 }
 
@@ -136,6 +145,12 @@
   gvr::ClockTimePoint target_time = gvr::GvrApi::GetTimePointNow();
   target_time.monotonic_system_time_nanos += kPredictionTimeWithoutVsyncNanos;
 
+  if (!gvr_api_) {
+    callback.Run(device::mojom::VRPosePtr(nullptr), time, -1,
+                 device::mojom::VRVSyncProvider::Status::SUCCESS);
+    return;
+  }
+
   gvr::Mat4f head_mat = gvr_api_->ApplyNeckModel(
       gvr_api_->GetHeadSpaceFromStartSpaceRotation(target_time), 1.0f);
   callback.Run(VrShell::VRPosePtrFromGvrPose(head_mat), time, -1,
@@ -156,8 +171,16 @@
 void NonPresentingGvrDelegate::CreateVRDisplayInfo(
     const base::Callback<void(device::mojom::VRDisplayInfoPtr)>& callback,
     uint32_t device_id) {
-  callback.Run(VrShell::CreateVRDisplayInfo(
-      gvr_api_.get(), device::kInvalidRenderTargetSize, device_id));
+  if (!gvr_api_) {
+    callback.Run(device::mojom::VRDisplayInfoPtr(nullptr));
+    return;
+  }
+
+  gvr::Sizei webvr_size = VrShell::GetRecommendedWebVrSize(gvr_api_.get());
+  DVLOG(1) << __FUNCTION__ << ": resize recommended to " << webvr_size.width
+           << "x" << webvr_size.height;
+  callback.Run(
+      VrShell::CreateVRDisplayInfo(gvr_api_.get(), webvr_size, device_id));
 }
 
 }  // namespace vr_shell
diff --git a/chrome/browser/android/vr_shell/non_presenting_gvr_delegate.h b/chrome/browser/android/vr_shell/non_presenting_gvr_delegate.h
index 0bf9104..741b5d515 100644
--- a/chrome/browser/android/vr_shell/non_presenting_gvr_delegate.h
+++ b/chrome/browser/android/vr_shell/non_presenting_gvr_delegate.h
@@ -28,10 +28,12 @@
 
   // GvrDelegate implementation
   void SetWebVRSecureOrigin(bool secure_origin) override {}
-  void SubmitWebVRFrame() override {}
+  void SubmitWebVRFrame(int16_t frame_index,
+                        const gpu::MailboxHolder& mailbox) override {}
   void UpdateWebVRTextureBounds(int16_t frame_index,
                                 const gvr::Rectf& left_bounds,
-                                const gvr::Rectf& right_bounds) override {}
+                                const gvr::Rectf& right_bounds,
+                                const gvr::Sizei& source_size) override {}
   void OnVRVsyncProviderRequest(
       device::mojom::VRVSyncProviderRequest request) override;
   void UpdateVSyncInterval(int64_t timebase_nanos,
diff --git a/chrome/browser/android/vr_shell/vr_shell.cc b/chrome/browser/android/vr_shell/vr_shell.cc
index 21193ab..efce6d1 100644
--- a/chrome/browser/android/vr_shell/vr_shell.cc
+++ b/chrome/browser/android/vr_shell/vr_shell.cc
@@ -36,6 +36,7 @@
 #include "content/public/common/referrer.h"
 #include "device/vr/android/gvr/gvr_device.h"
 #include "device/vr/android/gvr/gvr_device_provider.h"
+#include "gpu/command_buffer/common/mailbox.h"
 #include "jni/VrShellImpl_jni.h"
 #include "third_party/WebKit/public/platform/WebInputEvent.h"
 #include "ui/android/view_android.h"
@@ -56,6 +57,13 @@
 
 static const char kVrShellUIURL[] = "chrome://vr-shell-ui";
 
+// Default downscale factor for computing the recommended WebVR
+// renderWidth/Height from the 1:1 pixel mapped size. Using a rather
+// aggressive downscale due to the high overhead of copying pixels
+// twice before handing off to GVR. For comparison, the polyfill
+// uses approximately 0.55 on a Pixel XL.
+static constexpr float kWebVrRecommendedResolutionScale = 0.5;
+
 void SetIsInVR(content::WebContents* contents, bool is_in_vr) {
   if (contents && contents->GetRenderWidgetHostView())
     contents->GetRenderWidgetHostView()->SetIsInVR(is_in_vr);
@@ -170,6 +178,7 @@
 }
 
 VrShell::~VrShell() {
+  delegate_provider_->RemoveDelegate();
   {
     // The GvrLayout is, and must always be, used only on the UI thread, and the
     // GvrApi used for rendering should only be used from the GL thread as it's
@@ -185,7 +194,6 @@
     base::ThreadRestrictions::ScopedAllowIO allow_io;
     gl_thread_.reset();
   }
-  delegate_provider_->RemoveDelegate();
   g_instance = nullptr;
 }
 
@@ -271,6 +279,7 @@
     metrics_helper_->SetWebVREnabled(enabled);
   PostToGlThreadWhenReady(base::Bind(&VrShellGl::SetWebVrMode,
                                      gl_thread_->GetVrShellGl(), enabled));
+
   html_interface_->SetMode(enabled ? UiInterface::Mode::WEB_VR
                                    : UiInterface::Mode::STANDARD);
 }
@@ -324,14 +333,22 @@
   html_interface_->SetWebVRSecureOrigin(secure_origin);
 }
 
-void VrShell::SubmitWebVRFrame() {}
+void VrShell::SubmitWebVRFrame(int16_t frame_index,
+                               const gpu::MailboxHolder& mailbox) {
+  TRACE_EVENT1("gpu", "SubmitWebVRFrame", "frame", frame_index);
+
+  PostToGlThreadWhenReady(base::Bind(&VrShellGl::SubmitWebVRFrame,
+                                     gl_thread_->GetVrShellGl(), frame_index,
+                                     mailbox));
+}
 
 void VrShell::UpdateWebVRTextureBounds(int16_t frame_index,
                                        const gvr::Rectf& left_bounds,
-                                       const gvr::Rectf& right_bounds) {
+                                       const gvr::Rectf& right_bounds,
+                                       const gvr::Sizei& source_size) {
   PostToGlThreadWhenReady(base::Bind(&VrShellGl::UpdateWebVRTextureBounds,
                                      gl_thread_->GetVrShellGl(), frame_index,
-                                     left_bounds, right_bounds));
+                                     left_bounds, right_bounds, source_size));
 }
 
 bool VrShell::SupportsPresentation() {
@@ -385,6 +402,10 @@
 }
 
 void VrShell::GvrDelegateReady() {
+  PostToGlThreadWhenReady(base::Bind(
+      &VrShellGl::SetSubmitClient, gl_thread_->GetVrShellGl(),
+      base::Passed(
+          delegate_provider_->TakeSubmitFrameClient().PassInterface())));
   delegate_provider_->SetDelegate(this, gvr_api_);
 }
 
@@ -599,6 +620,7 @@
   }
 }
 
+/* static */
 device::mojom::VRPosePtr VrShell::VRPosePtrFromGvrPose(gvr::Mat4f head_mat) {
   device::mojom::VRPosePtr pose = device::mojom::VRPose::New();
 
@@ -629,9 +651,37 @@
   return pose;
 }
 
+/* static */
+gvr::Sizei VrShell::GetRecommendedWebVrSize(gvr::GvrApi* gvr_api) {
+  // Pick a reasonable default size for the WebVR transfer surface
+  // based on a downscaled 1:1 render resolution. This size will also
+  // be reported to the client via CreateVRDisplayInfo as the
+  // client-recommended renderWidth/renderHeight and for the GVR
+  // framebuffer. If the client chooses a different size or resizes it
+  // while presenting, we'll resize the transfer surface and GVR
+  // framebuffer to match.
+  gvr::Sizei render_target_size =
+      gvr_api->GetMaximumEffectiveRenderTargetSize();
+  gvr::Sizei webvr_size = {static_cast<int>(render_target_size.width *
+                                            kWebVrRecommendedResolutionScale),
+                           static_cast<int>(render_target_size.height *
+                                            kWebVrRecommendedResolutionScale)};
+  // Ensure that the width is an even number so that the eyes each
+  // get the same size, the recommended renderWidth is per eye
+  // and the client will use the sum of the left and right width.
+  //
+  // TODO(klausw,crbug.com/699350): should we round the recommended
+  // size to a multiple of 2^N pixels to be friendlier to the GPU? The
+  // exact size doesn't matter, and it might be more efficient.
+  webvr_size.width &= ~1;
+
+  return webvr_size;
+}
+
+/* static */
 device::mojom::VRDisplayInfoPtr VrShell::CreateVRDisplayInfo(
     gvr::GvrApi* gvr_api,
-    gvr::Sizei compositor_size,
+    gvr::Sizei recommended_size,
     uint32_t device_id) {
   TRACE_EVENT0("input", "GvrDevice::GetVRDevice");
 
@@ -660,8 +710,8 @@
         (eye == GVR_LEFT_EYE) ? device->leftEye : device->rightEye;
     eye_params->fieldOfView = device::mojom::VRFieldOfView::New();
     eye_params->offset.resize(3);
-    eye_params->renderWidth = compositor_size.width / 2;
-    eye_params->renderHeight = compositor_size.height;
+    eye_params->renderWidth = recommended_size.width / 2;
+    eye_params->renderHeight = recommended_size.height;
 
     gvr::BufferViewport eye_viewport = gvr_api->CreateBufferViewport();
     gvr_buffer_viewports.GetBufferViewport(eye, &eye_viewport);
diff --git a/chrome/browser/android/vr_shell/vr_shell.h b/chrome/browser/android/vr_shell/vr_shell.h
index 2d6e529..8648aa6 100644
--- a/chrome/browser/android/vr_shell/vr_shell.h
+++ b/chrome/browser/android/vr_shell/vr_shell.h
@@ -32,6 +32,10 @@
 class WebContents;
 }
 
+namespace gpu {
+struct MailboxHolder;
+}
+
 namespace ui {
 class WindowAndroid;
 }
@@ -171,9 +175,10 @@
 
   // TODO(mthiesse): Find a better place for these functions to live.
   static device::mojom::VRPosePtr VRPosePtrFromGvrPose(gvr::Mat4f head_mat);
+  static gvr::Sizei GetRecommendedWebVrSize(gvr::GvrApi* gvr_api);
   static device::mojom::VRDisplayInfoPtr CreateVRDisplayInfo(
       gvr::GvrApi* gvr_api,
-      gvr::Sizei compositor_size,
+      gvr::Sizei recommended_size,
       uint32_t device_id);
 
  private:
@@ -190,10 +195,12 @@
 
   // device::GvrDelegate implementation
   void SetWebVRSecureOrigin(bool secure_origin) override;
-  void SubmitWebVRFrame() override;
+  void SubmitWebVRFrame(int16_t frame_index,
+                        const gpu::MailboxHolder& mailbox) override;
   void UpdateWebVRTextureBounds(int16_t frame_index,
                                 const gvr::Rectf& left_bounds,
-                                const gvr::Rectf& right_bounds) override;
+                                const gvr::Rectf& right_bounds,
+                                const gvr::Sizei& source_size) override;
   void OnVRVsyncProviderRequest(
       device::mojom::VRVSyncProviderRequest request) override;
   void UpdateVSyncInterval(int64_t timebase_nanos,
diff --git a/chrome/browser/android/vr_shell/vr_shell_delegate.cc b/chrome/browser/android/vr_shell/vr_shell_delegate.cc
index 17a7ea3..4563d1a0 100644
--- a/chrome/browser/android/vr_shell/vr_shell_delegate.cc
+++ b/chrome/browser/android/vr_shell/vr_shell_delegate.cc
@@ -46,14 +46,9 @@
 
 void VrShellDelegate::SetDelegate(device::GvrDelegate* delegate,
                                   gvr_context* context) {
-  context_ = context;
   delegate_ = delegate;
   // Clean up the non-presenting delegate.
-  if (non_presenting_delegate_) {
-    device::mojom::VRVSyncProviderRequest request =
-        non_presenting_delegate_->OnSwitchToPresentingDelegate();
-    if (request.is_pending())
-      delegate->OnVRVsyncProviderRequest(std::move(request));
+  if (delegate_ && non_presenting_delegate_) {
     non_presenting_delegate_ = nullptr;
     JNIEnv* env = AttachCurrentThread();
     Java_VrShellDelegate_shutdownNonPresentingNativeContext(
@@ -136,8 +131,16 @@
   Java_VrShellDelegate_openNewTab(env, j_vr_shell_delegate_.obj(), incognito);
 }
 
+device::mojom::VRSubmitFrameClientPtr VrShellDelegate::TakeSubmitFrameClient() {
+  return std::move(submit_client_);
+}
+
 void VrShellDelegate::SetDeviceProvider(
     device::GvrDeviceProvider* device_provider) {
+  if (device_provider_ == device_provider)
+    return;
+  if (device_provider_)
+    ClearDeviceProvider();
   CHECK(!device_provider_);
   device_provider_ = device_provider;
   if (!delegate_)
@@ -154,6 +157,7 @@
 }
 
 void VrShellDelegate::RequestWebVRPresent(
+    device::mojom::VRSubmitFrameClientPtr submit_client,
     const base::Callback<void(bool)>& callback) {
   if (!present_callback_.is_null()) {
     // Can only handle one request at a time. This is also extremely unlikely to
@@ -163,6 +167,7 @@
   }
 
   present_callback_ = std::move(callback);
+  submit_client_ = std::move(submit_client);
 
   // If/When VRShell is ready for use it will call SetPresentResult.
   JNIEnv* env = AttachCurrentThread();
@@ -180,19 +185,11 @@
   return weak_ptr_factory_.GetWeakPtr();
 }
 
-void VrShellDelegate::OnVRVsyncProviderRequest(
-    device::mojom::VRVSyncProviderRequest request) {
-  GetDelegate()->OnVRVsyncProviderRequest(std::move(request));
-}
-
 void VrShellDelegate::CreateNonPresentingDelegate() {
   JNIEnv* env = AttachCurrentThread();
   gvr_context* context = reinterpret_cast<gvr_context*>(
       Java_VrShellDelegate_createNonPresentingNativeContext(
           env, j_vr_shell_delegate_.obj()));
-  if (!context)
-    return;
-  context_ = context;
   non_presenting_delegate_ =
       base::MakeUnique<NonPresentingGvrDelegate>(context);
   non_presenting_delegate_->UpdateVSyncInterval(timebase_nanos_,
diff --git a/chrome/browser/android/vr_shell/vr_shell_delegate.h b/chrome/browser/android/vr_shell/vr_shell_delegate.h
index 3b5161d..539c3cd 100644
--- a/chrome/browser/android/vr_shell/vr_shell_delegate.h
+++ b/chrome/browser/android/vr_shell/vr_shell_delegate.h
@@ -49,16 +49,17 @@
   void Destroy(JNIEnv* env, const base::android::JavaParamRef<jobject>& obj);
   void ShowTab(int id);
   void OpenNewTab(bool incognito);
+  device::mojom::VRSubmitFrameClientPtr TakeSubmitFrameClient();
 
   device::GvrDeviceProvider* device_provider() { return device_provider_; }
-  void OnVRVsyncProviderRequest(device::mojom::VRVSyncProviderRequest request);
   base::WeakPtr<VrShellDelegate> GetWeakPtr();
 
  private:
   // device::GvrDelegateProvider implementation
   void SetDeviceProvider(device::GvrDeviceProvider* device_provider) override;
   void ClearDeviceProvider() override;
-  void RequestWebVRPresent(const base::Callback<void(bool)>& callback) override;
+  void RequestWebVRPresent(device::mojom::VRSubmitFrameClientPtr submit_client,
+                           const base::Callback<void(bool)>& callback) override;
   void ExitWebVRPresent() override;
   device::GvrDelegate* GetDelegate() override;
   void SetListeningForActivate(bool listening) override;
@@ -72,10 +73,7 @@
   base::Callback<void(bool)> present_callback_;
   int64_t timebase_nanos_ = 0;
   double interval_seconds_ = 0;
-
-  // TODO(mthiesse): Remove the need for this to be stored here.
-  // crbug.com/674594
-  gvr_context* context_ = nullptr;
+  device::mojom::VRSubmitFrameClientPtr submit_client_;
 
   base::WeakPtrFactory<VrShellDelegate> weak_ptr_factory_;
 
diff --git a/chrome/browser/android/vr_shell/vr_shell_gl.cc b/chrome/browser/android/vr_shell/vr_shell_gl.cc
index d466f32..cccea83 100644
--- a/chrome/browser/android/vr_shell/vr_shell_gl.cc
+++ b/chrome/browser/android/vr_shell/vr_shell_gl.cc
@@ -12,6 +12,7 @@
 #include "base/memory/ptr_util.h"
 #include "base/metrics/histogram_macros.h"
 #include "base/threading/thread_task_runner_handle.h"
+#include "chrome/browser/android/vr_shell/mailbox_to_surface_bridge.h"
 #include "chrome/browser/android/vr_shell/ui_elements.h"
 #include "chrome/browser/android/vr_shell/ui_scene.h"
 #include "chrome/browser/android/vr_shell/vr_controller.h"
@@ -80,10 +81,6 @@
 // 2-3 frames.
 static constexpr unsigned kPoseRingBufferSize = 8;
 
-// Magic numbers used to mark valid pose index values encoded in frame
-// data. Must match the magic numbers used in blink's VRDisplay.cpp.
-static constexpr std::array<uint8_t, 2> kWebVrPosePixelMagicNumbers{{42, 142}};
-
 float Distance(const gvr::Vec3f& vec1, const gvr::Vec3f& vec2) {
   float xdiff = (vec1.x - vec2.x);
   float ydiff = (vec1.y - vec2.y);
@@ -172,6 +169,12 @@
 
 VrShellGl::~VrShellGl() {
   vsync_task_.Cancel();
+  // TODO(mthiesse): Can we omit the Close() here? Concern is that if
+  // both ends of the connection ever live in the same process for
+  // some reason, we could receive another VSync request in response
+  // to the closing message in the destructor but fail to respond to
+  // the callback.
+  binding_.Close();
   if (!callback_.is_null()) {
     // When this VSync provider is going away we have to respond to pending
     // callbacks, so instead of providing a VSync, tell the requester to try
@@ -179,13 +182,7 @@
     // to this message will go through some other VSyncProvider.
     base::ResetAndReturn(&callback_)
         .Run(nullptr, base::TimeDelta(), -1,
-             device::mojom::VRVSyncProvider::Status::RETRY);
-  }
-  if (binding_.is_bound()) {
-    main_thread_task_runner_->PostTask(
-        FROM_HERE,
-        base::Bind(&VrShellDelegate::OnVRVsyncProviderRequest,
-                   delegate_provider_, base::Passed(binding_.Unbind())));
+             device::mojom::VRVSyncProvider::Status::CLOSING);
   }
 }
 
@@ -232,24 +229,34 @@
     return;
   }
 
-  unsigned int textures[2];
-  glGenTextures(2, textures);
+  unsigned int textures[3];
+  glGenTextures(3, textures);
   ui_texture_id_ = textures[0];
   content_texture_id_ = textures[1];
+  webvr_texture_id_ = textures[2];
   ui_surface_texture_ = gl::SurfaceTexture::Create(ui_texture_id_);
   content_surface_texture_ = gl::SurfaceTexture::Create(content_texture_id_);
+  webvr_surface_texture_ = gl::SurfaceTexture::Create(webvr_texture_id_);
   CreateUiSurface();
   CreateContentSurface();
   ui_surface_texture_->SetFrameAvailableCallback(base::Bind(
       &VrShellGl::OnUIFrameAvailable, weak_ptr_factory_.GetWeakPtr()));
   content_surface_texture_->SetFrameAvailableCallback(base::Bind(
       &VrShellGl::OnContentFrameAvailable, weak_ptr_factory_.GetWeakPtr()));
-  content_surface_texture_->SetDefaultBufferSize(
-      content_tex_physical_size_.width, content_tex_physical_size_.height);
+  webvr_surface_texture_->SetFrameAvailableCallback(base::Bind(
+      &VrShellGl::OnWebVRFrameAvailable, weak_ptr_factory_.GetWeakPtr()));
   ui_surface_texture_->SetDefaultBufferSize(ui_tex_physical_size_.width,
                                             ui_tex_physical_size_.height);
+  content_surface_texture_->SetDefaultBufferSize(
+      content_tex_physical_size_.width, content_tex_physical_size_.height);
   InitializeRenderer();
 
+  gvr::Sizei webvr_size = VrShell::GetRecommendedWebVrSize(gvr_api_.get());
+  DVLOG(1) << __FUNCTION__ << ": resize initial to " << webvr_size.width << "x"
+           << webvr_size.height;
+
+  CreateOrResizeWebVRSurface(webvr_size);
+
   vsync_task_.Reset(base::Bind(&VrShellGl::OnVSync, base::Unretained(this)));
   OnVSync();
 
@@ -272,6 +279,73 @@
                             ui_surface_->j_surface().obj()));
 }
 
+void VrShellGl::CreateOrResizeWebVRSurface(const gvr::Sizei& size) {
+  if (!webvr_surface_texture_) {
+    DLOG(ERROR) << "No WebVR surface texture available";
+    return;
+  }
+
+  // ContentPhysicalBoundsChanged is getting called twice with
+  // identical sizes? Avoid thrashing the existing context.
+  if (size == webvr_surface_size_) {
+    return;
+  }
+
+  if (!size.width || !size.height) {
+    // Invalid size, defer until a new size arrives on a future bounds update.
+    return;
+  }
+
+  webvr_surface_texture_->SetDefaultBufferSize(size.width, size.height);
+  webvr_surface_size_ = size;
+
+  if (mailbox_bridge_) {
+    mailbox_bridge_->ResizeSurface(size.width, size.height);
+  } else {
+    mailbox_bridge_ = base::MakeUnique<MailboxToSurfaceBridge>();
+    mailbox_bridge_->CreateSurface(webvr_surface_texture_.get());
+  }
+}
+
+void VrShellGl::SubmitWebVRFrame(int16_t frame_index,
+                                 const gpu::MailboxHolder& mailbox) {
+  TRACE_EVENT0("gpu", "VrShellGl::SubmitWebVRFrame");
+
+  // Swapping twice on a Surface without calling updateTexImage in
+  // between can lose frames, so don't draw+swap if we already have
+  // a pending frame we haven't consumed yet.
+  bool swapped = false;
+  if (pending_frames_.empty()) {
+    swapped = mailbox_bridge_->CopyMailboxToSurfaceAndSwap(mailbox);
+    if (swapped) {
+      // Tell OnWebVRFrameAvailable to expect a new frame to arrive on
+      // the SurfaceTexture, and save the associated frame index.
+      pending_frames_.emplace(frame_index);
+    }
+  }
+  // Always notify the client that we're done with the mailbox even
+  // if we haven't drawn it, so that it's eligible for destruction.
+  submit_client_->OnSubmitFrameTransferred();
+  if (!swapped) {
+    // We dropped without drawing, report this as completed rendering
+    // now to unblock the client. We're not going to receive it in
+    // OnWebVRFrameAvailable where we'd normally report that.
+    submit_client_->OnSubmitFrameRendered();
+  }
+
+  TRACE_EVENT0("gpu", "VrShellGl::glFinish");
+  // This is a load-bearing glFinish, please don't remove it without
+  // before/after timing comparisons. Goal is to clear the GPU queue
+  // of the native GL context to avoid stalls later in GVR frame
+  // acquire/submit.
+  glFinish();
+}
+
+void VrShellGl::SetSubmitClient(
+    device::mojom::VRSubmitFrameClientPtrInfo submit_client_info) {
+  submit_client_.Bind(std::move(submit_client_info));
+}
+
 void VrShellGl::OnUIFrameAvailable() {
   ui_surface_texture_->UpdateTexImage();
 }
@@ -281,42 +355,30 @@
   received_frame_ = true;
 }
 
-bool VrShellGl::GetPixelEncodedFrameIndex(uint16_t* frame_index) {
-  TRACE_EVENT0("gpu", "VrShellGl::GetPixelEncodedFrameIndex");
-  if (!received_frame_) {
-    if (last_frame_index_ == (uint16_t)-1)
-      return false;
-    *frame_index = last_frame_index_;
-    return true;
+void VrShellGl::OnWebVRFrameAvailable() {
+  // A "while" loop here is a bad idea. It's legal to call
+  // UpdateTexImage repeatedly even if no frames are available, but
+  // that does *not* wait for a new frame, it just reuses the most
+  // recent one. That would mess up the count.
+  if (pending_frames_.empty()) {
+    // We're expecting a frame, but it's not here yet. Retry in OnVsync.
+    ++premature_received_frames_;
+    return;
   }
-  received_frame_ = false;
 
-  // Read the pose index encoded in a bottom left pixel as color values.
-  // See also third_party/WebKit/Source/modules/vr/VRDisplay.cpp which
-  // encodes the pose index, and device/vr/android/gvr/gvr_device.cc
-  // which tracks poses. Returns the low byte (0..255) if valid, or -1
-  // if not valid due to bad magic number.
-  uint8_t pixels[4];
-  // Assume we're reading from the framebuffer we just wrote to.
-  // That's true currently, we may need to use glReadBuffer(GL_BACK)
-  // or equivalent if the rendering setup changes in the future.
-  glReadPixels(0, 0, 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, pixels);
+  webvr_surface_texture_->UpdateTexImage();
+  int frame_index = pending_frames_.front();
+  TRACE_EVENT1("gpu", "VrShellGl::OnWebVRFrameAvailable", "frame", frame_index);
+  pending_frames_.pop();
 
-  // Check for the magic number written by VRDevice.cpp on submit.
-  // This helps avoid glitches from garbage data in the render
-  // buffer that can appear during initialization or resizing. These
-  // often appear as flashes of all-black or all-white pixels.
-  if (pixels[1] == kWebVrPosePixelMagicNumbers[0] &&
-      pixels[2] == kWebVrPosePixelMagicNumbers[1]) {
-    // Pose is good.
-    *frame_index = pixels[0];
-    last_frame_index_ = pixels[0];
-    return true;
-  }
-  VLOG(1) << "WebVR: reject decoded pose index " << static_cast<int>(pixels[0])
-          << ", bad magic number " << static_cast<int>(pixels[1]) << ", "
-          << static_cast<int>(pixels[2]);
-  return false;
+  // It is legal for the WebVR client to submit a new frame now, since
+  // we've consumed the image. TODO(klausw): would timing be better if
+  // we move the "rendered" notification after draw, or suppress
+  // the next vsync until that's done?
+
+  submit_client_->OnSubmitFrameRendered();
+
+  DrawFrame(frame_index);
 }
 
 void VrShellGl::GvrInit(gvr_context* gvr_api) {
@@ -341,12 +403,6 @@
 }
 
 void VrShellGl::InitializeRenderer() {
-  // While WebVR is going through the compositor path, it shares
-  // the same texture ID. This will change once it gets its own
-  // surface, but store it separately to avoid future confusion.
-  // TODO(klausw,crbug.com/655722): remove this.
-  webvr_texture_id_ = content_texture_id_;
-
   gvr_api_->InitializeGl();
   webvr_head_pose_.assign(kPoseRingBufferSize,
                           gvr_api_->GetHeadSpaceFromStartSpaceRotation(
@@ -356,6 +412,7 @@
   // For kFramePrimaryBuffer (primary VrShell and WebVR content)
   specs.push_back(gvr_api_->CreateBufferSpec());
   render_size_primary_ = specs[kFramePrimaryBuffer].GetSize();
+  render_size_vrshell_ = render_size_primary_;
 
   // For kFrameHeadlockedBuffer (for WebVR insecure content warning).
   // Set this up at fixed resolution, the (smaller) FOV gets set below.
@@ -632,40 +689,19 @@
       base::Bind(target, weak_vr_shell_, base::Passed(std::move(event))));
 }
 
-void VrShellGl::DrawFrame() {
-  TRACE_EVENT0("gpu", "VrShellGl::DrawFrame");
+void VrShellGl::DrawFrame(int16_t frame_index) {
+  TRACE_EVENT1("gpu", "VrShellGl::DrawFrame", "frame", frame_index);
 
   // Reset the viewport list to just the pair of viewports for the
   // primary buffer each frame. Head-locked viewports get added by
   // DrawVrShell if needed.
   buffer_viewport_list_->SetToRecommendedBufferViewports();
 
-  gvr::Frame frame = swap_chain_->AcquireFrame();
-  if (!frame.is_valid()) {
-    return;
-  }
-  frame.BindBuffer(kFramePrimaryBuffer);
+  // If needed, resize the primary buffer for use with WebVR. Resizing
+  // needs to happen before acquiring a frame.
   if (web_vr_mode_) {
-    DrawWebVr();
-  }
-
-  uint16_t frame_index;
-  gvr::Mat4f head_pose;
-
-  // When using async reprojection, we need to know which pose was used in
-  // the WebVR app for drawing this frame. Due to unknown amounts of
-  // buffering in the compositor and SurfaceTexture, we read the pose number
-  // from a corner pixel. There's no point in doing this for legacy
-  // distortion rendering since that doesn't need a pose, and reading back
-  // pixels is an expensive operation. TODO(klausw,crbug.com/655722): stop
-  // doing this once we have working no-compositor rendering for WebVR.
-  if (web_vr_mode_ && gvr_api_->GetAsyncReprojectionEnabled() &&
-      GetPixelEncodedFrameIndex(&frame_index)) {
-    static_assert(!((kPoseRingBufferSize - 1) & kPoseRingBufferSize),
-                  "kPoseRingBufferSize must be a power of 2");
-    head_pose = webvr_head_pose_[frame_index % kPoseRingBufferSize];
-    // Process all pending_bounds_ changes targeted for before this frame, being
-    // careful of wrapping frame indices.
+    // Process all pending_bounds_ changes targeted for before this
+    // frame, being careful of wrapping frame indices.
     static constexpr unsigned max =
         std::numeric_limits<decltype(frame_index_)>::max();
     static_assert(max > kPoseRingBufferSize * 2,
@@ -673,26 +709,73 @@
                   "than half of frame_index_ range.");
     while (!pending_bounds_.empty()) {
       uint16_t index = pending_bounds_.front().first;
-      // If index is less than the frame_index it's possible we've wrapped, so
-      // we extend the range and 'un-wrap' to account for this.
+      // If index is less than the frame_index it's possible we've
+      // wrapped, so we extend the range and 'un-wrap' to account
+      // for this.
       if (index < frame_index)
         index += max;
-      // If the pending bounds change is for an upcoming frame within our buffer
-      // size, wait to apply it. Otherwise, apply it immediately. This
-      // guarantees that even if we miss many frames, the queue can't fill up
-      // with stale bounds.
+      // If the pending bounds change is for an upcoming frame
+      // within our buffer size, wait to apply it. Otherwise, apply
+      // it immediately. This guarantees that even if we miss many
+      // frames, the queue can't fill up with stale bounds.
       if (index > frame_index && index <= frame_index + kPoseRingBufferSize)
         break;
 
-      const BoundsPair& bounds = pending_bounds_.front().second;
-      webvr_left_viewport_->SetSourceUv(bounds.first);
-      webvr_right_viewport_->SetSourceUv(bounds.second);
+      const WebVrBounds& bounds = pending_bounds_.front().second;
+      webvr_left_viewport_->SetSourceUv(bounds.left_bounds);
+      webvr_right_viewport_->SetSourceUv(bounds.right_bounds);
+      DVLOG(1) << __FUNCTION__ << ": resize from pending_bounds to "
+               << bounds.source_size.width << "x" << bounds.source_size.height;
+      CreateOrResizeWebVRSurface(bounds.source_size);
       pending_bounds_.pop();
     }
     buffer_viewport_list_->SetBufferViewport(GVR_LEFT_EYE,
                                              *webvr_left_viewport_);
     buffer_viewport_list_->SetBufferViewport(GVR_RIGHT_EYE,
                                              *webvr_right_viewport_);
+    if (render_size_primary_ != webvr_surface_size_) {
+      if (!webvr_surface_size_.width) {
+        // Don't try to resize to 0x0 pixels, drop frames until we get a
+        // valid size.
+        return;
+      }
+
+      render_size_primary_ = webvr_surface_size_;
+      DVLOG(1) << __FUNCTION__ << ": resize GVR to "
+               << render_size_primary_.width << "x"
+               << render_size_primary_.height;
+      swap_chain_->ResizeBuffer(kFramePrimaryBuffer, render_size_primary_);
+    }
+  } else {
+    if (render_size_primary_ != render_size_vrshell_) {
+      render_size_primary_ = render_size_vrshell_;
+      swap_chain_->ResizeBuffer(kFramePrimaryBuffer, render_size_primary_);
+    }
+  }
+
+  TRACE_EVENT_BEGIN0("gpu", "VrShellGl::AcquireFrame");
+  gvr::Frame frame = swap_chain_->AcquireFrame();
+  TRACE_EVENT_END0("gpu", "VrShellGl::AcquireFrame");
+  if (!frame.is_valid()) {
+    return;
+  }
+  frame.BindBuffer(kFramePrimaryBuffer);
+
+  if (web_vr_mode_) {
+    DrawWebVr();
+  }
+
+  gvr::Mat4f head_pose;
+
+  // When using async reprojection, we need to know which pose was
+  // used in the WebVR app for drawing this frame and supply it when
+  // submitting. Technically we don't need a pose if not reprojecting,
+  // but keeping it uninitialized seems likely to cause problems down
+  // the road. Copying it is cheaper than fetching a new one.
+  if (web_vr_mode_) {
+    static_assert(!((kPoseRingBufferSize - 1) & kPoseRingBufferSize),
+                  "kPoseRingBufferSize must be a power of 2");
+    head_pose = webvr_head_pose_[frame_index % kPoseRingBufferSize];
   } else {
     gvr::ClockTimePoint target_time = gvr::GvrApi::GetTimePointNow();
     target_time.monotonic_system_time_nanos += kPredictionTimeWithoutVsyncNanos;
@@ -712,21 +795,31 @@
   // Update the render position of all UI elements (including desktop).
   scene_->UpdateTransforms(TimeInMicroseconds());
 
-  UpdateController(GetForwardVector(head_pose));
+  {
+    TRACE_EVENT0("gpu", "VrShellGl::UpdateController");
+    UpdateController(GetForwardVector(head_pose));
+  }
 
-  DrawVrShell(head_pose, frame);
+  // Finish drawing in the primary buffer, and draw the headlocked buffer
+  // if needed. This must be the last drawing call, this method will
+  // return with no frame being bound.
+  DrawVrShellAndUnbind(head_pose, frame);
 
-  frame.Unbind();
-  frame.Submit(*buffer_viewport_list_, head_pose);
+  {
+    TRACE_EVENT0("gpu", "VrShellGl::Submit");
+    frame.Submit(*buffer_viewport_list_, head_pose);
+  }
 
   // No need to swap buffers for surfaceless rendering.
   if (!surfaceless_rendering_) {
     // TODO(mthiesse): Support asynchronous SwapBuffers.
+    TRACE_EVENT0("gpu", "VrShellGl::SwapBuffers");
     surface_->SwapBuffers();
   }
 }
 
-void VrShellGl::DrawVrShell(const gvr::Mat4f& head_pose, gvr::Frame& frame) {
+void VrShellGl::DrawVrShellAndUnbind(const gvr::Mat4f& head_pose,
+                                     gvr::Frame& frame) {
   TRACE_EVENT0("gpu", "VrShellGl::DrawVrShell");
   std::vector<const ContentRectangle*> head_locked_elements;
   std::vector<const ContentRectangle*> world_elements;
@@ -763,6 +856,7 @@
     DrawUiView(&head_pose, world_elements, render_size_primary_,
                kViewportListPrimaryOffset);
   }
+  frame.Unbind();  // Done with the primary buffer.
 
   if (!head_locked_elements.empty()) {
     // Add head-locked viewports. The list gets reset to just
@@ -775,23 +869,15 @@
         *headlocked_right_viewport_);
 
     // Bind the headlocked framebuffer.
-    // TODO(mthiesse): We don't unbind this? Maybe some cleanup is in order
-    // here.
     frame.BindBuffer(kFrameHeadlockedBuffer);
     glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
     glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
     DrawUiView(nullptr, head_locked_elements, render_size_headlocked_,
                kViewportListHeadlockedOffset);
+    frame.Unbind();  // Done with the headlocked buffer.
   }
 }
 
-gvr::Sizei VrShellGl::GetWebVRCompositorSurfaceSize() {
-  // This is a stopgap while we're using the WebVR compositor rendering path.
-  // TODO(klausw,crbug.com/655722): Remove this method and member once we're
-  // using a separate WebVR render surface.
-  return content_tex_physical_size_;
-}
-
 void VrShellGl::DrawUiView(const gvr::Mat4f* head_pose,
                            const std::vector<const ContentRectangle*>& elements,
                            const gvr::Sizei& render_size,
@@ -998,7 +1084,15 @@
   glDisable(GL_BLEND);
   glDisable(GL_POLYGON_OFFSET_FILL);
 
-  glViewport(0, 0, render_size_primary_.width, render_size_primary_.height);
+  // We're redrawing over the entire viewport, but it's generally more
+  // efficient on mobile tiling GPUs to clear anyway as a hint that
+  // we're done with the old content. TODO(klausw,crbug.com/700389):
+  // investigate using glDiscardFramebufferEXT here since that's more
+  // efficient on desktop, but it would need a capability check since
+  // it's not supported on older devices such as Nexus 5X.
+  glClear(GL_COLOR_BUFFER_BIT);
+
+  glViewport(0, 0, webvr_surface_size_.width, webvr_surface_size_.height);
   vr_shell_renderer_->GetWebVrRenderer()->Draw(webvr_texture_id_);
 }
 
@@ -1029,13 +1123,15 @@
 
 void VrShellGl::UpdateWebVRTextureBounds(int16_t frame_index,
                                          const gvr::Rectf& left_bounds,
-                                         const gvr::Rectf& right_bounds) {
+                                         const gvr::Rectf& right_bounds,
+                                         const gvr::Sizei& source_size) {
   if (frame_index < 0) {
     webvr_left_viewport_->SetSourceUv(left_bounds);
     webvr_right_viewport_->SetSourceUv(right_bounds);
+    CreateOrResizeWebVRSurface(source_size);
   } else {
     pending_bounds_.emplace(
-        std::make_pair(frame_index, std::make_pair(left_bounds, right_bounds)));
+        frame_index, WebVrBounds(left_bounds, right_bounds, source_size));
   }
 }
 
@@ -1069,6 +1165,12 @@
 }
 
 void VrShellGl::OnVSync() {
+  while (premature_received_frames_ > 0) {
+    TRACE_EVENT0("gpu", "VrShellGl::OnWebVRFrameAvailableRetry");
+    --premature_received_frames_;
+    OnWebVRFrameAvailable();
+  }
+
   base::TimeTicks now = base::TimeTicks::Now();
   base::TimeTicks target;
 
@@ -1088,7 +1190,9 @@
     pending_vsync_ = true;
     pending_time_ = time;
   }
-  DrawFrame();
+  if (!web_vr_mode_) {
+    DrawFrame(-1);
+  }
 }
 
 void VrShellGl::OnRequest(device::mojom::VRVSyncProviderRequest request) {
@@ -1158,8 +1262,11 @@
 void VrShellGl::CreateVRDisplayInfo(
     const base::Callback<void(device::mojom::VRDisplayInfoPtr)>& callback,
     uint32_t device_id) {
+  // This assumes that the initial webvr_surface_size_ was set to the
+  // appropriate recommended render resolution as the default size during
+  // InitializeGl. Revisit if the initialization order changes.
   device::mojom::VRDisplayInfoPtr info = VrShell::CreateVRDisplayInfo(
-      gvr_api_.get(), content_tex_physical_size_, device_id);
+      gvr_api_.get(), webvr_surface_size_, device_id);
   main_thread_task_runner_->PostTask(
       FROM_HERE,
       base::Bind(&RunVRDisplayInfoCallback, callback, base::Passed(&info)));
diff --git a/chrome/browser/android/vr_shell/vr_shell_gl.h b/chrome/browser/android/vr_shell/vr_shell_gl.h
index b04cb8a07..54bc7d3 100644
--- a/chrome/browser/android/vr_shell/vr_shell_gl.h
+++ b/chrome/browser/android/vr_shell/vr_shell_gl.h
@@ -37,8 +37,13 @@
 class SurfaceTexture;
 }
 
+namespace gpu {
+struct MailboxHolder;
+}
+
 namespace vr_shell {
 
+class MailboxToSurfaceBridge;
 class UiScene;
 class VrController;
 class VrShell;
@@ -46,6 +51,14 @@
 class VrShellRenderer;
 struct ContentRectangle;
 
+struct WebVrBounds {
+  WebVrBounds(gvr::Rectf left, gvr::Rectf right, gvr::Sizei size)
+      : left_bounds(left), right_bounds(right), source_size(size) {}
+  gvr::Rectf left_bounds;
+  gvr::Rectf right_bounds;
+  gvr::Sizei source_size;
+};
+
 // This class manages all GLThread owned objects and GL rendering for VrShell.
 // It is not threadsafe and must only be used on the GL thread.
 class VrShellGl : public device::mojom::VRVSyncProvider {
@@ -72,6 +85,7 @@
   void OnResume();
 
   void SetWebVrMode(bool enabled);
+  void CreateOrResizeWebVRSurface(const gvr::Sizei& size);
   void CreateContentSurface();
   void ContentBoundsChanged(int width, int height);
   void ContentPhysicalBoundsChanged(int width, int height);
@@ -81,8 +95,8 @@
 
   void UpdateWebVRTextureBounds(int16_t frame_index,
                                 const gvr::Rectf& left_bounds,
-                                const gvr::Rectf& right_bounds);
-  gvr::Sizei GetWebVRCompositorSurfaceSize();
+                                const gvr::Rectf& right_bounds,
+                                const gvr::Sizei& source_size);
 
   void UpdateScene(std::unique_ptr<base::ListValue> commands);
 
@@ -93,12 +107,15 @@
   void CreateVRDisplayInfo(
       const base::Callback<void(device::mojom::VRDisplayInfoPtr)>& callback,
       uint32_t device_id);
+  void SubmitWebVRFrame(int16_t frame_index, const gpu::MailboxHolder& mailbox);
+  void SetSubmitClient(
+      device::mojom::VRSubmitFrameClientPtrInfo submit_client_info);
 
  private:
   void GvrInit(gvr_context* gvr_api);
   void InitializeRenderer();
-  void DrawFrame();
-  void DrawVrShell(const gvr::Mat4f& head_pose, gvr::Frame& frame);
+  void DrawFrame(int16_t frame_index);
+  void DrawVrShellAndUnbind(const gvr::Mat4f& head_pose, gvr::Frame& frame);
   void DrawUiView(const gvr::Mat4f* head_pose,
                   const std::vector<const ContentRectangle*>& elements,
                   const gvr::Sizei& render_size,
@@ -120,6 +137,7 @@
   void CreateUiSurface();
   void OnUIFrameAvailable();
   void OnContentFrameAvailable();
+  void OnWebVRFrameAvailable();
   bool GetPixelEncodedFrameIndex(uint16_t* frame_index);
 
   void OnVSync();
@@ -135,6 +153,8 @@
   int ui_texture_id_ = 0;
   // samplerExternalOES texture data for main content image.
   int content_texture_id_ = 0;
+  // samplerExternalOES texture data for WebVR content image.
+  int webvr_texture_id_ = 0;
 
   std::unique_ptr<UiScene> scene_;
 
@@ -142,6 +162,7 @@
   scoped_refptr<gl::GLContext> context_;
   scoped_refptr<gl::SurfaceTexture> ui_surface_texture_;
   scoped_refptr<gl::SurfaceTexture> content_surface_texture_;
+  scoped_refptr<gl::SurfaceTexture> webvr_surface_texture_;
 
   std::unique_ptr<gl::ScopedJavaSurface> ui_surface_;
   std::unique_ptr<gl::ScopedJavaSurface> content_surface_;
@@ -154,13 +175,19 @@
   std::unique_ptr<gvr::BufferViewport> webvr_left_viewport_;
   std::unique_ptr<gvr::BufferViewport> webvr_right_viewport_;
   std::unique_ptr<gvr::SwapChain> swap_chain_;
-  using BoundsPair = std::pair<gvr::Rectf, gvr::Rectf>;
-  std::queue<std::pair<uint8_t, BoundsPair>> pending_bounds_;
+  std::queue<std::pair<uint8_t, WebVrBounds>> pending_bounds_;
+  int premature_received_frames_ = 0;
+  std::queue<uint16_t> pending_frames_;
+  std::unique_ptr<MailboxToSurfaceBridge> mailbox_bridge_;
 
   // Current sizes for the render buffers.
   gvr::Sizei render_size_primary_;
   gvr::Sizei render_size_headlocked_;
 
+  // Intended render_size_primary_ for use by VrShell, so that it
+  // can be restored after exiting WebVR mode.
+  gvr::Sizei render_size_vrshell_;
+
   std::unique_ptr<VrShellRenderer> vr_shell_renderer_;
 
   bool touch_pending_ = false;
@@ -175,10 +202,10 @@
   int content_tex_css_width_ = 0;
   int content_tex_css_height_ = 0;
   gvr::Sizei content_tex_physical_size_ = {0, 0};
+  gvr::Sizei webvr_surface_size_ = {0, 0};
   gvr::Sizei ui_tex_physical_size_ = {0, 0};
 
   std::vector<gvr::Mat4f> webvr_head_pose_;
-  int webvr_texture_id_ = 0;
   bool web_vr_mode_;
   bool ready_to_draw_ = false;
   bool surfaceless_rendering_;
@@ -195,6 +222,7 @@
   GetVSyncCallback callback_;
   bool received_frame_ = false;
   mojo::Binding<device::mojom::VRVSyncProvider> binding_;
+  device::mojom::VRSubmitFrameClientPtr submit_client_;
 
   base::WeakPtr<VrShell> weak_vr_shell_;
   base::WeakPtr<VrShellDelegate> delegate_provider_;
diff --git a/chrome/browser/android/vr_shell/vr_shell_renderer.cc b/chrome/browser/android/vr_shell/vr_shell_renderer.cc
index 55ce9510..0ce95a9 100644
--- a/chrome/browser/android/vr_shell/vr_shell_renderer.cc
+++ b/chrome/browser/android/vr_shell/vr_shell_renderer.cc
@@ -406,11 +406,9 @@
                         VOID_OFFSET(kTextureCoordinateDataOffset));
   glEnableVertexAttribArray(tex_coord_handle_);
 
-  // Bind texture. Ideally this should be a 1:1 pixel copy. (Or even more
-  // ideally, a zero copy reuse of the texture.) For now, we're using an
-  // undersized render target for WebVR, so GL_LINEAR makes it look slightly
-  // less chunky. TODO(klausw): change this to GL_NEAREST once we're doing
-  // a 1:1 copy since that should be more efficient.
+  // Bind texture. This is a 1:1 pixel copy since the source surface
+  // and renderbuffer destination size are resized to match, so use
+  // GL_NEAREST.
   glActiveTexture(GL_TEXTURE0);
   glBindTexture(GL_TEXTURE_EXTERNAL_OES, texture_handle);
   glTexParameteri(GL_TEXTURE_EXTERNAL_OES, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
diff --git a/chrome/browser/chrome_browser_main.cc b/chrome/browser/chrome_browser_main.cc
index 8ee0da30..247a008 100644
--- a/chrome/browser/chrome_browser_main.cc
+++ b/chrome/browser/chrome_browser_main.cc
@@ -1914,14 +1914,6 @@
   }
   run_message_loop_ = started;
   browser_creator_.reset();
-
-#if !defined(OS_LINUX) || defined(OS_CHROMEOS)
-  // Collects power-related UMA stats for Windows, Mac, and ChromeOS.
-  // Linux is not supported (crbug.com/426393).
-  power_usage_monitor_.reset(new PowerUsageMonitor());
-  power_usage_monitor_->Start();
-#endif  // !defined(OS_LINUX) || defined(OS_CHROMEOS)
-
 #endif  // !defined(OS_ANDROID)
 
   PostBrowserStart();
diff --git a/chrome/browser/chrome_browser_main.h b/chrome/browser/chrome_browser_main.h
index ebff7a3..f4cfa59c 100644
--- a/chrome/browser/chrome_browser_main.h
+++ b/chrome/browser/chrome_browser_main.h
@@ -16,7 +16,6 @@
 #include "chrome/browser/chrome_browser_field_trials.h"
 #include "chrome/browser/chrome_process_singleton.h"
 #include "chrome/browser/first_run/first_run.h"
-#include "chrome/browser/power_usage_monitor/power_usage_monitor.h"
 #include "chrome/browser/process_singleton.h"
 #include "chrome/browser/ui/startup/startup_browser_creator.h"
 #include "chrome/common/stack_sampling_configuration.h"
@@ -171,10 +170,6 @@
   // ProcessSingleton.
   std::unique_ptr<ChromeProcessSingleton> process_singleton_;
 
-#if !defined(OS_LINUX) || defined(OS_CHROMEOS)  // http://crbug.com/426393
-  std::unique_ptr<PowerUsageMonitor> power_usage_monitor_;
-#endif  // !defined(OS_LINUX) || defined(OS_CHROMEOS)
-
   // Android's first run is done in Java instead of native.
   std::unique_ptr<first_run::MasterPrefs> master_prefs_;
 
diff --git a/chrome/browser/chrome_content_utility_manifest_overlay.json b/chrome/browser/chrome_content_utility_manifest_overlay.json
index 3684bcc..3056727c 100644
--- a/chrome/browser/chrome_content_utility_manifest_overlay.json
+++ b/chrome/browser/chrome_content_utility_manifest_overlay.json
@@ -7,6 +7,7 @@
           "chrome::mojom::FilePatcher",
           "chrome::mojom::ProfileImport",
           "chrome::mojom::ResourceUsageReporter",
+          "chrome::mojom::SafeArchiveAnalyzer",
           "chrome::mojom::ShellHandler",
           "chrome::mojom::ZipFileCreator",
           "extensions::mojom::MediaParser",
diff --git a/chrome/browser/net/nqe/ui_network_quality_estimator_service.cc b/chrome/browser/net/nqe/ui_network_quality_estimator_service.cc
index 4d97fa30..fd5cf78 100644
--- a/chrome/browser/net/nqe/ui_network_quality_estimator_service.cc
+++ b/chrome/browser/net/nqe/ui_network_quality_estimator_service.cc
@@ -80,7 +80,8 @@
 // to the UI service.
 // It is created on the UI thread, but used and deleted on the IO thread.
 class UINetworkQualityEstimatorService::IONetworkQualityObserver
-    : public net::NetworkQualityEstimator::EffectiveConnectionTypeObserver {
+    : public net::NetworkQualityEstimator::EffectiveConnectionTypeObserver,
+      public net::NetworkQualityEstimator::RTTAndThroughputEstimatesObserver {
  public:
   explicit IONetworkQualityObserver(
       base::WeakPtr<UINetworkQualityEstimatorService> service)
@@ -90,8 +91,10 @@
 
   ~IONetworkQualityObserver() override {
     DCHECK_CURRENTLY_ON(content::BrowserThread::IO);
-    if (network_quality_estimator_)
+    if (network_quality_estimator_) {
       network_quality_estimator_->RemoveEffectiveConnectionTypeObserver(this);
+      network_quality_estimator_->RemoveRTTAndThroughputEstimatesObserver(this);
+    }
   }
 
   void InitializeOnIOThread(IOThread* io_thread) {
@@ -103,6 +106,7 @@
     if (!network_quality_estimator_)
       return;
     network_quality_estimator_->AddEffectiveConnectionTypeObserver(this);
+    network_quality_estimator_->AddRTTAndThroughputEstimatesObserver(this);
   }
 
   // net::NetworkQualityEstimator::EffectiveConnectionTypeObserver
@@ -117,6 +121,20 @@
             service_, type));
   }
 
+  // net::NetworkQualityEstimator::RTTAndThroughputEstimatesObserver
+  // implementation:
+  void OnRTTOrThroughputEstimatesComputed(
+      base::TimeDelta http_rtt,
+      base::TimeDelta transport_rtt,
+      int32_t downstream_throughput_kbps) override {
+    DCHECK_CURRENTLY_ON(content::BrowserThread::IO);
+    content::BrowserThread::PostTask(
+        content::BrowserThread::UI, FROM_HERE,
+        base::Bind(&UINetworkQualityEstimatorService::RTTOrThroughputComputed,
+                   service_, http_rtt, transport_rtt,
+                   downstream_throughput_kbps));
+  }
+
  private:
   base::WeakPtr<UINetworkQualityEstimatorService> service_;
   net::NetworkQualityEstimator* network_quality_estimator_;
@@ -126,7 +144,11 @@
 
 UINetworkQualityEstimatorService::UINetworkQualityEstimatorService(
     Profile* profile)
-    : type_(net::EFFECTIVE_CONNECTION_TYPE_UNKNOWN), weak_factory_(this) {
+    : type_(net::EFFECTIVE_CONNECTION_TYPE_UNKNOWN),
+      http_rtt_(base::TimeDelta::FromMilliseconds(-1)),
+      transport_rtt_(base::TimeDelta::FromMilliseconds(-1)),
+      downstream_throughput_kbps_(-1),
+      weak_factory_(this) {
   DCHECK(profile);
   // If this is running in a context without an IOThread, don't try to create
   // the IO object.
@@ -182,6 +204,21 @@
     observer.OnEffectiveConnectionTypeChanged(type);
 }
 
+void UINetworkQualityEstimatorService::RTTOrThroughputComputed(
+    base::TimeDelta http_rtt,
+    base::TimeDelta transport_rtt,
+    int32_t downstream_throughput_kbps) {
+  DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
+  http_rtt_ = http_rtt;
+  transport_rtt_ = transport_rtt;
+  downstream_throughput_kbps_ = downstream_throughput_kbps;
+
+  for (auto& observer : rtt_throughput_observer_list_) {
+    observer.OnRTTOrThroughputEstimatesComputed(http_rtt, transport_rtt,
+                                                downstream_throughput_kbps);
+  }
+}
+
 void UINetworkQualityEstimatorService::AddEffectiveConnectionTypeObserver(
     net::NetworkQualityEstimator::EffectiveConnectionTypeObserver* observer) {
   DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
@@ -202,6 +239,28 @@
   effective_connection_type_observer_list_.RemoveObserver(observer);
 }
 
+void UINetworkQualityEstimatorService::AddRTTAndThroughputEstimatesObserver(
+    net::NetworkQualityEstimator::RTTAndThroughputEstimatesObserver* observer) {
+  DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
+  rtt_throughput_observer_list_.AddObserver(observer);
+
+  // Notify the |observer| on the next message pump since |observer| may not
+  // be completely set up for receiving the callbacks.
+  content::BrowserThread::PostTask(
+      content::BrowserThread::UI, FROM_HERE,
+      base::Bind(&UINetworkQualityEstimatorService::
+                     NotifyRTTAndThroughputObserverIfPresent,
+                 weak_factory_.GetWeakPtr(), observer));
+}
+
+// Removes |observer| from the list of RTT and throughput estimate observers.
+// Must be called on the IO thread.
+void UINetworkQualityEstimatorService::RemoveRTTAndThroughputEstimatesObserver(
+    net::NetworkQualityEstimator::RTTAndThroughputEstimatesObserver* observer) {
+  DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
+  rtt_throughput_observer_list_.RemoveObserver(observer);
+}
+
 void UINetworkQualityEstimatorService::SetEffectiveConnectionTypeForTesting(
     net::EffectiveConnectionType type) {
   DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
@@ -234,6 +293,17 @@
   observer->OnEffectiveConnectionTypeChanged(type_);
 }
 
+void UINetworkQualityEstimatorService::NotifyRTTAndThroughputObserverIfPresent(
+    net::NetworkQualityEstimator::RTTAndThroughputEstimatesObserver* observer)
+    const {
+  DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
+
+  if (!rtt_throughput_observer_list_.HasObserver(observer))
+    return;
+  observer->OnRTTOrThroughputEstimatesComputed(http_rtt_, transport_rtt_,
+                                               downstream_throughput_kbps_);
+}
+
 // static
 void UINetworkQualityEstimatorService::RegisterProfilePrefs(
     PrefRegistrySimple* registry) {
diff --git a/chrome/browser/net/nqe/ui_network_quality_estimator_service.h b/chrome/browser/net/nqe/ui_network_quality_estimator_service.h
index cf205e5e..af77188b 100644
--- a/chrome/browser/net/nqe/ui_network_quality_estimator_service.h
+++ b/chrome/browser/net/nqe/ui_network_quality_estimator_service.h
@@ -47,6 +47,20 @@
       net::NetworkQualityEstimator::EffectiveConnectionTypeObserver* observer)
       override;
 
+  // Must be called on the UI thread. |observer| will be notified on the UI
+  // thread. |observer| would be notified of the changes in the HTTP RTT,
+  // transport RTT or throughput. |observer| would be notified of the current
+  // values in the next message pump.
+  void AddRTTAndThroughputEstimatesObserver(
+      net::NetworkQualityEstimator::RTTAndThroughputEstimatesObserver* observer)
+      override;
+
+  // Removes |observer| from the list of RTT and throughput estimate observers.
+  // Must be called on the UI thread.
+  void RemoveRTTAndThroughputEstimatesObserver(
+      net::NetworkQualityEstimator::RTTAndThroughputEstimatesObserver* observer)
+      override;
+
   // Registers the profile-specific network quality estimator prefs.
   static void RegisterProfilePrefs(PrefRegistrySimple* registry);
 
@@ -72,6 +86,12 @@
       net::NetworkQualityEstimator::EffectiveConnectionTypeObserver* observer)
       const;
 
+  // Notifies |observer| of the current effective connection type if |observer|
+  // is still registered as an observer.
+  void NotifyRTTAndThroughputObserverIfPresent(
+      net::NetworkQualityEstimator::RTTAndThroughputEstimatesObserver* observer)
+      const;
+
   // KeyedService implementation:
   void Shutdown() override;
 
@@ -81,9 +101,20 @@
   // reported by NetworkchangeNotifier::GetConnectionType.
   void EffectiveConnectionTypeChanged(net::EffectiveConnectionType type);
 
+  // Called when the estimated HTTP RTT, estimated transport RTT or estimated
+  // downstream throughput is computed.
+  void RTTOrThroughputComputed(base::TimeDelta http_rtt,
+                               base::TimeDelta transport_rtt,
+                               int32_t downstream_throughput_kbps);
+
   // The current EffectiveConnectionType.
   net::EffectiveConnectionType type_;
 
+  // Current network quality metrics.
+  base::TimeDelta http_rtt_;
+  base::TimeDelta transport_rtt_;
+  int32_t downstream_throughput_kbps_;
+
   // IO thread based observer that is owned by this service. Created on the UI
   // thread, but used and deleted on the IO thread.
   std::unique_ptr<IONetworkQualityObserver> io_observer_;
@@ -93,6 +124,11 @@
       net::NetworkQualityEstimator::EffectiveConnectionTypeObserver>
       effective_connection_type_observer_list_;
 
+  // Observer list for changes in RTT or throughput values.
+  base::ObserverList<
+      net::NetworkQualityEstimator::RTTAndThroughputEstimatesObserver>
+      rtt_throughput_observer_list_;
+
   // Prefs manager that is owned by this service. Created on the UI thread, but
   // used and deleted on the IO thread.
   std::unique_ptr<net::NetworkQualitiesPrefsManager> prefs_manager_;
diff --git a/chrome/browser/net/nqe/ui_network_quality_estimator_service_browsertest.cc b/chrome/browser/net/nqe/ui_network_quality_estimator_service_browsertest.cc
index d33beb0a..e4119d5 100644
--- a/chrome/browser/net/nqe/ui_network_quality_estimator_service_browsertest.cc
+++ b/chrome/browser/net/nqe/ui_network_quality_estimator_service_browsertest.cc
@@ -6,6 +6,7 @@
 #include <string>
 
 #include "base/bind.h"
+#include "base/macros.h"
 #include "base/metrics/field_trial.h"
 #include "base/run_loop.h"
 #include "base/test/histogram_tester.h"
@@ -51,6 +52,42 @@
 
  private:
   net::EffectiveConnectionType effective_connection_type_;
+
+  DISALLOW_COPY_AND_ASSIGN(TestEffectiveConnectionTypeObserver);
+};
+
+class TestRTTAndThroughputEstimatesObserver
+    : public net::NetworkQualityEstimator::RTTAndThroughputEstimatesObserver {
+ public:
+  TestRTTAndThroughputEstimatesObserver()
+      : http_rtt_(base::TimeDelta::FromMilliseconds(-1)),
+        transport_rtt_(base::TimeDelta::FromMilliseconds(-1)),
+        downstream_throughput_kbps_(-1) {}
+  ~TestRTTAndThroughputEstimatesObserver() override {}
+
+  // net::NetworkQualityEstimator::RTTAndThroughputEstimatesObserver
+  // implementation:
+  void OnRTTOrThroughputEstimatesComputed(
+      base::TimeDelta http_rtt,
+      base::TimeDelta transport_rtt,
+      int32_t downstream_throughput_kbps) override {
+    http_rtt_ = http_rtt;
+    transport_rtt_ = transport_rtt;
+    downstream_throughput_kbps_ = downstream_throughput_kbps;
+  }
+
+  base::TimeDelta http_rtt() const { return http_rtt_; }
+  base::TimeDelta transport_rtt() const { return transport_rtt_; }
+  int32_t downstream_throughput_kbps() const {
+    return downstream_throughput_kbps_;
+  }
+
+ private:
+  base::TimeDelta http_rtt_;
+  base::TimeDelta transport_rtt_;
+  int32_t downstream_throughput_kbps_;
+
+  DISALLOW_COPY_AND_ASSIGN(TestRTTAndThroughputEstimatesObserver);
 };
 
 class UINetworkQualityEstimatorServiceBrowserTest
@@ -205,6 +242,50 @@
             nqe_observer_3.effective_connection_type());
 }
 
+IN_PROC_BROWSER_TEST_F(UINetworkQualityEstimatorServiceBrowserTest,
+                       VerifyRTTs) {
+  // Verifies that NQE notifying RTTAndThroughputEstimatesObserver causes the
+  // UINetworkQualityEstimatorService to receive an update.
+  Profile* profile = ProfileManager::GetActiveUserProfile();
+  UINetworkQualityEstimatorService* nqe_service =
+      UINetworkQualityEstimatorServiceFactory::GetForProfile(profile);
+  TestRTTAndThroughputEstimatesObserver nqe_observer;
+  nqe_service->AddRTTAndThroughputEstimatesObserver(&nqe_observer);
+
+  base::TimeDelta rtt_1 = base::TimeDelta::FromMilliseconds(100);
+
+  nqe_test_util::OverrideRTTsAndWait(rtt_1);
+  EXPECT_EQ(rtt_1, nqe_observer.http_rtt());
+
+  base::TimeDelta rtt_2 = base::TimeDelta::FromMilliseconds(200);
+
+  nqe_test_util::OverrideRTTsAndWait(rtt_2);
+  EXPECT_EQ(rtt_2, nqe_observer.http_rtt());
+
+  nqe_service->RemoveRTTAndThroughputEstimatesObserver(&nqe_observer);
+
+  base::TimeDelta rtt_3 = base::TimeDelta::FromMilliseconds(300);
+
+  nqe_test_util::OverrideRTTsAndWait(rtt_3);
+  EXPECT_EQ(rtt_2, nqe_observer.http_rtt());
+
+  // Observer should be notified on addition.
+  TestRTTAndThroughputEstimatesObserver nqe_observer_2;
+  nqe_service->AddRTTAndThroughputEstimatesObserver(&nqe_observer_2);
+  EXPECT_GT(0, nqe_observer_2.http_rtt().InMilliseconds());
+  base::RunLoop().RunUntilIdle();
+  EXPECT_EQ(rtt_3, nqe_observer_2.http_rtt());
+
+  // |nqe_observer_3| should be not notified since it unregisters before the
+  // message loop is run.
+  TestRTTAndThroughputEstimatesObserver nqe_observer_3;
+  nqe_service->AddRTTAndThroughputEstimatesObserver(&nqe_observer_3);
+  EXPECT_GT(0, nqe_observer_3.http_rtt().InMilliseconds());
+  nqe_service->RemoveRTTAndThroughputEstimatesObserver(&nqe_observer_3);
+  base::RunLoop().RunUntilIdle();
+  EXPECT_GT(0, nqe_observer_3.http_rtt().InMilliseconds());
+}
+
 // Verify that prefs are writen and read correctly.
 IN_PROC_BROWSER_TEST_F(UINetworkQualityEstimatorServiceBrowserTest,
                        WritingReadingToPrefsEnabled) {
diff --git a/chrome/browser/net/nqe/ui_network_quality_estimator_service_test_util.cc b/chrome/browser/net/nqe/ui_network_quality_estimator_service_test_util.cc
index fe3e55c..d1eac6a 100644
--- a/chrome/browser/net/nqe/ui_network_quality_estimator_service_test_util.cc
+++ b/chrome/browser/net/nqe/ui_network_quality_estimator_service_test_util.cc
@@ -28,6 +28,16 @@
   network_quality_estimator->ReportEffectiveConnectionTypeForTesting(type);
 }
 
+void OverrideRTTsAndWaitOnIO(base::TimeDelta rtt, IOThread* io_thread) {
+  if (!io_thread->globals()->network_quality_estimator)
+    return;
+  net::NetworkQualityEstimator* network_quality_estimator =
+      io_thread->globals()->network_quality_estimator.get();
+  if (!network_quality_estimator)
+    return;
+  network_quality_estimator->ReportRTTsAndThroughputForTesting(rtt, rtt, -1);
+}
+
 }  // namespace
 
 void OverrideEffectiveConnectionTypeAndWait(net::EffectiveConnectionType type) {
@@ -43,4 +53,16 @@
   run_loop.Run();
 }
 
+void OverrideRTTsAndWait(base::TimeDelta rtt) {
+  // Block |run_loop| until OverrideRTTsAndWaitOnIO has completed.
+  // Any UI tasks posted by calling OverrideRTTsAndWaitOnIO will complete before
+  // the reply unblocks |run_loop|.
+  base::RunLoop run_loop;
+  content::BrowserThread::PostTaskAndReply(
+      content::BrowserThread::IO, FROM_HERE,
+      base::Bind(&OverrideRTTsAndWaitOnIO, rtt, g_browser_process->io_thread()),
+      run_loop.QuitClosure());
+  run_loop.Run();
+}
+
 }  // namespace nqe_test_util
diff --git a/chrome/browser/net/nqe/ui_network_quality_estimator_service_test_util.h b/chrome/browser/net/nqe/ui_network_quality_estimator_service_test_util.h
index d59914d..35943ce 100644
--- a/chrome/browser/net/nqe/ui_network_quality_estimator_service_test_util.h
+++ b/chrome/browser/net/nqe/ui_network_quality_estimator_service_test_util.h
@@ -5,6 +5,7 @@
 #ifndef CHROME_BROWSER_NET_NQE_UI_NETWORK_QUALITY_ESTIMATOR_SERVICE_TEST_UTIL_H_
 #define CHROME_BROWSER_NET_NQE_UI_NETWORK_QUALITY_ESTIMATOR_SERVICE_TEST_UTIL_H_
 
+#include "base/time/time.h"
 #include "net/nqe/effective_connection_type.h"
 
 namespace nqe_test_util {
@@ -15,6 +16,12 @@
 // replies.
 void OverrideEffectiveConnectionTypeAndWait(net::EffectiveConnectionType type);
 
+// Forces NetworkQualityEstimator to report |rtt| to all its
+// RTTAndThroughputEstimatesObservers.
+// This blocks execution on the calling thread until the IO task runs and
+// replies.
+void OverrideRTTsAndWait(base::TimeDelta rtt);
+
 }  // namespace nqe_test_util
 
 #endif  // CHROME_BROWSER_NET_NQE_UI_NETWORK_QUALITY_ESTIMATOR_SERVICE_TEST_UTIL_H_
diff --git a/chrome/browser/page_load_metrics/observers/ukm_page_load_metrics_observer_unittest.cc b/chrome/browser/page_load_metrics/observers/ukm_page_load_metrics_observer_unittest.cc
index fa4dc6c..fe9d7f5 100644
--- a/chrome/browser/page_load_metrics/observers/ukm_page_load_metrics_observer_unittest.cc
+++ b/chrome/browser/page_load_metrics/observers/ukm_page_load_metrics_observer_unittest.cc
@@ -34,6 +34,12 @@
   MOCK_METHOD1(
       RemoveEffectiveConnectionTypeObserver,
       void(net::NetworkQualityEstimator::EffectiveConnectionTypeObserver*));
+  MOCK_METHOD1(
+      AddRTTAndThroughputEstimatesObserver,
+      void(net::NetworkQualityEstimator::RTTAndThroughputEstimatesObserver*));
+  MOCK_METHOD1(
+      RemoveRTTAndThroughputEstimatesObserver,
+      void(net::NetworkQualityEstimator::RTTAndThroughputEstimatesObserver*));
 };
 
 }  // namespace
diff --git a/chrome/browser/power_usage_monitor/power_usage_monitor.cc b/chrome/browser/power_usage_monitor/power_usage_monitor.cc
deleted file mode 100644
index 4ce9c5c4..0000000
--- a/chrome/browser/power_usage_monitor/power_usage_monitor.cc
+++ /dev/null
@@ -1,254 +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 "chrome/browser/power_usage_monitor/power_usage_monitor.h"
-
-#include <stddef.h>
-#include <utility>
-
-#include "base/bind.h"
-#include "base/lazy_instance.h"
-#include "base/logging.h"
-#include "base/macros.h"
-#include "base/metrics/histogram_macros.h"
-#include "base/strings/stringprintf.h"
-#include "base/sys_info.h"
-#include "content/public/browser/browser_thread.h"
-#include "content/public/browser/notification_service.h"
-#include "content/public/browser/notification_source.h"
-#include "content/public/browser/notification_types.h"
-#include "content/public/browser/render_process_host.h"
-
-namespace {
-
-// Wait this long after power on before enabling power usage monitoring.
-const int kMinUptimeMinutes = 30;
-
-// Minimum discharge time after which we collect the discharge rate.
-const int kMinDischargeMinutes = 30;
-
-class PowerUsageMonitorSystemInterface
-    : public PowerUsageMonitor::SystemInterface {
- public:
-  explicit PowerUsageMonitorSystemInterface(PowerUsageMonitor* owner)
-      : power_usage_monitor_(owner), weak_ptr_factory_(this) {}
-  ~PowerUsageMonitorSystemInterface() override {}
-
-  void ScheduleHistogramReport(base::TimeDelta delay) override {
-    content::BrowserThread::PostDelayedTask(
-        content::BrowserThread::UI, FROM_HERE,
-        base::Bind(
-            &PowerUsageMonitorSystemInterface::ReportBatteryLevelHistogram,
-            weak_ptr_factory_.GetWeakPtr(), Now(), delay),
-        delay);
-  }
-
-  void CancelPendingHistogramReports() override {
-    weak_ptr_factory_.InvalidateWeakPtrs();
-  }
-
-  void RecordDischargePercentPerHour(int percent_per_hour) override {
-    UMA_HISTOGRAM_PERCENTAGE("Power.BatteryDischargePercentPerHour",
-                             percent_per_hour);
-  }
-
-  base::Time Now() override { return base::Time::Now(); }
-
- protected:
-  void ReportBatteryLevelHistogram(base::Time start_time,
-                                   base::TimeDelta discharge_time) {
-    // It's conceivable that the code to cancel pending histogram reports on
-    // system suspend, will only get called after the system has woken up.
-    // To mitigage this, check whether more time has passed than expected and
-    // abort histogram recording in this case.
-
-    // Delayed tasks are subject to timer coalescing and can fire anywhere from
-    // delay -> delay * 1.5) . In most cases, the OS should fire the task
-    // at the next wakeup and not as late as it can.
-    // A threshold of 2 minutes is used, since that should be large enough to
-    // take the slop factor due to coalescing into account.
-    base::TimeDelta threshold =
-        discharge_time + base::TimeDelta::FromMinutes(2);
-    if ((Now() - start_time) > threshold) {
-      return;
-    }
-
-    const std::string histogram_name = base::StringPrintf(
-        "Power.BatteryDischarge_%d", discharge_time.InMinutes());
-    base::HistogramBase* histogram =
-        base::Histogram::FactoryGet(histogram_name, 1, 100, 101,
-                                    base::Histogram::kUmaTargetedHistogramFlag);
-    double discharge_amount = power_usage_monitor_->discharge_amount();
-    histogram->Add(discharge_amount * 100);
-  }
-
- private:
-  PowerUsageMonitor* power_usage_monitor_;  // Not owned.
-
-  // Used to cancel in progress delayed tasks.
-  base::WeakPtrFactory<PowerUsageMonitorSystemInterface> weak_ptr_factory_;
-};
-
-}  // namespace
-
-PowerUsageMonitor::PowerUsageMonitor()
-    : callback_(base::Bind(&PowerUsageMonitor::OnBatteryStatusUpdate,
-                           base::Unretained(this))),
-      system_interface_(new PowerUsageMonitorSystemInterface(this)),
-      started_(false),
-      tracking_discharge_(false),
-      on_battery_power_(false),
-      initial_battery_level_(0),
-      current_battery_level_(0) {}
-
-PowerUsageMonitor::~PowerUsageMonitor() {
-  if (started_)
-    base::PowerMonitor::Get()->RemoveObserver(this);
-}
-
-void PowerUsageMonitor::Start() {
-  // Power monitoring may be delayed based on uptime, but renderer process
-  // lifetime tracking needs to start immediately so processes created before
-  // then are accounted for.
-  registrar_.Add(this, content::NOTIFICATION_RENDERER_PROCESS_CREATED,
-                 content::NotificationService::AllBrowserContextsAndSources());
-  registrar_.Add(this, content::NOTIFICATION_RENDERER_PROCESS_CLOSED,
-                 content::NotificationService::AllBrowserContextsAndSources());
-  subscription_ =
-      device::BatteryStatusService::GetInstance()->AddCallback(callback_);
-
-  // Delay initialization until the system has been up for a while.
-  // This is to mitigate the effect of increased power draw during system start.
-  base::TimeDelta uptime = base::SysInfo::Uptime();
-  base::TimeDelta min_uptime = base::TimeDelta::FromMinutes(kMinUptimeMinutes);
-  if (uptime < min_uptime) {
-    base::TimeDelta delay = min_uptime - uptime;
-    content::BrowserThread::PostDelayedTask(
-        content::BrowserThread::UI, FROM_HERE,
-        base::Bind(&PowerUsageMonitor::StartInternal, base::Unretained(this)),
-        delay);
-  } else {
-    StartInternal();
-  }
-}
-
-void PowerUsageMonitor::StartInternal() {
-  DCHECK(!started_);
-  started_ = true;
-
-  // PowerMonitor is used to get suspend/resume notifications.
-  base::PowerMonitor::Get()->AddObserver(this);
-}
-
-void PowerUsageMonitor::DischargeStarted(double battery_level) {
-  on_battery_power_ = true;
-
-  // If all browser windows are closed, don't report power metrics since
-  // Chrome's power draw is likely not significant.
-  if (live_renderer_ids_.empty())
-    return;
-
-  // Cancel any in-progress ReportBatteryLevelHistogram() calls.
-  system_interface_->CancelPendingHistogramReports();
-
-  tracking_discharge_ = true;
-  start_discharge_time_ = system_interface_->Now();
-
-  initial_battery_level_ = battery_level;
-  current_battery_level_ = battery_level;
-
-  const int kBatteryReportingIntervalMinutes[] = {5, 15, 30};
-  for (auto reporting_interval : kBatteryReportingIntervalMinutes) {
-    base::TimeDelta delay = base::TimeDelta::FromMinutes(reporting_interval);
-    system_interface_->ScheduleHistogramReport(delay);
-  }
-}
-
-void PowerUsageMonitor::WallPowerConnected(double battery_level) {
-  on_battery_power_ = false;
-
-  if (tracking_discharge_) {
-    DCHECK(!start_discharge_time_.is_null());
-    base::TimeDelta discharge_time =
-        system_interface_->Now() - start_discharge_time_;
-
-    if (discharge_time.InMinutes() > kMinDischargeMinutes) {
-      // Record the rate at which the battery discharged over the entire period
-      // the system was on battery power.
-      double discharge_hours = discharge_time.InSecondsF() / 3600.0;
-      int percent_per_hour =
-          floor(((discharge_amount() / discharge_hours) * 100.0) + 0.5);
-      system_interface_->RecordDischargePercentPerHour(percent_per_hour);
-    }
-  }
-
-  // Cancel any in-progress ReportBatteryLevelHistogram() calls.
-  system_interface_->CancelPendingHistogramReports();
-
-  initial_battery_level_ = 0;
-  current_battery_level_ = 0;
-  start_discharge_time_ = base::Time();
-  tracking_discharge_ = false;
-}
-
-void PowerUsageMonitor::OnBatteryStatusUpdate(
-    const device::BatteryStatus& status) {
-  bool now_on_battery_power = (status.charging == 0);
-  bool was_on_battery_power = on_battery_power_;
-  double battery_level = status.level;
-
-  if (now_on_battery_power == was_on_battery_power) {
-    if (now_on_battery_power)
-      current_battery_level_ = battery_level;
-    return;
-  } else if (now_on_battery_power) {  // Wall power disconnected.
-    DischargeStarted(battery_level);
-  } else {  // Wall power connected.
-    WallPowerConnected(battery_level);
-  }
-}
-
-void PowerUsageMonitor::OnRenderProcessNotification(int type, int rph_id) {
-  size_t previous_num_live_renderers = live_renderer_ids_.size();
-
-  if (type == content::NOTIFICATION_RENDERER_PROCESS_CREATED) {
-    live_renderer_ids_.insert(rph_id);
-  } else if (type == content::NOTIFICATION_RENDERER_PROCESS_CLOSED) {
-    live_renderer_ids_.erase(rph_id);
-  } else {
-    NOTREACHED() << "Unexpected notification type: " << type;
-  }
-
-  if (live_renderer_ids_.empty() && previous_num_live_renderers != 0) {
-    // All render processes have died.
-    CancelPendingHistogramReporting();
-    tracking_discharge_ = false;
-  }
-}
-
-void PowerUsageMonitor::SetSystemInterfaceForTest(
-    std::unique_ptr<SystemInterface> system_interface) {
-  system_interface_ = std::move(system_interface);
-}
-
-void PowerUsageMonitor::OnPowerStateChange(bool on_battery_power) {}
-
-void PowerUsageMonitor::OnResume() {}
-
-void PowerUsageMonitor::OnSuspend() {
-  CancelPendingHistogramReporting();
-}
-
-void PowerUsageMonitor::Observe(int type,
-                                const content::NotificationSource& source,
-                                const content::NotificationDetails& details) {
-  content::RenderProcessHost* rph =
-      content::Source<content::RenderProcessHost>(source).ptr();
-  OnRenderProcessNotification(type, rph->GetID());
-}
-
-void PowerUsageMonitor::CancelPendingHistogramReporting() {
-  // Cancel any in-progress histogram reports and reporting of discharge UMA.
-  system_interface_->CancelPendingHistogramReports();
-}
diff --git a/chrome/browser/power_usage_monitor/power_usage_monitor.h b/chrome/browser/power_usage_monitor/power_usage_monitor.h
deleted file mode 100644
index c30b57c..0000000
--- a/chrome/browser/power_usage_monitor/power_usage_monitor.h
+++ /dev/null
@@ -1,130 +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 CHROME_BROWSER_POWER_USAGE_MONITOR_POWER_USAGE_MONITOR_H_
-#define CHROME_BROWSER_POWER_USAGE_MONITOR_POWER_USAGE_MONITOR_H_
-
-#include "base/containers/hash_tables.h"
-#include "base/gtest_prod_util.h"
-#include "base/macros.h"
-#include "base/memory/singleton.h"
-#include "base/power_monitor/power_monitor.h"
-#include "base/time/time.h"
-#include "content/public/browser/browser_message_filter.h"
-#include "content/public/browser/notification_observer.h"
-#include "content/public/browser/notification_registrar.h"
-#include "device/battery/battery_status_service.h"
-
-// Record statistics on power usage.
-//
-// Two main statics are recorded by this class:
-// * Power.BatteryDischarge_{5,15,30} - delta between battery level when
-//   unplugged from wallpower, over the specified period - in minutes.
-// * Power.BatteryDischargeRateWhenUnplugged - the rate of battery discharge
-//   from the device being unplugged until it's plugged back in, if said period
-//   was longer than 30 minutes.
-//
-// Heuristics:
-// * Data collection starts after system uptime exceeds 30 minutes.
-// * If the machine goes to sleep or all renderers are closed then the current
-//   measurement is cancelled.
-
-class PowerUsageMonitor : public base::PowerObserver,
-                          public content::NotificationObserver {
- public:
-  class SystemInterface {
-   public:
-    virtual ~SystemInterface() {}
-
-    virtual void ScheduleHistogramReport(base::TimeDelta delay) = 0;
-    virtual void CancelPendingHistogramReports() = 0;
-
-    // Record the battery discharge percent per hour over the time the system
-    // is on battery power, legal values [0,100].
-    virtual void RecordDischargePercentPerHour(int percent_per_hour) = 0;
-
-    // Allow tests to override clock.
-    virtual base::Time Now() = 0;
-  };
-
- public:
-  PowerUsageMonitor();
-  ~PowerUsageMonitor() override;
-
-  double discharge_amount() const {
-    return initial_battery_level_ - current_battery_level_;
-  }
-
-  // Start monitoring power usage.
-  // Note that the actual monitoring will be delayed until 30 minutes after
-  // system boot.
-  void Start();
-
-  void SetSystemInterfaceForTest(
-      std::unique_ptr<SystemInterface> system_interface);
-
-  // Overridden from base::PowerObserver:
-  void OnPowerStateChange(bool on_battery_power) override;
-  void OnResume() override;
-  void OnSuspend() override;
-
-  // Overridden from NotificationObserver:
-  void Observe(int type,
-               const content::NotificationSource& source,
-               const content::NotificationDetails& details) override;
-
- private:
-  friend class PowerUsageMonitorTest;
-  FRIEND_TEST_ALL_PREFIXES(PowerUsageMonitorTest, OnBatteryStatusUpdate);
-  FRIEND_TEST_ALL_PREFIXES(PowerUsageMonitorTest, OnRenderProcessNotification);
-
-  // Start monitoring system power usage.
-  // This function may be called after a delay, see Start() for details.
-  void StartInternal();
-
-  void OnBatteryStatusUpdate(const device::BatteryStatus& status);
-  void OnRenderProcessNotification(int type, int rph_id);
-
-  void DischargeStarted(double battery_level);
-  void WallPowerConnected(double battery_level);
-
-  void CancelPendingHistogramReporting();
-
-  device::BatteryStatusService::BatteryUpdateCallback callback_;
-  std::unique_ptr<device::BatteryStatusService::BatteryUpdateSubscription>
-      subscription_;
-
-  content::NotificationRegistrar registrar_;
-
-  std::unique_ptr<SystemInterface> system_interface_;
-
-  // True if monitoring was started (Start() called).
-  bool started_;
-
-  // True if collecting metrics for the current discharge cycle e.g. if no
-  // renderers are open we don't keep track of discharge.
-  bool tracking_discharge_;
-
-  // True if the system is running on battery power, false if on wall power.
-  bool on_battery_power_;
-
-  // Battery level when wall power disconnected. [0.0, 1.0] - 0 if on wall
-  // power, 1 means fully charged.
-  double initial_battery_level_;
-
-  // Current battery level. [0.0, 1.0] - 0 if on wall power, 1 means fully
-  // charged.
-  double current_battery_level_;
-
-  // Timestamp when wall power was disconnected, null Time object otherwise.
-  base::Time start_discharge_time_;
-
-  // IDs of live renderer processes.
-  base::hash_set<int> live_renderer_ids_;
-
- private:
-  DISALLOW_COPY_AND_ASSIGN(PowerUsageMonitor);
-};
-
-#endif  // CHROME_BROWSER_POWER_USAGE_MONITOR_POWER_USAGE_MONITOR_H_
diff --git a/chrome/browser/power_usage_monitor/power_usage_monitor_unittest.cc b/chrome/browser/power_usage_monitor/power_usage_monitor_unittest.cc
deleted file mode 100644
index 1c94a3f5..0000000
--- a/chrome/browser/power_usage_monitor/power_usage_monitor_unittest.cc
+++ /dev/null
@@ -1,165 +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 "chrome/browser/power_usage_monitor/power_usage_monitor.h"
-
-#include <utility>
-
-#include "content/public/browser/notification_types.h"
-#include "content/public/test/test_browser_thread_bundle.h"
-#include "device/battery/battery_monitor.mojom.h"
-#include "testing/gtest/include/gtest/gtest.h"
-
-// Dummy ID to identify a phantom RenderProcessHost in tests.
-const int kDummyRenderProcessHostID = 1;
-
-class SystemInterfaceForTest : public PowerUsageMonitor::SystemInterface {
- public:
-  SystemInterfaceForTest()
-      : num_pending_histogram_reports_(0),
-        discharge_percent_per_hour_(0),
-        now_(base::Time::FromInternalValue(1000)) {}
-  ~SystemInterfaceForTest() override {}
-
-  int num_pending_histogram_reports() const {
-    return num_pending_histogram_reports_;
-  }
-
-  int discharge_percent_per_hour() const { return discharge_percent_per_hour_; }
-
-  void AdvanceClockSeconds(int seconds) {
-    now_ += base::TimeDelta::FromSeconds(seconds);
-  }
-
-  void AdvanceClockMinutes(int minutes) {
-    now_ += base::TimeDelta::FromMinutes(minutes);
-  }
-
-  void ScheduleHistogramReport(base::TimeDelta delay) override {
-    num_pending_histogram_reports_++;
-  }
-
-  void CancelPendingHistogramReports() override {
-    num_pending_histogram_reports_ = 0;
-  }
-
-  void RecordDischargePercentPerHour(int percent_per_hour) override {
-    discharge_percent_per_hour_ = percent_per_hour;
-  }
-
-  base::Time Now() override { return now_; }
-
- private:
-  int num_pending_histogram_reports_;
-  int discharge_percent_per_hour_;
-  base::Time now_;
-};
-
-class PowerUsageMonitorTest : public testing::Test {
- protected:
-  void SetUp() override {
-    monitor_.reset(new PowerUsageMonitor);
-    // PowerUsageMonitor assumes ownership.
-    std::unique_ptr<SystemInterfaceForTest> test_interface(
-        new SystemInterfaceForTest());
-    system_interface_ = test_interface.get();
-    monitor_->SetSystemInterfaceForTest(std::move(test_interface));
-
-    // Without live renderers, the monitor won't do anything.
-    monitor_->OnRenderProcessNotification(
-        content::NOTIFICATION_RENDERER_PROCESS_CREATED,
-        kDummyRenderProcessHostID);
-  }
-
-  void UpdateBatteryStatus(bool charging, double battery_level) {
-    device::BatteryStatus battery_status;
-    battery_status.charging = charging;
-    battery_status.level = battery_level;
-    monitor_->OnBatteryStatusUpdate(battery_status);
-  }
-
-  void KillTestRenderer() {
-    monitor_->OnRenderProcessNotification(
-        content::NOTIFICATION_RENDERER_PROCESS_CLOSED,
-        kDummyRenderProcessHostID);
-  }
-
-  std::unique_ptr<PowerUsageMonitor> monitor_;
-  SystemInterfaceForTest* system_interface_;
-  content::TestBrowserThreadBundle thread_bundle_;
-};
-
-TEST_F(PowerUsageMonitorTest, StartStopQuickly) {
-  // Going on battery power.
-  UpdateBatteryStatus(false, 1.0);
-  int initial_num_histogram_reports =
-      system_interface_->num_pending_histogram_reports();
-  ASSERT_GT(initial_num_histogram_reports, 0);
-
-  // Battery level goes down a bit.
-  system_interface_->AdvanceClockSeconds(1);
-  UpdateBatteryStatus(false, 0.9);
-  ASSERT_EQ(initial_num_histogram_reports,
-            system_interface_->num_pending_histogram_reports());
-  ASSERT_EQ(0, system_interface_->discharge_percent_per_hour());
-
-  // Wall power connected.
-  system_interface_->AdvanceClockSeconds(30);
-  UpdateBatteryStatus(true, 0);
-  ASSERT_EQ(0, system_interface_->num_pending_histogram_reports());
-  ASSERT_EQ(0, system_interface_->discharge_percent_per_hour());
-}
-
-TEST_F(PowerUsageMonitorTest, DischargePercentReported) {
-  // Going on battery power.
-  UpdateBatteryStatus(false, 1.0);
-  int initial_num_histogram_reports =
-      system_interface_->num_pending_histogram_reports();
-  ASSERT_GT(initial_num_histogram_reports, 0);
-
-  // Battery level goes down a bit.
-  system_interface_->AdvanceClockSeconds(30);
-  UpdateBatteryStatus(false, 0.9);
-  ASSERT_EQ(initial_num_histogram_reports,
-            system_interface_->num_pending_histogram_reports());
-  ASSERT_EQ(0, system_interface_->discharge_percent_per_hour());
-
-  // Wall power connected.
-  system_interface_->AdvanceClockMinutes(31);
-  UpdateBatteryStatus(true, 0);
-  ASSERT_EQ(0, system_interface_->num_pending_histogram_reports());
-  ASSERT_GT(system_interface_->discharge_percent_per_hour(), 0);
-}
-
-TEST_F(PowerUsageMonitorTest, NoRenderersDisablesMonitoring) {
-  KillTestRenderer();
-
-  // Going on battery power.
-  UpdateBatteryStatus(false, 1.0);
-  ASSERT_EQ(0, system_interface_->num_pending_histogram_reports());
-  ASSERT_EQ(0, system_interface_->discharge_percent_per_hour());
-
-  // Wall power connected.
-  system_interface_->AdvanceClockSeconds(30);
-  UpdateBatteryStatus(true, 0.5);
-  ASSERT_EQ(0, system_interface_->num_pending_histogram_reports());
-  ASSERT_EQ(0, system_interface_->discharge_percent_per_hour());
-}
-
-TEST_F(PowerUsageMonitorTest, NoRenderersCancelsInProgressMonitoring) {
-  // Going on battery power.
-  UpdateBatteryStatus(false, 1.0);
-  ASSERT_GT(system_interface_->num_pending_histogram_reports(), 0);
-  ASSERT_EQ(0, system_interface_->discharge_percent_per_hour());
-
-  // All renderers killed.
-  KillTestRenderer();
-  ASSERT_EQ(0, system_interface_->num_pending_histogram_reports());
-
-  // Wall power connected.
-  system_interface_->AdvanceClockMinutes(31);
-  UpdateBatteryStatus(true, 0);
-  ASSERT_EQ(0, system_interface_->num_pending_histogram_reports());
-  ASSERT_EQ(0, system_interface_->discharge_percent_per_hour());
-}
diff --git a/chrome/browser/resources/options/controlled_setting.js b/chrome/browser/resources/options/controlled_setting.js
index fc5b960..7b38321 100644
--- a/chrome/browser/resources/options/controlled_setting.js
+++ b/chrome/browser/resources/options/controlled_setting.js
@@ -174,9 +174,13 @@
             '.controlled-setting-bubble-extension-manage-link');
         var extensionId = this.extensionId;
         manageLink.onclick = function() {
-          uber.invokeMethodOnWindow(
-              window.top, 'showPage',
-              {pageId: 'extensions', path: '?id=' + extensionId});
+          if (window != window.top) {
+            uber.invokeMethodOnWindow(
+                window.top, 'showPage',
+                {pageId: 'extensions', path: '?id=' + extensionId});
+          } else {
+            window.open('chrome://extensions/?id=' + extensionId);
+          }
         };
 
         var disableButton = extensionContainer.querySelector(
diff --git a/chrome/browser/resources/settings/a11y_page/manage_a11y_page.html b/chrome/browser/resources/settings/a11y_page/manage_a11y_page.html
index d2fef10..05388a29 100644
--- a/chrome/browser/resources/settings/a11y_page/manage_a11y_page.html
+++ b/chrome/browser/resources/settings/a11y_page/manage_a11y_page.html
@@ -152,7 +152,7 @@
           <div>$i18n{largeMouseCursorSizeLabel}</div>
           <cr-slider
              disabled="[[!prefs.settings.a11y.large_cursor_enabled.value]]"
-             value="{{prefs.settings.a11y.large_cursor_dip_size.value}}"
+             pref="{{prefs.settings.a11y.large_cursor_dip_size}}"
              min="25" max="64"></cr-slider>
         </div>
       </template>
diff --git a/chrome/browser/resources/settings/appearance_page/appearance_fonts_page.html b/chrome/browser/resources/settings/appearance_page/appearance_fonts_page.html
index 782feff8..53654b0 100644
--- a/chrome/browser/resources/settings/appearance_page/appearance_fonts_page.html
+++ b/chrome/browser/resources/settings/appearance_page/appearance_fonts_page.html
@@ -14,7 +14,7 @@
     <div class="settings-box first">
       <div class="start">$i18n{fontSize}</div>
       <cr-slider id="sizeSlider"
-          value="{{prefs.webkit.webprefs.default_font_size.value}}"
+          pref="{{prefs.webkit.webprefs.default_font_size}}"
           tick-values="[[fontSizeRange_]]"
           label-min="$i18n{tiny}" label-max="$i18n{huge}">
       </cr-slider>
@@ -29,7 +29,7 @@
         : $i18n{quickBrownFox}
       </div>
       <cr-slider id="minimumSizeSlider"
-          value="{{prefs.webkit.webprefs.minimum_font_size.value}}"
+          pref="{{prefs.webkit.webprefs.minimum_font_size}}"
           tick-values="[[minimumFontSizeRange_]]"
           label-min="$i18n{tiny}" label-max="$i18n{huge}">
       </cr-slider>
diff --git a/chrome/browser/resources/settings/controls/settings_toggle_button.html b/chrome/browser/resources/settings/controls/settings_toggle_button.html
index 160efc67..78bc22a 100644
--- a/chrome/browser/resources/settings/controls/settings_toggle_button.html
+++ b/chrome/browser/resources/settings/controls/settings_toggle_button.html
@@ -39,7 +39,7 @@
           actionable$="[[!controlDisabled_(disabled, pref.*)]]"
           hidden="[[!label]]">
         <div id="label" class="label">[[label]]</div>
-        <div class="secondary label">[[subLabel]]</div>
+        <div id="subLabel" class="secondary label">[[subLabel]]</div>
       </div>
       <content select=".more-actions"></content>
       <template is="dom-if" if="[[hasPrefPolicyIndicator(pref.*)]]">
@@ -48,6 +48,7 @@
       </template>
       <paper-toggle-button id="control" checked="{{checked}}"
           on-change="notifyChangedByUserInteraction" aria-labelledby="label"
+          aria-describedby="subLabel"
           disabled="[[controlDisabled_(disabled, pref)]]">
       </paper-toggle-button>
     </div>
diff --git a/chrome/browser/resources/settings/date_time_page/compiled_resources2.gyp b/chrome/browser/resources/settings/date_time_page/compiled_resources2.gyp
index 04756b7..0da9b33 100644
--- a/chrome/browser/resources/settings/date_time_page/compiled_resources2.gyp
+++ b/chrome/browser/resources/settings/date_time_page/compiled_resources2.gyp
@@ -9,6 +9,7 @@
         '../controls/compiled_resources2.gyp:settings_dropdown_menu',
         '../prefs/compiled_resources2.gyp:prefs_behavior',
         '../prefs/compiled_resources2.gyp:prefs_types',
+        '<(DEPTH)/ui/webui/resources/cr_elements/policy/compiled_resources2.gyp:cr_policy_indicator_behavior',
         '<(DEPTH)/ui/webui/resources/js/compiled_resources2.gyp:cr',
         '<(DEPTH)/ui/webui/resources/js/compiled_resources2.gyp:load_time_data',
         '<(DEPTH)/ui/webui/resources/js/compiled_resources2.gyp:web_ui_listener_behavior',
diff --git a/chrome/browser/resources/settings/date_time_page/date_time_page.html b/chrome/browser/resources/settings/date_time_page/date_time_page.html
index 604cebeef..e482dfc 100644
--- a/chrome/browser/resources/settings/date_time_page/date_time_page.html
+++ b/chrome/browser/resources/settings/date_time_page/date_time_page.html
@@ -1,7 +1,7 @@
 <link rel="import" href="chrome://resources/html/cr.html">
 <link rel="import" href="chrome://resources/html/polymer.html">
 <link rel="import" href="chrome://resources/html/web_ui_listener_behavior.html">
-<link rel="import" href="chrome://resources/cr_elements/policy/cr_policy_pref_indicator.html">
+<link rel="import" href="chrome://resources/cr_elements/policy/cr_policy_indicator.html">
 <link rel="import" href="chrome://resources/polymer/v1_0/paper-icon-button/paper-icon-button-light.html">
 <link rel="import" href="chrome://resources/polymer/v1_0/paper-toggle-button/paper-toggle-button.html">
 <link rel="import" href="../controls/settings_dropdown_menu.html">
@@ -23,7 +23,7 @@
       }
 
       paper-toggle-button,
-      cr-policy-pref-indicator {
+      cr-policy-indicator {
         -webkit-margin-start: var(--settings-control-spacing);
       }
     </style>
@@ -32,9 +32,9 @@
         $i18n{timeZoneGeolocation}
       </div>
       <template is="dom-if" if="[[hasTimeZoneAutoDetectPolicy_]]" restamp>
-        <cr-policy-pref-indicator pref="[[fakeTimeZonePolicyPref_]]"
+        <cr-policy-indicator indicator-type="devicePolicy"
             icon-aria-label="$i18n{timeZoneGeolocation}">
-        </cr-policy-pref-indicator>
+        </cr-policy-indicator>
       </template>
       <paper-toggle-button
           id="timeZoneAutoDetect"
diff --git a/chrome/browser/resources/settings/date_time_page/date_time_page.js b/chrome/browser/resources/settings/date_time_page/date_time_page.js
index 6e28f44..b2349200 100644
--- a/chrome/browser/resources/settings/date_time_page/date_time_page.js
+++ b/chrome/browser/resources/settings/date_time_page/date_time_page.js
@@ -63,12 +63,6 @@
     },
 
     /**
-     * A fake preference to provide cr-policy-pref-indicator with policy info.
-     * @private {!chrome.settingsPrivate.PrefObject|undefined}
-     */
-    fakeTimeZonePolicyPref_: Object,
-
-    /**
      * Initialized with the current time zone so the menu displays the
      * correct value. The full option list is fetched lazily if necessary by
      * maybeGetTimeZoneList_.
@@ -118,24 +112,12 @@
    * @private
    */
   onTimeZoneAutoDetectPolicyChanged_: function(managed, valueFromPolicy) {
-    if (!managed) {
+    if (managed) {
+      this.timeZoneAutoDetectPolicy_ = valueFromPolicy ?
+          settings.TimeZoneAutoDetectPolicy.FORCED_ON :
+          settings.TimeZoneAutoDetectPolicy.FORCED_OFF;
+    } else {
       this.timeZoneAutoDetectPolicy_ = settings.TimeZoneAutoDetectPolicy.NONE;
-      this.fakeTimeZonePolicyPref_ = undefined;
-      return;
-    }
-
-    this.timeZoneAutoDetectPolicy_ = valueFromPolicy ?
-        settings.TimeZoneAutoDetectPolicy.FORCED_ON :
-        settings.TimeZoneAutoDetectPolicy.FORCED_OFF;
-
-    if (!this.fakeTimeZonePolicyPref_) {
-      this.fakeTimeZonePolicyPref_ = {
-        key: 'fakeTimeZonePref',
-        type: chrome.settingsPrivate.PrefType.NUMBER,
-        value: 0,
-        controlledBy: chrome.settingsPrivate.ControlledBy.DEVICE_POLICY,
-        enforcement: chrome.settingsPrivate.Enforcement.ENFORCED,
-      };
     }
   },
 
diff --git a/chrome/browser/resources/settings/device_page/compiled_resources2.gyp b/chrome/browser/resources/settings/device_page/compiled_resources2.gyp
index d7fb5f2..1afc4e1f 100644
--- a/chrome/browser/resources/settings/device_page/compiled_resources2.gyp
+++ b/chrome/browser/resources/settings/device_page/compiled_resources2.gyp
@@ -55,6 +55,7 @@
       'dependencies': [
         '<(DEPTH)/ui/webui/resources/js/compiled_resources2.gyp:cr',
         '<(DEPTH)/ui/webui/resources/js/compiled_resources2.gyp:i18n_behavior',
+        '<(EXTERNS_GYP):settings_private',
         '<(EXTERNS_GYP):system_display',
         '<(INTERFACES_GYP):system_display_interface',
         'display_layout'
diff --git a/chrome/browser/resources/settings/device_page/display.html b/chrome/browser/resources/settings/device_page/display.html
index d51a777f..37031c93 100644
--- a/chrome/browser/resources/settings/device_page/display.html
+++ b/chrome/browser/resources/settings/device_page/display.html
@@ -114,7 +114,7 @@
           </div>
         </div>
         <cr-slider disabled="[[!enableSetResolution_(selectedDisplay)]]"
-            tick-values="[[modeValues_]]" value="{{selectedModeIndex_}}"
+            tick-values="[[modeValues_]]" pref="{{selectedModePref_}}"
             on-change="onSelectedModeChange_">
         </cr-slider>
       </div>
diff --git a/chrome/browser/resources/settings/device_page/display.js b/chrome/browser/resources/settings/device_page/display.js
index dfea430..c4f5c21 100644
--- a/chrome/browser/resources/settings/device_page/display.js
+++ b/chrome/browser/resources/settings/device_page/display.js
@@ -24,6 +24,21 @@
 
   properties: {
     /**
+     * @type {!chrome.settingsPrivate.PrefObject}
+     * @private
+     */
+    selectedModePref_: {
+      type: Object,
+      value: function() {
+        return {
+          key: 'fakeDisplaySliderPref',
+          type: chrome.settingsPrivate.PrefType.NUMBER,
+          value: 0,
+        };
+      },
+    },
+
+    /**
      * Array of displays.
      * @type {!Array<!chrome.system.display.DisplayUnitInfo>}
      */
@@ -55,9 +70,6 @@
 
     /** @private {!Array<number>} Mode index values for slider. */
     modeValues_: Array,
-
-    /** @private Selected mode index value for slider. */
-    selectedModeIndex_: Number,
   },
 
   /** @private {number} Selected mode index received from chrome. */
@@ -151,18 +163,20 @@
 
   /** @private */
   selectedDisplayChanged_: function() {
-    // Set |modeValues_| before |selectedModeIndex_| so that the slider updates
-    // correctly.
+    // Set |modeValues_| before |selectedModePref_.value| so that the slider
+    // updates correctly.
     var numModes = this.selectedDisplay.modes.length;
     if (numModes == 0) {
       this.modeValues_ = [];
-      this.selectedModeIndex_ = 0;
+      this.set('selectedModePref_.value', 0);
       this.currentSelectedModeIndex_ = 0;
       return;
     }
     this.modeValues_ = Array.from(Array(numModes).keys());
-    this.selectedModeIndex_ = this.getSelectedModeIndex_(this.selectedDisplay);
-    this.currentSelectedModeIndex_ = this.selectedModeIndex_;
+    this.set('selectedModePref_.value', this.getSelectedModeIndex_(
+        this.selectedDisplay));
+    this.currentSelectedModeIndex_ =
+        /** @type {number} */ (this.selectedModePref_.value);
   },
 
   /**
@@ -204,7 +218,7 @@
    * primary or extended.
    * @param {!chrome.system.display.DisplayUnitInfo} selectedDisplay
    * @param {string} primaryDisplayId
-   * @return {number} Retruns 0 if the display is primary else returns 1.
+   * @return {number} Returns 0 if the display is primary else returns 1.
    * @private
    */
   getDisplaySelectMenuIndex_: function(selectedDisplay, primaryDisplayId) {
@@ -269,12 +283,13 @@
     if (this.selectedDisplay.modes.length == 0 ||
         this.currentSelectedModeIndex_ == -1) {
       // If currentSelectedModeIndex_ == -1, selectedDisplay and
-      // selectedModeIndex_ are not in sync.
+      // |selectedModePref_.value| are not in sync.
       return this.i18n(
           'displayResolutionText', this.selectedDisplay.bounds.width.toString(),
           this.selectedDisplay.bounds.height.toString());
     }
-    var mode = this.selectedDisplay.modes[this.selectedModeIndex_];
+    var mode = this.selectedDisplay.modes[
+        /** @type {number} */(this.selectedModePref_.value)];
     var best =
         this.selectedDisplay.isInternal ? mode.uiScale == 1.0 : mode.isNative;
     var widthStr = mode.width.toString();
@@ -298,8 +313,8 @@
         continue;
       if (this.selectedDisplay != display) {
         // Set currentSelectedModeIndex_ to -1 so that getResolutionText_ does
-        // not flicker. selectedDisplayChanged will update selectedModeIndex_
-        // and currentSelectedModeIndex_ correctly.
+        // not flicker. selectedDisplayChanged will update
+        // |selectedModePref_.value| and currentSelectedModeIndex_ correctly.
         this.currentSelectedModeIndex_ = -1;
         this.selectedDisplay = display;
       }
@@ -355,13 +370,14 @@
    */
   onSelectedModeChange_: function() {
     if (this.currentSelectedModeIndex_ == -1 ||
-        this.currentSelectedModeIndex_ == this.selectedModeIndex_) {
+        this.currentSelectedModeIndex_ == this.selectedModePref_.value) {
       // Don't change the selected display mode until we have received an update
       // from Chrome and the mode differs from the current mode.
       return;
     }
     /** @type {!chrome.system.display.DisplayProperties} */ var properties = {
-      displayMode: this.selectedDisplay.modes[this.selectedModeIndex_]
+      displayMode: this.selectedDisplay.modes[
+          /** @type {number} */(this.selectedModePref_.value)]
     };
     settings.display.systemDisplayApi.setDisplayProperties(
         this.selectedDisplay.id, properties,
diff --git a/chrome/browser/resources/settings/device_page/keyboard.html b/chrome/browser/resources/settings/device_page/keyboard.html
index b57ec09..01c4d17 100644
--- a/chrome/browser/resources/settings/device_page/keyboard.html
+++ b/chrome/browser/resources/settings/device_page/keyboard.html
@@ -83,7 +83,7 @@
       <div class="settings-box continuation settings-checkbox-spacer">
         <div class="start" id="repeatDelayLabel">$i18n{keyRepeatDelay}</div>
         <cr-slider id="delaySlider"
-            value="{{prefs.settings.language.xkb_auto_repeat_delay_r2.value}}"
+            pref="{{prefs.settings.language.xkb_auto_repeat_delay_r2}}"
             tick-values="[[autoRepeatDelays_]]"
             disabled="[[
                 !prefs.settings.language.xkb_auto_repeat_enabled_r2.value]]"
@@ -95,8 +95,8 @@
       <div class="settings-box continuation settings-checkbox-spacer">
         <div class="start" id="repeatRateLabel">$i18n{keyRepeatRate}</div>
         <cr-slider id="repeatRateSlider"
-            value="{{
-                prefs.settings.language.xkb_auto_repeat_interval_r2.value}}"
+            pref="{{
+                prefs.settings.language.xkb_auto_repeat_interval_r2}}"
             tick-values="[[autoRepeatIntervals_]]"
             disabled="[[
                 !prefs.settings.language.xkb_auto_repeat_enabled_r2.value]]"
diff --git a/chrome/browser/resources/settings/device_page/pointers.html b/chrome/browser/resources/settings/device_page/pointers.html
index 82c3dcb..baa1d51 100644
--- a/chrome/browser/resources/settings/device_page/pointers.html
+++ b/chrome/browser/resources/settings/device_page/pointers.html
@@ -36,7 +36,7 @@
       </div>
       <div class="settings-box">
         <div class="start" id="mouseSpeedLabel">$i18n{mouseSpeed}</div>
-        <cr-slider value="{{prefs.settings.mouse.sensitivity2.value}}"
+        <cr-slider pref="{{prefs.settings.mouse.sensitivity2}}"
             tick-values="[[sensitivityValues_]]"
             aria-labelledby="mouseSpeedLabel"
             label-min="$i18n{pointerSlow}"
@@ -61,7 +61,7 @@
       <div class="settings-box">
         <div class="start" id="touchpadSpeedLabel">$i18n{touchpadSpeed}</div>
           <cr-slider id="touchpadSensitivity"
-              value="{{prefs.settings.touchpad.sensitivity2.value}}"
+              pref="{{prefs.settings.touchpad.sensitivity2}}"
               tick-values="[[sensitivityValues_]]"
               aria-labelledby="touchpadSpeedLabel"
               label-min="$i18n{pointerSlow}"
diff --git a/chrome/browser/resources/settings/internet_page/internet_detail_page.html b/chrome/browser/resources/settings/internet_page/internet_detail_page.html
index 0647ba3..3e735d11 100644
--- a/chrome/browser/resources/settings/internet_page/internet_detail_page.html
+++ b/chrome/browser/resources/settings/internet_page/internet_detail_page.html
@@ -2,9 +2,9 @@
 <link rel="import" href="chrome://resources/cr_elements/icons.html">
 <link rel="import" href="chrome://resources/cr_elements/network/cr_network_icon.html">
 <link rel="import" href="chrome://resources/cr_elements/network/cr_onc_types.html">
+<link rel="import" href="chrome://resources/cr_elements/policy/cr_policy_indicator.html">
 <link rel="import" href="chrome://resources/cr_elements/policy/cr_policy_network_behavior.html">
 <link rel="import" href="chrome://resources/cr_elements/policy/cr_policy_network_indicator.html">
-<link rel="import" href="chrome://resources/cr_elements/policy/cr_policy_pref_indicator.html">
 <link rel="import" href="chrome://resources/html/i18n_behavior.html">
 <link rel="import" href="chrome://resources/html/polymer.html">
 <link rel="import" href="chrome://resources/polymer/v1_0/iron-collapse/iron-collapse.html">
@@ -43,7 +43,7 @@
 
       paper-toggle-button,
       cr-policy-network-indicator,
-      cr-policy-pref-indicator {
+      cr-policy-indicator {
         -webkit-margin-start: var(--settings-control-spacing);
       }
 
@@ -96,10 +96,10 @@
         </div>
         <template is="dom-if"
             if="[[isPolicySource(networkProperties.Source))]]">
-          <cr-policy-pref-indicator
+          <cr-policy-indicator
               indicator-type="[[getIndicatorTypeForSource(
                   networkProperties.Source)]]">
-          </cr-policy-pref-indicator>
+          </cr-policy-indicator>
         </template>
       </div>
       <div id="buttonDiv" class="layout horizontal center">
diff --git a/chrome/browser/resources/settings/site_settings/zoom_levels.html b/chrome/browser/resources/settings/site_settings/zoom_levels.html
index 2806ac8..2e2df3e0 100644
--- a/chrome/browser/resources/settings/site_settings/zoom_levels.html
+++ b/chrome/browser/resources/settings/site_settings/zoom_levels.html
@@ -34,8 +34,8 @@
           </div>
           <div class="zoom-label">[[item.zoom]]</div>
           <div>
-            <paper-icon-button icon="cr:clear"
-                on-tap="removeZoomLevel_">
+            <paper-icon-button icon="cr:clear" on-tap="removeZoomLevel_"
+                title="$i18n{siteSettingsRemoveZoomLevel}"></paper-icon-button>
           </div>
         </div>
       </template>
diff --git a/chrome/browser/resources/settings/site_settings_page/site_settings_page.html b/chrome/browser/resources/settings/site_settings_page/site_settings_page.html
index a2f49dd..113de7c1 100644
--- a/chrome/browser/resources/settings/site_settings_page/site_settings_page.html
+++ b/chrome/browser/resources/settings/site_settings_page/site_settings_page.html
@@ -121,7 +121,7 @@
       <iron-icon icon="settings:input"></iron-icon>
       <div class="middle">
         $i18n{siteSettingsJavascript}
-        <div class="secondary" is="javascriptSecondary">
+        <div class="secondary" id="javascriptSecondary">
           [[defaultSettingLabel_(
               default_.javascript,
               '$i18nPolymer{siteSettingsAllowed}',
@@ -273,7 +273,8 @@
         </div>
       </div>
       <button class="subpage-arrow" is="paper-icon-button-light"
-          aria-label="$i18n{siteSettingsMidiDevices}"></button>
+          aria-label="$i18n{siteSettingsMidiDevices}"
+          aria-describedby="midiDevicesSecondary"></button>
     </div>
     <div class="settings-box" category$="[[ContentSettingsTypes.ZOOM_LEVELS]]"
         data-route="SITE_SETTINGS_ZOOM_LEVELS"
diff --git a/chrome/browser/safe_browsing/sandboxed_dmg_analyzer_mac.cc b/chrome/browser/safe_browsing/sandboxed_dmg_analyzer_mac.cc
index 23af395..5668db7b 100644
--- a/chrome/browser/safe_browsing/sandboxed_dmg_analyzer_mac.cc
+++ b/chrome/browser/safe_browsing/sandboxed_dmg_analyzer_mac.cc
@@ -8,96 +8,79 @@
 
 #include "base/bind.h"
 #include "base/task_scheduler/post_task.h"
-#include "chrome/common/chrome_utility_messages.h"
 #include "chrome/common/safe_browsing/zip_analyzer_results.h"
 #include "chrome/grit/generated_resources.h"
 #include "content/public/browser/browser_thread.h"
-#include "content/public/browser/child_process_data.h"
-#include "content/public/browser/render_process_host.h"
-#include "ipc/ipc_message_macros.h"
-#include "ipc/ipc_platform_file.h"
 #include "ui/base/l10n/l10n_util.h"
 
-using content::BrowserThread;
-
 namespace safe_browsing {
 
 SandboxedDMGAnalyzer::SandboxedDMGAnalyzer(const base::FilePath& dmg_file,
-                                           const ResultsCallback& callback)
-    : file_path_(dmg_file), callback_(callback), callback_called_(false) {
+                                           const ResultCallback& callback)
+    : file_path_(dmg_file), callback_(callback) {
+  DCHECK(callback);
 }
 
-SandboxedDMGAnalyzer::~SandboxedDMGAnalyzer() {}
-
 void SandboxedDMGAnalyzer::Start() {
-  DCHECK_CURRENTLY_ON(BrowserThread::UI);
+  DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
+
   base::PostTaskWithTraits(
-      FROM_HERE, base::TaskTraits()
-                     .MayBlock()
-                     .WithPriority(base::TaskPriority::BACKGROUND)
-                     .WithShutdownBehavior(
-                         base::TaskShutdownBehavior::CONTINUE_ON_SHUTDOWN),
-      base::Bind(&SandboxedDMGAnalyzer::OpenDMGFile, this));
+      FROM_HERE,
+      base::TaskTraits()
+          .MayBlock()
+          .WithPriority(base::TaskPriority::BACKGROUND)
+          .WithShutdownBehavior(
+              base::TaskShutdownBehavior::CONTINUE_ON_SHUTDOWN),
+      base::Bind(&SandboxedDMGAnalyzer::PrepareFileToAnalyze, this));
 }
 
-void SandboxedDMGAnalyzer::OpenDMGFile() {
-  file_.Initialize(file_path_, base::File::FLAG_OPEN | base::File::FLAG_READ);
-  if (!file_.IsValid()) {
-    DLOG(ERROR) << "Could not open DMG file at path " << file_path_.value();
-    BrowserThread::PostTask(
-        BrowserThread::IO, FROM_HERE,
-        base::Bind(&SandboxedDMGAnalyzer::OnAnalysisFinished, this,
-                   zip_analyzer::Results()));
+SandboxedDMGAnalyzer::~SandboxedDMGAnalyzer() = default;
+
+void SandboxedDMGAnalyzer::PrepareFileToAnalyze() {
+  base::File file(file_path_, base::File::FLAG_OPEN | base::File::FLAG_READ);
+
+  if (!file.IsValid()) {
+    DLOG(ERROR) << "Could not open file: " << file_path_.value();
+    ReportFileFailure();
     return;
   }
 
-  BrowserThread::PostTask(BrowserThread::IO, FROM_HERE,
-                          base::Bind(&SandboxedDMGAnalyzer::StartAnalysis,
-                                     this));
+  content::BrowserThread::PostTask(
+      content::BrowserThread::UI, FROM_HERE,
+      base::Bind(&SandboxedDMGAnalyzer::AnalyzeFile, this,
+                 base::Passed(&file)));
 }
 
-void SandboxedDMGAnalyzer::StartAnalysis() {
-  DCHECK_CURRENTLY_ON(BrowserThread::IO);
+void SandboxedDMGAnalyzer::ReportFileFailure() {
+  DCHECK(!utility_process_mojo_client_);
 
-  content::UtilityProcessHost* utility_process_host =
-      content::UtilityProcessHost::Create(
-          this, BrowserThread::GetTaskRunnerForThread(BrowserThread::IO));
-
-  utility_process_host->SetName(l10n_util::GetStringUTF16(
-      IDS_UTILITY_PROCESS_SAFE_BROWSING_ZIP_FILE_ANALYZER_NAME));
-  utility_process_host->Send(
-      new ChromeUtilityMsg_AnalyzeDmgFileForDownloadProtection(
-          IPC::TakePlatformFileForTransit(std::move(file_))));
+  content::BrowserThread::PostTask(content::BrowserThread::UI, FROM_HERE,
+                                   base::Bind(callback_, Results()));
 }
 
-void SandboxedDMGAnalyzer::OnProcessCrashed(int exit_code) {
-  OnAnalysisFinished(zip_analyzer::Results());
+void SandboxedDMGAnalyzer::AnalyzeFile(base::File file) {
+  DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
+  DCHECK(!utility_process_mojo_client_);
+
+  utility_process_mojo_client_ = base::MakeUnique<
+      content::UtilityProcessMojoClient<chrome::mojom::SafeArchiveAnalyzer>>(
+      l10n_util::GetStringUTF16(
+          IDS_UTILITY_PROCESS_SAFE_BROWSING_ZIP_FILE_ANALYZER_NAME));
+  utility_process_mojo_client_->set_error_callback(
+      base::Bind(&SandboxedDMGAnalyzer::AnalyzeFileDone, this, Results()));
+
+  utility_process_mojo_client_->Start();
+
+  utility_process_mojo_client_->service()->AnalyzeDmgFile(
+      std::move(file),
+      base::Bind(&SandboxedDMGAnalyzer::AnalyzeFileDone, this));
 }
 
-void SandboxedDMGAnalyzer::OnProcessLaunchFailed(int error_code) {
-  OnAnalysisFinished(zip_analyzer::Results());
-}
+void SandboxedDMGAnalyzer::AnalyzeFileDone(const Results& results) {
+  DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
 
-bool SandboxedDMGAnalyzer::OnMessageReceived(const IPC::Message& message) {
-  bool handled = true;
-  IPC_BEGIN_MESSAGE_MAP(SandboxedDMGAnalyzer, message)
-    IPC_MESSAGE_HANDLER(
-        ChromeUtilityHostMsg_AnalyzeDmgFileForDownloadProtection_Finished,
-        OnAnalysisFinished)
-    IPC_MESSAGE_UNHANDLED(handled = false)
-  IPC_END_MESSAGE_MAP()
-  return handled;
-}
-
-void SandboxedDMGAnalyzer::OnAnalysisFinished(
-    const zip_analyzer::Results& results) {
-  DCHECK_CURRENTLY_ON(BrowserThread::IO);
-  if (callback_called_)
-    return;
-
-  callback_called_ = true;
-  BrowserThread::PostTask(BrowserThread::UI, FROM_HERE,
-                          base::Bind(callback_, results));
+  utility_process_mojo_client_.reset();
+  callback_.Run(results);
 }
 
 }  // namespace safe_browsing
diff --git a/chrome/browser/safe_browsing/sandboxed_dmg_analyzer_mac.h b/chrome/browser/safe_browsing/sandboxed_dmg_analyzer_mac.h
index f016699a..7eafd123 100644
--- a/chrome/browser/safe_browsing/sandboxed_dmg_analyzer_mac.h
+++ b/chrome/browser/safe_browsing/sandboxed_dmg_analyzer_mac.h
@@ -9,54 +9,55 @@
 #include "base/files/file.h"
 #include "base/files/file_path.h"
 #include "base/macros.h"
-#include "base/memory/weak_ptr.h"
-#include "content/public/browser/utility_process_host.h"
-#include "content/public/browser/utility_process_host_client.h"
+#include "base/memory/ref_counted.h"
+#include "chrome/common/safe_archive_analyzer.mojom.h"
+#include "content/public/browser/utility_process_mojo_client.h"
 
 namespace safe_browsing {
 
-namespace zip_analyzer {
-struct Results;
-}
-
-// This class is used to analyze DMG files in a sandboxed utility process for
-// file download protection. This class must be created on the UI thread, and
-// which is where the result callback will be invoked.
-class SandboxedDMGAnalyzer : public content::UtilityProcessHostClient {
+// This class is used to analyze DMG files in a sandboxed utility process
+// for file download protection. This class lives on the UI thread, which
+// is where the result callback will be invoked.
+class SandboxedDMGAnalyzer
+    : public base::RefCountedThreadSafe<SandboxedDMGAnalyzer> {
  public:
-  // Callback that is invoked when the analysis results are ready.
-  using ResultsCallback = base::Callback<void(const zip_analyzer::Results&)>;
+  using Results = zip_analyzer::Results;
+
+  using ResultCallback = base::Callback<void(const Results&)>;
 
   SandboxedDMGAnalyzer(const base::FilePath& dmg_file,
-                       const ResultsCallback& callback);
+                       const ResultCallback& callback);
 
-  // Begins the analysis. This must be called on the UI thread.
+  // Starts the analysis. Must be called on the UI thread.
   void Start();
 
  private:
-  ~SandboxedDMGAnalyzer() override;
+  friend class base::RefCountedThreadSafe<SandboxedDMGAnalyzer>;
 
-  // Called on the blocking pool, this opens the DMG file, in preparation for
-  // sending the FD to the utility process.
-  void OpenDMGFile();
+  ~SandboxedDMGAnalyzer();
 
-  // Called on the IO thread, this starts the utility process.
-  void StartAnalysis();
+  // Prepare the file for analysis.
+  void PrepareFileToAnalyze();
 
-  // content::UtilityProcessHostClient:
-  void OnProcessCrashed(int exit_code) override;
-  void OnProcessLaunchFailed(int error_code) override;
-  bool OnMessageReceived(const IPC::Message& message) override;
+  // If file preparation failed, analysis has failed: report failure.
+  void ReportFileFailure();
 
-  // Message handler to receive the results of the analysis. Invokes the
-  // |callback_|.
-  void OnAnalysisFinished(const zip_analyzer::Results& results);
+  // Starts the utility process and sends it a file analyze request.
+  void AnalyzeFile(base::File file);
 
-  const base::FilePath file_path_;  // The path of the DMG file.
-  base::File file_;  // The opened file handle for |file_path_|.
+  // The response containing the file analyze results.
+  void AnalyzeFileDone(const Results& results);
 
-  const ResultsCallback callback_;  // Result callback.
-  bool callback_called_;  // Whether |callback_| has already been invoked.
+  // The file path of the file to analyze.
+  const base::FilePath file_path_;
+
+  // Utility client used to send analyze tasks to the utility process.
+  std::unique_ptr<
+      content::UtilityProcessMojoClient<chrome::mojom::SafeArchiveAnalyzer>>
+      utility_process_mojo_client_;
+
+  // Callback invoked on the UI thread with the file analyze results.
+  const ResultCallback callback_;
 
   DISALLOW_COPY_AND_ASSIGN(SandboxedDMGAnalyzer);
 };
diff --git a/chrome/browser/safe_browsing/sandboxed_dmg_analyzer_mac_unittest.cc b/chrome/browser/safe_browsing/sandboxed_dmg_analyzer_mac_unittest.cc
index 2d1689f..561fd236 100644
--- a/chrome/browser/safe_browsing/sandboxed_dmg_analyzer_mac_unittest.cc
+++ b/chrome/browser/safe_browsing/sandboxed_dmg_analyzer_mac_unittest.cc
@@ -47,15 +47,15 @@
   }
 
  private:
-  // A helper class to store the results from the ResultsCallback and run
-  // another closure.
+  // A helper that provides a SandboxedDMGAnalyzer::ResultCallback that will
+  // store a copy of an analyzer's results and then run a closure.
   class ResultsGetter {
    public:
     ResultsGetter(const base::Closure& next_closure,
                   zip_analyzer::Results* results)
         : next_closure_(next_closure), results_(results) {}
 
-    SandboxedDMGAnalyzer::ResultsCallback GetCallback() {
+    SandboxedDMGAnalyzer::ResultCallback GetCallback() {
       return base::Bind(&ResultsGetter::ResultsCallback,
                         base::Unretained(this));
     }
diff --git a/chrome/browser/safe_browsing/sandboxed_zip_analyzer.cc b/chrome/browser/safe_browsing/sandboxed_zip_analyzer.cc
index 6d3797e..91ecc54 100644
--- a/chrome/browser/safe_browsing/sandboxed_zip_analyzer.cc
+++ b/chrome/browser/safe_browsing/sandboxed_zip_analyzer.cc
@@ -7,146 +7,96 @@
 #include <utility>
 
 #include "base/bind.h"
-#include "base/command_line.h"
 #include "base/files/file_util.h"
-#include "base/location.h"
-#include "base/logging.h"
 #include "base/task_scheduler/post_task.h"
-#include "base/threading/sequenced_worker_pool.h"
-#include "chrome/common/chrome_utility_messages.h"
 #include "chrome/common/safe_browsing/zip_analyzer_results.h"
 #include "chrome/grit/generated_resources.h"
 #include "content/public/browser/browser_thread.h"
-#include "content/public/browser/child_process_data.h"
-#include "content/public/browser/render_process_host.h"
-#include "content/public/common/content_switches.h"
-#include "ipc/ipc_message_macros.h"
-#include "ipc/ipc_platform_file.h"
 #include "ui/base/l10n/l10n_util.h"
 
-using content::BrowserThread;
-
 namespace safe_browsing {
 
-SandboxedZipAnalyzer::SandboxedZipAnalyzer(
-    const base::FilePath& zip_file,
-    const ResultCallback& result_callback)
-    : zip_file_name_(zip_file),
-      callback_(result_callback),
-      callback_called_(false) {
+SandboxedZipAnalyzer::SandboxedZipAnalyzer(const base::FilePath& zip_file,
+                                           const ResultCallback& callback)
+    : file_path_(zip_file), callback_(callback) {
+  DCHECK(callback);
 }
 
 void SandboxedZipAnalyzer::Start() {
-  DCHECK_CURRENTLY_ON(BrowserThread::UI);
-  // Starting the analyzer will block on opening the zip file, so run this
-  // on a worker thread.  The task does not need to block shutdown.
+  DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
+
   base::PostTaskWithTraits(
-      FROM_HERE, base::TaskTraits()
-                     .MayBlock()
-                     .WithPriority(base::TaskPriority::BACKGROUND)
-                     .WithShutdownBehavior(
-                         base::TaskShutdownBehavior::CONTINUE_ON_SHUTDOWN),
-      base::Bind(&SandboxedZipAnalyzer::AnalyzeInSandbox, this));
+      FROM_HERE,
+      base::TaskTraits()
+          .MayBlock()
+          .WithPriority(base::TaskPriority::BACKGROUND)
+          .WithShutdownBehavior(
+              base::TaskShutdownBehavior::CONTINUE_ON_SHUTDOWN),
+      base::Bind(&SandboxedZipAnalyzer::PrepareFileToAnalyze, this));
 }
 
-SandboxedZipAnalyzer::~SandboxedZipAnalyzer() {
-  // If we're using UtilityProcessHost, we may not be destroyed on
-  // the UI or IO thread.
-  CloseTemporaryFile();
-}
+SandboxedZipAnalyzer::~SandboxedZipAnalyzer() = default;
 
-void SandboxedZipAnalyzer::CloseTemporaryFile() {
-  if (!temp_file_.IsValid())
-    return;
-  // Close the temporary file in the blocking pool since doing so will delete
-  // the file.
-  base::PostTaskWithTraits(
-      FROM_HERE, base::TaskTraits()
-                     .MayBlock()
-                     .WithPriority(base::TaskPriority::BACKGROUND)
-                     .WithShutdownBehavior(
-                         base::TaskShutdownBehavior::CONTINUE_ON_SHUTDOWN),
-      base::Bind(&base::File::Close,
-                 base::Owned(new base::File(std::move(temp_file_)))));
-}
+void SandboxedZipAnalyzer::PrepareFileToAnalyze() {
+  base::File file(file_path_, base::File::FLAG_OPEN | base::File::FLAG_READ);
 
-void SandboxedZipAnalyzer::AnalyzeInSandbox() {
-  // This zip file will be closed on the IO thread once it has been handed
-  // off to the child process.
-  zip_file_.Initialize(zip_file_name_,
-                       base::File::FLAG_OPEN | base::File::FLAG_READ);
-  if (!zip_file_.IsValid()) {
-    DVLOG(1) << "Could not open zip file: " << zip_file_name_.value();
-    if (!BrowserThread::PostTask(
-            BrowserThread::IO, FROM_HERE,
-            base::Bind(&SandboxedZipAnalyzer::OnAnalyzeZipFileFinished, this,
-                       zip_analyzer::Results()))) {
-      NOTREACHED();
-    }
+  if (!file.IsValid()) {
+    DLOG(ERROR) << "Could not open file: " << file_path_.value();
+    ReportFileFailure();
     return;
   }
 
-  // This temp file will be closed in the blocking pool when results from the
-  // analyzer return.
   base::FilePath temp_path;
+  base::File temp_file;
   if (base::CreateTemporaryFile(&temp_path)) {
-    temp_file_.Initialize(temp_path, (base::File::FLAG_CREATE_ALWAYS |
-                                      base::File::FLAG_READ |
-                                      base::File::FLAG_WRITE |
-                                      base::File::FLAG_TEMPORARY |
-                                      base::File::FLAG_DELETE_ON_CLOSE));
+    temp_file.Initialize(
+        temp_path, (base::File::FLAG_CREATE_ALWAYS | base::File::FLAG_READ |
+                    base::File::FLAG_WRITE | base::File::FLAG_TEMPORARY |
+                    base::File::FLAG_DELETE_ON_CLOSE));
   }
-  DVLOG_IF(1, !temp_file_.IsValid())
-      << "Could not open temporary output file: " << temp_path.value();
 
-  BrowserThread::PostTask(
-      BrowserThread::IO, FROM_HERE,
-      base::Bind(&SandboxedZipAnalyzer::StartProcessOnIOThread, this));
-}
-
-void SandboxedZipAnalyzer::OnProcessCrashed(int exit_code) {
-  OnAnalyzeZipFileFinished(zip_analyzer::Results());
-}
-
-void SandboxedZipAnalyzer::OnProcessLaunchFailed(int error_code) {
-  OnAnalyzeZipFileFinished(zip_analyzer::Results());
-}
-
-bool SandboxedZipAnalyzer::OnMessageReceived(const IPC::Message& message) {
-  bool handled = true;
-  IPC_BEGIN_MESSAGE_MAP(SandboxedZipAnalyzer, message)
-    IPC_MESSAGE_HANDLER(
-        ChromeUtilityHostMsg_AnalyzeZipFileForDownloadProtection_Finished,
-        OnAnalyzeZipFileFinished)
-    IPC_MESSAGE_UNHANDLED(handled = false)
-  IPC_END_MESSAGE_MAP()
-  return handled;
-}
-
-void SandboxedZipAnalyzer::StartProcessOnIOThread() {
-  DCHECK_CURRENTLY_ON(BrowserThread::IO);
-  utility_process_host_ =
-      content::UtilityProcessHost::Create(
-          this, BrowserThread::GetTaskRunnerForThread(BrowserThread::IO).get())
-          ->AsWeakPtr();
-  utility_process_host_->SetName(l10n_util::GetStringUTF16(
-      IDS_UTILITY_PROCESS_SAFE_BROWSING_ZIP_FILE_ANALYZER_NAME));
-  utility_process_host_->Send(
-      new ChromeUtilityMsg_AnalyzeZipFileForDownloadProtection(
-          IPC::TakePlatformFileForTransit(std::move(zip_file_)),
-          IPC::GetPlatformFileForTransit(temp_file_.GetPlatformFile(),
-                                         false /* !close_source_handle */)));
-}
-
-void SandboxedZipAnalyzer::OnAnalyzeZipFileFinished(
-    const zip_analyzer::Results& results) {
-  DCHECK_CURRENTLY_ON(BrowserThread::IO);
-  if (callback_called_)
+  if (!temp_file.IsValid()) {
+    DLOG(ERROR) << "Could not open temp file: " << temp_path.value();
+    ReportFileFailure();
     return;
-  BrowserThread::PostTask(BrowserThread::UI, FROM_HERE,
-                          base::Bind(callback_, results));
-  callback_called_ = true;
-  CloseTemporaryFile();
+  }
+
+  content::BrowserThread::PostTask(
+      content::BrowserThread::UI, FROM_HERE,
+      base::Bind(&SandboxedZipAnalyzer::AnalyzeFile, this, base::Passed(&file),
+                 base::Passed(&temp_file)));
+}
+
+void SandboxedZipAnalyzer::ReportFileFailure() {
+  DCHECK(!utility_process_mojo_client_);
+
+  content::BrowserThread::PostTask(content::BrowserThread::UI, FROM_HERE,
+                                   base::Bind(callback_, Results()));
+}
+
+void SandboxedZipAnalyzer::AnalyzeFile(base::File file, base::File temp_file) {
+  DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
+  DCHECK(!utility_process_mojo_client_);
+
+  utility_process_mojo_client_ = base::MakeUnique<
+      content::UtilityProcessMojoClient<chrome::mojom::SafeArchiveAnalyzer>>(
+      l10n_util::GetStringUTF16(
+          IDS_UTILITY_PROCESS_SAFE_BROWSING_ZIP_FILE_ANALYZER_NAME));
+  utility_process_mojo_client_->set_error_callback(
+      base::Bind(&SandboxedZipAnalyzer::AnalyzeFileDone, this, Results()));
+
+  utility_process_mojo_client_->Start();
+
+  utility_process_mojo_client_->service()->AnalyzeZipFile(
+      std::move(file), std::move(temp_file),
+      base::Bind(&SandboxedZipAnalyzer::AnalyzeFileDone, this));
+}
+
+void SandboxedZipAnalyzer::AnalyzeFileDone(const Results& results) {
+  DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
+
+  utility_process_mojo_client_.reset();
+  callback_.Run(results);
 }
 
 }  // namespace safe_browsing
diff --git a/chrome/browser/safe_browsing/sandboxed_zip_analyzer.h b/chrome/browser/safe_browsing/sandboxed_zip_analyzer.h
index b251e32..753f55d 100644
--- a/chrome/browser/safe_browsing/sandboxed_zip_analyzer.h
+++ b/chrome/browser/safe_browsing/sandboxed_zip_analyzer.h
@@ -1,12 +1,6 @@
 // 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.
-//
-// Browser-side interface to analyze zip files for SafeBrowsing download
-// protection.  The actual zip decoding is performed in a sandboxed utility
-// process.
-//
-// This class lives on the UI thread.
 
 #ifndef CHROME_BROWSER_SAFE_BROWSING_SANDBOXED_ZIP_ANALYZER_H_
 #define CHROME_BROWSER_SAFE_BROWSING_SANDBOXED_ZIP_ANALYZER_H_
@@ -15,66 +9,55 @@
 #include "base/files/file.h"
 #include "base/files/file_path.h"
 #include "base/macros.h"
-#include "base/memory/weak_ptr.h"
-#include "content/public/browser/utility_process_host.h"
-#include "content/public/browser/utility_process_host_client.h"
-
-namespace IPC {
-class Message;
-}
+#include "base/memory/ref_counted.h"
+#include "chrome/common/safe_archive_analyzer.mojom.h"
+#include "content/public/browser/utility_process_mojo_client.h"
 
 namespace safe_browsing {
-namespace zip_analyzer {
-struct Results;
-}
 
-class SandboxedZipAnalyzer : public content::UtilityProcessHostClient {
+// This class is used to analyze zip files in a sandboxed utility process
+// for file download protection. This class lives on the UI thread, which
+// is where the result callback will be invoked.
+class SandboxedZipAnalyzer
+    : public base::RefCountedThreadSafe<SandboxedZipAnalyzer> {
  public:
-  // Callback that is invoked when the analysis results are ready.
-  typedef base::Callback<void(const zip_analyzer::Results&)> ResultCallback;
+  using Results = zip_analyzer::Results;
+
+  using ResultCallback = base::Callback<void(const Results&)>;
 
   SandboxedZipAnalyzer(const base::FilePath& zip_file,
-                       const ResultCallback& result_callback);
+                       const ResultCallback& callback);
 
-  // Posts a task to start the zip analysis in the utility process.
+  // Starts the analysis. Must be called on the UI thread.
   void Start();
 
  private:
-  ~SandboxedZipAnalyzer() override;
+  friend class base::RefCountedThreadSafe<SandboxedZipAnalyzer>;
 
-  // Posts a fire-and-forget task to close the temporary file in the blocking
-  // pool.
-  void CloseTemporaryFile();
+  ~SandboxedZipAnalyzer();
 
-  // Creates the sandboxed utility process and tells it to start analysis.
-  // Runs on a worker thread.
-  void AnalyzeInSandbox();
+  // Prepare the file for analysis.
+  void PrepareFileToAnalyze();
 
-  // content::UtilityProcessHostClient implementation.
-  // These notifications run on the IO thread.
-  void OnProcessCrashed(int exit_code) override;
-  void OnProcessLaunchFailed(int error_code) override;
-  bool OnMessageReceived(const IPC::Message& message) override;
+  // If file preparation failed, analysis has failed: report failure.
+  void ReportFileFailure();
 
-  // Launches the utility process.  Must run on the IO thread.
-  void StartProcessOnIOThread();
+  // Starts the utility process and sends it a file analyze request.
+  void AnalyzeFile(base::File file, base::File temp);
 
-  // Notification from the utility process that the zip file has been analyzed,
-  // with the given results.  Runs on the IO thread.
-  void OnAnalyzeZipFileFinished(const zip_analyzer::Results& results);
+  // The response containing the file analyze results.
+  void AnalyzeFileDone(const Results& results);
 
-  const base::FilePath zip_file_name_;
-  // Once we have opened the file, we store the handle so that we can use it
-  // once the utility process has launched.
-  base::File zip_file_;
+  // The file path of the file to analyze.
+  const base::FilePath file_path_;
 
-  // A temporary file to be used by the utility process for extracting files
-  // from the archive.
-  base::File temp_file_;
-  base::WeakPtr<content::UtilityProcessHost> utility_process_host_;
+  // Utility client used to send analyze tasks to the utility process.
+  std::unique_ptr<
+      content::UtilityProcessMojoClient<chrome::mojom::SafeArchiveAnalyzer>>
+      utility_process_mojo_client_;
+
+  // Callback invoked on the UI thread with the file analyze results.
   const ResultCallback callback_;
-  // Initialized on the UI thread, but only accessed on the IO thread.
-  bool callback_called_;
 
   DISALLOW_COPY_AND_ASSIGN(SandboxedZipAnalyzer);
 };
diff --git a/chrome/browser/ui/webui/settings/md_settings_localized_strings_provider.cc b/chrome/browser/ui/webui/settings/md_settings_localized_strings_provider.cc
index 42be30d..4bf81ee 100644
--- a/chrome/browser/ui/webui/settings/md_settings_localized_strings_provider.cc
+++ b/chrome/browser/ui/webui/settings/md_settings_localized_strings_provider.cc
@@ -1651,6 +1651,8 @@
     {"siteSettingsMidiDevicesBlock",
      IDS_SETTINGS_SITE_SETTINGS_MIDI_DEVICES_BLOCK},
     {"siteSettingsUsbDevices", IDS_SETTINGS_SITE_SETTINGS_USB_DEVICES},
+    {"siteSettingsRemoveZoomLevel",
+     IDS_SETTINGS_SITE_SETTINGS_REMOVE_ZOOM_LEVEL},
     {"siteSettingsZoomLevels", IDS_SETTINGS_SITE_SETTINGS_ZOOM_LEVELS},
     {"siteSettingsNoZoomedSites", IDS_SETTINGS_SITE_SETTINGS_NO_ZOOMED_SITES},
     {"siteSettingsMaySaveCookies", IDS_SETTINGS_SITE_SETTINGS_MAY_SAVE_COOKIES},
diff --git a/chrome/common/BUILD.gn b/chrome/common/BUILD.gn
index c1f5fdcd..60f021b 100644
--- a/chrome/common/BUILD.gn
+++ b/chrome/common/BUILD.gn
@@ -517,6 +517,10 @@
         "safe_browsing/zip_analyzer_results.cc",
         "safe_browsing/zip_analyzer_results.h",
       ]
+
+      # safe_archive_analyzer.mojom has a [Native] trait that depends on
+      # the protobuf headers in the sources list above.
+      allow_circular_includes_from = [ ":mojo_bindings" ]
     }
   }
 
@@ -702,6 +706,10 @@
     sources += [ "zip_file_creator.mojom" ]
   }
 
+  if (safe_browsing_mode == 1) {
+    sources += [ "safe_archive_analyzer.mojom" ]
+  }
+
   public_deps = [
     "//components/content_settings/core/common:mojo_bindings",
     "//mojo/common:common_custom_types",
diff --git a/chrome/common/chrome_utility_messages.h b/chrome/common/chrome_utility_messages.h
index a267d4a0..c02fb84 100644
--- a/chrome/common/chrome_utility_messages.h
+++ b/chrome/common/chrome_utility_messages.h
@@ -17,9 +17,6 @@
 #include "base/values.h"
 #include "build/build_config.h"
 #include "ipc/ipc_message_macros.h"
-#include "ipc/ipc_platform_file.h"
-#include "ui/gfx/ipc/gfx_param_traits.h"
-#include "ui/gfx/ipc/skia/gfx_skia_param_traits.h"
 
 #if defined(FULL_SAFE_BROWSING)
 #include "chrome/common/safe_browsing/ipc_protobuf_message_macros.h"
@@ -140,22 +137,6 @@
 // Utility process messages:
 // These are messages from the browser to the utility process.
 
-#if defined(FULL_SAFE_BROWSING)
-// Tells the utility process to analyze a zip file for malicious download
-// protection, providing a file that can be used temporarily to analyze binaries
-// contained therein.
-IPC_MESSAGE_CONTROL2(ChromeUtilityMsg_AnalyzeZipFileForDownloadProtection,
-                     IPC::PlatformFileForTransit /* zip_file */,
-                     IPC::PlatformFileForTransit /* temp_file */)
-
-#if defined(OS_MACOSX)
-// Tells the utility process to analyze a DMG file for malicious download
-// protection.
-IPC_MESSAGE_CONTROL1(ChromeUtilityMsg_AnalyzeDmgFileForDownloadProtection,
-                     IPC::PlatformFileForTransit /* dmg_file */)
-#endif  // defined(OS_MACOSX)
-#endif  // defined(FULL_SAFE_BROWSING)
-
 #if defined(OS_WIN)
 // Instructs the utility process to invoke GetOpenFileName. |owner| is the
 // parent of the modal dialog, |flags| are OFN_* flags. |filter| constrains the
@@ -185,20 +166,6 @@
 IPC_MESSAGE_CONTROL1(ChromeUtilityHostMsg_UnpackWebResource_Failed,
                      std::string /* error_message, if any */)
 
-#if defined(FULL_SAFE_BROWSING)
-// Reply when a zip file has been analyzed for malicious download protection.
-IPC_MESSAGE_CONTROL1(
-    ChromeUtilityHostMsg_AnalyzeZipFileForDownloadProtection_Finished,
-    safe_browsing::zip_analyzer::Results)
-
-#if defined(OS_MACOSX)
-// Reply when a DMG file has been analyzed for malicious download protection.
-IPC_MESSAGE_CONTROL1(
-    ChromeUtilityHostMsg_AnalyzeDmgFileForDownloadProtection_Finished,
-    safe_browsing::zip_analyzer::Results)
-#endif  // defined(OS_MACOSX)
-#endif  // defined(FULL_SAFE_BROWSING)
-
 #if defined(OS_WIN)
 IPC_MESSAGE_CONTROL0(ChromeUtilityHostMsg_GetOpenFileName_Failed)
 IPC_MESSAGE_CONTROL2(ChromeUtilityHostMsg_GetOpenFileName_Result,
diff --git a/chrome/common/safe_archive_analyzer.mojom b/chrome/common/safe_archive_analyzer.mojom
new file mode 100644
index 0000000..4a08ec204
--- /dev/null
+++ b/chrome/common/safe_archive_analyzer.mojom
@@ -0,0 +1,28 @@
+// Copyright 2017 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.
+
+// Safe archive file analyzer provided by the utility process and exposed
+// by mojo policy control to the chrome browser process when build flag
+// FULL_SAFE_BROWSING is enabled.
+
+module chrome.mojom;
+
+import "mojo/common/file.mojom";
+
+interface SafeArchiveAnalyzer {
+  // Build flag FULL_SAFE_BROWSING: Analyze the |zip_file| for malicious
+  // download protection, given a |temporary_file| used to extract files
+  // from the |zip_file| archive.
+  AnalyzeZipFile(mojo.common.mojom.File zip_file,
+                 mojo.common.mojom.File temporary_file)
+      => (SafeArchiveAnalyzerResults results);
+
+  // Build flag FULL_SAFE_BROWSING, on OS_MACOSX: Analyze the |dmg_file|
+  // for malicious download protection.
+  AnalyzeDmgFile(mojo.common.mojom.File dmg_file)
+      => (SafeArchiveAnalyzerResults results);
+};
+
+[Native]
+struct SafeArchiveAnalyzerResults;
diff --git a/chrome/common/safe_archive_analyzer.typemap b/chrome/common/safe_archive_analyzer.typemap
new file mode 100644
index 0000000..88d2bf4
--- /dev/null
+++ b/chrome/common/safe_archive_analyzer.typemap
@@ -0,0 +1,16 @@
+# Copyright 2017 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.
+
+mojom = "//chrome/common/safe_archive_analyzer.mojom"
+
+public_headers = [ "//chrome/common/safe_browsing/zip_analyzer.h" ]
+
+traits_headers = [ "//chrome/common/chrome_utility_messages.h" ]
+
+deps = [
+  "//chrome/common/safe_browsing:proto",
+  "//components/safe_browsing:csd_proto",
+]
+
+type_mappings = [ "chrome.mojom.SafeArchiveAnalyzerResults=safe_browsing::zip_analyzer::Results" ]
diff --git a/chrome/test/BUILD.gn b/chrome/test/BUILD.gn
index 99b55d3..8eab2de1 100644
--- a/chrome/test/BUILD.gn
+++ b/chrome/test/BUILD.gn
@@ -3627,7 +3627,6 @@
       "../browser/permissions/permission_request_manager_unittest.cc",
       "../browser/platform_util_unittest.cc",
       "../browser/policy/policy_path_parser_unittest.cc",
-      "../browser/power_usage_monitor/power_usage_monitor_unittest.cc",
       "../browser/process_singleton_posix_unittest.cc",
       "../browser/profile_resetter/profile_resetter_unittest.cc",
       "../browser/profile_resetter/triggered_profile_resetter_win_unittest.cc",
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 3956572..30d7bf8 100644
--- a/chrome/test/data/webui/cr_elements/cr_elements_browsertest.js
+++ b/chrome/test/data/webui/cr_elements/cr_elements_browsertest.js
@@ -127,6 +127,7 @@
 
   /** @override */
   extraLibraries: CrElementsBrowserTest.prototype.extraLibraries.concat([
+    'settings_private_test_constants.js',
     'cr_slider_tests.js',
   ]),
 };
@@ -183,6 +184,30 @@
  * @constructor
  * @extends {CrElementsBrowserTest}
  */
+function CrElementsPolicyIndicatorTest() {}
+
+CrElementsPolicyIndicatorTest.prototype = {
+  __proto__: CrElementsBrowserTest.prototype,
+
+  /** @override */
+  browsePreload:
+      'chrome://resources/cr_elements/policy/cr_policy_indicator.html',
+
+  /** @override */
+  extraLibraries: CrElementsBrowserTest.prototype.extraLibraries.concat([
+    'cr_policy_strings.js',
+    'cr_policy_indicator_tests.js',
+  ]),
+};
+
+TEST_F('CrElementsPolicyIndicatorTest', 'All', function() {
+  mocha.run();
+});
+
+/**
+ * @constructor
+ * @extends {CrElementsBrowserTest}
+ */
 function CrElementsPolicyIndicatorBehaviorTest() {}
 
 CrElementsPolicyIndicatorBehaviorTest.prototype = {
@@ -218,6 +243,7 @@
 
   /** @override */
   extraLibraries: CrElementsBrowserTest.prototype.extraLibraries.concat([
+    'settings_private_test_constants.js',
     'cr_policy_strings.js',
     'cr_policy_pref_indicator_tests.js',
   ]),
diff --git a/chrome/test/data/webui/cr_elements/cr_policy_indicator_tests.js b/chrome/test/data/webui/cr_elements/cr_policy_indicator_tests.js
new file mode 100644
index 0000000..fbac4f53
--- /dev/null
+++ b/chrome/test/data/webui/cr_elements/cr_policy_indicator_tests.js
@@ -0,0 +1,44 @@
+// Copyright 2017 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.
+
+/** @fileoverview Suite of tests for cr-policy-indicator. */
+suite('CrPolicyIndicator', function() {
+  /** @type {!CrPolicyIndicatorElement|undefined} */
+  var indicator;
+
+  /** @type {!PaperTooltipElement|undefined} */
+  var tooltip;
+
+  setup(function() {
+    PolymerTest.clearBody();
+
+    indicator = document.createElement('cr-policy-indicator');
+    document.body.appendChild(indicator);
+    tooltip = indicator.$$('paper-tooltip');
+  });
+
+  teardown(function() {
+    PolymerTest.clearBody();  // crbug.com/680169
+  });
+
+  test('none', function() {
+    assertTrue(indicator.$.indicator.hidden);
+  });
+
+  test('indicator', function() {
+    indicator.indicatorType = CrPolicyIndicatorType.USER_POLICY;
+
+    assertFalse(indicator.$.indicator.hidden);
+    assertEquals('cr20:domain', indicator.$.indicator.icon);
+    assertEquals('policy', tooltip.textContent.trim());
+
+    if (cr.isChromeOS) {
+      indicator.indicatorType = CrPolicyIndicatorType.OWNER;
+      indicator.indicatorSourceName = 'foo@example.com';
+
+      assertEquals('cr:person', indicator.$.indicator.icon);
+      assertEquals('owner: foo@example.com', tooltip.textContent.trim());
+    }
+  });
+});
diff --git a/chrome/test/data/webui/cr_elements/cr_policy_pref_indicator_tests.js b/chrome/test/data/webui/cr_elements/cr_policy_pref_indicator_tests.js
index 3762b6ad..b6a9dbb 100644
--- a/chrome/test/data/webui/cr_elements/cr_policy_pref_indicator_tests.js
+++ b/chrome/test/data/webui/cr_elements/cr_policy_pref_indicator_tests.js
@@ -10,38 +10,6 @@
   /** @type {!PaperTooltipElement|undefined} */
   var tooltip;
 
-  suiteSetup(function() {
-    // Define chrome.settingsPrivate enums, normally provided by chrome WebUI.
-    // NOTE: These need to be kept in sync with settings_private.idl.
-
-    chrome.settingsPrivate = chrome.settingsPrivate || {};
-
-    /** @enum {string} */
-    chrome.settingsPrivate.ControlledBy = {
-      DEVICE_POLICY: 'DEVICE_POLICY',
-      USER_POLICY: 'USER_POLICY',
-      OWNER: 'OWNER',
-      PRIMARY_USER: 'PRIMARY_USER',
-      EXTENSION: 'EXTENSION',
-    };
-
-    /** @enum {string} */
-    chrome.settingsPrivate.Enforcement = {
-      ENFORCED: 'ENFORCED',
-      RECOMMENDED: 'RECOMMENDED',
-    };
-
-    /** @enum {string} */
-    chrome.settingsPrivate.PrefType = {
-      BOOLEAN: 'BOOLEAN',
-      NUMBER: 'NUMBER',
-      STRING: 'STRING',
-      URL: 'URL',
-      LIST: 'LIST',
-      DICTIONARY: 'DICTIONARY',
-    };
-  });
-
   setup(function() {
     PolymerTest.clearBody();
 
diff --git a/chrome/test/data/webui/cr_elements/cr_slider_tests.js b/chrome/test/data/webui/cr_elements/cr_slider_tests.js
index 1df3a18..66ae8ce 100644
--- a/chrome/test/data/webui/cr_elements/cr_slider_tests.js
+++ b/chrome/test/data/webui/cr_elements/cr_slider_tests.js
@@ -20,55 +20,75 @@
       setup(function() {
         PolymerTest.clearBody();
         slider = document.createElement('cr-slider');
+        slider.pref = {
+          type: chrome.settingsPrivate.PrefType.NUMBER,
+          value: 16,
+        };
         document.body.appendChild(slider);
         paperSlider = slider.$$('paper-slider');
       });
 
+      test('enforce value', function() {
+        // Test that the indicator is not present until after the pref is
+        // enforced.
+        indicator = slider.$$('cr-policy-pref-indicator');
+        assertFalse(!!indicator);
+        slider.pref = {
+          controlledBy: chrome.settingsPrivate.ControlledBy.DEVICE_POLICY,
+          enforcement: chrome.settingsPrivate.Enforcement.ENFORCED,
+          type: chrome.settingsPrivate.PrefType.NUMBER,
+          value: 16,
+        };
+        Polymer.dom.flush();
+        indicator = slider.$$('cr-policy-pref-indicator');
+        assertTrue(!!indicator);
+      });
+
       test('set value', function() {
         slider.tickValues = tickValues;
-        slider.value = 16;
+        slider.set('pref.value', 16);
         expectEquals(6, paperSlider.max);
         expectEquals(3, paperSlider.value);
         expectEquals(3, paperSlider.immediateValue);
 
         // cr-slider only supports snapping to a range of tick values. Setting
         // to an in-between value should snap to an indexed value.
-        slider.value = 70;
+        slider.set('pref.value', 70);
         expectEquals(5, paperSlider.value);
         expectEquals(5, paperSlider.immediateValue);
-        expectEquals(64, slider.value);
+        expectEquals(64, slider.pref.value);
 
         // Setting the value out-of-range should clamp the slider.
-        slider.value = -100;
+        slider.set('pref.value', -100);
         expectEquals(0, paperSlider.value);
         expectEquals(0, paperSlider.immediateValue);
-        expectEquals(2, slider.value);
+        expectEquals(2, slider.pref.value);
       });
 
       test('move slider', function() {
         slider.tickValues = tickValues;
-        slider.value = 30;
+        slider.set('pref.value', 30);
         expectEquals(4, paperSlider.value);
 
         MockInteractions.pressAndReleaseKeyOn(
             paperSlider, 39 /* right */);
         expectEquals(5, paperSlider.value);
-        expectEquals(64, slider.value);
+        expectEquals(64, slider.pref.value);
 
         MockInteractions.pressAndReleaseKeyOn(
             paperSlider, 39 /* right */);
         expectEquals(6, paperSlider.value);
-        expectEquals(128, slider.value);
+        expectEquals(128, slider.pref.value);
 
         MockInteractions.pressAndReleaseKeyOn(
             paperSlider, 39 /* right */);
         expectEquals(6, paperSlider.value);
-        expectEquals(128, slider.value);
+        expectEquals(128, slider.pref.value);
 
         MockInteractions.pressAndReleaseKeyOn(
             paperSlider, 37 /* left */);
         expectEquals(5, paperSlider.value);
-        expectEquals(64, slider.value);
+        expectEquals(64, slider.pref.value);
       });
 
       test('findNearestIndex_', function() {
diff --git a/chrome/test/data/webui/cr_elements/settings_private_test_constants.js b/chrome/test/data/webui/cr_elements/settings_private_test_constants.js
new file mode 100644
index 0000000..cb281b1
--- /dev/null
+++ b/chrome/test/data/webui/cr_elements/settings_private_test_constants.js
@@ -0,0 +1,33 @@
+// Copyright 2017 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.
+
+// Define chrome.settingsPrivate enums, normally provided by chrome WebUI.
+// NOTE: These need to be kept in sync with settings_private.idl.
+
+chrome.settingsPrivate = chrome.settingsPrivate || {};
+
+/** @enum {string} */
+chrome.settingsPrivate.ControlledBy = {
+  DEVICE_POLICY: 'DEVICE_POLICY',
+  USER_POLICY: 'USER_POLICY',
+  OWNER: 'OWNER',
+  PRIMARY_USER: 'PRIMARY_USER',
+  EXTENSION: 'EXTENSION',
+};
+
+/** @enum {string} */
+chrome.settingsPrivate.Enforcement = {
+  ENFORCED: 'ENFORCED',
+  RECOMMENDED: 'RECOMMENDED',
+};
+
+/** @enum {string} */
+chrome.settingsPrivate.PrefType = {
+  BOOLEAN: 'BOOLEAN',
+  NUMBER: 'NUMBER',
+  STRING: 'STRING',
+  URL: 'URL',
+  LIST: 'LIST',
+  DICTIONARY: 'DICTIONARY',
+};
diff --git a/chrome/test/data/webui/settings/date_time_page_tests.js b/chrome/test/data/webui/settings/date_time_page_tests.js
index 9357a05..7a48d13 100644
--- a/chrome/test/data/webui/settings/date_time_page_tests.js
+++ b/chrome/test/data/webui/settings/date_time_page_tests.js
@@ -105,7 +105,7 @@
 
     suiteTeardown(function() {
       // TODO(michaelpg): Removes the element before exiting, because the
-      // <paper-tooltip> in <cr-policy-pref-indicator> somehow causes warnings
+      // <paper-tooltip> in <cr-policy-indicator> somehow causes warnings
       // and/or script errors in axs_testing.js.
       PolymerTest.clearBody();
     });
@@ -117,7 +117,7 @@
 
     function verifyPolicy(policy) {
       Polymer.dom.flush();
-      var indicator = dateTime.$$('cr-policy-pref-indicator');
+      var indicator = dateTime.$$('cr-policy-indicator');
 
       if (policy) {
         assertTrue(!!indicator);
diff --git a/chrome/test/data/webui/settings/device_page_tests.js b/chrome/test/data/webui/settings/device_page_tests.js
index 9725b23..e95b9e1 100644
--- a/chrome/test/data/webui/settings/device_page_tests.js
+++ b/chrome/test/data/webui/settings/device_page_tests.js
@@ -314,12 +314,12 @@
         expectFalse(pointersPage.$$('#mouse settings-toggle-button').checked);
 
         var slider = assert(pointersPage.$$('#mouse cr-slider'));
-        expectEquals(4, slider.value);
+        expectEquals(4, slider.pref.value);
         MockInteractions.pressAndReleaseKeyOn(slider.$.slider, 37 /* left */);
         expectEquals(3, devicePage.prefs.settings.mouse.sensitivity2.value);
 
         pointersPage.set('prefs.settings.mouse.sensitivity2.value', 5);
-        expectEquals(5, slider.value);
+        expectEquals(5, slider.pref.value);
       });
 
       test('touchpad', function() {
@@ -329,13 +329,12 @@
         expectFalse(pointersPage.$$('#touchpad #enableTapDragging').checked);
 
         var slider = assert(pointersPage.$$('#touchpad cr-slider'));
-        expectEquals(3, slider.value);
-        MockInteractions.pressAndReleaseKeyOn(
-            slider.$.slider, 39 /* right */);
+        expectEquals(3, slider.pref.value);
+        MockInteractions.pressAndReleaseKeyOn(slider.$.slider, 39 /* right */);
         expectEquals(4, devicePage.prefs.settings.touchpad.sensitivity2.value);
 
         pointersPage.set('prefs.settings.touchpad.sensitivity2.value', 2);
-        expectEquals(2, slider.value);
+        expectEquals(2, slider.pref.value);
       });
 
       test('link doesn\'t activate control', function(done) {
@@ -401,37 +400,34 @@
         assertTrue(!!collapse);
         expectTrue(collapse.opened);
 
-        expectEquals(500, keyboardPage.$.delaySlider.value);
-        expectEquals(500, keyboardPage.$.repeatRateSlider.value);
+        expectEquals(500, keyboardPage.$.delaySlider.pref.value);
+        expectEquals(500, keyboardPage.$.repeatRateSlider.pref.value);
 
         // Test interaction with the cr-slider's underlying paper-slider.
         MockInteractions.pressAndReleaseKeyOn(
             keyboardPage.$.delaySlider.$.slider, 37 /* left */);
         MockInteractions.pressAndReleaseKeyOn(
             keyboardPage.$.repeatRateSlider.$.slider, 39 /* right */);
-        expectEquals(1000,
-            devicePage.prefs.settings.language.xkb_auto_repeat_delay_r2.value);
-        expectEquals(
-            300,
-            devicePage.prefs.settings.language.xkb_auto_repeat_interval_r2.value
-        );
+        var language = devicePage.prefs.settings.language;
+        expectEquals(1000, language.xkb_auto_repeat_delay_r2.value);
+        expectEquals(300, language.xkb_auto_repeat_interval_r2.value);
 
         // Test sliders change when prefs change.
         devicePage.set(
             'prefs.settings.language.xkb_auto_repeat_delay_r2.value', 1500);
-        expectEquals(1500, keyboardPage.$.delaySlider.value);
+        expectEquals(1500, keyboardPage.$.delaySlider.pref.value);
         devicePage.set(
             'prefs.settings.language.xkb_auto_repeat_interval_r2.value',
             2000);
-        expectEquals(2000, keyboardPage.$.repeatRateSlider.value);
+        expectEquals(2000, keyboardPage.$.repeatRateSlider.pref.value);
 
         // Test sliders round to nearest value when prefs change.
         devicePage.set(
             'prefs.settings.language.xkb_auto_repeat_delay_r2.value', 600);
-        expectEquals(500, keyboardPage.$.delaySlider.value);
+        expectEquals(500, keyboardPage.$.delaySlider.pref.value);
         devicePage.set(
             'prefs.settings.language.xkb_auto_repeat_interval_r2.value', 45);
-        expectEquals(50, keyboardPage.$.repeatRateSlider.value);
+        expectEquals(50, keyboardPage.$.repeatRateSlider.pref.value);
 
         devicePage.set(
             'prefs.settings.language.xkb_auto_repeat_enabled_r2.value',
diff --git a/chrome/typemaps.gni b/chrome/typemaps.gni
index 9a20fe5..b26165c 100644
--- a/chrome/typemaps.gni
+++ b/chrome/typemaps.gni
@@ -2,4 +2,7 @@
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE file.
 
-typemaps = [ "//chrome/common/instant.typemap" ]
+typemaps = [
+  "//chrome/common/safe_archive_analyzer.typemap",
+  "//chrome/common/instant.typemap",
+]
diff --git a/chrome/utility/chrome_content_utility_client.cc b/chrome/utility/chrome_content_utility_client.cc
index 1e01333..6a77ced0 100644
--- a/chrome/utility/chrome_content_utility_client.cc
+++ b/chrome/utility/chrome_content_utility_client.cc
@@ -13,11 +13,7 @@
 #include "base/memory/ptr_util.h"
 #include "base/memory/ref_counted.h"
 #include "base/time/time.h"
-#include "build/build_config.h"
-#include "chrome/common/chrome_utility_messages.h"
 #include "chrome/common/file_patcher.mojom.h"
-#include "chrome/common/safe_browsing/zip_analyzer.h"
-#include "chrome/common/safe_browsing/zip_analyzer_results.h"
 #include "chrome/utility/utility_message_handler.h"
 #include "components/safe_json/utility/safe_json_parser_mojo_impl.h"
 #include "content/public/child/image_decoder_utils.h"
@@ -27,14 +23,12 @@
 #include "courgette/courgette.h"
 #include "courgette/third_party/bsdiff/bsdiff.h"
 #include "extensions/features/features.h"
-#include "ipc/ipc_channel.h"
 #include "mojo/public/cpp/bindings/strong_binding.h"
 #include "printing/features/features.h"
 #include "services/image_decoder/image_decoder_service.h"
 #include "services/image_decoder/public/interfaces/constants.mojom.h"
 #include "services/service_manager/public/cpp/interface_registry.h"
 #include "third_party/zlib/google/zip.h"
-#include "ui/gfx/geometry/size.h"
 
 #if !defined(OS_ANDROID)
 #include "chrome/common/resource_usage_reporter.mojom.h"
@@ -62,9 +56,14 @@
 #include "chrome/utility/printing_handler.h"
 #endif
 
-#if defined(OS_MACOSX) && defined(FULL_SAFE_BROWSING)
+#if defined(FULL_SAFE_BROWSING)
+#include "chrome/common/safe_archive_analyzer.mojom.h"
+#include "chrome/common/safe_browsing/zip_analyzer.h"
+#include "chrome/common/safe_browsing/zip_analyzer_results.h"
+#if defined(OS_MACOSX)
 #include "chrome/utility/safe_browsing/mac/dmg_analyzer.h"
 #endif
+#endif
 
 namespace {
 
@@ -135,6 +134,47 @@
 };
 #endif  // defined(OS_CHROMEOS)
 
+#if defined(FULL_SAFE_BROWSING)
+class SafeArchiveAnalyzerImpl : public chrome::mojom::SafeArchiveAnalyzer {
+ public:
+  SafeArchiveAnalyzerImpl() = default;
+  ~SafeArchiveAnalyzerImpl() override = default;
+
+  static void Create(chrome::mojom::SafeArchiveAnalyzerRequest request) {
+    mojo::MakeStrongBinding(base::MakeUnique<SafeArchiveAnalyzerImpl>(),
+                            std::move(request));
+  }
+
+ private:
+  // chrome::mojom::SafeArchiveAnalyzer:
+  void AnalyzeZipFile(base::File zip_file,
+                      base::File temporary_file,
+                      const AnalyzeZipFileCallback& callback) override {
+    DCHECK(temporary_file.IsValid());
+    DCHECK(zip_file.IsValid());
+
+    safe_browsing::zip_analyzer::Results results;
+    safe_browsing::zip_analyzer::AnalyzeZipFile(
+        std::move(zip_file), std::move(temporary_file), &results);
+    callback.Run(results);
+  }
+
+  void AnalyzeDmgFile(base::File dmg_file,
+                      const AnalyzeDmgFileCallback& callback) override {
+#if defined(OS_MACOSX)
+    DCHECK(dmg_file.IsValid());
+    safe_browsing::zip_analyzer::Results results;
+    safe_browsing::dmg::AnalyzeDMGFile(std::move(dmg_file), &results);
+    callback.Run(results);
+#else
+    NOTREACHED();
+#endif
+  }
+
+  DISALLOW_COPY_AND_ASSIGN(SafeArchiveAnalyzerImpl);
+};
+#endif  // defined(FULL_SAFE_BROWSING)
+
 #if !defined(OS_ANDROID)
 void CreateProxyResolverFactory(
     net::interfaces::ProxyResolverFactoryRequest request) {
@@ -210,22 +250,6 @@
   if (utility_process_running_elevated_)
     return false;
 
-  bool handled = true;
-  IPC_BEGIN_MESSAGE_MAP(ChromeContentUtilityClient, message)
-#if defined(FULL_SAFE_BROWSING)
-    IPC_MESSAGE_HANDLER(ChromeUtilityMsg_AnalyzeZipFileForDownloadProtection,
-                        OnAnalyzeZipFileForDownloadProtection)
-#if defined(OS_MACOSX)
-    IPC_MESSAGE_HANDLER(ChromeUtilityMsg_AnalyzeDmgFileForDownloadProtection,
-                        OnAnalyzeDmgFileForDownloadProtection)
-#endif  // defined(OS_MACOSX)
-#endif  // defined(FULL_SAFE_BROWSING)
-    IPC_MESSAGE_UNHANDLED(handled = false)
-  IPC_END_MESSAGE_MAP()
-
-  if (handled)
-    return true;
-
   for (auto* handler : handlers_) {
     if (handler->OnMessageReceived(message))
       return true;
@@ -260,6 +284,9 @@
 #if defined(OS_CHROMEOS)
   registry->AddInterface(base::Bind(&ZipFileCreatorImpl::Create));
 #endif
+#if defined(FULL_SAFE_BROWSING)
+  registry->AddInterface(base::Bind(&SafeArchiveAnalyzerImpl::Create));
+#endif
 }
 
 void ChromeContentUtilityClient::RegisterServices(StaticServiceMap* services) {
@@ -275,32 +302,3 @@
   extensions::ExtensionsHandler::PreSandboxStartup();
 #endif
 }
-
-#if defined(FULL_SAFE_BROWSING)
-void ChromeContentUtilityClient::OnAnalyzeZipFileForDownloadProtection(
-    const IPC::PlatformFileForTransit& zip_file,
-    const IPC::PlatformFileForTransit& temp_file) {
-  safe_browsing::zip_analyzer::Results results;
-  safe_browsing::zip_analyzer::AnalyzeZipFile(
-      IPC::PlatformFileForTransitToFile(zip_file),
-      IPC::PlatformFileForTransitToFile(temp_file), &results);
-  content::UtilityThread::Get()->Send(
-      new ChromeUtilityHostMsg_AnalyzeZipFileForDownloadProtection_Finished(
-          results));
-  content::UtilityThread::Get()->ReleaseProcessIfNeeded();
-}
-
-#if defined(OS_MACOSX)
-void ChromeContentUtilityClient::OnAnalyzeDmgFileForDownloadProtection(
-    const IPC::PlatformFileForTransit& dmg_file) {
-  safe_browsing::zip_analyzer::Results results;
-  safe_browsing::dmg::AnalyzeDMGFile(
-      IPC::PlatformFileForTransitToFile(dmg_file), &results);
-  content::UtilityThread::Get()->Send(
-      new ChromeUtilityHostMsg_AnalyzeDmgFileForDownloadProtection_Finished(
-          results));
-  content::UtilityThread::Get()->ReleaseProcessIfNeeded();
-}
-#endif  // defined(OS_MACOSX)
-
-#endif  // defined(FULL_SAFE_BROWSING)
diff --git a/chrome/utility/chrome_content_utility_client.h b/chrome/utility/chrome_content_utility_client.h
index 5aa5f045..01993c5f 100644
--- a/chrome/utility/chrome_content_utility_client.h
+++ b/chrome/utility/chrome_content_utility_client.h
@@ -5,12 +5,9 @@
 #ifndef CHROME_UTILITY_CHROME_CONTENT_UTILITY_CLIENT_H_
 #define CHROME_UTILITY_CHROME_CONTENT_UTILITY_CLIENT_H_
 
-#include "base/compiler_specific.h"
 #include "base/macros.h"
 #include "base/memory/scoped_vector.h"
-#include "build/build_config.h"
 #include "content/public/utility/content_utility_client.h"
-#include "ipc/ipc_platform_file.h"
 
 class UtilityMessageHandler;
 
@@ -30,20 +27,10 @@
 
  private:
   // IPC message handlers.
-  void OnStartupPing();
-#if defined(FULL_SAFE_BROWSING)
-  void OnAnalyzeZipFileForDownloadProtection(
-      const IPC::PlatformFileForTransit& zip_file,
-      const IPC::PlatformFileForTransit& temp_file);
-#if defined(OS_MACOSX)
-  void OnAnalyzeDmgFileForDownloadProtection(
-      const IPC::PlatformFileForTransit& dmg_file);
-#endif  // defined(OS_MACOSX)
-#endif  // defined(FULL_SAFE_BROWSING)
-
   typedef ScopedVector<UtilityMessageHandler> Handlers;
   Handlers handlers_;
 
+  // True if the utility process runs with elevated privileges.
   bool utility_process_running_elevated_;
 
   DISALLOW_COPY_AND_ASSIGN(ChromeContentUtilityClient);
diff --git a/chromeos/components/tether/BUILD.gn b/chromeos/components/tether/BUILD.gn
index 33ddb7c..b1143db 100644
--- a/chromeos/components/tether/BUILD.gn
+++ b/chromeos/components/tether/BUILD.gn
@@ -32,6 +32,8 @@
     "initializer.h",
     "keep_alive_operation.cc",
     "keep_alive_operation.h",
+    "keep_alive_scheduler.cc",
+    "keep_alive_scheduler.h",
     "local_device_data_provider.cc",
     "local_device_data_provider.h",
     "message_transfer_operation.cc",
@@ -64,6 +66,8 @@
   testonly = true
 
   sources = [
+    "fake_active_host.cc",
+    "fake_active_host.h",
     "fake_ble_connection_manager.cc",
     "fake_ble_connection_manager.h",
     "fake_tether_host_fetcher.cc",
@@ -80,6 +84,7 @@
     "//base",
     "//components/cryptauth",
     "//testing/gmock",
+    "//testing/gtest",
   ]
 }
 
@@ -98,6 +103,7 @@
     "host_scanner_operation_unittest.cc",
     "host_scanner_unittest.cc",
     "keep_alive_operation_unittest.cc",
+    "keep_alive_scheduler_unittest.cc",
     "local_device_data_provider_unittest.cc",
     "message_transfer_operation_unittest.cc",
     "message_wrapper_unittest.cc",
diff --git a/chromeos/components/tether/active_host.cc b/chromeos/components/tether/active_host.cc
index ddfa0fe8..2e73898 100644
--- a/chromeos/components/tether/active_host.cc
+++ b/chromeos/components/tether/active_host.cc
@@ -5,6 +5,7 @@
 #include "chromeos/components/tether/active_host.h"
 
 #include "base/bind.h"
+#include "base/memory/ptr_util.h"
 #include "base/values.h"
 #include "chromeos/components/tether/pref_names.h"
 #include "chromeos/components/tether/tether_host_fetcher.h"
@@ -80,22 +81,43 @@
       pref_service_->GetInteger(prefs::kActiveHostStatus));
 }
 
-const std::string ActiveHost::GetActiveHostDeviceId() const {
+std::string ActiveHost::GetActiveHostDeviceId() const {
   return pref_service_->GetString(prefs::kActiveHostDeviceId);
 }
 
-const std::string ActiveHost::GetWifiNetworkId() const {
+std::string ActiveHost::GetWifiNetworkId() const {
   return pref_service_->GetString(prefs::kWifiNetworkId);
 }
 
+void ActiveHost::AddObserver(Observer* observer) {
+  observer_list_.AddObserver(observer);
+}
+
+void ActiveHost::RemoveObserver(Observer* observer) {
+  observer_list_.RemoveObserver(observer);
+}
+
 void ActiveHost::SetActiveHost(ActiveHostStatus active_host_status,
                                const std::string& active_host_device_id,
                                const std::string& wifi_network_id) {
+  bool status_changed = GetActiveHostStatus() != active_host_status;
+  bool device_changed = GetActiveHostDeviceId() != active_host_device_id;
+  bool network_id_changed = GetWifiNetworkId() != wifi_network_id;
+
+  if (!status_changed && !device_changed && !network_id_changed) {
+    // If nothing has changed, return early.
+    return;
+  }
+
   pref_service_->Set(prefs::kActiveHostStatus,
                      base::Value(static_cast<int>(active_host_status)));
   pref_service_->Set(prefs::kActiveHostDeviceId,
                      base::Value(active_host_device_id));
   pref_service_->Set(prefs::kWifiNetworkId, base::Value(wifi_network_id));
+
+  // Now, send an active host changed update.
+  GetActiveHost(base::Bind(&ActiveHost::SendActiveHostChangedUpdate,
+                           weak_ptr_factory_.GetWeakPtr()));
 }
 
 void ActiveHost::OnTetherHostFetched(
@@ -134,6 +156,19 @@
                            std::move(remote_device), GetWifiNetworkId());
 }
 
+void ActiveHost::SendActiveHostChangedUpdate(
+    ActiveHostStatus active_host_status,
+    std::unique_ptr<cryptauth::RemoteDevice> active_host,
+    const std::string& wifi_network_id) {
+  for (auto& observer : observer_list_) {
+    std::unique_ptr<cryptauth::RemoteDevice> unique_remote_device =
+        active_host ? base::MakeUnique<cryptauth::RemoteDevice>(*active_host)
+                    : nullptr;
+    observer.OnActiveHostChanged(
+        active_host_status, std::move(unique_remote_device), wifi_network_id);
+  }
+}
+
 }  // namespace tether
 
 }  // namespace chromeos
diff --git a/chromeos/components/tether/active_host.h b/chromeos/components/tether/active_host.h
index 3e8e8cb..5ec79941 100644
--- a/chromeos/components/tether/active_host.h
+++ b/chromeos/components/tether/active_host.h
@@ -10,6 +10,7 @@
 #include "base/callback.h"
 #include "base/macros.h"
 #include "base/memory/weak_ptr.h"
+#include "base/observer_list.h"
 
 class PrefRegistrySimple;
 class PrefService;
@@ -36,6 +37,14 @@
     CONNECTED = 2
   };
 
+  class Observer {
+   public:
+    virtual void OnActiveHostChanged(
+        ActiveHostStatus active_host_status,
+        std::unique_ptr<cryptauth::RemoteDevice> active_host_device,
+        const std::string& wifi_network_id) = 0;
+  };
+
   ActiveHost(TetherHostFetcher* tether_host_fetcher, PrefService* pref_service);
   virtual ~ActiveHost();
 
@@ -44,18 +53,19 @@
 
   // Sets the active host to be no host at all (i.e., the local device is not
   // connecting or connected to a tether host).
-  void SetActiveHostDisconnected();
+  virtual void SetActiveHostDisconnected();
 
   // Sets the active host to be the device with ID |active_host_device_id| and
   // records that the there is an active attempt to connect to that host (i.e.,
   // the host is not yet connected but it is in the process of connecting).
-  void SetActiveHostConnecting(const std::string& active_host_device_id);
+  virtual void SetActiveHostConnecting(
+      const std::string& active_host_device_id);
 
   // Sets the active host to be the device with ID |active_host_device_id| and
   // that the local device is connected to that device on the mobile hotspot
   // with Wi-Fi network ID |wifi_network_id|.
-  void SetActiveHostConnected(const std::string& active_host_device_id,
-                              const std::string& wifi_network_id);
+  virtual void SetActiveHostConnected(const std::string& active_host_device_id,
+                                      const std::string& wifi_network_id);
 
   // Gets the active host and associated metadata asynchronously. If
   // the active host status is...
@@ -67,12 +77,21 @@
       base::Callback<void(ActiveHostStatus active_host_status,
                           std::unique_ptr<cryptauth::RemoteDevice> active_host,
                           const std::string& wifi_network_id)>;
-  void GetActiveHost(const ActiveHostCallback& active_host_callback);
+  virtual void GetActiveHost(const ActiveHostCallback& active_host_callback);
 
   // Synchronous getter methods which do not return a full RemoteDevice object.
-  ActiveHostStatus GetActiveHostStatus() const;
-  const std::string GetActiveHostDeviceId() const;
-  const std::string GetWifiNetworkId() const;
+  virtual ActiveHostStatus GetActiveHostStatus() const;
+  virtual std::string GetActiveHostDeviceId() const;
+  virtual std::string GetWifiNetworkId() const;
+
+  void AddObserver(Observer* observer);
+  void RemoveObserver(Observer* observer);
+
+ protected:
+  void SendActiveHostChangedUpdate(
+      ActiveHostStatus active_host_status,
+      std::unique_ptr<cryptauth::RemoteDevice> active_host,
+      const std::string& wifi_network_id);
 
  private:
   void SetActiveHost(ActiveHostStatus active_host_status,
@@ -86,6 +105,8 @@
   TetherHostFetcher* tether_host_fetcher_;
   PrefService* pref_service_;
 
+  base::ObserverList<Observer> observer_list_;
+
   base::WeakPtrFactory<ActiveHost> weak_ptr_factory_;
 
   DISALLOW_COPY_AND_ASSIGN(ActiveHost);
diff --git a/chromeos/components/tether/active_host_unittest.cc b/chromeos/components/tether/active_host_unittest.cc
index c2981ff2..6f28cf2 100644
--- a/chromeos/components/tether/active_host_unittest.cc
+++ b/chromeos/components/tether/active_host_unittest.cc
@@ -40,6 +40,24 @@
   }
 };
 
+class TestObserver : public ActiveHost::Observer {
+ public:
+  void OnActiveHostChanged(
+      ActiveHost::ActiveHostStatus active_host_status,
+      std::unique_ptr<cryptauth::RemoteDevice> active_host_device,
+      const std::string& wifi_network_id) override {
+    host_changed_updates_.push_back(GetActiveHostResult{
+        active_host_status, std::move(active_host_device), wifi_network_id});
+  }
+
+  std::vector<GetActiveHostResult>& host_changed_updates() {
+    return host_changed_updates_;
+  }
+
+ private:
+  std::vector<GetActiveHostResult> host_changed_updates_;
+};
+
 }  // namespace
 
 class ActiveHostTest : public testing::Test {
@@ -56,6 +74,9 @@
     ActiveHost::RegisterPrefs(test_pref_service_->registry());
     active_host_ = base::MakeUnique<ActiveHost>(fake_tether_host_fetcher_.get(),
                                                 test_pref_service_.get());
+
+    test_observer_ = base::WrapUnique(new TestObserver);
+    active_host_->AddObserver(test_observer_.get());
   }
 
   void OnActiveHostFetched(ActiveHost::ActiveHostStatus active_host_status,
@@ -84,6 +105,7 @@
 
   std::unique_ptr<TestingPrefServiceSimple> test_pref_service_;
   std::unique_ptr<FakeTetherHostFetcher> fake_tether_host_fetcher_;
+  std::unique_ptr<TestObserver> test_observer_;
 
   std::vector<GetActiveHostResult> get_active_host_results_;
 
@@ -172,6 +194,48 @@
             get_active_host_results_[0]);
 }
 
+TEST_F(ActiveHostTest, TestObserverCalls) {
+  // Start as DISCONNECTED.
+  EXPECT_FALSE(test_observer_->host_changed_updates().size());
+
+  // Go to DISCONNECTED again. This should not cause an observer callback to be
+  // invoked.
+  active_host_->SetActiveHostDisconnected();
+  fake_tether_host_fetcher_->InvokePendingCallbacks();
+  EXPECT_FALSE(test_observer_->host_changed_updates().size());
+
+  // Transition to CONNECTING.
+  active_host_->SetActiveHostConnecting(test_devices_[0].GetDeviceId());
+  fake_tether_host_fetcher_->InvokePendingCallbacks();
+  EXPECT_EQ(1u, test_observer_->host_changed_updates().size());
+  EXPECT_EQ(
+      (GetActiveHostResult{ActiveHost::ActiveHostStatus::CONNECTING,
+                           std::shared_ptr<cryptauth::RemoteDevice>(
+                               new cryptauth::RemoteDevice(test_devices_[0])),
+                           ""}),
+      test_observer_->host_changed_updates()[0]);
+
+  // Transition to CONNECTED.
+  active_host_->SetActiveHostConnected(test_devices_[0].GetDeviceId(),
+                                       "wifiNetworkId");
+  fake_tether_host_fetcher_->InvokePendingCallbacks();
+  EXPECT_EQ(2u, test_observer_->host_changed_updates().size());
+  EXPECT_EQ(
+      (GetActiveHostResult{ActiveHost::ActiveHostStatus::CONNECTED,
+                           std::shared_ptr<cryptauth::RemoteDevice>(
+                               new cryptauth::RemoteDevice(test_devices_[0])),
+                           "wifiNetworkId"}),
+      test_observer_->host_changed_updates()[1]);
+
+  // Transition to DISCONNECTED.
+  active_host_->SetActiveHostDisconnected();
+  fake_tether_host_fetcher_->InvokePendingCallbacks();
+  EXPECT_EQ(3u, test_observer_->host_changed_updates().size());
+  EXPECT_EQ((GetActiveHostResult{ActiveHost::ActiveHostStatus::DISCONNECTED,
+                                 nullptr, ""}),
+            test_observer_->host_changed_updates()[2]);
+}
+
 }  // namespace tether
 
 }  // namespace cryptauth
diff --git a/chromeos/components/tether/fake_active_host.cc b/chromeos/components/tether/fake_active_host.cc
new file mode 100644
index 0000000..cf7cc243c
--- /dev/null
+++ b/chromeos/components/tether/fake_active_host.cc
@@ -0,0 +1,95 @@
+// Copyright 2017 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 "chromeos/components/tether/fake_active_host.h"
+
+#include "base/base64.h"
+#include "base/bind.h"
+#include "base/memory/ptr_util.h"
+#include "components/cryptauth/remote_device.h"
+#include "testing/gtest/include/gtest/gtest.h"
+
+namespace chromeos {
+
+namespace tether {
+
+FakeActiveHost::FakeActiveHost()
+    : ActiveHost(nullptr, nullptr),
+      active_host_status_(ActiveHost::ActiveHostStatus::DISCONNECTED),
+      active_host_device_id_(std::string()),
+      wifi_network_id_(std::string()) {}
+
+FakeActiveHost::~FakeActiveHost() {}
+
+void FakeActiveHost::SetActiveHostDisconnected() {
+  SetActiveHost(ActiveHost::ActiveHostStatus::DISCONNECTED, "", "");
+}
+
+void FakeActiveHost::SetActiveHostConnecting(
+    const std::string& active_host_device_id) {
+  SetActiveHost(ActiveHost::ActiveHostStatus::CONNECTING, active_host_device_id,
+                "");
+}
+
+void FakeActiveHost::SetActiveHostConnected(
+    const std::string& active_host_device_id,
+    const std::string& wifi_network_id) {
+  SetActiveHost(ActiveHost::ActiveHostStatus::CONNECTED, active_host_device_id,
+                wifi_network_id);
+}
+
+void FakeActiveHost::GetActiveHost(
+    const ActiveHost::ActiveHostCallback& active_host_callback) {
+  std::unique_ptr<cryptauth::RemoteDevice> remote_device;
+  if (GetActiveHostStatus() == ActiveHost::ActiveHostStatus::DISCONNECTED) {
+    remote_device = nullptr;
+  } else {
+    // Convert the active host ID to a public key.
+    std::string public_key;
+    ASSERT_TRUE(base::Base64Decode(GetActiveHostDeviceId(), &public_key));
+
+    // Create a new RemoteDevice and set its public key.
+    remote_device = base::MakeUnique<cryptauth::RemoteDevice>();
+    remote_device->public_key = public_key;
+  }
+
+  active_host_callback.Run(GetActiveHostStatus(), std::move(remote_device),
+                           GetWifiNetworkId());
+}
+
+ActiveHost::ActiveHostStatus FakeActiveHost::GetActiveHostStatus() const {
+  return active_host_status_;
+}
+
+std::string FakeActiveHost::GetActiveHostDeviceId() const {
+  return active_host_device_id_;
+}
+
+std::string FakeActiveHost::GetWifiNetworkId() const {
+  return wifi_network_id_;
+}
+
+void FakeActiveHost::SetActiveHost(ActiveHostStatus active_host_status,
+                                   const std::string& active_host_device_id,
+                                   const std::string& wifi_network_id) {
+  bool status_changed = GetActiveHostStatus() != active_host_status;
+  bool device_changed = GetActiveHostDeviceId() != active_host_device_id;
+  bool network_id_changed = GetWifiNetworkId() != wifi_network_id;
+
+  if (!status_changed && !device_changed && !network_id_changed) {
+    // If nothing has changed, return early.
+    return;
+  }
+
+  active_host_status_ = active_host_status;
+  active_host_device_id_ = active_host_device_id;
+  wifi_network_id_ = wifi_network_id;
+
+  GetActiveHost(base::Bind(&FakeActiveHost::SendActiveHostChangedUpdate,
+                           base::Unretained(this)));
+}
+
+}  // namespace tether
+
+}  // namespace chromeos
diff --git a/chromeos/components/tether/fake_active_host.h b/chromeos/components/tether/fake_active_host.h
new file mode 100644
index 0000000..3ec912a
--- /dev/null
+++ b/chromeos/components/tether/fake_active_host.h
@@ -0,0 +1,54 @@
+// Copyright 2017 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 CHROMEOS_COMPONENTS_TETHER_FAKE_ACTIVE_HOST_H_
+#define CHROMEOS_COMPONENTS_TETHER_FAKE_ACTIVE_HOST_H_
+
+#include <string>
+
+#include "base/callback.h"
+#include "base/macros.h"
+#include "base/memory/weak_ptr.h"
+#include "base/observer_list.h"
+#include "chromeos/components/tether/active_host.h"
+
+namespace chromeos {
+
+namespace tether {
+
+// Test double for ActiveHost.
+class FakeActiveHost : public ActiveHost {
+ public:
+  FakeActiveHost();
+  ~FakeActiveHost() override;
+
+  // ActiveHost:
+  void SetActiveHostDisconnected() override;
+  void SetActiveHostConnecting(
+      const std::string& active_host_device_id) override;
+  void SetActiveHostConnected(const std::string& active_host_device_id,
+                              const std::string& wifi_network_id) override;
+  void GetActiveHost(
+      const ActiveHost::ActiveHostCallback& active_host_callback) override;
+  ActiveHostStatus GetActiveHostStatus() const override;
+  std::string GetActiveHostDeviceId() const override;
+  std::string GetWifiNetworkId() const override;
+
+ private:
+  void SetActiveHost(ActiveHostStatus active_host_status,
+                     const std::string& active_host_device_id,
+                     const std::string& wifi_network_id);
+
+  ActiveHost::ActiveHostStatus active_host_status_;
+  std::string active_host_device_id_;
+  std::string wifi_network_id_;
+
+  DISALLOW_COPY_AND_ASSIGN(FakeActiveHost);
+};
+
+}  // namespace tether
+
+}  // namespace chromeos
+
+#endif  // CHROMEOS_COMPONENTS_TETHER_FAKE_ACTIVE_HOST_H_
diff --git a/chromeos/components/tether/keep_alive_operation.cc b/chromeos/components/tether/keep_alive_operation.cc
index d1cf0db..dc9d54a 100644
--- a/chromeos/components/tether/keep_alive_operation.cc
+++ b/chromeos/components/tether/keep_alive_operation.cc
@@ -48,12 +48,27 @@
 
 KeepAliveOperation::~KeepAliveOperation() {}
 
+void KeepAliveOperation::AddObserver(Observer* observer) {
+  observer_list_.AddObserver(observer);
+}
+
+void KeepAliveOperation::RemoveObserver(Observer* observer) {
+  observer_list_.RemoveObserver(observer);
+}
+
 void KeepAliveOperation::OnDeviceAuthenticated(
     const cryptauth::RemoteDevice& remote_device) {
   DCHECK(remote_devices().size() == 1u && remote_devices()[0] == remote_device);
 
   SendMessageToDevice(remote_device,
                       base::MakeUnique<MessageWrapper>(KeepAliveTickle()));
+  UnregisterDevice(remote_device);
+}
+
+void KeepAliveOperation::OnOperationFinished() {
+  for (auto& observer : observer_list_) {
+    observer.OnOperationFinished();
+  }
 }
 
 MessageType KeepAliveOperation::GetMessageTypeForConnection() {
diff --git a/chromeos/components/tether/keep_alive_operation.h b/chromeos/components/tether/keep_alive_operation.h
index c5099e9..20193a8 100644
--- a/chromeos/components/tether/keep_alive_operation.h
+++ b/chromeos/components/tether/keep_alive_operation.h
@@ -5,6 +5,7 @@
 #ifndef CHROMEOS_COMPONENTS_TETHER_KEEP_ALIVE_OPERATION_H_
 #define CHROMEOS_COMPONENTS_TETHER_KEEP_ALIVE_OPERATION_H_
 
+#include "base/observer_list.h"
 #include "chromeos/components/tether/message_transfer_operation.h"
 
 namespace chromeos {
@@ -14,9 +15,8 @@
 class BleConnectionManager;
 
 // Operation which sends a keep-alive message to a tether host.
-// TODO(khorimoto/hansberry): Consider changing protocol to receive a
-//                            DeviceStatus update after sending the
-//                            KeepAliveTickle message.
+// TODO(khorimoto/hansberry): Change protocol to receive a DeviceStatus update
+//                            after sending the KeepAliveTickle message.
 class KeepAliveOperation : public MessageTransferOperation {
  public:
   class Factory {
@@ -29,13 +29,20 @@
 
    protected:
     virtual std::unique_ptr<KeepAliveOperation> BuildInstance(
-        const cryptauth::RemoteDevice& devices_to_connect,
+        const cryptauth::RemoteDevice& device_to_connect,
         BleConnectionManager* connection_manager);
 
    private:
     static Factory* factory_instance_;
   };
 
+  class Observer {
+   public:
+    // TODO(khorimoto): This function should take a DeviceStatus once there is
+    //                  keep-alive tickle response.
+    virtual void OnOperationFinished() = 0;
+  };
+
   KeepAliveOperation(const cryptauth::RemoteDevice& device_to_connect,
                      BleConnectionManager* connection_manager);
   ~KeepAliveOperation() override;
@@ -47,11 +54,15 @@
   // MessageTransferOperation:
   void OnDeviceAuthenticated(
       const cryptauth::RemoteDevice& remote_device) override;
+  void OnOperationFinished() override;
   MessageType GetMessageTypeForConnection() override;
 
  private:
   friend class KeepAliveOperationTest;
 
+  base::ObserverList<Observer> observer_list_;
+  bool has_authenticated_;
+
   DISALLOW_COPY_AND_ASSIGN(KeepAliveOperation);
 };
 
diff --git a/chromeos/components/tether/keep_alive_operation_unittest.cc b/chromeos/components/tether/keep_alive_operation_unittest.cc
index f0b196d..57e6e46 100644
--- a/chromeos/components/tether/keep_alive_operation_unittest.cc
+++ b/chromeos/components/tether/keep_alive_operation_unittest.cc
@@ -19,6 +19,20 @@
 
 namespace {
 
+class TestObserver : public KeepAliveOperation::Observer {
+ public:
+  TestObserver() : has_run_callback_(false) {}
+
+  virtual ~TestObserver() {}
+
+  bool has_run_callback() { return has_run_callback_; }
+
+  void OnOperationFinished() override { has_run_callback_ = true; }
+
+ private:
+  bool has_run_callback_;
+};
+
 std::string CreateKeepAliveTickleString() {
   KeepAliveTickle tickle;
   return MessageWrapper(tickle).ToRawMessage();
@@ -37,6 +51,10 @@
 
     operation_ = base::WrapUnique(new KeepAliveOperation(
         test_device_, fake_ble_connection_manager_.get()));
+
+    test_observer_ = base::WrapUnique(new TestObserver());
+    operation_->AddObserver(test_observer_.get());
+
     operation_->Initialize();
   }
 
@@ -55,6 +73,8 @@
   const cryptauth::RemoteDevice test_device_;
 
   std::unique_ptr<FakeBleConnectionManager> fake_ble_connection_manager_;
+  std::unique_ptr<TestObserver> test_observer_;
+
   std::unique_ptr<KeepAliveOperation> operation_;
 
  private:
@@ -62,7 +82,9 @@
 };
 
 TEST_F(KeepAliveOperationTest, TestSendsKeepAliveTickle) {
+  EXPECT_FALSE(test_observer_->has_run_callback());
   SimulateDeviceAuthenticationAndVerifyMessageSent();
+  EXPECT_TRUE(test_observer_->has_run_callback());
 }
 
 }  // namespace tether
diff --git a/chromeos/components/tether/keep_alive_scheduler.cc b/chromeos/components/tether/keep_alive_scheduler.cc
new file mode 100644
index 0000000..a7e7d59
--- /dev/null
+++ b/chromeos/components/tether/keep_alive_scheduler.cc
@@ -0,0 +1,77 @@
+// Copyright 2017 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 "chromeos/components/tether/keep_alive_scheduler.h"
+
+#include "base/bind.h"
+
+namespace chromeos {
+
+namespace tether {
+
+// static
+const uint32_t KeepAliveScheduler::kKeepAliveIntervalMinutes = 4;
+
+KeepAliveScheduler::KeepAliveScheduler(ActiveHost* active_host,
+                                       BleConnectionManager* connection_manager)
+    : KeepAliveScheduler(active_host,
+                         connection_manager,
+                         base::MakeUnique<base::RepeatingTimer>()) {}
+
+KeepAliveScheduler::KeepAliveScheduler(ActiveHost* active_host,
+                                       BleConnectionManager* connection_manager,
+                                       std::unique_ptr<base::Timer> timer)
+    : active_host_(active_host),
+      connection_manager_(connection_manager),
+      timer_(std::move(timer)),
+      weak_ptr_factory_(this) {
+  active_host_->AddObserver(this);
+}
+
+KeepAliveScheduler::~KeepAliveScheduler() {
+  active_host_->RemoveObserver(this);
+}
+
+void KeepAliveScheduler::OnActiveHostChanged(
+    ActiveHost::ActiveHostStatus active_host_status,
+    std::unique_ptr<cryptauth::RemoteDevice> active_host_device,
+    const std::string& wifi_network_id) {
+  if (active_host_status == ActiveHost::ActiveHostStatus::DISCONNECTED) {
+    DCHECK(!active_host_device);
+    DCHECK(wifi_network_id.empty());
+
+    keep_alive_operation_.reset();
+    active_host_device_.reset();
+    timer_->Stop();
+    return;
+  }
+
+  if (active_host_status == ActiveHost::ActiveHostStatus::CONNECTED) {
+    DCHECK(active_host_device);
+    active_host_device_ = std::move(active_host_device);
+    timer_->Start(FROM_HERE,
+                  base::TimeDelta::FromMinutes(kKeepAliveIntervalMinutes),
+                  base::Bind(&KeepAliveScheduler::SendKeepAliveTickle,
+                             weak_ptr_factory_.GetWeakPtr()));
+    SendKeepAliveTickle();
+  }
+}
+
+void KeepAliveScheduler::OnOperationFinished() {
+  keep_alive_operation_->RemoveObserver(this);
+  keep_alive_operation_.reset();
+}
+
+void KeepAliveScheduler::SendKeepAliveTickle() {
+  DCHECK(active_host_device_);
+
+  keep_alive_operation_ = KeepAliveOperation::Factory::NewInstance(
+      *active_host_device_, connection_manager_);
+  keep_alive_operation_->AddObserver(this);
+  keep_alive_operation_->Initialize();
+}
+
+}  // namespace tether
+
+}  // namespace chromeos
diff --git a/chromeos/components/tether/keep_alive_scheduler.h b/chromeos/components/tether/keep_alive_scheduler.h
new file mode 100644
index 0000000..9232a66
--- /dev/null
+++ b/chromeos/components/tether/keep_alive_scheduler.h
@@ -0,0 +1,66 @@
+// Copyright 2017 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 CHROMEOS_COMPONENTS_TETHER_KEEP_ALIVE_SCHEDULER_H_
+#define CHROMEOS_COMPONENTS_TETHER_KEEP_ALIVE_SCHEDULER_H_
+
+#include <memory>
+
+#include "base/macros.h"
+#include "base/memory/weak_ptr.h"
+#include "base/timer/timer.h"
+#include "chromeos/components/tether/active_host.h"
+#include "chromeos/components/tether/keep_alive_operation.h"
+
+namespace chromeos {
+
+namespace tether {
+
+// Schedules keep-alive messages to be sent when this device is connected to a
+// remote device's tether hotspot. When a device connects, a keep-alive message
+// is sent immediately, then another one is scheduled every 4 minutes until the
+// device disconnects.
+class KeepAliveScheduler : public ActiveHost::Observer,
+                           public KeepAliveOperation::Observer {
+ public:
+  KeepAliveScheduler(ActiveHost* active_host,
+                     BleConnectionManager* connection_manager);
+  virtual ~KeepAliveScheduler();
+
+  // ActiveHost::Observer:
+  void OnActiveHostChanged(ActiveHost::ActiveHostStatus active_host_status,
+                           std::unique_ptr<cryptauth::RemoteDevice> active_host,
+                           const std::string& wifi_network_id) override;
+
+  // KeepAliveOperation::Observer:
+  void OnOperationFinished() override;
+
+ private:
+  friend class KeepAliveSchedulerTest;
+
+  KeepAliveScheduler(ActiveHost* active_host,
+                     BleConnectionManager* connection_manager,
+                     std::unique_ptr<base::Timer> timer);
+
+  void SendKeepAliveTickle();
+
+  static const uint32_t kKeepAliveIntervalMinutes;
+
+  ActiveHost* active_host_;
+  BleConnectionManager* connection_manager_;
+
+  std::unique_ptr<base::Timer> timer_;
+  std::unique_ptr<cryptauth::RemoteDevice> active_host_device_;
+  std::unique_ptr<KeepAliveOperation> keep_alive_operation_;
+
+  base::WeakPtrFactory<KeepAliveScheduler> weak_ptr_factory_;
+
+  DISALLOW_COPY_AND_ASSIGN(KeepAliveScheduler);
+};
+
+}  // namespace tether
+
+}  // namespace chromeos
+
+#endif  // CHROMEOS_COMPONENTS_TETHER_KEEP_ALIVE_SCHEDULER_H_
diff --git a/chromeos/components/tether/keep_alive_scheduler_unittest.cc b/chromeos/components/tether/keep_alive_scheduler_unittest.cc
new file mode 100644
index 0000000..613dcf46
--- /dev/null
+++ b/chromeos/components/tether/keep_alive_scheduler_unittest.cc
@@ -0,0 +1,231 @@
+// Copyright 2017 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 "chromeos/components/tether/keep_alive_scheduler.h"
+
+#include <memory>
+#include <vector>
+
+#include "base/timer/mock_timer.h"
+#include "chromeos/components/tether/fake_active_host.h"
+#include "chromeos/components/tether/fake_ble_connection_manager.h"
+#include "components/cryptauth/remote_device_test_util.h"
+#include "testing/gtest/include/gtest/gtest.h"
+
+namespace chromeos {
+
+namespace tether {
+
+namespace {
+
+const char kWifiNetworkId[] = "wifiNetworkId";
+
+class OperationDeletedHandler {
+ public:
+  virtual void OnOperationDeleted() = 0;
+};
+
+class FakeKeepAliveOperation : public KeepAliveOperation {
+ public:
+  FakeKeepAliveOperation(const cryptauth::RemoteDevice& device_to_connect,
+                         BleConnectionManager* connection_manager,
+                         OperationDeletedHandler* handler)
+      : KeepAliveOperation(device_to_connect, connection_manager),
+        handler_(handler),
+        remote_device_(device_to_connect) {}
+
+  ~FakeKeepAliveOperation() override { handler_->OnOperationDeleted(); }
+
+  void SendOperationFinishedEvent() { OnOperationFinished(); }
+
+  cryptauth::RemoteDevice remote_device() { return remote_device_; }
+
+ private:
+  OperationDeletedHandler* handler_;
+  const cryptauth::RemoteDevice remote_device_;
+};
+
+class FakeKeepAliveOperationFactory : public KeepAliveOperation::Factory,
+                                      public OperationDeletedHandler {
+ public:
+  FakeKeepAliveOperationFactory()
+      : num_created_(0), num_deleted_(0), last_created_(nullptr) {}
+  ~FakeKeepAliveOperationFactory() {}
+
+  uint32_t num_created() { return num_created_; }
+
+  uint32_t num_deleted() { return num_deleted_; }
+
+  FakeKeepAliveOperation* last_created() { return last_created_; }
+
+  void OnOperationDeleted() override { num_deleted_++; }
+
+ protected:
+  std::unique_ptr<KeepAliveOperation> BuildInstance(
+      const cryptauth::RemoteDevice& device_to_connect,
+      BleConnectionManager* connection_manager) override {
+    num_created_++;
+    last_created_ =
+        new FakeKeepAliveOperation(device_to_connect, connection_manager, this);
+    return base::WrapUnique(last_created_);
+  }
+
+ private:
+  uint32_t num_created_;
+  uint32_t num_deleted_;
+  FakeKeepAliveOperation* last_created_;
+};
+
+}  // namespace
+
+class KeepAliveSchedulerTest : public testing::Test {
+ protected:
+  KeepAliveSchedulerTest()
+      : test_devices_(cryptauth::GenerateTestRemoteDevices(2)) {}
+
+  void SetUp() override {
+    fake_active_host_ = base::MakeUnique<FakeActiveHost>();
+    fake_ble_connection_manager_ = base::MakeUnique<FakeBleConnectionManager>();
+    mock_timer_ = new base::MockTimer(true /* retain_user_task */,
+                                      true /* is_repeating */);
+
+    fake_operation_factory_ =
+        base::WrapUnique(new FakeKeepAliveOperationFactory());
+    KeepAliveOperation::Factory::SetInstanceForTesting(
+        fake_operation_factory_.get());
+
+    scheduler_ = base::WrapUnique(new KeepAliveScheduler(
+        fake_active_host_.get(), fake_ble_connection_manager_.get(),
+        base::WrapUnique(mock_timer_)));
+  }
+
+  void VerifyTimerRunning(bool is_running) {
+    EXPECT_EQ(is_running, mock_timer_->IsRunning());
+
+    if (is_running) {
+      EXPECT_EQ(base::TimeDelta::FromMinutes(
+                    KeepAliveScheduler::kKeepAliveIntervalMinutes),
+                mock_timer_->GetCurrentDelay());
+    }
+  }
+
+  const std::vector<cryptauth::RemoteDevice> test_devices_;
+
+  std::unique_ptr<FakeActiveHost> fake_active_host_;
+  std::unique_ptr<FakeBleConnectionManager> fake_ble_connection_manager_;
+  base::MockTimer* mock_timer_;
+
+  std::unique_ptr<FakeKeepAliveOperationFactory> fake_operation_factory_;
+
+  std::unique_ptr<KeepAliveScheduler> scheduler_;
+
+ private:
+  DISALLOW_COPY_AND_ASSIGN(KeepAliveSchedulerTest);
+};
+
+TEST_F(KeepAliveSchedulerTest, TestSendTickle_OneActiveHost) {
+  EXPECT_FALSE(fake_operation_factory_->num_created());
+  EXPECT_FALSE(fake_operation_factory_->num_deleted());
+  VerifyTimerRunning(false /* is_running */);
+
+  // Start connecting to a device. No operation should be started.
+  fake_active_host_->SetActiveHostConnecting(test_devices_[0].GetDeviceId());
+  EXPECT_FALSE(fake_operation_factory_->num_created());
+  EXPECT_FALSE(fake_operation_factory_->num_deleted());
+  VerifyTimerRunning(false /* is_running */);
+
+  // Connect to the device; the operation should be started.
+  fake_active_host_->SetActiveHostConnected(test_devices_[0].GetDeviceId(),
+                                            std::string(kWifiNetworkId));
+  EXPECT_EQ(1u, fake_operation_factory_->num_created());
+  EXPECT_EQ(test_devices_[0],
+            fake_operation_factory_->last_created()->remote_device());
+  EXPECT_FALSE(fake_operation_factory_->num_deleted());
+  VerifyTimerRunning(true /* is_running */);
+
+  // Ensure that once the operation is finished, it is deleted.
+  fake_operation_factory_->last_created()->SendOperationFinishedEvent();
+  EXPECT_EQ(1u, fake_operation_factory_->num_created());
+  EXPECT_EQ(1u, fake_operation_factory_->num_deleted());
+  VerifyTimerRunning(true /* is_running */);
+
+  // Fire the timer; this should result in another tickle being sent.
+  mock_timer_->Fire();
+  EXPECT_EQ(2u, fake_operation_factory_->num_created());
+  EXPECT_EQ(test_devices_[0],
+            fake_operation_factory_->last_created()->remote_device());
+  EXPECT_EQ(1u, fake_operation_factory_->num_deleted());
+  VerifyTimerRunning(true /* is_running */);
+
+  // Finish this operation.
+  fake_operation_factory_->last_created()->SendOperationFinishedEvent();
+  EXPECT_EQ(2u, fake_operation_factory_->num_created());
+  EXPECT_EQ(2u, fake_operation_factory_->num_deleted());
+  VerifyTimerRunning(true /* is_running */);
+
+  // Disconnect that device.
+  fake_active_host_->SetActiveHostDisconnected();
+  EXPECT_EQ(2u, fake_operation_factory_->num_created());
+  EXPECT_EQ(2u, fake_operation_factory_->num_deleted());
+  VerifyTimerRunning(false /* is_running */);
+}
+
+TEST_F(KeepAliveSchedulerTest, TestSendTickle_MultipleActiveHosts) {
+  EXPECT_FALSE(fake_operation_factory_->num_created());
+  EXPECT_FALSE(fake_operation_factory_->num_deleted());
+  VerifyTimerRunning(false /* is_running */);
+
+  // Start connecting to a device. No operation should be started.
+  fake_active_host_->SetActiveHostConnecting(test_devices_[0].GetDeviceId());
+  EXPECT_FALSE(fake_operation_factory_->num_created());
+  EXPECT_FALSE(fake_operation_factory_->num_deleted());
+  VerifyTimerRunning(false /* is_running */);
+
+  // Connect to the device; the operation should be started.
+  fake_active_host_->SetActiveHostConnected(test_devices_[0].GetDeviceId(),
+                                            std::string(kWifiNetworkId));
+  EXPECT_EQ(1u, fake_operation_factory_->num_created());
+  EXPECT_EQ(test_devices_[0],
+            fake_operation_factory_->last_created()->remote_device());
+  EXPECT_FALSE(fake_operation_factory_->num_deleted());
+  VerifyTimerRunning(true /* is_running */);
+
+  // Disconnect that device before the operation is finished. It should still be
+  // deleted.
+  fake_active_host_->SetActiveHostDisconnected();
+  EXPECT_EQ(1u, fake_operation_factory_->num_created());
+  EXPECT_EQ(1u, fake_operation_factory_->num_deleted());
+  VerifyTimerRunning(false /* is_running */);
+
+  // Start connecting to a different. No operation should be started.
+  fake_active_host_->SetActiveHostConnecting(test_devices_[1].GetDeviceId());
+  EXPECT_EQ(1u, fake_operation_factory_->num_created());
+  EXPECT_EQ(1u, fake_operation_factory_->num_deleted());
+  VerifyTimerRunning(false /* is_running */);
+
+  // Connect to the second device; the operation should be started.
+  fake_active_host_->SetActiveHostConnected(test_devices_[1].GetDeviceId(),
+                                            std::string(kWifiNetworkId));
+  EXPECT_EQ(2u, fake_operation_factory_->num_created());
+  EXPECT_EQ(test_devices_[1],
+            fake_operation_factory_->last_created()->remote_device());
+  EXPECT_EQ(1u, fake_operation_factory_->num_deleted());
+  VerifyTimerRunning(true /* is_running */);
+
+  // Ensure that once the second operation is finished, it is deleted.
+  fake_operation_factory_->last_created()->SendOperationFinishedEvent();
+  EXPECT_EQ(2u, fake_operation_factory_->num_created());
+  EXPECT_EQ(2u, fake_operation_factory_->num_deleted());
+  VerifyTimerRunning(true /* is_running */);
+
+  // Disconnect that device.
+  fake_active_host_->SetActiveHostDisconnected();
+  EXPECT_EQ(2u, fake_operation_factory_->num_created());
+  EXPECT_EQ(2u, fake_operation_factory_->num_deleted());
+  VerifyTimerRunning(false /* is_running */);
+}
+
+}  // namespace tether
+
+}  // namespace cryptauth
diff --git a/components/constrained_window/OWNERS b/components/constrained_window/OWNERS
index 8b25c36..299ed89d5 100644
--- a/components/constrained_window/OWNERS
+++ b/components/constrained_window/OWNERS
@@ -1,3 +1,5 @@
 gbillock@chromium.org
 msw@chromium.org
 wittman@chromium.org
+
+# COMPONENT: Internals>Views
diff --git a/components/exo/shell_surface.cc b/components/exo/shell_surface.cc
index 00a36da..8b61a9d 100644
--- a/components/exo/shell_surface.cc
+++ b/components/exo/shell_surface.cc
@@ -496,9 +496,22 @@
         << "Only a window in SystemModalContainer can change the modality";
     return;
   }
+
+  if (system_modal == system_modal_)
+    return;
+
+  system_modal_ = system_modal;
+
+  if (widget_)
+    UpdateSystemModal();
+}
+
+void ShellSurface::UpdateSystemModal() {
+  DCHECK(widget_);
+  DCHECK_EQ(container_, ash::kShellWindowId_SystemModalContainer);
   widget_->GetNativeWindow()->SetProperty(
       aura::client::kModalKey,
-      system_modal ? ui::MODAL_TYPE_SYSTEM : ui::MODAL_TYPE_NONE);
+      system_modal_ ? ui::MODAL_TYPE_SYSTEM : ui::MODAL_TYPE_NONE);
 }
 
 // static
@@ -766,6 +779,8 @@
       DCHECK(!widget_->IsVisible());
       pending_show_widget_ = false;
       widget_->Show();
+      if (container_ == ash::kShellWindowId_SystemModalContainer)
+        UpdateSystemModal();
     }
   }
 }
diff --git a/components/exo/shell_surface.h b/components/exo/shell_surface.h
index 74ff30d..b090caea 100644
--- a/components/exo/shell_surface.h
+++ b/components/exo/shell_surface.h
@@ -307,6 +307,9 @@
   // |pending_shadow_content_bounds_|.
   void UpdateShadow();
 
+  // Applies |system_modal_| to |widget_|.
+  void UpdateSystemModal();
+
   views::Widget* widget_ = nullptr;
   Surface* surface_;
   aura::Window* parent_;
@@ -347,6 +350,7 @@
   int top_inset_height_ = 0;
   int pending_top_inset_height_ = 0;
   bool shadow_underlay_in_surface_ = true;
+  bool system_modal_ = false;
 
   DISALLOW_COPY_AND_ASSIGN(ShellSurface);
 };
diff --git a/components/exo/shell_surface_unittest.cc b/components/exo/shell_surface_unittest.cc
index 8ad2c3a1..988a680 100644
--- a/components/exo/shell_surface_unittest.cc
+++ b/components/exo/shell_surface_unittest.cc
@@ -471,6 +471,34 @@
   EXPECT_FALSE(ash::WmShell::Get()->IsSystemModalWindowOpen());
 }
 
+TEST_F(ShellSurfaceTest, ModalWindowSetSystemModalBeforeCommit) {
+  std::unique_ptr<Surface> surface(new Surface);
+  std::unique_ptr<ShellSurface> shell_surface(new ShellSurface(
+      surface.get(), nullptr, ShellSurface::BoundsMode::SHELL, gfx::Point(),
+      true, false, ash::kShellWindowId_SystemModalContainer));
+  gfx::Size desktop_size(640, 480);
+  std::unique_ptr<Buffer> desktop_buffer(
+      new Buffer(exo_test_helper()->CreateGpuMemoryBuffer(desktop_size)));
+  surface->Attach(desktop_buffer.get());
+  surface->SetInputRegion(SkRegion());
+
+  // Set SetSystemModal before any commit happens. Widget is not created at
+  // this time.
+  EXPECT_FALSE(shell_surface->GetWidget());
+  shell_surface->SetSystemModal(true);
+
+  surface->Commit();
+
+  // It is expected that modal window is shown.
+  EXPECT_TRUE(shell_surface->GetWidget());
+  EXPECT_TRUE(ash::WmShell::Get()->IsSystemModalWindowOpen());
+
+  // Now widget is created and setting modal state should be applied
+  // immediately.
+  shell_surface->SetSystemModal(false);
+  EXPECT_FALSE(ash::WmShell::Get()->IsSystemModalWindowOpen());
+}
+
 TEST_F(ShellSurfaceTest, PopupWindow) {
   Surface parent_surface;
   ShellSurface parent(&parent_surface);
diff --git a/components/offline_pages/core/background/network_quality_provider_stub.cc b/components/offline_pages/core/background/network_quality_provider_stub.cc
index aaca695..f4243af 100644
--- a/components/offline_pages/core/background/network_quality_provider_stub.cc
+++ b/components/offline_pages/core/background/network_quality_provider_stub.cc
@@ -36,6 +36,14 @@
 void NetworkQualityProviderStub::RemoveEffectiveConnectionTypeObserver(
     net::NetworkQualityEstimator::EffectiveConnectionTypeObserver* observer) {}
 
+void NetworkQualityProviderStub::AddRTTAndThroughputEstimatesObserver(
+    net::NetworkQualityEstimator::RTTAndThroughputEstimatesObserver* observer) {
+}
+
+void NetworkQualityProviderStub::RemoveRTTAndThroughputEstimatesObserver(
+    net::NetworkQualityEstimator::RTTAndThroughputEstimatesObserver* observer) {
+}
+
 net::EffectiveConnectionType
 NetworkQualityProviderStub::GetEffectiveConnectionType() const {
   return connection_type_;
diff --git a/components/offline_pages/core/background/network_quality_provider_stub.h b/components/offline_pages/core/background/network_quality_provider_stub.h
index 1c13a17..525e114 100644
--- a/components/offline_pages/core/background/network_quality_provider_stub.h
+++ b/components/offline_pages/core/background/network_quality_provider_stub.h
@@ -35,6 +35,14 @@
       net::NetworkQualityEstimator::EffectiveConnectionTypeObserver* observer)
       override;
 
+  void AddRTTAndThroughputEstimatesObserver(
+      net::NetworkQualityEstimator::RTTAndThroughputEstimatesObserver* observer)
+      override;
+
+  void RemoveRTTAndThroughputEstimatesObserver(
+      net::NetworkQualityEstimator::RTTAndThroughputEstimatesObserver* observer)
+      override;
+
   void SetEffectiveConnectionTypeForTest(net::EffectiveConnectionType type) {
     connection_type_ = type;
   }
diff --git a/components/translate/core/language_detection/chinese_script_classifier.cc b/components/translate/core/language_detection/chinese_script_classifier.cc
index f37cfe4..c34d0e6f 100644
--- a/components/translate/core/language_detection/chinese_script_classifier.cc
+++ b/components/translate/core/language_detection/chinese_script_classifier.cc
@@ -9,8 +9,8 @@
 #include <string>
 #include "base/logging.h"
 #include "base/strings/string_util.h"
+#include "third_party/icu/source/common/unicode/uniset.h"
 #include "third_party/icu/source/common/unicode/unistr.h"
-#include "third_party/icu/source/i18n/unicode/translit.h"
 
 namespace translate {
 
@@ -23,25 +23,750 @@
 }  // namespace
 
 ChineseScriptClassifier::ChineseScriptClassifier() {
-  UParseError parse_status;
-  UErrorCode status = U_ZERO_ERROR;
-  // The Transliterator IDs are defined in:
-  // third_party/icu/source/data/translit/root.txt.
+  // zh-Hans and zh-Hant codepoints extracted from:
+  // third_party/icu/source/data/translit/Hans_Hant.txt
   //
-  // Chromium keeps only a subset of these, defined in:
-  // third_party/icu/source/data/translit/root_subset.txt
-  hans2hant_.reset(icu::Transliterator::createInstance(
-      icu::UnicodeString("Hans-Hant"), UTRANS_FORWARD, parse_status, status));
-  DVLOG(1) << "Hans-Hant Transliterator initialization status: "
-           << u_errorName(status);
-  hant2hans_.reset(icu::Transliterator::createInstance(
-      icu::UnicodeString("Hant-Hans"), UTRANS_FORWARD, parse_status, status));
-  DVLOG(1) << "Hant-Hans Transliterator initialization status: "
-           << u_errorName(status);
+  // zh-Hans codepoints to be stored in a UnicodeSet for later reference.
+  const std::string& hans_codepoints =
+      "[\u4e07\u4e0e\u4e13\u4e1a\u4e1b\u4e1c"
+      "\u4e1d\u4e22\u4e24\u4e25\u4e27\u4e2a\u4e2b"
+      "\u4e30\u4e34\u4e3a\u4e3d\u4e3e\u4e49\u4e4c\u4e50"
+      "\u4e54\u4e60\u4e61\u4e66\u4e70\u4e71\u4e89"
+      "\u4e8f\u4e98\u4e9a\u4ea7\u4ea9\u4eae\u4eb2\u4eb5"
+      "\u4eb8\u4ebf\u4ec0\u4ec5\u4ec6\u4ece\u4ed1"
+      "\u4ed3\u4ed7\u4eea\u4eec\u4ef7\u4f17\u4f18\u4f1a"
+      "\u4f1b\u4f1e\u4f1f\u4f20\u4f23\u4f24\u4f25"
+      "\u4f26\u4f27\u4f2a\u4f2b\u4f53\u4f5d\u4f63\u4f65"
+      "\u4fa0\u4fa3\u4fa5\u4fa6\u4fa7\u4fa8\u4fa9"
+      "\u4faa\u4fac\u4fe3\u4fe6\u4fe8\u4fe9\u4fea\u4feb"
+      "\u4fed\u503a\u503e\u506c\u507b\u507e\u507f"
+      "\u50a5\u50a7\u50a8\u50a9\u513f\u5151\u5156\u515a"
+      "\u5170\u5173\u5174\u5179\u517b\u517d\u5181"
+      "\u5185\u5188\u518c\u5199\u519b\u519c\u51a2\u51af"
+      "\u51b1\u51b3\u51b5\u51bb\u51c4\u51c9\u51cf"
+      "\u51d1\u51db\u51e4\u51eb\u51ed\u51ef\u51fb\u51ff"
+      "\u520d\u5218\u5219\u521a\u521b\u5220\u522b"
+      "\u522c\u522d\u5239\u523d\u523f\u5240\u5242\u5250"
+      "\u5251\u5265\u5267\u529d\u529e\u52a1\u52a2"
+      "\u52a8\u52b1\u52b2\u52b3\u52bf\u52cb\u52d6\u52da"
+      "\u52e4\u5300\u5326\u532e\u533a\u533b\u534e"
+      "\u534f\u5355\u5356\u5362\u5364\u5367\u536b\u5374"
+      "\u5382\u5384\u5385\u5386\u5389\u538b\u538c"
+      "\u538d\u5390\u5395\u5398\u53a2\u53a3\u53a6\u53a8"
+      "\u53a9\u53ae\u53bf\u53c1\u53c2\u53cc\u53d8"
+      "\u53d9\u53e0\u53f7\u53f9\u53fd\u5401\u540c\u5413"
+      "\u5415\u5417\u5423\u5428\u542c\u542f\u5434"
+      "\u5450\u5452\u5453\u5455\u5456\u5457\u5458\u5459"
+      "\u545b\u545c\u548f\u5499\u549b\u549d\u54a4"
+      "\u54c4\u54cd\u54d1\u54d2\u54d3\u54d4\u54d5\u54d7"
+      "\u54d9\u54dc\u54dd\u54df\u551b\u551d\u5520"
+      "\u5521\u5522\u5524\u5555\u5567\u556c\u556d\u556e"
+      "\u5570\u5574\u5578\u5582\u55b7\u55bd\u55be"
+      "\u55eb\u55f3\u5618\u5624\u5631\u565c\u566a\u56a3"
+      "\u56e2\u56ed\u56f1\u56f4\u56f5\u56fd\u56fe"
+      "\u5706\u5723\u5739\u573a\u5742\u574f\u5757\u575a"
+      "\u575b\u575c\u575d\u575e\u575f\u5760\u5784"
+      "\u5785\u5786\u5792\u57a6\u57a9\u57ab\u57ad\u57b1"
+      "\u57b2\u57b4\u57d8\u57d9\u57da\u57ef\u5811"
+      "\u5815\u5824\u5899\u58ee\u58f0\u58f3\u58f6\u58f8"
+      "\u5904\u5907\u590d\u591f\u5934\u5938\u5939"
+      "\u593a\u5941\u5942\u594b\u5956\u5965\u5986\u5987"
+      "\u5988\u59a9\u59aa\u59ab\u59d7\u59f9\u5a04"
+      "\u5a05\u5a06\u5a07\u5a08\u5a18\u5a31\u5a32\u5a34"
+      "\u5a73\u5a74\u5a75\u5a76\u5aaa\u5abe\u5ad2"
+      "\u5ad4\u5af1\u5b37\u5b59\u5b66\u5b6a\u5b81\u5b9d"
+      "\u5b9e\u5ba0\u5ba1\u5baa\u5bab\u5bbd\u5bbe"
+      "\u5bdd\u5bf8\u5bf9\u5bfb\u5bfc\u5bff\u5c06\u5c14"
+      "\u5c18\u5c1d\u5c27\u5c34\u5c38\u5c3d\u5c42"
+      "\u5c43\u5c49\u5c4a\u5c5e\u5c61\u5c66\u5c7f\u5c81"
+      "\u5c82\u5c96\u5c97\u5c98\u5c99\u5c9a\u5c9b"
+      "\u5ca9\u5cad\u5cb3\u5cbd\u5cbf\u5cc4\u5ce1\u5ce3"
+      "\u5ce4\u5ce5\u5ce6\u5d02\u5d03\u5d04\u5d2d"
+      "\u5d58\u5d5a\u5d5d\u5dc5\u5de9\u5def\u5e01\u5e05"
+      "\u5e08\u5e0f\u5e10\u5e18\u5e1c\u5e26\u5e27"
+      "\u5e2e\u5e31\u5e3b\u5e3c\u5e42\u5e76\u5e7f\u5e84"
+      "\u5e86\u5e90\u5e91\u5e93\u5e94\u5e99\u5e9e"
+      "\u5e9f\u5ea6\u5eea\u5f00\u5f02\u5f03\u5f11\u5f20"
+      "\u5f25\u5f26\u5f2a\u5f2f\u5f39\u5f3a\u5f52"
+      "\u5f53\u5f55\u5f5d\u5f66\u5f7b\u5f84\u5f95\u5fad"
+      "\u5fc6\u5fcf\u5fe7\u5ffe\u6000\u6001\u6002"
+      "\u6003\u6004\u6005\u6006\u601c\u603b\u603c\u603f"
+      "\u604b\u6052\u6064\u6073\u6076\u6078\u6079"
+      "\u607a\u607b\u607c\u607d\u60a6\u60ab\u60ac\u60ad"
+      "\u60ae\u60af\u60ca\u60e7\u60e8\u60e9\u60eb"
+      "\u60ec\u60ed\u60ee\u60ef\u6120\u6124\u6126\u6151"
+      "\u61d1\u61d2\u61d4\u6206\u620b\u620f\u6217"
+      "\u6218\u621a\u622c\u622e\u622f\u6237\u6247\u6251"
+      "\u6263\u6267\u6269\u626a\u626b\u626c\u6270"
+      "\u6298\u629a\u629b\u629f\u62a0\u62a1\u62a2\u62a4"
+      "\u62a5\u62c5\u62d3\u62df\u62e2\u62e3\u62e5"
+      "\u62e6\u62e7\u62e8\u62e9\u6302\u631a\u631b\u631c"
+      "\u631d\u631e\u631f\u6320\u6321\u6322\u6323"
+      "\u6324\u6325\u6326\u633d\u6342\u6346\u635d\u635e"
+      "\u635f\u6361\u6362\u6363\u636e\u637b\u63b3"
+      "\u63b4\u63b7\u63b8\u63ba\u63bc\u63fd\u63fe\u63ff"
+      "\u6400\u6401\u6402\u6405\u643a\u6444\u6445"
+      "\u6446\u6447\u6448\u644a\u6484\u6491\u64b5\u64b7"
+      "\u64b8\u64ba\u64de\u6512\u654c\u655b\u6570"
+      "\u658b\u6593\u65a9\u65ad\u65c1\u65e0\u65e7\u65f6"
+      "\u65f7\u65f8\u6606\u660c\u6619\u6635\u663c"
+      "\u663d\u663e\u664b\u6652\u6653\u6654\u6655\u6656"
+      "\u6682\u66a7\u672f\u6731\u6740\u6742\u6743"
+      "\u6746\u6761\u6765\u6768\u6769\u676f\u6770\u6781"
+      "\u6784\u679e\u67a2\u67a3\u67a5\u67a7\u67a8"
+      "\u67aa\u67ab\u67ad\u67e0\u67e5\u67fd\u6800\u6805"
+      "\u6807\u6808\u6809\u680a\u680b\u680c\u680e"
+      "\u680f\u6811\u6816\u6837\u683e\u6860\u6861\u6862"
+      "\u6863\u6864\u6865\u6866\u6867\u6868\u6869"
+      "\u68a6\u68bc\u68be\u68bf\u68c0\u68c1\u68c2\u6901"
+      "\u691f\u6920\u6924\u692d\u696b\u697c\u6984"
+      "\u6985\u6987\u6988\u6989\u69a8\u69da\u69db\u69df"
+      "\u69e0\u6a2a\u6a2f\u6a31\u6a50\u6a65\u6a71"
+      "\u6a79\u6a7c\u6a90\u6aa9\u6b22\u6b24\u6b27\u6b7c"
+      "\u6b81\u6b87\u6b8b\u6b92\u6b93\u6b9a\u6ba1"
+      "\u6bb4\u6bb7\u6bc1\u6bc2\u6bd5\u6bd9\u6be1\u6bf5"
+      "\u6c07\u6c22\u6c29\u6c32\u6c47\u6c49\u6c64"
+      "\u6c79\u6c89\u6c9f\u6ca1\u6ca3\u6ca4\u6ca5\u6ca6"
+      "\u6ca7\u6ca9\u6caa\u6cbe\u6cde\u6cea\u6cf6"
+      "\u6cf7\u6cf8\u6cfa\u6cfb\u6cfc\u6cfd\u6cfe\u6d01"
+      "\u6d12\u6d3c\u6d43\u6d45\u6d46\u6d47\u6d48"
+      "\u6d4a\u6d4b\u6d4d\u6d4e\u6d4f\u6d50\u6d51\u6d52"
+      "\u6d53\u6d54\u6d5a\u6d82\u6d9b\u6d9d\u6d9e"
+      "\u6d9f\u6da0\u6da1\u6da3\u6da4\u6da6\u6da7\u6da8"
+      "\u6da9\u6dec\u6e0a\u6e0c\u6e0d\u6e0e\u6e10"
+      "\u6e11\u6e14\u6e17\u6e29\u6e7e\u6e7f\u6e83\u6e85"
+      "\u6e86\u6ed7\u6eda\u6ede\u6edf\u6ee0\u6ee1"
+      "\u6ee2\u6ee4\u6ee5\u6ee6\u6ee8\u6ee9\u6eea\u6f13"
+      "\u6f24\u6f46\u6f47\u6f4b\u6f4d\u6f5c\u6f74"
+      "\u6f9c\u6fd1\u6fd2\u704f\u706d\u706f\u7075\u707e"
+      "\u707f\u7080\u7089\u7096\u709c\u709d\u70ad"
+      "\u70b9\u70bc\u70bd\u70c1\u70c2\u70c3\u70db\u70e6"
+      "\u70e7\u70e8\u70e9\u70eb\u70ec\u70ed\u7115"
+      "\u7116\u7118\u7130\u7174\u718f\u7194\u7231\u7237"
+      "\u724d\u7266\u7275\u727a\u728a\u72b6\u72b7"
+      "\u72b8\u72b9\u72c8\u72dd\u72de\u72ec\u72ed\u72ee"
+      "\u72ef\u72f0\u72f1\u72f2\u7303\u730e\u7315"
+      "\u7321\u732a\u732b\u732c\u732e\u736d\u7391\u739a"
+      "\u739b\u73ae\u73af\u73b0\u73b1\u73ba\u73d0"
+      "\u73d1\u73f0\u73f2\u7403\u7405\u740f\u7410\u743c"
+      "\u7476\u7477\u748e\u74d2\u74ee\u74ef\u7535"
+      "\u753b\u7545\u7574\u7596\u7597\u759f\u75a0\u75a1"
+      "\u75ac\u75ad\u75ae\u75af\u75b1\u75b4\u75c8"
+      "\u75c9\u75d2\u75d6\u75e8\u75ea\u75eb\u7605\u7606"
+      "\u7617\u7618\u762a\u762b\u763e\u763f\u765e"
+      "\u7663\u766b\u7682\u7691\u76b1\u76b2\u76cf\u76d0"
+      "\u76d1\u76d6\u76d7\u76d8\u770d\u772c\u772f"
+      "\u7741\u7750\u7751\u777e\u7786\u7792\u77a9\u77eb"
+      "\u77f6\u77fe\u77ff\u7800\u7801\u7816\u7817"
+      "\u781a\u781c\u783a\u783b\u783e\u7840\u7841\u7855"
+      "\u7856\u7857\u7859\u786e\u7877\u788d\u789b"
+      "\u789c\u78b1\u78f7\u7934\u793c\u7943\u794e\u7962"
+      "\u796f\u7977\u7978\u7980\u7984\u7985\u79bb"
+      "\u79c3\u79cd\u79d8\u79ef\u79f0\u79fd\u79fe\u7a06"
+      "\u7a0e\u7a23\u7a33\u7a51\u7a77\u7a83\u7a8d"
+      "\u7a8e\u7a91\u7a9c\u7a9d\u7aa5\u7aa6\u7aad\u7ad6"
+      "\u7ade\u7b03\u7b0b\u7b14\u7b15\u7b3a\u7b3c"
+      "\u7b3e\u7b51\u7b5a\u7b5b\u7b5c\u7b5d\u7b79\u7b7c"
+      "\u7b7e\u7b80\u7b93\u7ba6\u7ba7\u7ba8\u7ba9"
+      "\u7baa\u7bab\u7bd1\u7bd3\u7bea\u7bee\u7bf1\u7c16"
+      "\u7c41\u7c74\u7c7b\u7c7c\u7c9c\u7c9d\u7ca4"
+      "\u7caa\u7cae\u7cc1\u7cc7\u7cdf\u7d27\u7d77\u7e9f"
+      "\u7ea0\u7ea1\u7ea2\u7ea3\u7ea4\u7ea5\u7ea6"
+      "\u7ea7\u7ea8\u7ea9\u7eaa\u7eab\u7eac\u7ead\u7eae"
+      "\u7eaf\u7eb0\u7eb1\u7eb2\u7eb3\u7eb4\u7eb5"
+      "\u7eb6\u7eb7\u7eb8\u7eb9\u7eba\u7ebb\u7ebc\u7ebd"
+      "\u7ebe\u7ebf\u7ec0\u7ec1\u7ec2\u7ec3\u7ec4"
+      "\u7ec5\u7ec6\u7ec7\u7ec8\u7ec9\u7eca\u7ecb\u7ecc"
+      "\u7ecd\u7ece\u7ecf\u7ed0\u7ed1\u7ed2\u7ed3"
+      "\u7ed4\u7ed5\u7ed6\u7ed7\u7ed8\u7ed9\u7eda\u7edb"
+      "\u7edc\u7edd\u7ede\u7edf\u7ee0\u7ee1\u7ee2"
+      "\u7ee3\u7ee4\u7ee5\u7ee6\u7ee7\u7ee8\u7ee9\u7eea"
+      "\u7eeb\u7eec\u7eed\u7eee\u7eef\u7ef0\u7ef1"
+      "\u7ef2\u7ef3\u7ef4\u7ef5\u7ef6\u7ef7\u7ef8\u7ef9"
+      "\u7efa\u7efb\u7efc\u7efd\u7efe\u7eff\u7f00"
+      "\u7f01\u7f02\u7f03\u7f04\u7f05\u7f06\u7f07\u7f08"
+      "\u7f09\u7f0a\u7f0b\u7f0c\u7f0d\u7f0e\u7f0f"
+      "\u7f11\u7f12\u7f13\u7f14\u7f15\u7f16\u7f17\u7f18"
+      "\u7f19\u7f1a\u7f1b\u7f1c\u7f1d\u7f1e\u7f1f"
+      "\u7f20\u7f21\u7f22\u7f23\u7f24\u7f25\u7f26\u7f27"
+      "\u7f28\u7f29\u7f2a\u7f2b\u7f2c\u7f2d\u7f2e"
+      "\u7f2f\u7f30\u7f31\u7f32\u7f33\u7f34\u7f35\u7f42"
+      "\u7f51\u7f57\u7f5a\u7f62\u7f74\u7f81\u7f9f"
+      "\u7fa1\u7fd8\u7ff1\u8000\u8022\u8027\u8038\u8042"
+      "\u804b\u804c\u804d\u8054\u8069\u806a\u8083"
+      "\u80a0\u80a4\u80ae\u80b4\u80be\u80bf\u80c0\u80c1"
+      "\u80dc\u80e7\u80e8\u80ea\u80eb\u80f6\u8109"
+      "\u810d\u810f\u8110\u8111\u8113\u8114\u811a\u8131"
+      "\u8136\u8138\u814c\u816d\u817b\u817c\u817d"
+      "\u817e\u8191\u81bb\u81dc\u8206\u8223\u8230\u8231"
+      "\u823b\u8270\u8273\u827a\u8282\u8288\u8297"
+      "\u829c\u82a6\u82c1\u82c7\u82c8\u82cb\u82cc\u82cd"
+      "\u82cf\u8303\u830e\u830f\u8311\u8314\u8315"
+      "\u8327\u8346\u8350\u8359\u835a\u835b\u835c\u835e"
+      "\u835f\u8360\u8361\u8363\u8364\u8365\u8366"
+      "\u8367\u8368\u8369\u836a\u836b\u836c\u836d\u836e"
+      "\u836f\u8385\u83b1\u83b2\u83b3\u83b4\u83b6"
+      "\u83b7\u83b8\u83b9\u83ba\u83bc\u841d\u8424\u8425"
+      "\u8426\u8427\u8428\u8471\u8487\u8489\u848b"
+      "\u848c\u84dd\u84df\u84e0\u84e3\u84e5\u84e6\u8502"
+      "\u8511\u8537\u8539\u853a\u853c\u8570\u8572"
+      "\u8574\u85ae\u85af\u85d3\u85e4\u8616\u864f\u8651"
+      "\u865a\u866b\u866c\u866e\u867d\u867e\u867f"
+      "\u8680\u8681\u8682\u8695\u86ac\u86ca\u86ce\u86cf"
+      "\u86ee\u86f0\u86f1\u86f2\u86f3\u86f4\u8715"
+      "\u8717\u8737\u8747\u8748\u8749\u874e\u877c\u877e"
+      "\u8780\u87a8\u87cf\u8839\u8845\u8854\u8865"
+      "\u886c\u886e\u8884\u8885\u8886\u889c\u88ad\u88af"
+      "\u88c5\u88c6\u88c8\u88e2\u88e3\u88e4\u88e5"
+      "\u891b\u8934\u89c1\u89c2\u89c3\u89c4\u89c5\u89c6"
+      "\u89c7\u89c8\u89c9\u89ca\u89cb\u89cc\u89cd"
+      "\u89ce\u89cf\u89d0\u89d1\u89de\u89e6\u89ef\u8a1a"
+      "\u8a89\u8a8a\u8ba0\u8ba1\u8ba2\u8ba3\u8ba4"
+      "\u8ba5\u8ba6\u8ba7\u8ba8\u8ba9\u8baa\u8bab\u8bad"
+      "\u8bae\u8baf\u8bb0\u8bb1\u8bb2\u8bb3\u8bb4"
+      "\u8bb5\u8bb6\u8bb7\u8bb8\u8bb9\u8bba\u8bbb\u8bbc"
+      "\u8bbd\u8bbe\u8bbf\u8bc0\u8bc1\u8bc2\u8bc3"
+      "\u8bc4\u8bc5\u8bc6\u8bc7\u8bc8\u8bc9\u8bca\u8bcb"
+      "\u8bcc\u8bcd\u8bce\u8bcf\u8bd0\u8bd1\u8bd2"
+      "\u8bd3\u8bd4\u8bd5\u8bd6\u8bd7\u8bd8\u8bd9\u8bda"
+      "\u8bdb\u8bdc\u8bdd\u8bde\u8bdf\u8be0\u8be1"
+      "\u8be2\u8be3\u8be4\u8be5\u8be6\u8be7\u8be8\u8be9"
+      "\u8bea\u8beb\u8bec\u8bed\u8bee\u8bef\u8bf0"
+      "\u8bf1\u8bf2\u8bf3\u8bf4\u8bf5\u8bf6\u8bf7\u8bf8"
+      "\u8bf9\u8bfa\u8bfb\u8bfc\u8bfd\u8bfe\u8bff"
+      "\u8c00\u8c01\u8c02\u8c03\u8c04\u8c05\u8c06\u8c07"
+      "\u8c08\u8c0a\u8c0b\u8c0c\u8c0d\u8c0e\u8c0f"
+      "\u8c10\u8c11\u8c12\u8c13\u8c14\u8c15\u8c16\u8c17"
+      "\u8c18\u8c19\u8c1a\u8c1b\u8c1c\u8c1d\u8c1e"
+      "\u8c1f\u8c20\u8c21\u8c22\u8c23\u8c24\u8c25\u8c26"
+      "\u8c27\u8c28\u8c29\u8c2a\u8c2b\u8c2c\u8c2d"
+      "\u8c2e\u8c2f\u8c30\u8c31\u8c32\u8c33\u8c34\u8c35"
+      "\u8c36\u8c6e\u8d1d\u8d1e\u8d1f\u8d20\u8d21"
+      "\u8d22\u8d23\u8d24\u8d25\u8d26\u8d27\u8d28\u8d29"
+      "\u8d2a\u8d2b\u8d2c\u8d2d\u8d2e\u8d2f\u8d30"
+      "\u8d31\u8d32\u8d33\u8d34\u8d35\u8d36\u8d37\u8d38"
+      "\u8d39\u8d3a\u8d3b\u8d3c\u8d3d\u8d3e\u8d3f"
+      "\u8d40\u8d41\u8d42\u8d43\u8d44\u8d45\u8d46\u8d47"
+      "\u8d48\u8d49\u8d4a\u8d4b\u8d4c\u8d4d\u8d4e"
+      "\u8d4f\u8d50\u8d51\u8d52\u8d53\u8d54\u8d55\u8d56"
+      "\u8d57\u8d58\u8d59\u8d5a\u8d5b\u8d5c\u8d5d"
+      "\u8d5e\u8d5f\u8d60\u8d61\u8d62\u8d63\u8d6a\u8d75"
+      "\u8d76\u8d8b\u8db1\u8db8\u8dc3\u8dc4\u8dde"
+      "\u8df5\u8df6\u8df7\u8df8\u8df9\u8dfb\u8e0a\u8e0c"
+      "\u8e2a\u8e2c\u8e2f\u8e51\u8e52\u8e70\u8e7f"
+      "\u8e8f\u8e9c\u8eaf\u8f66\u8f67\u8f68\u8f69\u8f6a"
+      "\u8f6b\u8f6c\u8f6d\u8f6e\u8f6f\u8f70\u8f71"
+      "\u8f72\u8f73\u8f74\u8f75\u8f76\u8f77\u8f78\u8f79"
+      "\u8f7a\u8f7b\u8f7c\u8f7d\u8f7e\u8f7f\u8f80"
+      "\u8f81\u8f82\u8f83\u8f84\u8f85\u8f86\u8f87\u8f88"
+      "\u8f89\u8f8a\u8f8b\u8f8c\u8f8d\u8f8e\u8f8f"
+      "\u8f90\u8f91\u8f92\u8f93\u8f94\u8f95\u8f96\u8f97"
+      "\u8f98\u8f99\u8f9a\u8fa9\u8fab\u8fb9\u8fbd"
+      "\u8fbe\u8fc1\u8fc7\u8fc8\u8fd0\u8fd8\u8fd9\u8fdb"
+      "\u8fdc\u8fdd\u8fde\u8fdf\u8fe9\u8ff3\u8ff9"
+      "\u9002\u9009\u900a\u9012\u9026\u903b\u903e\u9057"
+      "\u9065\u9093\u909d\u90ac\u90ae\u90b9\u90ba"
+      "\u90bb\u90c1\u90cf\u90d0\u90d1\u90d3\u90e6\u90e7"
+      "\u90f8\u9142\u915d\u9166\u9171\u9178\u917d"
+      "\u917e\u917f\u91ca\u91cc\u9274\u92ae\u933e\u9485"
+      "\u9486\u9487\u9488\u9489\u948a\u948b\u948c"
+      "\u948d\u948e\u948f\u9490\u9491\u9492\u9493\u9494"
+      "\u9495\u9496\u9497\u9498\u9499\u949a\u949b"
+      "\u949c\u949d\u949e\u949f\u94a0\u94a1\u94a2\u94a3"
+      "\u94a4\u94a5\u94a6\u94a7\u94a8\u94a9\u94aa"
+      "\u94ab\u94ac\u94ad\u94ae\u94af\u94b0\u94b1\u94b2"
+      "\u94b3\u94b4\u94b5\u94b6\u94b7\u94b8\u94b9"
+      "\u94ba\u94bb\u94bc\u94bd\u94be\u94bf\u94c0\u94c1"
+      "\u94c2\u94c3\u94c4\u94c5\u94c6\u94c7\u94c8"
+      "\u94c9\u94ca\u94cb\u94cc\u94cd\u94ce\u94cf\u94d0"
+      "\u94d1\u94d2\u94d3\u94d4\u94d5\u94d6\u94d7"
+      "\u94d8\u94d9\u94da\u94db\u94dc\u94dd\u94de\u94df"
+      "\u94e0\u94e1\u94e2\u94e3\u94e4\u94e5\u94e6"
+      "\u94e7\u94e8\u94e9\u94ea\u94eb\u94ec\u94ed\u94ee"
+      "\u94ef\u94f0\u94f1\u94f2\u94f3\u94f4\u94f5"
+      "\u94f6\u94f7\u94f8\u94f9\u94fa\u94fb\u94fc\u94fd"
+      "\u94fe\u94ff\u9500\u9501\u9502\u9503\u9504"
+      "\u9505\u9506\u9507\u9508\u9509\u950a\u950b\u950c"
+      "\u950d\u950e\u950f\u9510\u9511\u9512\u9513"
+      "\u9514\u9515\u9516\u9517\u9518\u9519\u951a\u951b"
+      "\u951c\u951d\u951e\u951f\u9520\u9521\u9522"
+      "\u9523\u9524\u9525\u9526\u9527\u9528\u9529\u952a"
+      "\u952b\u952c\u952d\u952e\u952f\u9530\u9531"
+      "\u9532\u9533\u9534\u9535\u9536\u9537\u9538\u9539"
+      "\u953b\u953c\u953d\u953e\u953f\u9540\u9541"
+      "\u9542\u9543\u9544\u9545\u9546\u9547\u9548\u9549"
+      "\u954a\u954b\u954c\u954d\u954e\u954f\u9550"
+      "\u9551\u9552\u9553\u9554\u9556\u9557\u9558\u9559"
+      "\u955a\u955b\u955c\u955d\u955e\u955f\u9560"
+      "\u9561\u9562\u9563\u9564\u9565\u9566\u9567\u9568"
+      "\u9569\u956a\u956b\u956c\u956d\u956e\u956f"
+      "\u9570\u9571\u9572\u9573\u9574\u9575\u9576\u957f"
+      "\u95e8\u95e9\u95ea\u95eb\u95ec\u95ed\u95ee"
+      "\u95ef\u95f0\u95f1\u95f2\u95f3\u95f4\u95f5\u95f6"
+      "\u95f7\u95f8\u95f9\u95fa\u95fb\u95fc\u95fd"
+      "\u95fe\u95ff\u9600\u9601\u9602\u9603\u9604\u9605"
+      "\u9606\u9607\u9608\u9609\u960a\u960b\u960c"
+      "\u960d\u960e\u960f\u9610\u9611\u9612\u9613\u9614"
+      "\u9615\u9616\u9617\u9618\u9619\u961a\u961b"
+      "\u961f\u9633\u9634\u9635\u9636\u9640\u9645\u9646"
+      "\u9647\u9648\u9649\u9655\u9667\u9668\u9669"
+      "\u968f\u9690\u96b6\u96bd\u96be\u96cf\u96e0\u96f3"
+      "\u96fe\u9701\u9721\u972d\u9753\u9759\u9765"
+      "\u9791\u9792\u97af\u97e6\u97e7\u97e8\u97e9\u97ea"
+      "\u97eb\u97ec\u97f5\u9875\u9876\u9877\u9878"
+      "\u9879\u987a\u987b\u987c\u987d\u987e\u987f\u9880"
+      "\u9881\u9882\u9883\u9884\u9885\u9886\u9887"
+      "\u9888\u9889\u988a\u988b\u988c\u988d\u988e\u988f"
+      "\u9890\u9891\u9892\u9893\u9894\u9895\u9896"
+      "\u9897\u9898\u9899\u989a\u989b\u989c\u989d\u989e"
+      "\u989f\u98a0\u98a1\u98a2\u98a4\u98a5\u98a6"
+      "\u98a7\u98ce\u98cf\u98d0\u98d1\u98d2\u98d3\u98d4"
+      "\u98d5\u98d6\u98d7\u98d8\u98d9\u98da\u98de"
+      "\u98e8\u990d\u9963\u9964\u9965\u9966\u9967\u9968"
+      "\u9969\u996a\u996b\u996c\u996d\u996e\u996f"
+      "\u9970\u9971\u9972\u9973\u9974\u9975\u9976\u9977"
+      "\u9978\u9979\u997a\u997b\u997c\u997d\u997e"
+      "\u997f\u9981\u9982\u9983\u9984\u9985\u9986\u9987"
+      "\u9988\u9989\u998a\u998b\u998c\u998d\u998e"
+      "\u998f\u9990\u9991\u9992\u9993\u9994\u9995\u9a6c"
+      "\u9a6d\u9a6e\u9a6f\u9a70\u9a71\u9a72\u9a73"
+      "\u9a74\u9a75\u9a76\u9a77\u9a78\u9a79\u9a7a\u9a7b"
+      "\u9a7c\u9a7d\u9a7e\u9a7f\u9a80\u9a81\u9a82"
+      "\u9a83\u9a84\u9a85\u9a86\u9a87\u9a88\u9a89\u9a8a"
+      "\u9a8b\u9a8c\u9a8d\u9a8e\u9a8f\u9a90\u9a91"
+      "\u9a92\u9a93\u9a94\u9a95\u9a96\u9a97\u9a98\u9a99"
+      "\u9a9a\u9a9b\u9a9c\u9a9d\u9a9e\u9a9f\u9aa0"
+      "\u9aa1\u9aa2\u9aa3\u9aa4\u9aa5\u9aa6\u9aa7\u9ac5"
+      "\u9acb\u9acc\u9b13\u9b47\u9b49\u9c7c\u9c7d"
+      "\u9c7e\u9c7f\u9c80\u9c81\u9c82\u9c83\u9c84\u9c85"
+      "\u9c86\u9c87\u9c88\u9c89\u9c8a\u9c8b\u9c8c"
+      "\u9c8d\u9c8e\u9c8f\u9c90\u9c91\u9c92\u9c93\u9c94"
+      "\u9c95\u9c96\u9c97\u9c98\u9c99\u9c9a\u9c9b"
+      "\u9c9c\u9c9d\u9c9e\u9c9f\u9ca0\u9ca1\u9ca2\u9ca3"
+      "\u9ca4\u9ca5\u9ca6\u9ca7\u9ca8\u9ca9\u9caa"
+      "\u9cab\u9cac\u9cad\u9cae\u9caf\u9cb0\u9cb1\u9cb2"
+      "\u9cb3\u9cb4\u9cb5\u9cb6\u9cb7\u9cb8\u9cb9"
+      "\u9cba\u9cbb\u9cbc\u9cbd\u9cbe\u9cbf\u9cc0\u9cc1"
+      "\u9cc2\u9cc3\u9cc4\u9cc5\u9cc6\u9cc7\u9cc8"
+      "\u9cc9\u9cca\u9ccb\u9ccc\u9ccd\u9cce\u9ccf\u9cd0"
+      "\u9cd1\u9cd2\u9cd3\u9cd4\u9cd5\u9cd6\u9cd7"
+      "\u9cd8\u9cd9\u9cda\u9cdb\u9cdc\u9cdd\u9cde\u9cdf"
+      "\u9ce0\u9ce1\u9ce2\u9ce3\u9e1f\u9e20\u9e21"
+      "\u9e22\u9e23\u9e24\u9e25\u9e26\u9e27\u9e28\u9e29"
+      "\u9e2a\u9e2b\u9e2c\u9e2d\u9e2e\u9e2f\u9e30"
+      "\u9e31\u9e32\u9e33\u9e34\u9e35\u9e36\u9e37\u9e38"
+      "\u9e39\u9e3a\u9e3b\u9e3c\u9e3d\u9e3e\u9e3f"
+      "\u9e40\u9e41\u9e42\u9e43\u9e44\u9e45\u9e46\u9e47"
+      "\u9e48\u9e49\u9e4a\u9e4b\u9e4c\u9e4d\u9e4e"
+      "\u9e4f\u9e50\u9e51\u9e52\u9e53\u9e54\u9e55\u9e56"
+      "\u9e57\u9e58\u9e59\u9e5a\u9e5b\u9e5c\u9e5d"
+      "\u9e5e\u9e5f\u9e60\u9e61\u9e62\u9e63\u9e64\u9e65"
+      "\u9e66\u9e67\u9e68\u9e69\u9e6a\u9e6b\u9e6c"
+      "\u9e6d\u9e6f\u9e70\u9e71\u9e72\u9e73\u9e74\u9e7e"
+      "\u9ea6\u9eb8\u9ebb\u9ec4\u9ec9\u9ee1\u9ee9"
+      "\u9eea\u9efe\u9f0b\u9f0d\u9f17\u9f39\u9f50\u9f51"
+      "\u9f7f\u9f80\u9f81\u9f82\u9f83\u9f84\u9f85"
+      "\u9f86\u9f87\u9f88\u9f89\u9f8a\u9f8b\u9f8c\u9f99"
+      "\u9f9a\u9f9b\u9f9f]";
+  const std::string& hant_codepoints =
+      "[\u003b\u4e1f\u4e26\u4e82\u4e99\u4e9e\u4efd\u4f47"
+      "\u4f48\u4f54\u4f57\u4f75\u4f86\u4f96\u4fb6"
+      "\u4fb7\u4fc1\u4fc2\u4fd4\u4fe0\u4fec\u4ff1\u5000"
+      "\u5006\u5008\u5009\u500b\u5011\u5016\u5021"
+      "\u5023\u502b\u5049\u5074\u5075\u507d\u5091\u5096"
+      "\u5098\u5099\u50a2\u50ad\u50af\u50b3\u50b4"
+      "\u50b5\u50b7\u50be\u50c2\u50c5\u50c7\u50c9\u50cf"
+      "\u50d1\u50d5\u50de\u50e5\u50e8\u50f1\u50f9"
+      "\u5100\u5102\u5104\u5108\u5109\u5110\u5114\u5115"
+      "\u5118\u511f\u512a\u5132\u5137\u5138\u513a"
+      "\u513b\u513c\u5147\u514c\u5152\u5157\u5169\u518a"
+      "\u51aa\u51c8\u51cd\u51dc\u51f1\u5225\u522a"
+      "\u5244\u5247\u524b\u524e\u5257\u525b\u525d\u526e"
+      "\u5274\u5275\u5277\u5283\u5287\u5289\u528a"
+      "\u528c\u528d\u528f\u5291\u529a\u52c1\u52d5\u52d7"
+      "\u52d9\u52db\u52dd\u52de\u52e2\u52e9\u52f1"
+      "\u52f3\u52f5\u52f8\u52fb\u532d\u532f\u5331\u5340"
+      "\u5354\u5379\u537b\u5399\u53a0\u53ad\u53b2"
+      "\u53b4\u53c3\u53c4\u53e2\u540b\u5412\u5422\u5433"
+      "\u5436\u5442\u54b7\u54bc\u54e1\u5504\u551a"
+      "\u5538\u554f\u5553\u555e\u555f\u5562\u558e\u559a"
+      "\u55a8\u55aa\u55ab\u55ac\u55ae\u55b2\u55c6"
+      "\u55c7\u55ca\u55ce\u55da\u55e9\u55f6\u5606\u560d"
+      "\u5614\u5616\u5617\u561c\u5629\u562e\u562f"
+      "\u5630\u5635\u5638\u563d\u5653\u565a\u565d\u5660"
+      "\u5665\u5666\u566f\u5672\u5674\u5678\u5679"
+      "\u5680\u5687\u568c\u5690\u5695\u5699\u56a5\u56a6"
+      "\u56a8\u56ae\u56b2\u56b3\u56b4\u56b6\u56c0"
+      "\u56c1\u56c2\u56c5\u56c8\u56c9\u56cd\u56d1\u56d3"
+      "\u56ea\u5707\u570b\u570d\u5712\u5713\u5716"
+      "\u5718\u57b5\u57e1\u57f0\u57f7\u5805\u580a\u5816"
+      "\u581d\u582f\u5831\u5834\u584a\u584b\u584f"
+      "\u5852\u5857\u585a\u5862\u5864\u5875\u5879\u588a"
+      "\u589c\u58ae\u58b3\u58bb\u58be\u58c7\u58cb"
+      "\u58ce\u58d3\u58d8\u58d9\u58da\u58dc\u58de\u58df"
+      "\u58e0\u58e2\u58e9\u58ef\u58fa\u58fc\u58fd"
+      "\u5920\u5922\u5925\u593e\u5950\u5967\u5969\u596a"
+      "\u596c\u596e\u597c\u599d\u59ca\u59cd\u59e6"
+      "\u59ea\u5a1b\u5a41\u5a66\u5a6d\u5aa7\u5aaf\u5abc"
+      "\u5abd\u5acb\u5ad7\u5af5\u5afb\u5aff\u5b00"
+      "\u5b08\u5b0b\u5b0c\u5b19\u5b1d\u5b21\u5b24\u5b2a"
+      "\u5b30\u5b38\u5b43\u5b4c\u5b6b\u5b78\u5b7f"
+      "\u5bae\u5bdf\u5be2\u5be6\u5be7\u5be9\u5beb\u5bec"
+      "\u5bf5\u5bf6\u5c05\u5c07\u5c08\u5c0b\u5c0d"
+      "\u5c0e\u5c37\u5c46\u5c4d\u5c53\u5c5c\u5c62\u5c64"
+      "\u5c68\u5c6c\u5ca1\u5cf4\u5cf6\u5cfd\u5d0d"
+      "\u5d11\u5d17\u5d19\u5d22\u5d2c\u5d50\u5d81\u5d84"
+      "\u5d87\u5d94\u5d97\u5da0\u5da2\u5da7\u5dae"
+      "\u5db4\u5db8\u5dba\u5dbc\u5dbd\u5dcb\u5dd2\u5dd4"
+      "\u5dd6\u5df0\u5e25\u5e2b\u5e33\u5e36\u5e40"
+      "\u5e43\u5e57\u5e58\u5e5f\u5e63\u5e6b\u5e6c\u5e79"
+      "\u5e7e\u5eab\u5ec1\u5ec2\u5ec4\u5ec8\u5eda"
+      "\u5edd\u5edf\u5ee0\u5ee1\u5ee2\u5ee3\u5ee9\u5eec"
+      "\u5ef3\u5efb\u5f12\u5f14\u5f33\u5f35\u5f37"
+      "\u5f46\u5f48\u5f4c\u5f4e\u5f59\u5f5e\u5f65\u5f7f"
+      "\u5f8c\u5f91\u5f9e\u5fa0\u5fa9\u5fac\u5fb9"
+      "\u6035\u6046\u6065\u6085\u609e\u60b3\u60b5\u60b6"
+      "\u60bd\u60e1\u60f1\u60f2\u60fb\u611b\u611c"
+      "\u6128\u6134\u6137\u613e\u6144\u6147\u614b\u614d"
+      "\u6158\u615a\u615f\u6163\u6164\u616a\u616b"
+      "\u616e\u6173\u6176\u617c\u617e\u6182\u618a\u6190"
+      "\u6191\u6192\u619a\u61a4\u61ab\u61ae\u61b2"
+      "\u61b6\u61c3\u61c7\u61c9\u61cc\u61cd\u61de\u61df"
+      "\u61e3\u61e8\u61ee\u61f2\u61f6\u61f7\u61f8"
+      "\u61fa\u61fc\u61fe\u6200\u6207\u6214\u6227\u6229"
+      "\u6230\u6231\u6232\u6236\u62cb\u6329\u633e"
+      "\u6368\u636b\u6372\u6383\u6384\u6397\u6399\u639b"
+      "\u63a1\u63c0\u63da\u63db\u63ee\u6406\u640d"
+      "\u6416\u6417\u6425\u6427\u6428\u6435\u6436\u643e"
+      "\u6440\u6451\u645c\u645f\u646f\u6473\u6476"
+      "\u647a\u647b\u6488\u648f\u6490\u6493\u649a\u649d"
+      "\u649f\u64a2\u64a3\u64a5\u64ab\u64b2\u64b3"
+      "\u64bb\u64be\u64bf\u64c1\u64c4\u64c7\u64ca\u64cb"
+      "\u64d3\u64d4\u64da\u64e0\u64e3\u64ec\u64ef"
+      "\u64f0\u64f1\u64f2\u64f4\u64f7\u64fa\u64fb\u64fc"
+      "\u64fe\u6504\u6506\u650f\u6514\u6516\u6519"
+      "\u651b\u651c\u651d\u6522\u6523\u6524\u652a\u652c"
+      "\u6557\u6558\u6575\u6578\u6582\u6583\u6595"
+      "\u65ac\u65b7\u65bc\u6607\u6642\u6649\u665d\u6688"
+      "\u6689\u6698\u66a2\u66ab\u66b1\u66c4\u66c6"
+      "\u66c7\u66c9\u66cf\u66d6\u66e0\u66e8\u66ec\u66f8"
+      "\u6703\u6727\u6756\u6771\u6792\u67f5\u687f"
+      "\u6894\u6898\u689d\u689f\u68b2\u68c4\u68d6\u68d7"
+      "\u68df\u68e7\u68f2\u68f6\u690f\u694a\u6953"
+      "\u6968\u696d\u6975\u6996\u69aa\u69ae\u69b2\u69bf"
+      "\u69cb\u69cd\u69d3\u69d6\u69e4\u69e7\u69e8"
+      "\u69f3\u6a01\u6a02\u6a05\u6a11\u6a13\u6a19\u6a1e"
+      "\u6a23\u6a38\u6a39\u6a3a\u6a48\u6a4b\u6a5f"
+      "\u6a62\u6a6b\u6a81\u6a89\u6a94\u6a9c\u6a9d\u6a9f"
+      "\u6aa2\u6aa3\u6aae\u6aaf\u6ab3\u6ab8\u6abb"
+      "\u6ad3\u6ada\u6adb\u6add\u6ade\u6adf\u6ae5\u6ae7"
+      "\u6ae8\u6aea\u6aeb\u6aec\u6af1\u6af3\u6af8"
+      "\u6afa\u6afb\u6b04\u6b0a\u6b0f\u6b12\u6b16\u6b1e"
+      "\u6b35\u6b3d\u6b4e\u6b50\u6b5b\u6b5f\u6b61"
+      "\u6b72\u6b77\u6b78\u6b7f\u6b98\u6b9e\u6ba4\u6ba8"
+      "\u6bab\u6bae\u6baf\u6bb0\u6bb2\u6bba\u6bbb"
+      "\u6bbc\u6bc0\u6bc6\u6bec\u6bff\u6c02\u6c08\u6c0c"
+      "\u6c23\u6c2b\u6c2c\u6c33\u6c39\u6c3e\u6c4e"
+      "\u6c59\u6c7a\u6c8d\u6c92\u6c96\u6cc1\u6d29\u6d36"
+      "\u6d79\u6d87\u6dbc\u6dd2\u6dda\u6de5\u6dea"
+      "\u6df5\u6df6\u6dfa\u6e19\u6e1b\u6e26\u6e2c\u6e3e"
+      "\u6e4a\u6e5e\u6e67\u6e6f\u6e88\u6e96\u6e9d"
+      "\u6eab\u6ebc\u6ec4\u6ec5\u6ecc\u6ece\u6eec\u6eef"
+      "\u6ef2\u6ef7\u6ef8\u6efb\u6efe\u6eff\u6f01"
+      "\u6f1a\u6f22\u6f23\u6f2c\u6f32\u6f35\u6f38\u6f3f"
+      "\u6f41\u6f51\u6f54\u6f59\u6f5b\u6f64\u6f6f"
+      "\u6f70\u6f77\u6f7f\u6f80\u6f86\u6f87\u6f97\u6fa0"
+      "\u6fa4\u6fa6\u6fa9\u6fae\u6fb1\u6fc1\u6fc3"
+      "\u6fd5\u6fd8\u6fdf\u6fe4\u6feb\u6fec\u6ff0\u6ff1"
+      "\u6ffa\u6ffc\u6ffe\u7005\u7006\u7007\u7009"
+      "\u700b\u700f\u7015\u7018\u701d\u701f\u7020\u7026"
+      "\u7027\u7028\u7030\u7032\u703e\u7043\u7044"
+      "\u7051\u7055\u7058\u705d\u7060\u7063\u7064\u7067"
+      "\u707d\u70ba\u70cf\u70f4\u7120\u7121\u7149"
+      "\u7152\u7159\u7162\u7165\u7169\u716c\u7171\u7185"
+      "\u7192\u7197\u71b1\u71b2\u71be\u71c1\u71c4"
+      "\u71c8\u71c9\u71d0\u71d2\u71d9\u71dc\u71df\u71e6"
+      "\u71ec\u71ed\u71f4\u71f6\u71fb\u71fc\u71fe"
+      "\u71ff\u720d\u7210\u721b\u722d\u7232\u723a\u723e"
+      "\u7240\u7246\u724b\u7258\u727d\u7296\u72a2"
+      "\u72a7\u72c0\u72f9\u72fd\u7319\u7336\u733b\u7341"
+      "\u7343\u7344\u7345\u734e\u7368\u736a\u736b"
+      "\u736e\u7370\u7371\u7372\u7375\u7377\u7378\u737a"
+      "\u737b\u737c\u7380\u73fe\u743a\u743f\u744b"
+      "\u7452\u7463\u7464\u7469\u746a\u746f\u7472\u7489"
+      "\u74a3\u74a6\u74ab\u74b0\u74bd\u74ca\u74cf"
+      "\u74d4\u74da\u750c\u7515\u751a\u7522\u7523\u755d"
+      "\u7562\u756b\u7570\u7576\u7587\u758a\u75c0"
+      "\u75d9\u75e0\u75fe\u7602\u760b\u760d\u7613\u761e"
+      "\u7621\u7627\u762e\u7632\u763a\u763b\u7642"
+      "\u7646\u7647\u7649\u7652\u7658\u765f\u7661\u7662"
+      "\u7664\u7665\u7667\u7669\u766c\u766d\u766e"
+      "\u7670\u7671\u7672\u767c\u7681\u769a\u76b0\u76b8"
+      "\u76ba\u76c3\u76dc\u76de\u76e1\u76e3\u76e4"
+      "\u76e7\u76ea\u7725\u773e\u774f\u775c\u775e\u776a"
+      "\u7787\u7798\u779c\u779e\u77ad\u77b6\u77bc"
+      "\u77d3\u77da\u77ef\u7802\u7832\u7843\u785c\u7864"
+      "\u7868\u786f\u78a9\u78ad\u78b3\u78b8\u78ba"
+      "\u78bc\u78d1\u78da\u78e3\u78e7\u78ef\u78fd\u7906"
+      "\u790e\u7919\u7921\u7926\u792a\u792b\u792c"
+      "\u792e\u7931\u7955\u797f\u798d\u798e\u7995\u79a1"
+      "\u79a6\u79aa\u79ae\u79b0\u79b1\u79bf\u79c8"
+      "\u7a05\u7a08\u7a0f\u7a1c\u7a1f\u7a2e\u7a31\u7a40"
+      "\u7a4c\u7a4d\u7a4e\u7a60\u7a61\u7a62\u7a69"
+      "\u7a6b\u7a6d\u7aa9\u7aaa\u7aae\u7aaf\u7ab5\u7ab6"
+      "\u7aba\u7ac4\u7ac5\u7ac7\u7ac8\u7aca\u7aea"
+      "\u7af6\u7b46\u7b4d\u7b67\u7b74\u7b87\u7b8b\u7b8e"
+      "\u7b8f\u7b9d\u7bc0\u7bc4\u7bc9\u7bcb\u7bd4"
+      "\u7be4\u7be9\u7bf3\u7c00\u7c06\u7c0d\u7c1e\u7c21"
+      "\u7c23\u7c2b\u7c37\u7c39\u7c3d\u7c3e\u7c43"
+      "\u7c4c\u7c50\u7c59\u7c5c\u7c5f\u7c60\u7c64\u7c69"
+      "\u7c6a\u7c6c\u7c6e\u7c72\u7ca7\u7cb5\u7cdd"
+      "\u7cde\u7ce7\u7cf0\u7cf2\u7cf4\u7cf6\u7cf9\u7cfe"
+      "\u7d00\u7d02\u7d04\u7d05\u7d06\u7d07\u7d08"
+      "\u7d09\u7d0b\u7d0d\u7d10\u7d13\u7d14\u7d15\u7d16"
+      "\u7d17\u7d18\u7d19\u7d1a\u7d1b\u7d1c\u7d1d"
+      "\u7d21\u7d2c\u7d2e\u7d30\u7d31\u7d32\u7d33\u7d35"
+      "\u7d39\u7d3a\u7d3c\u7d3f\u7d40\u7d42\u7d43"
+      "\u7d44\u7d45\u7d46\u7d4e\u7d50\u7d55\u7d5b\u7d5d"
+      "\u7d5e\u7d61\u7d62\u7d66\u7d68\u7d70\u7d71"
+      "\u7d72\u7d73\u7d76\u7d79\u7d81\u7d83\u7d86\u7d88"
+      "\u7d89\u7d8c\u7d8f\u7d90\u7d91\u7d93\u7d9c"
+      "\u7d9e\u7da0\u7da2\u7da3\u7dab\u7dac\u7dad\u7daf"
+      "\u7db0\u7db1\u7db2\u7db3\u7db4\u7db5\u7db8"
+      "\u7db9\u7dba\u7dbb\u7dbd\u7dbe\u7dbf\u7dc4\u7dc7"
+      "\u7dca\u7dcb\u7dd1\u7dd2\u7dd3\u7dd4\u7dd7"
+      "\u7dd8\u7dd9\u7dda\u7ddd\u7dde\u7de0\u7de1\u7de3"
+      "\u7de6\u7de8\u7de9\u7dec\u7def\u7df1\u7df2"
+      "\u7df4\u7df6\u7df9\u7dfb\u7e08\u7e09\u7e0a\u7e0b"
+      "\u7e10\u7e11\u7e15\u7e17\u7e1b\u7e1d\u7e1e"
+      "\u7e1f\u7e23\u7e27\u7e2b\u7e2d\u7e2e\u7e31\u7e32"
+      "\u7e33\u7e34\u7e35\u7e36\u7e37\u7e39\u7e3d"
+      "\u7e3e\u7e43\u7e45\u7e46\u7e47\u7e52\u7e54\u7e55"
+      "\u7e5a\u7e5e\u7e61\u7e62\u7e69\u7e6a\u7e6b"
+      "\u7e6d\u7e6e\u7e6f\u7e70\u7e73\u7e78\u7e79\u7e7c"
+      "\u7e7d\u7e7e\u7e7f\u7e88\u7e8a\u7e8c\u7e8d"
+      "\u7e8f\u7e93\u7e94\u7e98\u7e9c\u7f3d\u7f48\u7f4c"
+      "\u7f4e\u7f63\u7f70\u7f75\u7f77\u7f85\u7f86"
+      "\u7f88\u7f8b\u7fa3\u7fa5\u7fa8\u7fa9\u7fb6\u7fd2"
+      "\u7feb\u7ff9\u7ffa\u802c\u802e\u8056\u805e"
+      "\u806f\u8070\u8072\u8073\u8075\u8076\u8077\u8079"
+      "\u807d\u807e\u8085\u8105\u8108\u811b\u8123"
+      "\u812b\u8139\u814e\u8156\u8161\u8166\u816b\u8173"
+      "\u8178\u8183\u819a\u81a0\u81a9\u81bd\u81be"
+      "\u81bf\u81c9\u81cd\u81cf\u81d8\u81da\u81df\u81e0"
+      "\u81e2\u81e5\u81e8\u81fa\u8207\u8208\u8209"
+      "\u820a\u8216\u8259\u8264\u8266\u826b\u8271\u8277"
+      "\u82bb\u8332\u834a\u8373\u838a\u8396\u83a2"
+      "\u83a7\u83d3\u83ef\u83f8\u8407\u840a\u842c\u8435"
+      "\u8449\u8452\u8464\u8466\u846f\u8477\u8490"
+      "\u8493\u8494\u849e\u84bc\u84c0\u84c6\u84cb\u84ee"
+      "\u84ef\u84fd\u8514\u851e\u8523\u8525\u8526"
+      "\u852d\u8534\u8541\u8546\u854e\u8552\u8553\u8555"
+      "\u8558\u8562\u8569\u856a\u856d\u8577\u8580"
+      "\u8588\u858a\u858c\u8591\u8594\u8598\u859f\u85a6"
+      "\u85a9\u85b0\u85b3\u85b4\u85ba\u85cd\u85ce"
+      "\u85dd\u85e5\u85ea\u85f4\u85f6\u85f7\u85f9\u85fa"
+      "\u8604\u8606\u8607\u860a\u860b\u861a\u861e"
+      "\u8622\u862d\u863a\u863f\u8646\u8655\u865b\u865c"
+      "\u865f\u8667\u866f\u86fa\u86fb\u8706\u8755"
+      "\u875f\u8766\u8768\u8778\u8784\u879e\u87a2\u87ae"
+      "\u87bb\u87bf\u87c4\u87c8\u87ce\u87e3\u87ec"
+      "\u87ef\u87f2\u87f6\u87fb\u8805\u8806\u880d\u8810"
+      "\u8811\u8814\u881f\u8823\u8827\u8828\u8831"
+      "\u8836\u883b\u8846\u884a\u8853\u8855\u885a\u885b"
+      "\u885d\u889e\u88b4\u88ca\u88cf\u88dc\u88dd"
+      "\u88e1\u88fd\u8907\u890c\u8918\u8932\u8933\u8938"
+      "\u893b\u8947\u894f\u8956\u895d\u8960\u8964"
+      "\u896a\u896c\u896f\u8972\u8988\u898b\u898e\u898f"
+      "\u8993\u8996\u8998\u89a1\u89a5\u89a6\u89aa"
+      "\u89ac\u89af\u89b2\u89b7\u89ba\u89bd\u89bf\u89c0"
+      "\u89f4\u89f6\u89f8\u8a01\u8a02\u8a03\u8a08"
+      "\u8a0a\u8a0c\u8a0e\u8a10\u8a12\u8a13\u8a15\u8a16"
+      "\u8a17\u8a18\u8a1b\u8a1d\u8a1f\u8a22\u8a23"
+      "\u8a25\u8a29\u8a2a\u8a2d\u8a31\u8a34\u8a36\u8a3a"
+      "\u8a3b\u8a3c\u8a41\u8a46\u8a4e\u8a50\u8a52"
+      "\u8a54\u8a55\u8a56\u8a57\u8a58\u8a5b\u8a5e\u8a60"
+      "\u8a61\u8a62\u8a63\u8a66\u8a69\u8a6b\u8a6c"
+      "\u8a6d\u8a6e\u8a70\u8a71\u8a72\u8a73\u8a75\u8a7c"
+      "\u8a7f\u8a84\u8a85\u8a86\u8a87\u8a8c\u8a8d"
+      "\u8a91\u8a92\u8a95\u8a98\u8a9a\u8a9e\u8aa0\u8aa1"
+      "\u8aa3\u8aa4\u8aa5\u8aa6\u8aa8\u8aaa\u8aac"
+      "\u8ab0\u8ab2\u8ab6\u8ab9\u8abc\u8abe\u8abf\u8ac2"
+      "\u8ac4\u8ac7\u8ac9\u8acb\u8acd\u8acf\u8ad1"
+      "\u8ad2\u8ad6\u8ad7\u8adb\u8adc\u8add\u8ade\u8ae1"
+      "\u8ae2\u8ae4\u8ae6\u8ae7\u8aeb\u8aed\u8aee"
+      "\u8af1\u8af3\u8af6\u8af7\u8af8\u8afa\u8afc\u8afe"
+      "\u8b00\u8b01\u8b02\u8b04\u8b05\u8b0a\u8b0e"
+      "\u8b10\u8b14\u8b16\u8b17\u8b19\u8b1a\u8b1b\u8b1d"
+      "\u8b20\u8b21\u8b28\u8b2b\u8b2c\u8b2d\u8b33"
+      "\u8b39\u8b3e\u8b41\u8b45\u8b49\u8b4e\u8b4f\u8b56"
+      "\u8b58\u8b59\u8b5a\u8b5c\u8b5f\u8b6b\u8b6f"
+      "\u8b70\u8b74\u8b77\u8b78\u8b7d\u8b7e\u8b80\u8b8a"
+      "\u8b8c\u8b8e\u8b92\u8b93\u8b95\u8b96\u8b9a"
+      "\u8b9c\u8b9e\u8c48\u8c4e\u8c50\u8c54\u8c6c\u8c76"
+      "\u8c8d\u8c93\u8c99\u8c9d\u8c9e\u8c9f\u8ca0"
+      "\u8ca1\u8ca2\u8ca7\u8ca8\u8ca9\u8caa\u8cab\u8cac"
+      "\u8caf\u8cb0\u8cb2\u8cb3\u8cb4\u8cb6\u8cb7"
+      "\u8cb8\u8cba\u8cbb\u8cbc\u8cbd\u8cbf\u8cc0\u8cc1"
+      "\u8cc2\u8cc3\u8cc4\u8cc5\u8cc7\u8cc8\u8cca"
+      "\u8cd1\u8cd2\u8cd3\u8cd5\u8cd9\u8cda\u8cdc\u8cde"
+      "\u8ce0\u8ce1\u8ce2\u8ce3\u8ce4\u8ce6\u8ce7"
+      "\u8cea\u8ceb\u8cec\u8ced\u8cf0\u8cf4\u8cf5\u8cf8"
+      "\u8cfa\u8cfb\u8cfc\u8cfd\u8cfe\u8d04\u8d05"
+      "\u8d07\u8d08\u8d0a\u8d0b\u8d0d\u8d0f\u8d10\u8d13"
+      "\u8d14\u8d16\u8d17\u8d1b\u8d1c\u8d6c\u8d95"
+      "\u8d99\u8da8\u8db2\u8de1\u8de4\u8dfc\u8e10\u8e21"
+      "\u8e30\u8e34\u8e4c\u8e55\u8e5f\u8e63\u8e64"
+      "\u8e67\u8e7a\u8e82\u8e89\u8e8a\u8e8b\u8e8d\u8e91"
+      "\u8e92\u8e93\u8e95\u8e9a\u8ea1\u8ea5\u8ea6"
+      "\u8eaa\u8ec0\u8eca\u8ecb\u8ecc\u8ecd\u8ed1\u8ed2"
+      "\u8ed4\u8edb\u8edf\u8ee4\u8eeb\u8ef2\u8ef8"
+      "\u8ef9\u8efa\u8efb\u8efc\u8efe\u8f03\u8f05\u8f07"
+      "\u8f08\u8f09\u8f0a\u8f12\u8f13\u8f14\u8f15"
+      "\u8f1b\u8f1c\u8f1d\u8f1e\u8f1f\u8f25\u8f26\u8f29"
+      "\u8f2a\u8f2c\u8f2f\u8f33\u8f38\u8f3b\u8f3e"
+      "\u8f3f\u8f40\u8f42\u8f44\u8f45\u8f46\u8f49\u8f4d"
+      "\u8f4e\u8f54\u8f5d\u8f5f\u8f61\u8f62\u8f64"
+      "\u8fa6\u8fad\u8fae\u8faf\u8fb2\u8ff4\u9015\u9019"
+      "\u9023\u9031\u9032\u904a\u904b\u904e\u9054"
+      "\u9055\u9059\u905c\u905e\u9060\u9069\u906f\u9072"
+      "\u9077\u9078\u907a\u907c\u9081\u9084\u9087"
+      "\u908a\u908f\u9090\u90df\u90f5\u9106\u9109\u9112"
+      "\u9114\u9116\u9127\u912d\u9130\u9132\u9134"
+      "\u9136\u913a\u9147\u9148\u9165\u9183\u9196\u919c"
+      "\u919e\u91ab\u91ac\u91b1\u91bc\u91c0\u91c1"
+      "\u91c3\u91c5\u91cb\u91d0\u91d2\u91d3\u91d4\u91d5"
+      "\u91d7\u91d8\u91d9\u91dd\u91e3\u91e4\u91e6"
+      "\u91e7\u91e9\u91f5\u91f7\u91f9\u91fa\u9200\u9201"
+      "\u9203\u9204\u9208\u9209\u920d\u920e\u9210"
+      "\u9211\u9212\u9214\u9215\u921e\u9223\u9225\u9226"
+      "\u9227\u922e\u9230\u9233\u9234\u9237\u9238"
+      "\u9239\u923a\u923d\u923e\u923f\u9240\u9245\u9248"
+      "\u9249\u924b\u924d\u9251\u9255\u9257\u925a"
+      "\u925b\u925e\u9262\u9264\u9266\u926c\u926d\u9276"
+      "\u9278\u927a\u927b\u927f\u9283\u9285\u928d"
+      "\u9291\u9293\u9296\u9298\u929a\u929b\u929c\u92a0"
+      "\u92a3\u92a5\u92a6\u92a8\u92a9\u92aa\u92ab"
+      "\u92ac\u92b1\u92b2\u92b3\u92b7\u92b9\u92bb\u92bc"
+      "\u92c1\u92c3\u92c5\u92c7\u92cc\u92cf\u92d2"
+      "\u92d9\u92dd\u92df\u92e3\u92e4\u92e5\u92e6\u92e8"
+      "\u92e9\u92ea\u92ed\u92ee\u92ef\u92f0\u92f1"
+      "\u92f6\u92f8\u92fc\u9301\u9304\u9306\u9307\u9308"
+      "\u930f\u9310\u9312\u9315\u9318\u9319\u931a"
+      "\u931b\u931f\u9320\u9321\u9322\u9326\u9328\u9329"
+      "\u932b\u932e\u932f\u9332\u9333\u9336\u9338"
+      "\u9340\u9341\u9343\u9346\u9347\u9348\u934a\u934b"
+      "\u934d\u9354\u9358\u935a\u935b\u9360\u9364"
+      "\u9365\u9369\u936c\u9370\u9375\u9376\u937a\u937e"
+      "\u9382\u9384\u9387\u938a\u9394\u9396\u9397"
+      "\u9398\u939a\u939b\u93a1\u93a2\u93a3\u93a6\u93a7"
+      "\u93a9\u93aa\u93ac\u93ae\u93b0\u93b2\u93b3"
+      "\u93b5\u93b8\u93bf\u93c3\u93c7\u93c8\u93cc\u93cd"
+      "\u93d0\u93d1\u93d7\u93d8\u93dc\u93dd\u93de"
+      "\u93df\u93e1\u93e2\u93e4\u93e8\u93f0\u93f5\u93f7"
+      "\u93f9\u93fd\u9403\u940b\u9410\u9412\u9413"
+      "\u9414\u9418\u9419\u941d\u9420\u9426\u9427\u9428"
+      "\u942b\u942e\u9432\u9433\u9435\u9436\u9438"
+      "\u943a\u943f\u9444\u944a\u944c\u9451\u9452\u9454"
+      "\u9455\u945e\u9460\u9463\u9465\u946d\u9470"
+      "\u9471\u9472\u9477\u9479\u947c\u947d\u947e\u947f"
+      "\u9481\u9577\u9580\u9582\u9583\u9586\u9588"
+      "\u9589\u958b\u958c\u958e\u958f\u9591\u9592\u9593"
+      "\u9594\u9598\u95a1\u95a2\u95a3\u95a5\u95a7"
+      "\u95a8\u95a9\u95ab\u95ac\u95ad\u95b1\u95b2\u95b6"
+      "\u95b9\u95bb\u95bc\u95bd\u95be\u95bf\u95c3"
+      "\u95c6\u95c7\u95c8\u95ca\u95cb\u95cc\u95cd\u95d0"
+      "\u95d2\u95d3\u95d4\u95d5\u95d6\u95d8\u95dc"
+      "\u95de\u95e0\u95e1\u95e2\u95e4\u95e5\u9628\u962a"
+      "\u9658\u965d\u965e\u9663\u9670\u9673\u9678"
+      "\u967d\u9684\u9689\u968a\u968e\u9695\u969b\u96a8"
+      "\u96aa\u96b1\u96b4\u96b8\u96bb\u96cb\u96d6"
+      "\u96d9\u96db\u96dc\u96de\u96e2\u96e3\u96f2\u96fb"
+      "\u9711\u9722\u9727\u973d\u9742\u9744\u9748"
+      "\u975a\u975c\u9766\u9768\u9777\u9780\u978f\u979d"
+      "\u97a6\u97bd\u97c1\u97c3\u97c6\u97c9\u97cb"
+      "\u97cc\u97cd\u97d3\u97d9\u97dc\u97de\u97ee\u97fb"
+      "\u97ff\u9801\u9802\u9803\u9805\u9806\u9807"
+      "\u9808\u980a\u980c\u980e\u980f\u9810\u9811\u9812"
+      "\u9813\u9817\u9818\u981c\u9821\u9824\u9826"
+      "\u982d\u982e\u9830\u9832\u9834\u9837\u9838\u9839"
+      "\u983b\u983d\u9846\u984c\u984d\u984e\u984f"
+      "\u9852\u9853\u9854\u9858\u9859\u985b\u985e\u9862"
+      "\u9865\u9867\u986b\u986c\u986f\u9870\u9871"
+      "\u9873\u9874\u98a8\u98ad\u98ae\u98af\u98b1\u98b3"
+      "\u98b6\u98b8\u98ba\u98bb\u98bc\u98c0\u98c4"
+      "\u98c6\u98c8\u98db\u98e0\u98e2\u98e3\u98e5\u98e9"
+      "\u98ea\u98eb\u98ed\u98ef\u98f2\u98f4\u98fc"
+      "\u98fd\u98fe\u98ff\u9903\u9904\u9905\u9909\u990a"
+      "\u990c\u990e\u990f\u9911\u9912\u9913\u9915"
+      "\u9916\u9918\u991a\u991b\u991c\u991e\u9921\u9928"
+      "\u992c\u9931\u9933\u9935\u9936\u9937\u993a"
+      "\u993c\u993d\u993e\u993f\u9941\u9943\u9945\u9948"
+      "\u9949\u994a\u994b\u994c\u9951\u9952\u9957"
+      "\u995c\u995e\u9962\u99ac\u99ad\u99ae\u99b1\u99b3"
+      "\u99b4\u99b9\u99c1\u99d0\u99d1\u99d2\u99d4"
+      "\u99d5\u99d8\u99d9\u99db\u99dd\u99df\u99e1\u99e2"
+      "\u99ed\u99f0\u99f1\u99f8\u99ff\u9a01\u9a02"
+      "\u9a05\u9a0c\u9a0d\u9a0e\u9a0f\u9a16\u9a19\u9a24"
+      "\u9a27\u9a2b\u9a2d\u9a2e\u9a30\u9a36\u9a37"
+      "\u9a38\u9a3e\u9a40\u9a41\u9a42\u9a43\u9a44\u9a45"
+      "\u9a4a\u9a4c\u9a4d\u9a4f\u9a55\u9a57\u9a5a"
+      "\u9a5b\u9a5f\u9a62\u9a64\u9a65\u9a66\u9a6a\u9a6b"
+      "\u9aaf\u9acf\u9ad2\u9ad4\u9ad5\u9ad6\u9b00"
+      "\u9b06\u9b0d\u9b1a\u9b22\u9b25\u9b27\u9b28\u9b29"
+      "\u9b2d\u9b2e\u9b31\u9b4e\u9b58\u9b5a\u9b5b"
+      "\u9b62\u9b68\u9b6f\u9b74\u9b77\u9b7a\u9b81\u9b83"
+      "\u9b8a\u9b8b\u9b8d\u9b8e\u9b90\u9b91\u9b92"
+      "\u9b93\u9b9a\u9b9c\u9b9d\u9b9e\u9ba6\u9baa\u9bab"
+      "\u9bad\u9bae\u9bb3\u9bb6\u9bba\u9bc0\u9bc1"
+      "\u9bc7\u9bc9\u9bca\u9bd2\u9bd4\u9bd5\u9bd6\u9bdb"
+      "\u9bdd\u9be1\u9be2\u9be4\u9be7\u9be8\u9bea"
+      "\u9beb\u9bf0\u9bf4\u9bf7\u9bfd\u9bff\u9c01\u9c02"
+      "\u9c03\u9c08\u9c09\u9c0d\u9c0f\u9c10\u9c12"
+      "\u9c13\u9c1c\u9c1f\u9c20\u9c23\u9c25\u9c28\u9c29"
+      "\u9c2d\u9c2e\u9c31\u9c32\u9c33\u9c35\u9c37"
+      "\u9c39\u9c3a\u9c3b\u9c3c\u9c3e\u9c42\u9c45\u9c48"
+      "\u9c49\u9c52\u9c54\u9c56\u9c57\u9c58\u9c5d"
+      "\u9c5f\u9c60\u9c63\u9c64\u9c67\u9c68\u9c6d\u9c6f"
+      "\u9c77\u9c78\u9c7a\u9ce5\u9ce7\u9ce9\u9cec"
+      "\u9cf2\u9cf3\u9cf4\u9cf6\u9cfe\u9d06\u9d07\u9d09"
+      "\u9d12\u9d15\u9d1b\u9d1d\u9d1e\u9d1f\u9d23"
+      "\u9d26\u9d28\u9d2f\u9d30\u9d34\u9d37\u9d3b\u9d3f"
+      "\u9d41\u9d42\u9d43\u9d50\u9d51\u9d52\u9d53"
+      "\u9d5c\u9d5d\u9d60\u9d61\u9d6a\u9d6c\u9d6e\u9d6f"
+      "\u9d72\u9d77\u9d7e\u9d84\u9d87\u9d89\u9d8a"
+      "\u9d93\u9d96\u9d98\u9d9a\u9da1\u9da5\u9da9\u9daa"
+      "\u9dac\u9daf\u9db2\u9db4\u9db9\u9dba\u9dbb"
+      "\u9dbc\u9dc0\u9dc1\u9dc2\u9dc4\u9dc8\u9dca\u9dd3"
+      "\u9dd6\u9dd7\u9dd9\u9dda\u9de5\u9de6\u9deb"
+      "\u9def\u9df2\u9df3\u9df8\u9df9\u9dfa\u9dfd\u9dff"
+      "\u9e02\u9e07\u9e0c\u9e0f\u9e15\u9e18\u9e1a"
+      "\u9e1b\u9e1d\u9e1e\u9e75\u9e79\u9e7a\u9e7c\u9e7d"
+      "\u9e97\u9ea4\u9ea5\u9ea9\u9eaf\u9eb5\u9ebc"
+      "\u9ebd\u9ec3\u9ecc\u9ede\u9ee8\u9ef2\u9ef4\u9ef6"
+      "\u9ef7\u9efd\u9eff\u9f07\u9f08\u9f09\u9f15"
+      "\u9f34\u9f4a\u9f4b\u9f4e\u9f4f\u9f52\u9f54\u9f55"
+      "\u9f57\u9f59\u9f5c\u9f5f\u9f60\u9f61\u9f63"
+      "\u9f66\u9f67\u9f69\u9f6a\u9f6c\u9f72\u9f76\u9f77"
+      "\u9f8d\u9f8e\u9f90\u9f94\u9f95\u9f9c]";
+
+  // Create UnicodeSets for zh-Hans and zh-Hant for later reference.
+  UErrorCode status = U_ZERO_ERROR;
+  hans_set_.reset(new icu::UnicodeSet(
+      icu::UnicodeString::fromUTF8(hans_codepoints), status));
+  DVLOG(1) << u_errorName(status);
+  hant_set_.reset(new icu::UnicodeSet(
+      icu::UnicodeString::fromUTF8(hant_codepoints), status));
+  DVLOG(1) << u_errorName(status);
+
+  // Make these sets immutable. This keeps the class threadsafe and
+  // makes certain operations on these sets faster.
+  hans_set_->freeze();
+  hant_set_->freeze();
 }
 
 bool ChineseScriptClassifier::IsInitialized() const {
-  return hans2hant_ && hant2hans_;
+  return hans_set_ && hant_set_;
 }
 
 ChineseScriptClassifier::~ChineseScriptClassifier() {}
@@ -61,56 +786,21 @@
                                     base::IsUnicodeWhitespace),
                      input_subset.end());
 
-  // Convert two copies of the input to icu::UnicodeString. Two copies are
-  // necessary because transliteration happens in place only.
-  icu::UnicodeString original_input =
+  // Convert the input to icu::UnicodeString so we can iterate over codepoints.
+  icu::UnicodeString input_codepoints =
       icu::UnicodeString::fromUTF8(input_subset);
-  icu::UnicodeString hant_input = icu::UnicodeString::fromUTF8(input_subset);
-  icu::UnicodeString hans_input = icu::UnicodeString::fromUTF8(input_subset);
-
-  // Get the zh-Hant version of this input.
-  hans2hant_->transliterate(hant_input);
-  // Get the zh-Hans version of this input.
-  hant2hans_->transliterate(hans_input);
-
-  // Debugging only: show the input, the Hant version, and the Hans version.
-  if (VLOG_IS_ON(1)) {
-    std::string hant_string;
-    std::string hans_string;
-    hans_input.toUTF8String(hans_string);
-    hant_input.toUTF8String(hant_string);
-    DVLOG(1) << "Original input:\n" << input_subset;
-    DVLOG(1) << "zh-Hant output:\n" << hant_string;
-    DVLOG(1) << "zh-Hans output:\n" << hans_string;
-  }
 
   // Count matches between the original input chars and the Hant and Hans
   // versions of the input.
   int hant_count = 0;
   int hans_count = 0;
 
-  // Iterate over all chars in the original input and compute matches between
-  // the Hant version and the Hans version.
-  //
-  // All segments (original, Hant, and Hans) should have the same length, but
-  // in case of some corner case or bug in which they turn out not to be,
-  // we compute the minimum length we are allowed to traverse.
-  const int min_length =
-      std::min(original_input.length(),
-               std::min(hans_input.length(), hant_input.length()));
-  for (int index = 0; index < min_length; ++index) {
-    const auto original_char = original_input.charAt(index);
-    const auto hans_char = hans_input.charAt(index);
-    const auto hant_char = hant_input.charAt(index);
-    if (hans_char == hant_char) {
-      continue;
-    } else if (original_char == hans_char) {
-      // Hans-specific char found.
+  for (int index = 0; index < input_codepoints.length(); ++index) {
+    const auto codepoint = input_codepoints.charAt(index);
+    if (hans_set_->contains(codepoint))
       ++hans_count;
-    } else if (original_char == hant_char) {
-      // Hant-specific char found.
+    if (hant_set_->contains(codepoint))
       ++hant_count;
-    }
   }
   DVLOG(1) << "Found " << hans_count << " zh-Hans chars in input";
   DVLOG(1) << "Found " << hant_count << " zh-Hant chars in input";
diff --git a/components/translate/core/language_detection/chinese_script_classifier.h b/components/translate/core/language_detection/chinese_script_classifier.h
index 1063063..f93cc3c1 100644
--- a/components/translate/core/language_detection/chinese_script_classifier.h
+++ b/components/translate/core/language_detection/chinese_script_classifier.h
@@ -7,14 +7,14 @@
 
 #include <memory>
 #include <string>
-#include "third_party/icu/source/i18n/unicode/translit.h"
+#include "third_party/icu/source/common/unicode/uniset.h"
 
 namespace translate {
 
 class ChineseScriptClassifier {
  public:
-  // Initializes both the Hant-to-Hans ICU transliterator and the
-  // Hans-to-Hant ICU transliterator.
+  // Initializes both the zh-Hans and zh-Hant UnicodeSets used for
+  // lookup when Classify is called.
   ChineseScriptClassifier();
   ~ChineseScriptClassifier();
 
@@ -31,11 +31,11 @@
   bool IsInitialized() const;
 
  private:
-  // ICU Transliterator that does Hans to Hant conversion.
-  std::unique_ptr<icu::Transliterator> hans2hant_;
+  // Set of chars generally unique to zh-Hans.
+  std::unique_ptr<icu::UnicodeSet> hans_set_;
 
-  // ICU Transliterator that does Hant to Hans conversion.
-  std::unique_ptr<icu::Transliterator> hant2hans_;
+  // Set of chars generally unique to zh-Hant.
+  std::unique_ptr<icu::UnicodeSet> hant_set_;
 };
 
 }  // namespace translate
diff --git a/content/browser/frame_host/debug_urls.cc b/content/browser/frame_host/debug_urls.cc
index a3fae24..bcf53d5 100644
--- a/content/browser/frame_host/debug_urls.cc
+++ b/content/browser/frame_host/debug_urls.cc
@@ -170,15 +170,19 @@
     GpuProcessHost::CallOnIO(GpuProcessHost::GPU_PROCESS_KIND_SANDBOXED,
                              false /* force_create */,
                              base::Bind([](GpuProcessHost* host) {
-                               host->gpu_service()->DestroyAllChannels();
+                               if (host)
+                                 host->gpu_service()->DestroyAllChannels();
                              }));
     return true;
   }
 
   if (url == kChromeUIGpuCrashURL) {
-    GpuProcessHost::CallOnIO(
-        GpuProcessHost::GPU_PROCESS_KIND_SANDBOXED, false /* force_create */,
-        base::Bind([](GpuProcessHost* host) { host->gpu_service()->Crash(); }));
+    GpuProcessHost::CallOnIO(GpuProcessHost::GPU_PROCESS_KIND_SANDBOXED,
+                             false /* force_create */,
+                             base::Bind([](GpuProcessHost* host) {
+                               if (host)
+                                 host->gpu_service()->Crash();
+                             }));
     return true;
   }
 
@@ -187,16 +191,20 @@
     GpuProcessHost::CallOnIO(GpuProcessHost::GPU_PROCESS_KIND_SANDBOXED,
                              false /* force_create */,
                              base::Bind([](GpuProcessHost* host) {
-                               host->gpu_service()->ThrowJavaException();
+                               if (host)
+                                 host->gpu_service()->ThrowJavaException();
                              }));
     return true;
   }
 #endif
 
   if (url == kChromeUIGpuHangURL) {
-    GpuProcessHost::CallOnIO(
-        GpuProcessHost::GPU_PROCESS_KIND_SANDBOXED, false /* force_create */,
-        base::Bind([](GpuProcessHost* host) { host->gpu_service()->Hang(); }));
+    GpuProcessHost::CallOnIO(GpuProcessHost::GPU_PROCESS_KIND_SANDBOXED,
+                             false /* force_create */,
+                             base::Bind([](GpuProcessHost* host) {
+                               if (host)
+                                 host->gpu_service()->Hang();
+                             }));
     return true;
   }
 
diff --git a/content/browser/gpu/gpu_data_manager_impl_private.cc b/content/browser/gpu/gpu_data_manager_impl_private.cc
index 5bd58166..4d8ac44 100644
--- a/content/browser/gpu/gpu_data_manager_impl_private.cc
+++ b/content/browser/gpu/gpu_data_manager_impl_private.cc
@@ -276,6 +276,8 @@
 }
 
 void RequestVideoMemoryUsageStats(GpuProcessHost* host) {
+  if (!host)
+    return;
   host->gpu_service()->GetVideoMemoryUsageStats(
       base::Bind(&OnVideoMemoryUsageStats));
 }
diff --git a/content/browser/gpu/gpu_ipc_browsertests.cc b/content/browser/gpu/gpu_ipc_browsertests.cc
index 458e847d..492ad85b 100644
--- a/content/browser/gpu/gpu_ipc_browsertests.cc
+++ b/content/browser/gpu/gpu_ipc_browsertests.cc
@@ -10,6 +10,7 @@
 #include "content/browser/gpu/browser_gpu_channel_host_factory.h"
 #include "content/browser/gpu/gpu_process_host.h"
 #include "content/public/browser/gpu_data_manager.h"
+#include "content/public/browser/gpu_utils.h"
 #include "content/public/common/content_switches.h"
 #include "content/public/test/content_browser_test.h"
 #include "services/ui/gpu/interfaces/gpu_service.mojom.h"
@@ -284,9 +285,12 @@
       base::Bind(&BrowserGpuChannelHostFactoryTest::OnContextLost,
                  base::Unretained(this), run_loop.QuitClosure(), &counter));
   EXPECT_TRUE(provider->BindToCurrentThread());
-  GpuProcessHost::CallOnIO(
-      GpuProcessHost::GPU_PROCESS_KIND_SANDBOXED, false /* force_create */,
-      base::Bind([](GpuProcessHost* host) { host->gpu_service()->Crash(); }));
+  GpuProcessHost::CallOnIO(GpuProcessHost::GPU_PROCESS_KIND_SANDBOXED,
+                           false /* force_create */,
+                           base::Bind([](GpuProcessHost* host) {
+                             if (host)
+                               host->gpu_service()->Crash();
+                           }));
   run_loop.Run();
 
   EXPECT_EQ(1, counter);
@@ -295,4 +299,14 @@
   EXPECT_TRUE(IsChannelEstablished());
 }
 
+using GpuProcessHostBrowserTest = BrowserGpuChannelHostFactoryTest;
+
+IN_PROC_BROWSER_TEST_F(GpuProcessHostBrowserTest, Shutdown) {
+  DCHECK(!IsChannelEstablished());
+  EstablishAndWait();
+  base::RunLoop run_loop;
+  StopGpuProcess(run_loop.QuitClosure());
+  run_loop.Run();
+}
+
 }  // namespace content
diff --git a/content/browser/gpu/gpu_process_host.cc b/content/browser/gpu/gpu_process_host.cc
index 1252f77..ec7cd53 100644
--- a/content/browser/gpu/gpu_process_host.cc
+++ b/content/browser/gpu/gpu_process_host.cc
@@ -200,8 +200,7 @@
                      bool force_create,
                      const base::Callback<void(GpuProcessHost*)>& callback) {
   GpuProcessHost* host = GpuProcessHost::Get(kind, force_create);
-  if (host)
-    callback.Run(host);
+  callback.Run(host);
 }
 
 #if defined(USE_OZONE)
@@ -988,10 +987,6 @@
   process_->ForceShutdown();
 }
 
-void GpuProcessHost::StopGpuProcess() {
-  Send(new GpuMsg_Finalize());
-}
-
 bool GpuProcessHost::LaunchGpuProcess(gpu::GpuPreferences* gpu_preferences) {
   const base::CommandLine& browser_command_line =
       *base::CommandLine::ForCurrentProcess();
diff --git a/content/browser/gpu/gpu_process_host.h b/content/browser/gpu/gpu_process_host.h
index 167b4d2..973e14e5 100644
--- a/content/browser/gpu/gpu_process_host.h
+++ b/content/browser/gpu/gpu_process_host.h
@@ -101,8 +101,9 @@
                                       IPC::Message* message);
 
   // Helper function to run a callback on the IO thread. The callback receives
-  // the appropriate GpuProcessHost instance. If |force_create| is false, and no
-  // GpuProcessHost instance exists, then the callback is never called.
+  // the appropriate GpuProcessHost instance. Note that the callback can be
+  // called with a null host (e.g. when |force_create| is false, and no
+  // GpuProcessHost instance exists).
   CONTENT_EXPORT static void CallOnIO(
       GpuProcessKind kind,
       bool force_create,
@@ -157,9 +158,6 @@
   // Forcefully terminates the GPU process.
   void ForceShutdown();
 
-  // Asks the GPU process to stop by itself.
-  void StopGpuProcess();
-
   void LoadedShader(const std::string& key, const std::string& data);
 
   ui::mojom::GpuService* gpu_service() { return gpu_service_ptr_.get(); }
diff --git a/content/browser/gpu/gpu_process_host_ui_shim.cc b/content/browser/gpu/gpu_process_host_ui_shim.cc
index ceab9a2..499d789a 100644
--- a/content/browser/gpu/gpu_process_host_ui_shim.cc
+++ b/content/browser/gpu/gpu_process_host_ui_shim.cc
@@ -43,12 +43,6 @@
 base::LazyInstance<IDMap<GpuProcessHostUIShim*>>::DestructorAtExit
     g_hosts_by_id = LAZY_INSTANCE_INITIALIZER;
 
-void StopGpuProcessOnIO(int host_id) {
-  GpuProcessHost* host = GpuProcessHost::FromID(host_id);
-  if (host)
-    host->StopGpuProcess();
-}
-
 }  // namespace
 
 void RouteToGpuProcessHostUIShimTask(int host_id, const IPC::Message& msg) {
@@ -121,17 +115,8 @@
   return OnControlMessageReceived(message);
 }
 
-void GpuProcessHostUIShim::StopGpuProcess(const base::Closure& callback) {
-  close_callback_ = callback;
-
-  BrowserThread::PostTask(
-      BrowserThread::IO, FROM_HERE, base::Bind(&StopGpuProcessOnIO, host_id_));
-}
-
 GpuProcessHostUIShim::~GpuProcessHostUIShim() {
   DCHECK(CalledOnValidThread());
-  if (!close_callback_.is_null())
-    base::ResetAndReturn(&close_callback_).Run();
   g_hosts_by_id.Pointer()->Remove(host_id_);
 }
 
diff --git a/content/browser/gpu/gpu_process_host_ui_shim.h b/content/browser/gpu/gpu_process_host_ui_shim.h
index 2032134..95f2f17 100644
--- a/content/browser/gpu/gpu_process_host_ui_shim.h
+++ b/content/browser/gpu/gpu_process_host_ui_shim.h
@@ -51,9 +51,6 @@
 
   CONTENT_EXPORT static GpuProcessHostUIShim* FromID(int host_id);
 
-  // Stops the GPU process.
-  CONTENT_EXPORT void StopGpuProcess(const base::Closure& callback);
-
   // IPC::Listener implementation.
   // The GpuProcessHost causes this to be called on the UI thread to
   // dispatch the incoming messages from the GPU process, which are
@@ -72,7 +69,6 @@
 
   // The serial number of the GpuProcessHost / GpuProcessHostUIShim pair.
   int host_id_;
-  base::Closure close_callback_;
 };
 
 }  // namespace content
diff --git a/content/browser/renderer_host/compositor_impl_android.cc b/content/browser/renderer_host/compositor_impl_android.cc
index 5bb81c4..032239f 100644
--- a/content/browser/renderer_host/compositor_impl_android.cc
+++ b/content/browser/renderer_host/compositor_impl_android.cc
@@ -175,12 +175,6 @@
     // specified
     // (IOW check that a <= 0 && rgb > 0 && rgb <= 565) then alpha should be
     // -1.
-    // TODO(liberato): This condition is memorized in ComositorView.java, to
-    // avoid using two surfaces temporarily during alpha <-> no alpha
-    // transitions.  If these mismatch, then we risk a power regression if the
-    // SurfaceView is not marked as eOpaque (FORMAT_OPAQUE), and we have an
-    // EGL surface with an alpha channel.  SurfaceFlinger needs at least one of
-    // those hints to optimize out alpha blending.
     attributes.alpha_size = 0;
     attributes.red_size = 5;
     attributes.green_size = 6;
diff --git a/content/browser/renderer_host/render_widget_host_view_android.cc b/content/browser/renderer_host/render_widget_host_view_android.cc
index f6f9f43b..ec25bde 100644
--- a/content/browser/renderer_host/render_widget_host_view_android.cc
+++ b/content/browser/renderer_host/render_widget_host_view_android.cc
@@ -417,7 +417,8 @@
 }
 
 void WakeUpGpu(GpuProcessHost* host) {
-  DCHECK(host);
+  if (!host)
+    return;
   GpuDataManagerImpl* gpu_data = GpuDataManagerImpl::GetInstance();
   if (gpu_data &&
       gpu_data->IsDriverBugWorkaroundActive(gpu::WAKE_UP_GPU_BEFORE_DRAWING))
diff --git a/content/common/gpu_host_messages.h b/content/common/gpu_host_messages.h
index f56899b..b7855a8 100644
--- a/content/common/gpu_host_messages.h
+++ b/content/common/gpu_host_messages.h
@@ -89,9 +89,6 @@
 // GPU Messages
 // These are messages from the browser to the GPU process.
 
-// Tells the GPU process to shutdown itself.
-IPC_MESSAGE_CONTROL0(GpuMsg_Finalize)
-
 // Tells the GPU process to create a new gpu memory buffer.
 IPC_MESSAGE_CONTROL1(GpuMsg_CreateGpuMemoryBuffer,
                      GpuMsg_CreateGpuMemoryBuffer_Params)
diff --git a/content/gpu/gpu_child_thread.cc b/content/gpu/gpu_child_thread.cc
index 70e6190..fec69f1 100644
--- a/content/gpu/gpu_child_thread.cc
+++ b/content/gpu/gpu_child_thread.cc
@@ -246,7 +246,6 @@
 bool GpuChildThread::OnControlMessageReceived(const IPC::Message& msg) {
   bool handled = true;
   IPC_BEGIN_MESSAGE_MAP(GpuChildThread, msg)
-    IPC_MESSAGE_HANDLER(GpuMsg_Finalize, OnFinalize)
     IPC_MESSAGE_HANDLER(GpuMsg_CollectGraphicsInfo, OnCollectGraphicsInfo)
     IPC_MESSAGE_HANDLER(GpuMsg_GpuSwitched, OnGpuSwitched)
     IPC_MESSAGE_UNHANDLED(handled = false)
@@ -347,11 +346,6 @@
   NOTREACHED();
 }
 
-void GpuChildThread::OnFinalize() {
-  // Quit the GPU process
-  base::MessageLoop::current()->QuitWhenIdle();
-}
-
 void GpuChildThread::OnCollectGraphicsInfo() {
   if (dead_on_arrival_)
     return;
diff --git a/content/gpu/gpu_child_thread.h b/content/gpu/gpu_child_thread.h
index d967925b..a4b1e76 100644
--- a/content/gpu/gpu_child_thread.h
+++ b/content/gpu/gpu_child_thread.h
@@ -110,7 +110,6 @@
                                   const std::string& group_name) override;
 
   // Message handlers.
-  void OnFinalize();
   void OnCollectGraphicsInfo();
   void OnSetVideoMemoryWindowCount(uint32_t window_count);
 
diff --git a/content/public/browser/gpu_utils.cc b/content/public/browser/gpu_utils.cc
index 19c6ab65..245da16 100644
--- a/content/public/browser/gpu_utils.cc
+++ b/content/public/browser/gpu_utils.cc
@@ -5,7 +5,9 @@
 #include "content/public/browser/gpu_utils.h"
 
 #include "base/command_line.h"
+#include "base/single_thread_task_runner.h"
 #include "base/strings/string_number_conversions.h"
+#include "content/browser/gpu/gpu_process_host.h"
 #include "content/public/common/content_features.h"
 #include "content/public/common/content_switches.h"
 #include "gpu/command_buffer/service/gpu_switches.h"
@@ -24,6 +26,20 @@
   return base::StringToUint(switch_value, value);
 }
 
+void RunTaskOnTaskRunner(
+    scoped_refptr<base::SingleThreadTaskRunner> task_runner,
+    const base::Closure& callback) {
+  task_runner->PostTask(FROM_HERE, callback);
+}
+
+void StopGpuProcessImpl(const base::Closure& callback,
+                        content::GpuProcessHost* host) {
+  if (host)
+    host->gpu_service()->Stop(callback);
+  else
+    callback.Run();
+}
+
 }  // namespace
 
 namespace content {
@@ -116,4 +132,13 @@
   return gpu_preferences;
 }
 
+void StopGpuProcess(const base::Closure& callback) {
+  content::GpuProcessHost::CallOnIO(
+      content::GpuProcessHost::GPU_PROCESS_KIND_SANDBOXED,
+      false /* force_create */,
+      base::Bind(&StopGpuProcessImpl,
+                 base::Bind(RunTaskOnTaskRunner,
+                            base::ThreadTaskRunnerHandle::Get(), callback)));
+}
+
 }  // namespace content
diff --git a/content/public/browser/gpu_utils.h b/content/public/browser/gpu_utils.h
index 84e7808..cc12e5b 100644
--- a/content/public/browser/gpu_utils.h
+++ b/content/public/browser/gpu_utils.h
@@ -5,6 +5,7 @@
 #ifndef CONTENT_PUBLIC_BROWSER_GPU_UTILS_H_
 #define CONTENT_PUBLIC_BROWSER_GPU_UTILS_H_
 
+#include "base/callback_forward.h"
 #include "content/common/content_export.h"
 #include "gpu/command_buffer/service/gpu_preferences.h"
 
@@ -12,6 +13,8 @@
 
 CONTENT_EXPORT const gpu::GpuPreferences GetGpuPreferencesFromCommandLine();
 
+CONTENT_EXPORT void StopGpuProcess(const base::Closure& callback);
+
 }  // namespace content
 
 #endif  // CONTENT_PUBLIC_BROWSER_GPU_UTILS_H_
diff --git a/device/vr/BUILD.gn b/device/vr/BUILD.gn
index 622258f0..27cd5c38 100644
--- a/device/vr/BUILD.gn
+++ b/device/vr/BUILD.gn
@@ -42,6 +42,7 @@
 
     deps += [
       "//base",
+      "//gpu/ipc/common:interfaces",
       "//mojo/public/cpp/bindings",
       "//ui/gfx",
     ]
@@ -99,6 +100,7 @@
   ]
 
   public_deps = [
+    "//gpu/ipc/common:interfaces",
     "//mojo/common:common_custom_types",
   ]
 
diff --git a/device/vr/DEPS b/device/vr/DEPS
index d8c8cee..c0b9fe7 100644
--- a/device/vr/DEPS
+++ b/device/vr/DEPS
@@ -1,4 +1,5 @@
 include_rules = [
+  "+gpu/command_buffer/common/mailbox_holder.h",
   "+jni",
   "+third_party/WebKit/public/platform/WebGamepads.h",
   "+third_party/WebKit/public/platform/modules/vr/vr_service.mojom.h",
diff --git a/device/vr/android/gvr/gvr_delegate.h b/device/vr/android/gvr/gvr_delegate.h
index ed31de33..0491d75 100644
--- a/device/vr/android/gvr/gvr_delegate.h
+++ b/device/vr/android/gvr/gvr_delegate.h
@@ -12,15 +12,15 @@
 
 namespace device {
 
-constexpr gvr::Sizei kInvalidRenderTargetSize = {0, 0};
-
 class DEVICE_VR_EXPORT GvrDelegate {
  public:
   virtual void SetWebVRSecureOrigin(bool secure_origin) = 0;
-  virtual void SubmitWebVRFrame() = 0;
+  virtual void SubmitWebVRFrame(int16_t frame_index,
+                                const gpu::MailboxHolder& mailbox) = 0;
   virtual void UpdateWebVRTextureBounds(int16_t frame_index,
                                         const gvr::Rectf& left_bounds,
-                                        const gvr::Rectf& right_bounds) = 0;
+                                        const gvr::Rectf& right_bounds,
+                                        const gvr::Sizei& source_size) = 0;
   virtual void OnVRVsyncProviderRequest(
       mojom::VRVSyncProviderRequest request) = 0;
   virtual void UpdateVSyncInterval(int64_t timebase_nanos,
@@ -44,6 +44,7 @@
   virtual void SetDeviceProvider(GvrDeviceProvider* device_provider) = 0;
   virtual void ClearDeviceProvider() = 0;
   virtual void RequestWebVRPresent(
+      mojom::VRSubmitFrameClientPtr submit_client,
       const base::Callback<void(bool)>& callback) = 0;
   virtual void ExitWebVRPresent() = 0;
   virtual GvrDelegate* GetDelegate() = 0;
diff --git a/device/vr/android/gvr/gvr_device.cc b/device/vr/android/gvr/gvr_device.cc
index f0a86e2..c0b8e5a 100644
--- a/device/vr/android/gvr/gvr_device.cc
+++ b/device/vr/android/gvr/gvr_device.cc
@@ -40,8 +40,9 @@
     delegate->ResetPose();
 }
 
-void GvrDevice::RequestPresent(const base::Callback<void(bool)>& callback) {
-  gvr_provider_->RequestPresent(callback);
+void GvrDevice::RequestPresent(mojom::VRSubmitFrameClientPtr submit_client,
+                               const base::Callback<void(bool)>& callback) {
+  gvr_provider_->RequestPresent(std::move(submit_client), callback);
 }
 
 void GvrDevice::SetSecureOrigin(bool secure_origin) {
@@ -56,15 +57,19 @@
   OnExitPresent();
 }
 
-void GvrDevice::SubmitFrame(mojom::VRPosePtr pose) {
+void GvrDevice::SubmitFrame(int16_t frame_index,
+                            const gpu::MailboxHolder& mailbox) {
   GvrDelegate* delegate = GetGvrDelegate();
-  if (delegate)
-    delegate->SubmitWebVRFrame();
+  if (delegate) {
+    delegate->SubmitWebVRFrame(frame_index, mailbox);
+  }
 }
 
 void GvrDevice::UpdateLayerBounds(int16_t frame_index,
                                   mojom::VRLayerBoundsPtr left_bounds,
-                                  mojom::VRLayerBoundsPtr right_bounds) {
+                                  mojom::VRLayerBoundsPtr right_bounds,
+                                  int16_t source_width,
+                                  int16_t source_height) {
   GvrDelegate* delegate = GetGvrDelegate();
   if (!delegate)
     return;
@@ -81,8 +86,9 @@
   right_gvr_bounds.right = right_bounds->left + right_bounds->width;
   right_gvr_bounds.bottom = 1.0f - (right_bounds->top + right_bounds->height);
 
+  gvr::Sizei source_size = {source_width, source_height};
   delegate->UpdateWebVRTextureBounds(frame_index, left_gvr_bounds,
-                                     right_gvr_bounds);
+                                     right_gvr_bounds, source_size);
 }
 
 void GvrDevice::GetVRVSyncProvider(mojom::VRVSyncProviderRequest request) {
@@ -103,7 +109,7 @@
 }
 
 GvrDelegate* GvrDevice::GetGvrDelegate() {
-  GvrDelegateProvider* delegate_provider = GvrDelegateProvider::GetInstance();
+  GvrDelegateProvider* delegate_provider = gvr_provider_->GetDelegateProvider();
   if (delegate_provider)
     return delegate_provider->GetDelegate();
   return nullptr;
diff --git a/device/vr/android/gvr/gvr_device.h b/device/vr/android/gvr/gvr_device.h
index 55fb95f3..4478e1f5 100644
--- a/device/vr/android/gvr/gvr_device.h
+++ b/device/vr/android/gvr/gvr_device.h
@@ -23,14 +23,18 @@
       const base::Callback<void(mojom::VRDisplayInfoPtr)>& callback) override;
   void ResetPose() override;
 
-  void RequestPresent(const base::Callback<void(bool)>& callback) override;
+  void RequestPresent(mojom::VRSubmitFrameClientPtr submit_client,
+                      const base::Callback<void(bool)>& callback) override;
   void SetSecureOrigin(bool secure_origin) override;
   void ExitPresent() override;
 
-  void SubmitFrame(mojom::VRPosePtr pose) override;
+  void SubmitFrame(int16_t frame_index,
+                   const gpu::MailboxHolder& mailbox) override;
   void UpdateLayerBounds(int16_t frame_index,
                          mojom::VRLayerBoundsPtr left_bounds,
-                         mojom::VRLayerBoundsPtr right_bounds) override;
+                         mojom::VRLayerBoundsPtr right_bounds,
+                         int16_t source_width,
+                         int16_t source_height) override;
   void GetVRVSyncProvider(mojom::VRVSyncProviderRequest request) override;
   void OnDelegateChanged();
 
diff --git a/device/vr/android/gvr/gvr_device_provider.cc b/device/vr/android/gvr/gvr_device_provider.cc
index 4aff6ce..9b5be90 100644
--- a/device/vr/android/gvr/gvr_device_provider.cc
+++ b/device/vr/android/gvr/gvr_device_provider.cc
@@ -33,9 +33,14 @@
 }
 
 void GvrDeviceProvider::GetDevices(std::vector<VRDevice*>* devices) {
-  Initialize();
-  if (initialized_)
-    devices->push_back(vr_device_.get());
+  devices->push_back(vr_device_.get());
+}
+
+device::GvrDelegateProvider* GvrDeviceProvider::GetDelegateProvider() {
+  device::GvrDelegateProvider* provider =
+      device::GvrDelegateProvider::GetInstance();
+  Initialize(provider);
+  return provider;
 }
 
 void GvrDeviceProvider::Initialize() {
@@ -43,41 +48,36 @@
   // GvrDeviceProvider so we don't have to call this function multiple times.
   // Ideally the DelegateProvider would always be available, and GetInstance()
   // would create it.
-  if (initialized_)
+  Initialize(device::GvrDelegateProvider::GetInstance());
+}
+
+void GvrDeviceProvider::Initialize(device::GvrDelegateProvider* provider) {
+  if (!provider)
     return;
-  device::GvrDelegateProvider* delegate_provider =
-      device::GvrDelegateProvider::GetInstance();
-  if (!delegate_provider)
-    return;
-  delegate_provider->SetDeviceProvider(this);
-  initialized_ = true;
+  provider->SetDeviceProvider(this);
 }
 
 void GvrDeviceProvider::RequestPresent(
+    mojom::VRSubmitFrameClientPtr submit_client,
     const base::Callback<void(bool)>& callback) {
-  Initialize();
-  device::GvrDelegateProvider* delegate_provider =
-      device::GvrDelegateProvider::GetInstance();
+  device::GvrDelegateProvider* delegate_provider = GetDelegateProvider();
   if (!delegate_provider)
     return callback.Run(false);
 
   // RequestWebVRPresent is async as we may trigger a DON flow that pauses
   // Chrome.
-  delegate_provider->RequestWebVRPresent(callback);
+  delegate_provider->RequestWebVRPresent(std::move(submit_client), callback);
 }
 
 // VR presentation exit requested by the API.
 void GvrDeviceProvider::ExitPresent() {
-  Initialize();
-  GvrDelegateProvider* delegate_provider = GvrDelegateProvider::GetInstance();
+  device::GvrDelegateProvider* delegate_provider = GetDelegateProvider();
   if (delegate_provider)
     delegate_provider->ExitWebVRPresent();
 }
 
 void GvrDeviceProvider::SetListeningForActivate(bool listening) {
-  Initialize();
-  device::GvrDelegateProvider* delegate_provider =
-      device::GvrDelegateProvider::GetInstance();
+  device::GvrDelegateProvider* delegate_provider = GetDelegateProvider();
   if (!delegate_provider)
     return;
 
diff --git a/device/vr/android/gvr/gvr_device_provider.h b/device/vr/android/gvr/gvr_device_provider.h
index 5793021..d215e603 100644
--- a/device/vr/android/gvr/gvr_device_provider.h
+++ b/device/vr/android/gvr/gvr_device_provider.h
@@ -11,9 +11,11 @@
 #include "base/macros.h"
 #include "device/vr/vr_device_provider.h"
 #include "device/vr/vr_export.h"
+#include "device/vr/vr_service.mojom.h"
 
 namespace device {
 
+class GvrDelegateProvider;
 class GvrDevice;
 
 class DEVICE_VR_EXPORT GvrDeviceProvider : public VRDeviceProvider {
@@ -27,14 +29,17 @@
   void SetListeningForActivate(bool listening) override;
 
   // Called from GvrDevice.
-  void RequestPresent(const base::Callback<void(bool)>& callback);
+  void RequestPresent(mojom::VRSubmitFrameClientPtr submit_client,
+                      const base::Callback<void(bool)>& callback);
   void ExitPresent();
 
+  device::GvrDelegateProvider* GetDelegateProvider();
+
   GvrDevice* Device() { return vr_device_.get(); }
 
  private:
+  void Initialize(device::GvrDelegateProvider* provider);
   std::unique_ptr<GvrDevice> vr_device_;
-  bool initialized_ = false;
 
   DISALLOW_COPY_AND_ASSIGN(GvrDeviceProvider);
 };
diff --git a/device/vr/test/fake_vr_device.cc b/device/vr/test/fake_vr_device.cc
index c6999050..9595e5ff 100644
--- a/device/vr/test/fake_vr_device.cc
+++ b/device/vr/test/fake_vr_device.cc
@@ -62,7 +62,8 @@
 
 void FakeVRDevice::ResetPose() {}
 
-void FakeVRDevice::RequestPresent(const base::Callback<void(bool)>& callback) {
+void FakeVRDevice::RequestPresent(mojom::VRSubmitFrameClientPtr submit_client,
+                                  const base::Callback<void(bool)>& callback) {
   callback.Run(true);
 }
 
@@ -72,11 +73,14 @@
   OnExitPresent();
 }
 
-void FakeVRDevice::SubmitFrame(mojom::VRPosePtr pose) {}
+void FakeVRDevice::SubmitFrame(int16_t frame_index,
+                               const gpu::MailboxHolder& mailbox) {}
 
 void FakeVRDevice::UpdateLayerBounds(int16_t frame_index,
                                      mojom::VRLayerBoundsPtr leftBounds,
-                                     mojom::VRLayerBoundsPtr rightBounds) {}
+                                     mojom::VRLayerBoundsPtr rightBounds,
+                                     int16_t source_width,
+                                     int16_t source_height) {}
 
 void FakeVRDevice::GetVRVSyncProvider(mojom::VRVSyncProviderRequest request) {}
 
diff --git a/device/vr/test/fake_vr_device.h b/device/vr/test/fake_vr_device.h
index 178610ea..16ddcdf9 100644
--- a/device/vr/test/fake_vr_device.h
+++ b/device/vr/test/fake_vr_device.h
@@ -27,13 +27,17 @@
       const base::Callback<void(mojom::VRDisplayInfoPtr)>& callback) override;
   void ResetPose() override;
 
-  void RequestPresent(const base::Callback<void(bool)>& callback) override;
+  void RequestPresent(mojom::VRSubmitFrameClientPtr submit_client,
+                      const base::Callback<void(bool)>& callback) override;
   void SetSecureOrigin(bool secure_origin) override;
   void ExitPresent() override;
-  void SubmitFrame(mojom::VRPosePtr pose) override;
+  void SubmitFrame(int16_t frame_index,
+                   const gpu::MailboxHolder& mailbox) override;
   void UpdateLayerBounds(int16_t frame_index,
                          mojom::VRLayerBoundsPtr leftBounds,
-                         mojom::VRLayerBoundsPtr rightBounds) override;
+                         mojom::VRLayerBoundsPtr rightBounds,
+                         int16_t source_width,
+                         int16_t source_height) override;
   void GetVRVSyncProvider(mojom::VRVSyncProviderRequest request) override;
 
  private:
diff --git a/device/vr/vr_device.cc b/device/vr/vr_device.cc
index 03a9685..00e9425 100644
--- a/device/vr/vr_device.cc
+++ b/device/vr/vr_device.cc
@@ -19,12 +19,6 @@
 
 VRDevice::~VRDevice() {}
 
-void VRDevice::RequestPresent(const base::Callback<void(bool)>& callback) {
-  callback.Run(true);
-}
-
-void VRDevice::SetSecureOrigin(bool secure_origin) {}
-
 void VRDevice::AddDisplay(VRDisplayImpl* display) {
   displays_.insert(display);
 }
diff --git a/device/vr/vr_device.h b/device/vr/vr_device.h
index be836ee..ae7fefc6 100644
--- a/device/vr/vr_device.h
+++ b/device/vr/vr_device.h
@@ -27,13 +27,17 @@
       const base::Callback<void(mojom::VRDisplayInfoPtr)>& callback) = 0;
   virtual void ResetPose() = 0;
 
-  virtual void RequestPresent(const base::Callback<void(bool)>& callback) = 0;
+  virtual void RequestPresent(mojom::VRSubmitFrameClientPtr submit_client,
+                              const base::Callback<void(bool)>& callback) = 0;
   virtual void SetSecureOrigin(bool secure_origin) = 0;
   virtual void ExitPresent() = 0;
-  virtual void SubmitFrame(mojom::VRPosePtr pose) = 0;
+  virtual void SubmitFrame(int16_t frame_index,
+                           const gpu::MailboxHolder& mailbox) = 0;
   virtual void UpdateLayerBounds(int16_t frame_index,
                                  mojom::VRLayerBoundsPtr left_bounds,
-                                 mojom::VRLayerBoundsPtr right_bounds) = 0;
+                                 mojom::VRLayerBoundsPtr right_bounds,
+                                 int16_t source_width,
+                                 int16_t source_height) = 0;
   virtual void GetVRVSyncProvider(mojom::VRVSyncProviderRequest request) = 0;
 
   virtual void AddDisplay(VRDisplayImpl* display);
diff --git a/device/vr/vr_display_impl.cc b/device/vr/vr_display_impl.cc
index 37f8ec9..9a3bf63 100644
--- a/device/vr/vr_display_impl.cc
+++ b/device/vr/vr_display_impl.cc
@@ -41,15 +41,17 @@
 }
 
 void VRDisplayImpl::RequestPresent(bool secure_origin,
+                                   mojom::VRSubmitFrameClientPtr submit_client,
                                    const RequestPresentCallback& callback) {
   if (!device_->IsAccessAllowed(this)) {
     callback.Run(false);
     return;
   }
 
-  device_->RequestPresent(base::Bind(&VRDisplayImpl::RequestPresentResult,
-                                     weak_ptr_factory_.GetWeakPtr(), callback,
-                                     secure_origin));
+  device_->RequestPresent(
+      std::move(submit_client),
+      base::Bind(&VRDisplayImpl::RequestPresentResult,
+                 weak_ptr_factory_.GetWeakPtr(), callback, secure_origin));
 }
 
 void VRDisplayImpl::RequestPresentResult(const RequestPresentCallback& callback,
@@ -67,20 +69,24 @@
     device_->ExitPresent();
 }
 
-void VRDisplayImpl::SubmitFrame(mojom::VRPosePtr pose) {
+void VRDisplayImpl::SubmitFrame(int16_t frame_index,
+                                const gpu::MailboxHolder& mailbox) {
   if (!device_->CheckPresentingDisplay(this))
     return;
-  device_->SubmitFrame(std::move(pose));
+  device_->SubmitFrame(frame_index, mailbox);
 }
 
 void VRDisplayImpl::UpdateLayerBounds(int16_t frame_index,
                                       mojom::VRLayerBoundsPtr left_bounds,
-                                      mojom::VRLayerBoundsPtr right_bounds) {
+                                      mojom::VRLayerBoundsPtr right_bounds,
+                                      int16_t source_width,
+                                      int16_t source_height) {
   if (!device_->IsAccessAllowed(this))
     return;
 
   device_->UpdateLayerBounds(frame_index, std::move(left_bounds),
-                             std::move(right_bounds));
+                             std::move(right_bounds), source_width,
+                             source_height);
 }
 
 void VRDisplayImpl::GetVRVSyncProvider(mojom::VRVSyncProviderRequest request) {
diff --git a/device/vr/vr_display_impl.h b/device/vr/vr_display_impl.h
index 7116d52..bf0b7ab1 100644
--- a/device/vr/vr_display_impl.h
+++ b/device/vr/vr_display_impl.h
@@ -32,13 +32,17 @@
   void ResetPose() override;
 
   void RequestPresent(bool secure_origin,
+                      mojom::VRSubmitFrameClientPtr submit_client,
                       const RequestPresentCallback& callback) override;
   void ExitPresent() override;
-  void SubmitFrame(mojom::VRPosePtr pose) override;
+  void SubmitFrame(int16_t frame_index,
+                   const gpu::MailboxHolder& mailbox) override;
 
   void UpdateLayerBounds(int16_t frame_index,
                          mojom::VRLayerBoundsPtr left_bounds,
-                         mojom::VRLayerBoundsPtr right_bounds) override;
+                         mojom::VRLayerBoundsPtr right_bounds,
+                         int16_t source_width,
+                         int16_t source_height) override;
   void GetVRVSyncProvider(mojom::VRVSyncProviderRequest request) override;
 
   void RequestPresentResult(const RequestPresentCallback& callback,
diff --git a/device/vr/vr_display_impl_unittest.cc b/device/vr/vr_display_impl_unittest.cc
index f53fde62..05cad2f 100644
--- a/device/vr/vr_display_impl_unittest.cc
+++ b/device/vr/vr_display_impl_unittest.cc
@@ -47,9 +47,14 @@
   }
 
   void RequestPresent(VRDisplayImpl* display_impl) {
+    // TODO(klausw,mthiesse): set up a VRSubmitFrameClient here? Currently,
+    // the FakeVRDisplay doesn't access the submit client, so a nullptr
+    // is ok.
+    device::mojom::VRSubmitFrameClientPtr submit_client = nullptr;
     display_impl->RequestPresent(
-        true, base::Bind(&VRDisplayImplTest::onPresentComplete,
-                         base::Unretained(this)));
+        true, std::move(submit_client),
+        base::Bind(&VRDisplayImplTest::onPresentComplete,
+                   base::Unretained(this)));
   }
 
   void ExitPresent(VRDisplayImpl* display_impl) { display_impl->ExitPresent(); }
diff --git a/device/vr/vr_service.mojom b/device/vr/vr_service.mojom
index a77d4a9b..2eee52f 100644
--- a/device/vr/vr_service.mojom
+++ b/device/vr/vr_service.mojom
@@ -5,6 +5,8 @@
 module device.mojom;
 
 import "mojo/common/time.mojom";
+import "gpu/ipc/common/mailbox_holder.mojom";
+import "gpu/ipc/common/sync_token.mojom";
 
 // A field of view, given by 4 degrees describing the view from a center point.
 struct VRFieldOfView {
@@ -84,19 +86,25 @@
                      VRDisplayInfo displayInfo);
 };
 
+interface VRSubmitFrameClient {
+  OnSubmitFrameTransferred();
+  OnSubmitFrameRendered();
+};
+
 interface VRDisplay {
   ResetPose();
 
-  RequestPresent(bool secureOrigin) => (bool success);
+  RequestPresent(bool secureOrigin, VRSubmitFrameClient client) => (bool success);
   ExitPresent();
-  SubmitFrame(VRPose? pose);
+  SubmitFrame(int16 frameId, gpu.mojom.MailboxHolder mailboxHolder);
   UpdateLayerBounds(int16 frameId, VRLayerBounds leftBounds,
-                    VRLayerBounds rightBounds);
+                    VRLayerBounds rightBounds, int16 sourceWidth,
+                    int16 sourceHeight);
   GetVRVSyncProvider(VRVSyncProvider& request);
 };
 
 interface VRVSyncProvider {
-  enum Status { SUCCESS, RETRY };
+  enum Status { SUCCESS, CLOSING };
 
   // The frameId maps a VSync to a frame arriving from the compositor. IDs will
   // be reused after the frame arrives from the compositor. Negative IDs imply
diff --git a/extensions/common/api/events.json b/extensions/common/api/events.json
index ba31dea..5c355c0f 100644
--- a/extensions/common/api/events.json
+++ b/extensions/common/api/events.json
@@ -34,7 +34,7 @@
           "actions": {
             "type": "array",
             "items": {"type": "any"},
-            "description": "List of actions that are triggered if one of the condtions is fulfilled."
+            "description": "List of actions that are triggered if one of the conditions is fulfilled."
           },
           "priority": {
             "type": "integer",
diff --git a/gpu/ipc/common/mailbox_holder.typemap b/gpu/ipc/common/mailbox_holder.typemap
index 4644f321..06d9d72 100644
--- a/gpu/ipc/common/mailbox_holder.typemap
+++ b/gpu/ipc/common/mailbox_holder.typemap
@@ -8,4 +8,8 @@
 deps = [
   "//gpu/ipc/common:struct_traits",
 ]
+public_deps = [
+  "//gpu/command_buffer/common",
+  "//mojo/public/cpp/bindings",
+]
 type_mappings = [ "gpu.mojom.MailboxHolder=::gpu::MailboxHolder" ]
diff --git a/gpu/ipc/common/mailbox_holder_for_blink.typemap b/gpu/ipc/common/mailbox_holder_for_blink.typemap
new file mode 100644
index 0000000..976595e7
--- /dev/null
+++ b/gpu/ipc/common/mailbox_holder_for_blink.typemap
@@ -0,0 +1,13 @@
+# Copyright 2017 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.
+
+mojom = "//gpu/ipc/common/mailbox_holder.mojom"
+public_headers = [ "//gpu/command_buffer/common/mailbox_holder.h" ]
+traits_headers = [ "//gpu/ipc/common/mailbox_holder_struct_traits.h" ]
+public_deps = [
+  "//gpu/command_buffer/common",
+  "//gpu/ipc/common:interfaces",
+  "//mojo/public/cpp/bindings",
+]
+type_mappings = [ "gpu.mojom.MailboxHolder=::gpu::MailboxHolder" ]
diff --git a/mash/OWNERS b/mash/OWNERS
index e6a7642f..149470b 100644
--- a/mash/OWNERS
+++ b/mash/OWNERS
@@ -2,3 +2,5 @@
 erg@chromium.org
 msw@chromium.org
 sky@chromium.org
+
+# COMPONENT: UI>Shell
diff --git a/net/http/http_util.cc b/net/http/http_util.cc
index 62bed8c..24f49e7 100644
--- a/net/http/http_util.cc
+++ b/net/http/http_util.cc
@@ -10,6 +10,7 @@
 #include <algorithm>
 
 #include "base/logging.h"
+#include "base/stl_util.h"
 #include "base/strings/string_number_conversions.h"
 #include "base/strings/string_piece.h"
 #include "base/strings/string_tokenizer.h"
@@ -707,8 +708,8 @@
   // Use '\0' as the canonical line terminator. If the input already contained
   // any embeded '\0' characters we will strip them first to avoid interpreting
   // them as line breaks.
-  raw_headers.erase(std::remove(raw_headers.begin(), raw_headers.end(), '\0'),
-                    raw_headers.end());
+  base::Erase(raw_headers, '\0');
+
   std::replace(raw_headers.begin(), raw_headers.end(), '\n', '\0');
 
   return raw_headers;
diff --git a/net/nqe/network_quality_estimator.cc b/net/nqe/network_quality_estimator.cc
index d1f87e9..8bd94fb 100644
--- a/net/nqe/network_quality_estimator.cc
+++ b/net/nqe/network_quality_estimator.cc
@@ -808,6 +808,17 @@
                                   effective_connection_type));
 }
 
+void NetworkQualityEstimator::ReportRTTsAndThroughputForTesting(
+    base::TimeDelta http_rtt,
+    base::TimeDelta transport_rtt,
+    int32_t downstream_throughput_kbps) {
+  DCHECK(thread_checker_.CalledOnValidThread());
+
+  for (auto& observer : rtt_and_throughput_estimates_observer_list_)
+    observer.OnRTTOrThroughputEstimatesComputed(http_rtt, transport_rtt,
+                                                downstream_throughput_kbps);
+}
+
 bool NetworkQualityEstimator::RequestProvidesRTTObservation(
     const URLRequest& request) const {
   DCHECK(thread_checker_.CalledOnValidThread());
diff --git a/net/nqe/network_quality_estimator.h b/net/nqe/network_quality_estimator.h
index 696e9b0..d44c1a55 100644
--- a/net/nqe/network_quality_estimator.h
+++ b/net/nqe/network_quality_estimator.h
@@ -160,6 +160,8 @@
     // Returns the current effective connection type.
     virtual EffectiveConnectionType GetEffectiveConnectionType() const = 0;
 
+    virtual ~NetworkQualityProvider() {}
+
     // Adds |observer| to a list of effective connection type observers.
     virtual void AddEffectiveConnectionTypeObserver(
         EffectiveConnectionTypeObserver* observer) = 0;
@@ -168,7 +170,16 @@
     virtual void RemoveEffectiveConnectionTypeObserver(
         EffectiveConnectionTypeObserver* observer) = 0;
 
-    virtual ~NetworkQualityProvider() {}
+    // Adds |observer| to the list of RTT and throughput estimate observers.
+    // |observer| would be notified of the current RTT and throughput estimates
+    // in the next message pump.
+    virtual void AddRTTAndThroughputEstimatesObserver(
+        RTTAndThroughputEstimatesObserver* observer) = 0;
+
+    // Removes |observer| from the list of RTT and throughput estimate
+    // observers.
+    virtual void RemoveRTTAndThroughputEstimatesObserver(
+        RTTAndThroughputEstimatesObserver* observer) = 0;
 
    protected:
     NetworkQualityProvider() {}
@@ -296,6 +307,11 @@
   void ReportEffectiveConnectionTypeForTesting(
       EffectiveConnectionType effective_connection_type);
 
+  // Reports the RTTs and throughput to all RTTAndThroughputEstimatesObservers.
+  void ReportRTTsAndThroughputForTesting(base::TimeDelta http_rtt,
+                                         base::TimeDelta transport_rtt,
+                                         int32_t downstream_throughput_kbps);
+
   // Adds and removes |observer| from the list of cache observers.
   void AddNetworkQualitiesCacheObserver(
       nqe::internal::NetworkQualityStore::NetworkQualitiesCacheObserver*
diff --git a/printing/backend/cups_helper.cc b/printing/backend/cups_helper.cc
index 4eaad46..aaf3f86 100644
--- a/printing/backend/cups_helper.cc
+++ b/printing/backend/cups_helper.cc
@@ -36,9 +36,17 @@
 const char kDraftGray[] = "Draft.Gray";
 const char kHighGray[] = "High.Gray";
 
-const char kDuplex[] = "Duplex";
-const char kDuplexNone[] = "None";
-const char kPageSize[] = "PageSize";
+constexpr char kDuplex[] = "Duplex";
+constexpr char kDuplexNone[] = "None";
+constexpr char kDuplexTumble[] = "DuplexTumble";
+constexpr char kPageSize[] = "PageSize";
+
+// Brother printer specific options.
+constexpr char kBrotherDuplex[] = "BRDuplex";
+constexpr char kBrotherMonoColor[] = "BRMonoColor";
+constexpr char kBrotherPrintQuality[] = "BRPrintQuality";
+constexpr char kFullColor[] = "FullColor";
+constexpr char kMono[] = "Mono";
 
 const double kMicronsPerPoint = 10.0f * kHundrethsMMPerInch / kPointsPerInch;
 
@@ -121,6 +129,34 @@
   }
 }
 
+void GetDuplexSettings(ppd_file_t* ppd,
+                       bool* duplex_capable,
+                       DuplexMode* duplex_default) {
+  ppd_choice_t* duplex_choice = ppdFindMarkedChoice(ppd, kDuplex);
+  if (!duplex_choice) {
+    ppd_option_t* option = ppdFindOption(ppd, kDuplex);
+    if (!option)
+      option = ppdFindOption(ppd, kBrotherDuplex);
+    if (!option)
+      return;
+
+    duplex_choice = ppdFindChoice(option, option->defchoice);
+  }
+
+  if (!duplex_choice)
+    return;
+
+  *duplex_capable = true;
+  const char* choice = duplex_choice->choice;
+  if (base::EqualsCaseInsensitiveASCII(choice, kDuplexNone)) {
+    *duplex_default = SIMPLEX;
+  } else if (base::EqualsCaseInsensitiveASCII(choice, kDuplexTumble)) {
+    *duplex_default = SHORT_EDGE;
+  } else {
+    *duplex_default = LONG_EDGE;
+  }
+}
+
 bool GetBasicColorModelSettings(ppd_file_t* ppd,
                                 ColorModel* color_model_for_black,
                                 ColorModel* color_model_for_color,
@@ -209,7 +245,7 @@
                           ColorModel* color_model_for_black,
                           ColorModel* color_model_for_color,
                           bool* color_is_default) {
-  // Samsung printers use "ColorMode" attribute in their ppds.
+  // Samsung printers use "ColorMode" attribute in their PPDs.
   ppd_option_t* color_mode_option = ppdFindOption(ppd, kColorMode);
   if (!color_mode_option)
     return false;
@@ -233,11 +269,45 @@
   return true;
 }
 
+bool GetBrotherColorSettings(ppd_file_t* ppd,
+                             ColorModel* color_model_for_black,
+                             ColorModel* color_model_for_color,
+                             bool* color_is_default) {
+  // Some Brother printers use "BRMonoColor" attribute in their PPDs.
+  // Some Brother printers use "BRPrintQuality" attribute in their PPDs.
+  ppd_option_t* color_mode_option = ppdFindOption(ppd, kBrotherMonoColor);
+  if (!color_mode_option)
+    color_mode_option = ppdFindOption(ppd, kBrotherPrintQuality);
+  if (!color_mode_option)
+    return false;
+
+  if (ppdFindChoice(color_mode_option, kFullColor) ||
+      ppdFindChoice(color_mode_option, kColor)) {
+    *color_model_for_color = BROTHER_COLOR_COLOR;
+  }
+  if (ppdFindChoice(color_mode_option, kBlack) ||
+      ppdFindChoice(color_mode_option, kMono)) {
+    *color_model_for_black = BROTHER_COLOR_BLACK;
+  }
+
+  ppd_choice_t* marked_choice = ppdFindMarkedChoice(ppd, kColorMode);
+  if (!marked_choice) {
+    marked_choice =
+        ppdFindChoice(color_mode_option, color_mode_option->defchoice);
+  }
+  if (marked_choice) {
+    *color_is_default =
+        !base::EqualsCaseInsensitiveASCII(marked_choice->choice, kBlack) &&
+        !base::EqualsCaseInsensitiveASCII(marked_choice->choice, kMono);
+  }
+  return true;
+}
+
 bool GetHPColorSettings(ppd_file_t* ppd,
                         ColorModel* color_model_for_black,
                         ColorModel* color_model_for_color,
                         bool* color_is_default) {
-  // HP printers use "Color/Color Model" attribute in their ppds.
+  // HP printers use "Color/Color Model" attribute in their PPDs.
   ppd_option_t* color_mode_option = ppdFindOption(ppd, kColor);
   if (!color_mode_option)
     return false;
@@ -263,7 +333,7 @@
                                   ColorModel* color_model_for_black,
                                   ColorModel* color_model_for_color,
                                   bool* color_is_default) {
-  // Canon printers use "ProcessColorModel" attribute in their ppds.
+  // Canon printers use "ProcessColorModel" attribute in their PPDs.
   ppd_option_t* color_mode_option =  ppdFindOption(ppd, kProcessColorModel);
   if (!color_mode_option)
     return false;
@@ -301,10 +371,11 @@
   *is_color = is_color_device;
   return (is_color_device &&
           GetBasicColorModelSettings(ppd, cm_black, cm_color, is_color)) ||
-      GetPrintOutModeColorSettings(ppd, cm_black, cm_color, is_color) ||
-      GetColorModeSettings(ppd, cm_black, cm_color, is_color) ||
-      GetHPColorSettings(ppd, cm_black, cm_color, is_color) ||
-      GetProcessColorModelSettings(ppd, cm_black, cm_color, is_color);
+         GetPrintOutModeColorSettings(ppd, cm_black, cm_color, is_color) ||
+         GetColorModeSettings(ppd, cm_black, cm_color, is_color) ||
+         GetHPColorSettings(ppd, cm_black, cm_color, is_color) ||
+         GetBrotherColorSettings(ppd, cm_black, cm_color, is_color) ||
+         GetProcessColorModelSettings(ppd, cm_black, cm_color, is_color);
 }
 
 // Default port for IPP print servers.
@@ -377,20 +448,7 @@
   caps.collate_default = true;
   caps.copies_capable = true;
 
-  ppd_choice_t* duplex_choice = ppdFindMarkedChoice(ppd, kDuplex);
-  if (!duplex_choice) {
-    ppd_option_t* option = ppdFindOption(ppd, kDuplex);
-    if (option)
-      duplex_choice = ppdFindChoice(option, option->defchoice);
-  }
-
-  if (duplex_choice) {
-    caps.duplex_capable = true;
-    if (!base::EqualsCaseInsensitiveASCII(duplex_choice->choice, kDuplexNone))
-      caps.duplex_default = LONG_EDGE;
-    else
-      caps.duplex_default = SIMPLEX;
-  }
+  GetDuplexSettings(ppd, &caps.duplex_capable, &caps.duplex_default);
 
   bool is_color = false;
   ColorModel cm_color = UNKNOWN_COLOR_MODEL, cm_black = UNKNOWN_COLOR_MODEL;
diff --git a/printing/backend/cups_helper_unittest.cc b/printing/backend/cups_helper_unittest.cc
index 7daa1ca..1acd900e 100644
--- a/printing/backend/cups_helper_unittest.cc
+++ b/printing/backend/cups_helper_unittest.cc
@@ -6,7 +6,7 @@
 #include "printing/backend/print_backend.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
-TEST(PrintBackendCupsHelperTest, TestPpdParsingNoColorDuplexLongEdge) {
+TEST(PrintBackendCupsHelperTest, TestPpdParsingNoColorDuplexShortEdge) {
   const char kTestPpdData[] =
       "*PPD-Adobe: \"4.3\"\n\n"
       "*OpenGroup: General/General\n\n"
@@ -36,7 +36,7 @@
   EXPECT_TRUE(caps.collate_default);
   EXPECT_TRUE(caps.copies_capable);
   EXPECT_TRUE(caps.duplex_capable);
-  EXPECT_EQ(printing::LONG_EDGE, caps.duplex_default);
+  EXPECT_EQ(printing::SHORT_EDGE, caps.duplex_default);
   EXPECT_FALSE(caps.color_changeable);
   EXPECT_FALSE(caps.color_default);
 }
@@ -94,7 +94,7 @@
   EXPECT_FALSE(caps.color_default);
 }
 
-TEST(PrintBackendCupsHelperTest, TestPpdParsingColorTrueDuplexLongEdge) {
+TEST(PrintBackendCupsHelperTest, TestPpdParsingColorTrueDuplexShortEdge) {
   const char kTestPpdData[] =
       "*PPD-Adobe: \"4.3\"\n\n"
       "*ColorDevice: True\n"
@@ -124,7 +124,7 @@
   EXPECT_TRUE(caps.collate_default);
   EXPECT_TRUE(caps.copies_capable);
   EXPECT_TRUE(caps.duplex_capable);
-  EXPECT_EQ(printing::LONG_EDGE, caps.duplex_default);
+  EXPECT_EQ(printing::SHORT_EDGE, caps.duplex_default);
   EXPECT_TRUE(caps.color_changeable);
   EXPECT_TRUE(caps.color_default);
 }
@@ -147,7 +147,7 @@
       "\"JCLDatamode=Grayscale GSCmdLine=Grayscale\"\n"
       "*CloseUI: *ColorModel\n"
       "*OpenUI *Duplex/2-Sided Printing: PickOne\n"
-      "*DefaultDuplex: DuplexTumble\n"
+      "*DefaultDuplex: DuplexNoTumble\n"
       "*Duplex None/Off: \"<</Duplex false>>"
       "setpagedevice\"\n"
       "*Duplex DuplexNoTumble/LongEdge: \""
@@ -199,3 +199,59 @@
   EXPECT_EQ(215900, caps.papers[1].size_um.width());
   EXPECT_EQ(355600, caps.papers[1].size_um.height());
 }
+
+TEST(PrintBackendCupsHelperTest, TestPpdParsingBrotherPrinters) {
+  {
+    const char kTestPpdData[] =
+        "*PPD-Adobe: \"4.3\"\n\n"
+        "*ColorDevice: True\n"
+        "*OpenUI *BRPrintQuality/Color/Mono: PickOne\n"
+        "*DefaultBRPrintQuality: Auto\n"
+        "*BRPrintQuality Auto/Auto: \"\"\n"
+        "*BRPrintQuality Color/Color: \"\"\n"
+        "*BRPrintQuality Black/Mono: \"\"\n"
+        "*CloseUI: *BRPrintQuality\n\n";
+
+    printing::PrinterSemanticCapsAndDefaults caps;
+    EXPECT_TRUE(printing::ParsePpdCapabilities("test", kTestPpdData, &caps));
+    EXPECT_TRUE(caps.color_changeable);
+    EXPECT_TRUE(caps.color_default);
+    EXPECT_EQ(printing::BROTHER_COLOR_COLOR, caps.color_model);
+    EXPECT_EQ(printing::BROTHER_COLOR_BLACK, caps.bw_model);
+  }
+  {
+    const char kTestPpdData[] =
+        "*PPD-Adobe: \"4.3\"\n\n"
+        "*ColorDevice: True\n"
+        "*OpenUI *BRMonoColor/Color / Mono: PickOne\n"
+        "*DefaultBRMonoColor: Auto\n"
+        "*BRMonoColor Auto/Auto: \"\"\n"
+        "*BRMonoColor FullColor/Color: \"\"\n"
+        "*BRMonoColor Mono/Mono: \"\"\n"
+        "*CloseUI: *BRMonoColor\n\n";
+
+    printing::PrinterSemanticCapsAndDefaults caps;
+    EXPECT_TRUE(printing::ParsePpdCapabilities("test", kTestPpdData, &caps));
+    EXPECT_TRUE(caps.color_changeable);
+    EXPECT_TRUE(caps.color_default);
+    EXPECT_EQ(printing::BROTHER_COLOR_COLOR, caps.color_model);
+    EXPECT_EQ(printing::BROTHER_COLOR_BLACK, caps.bw_model);
+  }
+  {
+    const char kTestPpdData[] =
+        "*PPD-Adobe: \"4.3\"\n\n"
+        "*ColorDevice: True\n"
+        "*OpenUI *BRDuplex/Two-Sided Printing: PickOne\n"
+        "*OrderDependency: 25 AnySetup *BRDuplex\n"
+        "*DefaultBRDuplex: DuplexTumble\n"
+        "*BRDuplex DuplexTumble/Short-Edge Binding: \"\"\n"
+        "*BRDuplex DuplexNoTumble/Long-Edge Binding: \"\"\n"
+        "*BRDuplex None/Off: \"\"\n"
+        "*CloseUI: *BRDuplex\n\n";
+
+    printing::PrinterSemanticCapsAndDefaults caps;
+    EXPECT_TRUE(printing::ParsePpdCapabilities("test", kTestPpdData, &caps));
+    EXPECT_TRUE(caps.duplex_capable);
+    EXPECT_EQ(printing::SHORT_EDGE, caps.duplex_default);
+  }
+}
diff --git a/printing/print_job_constants.h b/printing/print_job_constants.h
index 1fffdd4a..a39afa5 100644
--- a/printing/print_job_constants.h
+++ b/printing/print_job_constants.h
@@ -132,15 +132,17 @@
   RGB,
   RGB16,
   RGBA,
-  COLORMODE_COLOR,  // Used in samsung printer ppds.
-  COLORMODE_MONOCHROME,  // Used in samsung printer ppds.
-  HP_COLOR_COLOR,  // Used in HP color printer ppds.
-  HP_COLOR_BLACK,  // Used in HP color printer ppds.
-  PRINTOUTMODE_NORMAL,  // Used in foomatic ppds.
-  PRINTOUTMODE_NORMAL_GRAY,  // Used in foomatic ppds.
-  PROCESSCOLORMODEL_CMYK,  // Used in canon printer ppds.
-  PROCESSCOLORMODEL_GREYSCALE,  // Used in canon printer ppds.
-  PROCESSCOLORMODEL_RGB,  // Used in canon printer ppds
+  COLORMODE_COLOR,              // Used in Samsung printer PPDs.
+  COLORMODE_MONOCHROME,         // Used in Samsung printer PPDs.
+  HP_COLOR_COLOR,               // Used in HP color printer PPDs.
+  HP_COLOR_BLACK,               // Used in HP color printer PPDs.
+  PRINTOUTMODE_NORMAL,          // Used in Foomatic PPDs.
+  PRINTOUTMODE_NORMAL_GRAY,     // Used in Foomatic PPDs.
+  PROCESSCOLORMODEL_CMYK,       // Used in Canon printer PPDs.
+  PROCESSCOLORMODEL_GREYSCALE,  // Used in Canon printer PPDs.
+  PROCESSCOLORMODEL_RGB,        // Used in Canon printer PPDs
+  BROTHER_COLOR_COLOR,          // Used in Brother color printer PPDs.
+  BROTHER_COLOR_BLACK,          // Used in Brother color printer PPDs.
 };
 
 // What kind of margins to use.
diff --git a/printing/print_settings.cc b/printing/print_settings.cc
index c35863dc..74d69fb1 100644
--- a/printing/print_settings.cc
+++ b/printing/print_settings.cc
@@ -102,6 +102,12 @@
       color_setting_name->assign(kCUPSProcessColorModel);
       color_value->assign(kRGB);
       break;
+    case BROTHER_COLOR_COLOR:
+      color_value->assign(kColor);
+      break;
+    case BROTHER_COLOR_BLACK:
+      color_value->assign(kBlack);
+      break;
     default:
       color_value->assign(kGrayscale);
       break;
@@ -110,12 +116,11 @@
 #endif  // defined(USE_CUPS)
 
 bool IsColorModelSelected(int color_mode) {
-  return (color_mode != GRAY &&
-          color_mode != BLACK &&
+  return (color_mode != GRAY && color_mode != BLACK &&
           color_mode != PRINTOUTMODE_NORMAL_GRAY &&
           color_mode != COLORMODE_MONOCHROME &&
           color_mode != PROCESSCOLORMODEL_GREYSCALE &&
-          color_mode != HP_COLOR_BLACK);
+          color_mode != BROTHER_COLOR_BLACK && color_mode != HP_COLOR_BLACK);
 }
 
 // Global SequenceNumber used for generating unique cookie values.
diff --git a/printing/printing_context_chromeos.cc b/printing/printing_context_chromeos.cc
index 26f27161..66ab353 100644
--- a/printing/printing_context_chromeos.cc
+++ b/printing/printing_context_chromeos.cc
@@ -46,6 +46,7 @@
     case RGB16:
     case RGBA:
     case COLORMODE_COLOR:
+    case BROTHER_COLOR_COLOR:
     case HP_COLOR_COLOR:
     case PRINTOUTMODE_NORMAL:
     case PROCESSCOLORMODEL_CMYK:
@@ -56,6 +57,7 @@
     case BLACK:
     case GRAYSCALE:
     case COLORMODE_MONOCHROME:
+    case BROTHER_COLOR_BLACK:
     case HP_COLOR_BLACK:
     case PRINTOUTMODE_NORMAL_GRAY:
     case PROCESSCOLORMODEL_GREYSCALE:
diff --git a/remoting/host/continue_window_linux.cc b/remoting/host/continue_window_linux.cc
index 3bc8542..bdbe724 100644
--- a/remoting/host/continue_window_linux.cc
+++ b/remoting/host/continue_window_linux.cc
@@ -102,7 +102,9 @@
       gtk_label_new(l10n_util::GetStringUTF8(IDS_CONTINUE_PROMPT).c_str());
   gtk_label_set_line_wrap(GTK_LABEL(text_label), TRUE);
   // TODO(lambroslambrou): Fix magic numbers, as in disconnect_window_gtk.cc.
+  G_GNUC_BEGIN_IGNORE_DEPRECATIONS;
   gtk_misc_set_padding(GTK_MISC(text_label), 12, 12);
+  G_GNUC_END_IGNORE_DEPRECATIONS;
   gtk_container_add(GTK_CONTAINER(content_area), text_label);
 
   gtk_widget_show_all(content_area);
diff --git a/remoting/host/disconnect_window_linux.cc b/remoting/host/disconnect_window_linux.cc
index ef712da1..d9c95b95f 100644
--- a/remoting/host/disconnect_window_linux.cc
+++ b/remoting/host/disconnect_window_linux.cc
@@ -202,8 +202,10 @@
   // The alignment sets narrow margins at the top and bottom, compared with
   // left and right.  The left margin is made larger to accommodate the
   // window movement gripper.
+  G_GNUC_BEGIN_IGNORE_DEPRECATIONS;
   GtkWidget* align = gtk_alignment_new(0, 0, 1, 1);
   gtk_alignment_set_padding(GTK_ALIGNMENT(align), 8, 8, 24, 12);
+  G_GNUC_END_IGNORE_DEPRECATIONS;
   gtk_container_add(GTK_CONTAINER(window), align);
 
 #if GTK_MAJOR_VERSION == 2
diff --git a/remoting/host/it2me/it2me_confirmation_dialog_linux.cc b/remoting/host/it2me/it2me_confirmation_dialog_linux.cc
index a86a5b0b..ceb8c11 100644
--- a/remoting/host/it2me/it2me_confirmation_dialog_linux.cc
+++ b/remoting/host/it2me/it2me_confirmation_dialog_linux.cc
@@ -124,7 +124,9 @@
           remote_user_email);
   GtkWidget* text_label = gtk_label_new(base::UTF16ToUTF8(dialog_text).c_str());
   gtk_label_set_line_wrap(GTK_LABEL(text_label), true);
+  G_GNUC_BEGIN_IGNORE_DEPRECATIONS;
   gtk_misc_set_padding(GTK_MISC(text_label), 12, 12);
+  G_GNUC_END_IGNORE_DEPRECATIONS;
 
   gtk_container_add(GTK_CONTAINER(content_area), text_label);
   gtk_widget_show_all(content_area);
diff --git a/services/resource_coordinator/memory/coordinator/coordinator_impl.cc b/services/resource_coordinator/memory/coordinator/coordinator_impl.cc
index 5c133f8..c582e23 100644
--- a/services/resource_coordinator/memory/coordinator/coordinator_impl.cc
+++ b/services/resource_coordinator/memory/coordinator/coordinator_impl.cc
@@ -55,11 +55,12 @@
 
   bool another_dump_already_in_progress = !queued_memory_dump_requests_.empty();
 
-  // If this is a periodic memory dump request and there already is another
-  // request in the queue with the same level of detail, there's no point in
-  // enqueuing this request.
+  // If this is a periodic or peak memory dump request and there already is
+  // another request in the queue with the same level of detail, there's no
+  // point in enqueuing this request.
   if (another_dump_already_in_progress &&
-      args.dump_type == base::trace_event::MemoryDumpType::PERIODIC_INTERVAL) {
+      args.dump_type !=
+          base::trace_event::MemoryDumpType::EXPLICITLY_TRIGGERED) {
     for (const auto& request : queued_memory_dump_requests_) {
       if (request.args.level_of_detail == args.level_of_detail) {
         VLOG(1) << base::trace_event::MemoryDumpManager::kLogPrefix << " ("
diff --git a/services/ui/OWNERS b/services/ui/OWNERS
index e9190a40..91d63fae 100644
--- a/services/ui/OWNERS
+++ b/services/ui/OWNERS
@@ -5,3 +5,5 @@
 
 per-file *_type_converter*.*=set noparent
 per-file *_type_converter*.*=file://ipc/SECURITY_OWNERS
+
+# COMPONENT: Internals>MUS
diff --git a/services/ui/gpu/gpu_service.cc b/services/ui/gpu/gpu_service.cc
index f8a6a17e..1bd5543 100644
--- a/services/ui/gpu/gpu_service.cc
+++ b/services/ui/gpu/gpu_service.cc
@@ -265,4 +265,9 @@
 #endif
 }
 
+void GpuService::Stop(const StopCallback& callback) {
+  base::MessageLoop::current()->QuitWhenIdle();
+  callback.Run();
+}
+
 }  // namespace ui
diff --git a/services/ui/gpu/gpu_service.h b/services/ui/gpu/gpu_service.h
index 88dd9aa..69fecd6 100644
--- a/services/ui/gpu/gpu_service.h
+++ b/services/ui/gpu/gpu_service.h
@@ -134,6 +134,7 @@
   void Crash() override;
   void Hang() override;
   void ThrowJavaException() override;
+  void Stop(const StopCallback& callback) override;
 
   scoped_refptr<base::SingleThreadTaskRunner> io_runner_;
 
diff --git a/services/ui/gpu/interfaces/gpu_service.mojom b/services/ui/gpu/interfaces/gpu_service.mojom
index 69bd9d4..cf3a7ec 100644
--- a/services/ui/gpu/interfaces/gpu_service.mojom
+++ b/services/ui/gpu/interfaces/gpu_service.mojom
@@ -53,4 +53,5 @@
   Crash();
   Hang();
   ThrowJavaException();
+  Stop() => ();
 };
diff --git a/third_party/WebKit/LayoutTests/TestExpectations b/third_party/WebKit/LayoutTests/TestExpectations
index 98a0246..2feefd5c 100644
--- a/third_party/WebKit/LayoutTests/TestExpectations
+++ b/third_party/WebKit/LayoutTests/TestExpectations
@@ -2682,56 +2682,6 @@
 crbug.com/697971 [ Mac10.12 ] svg/transforms/svg-css-transforms-clip-path.xhtml [ Failure ]
 crbug.com/697971 [ Mac10.12 ] svg/transforms/svg-css-transforms.xhtml [ Failure ]
 crbug.com/697971 [ Mac10.12 ] svg/zoom/page/zoom-background-images.html [ Failure ]
-crbug.com/697971 [ Mac10.12 ] tables/mozilla/bugs/bug1188.html [ Failure ]
-crbug.com/697971 [ Mac10.12 ] tables/mozilla/bugs/bug1318.html [ Failure ]
-crbug.com/697971 [ Mac10.12 ] tables/mozilla/bugs/bug138725.html [ Failure ]
-crbug.com/697971 [ Mac10.12 ] tables/mozilla/bugs/bug18359.html [ Failure ]
-crbug.com/697971 [ Mac10.12 ] tables/mozilla/bugs/bug194024.html [ Failure ]
-crbug.com/697971 [ Mac10.12 ] tables/mozilla/bugs/bug2479-2.html [ Failure ]
-crbug.com/697971 [ Mac10.12 ] tables/mozilla/bugs/bug2479-3.html [ Failure ]
-crbug.com/697971 [ Mac10.12 ] tables/mozilla/bugs/bug2479-4.html [ Failure ]
-crbug.com/697971 [ Mac10.12 ] tables/mozilla/bugs/bug26178.html [ Failure ]
-crbug.com/697971 [ Mac10.12 ] tables/mozilla/bugs/bug28928.html [ Failure ]
-crbug.com/697971 [ Mac10.12 ] tables/mozilla/bugs/bug29326.html [ Failure ]
-crbug.com/697971 [ Mac10.12 ] tables/mozilla/bugs/bug30559.html [ Failure ]
-crbug.com/697971 [ Mac10.12 ] tables/mozilla/bugs/bug30692.html [ Failure ]
-crbug.com/697971 [ Mac10.12 ] tables/mozilla/bugs/bug33855.html [ Failure ]
-crbug.com/697971 [ Mac10.12 ] tables/mozilla/bugs/bug39209.html [ Failure ]
-crbug.com/697971 [ Mac10.12 ] tables/mozilla/bugs/bug4382.html [ Failure ]
-crbug.com/697971 [ Mac10.12 ] tables/mozilla/bugs/bug4429.html [ Failure ]
-crbug.com/697971 [ Mac10.12 ] tables/mozilla/bugs/bug44505.html [ Failure ]
-crbug.com/697971 [ Mac10.12 ] tables/mozilla/bugs/bug46368-1.html [ Failure ]
-crbug.com/697971 [ Mac10.12 ] tables/mozilla/bugs/bug46368-2.html [ Failure ]
-crbug.com/697971 [ Mac10.12 ] tables/mozilla/bugs/bug46480-1.html [ Failure ]
-crbug.com/697971 [ Mac10.12 ] tables/mozilla/bugs/bug46480-2.html [ Failure ]
-crbug.com/697971 [ Mac10.12 ] tables/mozilla/bugs/bug51037.html [ Failure ]
-crbug.com/697971 [ Mac10.12 ] tables/mozilla/bugs/bug51727.html [ Failure ]
-crbug.com/697971 [ Mac10.12 ] tables/mozilla/bugs/bug52505.html [ Failure ]
-crbug.com/697971 [ Mac10.12 ] tables/mozilla/bugs/bug52506.html [ Failure ]
-crbug.com/697971 [ Mac10.12 ] tables/mozilla/bugs/bug59354.html [ Failure ]
-crbug.com/697971 [ Mac10.12 ] tables/mozilla/bugs/bug60749.html [ Failure ]
-crbug.com/697971 [ Mac10.12 ] tables/mozilla/bugs/bug68912.html [ Failure ]
-crbug.com/697971 [ Mac10.12 ] tables/mozilla/bugs/bug7342.html [ Failure ]
-crbug.com/697971 [ Mac10.12 ] tables/mozilla/bugs/bug8032-1.html [ Failure ]
-crbug.com/697971 [ Mac10.12 ] tables/mozilla/bugs/bug8858.html [ Failure ]
-crbug.com/697971 [ Mac10.12 ] tables/mozilla/bugs/bug96334.html [ Failure ]
-crbug.com/697971 [ Mac10.12 ] tables/mozilla/collapsing_borders/bug41262-4.html [ Failure ]
-crbug.com/697971 [ Mac10.12 ] tables/mozilla/core/bloomberg.html [ Failure ]
-crbug.com/697971 [ Mac10.12 ] tables/mozilla/core/margins.html [ Failure ]
-crbug.com/697971 [ Mac10.12 ] tables/mozilla/dom/tableDom.html [ Failure ]
-crbug.com/697971 [ Mac10.12 ] tables/mozilla/other/move_row.html [ Failure ]
-crbug.com/697971 [ Mac10.12 ] tables/mozilla/other/test3.html [ Failure ]
-crbug.com/697971 [ Mac10.12 ] tables/mozilla/other/test6.html [ Failure ]
-crbug.com/697971 [ Mac10.12 ] tables/mozilla/other/wa_table_thtd_rowspan.html [ Failure ]
-crbug.com/697971 [ Mac10.12 ] tables/mozilla/other/wa_table_tr_align.html [ Failure ]
-crbug.com/697971 [ Mac10.12 ] tables/mozilla_expected_failures/bugs/bug1128.html [ Failure ]
-crbug.com/697971 [ Mac10.12 ] tables/mozilla_expected_failures/bugs/bug1725.html [ Failure ]
-crbug.com/697971 [ Mac10.12 ] tables/mozilla_expected_failures/bugs/bug2479-5.html [ Failure ]
-crbug.com/697971 [ Mac10.12 ] tables/mozilla_expected_failures/bugs/bug58402-2.html [ Failure ]
-crbug.com/697971 [ Mac10.12 ] tables/mozilla_expected_failures/bugs/bug91057.html [ Failure ]
-crbug.com/697971 [ Mac10.12 ] tables/mozilla_expected_failures/collapsing_borders/bug41262-5.html [ Failure ]
-crbug.com/697971 [ Mac10.12 ] tables/mozilla_expected_failures/collapsing_borders/bug41262-6.html [ Failure ]
-crbug.com/697971 [ Mac10.12 ] tables/mozilla_expected_failures/marvin/backgr_fixed-bg.html [ Failure ]
 crbug.com/697971 [ Mac10.12 ] transforms/2d/zoom-menulist.html [ Failure ]
 crbug.com/697971 [ Mac10.12 ] transforms/svg-vs-css.xhtml [ Failure ]
 crbug.com/697971 [ Mac10.12 ] virtual/disable-spinvalidation/paint/invalidation/button-checkbox-click-method-repaint.html [ Failure ]
diff --git a/third_party/WebKit/LayoutTests/fast/canvas/canvas-drawImage-animated-images-expected.txt b/third_party/WebKit/LayoutTests/fast/canvas/canvas-drawImage-animated-images-expected.txt
new file mode 100644
index 0000000..6e2d358bf
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/fast/canvas/canvas-drawImage-animated-images-expected.txt
@@ -0,0 +1,7 @@
+  
+  
+  
+GIF  image test: PASS
+APNG image test: PASS
+WEBP image test: PASS
+
diff --git a/third_party/WebKit/LayoutTests/fast/canvas/canvas-drawImage-animated-images.html b/third_party/WebKit/LayoutTests/fast/canvas/canvas-drawImage-animated-images.html
new file mode 100644
index 0000000..d8d131d
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/fast/canvas/canvas-drawImage-animated-images.html
@@ -0,0 +1,87 @@
+<html>
+<!-- canvas.drawImage() for animated images should draw the initial
+  frame (or poster frame) of the animated image. -->
+
+<body>
+  <style>
+    canvas { width : 315px; height: 236px; }
+  </style>
+  <canvas id='canvas1'></canvas>
+    <img onload='loaded(this, "GIF ", 1)'><br>
+  <canvas id='canvas2'></canvas>
+    <img onload='loaded(this, "APNG", 2)'><br>
+  <canvas id='canvas3'></canvas>
+    <img onload='loaded(this, "WEBP", 3)'><br>
+  <pre id='results'></pre>
+</body>
+
+<script>
+if (window.testRunner) {
+  testRunner.waitUntilDone();
+  testRunner.dumpAsText();
+}
+
+var sources = [
+  '../../images/resources/count-down-color-test.gif',
+  '../../images/resources/count-down-color-test.png',
+  '../../images/resources/count-down-color-test.webp',
+];
+
+function loaded(img, name, i) {
+  // Advance the image away from frame 0 to a frame that has black,
+  // white and gray pixels, viz., no color pixels.
+  if (window.internals) {
+    for (var frame = 0; frame < 10; ++frame)
+      window.internals.advanceImageAnimation(img);
+    runTest();
+  } else {  // Manual test.
+    var noColorFrameDelayInMS = 1500;
+    setTimeout(runTest, noColorFrameDelayInMS);
+  }
+
+  function runTest() {
+    requestAnimationFrame(function test() {
+      results.textContent += name + ' image test: ';
+      drawImageToCanvasTest(img, i);
+      startNextTestIfNeeded(i);
+    });
+  }
+}
+
+function drawImageToCanvasTest(img, i) {
+  var canvas = document.querySelector('#canvas' + i);
+  canvas.width = img.width;
+  canvas.height = img.height;
+
+  var context = canvas.getContext('2d');
+  context.drawImage(img, 0, 0);
+  testImagePixel(context, img);
+}
+
+function testImagePixel(context, img) {
+  var center = { x : img.width / 2, y : img.height / 2 };
+
+  try {
+    var pixel = context.getImageData(center.x, center.y, 1, 1);
+  } catch (exception) {
+    results.textContent += 'FAIL: ' + exception + '\n';
+    return;
+  }
+
+  // Frame 0 has color pixels: PASS if the center pixel is ~green.
+  var green =
+    pixel.data[0] < 5 && pixel.data[1] > 180 && pixel.data[2] < 5;
+  results.textContent += green ? 'PASS\n' : 'FAIL\n';
+}
+
+function startNextTestIfNeeded(i) {
+  if (i < sources.length) {
+    document.querySelectorAll('img')[i].src = sources[i];
+  } else if (window.testRunner) {
+    testRunner.notifyDone();
+  }
+}
+
+startNextTestIfNeeded(0);
+</script>
+</html>
diff --git a/third_party/WebKit/LayoutTests/images/resources/count-down-color-test.gif b/third_party/WebKit/LayoutTests/images/resources/count-down-color-test.gif
new file mode 100644
index 0000000..982730b
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/images/resources/count-down-color-test.gif
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/images/resources/count-down-color-test.png b/third_party/WebKit/LayoutTests/images/resources/count-down-color-test.png
new file mode 100644
index 0000000..fdb750ef
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/images/resources/count-down-color-test.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/images/resources/count-down-color-test.webp b/third_party/WebKit/LayoutTests/images/resources/count-down-color-test.webp
new file mode 100644
index 0000000..fa0ed68
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/images/resources/count-down-color-test.webp
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/inspector/elements/styles-1/color-swatch.html b/third_party/WebKit/LayoutTests/inspector/elements/styles-1/color-swatch.html
index bed51f26..6b94eec 100644
--- a/third_party/WebKit/LayoutTests/inspector/elements/styles-1/color-swatch.html
+++ b/third_party/WebKit/LayoutTests/inspector/elements/styles-1/color-swatch.html
@@ -59,7 +59,7 @@
 
     function popoverVisible()
     {
-        return UI.Popover._popover ? UI.Popover._popover.contentElement.isSelfOrDescendant(document.body) : false;
+        return !!document.body.querySelector('* /deep/ .spectrum-color');
     }
 }
 </script>
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/forms/select/menulist-appearance-rtl-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/fast/forms/select/menulist-appearance-rtl-expected.txt
index 0b3cac7..42fe2cb5 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/fast/forms/select/menulist-appearance-rtl-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/linux/fast/forms/select/menulist-appearance-rtl-expected.txt
@@ -64,8 +64,8 @@
         LayoutBlockFlow (anonymous) at (0,39) size 784x20
           LayoutMenuList {SELECT} at (0,0) size 113x20 [bgcolor=#C0C0C0] [border: (1px solid #A9A9A9)]
             LayoutBlockFlow (anonymous) at (1,1) size 111x18
-              LayoutText (anonymous) at (4,1) size 82x16
-                text run at (4,1) width 82 RTL: "\x{627}\x{644}\x{627}\x{642}\x{62A}\x{631}\x{627}\x{62D}\x{627}\x{62A} / \x{627}\x{644}\x{634}\x{643}\x{627}\x{648}\x{64A}"
+              LayoutText (anonymous) at (4,1) size 91x16
+                text run at (4,1) width 91 RTL: "\x{627}\x{644}\x{627}\x{642}\x{62A}\x{631}\x{627}\x{62D}\x{627}\x{62A} / \x{627}\x{644}\x{634}\x{643}\x{627}\x{648}\x{64A}"
           LayoutText {#text} at (0,0) size 0x0
       LayoutBlockFlow {HR} at (0,329) size 784x2 [border: (1px inset #EEEEEE)]
       LayoutBlockFlow {P} at (0,347) size 784x20
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/text/drawBidiText-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/fast/text/drawBidiText-expected.txt
index 9f95332..a8dbc6f7 100644
--- a/third_party/WebKit/LayoutTests/platform/linux/fast/text/drawBidiText-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/linux/fast/text/drawBidiText-expected.txt
@@ -32,8 +32,8 @@
       LayoutText {#text} at (2,0) size 100x21
         text run at (2,0) width 100 RTL: "\x{5DE}\x{5E9}\x{5D4}\x{5D5} \x{5E2}\x{5DD} \x{5E0}\x{5B4}\x{5E7}\x{5BC}\x{5D5}\x{5BC}\x{5D3}"
     LayoutBlockFlow {OPTION} at (1,116) size 304.69x23
-      LayoutText {#text} at (2,0) size 76x21
-        text run at (2,0) width 76 RTL: "\x{627}\x{644}\x{644}\x{63A}\x{629} \x{627}\x{644}\x{639}\x{631}\x{628}\x{64A}\x{629}"
+      LayoutText {#text} at (2,0) size 70x21
+        text run at (2,0) width 70 RTL: "\x{627}\x{644}\x{644}\x{63A}\x{629} \x{627}\x{644}\x{639}\x{631}\x{628}\x{64A}\x{629}"
     LayoutBlockFlow {OPTION} at (1,139) size 304.69x23
       LayoutText {#text} at (2,0) size 126x21
         text run at (2,0) width 126: "Et volia\x{300}: ATSUI!"
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/forms/select/menulist-appearance-rtl-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/forms/select/menulist-appearance-rtl-expected.txt
index 71bbeb0..94a42d75 100644
--- a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/forms/select/menulist-appearance-rtl-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/forms/select/menulist-appearance-rtl-expected.txt
@@ -64,8 +64,8 @@
         LayoutBlockFlow (anonymous) at (0,36) size 784x19
           LayoutMenuList {SELECT} at (0,1) size 115x18 [bgcolor=#F8F8F8]
             LayoutBlockFlow (anonymous) at (0,0) size 115x21
-              LayoutText (anonymous) at (8,2) size 76x13
-                text run at (8,2) width 76 RTL: "\x{627}\x{644}\x{627}\x{642}\x{62A}\x{631}\x{627}\x{62D}\x{627}\x{62A} / \x{627}\x{644}\x{634}\x{643}\x{627}\x{648}\x{64A}"
+              LayoutText (anonymous) at (8,2) size 84x13
+                text run at (8,2) width 84 RTL: "\x{627}\x{644}\x{627}\x{642}\x{62A}\x{631}\x{627}\x{62D}\x{627}\x{62A} / \x{627}\x{644}\x{634}\x{643}\x{627}\x{648}\x{64A}"
           LayoutText {#text} at (0,0) size 0x0
       LayoutBlockFlow {HR} at (0,309) size 784x2 [border: (1px inset #EEEEEE)]
       LayoutBlockFlow {P} at (0,327) size 784x18
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/text/drawBidiText-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/text/drawBidiText-expected.txt
index 172fc0e..49a191f 100644
--- a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/text/drawBidiText-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/text/drawBidiText-expected.txt
@@ -32,8 +32,8 @@
       LayoutText {#text} at (2,0) size 112x21
         text run at (2,0) width 112 RTL: "\x{5DE}\x{5E9}\x{5D4}\x{5D5} \x{5E2}\x{5DD} \x{5E0}\x{5B4}\x{5E7}\x{5BC}\x{5D5}\x{5BC}\x{5D3}"
     LayoutBlockFlow {OPTION} at (1,113.97) size 321.19x25
-      LayoutText {#text} at (2,0) size 77x21
-        text run at (2,0) width 77 RTL: "\x{627}\x{644}\x{644}\x{63A}\x{629} \x{627}\x{644}\x{639}\x{631}\x{628}\x{64A}\x{629}"
+      LayoutText {#text} at (2,0) size 74x21
+        text run at (2,0) width 74 RTL: "\x{627}\x{644}\x{644}\x{63A}\x{629} \x{627}\x{644}\x{639}\x{631}\x{628}\x{64A}\x{629}"
     LayoutBlockFlow {OPTION} at (1,138.97) size 321.19x22.59
       LayoutText {#text} at (2,0) size 125x21
         text run at (2,0) width 125: "Et volia\x{300}: ATSUI!"
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/writing-mode/border-vertical-lr-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/writing-mode/border-vertical-lr-expected.png
index 76523d0..45884aa 100644
--- a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/writing-mode/border-vertical-lr-expected.png
+++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/writing-mode/border-vertical-lr-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/forms/select/menulist-appearance-rtl-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/forms/select/menulist-appearance-rtl-expected.png
new file mode 100644
index 0000000..1386b807
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/forms/select/menulist-appearance-rtl-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/forms/select/menulist-appearance-rtl-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/forms/select/menulist-appearance-rtl-expected.txt
new file mode 100644
index 0000000..0123fdf
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/forms/select/menulist-appearance-rtl-expected.txt
@@ -0,0 +1,168 @@
+layer at (0,0) size 800x600
+  LayoutView at (0,0) size 800x600
+layer at (0,0) size 800x549
+  LayoutBlockFlow {HTML} at (0,0) size 800x549
+    LayoutBlockFlow {BODY} at (8,16) size 784x525
+      LayoutBlockFlow {P} at (0,0) size 784x36
+        LayoutText {#text} at (0,0) size 758x36
+          text run at (0,0) width 758: "This tests that bidirectional text is correctly rendered in popup controls. The order of the text below each popup button"
+          text run at (0,18) width 600: "should match the order of the select's option text, and the order of the text in the popup menu."
+      LayoutBlockFlow {DL} at (0,52) size 784x168
+        LayoutBlockFlow {DT} at (0,0) size 784x18
+          LayoutText {#text} at (0,0) size 286x18
+            text run at (0,0) width 286: "1) direction: rtl; -webkit-rtl-ordering: logical"
+        LayoutBlockFlow {DD} at (40,18) size 744x38
+          LayoutBlockFlow (anonymous) at (0,0) size 744x19
+            LayoutMenuList {SELECT} at (0,1) size 100x18 [bgcolor=#F8F8F8]
+              LayoutBlockFlow (anonymous) at (0,0) size 100x18
+                LayoutText (anonymous) at (31,2) size 61x13
+                  text run at (31,2) width 43 RTL: "\x{5D0}\x{5E4}\x{5E8}\x{5E1}\x{5DE}\x{5D5}\x{5DF}"
+                  text run at (73,2) width 19: "abc"
+            LayoutText {#text} at (0,0) size 0x0
+          LayoutBlockFlow {DIV} at (0,19) size 100x19
+            LayoutText {#text} at (18,1) size 82x18
+              text run at (18,1) width 60 RTL: "\x{5D0}\x{5E4}\x{5E8}\x{5E1}\x{5DE}\x{5D5}\x{5DF}"
+              text run at (77,1) width 23: "abc"
+        LayoutBlockFlow {DT} at (0,56) size 784x18
+          LayoutText {#text} at (0,0) size 118x18
+            text run at (0,0) width 118: "2) text-align: right"
+        LayoutBlockFlow {DD} at (40,74) size 744x38
+          LayoutBlockFlow (anonymous) at (0,0) size 744x19
+            LayoutMenuList {SELECT} at (0,1) size 200x18 [bgcolor=#F8F8F8]
+              LayoutBlockFlow (anonymous) at (0,0) size 200x18
+                LayoutText (anonymous) at (8,2) size 61x13
+                  text run at (8,2) width 19: "abc"
+                  text run at (26,2) width 43 RTL: "\x{5D0}\x{5E4}\x{5E8}\x{5E1}\x{5DE}\x{5D5}\x{5DF}"
+            LayoutText {#text} at (0,0) size 0x0
+          LayoutBlockFlow {DIV} at (0,19) size 200x19
+            LayoutText {#text} at (0,1) size 82x18
+              text run at (0,1) width 23: "abc"
+              text run at (22,1) width 60 RTL: "\x{5D0}\x{5E4}\x{5E8}\x{5E1}\x{5DE}\x{5D5}\x{5DF}"
+        LayoutBlockFlow {DT} at (0,112) size 784x18
+          LayoutText {#text} at (0,0) size 72x18
+            text run at (0,0) width 72: "3) No style"
+        LayoutBlockFlow {DD} at (40,130) size 744x38
+          LayoutBlockFlow (anonymous) at (0,0) size 744x19
+            LayoutMenuList {SELECT} at (0,1) size 100x18 [bgcolor=#F8F8F8]
+              LayoutBlockFlow (anonymous) at (0,0) size 100x18
+                LayoutText (anonymous) at (8,2) size 61x13
+                  text run at (8,2) width 19: "abc"
+                  text run at (26,2) width 43 RTL: "\x{5D0}\x{5E4}\x{5E8}\x{5E1}\x{5DE}\x{5D5}\x{5DF}"
+            LayoutText {#text} at (0,0) size 0x0
+          LayoutBlockFlow {DIV} at (0,19) size 100x19
+            LayoutText {#text} at (0,1) size 82x18
+              text run at (0,1) width 23: "abc"
+              text run at (22,1) width 60 RTL: "\x{5D0}\x{5E4}\x{5E8}\x{5E1}\x{5DE}\x{5D5}\x{5DF}"
+      LayoutBlockFlow {HR} at (0,236) size 784x2 [border: (1px inset #EEEEEE)]
+      LayoutBlockFlow {DIV} at (0,246) size 784x55
+        LayoutBlockFlow (anonymous) at (0,0) size 784x18
+          LayoutText {#text} at (0,0) size 632x18
+            text run at (0,0) width 632: "The following line and the SELECT element should have same text, and no characters are lacking."
+        LayoutBlockFlow {DIV} at (0,18) size 784x18
+          LayoutText {#text} at (0,0) size 99x16
+            text run at (0,0) width 99 RTL: "\x{627}\x{644}\x{627}\x{642}\x{62A}\x{631}\x{627}\x{62D}\x{627}\x{62A} / \x{627}\x{644}\x{634}\x{643}\x{627}\x{648}\x{64A}"
+        LayoutBlockFlow (anonymous) at (0,36) size 784x19
+          LayoutMenuList {SELECT} at (0,1) size 115x18 [bgcolor=#F8F8F8]
+            LayoutBlockFlow (anonymous) at (0,0) size 115x21
+              LayoutText (anonymous) at (8,2) size 84x13
+                text run at (8,2) width 84 RTL: "\x{627}\x{644}\x{627}\x{642}\x{62A}\x{631}\x{627}\x{62D}\x{627}\x{62A} / \x{627}\x{644}\x{634}\x{643}\x{627}\x{648}\x{64A}"
+          LayoutText {#text} at (0,0) size 0x0
+      LayoutBlockFlow {HR} at (0,309) size 784x2 [border: (1px inset #EEEEEE)]
+      LayoutBlockFlow {P} at (0,327) size 784x18
+        LayoutText {#text} at (0,0) size 709x18
+          text run at (0,0) width 709: "Verify that the alignment and writing direction of each selected item matches the one below the pop-up button."
+layer at (8,377) size 784x164
+  LayoutBlockFlow {DIV} at (0,361) size 784x164
+    LayoutMultiColumnSet (anonymous) at (0,0) size 784x164
+layer at (8,377) size 384x328 backgroundClip at (0,0) size 800x600 clip at (0,0) size 800x600
+  LayoutMultiColumnFlowThread (anonymous) at (0,0) size 384x328
+    LayoutBlockFlow {DIV} at (0,0) size 384x164
+      LayoutMenuList {SELECT} at (0,0) size 350x23 [bgcolor=#F8F8F8] [border: (1px solid #A6A6A6)]
+        LayoutBlockFlow (anonymous) at (1,1) size 348x21
+          LayoutText (anonymous) at (8,1) size 198x18
+            text run at (8,1) width 38: "First "
+            text run at (45,1) width 61 RTL: ") \x{5E8}\x{5D1}\x{5D9}\x{5E2}\x{5D9}\x{5EA}"
+            text run at (105,1) width 21: "03"
+            text run at (125,1) width 46 RTL: "\x{5E9}\x{5E0}\x{5D9}\x{5D4} ("
+            text run at (170,1) width 36: " fifth"
+      LayoutBlockFlow {DIV} at (0,23) size 352x18
+        LayoutText {#text} at (1,1) size 163x16
+          text run at (1,1) width 32: "First "
+          text run at (32,1) width 48 RTL: ") \x{5E8}\x{5D1}\x{5D9}\x{5E2}\x{5D9}\x{5EA}"
+          text run at (80,1) width 17: "03"
+          text run at (96,1) width 37 RTL: "\x{5E9}\x{5E0}\x{5D9}\x{5D4} ("
+          text run at (132,1) width 32: " fifth"
+      LayoutMenuList {SELECT} at (0,41) size 350x23 [bgcolor=#F8F8F8] [border: (1px solid #A6A6A6)]
+        LayoutBlockFlow (anonymous) at (1,1) size 348x21
+          LayoutText (anonymous) at (8,1) size 198x18
+            text run at (8,1) width 31: "fifth"
+            text run at (38,1) width 65 RTL: ") \x{5E8}\x{5D1}\x{5D9}\x{5E2}\x{5D9}\x{5EA} "
+            text run at (103,1) width 21: "03"
+            text run at (123,1) width 50 RTL: " \x{5E9}\x{5E0}\x{5D9}\x{5D4} ("
+            text run at (172,1) width 34: "First"
+      LayoutBlockFlow {DIV} at (0,64) size 352x18
+        LayoutText {#text} at (1,1) size 163x16
+          text run at (1,1) width 27: "fifth"
+          text run at (27,1) width 52 RTL: ") \x{5E8}\x{5D1}\x{5D9}\x{5E2}\x{5D9}\x{5EA} "
+          text run at (78,1) width 17: "03"
+          text run at (94,1) width 42 RTL: " \x{5E9}\x{5E0}\x{5D9}\x{5D4} ("
+          text run at (135,1) width 29: "First"
+      LayoutMenuList {SELECT} at (0,82) size 350x23 [bgcolor=#F8F8F8] [border: (1px solid #A6A6A6)]
+        LayoutBlockFlow (anonymous) at (1,1) size 348x21
+          LayoutText (anonymous) at (8,1) size 198x18
+            text run at (8,1) width 198 LTR override: "First \x{5E9}\x{5E0}\x{5D9}\x{5D4} (03) \x{5E8}\x{5D1}\x{5D9}\x{5E2}\x{5D9}\x{5EA} fifth"
+      LayoutBlockFlow {DIV} at (0,105) size 352x18
+        LayoutText {#text} at (1,1) size 163x16
+          text run at (1,1) width 163 LTR override: "First \x{5E9}\x{5E0}\x{5D9}\x{5D4} (03) \x{5E8}\x{5D1}\x{5D9}\x{5E2}\x{5D9}\x{5EA} fifth"
+      LayoutMenuList {SELECT} at (0,123) size 350x23 [bgcolor=#F8F8F8] [border: (1px solid #A6A6A6)]
+        LayoutBlockFlow (anonymous) at (1,1) size 348x21
+          LayoutText (anonymous) at (8,1) size 198x18
+            text run at (8,1) width 198 RTL override: "First \x{5E9}\x{5E0}\x{5D9}\x{5D4} (03) \x{5E8}\x{5D1}\x{5D9}\x{5E2}\x{5D9}\x{5EA} fifth"
+      LayoutBlockFlow {DIV} at (0,146) size 352x18
+        LayoutText {#text} at (1,1) size 163x16
+          text run at (1,1) width 163 RTL override: "First \x{5E9}\x{5E0}\x{5D9}\x{5D4} (03) \x{5E8}\x{5D1}\x{5D9}\x{5E2}\x{5D9}\x{5EA} fifth"
+    LayoutBlockFlow {DIV} at (0,164) size 384x164
+      LayoutMenuList {SELECT} at (0,0) size 350x23 [bgcolor=#F8F8F8] [border: (1px solid #A6A6A6)]
+        LayoutBlockFlow (anonymous) at (1,1) size 348x21
+          LayoutText (anonymous) at (142,1) size 198x18
+            text run at (142,1) width 39: "First "
+            text run at (180,1) width 60 RTL: ") \x{5E8}\x{5D1}\x{5D9}\x{5E2}\x{5D9}\x{5EA}"
+            text run at (239,1) width 21: "03"
+            text run at (259,1) width 46 RTL: "\x{5E9}\x{5E0}\x{5D9}\x{5D4} ("
+            text run at (304,1) width 36: " fifth"
+      LayoutBlockFlow {DIV} at (0,23) size 352x18
+        LayoutText {#text} at (188,1) size 163x16
+          text run at (188,1) width 33: "First "
+          text run at (220,1) width 48 RTL: ") \x{5E8}\x{5D1}\x{5D9}\x{5E2}\x{5D9}\x{5EA}"
+          text run at (267,1) width 18: "03"
+          text run at (284,1) width 37 RTL: "\x{5E9}\x{5E0}\x{5D9}\x{5D4} ("
+          text run at (320,1) width 31: " fifth"
+      LayoutMenuList {SELECT} at (0,41) size 350x23 [bgcolor=#F8F8F8] [border: (1px solid #A6A6A6)]
+        LayoutBlockFlow (anonymous) at (1,1) size 348x21
+          LayoutText (anonymous) at (142,1) size 198x18
+            text run at (142,1) width 32: "fifth"
+            text run at (173,1) width 65 RTL: ") \x{5E8}\x{5D1}\x{5D9}\x{5E2}\x{5D9}\x{5EA} "
+            text run at (237,1) width 21: "03"
+            text run at (257,1) width 50 RTL: " \x{5E9}\x{5E0}\x{5D9}\x{5D4} ("
+            text run at (306,1) width 34: "First"
+      LayoutBlockFlow {DIV} at (0,64) size 352x18
+        LayoutText {#text} at (188,1) size 163x16
+          text run at (188,1) width 28: "fifth"
+          text run at (215,1) width 52 RTL: ") \x{5E8}\x{5D1}\x{5D9}\x{5E2}\x{5D9}\x{5EA} "
+          text run at (266,1) width 17: "03"
+          text run at (282,1) width 42 RTL: " \x{5E9}\x{5E0}\x{5D9}\x{5D4} ("
+          text run at (323,1) width 28: "First"
+      LayoutMenuList {SELECT} at (0,82) size 350x23 [bgcolor=#F8F8F8] [border: (1px solid #A6A6A6)]
+        LayoutBlockFlow (anonymous) at (1,1) size 348x21
+          LayoutText (anonymous) at (142,1) size 198x18
+            text run at (142,1) width 198 LTR override: "First \x{5E9}\x{5E0}\x{5D9}\x{5D4} (03) \x{5E8}\x{5D1}\x{5D9}\x{5E2}\x{5D9}\x{5EA} fifth"
+      LayoutBlockFlow {DIV} at (0,105) size 352x18
+        LayoutText {#text} at (188,1) size 163x16
+          text run at (188,1) width 163 LTR override: "First \x{5E9}\x{5E0}\x{5D9}\x{5D4} (03) \x{5E8}\x{5D1}\x{5D9}\x{5E2}\x{5D9}\x{5EA} fifth"
+      LayoutMenuList {SELECT} at (0,123) size 350x23 [bgcolor=#F8F8F8] [border: (1px solid #A6A6A6)]
+        LayoutBlockFlow (anonymous) at (1,1) size 348x21
+          LayoutText (anonymous) at (142,1) size 198x18
+            text run at (142,1) width 198 RTL override: "First \x{5E9}\x{5E0}\x{5D9}\x{5D4} (03) \x{5E8}\x{5D1}\x{5D9}\x{5E2}\x{5D9}\x{5EA} fifth"
+      LayoutBlockFlow {DIV} at (0,146) size 352x18
+        LayoutText {#text} at (188,1) size 163x16
+          text run at (188,1) width 163 RTL override: "First \x{5E9}\x{5E0}\x{5D9}\x{5D4} (03) \x{5E8}\x{5D1}\x{5D9}\x{5E2}\x{5D9}\x{5EA} fifth"
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/text/drawBidiText-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/text/drawBidiText-expected.txt
new file mode 100644
index 0000000..e91f5d3
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/text/drawBidiText-expected.txt
@@ -0,0 +1,56 @@
+layer at (0,0) size 800x600
+  LayoutView at (0,0) size 800x600
+layer at (0,0) size 800x600
+  LayoutBlockFlow {HTML} at (0,0) size 800x600
+    LayoutBlockFlow {BODY} at (8,8) size 784x584
+      LayoutBlockFlow {P} at (0,0) size 784x18
+        LayoutText {#text} at (0,0) size 285x18
+          text run at (0,0) width 285: "This tests GraphicsContext::drawBidiText()."
+layer at (8,42) size 345x227 clip at (9,43) size 332x225
+  LayoutListBox {SELECT} at (0,34) size 345.22x227 [bgcolor=#FFFFFF] [border: (1px solid #999999)]
+    LayoutBlockFlow {OPTION} at (1,1) size 332.22x22.59
+      LayoutText {#text} at (2,0) size 223x21
+        text run at (2,0) width 43: "First "
+        text run at (44,0) width 68 RTL: ") \x{5E8}\x{5D1}\x{5D9}\x{5E2}\x{5D9}\x{5EA}"
+        text run at (111,0) width 24: "03"
+        text run at (134,0) width 51 RTL: "\x{5E9}\x{5E0}\x{5D9}\x{5D4} ("
+        text run at (184,0) width 41: " fifth"
+    LayoutBlockFlow {OPTION} at (1,23.59) size 332.22x22.59
+      LayoutText {#text} at (108,0) size 223x21
+        text run at (108,0) width 35: "fifth"
+        text run at (142,0) width 73 RTL: ") \x{5E8}\x{5D1}\x{5D9}\x{5E2}\x{5D9}\x{5EA} "
+        text run at (214,0) width 24: "03"
+        text run at (237,0) width 56 RTL: " \x{5E9}\x{5E0}\x{5D9}\x{5D4} ("
+        text run at (292,0) width 39: "First"
+    LayoutBlockFlow {OPTION} at (1,46.19) size 332.22x22.59
+      LayoutText {#text} at (2,0) size 223x21
+        text run at (2,0) width 223 LTR override: "First \x{5E9}\x{5E0}\x{5D9}\x{5D4} (03) \x{5E8}\x{5D1}\x{5D9}\x{5E2}\x{5D9}\x{5EA} fifth"
+    LayoutBlockFlow {OPTION} at (1,68.78) size 332.22x22.59
+      LayoutText {#text} at (107,0) size 224x21
+        text run at (107,0) width 224 RTL override: "First \x{5E9}\x{5E0}\x{5D9}\x{5D4} (03) \x{5E8}\x{5D1}\x{5D9}\x{5E2}\x{5D9}\x{5EA} fifth"
+    LayoutBlockFlow {OPTION} at (1,91.38) size 332.22x22.59
+      LayoutText {#text} at (2,0) size 112x21
+        text run at (2,0) width 112 RTL: "\x{5DE}\x{5E9}\x{5D4}\x{5D5} \x{5E2}\x{5DD} \x{5E0}\x{5B4}\x{5E7}\x{5BC}\x{5D5}\x{5BC}\x{5D3}"
+    LayoutBlockFlow {OPTION} at (1,113.97) size 332.22x25
+      LayoutText {#text} at (2,0) size 74x21
+        text run at (2,0) width 74 RTL: "\x{627}\x{644}\x{644}\x{63A}\x{629} \x{627}\x{644}\x{639}\x{631}\x{628}\x{64A}\x{629}"
+    LayoutBlockFlow {OPTION} at (1,138.97) size 332.22x22.59
+      LayoutText {#text} at (2,0) size 130x21
+        text run at (2,0) width 130: "Et volia\x{300}: ATSUI!"
+    LayoutBlockFlow {OPTION} at (1,161.56) size 332.22x22.59
+      LayoutText {#text} at (2,0) size 302x21
+        text run at (2,0) width 97: "Directional "
+        text run at (98,0) width 80 RTL override: "\x{202E}overrides"
+        text run at (177,0) width 127: "\x{202C} are confusing."
+    LayoutBlockFlow {OPTION} at (1,184.16) size 332.22x22.59
+      LayoutText {#text} at (2,0) size 329x21
+        text run at (2,0) width 87: "She said \x{201C}"
+        text run at (88,0) width 76 RTL: " \x{5D1}\x{5DE}\x{5D6}\x{5D5}\x{5D5}\x{5D3}\x{5D4}!"
+        text run at (163,0) width 37: "TNT"
+        text run at (199,0) width 25 RTL: "\x{202B}\x{5D9}\x{5E9} "
+        text run at (223,0) width 108: "\x{202C}\x{201D} and ran off"
+layer at (8,269) size 377x18 clip at (9,270) size 364x16
+  LayoutListBox {SELECT} at (0,261) size 377.11x18 [bgcolor=#FFFFFF] [border: (1px solid #999999)]
+    LayoutBlockFlow {OPTION} at (1,1) size 364.11x16
+      LayoutText {#text} at (2,0) size 361x15
+        text run at (2,0) width 361: "There are two ways to measure text: my way and the wrong way"
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/writing-mode/Kusa-Makura-background-canvas-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/writing-mode/Kusa-Makura-background-canvas-expected.txt
new file mode 100644
index 0000000..c437d88a
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/writing-mode/Kusa-Makura-background-canvas-expected.txt
@@ -0,0 +1,2910 @@
+layer at (0,0) size 800x600 scrollX 3551.00 scrollWidth 4351
+  LayoutView at (0,0) size 800x600
+layer at (-3551,0) size 4351x600 backgroundClip at (0,0) size 800x600 clip at (0,0) size 800x600
+  LayoutBlockFlow {HTML} at (0,0) size 4351.34x600
+    LayoutBlockFlow {BODY} at (60,48) size 4231.34x504
+      LayoutBlockFlow {H1} at (0,0) size 48x504
+        LayoutText {#text} at (5,0) size 37x64
+          text run at (5,0) width 64: "\x{8349}\x{6795}"
+      LayoutBlockFlow {H2} at (69.44,0) size 36x504
+        LayoutText {#text} at (4,0) size 28x96
+          text run at (4,0) width 96: "\x{590F}\x{76EE}\x{6F31}\x{77F3}"
+      LayoutBlockFlow {DIV} at (125.34,0) size 4106x504
+        LayoutBlockFlow (anonymous) at (0,0) size 2286x504
+          LayoutBR {BR} at (0,0) size 18x0
+          LayoutBR {BR} at (18,0) size 18x0
+          LayoutBR {BR} at (36,0) size 18x0
+          LayoutText {#text} at (56,0) size 18x144
+            text run at (56,0) width 144: "\x{3000}\x{3000}\x{3000}\x{3000}\x{3000}\x{3000}\x{3000}\x{3000}\x{4E00}"
+          LayoutBR {BR} at (56,143) size 18x1
+          LayoutBR {BR} at (76,0) size 18x0
+          LayoutText {#text} at (104,0) size 18x16
+            text run at (104,0) width 16: "\x{3000}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x34
+            LayoutRubyRun (anonymous) at (102,15) size 22x36
+              LayoutRubyText {RT} at (-10,0) size 13x36
+                LayoutText {#text} at (2,0) size 10x36
+                  text run at (2,0) width 36: "\x{3084}\x{307E}\x{307F}\x{3061}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x36
+                LayoutInline {RB} at (0,0) size 18x34
+                  LayoutText {#text} at (2,1) size 18x34
+                    text run at (2,1) width 34: "\x{5C71}\x{8DEF}"
+          LayoutText {#text} at (104,50) size 18x208
+            text run at (104,50) width 208: "\x{3092}\x{767B}\x{308A}\x{306A}\x{304C}\x{3089}\x{3001}\x{3053}\x{3046}\x{8003}\x{3048}\x{305F}\x{3002}"
+          LayoutBR {BR} at (104,258) size 18x0
+          LayoutText {#text} at (132,0) size 18x16
+            text run at (132,0) width 16: "\x{3000}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (130,16) size 22x16
+              LayoutRubyText {RT} at (-10,0) size 13x16
+                LayoutText {#text} at (2,3) size 10x10
+                  text run at (2,3) width 9: "\x{3061}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x16
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,0) size 18x16
+                    text run at (2,0) width 16: "\x{667A}"
+          LayoutText {#text} at (132,32) size 18x64
+            text run at (132,32) width 64: "\x{306B}\x{50CD}\x{3051}\x{3070}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (130,95) size 22x18
+              LayoutRubyText {RT} at (-10,0) size 13x18
+                LayoutText {#text} at (2,0) size 10x18
+                  text run at (2,0) width 18: "\x{304B}\x{3069}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x18
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,1) size 18x16
+                    text run at (2,1) width 16: "\x{89D2}"
+          LayoutText {#text} at (132,112) size 18x64
+            text run at (132,112) width 64: "\x{304C}\x{7ACB}\x{3064}\x{3002}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x19
+            LayoutRubyRun (anonymous) at (130,172) size 22x27
+              LayoutRubyText {RT} at (-10,0) size 13x27
+                LayoutText {#text} at (2,0) size 10x27
+                  text run at (2,0) width 27: "\x{3058}\x{3087}\x{3046}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x27
+                LayoutInline {RB} at (0,0) size 18x17
+                  LayoutText {#text} at (2,5) size 18x17
+                    text run at (2,5) width 16: "\x{60C5}"
+          LayoutText {#text} at (132,195) size 18x16
+            text run at (132,195) width 16: "\x{306B}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (130,210) size 22x18
+              LayoutRubyText {RT} at (-10,0) size 13x18
+                LayoutText {#text} at (2,0) size 10x18
+                  text run at (2,0) width 18: "\x{3055}\x{304A}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x18
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,1) size 18x16
+                    text run at (2,1) width 16: "\x{68F9}"
+          LayoutText {#text} at (132,227) size 18x176
+            text run at (132,227) width 176: "\x{3055}\x{305B}\x{3070}\x{6D41}\x{3055}\x{308C}\x{308B}\x{3002}\x{610F}\x{5730}\x{3092}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (130,402) size 22x18
+              LayoutRubyText {RT} at (-10,0) size 13x18
+                LayoutText {#text} at (2,0) size 10x18
+                  text run at (2,0) width 18: "\x{3068}\x{304A}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x18
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,1) size 18x16
+                    text run at (2,1) width 16: "\x{901A}"
+          LayoutText {#text} at (132,419) size 18x32
+            text run at (132,419) width 32: "\x{305B}\x{3070}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x42
+            LayoutRubyRun (anonymous) at (130,448) size 22x45
+              LayoutRubyText {RT} at (-10,0) size 13x45
+                LayoutText {#text} at (2,0) size 10x45
+                  text run at (2,0) width 45: "\x{304D}\x{3085}\x{3046}\x{304F}\x{3064}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x45
+                LayoutInline {RB} at (0,0) size 18x39
+                  LayoutText {#text} at (2,3) size 18x39
+                    text run at (2,3) width 38: "\x{7AAE}\x{5C48}"
+          LayoutText {#text} at (154,0) size 18x256
+            text run at (154,0) width 256: "\x{3060}\x{3002}\x{3068}\x{304B}\x{304F}\x{306B}\x{4EBA}\x{306E}\x{4E16}\x{306F}\x{4F4F}\x{307F}\x{306B}\x{304F}\x{3044}\x{3002}"
+          LayoutBR {BR} at (154,256) size 18x0
+          LayoutText {#text} at (182,0) size 18x112
+            text run at (182,0) width 112: "\x{3000}\x{4F4F}\x{307F}\x{306B}\x{304F}\x{3055}\x{304C}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x17
+            LayoutRubyRun (anonymous) at (180,110.98) size 22x18
+              LayoutRubyText {RT} at (-10,0) size 13x18
+                LayoutText {#text} at (2,0) size 10x18
+                  text run at (2,0) width 18: "\x{3053}\x{3046}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x18
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,1) size 18x16
+                    text run at (2,1) width 16: "\x{9AD8}"
+          LayoutText {#text} at (182,127) size 46x496
+            text run at (182,127) width 368: "\x{3058}\x{308B}\x{3068}\x{3001}\x{5B89}\x{3044}\x{6240}\x{3078}\x{5F15}\x{304D}\x{8D8A}\x{3057}\x{305F}\x{304F}\x{306A}\x{308B}\x{3002}\x{3069}\x{3053}\x{3078}\x{8D8A}\x{3057}\x{3066}"
+            text run at (210,0) width 112: "\x{3082}\x{4F4F}\x{307F}\x{306B}\x{304F}\x{3044}\x{3068}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (208,111) size 22x18
+              LayoutRubyText {RT} at (-10,0) size 13x18
+                LayoutText {#text} at (2,0) size 10x18
+                  text run at (2,0) width 18: "\x{3055}\x{3068}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x18
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,1) size 18x16
+                    text run at (2,1) width 16: "\x{609F}"
+          LayoutText {#text} at (210,128) size 18x160
+            text run at (210,128) width 160: "\x{3063}\x{305F}\x{6642}\x{3001}\x{8A69}\x{304C}\x{751F}\x{308C}\x{3066}\x{3001}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (208,288) size 22x16
+              LayoutRubyText {RT} at (-10,0) size 13x16
+                LayoutText {#text} at (2,3) size 10x10
+                  text run at (2,3) width 9: "\x{3048}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x16
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,0) size 18x16
+                    text run at (2,0) width 16: "\x{753B}"
+          LayoutText {#text} at (210,304) size 18x80
+            text run at (210,304) width 80: "\x{304C}\x{51FA}\x{6765}\x{308B}\x{3002}"
+          LayoutBR {BR} at (210,384) size 18x0
+          LayoutText {#text} at (232,0) size 18x16
+            text run at (232,0) width 16: "\x{3000}"
+          LayoutInline {STRONG} at (0,0) size 18x48
+            LayoutText {#text} at (232,16) size 18x48
+              text run at (232,16) width 48: "\x{4EBA}\x{306E}\x{4E16}"
+          LayoutText {#text} at (232,64) size 18x432
+            text run at (232,64) width 432: "\x{3092}\x{4F5C}\x{3063}\x{305F}\x{3082}\x{306E}\x{306F}\x{795E}\x{3067}\x{3082}\x{306A}\x{3051}\x{308C}\x{3070}\x{9B3C}\x{3067}\x{3082}\x{306A}\x{3044}\x{3002}\x{3084}\x{306F}\x{308A}\x{5411}\x{3046}\x{4E09}\x{8ED2}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x42
+            LayoutRubyRun (anonymous) at (258,0) size 22x45
+              LayoutRubyText {RT} at (-10,0) size 13x45
+                LayoutText {#text} at (2,0) size 10x45
+                  text run at (2,0) width 45: "\x{308A}\x{3087}\x{3046}\x{3069}\x{306A}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x45
+                LayoutInline {RB} at (0,0) size 18x39
+                  LayoutText {#text} at (2,3) size 18x39
+                    text run at (2,3) width 38: "\x{4E21}\x{96A3}"
+          LayoutText {#text} at (260,42) size 18x384
+            text run at (260,42) width 384: "\x{308A}\x{306B}\x{3061}\x{3089}\x{3061}\x{3089}\x{3059}\x{308B}\x{305F}\x{3060}\x{306E}\x{4EBA}\x{3067}\x{3042}\x{308B}\x{3002}\x{305F}\x{3060}\x{306E}\x{4EBA}\x{304C}\x{4F5C}\x{3063}\x{305F}"
+          LayoutInline {STRONG} at (0,0) size 18x48
+            LayoutText {#text} at (260,426) size 18x48
+              text run at (260,426) width 48: "\x{4EBA}\x{306E}\x{4E16}"
+          LayoutText {#text} at (260,474) size 40x490
+            text run at (260,474) width 16: "\x{304C}"
+            text run at (282,0) width 352: "\x{4F4F}\x{307F}\x{306B}\x{304F}\x{3044}\x{304B}\x{3089}\x{3068}\x{3066}\x{3001}\x{8D8A}\x{3059}\x{56FD}\x{306F}\x{3042}\x{308B}\x{307E}\x{3044}\x{3002}\x{3042}\x{308C}\x{3070}"
+          LayoutInline {STRONG} at (0,0) size 18x64
+            LayoutText {#text} at (282,352) size 18x64
+              text run at (282,352) width 64: "\x{4EBA}\x{3067}\x{306A}\x{3057}"
+          LayoutText {#text} at (282,416) size 40x496
+            text run at (282,416) width 80: "\x{306E}\x{56FD}\x{3078}\x{884C}\x{304F}"
+            text run at (304,0) width 80: "\x{3070}\x{304B}\x{308A}\x{3060}\x{3002}"
+          LayoutInline {STRONG} at (0,0) size 18x64
+            LayoutText {#text} at (304,80) size 18x64
+              text run at (304,80) width 64: "\x{4EBA}\x{3067}\x{306A}\x{3057}"
+          LayoutText {#text} at (304,144) size 18x48
+            text run at (304,144) width 48: "\x{306E}\x{56FD}\x{306F}"
+          LayoutInline {STRONG} at (0,0) size 18x48
+            LayoutText {#text} at (304,192) size 18x48
+              text run at (304,192) width 48: "\x{4EBA}\x{306E}\x{4E16}"
+          LayoutText {#text} at (304,240) size 18x208
+            text run at (304,240) width 208: "\x{3088}\x{308A}\x{3082}\x{306A}\x{304A}\x{4F4F}\x{307F}\x{306B}\x{304F}\x{304B}\x{308D}\x{3046}\x{3002}"
+          LayoutBR {BR} at (304,448) size 18x0
+          LayoutText {#text} at (326,0) size 18x496
+            text run at (326,0) width 496: "\x{3000}\x{8D8A}\x{3059}\x{4E8B}\x{306E}\x{306A}\x{3089}\x{306C}\x{4E16}\x{304C}\x{4F4F}\x{307F}\x{306B}\x{304F}\x{3051}\x{308C}\x{3070}\x{3001}\x{4F4F}\x{307F}\x{306B}\x{304F}\x{3044}\x{6240}\x{3092}\x{3069}\x{308C}\x{307B}\x{3069}\x{304B}\x{3001}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x35
+            LayoutRubyRun (anonymous) at (352,0) size 22x36
+              LayoutRubyText {RT} at (-10,0) size 13x36
+                LayoutText {#text} at (2,0) size 10x36
+                  text run at (2,0) width 36: "\x{304F}\x{3064}\x{308D}\x{3052}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x36
+                LayoutInline {RB} at (0,0) size 18x34
+                  LayoutText {#text} at (2,1) size 18x34
+                    text run at (2,1) width 34: "\x{5BDB}\x{5BB9}"
+          LayoutText {#text} at (354,35) size 18x32
+            text run at (354,35) width 32: "\x{3066}\x{3001}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (352,66) size 22x18
+              LayoutRubyText {RT} at (-10,0) size 13x18
+                LayoutText {#text} at (2,0) size 10x18
+                  text run at (2,0) width 18: "\x{3064}\x{304B}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x18
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,1) size 18x16
+                    text run at (2,1) width 16: "\x{675F}"
+          LayoutText {#text} at (354,83) size 18x16
+            text run at (354,83) width 16: "\x{306E}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (352,99) size 22x16
+              LayoutRubyText {RT} at (-10,0) size 13x16
+                LayoutText {#text} at (2,3) size 10x10
+                  text run at (2,3) width 9: "\x{307E}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x16
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,0) size 18x16
+                    text run at (2,0) width 16: "\x{9593}"
+          LayoutText {#text} at (354,115) size 46x499
+            text run at (354,115) width 384: "\x{306E}\x{547D}\x{3092}\x{3001}\x{675F}\x{306E}\x{9593}\x{3067}\x{3082}\x{4F4F}\x{307F}\x{3088}\x{304F}\x{305B}\x{306D}\x{3070}\x{306A}\x{3089}\x{306C}\x{3002}\x{3053}\x{3053}\x{306B}\x{8A69}"
+            text run at (382,0) width 352: "\x{4EBA}\x{3068}\x{3044}\x{3046}\x{5929}\x{8077}\x{304C}\x{51FA}\x{6765}\x{3066}\x{3001}\x{3053}\x{3053}\x{306B}\x{753B}\x{5BB6}\x{3068}\x{3044}\x{3046}\x{4F7F}\x{547D}\x{304C}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (380,351) size 22x18
+              LayoutRubyText {RT} at (-10,0) size 13x18
+                LayoutText {#text} at (2,0) size 10x18
+                  text run at (2,0) width 18: "\x{304F}\x{3060}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x18
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,1) size 18x16
+                    text run at (2,1) width 16: "\x{964D}"
+          LayoutText {#text} at (382,368) size 46x496
+            text run at (382,368) width 128: "\x{308B}\x{3002}\x{3042}\x{3089}\x{3086}\x{308B}\x{82B8}\x{8853}"
+            text run at (410,0) width 112: "\x{306E}\x{58EB}\x{306F}\x{4EBA}\x{306E}\x{4E16}\x{3092}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x32
+            LayoutRubyRun (anonymous) at (408,112) size 22x32
+              LayoutRubyText {RT} at (-10,0) size 13x32
+                LayoutText {#text} at (2,0) size 10x31
+                  text run at (2,0) width 30: "\x{306E}\x{3069}\x{304B}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x32
+                LayoutInline {RB} at (0,0) size 18x32
+                  LayoutText {#text} at (2,0) size 18x32
+                    text run at (2,0) width 32: "\x{9577}\x{9591}"
+          LayoutText {#text} at (410,144) size 18x208
+            text run at (410,144) width 208: "\x{306B}\x{3057}\x{3001}\x{4EBA}\x{306E}\x{5FC3}\x{3092}\x{8C4A}\x{304B}\x{306B}\x{3059}\x{308B}\x{304C}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (408,351) size 22x18
+              LayoutRubyText {RT} at (-10,0) size 13x18
+                LayoutText {#text} at (2,0) size 10x18
+                  text run at (2,0) width 18: "\x{3086}\x{3048}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x18
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,1) size 18x16
+                    text run at (2,1) width 16: "\x{6545}"
+          LayoutText {#text} at (410,368) size 18x16
+            text run at (410,368) width 16: "\x{306B}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (408,383) size 22x18
+              LayoutRubyText {RT} at (-10,0) size 13x18
+                LayoutText {#text} at (2,0) size 10x18
+                  text run at (2,0) width 18: "\x{305F}\x{3063}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x18
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,1) size 18x16
+                    text run at (2,1) width 16: "\x{5C0A}"
+          LayoutText {#text} at (410,400) size 18x48
+            text run at (410,400) width 48: "\x{3068}\x{3044}\x{3002}"
+          LayoutBR {BR} at (410,448) size 18x0
+          LayoutText {#text} at (438,0) size 18x240
+            text run at (438,0) width 240: "\x{3000}\x{4F4F}\x{307F}\x{306B}\x{304F}\x{304D}\x{4E16}\x{304B}\x{3089}\x{3001}\x{4F4F}\x{307F}\x{306B}\x{304F}\x{304D}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x20
+            LayoutRubyRun (anonymous) at (436,235.98) size 22x27
+              LayoutRubyText {RT} at (-10,0) size 13x27
+                LayoutText {#text} at (2,0) size 10x27
+                  text run at (2,0) width 27: "\x{308F}\x{305A}\x{3089}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x27
+                LayoutInline {RB} at (0,0) size 18x17
+                  LayoutText {#text} at (2,5) size 18x17
+                    text run at (2,5) width 16: "\x{7169}"
+          LayoutText {#text} at (438,258) size 46x499
+            text run at (438,258) width 240: "\x{3044}\x{3092}\x{5F15}\x{304D}\x{629C}\x{3044}\x{3066}\x{3001}\x{3042}\x{308A}\x{304C}\x{305F}\x{3044}\x{4E16}\x{754C}"
+            text run at (466,0) width 256: "\x{3092}\x{307E}\x{306E}\x{3042}\x{305F}\x{308A}\x{306B}\x{5199}\x{3059}\x{306E}\x{304C}\x{8A69}\x{3067}\x{3042}\x{308B}\x{3001}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (464,256) size 22x16
+              LayoutRubyText {RT} at (-10,0) size 13x16
+                LayoutText {#text} at (2,3) size 10x10
+                  text run at (2,3) width 9: "\x{3048}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x16
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,0) size 18x16
+                    text run at (2,0) width 16: "\x{753B}"
+          LayoutText {#text} at (466,272) size 46x496
+            text run at (466,272) width 224: "\x{3067}\x{3042}\x{308B}\x{3002}\x{3042}\x{308B}\x{306F}\x{97F3}\x{697D}\x{3068}\x{5F6B}\x{523B}\x{3067}\x{3042}"
+            text run at (494,0) width 96: "\x{308B}\x{3002}\x{3053}\x{307E}\x{304B}\x{306B}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (492,96) size 22x16
+              LayoutRubyText {RT} at (-10,0) size 13x16
+                LayoutText {#text} at (2,3) size 10x10
+                  text run at (2,3) width 9: "\x{3044}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x16
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,0) size 18x16
+                    text run at (2,0) width 16: "\x{4E91}"
+          LayoutText {#text} at (494,112) size 46x496
+            text run at (494,112) width 384: "\x{3048}\x{3070}\x{5199}\x{3055}\x{306A}\x{3044}\x{3067}\x{3082}\x{3088}\x{3044}\x{3002}\x{305F}\x{3060}\x{307E}\x{306E}\x{3042}\x{305F}\x{308A}\x{306B}\x{898B}\x{308C}\x{3070}\x{3001}\x{305D}"
+            text run at (522,0) width 144: "\x{3053}\x{306B}\x{8A69}\x{3082}\x{751F}\x{304D}\x{3001}\x{6B4C}\x{3082}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (520,144) size 22x16
+              LayoutRubyText {RT} at (-10,0) size 13x16
+                LayoutText {#text} at (2,3) size 10x10
+                  text run at (2,3) width 9: "\x{308F}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x16
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,0) size 18x16
+                    text run at (2,0) width 16: "\x{6E67}"
+          LayoutText {#text} at (522,160) size 18x192
+            text run at (522,160) width 192: "\x{304F}\x{3002}\x{7740}\x{60F3}\x{3092}\x{7D19}\x{306B}\x{843D}\x{3055}\x{306C}\x{3068}\x{3082}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x39
+            LayoutRubyRun (anonymous) at (520,349) size 22x45
+              LayoutRubyText {RT} at (-10,0) size 13x45
+                LayoutText {#text} at (2,0) size 10x45
+                  text run at (2,0) width 45: "\x{304D}\x{3085}\x{3046}\x{305D}\x{3046}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x45
+                LayoutInline {RB} at (0,0) size 18x39
+                  LayoutText {#text} at (2,3) size 18x23
+                    text run at (2,3) width 22: "\x{7486}"
+                  LayoutText {#text} at (2,25) size 18x17
+                    text run at (2,25) width 16: "\x{93D8}"
+          LayoutText {#text} at (522,391) size 18x16
+            text run at (522,391) width 16: "\x{306E}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (520,406) size 22x18
+              LayoutRubyText {RT} at (-10,0) size 13x18
+                LayoutText {#text} at (2,0) size 10x18
+                  text run at (2,0) width 18: "\x{304A}\x{3093}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x18
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,1) size 18x16
+                    text run at (2,1) width 16: "\x{97F3}"
+          LayoutText {#text} at (522,423) size 18x16
+            text run at (522,423) width 16: "\x{306F}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x34
+            LayoutRubyRun (anonymous) at (520,438) size 22x36
+              LayoutRubyText {RT} at (-10,0) size 13x36
+                LayoutText {#text} at (2,0) size 10x36
+                  text run at (2,0) width 36: "\x{304D}\x{3087}\x{3046}\x{308A}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x36
+                LayoutInline {RB} at (0,0) size 18x34
+                  LayoutText {#text} at (2,1) size 18x34
+                    text run at (2,1) width 34: "\x{80F8}\x{88CF}"
+          LayoutText {#text} at (522,473) size 18x16
+            text run at (522,473) width 16: "\x{306B}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x17
+            LayoutRubyRun (anonymous) at (548,0) size 22x18
+              LayoutRubyText {RT} at (-10,0) size 13x18
+                LayoutText {#text} at (2,0) size 10x18
+                  text run at (2,0) width 18: "\x{304A}\x{3053}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x18
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,1) size 18x16
+                    text run at (2,1) width 16: "\x{8D77}"
+          LayoutText {#text} at (550,17) size 18x32
+            text run at (550,17) width 32: "\x{308B}\x{3002}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x34
+            LayoutRubyRun (anonymous) at (548,48) size 22x36
+              LayoutRubyText {RT} at (-10,0) size 13x36
+                LayoutText {#text} at (2,0) size 10x36
+                  text run at (2,0) width 36: "\x{305F}\x{3093}\x{305B}\x{3044}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x36
+                LayoutInline {RB} at (0,0) size 18x34
+                  LayoutText {#text} at (2,1) size 18x34
+                    text run at (2,1) width 34: "\x{4E39}\x{9752}"
+          LayoutText {#text} at (550,83) size 18x16
+            text run at (550,83) width 16: "\x{306F}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x32
+            LayoutRubyRun (anonymous) at (548,99) size 22x32
+              LayoutRubyText {RT} at (-10,0) size 13x32
+                LayoutText {#text} at (2,3) size 10x26
+                  text run at (2,3) width 25: "\x{304C}\x{304B}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x32
+                LayoutInline {RB} at (0,0) size 18x32
+                  LayoutText {#text} at (2,0) size 18x32
+                    text run at (2,0) width 32: "\x{753B}\x{67B6}"
+          LayoutText {#text} at (550,131) size 18x64
+            text run at (550,131) width 64: "\x{306B}\x{5411}\x{3063}\x{3066}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x32
+            LayoutRubyRun (anonymous) at (548,195) size 22x32
+              LayoutRubyText {RT} at (-10,0) size 13x32
+                LayoutText {#text} at (2,0) size 10x31
+                  text run at (2,0) width 30: "\x{3068}\x{307E}\x{3064}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x32
+                LayoutInline {RB} at (0,0) size 18x32
+                  LayoutText {#text} at (2,0) size 18x32
+                    text run at (2,0) width 32: "\x{5857}\x{62B9}"
+          LayoutText {#text} at (550,227) size 18x64
+            text run at (550,227) width 64: "\x{305B}\x{3093}\x{3067}\x{3082}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x32
+            LayoutRubyRun (anonymous) at (548,291) size 22x32
+              LayoutRubyText {RT} at (-10,0) size 13x32
+                LayoutText {#text} at (2,0) size 10x31
+                  text run at (2,0) width 30: "\x{3054}\x{3055}\x{3044}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x32
+                LayoutInline {RB} at (0,0) size 18x32
+                  LayoutText {#text} at (2,0) size 18x32
+                    text run at (2,0) width 32: "\x{4E94}\x{5F69}"
+          LayoutText {#text} at (550,323) size 18x16
+            text run at (550,323) width 16: "\x{306E}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x34
+            LayoutRubyRun (anonymous) at (548,338) size 22x36
+              LayoutRubyText {RT} at (-10,0) size 13x36
+                LayoutText {#text} at (2,0) size 10x36
+                  text run at (2,0) width 36: "\x{3051}\x{3093}\x{3089}\x{3093}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x36
+                LayoutInline {RB} at (0,0) size 18x34
+                  LayoutText {#text} at (2,1) size 18x34
+                    text run at (2,1) width 34: "\x{7D62}\x{721B}"
+          LayoutText {#text} at (550,373) size 18x16
+            text run at (550,373) width 16: "\x{306F}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x19
+            LayoutRubyRun (anonymous) at (548,385) size 22x27
+              LayoutRubyText {RT} at (-10,0) size 13x27
+                LayoutText {#text} at (2,0) size 10x27
+                  text run at (2,0) width 27: "\x{304A}\x{306E}\x{305A}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x27
+                LayoutInline {RB} at (0,0) size 18x17
+                  LayoutText {#text} at (2,5) size 18x17
+                    text run at (2,5) width 16: "\x{81EA}"
+          LayoutText {#text} at (550,408) size 18x32
+            text run at (550,408) width 32: "\x{304B}\x{3089}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x34
+            LayoutRubyRun (anonymous) at (548,439) size 22x36
+              LayoutRubyText {RT} at (-10,0) size 13x36
+                LayoutText {#text} at (2,0) size 10x36
+                  text run at (2,0) width 36: "\x{3057}\x{3093}\x{304C}\x{3093}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x36
+                LayoutInline {RB} at (0,0) size 18x34
+                  LayoutText {#text} at (2,1) size 18x34
+                    text run at (2,1) width 34: "\x{5FC3}\x{773C}"
+          LayoutText {#text} at (550,474) size 46x490
+            text run at (550,474) width 16: "\x{306B}"
+            text run at (578,0) width 240: "\x{6620}\x{308B}\x{3002}\x{305F}\x{3060}\x{304A}\x{306E}\x{304C}\x{4F4F}\x{3080}\x{4E16}\x{3092}\x{3001}\x{304B}\x{304F}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (576,239) size 22x18
+              LayoutRubyText {RT} at (-10,0) size 13x18
+                LayoutText {#text} at (2,0) size 10x18
+                  text run at (2,0) width 18: "\x{304B}\x{3093}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x18
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,1) size 18x16
+                    text run at (2,1) width 16: "\x{89B3}"
+          LayoutText {#text} at (578,256) size 18x64
+            text run at (578,256) width 64: "\x{3058}\x{5F97}\x{3066}\x{3001}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x70
+            LayoutRubyRun (anonymous) at (576,319) size 22x72
+              LayoutRubyText {RT} at (-10,0) size 13x72
+                LayoutText {#text} at (2,0) size 10x72
+                  text run at (2,0) width 72: "\x{308C}\x{3044}\x{3060}\x{3044}\x{307B}\x{3046}\x{3059}\x{3093}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x72
+                LayoutInline {RB} at (0,0) size 18x70
+                  LayoutText {#text} at (2,1) size 18x70
+                    text run at (2,1) width 70: "\x{970A}\x{53F0}\x{65B9}\x{5BF8}"
+          LayoutText {#text} at (578,390) size 18x80
+            text run at (578,390) width 80: "\x{306E}\x{30AB}\x{30E1}\x{30E9}\x{306B}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x71
+            LayoutRubyRun (anonymous) at (604,0) size 22x72
+              LayoutRubyText {RT} at (-10,0) size 13x72
+                LayoutText {#text} at (2,0) size 10x72
+                  text run at (2,0) width 72: "\x{304E}\x{3087}\x{3046}\x{304D}\x{3053}\x{3093}\x{3060}\x{304F}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x72
+                LayoutInline {RB} at (0,0) size 18x70
+                  LayoutText {#text} at (2,1) size 18x70
+                    text run at (2,1) width 70: "\x{6F86}\x{5B63}\x{6EB7}\x{6FC1}"
+          LayoutText {#text} at (606,71) size 18x208
+            text run at (606,71) width 208: "\x{306E}\x{4FD7}\x{754C}\x{3092}\x{6E05}\x{304F}\x{3046}\x{3089}\x{3089}\x{304B}\x{306B}\x{53CE}\x{3081}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (604,279) size 22x16
+              LayoutRubyText {RT} at (-10,0) size 13x16
+                LayoutText {#text} at (2,3) size 10x10
+                  text run at (2,3) width 9: "\x{3046}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x16
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,0) size 18x16
+                    text run at (2,0) width 16: "\x{5F97}"
+          LayoutText {#text} at (606,295) size 18x32
+            text run at (606,295) width 32: "\x{308C}\x{3070}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (604,327) size 22x16
+              LayoutRubyText {RT} at (-10,0) size 13x16
+                LayoutText {#text} at (2,3) size 10x10
+                  text run at (2,3) width 9: "\x{305F}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x16
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,0) size 18x16
+                    text run at (2,0) width 16: "\x{8DB3}"
+          LayoutText {#text} at (606,343) size 18x96
+            text run at (606,343) width 96: "\x{308B}\x{3002}\x{3053}\x{306E}\x{6545}\x{306B}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x32
+            LayoutRubyRun (anonymous) at (604,439) size 22x32
+              LayoutRubyText {RT} at (-10,0) size 13x32
+                LayoutText {#text} at (2,0) size 10x31
+                  text run at (2,0) width 30: "\x{3080}\x{305B}\x{3044}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x32
+                LayoutInline {RB} at (0,0) size 18x32
+                  LayoutText {#text} at (2,0) size 18x32
+                    text run at (2,0) width 32: "\x{7121}\x{58F0}"
+          LayoutText {#text} at (606,471) size 46x503
+            text run at (606,471) width 32: "\x{306E}\x{8A69}"
+            text run at (634,0) width 128: "\x{4EBA}\x{306B}\x{306F}\x{4E00}\x{53E5}\x{306A}\x{304F}\x{3001}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x34
+            LayoutRubyRun (anonymous) at (632,127) size 22x36
+              LayoutRubyText {RT} at (-10,0) size 13x36
+                LayoutText {#text} at (2,0) size 10x36
+                  text run at (2,0) width 36: "\x{3080}\x{3057}\x{3087}\x{304F}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x36
+                LayoutInline {RB} at (0,0) size 18x34
+                  LayoutText {#text} at (2,1) size 18x34
+                    text run at (2,1) width 34: "\x{7121}\x{8272}"
+          LayoutText {#text} at (634,162) size 18x80
+            text run at (634,162) width 80: "\x{306E}\x{753B}\x{5BB6}\x{306B}\x{306F}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x34
+            LayoutRubyRun (anonymous) at (632,241) size 22x36
+              LayoutRubyText {RT} at (-10,0) size 13x36
+                LayoutText {#text} at (2,0) size 10x36
+                  text run at (2,0) width 36: "\x{305B}\x{3063}\x{3051}\x{3093}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x36
+                LayoutInline {RB} at (0,0) size 18x34
+                  LayoutText {#text} at (2,1) size 18x34
+                    text run at (2,1) width 34: "\x{5C3A}\x{7E11}"
+          LayoutText {#text} at (634,276) size 18x96
+            text run at (634,276) width 96: "\x{306A}\x{304D}\x{3082}\x{3001}\x{304B}\x{304F}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x34
+            LayoutRubyRun (anonymous) at (632,371) size 22x36
+              LayoutRubyText {RT} at (-10,0) size 13x36
+                LayoutText {#text} at (2,0) size 10x36
+                  text run at (2,0) width 36: "\x{3058}\x{3093}\x{305B}\x{3044}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x36
+                LayoutInline {RB} at (0,0) size 18x34
+                  LayoutText {#text} at (2,1) size 18x34
+                    text run at (2,1) width 34: "\x{4EBA}\x{4E16}"
+          LayoutText {#text} at (634,406) size 46x502
+            text run at (634,406) width 96: "\x{3092}\x{89B3}\x{3058}\x{5F97}\x{308B}\x{306E}"
+            text run at (662,0) width 128: "\x{70B9}\x{306B}\x{304A}\x{3044}\x{3066}\x{3001}\x{304B}\x{304F}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x34
+            LayoutRubyRun (anonymous) at (660,127) size 22x36
+              LayoutRubyText {RT} at (-10,0) size 13x36
+                LayoutText {#text} at (2,0) size 10x36
+                  text run at (2,0) width 36: "\x{307C}\x{3093}\x{306E}\x{3046}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x36
+                LayoutInline {RB} at (0,0) size 18x34
+                  LayoutText {#text} at (2,1) size 18x34
+                    text run at (2,1) width 34: "\x{7169}\x{60A9}"
+          LayoutText {#text} at (662,162) size 18x16
+            text run at (662,162) width 16: "\x{3092}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x32
+            LayoutRubyRun (anonymous) at (660,178) size 22x32
+              LayoutRubyText {RT} at (-10,0) size 13x32
+                LayoutText {#text} at (2,0) size 10x31
+                  text run at (2,0) width 30: "\x{3052}\x{3060}\x{3064}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x32
+                LayoutInline {RB} at (0,0) size 18x32
+                  LayoutText {#text} at (2,0) size 18x32
+                    text run at (2,0) width 32: "\x{89E3}\x{8131}"
+          LayoutText {#text} at (662,210) size 18x176
+            text run at (662,210) width 176: "\x{3059}\x{308B}\x{306E}\x{70B9}\x{306B}\x{304A}\x{3044}\x{3066}\x{3001}\x{304B}\x{304F}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x64
+            LayoutRubyRun (anonymous) at (660,382) size 22x72
+              LayoutRubyText {RT} at (-10,0) size 13x72
+                LayoutText {#text} at (2,0) size 10x72
+                  text run at (2,0) width 72: "\x{3057}\x{3087}\x{3046}\x{3058}\x{3087}\x{3046}\x{304B}\x{3044}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x72
+                LayoutInline {RB} at (0,0) size 18x64
+                  LayoutText {#text} at (2,4) size 18x64
+                    text run at (2,4) width 64: "\x{6E05}\x{6D44}\x{754C}"
+          LayoutText {#text} at (662,450) size 18x16
+            text run at (662,450) width 16: "\x{306B}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x50
+            LayoutRubyRun (anonymous) at (688,0) size 22x54
+              LayoutRubyText {RT} at (-10,0) size 13x54
+                LayoutText {#text} at (2,0) size 10x54
+                  text run at (2,0) width 54: "\x{3057}\x{3085}\x{3064}\x{306B}\x{3085}\x{3046}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x54
+                LayoutInline {RB} at (0,0) size 18x44
+                  LayoutText {#text} at (2,5) size 18x44
+                    text run at (2,5) width 43: "\x{51FA}\x{5165}"
+          LayoutText {#text} at (690,50) size 18x224
+            text run at (690,50) width 224: "\x{3057}\x{5F97}\x{308B}\x{306E}\x{70B9}\x{306B}\x{304A}\x{3044}\x{3066}\x{3001}\x{307E}\x{305F}\x{3053}\x{306E}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x64
+            LayoutRubyRun (anonymous) at (688,274) size 22x64
+              LayoutRubyText {RT} at (-10,0) size 13x64
+                LayoutText {#text} at (2,1) size 10x61
+                  text run at (2,1) width 60: "\x{3075}\x{3069}\x{3046}\x{3075}\x{3058}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x64
+                LayoutInline {RB} at (0,0) size 18x64
+                  LayoutText {#text} at (2,0) size 18x64
+                    text run at (2,0) width 64: "\x{4E0D}\x{540C}\x{4E0D}\x{4E8C}"
+          LayoutText {#text} at (690,338) size 18x16
+            text run at (690,338) width 16: "\x{306E}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x34
+            LayoutRubyRun (anonymous) at (688,353) size 22x36
+              LayoutRubyText {RT} at (-10,0) size 13x36
+                LayoutText {#text} at (2,0) size 10x36
+                  text run at (2,0) width 36: "\x{3051}\x{3093}\x{3053}\x{3093}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x36
+                LayoutInline {RB} at (0,0) size 18x34
+                  LayoutText {#text} at (2,1) size 18x34
+                    text run at (2,1) width 34: "\x{4E7E}\x{5764}"
+          LayoutText {#text} at (690,388) size 18x16
+            text run at (690,388) width 16: "\x{3092}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x39
+            LayoutRubyRun (anonymous) at (688,401) size 22x45
+              LayoutRubyText {RT} at (-10,0) size 13x45
+                LayoutText {#text} at (2,0) size 10x45
+                  text run at (2,0) width 45: "\x{3053}\x{3093}\x{308A}\x{3085}\x{3046}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x45
+                LayoutInline {RB} at (0,0) size 18x39
+                  LayoutText {#text} at (2,3) size 18x39
+                    text run at (2,3) width 38: "\x{5EFA}\x{7ACB}"
+          LayoutText {#text} at (690,443) size 46x491
+            text run at (690,443) width 48: "\x{3057}\x{5F97}\x{308B}"
+            text run at (718,0) width 112: "\x{306E}\x{70B9}\x{306B}\x{304A}\x{3044}\x{3066}\x{3001}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x64
+            LayoutRubyRun (anonymous) at (716,112) size 22x64
+              LayoutRubyText {RT} at (-10,0) size 13x64
+                LayoutText {#text} at (2,1) size 10x61
+                  text run at (2,1) width 60: "\x{304C}\x{308A}\x{3057}\x{3088}\x{304F}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x64
+                LayoutInline {RB} at (0,0) size 18x64
+                  LayoutText {#text} at (2,0) size 18x64
+                    text run at (2,0) width 64: "\x{6211}\x{5229}\x{79C1}\x{617E}"
+          LayoutText {#text} at (718,176) size 18x16
+            text run at (718,176) width 16: "\x{306E}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x32
+            LayoutRubyRun (anonymous) at (716,192) size 22x32
+              LayoutRubyText {RT} at (-10,0) size 13x32
+                LayoutText {#text} at (2,0) size 10x31
+                  text run at (2,0) width 30: "\x{304D}\x{306F}\x{3093}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x32
+                LayoutInline {RB} at (0,0) size 18x32
+                  LayoutText {#text} at (2,0) size 18x32
+                    text run at (2,0) width 32: "\x{898A}\x{7D46}"
+          LayoutText {#text} at (718,224) size 18x16
+            text run at (718,224) width 16: "\x{3092}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x34
+            LayoutRubyRun (anonymous) at (716,239) size 22x36
+              LayoutRubyText {RT} at (-10,0) size 13x36
+                LayoutText {#text} at (2,0) size 10x36
+                  text run at (2,0) width 36: "\x{305D}\x{3046}\x{3068}\x{3046}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x36
+                LayoutInline {RB} at (0,0) size 18x34
+                  LayoutText {#text} at (2,1) size 18x34
+                    text run at (2,1) width 34: "\x{6383}\x{8569}"
+          LayoutText {#text} at (718,274) size 18x176
+            text run at (718,274) width 176: "\x{3059}\x{308B}\x{306E}\x{70B9}\x{306B}\x{304A}\x{3044}\x{3066}\x{3001}\x{2015}\x{2015}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x34
+            LayoutRubyRun (anonymous) at (716,449) size 22x36
+              LayoutRubyText {RT} at (-10,0) size 13x36
+                LayoutText {#text} at (2,0) size 10x36
+                  text run at (2,0) width 36: "\x{305B}\x{3093}\x{304D}\x{3093}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x36
+                LayoutInline {RB} at (0,0) size 18x34
+                  LayoutText {#text} at (2,1) size 18x34
+                    text run at (2,1) width 34: "\x{5343}\x{91D1}"
+          LayoutText {#text} at (718,484) size 46x500
+            text run at (718,484) width 16: "\x{306E}"
+            text run at (746,0) width 80: "\x{5B50}\x{3088}\x{308A}\x{3082}\x{3001}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x39
+            LayoutRubyRun (anonymous) at (744,77) size 22x45
+              LayoutRubyText {RT} at (-10,0) size 13x45
+                LayoutText {#text} at (2,0) size 10x45
+                  text run at (2,0) width 45: "\x{3070}\x{3093}\x{3058}\x{3087}\x{3046}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x45
+                LayoutInline {RB} at (0,0) size 18x39
+                  LayoutText {#text} at (2,3) size 18x39
+                    text run at (2,3) width 38: "\x{4E07}\x{4E57}"
+          LayoutText {#text} at (746,119) size 18x208
+            text run at (746,119) width 208: "\x{306E}\x{541B}\x{3088}\x{308A}\x{3082}\x{3001}\x{3042}\x{3089}\x{3086}\x{308B}\x{4FD7}\x{754C}\x{306E}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x34
+            LayoutRubyRun (anonymous) at (744,326) size 22x36
+              LayoutRubyText {RT} at (-10,0) size 13x36
+                LayoutText {#text} at (2,0) size 10x36
+                  text run at (2,0) width 36: "\x{3061}\x{3087}\x{3046}\x{3058}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x36
+                LayoutInline {RB} at (0,0) size 18x34
+                  LayoutText {#text} at (2,1) size 18x34
+                    text run at (2,1) width 34: "\x{5BF5}\x{5150}"
+          LayoutText {#text} at (746,361) size 40x473
+            text run at (746,361) width 112: "\x{3088}\x{308A}\x{3082}\x{5E78}\x{798F}\x{3067}\x{3042}"
+            text run at (768,0) width 32: "\x{308B}\x{3002}"
+          LayoutBR {BR} at (768,32) size 18x0
+          LayoutText {#text} at (796,0) size 18x272
+            text run at (796,0) width 272: "\x{3000}\x{4E16}\x{306B}\x{4F4F}\x{3080}\x{3053}\x{3068}\x{4E8C}\x{5341}\x{5E74}\x{306B}\x{3057}\x{3066}\x{3001}\x{4F4F}\x{3080}\x{306B}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x32
+            LayoutRubyRun (anonymous) at (794,272) size 22x32
+              LayoutRubyText {RT} at (-10,0) size 13x32
+                LayoutText {#text} at (2,3) size 10x26
+                  text run at (2,3) width 25: "\x{304B}\x{3044}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x32
+                LayoutInline {RB} at (0,0) size 18x32
+                  LayoutText {#text} at (2,0) size 18x32
+                    text run at (2,0) width 32: "\x{7532}\x{6590}"
+          LayoutText {#text} at (796,304) size 46x496
+            text run at (796,304) width 192: "\x{3042}\x{308B}\x{4E16}\x{3068}\x{77E5}\x{3063}\x{305F}\x{3002}\x{4E8C}\x{5341}\x{4E94}\x{5E74}"
+            text run at (824,0) width 96: "\x{306B}\x{3057}\x{3066}\x{660E}\x{6697}\x{306F}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x34
+            LayoutRubyRun (anonymous) at (822,95) size 22x36
+              LayoutRubyText {RT} at (-10,0) size 13x36
+                LayoutText {#text} at (2,0) size 10x36
+                  text run at (2,0) width 36: "\x{3072}\x{3087}\x{3046}\x{308A}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x36
+                LayoutInline {RB} at (0,0) size 18x34
+                  LayoutText {#text} at (2,1) size 18x34
+                    text run at (2,1) width 34: "\x{8868}\x{88CF}"
+          LayoutText {#text} at (824,130) size 46x498
+            text run at (824,130) width 368: "\x{306E}\x{3054}\x{3068}\x{304F}\x{3001}\x{65E5}\x{306E}\x{3042}\x{305F}\x{308B}\x{6240}\x{306B}\x{306F}\x{304D}\x{3063}\x{3068}\x{5F71}\x{304C}\x{3055}\x{3059}\x{3068}\x{609F}\x{3063}"
+            text run at (852,0) width 80: "\x{305F}\x{3002}\x{4E09}\x{5341}\x{306E}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x34
+            LayoutRubyRun (anonymous) at (850,79) size 22x36
+              LayoutRubyText {RT} at (-10,0) size 13x36
+                LayoutText {#text} at (2,0) size 10x36
+                  text run at (2,0) width 36: "\x{3053}\x{3093}\x{306B}\x{3061}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x36
+                LayoutInline {RB} at (0,0) size 18x34
+                  LayoutText {#text} at (2,1) size 18x34
+                    text run at (2,1) width 34: "\x{4ECA}\x{65E5}"
+          LayoutText {#text} at (852,114) size 18x288
+            text run at (852,114) width 288: "\x{306F}\x{3053}\x{3046}\x{601D}\x{3046}\x{3066}\x{3044}\x{308B}\x{3002}\x{2015}\x{2015}\x{559C}\x{3073}\x{306E}\x{6DF1}\x{304D}\x{3068}\x{304D}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x19
+            LayoutRubyRun (anonymous) at (850,398) size 22x27
+              LayoutRubyText {RT} at (-10,0) size 13x27
+                LayoutText {#text} at (2,0) size 10x27
+                  text run at (2,0) width 27: "\x{3046}\x{308C}\x{3044}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x27
+                LayoutInline {RB} at (0,0) size 18x17
+                  LayoutText {#text} at (2,5) size 18x17
+                    text run at (2,5) width 16: "\x{6182}"
+          LayoutText {#text} at (852,421) size 46x501
+            text run at (852,421) width 80: "\x{3044}\x{3088}\x{3044}\x{3088}\x{6DF1}"
+            text run at (880,0) width 32: "\x{304F}\x{3001}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x19
+            LayoutRubyRun (anonymous) at (878,28) size 22x27
+              LayoutRubyText {RT} at (-10,0) size 13x27
+                LayoutText {#text} at (2,0) size 10x27
+                  text run at (2,0) width 27: "\x{305F}\x{306E}\x{3057}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x27
+                LayoutInline {RB} at (0,0) size 18x17
+                  LayoutText {#text} at (2,5) size 18x17
+                    text run at (2,5) width 16: "\x{697D}"
+          LayoutText {#text} at (880,51) size 46x499
+            text run at (880,51) width 448: "\x{307F}\x{306E}\x{5927}\x{3044}\x{306A}\x{308B}\x{307B}\x{3069}\x{82E6}\x{3057}\x{307F}\x{3082}\x{5927}\x{304D}\x{3044}\x{3002}\x{3053}\x{308C}\x{3092}\x{5207}\x{308A}\x{653E}\x{305D}\x{3046}\x{3068}\x{3059}\x{308B}\x{3068}"
+            text run at (908,0) width 96: "\x{8EAB}\x{304C}\x{6301}\x{3066}\x{306C}\x{3002}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (906,95) size 22x18
+              LayoutRubyText {RT} at (-10,0) size 13x18
+                LayoutText {#text} at (2,0) size 10x18
+                  text run at (2,0) width 18: "\x{304B}\x{305F}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x18
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,1) size 18x16
+                    text run at (2,1) width 16: "\x{7247}"
+          LayoutText {#text} at (908,112) size 46x496
+            text run at (908,112) width 384: "\x{3065}\x{3051}\x{3088}\x{3046}\x{3068}\x{3059}\x{308C}\x{3070}\x{4E16}\x{304C}\x{7ACB}\x{305F}\x{306C}\x{3002}\x{91D1}\x{306F}\x{5927}\x{4E8B}\x{3060}\x{3001}\x{5927}\x{4E8B}\x{306A}\x{3082}"
+            text run at (936,0) width 32: "\x{306E}\x{304C}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (934,32) size 22x16
+              LayoutRubyText {RT} at (-10,0) size 13x16
+                LayoutText {#text} at (2,3) size 10x10
+                  text run at (2,3) width 9: "\x{3075}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x16
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,0) size 18x16
+                    text run at (2,0) width 16: "\x{6B96}"
+          LayoutText {#text} at (936,48) size 18x48
+            text run at (936,48) width 48: "\x{3048}\x{308C}\x{3070}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (934,96) size 22x16
+              LayoutRubyText {RT} at (-10,0) size 13x16
+                LayoutText {#text} at (2,3) size 10x10
+                  text run at (2,3) width 9: "\x{306D}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x16
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,0) size 18x16
+                    text run at (2,0) width 16: "\x{5BDD}"
+          LayoutText {#text} at (936,112) size 18x16
+            text run at (936,112) width 16: "\x{308B}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (934,128) size 22x16
+              LayoutRubyText {RT} at (-10,0) size 13x16
+                LayoutText {#text} at (2,3) size 10x10
+                  text run at (2,3) width 9: "\x{307E}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x16
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,0) size 18x16
+                    text run at (2,0) width 16: "\x{9593}"
+          LayoutText {#text} at (936,144) size 46x496
+            text run at (936,144) width 352: "\x{3082}\x{5FC3}\x{914D}\x{3060}\x{308D}\x{3046}\x{3002}\x{604B}\x{306F}\x{3046}\x{308C}\x{3057}\x{3044}\x{3001}\x{5B09}\x{3057}\x{3044}\x{604B}\x{304C}\x{7A4D}\x{3082}\x{308C}"
+            text run at (964,0) width 464: "\x{3070}\x{3001}\x{604B}\x{3092}\x{305B}\x{306C}\x{6614}\x{304C}\x{304B}\x{3048}\x{3063}\x{3066}\x{604B}\x{3057}\x{304B}\x{308D}\x{3002}\x{95A3}\x{50DA}\x{306E}\x{80A9}\x{306F}\x{6570}\x{767E}\x{4E07}\x{4EBA}\x{306E}\x{8DB3}\x{3092}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (962,463) size 22x18
+              LayoutRubyText {RT} at (-10,0) size 13x18
+                LayoutText {#text} at (2,0) size 10x18
+                  text run at (2,0) width 18: "\x{3055}\x{3055}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x18
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,1) size 18x16
+                    text run at (2,1) width 16: "\x{652F}"
+          LayoutText {#text} at (964,480) size 46x496
+            text run at (964,480) width 16: "\x{3048}"
+            text run at (992,0) width 64: "\x{3066}\x{3044}\x{308B}\x{3002}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x32
+            LayoutRubyRun (anonymous) at (990,64) size 22x32
+              LayoutRubyText {RT} at (-10,0) size 13x32
+                LayoutText {#text} at (2,0) size 10x31
+                  text run at (2,0) width 30: "\x{305B}\x{306A}\x{304B}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x32
+                LayoutInline {RB} at (0,0) size 18x32
+                  LayoutText {#text} at (2,0) size 18x32
+                    text run at (2,0) width 32: "\x{80CC}\x{4E2D}"
+          LayoutText {#text} at (992,96) size 46x496
+            text run at (992,96) width 400: "\x{306B}\x{306F}\x{91CD}\x{3044}\x{5929}\x{4E0B}\x{304C}\x{304A}\x{3076}\x{3055}\x{3063}\x{3066}\x{3044}\x{308B}\x{3002}\x{3046}\x{307E}\x{3044}\x{7269}\x{3082}\x{98DF}\x{308F}\x{306D}\x{3070}\x{60DC}"
+            text run at (1020,0) width 128: "\x{3057}\x{3044}\x{3002}\x{5C11}\x{3057}\x{98DF}\x{3048}\x{3070}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (1018,128) size 22x16
+              LayoutRubyText {RT} at (-10,0) size 13x16
+                LayoutText {#text} at (2,3) size 10x10
+                  text run at (2,3) width 9: "\x{3042}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x16
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,0) size 18x16
+                    text run at (2,0) width 16: "\x{98FD}"
+          LayoutText {#text} at (1020,144) size 18x16
+            text run at (1020,144) width 16: "\x{304D}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (1018,160) size 22x16
+              LayoutRubyText {RT} at (-10,0) size 13x16
+                LayoutText {#text} at (2,3) size 10x10
+                  text run at (2,3) width 9: "\x{305F}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x16
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,0) size 18x16
+                    text run at (2,0) width 16: "\x{8DB3}"
+          LayoutText {#text} at (1020,176) size 18x288
+            text run at (1020,176) width 288: "\x{3089}\x{306C}\x{3002}\x{5B58}\x{5206}\x{98DF}\x{3048}\x{3070}\x{3042}\x{3068}\x{304C}\x{4E0D}\x{6109}\x{5FEB}\x{3060}\x{3002}\x{2026}\x{2026}"
+          LayoutBR {BR} at (1020,464) size 18x0
+          LayoutText {#text} at (1048,0) size 18x16
+            text run at (1048,0) width 16: "\x{3000}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (1046,16) size 22x16
+              LayoutRubyText {RT} at (-10,0) size 13x16
+                LayoutText {#text} at (2,3) size 10x10
+                  text run at (2,3) width 9: "\x{3088}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x16
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,0) size 18x16
+                    text run at (2,0) width 16: "\x{4F59}"
+          LayoutText {#text} at (1048,32) size 18x16
+            text run at (1048,32) width 16: "\x{306E}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x28
+            LayoutRubyRun (anonymous) at (1046,44) size 22x36
+              LayoutRubyText {RT} at (-10,0) size 13x36
+                LayoutText {#text} at (2,0) size 10x36
+                  text run at (2,0) width 36: "\x{304B}\x{3093}\x{304C}\x{3048}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x36
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,10) size 18x16
+                    text run at (2,10) width 16: "\x{8003}"
+          LayoutText {#text} at (1048,76) size 18x256
+            text run at (1048,76) width 256: "\x{304C}\x{3053}\x{3053}\x{307E}\x{3067}\x{6F02}\x{6D41}\x{3057}\x{3066}\x{6765}\x{305F}\x{6642}\x{306B}\x{3001}\x{4F59}\x{306E}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x32
+            LayoutRubyRun (anonymous) at (1046,332) size 22x32
+              LayoutRubyText {RT} at (-10,0) size 13x32
+                LayoutText {#text} at (2,0) size 10x31
+                  text run at (2,0) width 30: "\x{3046}\x{305D}\x{304F}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x32
+                LayoutInline {RB} at (0,0) size 18x32
+                  LayoutText {#text} at (2,0) size 18x32
+                    text run at (2,0) width 32: "\x{53F3}\x{8DB3}"
+          LayoutText {#text} at (1048,364) size 18x48
+            text run at (1048,364) width 48: "\x{306F}\x{7A81}\x{7136}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (1046,411) size 22x18
+              LayoutRubyText {RT} at (-10,0) size 13x18
+                LayoutText {#text} at (2,0) size 10x18
+                  text run at (2,0) width 18: "\x{3059}\x{308F}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x18
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,1) size 18x16
+                    text run at (2,1) width 16: "\x{5750}"
+          LayoutText {#text} at (1048,428) size 46x492
+            text run at (1048,428) width 64: "\x{308A}\x{306E}\x{308F}\x{308B}"
+            text run at (1076,0) width 16: "\x{3044}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x34
+            LayoutRubyRun (anonymous) at (1074,15) size 22x36
+              LayoutRubyText {RT} at (-10,0) size 13x36
+                LayoutText {#text} at (2,0) size 10x36
+                  text run at (2,0) width 36: "\x{304B}\x{304F}\x{3044}\x{3057}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x36
+                LayoutInline {RB} at (0,0) size 18x34
+                  LayoutText {#text} at (2,1) size 18x34
+                    text run at (2,1) width 34: "\x{89D2}\x{77F3}"
+          LayoutText {#text} at (1076,50) size 18x16
+            text run at (1076,50) width 16: "\x{306E}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (1074,65) size 22x18
+              LayoutRubyText {RT} at (-10,0) size 13x18
+                LayoutText {#text} at (2,0) size 10x18
+                  text run at (2,0) width 18: "\x{306F}\x{3057}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x18
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,1) size 18x16
+                    text run at (2,1) width 16: "\x{7AEF}"
+          LayoutText {#text} at (1076,82) size 18x48
+            text run at (1076,82) width 48: "\x{3092}\x{8E0F}\x{307F}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (1074,130) size 22x16
+              LayoutRubyText {RT} at (-10,0) size 13x16
+                LayoutText {#text} at (2,3) size 10x10
+                  text run at (2,3) width 9: "\x{305D}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x16
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,0) size 18x16
+                    text run at (2,0) width 16: "\x{640D}"
+          LayoutText {#text} at (1076,146) size 18x80
+            text run at (1076,146) width 80: "\x{304F}\x{306A}\x{3063}\x{305F}\x{3002}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x34
+            LayoutRubyRun (anonymous) at (1074,225) size 22x36
+              LayoutRubyText {RT} at (-10,0) size 13x36
+                LayoutText {#text} at (2,0) size 10x36
+                  text run at (2,0) width 36: "\x{3078}\x{3044}\x{3053}\x{3046}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x36
+                LayoutInline {RB} at (0,0) size 18x34
+                  LayoutText {#text} at (2,1) size 18x34
+                    text run at (2,1) width 34: "\x{5E73}\x{8861}"
+          LayoutText {#text} at (1076,260) size 46x500
+            text run at (1076,260) width 240: "\x{3092}\x{4FDD}\x{3064}\x{305F}\x{3081}\x{306B}\x{3001}\x{3059}\x{308F}\x{3084}\x{3068}\x{524D}\x{306B}\x{98DB}\x{3073}"
+            text run at (1104,0) width 48: "\x{51FA}\x{3057}\x{305F}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x32
+            LayoutRubyRun (anonymous) at (1102,48) size 22x32
+              LayoutRubyText {RT} at (-10,0) size 13x32
+                LayoutText {#text} at (2,0) size 10x31
+                  text run at (2,0) width 30: "\x{3055}\x{305D}\x{304F}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x32
+                LayoutInline {RB} at (0,0) size 18x32
+                  LayoutText {#text} at (2,0) size 18x32
+                    text run at (2,0) width 32: "\x{5DE6}\x{8DB3}"
+          LayoutText {#text} at (1104,80) size 18x32
+            text run at (1104,80) width 32: "\x{304C}\x{3001}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x32
+            LayoutRubyRun (anonymous) at (1102,112) size 22x32
+              LayoutRubyText {RT} at (-10,0) size 13x32
+                LayoutText {#text} at (2,0) size 10x31
+                  text run at (2,0) width 30: "\x{3057}\x{305D}\x{3093}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x32
+                LayoutInline {RB} at (0,0) size 18x32
+                  LayoutText {#text} at (2,0) size 18x32
+                    text run at (2,0) width 32: "\x{4ED5}\x{640D}"
+          LayoutText {#text} at (1104,144) size 18x32
+            text run at (1104,144) width 32: "\x{3058}\x{306E}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (1102,176) size 22x16
+              LayoutRubyText {RT} at (-10,0) size 13x16
+                LayoutText {#text} at (2,3) size 10x10
+                  text run at (2,3) width 9: "\x{3046}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x16
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,0) size 18x16
+                    text run at (2,0) width 16: "\x{57CB}"
+          LayoutText {#text} at (1104,192) size 18x16
+            text run at (1104,192) width 16: "\x{3081}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (1102,207) size 22x18
+              LayoutRubyText {RT} at (-10,0) size 13x18
+                LayoutText {#text} at (2,0) size 10x18
+                  text run at (2,0) width 18: "\x{3042}\x{308F}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x18
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,1) size 18x16
+                    text run at (2,1) width 16: "\x{5408}"
+          LayoutText {#text} at (1104,224) size 18x256
+            text run at (1104,224) width 256: "\x{305B}\x{3092}\x{3059}\x{308B}\x{3068}\x{5171}\x{306B}\x{3001}\x{4F59}\x{306E}\x{8170}\x{306F}\x{5177}\x{5408}\x{3088}\x{304F}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x17
+            LayoutRubyRun (anonymous) at (1102,479) size 22x18
+              LayoutRubyText {RT} at (-10,0) size 13x18
+                LayoutText {#text} at (2,0) size 10x18
+                  text run at (2,0) width 18: "\x{307B}\x{3046}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x18
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,1) size 18x16
+                    text run at (2,1) width 16: "\x{65B9}"
+          LayoutText {#text} at (1132,0) size 18x144
+            text run at (1132,0) width 144: "\x{4E09}\x{5C3A}\x{307B}\x{3069}\x{306A}\x{5CA9}\x{306E}\x{4E0A}\x{306B}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (1130,144) size 22x16
+              LayoutRubyText {RT} at (-10,0) size 13x16
+                LayoutText {#text} at (2,3) size 10x10
+                  text run at (2,3) width 9: "\x{304A}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x16
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,0) size 18x16
+                    text run at (2,0) width 16: "\x{5378}"
+          LayoutText {#text} at (1132,160) size 18x208
+            text run at (1132,160) width 208: "\x{308A}\x{305F}\x{3002}\x{80A9}\x{306B}\x{304B}\x{3051}\x{305F}\x{7D75}\x{306E}\x{5177}\x{7BB1}\x{304C}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (1130,367) size 22x18
+              LayoutRubyText {RT} at (-10,0) size 13x18
+                LayoutText {#text} at (2,0) size 10x18
+                  text run at (2,0) width 18: "\x{308F}\x{304D}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x18
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,1) size 18x16
+                    text run at (2,1) width 16: "\x{814B}"
+          LayoutText {#text} at (1132,384) size 18x64
+            text run at (1132,384) width 64: "\x{306E}\x{4E0B}\x{304B}\x{3089}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (1130,447) size 22x18
+              LayoutRubyText {RT} at (-10,0) size 13x18
+                LayoutText {#text} at (2,0) size 10x18
+                  text run at (2,0) width 18: "\x{304A}\x{3069}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x18
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,1) size 18x16
+                    text run at (2,1) width 16: "\x{8E8D}"
+          LayoutText {#text} at (1132,464) size 46x496
+            text run at (1132,464) width 32: "\x{308A}\x{51FA}"
+            text run at (1160,0) width 144: "\x{3057}\x{305F}\x{3060}\x{3051}\x{3067}\x{3001}\x{5E78}\x{3044}\x{3068}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (1158,143) size 22x18
+              LayoutRubyText {RT} at (-10,0) size 13x18
+                LayoutText {#text} at (2,0) size 10x18
+                  text run at (2,0) width 18: "\x{306A}\x{3093}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x18
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,1) size 18x16
+                    text run at (2,1) width 16: "\x{4F55}"
+          LayoutText {#text} at (1160,160) size 18x128
+            text run at (1160,160) width 128: "\x{306E}\x{4E8B}\x{3082}\x{306A}\x{304B}\x{3063}\x{305F}\x{3002}"
+          LayoutBR {BR} at (1160,288) size 18x0
+          LayoutText {#text} at (1188,0) size 18x240
+            text run at (1188,0) width 240: "\x{3000}\x{7ACB}\x{3061}\x{4E0A}\x{304C}\x{308B}\x{6642}\x{306B}\x{5411}\x{3046}\x{3092}\x{898B}\x{308B}\x{3068}\x{3001}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x17
+            LayoutRubyRun (anonymous) at (1186,238.98) size 22x18
+              LayoutRubyText {RT} at (-10,0) size 13x18
+                LayoutText {#text} at (2,0) size 10x18
+                  text run at (2,0) width 18: "\x{307F}\x{3061}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x18
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,1) size 18x16
+                    text run at (2,1) width 16: "\x{8DEF}"
+          LayoutText {#text} at (1188,255) size 46x496
+            text run at (1188,255) width 240: "\x{304B}\x{3089}\x{5DE6}\x{306E}\x{65B9}\x{306B}\x{30D0}\x{30B1}\x{30C4}\x{3092}\x{4F0F}\x{305B}\x{305F}\x{3088}\x{3046}"
+            text run at (1216,0) width 48: "\x{306A}\x{5CF0}\x{304C}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (1214,47) size 22x18
+              LayoutRubyText {RT} at (-10,0) size 13x18
+                LayoutText {#text} at (2,0) size 10x18
+                  text run at (2,0) width 18: "\x{305D}\x{3073}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x18
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,1) size 18x16
+                    text run at (2,1) width 16: "\x{8073}"
+          LayoutText {#text} at (1216,64) size 18x112
+            text run at (1216,64) width 112: "\x{3048}\x{3066}\x{3044}\x{308B}\x{3002}\x{6749}\x{304B}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x19
+            LayoutRubyRun (anonymous) at (1214,172) size 22x27
+              LayoutRubyText {RT} at (-10,0) size 13x27
+                LayoutText {#text} at (2,0) size 10x27
+                  text run at (2,0) width 27: "\x{3072}\x{306E}\x{304D}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x27
+                LayoutInline {RB} at (0,0) size 18x17
+                  LayoutText {#text} at (2,5) size 18x17
+                    text run at (2,5) width 16: "\x{6A9C}"
+          LayoutText {#text} at (1216,195) size 18x112
+            text run at (1216,195) width 112: "\x{304B}\x{5206}\x{304B}\x{3089}\x{306A}\x{3044}\x{304C}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x32
+            LayoutRubyRun (anonymous) at (1214,307) size 22x32
+              LayoutRubyText {RT} at (-10,0) size 13x32
+                LayoutText {#text} at (2,0) size 10x31
+                  text run at (2,0) width 30: "\x{306D}\x{3082}\x{3068}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x32
+                LayoutInline {RB} at (0,0) size 18x32
+                  LayoutText {#text} at (2,0) size 18x32
+                    text run at (2,0) width 32: "\x{6839}\x{5143}"
+          LayoutText {#text} at (1216,339) size 18x32
+            text run at (1216,339) width 32: "\x{304B}\x{3089}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x19
+            LayoutRubyRun (anonymous) at (1214,367) size 22x27
+              LayoutRubyText {RT} at (-10,0) size 13x27
+                LayoutText {#text} at (2,0) size 10x27
+                  text run at (2,0) width 27: "\x{3044}\x{305F}\x{3060}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x27
+                LayoutInline {RB} at (0,0) size 18x17
+                  LayoutText {#text} at (2,5) size 18x17
+                    text run at (2,5) width 16: "\x{9802}"
+          LayoutText {#text} at (1216,390) size 46x502
+            text run at (1216,390) width 112: "\x{304D}\x{307E}\x{3067}\x{3053}\x{3068}\x{3054}\x{3068}"
+            text run at (1244,0) width 16: "\x{304F}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x34
+            LayoutRubyRun (anonymous) at (1242,15) size 22x36
+              LayoutRubyText {RT} at (-10,0) size 13x36
+                LayoutText {#text} at (2,0) size 10x36
+                  text run at (2,0) width 36: "\x{3042}\x{304A}\x{3050}\x{308D}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x36
+                LayoutInline {RB} at (0,0) size 18x34
+                  LayoutText {#text} at (2,1) size 18x34
+                    text run at (2,1) width 34: "\x{84BC}\x{9ED2}"
+          LayoutText {#text} at (1244,50) size 18x240
+            text run at (1244,50) width 240: "\x{3044}\x{4E2D}\x{306B}\x{3001}\x{5C71}\x{685C}\x{304C}\x{8584}\x{8D64}\x{304F}\x{3060}\x{3093}\x{3060}\x{3089}\x{306B}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x32
+            LayoutRubyRun (anonymous) at (1242,290) size 22x32
+              LayoutRubyText {RT} at (-10,0) size 13x32
+                LayoutText {#text} at (2,0) size 10x31
+                  text run at (2,0) width 30: "\x{305F}\x{306A}\x{3073}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x32
+                LayoutInline {RB} at (0,0) size 18x32
+                  LayoutText {#text} at (2,0) size 18x32
+                    text run at (2,0) width 32: "\x{68DA}\x{5F15}"
+          LayoutText {#text} at (1244,322) size 18x48
+            text run at (1244,322) width 48: "\x{3044}\x{3066}\x{3001}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (1242,370) size 22x16
+              LayoutRubyText {RT} at (-10,0) size 13x16
+                LayoutText {#text} at (2,3) size 10x10
+                  text run at (2,3) width 9: "\x{3064}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x16
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,0) size 18x16
+                    text run at (2,0) width 16: "\x{7D9A}"
+          LayoutText {#text} at (1244,386) size 18x16
+            text run at (1244,386) width 16: "\x{304E}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (1242,402) size 22x16
+              LayoutRubyText {RT} at (-10,0) size 13x16
+                LayoutText {#text} at (2,3) size 10x10
+                  text run at (2,3) width 9: "\x{3081}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x16
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,0) size 18x16
+                    text run at (2,0) width 16: "\x{76EE}"
+          LayoutText {#text} at (1244,418) size 18x16
+            text run at (1244,418) width 16: "\x{304C}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (1242,433) size 22x18
+              LayoutRubyText {RT} at (-10,0) size 13x18
+                LayoutText {#text} at (2,0) size 10x18
+                  text run at (2,0) width 18: "\x{3057}\x{304B}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x18
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,1) size 18x16
+                    text run at (2,1) width 16: "\x{78BA}"
+          LayoutText {#text} at (1244,450) size 46x498
+            text run at (1244,450) width 48: "\x{3068}\x{898B}\x{3048}"
+            text run at (1272,0) width 64: "\x{306C}\x{304F}\x{3089}\x{3044}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (1270,63) size 22x18
+              LayoutRubyText {RT} at (-10,0) size 13x18
+                LayoutText {#text} at (2,0) size 10x18
+                  text run at (2,0) width 18: "\x{3082}\x{3084}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x18
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,1) size 18x16
+                    text run at (2,1) width 16: "\x{9744}"
+          LayoutText {#text} at (1272,80) size 18x144
+            text run at (1272,80) width 144: "\x{304C}\x{6FC3}\x{3044}\x{3002}\x{5C11}\x{3057}\x{624B}\x{524D}\x{306B}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x34
+            LayoutRubyRun (anonymous) at (1270,223) size 22x36
+              LayoutRubyText {RT} at (-10,0) size 13x36
+                LayoutText {#text} at (2,0) size 10x36
+                  text run at (2,0) width 36: "\x{306F}\x{3052}\x{3084}\x{307E}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x36
+                LayoutInline {RB} at (0,0) size 18x34
+                  LayoutText {#text} at (2,1) size 18x34
+                    text run at (2,1) width 34: "\x{79BF}\x{5C71}"
+          LayoutText {#text} at (1272,258) size 18x64
+            text run at (1272,258) width 64: "\x{304C}\x{4E00}\x{3064}\x{3001}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (1270,321) size 22x18
+              LayoutRubyText {RT} at (-10,0) size 13x18
+                LayoutText {#text} at (2,0) size 10x18
+                  text run at (2,0) width 18: "\x{3050}\x{3093}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x18
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,1) size 18x16
+                    text run at (2,1) width 16: "\x{7FA4}"
+          LayoutText {#text} at (1272,338) size 18x96
+            text run at (1272,338) width 96: "\x{3092}\x{306C}\x{304D}\x{3093}\x{3067}\x{3066}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (1270,433) size 22x18
+              LayoutRubyText {RT} at (-10,0) size 13x18
+                LayoutText {#text} at (2,0) size 10x18
+                  text run at (2,0) width 18: "\x{307E}\x{3086}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x18
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,1) size 18x16
+                    text run at (2,1) width 16: "\x{7709}"
+          LayoutText {#text} at (1272,450) size 18x16
+            text run at (1272,450) width 16: "\x{306B}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x17
+            LayoutRubyRun (anonymous) at (1270,465) size 22x18
+              LayoutRubyText {RT} at (-10,0) size 13x18
+                LayoutText {#text} at (2,0) size 10x18
+                  text run at (2,0) width 18: "\x{305B}\x{307E}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x18
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,1) size 18x16
+                    text run at (2,1) width 16: "\x{903C}"
+          LayoutText {#text} at (1300,0) size 18x32
+            text run at (1300,0) width 32: "\x{308B}\x{3002}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (1298,32) size 22x16
+              LayoutRubyText {RT} at (-10,0) size 13x16
+                LayoutText {#text} at (2,3) size 10x10
+                  text run at (2,3) width 9: "\x{306F}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x16
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,0) size 18x16
+                    text run at (2,0) width 16: "\x{79BF}"
+          LayoutText {#text} at (1300,48) size 18x128
+            text run at (1300,48) width 128: "\x{3052}\x{305F}\x{5074}\x{9762}\x{306F}\x{5DE8}\x{4EBA}\x{306E}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (1298,175) size 22x18
+              LayoutRubyText {RT} at (-10,0) size 13x18
+                LayoutText {#text} at (2,0) size 10x18
+                  text run at (2,0) width 18: "\x{304A}\x{306E}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x18
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,1) size 18x16
+                    text run at (2,1) width 16: "\x{65A7}"
+          LayoutText {#text} at (1300,192) size 18x16
+            text run at (1300,192) width 16: "\x{3067}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (1298,207) size 22x18
+              LayoutRubyText {RT} at (-10,0) size 13x18
+                LayoutText {#text} at (2,0) size 10x18
+                  text run at (2,0) width 18: "\x{3051}\x{305A}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x18
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,1) size 18x16
+                    text run at (2,1) width 16: "\x{524A}"
+          LayoutText {#text} at (1300,224) size 46x496
+            text run at (1300,224) width 272: "\x{308A}\x{53BB}\x{3063}\x{305F}\x{304B}\x{3001}\x{92ED}\x{3069}\x{304D}\x{5E73}\x{9762}\x{3092}\x{3084}\x{3051}\x{306B}\x{8C37}\x{306E}"
+            text run at (1328,0) width 32: "\x{5E95}\x{306B}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (1326,31) size 22x18
+              LayoutRubyText {RT} at (-10,0) size 13x18
+                LayoutText {#text} at (2,0) size 10x18
+                  text run at (2,0) width 18: "\x{3046}\x{305A}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x18
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,1) size 18x16
+                    text run at (2,1) width 16: "\x{57CB}"
+          LayoutText {#text} at (1328,48) size 18x80
+            text run at (1328,48) width 80: "\x{3081}\x{3066}\x{3044}\x{308B}\x{3002}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x34
+            LayoutRubyRun (anonymous) at (1326,127) size 22x36
+              LayoutRubyText {RT} at (-10,0) size 13x36
+                LayoutText {#text} at (2,0) size 10x36
+                  text run at (2,0) width 36: "\x{3066}\x{3063}\x{307A}\x{3093}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x36
+                LayoutInline {RB} at (0,0) size 18x34
+                  LayoutText {#text} at (2,1) size 18x34
+                    text run at (2,1) width 34: "\x{5929}\x{8FBA}"
+          LayoutText {#text} at (1328,162) size 18x336
+            text run at (1328,162) width 336: "\x{306B}\x{4E00}\x{672C}\x{898B}\x{3048}\x{308B}\x{306E}\x{306F}\x{8D64}\x{677E}\x{3060}\x{308D}\x{3046}\x{3002}\x{679D}\x{306E}\x{9593}\x{306E}\x{7A7A}\x{3055}\x{3048}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x35
+            LayoutRubyRun (anonymous) at (1354,0) size 22x36
+              LayoutRubyText {RT} at (-10,0) size 13x36
+                LayoutText {#text} at (2,0) size 10x36
+                  text run at (2,0) width 36: "\x{306F}\x{3063}\x{304D}\x{308A}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x36
+                LayoutInline {RB} at (0,0) size 18x34
+                  LayoutText {#text} at (2,1) size 18x34
+                    text run at (2,1) width 34: "\x{5224}\x{7136}"
+          LayoutText {#text} at (1356,35) size 18x448
+            text run at (1356,35) width 448: "\x{3057}\x{3066}\x{3044}\x{308B}\x{3002}\x{884C}\x{304F}\x{624B}\x{306F}\x{4E8C}\x{4E01}\x{307B}\x{3069}\x{3067}\x{5207}\x{308C}\x{3066}\x{3044}\x{308B}\x{304C}\x{3001}\x{9AD8}\x{3044}\x{6240}\x{304B}\x{3089}\x{8D64}\x{3044}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x32
+            LayoutRubyRun (anonymous) at (1382,0) size 22x32
+              LayoutRubyText {RT} at (-10,0) size 13x32
+                LayoutText {#text} at (2,0) size 10x31
+                  text run at (2,0) width 30: "\x{3051}\x{3063}\x{3068}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x32
+                LayoutInline {RB} at (0,0) size 18x32
+                  LayoutText {#text} at (2,0) size 18x32
+                    text run at (2,0) width 32: "\x{6BDB}\x{5E03}"
+          LayoutText {#text} at (1384,32) size 46x496
+            text run at (1384,32) width 464: "\x{304C}\x{52D5}\x{3044}\x{3066}\x{6765}\x{308B}\x{306E}\x{3092}\x{898B}\x{308B}\x{3068}\x{3001}\x{767B}\x{308C}\x{3070}\x{3042}\x{3059}\x{3053}\x{3078}\x{51FA}\x{308B}\x{306E}\x{3060}\x{308D}\x{3046}\x{3002}\x{8DEF}\x{306F}\x{3059}"
+            text run at (1412,0) width 48: "\x{3053}\x{3076}\x{308B}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x32
+            LayoutRubyRun (anonymous) at (1410,48) size 22x32
+              LayoutRubyText {RT} at (-10,0) size 13x32
+                LayoutText {#text} at (2,0) size 10x31
+                  text run at (2,0) width 30: "\x{306A}\x{3093}\x{304E}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x32
+                LayoutInline {RB} at (0,0) size 18x32
+                  LayoutText {#text} at (2,0) size 18x32
+                    text run at (2,0) width 32: "\x{96E3}\x{7FA9}"
+          LayoutText {#text} at (1412,80) size 18x32
+            text run at (1412,80) width 32: "\x{3060}\x{3002}"
+          LayoutBR {BR} at (1412,112) size 18x0
+          LayoutText {#text} at (1440,0) size 18x208
+            text run at (1440,0) width 208: "\x{3000}\x{571F}\x{3092}\x{306A}\x{3089}\x{3059}\x{3060}\x{3051}\x{306A}\x{3089}\x{3055}\x{307B}\x{3069}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x33
+            LayoutRubyRun (anonymous) at (1438,207.98) size 22x32
+              LayoutRubyText {RT} at (-10,0) size 13x32
+                LayoutText {#text} at (2,3) size 10x26
+                  text run at (2,3) width 25: "\x{3066}\x{307E}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x32
+                LayoutInline {RB} at (0,0) size 18x32
+                  LayoutText {#text} at (2,0) size 18x32
+                    text run at (2,0) width 32: "\x{624B}\x{9593}"
+          LayoutText {#text} at (1440,239) size 18x17
+            text run at (1440,239) width 16: "\x{3082}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x17
+            LayoutRubyRun (anonymous) at (1438,255.98) size 22x16
+              LayoutRubyText {RT} at (-10,0) size 13x16
+                LayoutText {#text} at (2,3) size 10x10
+                  text run at (2,3) width 9: "\x{3044}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x16
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,0) size 18x16
+                    text run at (2,0) width 16: "\x{5165}"
+          LayoutText {#text} at (1440,271) size 46x496
+            text run at (1440,271) width 224: "\x{308B}\x{307E}\x{3044}\x{304C}\x{3001}\x{571F}\x{306E}\x{4E2D}\x{306B}\x{306F}\x{5927}\x{304D}\x{306A}\x{77F3}"
+            text run at (1468,0) width 96: "\x{304C}\x{3042}\x{308B}\x{3002}\x{571F}\x{306F}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (1466,95) size 22x18
+              LayoutRubyText {RT} at (-10,0) size 13x18
+                LayoutText {#text} at (2,0) size 10x18
+                  text run at (2,0) width 18: "\x{305F}\x{3044}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x18
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,1) size 18x16
+                    text run at (2,1) width 16: "\x{5E73}"
+          LayoutText {#text} at (1468,112) size 46x496
+            text run at (1468,112) width 384: "\x{3089}\x{306B}\x{3057}\x{3066}\x{3082}\x{77F3}\x{306F}\x{5E73}\x{3089}\x{306B}\x{306A}\x{3089}\x{306C}\x{3002}\x{77F3}\x{306F}\x{5207}\x{308A}\x{7815}\x{3044}\x{3066}\x{3082}\x{3001}\x{5CA9}"
+            text run at (1496,0) width 128: "\x{306F}\x{59CB}\x{672B}\x{304C}\x{3064}\x{304B}\x{306C}\x{3002}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x34
+            LayoutRubyRun (anonymous) at (1494,127) size 22x36
+              LayoutRubyText {RT} at (-10,0) size 13x36
+                LayoutText {#text} at (2,0) size 10x36
+                  text run at (2,0) width 36: "\x{307B}\x{308A}\x{304F}\x{305A}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x36
+                LayoutInline {RB} at (0,0) size 18x34
+                  LayoutText {#text} at (2,1) size 18x34
+                    text run at (2,1) width 34: "\x{6398}\x{5D29}"
+          LayoutText {#text} at (1496,162) size 18x96
+            text run at (1496,162) width 96: "\x{3057}\x{305F}\x{571F}\x{306E}\x{4E0A}\x{306B}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x34
+            LayoutRubyRun (anonymous) at (1494,257) size 22x36
+              LayoutRubyText {RT} at (-10,0) size 13x36
+                LayoutText {#text} at (2,0) size 10x36
+                  text run at (2,0) width 36: "\x{3086}\x{3046}\x{305C}\x{3093}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x36
+                LayoutInline {RB} at (0,0) size 18x34
+                  LayoutText {#text} at (2,1) size 18x34
+                    text run at (2,1) width 34: "\x{60A0}\x{7136}"
+          LayoutText {#text} at (1496,292) size 18x16
+            text run at (1496,292) width 16: "\x{3068}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x19
+            LayoutRubyRun (anonymous) at (1494,304) size 22x27
+              LayoutRubyText {RT} at (-10,0) size 13x27
+                LayoutText {#text} at (2,0) size 10x27
+                  text run at (2,0) width 27: "\x{305D}\x{3070}\x{3060}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x27
+                LayoutInline {RB} at (0,0) size 18x17
+                  LayoutText {#text} at (2,5) size 18x17
+                    text run at (2,5) width 16: "\x{5CD9}"
+          LayoutText {#text} at (1496,327) size 46x503
+            text run at (1496,327) width 176: "\x{3063}\x{3066}\x{3001}\x{543E}\x{3089}\x{306E}\x{305F}\x{3081}\x{306B}\x{9053}\x{3092}"
+            text run at (1524,0) width 32: "\x{8B72}\x{308B}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x32
+            LayoutRubyRun (anonymous) at (1522,32) size 22x32
+              LayoutRubyText {RT} at (-10,0) size 13x32
+                LayoutText {#text} at (2,0) size 10x31
+                  text run at (2,0) width 30: "\x{3051}\x{3057}\x{304D}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x32
+                LayoutInline {RB} at (0,0) size 18x32
+                  LayoutText {#text} at (2,0) size 18x32
+                    text run at (2,0) width 32: "\x{666F}\x{8272}"
+          LayoutText {#text} at (1524,64) size 46x480
+            text run at (1524,64) width 416: "\x{306F}\x{306A}\x{3044}\x{3002}\x{5411}\x{3046}\x{3067}\x{805E}\x{304B}\x{306C}\x{4E0A}\x{306F}\x{4E57}\x{308A}\x{8D8A}\x{3059}\x{304B}\x{3001}\x{5EFB}\x{3089}\x{306A}\x{3051}\x{308C}\x{3070}\x{306A}\x{3089}"
+            text run at (1552,0) width 32: "\x{3093}\x{3002}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (1550,31) size 22x18
+              LayoutRubyText {RT} at (-10,0) size 13x18
+                LayoutText {#text} at (2,0) size 10x18
+                  text run at (2,0) width 18: "\x{3044}\x{308F}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x18
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,1) size 18x16
+                    text run at (2,1) width 16: "\x{5DCC}"
+          LayoutText {#text} at (1552,48) size 18x112
+            text run at (1552,48) width 112: "\x{306E}\x{306A}\x{3044}\x{6240}\x{3067}\x{3055}\x{3048}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (1550,160) size 22x16
+              LayoutRubyText {RT} at (-10,0) size 13x16
+                LayoutText {#text} at (2,3) size 10x10
+                  text run at (2,3) width 9: "\x{3042}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x16
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,0) size 18x16
+                    text run at (2,0) width 16: "\x{6B69}"
+          LayoutText {#text} at (1552,176) size 18x304
+            text run at (1552,176) width 304: "\x{308B}\x{304D}\x{3088}\x{304F}\x{306F}\x{306A}\x{3044}\x{3002}\x{5DE6}\x{53F3}\x{304C}\x{9AD8}\x{304F}\x{3063}\x{3066}\x{3001}\x{4E2D}\x{5FC3}\x{304C}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x17
+            LayoutRubyRun (anonymous) at (1550,479) size 22x18
+              LayoutRubyText {RT} at (-10,0) size 13x18
+                LayoutText {#text} at (2,0) size 10x18
+                  text run at (2,0) width 18: "\x{304F}\x{307C}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x18
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,1) size 18x16
+                    text run at (2,1) width 16: "\x{7AAA}"
+          LayoutText {#text} at (1580,0) size 18x128
+            text run at (1580,0) width 128: "\x{3093}\x{3067}\x{3001}\x{307E}\x{308B}\x{3067}\x{4E00}\x{9593}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (1578,127) size 22x18
+              LayoutRubyText {RT} at (-10,0) size 13x18
+                LayoutText {#text} at (2,0) size 10x18
+                  text run at (2,0) width 18: "\x{306F}\x{3070}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x18
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,1) size 18x16
+                    text run at (2,1) width 16: "\x{5E45}"
+          LayoutText {#text} at (1580,144) size 18x64
+            text run at (1580,144) width 64: "\x{3092}\x{4E09}\x{89D2}\x{306B}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (1578,208) size 22x16
+              LayoutRubyText {RT} at (-10,0) size 13x16
+                LayoutText {#text} at (2,3) size 10x10
+                  text run at (2,3) width 9: "\x{304F}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x16
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,0) size 18x16
+                    text run at (2,0) width 16: "\x{7A7F}"
+          LayoutText {#text} at (1580,224) size 18x128
+            text run at (1580,224) width 128: "\x{3063}\x{3066}\x{3001}\x{305D}\x{306E}\x{9802}\x{70B9}\x{304C}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x34
+            LayoutRubyRun (anonymous) at (1578,351) size 22x36
+              LayoutRubyText {RT} at (-10,0) size 13x36
+                LayoutText {#text} at (2,0) size 10x36
+                  text run at (2,0) width 36: "\x{307E}\x{3093}\x{306A}\x{304B}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x36
+                LayoutInline {RB} at (0,0) size 18x34
+                  LayoutText {#text} at (2,1) size 18x34
+                    text run at (2,1) width 34: "\x{771F}\x{4E2D}"
+          LayoutText {#text} at (1580,386) size 18x16
+            text run at (1580,386) width 16: "\x{3092}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x19
+            LayoutRubyRun (anonymous) at (1578,398) size 22x27
+              LayoutRubyText {RT} at (-10,0) size 13x27
+                LayoutText {#text} at (2,0) size 10x27
+                  text run at (2,0) width 27: "\x{3064}\x{3089}\x{306C}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x27
+                LayoutInline {RB} at (0,0) size 18x17
+                  LayoutText {#text} at (2,5) size 18x17
+                    text run at (2,5) width 16: "\x{8CAB}"
+          LayoutText {#text} at (1580,421) size 46x501
+            text run at (1580,421) width 80: "\x{3044}\x{3066}\x{3044}\x{308B}\x{3068}"
+            text run at (1608,0) width 320: "\x{8A55}\x{3057}\x{3066}\x{3082}\x{3088}\x{3044}\x{3002}\x{8DEF}\x{3092}\x{884C}\x{304F}\x{3068}\x{4E91}\x{308F}\x{3093}\x{3088}\x{308A}\x{5DDD}\x{5E95}\x{3092}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (1606,319) size 22x18
+              LayoutRubyText {RT} at (-10,0) size 13x18
+                LayoutText {#text} at (2,0) size 10x18
+                  text run at (2,0) width 18: "\x{308F}\x{305F}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x18
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,1) size 18x16
+                    text run at (2,1) width 16: "\x{6E09}"
+          LayoutText {#text} at (1608,336) size 18x160
+            text run at (1608,336) width 160: "\x{308B}\x{3068}\x{4E91}\x{3046}\x{65B9}\x{304C}\x{9069}\x{5F53}\x{3060}\x{3002}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x17
+            LayoutRubyRun (anonymous) at (1634,0) size 22x18
+              LayoutRubyText {RT} at (-10,0) size 13x18
+                LayoutText {#text} at (2,0) size 10x18
+                  text run at (2,0) width 18: "\x{3082}\x{3068}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x18
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,1) size 18x16
+                    text run at (2,1) width 16: "\x{56FA}"
+          LayoutText {#text} at (1636,17) size 18x256
+            text run at (1636,17) width 256: "\x{3088}\x{308A}\x{6025}\x{3050}\x{65C5}\x{3067}\x{306A}\x{3044}\x{304B}\x{3089}\x{3001}\x{3076}\x{3089}\x{3076}\x{3089}\x{3068}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x34
+            LayoutRubyRun (anonymous) at (1634,272) size 22x36
+              LayoutRubyText {RT} at (-10,0) size 13x36
+                LayoutText {#text} at (2,0) size 10x36
+                  text run at (2,0) width 36: "\x{306A}\x{306A}\x{307E}\x{304C}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x36
+                LayoutInline {RB} at (0,0) size 18x34
+                  LayoutText {#text} at (2,1) size 18x34
+                    text run at (2,1) width 34: "\x{4E03}\x{66F2}"
+          LayoutText {#text} at (1636,307) size 18x96
+            text run at (1636,307) width 96: "\x{308A}\x{3078}\x{304B}\x{304B}\x{308B}\x{3002}"
+          LayoutBR {BR} at (1636,403) size 18x0
+          LayoutText {#text} at (1664,0) size 18x144
+            text run at (1664,0) width 144: "\x{3000}\x{305F}\x{3061}\x{307E}\x{3061}\x{8DB3}\x{306E}\x{4E0B}\x{3067}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x33
+            LayoutRubyRun (anonymous) at (1662,143.98) size 22x32
+              LayoutRubyText {RT} at (-10,0) size 13x32
+                LayoutText {#text} at (2,0) size 10x31
+                  text run at (2,0) width 30: "\x{3072}\x{3070}\x{308A}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x32
+                LayoutInline {RB} at (0,0) size 18x32
+                  LayoutText {#text} at (2,0) size 18x32
+                    text run at (2,0) width 32: "\x{96F2}\x{96C0}"
+          LayoutText {#text} at (1664,175) size 18x161
+            text run at (1664,175) width 160: "\x{306E}\x{58F0}\x{304C}\x{3057}\x{51FA}\x{3057}\x{305F}\x{3002}\x{8C37}\x{3092}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x33
+            LayoutRubyRun (anonymous) at (1662,335.98) size 22x32
+              LayoutRubyText {RT} at (-10,0) size 13x32
+                LayoutText {#text} at (2,0) size 10x31
+                  text run at (2,0) width 30: "\x{307F}\x{304A}\x{308D}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x32
+                LayoutInline {RB} at (0,0) size 18x32
+                  LayoutText {#text} at (2,0) size 18x32
+                    text run at (2,0) width 32: "\x{898B}\x{4E0B}"
+          LayoutText {#text} at (1664,367) size 46x496
+            text run at (1664,367) width 128: "\x{3057}\x{305F}\x{304C}\x{3001}\x{3069}\x{3053}\x{3067}\x{9CF4}"
+            text run at (1692,0) width 480: "\x{3044}\x{3066}\x{308B}\x{304B}\x{5F71}\x{3082}\x{5F62}\x{3082}\x{898B}\x{3048}\x{306C}\x{3002}\x{305F}\x{3060}\x{58F0}\x{3060}\x{3051}\x{304C}\x{660E}\x{3089}\x{304B}\x{306B}\x{805E}\x{3048}\x{308B}\x{3002}\x{305B}\x{3063}\x{305B}\x{3068}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x17
+            LayoutRubyRun (anonymous) at (1690,479) size 22x18
+              LayoutRubyText {RT} at (-10,0) size 13x18
+                LayoutText {#text} at (2,0) size 10x18
+                  text run at (2,0) width 18: "\x{305B}\x{308F}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x18
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,1) size 18x16
+                    text run at (2,1) width 16: "\x{5FD9}"
+          LayoutText {#text} at (1720,0) size 18x48
+            text run at (1720,0) width 48: "\x{3057}\x{304F}\x{3001}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x32
+            LayoutRubyRun (anonymous) at (1718,48) size 22x32
+              LayoutRubyText {RT} at (-10,0) size 13x32
+                LayoutText {#text} at (2,0) size 10x31
+                  text run at (2,0) width 30: "\x{305F}\x{3048}\x{307E}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x32
+                LayoutInline {RB} at (0,0) size 18x32
+                  LayoutText {#text} at (2,0) size 18x32
+                    text run at (2,0) width 32: "\x{7D76}\x{9593}"
+          LayoutText {#text} at (1720,80) size 18x128
+            text run at (1720,80) width 128: "\x{306A}\x{304F}\x{9CF4}\x{3044}\x{3066}\x{3044}\x{308B}\x{3002}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x48
+            LayoutRubyRun (anonymous) at (1718,208) size 22x48
+              LayoutRubyText {RT} at (-10,0) size 13x48
+                LayoutText {#text} at (2,0) size 10x48
+                  text run at (2,0) width 47: "\x{307B}\x{3046}\x{3044}\x{304F}\x{308A}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x48
+                LayoutInline {RB} at (0,0) size 18x48
+                  LayoutText {#text} at (2,0) size 18x48
+                    text run at (2,0) width 48: "\x{65B9}\x{5E7E}\x{91CC}"
+          LayoutText {#text} at (1720,256) size 18x112
+            text run at (1720,256) width 112: "\x{306E}\x{7A7A}\x{6C17}\x{304C}\x{4E00}\x{9762}\x{306B}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (1718,367) size 22x18
+              LayoutRubyText {RT} at (-10,0) size 13x18
+                LayoutText {#text} at (2,0) size 10x18
+                  text run at (2,0) width 18: "\x{306E}\x{307F}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x18
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,1) size 18x16
+                    text run at (2,1) width 16: "\x{86A4}"
+          LayoutText {#text} at (1720,384) size 46x496
+            text run at (1720,384) width 112: "\x{306B}\x{523A}\x{3055}\x{308C}\x{3066}\x{3044}\x{305F}"
+            text run at (1748,0) width 304: "\x{305F}\x{307E}\x{308C}\x{306A}\x{3044}\x{3088}\x{3046}\x{306A}\x{6C17}\x{304C}\x{3059}\x{308B}\x{3002}\x{3042}\x{306E}\x{9CE5}\x{306E}\x{9CF4}\x{304F}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (1746,304) size 22x16
+              LayoutRubyText {RT} at (-10,0) size 13x16
+                LayoutText {#text} at (2,3) size 10x10
+                  text run at (2,3) width 9: "\x{306D}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x16
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,0) size 18x16
+                    text run at (2,0) width 16: "\x{97F3}"
+          LayoutText {#text} at (1748,320) size 90x496
+            text run at (1748,320) width 176: "\x{306B}\x{306F}\x{77AC}\x{6642}\x{306E}\x{4F59}\x{88D5}\x{3082}\x{306A}\x{3044}\x{3002}"
+            text run at (1770,0) width 496: "\x{306E}\x{3069}\x{304B}\x{306A}\x{6625}\x{306E}\x{65E5}\x{3092}\x{9CF4}\x{304D}\x{5C3D}\x{304F}\x{3057}\x{3001}\x{9CF4}\x{304D}\x{3042}\x{304B}\x{3057}\x{3001}\x{307E}\x{305F}\x{9CF4}\x{304D}\x{66AE}\x{3089}\x{3055}\x{306A}\x{3051}\x{308C}\x{3070}"
+            text run at (1792,0) width 496: "\x{6C17}\x{304C}\x{6E08}\x{307E}\x{3093}\x{3068}\x{898B}\x{3048}\x{308B}\x{3002}\x{305D}\x{306E}\x{4E0A}\x{3069}\x{3053}\x{307E}\x{3067}\x{3082}\x{767B}\x{3063}\x{3066}\x{884C}\x{304F}\x{3001}\x{3044}\x{3064}\x{307E}\x{3067}\x{3082}\x{767B}\x{3063}"
+            text run at (1820,0) width 432: "\x{3066}\x{884C}\x{304F}\x{3002}\x{96F2}\x{96C0}\x{306F}\x{304D}\x{3063}\x{3068}\x{96F2}\x{306E}\x{4E2D}\x{3067}\x{6B7B}\x{306C}\x{306B}\x{76F8}\x{9055}\x{306A}\x{3044}\x{3002}\x{767B}\x{308A}\x{8A70}\x{3081}\x{305F}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x32
+            LayoutRubyRun (anonymous) at (1818,432) size 22x32
+              LayoutRubyText {RT} at (-10,0) size 13x32
+                LayoutText {#text} at (2,0) size 10x31
+                  text run at (2,0) width 30: "\x{3042}\x{3052}\x{304F}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x32
+                LayoutInline {RB} at (0,0) size 18x32
+                  LayoutText {#text} at (2,0) size 18x32
+                    text run at (2,0) width 32: "\x{63DA}\x{53E5}"
+          LayoutText {#text} at (1820,464) size 46x496
+            text run at (1820,464) width 32: "\x{306F}\x{3001}"
+            text run at (1848,0) width 80: "\x{6D41}\x{308C}\x{3066}\x{96F2}\x{306B}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (1846,80) size 22x16
+              LayoutRubyText {RT} at (-10,0) size 13x16
+                LayoutText {#text} at (2,3) size 10x10
+                  text run at (2,3) width 9: "\x{3044}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x16
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,0) size 18x16
+                    text run at (2,0) width 16: "\x{5165}"
+          LayoutText {#text} at (1848,96) size 18x48
+            text run at (1848,96) width 48: "\x{3063}\x{3066}\x{3001}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x19
+            LayoutRubyRun (anonymous) at (1846,140) size 22x27
+              LayoutRubyText {RT} at (-10,0) size 13x27
+                LayoutText {#text} at (2,0) size 10x27
+                  text run at (2,0) width 27: "\x{305F}\x{3060}\x{3088}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x27
+                LayoutInline {RB} at (0,0) size 18x17
+                  LayoutText {#text} at (2,5) size 18x17
+                    text run at (2,5) width 16: "\x{6F02}"
+          LayoutText {#text} at (1848,163) size 46x499
+            text run at (1848,163) width 336: "\x{3046}\x{3066}\x{3044}\x{308B}\x{3046}\x{3061}\x{306B}\x{5F62}\x{306F}\x{6D88}\x{3048}\x{3066}\x{306A}\x{304F}\x{306A}\x{3063}\x{3066}\x{3001}\x{305F}\x{3060}\x{58F0}"
+            text run at (1876,0) width 80: "\x{3060}\x{3051}\x{304C}\x{7A7A}\x{306E}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (1874,79) size 22x18
+              LayoutRubyText {RT} at (-10,0) size 13x18
+                LayoutText {#text} at (2,0) size 10x18
+                  text run at (2,0) width 18: "\x{3046}\x{3061}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x18
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,1) size 18x16
+                    text run at (2,1) width 16: "\x{88E1}"
+          LayoutText {#text} at (1876,96) size 18x176
+            text run at (1876,96) width 176: "\x{306B}\x{6B8B}\x{308B}\x{306E}\x{304B}\x{3082}\x{77E5}\x{308C}\x{306A}\x{3044}\x{3002}"
+          LayoutBR {BR} at (1876,272) size 18x0
+          LayoutText {#text} at (1904,0) size 18x16
+            text run at (1904,0) width 16: "\x{3000}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x34
+            LayoutRubyRun (anonymous) at (1902,15) size 22x36
+              LayoutRubyText {RT} at (-10,0) size 13x36
+                LayoutText {#text} at (2,0) size 10x36
+                  text run at (2,0) width 36: "\x{3044}\x{308F}\x{304B}\x{3069}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x36
+                LayoutInline {RB} at (0,0) size 18x34
+                  LayoutText {#text} at (2,1) size 18x34
+                    text run at (2,1) width 34: "\x{5DCC}\x{89D2}"
+          LayoutText {#text} at (1904,50) size 18x128
+            text run at (1904,50) width 128: "\x{3092}\x{92ED}\x{3069}\x{304F}\x{5EFB}\x{3063}\x{3066}\x{3001}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x32
+            LayoutRubyRun (anonymous) at (1902,178) size 22x32
+              LayoutRubyText {RT} at (-10,0) size 13x32
+                LayoutText {#text} at (2,0) size 10x31
+                  text run at (2,0) width 30: "\x{3042}\x{3093}\x{307E}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x32
+                LayoutInline {RB} at (0,0) size 18x32
+                  LayoutText {#text} at (2,0) size 18x32
+                    text run at (2,0) width 32: "\x{6309}\x{6469}"
+          LayoutText {#text} at (1904,210) size 18x32
+            text run at (1904,210) width 32: "\x{306A}\x{3089}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x52
+            LayoutRubyRun (anonymous) at (1902,241) size 22x54
+              LayoutRubyText {RT} at (-10,0) size 13x54
+                LayoutText {#text} at (2,0) size 10x54
+                  text run at (2,0) width 54: "\x{307E}\x{3063}\x{3055}\x{304B}\x{3055}\x{307E}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x54
+                LayoutInline {RB} at (0,0) size 18x52
+                  LayoutText {#text} at (2,1) size 18x52
+                    text run at (2,1) width 52: "\x{771F}\x{9006}\x{69D8}"
+          LayoutText {#text} at (1904,294) size 18x144
+            text run at (1904,294) width 144: "\x{306B}\x{843D}\x{3064}\x{308B}\x{3068}\x{3053}\x{308D}\x{3092}\x{3001}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (1902,437) size 22x18
+              LayoutRubyText {RT} at (-10,0) size 13x18
+                LayoutText {#text} at (2,0) size 10x18
+                  text run at (2,0) width 18: "\x{304D}\x{308F}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x18
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,1) size 18x16
+                    text run at (2,1) width 16: "\x{969B}"
+          LayoutText {#text} at (1904,454) size 46x502
+            text run at (1904,454) width 48: "\x{3069}\x{304F}\x{53F3}"
+            text run at (1932,0) width 112: "\x{3078}\x{5207}\x{308C}\x{3066}\x{3001}\x{6A2A}\x{306B}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x32
+            LayoutRubyRun (anonymous) at (1930,112) size 22x32
+              LayoutRubyText {RT} at (-10,0) size 13x32
+                LayoutText {#text} at (2,0) size 10x31
+                  text run at (2,0) width 30: "\x{307F}\x{304A}\x{308D}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x32
+                LayoutInline {RB} at (0,0) size 18x32
+                  LayoutText {#text} at (2,0) size 18x32
+                    text run at (2,0) width 32: "\x{898B}\x{4E0B}"
+          LayoutText {#text} at (1932,144) size 18x48
+            text run at (1932,144) width 48: "\x{3059}\x{3068}\x{3001}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (1930,192) size 22x16
+              LayoutRubyText {RT} at (-10,0) size 13x16
+                LayoutText {#text} at (2,3) size 10x10
+                  text run at (2,3) width 9: "\x{306A}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x16
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,0) size 18x16
+                    text run at (2,0) width 16: "\x{83DC}"
+          LayoutText {#text} at (1932,208) size 46x496
+            text run at (1932,208) width 288: "\x{306E}\x{82B1}\x{304C}\x{4E00}\x{9762}\x{306B}\x{898B}\x{3048}\x{308B}\x{3002}\x{96F2}\x{96C0}\x{306F}\x{3042}\x{3059}\x{3053}\x{3078}\x{843D}"
+            text run at (1960,0) width 240: "\x{3061}\x{308B}\x{306E}\x{304B}\x{3068}\x{601D}\x{3063}\x{305F}\x{3002}\x{3044}\x{3044}\x{3084}\x{3001}\x{3042}\x{306E}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x32
+            LayoutRubyRun (anonymous) at (1958,240) size 22x32
+              LayoutRubyText {RT} at (-10,0) size 13x32
+                LayoutText {#text} at (2,0) size 10x31
+                  text run at (2,0) width 30: "\x{3053}\x{304C}\x{306D}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x32
+                LayoutInline {RB} at (0,0) size 18x32
+                  LayoutText {#text} at (2,0) size 18x32
+                    text run at (2,0) width 32: "\x{9EC4}\x{91D1}"
+          LayoutText {#text} at (1960,272) size 46x496
+            text run at (1960,272) width 224: "\x{306E}\x{539F}\x{304B}\x{3089}\x{98DB}\x{3073}\x{4E0A}\x{304C}\x{3063}\x{3066}\x{304F}\x{308B}\x{306E}\x{304B}"
+            text run at (1988,0) width 240: "\x{3068}\x{601D}\x{3063}\x{305F}\x{3002}\x{6B21}\x{306B}\x{306F}\x{843D}\x{3061}\x{308B}\x{96F2}\x{96C0}\x{3068}\x{3001}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (1986,239) size 22x18
+              LayoutRubyText {RT} at (-10,0) size 13x18
+                LayoutText {#text} at (2,0) size 10x18
+                  text run at (2,0) width 18: "\x{3042}\x{304C}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x18
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,1) size 18x16
+                    text run at (2,1) width 16: "\x{4E0A}"
+          LayoutText {#text} at (1988,256) size 18x16
+            text run at (1988,256) width 16: "\x{308B}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x32
+            LayoutRubyRun (anonymous) at (1986,272) size 22x32
+              LayoutRubyText {RT} at (-10,0) size 13x32
+                LayoutText {#text} at (2,0) size 10x31
+                  text run at (2,0) width 30: "\x{3072}\x{3070}\x{308A}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x32
+                LayoutInline {RB} at (0,0) size 18x32
+                  LayoutText {#text} at (2,0) size 18x32
+                    text run at (2,0) width 32: "\x{96F2}\x{96C0}"
+          LayoutText {#text} at (1988,304) size 46x496
+            text run at (1988,304) width 192: "\x{304C}\x{5341}\x{6587}\x{5B57}\x{306B}\x{3059}\x{308C}\x{9055}\x{3046}\x{306E}\x{304B}\x{3068}"
+            text run at (2016,0) width 400: "\x{601D}\x{3063}\x{305F}\x{3002}\x{6700}\x{5F8C}\x{306B}\x{3001}\x{843D}\x{3061}\x{308B}\x{6642}\x{3082}\x{3001}\x{4E0A}\x{308B}\x{6642}\x{3082}\x{3001}\x{307E}\x{305F}\x{5341}\x{6587}\x{5B57}\x{306B}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (2014,400) size 22x16
+              LayoutRubyText {RT} at (-10,0) size 13x16
+                LayoutText {#text} at (2,3) size 10x10
+                  text run at (2,3) width 9: "\x{3059}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x16
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,0) size 18x16
+                    text run at (2,0) width 16: "\x{64E6}"
+          LayoutText {#text} at (2016,416) size 40x496
+            text run at (2016,416) width 80: "\x{308C}\x{9055}\x{3046}\x{3068}\x{304D}"
+            text run at (2038,0) width 320: "\x{306B}\x{3082}\x{5143}\x{6C17}\x{3088}\x{304F}\x{9CF4}\x{304D}\x{3064}\x{3065}\x{3051}\x{308B}\x{3060}\x{308D}\x{3046}\x{3068}\x{601D}\x{3063}\x{305F}\x{3002}"
+          LayoutBR {BR} at (2038,320) size 18x0
+          LayoutText {#text} at (2066,0) size 18x192
+            text run at (2066,0) width 192: "\x{3000}\x{6625}\x{306F}\x{7720}\x{304F}\x{306A}\x{308B}\x{3002}\x{732B}\x{306F}\x{9F20}\x{3092}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x17
+            LayoutRubyRun (anonymous) at (2064,191.98) size 22x16
+              LayoutRubyText {RT} at (-10,0) size 13x16
+                LayoutText {#text} at (2,3) size 10x10
+                  text run at (2,3) width 9: "\x{3068}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x16
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,0) size 18x16
+                    text run at (2,0) width 16: "\x{6355}"
+          LayoutText {#text} at (2066,207) size 46x496
+            text run at (2066,207) width 288: "\x{308B}\x{4E8B}\x{3092}\x{5FD8}\x{308C}\x{3001}\x{4EBA}\x{9593}\x{306F}\x{501F}\x{91D1}\x{306E}\x{3042}\x{308B}\x{4E8B}\x{3092}\x{5FD8}\x{308C}"
+            text run at (2094,0) width 128: "\x{308B}\x{3002}\x{6642}\x{306B}\x{306F}\x{81EA}\x{5206}\x{306E}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x28
+            LayoutRubyRun (anonymous) at (2092,124) size 22x36
+              LayoutRubyText {RT} at (-10,0) size 13x36
+                LayoutText {#text} at (2,0) size 10x36
+                  text run at (2,0) width 36: "\x{305F}\x{307E}\x{3057}\x{3044}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x36
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,10) size 18x16
+                    text run at (2,10) width 16: "\x{9B42}"
+          LayoutText {#text} at (2094,156) size 18x16
+            text run at (2094,156) width 16: "\x{306E}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x34
+            LayoutRubyRun (anonymous) at (2092,171) size 22x36
+              LayoutRubyText {RT} at (-10,0) size 13x36
+                LayoutText {#text} at (2,0) size 10x36
+                  text run at (2,0) width 36: "\x{3044}\x{3069}\x{3053}\x{308D}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x36
+                LayoutInline {RB} at (0,0) size 18x34
+                  LayoutText {#text} at (2,1) size 18x34
+                    text run at (2,1) width 34: "\x{5C45}\x{6240}"
+          LayoutText {#text} at (2094,206) size 46x494
+            text run at (2094,206) width 288: "\x{3055}\x{3048}\x{5FD8}\x{308C}\x{3066}\x{6B63}\x{4F53}\x{306A}\x{304F}\x{306A}\x{308B}\x{3002}\x{305F}\x{3060}\x{83DC}\x{306E}\x{82B1}\x{3092}"
+            text run at (2122,0) width 160: "\x{9060}\x{304F}\x{671B}\x{3093}\x{3060}\x{3068}\x{304D}\x{306B}\x{773C}\x{304C}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (2120,160) size 22x16
+              LayoutRubyText {RT} at (-10,0) size 13x16
+                LayoutText {#text} at (2,3) size 10x10
+                  text run at (2,3) width 9: "\x{3055}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x16
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,0) size 18x16
+                    text run at (2,0) width 16: "\x{9192}"
+          LayoutText {#text} at (2122,176) size 18x320
+            text run at (2122,176) width 320: "\x{3081}\x{308B}\x{3002}\x{96F2}\x{96C0}\x{306E}\x{58F0}\x{3092}\x{805E}\x{3044}\x{305F}\x{3068}\x{304D}\x{306B}\x{9B42}\x{306E}\x{3042}\x{308A}\x{304B}\x{304C}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x35
+            LayoutRubyRun (anonymous) at (2148,0) size 22x36
+              LayoutRubyText {RT} at (-10,0) size 13x36
+                LayoutText {#text} at (2,0) size 10x36
+                  text run at (2,0) width 36: "\x{306F}\x{3093}\x{305C}\x{3093}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x36
+                LayoutInline {RB} at (0,0) size 18x34
+                  LayoutText {#text} at (2,1) size 18x34
+                    text run at (2,1) width 34: "\x{5224}\x{7136}"
+          LayoutText {#text} at (2150,35) size 62x499
+            text run at (2150,35) width 464: "\x{3059}\x{308B}\x{3002}\x{96F2}\x{96C0}\x{306E}\x{9CF4}\x{304F}\x{306E}\x{306F}\x{53E3}\x{3067}\x{9CF4}\x{304F}\x{306E}\x{3067}\x{306F}\x{306A}\x{3044}\x{3001}\x{9B42}\x{5168}\x{4F53}\x{304C}\x{9CF4}\x{304F}\x{306E}\x{3060}\x{3002}"
+            text run at (2172,0) width 496: "\x{9B42}\x{306E}\x{6D3B}\x{52D5}\x{304C}\x{58F0}\x{306B}\x{3042}\x{3089}\x{308F}\x{308C}\x{305F}\x{3082}\x{306E}\x{306E}\x{3046}\x{3061}\x{3067}\x{3001}\x{3042}\x{308C}\x{307B}\x{3069}\x{5143}\x{6C17}\x{306E}\x{3042}\x{308B}\x{3082}\x{306E}\x{306F}"
+            text run at (2194,0) width 464: "\x{306A}\x{3044}\x{3002}\x{3042}\x{3042}\x{6109}\x{5FEB}\x{3060}\x{3002}\x{3053}\x{3046}\x{601D}\x{3063}\x{3066}\x{3001}\x{3053}\x{3046}\x{6109}\x{5FEB}\x{306B}\x{306A}\x{308B}\x{306E}\x{304C}\x{8A69}\x{3067}\x{3042}\x{308B}\x{3002}"
+          LayoutBR {BR} at (2194,464) size 18x0
+          LayoutText {#text} at (2216,0) size 46x496
+            text run at (2216,0) width 496: "\x{3000}\x{305F}\x{3061}\x{307E}\x{3061}\x{30B7}\x{30A7}\x{30EC}\x{30FC}\x{306E}\x{96F2}\x{96C0}\x{306E}\x{8A69}\x{3092}\x{601D}\x{3044}\x{51FA}\x{3057}\x{3066}\x{3001}\x{53E3}\x{306E}\x{3046}\x{3061}\x{3067}\x{899A}\x{3048}\x{305F}\x{3068}\x{3053}"
+            text run at (2244,0) width 48: "\x{308D}\x{3060}\x{3051}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x39
+            LayoutRubyRun (anonymous) at (2242,45) size 22x45
+              LayoutRubyText {RT} at (-10,0) size 13x45
+                LayoutText {#text} at (2,0) size 10x45
+                  text run at (2,0) width 45: "\x{3042}\x{3093}\x{3057}\x{3087}\x{3046}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x45
+                LayoutInline {RB} at (0,0) size 18x39
+                  LayoutText {#text} at (2,3) size 18x39
+                    text run at (2,3) width 38: "\x{6697}\x{8AA6}"
+          LayoutText {#text} at (2244,87) size 40x503
+            text run at (2244,87) width 416: "\x{3057}\x{3066}\x{898B}\x{305F}\x{304C}\x{3001}\x{899A}\x{3048}\x{3066}\x{3044}\x{308B}\x{3068}\x{3053}\x{308D}\x{306F}\x{4E8C}\x{4E09}\x{53E5}\x{3057}\x{304B}\x{306A}\x{304B}\x{3063}\x{305F}\x{3002}\x{305D}"
+            text run at (2266,0) width 256: "\x{306E}\x{4E8C}\x{4E09}\x{53E5}\x{306E}\x{306A}\x{304B}\x{306B}\x{3053}\x{3093}\x{306A}\x{306E}\x{304C}\x{3042}\x{308B}\x{3002}"
+          LayoutBR {BR} at (2266,256) size 18x0
+        LayoutBlockFlow {DIV} at (2286,32) size 106x472
+          LayoutText {#text} at (2,0) size 18x191
+            text run at (2,0) width 191: "\x{3000}\x{3000}We look before and after"
+          LayoutBR {BR} at (2,190) size 18x1
+          LayoutText {#text} at (24,0) size 18x225
+            text run at (24,0) width 225: "\x{3000}\x{3000}\x{3000}\x{3000}And pine for what is not:"
+          LayoutBR {BR} at (24,224) size 18x1
+          LayoutText {#text} at (46,0) size 18x174
+            text run at (46,0) width 174: "\x{3000}\x{3000}Our sincerest laughter"
+          LayoutBR {BR} at (46,173) size 18x1
+          LayoutText {#text} at (68,0) size 18x234
+            text run at (68,0) width 234: "\x{3000}\x{3000}\x{3000}\x{3000}With some pain is fraught;"
+          LayoutBR {BR} at (68,234) size 18x0
+          LayoutText {#text} at (88,0) size 18x363
+            text run at (88,0) width 363: "Our sweetest songs are those that tell of saddest thought."
+          LayoutBR {BR} at (88,362) size 18x1
+        LayoutBlockFlow (anonymous) at (2392,0) size 1714x504
+          LayoutText {#text} at (10,0) size 18x112
+            text run at (10,0) width 112: "\x{300C}\x{524D}\x{3092}\x{307F}\x{3066}\x{306F}\x{3001}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (8,111) size 22x18
+              LayoutRubyText {RT} at (-10,0) size 13x18
+                LayoutText {#text} at (2,0) size 10x18
+                  text run at (2,0) width 18: "\x{3057}\x{308A}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x18
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,1) size 18x16
+                    text run at (2,1) width 16: "\x{5F8C}"
+          LayoutText {#text} at (10,128) size 18x96
+            text run at (10,128) width 96: "\x{3048}\x{3092}\x{898B}\x{3066}\x{306F}\x{3001}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x32
+            LayoutRubyRun (anonymous) at (8,224) size 22x32
+              LayoutRubyText {RT} at (-10,0) size 13x32
+                LayoutText {#text} at (2,0) size 10x31
+                  text run at (2,0) width 30: "\x{3082}\x{306E}\x{307B}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x32
+                LayoutInline {RB} at (0,0) size 18x32
+                  LayoutText {#text} at (2,0) size 18x32
+                    text run at (2,0) width 32: "\x{7269}\x{6B32}"
+          LayoutText {#text} at (10,256) size 46x496
+            text run at (10,256) width 240: "\x{3057}\x{3068}\x{3001}\x{3042}\x{3053}\x{304C}\x{308B}\x{308B}\x{304B}\x{306A}\x{308F}\x{308C}\x{3002}\x{8179}\x{304B}"
+            text run at (38,0) width 448: "\x{3089}\x{306E}\x{3001}\x{7B11}\x{3068}\x{3044}\x{3048}\x{3069}\x{3001}\x{82E6}\x{3057}\x{307F}\x{306E}\x{3001}\x{305D}\x{3053}\x{306B}\x{3042}\x{308B}\x{3079}\x{3057}\x{3002}\x{3046}\x{3064}\x{304F}\x{3057}\x{304D}\x{3001}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (36,447) size 22x18
+              LayoutRubyText {RT} at (-10,0) size 13x18
+                LayoutText {#text} at (2,0) size 10x18
+                  text run at (2,0) width 18: "\x{304D}\x{308F}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x18
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,1) size 18x16
+                    text run at (2,1) width 16: "\x{6975}"
+          LayoutText {#text} at (38,464) size 46x496
+            text run at (38,464) width 32: "\x{307F}\x{306E}"
+            text run at (66,0) width 176: "\x{6B4C}\x{306B}\x{3001}\x{60B2}\x{3057}\x{3055}\x{306E}\x{3001}\x{6975}\x{307F}\x{306E}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x19
+            LayoutRubyRun (anonymous) at (64,172) size 22x27
+              LayoutRubyText {RT} at (-10,0) size 13x27
+                LayoutText {#text} at (2,0) size 10x27
+                  text run at (2,0) width 27: "\x{304A}\x{3082}\x{3044}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x27
+                LayoutInline {RB} at (0,0) size 18x17
+                  LayoutText {#text} at (2,5) size 18x17
+                    text run at (2,5) width 16: "\x{60F3}"
+          LayoutText {#text} at (66,195) size 18x16
+            text run at (66,195) width 16: "\x{3001}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (64,210) size 22x18
+              LayoutRubyText {RT} at (-10,0) size 13x18
+                LayoutText {#text} at (2,0) size 10x18
+                  text run at (2,0) width 18: "\x{3053}\x{3082}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x18
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,1) size 18x16
+                    text run at (2,1) width 16: "\x{7C60}"
+          LayoutText {#text} at (66,227) size 18x96
+            text run at (66,227) width 96: "\x{308B}\x{3068}\x{305E}\x{77E5}\x{308C}\x{300D}"
+          LayoutBR {BR} at (66,323) size 18x0
+          LayoutText {#text} at (88,0) size 46x496
+            text run at (88,0) width 496: "\x{3000}\x{306A}\x{308B}\x{307B}\x{3069}\x{3044}\x{304F}\x{3089}\x{8A69}\x{4EBA}\x{304C}\x{5E78}\x{798F}\x{3067}\x{3082}\x{3001}\x{3042}\x{306E}\x{96F2}\x{96C0}\x{306E}\x{3088}\x{3046}\x{306B}\x{601D}\x{3044}\x{5207}\x{3063}\x{3066}\x{3001}\x{4E00}"
+            text run at (116,0) width 320: "\x{5FC3}\x{4E0D}\x{4E71}\x{306B}\x{3001}\x{524D}\x{5F8C}\x{3092}\x{5FD8}\x{5374}\x{3057}\x{3066}\x{3001}\x{308F}\x{304C}\x{559C}\x{3073}\x{3092}\x{6B4C}\x{3046}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (114,319) size 22x18
+              LayoutRubyText {RT} at (-10,0) size 13x18
+                LayoutText {#text} at (2,0) size 10x18
+                  text run at (2,0) width 18: "\x{308F}\x{3051}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x18
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,1) size 18x16
+                    text run at (2,1) width 16: "\x{8A33}"
+          LayoutText {#text} at (116,336) size 46x496
+            text run at (116,336) width 160: "\x{306B}\x{306F}\x{884C}\x{304F}\x{307E}\x{3044}\x{3002}\x{897F}\x{6D0B}\x{306E}"
+            text run at (144,0) width 256: "\x{8A69}\x{306F}\x{7121}\x{8AD6}\x{306E}\x{4E8B}\x{3001}\x{652F}\x{90A3}\x{306E}\x{8A69}\x{306B}\x{3082}\x{3001}\x{3088}\x{304F}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x34
+            LayoutRubyRun (anonymous) at (142,255) size 22x36
+              LayoutRubyText {RT} at (-10,0) size 13x36
+                LayoutText {#text} at (2,0) size 10x36
+                  text run at (2,0) width 36: "\x{3070}\x{3093}\x{3053}\x{304F}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x36
+                LayoutInline {RB} at (0,0) size 18x34
+                  LayoutText {#text} at (2,1) size 18x34
+                    text run at (2,1) width 34: "\x{4E07}\x{659B}"
+          LayoutText {#text} at (144,290) size 18x16
+            text run at (144,290) width 16: "\x{306E}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x19
+            LayoutRubyRun (anonymous) at (142,302) size 22x27
+              LayoutRubyText {RT} at (-10,0) size 13x27
+                LayoutText {#text} at (2,0) size 10x27
+                  text run at (2,0) width 27: "\x{3046}\x{308C}\x{3044}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x27
+                LayoutInline {RB} at (0,0) size 18x17
+                  LayoutText {#text} at (2,5) size 18x17
+                    text run at (2,5) width 16: "\x{6101}"
+          LayoutText {#text} at (144,325) size 46x501
+            text run at (144,325) width 176: "\x{306A}\x{3069}\x{3068}\x{4E91}\x{3046}\x{5B57}\x{304C}\x{3042}\x{308B}\x{3002}\x{8A69}"
+            text run at (172,0) width 112: "\x{4EBA}\x{3060}\x{304B}\x{3089}\x{4E07}\x{659B}\x{3067}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x34
+            LayoutRubyRun (anonymous) at (170,111) size 22x36
+              LayoutRubyText {RT} at (-10,0) size 13x36
+                LayoutText {#text} at (2,0) size 10x36
+                  text run at (2,0) width 36: "\x{3057}\x{308D}\x{3046}\x{3068}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x36
+                LayoutInline {RB} at (0,0) size 18x34
+                  LayoutText {#text} at (2,1) size 18x34
+                    text run at (2,1) width 34: "\x{7D20}\x{4EBA}"
+          LayoutText {#text} at (172,146) size 18x48
+            text run at (172,146) width 48: "\x{306A}\x{3089}\x{4E00}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (170,193) size 22x18
+              LayoutRubyText {RT} at (-10,0) size 13x18
+                LayoutText {#text} at (2,0) size 10x18
+                  text run at (2,0) width 18: "\x{3054}\x{3046}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x18
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,1) size 18x16
+                    text run at (2,1) width 16: "\x{5408}"
+          LayoutText {#text} at (172,210) size 46x498
+            text run at (172,210) width 288: "\x{3067}\x{6E08}\x{3080}\x{304B}\x{3082}\x{77E5}\x{308C}\x{306C}\x{3002}\x{3057}\x{3066}\x{898B}\x{308B}\x{3068}\x{8A69}\x{4EBA}\x{306F}\x{5E38}"
+            text run at (200,0) width 160: "\x{306E}\x{4EBA}\x{3088}\x{308A}\x{3082}\x{82E6}\x{52B4}\x{6027}\x{3067}\x{3001}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x34
+            LayoutRubyRun (anonymous) at (198,159) size 22x36
+              LayoutRubyText {RT} at (-10,0) size 13x36
+                LayoutText {#text} at (2,0) size 10x36
+                  text run at (2,0) width 36: "\x{307C}\x{3093}\x{3053}\x{3064}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x36
+                LayoutInline {RB} at (0,0) size 18x34
+                  LayoutText {#text} at (2,1) size 18x34
+                    text run at (2,1) width 34: "\x{51E1}\x{9AA8}"
+          LayoutText {#text} at (200,194) size 46x498
+            text run at (200,194) width 304: "\x{306E}\x{500D}\x{4EE5}\x{4E0A}\x{306B}\x{795E}\x{7D4C}\x{304C}\x{92ED}\x{654F}\x{306A}\x{306E}\x{304B}\x{3082}\x{77E5}\x{308C}\x{3093}\x{3002}\x{8D85}"
+            text run at (228,0) width 208: "\x{4FD7}\x{306E}\x{559C}\x{3073}\x{3082}\x{3042}\x{308D}\x{3046}\x{304C}\x{3001}\x{7121}\x{91CF}\x{306E}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x28
+            LayoutRubyRun (anonymous) at (226,204) size 22x36
+              LayoutRubyText {RT} at (-10,0) size 13x36
+                LayoutText {#text} at (2,0) size 10x36
+                  text run at (2,0) width 36: "\x{304B}\x{306A}\x{3057}\x{307F}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x36
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,10) size 18x16
+                    text run at (2,10) width 16: "\x{60B2}"
+          LayoutText {#text} at (228,236) size 40x492
+            text run at (228,236) width 256: "\x{3082}\x{591A}\x{304B}\x{308D}\x{3046}\x{3002}\x{305D}\x{3093}\x{306A}\x{3089}\x{3070}\x{8A69}\x{4EBA}\x{306B}\x{306A}\x{308B}"
+            text run at (250,0) width 112: "\x{306E}\x{3082}\x{8003}\x{3048}\x{7269}\x{3060}\x{3002}"
+          LayoutBR {BR} at (250,112) size 18x0
+          LayoutText {#text} at (278,0) size 18x128
+            text run at (278,0) width 128: "\x{3000}\x{3057}\x{3070}\x{3089}\x{304F}\x{306F}\x{8DEF}\x{304C}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x20
+            LayoutRubyRun (anonymous) at (276,123.98) size 22x27
+              LayoutRubyText {RT} at (-10,0) size 13x27
+                LayoutText {#text} at (2,0) size 10x27
+                  text run at (2,0) width 27: "\x{305F}\x{3044}\x{3089}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x27
+                LayoutInline {RB} at (0,0) size 18x17
+                  LayoutText {#text} at (2,5) size 18x17
+                    text run at (2,5) width 16: "\x{5E73}"
+          LayoutText {#text} at (278,146) size 18x65
+            text run at (278,146) width 64: "\x{3067}\x{3001}\x{53F3}\x{306F}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x49
+            LayoutRubyRun (anonymous) at (276,210.98) size 22x48
+              LayoutRubyText {RT} at (-10,0) size 13x48
+                LayoutText {#text} at (2,0) size 10x48
+                  text run at (2,0) width 47: "\x{305E}\x{3046}\x{304D}\x{3084}\x{307E}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x48
+                LayoutInline {RB} at (0,0) size 18x48
+                  LayoutText {#text} at (2,0) size 18x48
+                    text run at (2,0) width 48: "\x{96D1}\x{6728}\x{5C71}"
+          LayoutText {#text} at (278,258) size 46x499
+            text run at (278,258) width 240: "\x{3001}\x{5DE6}\x{306F}\x{83DC}\x{306E}\x{82B1}\x{306E}\x{898B}\x{3064}\x{3065}\x{3051}\x{3067}\x{3042}\x{308B}\x{3002}"
+            text run at (306,0) width 96: "\x{8DB3}\x{306E}\x{4E0B}\x{306B}\x{6642}\x{3005}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x48
+            LayoutRubyRun (anonymous) at (304,96) size 22x48
+              LayoutRubyText {RT} at (-10,0) size 13x48
+                LayoutText {#text} at (2,1) size 10x46
+                  text run at (2,1) width 45: "\x{305F}\x{3093}\x{307D}\x{307D}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x48
+                LayoutInline {RB} at (0,0) size 18x48
+                  LayoutText {#text} at (2,0) size 18x48
+                    text run at (2,0) width 48: "\x{84B2}\x{516C}\x{82F1}"
+          LayoutText {#text} at (306,144) size 18x112
+            text run at (306,144) width 112: "\x{3092}\x{8E0F}\x{307F}\x{3064}\x{3051}\x{308B}\x{3002}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x28
+            LayoutRubyRun (anonymous) at (304,252) size 22x36
+              LayoutRubyText {RT} at (-10,0) size 13x36
+                LayoutText {#text} at (2,0) size 10x36
+                  text run at (2,0) width 36: "\x{306E}\x{3053}\x{304E}\x{308A}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x36
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,10) size 18x16
+                    text run at (2,10) width 16: "\x{92F8}"
+          LayoutText {#text} at (306,284) size 46x492
+            text run at (306,284) width 208: "\x{306E}\x{3088}\x{3046}\x{306A}\x{8449}\x{304C}\x{9060}\x{616E}\x{306A}\x{304F}\x{56DB}\x{65B9}\x{3078}"
+            text run at (334,0) width 144: "\x{306E}\x{3057}\x{3066}\x{771F}\x{4E2D}\x{306B}\x{9EC4}\x{8272}\x{306A}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (332,143) size 22x18
+              LayoutRubyText {RT} at (-10,0) size 13x18
+                LayoutText {#text} at (2,0) size 10x18
+                  text run at (2,0) width 18: "\x{305F}\x{307E}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x18
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,1) size 18x16
+                    text run at (2,1) width 16: "\x{73E0}"
+          LayoutText {#text} at (334,160) size 68x496
+            text run at (334,160) width 336: "\x{3092}\x{64C1}\x{8B77}\x{3057}\x{3066}\x{3044}\x{308B}\x{3002}\x{83DC}\x{306E}\x{82B1}\x{306B}\x{6C17}\x{3092}\x{3068}\x{3089}\x{308C}\x{3066}\x{3001}\x{8E0F}\x{307F}"
+            text run at (356,0) width 496: "\x{3064}\x{3051}\x{305F}\x{3042}\x{3068}\x{3067}\x{3001}\x{6C17}\x{306E}\x{6BD2}\x{306A}\x{4E8B}\x{3092}\x{3057}\x{305F}\x{3068}\x{3001}\x{632F}\x{308A}\x{5411}\x{3044}\x{3066}\x{898B}\x{308B}\x{3068}\x{3001}\x{9EC4}\x{8272}\x{306A}\x{73E0}\x{306F}"
+            text run at (384,0) width 160: "\x{4F9D}\x{7136}\x{3068}\x{3057}\x{3066}\x{92F8}\x{306E}\x{306A}\x{304B}\x{306B}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x32
+            LayoutRubyRun (anonymous) at (382,160) size 22x32
+              LayoutRubyText {RT} at (-10,0) size 13x32
+                LayoutText {#text} at (2,0) size 10x31
+                  text run at (2,0) width 30: "\x{3061}\x{3093}\x{3056}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x32
+                LayoutInline {RB} at (0,0) size 18x32
+                  LayoutText {#text} at (2,0) size 18x32
+                    text run at (2,0) width 32: "\x{93AE}\x{5EA7}"
+          LayoutText {#text} at (384,192) size 18x80
+            text run at (384,192) width 80: "\x{3057}\x{3066}\x{3044}\x{308B}\x{3002}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x32
+            LayoutRubyRun (anonymous) at (382,272) size 22x32
+              LayoutRubyText {RT} at (-10,0) size 13x32
+                LayoutText {#text} at (2,0) size 10x31
+                  text run at (2,0) width 30: "\x{306E}\x{3093}\x{304D}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x32
+                LayoutInline {RB} at (0,0) size 18x32
+                  LayoutText {#text} at (2,0) size 18x32
+                    text run at (2,0) width 32: "\x{5451}\x{6C17}"
+          LayoutText {#text} at (384,304) size 40x496
+            text run at (384,304) width 192: "\x{306A}\x{3082}\x{306E}\x{3060}\x{3002}\x{307E}\x{305F}\x{8003}\x{3048}\x{3092}\x{3064}\x{3065}"
+            text run at (406,0) width 48: "\x{3051}\x{308B}\x{3002}"
+          LayoutBR {BR} at (406,48) size 18x0
+          LayoutText {#text} at (434,0) size 18x64
+            text run at (434,0) width 64: "\x{3000}\x{8A69}\x{4EBA}\x{306B}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x20
+            LayoutRubyRun (anonymous) at (432,59.98) size 22x27
+              LayoutRubyText {RT} at (-10,0) size 13x27
+                LayoutText {#text} at (2,0) size 10x27
+                  text run at (2,0) width 27: "\x{3046}\x{308C}\x{3044}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x27
+                LayoutInline {RB} at (0,0) size 18x17
+                  LayoutText {#text} at (2,5) size 18x17
+                    text run at (2,5) width 16: "\x{6182}"
+          LayoutText {#text} at (434,82) size 18x241
+            text run at (434,82) width 240: "\x{306F}\x{3064}\x{304D}\x{3082}\x{306E}\x{304B}\x{3082}\x{77E5}\x{308C}\x{306A}\x{3044}\x{304C}\x{3001}\x{3042}\x{306E}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x33
+            LayoutRubyRun (anonymous) at (432,322.98) size 22x32
+              LayoutRubyText {RT} at (-10,0) size 13x32
+                LayoutText {#text} at (2,0) size 10x31
+                  text run at (2,0) width 30: "\x{3072}\x{3070}\x{308A}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x32
+                LayoutInline {RB} at (0,0) size 18x32
+                  LayoutText {#text} at (2,0) size 18x32
+                    text run at (2,0) width 32: "\x{96F2}\x{96C0}"
+          LayoutText {#text} at (434,354) size 18x145
+            text run at (434,354) width 144: "\x{3092}\x{805E}\x{304F}\x{5FC3}\x{6301}\x{306B}\x{306A}\x{308C}\x{3070}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x32
+            LayoutRubyRun (anonymous) at (460,0) size 22x32
+              LayoutRubyText {RT} at (-10,0) size 13x32
+                LayoutText {#text} at (2,0) size 10x31
+                  text run at (2,0) width 30: "\x{307F}\x{3058}\x{3093}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x32
+                LayoutInline {RB} at (0,0) size 18x32
+                  LayoutText {#text} at (2,0) size 18x32
+                    text run at (2,0) width 32: "\x{5FAE}\x{5875}"
+          LayoutText {#text} at (462,32) size 18x16
+            text run at (462,32) width 16: "\x{306E}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (460,48) size 22x16
+              LayoutRubyText {RT} at (-10,0) size 13x16
+                LayoutText {#text} at (2,3) size 10x10
+                  text run at (2,3) width 9: "\x{304F}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x16
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,0) size 18x16
+                    text run at (2,0) width 16: "\x{82E6}"
+          LayoutText {#text} at (462,64) size 18x336
+            text run at (462,64) width 336: "\x{3082}\x{306A}\x{3044}\x{3002}\x{83DC}\x{306E}\x{82B1}\x{3092}\x{898B}\x{3066}\x{3082}\x{3001}\x{305F}\x{3060}\x{3046}\x{308C}\x{3057}\x{304F}\x{3066}\x{80F8}\x{304C}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (460,399) size 22x18
+              LayoutRubyText {RT} at (-10,0) size 13x18
+                LayoutText {#text} at (2,0) size 10x18
+                  text run at (2,0) width 18: "\x{304A}\x{3069}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x18
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,1) size 18x16
+                    text run at (2,1) width 16: "\x{8E8D}"
+          LayoutText {#text} at (462,416) size 68x496
+            text run at (462,416) width 64: "\x{308B}\x{3070}\x{304B}\x{308A}"
+            text run at (484,0) width 496: "\x{3060}\x{3002}\x{84B2}\x{516C}\x{82F1}\x{3082}\x{305D}\x{306E}\x{901A}\x{308A}\x{3001}\x{685C}\x{3082}\x{2015}\x{2015}\x{685C}\x{306F}\x{3044}\x{3064}\x{304B}\x{898B}\x{3048}\x{306A}\x{304F}\x{306A}\x{3063}\x{305F}\x{3002}\x{3053}\x{3046}\x{5C71}"
+            text run at (512,0) width 128: "\x{306E}\x{4E2D}\x{3078}\x{6765}\x{3066}\x{81EA}\x{7136}\x{306E}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x34
+            LayoutRubyRun (anonymous) at (510,127) size 22x36
+              LayoutRubyText {RT} at (-10,0) size 13x36
+                LayoutText {#text} at (2,0) size 10x36
+                  text run at (2,0) width 36: "\x{3051}\x{3044}\x{3076}\x{3064}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x36
+                LayoutInline {RB} at (0,0) size 18x34
+                  LayoutText {#text} at (2,1) size 18x34
+                    text run at (2,1) width 34: "\x{666F}\x{7269}"
+          LayoutText {#text} at (512,162) size 46x498
+            text run at (512,162) width 336: "\x{306B}\x{63A5}\x{3059}\x{308C}\x{3070}\x{3001}\x{898B}\x{308B}\x{3082}\x{306E}\x{3082}\x{805E}\x{304F}\x{3082}\x{306E}\x{3082}\x{9762}\x{767D}\x{3044}\x{3002}\x{9762}"
+            text run at (540,0) width 384: "\x{767D}\x{3044}\x{3060}\x{3051}\x{3067}\x{5225}\x{6BB5}\x{306E}\x{82E6}\x{3057}\x{307F}\x{3082}\x{8D77}\x{3089}\x{306C}\x{3002}\x{8D77}\x{308B}\x{3068}\x{3059}\x{308C}\x{3070}\x{8DB3}\x{304C}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x32
+            LayoutRubyRun (anonymous) at (538,384) size 22x32
+              LayoutRubyText {RT} at (-10,0) size 13x32
+                LayoutText {#text} at (2,0) size 10x31
+                  text run at (2,0) width 30: "\x{304F}\x{305F}\x{3073}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x32
+                LayoutInline {RB} at (0,0) size 18x32
+                  LayoutText {#text} at (2,0) size 18x32
+                    text run at (2,0) width 32: "\x{8349}\x{81E5}"
+          LayoutText {#text} at (540,416) size 18x48
+            text run at (540,416) width 48: "\x{308C}\x{3066}\x{3001}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (538,463) size 22x18
+              LayoutRubyText {RT} at (-10,0) size 13x18
+                LayoutText {#text} at (2,0) size 10x18
+                  text run at (2,0) width 18: "\x{3046}\x{307E}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x18
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,1) size 18x16
+                    text run at (2,1) width 16: "\x{65E8}"
+          LayoutText {#text} at (540,480) size 40x496
+            text run at (540,480) width 16: "\x{3044}"
+            text run at (562,0) width 272: "\x{3082}\x{306E}\x{304C}\x{98DF}\x{3079}\x{3089}\x{308C}\x{306C}\x{304F}\x{3089}\x{3044}\x{306E}\x{4E8B}\x{3060}\x{308D}\x{3046}\x{3002}"
+          LayoutBR {BR} at (562,272) size 18x0
+          LayoutText {#text} at (590,0) size 18x416
+            text run at (590,0) width 416: "\x{3000}\x{3057}\x{304B}\x{3057}\x{82E6}\x{3057}\x{307F}\x{306E}\x{306A}\x{3044}\x{306E}\x{306F}\x{306A}\x{305C}\x{3060}\x{308D}\x{3046}\x{3002}\x{305F}\x{3060}\x{3053}\x{306E}\x{666F}\x{8272}\x{3092}\x{4E00}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (588,415) size 22x18
+              LayoutRubyText {RT} at (-10,0) size 13x18
+                LayoutText {#text} at (2,0) size 10x18
+                  text run at (2,0) width 18: "\x{3077}\x{304F}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x18
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,1) size 18x16
+                    text run at (2,1) width 16: "\x{5E45}"
+          LayoutText {#text} at (590,432) size 18x16
+            text run at (590,432) width 16: "\x{306E}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (588,448) size 22x16
+              LayoutRubyText {RT} at (-10,0) size 13x16
+                LayoutText {#text} at (2,3) size 10x10
+                  text run at (2,3) width 9: "\x{3048}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x16
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,0) size 18x16
+                    text run at (2,0) width 16: "\x{753B}"
+          LayoutText {#text} at (590,464) size 46x496
+            text run at (590,464) width 32: "\x{3068}\x{3057}"
+            text run at (618,0) width 16: "\x{3066}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (616,16) size 22x16
+              LayoutRubyText {RT} at (-10,0) size 13x16
+                LayoutText {#text} at (2,3) size 10x10
+                  text run at (2,3) width 9: "\x{307F}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x16
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,0) size 18x16
+                    text run at (2,0) width 16: "\x{89B3}"
+          LayoutText {#text} at (618,32) size 18x32
+            text run at (618,32) width 32: "\x{3001}\x{4E00}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (616,63) size 22x18
+              LayoutRubyText {RT} at (-10,0) size 13x18
+                LayoutText {#text} at (2,0) size 10x18
+                  text run at (2,0) width 18: "\x{304B}\x{3093}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x18
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,1) size 18x16
+                    text run at (2,1) width 16: "\x{5DFB}"
+          LayoutText {#text} at (618,80) size 18x208
+            text run at (618,80) width 208: "\x{306E}\x{8A69}\x{3068}\x{3057}\x{3066}\x{8AAD}\x{3080}\x{304B}\x{3089}\x{3067}\x{3042}\x{308B}\x{3002}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (616,288) size 22x16
+              LayoutRubyText {RT} at (-10,0) size 13x16
+                LayoutText {#text} at (2,3) size 10x10
+                  text run at (2,3) width 9: "\x{304C}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x16
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,0) size 18x16
+                    text run at (2,0) width 16: "\x{753B}"
+          LayoutText {#text} at (618,304) size 18x160
+            text run at (618,304) width 160: "\x{3067}\x{3042}\x{308A}\x{8A69}\x{3067}\x{3042}\x{308B}\x{4EE5}\x{4E0A}\x{306F}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x32
+            LayoutRubyRun (anonymous) at (616,464) size 22x32
+              LayoutRubyText {RT} at (-10,0) size 13x32
+                LayoutText {#text} at (2,0) size 10x31
+                  text run at (2,0) width 30: "\x{3058}\x{3081}\x{3093}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x32
+                LayoutInline {RB} at (0,0) size 18x32
+                  LayoutText {#text} at (2,0) size 18x32
+                    text run at (2,0) width 32: "\x{5730}\x{9762}"
+          LayoutText {#text} at (646,0) size 18x368
+            text run at (646,0) width 368: "\x{3092}\x{8CB0}\x{3063}\x{3066}\x{3001}\x{958B}\x{62D3}\x{3059}\x{308B}\x{6C17}\x{306B}\x{3082}\x{306A}\x{3089}\x{306D}\x{3070}\x{3001}\x{9244}\x{9053}\x{3092}\x{304B}\x{3051}\x{3066}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x34
+            LayoutRubyRun (anonymous) at (644,367) size 22x36
+              LayoutRubyText {RT} at (-10,0) size 13x36
+                LayoutText {#text} at (2,0) size 10x36
+                  text run at (2,0) width 36: "\x{3072}\x{3068}\x{3082}\x{3046}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x36
+                LayoutInline {RB} at (0,0) size 18x34
+                  LayoutText {#text} at (2,1) size 18x34
+                    text run at (2,1) width 34: "\x{4E00}\x{5132}"
+          LayoutText {#text} at (646,402) size 18x48
+            text run at (646,402) width 48: "\x{3051}\x{3059}\x{308B}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x42
+            LayoutRubyRun (anonymous) at (644,447) size 22x45
+              LayoutRubyText {RT} at (-10,0) size 13x45
+                LayoutText {#text} at (2,0) size 10x45
+                  text run at (2,0) width 45: "\x{308A}\x{3087}\x{3046}\x{3051}\x{3093}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x45
+                LayoutInline {RB} at (0,0) size 18x39
+                  LayoutText {#text} at (2,3) size 18x39
+                    text run at (2,3) width 38: "\x{4E86}\x{898B}"
+          LayoutText {#text} at (674,0) size 18x256
+            text run at (674,0) width 256: "\x{3082}\x{8D77}\x{3089}\x{306C}\x{3002}\x{305F}\x{3060}\x{3053}\x{306E}\x{666F}\x{8272}\x{304C}\x{2015}\x{2015}\x{8179}\x{306E}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (672,256) size 22x16
+              LayoutRubyText {RT} at (-10,0) size 13x16
+                LayoutText {#text} at (2,3) size 10x10
+                  text run at (2,3) width 9: "\x{305F}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x16
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,0) size 18x16
+                    text run at (2,0) width 16: "\x{8DB3}"
+          LayoutText {#text} at (674,272) size 68x496
+            text run at (674,272) width 224: "\x{3057}\x{306B}\x{3082}\x{306A}\x{3089}\x{306C}\x{3001}\x{6708}\x{7D66}\x{306E}\x{88DC}\x{3044}\x{306B}\x{3082}"
+            text run at (696,0) width 496: "\x{306A}\x{3089}\x{306C}\x{3053}\x{306E}\x{666F}\x{8272}\x{304C}\x{666F}\x{8272}\x{3068}\x{3057}\x{3066}\x{306E}\x{307F}\x{3001}\x{4F59}\x{304C}\x{5FC3}\x{3092}\x{697D}\x{307E}\x{305B}\x{3064}\x{3064}\x{3042}\x{308B}\x{304B}\x{3089}\x{82E6}\x{52B4}"
+            text run at (724,0) width 64: "\x{3082}\x{5FC3}\x{914D}\x{3082}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x19
+            LayoutRubyRun (anonymous) at (722,60) size 22x27
+              LayoutRubyText {RT} at (-10,0) size 13x27
+                LayoutText {#text} at (2,0) size 10x27
+                  text run at (2,0) width 27: "\x{3068}\x{3082}\x{306A}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x27
+                LayoutInline {RB} at (0,0) size 18x17
+                  LayoutText {#text} at (2,5) size 18x17
+                    text run at (2,5) width 16: "\x{4F34}"
+          LayoutText {#text} at (724,83) size 18x288
+            text run at (724,83) width 288: "\x{308F}\x{306C}\x{306E}\x{3060}\x{308D}\x{3046}\x{3002}\x{81EA}\x{7136}\x{306E}\x{529B}\x{306F}\x{3053}\x{3053}\x{306B}\x{304A}\x{3044}\x{3066}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (722,370) size 22x18
+              LayoutRubyText {RT} at (-10,0) size 13x18
+                LayoutText {#text} at (2,0) size 10x18
+                  text run at (2,0) width 18: "\x{305F}\x{3063}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x18
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,1) size 18x16
+                    text run at (2,1) width 16: "\x{5C0A}"
+          LayoutText {#text} at (724,387) size 46x499
+            text run at (724,387) width 112: "\x{3068}\x{3044}\x{3002}\x{543E}\x{4EBA}\x{306E}\x{6027}"
+            text run at (752,0) width 80: "\x{60C5}\x{3092}\x{77AC}\x{523B}\x{306B}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x32
+            LayoutRubyRun (anonymous) at (750,80) size 22x32
+              LayoutRubyText {RT} at (-10,0) size 13x32
+                LayoutText {#text} at (2,0) size 10x31
+                  text run at (2,0) width 30: "\x{3068}\x{3046}\x{3084}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x32
+                LayoutInline {RB} at (0,0) size 18x32
+                  LayoutText {#text} at (2,0) size 18x32
+                    text run at (2,0) width 32: "\x{9676}\x{51B6}"
+          LayoutText {#text} at (752,112) size 18x32
+            text run at (752,112) width 32: "\x{3057}\x{3066}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x34
+            LayoutRubyRun (anonymous) at (750,143) size 22x36
+              LayoutRubyText {RT} at (-10,0) size 13x36
+                LayoutText {#text} at (2,0) size 10x36
+                  text run at (2,0) width 36: "\x{3058}\x{3085}\x{3093}\x{3053}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x36
+                LayoutInline {RB} at (0,0) size 18x34
+                  LayoutText {#text} at (2,1) size 18x34
+                    text run at (2,1) width 34: "\x{9187}\x{4E4E}"
+          LayoutText {#text} at (752,178) size 40x498
+            text run at (752,178) width 320: "\x{3068}\x{3057}\x{3066}\x{9187}\x{306A}\x{308B}\x{8A69}\x{5883}\x{306B}\x{5165}\x{3089}\x{3057}\x{3080}\x{308B}\x{306E}\x{306F}\x{81EA}\x{7136}\x{3067}\x{3042}"
+            text run at (774,0) width 32: "\x{308B}\x{3002}"
+          LayoutBR {BR} at (774,32) size 18x0
+          LayoutText {#text} at (796,0) size 46x496
+            text run at (796,0) width 496: "\x{3000}\x{604B}\x{306F}\x{3046}\x{3064}\x{304F}\x{3057}\x{304B}\x{308D}\x{3001}\x{5B5D}\x{3082}\x{3046}\x{3064}\x{304F}\x{3057}\x{304B}\x{308D}\x{3001}\x{5FE0}\x{541B}\x{611B}\x{56FD}\x{3082}\x{7D50}\x{69CB}\x{3060}\x{308D}\x{3046}\x{3002}\x{3057}"
+            text run at (824,0) width 112: "\x{304B}\x{3057}\x{81EA}\x{8EAB}\x{304C}\x{305D}\x{306E}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x19
+            LayoutRubyRun (anonymous) at (822,108) size 22x27
+              LayoutRubyText {RT} at (-10,0) size 13x27
+                LayoutText {#text} at (2,0) size 10x27
+                  text run at (2,0) width 27: "\x{304D}\x{3087}\x{304F}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x27
+                LayoutInline {RB} at (0,0) size 18x17
+                  LayoutText {#text} at (2,5) size 18x17
+                    text run at (2,5) width 16: "\x{5C40}"
+          LayoutText {#text} at (824,131) size 18x112
+            text run at (824,131) width 112: "\x{306B}\x{5F53}\x{308C}\x{3070}\x{5229}\x{5BB3}\x{306E}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x32
+            LayoutRubyRun (anonymous) at (822,243) size 22x32
+              LayoutRubyText {RT} at (-10,0) size 13x32
+                LayoutText {#text} at (2,0) size 10x31
+                  text run at (2,0) width 30: "\x{3064}\x{3080}\x{3058}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x32
+                LayoutInline {RB} at (0,0) size 18x32
+                  LayoutText {#text} at (2,0) size 18x32
+                    text run at (2,0) width 32: "\x{65CB}\x{98A8}"
+          LayoutText {#text} at (824,275) size 18x16
+            text run at (824,275) width 16: "\x{306B}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (822,291) size 22x16
+              LayoutRubyText {RT} at (-10,0) size 13x16
+                LayoutText {#text} at (2,3) size 10x10
+                  text run at (2,3) width 9: "\x{307E}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x16
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,0) size 18x16
+                    text run at (2,0) width 16: "\x{6372}"
+          LayoutText {#text} at (824,307) size 46x499
+            text run at (824,307) width 192: "\x{304D}\x{8FBC}\x{307E}\x{308C}\x{3066}\x{3001}\x{3046}\x{3064}\x{304F}\x{3057}\x{304D}\x{4E8B}"
+            text run at (852,0) width 192: "\x{306B}\x{3082}\x{3001}\x{7D50}\x{69CB}\x{306A}\x{4E8B}\x{306B}\x{3082}\x{3001}\x{76EE}\x{306F}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (850,191) size 22x18
+              LayoutRubyText {RT} at (-10,0) size 13x18
+                LayoutText {#text} at (2,0) size 10x18
+                  text run at (2,0) width 18: "\x{304F}\x{3089}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x18
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,1) size 18x16
+                    text run at (2,1) width 16: "\x{7729}"
+          LayoutText {#text} at (852,208) size 46x496
+            text run at (852,208) width 288: "\x{3093}\x{3067}\x{3057}\x{307E}\x{3046}\x{3002}\x{3057}\x{305F}\x{304C}\x{3063}\x{3066}\x{3069}\x{3053}\x{306B}\x{8A69}\x{304C}\x{3042}\x{308B}"
+            text run at (880,0) width 80: "\x{304B}\x{81EA}\x{8EAB}\x{306B}\x{306F}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (878,80) size 22x16
+              LayoutRubyText {RT} at (-10,0) size 13x16
+                LayoutText {#text} at (2,3) size 10x10
+                  text run at (2,3) width 9: "\x{3052}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x16
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,0) size 18x16
+                    text run at (2,0) width 16: "\x{89E3}"
+          LayoutText {#text} at (880,96) size 18x80
+            text run at (880,96) width 80: "\x{3057}\x{304B}\x{306D}\x{308B}\x{3002}"
+          LayoutBR {BR} at (880,176) size 18x0
+          LayoutText {#text} at (902,0) size 46x496
+            text run at (902,0) width 496: "\x{3000}\x{3053}\x{308C}\x{304C}\x{308F}\x{304B}\x{308B}\x{305F}\x{3081}\x{306B}\x{306F}\x{3001}\x{308F}\x{304B}\x{308B}\x{3060}\x{3051}\x{306E}\x{4F59}\x{88D5}\x{306E}\x{3042}\x{308B}\x{7B2C}\x{4E09}\x{8005}\x{306E}\x{5730}\x{4F4D}\x{306B}\x{7ACB}"
+            text run at (930,0) width 336: "\x{305F}\x{306D}\x{3070}\x{306A}\x{3089}\x{306C}\x{3002}\x{4E09}\x{8005}\x{306E}\x{5730}\x{4F4D}\x{306B}\x{7ACB}\x{3066}\x{3070}\x{3053}\x{305D}\x{829D}\x{5C45}\x{306F}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (928,336) size 22x16
+              LayoutRubyText {RT} at (-10,0) size 13x16
+                LayoutText {#text} at (2,3) size 10x10
+                  text run at (2,3) width 9: "\x{307F}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x16
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,0) size 18x16
+                    text run at (2,0) width 16: "\x{89B3}"
+          LayoutText {#text} at (930,352) size 68x496
+            text run at (930,352) width 144: "\x{3066}\x{9762}\x{767D}\x{3044}\x{3002}\x{5C0F}\x{8AAC}\x{3082}\x{898B}"
+            text run at (952,0) width 496: "\x{3066}\x{9762}\x{767D}\x{3044}\x{3002}\x{829D}\x{5C45}\x{3092}\x{898B}\x{3066}\x{9762}\x{767D}\x{3044}\x{4EBA}\x{3082}\x{3001}\x{5C0F}\x{8AAC}\x{3092}\x{8AAD}\x{3093}\x{3067}\x{9762}\x{767D}\x{3044}\x{4EBA}\x{3082}\x{3001}\x{81EA}\x{5DF1}\x{306E}"
+            text run at (980,0) width 48: "\x{5229}\x{5BB3}\x{306F}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (978,47) size 22x18
+              LayoutRubyText {RT} at (-10,0) size 13x18
+                LayoutText {#text} at (2,0) size 10x18
+                  text run at (2,0) width 18: "\x{305F}\x{306A}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x18
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,1) size 18x16
+                    text run at (2,1) width 16: "\x{68DA}"
+          LayoutText {#text} at (980,64) size 18x416
+            text run at (980,64) width 416: "\x{3078}\x{4E0A}\x{3052}\x{3066}\x{3044}\x{308B}\x{3002}\x{898B}\x{305F}\x{308A}\x{8AAD}\x{3093}\x{3060}\x{308A}\x{3059}\x{308B}\x{9593}\x{3060}\x{3051}\x{306F}\x{8A69}\x{4EBA}\x{3067}\x{3042}\x{308B}\x{3002}"
+          LayoutBR {BR} at (980,480) size 18x0
+          LayoutText {#text} at (1008,0) size 18x304
+            text run at (1008,0) width 304: "\x{3000}\x{305D}\x{308C}\x{3059}\x{3089}\x{3001}\x{666E}\x{901A}\x{306E}\x{829D}\x{5C45}\x{3084}\x{5C0F}\x{8AAC}\x{3067}\x{306F}\x{4EBA}\x{60C5}\x{3092}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (1006,303) size 22x18
+              LayoutRubyText {RT} at (-10,0) size 13x18
+                LayoutText {#text} at (2,0) size 10x18
+                  text run at (2,0) width 18: "\x{307E}\x{306C}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x18
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,1) size 18x16
+                    text run at (2,1) width 16: "\x{514D}"
+          LayoutText {#text} at (1008,320) size 68x496
+            text run at (1008,320) width 176: "\x{304B}\x{308C}\x{306C}\x{3002}\x{82E6}\x{3057}\x{3093}\x{3060}\x{308A}\x{3001}\x{6012}"
+            text run at (1030,0) width 496: "\x{3063}\x{305F}\x{308A}\x{3001}\x{9A12}\x{3044}\x{3060}\x{308A}\x{3001}\x{6CE3}\x{3044}\x{305F}\x{308A}\x{3059}\x{308B}\x{3002}\x{898B}\x{308B}\x{3082}\x{306E}\x{3082}\x{3044}\x{3064}\x{304B}\x{305D}\x{306E}\x{4E2D}\x{306B}\x{540C}\x{5316}\x{3057}"
+            text run at (1058,0) width 384: "\x{3066}\x{82E6}\x{3057}\x{3093}\x{3060}\x{308A}\x{3001}\x{6012}\x{3063}\x{305F}\x{308A}\x{3001}\x{9A12}\x{3044}\x{3060}\x{308A}\x{3001}\x{6CE3}\x{3044}\x{305F}\x{308A}\x{3059}\x{308B}\x{3002}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x32
+            LayoutRubyRun (anonymous) at (1056,384) size 22x32
+              LayoutRubyText {RT} at (-10,0) size 13x32
+                LayoutText {#text} at (2,0) size 10x31
+                  text run at (2,0) width 30: "\x{3068}\x{308A}\x{3048}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x32
+                LayoutInline {RB} at (0,0) size 18x32
+                  LayoutText {#text} at (2,0) size 18x32
+                    text run at (2,0) width 32: "\x{53D6}\x{67C4}"
+          LayoutText {#text} at (1058,416) size 18x64
+            text run at (1058,416) width 64: "\x{306F}\x{5229}\x{617E}\x{304C}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x17
+            LayoutRubyRun (anonymous) at (1056,479) size 22x18
+              LayoutRubyText {RT} at (-10,0) size 13x18
+                LayoutText {#text} at (2,0) size 10x18
+                  text run at (2,0) width 18: "\x{307E}\x{3058}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x18
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,1) size 18x16
+                    text run at (2,1) width 16: "\x{4EA4}"
+          LayoutText {#text} at (1086,0) size 18x112
+            text run at (1086,0) width 112: "\x{3089}\x{306C}\x{3068}\x{4E91}\x{3046}\x{70B9}\x{306B}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (1084,111) size 22x18
+              LayoutRubyText {RT} at (-10,0) size 13x18
+                LayoutText {#text} at (2,0) size 10x18
+                  text run at (2,0) width 18: "\x{305D}\x{3093}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x18
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,1) size 18x16
+                    text run at (2,1) width 16: "\x{5B58}"
+          LayoutText {#text} at (1086,128) size 18x304
+            text run at (1086,128) width 304: "\x{3059}\x{308B}\x{304B}\x{3082}\x{77E5}\x{308C}\x{306C}\x{304C}\x{3001}\x{4EA4}\x{3089}\x{306C}\x{3060}\x{3051}\x{306B}\x{305D}\x{306E}\x{4ED6}\x{306E}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x39
+            LayoutRubyRun (anonymous) at (1084,429) size 22x45
+              LayoutRubyText {RT} at (-10,0) size 13x45
+                LayoutText {#text} at (2,0) size 10x45
+                  text run at (2,0) width 45: "\x{3058}\x{3087}\x{3046}\x{3057}\x{3087}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x45
+                LayoutInline {RB} at (0,0) size 18x39
+                  LayoutText {#text} at (2,3) size 18x39
+                    text run at (2,3) width 38: "\x{60C5}\x{7DD2}"
+          LayoutText {#text} at (1086,471) size 46x503
+            text run at (1086,471) width 32: "\x{306F}\x{5E38}"
+            text run at (1114,0) width 272: "\x{3088}\x{308A}\x{306F}\x{4F59}\x{8A08}\x{306B}\x{6D3B}\x{52D5}\x{3059}\x{308B}\x{3060}\x{308D}\x{3046}\x{3002}\x{305D}\x{308C}\x{304C}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (1112,271) size 22x18
+              LayoutRubyText {RT} at (-10,0) size 13x18
+                LayoutText {#text} at (2,0) size 10x18
+                  text run at (2,0) width 18: "\x{3044}\x{3084}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x18
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,1) size 18x16
+                    text run at (2,1) width 16: "\x{5ACC}"
+          LayoutText {#text} at (1114,288) size 18x32
+            text run at (1114,288) width 32: "\x{3060}\x{3002}"
+          LayoutBR {BR} at (1114,320) size 18x0
+          LayoutText {#text} at (1136,0) size 46x480
+            text run at (1136,0) width 480: "\x{3000}\x{82E6}\x{3057}\x{3093}\x{3060}\x{308A}\x{3001}\x{6012}\x{3063}\x{305F}\x{308A}\x{3001}\x{9A12}\x{3044}\x{3060}\x{308A}\x{3001}\x{6CE3}\x{3044}\x{305F}\x{308A}\x{306F}\x{4EBA}\x{306E}\x{4E16}\x{306B}\x{3064}\x{304D}\x{3082}\x{306E}"
+            text run at (1164,0) width 192: "\x{3060}\x{3002}\x{4F59}\x{3082}\x{4E09}\x{5341}\x{5E74}\x{306E}\x{9593}\x{305D}\x{308C}\x{3092}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x32
+            LayoutRubyRun (anonymous) at (1162,192) size 22x32
+              LayoutRubyText {RT} at (-10,0) size 13x32
+                LayoutText {#text} at (2,0) size 10x31
+                  text run at (2,0) width 30: "\x{3057}\x{3068}\x{304A}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x32
+                LayoutInline {RB} at (0,0) size 18x32
+                  LayoutText {#text} at (2,0) size 18x32
+                    text run at (2,0) width 32: "\x{4ED5}\x{901A}"
+          LayoutText {#text} at (1164,224) size 18x48
+            text run at (1164,224) width 48: "\x{3057}\x{3066}\x{3001}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x34
+            LayoutRubyRun (anonymous) at (1162,271) size 22x36
+              LayoutRubyText {RT} at (-10,0) size 13x36
+                LayoutText {#text} at (2,0) size 10x36
+                  text run at (2,0) width 36: "\x{3042}\x{304D}\x{3042}\x{304D}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x36
+                LayoutInline {RB} at (0,0) size 18x34
+                  LayoutText {#text} at (2,1) size 18x34
+                    text run at (2,1) width 34: "\x{98FD}\x{3005}"
+          LayoutText {#text} at (1164,306) size 18x48
+            text run at (1164,306) width 48: "\x{3057}\x{305F}\x{3002}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (1162,354) size 22x16
+              LayoutRubyText {RT} at (-10,0) size 13x16
+                LayoutText {#text} at (2,3) size 10x10
+                  text run at (2,3) width 9: "\x{3042}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x16
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,0) size 18x16
+                    text run at (2,0) width 16: "\x{98FD}"
+          LayoutText {#text} at (1164,370) size 68x498
+            text run at (1164,370) width 128: "\x{304D}\x{98FD}\x{304D}\x{3057}\x{305F}\x{4E0A}\x{306B}\x{829D}"
+            text run at (1186,0) width 496: "\x{5C45}\x{3084}\x{5C0F}\x{8AAC}\x{3067}\x{540C}\x{3058}\x{523A}\x{6FC0}\x{3092}\x{7E70}\x{308A}\x{8FD4}\x{3057}\x{3066}\x{306F}\x{5927}\x{5909}\x{3060}\x{3002}\x{4F59}\x{304C}\x{6B32}\x{3059}\x{308B}\x{8A69}\x{306F}\x{305D}\x{3093}\x{306A}\x{4E16}"
+            text run at (1214,0) width 96: "\x{9593}\x{7684}\x{306E}\x{4EBA}\x{60C5}\x{3092}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x32
+            LayoutRubyRun (anonymous) at (1212,96) size 22x32
+              LayoutRubyText {RT} at (-10,0) size 13x32
+                LayoutText {#text} at (2,3) size 10x26
+                  text run at (2,3) width 25: "\x{3053}\x{3076}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x32
+                LayoutInline {RB} at (0,0) size 18x32
+                  LayoutText {#text} at (2,0) size 18x32
+                    text run at (2,0) width 32: "\x{9F13}\x{821E}"
+          LayoutText {#text} at (1214,128) size 46x496
+            text run at (1214,128) width 368: "\x{3059}\x{308B}\x{3088}\x{3046}\x{306A}\x{3082}\x{306E}\x{3067}\x{306F}\x{306A}\x{3044}\x{3002}\x{4FD7}\x{5FF5}\x{3092}\x{653E}\x{68C4}\x{3057}\x{3066}\x{3001}\x{3057}\x{3070}\x{3089}"
+            text run at (1242,0) width 48: "\x{304F}\x{3067}\x{3082}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x34
+            LayoutRubyRun (anonymous) at (1240,47) size 22x36
+              LayoutRubyText {RT} at (-10,0) size 13x36
+                LayoutText {#text} at (2,0) size 10x36
+                  text run at (2,0) width 36: "\x{3058}\x{3093}\x{304B}\x{3044}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x36
+                LayoutInline {RB} at (0,0) size 18x34
+                  LayoutText {#text} at (2,1) size 18x34
+                    text run at (2,1) width 34: "\x{5875}\x{754C}"
+          LayoutText {#text} at (1242,82) size 90x498
+            text run at (1242,82) width 416: "\x{3092}\x{96E2}\x{308C}\x{305F}\x{5FC3}\x{6301}\x{3061}\x{306B}\x{306A}\x{308C}\x{308B}\x{8A69}\x{3067}\x{3042}\x{308B}\x{3002}\x{3044}\x{304F}\x{3089}\x{5091}\x{4F5C}\x{3067}\x{3082}\x{4EBA}\x{60C5}\x{3092}"
+            text run at (1264,0) width 496: "\x{96E2}\x{308C}\x{305F}\x{829D}\x{5C45}\x{306F}\x{306A}\x{3044}\x{3001}\x{7406}\x{975E}\x{3092}\x{7D76}\x{3057}\x{305F}\x{5C0F}\x{8AAC}\x{306F}\x{5C11}\x{304B}\x{308D}\x{3046}\x{3002}\x{3069}\x{3053}\x{307E}\x{3067}\x{3082}\x{4E16}\x{9593}\x{3092}"
+            text run at (1286,0) width 496: "\x{51FA}\x{308B}\x{4E8B}\x{304C}\x{51FA}\x{6765}\x{306C}\x{306E}\x{304C}\x{5F7C}\x{3089}\x{306E}\x{7279}\x{8272}\x{3067}\x{3042}\x{308B}\x{3002}\x{3053}\x{3068}\x{306B}\x{897F}\x{6D0B}\x{306E}\x{8A69}\x{306B}\x{306A}\x{308B}\x{3068}\x{3001}\x{4EBA}"
+            text run at (1314,0) width 208: "\x{4E8B}\x{304C}\x{6839}\x{672C}\x{306B}\x{306A}\x{308B}\x{304B}\x{3089}\x{3044}\x{308F}\x{3086}\x{308B}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x32
+            LayoutRubyRun (anonymous) at (1312,208) size 22x32
+              LayoutRubyText {RT} at (-10,0) size 13x32
+                LayoutText {#text} at (2,0) size 10x31
+                  text run at (2,0) width 30: "\x{3057}\x{3044}\x{304B}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x32
+                LayoutInline {RB} at (0,0) size 18x32
+                  LayoutText {#text} at (2,0) size 18x32
+                    text run at (2,0) width 32: "\x{8A69}\x{6B4C}"
+          LayoutText {#text} at (1314,240) size 18x160
+            text run at (1314,240) width 160: "\x{306E}\x{7D14}\x{7C8B}\x{306A}\x{308B}\x{3082}\x{306E}\x{3082}\x{3053}\x{306E}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x19
+            LayoutRubyRun (anonymous) at (1312,396) size 22x27
+              LayoutRubyText {RT} at (-10,0) size 13x27
+                LayoutText {#text} at (2,0) size 10x27
+                  text run at (2,0) width 27: "\x{304D}\x{3087}\x{3046}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x27
+                LayoutInline {RB} at (0,0) size 18x17
+                  LayoutText {#text} at (2,5) size 18x17
+                    text run at (2,5) width 16: "\x{5883}"
+          LayoutText {#text} at (1314,419) size 18x16
+            text run at (1314,419) width 16: "\x{3092}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x32
+            LayoutRubyRun (anonymous) at (1312,435) size 22x32
+              LayoutRubyText {RT} at (-10,0) size 13x32
+                LayoutText {#text} at (2,0) size 10x31
+                  text run at (2,0) width 30: "\x{3052}\x{3060}\x{3064}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x32
+                LayoutInline {RB} at (0,0) size 18x32
+                  LayoutText {#text} at (2,0) size 18x32
+                    text run at (2,0) width 32: "\x{89E3}\x{8131}"
+          LayoutText {#text} at (1314,467) size 68x499
+            text run at (1314,467) width 32: "\x{3059}\x{308B}"
+            text run at (1336,0) width 496: "\x{4E8B}\x{3092}\x{77E5}\x{3089}\x{306C}\x{3002}\x{3069}\x{3053}\x{307E}\x{3067}\x{3082}\x{540C}\x{60C5}\x{3060}\x{3068}\x{304B}\x{3001}\x{611B}\x{3060}\x{3068}\x{304B}\x{3001}\x{6B63}\x{7FA9}\x{3060}\x{3068}\x{304B}\x{3001}\x{81EA}\x{7531}\x{3060}"
+            text run at (1364,0) width 48: "\x{3068}\x{304B}\x{3001}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x32
+            LayoutRubyRun (anonymous) at (1362,48) size 22x32
+              LayoutRubyText {RT} at (-10,0) size 13x32
+                LayoutText {#text} at (2,0) size 10x31
+                  text run at (2,0) width 30: "\x{3046}\x{304D}\x{3088}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x32
+                LayoutInline {RB} at (0,0) size 18x32
+                  LayoutText {#text} at (2,0) size 18x32
+                    text run at (2,0) width 32: "\x{6D6E}\x{4E16}"
+          LayoutText {#text} at (1364,80) size 18x16
+            text run at (1364,80) width 16: "\x{306E}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x48
+            LayoutRubyRun (anonymous) at (1362,96) size 22x48
+              LayoutRubyText {RT} at (-10,0) size 13x48
+                LayoutText {#text} at (2,0) size 10x48
+                  text run at (2,0) width 47: "\x{304B}\x{3093}\x{3053}\x{3046}\x{3070}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x48
+                LayoutInline {RB} at (0,0) size 18x48
+                  LayoutText {#text} at (2,0) size 18x48
+                    text run at (2,0) width 48: "\x{52E7}\x{5DE5}\x{5834}"
+          LayoutText {#text} at (1364,144) size 18x160
+            text run at (1364,144) width 160: "\x{306B}\x{3042}\x{308B}\x{3082}\x{306E}\x{3060}\x{3051}\x{3067}\x{7528}\x{3092}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (1362,303) size 22x18
+              LayoutRubyText {RT} at (-10,0) size 13x18
+                LayoutText {#text} at (2,0) size 10x18
+                  text run at (2,0) width 18: "\x{3079}\x{3093}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x18
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,1) size 18x16
+                    text run at (2,1) width 16: "\x{5F01}"
+          LayoutText {#text} at (1364,320) size 46x496
+            text run at (1364,320) width 176: "\x{3058}\x{3066}\x{3044}\x{308B}\x{3002}\x{3044}\x{304F}\x{3089}\x{8A69}\x{7684}\x{306B}"
+            text run at (1392,0) width 144: "\x{306A}\x{3063}\x{3066}\x{3082}\x{5730}\x{9762}\x{306E}\x{4E0A}\x{3092}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (1390,144) size 22x16
+              LayoutRubyText {RT} at (-10,0) size 13x16
+                LayoutText {#text} at (2,3) size 10x10
+                  text run at (2,3) width 9: "\x{304B}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x16
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,0) size 18x16
+                    text run at (2,0) width 16: "\x{99B3}"
+          LayoutText {#text} at (1392,160) size 18x112
+            text run at (1392,160) width 112: "\x{3051}\x{3066}\x{3042}\x{308B}\x{3044}\x{3066}\x{3001}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (1390,271) size 22x18
+              LayoutRubyText {RT} at (-10,0) size 13x18
+                LayoutText {#text} at (2,0) size 10x18
+                  text run at (2,0) width 18: "\x{305C}\x{306B}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x18
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,1) size 18x16
+                    text run at (2,1) width 16: "\x{92AD}"
+          LayoutText {#text} at (1392,288) size 46x496
+            text run at (1392,288) width 208: "\x{306E}\x{52D8}\x{5B9A}\x{3092}\x{5FD8}\x{308C}\x{308B}\x{3072}\x{307E}\x{304C}\x{306A}\x{3044}\x{3002}"
+            text run at (1420,0) width 80: "\x{30B7}\x{30A7}\x{30EC}\x{30FC}\x{304C}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x32
+            LayoutRubyRun (anonymous) at (1418,80) size 22x32
+              LayoutRubyText {RT} at (-10,0) size 13x32
+                LayoutText {#text} at (2,0) size 10x31
+                  text run at (2,0) width 30: "\x{3072}\x{3070}\x{308A}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x32
+                LayoutInline {RB} at (0,0) size 18x32
+                  LayoutText {#text} at (2,0) size 18x32
+                    text run at (2,0) width 32: "\x{96F2}\x{96C0}"
+          LayoutText {#text} at (1420,112) size 18x256
+            text run at (1420,112) width 256: "\x{3092}\x{805E}\x{3044}\x{3066}\x{5606}\x{606F}\x{3057}\x{305F}\x{306E}\x{3082}\x{7121}\x{7406}\x{306F}\x{306A}\x{3044}\x{3002}"
+          LayoutBR {BR} at (1420,368) size 18x0
+          LayoutText {#text} at (1448,0) size 18x160
+            text run at (1448,0) width 160: "\x{3000}\x{3046}\x{308C}\x{3057}\x{3044}\x{4E8B}\x{306B}\x{6771}\x{6D0B}\x{306E}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x33
+            LayoutRubyRun (anonymous) at (1446,159.98) size 22x32
+              LayoutRubyText {RT} at (-10,0) size 13x32
+                LayoutText {#text} at (2,0) size 10x31
+                  text run at (2,0) width 30: "\x{3057}\x{3044}\x{304B}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x32
+                LayoutInline {RB} at (0,0) size 18x32
+                  LayoutText {#text} at (2,0) size 18x32
+                    text run at (2,0) width 32: "\x{8A69}\x{6B4C}"
+          LayoutText {#text} at (1448,191) size 18x65
+            text run at (1448,191) width 64: "\x{306F}\x{305D}\x{3053}\x{3092}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x33
+            LayoutRubyRun (anonymous) at (1446,255.98) size 22x32
+              LayoutRubyText {RT} at (-10,0) size 13x32
+                LayoutText {#text} at (2,0) size 10x31
+                  text run at (2,0) width 30: "\x{3052}\x{3060}\x{3064}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x32
+                LayoutInline {RB} at (0,0) size 18x32
+                  LayoutText {#text} at (2,0) size 18x32
+                    text run at (2,0) width 32: "\x{89E3}\x{8131}"
+          LayoutText {#text} at (1448,287) size 18x113
+            text run at (1448,287) width 112: "\x{3057}\x{305F}\x{306E}\x{304C}\x{3042}\x{308B}\x{3002}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x43
+            LayoutRubyRun (anonymous) at (1446,396.98) size 22x45
+              LayoutRubyText {RT} at (-10,0) size 13x45
+                LayoutText {#text} at (2,0) size 10x45
+                  text run at (2,0) width 45: "\x{304D}\x{304F}\x{3092}\x{3068}\x{308B}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x45
+                LayoutInline {RB} at (0,0) size 18x39
+                  LayoutText {#text} at (2,3) size 18x39
+                    text run at (2,3) width 38: "\x{63A1}\x{83CA}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x53
+            LayoutRubyRun (anonymous) at (1474,0) size 22x54
+              LayoutRubyText {RT} at (-10,0) size 13x54
+                LayoutText {#text} at (2,0) size 10x54
+                  text run at (2,0) width 54: "\x{3068}\x{3046}\x{308A}\x{306E}\x{3082}\x{3068}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x54
+                LayoutInline {RB} at (0,0) size 18x52
+                  LayoutText {#text} at (2,1) size 18x52
+                    text run at (2,1) width 52: "\x{6771}\x{7C6C}\x{4E0B}"
+          LayoutText {#text} at (1476,53) size 18x16
+            text run at (1476,53) width 16: "\x{3001}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x59
+            LayoutRubyRun (anonymous) at (1474,65) size 22x63
+              LayoutRubyText {RT} at (-10,0) size 13x63
+                LayoutText {#text} at (2,0) size 10x63
+                  text run at (2,0) width 63: "\x{3086}\x{3046}\x{305C}\x{3093}\x{3068}\x{3057}\x{3066}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x63
+                LayoutInline {RB} at (0,0) size 18x48
+                  LayoutText {#text} at (2,7) size 18x48
+                    text run at (2,7) width 47: "\x{60A0}\x{7136}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x61
+            LayoutRubyRun (anonymous) at (1474,128) size 22x63
+              LayoutRubyText {RT} at (-10,0) size 13x63
+                LayoutText {#text} at (2,0) size 10x63
+                  text run at (2,0) width 63: "\x{306A}\x{3093}\x{3056}\x{3093}\x{3092}\x{307F}\x{308B}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x63
+                LayoutInline {RB} at (0,0) size 18x59
+                  LayoutText {#text} at (2,2) size 18x59
+                    text run at (2,2) width 58: "\x{898B}\x{5357}\x{5C71}"
+          LayoutText {#text} at (1476,189) size 18x128
+            text run at (1476,189) width 128: "\x{3002}\x{305F}\x{3060}\x{305D}\x{308C}\x{304E}\x{308A}\x{306E}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (1474,316) size 22x18
+              LayoutRubyText {RT} at (-10,0) size 13x18
+                LayoutText {#text} at (2,0) size 10x18
+                  text run at (2,0) width 18: "\x{3046}\x{3061}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x18
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,1) size 18x16
+                    text run at (2,1) width 16: "\x{88CF}"
+          LayoutText {#text} at (1476,333) size 46x493
+            text run at (1476,333) width 160: "\x{306B}\x{6691}\x{82E6}\x{3057}\x{3044}\x{4E16}\x{306E}\x{4E2D}\x{3092}\x{307E}"
+            text run at (1504,0) width 368: "\x{308B}\x{3067}\x{5FD8}\x{308C}\x{305F}\x{5149}\x{666F}\x{304C}\x{51FA}\x{3066}\x{304F}\x{308B}\x{3002}\x{57A3}\x{306E}\x{5411}\x{3046}\x{306B}\x{96A3}\x{308A}\x{306E}\x{5A18}\x{304C}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (1502,367) size 22x18
+              LayoutRubyText {RT} at (-10,0) size 13x18
+                LayoutText {#text} at (2,0) size 10x18
+                  text run at (2,0) width 18: "\x{306E}\x{305E}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x18
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,1) size 18x16
+                    text run at (2,1) width 16: "\x{8997}"
+          LayoutText {#text} at (1504,384) size 46x496
+            text run at (1504,384) width 112: "\x{3044}\x{3066}\x{308B}\x{8A33}\x{3067}\x{3082}\x{306A}"
+            text run at (1532,0) width 64: "\x{3051}\x{308C}\x{3070}\x{3001}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x34
+            LayoutRubyRun (anonymous) at (1530,63) size 22x36
+              LayoutRubyText {RT} at (-10,0) size 13x36
+                LayoutText {#text} at (2,0) size 10x36
+                  text run at (2,0) width 36: "\x{306A}\x{3093}\x{3056}\x{3093}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x36
+                LayoutInline {RB} at (0,0) size 18x34
+                  LayoutText {#text} at (2,1) size 18x34
+                    text run at (2,1) width 34: "\x{5357}\x{5C71}"
+          LayoutText {#text} at (1532,98) size 18x320
+            text run at (1532,98) width 320: "\x{306B}\x{89AA}\x{53CB}\x{304C}\x{5949}\x{8077}\x{3057}\x{3066}\x{3044}\x{308B}\x{6B21}\x{7B2C}\x{3067}\x{3082}\x{306A}\x{3044}\x{3002}\x{8D85}\x{7136}\x{3068}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x70
+            LayoutRubyRun (anonymous) at (1530,417) size 22x72
+              LayoutRubyText {RT} at (-10,0) size 13x72
+                LayoutText {#text} at (2,0) size 10x72
+                  text run at (2,0) width 72: "\x{3057}\x{3085}\x{3063}\x{305B}\x{3051}\x{3093}\x{3066}\x{304D}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x72
+                LayoutInline {RB} at (0,0) size 18x70
+                  LayoutText {#text} at (2,1) size 18x70
+                    text run at (2,1) width 70: "\x{51FA}\x{4E16}\x{9593}\x{7684}"
+          LayoutText {#text} at (1532,488) size 46x504
+            text run at (1532,488) width 16: "\x{306B}"
+            text run at (1560,0) width 320: "\x{5229}\x{5BB3}\x{640D}\x{5F97}\x{306E}\x{6C57}\x{3092}\x{6D41}\x{3057}\x{53BB}\x{3063}\x{305F}\x{5FC3}\x{6301}\x{3061}\x{306B}\x{306A}\x{308C}\x{308B}\x{3002}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x23
+            LayoutRubyRun (anonymous) at (1558,316) size 22x27
+              LayoutRubyText {RT} at (-10,0) size 13x27
+                LayoutText {#text} at (2,0) size 10x27
+                  text run at (2,0) width 27: "\x{3072}\x{3068}\x{308A}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x27
+                LayoutInline {RB} at (0,0) size 18x17
+                  LayoutText {#text} at (2,5) size 18x17
+                    text run at (2,5) width 16: "\x{72EC}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x87
+            LayoutRubyRun (anonymous) at (1558,343) size 22x90
+              LayoutRubyText {RT} at (-10,0) size 13x90
+                LayoutText {#text} at (2,0) size 10x90
+                  text run at (2,0) width 90: "\x{3086}\x{3046}\x{3053}\x{3046}\x{306E}\x{3046}\x{3061}\x{306B}\x{3056}\x{3057}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x90
+                LayoutInline {RB} at (0,0) size 18x84
+                  LayoutText {#text} at (2,3) size 18x84
+                    text run at (2,3) width 83: "\x{5750}\x{5E7D}\x{7BC1}\x{88CF}"
+          LayoutText {#text} at (1560,430) size 18x16
+            text run at (1560,430) width 16: "\x{3001}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x63
+            LayoutRubyRun (anonymous) at (1586,0) size 22x63
+              LayoutRubyText {RT} at (-10,0) size 13x63
+                LayoutText {#text} at (2,0) size 10x63
+                  text run at (2,0) width 63: "\x{304D}\x{3093}\x{3092}\x{3060}\x{3093}\x{3058}\x{3066}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x63
+                LayoutInline {RB} at (0,0) size 18x48
+                  LayoutText {#text} at (2,7) size 18x48
+                    text run at (2,7) width 47: "\x{5F3E}\x{7434}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x77
+            LayoutRubyRun (anonymous) at (1586,63) size 22x81
+              LayoutRubyText {RT} at (-10,0) size 13x81
+                LayoutText {#text} at (2,0) size 10x81
+                  text run at (2,0) width 81: "\x{307E}\x{305F}\x{3061}\x{3087}\x{3046}\x{3057}\x{3087}\x{3046}\x{3059}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x81
+                LayoutInline {RB} at (0,0) size 18x71
+                  LayoutText {#text} at (2,5) size 18x71
+                    text run at (2,5) width 70: "\x{5FA9}\x{9577}\x{562F}"
+          LayoutText {#text} at (1588,140) size 18x16
+            text run at (1588,140) width 16: "\x{3001}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x35
+            LayoutRubyRun (anonymous) at (1586,155) size 22x36
+              LayoutRubyText {RT} at (-10,0) size 13x36
+                LayoutText {#text} at (2,0) size 10x36
+                  text run at (2,0) width 36: "\x{3057}\x{3093}\x{308A}\x{3093}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x36
+                LayoutInline {RB} at (0,0) size 18x34
+                  LayoutText {#text} at (2,1) size 18x34
+                    text run at (2,1) width 34: "\x{6DF1}\x{6797}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x48
+            LayoutRubyRun (anonymous) at (1586,191) size 22x48
+              LayoutRubyText {RT} at (-10,0) size 13x48
+                LayoutText {#text} at (2,0) size 10x48
+                  text run at (2,0) width 47: "\x{3072}\x{3068}\x{3057}\x{3089}\x{305A}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x48
+                LayoutInline {RB} at (0,0) size 18x48
+                  LayoutText {#text} at (2,0) size 18x48
+                    text run at (2,0) width 48: "\x{4EBA}\x{4E0D}\x{77E5}"
+          LayoutText {#text} at (1588,239) size 18x16
+            text run at (1588,239) width 16: "\x{3001}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x68
+            LayoutRubyRun (anonymous) at (1586,251) size 22x72
+              LayoutRubyText {RT} at (-10,0) size 13x72
+                LayoutText {#text} at (2,0) size 10x72
+                  text run at (2,0) width 72: "\x{3081}\x{3044}\x{3052}\x{3064}\x{304D}\x{305F}\x{308A}\x{3066}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x72
+                LayoutInline {RB} at (0,0) size 18x64
+                  LayoutText {#text} at (2,4) size 18x64
+                    text run at (2,4) width 64: "\x{660E}\x{6708}\x{6765}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x42
+            LayoutRubyRun (anonymous) at (1586,323) size 22x45
+              LayoutRubyText {RT} at (-10,0) size 13x45
+                LayoutText {#text} at (2,0) size 10x45
+                  text run at (2,0) width 45: "\x{3042}\x{3044}\x{3066}\x{3089}\x{3059}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x45
+                LayoutInline {RB} at (0,0) size 18x39
+                  LayoutText {#text} at (2,3) size 18x39
+                    text run at (2,3) width 38: "\x{76F8}\x{7167}"
+          LayoutText {#text} at (1588,365) size 46x493
+            text run at (1588,365) width 128: "\x{3002}\x{305F}\x{3060}\x{4E8C}\x{5341}\x{5B57}\x{306E}\x{3046}"
+            text run at (1616,0) width 32: "\x{3061}\x{306B}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (1614,31) size 22x18
+              LayoutRubyText {RT} at (-10,0) size 13x18
+                LayoutText {#text} at (2,0) size 10x18
+                  text run at (2,0) width 18: "\x{3086}\x{3046}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x18
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,1) size 18x16
+                    text run at (2,1) width 16: "\x{512A}"
+          LayoutText {#text} at (1616,48) size 18x16
+            text run at (1616,48) width 16: "\x{306B}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x52
+            LayoutRubyRun (anonymous) at (1614,63) size 22x54
+              LayoutRubyText {RT} at (-10,0) size 13x54
+                LayoutText {#text} at (2,0) size 10x54
+                  text run at (2,0) width 54: "\x{3079}\x{3064}\x{3051}\x{3093}\x{3053}\x{3093}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x54
+                LayoutInline {RB} at (0,0) size 18x52
+                  LayoutText {#text} at (2,1) size 18x52
+                    text run at (2,1) width 52: "\x{5225}\x{4E7E}\x{5764}"
+          LayoutText {#text} at (1616,116) size 18x16
+            text run at (1616,116) width 16: "\x{3092}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x39
+            LayoutRubyRun (anonymous) at (1614,129) size 22x45
+              LayoutRubyText {RT} at (-10,0) size 13x45
+                LayoutText {#text} at (2,0) size 10x45
+                  text run at (2,0) width 45: "\x{3053}\x{3093}\x{308A}\x{3085}\x{3046}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x45
+                LayoutInline {RB} at (0,0) size 18x39
+                  LayoutText {#text} at (2,3) size 18x39
+                    text run at (2,3) width 38: "\x{5EFA}\x{7ACB}"
+          LayoutText {#text} at (1616,171) size 18x160
+            text run at (1616,171) width 160: "\x{3057}\x{3066}\x{3044}\x{308B}\x{3002}\x{3053}\x{306E}\x{4E7E}\x{5764}\x{306E}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x32
+            LayoutRubyRun (anonymous) at (1614,331) size 22x32
+              LayoutRubyText {RT} at (-10,0) size 13x32
+                LayoutText {#text} at (2,0) size 10x31
+                  text run at (2,0) width 30: "\x{304F}\x{3069}\x{304F}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x32
+                LayoutInline {RB} at (0,0) size 18x32
+                  LayoutText {#text} at (2,0) size 18x32
+                    text run at (2,0) width 32: "\x{529F}\x{5FB3}"
+          LayoutText {#text} at (1616,363) size 18x32
+            text run at (1616,363) width 32: "\x{306F}\x{300C}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x48
+            LayoutRubyRun (anonymous) at (1614,395) size 22x48
+              LayoutRubyText {RT} at (-10,0) size 13x48
+                LayoutText {#text} at (2,0) size 10x48
+                  text run at (2,0) width 47: "\x{307B}\x{3068}\x{3068}\x{304E}\x{3059}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x48
+                LayoutInline {RB} at (0,0) size 18x48
+                  LayoutText {#text} at (2,0) size 18x48
+                    text run at (2,0) width 48: "\x{4E0D}\x{5982}\x{5E30}"
+          LayoutText {#text} at (1616,443) size 46x475
+            text run at (1616,443) width 32: "\x{300D}\x{3084}"
+            text run at (1644,0) width 16: "\x{300C}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x64
+            LayoutRubyRun (anonymous) at (1642,16) size 22x64
+              LayoutRubyText {RT} at (-10,0) size 13x64
+                LayoutText {#text} at (2,0) size 10x64
+                  text run at (2,0) width 63: "\x{3053}\x{3093}\x{3058}\x{304D}\x{3084}\x{3057}\x{3083}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x64
+                LayoutInline {RB} at (0,0) size 18x64
+                  LayoutText {#text} at (2,0) size 18x64
+                    text run at (2,0) width 64: "\x{91D1}\x{8272}\x{591C}\x{53C9}"
+          LayoutText {#text} at (1644,80) size 46x496
+            text run at (1644,80) width 416: "\x{300D}\x{306E}\x{529F}\x{5FB3}\x{3067}\x{306F}\x{306A}\x{3044}\x{3002}\x{6C7D}\x{8239}\x{3001}\x{6C7D}\x{8ECA}\x{3001}\x{6A29}\x{5229}\x{3001}\x{7FA9}\x{52D9}\x{3001}\x{9053}\x{5FB3}\x{3001}\x{793C}\x{7FA9}"
+            text run at (1672,0) width 96: "\x{3067}\x{75B2}\x{308C}\x{679C}\x{3066}\x{305F}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (1670,95) size 22x18
+              LayoutRubyText {RT} at (-10,0) size 13x18
+                LayoutText {#text} at (2,0) size 10x18
+                  text run at (2,0) width 18: "\x{306E}\x{3061}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x18
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,1) size 18x16
+                    text run at (2,1) width 16: "\x{5F8C}"
+          LayoutText {#text} at (1672,112) size 40x496
+            text run at (1672,112) width 384: "\x{306B}\x{3001}\x{3059}\x{3079}\x{3066}\x{3092}\x{5FD8}\x{5374}\x{3057}\x{3066}\x{3050}\x{3063}\x{3059}\x{308A}\x{5BDD}\x{8FBC}\x{3080}\x{3088}\x{3046}\x{306A}\x{529F}\x{5FB3}\x{3067}\x{3042}"
+            text run at (1694,0) width 32: "\x{308B}\x{3002}"
+          LayoutBR {BR} at (1694,32) size 18x0
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/writing-mode/border-vertical-lr-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/writing-mode/border-vertical-lr-expected.png
new file mode 100644
index 0000000..baae611
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/writing-mode/border-vertical-lr-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/writing-mode/border-vertical-lr-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/writing-mode/border-vertical-lr-expected.txt
new file mode 100644
index 0000000..99fd303
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/writing-mode/border-vertical-lr-expected.txt
@@ -0,0 +1,25 @@
+layer at (0,0) size 800x600
+  LayoutView at (0,0) size 800x600
+layer at (0,0) size 772x600
+  LayoutBlockFlow {HTML} at (0,0) size 772x600
+    LayoutBlockFlow {BODY} at (8,8) size 756x584
+      LayoutInline {SPAN} at (0,0) size 219x580 [border: (2px solid #000000)]
+        LayoutText {#text} at (20,4) size 211x580
+          text run at (20,4) width 576: "\x{305B}\x{3063}\x{304B}\x{304F}\x{898B}\x{3064}\x{3051}\x{305F}\x{3059}\x{3070}\x{3089}\x{3057}\x{3044}\x{8A18}\x{4E8B}\x{304C}\x{3069}\x{3053}\x{306B}\x{3042}\x{3063}\x{305F}\x{304B}\x{5FD8}\x{308C}\x{3066}\x{3057}"
+          text run at (83,0) width 555: "\x{307E}\x{3063}\x{305F}\x{7D4C}\x{9A13}\x{306F}\x{3042}\x{308A}\x{307E}\x{3059}\x{304B}\x{306A}\x{3089}\x{30BF}\x{30A4}\x{30C8}\x{30EB}\x{3068}\x{30A2}\x{30C9}\x{30EC}\x{30B9}\x{3060}\x{3051}\x{3067}\x{306A}"
+          text run at (146,0) width 574: "\x{304F}\x{3001}\x{8A2A}\x{554F}\x{3057}\x{305F}\x{30A6}\x{30A7}\x{30D6}\x{30DA}\x{30FC}\x{30B8}\x{306E}\x{30B3}\x{30F3}\x{30C6}\x{30F3}\x{30C4}\x{304B}\x{3089}\x{3082}\x{691C}\x{7D22}\x{3059}\x{308B}\x{3053}\x{3068}"
+          text run at (209,0) width 127: "\x{304C}\x{3067}\x{304D}\x{307E}\x{3059}\x{3002}"
+      LayoutText {#text} at (209,130) size 22x8
+        text run at (209,130) width 8: " "
+      LayoutBR {BR} at (0,0) size 0x0
+      LayoutBR {BR} at (272,0) size 22x0
+      LayoutInline {SPAN} at (0,0) size 414x583 [border: (5px solid #000000)]
+        LayoutText {#text} at (335,7) size 400x583
+          text run at (335,7) width 576: "\x{305B}\x{3063}\x{304B}\x{304F}\x{898B}\x{3064}\x{3051}\x{305F}\x{3059}\x{3070}\x{3089}\x{3057}\x{3044}\x{8A18}\x{4E8B}\x{304C}\x{3069}\x{3053}\x{306B}\x{3042}\x{3063}\x{305F}\x{304B}\x{5FD8}\x{308C}\x{3066}\x{3057}"
+          text run at (398,0) width 562: "\x{307E}\x{3063}\x{305F}\x{7D4C}\x{9A13}\x{306F}\x{3042}\x{308A}\x{307E}\x{3059}\x{304B} \x{306A}\x{3089}\x{30BF}\x{30A4}\x{30C8}\x{30EB}\x{3068}\x{30A2}\x{30C9}\x{30EC}\x{30B9}\x{3060}\x{3051}\x{3067}\x{306A}"
+          text run at (461,0) width 574: "\x{304F}\x{3001}\x{8A2A}\x{554F}\x{3057}\x{305F}\x{30A6}\x{30A7}\x{30D6}\x{30DA}\x{30FC}\x{30B8}\x{306E}\x{30B3}\x{30F3}\x{30C6}\x{30F3}\x{30C4}\x{304B}\x{3089}\x{3082}\x{691C}\x{7D22}\x{3059}\x{308B}\x{3053}\x{3068}"
+          text run at (524,0) width 573: "\x{304C}\x{3067}\x{304D}\x{307E}\x{3059}\x{3002}\x{8A2A}\x{554F}\x{3057}\x{305F}\x{30A6}\x{30A7}\x{30D6}\x{30DA}\x{30FC}\x{30B8}\x{306E}\x{30B3}\x{30F3}\x{30C6}\x{30F3}\x{30C4}\x{304B}\x{3089}\x{3082}\x{691C}\x{7D22}"
+          text run at (587,0) width 575: "\x{3059}\x{308B}\x{3053}\x{3068}\x{304C}\x{3067}\x{304D}\x{307E}\x{3059}\x{3002}\x{305B}\x{3063}\x{304B}\x{304F}\x{898B}\x{3064}\x{3051}\x{305F}\x{3059}\x{3070}\x{3089}\x{3057}\x{3044}\x{8A18}\x{4E8B}\x{304C}\x{3069}"
+          text run at (650,0) width 583: "\x{3053}\x{306B}\x{3042}\x{3063}\x{305F}\x{304B}\x{5FD8}\x{308C}\x{3066}\x{3057}\x{307E}\x{3063}\x{305F}\x{7D4C}\x{9A13}\x{306F}\x{3042}\x{308A}\x{307E}\x{3059}\x{304B} \x{306A}\x{3089}\x{30BF}\x{30A4}\x{30C8}\x{30EB}"
+          text run at (713,0) width 278: "\x{3068}\x{30A2}\x{30C9}\x{30EC}\x{30B9}\x{3060}\x{3051}\x{3067}\x{306A}\x{304F}\x{3001}\x{8A2A}\x{554F}"
+      LayoutText {#text} at (0,0) size 0x0
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/writing-mode/japanese-lr-selection-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/writing-mode/japanese-lr-selection-expected.txt
new file mode 100644
index 0000000..8d243d15
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/writing-mode/japanese-lr-selection-expected.txt
@@ -0,0 +1,24 @@
+layer at (0,0) size 800x600
+  LayoutView at (0,0) size 800x600
+layer at (0,0) size 541x600
+  LayoutBlockFlow {HTML} at (0,0) size 541x600 [border: (10px solid #800000)]
+    LayoutBlockFlow {BODY} at (18,18) size 505x564 [border: (5px solid #000000)]
+      LayoutBlockFlow {DIV} at (5,105) size 495x400
+        LayoutText {#text} at (5,0) size 484x392
+          text run at (5,0) width 384: "\x{305B}\x{3063}\x{304B}\x{304F}\x{898B}\x{3064}\x{3051}\x{305F}\x{3059}\x{3070}\x{3089}\x{3057}\x{3044}\x{8A18}\x{4E8B}\x{304C}\x{3069}\x{3053}"
+          text run at (38,0) width 384: "\x{306B}\x{3042}\x{3063}\x{305F}\x{304B}\x{5FD8}\x{308C}\x{3066}\x{3057}\x{307E}\x{3063}\x{305F}\x{7D4C}\x{9A13}\x{306F}\x{3042}\x{308A}\x{307E}"
+          text run at (71,0) width 363: "\x{3059}\x{304B}\x{306A}\x{3089}\x{30BF}\x{30A4}\x{30C8}\x{30EB}\x{3068}\x{30A2}\x{30C9}\x{30EC}\x{30B9}\x{3060}\x{3051}\x{3067}\x{306A}"
+          text run at (104,0) width 382: "\x{304F}\x{3001}\x{8A2A}\x{554F}\x{3057}\x{305F}\x{30A6}\x{30A7}\x{30D6}\x{30DA}\x{30FC}\x{30B8}\x{306E}\x{30B3}\x{30F3}\x{30C6}\x{30F3}\x{30C4}"
+          text run at (137,0) width 383: "\x{304B}\x{3089}\x{3082}\x{691C}\x{7D22}\x{3059}\x{308B}\x{3053}\x{3068}\x{304C}\x{3067}\x{304D}\x{307E}\x{3059}\x{3002}\x{305B}\x{3063}\x{304B}"
+          text run at (170,0) width 384: "\x{304F}\x{898B}\x{3064}\x{3051}\x{305F}\x{3059}\x{3070}\x{3089}\x{3057}\x{3044}\x{8A18}\x{4E8B}\x{304C}\x{3069}\x{3053}\x{306B}\x{3042}\x{3063}"
+          text run at (203,0) width 392: "\x{305F}\x{304B}\x{5FD8}\x{308C}\x{3066}\x{3057}\x{307E}\x{3063}\x{305F}\x{7D4C}\x{9A13}\x{306F}\x{3042}\x{308A}\x{307E}\x{3059}\x{304B} \x{306A}"
+          text run at (236,0) width 384: "\x{3089}\x{30BF}\x{30A4}\x{30C8}\x{30EB}\x{3068}\x{30A2}\x{30C9}\x{30EC}\x{30B9}\x{3060}\x{3051}\x{3067}\x{306A}\x{304F}\x{3001}\x{8A2A}\x{554F}"
+          text run at (269,0) width 382: "\x{3057}\x{305F}\x{30A6}\x{30A7}\x{30D6}\x{30DA}\x{30FC}\x{30B8}\x{306E}\x{30B3}\x{30F3}\x{30C6}\x{30F3}\x{30C4}\x{304B}\x{3089}\x{3082}\x{691C}"
+          text run at (302,0) width 383: "\x{7D22}\x{3059}\x{308B}\x{3053}\x{3068}\x{304C}\x{3067}\x{304D}\x{307E}\x{3059}\x{3002}\x{8A2A}\x{554F}\x{3057}\x{305F}\x{30A6}\x{30A7}\x{30D6}"
+          text run at (335,0) width 382: "\x{30DA}\x{30FC}\x{30B8}\x{306E}\x{30B3}\x{30F3}\x{30C6}\x{30F3}\x{30C4}\x{304B}\x{3089}\x{3082}\x{691C}\x{7D22}\x{3059}\x{308B}\x{3053}\x{3068}"
+          text run at (368,0) width 383: "\x{304C}\x{3067}\x{304D}\x{307E}\x{3059}\x{3002}\x{305B}\x{3063}\x{304B}\x{304F}\x{898B}\x{3064}\x{3051}\x{305F}\x{3059}\x{3070}\x{3089}\x{3057}"
+          text run at (401,0) width 384: "\x{3044}\x{8A18}\x{4E8B}\x{304C}\x{3069}\x{3053}\x{306B}\x{3042}\x{3063}\x{305F}\x{304B}\x{5FD8}\x{308C}\x{3066}\x{3057}\x{307E}\x{3063}\x{305F}"
+          text run at (434,0) width 392: "\x{7D4C}\x{9A13}\x{306F}\x{3042}\x{308A}\x{307E}\x{3059}\x{304B} \x{306A}\x{3089}\x{30BF}\x{30A4}\x{30C8}\x{30EB}\x{3068}\x{30A2}\x{30C9}\x{30EC}"
+          text run at (467,0) width 192: "\x{30B9}\x{3060}\x{3051}\x{3067}\x{306A}\x{304F}\x{3001}\x{8A2A}\x{554F}"
+selection start: position 5 of child 0 {#text} of child 1 {DIV} of body
+selection end:   position 203 of child 0 {#text} of child 1 {DIV} of body
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/writing-mode/japanese-lr-text-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/writing-mode/japanese-lr-text-expected.txt
new file mode 100644
index 0000000..c0cc83c
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/writing-mode/japanese-lr-text-expected.txt
@@ -0,0 +1,17 @@
+layer at (0,0) size 800x600
+  LayoutView at (0,0) size 800x600
+layer at (0,0) size 409x600
+  LayoutBlockFlow {HTML} at (0,0) size 409x600 [border: (10px solid #800000)]
+    LayoutBlockFlow {BODY} at (18,18) size 373x564 [border: (5px solid #000000)]
+      LayoutText {#text} at (10,5) size 352x553
+        text run at (10,5) width 534: "\x{305B}\x{3063}\x{304B}\x{304F}\x{898B}\x{3064}\x{3051}\x{305F}\x{3059}\x{3070}\x{3089}\x{3057}\x{3044}\x{8A18}\x{4E8B}\x{304C}\x{3069}\x{3053}\x{306B}\x{3042}\x{3063}\x{305F}\x{304B}\x{5FD8}\x{308C}"
+        text run at (43,5) width 534: "\x{3066}\x{3057}\x{307E}\x{3063}\x{305F}\x{7D4C}\x{9A13}\x{306F}\x{3042}\x{308A}\x{307E}\x{3059}\x{304B}\x{306A}\x{3089}\x{30BF}\x{30A4}\x{30C8}\x{30EB}\x{3068}\x{30A2}\x{30C9}\x{30EC}\x{30B9}\x{3060}"
+        text run at (76,5) width 532: "\x{3051}\x{3067}\x{306A}\x{304F}\x{3001}\x{8A2A}\x{554F}\x{3057}\x{305F}\x{30A6}\x{30A7}\x{30D6}\x{30DA}\x{30FC}\x{30B8}\x{306E}\x{30B3}\x{30F3}\x{30C6}\x{30F3}\x{30C4}\x{304B}\x{3089}\x{3082}\x{691C}"
+        text run at (109,5) width 553: "\x{7D22}\x{3059}\x{308B}\x{3053}\x{3068}\x{304C}\x{3067}\x{304D}\x{307E}\x{3059}\x{3002}\x{305B}\x{3063}\x{304B}\x{304F}\x{898B}\x{3064}\x{3051}\x{305F}\x{3059}\x{3070}\x{3089}\x{3057}\x{3044}\x{8A18}\x{4E8B}"
+        text run at (142,5) width 541: "\x{304C}\x{3069}\x{3053}\x{306B}\x{3042}\x{3063}\x{305F}\x{304B}\x{5FD8}\x{308C}\x{3066}\x{3057}\x{307E}\x{3063}\x{305F}\x{7D4C}\x{9A13}\x{306F}\x{3042}\x{308A}\x{307E}\x{3059}\x{304B} \x{306A}\x{3089}"
+        text run at (175,5) width 532: "\x{30BF}\x{30A4}\x{30C8}\x{30EB}\x{3068}\x{30A2}\x{30C9}\x{30EC}\x{30B9}\x{3060}\x{3051}\x{3067}\x{306A}\x{304F}\x{3001}\x{8A2A}\x{554F}\x{3057}\x{305F}\x{30A6}\x{30A7}\x{30D6}\x{30DA}\x{30FC}\x{30B8}"
+        text run at (208,5) width 553: "\x{306E}\x{30B3}\x{30F3}\x{30C6}\x{30F3}\x{30C4}\x{304B}\x{3089}\x{3082}\x{691C}\x{7D22}\x{3059}\x{308B}\x{3053}\x{3068}\x{304C}\x{3067}\x{304D}\x{307E}\x{3059}\x{3002}\x{8A2A}\x{554F}\x{3057}\x{305F}\x{30A6}"
+        text run at (241,5) width 551: "\x{30A7}\x{30D6}\x{30DA}\x{30FC}\x{30B8}\x{306E}\x{30B3}\x{30F3}\x{30C6}\x{30F3}\x{30C4}\x{304B}\x{3089}\x{3082}\x{691C}\x{7D22}\x{3059}\x{308B}\x{3053}\x{3068}\x{304C}\x{3067}\x{304D}\x{307E}\x{3059}\x{3002}"
+        text run at (274,5) width 534: "\x{305B}\x{3063}\x{304B}\x{304F}\x{898B}\x{3064}\x{3051}\x{305F}\x{3059}\x{3070}\x{3089}\x{3057}\x{3044}\x{8A18}\x{4E8B}\x{304C}\x{3069}\x{3053}\x{306B}\x{3042}\x{3063}\x{305F}\x{304B}\x{5FD8}\x{308C}"
+        text run at (307,5) width 541: "\x{3066}\x{3057}\x{307E}\x{3063}\x{305F}\x{7D4C}\x{9A13}\x{306F}\x{3042}\x{308A}\x{307E}\x{3059}\x{304B} \x{306A}\x{3089}\x{30BF}\x{30A4}\x{30C8}\x{30EB}\x{3068}\x{30A2}\x{30C9}\x{30EC}\x{30B9}\x{3060}"
+        text run at (340,5) width 150: "\x{3051}\x{3067}\x{306A}\x{304F}\x{3001}\x{8A2A}\x{554F}"
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/writing-mode/japanese-rl-selection-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/writing-mode/japanese-rl-selection-expected.txt
new file mode 100644
index 0000000..8dad730
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/writing-mode/japanese-rl-selection-expected.txt
@@ -0,0 +1,24 @@
+layer at (0,0) size 800x600
+  LayoutView at (0,0) size 800x600
+layer at (259,0) size 541x600
+  LayoutBlockFlow {HTML} at (0,0) size 541x600 [border: (10px solid #800000)]
+    LayoutBlockFlow {BODY} at (18,18) size 505x564 [border: (5px solid #000000)]
+      LayoutBlockFlow {DIV} at (5,105) size 495x400
+        LayoutText {#text} at (5,0) size 484x392
+          text run at (5,0) width 384: "\x{305B}\x{3063}\x{304B}\x{304F}\x{898B}\x{3064}\x{3051}\x{305F}\x{3059}\x{3070}\x{3089}\x{3057}\x{3044}\x{8A18}\x{4E8B}\x{304C}\x{3069}\x{3053}"
+          text run at (38,0) width 384: "\x{306B}\x{3042}\x{3063}\x{305F}\x{304B}\x{5FD8}\x{308C}\x{3066}\x{3057}\x{307E}\x{3063}\x{305F}\x{7D4C}\x{9A13}\x{306F}\x{3042}\x{308A}\x{307E}"
+          text run at (71,0) width 363: "\x{3059}\x{304B}\x{306A}\x{3089}\x{30BF}\x{30A4}\x{30C8}\x{30EB}\x{3068}\x{30A2}\x{30C9}\x{30EC}\x{30B9}\x{3060}\x{3051}\x{3067}\x{306A}"
+          text run at (104,0) width 382: "\x{304F}\x{3001}\x{8A2A}\x{554F}\x{3057}\x{305F}\x{30A6}\x{30A7}\x{30D6}\x{30DA}\x{30FC}\x{30B8}\x{306E}\x{30B3}\x{30F3}\x{30C6}\x{30F3}\x{30C4}"
+          text run at (137,0) width 383: "\x{304B}\x{3089}\x{3082}\x{691C}\x{7D22}\x{3059}\x{308B}\x{3053}\x{3068}\x{304C}\x{3067}\x{304D}\x{307E}\x{3059}\x{3002}\x{305B}\x{3063}\x{304B}"
+          text run at (170,0) width 384: "\x{304F}\x{898B}\x{3064}\x{3051}\x{305F}\x{3059}\x{3070}\x{3089}\x{3057}\x{3044}\x{8A18}\x{4E8B}\x{304C}\x{3069}\x{3053}\x{306B}\x{3042}\x{3063}"
+          text run at (203,0) width 392: "\x{305F}\x{304B}\x{5FD8}\x{308C}\x{3066}\x{3057}\x{307E}\x{3063}\x{305F}\x{7D4C}\x{9A13}\x{306F}\x{3042}\x{308A}\x{307E}\x{3059}\x{304B} \x{306A}"
+          text run at (236,0) width 384: "\x{3089}\x{30BF}\x{30A4}\x{30C8}\x{30EB}\x{3068}\x{30A2}\x{30C9}\x{30EC}\x{30B9}\x{3060}\x{3051}\x{3067}\x{306A}\x{304F}\x{3001}\x{8A2A}\x{554F}"
+          text run at (269,0) width 382: "\x{3057}\x{305F}\x{30A6}\x{30A7}\x{30D6}\x{30DA}\x{30FC}\x{30B8}\x{306E}\x{30B3}\x{30F3}\x{30C6}\x{30F3}\x{30C4}\x{304B}\x{3089}\x{3082}\x{691C}"
+          text run at (302,0) width 383: "\x{7D22}\x{3059}\x{308B}\x{3053}\x{3068}\x{304C}\x{3067}\x{304D}\x{307E}\x{3059}\x{3002}\x{8A2A}\x{554F}\x{3057}\x{305F}\x{30A6}\x{30A7}\x{30D6}"
+          text run at (335,0) width 382: "\x{30DA}\x{30FC}\x{30B8}\x{306E}\x{30B3}\x{30F3}\x{30C6}\x{30F3}\x{30C4}\x{304B}\x{3089}\x{3082}\x{691C}\x{7D22}\x{3059}\x{308B}\x{3053}\x{3068}"
+          text run at (368,0) width 383: "\x{304C}\x{3067}\x{304D}\x{307E}\x{3059}\x{3002}\x{305B}\x{3063}\x{304B}\x{304F}\x{898B}\x{3064}\x{3051}\x{305F}\x{3059}\x{3070}\x{3089}\x{3057}"
+          text run at (401,0) width 384: "\x{3044}\x{8A18}\x{4E8B}\x{304C}\x{3069}\x{3053}\x{306B}\x{3042}\x{3063}\x{305F}\x{304B}\x{5FD8}\x{308C}\x{3066}\x{3057}\x{307E}\x{3063}\x{305F}"
+          text run at (434,0) width 392: "\x{7D4C}\x{9A13}\x{306F}\x{3042}\x{308A}\x{307E}\x{3059}\x{304B} \x{306A}\x{3089}\x{30BF}\x{30A4}\x{30C8}\x{30EB}\x{3068}\x{30A2}\x{30C9}\x{30EC}"
+          text run at (467,0) width 192: "\x{30B9}\x{3060}\x{3051}\x{3067}\x{306A}\x{304F}\x{3001}\x{8A2A}\x{554F}"
+selection start: position 5 of child 0 {#text} of child 1 {DIV} of body
+selection end:   position 203 of child 0 {#text} of child 1 {DIV} of body
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/writing-mode/japanese-rl-text-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/writing-mode/japanese-rl-text-expected.txt
new file mode 100644
index 0000000..10f00dda
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/writing-mode/japanese-rl-text-expected.txt
@@ -0,0 +1,17 @@
+layer at (0,0) size 800x600
+  LayoutView at (0,0) size 800x600
+layer at (391,0) size 409x600
+  LayoutBlockFlow {HTML} at (0,0) size 409x600 [border: (10px solid #800000)]
+    LayoutBlockFlow {BODY} at (18,18) size 373x564 [border: (5px solid #000000)]
+      LayoutText {#text} at (10,5) size 352x553
+        text run at (10,5) width 534: "\x{305B}\x{3063}\x{304B}\x{304F}\x{898B}\x{3064}\x{3051}\x{305F}\x{3059}\x{3070}\x{3089}\x{3057}\x{3044}\x{8A18}\x{4E8B}\x{304C}\x{3069}\x{3053}\x{306B}\x{3042}\x{3063}\x{305F}\x{304B}\x{5FD8}\x{308C}"
+        text run at (43,5) width 534: "\x{3066}\x{3057}\x{307E}\x{3063}\x{305F}\x{7D4C}\x{9A13}\x{306F}\x{3042}\x{308A}\x{307E}\x{3059}\x{304B}\x{306A}\x{3089}\x{30BF}\x{30A4}\x{30C8}\x{30EB}\x{3068}\x{30A2}\x{30C9}\x{30EC}\x{30B9}\x{3060}"
+        text run at (76,5) width 532: "\x{3051}\x{3067}\x{306A}\x{304F}\x{3001}\x{8A2A}\x{554F}\x{3057}\x{305F}\x{30A6}\x{30A7}\x{30D6}\x{30DA}\x{30FC}\x{30B8}\x{306E}\x{30B3}\x{30F3}\x{30C6}\x{30F3}\x{30C4}\x{304B}\x{3089}\x{3082}\x{691C}"
+        text run at (109,5) width 553: "\x{7D22}\x{3059}\x{308B}\x{3053}\x{3068}\x{304C}\x{3067}\x{304D}\x{307E}\x{3059}\x{3002}\x{305B}\x{3063}\x{304B}\x{304F}\x{898B}\x{3064}\x{3051}\x{305F}\x{3059}\x{3070}\x{3089}\x{3057}\x{3044}\x{8A18}\x{4E8B}"
+        text run at (142,5) width 541: "\x{304C}\x{3069}\x{3053}\x{306B}\x{3042}\x{3063}\x{305F}\x{304B}\x{5FD8}\x{308C}\x{3066}\x{3057}\x{307E}\x{3063}\x{305F}\x{7D4C}\x{9A13}\x{306F}\x{3042}\x{308A}\x{307E}\x{3059}\x{304B} \x{306A}\x{3089}"
+        text run at (175,5) width 532: "\x{30BF}\x{30A4}\x{30C8}\x{30EB}\x{3068}\x{30A2}\x{30C9}\x{30EC}\x{30B9}\x{3060}\x{3051}\x{3067}\x{306A}\x{304F}\x{3001}\x{8A2A}\x{554F}\x{3057}\x{305F}\x{30A6}\x{30A7}\x{30D6}\x{30DA}\x{30FC}\x{30B8}"
+        text run at (208,5) width 553: "\x{306E}\x{30B3}\x{30F3}\x{30C6}\x{30F3}\x{30C4}\x{304B}\x{3089}\x{3082}\x{691C}\x{7D22}\x{3059}\x{308B}\x{3053}\x{3068}\x{304C}\x{3067}\x{304D}\x{307E}\x{3059}\x{3002}\x{8A2A}\x{554F}\x{3057}\x{305F}\x{30A6}"
+        text run at (241,5) width 551: "\x{30A7}\x{30D6}\x{30DA}\x{30FC}\x{30B8}\x{306E}\x{30B3}\x{30F3}\x{30C6}\x{30F3}\x{30C4}\x{304B}\x{3089}\x{3082}\x{691C}\x{7D22}\x{3059}\x{308B}\x{3053}\x{3068}\x{304C}\x{3067}\x{304D}\x{307E}\x{3059}\x{3002}"
+        text run at (274,5) width 534: "\x{305B}\x{3063}\x{304B}\x{304F}\x{898B}\x{3064}\x{3051}\x{305F}\x{3059}\x{3070}\x{3089}\x{3057}\x{3044}\x{8A18}\x{4E8B}\x{304C}\x{3069}\x{3053}\x{306B}\x{3042}\x{3063}\x{305F}\x{304B}\x{5FD8}\x{308C}"
+        text run at (307,5) width 541: "\x{3066}\x{3057}\x{307E}\x{3063}\x{305F}\x{7D4C}\x{9A13}\x{306F}\x{3042}\x{308A}\x{307E}\x{3059}\x{304B} \x{306A}\x{3089}\x{30BF}\x{30A4}\x{30C8}\x{30EB}\x{3068}\x{30A2}\x{30C9}\x{30EC}\x{30B9}\x{3060}"
+        text run at (340,5) width 150: "\x{3051}\x{3067}\x{306A}\x{304F}\x{3001}\x{8A2A}\x{554F}"
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug1188-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug1188-expected.png
new file mode 100644
index 0000000..d945c22b
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug1188-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug1188-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug1188-expected.txt
new file mode 100644
index 0000000..2e58825
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug1188-expected.txt
@@ -0,0 +1,140 @@
+layer at (0,0) size 800x600
+  LayoutView at (0,0) size 800x600
+layer at (0,0) size 800x600
+  LayoutBlockFlow {HTML} at (0,0) size 800x600
+    LayoutBlockFlow {BODY} at (8,8) size 784x576
+      LayoutBlockFlow {FORM} at (0,0) size 784x194
+        LayoutBlockFlow {HR} at (0,0) size 602x2 [border: (1px inset #EEEEEE)]
+        LayoutTable {TABLE} at (0,10) size 600x184
+          LayoutTableSection {TBODY} at (0,0) size 600x184
+            LayoutTableRow {TR} at (0,2) size 600x44
+              LayoutTableCell {TD} at (2,2) size 594x44 [r=0 c=0 rs=1 cs=3]
+                LayoutImage {IMG} at (7.50,1) size 579x42
+                LayoutText {#text} at (0,0) size 0x0
+            LayoutTableRow {TR} at (0,48) size 600x55
+              LayoutTableCell {TD} at (2,57) size 594x36 [bgcolor=#99CCCC] [r=1 c=0 rs=1 cs=3]
+                LayoutInline {FONT} at (0,0) size 128x15
+                  LayoutInline {B} at (0,0) size 128x15
+                    LayoutText {#text} at (67,3) size 128x15
+                      text run at (67,3) width 128: "Search the Web with"
+                LayoutText {#text} at (194,1) size 5x18
+                  text run at (194,1) width 5: " "
+                LayoutMenuList {SELECT} at (198.41,2) size 81x18 [bgcolor=#F8F8F8]
+                  LayoutBlockFlow (anonymous) at (0,0) size 81x18
+                    LayoutText (anonymous) at (8,2) size 50x13
+                      text run at (8,2) width 50: "Netscape"
+                LayoutTextControl {INPUT} at (279.41,1) size 191x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)]
+                LayoutText {#text} at (470,1) size 5x18
+                  text run at (470,1) width 5: " "
+                LayoutButton {INPUT} at (474.41,2) size 52.08x18 [bgcolor=#C0C0C0]
+                  LayoutBlockFlow (anonymous) at (8,2) size 36.08x13
+                    LayoutText {#text} at (0,0) size 37x13
+                      text run at (0,0) width 37: "Search"
+                LayoutBR {BR} at (526,15) size 1x0
+                LayoutInline {SMALL} at (0,0) size 568x15
+                  LayoutInline {A} at (0,0) size 101x15 [color=#0000EE]
+                    LayoutText {#text} at (13,20) size 101x15
+                      text run at (13,20) width 101: "Classifieds< /A>   "
+                  LayoutInline {A} at (0,0) size 59x15 [color=#0000EE]
+                    LayoutText {#text} at (113,20) size 59x15
+                      text run at (113,20) width 23: "Net "
+                      text run at (135,20) width 37: "Search"
+                  LayoutText {#text} at (171,20) size 11x15
+                    text run at (171,20) width 11: "   "
+                  LayoutInline {A} at (0,0) size 83x15 [color=#0000EE]
+                    LayoutText {#text} at (181,20) size 83x15
+                      text run at (181,20) width 57: "Find Web "
+                      text run at (237,20) width 27: "Sites"
+                  LayoutText {#text} at (263,20) size 11x15
+                    text run at (263,20) width 4: " "
+                    text run at (266,20) width 8: "  "
+                  LayoutInline {A} at (0,0) size 66x15 [color=#0000EE]
+                    LayoutText {#text} at (273,20) size 66x15
+                      text run at (273,20) width 40: "What's "
+                      text run at (312,20) width 27: "Cool"
+                  LayoutText {#text} at (338,20) size 11x15
+                    text run at (338,20) width 11: "   "
+                  LayoutInline {A} at (0,0) size 66x15 [color=#0000EE]
+                    LayoutText {#text} at (348,20) size 66x15
+                      text run at (348,20) width 66: "What's New"
+                  LayoutText {#text} at (413,20) size 11x15
+                    text run at (413,20) width 11: "   "
+                  LayoutInline {A} at (0,0) size 76x15 [color=#0000EE]
+                    LayoutText {#text} at (423,20) size 76x15
+                      text run at (423,20) width 76: "People Finder"
+                  LayoutText {#text} at (498,20) size 11x15
+                    text run at (498,20) width 11: "   "
+                  LayoutInline {A} at (0,0) size 73x15 [color=#0000EE]
+                    LayoutText {#text} at (508,20) size 73x15
+                      text run at (508,20) width 73: "Yellow Pages"
+                  LayoutText {#text} at (0,0) size 0x0
+                LayoutText {#text} at (0,0) size 0x0
+            LayoutTableRow {TR} at (0,105) size 600x50
+              LayoutTableCell {TD} at (2,114) size 159x32 [r=2 c=0 rs=1 cs=1]
+                LayoutInline {A} at (0,0) size 117x33 [color=#0000EE]
+                  LayoutInline {FONT} at (0,0) size 117x30 [color=#CC0033]
+                    LayoutText {#text} at (21,1) size 117x30
+                      text run at (21,1) width 117: "Download Netscape"
+                      text run at (26,16) width 107: "Communicator 4.5"
+              LayoutTableCell {TD} at (163,105) size 270x50 [r=2 c=1 rs=1 cs=1]
+                LayoutInline {A} at (0,0) size 232x28 [color=#0000EE]
+                  LayoutImage {IMG} at (19,1) size 232x35 [border: (1px solid #0000EE)]
+                  LayoutBR {BR} at (251,36) size 0x0
+                  LayoutInline {FONT} at (0,0) size 48x13
+                    LayoutText {#text} at (111,36) size 48x13
+                      text run at (111,36) width 48: "Click Here!"
+                LayoutBR {BR} at (158,46) size 1x0
+              LayoutTableCell {TD} at (435,121) size 161x17 [r=2 c=2 rs=1 cs=1]
+                LayoutInline {A} at (0,0) size 131x18 [color=#0000EE]
+                  LayoutInline {FONT} at (0,0) size 131x15 [color=#0066FF]
+                    LayoutText {#text} at (15,1) size 131x15
+                      text run at (15,1) width 131: "Hassle-Free Upgrades"
+                LayoutText {#text} at (0,0) size 0x0
+            LayoutTableRow {TR} at (0,157) size 600x20
+              LayoutTableCell {TD} at (2,157) size 594x20 [r=3 c=0 rs=1 cs=3]
+                LayoutInline {A} at (0,0) size 50x18 [color=#0000EE]
+                  LayoutInline {FONT} at (0,0) size 50x15 [color=#0066FF]
+                    LayoutInline {B} at (0,0) size 50x15
+                      LayoutText {#text} at (15,3) size 50x15
+                        text run at (15,3) width 50: "Contact"
+                LayoutText {#text} at (64,1) size 13x18
+                  text run at (64,1) width 13: " : "
+                LayoutInline {SMALL} at (0,0) size 503x15
+                  LayoutInline {A} at (0,0) size 77x15 [color=#0000EE]
+                    LayoutText {#text} at (76,3) size 77x15
+                      text run at (76,3) width 77: "Address Book"
+                  LayoutText {#text} at (152,3) size 12x15
+                    text run at (152,3) width 12: " - "
+                  LayoutInline {A} at (0,0) size 65x15 [color=#0000EE]
+                    LayoutText {#text} at (163,3) size 65x15
+                      text run at (163,3) width 65: "Discussions"
+                  LayoutText {#text} at (227,3) size 12x15
+                    text run at (227,3) width 12: " - "
+                  LayoutInline {A} at (0,0) size 98x15 [color=#0000EE]
+                    LayoutText {#text} at (238,3) size 98x15
+                      text run at (238,3) width 98: "Instant Messenger"
+                  LayoutText {#text} at (335,3) size 12x15
+                    text run at (335,3) width 12: " - "
+                  LayoutInline {A} at (0,0) size 79x15 [color=#0000EE]
+                    LayoutText {#text} at (346,3) size 79x15
+                      text run at (346,3) width 79: "Long Distance"
+                  LayoutText {#text} at (424,3) size 12x15
+                    text run at (424,3) width 12: " - "
+                  LayoutInline {A} at (0,0) size 52x15 [color=#0000EE]
+                    LayoutText {#text} at (435,3) size 52x15
+                      text run at (435,3) width 52: "Members"
+                  LayoutText {#text} at (486,3) size 12x15
+                    text run at (486,3) width 12: " - "
+                  LayoutInline {A} at (0,0) size 82x15 [color=#0000EE]
+                    LayoutText {#text} at (497,3) size 82x15
+                      text run at (497,3) width 82: "WebMail< /A>"
+                LayoutInline {A} at (0,0) size 1x18 [color=#0000EE]
+                  LayoutText {#text} at (0,0) size 0x0
+            LayoutTableRow {TR} at (0,179) size 600x3
+              LayoutTableCell {TD} at (2,179) size 596x3 [bgcolor=#99CCCC] [r=4 c=0 rs=1 cs=4]
+                LayoutTable {TABLE} at (1,1) size 0x1
+                  LayoutTableSection {TBODY} at (0,0) size 0x1
+                    LayoutTableRow {TR} at (0,0) size 0x1
+                      LayoutTableCell {TD} at (0,0) size 0x0 [r=0 c=0 rs=1 cs=1]
+layer at (292,79) size 185x13
+  LayoutBlockFlow {DIV} at (3,3) size 185x13
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug1318-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug1318-expected.png
new file mode 100644
index 0000000..0a71684
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug1318-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug1318-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug1318-expected.txt
new file mode 100644
index 0000000..b0569d1
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug1318-expected.txt
@@ -0,0 +1,49 @@
+layer at (0,0) size 800x600
+  LayoutView at (0,0) size 800x600
+layer at (0,0) size 800x600
+  LayoutBlockFlow {HTML} at (0,0) size 800x600
+    LayoutBlockFlow {BODY} at (8,8) size 784x584
+      LayoutTable {TABLE} at (0,0) size 784x136
+        LayoutTableSection {TBODY} at (0,0) size 784x136
+          LayoutTableRow {TR} at (0,0) size 784x74
+            LayoutTableCell {TD} at (0,0) size 784x74 [r=0 c=0 rs=1 cs=4]
+              LayoutBR {BR} at (392,1) size 0x18
+              LayoutInline {FONT} at (0,0) size 732x53
+                LayoutText {#text} at (26,19) size 732x35
+                  text run at (26,19) width 183: "The Supreme Court says "
+                  text run at (208,19) width 550: "Wisconsin can continue using tuition vouchers to help poor parents send their"
+                  text run at (210,37) width 223: "children to church-run schools. "
+                  text run at (432,37) width 142: "What's your stand? "
+                LayoutBR {BR} at (573,51) size 1x0
+                LayoutBR {BR} at (392,55) size 0x17
+              LayoutText {#text} at (0,0) size 0x0
+          LayoutTableRow {TR} at (0,74) size 784x21
+            LayoutTableCell {TD} at (0,76) size 562x17 [r=1 c=0 rs=1 cs=1]
+              LayoutInline {FONT} at (0,0) size 141x15
+                LayoutText {#text} at (420,1) size 141x15
+                  text run at (420,1) width 141: "I agree with the program"
+              LayoutText {#text} at (0,0) size 0x0
+            LayoutTableCell {TD} at (562,74) size 72x21 [r=1 c=1 rs=1 cs=1]
+              LayoutBlockFlow {INPUT} at (3.89,4) size 12x13
+          LayoutTableRow {TR} at (0,95) size 784x21
+            LayoutTableCell {TD} at (0,97) size 562x17 [r=2 c=0 rs=1 cs=1]
+              LayoutInline {FONT} at (0,0) size 153x15
+                LayoutText {#text} at (408,1) size 153x15
+                  text run at (408,1) width 153: "I think vouchers are wrong"
+              LayoutText {#text} at (0,0) size 0x0
+            LayoutTableCell {TD} at (562,95) size 72x21 [r=2 c=1 rs=1 cs=1]
+              LayoutBlockFlow {INPUT} at (3.89,4) size 12x13
+          LayoutTableRow {TR} at (0,116) size 784x20
+            LayoutTableCell {TD} at (0,117) size 634x17 [r=3 c=0 rs=1 cs=2]
+              LayoutInline {A} at (0,0) size 76x18 [color=#0000EE]
+                LayoutInline {FONT} at (0,0) size 76x15
+                  LayoutText {#text} at (279,1) size 76x15
+                    text run at (279,1) width 76: "View Results"
+              LayoutInline {FONT} at (0,0) size 1x15
+                LayoutText {#text} at (0,0) size 0x0
+            LayoutTableCell {TD} at (634,116) size 150x20 [r=3 c=2 rs=1 cs=2]
+              LayoutButton {INPUT} at (55.77,1) size 38.45x18 [bgcolor=#C0C0C0]
+                LayoutBlockFlow (anonymous) at (8,2) size 22.45x13
+                  LayoutText {#text} at (0,0) size 23x13
+                    text run at (0,0) width 23: "vote"
+              LayoutText {#text} at (0,0) size 0x0
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug138725-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug138725-expected.png
new file mode 100644
index 0000000..c782f50
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug138725-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug138725-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug138725-expected.txt
new file mode 100644
index 0000000..8524e91a
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug138725-expected.txt
@@ -0,0 +1,35 @@
+layer at (0,0) size 800x600
+  LayoutView at (0,0) size 800x600
+layer at (0,0) size 800x600
+  LayoutBlockFlow {HTML} at (0,0) size 800x600
+    LayoutBlockFlow {BODY} at (8,8) size 784x584
+      LayoutTable {TABLE} at (0,0) size 144x52
+        LayoutTableSection {TBODY} at (0,0) size 144x52
+          LayoutTableRow {TR} at (0,2) size 144x48
+            LayoutTableCell {TD} at (2,2) size 140x48 [r=0 c=0 rs=1 cs=1]
+              LayoutBlockFlow (anonymous) at (1,1) size 138x0
+                LayoutInline {SPAN} at (0,0) size 0x0
+                  LayoutText {#text} at (0,0) size 0x0
+                  LayoutInline {SPAN} at (0,0) size 0x0
+                    LayoutText {#text} at (0,0) size 0x0
+                    LayoutText {#text} at (0,0) size 0x0
+              LayoutBlockFlow (anonymous) at (1,1) size 138x46
+                LayoutTable {TABLE} at (0,0) size 138x46
+                  LayoutTableSection {TBODY} at (0,0) size 138x46
+                    LayoutTableRow {TR} at (0,2) size 138x42
+                      LayoutTableCell {TD} at (2,2) size 134x42 [r=0 c=0 rs=1 cs=1]
+                        LayoutTable (floating) {TABLE} at (1,1) size 132x40
+                          LayoutTableSection {TBODY} at (0,0) size 132x40
+                            LayoutTableRow {TR} at (0,2) size 132x36
+                              LayoutTableCell {TD} at (2,2) size 128x36 [r=0 c=0 rs=1 cs=1]
+                                LayoutBlockFlow {FORM} at (1,1) size 126x18
+                                  LayoutButton {INPUT} at (0,0) size 125.34x18 [bgcolor=#C0C0C0]
+                                    LayoutBlockFlow (anonymous) at (8,2) size 109.34x13
+                                      LayoutText {#text} at (0,0) size 110x13
+                                        text run at (0,0) width 110: "ApplyForThisPosition"
+                                  LayoutText {#text} at (0,0) size 0x0
+              LayoutBlockFlow (anonymous) at (1,47) size 138x0
+                LayoutInline {SPAN} at (0,0) size 0x0
+                  LayoutInline {SPAN} at (0,0) size 0x0
+                  LayoutText {#text} at (0,0) size 0x0
+                LayoutText {#text} at (0,0) size 0x0
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug18359-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug18359-expected.png
new file mode 100644
index 0000000..7bd0345
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug18359-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug18359-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug18359-expected.txt
new file mode 100644
index 0000000..86bec78
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug18359-expected.txt
@@ -0,0 +1,44 @@
+layer at (0,0) size 800x600
+  LayoutView at (0,0) size 800x600
+layer at (0,0) size 800x600
+  LayoutBlockFlow {HTML} at (0,0) size 800x600
+    LayoutBlockFlow {BODY} at (8,8) size 784x576
+      LayoutBlockFlow {H2} at (0,0) size 784x28
+        LayoutText {#text} at (0,0) size 362x28
+          text run at (0,0) width 362: "SeaMonkey XPInstall Trigger Page"
+      LayoutBlockFlow {HR} at (0,47.91) size 784x2 [border: (1px inset #EEEEEE)]
+      LayoutBlockFlow {FORM} at (0,57.91) size 784x47
+        LayoutTable {TABLE} at (0,0) size 600x47
+          LayoutTableSection {TBODY} at (0,0) size 600x47
+            LayoutTableRow {TR} at (0,2) size 600x21
+              LayoutTableCell {TD} at (2,2) size 106x20 [r=0 c=0 rs=1 cs=1]
+                LayoutInline {B} at (0,0) size 95x18
+                  LayoutText {#text} at (1,1) size 95x18
+                    text run at (1,1) width 95: "Trigger URL:"
+              LayoutTableCell {TD} at (110,2) size 403x21 [r=0 c=1 rs=1 cs=1]
+                LayoutTextControl {INPUT} at (1,1) size 401x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)]
+              LayoutTableCell {TD} at (515,2) size 83x20 [r=0 c=2 rs=1 cs=1]
+                LayoutButton {INPUT} at (1,1) size 53.27x18 [bgcolor=#C0C0C0]
+                  LayoutBlockFlow (anonymous) at (8,2) size 37.27x13
+                    LayoutText {#text} at (0,0) size 38x13
+                      text run at (0,0) width 38: "Trigger"
+            LayoutTableRow {TR} at (0,25) size 600x20
+              LayoutTableCell {TD} at (2,25) size 106x20 [r=1 c=0 rs=1 cs=1]
+                LayoutInline {B} at (0,0) size 104x18
+                  LayoutText {#text} at (1,1) size 104x18
+                    text run at (1,1) width 104: "Run Test Case:"
+              LayoutTableCell {TD} at (110,25) size 403x20 [r=1 c=1 rs=1 cs=1]
+                LayoutMenuList {SELECT} at (1,1) size 253x18 [bgcolor=#F8F8F8]
+                  LayoutBlockFlow (anonymous) at (0,0) size 253x18
+                    LayoutText (anonymous) at (8,2) size 70x13
+                      text run at (8,2) width 70: "a_abortinstall"
+                LayoutText {#text} at (0,0) size 0x0
+              LayoutTableCell {TD} at (515,25) size 83x20 [r=1 c=2 rs=1 cs=1]
+                LayoutButton {INPUT} at (1,1) size 80.64x18 [bgcolor=#C0C0C0]
+                  LayoutBlockFlow (anonymous) at (8,2) size 64.64x13
+                    LayoutText {#text} at (0,0) size 65x13
+                      text run at (0,0) width 65: "Trigger case"
+layer at (122,72) size 395x13
+  LayoutBlockFlow {DIV} at (3,3) size 395x13
+    LayoutText {#text} at (0,0) size 94x13
+      text run at (0,0) width 94: "http://jimbob/jars/"
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug194024-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug194024-expected.png
new file mode 100644
index 0000000..fb45699
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug194024-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug194024-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug194024-expected.txt
new file mode 100644
index 0000000..47cb4dd8
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug194024-expected.txt
@@ -0,0 +1,146 @@
+layer at (0,0) size 800x600
+  LayoutView at (0,0) size 800x600
+layer at (0,0) size 800x600
+  LayoutBlockFlow {HTML} at (0,0) size 800x600
+    LayoutBlockFlow {BODY} at (8,8) size 784x584
+      LayoutBlockFlow (anonymous) at (0,0) size 784x18
+        LayoutText {#text} at (0,0) size 287x18
+          text run at (0,0) width 287: "border=\"0\" cellspacing=\"0\" cellpadding=\"0\""
+      LayoutTable {TABLE} at (0,18) size 784x32 [bgcolor=#DDDD33]
+        LayoutTableSection {TBODY} at (0,0) size 784x32
+          LayoutTableRow {TR} at (0,0) size 784x32
+            LayoutTableCell {TD} at (0,16) size 12x0 [r=0 c=0 rs=1 cs=1]
+            LayoutTableCell {TD} at (12,0) size 760x32 [r=0 c=1 rs=1 cs=1]
+            LayoutTableCell {TD} at (772,16) size 12x0 [r=0 c=2 rs=1 cs=1]
+      LayoutBlockFlow (anonymous) at (0,50) size 784x18
+        LayoutText {#text} at (0,0) size 211x18
+          text run at (0,0) width 211: "cellspacing=\"0\" cellpadding=\"0\""
+      LayoutTable {TABLE} at (0,68) size 784x32 [bgcolor=#CCCCFF]
+        LayoutTableSection {TBODY} at (0,0) size 784x32
+          LayoutTableRow {TR} at (0,0) size 784x32
+            LayoutTableCell {TD} at (0,16) size 12x0 [r=0 c=0 rs=1 cs=1]
+            LayoutTableCell {TD} at (12,0) size 760x32 [r=0 c=1 rs=1 cs=1]
+            LayoutTableCell {TD} at (772,16) size 12x0 [r=0 c=2 rs=1 cs=1]
+      LayoutBlockFlow (anonymous) at (0,100) size 784x18
+        LayoutText {#text} at (0,0) size 105x18
+          text run at (0,0) width 105: "cellpadding=\"0\""
+      LayoutTable {TABLE} at (0,118) size 784x36 [bgcolor=#FF9999]
+        LayoutTableSection {TBODY} at (0,0) size 784x36
+          LayoutTableRow {TR} at (0,2) size 784x32
+            LayoutTableCell {TD} at (2,18) size 12x0 [r=0 c=0 rs=1 cs=1]
+            LayoutTableCell {TD} at (16,2) size 752x32 [r=0 c=1 rs=1 cs=1]
+            LayoutTableCell {TD} at (770,18) size 12x0 [r=0 c=2 rs=1 cs=1]
+      LayoutBlockFlow (anonymous) at (0,154) size 784x18
+        LayoutText {#text} at (0,0) size 181x18
+          text run at (0,0) width 181: "border=\"0\" cellpadding=\"0\""
+      LayoutTable {TABLE} at (0,172) size 784x36 [bgcolor=#AAEEBB]
+        LayoutTableSection {TBODY} at (0,0) size 784x36
+          LayoutTableRow {TR} at (0,2) size 784x32
+            LayoutTableCell {TD} at (2,18) size 12x0 [r=0 c=0 rs=1 cs=1]
+            LayoutTableCell {TD} at (16,2) size 752x32 [r=0 c=1 rs=1 cs=1]
+            LayoutTableCell {TD} at (770,18) size 12x0 [r=0 c=2 rs=1 cs=1]
+      LayoutBlockFlow (anonymous) at (0,208) size 784x18
+        LayoutInline {FONT} at (0,0) size 31x18 [color=#0000FF]
+          LayoutText {#text} at (0,0) size 31x18
+            text run at (0,0) width 31: "right"
+        LayoutText {#text} at (30,0) size 77x18
+          text run at (30,0) width 77: " border=\"0\""
+      LayoutTable {TABLE} at (0,226) size 784x38 [bgcolor=#FFCCEE]
+        LayoutTableSection {TBODY} at (0,0) size 784x38
+          LayoutTableRow {TR} at (0,2) size 784x34
+            LayoutTableCell {TD} at (2,18) size 14x2 [r=0 c=0 rs=1 cs=1]
+            LayoutTableCell {TD} at (18,2) size 748x34 [r=0 c=1 rs=1 cs=1]
+            LayoutTableCell {TD} at (768,18) size 14x2 [r=0 c=2 rs=1 cs=1]
+      LayoutBlockFlow (anonymous) at (0,264) size 784x18
+        LayoutInline {FONT} at (0,0) size 31x18 [color=#0000FF]
+          LayoutText {#text} at (0,0) size 31x18
+            text run at (0,0) width 31: "right"
+        LayoutText {#text} at (30,0) size 109x18
+          text run at (30,0) width 109: " cellpadding=\"1\""
+      LayoutTable {TABLE} at (0,282) size 784x38 [bgcolor=#66DDFF]
+        LayoutTableSection {TBODY} at (0,0) size 784x38
+          LayoutTableRow {TR} at (0,2) size 784x34
+            LayoutTableCell {TD} at (2,18) size 14x2 [r=0 c=0 rs=1 cs=1]
+            LayoutTableCell {TD} at (18,2) size 748x34 [r=0 c=1 rs=1 cs=1]
+            LayoutTableCell {TD} at (768,18) size 14x2 [r=0 c=2 rs=1 cs=1]
+      LayoutBlockFlow (anonymous) at (0,320) size 784x18
+        LayoutInline {FONT} at (0,0) size 31x18 [color=#0000FF]
+          LayoutText {#text} at (0,0) size 31x18
+            text run at (0,0) width 31: "right"
+        LayoutText {#text} at (30,0) size 291x18
+          text run at (30,0) width 291: " border=\"1\" cellspacing=\"0\" cellpadding=\"0\""
+      LayoutTable {TABLE} at (0,338) size 784x36 [bgcolor=#EEEEEE] [border: (1px outset #808080)]
+        LayoutTableSection {TBODY} at (1,1) size 782x34
+          LayoutTableRow {TR} at (0,0) size 782x34
+            LayoutTableCell {TD} at (0,16) size 14x2 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
+            LayoutTableCell {TD} at (14,0) size 754x34 [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1]
+            LayoutTableCell {TD} at (768,16) size 14x2 [border: (1px inset #808080)] [r=0 c=2 rs=1 cs=1]
+      LayoutBlockFlow (anonymous) at (0,374) size 784x18
+        LayoutInline {FONT} at (0,0) size 31x18 [color=#0000FF]
+          LayoutText {#text} at (0,0) size 31x18
+            text run at (0,0) width 31: "right"
+        LayoutText {#text} at (30,0) size 183x18
+          text run at (30,0) width 183: " border=\"1\" cellspacing=\"0\""
+      LayoutTable {TABLE} at (0,392) size 784x38 [bgcolor=#FFCC66] [border: (1px outset #808080)]
+        LayoutTableSection {TBODY} at (1,1) size 782x36
+          LayoutTableRow {TR} at (0,0) size 782x36
+            LayoutTableCell {TD} at (0,16) size 16x4 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
+            LayoutTableCell {TD} at (16,0) size 750x36 [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1]
+            LayoutTableCell {TD} at (766,16) size 16x4 [border: (1px inset #808080)] [r=0 c=2 rs=1 cs=1]
+      LayoutBlockFlow (anonymous) at (0,430) size 784x18
+        LayoutInline {FONT} at (0,0) size 31x18 [color=#0000FF]
+          LayoutText {#text} at (0,0) size 31x18
+            text run at (0,0) width 31: "right"
+        LayoutText {#text} at (30,0) size 77x18
+          text run at (30,0) width 77: " border=\"1\""
+      LayoutTable {TABLE} at (0,448) size 784x42 [bgcolor=#CCFF33] [border: (1px outset #808080)]
+        LayoutTableSection {TBODY} at (1,1) size 782x40
+          LayoutTableRow {TR} at (0,2) size 782x36
+            LayoutTableCell {TD} at (2,18) size 16x4 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
+            LayoutTableCell {TD} at (20,2) size 742x36 [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1]
+            LayoutTableCell {TD} at (764,18) size 16x4 [border: (1px inset #808080)] [r=0 c=2 rs=1 cs=1]
+layer at (20,26) size 760x32 clip at (21,27) size 758x30
+  LayoutTextControl {TEXTAREA} at (0,0) size 760x32 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
+    LayoutBlockFlow {DIV} at (3,3) size 754x13
+      LayoutText {#text} at (0,0) size 20x13
+        text run at (0,0) width 20: "test"
+layer at (20,76) size 760x32 clip at (21,77) size 758x30
+  LayoutTextControl {TEXTAREA} at (0,0) size 760x32 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
+    LayoutBlockFlow {DIV} at (3,3) size 754x13
+      LayoutText {#text} at (0,0) size 20x13
+        text run at (0,0) width 20: "test"
+layer at (24,128) size 752x32 clip at (25,129) size 750x30
+  LayoutTextControl {TEXTAREA} at (0,0) size 752x32 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
+    LayoutBlockFlow {DIV} at (3,3) size 746x13
+      LayoutText {#text} at (0,0) size 20x13
+        text run at (0,0) width 20: "test"
+layer at (24,182) size 752x32 clip at (25,183) size 750x30
+  LayoutTextControl {TEXTAREA} at (0,0) size 752x32 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
+    LayoutBlockFlow {DIV} at (3,3) size 746x13
+      LayoutText {#text} at (0,0) size 20x13
+        text run at (0,0) width 20: "test"
+layer at (27,237) size 746x32 clip at (28,238) size 744x30
+  LayoutTextControl {TEXTAREA} at (1,1) size 746x32 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
+    LayoutBlockFlow {DIV} at (3,3) size 740x13
+      LayoutText {#text} at (0,0) size 20x13
+        text run at (0,0) width 20: "test"
+layer at (27,293) size 746x32 clip at (28,294) size 744x30
+  LayoutTextControl {TEXTAREA} at (1,1) size 746x32 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
+    LayoutBlockFlow {DIV} at (3,3) size 740x13
+      LayoutText {#text} at (0,0) size 20x13
+        text run at (0,0) width 20: "test"
+layer at (24,348) size 752x32 clip at (25,349) size 750x30
+  LayoutTextControl {TEXTAREA} at (1,1) size 752x32 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
+    LayoutBlockFlow {DIV} at (3,3) size 746x13
+      LayoutText {#text} at (0,0) size 20x13
+        text run at (0,0) width 20: "test"
+layer at (27,403) size 746x32 clip at (28,404) size 744x30
+  LayoutTextControl {TEXTAREA} at (2,2) size 746x32 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
+    LayoutBlockFlow {DIV} at (3,3) size 740x13
+      LayoutText {#text} at (0,0) size 20x13
+        text run at (0,0) width 20: "test"
+layer at (31,461) size 738x32 clip at (32,462) size 736x30
+  LayoutTextControl {TEXTAREA} at (2,2) size 738x32 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
+    LayoutBlockFlow {DIV} at (3,3) size 732x13
+      LayoutText {#text} at (0,0) size 20x13
+        text run at (0,0) width 20: "test"
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug2479-2-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug2479-2-expected.png
new file mode 100644
index 0000000..045bb950
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug2479-2-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug2479-2-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug2479-2-expected.txt
new file mode 100644
index 0000000..7c7ced6
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug2479-2-expected.txt
@@ -0,0 +1,120 @@
+layer at (0,0) size 800x600
+  LayoutView at (0,0) size 800x600
+layer at (0,0) size 800x553
+  LayoutBlockFlow {HTML} at (0,0) size 800x553
+    LayoutBlockFlow {BODY} at (57,64) size 686x425 [bgcolor=#99FFCC] [border: (3px solid #000000)]
+      LayoutBlockFlow {P} at (3,3) size 680x64
+        LayoutText {#text} at (0,6) size 632x51
+          text run at (0,6) width 593: "These links are in an element with display table-row, and the li elements "
+          text run at (592,6) width 40: "have"
+          text run at (0,38) width 155: "display: table-cell. "
+          text run at (154,38) width 131: "They disappear:"
+      LayoutTable (anonymous) at (3,67) size 304x19
+        LayoutTableSection (anonymous) at (0,0) size 304x19
+          LayoutTableRow {UL} at (0,0) size 304x19 [bgcolor=#00CC99]
+            LayoutTableCell {LI} at (0,0) size 76x19 [r=0 c=0 rs=1 cs=1]
+              LayoutInline {A} at (0,0) size 54x19 [color=#0000EE]
+                LayoutText {#text} at (11,0) size 54x19
+                  text run at (11,0) width 54: "people"
+            LayoutTableCell {LI} at (76,0) size 76x19 [r=0 c=1 rs=1 cs=1]
+              LayoutInline {A} at (0,0) size 52x19 [color=#0000EE]
+                LayoutText {#text} at (12,0) size 52x19
+                  text run at (12,0) width 52: "places"
+            LayoutTableCell {LI} at (152,0) size 76x19 [r=0 c=2 rs=1 cs=1]
+              LayoutInline {A} at (0,0) size 76x19 [color=#0000EE]
+                LayoutText {#text} at (0,0) size 76x19
+                  text run at (0,0) width 76: "members"
+            LayoutTableCell {LI} at (228,0) size 76x19 [r=0 c=3 rs=1 cs=1]
+              LayoutInline {A} at (0,0) size 38x19 [color=#0000EE]
+                LayoutText {#text} at (19,0) size 38x19
+                  text run at (19,0) width 38: "links"
+      LayoutBlockFlow {DIV} at (3,86) size 680x336
+        LayoutBlockFlow (anonymous) at (16,16) size 648x19
+          LayoutText {#text} at (0,0) size 510x19
+            text run at (0,0) width 227: "This text is not in the form. "
+            text run at (226,0) width 284: "The form should be indented 40px."
+        LayoutBlockFlow {FORM} at (96,35) size 568x285
+          LayoutBlockFlow {P} at (0,0) size 568x64
+            LayoutText {#text} at (0,6) size 541x51
+              text run at (0,6) width 195: "This is text in the form. "
+              text run at (194,6) width 230: "It should be indented 40px. "
+              text run at (423,6) width 118: "The form itself"
+              text run at (0,38) width 373: "has the same table-row/table-cell problem as "
+              text run at (372,38) width 55: "above."
+          LayoutBlockFlow {P} at (0,64) size 568x63
+            LayoutTable {SPAN} at (0,3) size 137x60
+              LayoutTableSection (anonymous) at (0,0) size 137x60
+                LayoutTableRow {SPAN} at (0,0) size 137x28
+                  LayoutTableCell (anonymous) at (0,0) size 137x28 [r=0 c=0 rs=1 cs=1]
+                    LayoutText {#text} at (0,6) size 137x16
+                      text run at (0,6) width 137: "First Name (required)"
+                LayoutTableRow (anonymous) at (0,28) size 137x32
+                  LayoutTableCell (anonymous) at (0,28) size 137x32 [r=1 c=0 rs=1 cs=1]
+                    LayoutTextControl {INPUT} at (0,8) size 107x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)]
+            LayoutText {#text} at (137,6) size 6x19
+              text run at (137,6) width 6: " "
+            LayoutTable {SPAN} at (142.63,3) size 137x60
+              LayoutTableSection (anonymous) at (0,0) size 137x60
+                LayoutTableRow {SPAN} at (0,0) size 137x28
+                  LayoutTableCell (anonymous) at (0,0) size 137x28 [r=0 c=0 rs=1 cs=1]
+                    LayoutText {#text} at (0,6) size 137x16
+                      text run at (0,6) width 137: "Last Name (required)"
+                LayoutTableRow (anonymous) at (0,28) size 137x32
+                  LayoutTableCell (anonymous) at (0,28) size 137x32 [r=1 c=0 rs=1 cs=1]
+                    LayoutTextControl {INPUT} at (0,8) size 107x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)]
+            LayoutText {#text} at (0,0) size 0x0
+          LayoutBlockFlow {P} at (0,127) size 568x63
+            LayoutTable {SPAN} at (0,3) size 251x60
+              LayoutTableSection (anonymous) at (0,0) size 251x60
+                LayoutTableRow {SPAN} at (0,0) size 251x28
+                  LayoutTableCell (anonymous) at (0,0) size 251x28 [r=0 c=0 rs=1 cs=1]
+                    LayoutText {#text} at (0,6) size 93x16
+                      text run at (0,6) width 93: "Email Address"
+                LayoutTableRow (anonymous) at (0,28) size 251x32
+                  LayoutTableCell (anonymous) at (0,28) size 251x32 [r=1 c=0 rs=1 cs=1]
+                    LayoutTextControl {INPUT} at (0,8) size 251x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)]
+            LayoutText {#text} at (0,0) size 0x0
+          LayoutBlockFlow {P} at (0,190) size 568x63
+            LayoutTable {SPAN} at (0,3) size 107x60
+              LayoutTableSection (anonymous) at (0,0) size 107x60
+                LayoutTableRow {SPAN} at (0,0) size 107x28
+                  LayoutTableCell (anonymous) at (0,0) size 107x28 [r=0 c=0 rs=1 cs=1]
+                    LayoutText {#text} at (0,6) size 105x16
+                      text run at (0,6) width 105: "Company Name"
+                LayoutTableRow (anonymous) at (0,28) size 107x32
+                  LayoutTableCell (anonymous) at (0,28) size 107x32 [r=1 c=0 rs=1 cs=1]
+                    LayoutTextControl {INPUT} at (0,8) size 107x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)]
+            LayoutText {#text} at (107,6) size 6x19
+              text run at (107,6) width 6: " "
+            LayoutTable {SPAN} at (112.63,3) size 107x60
+              LayoutTableSection (anonymous) at (0,0) size 107x60
+                LayoutTableRow {SPAN} at (0,0) size 107x28
+                  LayoutTableCell (anonymous) at (0,0) size 107x28 [r=0 c=0 rs=1 cs=1]
+                    LayoutText {#text} at (0,6) size 27x16
+                      text run at (0,6) width 27: "Title"
+                LayoutTableRow (anonymous) at (0,28) size 107x32
+                  LayoutTableCell (anonymous) at (0,28) size 107x32 [r=1 c=0 rs=1 cs=1]
+                    LayoutTextControl {INPUT} at (0,8) size 107x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)]
+            LayoutText {#text} at (0,0) size 0x0
+          LayoutBlockFlow {P} at (0,253) size 568x32
+            LayoutButton {INPUT} at (0,9) size 55.89x18 [bgcolor=#C0C0C0]
+              LayoutBlockFlow (anonymous) at (8,2) size 39.89x13
+                LayoutText {#text} at (0,0) size 40x13
+                  text run at (0,0) width 40: "Submit!"
+            LayoutText {#text} at (55,6) size 7x19
+              text run at (55,6) width 7: " "
+            LayoutButton {INPUT} at (61.52,9) size 72.97x18 [bgcolor=#C0C0C0]
+              LayoutBlockFlow (anonymous) at (8,2) size 56.97x13
+                LayoutText {#text} at (0,0) size 57x13
+                  text run at (0,0) width 57: "Clear Form"
+            LayoutText {#text} at (0,0) size 0x0
+layer at (159,291) size 101x13
+  LayoutBlockFlow {DIV} at (3,3) size 101x13
+layer at (302,291) size 101x13
+  LayoutBlockFlow {DIV} at (3,3) size 101x13
+layer at (159,354) size 245x13
+  LayoutBlockFlow {DIV} at (3,3) size 245x13
+layer at (159,417) size 101x13
+  LayoutBlockFlow {DIV} at (3,3) size 101x13
+layer at (272,417) size 101x13
+  LayoutBlockFlow {DIV} at (3,3) size 101x13
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug2479-3-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug2479-3-expected.png
new file mode 100644
index 0000000..325e09d
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug2479-3-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug2479-3-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug2479-3-expected.txt
new file mode 100644
index 0000000..057baa2
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug2479-3-expected.txt
@@ -0,0 +1,120 @@
+layer at (0,0) size 800x600 clip at (0,0) size 785x600 scrollHeight 659
+  LayoutView at (0,0) size 800x600
+layer at (0,0) size 785x659 backgroundClip at (0,0) size 785x600 clip at (0,0) size 785x600
+  LayoutBlockFlow {HTML} at (0,0) size 785x658.50
+    LayoutBlockFlow {BODY} at (8,21.44) size 769x621.06
+      LayoutBlockFlow {H1} at (0,0) size 769x37
+        LayoutText {#text} at (0,0) size 311x37
+          text run at (0,0) width 311: "Generic Table Tests - 1"
+      LayoutBlockFlow {P} at (0,58.44) size 769x18
+        LayoutText {#text} at (0,0) size 397x18
+          text run at (0,0) width 397: "If you have any comments to make regarding this test, e-mail "
+        LayoutInline {A} at (0,0) size 186x18 [color=#0000EE]
+          LayoutText {#text} at (396,0) size 186x18
+            text run at (396,0) width 186: "py8ieh=eviltests@bath.ac.uk"
+        LayoutText {#text} at (581,0) size 5x18
+          text run at (581,0) width 5: "."
+      LayoutBlockFlow {DL} at (0,92.44) size 769x36
+        LayoutBlockFlow {DT} at (0,0) size 769x18
+          LayoutText {#text} at (0,0) size 83x18
+            text run at (0,0) width 83: "Prerequisites"
+        LayoutBlockFlow {DD} at (40,18) size 729x18
+          LayoutText {#text} at (0,0) size 697x18
+            text run at (0,0) width 697: "Browsers that are subjected to this test should support CSS1 and the CSS2 table model, and multiple classes."
+      LayoutBlockFlow {P} at (0,144.44) size 769x98 [border: (5px double #FF0000)]
+        LayoutBlockFlow (anonymous) at (13,13) size 743x18
+          LayoutText {#text} at (0,0) size 239x18
+            text run at (0,0) width 239: "If this paragraph breaks the line here:"
+        LayoutTable {SPAN} at (13,31) size 60x18
+          LayoutTableSection (anonymous) at (0,0) size 60x18
+            LayoutTableRow (anonymous) at (0,0) size 60x18
+              LayoutTableCell (anonymous) at (0,0) size 60x18 [r=0 c=0 rs=1 cs=1]
+                LayoutText {#text} at (0,0) size 60x18
+                  text run at (0,0) width 60: "and here:"
+        LayoutBlockFlow (anonymous) at (13,49) size 743x36
+          LayoutText {#text} at (0,0) size 121x18
+            text run at (0,0) width 121: "then your browser "
+          LayoutInline {EM} at (0,0) size 83x18
+            LayoutText {#text} at (120,0) size 83x18
+              text run at (120,0) width 83: "does support"
+          LayoutText {#text} at (202,0) size 165x18
+            text run at (202,0) width 165: " table values on 'display'. "
+          LayoutInline {STRONG} at (0,0) size 715x36
+            LayoutText {#text} at (366,0) size 715x36
+              text run at (366,0) width 349: "If this paragraphs flows without any undue breaks,"
+              text run at (0,18) width 459: "then you should mark your browser as not supporting table values!"
+      LayoutBlockFlow {H2} at (0,262.34) size 769x28
+        LayoutText {#text} at (0,0) size 218x28
+          text run at (0,0) width 218: "1. Table -> Table Cell"
+      LayoutBlockFlow {P} at (0,310.25) size 769x36
+        LayoutText {#text} at (0,0) size 762x36
+          text run at (0,0) width 762: "Below there should be a gray bar, spanning the width of the BODY, with the text \"Left\" to the left and the text \"Right\","
+          text run at (0,18) width 222: "on the same line, flush to the right."
+      LayoutTable {DIV} at (0,362.25) size 769x18 [bgcolor=#C0C0C0]
+        LayoutTableSection (anonymous) at (0,0) size 769x18
+          LayoutTableRow (anonymous) at (0,0) size 769x18
+            LayoutTableCell {DIV} at (0,0) size 329x18 [r=0 c=0 rs=1 cs=1]
+              LayoutText {#text} at (0,0) size 27x18
+                text run at (0,0) width 27: "Left"
+            LayoutTableCell {DIV} at (329,0) size 440x18 [r=0 c=1 rs=1 cs=1]
+              LayoutText {#text} at (404,0) size 36x18
+                text run at (404,0) width 36: "Right"
+      LayoutBlockFlow {H2} at (0,400.16) size 769x28
+        LayoutText {#text} at (0,0) size 156x28
+          text run at (0,0) width 156: "Submit Results"
+      LayoutBlockFlow {FORM} at (0,448.06) size 769x19
+        LayoutBlockFlow {P} at (0,0) size 769x19
+          LayoutText {#text} at (0,0) size 267x18
+            text run at (0,0) width 267: "How does your browser fare on this test? "
+          LayoutMenuList {SELECT} at (266.59,1) size 238x18 [bgcolor=#F8F8F8]
+            LayoutBlockFlow (anonymous) at (0,0) size 238x18
+              LayoutText (anonymous) at (8,2) size 138x13
+                text run at (8,2) width 138: "The test renders correctly."
+          LayoutText {#text} at (504,0) size 5x18
+            text run at (504,0) width 5: " "
+          LayoutInline {LABEL} at (0,0) size 204x18
+            LayoutText {#text} at (508,0) size 73x18
+              text run at (508,0) width 73: "Comment: "
+            LayoutTextControl {INPUT} at (580.14,0) size 131x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)]
+          LayoutText {#text} at (711,0) size 5x18
+            text run at (711,0) width 5: " "
+          LayoutButton {INPUT} at (715.14,1) size 52.47x18 [bgcolor=#C0C0C0]
+            LayoutBlockFlow (anonymous) at (8,2) size 36.47x13
+              LayoutText {#text} at (0,0) size 37x13
+                text run at (0,0) width 37: "Submit"
+          LayoutText {#text} at (0,0) size 0x0
+      LayoutBlockFlow {HR} at (0,483.06) size 769x2 [border: (1px inset #EEEEEE)]
+      LayoutBlockFlow {P} at (0,501.06) size 769x18
+        LayoutText {#text} at (0,0) size 64x18
+          text run at (0,0) width 64: "Up to the "
+        LayoutInline {A} at (0,0) size 73x18 [color=#0000EE]
+          LayoutText {#text} at (63,0) size 73x18
+            text run at (63,0) width 73: "Table Tests"
+        LayoutText {#text} at (135,0) size 5x18
+          text run at (135,0) width 5: "."
+      LayoutBlockFlow {P} at (0,535.06) size 769x18
+        LayoutText {#text} at (0,0) size 64x18
+          text run at (0,0) width 64: "Up to the "
+        LayoutInline {A} at (0,0) size 99x18 [color=#0000EE]
+          LayoutText {#text} at (63,0) size 99x18
+            text run at (63,0) width 99: "Evil Tests Page"
+        LayoutText {#text} at (161,0) size 5x18
+          text run at (161,0) width 5: "."
+      LayoutBlockFlow {P} at (0,569.06) size 769x18
+        LayoutText {#text} at (0,0) size 177x18
+          text run at (0,0) width 177: "This page is maintained by "
+        LayoutInline {A} at (0,0) size 79x18 [color=#0000EE]
+          LayoutText {#text} at (176,0) size 79x18
+            text run at (176,0) width 79: "Ian Hickson"
+        LayoutText {#text} at (254,0) size 10x18
+          text run at (254,0) width 10: " ("
+        LayoutInline {A} at (0,0) size 125x18 [color=#0000EE]
+          LayoutText {#text} at (263,0) size 125x18
+            text run at (263,0) width 125: "py8ieh@bath.ac.uk"
+        LayoutText {#text} at (387,0) size 10x18
+          text run at (387,0) width 10: ")."
+      LayoutBlockFlow {P} at (0,603.06) size 769x18
+        LayoutText {#text} at (0,0) size 185x18
+          text run at (0,0) width 185: "Last updated in March 1999."
+layer at (591,473) size 125x13
+  LayoutBlockFlow {DIV} at (3,3) size 125x13
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug2479-4-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug2479-4-expected.png
new file mode 100644
index 0000000..6a8402f9
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug2479-4-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug2479-4-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug2479-4-expected.txt
new file mode 100644
index 0000000..07df1f8f
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug2479-4-expected.txt
@@ -0,0 +1,243 @@
+layer at (0,0) size 800x600 clip at (0,0) size 785x600 scrollHeight 2582
+  LayoutView at (0,0) size 800x600
+layer at (0,0) size 785x2582 backgroundClip at (0,0) size 785x600 clip at (0,0) size 785x600
+  LayoutBlockFlow {HTML} at (0,0) size 785x2582.22
+    LayoutBlockFlow {BODY} at (8,21.44) size 769x2544.78 [bgcolor=#FFFFFF]
+      LayoutBlockFlow {H1} at (0,0) size 769x37
+        LayoutText {#text} at (0,0) size 361x37
+          text run at (0,0) width 361: "Table Inheritance Tests - 1"
+      LayoutBlockFlow {P} at (0,58.44) size 769x18
+        LayoutText {#text} at (0,0) size 397x18
+          text run at (0,0) width 397: "If you have any comments to make regarding this test, e-mail "
+        LayoutInline {A} at (0,0) size 186x18 [color=#0000EE]
+          LayoutText {#text} at (396,0) size 186x18
+            text run at (396,0) width 186: "py8ieh=eviltests@bath.ac.uk"
+        LayoutText {#text} at (581,0) size 5x18
+          text run at (581,0) width 5: "."
+      LayoutBlockFlow {DL} at (0,92.44) size 769x36
+        LayoutBlockFlow {DT} at (0,0) size 769x18
+          LayoutText {#text} at (0,0) size 83x18
+            text run at (0,0) width 83: "Prerequisites"
+        LayoutBlockFlow {DD} at (40,18) size 729x18
+          LayoutText {#text} at (0,0) size 560x18
+            text run at (0,0) width 560: "Browsers that are subjected to this test should support CSS1 and the CSS2 table model."
+      LayoutBlockFlow {H2} at (0,148.34) size 769x28
+        LayoutText {#text} at (0,0) size 104x28
+          text run at (0,0) width 104: "0. Control"
+      LayoutBlockFlow {P} at (0,196.25) size 769x18
+        LayoutText {#text} at (0,0) size 410x18
+          text run at (0,0) width 410: "The following four tests should look identical, namely, like this:"
+      LayoutBlockFlow {DIV} at (0,230.25) size 769x74 [color=#FFFFFF] [bgcolor=#000000]
+        LayoutText {#text} at (0,0) size 761x74
+          text run at (0,0) width 761: "This text should be white on black, bold, twice the"
+          text run at (0,37) width 523: "size of normal text, and sans serif."
+      LayoutBlockFlow {P} at (0,320.25) size 769x72
+        LayoutText {#text} at (0,0) size 768x72
+          text run at (0,0) width 756: "There are some minor exceptions, however. The x.1 tests should fill the viewport width, the other tests need not. Also,"
+          text run at (0,18) width 766: "browsers attempting to have backwards compatability with the buggy behaviour of legacy browsers may omit to inherit"
+          text run at (0,36) width 768: "the color and font-size in 1.1, which will make 1.1 (but only 1.1) unreadable. That is the problem with not following the"
+          text run at (0,54) width 39: "specs."
+      LayoutBlockFlow {H2} at (0,412.16) size 769x28
+        LayoutText {#text} at (0,0) size 170x28
+          text run at (0,0) width 170: "1. HTML Tables"
+      LayoutBlockFlow {H3} at (0,460.06) size 769x22
+        LayoutText {#text} at (0,0) size 243x22
+          text run at (0,0) width 243: "1.1 Inheritance through a DIV"
+      LayoutBlockFlow {DIV} at (0,500.78) size 769x80 [color=#FFFFFF] [bgcolor=#000000]
+        LayoutTable {TABLE} at (0,0) size 769x80
+          LayoutTableSection {TBODY} at (0,0) size 769x80
+            LayoutTableRow {TR} at (0,2) size 769x76
+              LayoutTableCell {TD} at (2,2) size 765x76 [r=0 c=0 rs=1 cs=1]
+                LayoutText {#text} at (1,1) size 761x74
+                  text run at (1,1) width 761: "This text should be white on black, bold, twice the"
+                  text run at (1,38) width 523: "size of normal text, and sans serif."
+      LayoutBlockFlow {H3} at (0,599.50) size 769x22
+        LayoutText {#text} at (0,0) size 259x22
+          text run at (0,0) width 259: "1.2 Styles set directly on TABLE"
+      LayoutTable {TABLE} at (0,640.22) size 769x80 [color=#FFFFFF] [bgcolor=#000000]
+        LayoutTableSection {TBODY} at (0,0) size 769x80
+          LayoutTableRow {TR} at (0,2) size 769x76
+            LayoutTableCell {TD} at (2,2) size 765x76 [r=0 c=0 rs=1 cs=1]
+              LayoutText {#text} at (1,1) size 761x74
+                text run at (1,1) width 761: "This text should be white on black, bold, twice the"
+                text run at (1,38) width 523: "size of normal text, and sans serif."
+      LayoutBlockFlow {H2} at (0,740.13) size 769x28
+        LayoutText {#text} at (0,0) size 226x28
+          text run at (0,0) width 226: "2. Explicit CSS Tables"
+      LayoutBlockFlow {H3} at (0,788.03) size 769x22
+        LayoutText {#text} at (0,0) size 243x22
+          text run at (0,0) width 243: "2.1 Inheritance through a DIV"
+      LayoutBlockFlow {DIV} at (0,828.75) size 769x74 [color=#FFFFFF] [bgcolor=#000000]
+        LayoutTable {DIV} at (0,0) size 769x74
+          LayoutTableSection (anonymous) at (0,0) size 769x74
+            LayoutTableRow {DIV} at (0,0) size 769x74
+              LayoutTableCell {DIV} at (0,0) size 769x74 [r=0 c=0 rs=1 cs=1]
+                LayoutText {#text} at (0,0) size 761x74
+                  text run at (0,0) width 761: "This text should be white on black, bold, twice the"
+                  text run at (0,37) width 523: "size of normal text, and sans serif."
+      LayoutBlockFlow {H3} at (0,921.47) size 769x22
+        LayoutText {#text} at (0,0) size 259x22
+          text run at (0,0) width 259: "2.2 Styles set directly on TABLE"
+      LayoutTable {DIV} at (0,962.19) size 769x74 [color=#FFFFFF] [bgcolor=#000000]
+        LayoutTableSection (anonymous) at (0,0) size 769x74
+          LayoutTableRow {DIV} at (0,0) size 769x74
+            LayoutTableCell {DIV} at (0,0) size 769x74 [r=0 c=0 rs=1 cs=1]
+              LayoutText {#text} at (0,0) size 761x74
+                text run at (0,0) width 761: "This text should be white on black, bold, twice the"
+                text run at (0,37) width 523: "size of normal text, and sans serif."
+      LayoutBlockFlow {H3} at (0,1054.91) size 769x22
+        LayoutText {#text} at (0,0) size 243x22
+          text run at (0,0) width 243: "2.3 Styles set directly on ROW"
+      LayoutTable {DIV} at (0,1095.63) size 769x74
+        LayoutTableSection (anonymous) at (0,0) size 769x74
+          LayoutTableRow {DIV} at (0,0) size 769x74 [color=#FFFFFF] [bgcolor=#000000]
+            LayoutTableCell {DIV} at (0,0) size 769x74 [r=0 c=0 rs=1 cs=1]
+              LayoutText {#text} at (0,0) size 761x74
+                text run at (0,0) width 761: "This text should be white on black, bold, twice the"
+                text run at (0,37) width 523: "size of normal text, and sans serif."
+      LayoutBlockFlow {H3} at (0,1188.34) size 769x22
+        LayoutText {#text} at (0,0) size 248x22
+          text run at (0,0) width 248: "2.4 Styles set directly on CELL"
+      LayoutTable {DIV} at (0,1229.06) size 769x74
+        LayoutTableSection (anonymous) at (0,0) size 769x74
+          LayoutTableRow {DIV} at (0,0) size 769x74
+            LayoutTableCell {DIV} at (0,0) size 769x74 [color=#FFFFFF] [bgcolor=#000000] [r=0 c=0 rs=1 cs=1]
+              LayoutText {#text} at (0,0) size 761x74
+                text run at (0,0) width 761: "This text should be white on black, bold, twice the"
+                text run at (0,37) width 523: "size of normal text, and sans serif."
+      LayoutBlockFlow {H2} at (0,1322.97) size 769x28
+        LayoutText {#text} at (0,0) size 381x28
+          text run at (0,0) width 381: "3. Implicit CSS Tables (table explicit)"
+      LayoutBlockFlow {H3} at (0,1370.88) size 769x22
+        LayoutText {#text} at (0,0) size 243x22
+          text run at (0,0) width 243: "3.1 Inheritance through a DIV"
+      LayoutBlockFlow {DIV} at (0,1411.59) size 769x74 [color=#FFFFFF] [bgcolor=#000000]
+        LayoutTable {DIV} at (0,0) size 769x74
+          LayoutTableSection (anonymous) at (0,0) size 769x74
+            LayoutTableRow (anonymous) at (0,0) size 769x74
+              LayoutTableCell (anonymous) at (0,0) size 769x74 [r=0 c=0 rs=1 cs=1]
+                LayoutText {#text} at (0,0) size 761x74
+                  text run at (0,0) width 761: "This text should be white on black, bold, twice the"
+                  text run at (0,37) width 523: "size of normal text, and sans serif."
+      LayoutBlockFlow {H3} at (0,1504.31) size 769x22
+        LayoutText {#text} at (0,0) size 259x22
+          text run at (0,0) width 259: "3.2 Styles set directly on TABLE"
+      LayoutTable {DIV} at (0,1545.03) size 769x74 [color=#FFFFFF] [bgcolor=#000000]
+        LayoutTableSection (anonymous) at (0,0) size 769x74
+          LayoutTableRow (anonymous) at (0,0) size 769x74
+            LayoutTableCell (anonymous) at (0,0) size 769x74 [r=0 c=0 rs=1 cs=1]
+              LayoutText {#text} at (0,0) size 761x74
+                text run at (0,0) width 761: "This text should be white on black, bold, twice the"
+                text run at (0,37) width 523: "size of normal text, and sans serif."
+      LayoutBlockFlow {H2} at (0,1638.94) size 769x28
+        LayoutText {#text} at (0,0) size 370x28
+          text run at (0,0) width 370: "4. Implicit CSS Tables (row explicit)"
+      LayoutBlockFlow {H3} at (0,1686.84) size 769x22
+        LayoutText {#text} at (0,0) size 243x22
+          text run at (0,0) width 243: "4.1 Inheritance through a DIV"
+      LayoutBlockFlow {DIV} at (0,1727.56) size 769x74 [color=#FFFFFF] [bgcolor=#000000]
+        LayoutTable (anonymous) at (0,0) size 769x74
+          LayoutTableSection (anonymous) at (0,0) size 769x74
+            LayoutTableRow {DIV} at (0,0) size 769x74
+              LayoutTableCell (anonymous) at (0,0) size 769x74 [r=0 c=0 rs=1 cs=1]
+                LayoutText {#text} at (0,0) size 761x74
+                  text run at (0,0) width 761: "This text should be white on black, bold, twice the"
+                  text run at (0,37) width 523: "size of normal text, and sans serif."
+      LayoutBlockFlow {H3} at (0,1820.28) size 769x22
+        LayoutText {#text} at (0,0) size 243x22
+          text run at (0,0) width 243: "4.2 Styles set directly on ROW"
+      LayoutTable (anonymous) at (0,1861) size 769x74
+        LayoutTableSection (anonymous) at (0,0) size 769x74
+          LayoutTableRow {DIV} at (0,0) size 769x74 [color=#FFFFFF] [bgcolor=#000000]
+            LayoutTableCell (anonymous) at (0,0) size 769x74 [r=0 c=0 rs=1 cs=1]
+              LayoutText {#text} at (0,0) size 761x74
+                text run at (0,0) width 761: "This text should be white on black, bold, twice the"
+                text run at (0,37) width 523: "size of normal text, and sans serif."
+      LayoutBlockFlow {H2} at (0,1954.91) size 769x28
+        LayoutText {#text} at (0,0) size 365x28
+          text run at (0,0) width 365: "5. Implicit CSS Tables (cell explicit)"
+      LayoutBlockFlow {H3} at (0,2002.81) size 769x22
+        LayoutText {#text} at (0,0) size 243x22
+          text run at (0,0) width 243: "5.1 Inheritance through a DIV"
+      LayoutBlockFlow {DIV} at (0,2043.53) size 769x74 [color=#FFFFFF] [bgcolor=#000000]
+        LayoutTable (anonymous) at (0,0) size 769x74
+          LayoutTableSection (anonymous) at (0,0) size 769x74
+            LayoutTableRow (anonymous) at (0,0) size 769x74
+              LayoutTableCell {DIV} at (0,0) size 769x74 [r=0 c=0 rs=1 cs=1]
+                LayoutText {#text} at (0,0) size 761x74
+                  text run at (0,0) width 761: "This text should be white on black, bold, twice the"
+                  text run at (0,37) width 523: "size of normal text, and sans serif."
+      LayoutBlockFlow {H3} at (0,2136.25) size 769x22
+        LayoutText {#text} at (0,0) size 248x22
+          text run at (0,0) width 248: "5.2 Styles set directly on CELL"
+      LayoutTable (anonymous) at (0,2176.97) size 769x74
+        LayoutTableSection (anonymous) at (0,0) size 769x74
+          LayoutTableRow (anonymous) at (0,0) size 769x74
+            LayoutTableCell {DIV} at (0,0) size 769x74 [color=#FFFFFF] [bgcolor=#000000] [r=0 c=0 rs=1 cs=1]
+              LayoutText {#text} at (0,0) size 761x74
+                text run at (0,0) width 761: "This text should be white on black, bold, twice the"
+                text run at (0,37) width 523: "size of normal text, and sans serif."
+      LayoutBlockFlow {H2} at (0,2270.88) size 769x28
+        LayoutText {#text} at (0,0) size 156x28
+          text run at (0,0) width 156: "Submit Results"
+      LayoutBlockFlow {FORM} at (0,2318.78) size 769x38
+        LayoutBlockFlow {P} at (0,0) size 769x38
+          LayoutText {#text} at (0,0) size 267x18
+            text run at (0,0) width 267: "How does your browser fare on this test? "
+          LayoutMenuList {SELECT} at (266.59,1) size 458x18 [bgcolor=#F8F8F8]
+            LayoutBlockFlow (anonymous) at (0,0) size 458x18
+              LayoutText (anonymous) at (8,2) size 427x13
+                text run at (8,2) width 427: "The tests all render identically, and this browser may or may not grok CSS2 tables."
+          LayoutText {#text} at (0,0) size 0x0
+          LayoutInline {LABEL} at (0,0) size 203x18
+            LayoutText {#text} at (0,19) size 72x18
+              text run at (0,19) width 72: "Comment: "
+            LayoutTextControl {INPUT} at (71.55,19) size 131x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)]
+          LayoutText {#text} at (202,19) size 5x18
+            text run at (202,19) width 5: " "
+          LayoutButton {INPUT} at (206.55,20) size 52.47x18 [bgcolor=#C0C0C0]
+            LayoutBlockFlow (anonymous) at (8,2) size 36.47x13
+              LayoutText {#text} at (0,0) size 37x13
+                text run at (0,0) width 37: "Submit"
+          LayoutText {#text} at (0,0) size 0x0
+      LayoutBlockFlow {HR} at (0,2372.78) size 769x2 [border: (1px inset #EEEEEE)]
+      LayoutBlockFlow {P} at (0,2390.78) size 769x18
+        LayoutText {#text} at (0,0) size 64x18
+          text run at (0,0) width 64: "Up to the "
+        LayoutInline {A} at (0,0) size 73x18 [color=#0000EE]
+          LayoutText {#text} at (63,0) size 73x18
+            text run at (63,0) width 73: "Table Tests"
+        LayoutText {#text} at (135,0) size 5x18
+          text run at (135,0) width 5: "."
+      LayoutBlockFlow {P} at (0,2424.78) size 769x18
+        LayoutText {#text} at (0,0) size 64x18
+          text run at (0,0) width 64: "Up to the "
+        LayoutInline {A} at (0,0) size 99x18 [color=#0000EE]
+          LayoutText {#text} at (63,0) size 99x18
+            text run at (63,0) width 99: "Evil Tests Page"
+        LayoutText {#text} at (161,0) size 5x18
+          text run at (161,0) width 5: "."
+      LayoutBlockFlow {P} at (0,2458.78) size 769x18
+        LayoutText {#text} at (0,0) size 63x18
+          text run at (0,0) width 63: "Bugzilla: "
+        LayoutInline {A} at (0,0) size 64x18 [color=#0000EE]
+          LayoutText {#text} at (62,0) size 64x18
+            text run at (62,0) width 64: "Bug 1044"
+      LayoutBlockFlow {P} at (0,2492.78) size 769x18
+        LayoutText {#text} at (0,0) size 177x18
+          text run at (0,0) width 177: "This page is maintained by "
+        LayoutInline {A} at (0,0) size 79x18 [color=#0000EE]
+          LayoutText {#text} at (176,0) size 79x18
+            text run at (176,0) width 79: "Ian Hickson"
+        LayoutText {#text} at (254,0) size 10x18
+          text run at (254,0) width 10: " ("
+        LayoutInline {A} at (0,0) size 125x18 [color=#0000EE]
+          LayoutText {#text} at (263,0) size 125x18
+            text run at (263,0) width 125: "py8ieh@bath.ac.uk"
+        LayoutText {#text} at (387,0) size 10x18
+          text run at (387,0) width 10: ")."
+      LayoutBlockFlow {P} at (0,2526.78) size 769x18
+        LayoutText {#text} at (0,0) size 185x18
+          text run at (0,0) width 185: "Last updated in March 1999."
+layer at (83,2362) size 125x13 backgroundClip at (0,0) size 0x0 clip at (0,0) size 0x0
+  LayoutBlockFlow {DIV} at (3,3) size 125x13
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug26178-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug26178-expected.png
new file mode 100644
index 0000000..2ebdacb
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug26178-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug26178-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug26178-expected.txt
new file mode 100644
index 0000000..ed36ede
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug26178-expected.txt
@@ -0,0 +1,22 @@
+layer at (0,0) size 800x600
+  LayoutView at (0,0) size 800x600
+layer at (0,0) size 800x600
+  LayoutBlockFlow {HTML} at (0,0) size 800x600
+    LayoutBlockFlow {BODY} at (8,8) size 784x576
+      LayoutTable {TABLE} at (0,0) size 66x46
+        LayoutTableSection {THEAD} at (0,0) size 66x24
+          LayoutTableRow {TR} at (0,2) size 66x20
+            LayoutTableCell {TD} at (2,2) size 62x20 [r=0 c=0 rs=1 cs=1]
+              LayoutText {#text} at (1,1) size 60x18
+                text run at (1,1) width 60: "The head"
+        LayoutTableSection {TBODY} at (0,24) size 66x22
+          LayoutTableRow {TR} at (0,0) size 66x20
+            LayoutTableCell {TD} at (2,0) size 62x20 [r=0 c=0 rs=1 cs=1]
+              LayoutText {#text} at (1,1) size 59x18
+                text run at (1,1) width 59: "First row"
+      LayoutBlockFlow {FORM} at (0,46) size 784x18
+        LayoutButton {INPUT} at (0,0) size 45.69x18 [bgcolor=#C0C0C0]
+          LayoutBlockFlow (anonymous) at (8,2) size 29.69x13
+            LayoutText {#text} at (0,0) size 30x13
+              text run at (0,0) width 30: "insert"
+        LayoutText {#text} at (0,0) size 0x0
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug28928-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug28928-expected.png
new file mode 100644
index 0000000..9be97bc9
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug28928-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug29326-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug29326-expected.png
new file mode 100644
index 0000000..a7dde3e
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug29326-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug29326-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug29326-expected.txt
new file mode 100644
index 0000000..d8e9be2a4
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug29326-expected.txt
@@ -0,0 +1,15 @@
+layer at (0,0) size 800x600
+  LayoutView at (0,0) size 800x600
+layer at (0,0) size 800x600
+  LayoutBlockFlow {HTML} at (0,0) size 800x600
+    LayoutBlockFlow {BODY} at (8,8) size 784x584
+      LayoutTable {TABLE} at (192,0) size 400x44 [border: (1px outset #808080)]
+        LayoutTableSection {TBODY} at (1,1) size 398x42
+          LayoutTableRow {TR} at (0,2) size 398x38
+            LayoutTableCell {TD} at (2,2) size 394x38 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
+              LayoutBlockFlow {FORM} at (2,2) size 390x18
+                LayoutMenuList {SELECT} at (0,0) size 54x18 [bgcolor=#F8F8F8]
+                  LayoutBlockFlow (anonymous) at (0,0) size 54x18
+                    LayoutText (anonymous) at (8,2) size 23x13
+                      text run at (8,2) width 23: "Test"
+                LayoutText {#text} at (0,0) size 0x0
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug30559-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug30559-expected.png
new file mode 100644
index 0000000..3ffdc42
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug30559-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug30692-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug30692-expected.png
new file mode 100644
index 0000000..723437da
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug30692-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug30692-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug30692-expected.txt
new file mode 100644
index 0000000..fb6b805
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug30692-expected.txt
@@ -0,0 +1,56 @@
+layer at (0,0) size 800x600
+  LayoutView at (0,0) size 800x600
+layer at (0,0) size 800x600
+  LayoutBlockFlow {HTML} at (0,0) size 800x600
+    LayoutBlockFlow {BODY} at (8,8) size 784x584
+      LayoutBlockFlow (anonymous) at (0,0) size 784x18
+        LayoutText {#text} at (0,0) size 497x18
+          text run at (0,0) width 497: "BUG: Inside a cell, \"height:x%\" is ignored. It looks like 'auto' is used instead."
+        LayoutBR {BR} at (496,14) size 1x0
+      LayoutListItem {LI} at (0,18) size 784x18
+        LayoutListMarker (anonymous) at (-1,0) size 7x18: bullet
+        LayoutText {#text} at (30,0) size 265x18
+          text run at (30,0) width 265: "Absolute units work correctly (eg. 50px)."
+      LayoutListItem {LI} at (0,36) size 784x490
+        LayoutBlockFlow (anonymous) at (0,0) size 784x18
+          LayoutListMarker (anonymous) at (-1,0) size 7x18: bullet
+          LayoutText {#text} at (30,0) size 183x18
+            text run at (30,0) width 183: "\"width:x%\" works correctly."
+        LayoutBlockFlow {HR} at (0,26) size 784x2 [border: (1px inset #EEEEEE)]
+        LayoutTable {TABLE} at (0,36) size 784x100
+          LayoutTableSection {TBODY} at (0,0) size 784x100
+            LayoutTableRow {TR} at (0,2) size 784x96
+              LayoutTableCell {TD} at (2,11) size 780x77 [bgcolor=#FF0000] [r=0 c=0 rs=1 cs=1]
+                LayoutText {#text} at (0,0) size 0x0
+        LayoutBlockFlow {HR} at (0,144) size 784x2 [border: (1px inset #EEEEEE)]
+        LayoutTable {TABLE} at (0,154) size 784x100
+          LayoutTableSection {TBODY} at (0,0) size 784x100
+            LayoutTableRow {TR} at (0,2) size 784x96
+              LayoutTableCell {TD} at (2,9) size 780x82 [bgcolor=#FF0000] [r=0 c=0 rs=1 cs=1]
+                LayoutText {#text} at (0,0) size 0x0
+        LayoutBlockFlow {HR} at (0,262) size 784x2 [border: (1px inset #EEEEEE)]
+        LayoutTable {TABLE} at (0,272) size 784x100
+          LayoutTableSection {TBODY} at (0,0) size 784x100
+            LayoutTableRow {TR} at (0,2) size 784x96
+              LayoutTableCell {TD} at (2,11) size 780x77.19 [bgcolor=#FF0000] [r=0 c=0 rs=1 cs=1]
+                LayoutBlockFlow {P} at (1,1) size 622.39x75.19 [bgcolor=#FFFFE0]
+                  LayoutText {#text} at (0,0) size 232x18
+                    text run at (0,0) width 232: "BUG: the height of the P is not 80%"
+        LayoutBlockFlow {HR} at (0,380) size 784x2 [border: (1px inset #EEEEEE)]
+        LayoutTable {TABLE} at (0,390) size 784x100
+          LayoutTableSection {TBODY} at (0,0) size 784x100
+            LayoutTableRow {TR} at (0,2) size 784x96
+              LayoutTableCell {TD} at (2,9) size 780x82 [bgcolor=#FF0000] [r=0 c=0 rs=1 cs=1]
+                LayoutBlockFlow {P} at (1,1) size 622.39x80 [bgcolor=#FFFFE0]
+                  LayoutText {#text} at (0,0) size 226x18
+                    text run at (0,0) width 226: "OK: the height of the P is 80 pixels"
+layer at (11,92) size 622x75 clip at (12,93) size 620x73
+  LayoutTextControl {TEXTAREA} at (1,1) size 622.39x75.19 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
+    LayoutBlockFlow {DIV} at (3,3) size 616.39x13
+      LayoutText {#text} at (0,0) size 219x13
+        text run at (0,0) width 219: "BUG: the height of the textarea is not 80%"
+layer at (11,208) size 622x80 clip at (12,209) size 620x78
+  LayoutTextControl {TEXTAREA} at (1,1) size 622.39x80 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
+    LayoutBlockFlow {DIV} at (3,3) size 616.39x13
+      LayoutText {#text} at (0,0) size 216x13
+        text run at (0,0) width 216: "OK: the height of the textarea is 80 pixels"
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug33855-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug33855-expected.png
new file mode 100644
index 0000000..3f112728
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug33855-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug33855-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug33855-expected.txt
new file mode 100644
index 0000000..fdc2a5f4
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug33855-expected.txt
@@ -0,0 +1,38 @@
+layer at (0,0) size 800x600
+  LayoutView at (0,0) size 800x600
+layer at (0,0) size 800x600
+  LayoutBlockFlow {HTML} at (0,0) size 800x600
+    LayoutBlockFlow {BODY} at (8,8) size 784x576 [bgcolor=#FFFFFF]
+      LayoutBlockFlow {FORM} at (0,0) size 784x24
+        LayoutTable {TABLE} at (0,0) size 784x24
+          LayoutTableSection {TBODY} at (0,0) size 784x24
+            LayoutTableRow {TR} at (0,2) size 784x20 [bgcolor=#FFFFFF]
+              LayoutTableCell {TD} at (2,2) size 66x20 [r=0 c=0 rs=1 cs=1]
+                LayoutButton {INPUT} at (1.33,1) size 63.33x18 [bgcolor=#C0C0C0]
+                  LayoutBlockFlow (anonymous) at (8,2) size 47.33x13
+                    LayoutText {#text} at (0,0) size 48x13
+                      text run at (0,0) width 48: "Select all"
+              LayoutTableCell {TD} at (70,2) size 52x20 [r=0 c=1 rs=1 cs=1]
+                LayoutButton {INPUT} at (1.23,1) size 49.53x18 [bgcolor=#C0C0C0]
+                  LayoutBlockFlow (anonymous) at (8,2) size 33.53x13
+                    LayoutText {#text} at (0,0) size 34x13
+                      text run at (0,0) width 34: "Delete"
+              LayoutTableCell {TD} at (124,2) size 81x20 [r=0 c=2 rs=1 cs=1]
+                LayoutButton {INPUT} at (1.27,1) size 78.45x18 [bgcolor=#C0C0C0]
+                  LayoutBlockFlow (anonymous) at (8,2) size 62.45x13
+                    LayoutText {#text} at (0,0) size 63x13
+                      text run at (0,0) width 63: "Empty trash"
+              LayoutTableCell {TD} at (207,2) size 399x20 [r=0 c=3 rs=1 cs=1]
+                LayoutText {#text} at (1,1) size 4x18
+                  text run at (1,1) width 4: " "
+              LayoutTableCell {TD} at (608,2) size 63x20 [r=0 c=4 rs=1 cs=1]
+                LayoutButton {INPUT} at (1.14,1) size 60.72x18 [bgcolor=#C0C0C0]
+                  LayoutBlockFlow (anonymous) at (8,2) size 44.72x13
+                    LayoutText {#text} at (0,0) size 45x13
+                      text run at (0,0) width 45: "Move to:"
+              LayoutTableCell {TD} at (673,2) size 109x20 [r=0 c=5 rs=1 cs=1]
+                LayoutMenuList {SELECT} at (1,1) size 107x18 [bgcolor=#F8F8F8]
+                  LayoutBlockFlow (anonymous) at (0,0) size 107x18
+                    LayoutText (anonymous) at (8,2) size 76x13
+                      text run at (8,2) width 76: "Choose folder "
+                LayoutText {#text} at (0,0) size 0x0
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug39209-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug39209-expected.png
new file mode 100644
index 0000000..e41f46d
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug39209-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug4382-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug4382-expected.png
new file mode 100644
index 0000000..6751598
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug4382-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug4382-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug4382-expected.txt
new file mode 100644
index 0000000..3d83b492
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug4382-expected.txt
@@ -0,0 +1,35 @@
+layer at (0,0) size 800x600
+  LayoutView at (0,0) size 800x600
+layer at (0,0) size 800x600
+  LayoutBlockFlow {HTML} at (0,0) size 800x600
+    LayoutBlockFlow {BODY} at (8,8) size 784x576
+      LayoutBlockFlow (anonymous) at (0,0) size 784x18
+        LayoutText {#text} at (0,0) size 270x18
+          text run at (0,0) width 270: "The select should not contain blank items "
+        LayoutBR {BR} at (269,14) size 1x0
+      LayoutBlockFlow {FORM} at (0,18) size 784x19
+        LayoutInline {B} at (0,0) size 47x18
+          LayoutText {#text} at (0,0) size 47x18
+            text run at (0,0) width 47: "Search"
+        LayoutText {#text} at (46,0) size 5x18
+          text run at (46,0) width 5: " "
+        LayoutTextControl {INPUT} at (50.81,0) size 119x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)]
+        LayoutText {#text} at (169,0) size 5x18
+          text run at (169,0) width 5: " "
+        LayoutMenuList {SELECT} at (173.81,1) size 75x18 [bgcolor=#F8F8F8]
+          LayoutBlockFlow (anonymous) at (0,0) size 75x18
+            LayoutText (anonymous) at (8,2) size 32x13
+              text run at (8,2) width 32: "Excite"
+        LayoutText {#text} at (0,0) size 0x0
+      LayoutBlockFlow (anonymous) at (0,53) size 784x36
+        LayoutBR {BR} at (0,0) size 0x18
+        LayoutText {#text} at (0,18) size 270x18
+          text run at (0,18) width 270: "The select should not contain blank items "
+        LayoutBR {BR} at (269,32) size 1x0
+      LayoutBlockFlow {FORM} at (0,89) size 784x18
+        LayoutMenuList {SELECT} at (0,0) size 218x18 [bgcolor=#F8F8F8]
+          LayoutBlockFlow (anonymous) at (0,0) size 218x18
+            LayoutText (anonymous) at (8,2) size 55x13
+              text run at (8,2) width 55: "Quick Link"
+layer at (62,29) size 113x13
+  LayoutBlockFlow {DIV} at (3,3) size 113x13
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug4429-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug4429-expected.png
new file mode 100644
index 0000000..960233a9
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug4429-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug44505-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug44505-expected.png
new file mode 100644
index 0000000..e23513f
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug44505-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug44505-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug44505-expected.txt
new file mode 100644
index 0000000..988e2fe
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug44505-expected.txt
@@ -0,0 +1,201 @@
+layer at (0,0) size 800x600 scrollHeight 604
+  LayoutView at (0,0) size 800x600
+layer at (0,0) size 800x604 backgroundClip at (0,0) size 800x600 clip at (0,0) size 800x600
+  LayoutBlockFlow {HTML} at (0,0) size 800x604
+    LayoutBlockFlow {BODY} at (8,8) size 784x588 [bgcolor=#FFFFFF]
+      LayoutTable {TABLE} at (0,0) size 308x52 [border: (1px outset #808080)]
+        LayoutTableCol {COLGROUP} at (0,0) size 0x0
+          LayoutTableCol {COL} at (0,0) size 0x0
+          LayoutTableCol {COL} at (0,0) size 0x0
+        LayoutTableSection {TBODY} at (1,1) size 306x50
+          LayoutTableRow {TR} at (0,2) size 306x22
+          LayoutTableRow {TR} at (0,26) size 306x22
+      LayoutTable {TABLE} at (0,52) size 308x52 [border: (1px outset #808080)]
+        LayoutTableCol {COLGROUP} at (0,0) size 0x0
+          LayoutTableCol {COL} at (0,0) size 0x0
+          LayoutTableCol {COL} at (0,0) size 0x0
+        LayoutTableSection {TBODY} at (1,1) size 306x50
+          LayoutTableRow {TR} at (0,2) size 306x22
+          LayoutTableRow {TR} at (0,26) size 306x22
+      LayoutTable {TABLE} at (0,104) size 300x52 [border: (1px outset #808080)]
+        LayoutTableSection {TBODY} at (1,1) size 298x50
+          LayoutTableRow {TR} at (0,2) size 298x22
+          LayoutTableRow {TR} at (0,26) size 298x22
+      LayoutTable {TABLE} at (0,156) size 300x52 [border: (1px outset #808080)]
+        LayoutTableSection {TBODY} at (1,1) size 298x50
+          LayoutTableRow {TR} at (0,2) size 298x22
+          LayoutTableRow {TR} at (0,26) size 298x22
+      LayoutTable {TABLE} at (0,208) size 300x53 [border: (1px outset #808080)]
+        LayoutTableSection {TBODY} at (1,1) size 298x51
+          LayoutTableRow {TR} at (0,2) size 298x23
+          LayoutTableRow {TR} at (0,27) size 298x22
+      LayoutTable {TABLE} at (0,261) size 300x53 [border: (1px outset #808080)]
+        LayoutTableSection {TBODY} at (1,1) size 298x51
+          LayoutTableRow {TR} at (0,2) size 298x23
+          LayoutTableRow {TR} at (0,27) size 298x22
+      LayoutTable {TABLE} at (0,314) size 300x94 [border: (1px outset #808080)]
+        LayoutTableSection {TBODY} at (1,1) size 298x92
+          LayoutTableRow {TR} at (0,2) size 298x46
+          LayoutTableRow {TR} at (0,50) size 298x40
+      LayoutTable {TABLE} at (0,498) size 300x90 [border: (1px outset #808080)]
+        LayoutTableSection {TBODY} at (1,1) size 298x88
+          LayoutTableRow {TR} at (0,2) size 298x60
+          LayoutTableRow {TR} at (0,64) size 298x22
+layer at (11,11) size 200x22 clip at (12,12) size 198x20
+  LayoutTableCell {TD} at (2,2) size 200x22 [bgcolor=#0000FF] [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
+    LayoutText {#text} at (2,2) size 4x18
+      text run at (2,2) width 4: " "
+layer at (213,11) size 100x22 clip at (214,12) size 98x20
+  LayoutTableCell {TD} at (204,2) size 100x22 [bgcolor=#0000FF] [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1]
+    LayoutText {#text} at (2,2) size 4x18
+      text run at (2,2) width 4: " "
+layer at (11,35) size 200x22 clip at (12,36) size 198x20
+  LayoutTableCell {TD} at (2,26) size 200x22 [bgcolor=#0000FF] [border: (1px inset #808080)] [r=1 c=0 rs=1 cs=1]
+    LayoutText {#text} at (2,2) size 4x18
+      text run at (2,2) width 4: " "
+layer at (213,35) size 100x22 clip at (214,36) size 98x20
+  LayoutTableCell {TD} at (204,26) size 100x22 [bgcolor=#0000FF] [border: (1px inset #808080)] [r=1 c=1 rs=1 cs=1]
+    LayoutText {#text} at (2,2) size 4x18
+      text run at (2,2) width 4: " "
+layer at (11,63) size 200x22 clip at (12,64) size 198x20
+  LayoutTableCell {TD} at (2,2) size 200x22 [bgcolor=#0000FF] [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
+    LayoutText {#text} at (2,2) size 4x18
+      text run at (2,2) width 4: " "
+layer at (213,63) size 100x22 clip at (214,64) size 98x20
+  LayoutTableCell {TD} at (204,2) size 100x22 [bgcolor=#0000FF] [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1]
+    LayoutText {#text} at (2,2) size 4x18
+      text run at (2,2) width 4: " "
+layer at (11,87) size 200x22 clip at (12,88) size 198x20
+  LayoutTableCell {TD} at (2,26) size 200x22 [bgcolor=#0000FF] [border: (1px inset #808080)] [r=1 c=0 rs=1 cs=1]
+    LayoutText {#text} at (2,2) size 4x18
+      text run at (2,2) width 4: " "
+layer at (213,87) size 100x22 clip at (214,88) size 98x20
+  LayoutTableCell {TD} at (204,26) size 100x22 [bgcolor=#0000FF] [border: (1px inset #808080)] [r=1 c=1 rs=1 cs=1]
+    LayoutText {#text} at (2,2) size 4x18
+      text run at (2,2) width 4: " "
+layer at (11,115) size 233x22 clip at (12,116) size 231x20
+  LayoutTableCell {TD} at (2,2) size 233x22 [bgcolor=#0000FF] [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
+    LayoutText {#text} at (2,2) size 4x18
+      text run at (2,2) width 4: " "
+layer at (246,115) size 59x22 clip at (247,116) size 57x20
+  LayoutTableCell {TD} at (237,2) size 59x22 [bgcolor=#0000FF] [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1]
+    LayoutText {#text} at (2,2) size 4x18
+      text run at (2,2) width 4: " "
+layer at (11,139) size 233x22 clip at (12,140) size 231x20
+  LayoutTableCell {TD} at (2,26) size 233x22 [bgcolor=#0000FF] [border: (1px inset #808080)] [r=1 c=0 rs=1 cs=1]
+    LayoutText {#text} at (2,2) size 4x18
+      text run at (2,2) width 4: " "
+layer at (246,139) size 59x22 clip at (247,140) size 57x20
+  LayoutTableCell {TD} at (237,26) size 59x22 [bgcolor=#0000FF] [border: (1px inset #808080)] [r=1 c=1 rs=1 cs=1]
+    LayoutText {#text} at (2,2) size 4x18
+      text run at (2,2) width 4: " "
+layer at (11,167) size 154x22 clip at (12,168) size 152x20
+  LayoutTableCell {TD} at (2,2) size 154x22 [bgcolor=#0000FF] [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
+    LayoutText {#text} at (2,2) size 4x18
+      text run at (2,2) width 4: " "
+layer at (167,167) size 138x22 clip at (168,168) size 136x20
+  LayoutTableCell {TD} at (158,2) size 138x22 [bgcolor=#0000FF] [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1]
+    LayoutText {#text} at (2,2) size 4x18
+      text run at (2,2) width 4: " "
+layer at (11,191) size 154x22 clip at (12,192) size 152x20
+  LayoutTableCell {TD} at (2,26) size 154x22 [bgcolor=#0000FF] [border: (1px inset #808080)] [r=1 c=0 rs=1 cs=1]
+    LayoutText {#text} at (2,2) size 4x18
+      text run at (2,2) width 4: " "
+layer at (167,191) size 138x22 clip at (168,192) size 136x20
+  LayoutTableCell {TD} at (158,26) size 138x22 [bgcolor=#0000FF] [border: (1px inset #808080)] [r=1 c=1 rs=1 cs=1]
+    LayoutText {#text} at (2,2) size 4x18
+      text run at (2,2) width 4: " "
+layer at (11,219) size 154x23 clip at (12,220) size 152x21 scrollWidth 201
+  LayoutTableCell {TD} at (2,2) size 154x23 [bgcolor=#0000FF] [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
+    LayoutBlockFlow {FORM} at (2,2) size 150x19
+      LayoutButton {BUTTON} at (0,1) size 200x18 [bgcolor=#C0C0C0] [border: none (2px outset #C0C0C0) none (2px outset #C0C0C0)]
+        LayoutBlockFlow (anonymous) at (8,2) size 184x13
+          LayoutText {#text} at (75,0) size 34x13
+            text run at (75,0) width 34: "button"
+layer at (167,219) size 138x23 clip at (168,220) size 136x21
+  LayoutTableCell {TD} at (158,2) size 138x22 [bgcolor=#0000FF] [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1]
+    LayoutText {#text} at (2,2) size 4x18
+      text run at (2,2) width 4: " "
+layer at (11,244) size 154x22 clip at (12,245) size 152x20
+  LayoutTableCell {TD} at (2,27) size 154x22 [bgcolor=#0000FF] [border: (1px inset #808080)] [r=1 c=0 rs=1 cs=1]
+    LayoutText {#text} at (2,2) size 4x18
+      text run at (2,2) width 4: " "
+layer at (167,244) size 138x22 clip at (168,245) size 136x20
+  LayoutTableCell {TD} at (158,27) size 138x22 [bgcolor=#0000FF] [border: (1px inset #808080)] [r=1 c=1 rs=1 cs=1]
+    LayoutText {#text} at (2,2) size 4x18
+      text run at (2,2) width 4: " "
+layer at (11,272) size 280x23 clip at (12,273) size 278x21
+  LayoutTableCell {TD} at (2,2) size 280x23 [bgcolor=#0000FF] [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
+    LayoutBlockFlow {FORM} at (2,2) size 276x19
+      LayoutButton {BUTTON} at (0,1) size 200x18 [bgcolor=#C0C0C0] [border: none (2px outset #C0C0C0) none (2px outset #C0C0C0)]
+        LayoutBlockFlow (anonymous) at (8,2) size 184x13
+          LayoutText {#text} at (75,0) size 34x13
+            text run at (75,0) width 34: "button"
+layer at (293,272) size 12x23 clip at (294,273) size 10x21
+  LayoutTableCell {TD} at (284,2) size 12x22 [bgcolor=#0000FF] [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1]
+    LayoutText {#text} at (2,2) size 4x18
+      text run at (2,2) width 4: " "
+layer at (11,297) size 280x22 clip at (12,298) size 278x20
+  LayoutTableCell {TD} at (2,27) size 280x22 [bgcolor=#0000FF] [border: (1px inset #808080)] [r=1 c=0 rs=1 cs=1]
+    LayoutText {#text} at (2,2) size 4x18
+      text run at (2,2) width 4: " "
+layer at (293,297) size 12x22 clip at (294,298) size 10x20
+  LayoutTableCell {TD} at (284,27) size 12x22 [bgcolor=#0000FF] [border: (1px inset #808080)] [r=1 c=1 rs=1 cs=1]
+    LayoutText {#text} at (2,2) size 4x18
+      text run at (2,2) width 4: " "
+layer at (11,325) size 172x46 clip at (12,326) size 170x44 scrollWidth 216
+  LayoutTableCell {TD} at (2,2) size 172x46 [bgcolor=#0000FF] [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
+    LayoutBlockFlow {DIV} at (11,11) size 206x24 [border: (3px solid #000000)]
+      LayoutText {#text} at (3,3) size 21x18
+        text run at (3,3) width 21: "div"
+layer at (185,325) size 120x46 clip at (186,326) size 118x44
+  LayoutTableCell {TD} at (176,5) size 120x40 [bgcolor=#0000FF] [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1]
+    LayoutText {#text} at (11,11) size 4x18
+      text run at (11,11) width 4: " "
+layer at (11,373) size 172x40 clip at (12,374) size 170x38
+  LayoutTableCell {TD} at (2,50) size 172x40 [bgcolor=#0000FF] [border: (1px inset #808080)] [r=1 c=0 rs=1 cs=1]
+    LayoutText {#text} at (11,11) size 4x18
+      text run at (11,11) width 4: " "
+layer at (185,373) size 120x40 clip at (186,374) size 118x38
+  LayoutTableCell {TD} at (176,50) size 120x40 [bgcolor=#0000FF] [border: (1px inset #808080)] [r=1 c=1 rs=1 cs=1]
+    LayoutText {#text} at (11,11) size 4x18
+      text run at (11,11) width 4: " "
+layer at (8,416) size 300x90 clip at (9,417) size 298x88
+  LayoutTable {TABLE} at (0,408) size 300x90 [border: (1px outset #808080)]
+    LayoutTableSection {TBODY} at (1,1) size 298x88
+      LayoutTableRow {TR} at (0,2) size 298x60
+      LayoutTableRow {TR} at (0,64) size 298x22
+layer at (11,419) size 154x60 clip at (12,420) size 152x58 scrollWidth 207
+  LayoutTableCell {TD} at (2,2) size 154x60 [bgcolor=#0000FF] [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
+    LayoutBlockFlow {P} at (2,18) size 206x24 [border: (3px solid #000000)]
+      LayoutText {#text} at (3,3) size 28x18
+        text run at (3,3) width 28: "para"
+layer at (167,419) size 138x60 clip at (168,420) size 136x58
+  LayoutTableCell {TD} at (158,21) size 138x22 [bgcolor=#0000FF] [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1]
+    LayoutText {#text} at (2,2) size 4x18
+      text run at (2,2) width 4: " "
+layer at (11,481) size 154x22 clip at (12,482) size 152x20
+  LayoutTableCell {TD} at (2,64) size 154x22 [bgcolor=#0000FF] [border: (1px inset #808080)] [r=1 c=0 rs=1 cs=1]
+    LayoutText {#text} at (2,2) size 4x18
+      text run at (2,2) width 4: " "
+layer at (167,481) size 138x22 clip at (168,482) size 136x20
+  LayoutTableCell {TD} at (158,64) size 138x22 [bgcolor=#0000FF] [border: (1px inset #808080)] [r=1 c=1 rs=1 cs=1]
+    LayoutText {#text} at (2,2) size 4x18
+      text run at (2,2) width 4: " "
+layer at (11,509) size 254x60 clip at (12,510) size 252x58
+  LayoutTableCell {TD} at (2,2) size 254x60 [bgcolor=#0000FF] [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
+    LayoutBlockFlow {P} at (2,18) size 206x24 [border: (3px solid #000000)]
+      LayoutText {#text} at (3,3) size 28x18
+        text run at (3,3) width 28: "para"
+layer at (267,509) size 38x60 clip at (268,510) size 36x58
+  LayoutTableCell {TD} at (258,21) size 38x22 [bgcolor=#0000FF] [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1]
+    LayoutText {#text} at (2,2) size 4x18
+      text run at (2,2) width 4: " "
+layer at (11,571) size 254x22 clip at (12,572) size 252x20
+  LayoutTableCell {TD} at (2,64) size 254x22 [bgcolor=#0000FF] [border: (1px inset #808080)] [r=1 c=0 rs=1 cs=1]
+    LayoutText {#text} at (2,2) size 4x18
+      text run at (2,2) width 4: " "
+layer at (267,571) size 38x22 clip at (268,572) size 36x20
+  LayoutTableCell {TD} at (258,64) size 38x22 [bgcolor=#0000FF] [border: (1px inset #808080)] [r=1 c=1 rs=1 cs=1]
+    LayoutText {#text} at (2,2) size 4x18
+      text run at (2,2) width 4: " "
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug46368-1-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug46368-1-expected.png
new file mode 100644
index 0000000..ce84b733
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug46368-1-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug46368-1-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug46368-1-expected.txt
new file mode 100644
index 0000000..41ab6b65a5
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug46368-1-expected.txt
@@ -0,0 +1,53 @@
+layer at (0,0) size 800x600
+  LayoutView at (0,0) size 800x600
+layer at (0,0) size 800x600
+  LayoutBlockFlow {HTML} at (0,0) size 800x600
+    LayoutBlockFlow {BODY} at (8,8) size 784x584
+      LayoutTable {TABLE} at (0,0) size 784x111 [bgcolor=#00FFFF] [border: (1px outset #808080)]
+        LayoutTableSection {TBODY} at (1,1) size 782x109
+          LayoutTableRow {TR} at (0,2) size 782x105
+            LayoutTableCell {TD} at (2,2) size 453x105 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
+              LayoutTable {TABLE} at (2,2) size 449x101 [bgcolor=#FF00FF] [border: (1px outset #808080)]
+                LayoutTableSection {TBODY} at (1,1) size 447x99
+                  LayoutTableRow {TR} at (0,2) size 447x95
+                    LayoutTableCell {TD} at (2,2) size 443x95 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
+                      LayoutText {#text} at (2,2) size 203x18
+                        text run at (2,2) width 203: "Mozilla To Be Dually-Licensed"
+                      LayoutBR {BR} at (204,16) size 1x0
+                      LayoutText {#text} at (2,35) size 208x18
+                        text run at (2,35) width 208: "Plans are underway to make the "
+                      LayoutInline {FONT} at (0,0) size 101x37 [color=#0000FF]
+                        LayoutText {#text} at (209,20) size 101x37
+                          text run at (209,20) width 101: "Mozilla"
+                      LayoutText {#text} at (309,35) size 404x58
+                        text run at (309,35) width 97: " code available"
+                        text run at (2,57) width 52: "under a "
+                        text run at (53,57) width 157: "dual MPL/GPL license. "
+                        text run at (209,57) width 181: "See the for more info. We're"
+                        text run at (2,75) width 326: "gathering contributor input now, in the newsgroup."
+                      LayoutBR {BR} at (327,89) size 1x0
+            LayoutTableCell {TD} at (457,25) size 323x58 [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1]
+              LayoutText {#text} at (2,2) size 319x54
+                text run at (2,2) width 273: "This status update contains information on"
+                text run at (2,20) width 319: "MailNews, XML/DOM, XPToolkit, Architecture,"
+                text run at (2,38) width 205: "Bidi, Necko/Imglib, and more..."
+      LayoutBlockFlow (anonymous) at (0,111) size 784x37
+        LayoutBR {BR} at (0,0) size 0x18
+        LayoutButton {INPUT} at (0,19) size 51.41x18 [bgcolor=#C0C0C0]
+          LayoutBlockFlow (anonymous) at (8,2) size 35.41x13
+            LayoutText {#text} at (0,0) size 36x13
+              text run at (0,0) width 36: "Reload"
+        LayoutText {#text} at (51,18) size 9x18
+          text run at (51,18) width 9: "  "
+        LayoutButton {INPUT} at (59.41,19) size 82.20x18 [bgcolor=#C0C0C0]
+          LayoutBlockFlow (anonymous) at (8,2) size 66.20x13
+            LayoutText {#text} at (0,0) size 67x13
+              text run at (0,0) width 67: "Change Font"
+        LayoutText {#text} at (141,18) size 9x18
+          text run at (141,18) width 9: "  "
+        LayoutTextControl {INPUT} at (149.61,18) size 131x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)]
+        LayoutText {#text} at (0,0) size 0x0
+layer at (161,140) size 125x13
+  LayoutBlockFlow {DIV} at (3,3) size 125x13
+    LayoutText {#text} at (0,0) size 7x13
+      text run at (0,0) width 7: "6"
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug46368-2-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug46368-2-expected.png
new file mode 100644
index 0000000..cf44ad9
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug46368-2-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug46368-2-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug46368-2-expected.txt
new file mode 100644
index 0000000..6457d29
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug46368-2-expected.txt
@@ -0,0 +1,41 @@
+layer at (0,0) size 800x600
+  LayoutView at (0,0) size 800x600
+layer at (0,0) size 800x600
+  LayoutBlockFlow {HTML} at (0,0) size 800x600
+    LayoutBlockFlow {BODY} at (8,8) size 784x584
+      LayoutTable {TABLE} at (0,0) size 784x65 [bgcolor=#00FFFF] [border: (1px outset #808080)]
+        LayoutTableSection {TBODY} at (1,1) size 782x63
+          LayoutTableRow {TR} at (0,2) size 782x59
+            LayoutTableCell {TD} at (2,2) size 304x59 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
+              LayoutInline {FONT} at (0,0) size 100x37 [color=#0000FF]
+                LayoutText {#text} at (2,2) size 100x37
+                  text run at (2,2) width 100: "Mozilla"
+              LayoutText {#text} at (101,17) size 279x40
+                text run at (101,17) width 152: " code available under a "
+                text run at (253,17) width 28: "dual"
+                text run at (2,39) width 124: "MPL/GPL license. "
+                text run at (125,39) width 141: "See the for more info."
+              LayoutBR {BR} at (265,53) size 1x0
+            LayoutTableCell {TD} at (308,20) size 472x22 [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1]
+              LayoutText {#text} at (2,2) size 245x18
+                text run at (2,2) width 245: "foo bar foo bar foo bar foo bar foo bar"
+      LayoutBlockFlow (anonymous) at (0,65) size 784x37
+        LayoutBR {BR} at (0,0) size 0x18
+        LayoutButton {INPUT} at (0,19) size 51.41x18 [bgcolor=#C0C0C0]
+          LayoutBlockFlow (anonymous) at (8,2) size 35.41x13
+            LayoutText {#text} at (0,0) size 36x13
+              text run at (0,0) width 36: "Reload"
+        LayoutText {#text} at (51,18) size 9x18
+          text run at (51,18) width 9: "  "
+        LayoutButton {INPUT} at (59.41,19) size 82.20x18 [bgcolor=#C0C0C0]
+          LayoutBlockFlow (anonymous) at (8,2) size 66.20x13
+            LayoutText {#text} at (0,0) size 67x13
+              text run at (0,0) width 67: "Change Font"
+        LayoutText {#text} at (141,18) size 9x18
+          text run at (141,18) width 9: "  "
+        LayoutTextControl {INPUT} at (149.61,18) size 131x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)]
+        LayoutText {#text} at (0,0) size 0x0
+layer at (161,94) size 125x13
+  LayoutBlockFlow {DIV} at (3,3) size 125x13
+    LayoutText {#text} at (0,0) size 7x13
+      text run at (0,0) width 7: "6"
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug46480-1-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug46480-1-expected.png
new file mode 100644
index 0000000..611822a
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug46480-1-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug46480-2-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug46480-2-expected.png
new file mode 100644
index 0000000..27884584
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug46480-2-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug51037-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug51037-expected.png
new file mode 100644
index 0000000..c7e38c02
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug51037-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug51037-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug51037-expected.txt
new file mode 100644
index 0000000..50a06f5a
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug51037-expected.txt
@@ -0,0 +1,40 @@
+layer at (0,0) size 800x600
+  LayoutView at (0,0) size 800x600
+layer at (0,0) size 800x600
+  LayoutBlockFlow {HTML} at (0,0) size 800x600
+    LayoutBlockFlow {BODY} at (8,8) size 784x576
+      LayoutBlockFlow (anonymous) at (0,0) size 784x18
+        LayoutText {#text} at (0,0) size 245x18
+          text run at (0,0) width 245: "The tables left position should be 250."
+      LayoutBlockFlow {P} at (0,34) size 784x19
+        LayoutText {#text} at (0,0) size 36x18
+          text run at (0,0) width 36: "Left: "
+        LayoutTextControl {INPUT} at (35.09,0) size 131x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)]
+      LayoutBlockFlow {P} at (0,69) size 784x19
+        LayoutText {#text} at (0,0) size 34x18
+          text run at (0,0) width 34: "Top: "
+        LayoutTextControl {INPUT} at (33.09,0) size 131x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)]
+      LayoutBlockFlow {P} at (0,104) size 784x18
+        LayoutButton {INPUT} at (0,0) size 43.94x18 [bgcolor=#C0C0C0]
+          LayoutBlockFlow (anonymous) at (8,2) size 27.94x13
+            LayoutText {#text} at (0,0) size 28x13
+              text run at (0,0) width 28: "Move"
+layer at (46,45) size 125x13
+  LayoutBlockFlow {DIV} at (3,3) size 125x13
+    LayoutText {#text} at (0,0) size 31x13
+      text run at (0,0) width 31: "120px"
+layer at (44,80) size 125x13
+  LayoutBlockFlow {DIV} at (3,3) size 125x13
+    LayoutText {#text} at (0,0) size 31x13
+      text run at (0,0) width 31: "120px"
+layer at (250,120) size 30x48
+  LayoutTable (positioned) {TABLE} at (250,120) size 30x48 [border: (1px outset #808080)]
+    LayoutTableSection {TBODY} at (1,1) size 28x46
+      LayoutTableRow {TR} at (0,2) size 28x20
+        LayoutTableCell {TD} at (2,2) size 24x20 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
+          LayoutText {#text} at (1,1) size 22x18
+            text run at (1,1) width 22: "foo"
+      LayoutTableRow {TR} at (0,24) size 28x20
+        LayoutTableCell {TD} at (2,24) size 24x20 [border: (1px inset #808080)] [r=1 c=0 rs=1 cs=1]
+          LayoutText {#text} at (1,1) size 21x18
+            text run at (1,1) width 21: "bar"
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug51727-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug51727-expected.png
new file mode 100644
index 0000000..8924635
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug51727-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug51727-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug51727-expected.txt
new file mode 100644
index 0000000..a641299
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug51727-expected.txt
@@ -0,0 +1,22 @@
+layer at (0,0) size 800x600
+  LayoutView at (0,0) size 800x600
+layer at (0,0) size 800x80
+  LayoutBlockFlow {HTML} at (0,0) size 800x80
+    LayoutBlockFlow {BODY} at (8,8) size 784x64
+      LayoutBlockFlow {FORM} at (0,0) size 784x38
+        LayoutButton {INPUT} at (0,1) size 150.98x18 [bgcolor=#C0C0C0]
+          LayoutBlockFlow (anonymous) at (8,2) size 134.98x13
+            LayoutText {#text} at (0,0) size 135x13
+              text run at (0,0) width 135: "(1) Fill cell with long string"
+        LayoutBR {BR} at (150,0) size 1x18
+        LayoutButton {INPUT} at (0,20) size 157.39x18 [bgcolor=#C0C0C0]
+          LayoutBlockFlow (anonymous) at (8,2) size 141.39x13
+            LayoutText {#text} at (0,0) size 142x13
+              text run at (0,0) width 142: "(2) Fill cell with short string"
+        LayoutBR {BR} at (157,19) size 1x18
+      LayoutTable {TABLE} at (0,38) size 83x26
+        LayoutTableSection {TBODY} at (0,0) size 83x26
+          LayoutTableRow {TR} at (0,2) size 83x22
+            LayoutTableCell {TD} at (2,2) size 79x22 [border: (1px solid #000000)] [r=0 c=0 rs=1 cs=1]
+              LayoutText {#text} at (2,2) size 15x18
+                text run at (2,2) width 15: "aa"
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug52505-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug52505-expected.png
new file mode 100644
index 0000000..7e5b6606
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug52505-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug52505-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug52505-expected.txt
new file mode 100644
index 0000000..c1d148d
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug52505-expected.txt
@@ -0,0 +1,30 @@
+layer at (0,0) size 800x600
+  LayoutView at (0,0) size 800x600
+layer at (0,0) size 800x106
+  LayoutBlockFlow {HTML} at (0,0) size 800x106
+    LayoutBlockFlow {BODY} at (8,8) size 784x90
+      LayoutBlockFlow {FORM} at (0,0) size 784x36
+        LayoutButton {INPUT} at (0,0) size 250.20x18 [bgcolor=#C0C0C0]
+          LayoutBlockFlow (anonymous) at (8,2) size 234.20x13
+            LayoutText {#text} at (0,0) size 235x13
+              text run at (0,0) width 235: "[Step 1] Set cell width to 60px (nothing seen)"
+        LayoutButton {INPUT} at (0,18) size 254.75x18 [bgcolor=#C0C0C0]
+          LayoutBlockFlow (anonymous) at (8,2) size 238.75x13
+            LayoutText {#text} at (0,0) size 239x13
+              text run at (0,0) width 239: "[Step 2] Set cell width to 20px (garbage seen)"
+      LayoutTable {TABLE} at (0,36) size 34x54
+        LayoutTableSection {TBODY} at (0,0) size 34x54
+          LayoutTableRow {TR} at (0,2) size 34x24
+            LayoutTableCell {TD} at (2,2) size 14x24 [border: (2px solid #000000)] [r=0 c=0 rs=1 cs=1]
+              LayoutText {#text} at (3,3) size 8x18
+                text run at (3,3) width 8: "1"
+            LayoutTableCell {TD} at (18,2) size 14x24 [border: (2px solid #000000)] [r=0 c=1 rs=1 cs=1]
+              LayoutText {#text} at (3,3) size 8x18
+                text run at (3,3) width 8: "2"
+          LayoutTableRow {TR} at (0,28) size 34x24
+            LayoutTableCell {TD} at (2,28) size 14x24 [border: (2px solid #000000)] [r=1 c=0 rs=1 cs=1]
+              LayoutText {#text} at (3,3) size 8x18
+                text run at (3,3) width 8: "2"
+            LayoutTableCell {TD} at (18,28) size 14x24 [border: (2px solid #000000)] [r=1 c=1 rs=1 cs=1]
+              LayoutText {#text} at (3,3) size 8x18
+                text run at (3,3) width 8: "2"
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug52506-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug52506-expected.png
new file mode 100644
index 0000000..43c0b03
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug52506-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug52506-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug52506-expected.txt
new file mode 100644
index 0000000..08cdda66
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug52506-expected.txt
@@ -0,0 +1,30 @@
+layer at (0,0) size 800x600
+  LayoutView at (0,0) size 800x600
+layer at (0,0) size 800x114
+  LayoutBlockFlow {HTML} at (0,0) size 800x114
+    LayoutBlockFlow {BODY} at (8,8) size 784x98
+      LayoutBlockFlow {FORM} at (0,0) size 784x36
+        LayoutButton {INPUT} at (0,0) size 176.41x18 [bgcolor=#C0C0C0]
+          LayoutBlockFlow (anonymous) at (8,2) size 160.41x13
+            LayoutText {#text} at (0,0) size 161x13
+              text run at (0,0) width 161: "[Step 1] Set cell height to 60px"
+        LayoutButton {INPUT} at (0,18) size 177.55x18 [bgcolor=#C0C0C0]
+          LayoutBlockFlow (anonymous) at (8,2) size 161.55x13
+            LayoutText {#text} at (0,0) size 162x13
+              text run at (0,0) width 162: "[Step 2] Set cell height to 20px"
+      LayoutTable {TABLE} at (0,36) size 42x62
+        LayoutTableSection {TBODY} at (0,0) size 42x62
+          LayoutTableRow {TR} at (0,2) size 42x28
+            LayoutTableCell {TD} at (2,2) size 18x28 [border: (4px solid #000000)] [r=0 c=0 rs=1 cs=1]
+              LayoutText {#text} at (5,5) size 8x18
+                text run at (5,5) width 8: "1"
+            LayoutTableCell {TD} at (22,2) size 18x28 [border: (4px solid #000000)] [r=0 c=1 rs=1 cs=1]
+              LayoutText {#text} at (5,5) size 8x18
+                text run at (5,5) width 8: "2"
+          LayoutTableRow {TR} at (0,32) size 42x28
+            LayoutTableCell {TD} at (2,32) size 18x28 [border: (4px solid #000000)] [r=1 c=0 rs=1 cs=1]
+              LayoutText {#text} at (5,5) size 8x18
+                text run at (5,5) width 8: "2"
+            LayoutTableCell {TD} at (22,32) size 18x28 [border: (4px solid #000000)] [r=1 c=1 rs=1 cs=1]
+              LayoutText {#text} at (5,5) size 8x18
+                text run at (5,5) width 8: "2"
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug59354-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug59354-expected.png
new file mode 100644
index 0000000..a5e8a71
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug59354-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug59354-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug59354-expected.txt
new file mode 100644
index 0000000..2cf3d99
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug59354-expected.txt
@@ -0,0 +1,60 @@
+layer at (0,0) size 800x600
+  LayoutView at (0,0) size 800x600
+layer at (0,0) size 800x600
+  LayoutBlockFlow {HTML} at (0,0) size 800x600
+    LayoutBlockFlow {BODY} at (8,8) size 784x584
+      LayoutTable {TABLE} at (0,0) size 470x142 [border: (1px outset #808080)]
+        LayoutTableSection {TBODY} at (1,1) size 468x140
+          LayoutTableRow {TR} at (0,0) size 468x140
+            LayoutTableCell {TD} at (0,0) size 468x140 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
+              LayoutTable {TABLE} at (1,1) size 466x138 [border: (1px outset #808080)]
+                LayoutTableSection {TBODY} at (1,1) size 464x136
+                  LayoutTableRow {TR} at (0,1) size 464x28
+                    LayoutTableCell {TD} at (1,1) size 140x28 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
+                      LayoutText {#text} at (5,5) size 130x18
+                        text run at (5,5) width 130: "General Preferences"
+                    LayoutTableCell {TD} at (142,1) size 147x28 [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1]
+                      LayoutInline {A} at (0,0) size 137x18 [color=#0000EE]
+                        LayoutText {#text} at (5,5) size 137x18
+                          text run at (5,5) width 137: "Groups / Permissions"
+                    LayoutTableCell {TD} at (290,1) size 72x28 [border: (1px inset #808080)] [r=0 c=2 rs=1 cs=1]
+                      LayoutInline {A} at (0,0) size 62x18 [color=#0000EE]
+                        LayoutText {#text} at (5,5) size 62x18
+                          text run at (5,5) width 62: "Password"
+                    LayoutTableCell {TD} at (363,1) size 49x28 [border: (1px inset #808080)] [r=0 c=3 rs=1 cs=1]
+                      LayoutInline {A} at (0,0) size 39x18 [color=#0000EE]
+                        LayoutText {#text} at (5,5) size 39x18
+                          text run at (5,5) width 39: "Email"
+                    LayoutTableCell {TD} at (413,1) size 50x28 [border: (1px inset #808080)] [r=0 c=4 rs=1 cs=1]
+                      LayoutText {#text} at (5,5) size 40x18
+                        text run at (5,5) width 40: "Views"
+                  LayoutTableRow {TR} at (0,30) size 464x105
+                    LayoutTableCell {TD} at (1,30) size 462x105 [border: (1px inset #808080)] [r=1 c=0 rs=1 cs=5]
+                      LayoutBlockFlow (anonymous) at (5,5) size 452x18
+                        LayoutBR {BR} at (226,0) size 0x18
+                      LayoutTable {TABLE} at (93,23) size 276x77
+                        LayoutTableSection {TBODY} at (0,0) size 276x77
+                          LayoutTableRow {TR} at (0,2) size 276x73
+                            LayoutTableCell {TD} at (2,2) size 272x73 [r=0 c=0 rs=1 cs=1]
+                              LayoutBlockFlow {FORM} at (1,1) size 270x55
+                                LayoutTable {TABLE} at (0,0) size 270x55 [border: (1px outset #808080)]
+                                  LayoutTableSection {TBODY} at (1,1) size 268x53
+                                    LayoutTableRow {TR} at (0,0) size 268x53
+                                      LayoutTableCell {TD} at (0,0) size 268x53 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
+                                        LayoutBlockFlow (anonymous) at (1,1) size 266x18
+                                          LayoutText {#text} at (78,0) size 110x18
+                                            text run at (78,0) width 110: "User Preferences"
+                                        LayoutTable {TABLE} at (1,19) size 266x33 [border: (1px outset #808080)]
+                                          LayoutTableSection {TBODY} at (1,1) size 264x31
+                                            LayoutTableRow {TR} at (0,1) size 264x29
+                                              LayoutTableCell {TH} at (1,1) size 120x28 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
+                                                LayoutInline {NOBR} at (0,0) size 110x18
+                                                  LayoutText {#text} at (5,5) size 110x18
+                                                    text run at (5,5) width 110: "Email Address :"
+                                              LayoutTableCell {TD} at (122,1) size 141x29 [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1]
+                                                LayoutTextControl {INPUT} at (5,5) size 131x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)]
+                                                LayoutText {#text} at (0,0) size 0x0
+layer at (241,97) size 125x13 scrollWidth 189
+  LayoutBlockFlow {DIV} at (3,3) size 125x13
+    LayoutText {#text} at (0,0) size 188x13
+      text run at (0,0) width 188: "simon.king@pipinghotnetworks.com"
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug60749-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug60749-expected.png
new file mode 100644
index 0000000..0c046792
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug60749-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug60749-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug60749-expected.txt
new file mode 100644
index 0000000..7fd1795
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug60749-expected.txt
@@ -0,0 +1,26 @@
+layer at (0,0) size 800x600
+  LayoutView at (0,0) size 800x600
+layer at (0,0) size 800x600
+  LayoutBlockFlow {HTML} at (0,0) size 800x600
+    LayoutBlockFlow {BODY} at (8,8) size 784x576
+      LayoutTable {TABLE} at (0,0) size 379x28 [border: (3px outset #808080)]
+        LayoutTableSection {TBODY} at (3,3) size 373x22
+          LayoutTableRow {TR} at (0,0) size 373x22
+            LayoutTableCell {TD} at (0,0) size 69x22 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
+              LayoutText {#text} at (2,2) size 65x18
+                text run at (2,2) width 65: "fieldLabel"
+            LayoutTableCell {TD} at (69,0) size 304x22 [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1]
+              LayoutText {#text} at (2,2) size 107x18
+                text run at (2,2) width 107: "   InspectionText"
+      LayoutBlockFlow {FORM} at (0,28) size 784x19
+        LayoutButton {INPUT} at (0,1) size 85.78x18 [bgcolor=#C0C0C0]
+          LayoutBlockFlow (anonymous) at (8,2) size 69.78x13
+            LayoutText {#text} at (0,0) size 70x13
+              text run at (0,0) width 70: "change width"
+        LayoutText {#text} at (85,0) size 5x18
+          text run at (85,0) width 5: " "
+        LayoutButton {INPUT} at (89.78,1) size 174.59x18 [bgcolor=#C0C0C0]
+          LayoutBlockFlow (anonymous) at (8,2) size 158.59x13
+            LayoutText {#text} at (0,0) size 159x13
+              text run at (0,0) width 159: "change width with table reflow"
+        LayoutText {#text} at (0,0) size 0x0
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug68912-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug68912-expected.png
new file mode 100644
index 0000000..def1f45
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug68912-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug68912-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug68912-expected.txt
new file mode 100644
index 0000000..953c9062
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug68912-expected.txt
@@ -0,0 +1,16 @@
+layer at (0,0) size 800x600
+  LayoutView at (0,0) size 800x600
+layer at (0,0) size 800x600
+  LayoutBlockFlow {HTML} at (0,0) size 800x600
+    LayoutBlockFlow {BODY} at (8,8) size 784x576
+      LayoutBlockFlow {P} at (0,0) size 784x18
+        LayoutText {#text} at (0,0) size 480x18
+          text run at (0,0) width 480: "This test case creates a TR element then tries to assign to the cells property"
+      LayoutBlockFlow {P} at (0,34) size 784x19
+        LayoutText {#text} at (0,0) size 42x18
+          text run at (0,0) width 42: "Crash "
+        LayoutButton {BUTTON} at (41.33,1) size 88.69x18 [bgcolor=#C0C0C0] [border: none (2px outset #C0C0C0) none (2px outset #C0C0C0)]
+          LayoutBlockFlow (anonymous) at (8,2) size 72.69x13
+            LayoutText {#text} at (0,0) size 73x13
+              text run at (0,0) width 73: "TR.cells = null"
+        LayoutText {#text} at (0,0) size 0x0
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug7342-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug7342-expected.png
new file mode 100644
index 0000000..1468154f
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug7342-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug7342-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug7342-expected.txt
new file mode 100644
index 0000000..1ad87e4
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug7342-expected.txt
@@ -0,0 +1,80 @@
+layer at (0,0) size 800x600
+  LayoutView at (0,0) size 800x600
+layer at (0,0) size 800x600
+  LayoutBlockFlow {HTML} at (0,0) size 800x600
+    LayoutBlockFlow {BODY} at (8,8) size 784x576 [bgcolor=#FFFFFF]
+      LayoutBlockFlow {P} at (0,0) size 784x36
+        LayoutText {#text} at (0,0) size 775x36
+          text run at (0,0) width 441: "Click on a link on the left hand column. Also note the overlap of the "
+          text run at (440,0) width 335: "text box with the submit button. (And, removing the"
+          text run at (0,18) width 156: "font tag that is wrapped "
+          text run at (155,18) width 239: "around the text box clears up layout)."
+      LayoutBlockFlow (anonymous) at (0,52) size 784x18
+        LayoutBR {BR} at (0,0) size 0x18
+      LayoutBlockFlow {FORM} at (0,70) size 784x136
+        LayoutBlockFlow {CENTER} at (0,0) size 784x136
+          LayoutTable {TABLE} at (92,0) size 600x136 [bgcolor=#EEEEEE] [border: (1px outset #808080)]
+            LayoutTableSection {TBODY} at (1,1) size 598x134
+              LayoutTableRow {TR} at (0,3) size 598x128
+                LayoutTableCell {TD} at (3,3) size 124x128 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
+                  LayoutTable {TABLE} at (4,4) size 116x120 [bgcolor=#FFFFFF] [border: (1px outset #808080)]
+                    LayoutTableSection {TBODY} at (1,1) size 114x118
+                      LayoutTableRow {TR} at (0,2) size 114x27
+                        LayoutTableCell {TD} at (2,3) size 110x24 [bgcolor=#CCCCCC] [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
+                          LayoutInline {A} at (0,0) size 62x18 [color=#660099]
+                            LayoutInline {B} at (0,0) size 62x18
+                              LayoutText {#text} at (3,3) size 62x18
+                                text run at (3,3) width 62: "Netscape"
+                          LayoutText {#text} at (0,0) size 0x0
+                      LayoutTableRow {TR} at (0,31) size 114x27
+                        LayoutTableCell {TD} at (2,32) size 110x24 [bgcolor=#FFFFFF] [border: (1px inset #808080)] [r=1 c=0 rs=1 cs=1]
+                          LayoutInline {A} at (0,0) size 58x18 [color=#660099]
+                            LayoutInline {B} at (0,0) size 58x18
+                              LayoutText {#text} at (3,3) size 58x18
+                                text run at (3,3) width 58: "Infoseek"
+                          LayoutText {#text} at (0,0) size 0x0
+                      LayoutTableRow {TR} at (0,60) size 114x27
+                        LayoutTableCell {TD} at (2,61) size 110x24 [bgcolor=#FFFFFF] [border: (1px inset #808080)] [r=2 c=0 rs=1 cs=1]
+                          LayoutInline {A} at (0,0) size 79x18 [color=#660099]
+                            LayoutInline {B} at (0,0) size 79x18
+                              LayoutText {#text} at (3,3) size 79x18
+                                text run at (3,3) width 79: "LookSmart"
+                          LayoutText {#text} at (0,0) size 0x0
+                      LayoutTableRow {TR} at (0,89) size 114x27
+                        LayoutTableCell {TD} at (2,90) size 110x24 [bgcolor=#FFFFFF] [border: (1px inset #808080)] [r=3 c=0 rs=1 cs=1]
+                          LayoutInline {A} at (0,0) size 66x18 [color=#660099]
+                            LayoutInline {B} at (0,0) size 66x18
+                              LayoutText {#text} at (3,3) size 66x18
+                                text run at (3,3) width 66: "Directory"
+                          LayoutText {#text} at (0,0) size 0x0
+                LayoutTableCell {TD} at (130,27) size 465x79 [bgcolor=#CCCCCC] [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1]
+                  LayoutTable {TABLE} at (4,4) size 457x71 [border: (1px outset #808080)]
+                    LayoutTableSection {TBODY} at (1,1) size 455x69
+                      LayoutTableRow {TR} at (0,4) size 455x29
+                        LayoutTableCell {TD} at (4,4) size 341x29 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=3]
+                          LayoutInline {FONT} at (0,0) size 257x15
+                            LayoutText {#text} at (0,0) size 0x0
+                            LayoutTextControl {INPUT} at (5,5) size 257x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)]
+                            LayoutText {#text} at (0,0) size 0x0
+                          LayoutText {#text} at (0,0) size 0x0
+                        LayoutTableCell {TD} at (349,4) size 102x28 [border: (1px inset #808080)] [r=0 c=3 rs=1 cs=1]
+                          LayoutButton {INPUT} at (5,5) size 52.08x18 [bgcolor=#C0C0C0]
+                            LayoutBlockFlow (anonymous) at (8,2) size 36.08x13
+                              LayoutText {#text} at (0,0) size 37x13
+                                text run at (0,0) width 37: "Search"
+                          LayoutText {#text} at (0,0) size 0x0
+                      LayoutTableRow {TR} at (0,37) size 455x28
+                        LayoutTableCell {TD} at (4,37) size 110x28 [border: (1px inset #808080)] [r=1 c=0 rs=1 cs=1]
+                          LayoutText {#text} at (5,5) size 27x18
+                            text run at (5,5) width 27: "asdf"
+                        LayoutTableCell {TD} at (118,37) size 111x28 [border: (1px inset #808080)] [r=1 c=1 rs=1 cs=1]
+                          LayoutText {#text} at (5,5) size 27x18
+                            text run at (5,5) width 27: "asdf"
+                        LayoutTableCell {TD} at (233,37) size 112x28 [border: (1px inset #808080)] [r=1 c=2 rs=1 cs=1]
+                          LayoutText {#text} at (5,5) size 27x18
+                            text run at (5,5) width 27: "asdf"
+                        LayoutTableCell {TD} at (349,37) size 102x28 [border: (1px inset #808080)] [r=1 c=3 rs=1 cs=1]
+                          LayoutText {#text} at (5,5) size 27x18
+                            text run at (5,5) width 27: "asdf"
+layer at (248,123) size 251x13
+  LayoutBlockFlow {DIV} at (3,3) size 251x13
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug8032-1-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug8032-1-expected.png
new file mode 100644
index 0000000..3750390
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug8032-1-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug8858-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug8858-expected.png
new file mode 100644
index 0000000..a59487b
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug8858-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug96334-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug96334-expected.png
new file mode 100644
index 0000000..c64b5a37
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug96334-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug96334-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug96334-expected.txt
new file mode 100644
index 0000000..0c0ae7c
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/bugs/bug96334-expected.txt
@@ -0,0 +1,45 @@
+layer at (0,0) size 800x600 scrollWidth 984
+  LayoutView at (0,0) size 800x600
+layer at (0,0) size 800x600
+  LayoutBlockFlow {HTML} at (0,0) size 800x600
+    LayoutBlockFlow {BODY} at (8,8) size 784x584
+      LayoutTable {TABLE} at (0,0) size 976x139 [border: (2px solid #0000FF)]
+        LayoutTableSection {TBODY} at (2,2) size 972x135
+          LayoutTableRow {TR} at (0,2) size 972x131
+            LayoutTableCell {TD} at (2,2) size 210x131 [border: (1px solid #C0C0C0)] [r=0 c=0 rs=1 cs=1]
+              LayoutTable {TABLE} at (2,2) size 206x127 [border: (2px solid #008000)]
+                LayoutTableSection {TBODY} at (2,2) size 202x123
+                  LayoutTableRow {TR} at (0,2) size 202x83
+                    LayoutTableCell {TD} at (2,2) size 198x83 [border: (1px solid #C0C0C0)] [r=0 c=0 rs=1 cs=1]
+                      LayoutTable {TABLE} at (2,2) size 143x31 [border: (2px solid #FF0000)]
+                        LayoutTableSection {TBODY} at (2,2) size 139x27
+                          LayoutTableRow {TR} at (0,2) size 139x23
+                            LayoutTableCell {TD} at (2,2) size 135x23 [border: (1px solid #C0C0C0)] [r=0 c=0 rs=1 cs=1]
+                              LayoutTextControl {INPUT} at (2,2) size 131x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)]
+                              LayoutText {#text} at (0,0) size 0x0
+                      LayoutTable {TABLE} at (2,33) size 194x48 [border: (2px solid #FF0000)]
+                        LayoutTableSection {TBODY} at (2,2) size 190x44
+                          LayoutTableRow {TR} at (0,2) size 190x40
+                            LayoutTableCell {TD} at (2,2) size 186x40 [border: (1px solid #C0C0C0)] [r=0 c=0 rs=1 cs=1]
+                              LayoutText {#text} at (2,2) size 171x36
+                                text run at (2,2) width 171: "THIS TABLE NEEDS TO"
+                                text run at (2,20) width 67: "BE HERE"
+                  LayoutTableRow {TR} at (0,87) size 202x34
+                    LayoutTableCell {TD} at (2,87) size 198x34 [border: (1px solid #C0C0C0)] [r=1 c=0 rs=1 cs=1]
+                      LayoutTable {TABLE} at (2,2) size 194x30 [border: (2px solid #FF0000)]
+                        LayoutTableSection {TBODY} at (2,2) size 190x26
+                          LayoutTableRow {TR} at (0,2) size 190x22
+                            LayoutTableCell {TD} at (2,2) size 186x22 [border: (1px solid #C0C0C0)] [r=0 c=0 rs=1 cs=1]
+                              LayoutMenuList {SELECT} at (2,2) size 182x18 [bgcolor=#F8F8F8]
+                                LayoutBlockFlow (anonymous) at (0,0) size 182x18
+                                  LayoutText (anonymous) at (8,2) size 151x13
+                                    text run at (8,2) width 151: "USE THIS JAVASCRIPT HERE"
+                              LayoutText {#text} at (0,0) size 0x0
+            LayoutTableCell {TD} at (214,2) size 756x40 [border: (1px solid #C0C0C0)] [r=0 c=1 rs=1 cs=1]
+              LayoutText {#text} at (2,2) size 752x36
+                text run at (2,2) width 752: "KEEPoTHEoTEXToHEREoASoLONGoASoPOSSIBLEooKEEPoTHEoTEXToHEREoASoLONGoASoPOSSIBLE"
+                text run at (2,20) width 602: "THIS SIMULATES THE PROBLEM ON THE WWW.MAPBLAST.COM/ \"CREATE MAP\""
+layer at (29,29) size 125x13 scrollWidth 132
+  LayoutBlockFlow {DIV} at (3,3) size 125x13
+    LayoutText {#text} at (0,0) size 131x13
+      text run at (0,0) width 131: "THIS NEEDS THIS VALUE"
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/collapsing_borders/bug41262-4-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/collapsing_borders/bug41262-4-expected.png
new file mode 100644
index 0000000..dda01e2
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/collapsing_borders/bug41262-4-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/collapsing_borders/bug41262-4-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/collapsing_borders/bug41262-4-expected.txt
new file mode 100644
index 0000000..09f5606d
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/collapsing_borders/bug41262-4-expected.txt
@@ -0,0 +1,41 @@
+layer at (0,0) size 800x600
+  LayoutView at (0,0) size 800x600
+layer at (0,0) size 800x600
+  LayoutBlockFlow {HTML} at (0,0) size 800x600
+    LayoutBlockFlow {BODY} at (8,8) size 784x576
+      LayoutBlockFlow {BLOCKQUOTE} at (40,0) size 704x115
+        LayoutBlockFlow {CENTER} at (0,0) size 704x115
+          LayoutTable {TABLE} at (297.50,0) size 109x80 [border: (2px none #808080)]
+            LayoutTableSection {TBODY} at (2,2) size 104x75
+              LayoutTableRow {TR} at (0,0) size 104x25
+                LayoutTableCell {TD} at (0,0) size 37x25 [border: (3px groove #0000FF)] [r=0 c=0 rs=1 cs=1]
+                  LayoutText {#text} at (4,4) size 29x18
+                    text run at (4,4) width 29: "EST"
+                LayoutTableCell {TD} at (37,0) size 67x25 [border: (3px groove #0000FF)] [r=0 c=1 rs=1 cs=1]
+                  LayoutText {#text} at (4,4) size 60x18
+                    text run at (4,4) width 60: "9:00 a.m."
+              LayoutTableRow {TR} at (0,25) size 104x25
+                LayoutTableCell {TD} at (0,25) size 37x25 [border: (3px groove #0000FF)] [r=1 c=0 rs=1 cs=1]
+                  LayoutText {#text} at (4,4) size 30x18
+                    text run at (4,4) width 30: "CST"
+                LayoutTableCell {TD} at (37,25) size 67x25 [border: (3px groove #0000FF)] [r=1 c=1 rs=1 cs=1]
+                  LayoutText {#text} at (4,4) size 60x18
+                    text run at (4,4) width 60: "8:00 a.m."
+              LayoutTableRow {TR} at (0,50) size 104x25
+                LayoutTableCell {TD} at (0,50) size 37x25 [border: (3px groove #0000FF)] [r=2 c=0 rs=1 cs=1]
+                  LayoutText {#text} at (4,4) size 28x18
+                    text run at (4,4) width 28: "PST"
+                LayoutTableCell {TD} at (37,50) size 67x25 [border: (3px groove #0000FF)] [r=2 c=1 rs=1 cs=1]
+                  LayoutText {#text} at (4,4) size 60x18
+                    text run at (4,4) width 60: "6:00 a.m."
+          LayoutBlockFlow {P} at (0,96) size 704x19
+            LayoutButton {INPUT} at (289.84,1) size 61.28x18 [bgcolor=#C0C0C0]
+              LayoutBlockFlow (anonymous) at (8,2) size 45.28x13
+                LayoutText {#text} at (0,0) size 46x13
+                  text run at (0,0) width 46: "separate"
+            LayoutText {#text} at (351,0) size 5x18
+              text run at (351,0) width 5: " "
+            LayoutButton {INPUT} at (355.13,1) size 59.02x18 [bgcolor=#C0C0C0]
+              LayoutBlockFlow (anonymous) at (8,2) size 43.02x13
+                LayoutText {#text} at (0,0) size 43x13
+                  text run at (0,0) width 43: "collapse"
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/core/bloomberg-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/core/bloomberg-expected.png
new file mode 100644
index 0000000..d30f0a4
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/core/bloomberg-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/core/margins-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/core/margins-expected.png
new file mode 100644
index 0000000..b23a51b2
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/core/margins-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/core/margins-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/core/margins-expected.txt
new file mode 100644
index 0000000..17fdcb0
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/core/margins-expected.txt
@@ -0,0 +1,105 @@
+layer at (0,0) size 800x600
+  LayoutView at (0,0) size 800x600
+layer at (0,0) size 800x600
+  LayoutBlockFlow {HTML} at (0,0) size 800x600
+    LayoutBlockFlow {BODY} at (8,8) size 784x584
+      LayoutBlockFlow (anonymous) at (0,0) size 784x18
+        LayoutText {#text} at (0,0) size 191x18
+          text run at (0,0) width 191: "outer width=400 align=center"
+      LayoutTable {TABLE} at (192,18) size 400x44 [border: (1px outset #808080)]
+        LayoutTableSection {TBODY} at (1,1) size 398x42
+          LayoutTableRow {TR} at (0,2) size 398x38
+            LayoutTableCell {TD} at (2,2) size 394x38 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
+              LayoutBlockFlow {FORM} at (2,2) size 390x18
+                LayoutMenuList {SELECT} at (0,0) size 54x18 [bgcolor=#F8F8F8]
+                  LayoutBlockFlow (anonymous) at (0,0) size 54x18
+                    LayoutText (anonymous) at (8,2) size 23x13
+                      text run at (8,2) width 23: "Test"
+                LayoutText {#text} at (0,0) size 0x0
+      LayoutBlockFlow (anonymous) at (0,62) size 784x18
+        LayoutText {#text} at (0,0) size 301x18
+          text run at (0,0) width 301: "outer width=400 inner width=200 align=center"
+      LayoutTable {TABLE} at (0,80) size 400x40 [border: (2px outset #808080)]
+        LayoutTableSection {TBODY} at (2,2) size 396x36
+          LayoutTableRow {TR} at (0,2) size 396x32
+            LayoutTableCell {TD} at (2,2) size 392x32 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
+              LayoutTable {TABLE} at (96,2) size 200x28 [border: (1px outset #808080)]
+                LayoutTableSection {TBODY} at (1,1) size 198x26
+                  LayoutTableRow {TR} at (0,2) size 198x22
+                    LayoutTableCell {TD} at (2,2) size 194x22 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
+                      LayoutText {#text} at (2,2) size 22x18
+                        text run at (2,2) width 22: "foo"
+      LayoutBlockFlow (anonymous) at (0,120) size 784x18
+        LayoutText {#text} at (0,0) size 186x18
+          text run at (0,0) width 186: "outer auto inner align=center"
+      LayoutTable {TABLE} at (0,138) size 44x40 [border: (2px outset #808080)]
+        LayoutTableSection {TBODY} at (2,2) size 40x36
+          LayoutTableRow {TR} at (0,2) size 40x32
+            LayoutTableCell {TD} at (2,2) size 36x32 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
+              LayoutTable {TABLE} at (2,2) size 32x28 [border: (1px outset #808080)]
+                LayoutTableSection {TBODY} at (1,1) size 30x26
+                  LayoutTableRow {TR} at (0,2) size 30x22
+                    LayoutTableCell {TD} at (2,2) size 26x22 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
+                      LayoutText {#text} at (2,2) size 22x18
+                        text run at (2,2) width 22: "foo"
+      LayoutBlockFlow (anonymous) at (0,178) size 784x18
+        LayoutText {#text} at (0,0) size 220x18
+          text run at (0,0) width 220: "outer width=50 inner align=center"
+      LayoutTable {TABLE} at (0,196) size 44x40 [border: (2px outset #808080)]
+        LayoutTableSection {TBODY} at (2,2) size 40x36
+          LayoutTableRow {TR} at (0,2) size 40x32
+            LayoutTableCell {TD} at (2,2) size 36x32 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
+              LayoutTable {TABLE} at (2,2) size 32x28 [border: (1px outset #808080)]
+                LayoutTableSection {TBODY} at (1,1) size 30x26
+                  LayoutTableRow {TR} at (0,2) size 30x22
+                    LayoutTableCell {TD} at (2,2) size 26x22 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
+                      LayoutText {#text} at (2,2) size 22x18
+                        text run at (2,2) width 22: "foo"
+      LayoutBlockFlow (anonymous) at (0,236) size 784x18
+        LayoutText {#text} at (0,0) size 232x18
+          text run at (0,0) width 232: "outer width=50 inner margin-left:50"
+      LayoutTable {TABLE} at (0,254) size 94x40 [border: (2px outset #808080)]
+        LayoutTableSection {TBODY} at (2,2) size 90x36
+          LayoutTableRow {TR} at (0,2) size 90x32
+            LayoutTableCell {TD} at (2,2) size 86x32 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
+              LayoutTable {TABLE} at (52,2) size 32x28 [border: (1px outset #808080)]
+                LayoutTableSection {TBODY} at (1,1) size 30x26
+                  LayoutTableRow {TR} at (0,2) size 30x22
+                    LayoutTableCell {TD} at (2,2) size 26x22 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
+                      LayoutText {#text} at (2,2) size 22x18
+                        text run at (2,2) width 22: "foo"
+      LayoutBlockFlow (anonymous) at (0,294) size 784x18
+        LayoutText {#text} at (0,0) size 228x18
+          text run at (0,0) width 228: "outer width=400 inner align=center"
+      LayoutTable {TABLE} at (0,312) size 400x40 [border: (2px outset #808080)]
+        LayoutTableSection {TBODY} at (2,2) size 396x36
+          LayoutTableRow {TR} at (0,2) size 396x32
+            LayoutTableCell {TD} at (2,2) size 117x32 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
+              LayoutTable {TABLE} at (42.50,2) size 32x28 [border: (1px outset #808080)]
+                LayoutTableSection {TBODY} at (1,1) size 30x26
+                  LayoutTableRow {TR} at (0,2) size 30x22
+                    LayoutTableCell {TD} at (2,2) size 26x22 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
+                      LayoutText {#text} at (2,2) size 22x18
+                        text run at (2,2) width 22: "foo"
+            LayoutTableCell {TD} at (121,7) size 273x22 [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1]
+              LayoutText {#text} at (2,2) size 80x18
+                text run at (2,2) width 80: "x x x x x x x"
+      LayoutBlockFlow (anonymous) at (0,352) size 784x18
+        LayoutText {#text} at (0,0) size 228x18
+          text run at (0,0) width 228: "outer width=400 inner align=center"
+      LayoutTable {TABLE} at (0,370) size 400x40 [border: (2px outset #808080)]
+        LayoutTableSection {TBODY} at (2,2) size 396x36
+          LayoutTableRow {TR} at (0,2) size 396x32
+            LayoutTableCell {TD} at (2,2) size 168x32 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
+              LayoutTable {TABLE} at (54,2) size 60x28 [border: (1px outset #808080)]
+                LayoutTableSection {TBODY} at (1,1) size 58x26
+                  LayoutTableRow {TR} at (0,2) size 58x22
+                    LayoutTableCell {TD} at (2,2) size 54x22 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
+                      LayoutText {#text} at (2,2) size 16x18
+                        text run at (2,2) width 16: "50"
+            LayoutTableCell {TD} at (172,7) size 222x22 [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1]
+              LayoutText {#text} at (2,2) size 80x18
+                text run at (2,2) width 80: "x x x x x x x"
+      LayoutBlockFlow (anonymous) at (0,410) size 784x18
+        LayoutText {#text} at (0,0) size 20x18
+          text run at (0,0) width 20: "-->"
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/dom/tableDom-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/dom/tableDom-expected.png
new file mode 100644
index 0000000..58e6a13
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/dom/tableDom-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/dom/tableDom-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/dom/tableDom-expected.txt
new file mode 100644
index 0000000..7da4bf3
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/dom/tableDom-expected.txt
@@ -0,0 +1,69 @@
+layer at (0,0) size 800x600
+  LayoutView at (0,0) size 800x600
+layer at (0,0) size 800x600
+  LayoutBlockFlow {HTML} at (0,0) size 800x600
+    LayoutBlockFlow {BODY} at (8,8) size 784x584
+      LayoutBlockFlow {FORM} at (0,0) size 784x19
+        LayoutMenuList {SELECT} at (0,1) size 92x18 [bgcolor=#F8F8F8]
+          LayoutBlockFlow (anonymous) at (0,0) size 92x18
+            LayoutText (anonymous) at (8,2) size 61x13
+              text run at (8,2) width 61: "append cell"
+        LayoutText {#text} at (92,0) size 53x18
+          text run at (92,0) width 53: "   tbody "
+        LayoutTextControl {INPUT} at (144.44,0) size 41x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)]
+        LayoutText {#text} at (185,0) size 42x18
+          text run at (185,0) width 42: "   row "
+        LayoutTextControl {INPUT} at (226.31,0) size 41x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)]
+        LayoutText {#text} at (267,0) size 36x18
+          text run at (267,0) width 36: "   col "
+        LayoutTextControl {INPUT} at (302.86,0) size 41x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)]
+        LayoutText {#text} at (343,0) size 76x18
+          text run at (343,0) width 76: "   row span "
+        LayoutTextControl {INPUT} at (418.06,0) size 41x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)]
+        LayoutText {#text} at (459,0) size 69x18
+          text run at (459,0) width 69: "   col span "
+        LayoutTextControl {INPUT} at (527.94,0) size 41x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)]
+        LayoutText {#text} at (568,0) size 21x18
+          text run at (568,0) width 21: "     "
+        LayoutButton {INPUT} at (588.94,1) size 40.53x18 [bgcolor=#C0C0C0]
+          LayoutBlockFlow (anonymous) at (8,2) size 24.53x13
+            LayoutText {#text} at (0,0) size 25x13
+              text run at (0,0) width 25: "Do It"
+        LayoutText {#text} at (0,0) size 0x0
+      LayoutBlockFlow (anonymous) at (0,35) size 784x18
+        LayoutBR {BR} at (0,0) size 0x18
+      LayoutTable {TABLE} at (0,53) size 64x52 [bgcolor=#FFA500] [border: (1px outset #808080)]
+        LayoutTableSection {TBODY} at (1,1) size 62x50
+          LayoutTableRow {TR} at (0,2) size 62x22
+            LayoutTableCell {TD} at (2,2) size 28x22 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
+              LayoutText {#text} at (2,2) size 23x18
+                text run at (2,2) width 23: "c11"
+          LayoutTableRow {TR} at (0,26) size 62x22
+            LayoutTableCell {TD} at (2,26) size 28x22 [border: (1px inset #808080)] [r=1 c=0 rs=1 cs=1]
+              LayoutText {#text} at (2,2) size 24x18
+                text run at (2,2) width 24: "c21"
+            LayoutTableCell {TD} at (32,26) size 28x22 [border: (1px inset #808080)] [r=1 c=1 rs=1 cs=1]
+              LayoutText {#text} at (2,2) size 24x18
+                text run at (2,2) width 24: "c22"
+      LayoutBlockFlow (anonymous) at (0,105) size 784x18
+        LayoutBR {BR} at (0,0) size 0x18
+layer at (155,11) size 35x13
+  LayoutBlockFlow {DIV} at (3,3) size 35x13
+    LayoutText {#text} at (0,0) size 7x13
+      text run at (0,0) width 7: "0"
+layer at (237,11) size 35x13
+  LayoutBlockFlow {DIV} at (3,3) size 35x13
+    LayoutText {#text} at (0,0) size 7x13
+      text run at (0,0) width 7: "0"
+layer at (314,11) size 35x13
+  LayoutBlockFlow {DIV} at (3,3) size 35x13
+    LayoutText {#text} at (0,0) size 7x13
+      text run at (0,0) width 7: "0"
+layer at (429,11) size 35x13
+  LayoutBlockFlow {DIV} at (3,3) size 35x13
+    LayoutText {#text} at (0,0) size 6x13
+      text run at (0,0) width 6: "1"
+layer at (539,11) size 35x13
+  LayoutBlockFlow {DIV} at (3,3) size 35x13
+    LayoutText {#text} at (0,0) size 6x13
+      text run at (0,0) width 6: "1"
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/other/move_row-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/other/move_row-expected.png
new file mode 100644
index 0000000..af44f4b
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/other/move_row-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/other/test3-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/other/test3-expected.png
new file mode 100644
index 0000000..02e2d6b
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/other/test3-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/other/test6-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/other/test6-expected.png
new file mode 100644
index 0000000..3d3b6c5
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/other/test6-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/other/wa_table_thtd_rowspan-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/other/wa_table_thtd_rowspan-expected.png
new file mode 100644
index 0000000..0edb31b
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/other/wa_table_thtd_rowspan-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/other/wa_table_tr_align-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/other/wa_table_tr_align-expected.png
new file mode 100644
index 0000000..2ad1279
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla/other/wa_table_tr_align-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla_expected_failures/bugs/bug1128-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla_expected_failures/bugs/bug1128-expected.png
new file mode 100644
index 0000000..fc3fd5b
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla_expected_failures/bugs/bug1128-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla_expected_failures/bugs/bug1725-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla_expected_failures/bugs/bug1725-expected.png
new file mode 100644
index 0000000..a84f408
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla_expected_failures/bugs/bug1725-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla_expected_failures/bugs/bug1725-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla_expected_failures/bugs/bug1725-expected.txt
new file mode 100644
index 0000000..fe2063ce
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla_expected_failures/bugs/bug1725-expected.txt
@@ -0,0 +1,68 @@
+layer at (0,0) size 800x600
+  LayoutView at (0,0) size 800x600
+layer at (0,0) size 800x600
+  LayoutBlockFlow {HTML} at (0,0) size 800x600
+    LayoutBlockFlow {BODY} at (8,8) size 784x584
+      LayoutTable {TABLE} at (0,0) size 600x276 [bgcolor=#FFC0CB]
+        LayoutTableSection {TBODY} at (0,0) size 600x276
+          LayoutTableRow {TR} at (0,0) size 600x18
+            LayoutTableCell {TD} at (0,0) size 600x18 [bgcolor=#FFFF00] [r=0 c=0 rs=1 cs=3]
+              LayoutText {#text} at (0,0) size 8x18
+                text run at (0,0) width 8: "1"
+          LayoutTableRow {TR} at (0,18) size 600x18
+            LayoutTableCell {TD} at (0,18) size 600x18 [bgcolor=#FF0000] [r=1 c=0 rs=1 cs=3]
+              LayoutText {#text} at (0,0) size 8x18
+                text run at (0,0) width 8: "2"
+          LayoutTableRow {TR} at (0,36) size 600x0
+            LayoutTableCell {TD} at (0,36) size 155x18 [bgcolor=#00FFFF] [r=2 c=0 rs=40 cs=1]
+              LayoutText {#text} at (0,0) size 8x18
+                text run at (0,0) width 8: "3"
+          LayoutTableRow {TR} at (0,36) size 600x24
+            LayoutTableCell {TD} at (155,36) size 445x24 [bgcolor=#FFA500] [r=3 c=1 rs=1 cs=1]
+              LayoutTable {TABLE} at (0,0) size 440x24
+                LayoutTableSection {TBODY} at (0,0) size 440x24
+                  LayoutTableRow {TR} at (0,2) size 440x20
+                    LayoutTableCell {TD} at (2,2) size 217x20 [r=0 c=0 rs=1 cs=1]
+                      LayoutButton {INPUT} at (1,1) size 93.73x18 [bgcolor=#C0C0C0]
+                        LayoutBlockFlow (anonymous) at (8,2) size 77.73x13
+                          LayoutText {#text} at (0,0) size 78x13
+                            text run at (0,0) width 78: "Submit Criteria"
+                    LayoutTableCell {TD} at (221,2) size 217x20 [r=0 c=1 rs=1 cs=1]
+                      LayoutText {#text} at (1,1) size 8x18
+                        text run at (1,1) width 8: "4"
+          LayoutTableRow {TR} at (0,60) size 600x18
+            LayoutTableCell {TD} at (155,60) size 445x18 [bgcolor=#FF0000] [r=4 c=1 rs=1 cs=1]
+              LayoutText {#text} at (0,0) size 8x18
+                text run at (0,0) width 8: "5"
+          LayoutTableRow {TR} at (0,78) size 600x36
+            LayoutTableCell {TD} at (155,78) size 445x36 [bgcolor=#FFFF00] [r=5 c=1 rs=1 cs=1]
+              LayoutText {#text} at (0,0) size 436x36
+                text run at (0,0) width 263: "If you have entered your feature criteria, "
+                text run at (262,0) width 174: "press the \"Submit Criteria\""
+                text run at (0,18) width 88: "button above."
+          LayoutTableRow {TR} at (0,114) size 600x18
+            LayoutTableCell {TD} at (155,114) size 445x18 [bgcolor=#D3D3D3] [r=6 c=1 rs=1 cs=1]
+              LayoutText {#text} at (0,0) size 8x18
+                text run at (0,0) width 8: "6"
+          LayoutTableRow {TR} at (0,132) size 600x54
+            LayoutTableCell {TD} at (155,132) size 445x54 [r=7 c=1 rs=1 cs=1]
+              LayoutText {#text} at (0,0) size 433x54
+                text run at (0,0) width 267: "If you want to do a radius search instead, "
+                text run at (266,0) width 167: "press the \"Radius Search\""
+                text run at (0,18) width 49: "button. "
+                text run at (48,18) width 287: "This will allow you to select a starting point "
+                text run at (334,18) width 71: "and enter a"
+                text run at (0,36) width 204: "radius with new feature criteria."
+          LayoutTableRow {TR} at (0,186) size 600x18
+            LayoutTableCell {TD} at (155,186) size 445x18 [r=8 c=1 rs=1 cs=1]
+              LayoutText {#text} at (0,0) size 4x18
+                text run at (0,0) width 4: " "
+          LayoutTableRow {TR} at (0,204) size 600x72
+            LayoutTableCell {TD} at (155,204) size 445x72 [r=9 c=1 rs=1 cs=1]
+              LayoutText {#text} at (0,0) size 419x72
+                text run at (0,0) width 419: "All information provided is deemed reliable but is not guaranteed"
+                text run at (0,18) width 93: "and should be "
+                text run at (92,18) width 291: "independently verified. The price shown may"
+                text run at (0,36) width 206: "represent the top or bottom of a "
+                text run at (205,36) width 168: "price range listing and not"
+                text run at (0,54) width 193: "necessarily a fixed price offer."
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla_expected_failures/bugs/bug2479-5-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla_expected_failures/bugs/bug2479-5-expected.png
new file mode 100644
index 0000000..bd530e3
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla_expected_failures/bugs/bug2479-5-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla_expected_failures/bugs/bug2479-5-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla_expected_failures/bugs/bug2479-5-expected.txt
new file mode 100644
index 0000000..2f1fd4ef
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla_expected_failures/bugs/bug2479-5-expected.txt
@@ -0,0 +1,180 @@
+layer at (0,0) size 800x600 clip at (0,0) size 785x600 scrollHeight 1444
+  LayoutView at (0,0) size 800x600
+layer at (8,8) size 769x1428 backgroundClip at (0,0) size 785x600 clip at (0,0) size 785x600
+  LayoutBlockFlow {HTML} at (8,8) size 769x1428 [border: (16px solid #00FF00)]
+    LayoutTable (anonymous) at (16,16) size 737x1396
+      LayoutTableSection (anonymous) at (0,0) size 737x1396
+        LayoutTableRow (anonymous) at (0,0) size 737x1396
+          LayoutTableCell {HEAD} at (0,0) size 251x472 [color=#FFFFFF] [bgcolor=#FF0000] [border: (5px solid #FFFFFF)] [r=0 c=0 rs=1 cs=1]
+            LayoutBlockFlow {META} at (21,37) size 209x2 [border: (1px dotted #FFFFFF)]
+            LayoutBlockFlow {META} at (21,55) size 209x2 [border: (1px dotted #FFFFFF)]
+            LayoutBlockFlow {META} at (21,73) size 209x2 [border: (1px dotted #FFFFFF)]
+            LayoutBlockFlow {META} at (21,91) size 209x2 [border: (1px dotted #FFFFFF)]
+            LayoutBlockFlow {TITLE} at (21,109) size 209x56 [border: (1px dotted #FFFFFF)]
+              LayoutText {#text} at (1,1) size 188x54
+                text run at (1,1) width 188: "Evil Tests: Rendering BODY"
+                text run at (1,19) width 163: "and HEAD as children of"
+                text run at (1,37) width 67: "HTML - 2"
+            LayoutBlockFlow {STYLE} at (21,181) size 209x254 [border: (1px dotted #FFFFFF)]
+              LayoutText {#text} at (1,1) size 206x252
+                text run at (1,1) width 83: "/* Layout */ "
+                text run at (83,1) width 112: "HTML { display:"
+                text run at (1,19) width 194: "block; border: 1em lime solid;"
+                text run at (1,37) width 98: "margin: 8px; } "
+                text run at (98,37) width 99: "HEAD, BODY"
+                text run at (1,55) width 181: "{ display: table-cell; border:"
+                text run at (1,73) width 76: "solid thick; "
+                text run at (76,73) width 93: "padding: 1em;"
+                text run at (1,91) width 102: "margin: 1em; } "
+                text run at (102,91) width 74: "HEAD > *,"
+                text run at (1,109) width 181: "BODY > * { display: block;"
+                text run at (1,127) width 178: "border: thin dotted; margin:"
+                text run at (1,145) width 60: "1em 0; } "
+                text run at (60,145) width 105: "/* Formatting */"
+                text run at (1,163) width 142: "HTML { color: black;"
+                text run at (1,181) width 140: "background: green; } "
+                text run at (140,181) width 57: "HEAD {"
+                text run at (1,199) width 206: "color: white; background: red; }"
+                text run at (1,217) width 151: "BODY { color: yellow;"
+                text run at (1,235) width 124: "background: teal; }"
+          LayoutTableCell {BODY} at (251,41) size 486x1355 [color=#FFFF00] [bgcolor=#008080] [border: (5px solid #FFFF00)] [r=0 c=1 rs=1 cs=1]
+            LayoutBlockFlow {H1} at (21,53) size 444x76 [border: (1px dotted #FFFF00)]
+              LayoutText {#text} at (1,1) size 152x37
+                text run at (1,1) width 152: "Rendering "
+              LayoutInline {CODE} at (0,0) size 63x30
+                LayoutText {#text} at (153,6) size 63x30
+                  text run at (153,6) width 63: "BODY"
+              LayoutText {#text} at (215,1) size 68x37
+                text run at (215,1) width 68: " and "
+              LayoutInline {CODE} at (0,0) size 63x30
+                LayoutText {#text} at (283,6) size 63x30
+                  text run at (283,6) width 63: "HEAD"
+              LayoutText {#text} at (345,1) size 381x74
+                text run at (345,1) width 37: " as"
+                text run at (1,38) width 156: "children of "
+              LayoutInline {CODE} at (0,0) size 64x30
+                LayoutText {#text} at (156,43) size 64x30
+                  text run at (156,43) width 64: "HTML"
+              LayoutText {#text} at (219,38) size 43x37
+                text run at (219,38) width 43: " - 2"
+            LayoutBlockFlow {P} at (21,161) size 444x38 [border: (1px dotted #FFFF00)]
+              LayoutText {#text} at (1,1) size 393x18
+                text run at (1,1) width 393: "If you have any comments to make regarding this test, e-mail"
+              LayoutInline {A} at (0,0) size 186x18 [color=#0000EE]
+                LayoutText {#text} at (1,19) size 186x18
+                  text run at (1,19) width 186: "py8ieh=eviltests@bath.ac.uk"
+              LayoutText {#text} at (186,19) size 5x18
+                text run at (186,19) width 5: "."
+            LayoutBlockFlow {DL} at (21,215) size 444x92 [border: (1px dotted #FFFF00)]
+              LayoutBlockFlow {DT} at (1,1) size 442x18
+                LayoutText {#text} at (0,0) size 83x18
+                  text run at (0,0) width 83: "Prerequisites"
+              LayoutBlockFlow {DD} at (41,19) size 402x72
+                LayoutText {#text} at (0,0) size 392x54
+                  text run at (0,0) width 392: "Browsers that are subjected to this test should support the the"
+                  text run at (0,18) width 388: "background, padding, margin, border and color properties of"
+                  text run at (0,36) width 160: "CSS, and in addition the "
+                LayoutInline {CODE} at (0,0) size 63x15
+                  LayoutText {#text} at (160,38) size 63x15
+                    text run at (160,38) width 63: "overflow"
+                LayoutText {#text} at (222,36) size 400x36
+                  text run at (222,36) width 178: " property and fixed position"
+                  text run at (0,54) width 109: "stuff from CSS2."
+            LayoutBlockFlow {H2} at (21,331) size 444x58 [border: (1px dotted #FFFF00)]
+              LayoutText {#text} at (1,1) size 440x56
+                text run at (1,1) width 440: "1. Making the BODY and the HEAD into a"
+                text run at (1,29) width 51: "table"
+            LayoutBlockFlow {P} at (21,413) size 444x20 [border: (1px dotted #FFFF00)]
+              LayoutText {#text} at (1,1) size 264x18
+                text run at (1,1) width 264: "This is really evil, but completely valid..."
+            LayoutBlockFlow {P} at (21,449) size 444x110 [border: (1px dotted #FFFF00)]
+              LayoutText {#text} at (1,1) size 430x108
+                text run at (1,1) width 426: "This document should have two cells, side by side: one on the left,"
+                text run at (1,19) width 426: "the other on the right. The one on the left should be red with white"
+                text run at (1,37) width 430: "writing and a thick white border. It should contain four dotted lines"
+                text run at (1,55) width 388: "separated by a blank line, followed by a dotted bordered box"
+                text run at (1,73) width 403: "containing the document title, and another dotted bordered box"
+                text run at (1,91) width 286: "containing the stylesheet, also shown below:"
+            LayoutBlockFlow {PRE} at (21,575) size 444x17 [border: (1px dotted #FFFF00)]
+              LayoutText {#text} at (1,1) size 39x15
+                text run at (1,1) width 39: "  ..."
+                text run at (40,1) width 0: " "
+            LayoutBlockFlow {P} at (21,608) size 444x38 [border: (1px dotted #FFFF00)]
+              LayoutText {#text} at (1,1) size 419x36
+                text run at (1,1) width 419: "The dotted borders and lines and the text in the left cell should be"
+                text run at (1,19) width 40: "white."
+            LayoutBlockFlow {P} at (21,662) size 444x38 [border: (1px dotted #FFFF00)]
+              LayoutText {#text} at (1,1) size 424x36
+                text run at (1,1) width 424: "The right cell should be teal, with yellow text. This paragraph you"
+                text run at (1,19) width 278: "are reading now should be in this right cell."
+            LayoutBlockFlow {P} at (21,716) size 444x38 [border: (1px dotted #FFFF00)]
+              LayoutText {#text} at (1,1) size 413x36
+                text run at (1,1) width 413: "The width of the two cells is left up to the user agent to decide, I"
+                text run at (1,19) width 37: "think."
+            LayoutBlockFlow {P} at (21,770) size 444x74 [border: (1px dotted #FFFF00)]
+              LayoutText {#text} at (1,1) size 439x72
+                text run at (1,1) width 409: "The right cell should look similar to the left cell in formatting --"
+                text run at (1,19) width 399: "each box of text should have a yellow dotted border, and there"
+                text run at (1,37) width 414: "should be a blank line between each such box. No box should be"
+                text run at (1,55) width 439: "nested -- the dotted boxes should always be distinct from each other."
+            LayoutBlockFlow {P} at (21,860) size 444x38 [border: (1px dotted #FFFF00)]
+              LayoutText {#text} at (1,1) size 417x36
+                text run at (1,1) width 417: "The cells should be the same height, and they should have grown"
+                text run at (1,19) width 229: "vertically to accommodate this text."
+            LayoutBlockFlow {P} at (21,914) size 444x56 [border: (1px dotted #FFFF00)]
+              LayoutText {#text} at (1,1) size 437x54
+                text run at (1,1) width 436: "Around the whole setup should be two borders, dark green and light"
+                text run at (1,19) width 437: "green. The cells should be separated from each other and from these"
+                text run at (1,37) width 230: "outer borders by 1em of dark green."
+            LayoutBlockFlow {P} at (21,986) size 444x38 [border: (1px dotted #FFFF00)]
+              LayoutText {#text} at (1,1) size 429x36
+                text run at (1,1) width 429: "There should also be some alternate stylesheets set up to allow you"
+                text run at (1,19) width 404: "to display the <META> content. This may help with diagnosis."
+            LayoutBlockFlow {H2} at (21,1048) size 444x30 [border: (1px dotted #FFFF00)]
+              LayoutText {#text} at (1,1) size 156x28
+                text run at (1,1) width 156: "Submit Results"
+            LayoutBlockFlow {FORM} at (21,1102) size 444x90 [border: (1px dotted #FFFF00)]
+              LayoutBlockFlow {P} at (1,17) size 442x56
+                LayoutText {#text} at (0,0) size 263x18
+                  text run at (0,0) width 263: "How does your browser fare on this test?"
+                LayoutMenuList {SELECT} at (0,19) size 442x18 [color=#000000] [bgcolor=#F8F8F8]
+                  LayoutBlockFlow (anonymous) at (0,0) size 442x18
+                    LayoutText (anonymous) at (8,2) size 210x13
+                      text run at (8,2) width 210: "Document renders exactly as described."
+                LayoutText {#text} at (0,0) size 0x0
+                LayoutInline {LABEL} at (0,0) size 203x18
+                  LayoutText {#text} at (0,37) size 72x18
+                    text run at (0,37) width 72: "Comment: "
+                  LayoutTextControl {INPUT} at (71.55,37) size 131x19 [color=#000000] [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)]
+                LayoutText {#text} at (202,37) size 5x18
+                  text run at (202,37) width 5: " "
+                LayoutButton {INPUT} at (206.55,38) size 52.47x18 [color=#000000] [bgcolor=#C0C0C0]
+                  LayoutBlockFlow (anonymous) at (8,2) size 36.47x13
+                    LayoutText {#text} at (0,0) size 37x13
+                      text run at (0,0) width 37: "Submit"
+                LayoutText {#text} at (0,0) size 0x0
+            LayoutBlockFlow {HR} at (21,1208) size 444x2 [border: (1px dotted #FFFF00)]
+            LayoutBlockFlow {P} at (21,1226) size 444x20 [border: (1px dotted #FFFF00)]
+              LayoutInline {A} at (0,0) size 162x18 [color=#0000EE]
+                LayoutText {#text} at (1,1) size 162x18
+                  text run at (1,1) width 162: "Up to the Evil Tests Page"
+              LayoutText {#text} at (162,1) size 5x18
+                text run at (162,1) width 5: "."
+            LayoutBlockFlow {P} at (21,1262) size 444x20 [border: (1px dotted #FFFF00)]
+              LayoutText {#text} at (1,1) size 177x18
+                text run at (1,1) width 177: "This page is maintained by "
+              LayoutInline {A} at (0,0) size 79x18 [color=#0000EE]
+                LayoutText {#text} at (177,1) size 79x18
+                  text run at (177,1) width 79: "Ian Hickson"
+              LayoutText {#text} at (255,1) size 10x18
+                text run at (255,1) width 10: " ("
+              LayoutInline {A} at (0,0) size 125x18 [color=#0000EE]
+                LayoutText {#text} at (264,1) size 125x18
+                  text run at (264,1) width 125: "py8ieh@bath.ac.uk"
+              LayoutText {#text} at (388,1) size 10x18
+                text run at (388,1) width 10: ")."
+            LayoutBlockFlow {P} at (21,1298) size 444x20 [border: (1px dotted #FFFF00)]
+              LayoutText {#text} at (1,1) size 172x18
+                text run at (1,1) width 172: "Last updated in June 1999."
+layer at (372,1224) size 125x13 backgroundClip at (0,0) size 0x0 clip at (0,0) size 0x0
+  LayoutBlockFlow {DIV} at (3,3) size 125x13
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla_expected_failures/bugs/bug58402-2-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla_expected_failures/bugs/bug58402-2-expected.png
new file mode 100644
index 0000000..70f68db
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla_expected_failures/bugs/bug58402-2-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla_expected_failures/bugs/bug58402-2-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla_expected_failures/bugs/bug58402-2-expected.txt
new file mode 100644
index 0000000..f3cd060a
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla_expected_failures/bugs/bug58402-2-expected.txt
@@ -0,0 +1,46 @@
+layer at (0,0) size 800x600
+  LayoutView at (0,0) size 800x600
+layer at (0,0) size 800x600
+  LayoutBlockFlow {HTML} at (0,0) size 800x600
+    LayoutBlockFlow {BODY} at (8,8) size 784x584
+      LayoutTable {TABLE} at (0,0) size 259x240 [border: (1px outset #808080)]
+        LayoutTableSection {TBODY} at (1,1) size 257x238
+          LayoutTableRow {TR} at (0,2) size 257x22
+            LayoutTableCell {TD} at (2,11) size 41x4 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
+            LayoutTableCell {TD} at (45,2) size 76x22 [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1]
+              LayoutText {#text} at (2,2) size 32x18
+                text run at (2,2) width 32: "col 1"
+            LayoutTableCell {TD} at (123,2) size 54x22 [border: (1px inset #808080)] [r=0 c=2 rs=1 cs=1]
+              LayoutText {#text} at (2,2) size 32x18
+                text run at (2,2) width 32: "col 2"
+            LayoutTableCell {TD} at (179,2) size 76x22 [border: (1px inset #808080)] [r=0 c=3 rs=1 cs=1]
+              LayoutText {#text} at (2,2) size 32x18
+                text run at (2,2) width 32: "col 3"
+          LayoutTableRow {TR} at (0,26) size 257x78
+            LayoutTableCell {TD} at (2,54) size 41x22 [border: (1px inset #808080)] [r=1 c=0 rs=1 cs=1]
+              LayoutText {#text} at (2,2) size 37x18
+                text run at (2,2) width 37: "row 1"
+            LayoutTableCell {TD} at (45,26) size 210x210 [border: (1px inset #808080)] [r=1 c=1 rs=3 cs=3]
+              LayoutBlockFlow (floating) {DIV} at (2,2) size 206x206 [border: (3px solid #FF0000)]
+                LayoutText {#text} at (83,3) size 40x18
+                  text run at (83,3) width 40: "tjosan"
+          LayoutTableRow {TR} at (0,106) size 257x50
+            LayoutTableCell {TD} at (2,120) size 41x22 [border: (1px inset #808080)] [r=2 c=0 rs=1 cs=1]
+              LayoutText {#text} at (2,2) size 37x18
+                text run at (2,2) width 37: "row 2"
+          LayoutTableRow {TR} at (0,158) size 257x78
+            LayoutTableCell {TD} at (2,186) size 41x22 [border: (1px inset #808080)] [r=3 c=0 rs=1 cs=1]
+              LayoutText {#text} at (2,2) size 37x18
+                text run at (2,2) width 37: "row 3"
+      LayoutBlockFlow (anonymous) at (0,240) size 784x19
+        LayoutButton {INPUT} at (0,1) size 53.80x18 [bgcolor=#C0C0C0]
+          LayoutBlockFlow (anonymous) at (8,2) size 37.80x13
+            LayoutText {#text} at (0,0) size 38x13
+              text run at (0,0) width 38: "expand"
+        LayoutText {#text} at (53,0) size 5x18
+          text run at (53,0) width 5: " "
+        LayoutButton {INPUT} at (57.80,1) size 42.28x18 [bgcolor=#C0C0C0]
+          LayoutBlockFlow (anonymous) at (8,2) size 26.28x13
+            LayoutText {#text} at (0,0) size 27x13
+              text run at (0,0) width 27: "sizes"
+        LayoutText {#text} at (0,0) size 0x0
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla_expected_failures/bugs/bug91057-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla_expected_failures/bugs/bug91057-expected.png
new file mode 100644
index 0000000..2f496d96
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla_expected_failures/bugs/bug91057-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla_expected_failures/collapsing_borders/bug41262-5-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla_expected_failures/collapsing_borders/bug41262-5-expected.png
new file mode 100644
index 0000000..63487bc
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla_expected_failures/collapsing_borders/bug41262-5-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla_expected_failures/collapsing_borders/bug41262-5-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla_expected_failures/collapsing_borders/bug41262-5-expected.txt
new file mode 100644
index 0000000..a3a1d3c2
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla_expected_failures/collapsing_borders/bug41262-5-expected.txt
@@ -0,0 +1,83 @@
+layer at (0,0) size 800x600
+  LayoutView at (0,0) size 800x600
+layer at (0,0) size 800x600
+  LayoutBlockFlow {HTML} at (0,0) size 800x600
+    LayoutBlockFlow {BODY} at (8,8) size 784x576
+      LayoutBlockFlow {CENTER} at (0,0) size 784x132
+        LayoutTable {TABLE} at (339,0) size 106x80
+          LayoutTableSection {THEAD} at (0,0) size 106x20
+            LayoutTableRow {TR} at (0,0) size 106x20
+              LayoutTableCell {TD} at (0,0) size 35x20 [r=0 c=0 rs=1 cs=1]
+                LayoutText {#text} at (1,1) size 29x18
+                  text run at (1,1) width 29: "EST"
+              LayoutTableCell {TD} at (35,0) size 31x20 [border: none none none (1px solid #808080)] [r=0 c=1 rs=1 cs=1]
+                LayoutText {#text} at (2,1) size 28x18
+                  text run at (2,1) width 28: "1am"
+              LayoutTableCell {TD} at (66,0) size 40x20 [border: none none none (1px solid #808080)] [r=0 c=2 rs=1 cs=1]
+                LayoutText {#text} at (2,1) size 29x18
+                  text run at (2,1) width 29: "8pm"
+          LayoutTableSection {TBODY} at (0,20) size 106x40
+            LayoutTableRow {TR} at (0,0) size 106x20
+              LayoutTableCell {TD} at (0,0) size 35x20 [r=0 c=0 rs=1 cs=1]
+                LayoutText {#text} at (1,1) size 30x18
+                  text run at (1,1) width 30: "CST"
+              LayoutTableCell {TD} at (35,0) size 31x20 [border: none none none (1px solid #808080)] [r=0 c=1 rs=1 cs=1]
+                LayoutText {#text} at (2,1) size 28x18
+                  text run at (2,1) width 28: "2am"
+              LayoutTableCell {TD} at (66,0) size 40x20 [border: none none none (1px solid #808080)] [r=0 c=2 rs=1 cs=1]
+                LayoutText {#text} at (2,1) size 29x18
+                  text run at (2,1) width 29: "9pm"
+            LayoutTableRow {TR} at (0,20) size 106x20
+              LayoutTableCell {TD} at (0,20) size 35x20 [r=1 c=0 rs=1 cs=1]
+                LayoutText {#text} at (1,1) size 33x18
+                  text run at (1,1) width 33: "MST"
+              LayoutTableCell {TD} at (35,20) size 31x20 [border: none none none (1px solid #808080)] [r=1 c=1 rs=1 cs=1]
+                LayoutText {#text} at (2,1) size 28x18
+                  text run at (2,1) width 28: "3am"
+              LayoutTableCell {TD} at (66,20) size 40x20 [border: none none none (1px solid #808080)] [r=1 c=2 rs=1 cs=1]
+                LayoutText {#text} at (2,1) size 37x18
+                  text run at (2,1) width 37: "10pm"
+          LayoutTableSection {TFOOT} at (0,60) size 106x20
+            LayoutTableRow {TR} at (0,0) size 106x20
+              LayoutTableCell {TD} at (0,0) size 35x20 [r=0 c=0 rs=1 cs=1]
+                LayoutText {#text} at (1,1) size 28x18
+                  text run at (1,1) width 28: "PST"
+              LayoutTableCell {TD} at (35,0) size 31x20 [border: none none none (1px solid #808080)] [r=0 c=1 rs=1 cs=1]
+                LayoutText {#text} at (2,1) size 28x18
+                  text run at (2,1) width 28: "4am"
+              LayoutTableCell {TD} at (66,0) size 40x20 [border: none none none (1px solid #808080)] [r=0 c=2 rs=1 cs=1]
+                LayoutText {#text} at (2,1) size 36x18
+                  text run at (2,1) width 36: "11pm"
+        LayoutBlockFlow {P} at (0,96) size 784x36
+          LayoutButton {BUTTON} at (271.98,0) size 73.94x18 [bgcolor=#C0C0C0] [border: none (2px outset #C0C0C0) none (2px outset #C0C0C0)]
+            LayoutBlockFlow (anonymous) at (8,2) size 57.94x13
+              LayoutText {#text} at (0,0) size 58x13
+                text run at (0,0) width 18: "No "
+                text run at (17,0) width 41: "borders"
+          LayoutButton {BUTTON} at (345.92,0) size 93.84x18 [bgcolor=#C0C0C0] [border: none (2px outset #C0C0C0) none (2px outset #C0C0C0)]
+            LayoutBlockFlow (anonymous) at (8,2) size 77.84x13
+              LayoutText {#text} at (0,0) size 78x13
+                text run at (0,0) width 44: "Exterior "
+                text run at (43,0) width 35: "border"
+          LayoutButton {BUTTON} at (439.77,0) size 72.23x18 [bgcolor=#C0C0C0] [border: none (2px outset #C0C0C0) none (2px outset #C0C0C0)]
+            LayoutBlockFlow (anonymous) at (8,2) size 56.23x13
+              LayoutText {#text} at (0,0) size 57x13
+                text run at (0,0) width 17: "All "
+                text run at (16,0) width 41: "borders"
+          LayoutBR {BR} at (512,13) size 0x0
+          LayoutButton {BUTTON} at (239.50,18) size 98.83x18 [bgcolor=#C0C0C0] [border: none (2px outset #C0C0C0) none (2px outset #C0C0C0)]
+            LayoutBlockFlow (anonymous) at (8,2) size 82.83x13
+              LayoutText {#text} at (0,0) size 83x13
+                text run at (0,0) width 43: "Column "
+                text run at (42,0) width 41: "borders"
+          LayoutButton {BUTTON} at (338.33,18) size 96.91x18 [bgcolor=#C0C0C0] [border: none (2px outset #C0C0C0) none (2px outset #C0C0C0)]
+            LayoutBlockFlow (anonymous) at (8,2) size 80.91x13
+              LayoutText {#text} at (0,0) size 81x13
+                text run at (0,0) width 41: "Groups "
+                text run at (40,0) width 41: "borders"
+          LayoutButton {BUTTON} at (435.23,18) size 109.27x18 [bgcolor=#C0C0C0] [border: none (2px outset #C0C0C0) none (2px outset #C0C0C0)]
+            LayoutBlockFlow (anonymous) at (8,2) size 93.27x13
+              LayoutText {#text} at (0,0) size 94x13
+                text run at (0,0) width 32: "Table "
+                text run at (31,0) width 63: "row borders"
+          LayoutText {#text} at (0,0) size 0x0
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla_expected_failures/collapsing_borders/bug41262-6-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla_expected_failures/collapsing_borders/bug41262-6-expected.png
new file mode 100644
index 0000000..730816b
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla_expected_failures/collapsing_borders/bug41262-6-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla_expected_failures/collapsing_borders/bug41262-6-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla_expected_failures/collapsing_borders/bug41262-6-expected.txt
new file mode 100644
index 0000000..8eb2c06
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla_expected_failures/collapsing_borders/bug41262-6-expected.txt
@@ -0,0 +1,83 @@
+layer at (0,0) size 800x600
+  LayoutView at (0,0) size 800x600
+layer at (0,0) size 800x600
+  LayoutBlockFlow {HTML} at (0,0) size 800x600
+    LayoutBlockFlow {BODY} at (8,8) size 784x576
+      LayoutBlockFlow {CENTER} at (0,0) size 784x134
+        LayoutTable {TABLE} at (338,0) size 108x82 [border: none]
+          LayoutTableSection {THEAD} at (0,0) size 107x21
+            LayoutTableRow {TR} at (0,0) size 107x21
+              LayoutTableCell {TD} at (0,0) size 36x21 [border: (1px none #808080) none none (1px solid #808080)] [r=0 c=0 rs=1 cs=1]
+                LayoutText {#text} at (2,2) size 29x18
+                  text run at (2,2) width 29: "EST"
+              LayoutTableCell {TD} at (36,0) size 31x21 [border: (1px none #808080) none none (1px solid #808080)] [r=0 c=1 rs=1 cs=1]
+                LayoutText {#text} at (2,2) size 28x18
+                  text run at (2,2) width 28: "1am"
+              LayoutTableCell {TD} at (67,0) size 40x21 [border: (1px none #808080) none none (1px solid #808080)] [r=0 c=2 rs=1 cs=1]
+                LayoutText {#text} at (2,2) size 29x18
+                  text run at (2,2) width 29: "8pm"
+          LayoutTableSection {TBODY} at (0,21) size 107x40
+            LayoutTableRow {TR} at (0,0) size 107x20
+              LayoutTableCell {TD} at (0,0) size 36x20 [border: none none none (1px solid #808080)] [r=0 c=0 rs=1 cs=1]
+                LayoutText {#text} at (2,1) size 30x18
+                  text run at (2,1) width 30: "CST"
+              LayoutTableCell {TD} at (36,0) size 31x20 [border: none none none (1px solid #808080)] [r=0 c=1 rs=1 cs=1]
+                LayoutText {#text} at (2,1) size 28x18
+                  text run at (2,1) width 28: "2am"
+              LayoutTableCell {TD} at (67,0) size 40x20 [border: none none none (1px solid #808080)] [r=0 c=2 rs=1 cs=1]
+                LayoutText {#text} at (2,1) size 29x18
+                  text run at (2,1) width 29: "9pm"
+            LayoutTableRow {TR} at (0,20) size 107x20
+              LayoutTableCell {TD} at (0,20) size 36x20 [border: none none none (1px solid #808080)] [r=1 c=0 rs=1 cs=1]
+                LayoutText {#text} at (2,1) size 33x18
+                  text run at (2,1) width 33: "MST"
+              LayoutTableCell {TD} at (36,20) size 31x20 [border: none none none (1px solid #808080)] [r=1 c=1 rs=1 cs=1]
+                LayoutText {#text} at (2,1) size 28x18
+                  text run at (2,1) width 28: "3am"
+              LayoutTableCell {TD} at (67,20) size 40x20 [border: none none none (1px solid #808080)] [r=1 c=2 rs=1 cs=1]
+                LayoutText {#text} at (2,1) size 37x18
+                  text run at (2,1) width 37: "10pm"
+          LayoutTableSection {TFOOT} at (0,61) size 107x20
+            LayoutTableRow {TR} at (0,0) size 107x20
+              LayoutTableCell {TD} at (0,0) size 36x20 [border: none none none (1px solid #808080)] [r=0 c=0 rs=1 cs=1]
+                LayoutText {#text} at (2,1) size 28x18
+                  text run at (2,1) width 28: "PST"
+              LayoutTableCell {TD} at (36,0) size 31x20 [border: none none none (1px solid #808080)] [r=0 c=1 rs=1 cs=1]
+                LayoutText {#text} at (2,1) size 28x18
+                  text run at (2,1) width 28: "4am"
+              LayoutTableCell {TD} at (67,0) size 40x20 [border: none none none (1px solid #808080)] [r=0 c=2 rs=1 cs=1]
+                LayoutText {#text} at (2,1) size 36x18
+                  text run at (2,1) width 36: "11pm"
+        LayoutBlockFlow {P} at (0,98) size 784x36
+          LayoutButton {BUTTON} at (271.98,0) size 73.94x18 [bgcolor=#C0C0C0] [border: none (2px outset #C0C0C0) none (2px outset #C0C0C0)]
+            LayoutBlockFlow (anonymous) at (8,2) size 57.94x13
+              LayoutText {#text} at (0,0) size 58x13
+                text run at (0,0) width 18: "No "
+                text run at (17,0) width 41: "borders"
+          LayoutButton {BUTTON} at (345.92,0) size 93.84x18 [bgcolor=#C0C0C0] [border: none (2px outset #C0C0C0) none (2px outset #C0C0C0)]
+            LayoutBlockFlow (anonymous) at (8,2) size 77.84x13
+              LayoutText {#text} at (0,0) size 78x13
+                text run at (0,0) width 44: "Exterior "
+                text run at (43,0) width 35: "border"
+          LayoutButton {BUTTON} at (439.77,0) size 72.23x18 [bgcolor=#C0C0C0] [border: none (2px outset #C0C0C0) none (2px outset #C0C0C0)]
+            LayoutBlockFlow (anonymous) at (8,2) size 56.23x13
+              LayoutText {#text} at (0,0) size 57x13
+                text run at (0,0) width 17: "All "
+                text run at (16,0) width 41: "borders"
+          LayoutBR {BR} at (512,13) size 0x0
+          LayoutButton {BUTTON} at (239.50,18) size 98.83x18 [bgcolor=#C0C0C0] [border: none (2px outset #C0C0C0) none (2px outset #C0C0C0)]
+            LayoutBlockFlow (anonymous) at (8,2) size 82.83x13
+              LayoutText {#text} at (0,0) size 83x13
+                text run at (0,0) width 43: "Column "
+                text run at (42,0) width 41: "borders"
+          LayoutButton {BUTTON} at (338.33,18) size 96.91x18 [bgcolor=#C0C0C0] [border: none (2px outset #C0C0C0) none (2px outset #C0C0C0)]
+            LayoutBlockFlow (anonymous) at (8,2) size 80.91x13
+              LayoutText {#text} at (0,0) size 81x13
+                text run at (0,0) width 41: "Groups "
+                text run at (40,0) width 41: "borders"
+          LayoutButton {BUTTON} at (435.23,18) size 109.27x18 [bgcolor=#C0C0C0] [border: none (2px outset #C0C0C0) none (2px outset #C0C0C0)]
+            LayoutBlockFlow (anonymous) at (8,2) size 93.27x13
+              LayoutText {#text} at (0,0) size 94x13
+                text run at (0,0) width 32: "Table "
+                text run at (31,0) width 63: "row borders"
+          LayoutText {#text} at (0,0) size 0x0
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla_expected_failures/marvin/backgr_fixed-bg-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla_expected_failures/marvin/backgr_fixed-bg-expected.png
new file mode 100644
index 0000000..20d9f95
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla_expected_failures/marvin/backgr_fixed-bg-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/forms/select/menulist-appearance-rtl-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/forms/select/menulist-appearance-rtl-expected.txt
index 2c9b570..29a7ff7 100644
--- a/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/forms/select/menulist-appearance-rtl-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/forms/select/menulist-appearance-rtl-expected.txt
@@ -64,8 +64,8 @@
         LayoutBlockFlow (anonymous) at (0,36) size 784x19
           LayoutMenuList {SELECT} at (0,1) size 118x18 [bgcolor=#F8F8F8]
             LayoutBlockFlow (anonymous) at (0,0) size 118x21
-              LayoutText (anonymous) at (8,2) size 79x13
-                text run at (8,2) width 79 RTL: "\x{627}\x{644}\x{627}\x{642}\x{62A}\x{631}\x{627}\x{62D}\x{627}\x{62A} / \x{627}\x{644}\x{634}\x{643}\x{627}\x{648}\x{64A}"
+              LayoutText (anonymous) at (8,2) size 87x13
+                text run at (8,2) width 87 RTL: "\x{627}\x{644}\x{627}\x{642}\x{62A}\x{631}\x{627}\x{62D}\x{627}\x{62A} / \x{627}\x{644}\x{634}\x{643}\x{627}\x{648}\x{64A}"
           LayoutText {#text} at (0,0) size 0x0
       LayoutBlockFlow {HR} at (0,309) size 784x2 [border: (1px inset #EEEEEE)]
       LayoutBlockFlow {P} at (0,327) size 784x18
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/text/drawBidiText-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/text/drawBidiText-expected.txt
index 3918302..bc1b99e 100644
--- a/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/text/drawBidiText-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.9/fast/text/drawBidiText-expected.txt
@@ -32,8 +32,8 @@
       LayoutText {#text} at (2,0) size 113x21
         text run at (2,0) width 113 RTL: "\x{5DE}\x{5E9}\x{5D4}\x{5D5} \x{5E2}\x{5DD} \x{5E0}\x{5B4}\x{5E7}\x{5BC}\x{5D5}\x{5BC}\x{5D3}"
     LayoutBlockFlow {OPTION} at (1,113.97) size 331.80x25
-      LayoutText {#text} at (2,0) size 77x21
-        text run at (2,0) width 77 RTL: "\x{627}\x{644}\x{644}\x{63A}\x{629} \x{627}\x{644}\x{639}\x{631}\x{628}\x{64A}\x{629}"
+      LayoutText {#text} at (2,0) size 74x21
+        text run at (2,0) width 74 RTL: "\x{627}\x{644}\x{644}\x{63A}\x{629} \x{627}\x{644}\x{639}\x{631}\x{628}\x{64A}\x{629}"
     LayoutBlockFlow {OPTION} at (1,138.97) size 331.80x22.59
       LayoutText {#text} at (2,0) size 132x21
         text run at (2,0) width 132: "Et volia\x{300}: ATSUI!"
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/fast/forms/select/menulist-appearance-rtl-expected.png b/third_party/WebKit/LayoutTests/platform/mac-retina/fast/forms/select/menulist-appearance-rtl-expected.png
new file mode 100644
index 0000000..1386b807
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-retina/fast/forms/select/menulist-appearance-rtl-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/fast/forms/select/menulist-appearance-rtl-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-retina/fast/forms/select/menulist-appearance-rtl-expected.txt
new file mode 100644
index 0000000..0123fdf
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-retina/fast/forms/select/menulist-appearance-rtl-expected.txt
@@ -0,0 +1,168 @@
+layer at (0,0) size 800x600
+  LayoutView at (0,0) size 800x600
+layer at (0,0) size 800x549
+  LayoutBlockFlow {HTML} at (0,0) size 800x549
+    LayoutBlockFlow {BODY} at (8,16) size 784x525
+      LayoutBlockFlow {P} at (0,0) size 784x36
+        LayoutText {#text} at (0,0) size 758x36
+          text run at (0,0) width 758: "This tests that bidirectional text is correctly rendered in popup controls. The order of the text below each popup button"
+          text run at (0,18) width 600: "should match the order of the select's option text, and the order of the text in the popup menu."
+      LayoutBlockFlow {DL} at (0,52) size 784x168
+        LayoutBlockFlow {DT} at (0,0) size 784x18
+          LayoutText {#text} at (0,0) size 286x18
+            text run at (0,0) width 286: "1) direction: rtl; -webkit-rtl-ordering: logical"
+        LayoutBlockFlow {DD} at (40,18) size 744x38
+          LayoutBlockFlow (anonymous) at (0,0) size 744x19
+            LayoutMenuList {SELECT} at (0,1) size 100x18 [bgcolor=#F8F8F8]
+              LayoutBlockFlow (anonymous) at (0,0) size 100x18
+                LayoutText (anonymous) at (31,2) size 61x13
+                  text run at (31,2) width 43 RTL: "\x{5D0}\x{5E4}\x{5E8}\x{5E1}\x{5DE}\x{5D5}\x{5DF}"
+                  text run at (73,2) width 19: "abc"
+            LayoutText {#text} at (0,0) size 0x0
+          LayoutBlockFlow {DIV} at (0,19) size 100x19
+            LayoutText {#text} at (18,1) size 82x18
+              text run at (18,1) width 60 RTL: "\x{5D0}\x{5E4}\x{5E8}\x{5E1}\x{5DE}\x{5D5}\x{5DF}"
+              text run at (77,1) width 23: "abc"
+        LayoutBlockFlow {DT} at (0,56) size 784x18
+          LayoutText {#text} at (0,0) size 118x18
+            text run at (0,0) width 118: "2) text-align: right"
+        LayoutBlockFlow {DD} at (40,74) size 744x38
+          LayoutBlockFlow (anonymous) at (0,0) size 744x19
+            LayoutMenuList {SELECT} at (0,1) size 200x18 [bgcolor=#F8F8F8]
+              LayoutBlockFlow (anonymous) at (0,0) size 200x18
+                LayoutText (anonymous) at (8,2) size 61x13
+                  text run at (8,2) width 19: "abc"
+                  text run at (26,2) width 43 RTL: "\x{5D0}\x{5E4}\x{5E8}\x{5E1}\x{5DE}\x{5D5}\x{5DF}"
+            LayoutText {#text} at (0,0) size 0x0
+          LayoutBlockFlow {DIV} at (0,19) size 200x19
+            LayoutText {#text} at (0,1) size 82x18
+              text run at (0,1) width 23: "abc"
+              text run at (22,1) width 60 RTL: "\x{5D0}\x{5E4}\x{5E8}\x{5E1}\x{5DE}\x{5D5}\x{5DF}"
+        LayoutBlockFlow {DT} at (0,112) size 784x18
+          LayoutText {#text} at (0,0) size 72x18
+            text run at (0,0) width 72: "3) No style"
+        LayoutBlockFlow {DD} at (40,130) size 744x38
+          LayoutBlockFlow (anonymous) at (0,0) size 744x19
+            LayoutMenuList {SELECT} at (0,1) size 100x18 [bgcolor=#F8F8F8]
+              LayoutBlockFlow (anonymous) at (0,0) size 100x18
+                LayoutText (anonymous) at (8,2) size 61x13
+                  text run at (8,2) width 19: "abc"
+                  text run at (26,2) width 43 RTL: "\x{5D0}\x{5E4}\x{5E8}\x{5E1}\x{5DE}\x{5D5}\x{5DF}"
+            LayoutText {#text} at (0,0) size 0x0
+          LayoutBlockFlow {DIV} at (0,19) size 100x19
+            LayoutText {#text} at (0,1) size 82x18
+              text run at (0,1) width 23: "abc"
+              text run at (22,1) width 60 RTL: "\x{5D0}\x{5E4}\x{5E8}\x{5E1}\x{5DE}\x{5D5}\x{5DF}"
+      LayoutBlockFlow {HR} at (0,236) size 784x2 [border: (1px inset #EEEEEE)]
+      LayoutBlockFlow {DIV} at (0,246) size 784x55
+        LayoutBlockFlow (anonymous) at (0,0) size 784x18
+          LayoutText {#text} at (0,0) size 632x18
+            text run at (0,0) width 632: "The following line and the SELECT element should have same text, and no characters are lacking."
+        LayoutBlockFlow {DIV} at (0,18) size 784x18
+          LayoutText {#text} at (0,0) size 99x16
+            text run at (0,0) width 99 RTL: "\x{627}\x{644}\x{627}\x{642}\x{62A}\x{631}\x{627}\x{62D}\x{627}\x{62A} / \x{627}\x{644}\x{634}\x{643}\x{627}\x{648}\x{64A}"
+        LayoutBlockFlow (anonymous) at (0,36) size 784x19
+          LayoutMenuList {SELECT} at (0,1) size 115x18 [bgcolor=#F8F8F8]
+            LayoutBlockFlow (anonymous) at (0,0) size 115x21
+              LayoutText (anonymous) at (8,2) size 84x13
+                text run at (8,2) width 84 RTL: "\x{627}\x{644}\x{627}\x{642}\x{62A}\x{631}\x{627}\x{62D}\x{627}\x{62A} / \x{627}\x{644}\x{634}\x{643}\x{627}\x{648}\x{64A}"
+          LayoutText {#text} at (0,0) size 0x0
+      LayoutBlockFlow {HR} at (0,309) size 784x2 [border: (1px inset #EEEEEE)]
+      LayoutBlockFlow {P} at (0,327) size 784x18
+        LayoutText {#text} at (0,0) size 709x18
+          text run at (0,0) width 709: "Verify that the alignment and writing direction of each selected item matches the one below the pop-up button."
+layer at (8,377) size 784x164
+  LayoutBlockFlow {DIV} at (0,361) size 784x164
+    LayoutMultiColumnSet (anonymous) at (0,0) size 784x164
+layer at (8,377) size 384x328 backgroundClip at (0,0) size 800x600 clip at (0,0) size 800x600
+  LayoutMultiColumnFlowThread (anonymous) at (0,0) size 384x328
+    LayoutBlockFlow {DIV} at (0,0) size 384x164
+      LayoutMenuList {SELECT} at (0,0) size 350x23 [bgcolor=#F8F8F8] [border: (1px solid #A6A6A6)]
+        LayoutBlockFlow (anonymous) at (1,1) size 348x21
+          LayoutText (anonymous) at (8,1) size 198x18
+            text run at (8,1) width 38: "First "
+            text run at (45,1) width 61 RTL: ") \x{5E8}\x{5D1}\x{5D9}\x{5E2}\x{5D9}\x{5EA}"
+            text run at (105,1) width 21: "03"
+            text run at (125,1) width 46 RTL: "\x{5E9}\x{5E0}\x{5D9}\x{5D4} ("
+            text run at (170,1) width 36: " fifth"
+      LayoutBlockFlow {DIV} at (0,23) size 352x18
+        LayoutText {#text} at (1,1) size 163x16
+          text run at (1,1) width 32: "First "
+          text run at (32,1) width 48 RTL: ") \x{5E8}\x{5D1}\x{5D9}\x{5E2}\x{5D9}\x{5EA}"
+          text run at (80,1) width 17: "03"
+          text run at (96,1) width 37 RTL: "\x{5E9}\x{5E0}\x{5D9}\x{5D4} ("
+          text run at (132,1) width 32: " fifth"
+      LayoutMenuList {SELECT} at (0,41) size 350x23 [bgcolor=#F8F8F8] [border: (1px solid #A6A6A6)]
+        LayoutBlockFlow (anonymous) at (1,1) size 348x21
+          LayoutText (anonymous) at (8,1) size 198x18
+            text run at (8,1) width 31: "fifth"
+            text run at (38,1) width 65 RTL: ") \x{5E8}\x{5D1}\x{5D9}\x{5E2}\x{5D9}\x{5EA} "
+            text run at (103,1) width 21: "03"
+            text run at (123,1) width 50 RTL: " \x{5E9}\x{5E0}\x{5D9}\x{5D4} ("
+            text run at (172,1) width 34: "First"
+      LayoutBlockFlow {DIV} at (0,64) size 352x18
+        LayoutText {#text} at (1,1) size 163x16
+          text run at (1,1) width 27: "fifth"
+          text run at (27,1) width 52 RTL: ") \x{5E8}\x{5D1}\x{5D9}\x{5E2}\x{5D9}\x{5EA} "
+          text run at (78,1) width 17: "03"
+          text run at (94,1) width 42 RTL: " \x{5E9}\x{5E0}\x{5D9}\x{5D4} ("
+          text run at (135,1) width 29: "First"
+      LayoutMenuList {SELECT} at (0,82) size 350x23 [bgcolor=#F8F8F8] [border: (1px solid #A6A6A6)]
+        LayoutBlockFlow (anonymous) at (1,1) size 348x21
+          LayoutText (anonymous) at (8,1) size 198x18
+            text run at (8,1) width 198 LTR override: "First \x{5E9}\x{5E0}\x{5D9}\x{5D4} (03) \x{5E8}\x{5D1}\x{5D9}\x{5E2}\x{5D9}\x{5EA} fifth"
+      LayoutBlockFlow {DIV} at (0,105) size 352x18
+        LayoutText {#text} at (1,1) size 163x16
+          text run at (1,1) width 163 LTR override: "First \x{5E9}\x{5E0}\x{5D9}\x{5D4} (03) \x{5E8}\x{5D1}\x{5D9}\x{5E2}\x{5D9}\x{5EA} fifth"
+      LayoutMenuList {SELECT} at (0,123) size 350x23 [bgcolor=#F8F8F8] [border: (1px solid #A6A6A6)]
+        LayoutBlockFlow (anonymous) at (1,1) size 348x21
+          LayoutText (anonymous) at (8,1) size 198x18
+            text run at (8,1) width 198 RTL override: "First \x{5E9}\x{5E0}\x{5D9}\x{5D4} (03) \x{5E8}\x{5D1}\x{5D9}\x{5E2}\x{5D9}\x{5EA} fifth"
+      LayoutBlockFlow {DIV} at (0,146) size 352x18
+        LayoutText {#text} at (1,1) size 163x16
+          text run at (1,1) width 163 RTL override: "First \x{5E9}\x{5E0}\x{5D9}\x{5D4} (03) \x{5E8}\x{5D1}\x{5D9}\x{5E2}\x{5D9}\x{5EA} fifth"
+    LayoutBlockFlow {DIV} at (0,164) size 384x164
+      LayoutMenuList {SELECT} at (0,0) size 350x23 [bgcolor=#F8F8F8] [border: (1px solid #A6A6A6)]
+        LayoutBlockFlow (anonymous) at (1,1) size 348x21
+          LayoutText (anonymous) at (142,1) size 198x18
+            text run at (142,1) width 39: "First "
+            text run at (180,1) width 60 RTL: ") \x{5E8}\x{5D1}\x{5D9}\x{5E2}\x{5D9}\x{5EA}"
+            text run at (239,1) width 21: "03"
+            text run at (259,1) width 46 RTL: "\x{5E9}\x{5E0}\x{5D9}\x{5D4} ("
+            text run at (304,1) width 36: " fifth"
+      LayoutBlockFlow {DIV} at (0,23) size 352x18
+        LayoutText {#text} at (188,1) size 163x16
+          text run at (188,1) width 33: "First "
+          text run at (220,1) width 48 RTL: ") \x{5E8}\x{5D1}\x{5D9}\x{5E2}\x{5D9}\x{5EA}"
+          text run at (267,1) width 18: "03"
+          text run at (284,1) width 37 RTL: "\x{5E9}\x{5E0}\x{5D9}\x{5D4} ("
+          text run at (320,1) width 31: " fifth"
+      LayoutMenuList {SELECT} at (0,41) size 350x23 [bgcolor=#F8F8F8] [border: (1px solid #A6A6A6)]
+        LayoutBlockFlow (anonymous) at (1,1) size 348x21
+          LayoutText (anonymous) at (142,1) size 198x18
+            text run at (142,1) width 32: "fifth"
+            text run at (173,1) width 65 RTL: ") \x{5E8}\x{5D1}\x{5D9}\x{5E2}\x{5D9}\x{5EA} "
+            text run at (237,1) width 21: "03"
+            text run at (257,1) width 50 RTL: " \x{5E9}\x{5E0}\x{5D9}\x{5D4} ("
+            text run at (306,1) width 34: "First"
+      LayoutBlockFlow {DIV} at (0,64) size 352x18
+        LayoutText {#text} at (188,1) size 163x16
+          text run at (188,1) width 28: "fifth"
+          text run at (215,1) width 52 RTL: ") \x{5E8}\x{5D1}\x{5D9}\x{5E2}\x{5D9}\x{5EA} "
+          text run at (266,1) width 17: "03"
+          text run at (282,1) width 42 RTL: " \x{5E9}\x{5E0}\x{5D9}\x{5D4} ("
+          text run at (323,1) width 28: "First"
+      LayoutMenuList {SELECT} at (0,82) size 350x23 [bgcolor=#F8F8F8] [border: (1px solid #A6A6A6)]
+        LayoutBlockFlow (anonymous) at (1,1) size 348x21
+          LayoutText (anonymous) at (142,1) size 198x18
+            text run at (142,1) width 198 LTR override: "First \x{5E9}\x{5E0}\x{5D9}\x{5D4} (03) \x{5E8}\x{5D1}\x{5D9}\x{5E2}\x{5D9}\x{5EA} fifth"
+      LayoutBlockFlow {DIV} at (0,105) size 352x18
+        LayoutText {#text} at (188,1) size 163x16
+          text run at (188,1) width 163 LTR override: "First \x{5E9}\x{5E0}\x{5D9}\x{5D4} (03) \x{5E8}\x{5D1}\x{5D9}\x{5E2}\x{5D9}\x{5EA} fifth"
+      LayoutMenuList {SELECT} at (0,123) size 350x23 [bgcolor=#F8F8F8] [border: (1px solid #A6A6A6)]
+        LayoutBlockFlow (anonymous) at (1,1) size 348x21
+          LayoutText (anonymous) at (142,1) size 198x18
+            text run at (142,1) width 198 RTL override: "First \x{5E9}\x{5E0}\x{5D9}\x{5D4} (03) \x{5E8}\x{5D1}\x{5D9}\x{5E2}\x{5D9}\x{5EA} fifth"
+      LayoutBlockFlow {DIV} at (0,146) size 352x18
+        LayoutText {#text} at (188,1) size 163x16
+          text run at (188,1) width 163 RTL override: "First \x{5E9}\x{5E0}\x{5D9}\x{5D4} (03) \x{5E8}\x{5D1}\x{5D9}\x{5E2}\x{5D9}\x{5EA} fifth"
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/fast/text/drawBidiText-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-retina/fast/text/drawBidiText-expected.txt
new file mode 100644
index 0000000..e91f5d3
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-retina/fast/text/drawBidiText-expected.txt
@@ -0,0 +1,56 @@
+layer at (0,0) size 800x600
+  LayoutView at (0,0) size 800x600
+layer at (0,0) size 800x600
+  LayoutBlockFlow {HTML} at (0,0) size 800x600
+    LayoutBlockFlow {BODY} at (8,8) size 784x584
+      LayoutBlockFlow {P} at (0,0) size 784x18
+        LayoutText {#text} at (0,0) size 285x18
+          text run at (0,0) width 285: "This tests GraphicsContext::drawBidiText()."
+layer at (8,42) size 345x227 clip at (9,43) size 332x225
+  LayoutListBox {SELECT} at (0,34) size 345.22x227 [bgcolor=#FFFFFF] [border: (1px solid #999999)]
+    LayoutBlockFlow {OPTION} at (1,1) size 332.22x22.59
+      LayoutText {#text} at (2,0) size 223x21
+        text run at (2,0) width 43: "First "
+        text run at (44,0) width 68 RTL: ") \x{5E8}\x{5D1}\x{5D9}\x{5E2}\x{5D9}\x{5EA}"
+        text run at (111,0) width 24: "03"
+        text run at (134,0) width 51 RTL: "\x{5E9}\x{5E0}\x{5D9}\x{5D4} ("
+        text run at (184,0) width 41: " fifth"
+    LayoutBlockFlow {OPTION} at (1,23.59) size 332.22x22.59
+      LayoutText {#text} at (108,0) size 223x21
+        text run at (108,0) width 35: "fifth"
+        text run at (142,0) width 73 RTL: ") \x{5E8}\x{5D1}\x{5D9}\x{5E2}\x{5D9}\x{5EA} "
+        text run at (214,0) width 24: "03"
+        text run at (237,0) width 56 RTL: " \x{5E9}\x{5E0}\x{5D9}\x{5D4} ("
+        text run at (292,0) width 39: "First"
+    LayoutBlockFlow {OPTION} at (1,46.19) size 332.22x22.59
+      LayoutText {#text} at (2,0) size 223x21
+        text run at (2,0) width 223 LTR override: "First \x{5E9}\x{5E0}\x{5D9}\x{5D4} (03) \x{5E8}\x{5D1}\x{5D9}\x{5E2}\x{5D9}\x{5EA} fifth"
+    LayoutBlockFlow {OPTION} at (1,68.78) size 332.22x22.59
+      LayoutText {#text} at (107,0) size 224x21
+        text run at (107,0) width 224 RTL override: "First \x{5E9}\x{5E0}\x{5D9}\x{5D4} (03) \x{5E8}\x{5D1}\x{5D9}\x{5E2}\x{5D9}\x{5EA} fifth"
+    LayoutBlockFlow {OPTION} at (1,91.38) size 332.22x22.59
+      LayoutText {#text} at (2,0) size 112x21
+        text run at (2,0) width 112 RTL: "\x{5DE}\x{5E9}\x{5D4}\x{5D5} \x{5E2}\x{5DD} \x{5E0}\x{5B4}\x{5E7}\x{5BC}\x{5D5}\x{5BC}\x{5D3}"
+    LayoutBlockFlow {OPTION} at (1,113.97) size 332.22x25
+      LayoutText {#text} at (2,0) size 74x21
+        text run at (2,0) width 74 RTL: "\x{627}\x{644}\x{644}\x{63A}\x{629} \x{627}\x{644}\x{639}\x{631}\x{628}\x{64A}\x{629}"
+    LayoutBlockFlow {OPTION} at (1,138.97) size 332.22x22.59
+      LayoutText {#text} at (2,0) size 130x21
+        text run at (2,0) width 130: "Et volia\x{300}: ATSUI!"
+    LayoutBlockFlow {OPTION} at (1,161.56) size 332.22x22.59
+      LayoutText {#text} at (2,0) size 302x21
+        text run at (2,0) width 97: "Directional "
+        text run at (98,0) width 80 RTL override: "\x{202E}overrides"
+        text run at (177,0) width 127: "\x{202C} are confusing."
+    LayoutBlockFlow {OPTION} at (1,184.16) size 332.22x22.59
+      LayoutText {#text} at (2,0) size 329x21
+        text run at (2,0) width 87: "She said \x{201C}"
+        text run at (88,0) width 76 RTL: " \x{5D1}\x{5DE}\x{5D6}\x{5D5}\x{5D5}\x{5D3}\x{5D4}!"
+        text run at (163,0) width 37: "TNT"
+        text run at (199,0) width 25 RTL: "\x{202B}\x{5D9}\x{5E9} "
+        text run at (223,0) width 108: "\x{202C}\x{201D} and ran off"
+layer at (8,269) size 377x18 clip at (9,270) size 364x16
+  LayoutListBox {SELECT} at (0,261) size 377.11x18 [bgcolor=#FFFFFF] [border: (1px solid #999999)]
+    LayoutBlockFlow {OPTION} at (1,1) size 364.11x16
+      LayoutText {#text} at (2,0) size 361x15
+        text run at (2,0) width 361: "There are two ways to measure text: my way and the wrong way"
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/fast/writing-mode/Kusa-Makura-background-canvas-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-retina/fast/writing-mode/Kusa-Makura-background-canvas-expected.txt
new file mode 100644
index 0000000..c437d88a
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-retina/fast/writing-mode/Kusa-Makura-background-canvas-expected.txt
@@ -0,0 +1,2910 @@
+layer at (0,0) size 800x600 scrollX 3551.00 scrollWidth 4351
+  LayoutView at (0,0) size 800x600
+layer at (-3551,0) size 4351x600 backgroundClip at (0,0) size 800x600 clip at (0,0) size 800x600
+  LayoutBlockFlow {HTML} at (0,0) size 4351.34x600
+    LayoutBlockFlow {BODY} at (60,48) size 4231.34x504
+      LayoutBlockFlow {H1} at (0,0) size 48x504
+        LayoutText {#text} at (5,0) size 37x64
+          text run at (5,0) width 64: "\x{8349}\x{6795}"
+      LayoutBlockFlow {H2} at (69.44,0) size 36x504
+        LayoutText {#text} at (4,0) size 28x96
+          text run at (4,0) width 96: "\x{590F}\x{76EE}\x{6F31}\x{77F3}"
+      LayoutBlockFlow {DIV} at (125.34,0) size 4106x504
+        LayoutBlockFlow (anonymous) at (0,0) size 2286x504
+          LayoutBR {BR} at (0,0) size 18x0
+          LayoutBR {BR} at (18,0) size 18x0
+          LayoutBR {BR} at (36,0) size 18x0
+          LayoutText {#text} at (56,0) size 18x144
+            text run at (56,0) width 144: "\x{3000}\x{3000}\x{3000}\x{3000}\x{3000}\x{3000}\x{3000}\x{3000}\x{4E00}"
+          LayoutBR {BR} at (56,143) size 18x1
+          LayoutBR {BR} at (76,0) size 18x0
+          LayoutText {#text} at (104,0) size 18x16
+            text run at (104,0) width 16: "\x{3000}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x34
+            LayoutRubyRun (anonymous) at (102,15) size 22x36
+              LayoutRubyText {RT} at (-10,0) size 13x36
+                LayoutText {#text} at (2,0) size 10x36
+                  text run at (2,0) width 36: "\x{3084}\x{307E}\x{307F}\x{3061}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x36
+                LayoutInline {RB} at (0,0) size 18x34
+                  LayoutText {#text} at (2,1) size 18x34
+                    text run at (2,1) width 34: "\x{5C71}\x{8DEF}"
+          LayoutText {#text} at (104,50) size 18x208
+            text run at (104,50) width 208: "\x{3092}\x{767B}\x{308A}\x{306A}\x{304C}\x{3089}\x{3001}\x{3053}\x{3046}\x{8003}\x{3048}\x{305F}\x{3002}"
+          LayoutBR {BR} at (104,258) size 18x0
+          LayoutText {#text} at (132,0) size 18x16
+            text run at (132,0) width 16: "\x{3000}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (130,16) size 22x16
+              LayoutRubyText {RT} at (-10,0) size 13x16
+                LayoutText {#text} at (2,3) size 10x10
+                  text run at (2,3) width 9: "\x{3061}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x16
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,0) size 18x16
+                    text run at (2,0) width 16: "\x{667A}"
+          LayoutText {#text} at (132,32) size 18x64
+            text run at (132,32) width 64: "\x{306B}\x{50CD}\x{3051}\x{3070}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (130,95) size 22x18
+              LayoutRubyText {RT} at (-10,0) size 13x18
+                LayoutText {#text} at (2,0) size 10x18
+                  text run at (2,0) width 18: "\x{304B}\x{3069}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x18
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,1) size 18x16
+                    text run at (2,1) width 16: "\x{89D2}"
+          LayoutText {#text} at (132,112) size 18x64
+            text run at (132,112) width 64: "\x{304C}\x{7ACB}\x{3064}\x{3002}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x19
+            LayoutRubyRun (anonymous) at (130,172) size 22x27
+              LayoutRubyText {RT} at (-10,0) size 13x27
+                LayoutText {#text} at (2,0) size 10x27
+                  text run at (2,0) width 27: "\x{3058}\x{3087}\x{3046}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x27
+                LayoutInline {RB} at (0,0) size 18x17
+                  LayoutText {#text} at (2,5) size 18x17
+                    text run at (2,5) width 16: "\x{60C5}"
+          LayoutText {#text} at (132,195) size 18x16
+            text run at (132,195) width 16: "\x{306B}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (130,210) size 22x18
+              LayoutRubyText {RT} at (-10,0) size 13x18
+                LayoutText {#text} at (2,0) size 10x18
+                  text run at (2,0) width 18: "\x{3055}\x{304A}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x18
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,1) size 18x16
+                    text run at (2,1) width 16: "\x{68F9}"
+          LayoutText {#text} at (132,227) size 18x176
+            text run at (132,227) width 176: "\x{3055}\x{305B}\x{3070}\x{6D41}\x{3055}\x{308C}\x{308B}\x{3002}\x{610F}\x{5730}\x{3092}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (130,402) size 22x18
+              LayoutRubyText {RT} at (-10,0) size 13x18
+                LayoutText {#text} at (2,0) size 10x18
+                  text run at (2,0) width 18: "\x{3068}\x{304A}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x18
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,1) size 18x16
+                    text run at (2,1) width 16: "\x{901A}"
+          LayoutText {#text} at (132,419) size 18x32
+            text run at (132,419) width 32: "\x{305B}\x{3070}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x42
+            LayoutRubyRun (anonymous) at (130,448) size 22x45
+              LayoutRubyText {RT} at (-10,0) size 13x45
+                LayoutText {#text} at (2,0) size 10x45
+                  text run at (2,0) width 45: "\x{304D}\x{3085}\x{3046}\x{304F}\x{3064}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x45
+                LayoutInline {RB} at (0,0) size 18x39
+                  LayoutText {#text} at (2,3) size 18x39
+                    text run at (2,3) width 38: "\x{7AAE}\x{5C48}"
+          LayoutText {#text} at (154,0) size 18x256
+            text run at (154,0) width 256: "\x{3060}\x{3002}\x{3068}\x{304B}\x{304F}\x{306B}\x{4EBA}\x{306E}\x{4E16}\x{306F}\x{4F4F}\x{307F}\x{306B}\x{304F}\x{3044}\x{3002}"
+          LayoutBR {BR} at (154,256) size 18x0
+          LayoutText {#text} at (182,0) size 18x112
+            text run at (182,0) width 112: "\x{3000}\x{4F4F}\x{307F}\x{306B}\x{304F}\x{3055}\x{304C}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x17
+            LayoutRubyRun (anonymous) at (180,110.98) size 22x18
+              LayoutRubyText {RT} at (-10,0) size 13x18
+                LayoutText {#text} at (2,0) size 10x18
+                  text run at (2,0) width 18: "\x{3053}\x{3046}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x18
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,1) size 18x16
+                    text run at (2,1) width 16: "\x{9AD8}"
+          LayoutText {#text} at (182,127) size 46x496
+            text run at (182,127) width 368: "\x{3058}\x{308B}\x{3068}\x{3001}\x{5B89}\x{3044}\x{6240}\x{3078}\x{5F15}\x{304D}\x{8D8A}\x{3057}\x{305F}\x{304F}\x{306A}\x{308B}\x{3002}\x{3069}\x{3053}\x{3078}\x{8D8A}\x{3057}\x{3066}"
+            text run at (210,0) width 112: "\x{3082}\x{4F4F}\x{307F}\x{306B}\x{304F}\x{3044}\x{3068}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (208,111) size 22x18
+              LayoutRubyText {RT} at (-10,0) size 13x18
+                LayoutText {#text} at (2,0) size 10x18
+                  text run at (2,0) width 18: "\x{3055}\x{3068}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x18
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,1) size 18x16
+                    text run at (2,1) width 16: "\x{609F}"
+          LayoutText {#text} at (210,128) size 18x160
+            text run at (210,128) width 160: "\x{3063}\x{305F}\x{6642}\x{3001}\x{8A69}\x{304C}\x{751F}\x{308C}\x{3066}\x{3001}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (208,288) size 22x16
+              LayoutRubyText {RT} at (-10,0) size 13x16
+                LayoutText {#text} at (2,3) size 10x10
+                  text run at (2,3) width 9: "\x{3048}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x16
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,0) size 18x16
+                    text run at (2,0) width 16: "\x{753B}"
+          LayoutText {#text} at (210,304) size 18x80
+            text run at (210,304) width 80: "\x{304C}\x{51FA}\x{6765}\x{308B}\x{3002}"
+          LayoutBR {BR} at (210,384) size 18x0
+          LayoutText {#text} at (232,0) size 18x16
+            text run at (232,0) width 16: "\x{3000}"
+          LayoutInline {STRONG} at (0,0) size 18x48
+            LayoutText {#text} at (232,16) size 18x48
+              text run at (232,16) width 48: "\x{4EBA}\x{306E}\x{4E16}"
+          LayoutText {#text} at (232,64) size 18x432
+            text run at (232,64) width 432: "\x{3092}\x{4F5C}\x{3063}\x{305F}\x{3082}\x{306E}\x{306F}\x{795E}\x{3067}\x{3082}\x{306A}\x{3051}\x{308C}\x{3070}\x{9B3C}\x{3067}\x{3082}\x{306A}\x{3044}\x{3002}\x{3084}\x{306F}\x{308A}\x{5411}\x{3046}\x{4E09}\x{8ED2}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x42
+            LayoutRubyRun (anonymous) at (258,0) size 22x45
+              LayoutRubyText {RT} at (-10,0) size 13x45
+                LayoutText {#text} at (2,0) size 10x45
+                  text run at (2,0) width 45: "\x{308A}\x{3087}\x{3046}\x{3069}\x{306A}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x45
+                LayoutInline {RB} at (0,0) size 18x39
+                  LayoutText {#text} at (2,3) size 18x39
+                    text run at (2,3) width 38: "\x{4E21}\x{96A3}"
+          LayoutText {#text} at (260,42) size 18x384
+            text run at (260,42) width 384: "\x{308A}\x{306B}\x{3061}\x{3089}\x{3061}\x{3089}\x{3059}\x{308B}\x{305F}\x{3060}\x{306E}\x{4EBA}\x{3067}\x{3042}\x{308B}\x{3002}\x{305F}\x{3060}\x{306E}\x{4EBA}\x{304C}\x{4F5C}\x{3063}\x{305F}"
+          LayoutInline {STRONG} at (0,0) size 18x48
+            LayoutText {#text} at (260,426) size 18x48
+              text run at (260,426) width 48: "\x{4EBA}\x{306E}\x{4E16}"
+          LayoutText {#text} at (260,474) size 40x490
+            text run at (260,474) width 16: "\x{304C}"
+            text run at (282,0) width 352: "\x{4F4F}\x{307F}\x{306B}\x{304F}\x{3044}\x{304B}\x{3089}\x{3068}\x{3066}\x{3001}\x{8D8A}\x{3059}\x{56FD}\x{306F}\x{3042}\x{308B}\x{307E}\x{3044}\x{3002}\x{3042}\x{308C}\x{3070}"
+          LayoutInline {STRONG} at (0,0) size 18x64
+            LayoutText {#text} at (282,352) size 18x64
+              text run at (282,352) width 64: "\x{4EBA}\x{3067}\x{306A}\x{3057}"
+          LayoutText {#text} at (282,416) size 40x496
+            text run at (282,416) width 80: "\x{306E}\x{56FD}\x{3078}\x{884C}\x{304F}"
+            text run at (304,0) width 80: "\x{3070}\x{304B}\x{308A}\x{3060}\x{3002}"
+          LayoutInline {STRONG} at (0,0) size 18x64
+            LayoutText {#text} at (304,80) size 18x64
+              text run at (304,80) width 64: "\x{4EBA}\x{3067}\x{306A}\x{3057}"
+          LayoutText {#text} at (304,144) size 18x48
+            text run at (304,144) width 48: "\x{306E}\x{56FD}\x{306F}"
+          LayoutInline {STRONG} at (0,0) size 18x48
+            LayoutText {#text} at (304,192) size 18x48
+              text run at (304,192) width 48: "\x{4EBA}\x{306E}\x{4E16}"
+          LayoutText {#text} at (304,240) size 18x208
+            text run at (304,240) width 208: "\x{3088}\x{308A}\x{3082}\x{306A}\x{304A}\x{4F4F}\x{307F}\x{306B}\x{304F}\x{304B}\x{308D}\x{3046}\x{3002}"
+          LayoutBR {BR} at (304,448) size 18x0
+          LayoutText {#text} at (326,0) size 18x496
+            text run at (326,0) width 496: "\x{3000}\x{8D8A}\x{3059}\x{4E8B}\x{306E}\x{306A}\x{3089}\x{306C}\x{4E16}\x{304C}\x{4F4F}\x{307F}\x{306B}\x{304F}\x{3051}\x{308C}\x{3070}\x{3001}\x{4F4F}\x{307F}\x{306B}\x{304F}\x{3044}\x{6240}\x{3092}\x{3069}\x{308C}\x{307B}\x{3069}\x{304B}\x{3001}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x35
+            LayoutRubyRun (anonymous) at (352,0) size 22x36
+              LayoutRubyText {RT} at (-10,0) size 13x36
+                LayoutText {#text} at (2,0) size 10x36
+                  text run at (2,0) width 36: "\x{304F}\x{3064}\x{308D}\x{3052}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x36
+                LayoutInline {RB} at (0,0) size 18x34
+                  LayoutText {#text} at (2,1) size 18x34
+                    text run at (2,1) width 34: "\x{5BDB}\x{5BB9}"
+          LayoutText {#text} at (354,35) size 18x32
+            text run at (354,35) width 32: "\x{3066}\x{3001}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (352,66) size 22x18
+              LayoutRubyText {RT} at (-10,0) size 13x18
+                LayoutText {#text} at (2,0) size 10x18
+                  text run at (2,0) width 18: "\x{3064}\x{304B}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x18
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,1) size 18x16
+                    text run at (2,1) width 16: "\x{675F}"
+          LayoutText {#text} at (354,83) size 18x16
+            text run at (354,83) width 16: "\x{306E}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (352,99) size 22x16
+              LayoutRubyText {RT} at (-10,0) size 13x16
+                LayoutText {#text} at (2,3) size 10x10
+                  text run at (2,3) width 9: "\x{307E}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x16
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,0) size 18x16
+                    text run at (2,0) width 16: "\x{9593}"
+          LayoutText {#text} at (354,115) size 46x499
+            text run at (354,115) width 384: "\x{306E}\x{547D}\x{3092}\x{3001}\x{675F}\x{306E}\x{9593}\x{3067}\x{3082}\x{4F4F}\x{307F}\x{3088}\x{304F}\x{305B}\x{306D}\x{3070}\x{306A}\x{3089}\x{306C}\x{3002}\x{3053}\x{3053}\x{306B}\x{8A69}"
+            text run at (382,0) width 352: "\x{4EBA}\x{3068}\x{3044}\x{3046}\x{5929}\x{8077}\x{304C}\x{51FA}\x{6765}\x{3066}\x{3001}\x{3053}\x{3053}\x{306B}\x{753B}\x{5BB6}\x{3068}\x{3044}\x{3046}\x{4F7F}\x{547D}\x{304C}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (380,351) size 22x18
+              LayoutRubyText {RT} at (-10,0) size 13x18
+                LayoutText {#text} at (2,0) size 10x18
+                  text run at (2,0) width 18: "\x{304F}\x{3060}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x18
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,1) size 18x16
+                    text run at (2,1) width 16: "\x{964D}"
+          LayoutText {#text} at (382,368) size 46x496
+            text run at (382,368) width 128: "\x{308B}\x{3002}\x{3042}\x{3089}\x{3086}\x{308B}\x{82B8}\x{8853}"
+            text run at (410,0) width 112: "\x{306E}\x{58EB}\x{306F}\x{4EBA}\x{306E}\x{4E16}\x{3092}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x32
+            LayoutRubyRun (anonymous) at (408,112) size 22x32
+              LayoutRubyText {RT} at (-10,0) size 13x32
+                LayoutText {#text} at (2,0) size 10x31
+                  text run at (2,0) width 30: "\x{306E}\x{3069}\x{304B}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x32
+                LayoutInline {RB} at (0,0) size 18x32
+                  LayoutText {#text} at (2,0) size 18x32
+                    text run at (2,0) width 32: "\x{9577}\x{9591}"
+          LayoutText {#text} at (410,144) size 18x208
+            text run at (410,144) width 208: "\x{306B}\x{3057}\x{3001}\x{4EBA}\x{306E}\x{5FC3}\x{3092}\x{8C4A}\x{304B}\x{306B}\x{3059}\x{308B}\x{304C}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (408,351) size 22x18
+              LayoutRubyText {RT} at (-10,0) size 13x18
+                LayoutText {#text} at (2,0) size 10x18
+                  text run at (2,0) width 18: "\x{3086}\x{3048}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x18
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,1) size 18x16
+                    text run at (2,1) width 16: "\x{6545}"
+          LayoutText {#text} at (410,368) size 18x16
+            text run at (410,368) width 16: "\x{306B}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (408,383) size 22x18
+              LayoutRubyText {RT} at (-10,0) size 13x18
+                LayoutText {#text} at (2,0) size 10x18
+                  text run at (2,0) width 18: "\x{305F}\x{3063}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x18
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,1) size 18x16
+                    text run at (2,1) width 16: "\x{5C0A}"
+          LayoutText {#text} at (410,400) size 18x48
+            text run at (410,400) width 48: "\x{3068}\x{3044}\x{3002}"
+          LayoutBR {BR} at (410,448) size 18x0
+          LayoutText {#text} at (438,0) size 18x240
+            text run at (438,0) width 240: "\x{3000}\x{4F4F}\x{307F}\x{306B}\x{304F}\x{304D}\x{4E16}\x{304B}\x{3089}\x{3001}\x{4F4F}\x{307F}\x{306B}\x{304F}\x{304D}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x20
+            LayoutRubyRun (anonymous) at (436,235.98) size 22x27
+              LayoutRubyText {RT} at (-10,0) size 13x27
+                LayoutText {#text} at (2,0) size 10x27
+                  text run at (2,0) width 27: "\x{308F}\x{305A}\x{3089}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x27
+                LayoutInline {RB} at (0,0) size 18x17
+                  LayoutText {#text} at (2,5) size 18x17
+                    text run at (2,5) width 16: "\x{7169}"
+          LayoutText {#text} at (438,258) size 46x499
+            text run at (438,258) width 240: "\x{3044}\x{3092}\x{5F15}\x{304D}\x{629C}\x{3044}\x{3066}\x{3001}\x{3042}\x{308A}\x{304C}\x{305F}\x{3044}\x{4E16}\x{754C}"
+            text run at (466,0) width 256: "\x{3092}\x{307E}\x{306E}\x{3042}\x{305F}\x{308A}\x{306B}\x{5199}\x{3059}\x{306E}\x{304C}\x{8A69}\x{3067}\x{3042}\x{308B}\x{3001}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (464,256) size 22x16
+              LayoutRubyText {RT} at (-10,0) size 13x16
+                LayoutText {#text} at (2,3) size 10x10
+                  text run at (2,3) width 9: "\x{3048}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x16
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,0) size 18x16
+                    text run at (2,0) width 16: "\x{753B}"
+          LayoutText {#text} at (466,272) size 46x496
+            text run at (466,272) width 224: "\x{3067}\x{3042}\x{308B}\x{3002}\x{3042}\x{308B}\x{306F}\x{97F3}\x{697D}\x{3068}\x{5F6B}\x{523B}\x{3067}\x{3042}"
+            text run at (494,0) width 96: "\x{308B}\x{3002}\x{3053}\x{307E}\x{304B}\x{306B}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (492,96) size 22x16
+              LayoutRubyText {RT} at (-10,0) size 13x16
+                LayoutText {#text} at (2,3) size 10x10
+                  text run at (2,3) width 9: "\x{3044}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x16
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,0) size 18x16
+                    text run at (2,0) width 16: "\x{4E91}"
+          LayoutText {#text} at (494,112) size 46x496
+            text run at (494,112) width 384: "\x{3048}\x{3070}\x{5199}\x{3055}\x{306A}\x{3044}\x{3067}\x{3082}\x{3088}\x{3044}\x{3002}\x{305F}\x{3060}\x{307E}\x{306E}\x{3042}\x{305F}\x{308A}\x{306B}\x{898B}\x{308C}\x{3070}\x{3001}\x{305D}"
+            text run at (522,0) width 144: "\x{3053}\x{306B}\x{8A69}\x{3082}\x{751F}\x{304D}\x{3001}\x{6B4C}\x{3082}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (520,144) size 22x16
+              LayoutRubyText {RT} at (-10,0) size 13x16
+                LayoutText {#text} at (2,3) size 10x10
+                  text run at (2,3) width 9: "\x{308F}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x16
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,0) size 18x16
+                    text run at (2,0) width 16: "\x{6E67}"
+          LayoutText {#text} at (522,160) size 18x192
+            text run at (522,160) width 192: "\x{304F}\x{3002}\x{7740}\x{60F3}\x{3092}\x{7D19}\x{306B}\x{843D}\x{3055}\x{306C}\x{3068}\x{3082}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x39
+            LayoutRubyRun (anonymous) at (520,349) size 22x45
+              LayoutRubyText {RT} at (-10,0) size 13x45
+                LayoutText {#text} at (2,0) size 10x45
+                  text run at (2,0) width 45: "\x{304D}\x{3085}\x{3046}\x{305D}\x{3046}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x45
+                LayoutInline {RB} at (0,0) size 18x39
+                  LayoutText {#text} at (2,3) size 18x23
+                    text run at (2,3) width 22: "\x{7486}"
+                  LayoutText {#text} at (2,25) size 18x17
+                    text run at (2,25) width 16: "\x{93D8}"
+          LayoutText {#text} at (522,391) size 18x16
+            text run at (522,391) width 16: "\x{306E}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (520,406) size 22x18
+              LayoutRubyText {RT} at (-10,0) size 13x18
+                LayoutText {#text} at (2,0) size 10x18
+                  text run at (2,0) width 18: "\x{304A}\x{3093}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x18
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,1) size 18x16
+                    text run at (2,1) width 16: "\x{97F3}"
+          LayoutText {#text} at (522,423) size 18x16
+            text run at (522,423) width 16: "\x{306F}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x34
+            LayoutRubyRun (anonymous) at (520,438) size 22x36
+              LayoutRubyText {RT} at (-10,0) size 13x36
+                LayoutText {#text} at (2,0) size 10x36
+                  text run at (2,0) width 36: "\x{304D}\x{3087}\x{3046}\x{308A}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x36
+                LayoutInline {RB} at (0,0) size 18x34
+                  LayoutText {#text} at (2,1) size 18x34
+                    text run at (2,1) width 34: "\x{80F8}\x{88CF}"
+          LayoutText {#text} at (522,473) size 18x16
+            text run at (522,473) width 16: "\x{306B}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x17
+            LayoutRubyRun (anonymous) at (548,0) size 22x18
+              LayoutRubyText {RT} at (-10,0) size 13x18
+                LayoutText {#text} at (2,0) size 10x18
+                  text run at (2,0) width 18: "\x{304A}\x{3053}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x18
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,1) size 18x16
+                    text run at (2,1) width 16: "\x{8D77}"
+          LayoutText {#text} at (550,17) size 18x32
+            text run at (550,17) width 32: "\x{308B}\x{3002}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x34
+            LayoutRubyRun (anonymous) at (548,48) size 22x36
+              LayoutRubyText {RT} at (-10,0) size 13x36
+                LayoutText {#text} at (2,0) size 10x36
+                  text run at (2,0) width 36: "\x{305F}\x{3093}\x{305B}\x{3044}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x36
+                LayoutInline {RB} at (0,0) size 18x34
+                  LayoutText {#text} at (2,1) size 18x34
+                    text run at (2,1) width 34: "\x{4E39}\x{9752}"
+          LayoutText {#text} at (550,83) size 18x16
+            text run at (550,83) width 16: "\x{306F}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x32
+            LayoutRubyRun (anonymous) at (548,99) size 22x32
+              LayoutRubyText {RT} at (-10,0) size 13x32
+                LayoutText {#text} at (2,3) size 10x26
+                  text run at (2,3) width 25: "\x{304C}\x{304B}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x32
+                LayoutInline {RB} at (0,0) size 18x32
+                  LayoutText {#text} at (2,0) size 18x32
+                    text run at (2,0) width 32: "\x{753B}\x{67B6}"
+          LayoutText {#text} at (550,131) size 18x64
+            text run at (550,131) width 64: "\x{306B}\x{5411}\x{3063}\x{3066}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x32
+            LayoutRubyRun (anonymous) at (548,195) size 22x32
+              LayoutRubyText {RT} at (-10,0) size 13x32
+                LayoutText {#text} at (2,0) size 10x31
+                  text run at (2,0) width 30: "\x{3068}\x{307E}\x{3064}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x32
+                LayoutInline {RB} at (0,0) size 18x32
+                  LayoutText {#text} at (2,0) size 18x32
+                    text run at (2,0) width 32: "\x{5857}\x{62B9}"
+          LayoutText {#text} at (550,227) size 18x64
+            text run at (550,227) width 64: "\x{305B}\x{3093}\x{3067}\x{3082}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x32
+            LayoutRubyRun (anonymous) at (548,291) size 22x32
+              LayoutRubyText {RT} at (-10,0) size 13x32
+                LayoutText {#text} at (2,0) size 10x31
+                  text run at (2,0) width 30: "\x{3054}\x{3055}\x{3044}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x32
+                LayoutInline {RB} at (0,0) size 18x32
+                  LayoutText {#text} at (2,0) size 18x32
+                    text run at (2,0) width 32: "\x{4E94}\x{5F69}"
+          LayoutText {#text} at (550,323) size 18x16
+            text run at (550,323) width 16: "\x{306E}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x34
+            LayoutRubyRun (anonymous) at (548,338) size 22x36
+              LayoutRubyText {RT} at (-10,0) size 13x36
+                LayoutText {#text} at (2,0) size 10x36
+                  text run at (2,0) width 36: "\x{3051}\x{3093}\x{3089}\x{3093}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x36
+                LayoutInline {RB} at (0,0) size 18x34
+                  LayoutText {#text} at (2,1) size 18x34
+                    text run at (2,1) width 34: "\x{7D62}\x{721B}"
+          LayoutText {#text} at (550,373) size 18x16
+            text run at (550,373) width 16: "\x{306F}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x19
+            LayoutRubyRun (anonymous) at (548,385) size 22x27
+              LayoutRubyText {RT} at (-10,0) size 13x27
+                LayoutText {#text} at (2,0) size 10x27
+                  text run at (2,0) width 27: "\x{304A}\x{306E}\x{305A}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x27
+                LayoutInline {RB} at (0,0) size 18x17
+                  LayoutText {#text} at (2,5) size 18x17
+                    text run at (2,5) width 16: "\x{81EA}"
+          LayoutText {#text} at (550,408) size 18x32
+            text run at (550,408) width 32: "\x{304B}\x{3089}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x34
+            LayoutRubyRun (anonymous) at (548,439) size 22x36
+              LayoutRubyText {RT} at (-10,0) size 13x36
+                LayoutText {#text} at (2,0) size 10x36
+                  text run at (2,0) width 36: "\x{3057}\x{3093}\x{304C}\x{3093}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x36
+                LayoutInline {RB} at (0,0) size 18x34
+                  LayoutText {#text} at (2,1) size 18x34
+                    text run at (2,1) width 34: "\x{5FC3}\x{773C}"
+          LayoutText {#text} at (550,474) size 46x490
+            text run at (550,474) width 16: "\x{306B}"
+            text run at (578,0) width 240: "\x{6620}\x{308B}\x{3002}\x{305F}\x{3060}\x{304A}\x{306E}\x{304C}\x{4F4F}\x{3080}\x{4E16}\x{3092}\x{3001}\x{304B}\x{304F}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (576,239) size 22x18
+              LayoutRubyText {RT} at (-10,0) size 13x18
+                LayoutText {#text} at (2,0) size 10x18
+                  text run at (2,0) width 18: "\x{304B}\x{3093}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x18
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,1) size 18x16
+                    text run at (2,1) width 16: "\x{89B3}"
+          LayoutText {#text} at (578,256) size 18x64
+            text run at (578,256) width 64: "\x{3058}\x{5F97}\x{3066}\x{3001}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x70
+            LayoutRubyRun (anonymous) at (576,319) size 22x72
+              LayoutRubyText {RT} at (-10,0) size 13x72
+                LayoutText {#text} at (2,0) size 10x72
+                  text run at (2,0) width 72: "\x{308C}\x{3044}\x{3060}\x{3044}\x{307B}\x{3046}\x{3059}\x{3093}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x72
+                LayoutInline {RB} at (0,0) size 18x70
+                  LayoutText {#text} at (2,1) size 18x70
+                    text run at (2,1) width 70: "\x{970A}\x{53F0}\x{65B9}\x{5BF8}"
+          LayoutText {#text} at (578,390) size 18x80
+            text run at (578,390) width 80: "\x{306E}\x{30AB}\x{30E1}\x{30E9}\x{306B}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x71
+            LayoutRubyRun (anonymous) at (604,0) size 22x72
+              LayoutRubyText {RT} at (-10,0) size 13x72
+                LayoutText {#text} at (2,0) size 10x72
+                  text run at (2,0) width 72: "\x{304E}\x{3087}\x{3046}\x{304D}\x{3053}\x{3093}\x{3060}\x{304F}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x72
+                LayoutInline {RB} at (0,0) size 18x70
+                  LayoutText {#text} at (2,1) size 18x70
+                    text run at (2,1) width 70: "\x{6F86}\x{5B63}\x{6EB7}\x{6FC1}"
+          LayoutText {#text} at (606,71) size 18x208
+            text run at (606,71) width 208: "\x{306E}\x{4FD7}\x{754C}\x{3092}\x{6E05}\x{304F}\x{3046}\x{3089}\x{3089}\x{304B}\x{306B}\x{53CE}\x{3081}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (604,279) size 22x16
+              LayoutRubyText {RT} at (-10,0) size 13x16
+                LayoutText {#text} at (2,3) size 10x10
+                  text run at (2,3) width 9: "\x{3046}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x16
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,0) size 18x16
+                    text run at (2,0) width 16: "\x{5F97}"
+          LayoutText {#text} at (606,295) size 18x32
+            text run at (606,295) width 32: "\x{308C}\x{3070}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (604,327) size 22x16
+              LayoutRubyText {RT} at (-10,0) size 13x16
+                LayoutText {#text} at (2,3) size 10x10
+                  text run at (2,3) width 9: "\x{305F}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x16
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,0) size 18x16
+                    text run at (2,0) width 16: "\x{8DB3}"
+          LayoutText {#text} at (606,343) size 18x96
+            text run at (606,343) width 96: "\x{308B}\x{3002}\x{3053}\x{306E}\x{6545}\x{306B}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x32
+            LayoutRubyRun (anonymous) at (604,439) size 22x32
+              LayoutRubyText {RT} at (-10,0) size 13x32
+                LayoutText {#text} at (2,0) size 10x31
+                  text run at (2,0) width 30: "\x{3080}\x{305B}\x{3044}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x32
+                LayoutInline {RB} at (0,0) size 18x32
+                  LayoutText {#text} at (2,0) size 18x32
+                    text run at (2,0) width 32: "\x{7121}\x{58F0}"
+          LayoutText {#text} at (606,471) size 46x503
+            text run at (606,471) width 32: "\x{306E}\x{8A69}"
+            text run at (634,0) width 128: "\x{4EBA}\x{306B}\x{306F}\x{4E00}\x{53E5}\x{306A}\x{304F}\x{3001}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x34
+            LayoutRubyRun (anonymous) at (632,127) size 22x36
+              LayoutRubyText {RT} at (-10,0) size 13x36
+                LayoutText {#text} at (2,0) size 10x36
+                  text run at (2,0) width 36: "\x{3080}\x{3057}\x{3087}\x{304F}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x36
+                LayoutInline {RB} at (0,0) size 18x34
+                  LayoutText {#text} at (2,1) size 18x34
+                    text run at (2,1) width 34: "\x{7121}\x{8272}"
+          LayoutText {#text} at (634,162) size 18x80
+            text run at (634,162) width 80: "\x{306E}\x{753B}\x{5BB6}\x{306B}\x{306F}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x34
+            LayoutRubyRun (anonymous) at (632,241) size 22x36
+              LayoutRubyText {RT} at (-10,0) size 13x36
+                LayoutText {#text} at (2,0) size 10x36
+                  text run at (2,0) width 36: "\x{305B}\x{3063}\x{3051}\x{3093}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x36
+                LayoutInline {RB} at (0,0) size 18x34
+                  LayoutText {#text} at (2,1) size 18x34
+                    text run at (2,1) width 34: "\x{5C3A}\x{7E11}"
+          LayoutText {#text} at (634,276) size 18x96
+            text run at (634,276) width 96: "\x{306A}\x{304D}\x{3082}\x{3001}\x{304B}\x{304F}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x34
+            LayoutRubyRun (anonymous) at (632,371) size 22x36
+              LayoutRubyText {RT} at (-10,0) size 13x36
+                LayoutText {#text} at (2,0) size 10x36
+                  text run at (2,0) width 36: "\x{3058}\x{3093}\x{305B}\x{3044}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x36
+                LayoutInline {RB} at (0,0) size 18x34
+                  LayoutText {#text} at (2,1) size 18x34
+                    text run at (2,1) width 34: "\x{4EBA}\x{4E16}"
+          LayoutText {#text} at (634,406) size 46x502
+            text run at (634,406) width 96: "\x{3092}\x{89B3}\x{3058}\x{5F97}\x{308B}\x{306E}"
+            text run at (662,0) width 128: "\x{70B9}\x{306B}\x{304A}\x{3044}\x{3066}\x{3001}\x{304B}\x{304F}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x34
+            LayoutRubyRun (anonymous) at (660,127) size 22x36
+              LayoutRubyText {RT} at (-10,0) size 13x36
+                LayoutText {#text} at (2,0) size 10x36
+                  text run at (2,0) width 36: "\x{307C}\x{3093}\x{306E}\x{3046}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x36
+                LayoutInline {RB} at (0,0) size 18x34
+                  LayoutText {#text} at (2,1) size 18x34
+                    text run at (2,1) width 34: "\x{7169}\x{60A9}"
+          LayoutText {#text} at (662,162) size 18x16
+            text run at (662,162) width 16: "\x{3092}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x32
+            LayoutRubyRun (anonymous) at (660,178) size 22x32
+              LayoutRubyText {RT} at (-10,0) size 13x32
+                LayoutText {#text} at (2,0) size 10x31
+                  text run at (2,0) width 30: "\x{3052}\x{3060}\x{3064}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x32
+                LayoutInline {RB} at (0,0) size 18x32
+                  LayoutText {#text} at (2,0) size 18x32
+                    text run at (2,0) width 32: "\x{89E3}\x{8131}"
+          LayoutText {#text} at (662,210) size 18x176
+            text run at (662,210) width 176: "\x{3059}\x{308B}\x{306E}\x{70B9}\x{306B}\x{304A}\x{3044}\x{3066}\x{3001}\x{304B}\x{304F}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x64
+            LayoutRubyRun (anonymous) at (660,382) size 22x72
+              LayoutRubyText {RT} at (-10,0) size 13x72
+                LayoutText {#text} at (2,0) size 10x72
+                  text run at (2,0) width 72: "\x{3057}\x{3087}\x{3046}\x{3058}\x{3087}\x{3046}\x{304B}\x{3044}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x72
+                LayoutInline {RB} at (0,0) size 18x64
+                  LayoutText {#text} at (2,4) size 18x64
+                    text run at (2,4) width 64: "\x{6E05}\x{6D44}\x{754C}"
+          LayoutText {#text} at (662,450) size 18x16
+            text run at (662,450) width 16: "\x{306B}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x50
+            LayoutRubyRun (anonymous) at (688,0) size 22x54
+              LayoutRubyText {RT} at (-10,0) size 13x54
+                LayoutText {#text} at (2,0) size 10x54
+                  text run at (2,0) width 54: "\x{3057}\x{3085}\x{3064}\x{306B}\x{3085}\x{3046}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x54
+                LayoutInline {RB} at (0,0) size 18x44
+                  LayoutText {#text} at (2,5) size 18x44
+                    text run at (2,5) width 43: "\x{51FA}\x{5165}"
+          LayoutText {#text} at (690,50) size 18x224
+            text run at (690,50) width 224: "\x{3057}\x{5F97}\x{308B}\x{306E}\x{70B9}\x{306B}\x{304A}\x{3044}\x{3066}\x{3001}\x{307E}\x{305F}\x{3053}\x{306E}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x64
+            LayoutRubyRun (anonymous) at (688,274) size 22x64
+              LayoutRubyText {RT} at (-10,0) size 13x64
+                LayoutText {#text} at (2,1) size 10x61
+                  text run at (2,1) width 60: "\x{3075}\x{3069}\x{3046}\x{3075}\x{3058}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x64
+                LayoutInline {RB} at (0,0) size 18x64
+                  LayoutText {#text} at (2,0) size 18x64
+                    text run at (2,0) width 64: "\x{4E0D}\x{540C}\x{4E0D}\x{4E8C}"
+          LayoutText {#text} at (690,338) size 18x16
+            text run at (690,338) width 16: "\x{306E}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x34
+            LayoutRubyRun (anonymous) at (688,353) size 22x36
+              LayoutRubyText {RT} at (-10,0) size 13x36
+                LayoutText {#text} at (2,0) size 10x36
+                  text run at (2,0) width 36: "\x{3051}\x{3093}\x{3053}\x{3093}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x36
+                LayoutInline {RB} at (0,0) size 18x34
+                  LayoutText {#text} at (2,1) size 18x34
+                    text run at (2,1) width 34: "\x{4E7E}\x{5764}"
+          LayoutText {#text} at (690,388) size 18x16
+            text run at (690,388) width 16: "\x{3092}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x39
+            LayoutRubyRun (anonymous) at (688,401) size 22x45
+              LayoutRubyText {RT} at (-10,0) size 13x45
+                LayoutText {#text} at (2,0) size 10x45
+                  text run at (2,0) width 45: "\x{3053}\x{3093}\x{308A}\x{3085}\x{3046}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x45
+                LayoutInline {RB} at (0,0) size 18x39
+                  LayoutText {#text} at (2,3) size 18x39
+                    text run at (2,3) width 38: "\x{5EFA}\x{7ACB}"
+          LayoutText {#text} at (690,443) size 46x491
+            text run at (690,443) width 48: "\x{3057}\x{5F97}\x{308B}"
+            text run at (718,0) width 112: "\x{306E}\x{70B9}\x{306B}\x{304A}\x{3044}\x{3066}\x{3001}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x64
+            LayoutRubyRun (anonymous) at (716,112) size 22x64
+              LayoutRubyText {RT} at (-10,0) size 13x64
+                LayoutText {#text} at (2,1) size 10x61
+                  text run at (2,1) width 60: "\x{304C}\x{308A}\x{3057}\x{3088}\x{304F}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x64
+                LayoutInline {RB} at (0,0) size 18x64
+                  LayoutText {#text} at (2,0) size 18x64
+                    text run at (2,0) width 64: "\x{6211}\x{5229}\x{79C1}\x{617E}"
+          LayoutText {#text} at (718,176) size 18x16
+            text run at (718,176) width 16: "\x{306E}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x32
+            LayoutRubyRun (anonymous) at (716,192) size 22x32
+              LayoutRubyText {RT} at (-10,0) size 13x32
+                LayoutText {#text} at (2,0) size 10x31
+                  text run at (2,0) width 30: "\x{304D}\x{306F}\x{3093}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x32
+                LayoutInline {RB} at (0,0) size 18x32
+                  LayoutText {#text} at (2,0) size 18x32
+                    text run at (2,0) width 32: "\x{898A}\x{7D46}"
+          LayoutText {#text} at (718,224) size 18x16
+            text run at (718,224) width 16: "\x{3092}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x34
+            LayoutRubyRun (anonymous) at (716,239) size 22x36
+              LayoutRubyText {RT} at (-10,0) size 13x36
+                LayoutText {#text} at (2,0) size 10x36
+                  text run at (2,0) width 36: "\x{305D}\x{3046}\x{3068}\x{3046}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x36
+                LayoutInline {RB} at (0,0) size 18x34
+                  LayoutText {#text} at (2,1) size 18x34
+                    text run at (2,1) width 34: "\x{6383}\x{8569}"
+          LayoutText {#text} at (718,274) size 18x176
+            text run at (718,274) width 176: "\x{3059}\x{308B}\x{306E}\x{70B9}\x{306B}\x{304A}\x{3044}\x{3066}\x{3001}\x{2015}\x{2015}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x34
+            LayoutRubyRun (anonymous) at (716,449) size 22x36
+              LayoutRubyText {RT} at (-10,0) size 13x36
+                LayoutText {#text} at (2,0) size 10x36
+                  text run at (2,0) width 36: "\x{305B}\x{3093}\x{304D}\x{3093}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x36
+                LayoutInline {RB} at (0,0) size 18x34
+                  LayoutText {#text} at (2,1) size 18x34
+                    text run at (2,1) width 34: "\x{5343}\x{91D1}"
+          LayoutText {#text} at (718,484) size 46x500
+            text run at (718,484) width 16: "\x{306E}"
+            text run at (746,0) width 80: "\x{5B50}\x{3088}\x{308A}\x{3082}\x{3001}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x39
+            LayoutRubyRun (anonymous) at (744,77) size 22x45
+              LayoutRubyText {RT} at (-10,0) size 13x45
+                LayoutText {#text} at (2,0) size 10x45
+                  text run at (2,0) width 45: "\x{3070}\x{3093}\x{3058}\x{3087}\x{3046}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x45
+                LayoutInline {RB} at (0,0) size 18x39
+                  LayoutText {#text} at (2,3) size 18x39
+                    text run at (2,3) width 38: "\x{4E07}\x{4E57}"
+          LayoutText {#text} at (746,119) size 18x208
+            text run at (746,119) width 208: "\x{306E}\x{541B}\x{3088}\x{308A}\x{3082}\x{3001}\x{3042}\x{3089}\x{3086}\x{308B}\x{4FD7}\x{754C}\x{306E}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x34
+            LayoutRubyRun (anonymous) at (744,326) size 22x36
+              LayoutRubyText {RT} at (-10,0) size 13x36
+                LayoutText {#text} at (2,0) size 10x36
+                  text run at (2,0) width 36: "\x{3061}\x{3087}\x{3046}\x{3058}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x36
+                LayoutInline {RB} at (0,0) size 18x34
+                  LayoutText {#text} at (2,1) size 18x34
+                    text run at (2,1) width 34: "\x{5BF5}\x{5150}"
+          LayoutText {#text} at (746,361) size 40x473
+            text run at (746,361) width 112: "\x{3088}\x{308A}\x{3082}\x{5E78}\x{798F}\x{3067}\x{3042}"
+            text run at (768,0) width 32: "\x{308B}\x{3002}"
+          LayoutBR {BR} at (768,32) size 18x0
+          LayoutText {#text} at (796,0) size 18x272
+            text run at (796,0) width 272: "\x{3000}\x{4E16}\x{306B}\x{4F4F}\x{3080}\x{3053}\x{3068}\x{4E8C}\x{5341}\x{5E74}\x{306B}\x{3057}\x{3066}\x{3001}\x{4F4F}\x{3080}\x{306B}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x32
+            LayoutRubyRun (anonymous) at (794,272) size 22x32
+              LayoutRubyText {RT} at (-10,0) size 13x32
+                LayoutText {#text} at (2,3) size 10x26
+                  text run at (2,3) width 25: "\x{304B}\x{3044}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x32
+                LayoutInline {RB} at (0,0) size 18x32
+                  LayoutText {#text} at (2,0) size 18x32
+                    text run at (2,0) width 32: "\x{7532}\x{6590}"
+          LayoutText {#text} at (796,304) size 46x496
+            text run at (796,304) width 192: "\x{3042}\x{308B}\x{4E16}\x{3068}\x{77E5}\x{3063}\x{305F}\x{3002}\x{4E8C}\x{5341}\x{4E94}\x{5E74}"
+            text run at (824,0) width 96: "\x{306B}\x{3057}\x{3066}\x{660E}\x{6697}\x{306F}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x34
+            LayoutRubyRun (anonymous) at (822,95) size 22x36
+              LayoutRubyText {RT} at (-10,0) size 13x36
+                LayoutText {#text} at (2,0) size 10x36
+                  text run at (2,0) width 36: "\x{3072}\x{3087}\x{3046}\x{308A}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x36
+                LayoutInline {RB} at (0,0) size 18x34
+                  LayoutText {#text} at (2,1) size 18x34
+                    text run at (2,1) width 34: "\x{8868}\x{88CF}"
+          LayoutText {#text} at (824,130) size 46x498
+            text run at (824,130) width 368: "\x{306E}\x{3054}\x{3068}\x{304F}\x{3001}\x{65E5}\x{306E}\x{3042}\x{305F}\x{308B}\x{6240}\x{306B}\x{306F}\x{304D}\x{3063}\x{3068}\x{5F71}\x{304C}\x{3055}\x{3059}\x{3068}\x{609F}\x{3063}"
+            text run at (852,0) width 80: "\x{305F}\x{3002}\x{4E09}\x{5341}\x{306E}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x34
+            LayoutRubyRun (anonymous) at (850,79) size 22x36
+              LayoutRubyText {RT} at (-10,0) size 13x36
+                LayoutText {#text} at (2,0) size 10x36
+                  text run at (2,0) width 36: "\x{3053}\x{3093}\x{306B}\x{3061}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x36
+                LayoutInline {RB} at (0,0) size 18x34
+                  LayoutText {#text} at (2,1) size 18x34
+                    text run at (2,1) width 34: "\x{4ECA}\x{65E5}"
+          LayoutText {#text} at (852,114) size 18x288
+            text run at (852,114) width 288: "\x{306F}\x{3053}\x{3046}\x{601D}\x{3046}\x{3066}\x{3044}\x{308B}\x{3002}\x{2015}\x{2015}\x{559C}\x{3073}\x{306E}\x{6DF1}\x{304D}\x{3068}\x{304D}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x19
+            LayoutRubyRun (anonymous) at (850,398) size 22x27
+              LayoutRubyText {RT} at (-10,0) size 13x27
+                LayoutText {#text} at (2,0) size 10x27
+                  text run at (2,0) width 27: "\x{3046}\x{308C}\x{3044}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x27
+                LayoutInline {RB} at (0,0) size 18x17
+                  LayoutText {#text} at (2,5) size 18x17
+                    text run at (2,5) width 16: "\x{6182}"
+          LayoutText {#text} at (852,421) size 46x501
+            text run at (852,421) width 80: "\x{3044}\x{3088}\x{3044}\x{3088}\x{6DF1}"
+            text run at (880,0) width 32: "\x{304F}\x{3001}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x19
+            LayoutRubyRun (anonymous) at (878,28) size 22x27
+              LayoutRubyText {RT} at (-10,0) size 13x27
+                LayoutText {#text} at (2,0) size 10x27
+                  text run at (2,0) width 27: "\x{305F}\x{306E}\x{3057}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x27
+                LayoutInline {RB} at (0,0) size 18x17
+                  LayoutText {#text} at (2,5) size 18x17
+                    text run at (2,5) width 16: "\x{697D}"
+          LayoutText {#text} at (880,51) size 46x499
+            text run at (880,51) width 448: "\x{307F}\x{306E}\x{5927}\x{3044}\x{306A}\x{308B}\x{307B}\x{3069}\x{82E6}\x{3057}\x{307F}\x{3082}\x{5927}\x{304D}\x{3044}\x{3002}\x{3053}\x{308C}\x{3092}\x{5207}\x{308A}\x{653E}\x{305D}\x{3046}\x{3068}\x{3059}\x{308B}\x{3068}"
+            text run at (908,0) width 96: "\x{8EAB}\x{304C}\x{6301}\x{3066}\x{306C}\x{3002}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (906,95) size 22x18
+              LayoutRubyText {RT} at (-10,0) size 13x18
+                LayoutText {#text} at (2,0) size 10x18
+                  text run at (2,0) width 18: "\x{304B}\x{305F}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x18
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,1) size 18x16
+                    text run at (2,1) width 16: "\x{7247}"
+          LayoutText {#text} at (908,112) size 46x496
+            text run at (908,112) width 384: "\x{3065}\x{3051}\x{3088}\x{3046}\x{3068}\x{3059}\x{308C}\x{3070}\x{4E16}\x{304C}\x{7ACB}\x{305F}\x{306C}\x{3002}\x{91D1}\x{306F}\x{5927}\x{4E8B}\x{3060}\x{3001}\x{5927}\x{4E8B}\x{306A}\x{3082}"
+            text run at (936,0) width 32: "\x{306E}\x{304C}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (934,32) size 22x16
+              LayoutRubyText {RT} at (-10,0) size 13x16
+                LayoutText {#text} at (2,3) size 10x10
+                  text run at (2,3) width 9: "\x{3075}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x16
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,0) size 18x16
+                    text run at (2,0) width 16: "\x{6B96}"
+          LayoutText {#text} at (936,48) size 18x48
+            text run at (936,48) width 48: "\x{3048}\x{308C}\x{3070}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (934,96) size 22x16
+              LayoutRubyText {RT} at (-10,0) size 13x16
+                LayoutText {#text} at (2,3) size 10x10
+                  text run at (2,3) width 9: "\x{306D}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x16
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,0) size 18x16
+                    text run at (2,0) width 16: "\x{5BDD}"
+          LayoutText {#text} at (936,112) size 18x16
+            text run at (936,112) width 16: "\x{308B}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (934,128) size 22x16
+              LayoutRubyText {RT} at (-10,0) size 13x16
+                LayoutText {#text} at (2,3) size 10x10
+                  text run at (2,3) width 9: "\x{307E}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x16
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,0) size 18x16
+                    text run at (2,0) width 16: "\x{9593}"
+          LayoutText {#text} at (936,144) size 46x496
+            text run at (936,144) width 352: "\x{3082}\x{5FC3}\x{914D}\x{3060}\x{308D}\x{3046}\x{3002}\x{604B}\x{306F}\x{3046}\x{308C}\x{3057}\x{3044}\x{3001}\x{5B09}\x{3057}\x{3044}\x{604B}\x{304C}\x{7A4D}\x{3082}\x{308C}"
+            text run at (964,0) width 464: "\x{3070}\x{3001}\x{604B}\x{3092}\x{305B}\x{306C}\x{6614}\x{304C}\x{304B}\x{3048}\x{3063}\x{3066}\x{604B}\x{3057}\x{304B}\x{308D}\x{3002}\x{95A3}\x{50DA}\x{306E}\x{80A9}\x{306F}\x{6570}\x{767E}\x{4E07}\x{4EBA}\x{306E}\x{8DB3}\x{3092}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (962,463) size 22x18
+              LayoutRubyText {RT} at (-10,0) size 13x18
+                LayoutText {#text} at (2,0) size 10x18
+                  text run at (2,0) width 18: "\x{3055}\x{3055}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x18
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,1) size 18x16
+                    text run at (2,1) width 16: "\x{652F}"
+          LayoutText {#text} at (964,480) size 46x496
+            text run at (964,480) width 16: "\x{3048}"
+            text run at (992,0) width 64: "\x{3066}\x{3044}\x{308B}\x{3002}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x32
+            LayoutRubyRun (anonymous) at (990,64) size 22x32
+              LayoutRubyText {RT} at (-10,0) size 13x32
+                LayoutText {#text} at (2,0) size 10x31
+                  text run at (2,0) width 30: "\x{305B}\x{306A}\x{304B}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x32
+                LayoutInline {RB} at (0,0) size 18x32
+                  LayoutText {#text} at (2,0) size 18x32
+                    text run at (2,0) width 32: "\x{80CC}\x{4E2D}"
+          LayoutText {#text} at (992,96) size 46x496
+            text run at (992,96) width 400: "\x{306B}\x{306F}\x{91CD}\x{3044}\x{5929}\x{4E0B}\x{304C}\x{304A}\x{3076}\x{3055}\x{3063}\x{3066}\x{3044}\x{308B}\x{3002}\x{3046}\x{307E}\x{3044}\x{7269}\x{3082}\x{98DF}\x{308F}\x{306D}\x{3070}\x{60DC}"
+            text run at (1020,0) width 128: "\x{3057}\x{3044}\x{3002}\x{5C11}\x{3057}\x{98DF}\x{3048}\x{3070}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (1018,128) size 22x16
+              LayoutRubyText {RT} at (-10,0) size 13x16
+                LayoutText {#text} at (2,3) size 10x10
+                  text run at (2,3) width 9: "\x{3042}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x16
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,0) size 18x16
+                    text run at (2,0) width 16: "\x{98FD}"
+          LayoutText {#text} at (1020,144) size 18x16
+            text run at (1020,144) width 16: "\x{304D}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (1018,160) size 22x16
+              LayoutRubyText {RT} at (-10,0) size 13x16
+                LayoutText {#text} at (2,3) size 10x10
+                  text run at (2,3) width 9: "\x{305F}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x16
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,0) size 18x16
+                    text run at (2,0) width 16: "\x{8DB3}"
+          LayoutText {#text} at (1020,176) size 18x288
+            text run at (1020,176) width 288: "\x{3089}\x{306C}\x{3002}\x{5B58}\x{5206}\x{98DF}\x{3048}\x{3070}\x{3042}\x{3068}\x{304C}\x{4E0D}\x{6109}\x{5FEB}\x{3060}\x{3002}\x{2026}\x{2026}"
+          LayoutBR {BR} at (1020,464) size 18x0
+          LayoutText {#text} at (1048,0) size 18x16
+            text run at (1048,0) width 16: "\x{3000}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (1046,16) size 22x16
+              LayoutRubyText {RT} at (-10,0) size 13x16
+                LayoutText {#text} at (2,3) size 10x10
+                  text run at (2,3) width 9: "\x{3088}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x16
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,0) size 18x16
+                    text run at (2,0) width 16: "\x{4F59}"
+          LayoutText {#text} at (1048,32) size 18x16
+            text run at (1048,32) width 16: "\x{306E}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x28
+            LayoutRubyRun (anonymous) at (1046,44) size 22x36
+              LayoutRubyText {RT} at (-10,0) size 13x36
+                LayoutText {#text} at (2,0) size 10x36
+                  text run at (2,0) width 36: "\x{304B}\x{3093}\x{304C}\x{3048}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x36
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,10) size 18x16
+                    text run at (2,10) width 16: "\x{8003}"
+          LayoutText {#text} at (1048,76) size 18x256
+            text run at (1048,76) width 256: "\x{304C}\x{3053}\x{3053}\x{307E}\x{3067}\x{6F02}\x{6D41}\x{3057}\x{3066}\x{6765}\x{305F}\x{6642}\x{306B}\x{3001}\x{4F59}\x{306E}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x32
+            LayoutRubyRun (anonymous) at (1046,332) size 22x32
+              LayoutRubyText {RT} at (-10,0) size 13x32
+                LayoutText {#text} at (2,0) size 10x31
+                  text run at (2,0) width 30: "\x{3046}\x{305D}\x{304F}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x32
+                LayoutInline {RB} at (0,0) size 18x32
+                  LayoutText {#text} at (2,0) size 18x32
+                    text run at (2,0) width 32: "\x{53F3}\x{8DB3}"
+          LayoutText {#text} at (1048,364) size 18x48
+            text run at (1048,364) width 48: "\x{306F}\x{7A81}\x{7136}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (1046,411) size 22x18
+              LayoutRubyText {RT} at (-10,0) size 13x18
+                LayoutText {#text} at (2,0) size 10x18
+                  text run at (2,0) width 18: "\x{3059}\x{308F}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x18
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,1) size 18x16
+                    text run at (2,1) width 16: "\x{5750}"
+          LayoutText {#text} at (1048,428) size 46x492
+            text run at (1048,428) width 64: "\x{308A}\x{306E}\x{308F}\x{308B}"
+            text run at (1076,0) width 16: "\x{3044}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x34
+            LayoutRubyRun (anonymous) at (1074,15) size 22x36
+              LayoutRubyText {RT} at (-10,0) size 13x36
+                LayoutText {#text} at (2,0) size 10x36
+                  text run at (2,0) width 36: "\x{304B}\x{304F}\x{3044}\x{3057}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x36
+                LayoutInline {RB} at (0,0) size 18x34
+                  LayoutText {#text} at (2,1) size 18x34
+                    text run at (2,1) width 34: "\x{89D2}\x{77F3}"
+          LayoutText {#text} at (1076,50) size 18x16
+            text run at (1076,50) width 16: "\x{306E}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (1074,65) size 22x18
+              LayoutRubyText {RT} at (-10,0) size 13x18
+                LayoutText {#text} at (2,0) size 10x18
+                  text run at (2,0) width 18: "\x{306F}\x{3057}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x18
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,1) size 18x16
+                    text run at (2,1) width 16: "\x{7AEF}"
+          LayoutText {#text} at (1076,82) size 18x48
+            text run at (1076,82) width 48: "\x{3092}\x{8E0F}\x{307F}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (1074,130) size 22x16
+              LayoutRubyText {RT} at (-10,0) size 13x16
+                LayoutText {#text} at (2,3) size 10x10
+                  text run at (2,3) width 9: "\x{305D}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x16
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,0) size 18x16
+                    text run at (2,0) width 16: "\x{640D}"
+          LayoutText {#text} at (1076,146) size 18x80
+            text run at (1076,146) width 80: "\x{304F}\x{306A}\x{3063}\x{305F}\x{3002}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x34
+            LayoutRubyRun (anonymous) at (1074,225) size 22x36
+              LayoutRubyText {RT} at (-10,0) size 13x36
+                LayoutText {#text} at (2,0) size 10x36
+                  text run at (2,0) width 36: "\x{3078}\x{3044}\x{3053}\x{3046}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x36
+                LayoutInline {RB} at (0,0) size 18x34
+                  LayoutText {#text} at (2,1) size 18x34
+                    text run at (2,1) width 34: "\x{5E73}\x{8861}"
+          LayoutText {#text} at (1076,260) size 46x500
+            text run at (1076,260) width 240: "\x{3092}\x{4FDD}\x{3064}\x{305F}\x{3081}\x{306B}\x{3001}\x{3059}\x{308F}\x{3084}\x{3068}\x{524D}\x{306B}\x{98DB}\x{3073}"
+            text run at (1104,0) width 48: "\x{51FA}\x{3057}\x{305F}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x32
+            LayoutRubyRun (anonymous) at (1102,48) size 22x32
+              LayoutRubyText {RT} at (-10,0) size 13x32
+                LayoutText {#text} at (2,0) size 10x31
+                  text run at (2,0) width 30: "\x{3055}\x{305D}\x{304F}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x32
+                LayoutInline {RB} at (0,0) size 18x32
+                  LayoutText {#text} at (2,0) size 18x32
+                    text run at (2,0) width 32: "\x{5DE6}\x{8DB3}"
+          LayoutText {#text} at (1104,80) size 18x32
+            text run at (1104,80) width 32: "\x{304C}\x{3001}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x32
+            LayoutRubyRun (anonymous) at (1102,112) size 22x32
+              LayoutRubyText {RT} at (-10,0) size 13x32
+                LayoutText {#text} at (2,0) size 10x31
+                  text run at (2,0) width 30: "\x{3057}\x{305D}\x{3093}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x32
+                LayoutInline {RB} at (0,0) size 18x32
+                  LayoutText {#text} at (2,0) size 18x32
+                    text run at (2,0) width 32: "\x{4ED5}\x{640D}"
+          LayoutText {#text} at (1104,144) size 18x32
+            text run at (1104,144) width 32: "\x{3058}\x{306E}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (1102,176) size 22x16
+              LayoutRubyText {RT} at (-10,0) size 13x16
+                LayoutText {#text} at (2,3) size 10x10
+                  text run at (2,3) width 9: "\x{3046}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x16
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,0) size 18x16
+                    text run at (2,0) width 16: "\x{57CB}"
+          LayoutText {#text} at (1104,192) size 18x16
+            text run at (1104,192) width 16: "\x{3081}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (1102,207) size 22x18
+              LayoutRubyText {RT} at (-10,0) size 13x18
+                LayoutText {#text} at (2,0) size 10x18
+                  text run at (2,0) width 18: "\x{3042}\x{308F}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x18
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,1) size 18x16
+                    text run at (2,1) width 16: "\x{5408}"
+          LayoutText {#text} at (1104,224) size 18x256
+            text run at (1104,224) width 256: "\x{305B}\x{3092}\x{3059}\x{308B}\x{3068}\x{5171}\x{306B}\x{3001}\x{4F59}\x{306E}\x{8170}\x{306F}\x{5177}\x{5408}\x{3088}\x{304F}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x17
+            LayoutRubyRun (anonymous) at (1102,479) size 22x18
+              LayoutRubyText {RT} at (-10,0) size 13x18
+                LayoutText {#text} at (2,0) size 10x18
+                  text run at (2,0) width 18: "\x{307B}\x{3046}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x18
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,1) size 18x16
+                    text run at (2,1) width 16: "\x{65B9}"
+          LayoutText {#text} at (1132,0) size 18x144
+            text run at (1132,0) width 144: "\x{4E09}\x{5C3A}\x{307B}\x{3069}\x{306A}\x{5CA9}\x{306E}\x{4E0A}\x{306B}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (1130,144) size 22x16
+              LayoutRubyText {RT} at (-10,0) size 13x16
+                LayoutText {#text} at (2,3) size 10x10
+                  text run at (2,3) width 9: "\x{304A}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x16
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,0) size 18x16
+                    text run at (2,0) width 16: "\x{5378}"
+          LayoutText {#text} at (1132,160) size 18x208
+            text run at (1132,160) width 208: "\x{308A}\x{305F}\x{3002}\x{80A9}\x{306B}\x{304B}\x{3051}\x{305F}\x{7D75}\x{306E}\x{5177}\x{7BB1}\x{304C}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (1130,367) size 22x18
+              LayoutRubyText {RT} at (-10,0) size 13x18
+                LayoutText {#text} at (2,0) size 10x18
+                  text run at (2,0) width 18: "\x{308F}\x{304D}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x18
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,1) size 18x16
+                    text run at (2,1) width 16: "\x{814B}"
+          LayoutText {#text} at (1132,384) size 18x64
+            text run at (1132,384) width 64: "\x{306E}\x{4E0B}\x{304B}\x{3089}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (1130,447) size 22x18
+              LayoutRubyText {RT} at (-10,0) size 13x18
+                LayoutText {#text} at (2,0) size 10x18
+                  text run at (2,0) width 18: "\x{304A}\x{3069}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x18
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,1) size 18x16
+                    text run at (2,1) width 16: "\x{8E8D}"
+          LayoutText {#text} at (1132,464) size 46x496
+            text run at (1132,464) width 32: "\x{308A}\x{51FA}"
+            text run at (1160,0) width 144: "\x{3057}\x{305F}\x{3060}\x{3051}\x{3067}\x{3001}\x{5E78}\x{3044}\x{3068}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (1158,143) size 22x18
+              LayoutRubyText {RT} at (-10,0) size 13x18
+                LayoutText {#text} at (2,0) size 10x18
+                  text run at (2,0) width 18: "\x{306A}\x{3093}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x18
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,1) size 18x16
+                    text run at (2,1) width 16: "\x{4F55}"
+          LayoutText {#text} at (1160,160) size 18x128
+            text run at (1160,160) width 128: "\x{306E}\x{4E8B}\x{3082}\x{306A}\x{304B}\x{3063}\x{305F}\x{3002}"
+          LayoutBR {BR} at (1160,288) size 18x0
+          LayoutText {#text} at (1188,0) size 18x240
+            text run at (1188,0) width 240: "\x{3000}\x{7ACB}\x{3061}\x{4E0A}\x{304C}\x{308B}\x{6642}\x{306B}\x{5411}\x{3046}\x{3092}\x{898B}\x{308B}\x{3068}\x{3001}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x17
+            LayoutRubyRun (anonymous) at (1186,238.98) size 22x18
+              LayoutRubyText {RT} at (-10,0) size 13x18
+                LayoutText {#text} at (2,0) size 10x18
+                  text run at (2,0) width 18: "\x{307F}\x{3061}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x18
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,1) size 18x16
+                    text run at (2,1) width 16: "\x{8DEF}"
+          LayoutText {#text} at (1188,255) size 46x496
+            text run at (1188,255) width 240: "\x{304B}\x{3089}\x{5DE6}\x{306E}\x{65B9}\x{306B}\x{30D0}\x{30B1}\x{30C4}\x{3092}\x{4F0F}\x{305B}\x{305F}\x{3088}\x{3046}"
+            text run at (1216,0) width 48: "\x{306A}\x{5CF0}\x{304C}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (1214,47) size 22x18
+              LayoutRubyText {RT} at (-10,0) size 13x18
+                LayoutText {#text} at (2,0) size 10x18
+                  text run at (2,0) width 18: "\x{305D}\x{3073}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x18
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,1) size 18x16
+                    text run at (2,1) width 16: "\x{8073}"
+          LayoutText {#text} at (1216,64) size 18x112
+            text run at (1216,64) width 112: "\x{3048}\x{3066}\x{3044}\x{308B}\x{3002}\x{6749}\x{304B}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x19
+            LayoutRubyRun (anonymous) at (1214,172) size 22x27
+              LayoutRubyText {RT} at (-10,0) size 13x27
+                LayoutText {#text} at (2,0) size 10x27
+                  text run at (2,0) width 27: "\x{3072}\x{306E}\x{304D}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x27
+                LayoutInline {RB} at (0,0) size 18x17
+                  LayoutText {#text} at (2,5) size 18x17
+                    text run at (2,5) width 16: "\x{6A9C}"
+          LayoutText {#text} at (1216,195) size 18x112
+            text run at (1216,195) width 112: "\x{304B}\x{5206}\x{304B}\x{3089}\x{306A}\x{3044}\x{304C}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x32
+            LayoutRubyRun (anonymous) at (1214,307) size 22x32
+              LayoutRubyText {RT} at (-10,0) size 13x32
+                LayoutText {#text} at (2,0) size 10x31
+                  text run at (2,0) width 30: "\x{306D}\x{3082}\x{3068}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x32
+                LayoutInline {RB} at (0,0) size 18x32
+                  LayoutText {#text} at (2,0) size 18x32
+                    text run at (2,0) width 32: "\x{6839}\x{5143}"
+          LayoutText {#text} at (1216,339) size 18x32
+            text run at (1216,339) width 32: "\x{304B}\x{3089}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x19
+            LayoutRubyRun (anonymous) at (1214,367) size 22x27
+              LayoutRubyText {RT} at (-10,0) size 13x27
+                LayoutText {#text} at (2,0) size 10x27
+                  text run at (2,0) width 27: "\x{3044}\x{305F}\x{3060}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x27
+                LayoutInline {RB} at (0,0) size 18x17
+                  LayoutText {#text} at (2,5) size 18x17
+                    text run at (2,5) width 16: "\x{9802}"
+          LayoutText {#text} at (1216,390) size 46x502
+            text run at (1216,390) width 112: "\x{304D}\x{307E}\x{3067}\x{3053}\x{3068}\x{3054}\x{3068}"
+            text run at (1244,0) width 16: "\x{304F}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x34
+            LayoutRubyRun (anonymous) at (1242,15) size 22x36
+              LayoutRubyText {RT} at (-10,0) size 13x36
+                LayoutText {#text} at (2,0) size 10x36
+                  text run at (2,0) width 36: "\x{3042}\x{304A}\x{3050}\x{308D}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x36
+                LayoutInline {RB} at (0,0) size 18x34
+                  LayoutText {#text} at (2,1) size 18x34
+                    text run at (2,1) width 34: "\x{84BC}\x{9ED2}"
+          LayoutText {#text} at (1244,50) size 18x240
+            text run at (1244,50) width 240: "\x{3044}\x{4E2D}\x{306B}\x{3001}\x{5C71}\x{685C}\x{304C}\x{8584}\x{8D64}\x{304F}\x{3060}\x{3093}\x{3060}\x{3089}\x{306B}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x32
+            LayoutRubyRun (anonymous) at (1242,290) size 22x32
+              LayoutRubyText {RT} at (-10,0) size 13x32
+                LayoutText {#text} at (2,0) size 10x31
+                  text run at (2,0) width 30: "\x{305F}\x{306A}\x{3073}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x32
+                LayoutInline {RB} at (0,0) size 18x32
+                  LayoutText {#text} at (2,0) size 18x32
+                    text run at (2,0) width 32: "\x{68DA}\x{5F15}"
+          LayoutText {#text} at (1244,322) size 18x48
+            text run at (1244,322) width 48: "\x{3044}\x{3066}\x{3001}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (1242,370) size 22x16
+              LayoutRubyText {RT} at (-10,0) size 13x16
+                LayoutText {#text} at (2,3) size 10x10
+                  text run at (2,3) width 9: "\x{3064}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x16
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,0) size 18x16
+                    text run at (2,0) width 16: "\x{7D9A}"
+          LayoutText {#text} at (1244,386) size 18x16
+            text run at (1244,386) width 16: "\x{304E}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (1242,402) size 22x16
+              LayoutRubyText {RT} at (-10,0) size 13x16
+                LayoutText {#text} at (2,3) size 10x10
+                  text run at (2,3) width 9: "\x{3081}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x16
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,0) size 18x16
+                    text run at (2,0) width 16: "\x{76EE}"
+          LayoutText {#text} at (1244,418) size 18x16
+            text run at (1244,418) width 16: "\x{304C}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (1242,433) size 22x18
+              LayoutRubyText {RT} at (-10,0) size 13x18
+                LayoutText {#text} at (2,0) size 10x18
+                  text run at (2,0) width 18: "\x{3057}\x{304B}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x18
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,1) size 18x16
+                    text run at (2,1) width 16: "\x{78BA}"
+          LayoutText {#text} at (1244,450) size 46x498
+            text run at (1244,450) width 48: "\x{3068}\x{898B}\x{3048}"
+            text run at (1272,0) width 64: "\x{306C}\x{304F}\x{3089}\x{3044}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (1270,63) size 22x18
+              LayoutRubyText {RT} at (-10,0) size 13x18
+                LayoutText {#text} at (2,0) size 10x18
+                  text run at (2,0) width 18: "\x{3082}\x{3084}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x18
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,1) size 18x16
+                    text run at (2,1) width 16: "\x{9744}"
+          LayoutText {#text} at (1272,80) size 18x144
+            text run at (1272,80) width 144: "\x{304C}\x{6FC3}\x{3044}\x{3002}\x{5C11}\x{3057}\x{624B}\x{524D}\x{306B}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x34
+            LayoutRubyRun (anonymous) at (1270,223) size 22x36
+              LayoutRubyText {RT} at (-10,0) size 13x36
+                LayoutText {#text} at (2,0) size 10x36
+                  text run at (2,0) width 36: "\x{306F}\x{3052}\x{3084}\x{307E}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x36
+                LayoutInline {RB} at (0,0) size 18x34
+                  LayoutText {#text} at (2,1) size 18x34
+                    text run at (2,1) width 34: "\x{79BF}\x{5C71}"
+          LayoutText {#text} at (1272,258) size 18x64
+            text run at (1272,258) width 64: "\x{304C}\x{4E00}\x{3064}\x{3001}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (1270,321) size 22x18
+              LayoutRubyText {RT} at (-10,0) size 13x18
+                LayoutText {#text} at (2,0) size 10x18
+                  text run at (2,0) width 18: "\x{3050}\x{3093}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x18
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,1) size 18x16
+                    text run at (2,1) width 16: "\x{7FA4}"
+          LayoutText {#text} at (1272,338) size 18x96
+            text run at (1272,338) width 96: "\x{3092}\x{306C}\x{304D}\x{3093}\x{3067}\x{3066}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (1270,433) size 22x18
+              LayoutRubyText {RT} at (-10,0) size 13x18
+                LayoutText {#text} at (2,0) size 10x18
+                  text run at (2,0) width 18: "\x{307E}\x{3086}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x18
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,1) size 18x16
+                    text run at (2,1) width 16: "\x{7709}"
+          LayoutText {#text} at (1272,450) size 18x16
+            text run at (1272,450) width 16: "\x{306B}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x17
+            LayoutRubyRun (anonymous) at (1270,465) size 22x18
+              LayoutRubyText {RT} at (-10,0) size 13x18
+                LayoutText {#text} at (2,0) size 10x18
+                  text run at (2,0) width 18: "\x{305B}\x{307E}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x18
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,1) size 18x16
+                    text run at (2,1) width 16: "\x{903C}"
+          LayoutText {#text} at (1300,0) size 18x32
+            text run at (1300,0) width 32: "\x{308B}\x{3002}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (1298,32) size 22x16
+              LayoutRubyText {RT} at (-10,0) size 13x16
+                LayoutText {#text} at (2,3) size 10x10
+                  text run at (2,3) width 9: "\x{306F}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x16
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,0) size 18x16
+                    text run at (2,0) width 16: "\x{79BF}"
+          LayoutText {#text} at (1300,48) size 18x128
+            text run at (1300,48) width 128: "\x{3052}\x{305F}\x{5074}\x{9762}\x{306F}\x{5DE8}\x{4EBA}\x{306E}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (1298,175) size 22x18
+              LayoutRubyText {RT} at (-10,0) size 13x18
+                LayoutText {#text} at (2,0) size 10x18
+                  text run at (2,0) width 18: "\x{304A}\x{306E}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x18
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,1) size 18x16
+                    text run at (2,1) width 16: "\x{65A7}"
+          LayoutText {#text} at (1300,192) size 18x16
+            text run at (1300,192) width 16: "\x{3067}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (1298,207) size 22x18
+              LayoutRubyText {RT} at (-10,0) size 13x18
+                LayoutText {#text} at (2,0) size 10x18
+                  text run at (2,0) width 18: "\x{3051}\x{305A}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x18
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,1) size 18x16
+                    text run at (2,1) width 16: "\x{524A}"
+          LayoutText {#text} at (1300,224) size 46x496
+            text run at (1300,224) width 272: "\x{308A}\x{53BB}\x{3063}\x{305F}\x{304B}\x{3001}\x{92ED}\x{3069}\x{304D}\x{5E73}\x{9762}\x{3092}\x{3084}\x{3051}\x{306B}\x{8C37}\x{306E}"
+            text run at (1328,0) width 32: "\x{5E95}\x{306B}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (1326,31) size 22x18
+              LayoutRubyText {RT} at (-10,0) size 13x18
+                LayoutText {#text} at (2,0) size 10x18
+                  text run at (2,0) width 18: "\x{3046}\x{305A}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x18
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,1) size 18x16
+                    text run at (2,1) width 16: "\x{57CB}"
+          LayoutText {#text} at (1328,48) size 18x80
+            text run at (1328,48) width 80: "\x{3081}\x{3066}\x{3044}\x{308B}\x{3002}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x34
+            LayoutRubyRun (anonymous) at (1326,127) size 22x36
+              LayoutRubyText {RT} at (-10,0) size 13x36
+                LayoutText {#text} at (2,0) size 10x36
+                  text run at (2,0) width 36: "\x{3066}\x{3063}\x{307A}\x{3093}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x36
+                LayoutInline {RB} at (0,0) size 18x34
+                  LayoutText {#text} at (2,1) size 18x34
+                    text run at (2,1) width 34: "\x{5929}\x{8FBA}"
+          LayoutText {#text} at (1328,162) size 18x336
+            text run at (1328,162) width 336: "\x{306B}\x{4E00}\x{672C}\x{898B}\x{3048}\x{308B}\x{306E}\x{306F}\x{8D64}\x{677E}\x{3060}\x{308D}\x{3046}\x{3002}\x{679D}\x{306E}\x{9593}\x{306E}\x{7A7A}\x{3055}\x{3048}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x35
+            LayoutRubyRun (anonymous) at (1354,0) size 22x36
+              LayoutRubyText {RT} at (-10,0) size 13x36
+                LayoutText {#text} at (2,0) size 10x36
+                  text run at (2,0) width 36: "\x{306F}\x{3063}\x{304D}\x{308A}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x36
+                LayoutInline {RB} at (0,0) size 18x34
+                  LayoutText {#text} at (2,1) size 18x34
+                    text run at (2,1) width 34: "\x{5224}\x{7136}"
+          LayoutText {#text} at (1356,35) size 18x448
+            text run at (1356,35) width 448: "\x{3057}\x{3066}\x{3044}\x{308B}\x{3002}\x{884C}\x{304F}\x{624B}\x{306F}\x{4E8C}\x{4E01}\x{307B}\x{3069}\x{3067}\x{5207}\x{308C}\x{3066}\x{3044}\x{308B}\x{304C}\x{3001}\x{9AD8}\x{3044}\x{6240}\x{304B}\x{3089}\x{8D64}\x{3044}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x32
+            LayoutRubyRun (anonymous) at (1382,0) size 22x32
+              LayoutRubyText {RT} at (-10,0) size 13x32
+                LayoutText {#text} at (2,0) size 10x31
+                  text run at (2,0) width 30: "\x{3051}\x{3063}\x{3068}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x32
+                LayoutInline {RB} at (0,0) size 18x32
+                  LayoutText {#text} at (2,0) size 18x32
+                    text run at (2,0) width 32: "\x{6BDB}\x{5E03}"
+          LayoutText {#text} at (1384,32) size 46x496
+            text run at (1384,32) width 464: "\x{304C}\x{52D5}\x{3044}\x{3066}\x{6765}\x{308B}\x{306E}\x{3092}\x{898B}\x{308B}\x{3068}\x{3001}\x{767B}\x{308C}\x{3070}\x{3042}\x{3059}\x{3053}\x{3078}\x{51FA}\x{308B}\x{306E}\x{3060}\x{308D}\x{3046}\x{3002}\x{8DEF}\x{306F}\x{3059}"
+            text run at (1412,0) width 48: "\x{3053}\x{3076}\x{308B}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x32
+            LayoutRubyRun (anonymous) at (1410,48) size 22x32
+              LayoutRubyText {RT} at (-10,0) size 13x32
+                LayoutText {#text} at (2,0) size 10x31
+                  text run at (2,0) width 30: "\x{306A}\x{3093}\x{304E}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x32
+                LayoutInline {RB} at (0,0) size 18x32
+                  LayoutText {#text} at (2,0) size 18x32
+                    text run at (2,0) width 32: "\x{96E3}\x{7FA9}"
+          LayoutText {#text} at (1412,80) size 18x32
+            text run at (1412,80) width 32: "\x{3060}\x{3002}"
+          LayoutBR {BR} at (1412,112) size 18x0
+          LayoutText {#text} at (1440,0) size 18x208
+            text run at (1440,0) width 208: "\x{3000}\x{571F}\x{3092}\x{306A}\x{3089}\x{3059}\x{3060}\x{3051}\x{306A}\x{3089}\x{3055}\x{307B}\x{3069}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x33
+            LayoutRubyRun (anonymous) at (1438,207.98) size 22x32
+              LayoutRubyText {RT} at (-10,0) size 13x32
+                LayoutText {#text} at (2,3) size 10x26
+                  text run at (2,3) width 25: "\x{3066}\x{307E}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x32
+                LayoutInline {RB} at (0,0) size 18x32
+                  LayoutText {#text} at (2,0) size 18x32
+                    text run at (2,0) width 32: "\x{624B}\x{9593}"
+          LayoutText {#text} at (1440,239) size 18x17
+            text run at (1440,239) width 16: "\x{3082}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x17
+            LayoutRubyRun (anonymous) at (1438,255.98) size 22x16
+              LayoutRubyText {RT} at (-10,0) size 13x16
+                LayoutText {#text} at (2,3) size 10x10
+                  text run at (2,3) width 9: "\x{3044}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x16
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,0) size 18x16
+                    text run at (2,0) width 16: "\x{5165}"
+          LayoutText {#text} at (1440,271) size 46x496
+            text run at (1440,271) width 224: "\x{308B}\x{307E}\x{3044}\x{304C}\x{3001}\x{571F}\x{306E}\x{4E2D}\x{306B}\x{306F}\x{5927}\x{304D}\x{306A}\x{77F3}"
+            text run at (1468,0) width 96: "\x{304C}\x{3042}\x{308B}\x{3002}\x{571F}\x{306F}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (1466,95) size 22x18
+              LayoutRubyText {RT} at (-10,0) size 13x18
+                LayoutText {#text} at (2,0) size 10x18
+                  text run at (2,0) width 18: "\x{305F}\x{3044}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x18
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,1) size 18x16
+                    text run at (2,1) width 16: "\x{5E73}"
+          LayoutText {#text} at (1468,112) size 46x496
+            text run at (1468,112) width 384: "\x{3089}\x{306B}\x{3057}\x{3066}\x{3082}\x{77F3}\x{306F}\x{5E73}\x{3089}\x{306B}\x{306A}\x{3089}\x{306C}\x{3002}\x{77F3}\x{306F}\x{5207}\x{308A}\x{7815}\x{3044}\x{3066}\x{3082}\x{3001}\x{5CA9}"
+            text run at (1496,0) width 128: "\x{306F}\x{59CB}\x{672B}\x{304C}\x{3064}\x{304B}\x{306C}\x{3002}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x34
+            LayoutRubyRun (anonymous) at (1494,127) size 22x36
+              LayoutRubyText {RT} at (-10,0) size 13x36
+                LayoutText {#text} at (2,0) size 10x36
+                  text run at (2,0) width 36: "\x{307B}\x{308A}\x{304F}\x{305A}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x36
+                LayoutInline {RB} at (0,0) size 18x34
+                  LayoutText {#text} at (2,1) size 18x34
+                    text run at (2,1) width 34: "\x{6398}\x{5D29}"
+          LayoutText {#text} at (1496,162) size 18x96
+            text run at (1496,162) width 96: "\x{3057}\x{305F}\x{571F}\x{306E}\x{4E0A}\x{306B}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x34
+            LayoutRubyRun (anonymous) at (1494,257) size 22x36
+              LayoutRubyText {RT} at (-10,0) size 13x36
+                LayoutText {#text} at (2,0) size 10x36
+                  text run at (2,0) width 36: "\x{3086}\x{3046}\x{305C}\x{3093}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x36
+                LayoutInline {RB} at (0,0) size 18x34
+                  LayoutText {#text} at (2,1) size 18x34
+                    text run at (2,1) width 34: "\x{60A0}\x{7136}"
+          LayoutText {#text} at (1496,292) size 18x16
+            text run at (1496,292) width 16: "\x{3068}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x19
+            LayoutRubyRun (anonymous) at (1494,304) size 22x27
+              LayoutRubyText {RT} at (-10,0) size 13x27
+                LayoutText {#text} at (2,0) size 10x27
+                  text run at (2,0) width 27: "\x{305D}\x{3070}\x{3060}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x27
+                LayoutInline {RB} at (0,0) size 18x17
+                  LayoutText {#text} at (2,5) size 18x17
+                    text run at (2,5) width 16: "\x{5CD9}"
+          LayoutText {#text} at (1496,327) size 46x503
+            text run at (1496,327) width 176: "\x{3063}\x{3066}\x{3001}\x{543E}\x{3089}\x{306E}\x{305F}\x{3081}\x{306B}\x{9053}\x{3092}"
+            text run at (1524,0) width 32: "\x{8B72}\x{308B}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x32
+            LayoutRubyRun (anonymous) at (1522,32) size 22x32
+              LayoutRubyText {RT} at (-10,0) size 13x32
+                LayoutText {#text} at (2,0) size 10x31
+                  text run at (2,0) width 30: "\x{3051}\x{3057}\x{304D}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x32
+                LayoutInline {RB} at (0,0) size 18x32
+                  LayoutText {#text} at (2,0) size 18x32
+                    text run at (2,0) width 32: "\x{666F}\x{8272}"
+          LayoutText {#text} at (1524,64) size 46x480
+            text run at (1524,64) width 416: "\x{306F}\x{306A}\x{3044}\x{3002}\x{5411}\x{3046}\x{3067}\x{805E}\x{304B}\x{306C}\x{4E0A}\x{306F}\x{4E57}\x{308A}\x{8D8A}\x{3059}\x{304B}\x{3001}\x{5EFB}\x{3089}\x{306A}\x{3051}\x{308C}\x{3070}\x{306A}\x{3089}"
+            text run at (1552,0) width 32: "\x{3093}\x{3002}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (1550,31) size 22x18
+              LayoutRubyText {RT} at (-10,0) size 13x18
+                LayoutText {#text} at (2,0) size 10x18
+                  text run at (2,0) width 18: "\x{3044}\x{308F}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x18
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,1) size 18x16
+                    text run at (2,1) width 16: "\x{5DCC}"
+          LayoutText {#text} at (1552,48) size 18x112
+            text run at (1552,48) width 112: "\x{306E}\x{306A}\x{3044}\x{6240}\x{3067}\x{3055}\x{3048}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (1550,160) size 22x16
+              LayoutRubyText {RT} at (-10,0) size 13x16
+                LayoutText {#text} at (2,3) size 10x10
+                  text run at (2,3) width 9: "\x{3042}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x16
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,0) size 18x16
+                    text run at (2,0) width 16: "\x{6B69}"
+          LayoutText {#text} at (1552,176) size 18x304
+            text run at (1552,176) width 304: "\x{308B}\x{304D}\x{3088}\x{304F}\x{306F}\x{306A}\x{3044}\x{3002}\x{5DE6}\x{53F3}\x{304C}\x{9AD8}\x{304F}\x{3063}\x{3066}\x{3001}\x{4E2D}\x{5FC3}\x{304C}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x17
+            LayoutRubyRun (anonymous) at (1550,479) size 22x18
+              LayoutRubyText {RT} at (-10,0) size 13x18
+                LayoutText {#text} at (2,0) size 10x18
+                  text run at (2,0) width 18: "\x{304F}\x{307C}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x18
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,1) size 18x16
+                    text run at (2,1) width 16: "\x{7AAA}"
+          LayoutText {#text} at (1580,0) size 18x128
+            text run at (1580,0) width 128: "\x{3093}\x{3067}\x{3001}\x{307E}\x{308B}\x{3067}\x{4E00}\x{9593}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (1578,127) size 22x18
+              LayoutRubyText {RT} at (-10,0) size 13x18
+                LayoutText {#text} at (2,0) size 10x18
+                  text run at (2,0) width 18: "\x{306F}\x{3070}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x18
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,1) size 18x16
+                    text run at (2,1) width 16: "\x{5E45}"
+          LayoutText {#text} at (1580,144) size 18x64
+            text run at (1580,144) width 64: "\x{3092}\x{4E09}\x{89D2}\x{306B}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (1578,208) size 22x16
+              LayoutRubyText {RT} at (-10,0) size 13x16
+                LayoutText {#text} at (2,3) size 10x10
+                  text run at (2,3) width 9: "\x{304F}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x16
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,0) size 18x16
+                    text run at (2,0) width 16: "\x{7A7F}"
+          LayoutText {#text} at (1580,224) size 18x128
+            text run at (1580,224) width 128: "\x{3063}\x{3066}\x{3001}\x{305D}\x{306E}\x{9802}\x{70B9}\x{304C}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x34
+            LayoutRubyRun (anonymous) at (1578,351) size 22x36
+              LayoutRubyText {RT} at (-10,0) size 13x36
+                LayoutText {#text} at (2,0) size 10x36
+                  text run at (2,0) width 36: "\x{307E}\x{3093}\x{306A}\x{304B}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x36
+                LayoutInline {RB} at (0,0) size 18x34
+                  LayoutText {#text} at (2,1) size 18x34
+                    text run at (2,1) width 34: "\x{771F}\x{4E2D}"
+          LayoutText {#text} at (1580,386) size 18x16
+            text run at (1580,386) width 16: "\x{3092}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x19
+            LayoutRubyRun (anonymous) at (1578,398) size 22x27
+              LayoutRubyText {RT} at (-10,0) size 13x27
+                LayoutText {#text} at (2,0) size 10x27
+                  text run at (2,0) width 27: "\x{3064}\x{3089}\x{306C}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x27
+                LayoutInline {RB} at (0,0) size 18x17
+                  LayoutText {#text} at (2,5) size 18x17
+                    text run at (2,5) width 16: "\x{8CAB}"
+          LayoutText {#text} at (1580,421) size 46x501
+            text run at (1580,421) width 80: "\x{3044}\x{3066}\x{3044}\x{308B}\x{3068}"
+            text run at (1608,0) width 320: "\x{8A55}\x{3057}\x{3066}\x{3082}\x{3088}\x{3044}\x{3002}\x{8DEF}\x{3092}\x{884C}\x{304F}\x{3068}\x{4E91}\x{308F}\x{3093}\x{3088}\x{308A}\x{5DDD}\x{5E95}\x{3092}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (1606,319) size 22x18
+              LayoutRubyText {RT} at (-10,0) size 13x18
+                LayoutText {#text} at (2,0) size 10x18
+                  text run at (2,0) width 18: "\x{308F}\x{305F}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x18
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,1) size 18x16
+                    text run at (2,1) width 16: "\x{6E09}"
+          LayoutText {#text} at (1608,336) size 18x160
+            text run at (1608,336) width 160: "\x{308B}\x{3068}\x{4E91}\x{3046}\x{65B9}\x{304C}\x{9069}\x{5F53}\x{3060}\x{3002}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x17
+            LayoutRubyRun (anonymous) at (1634,0) size 22x18
+              LayoutRubyText {RT} at (-10,0) size 13x18
+                LayoutText {#text} at (2,0) size 10x18
+                  text run at (2,0) width 18: "\x{3082}\x{3068}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x18
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,1) size 18x16
+                    text run at (2,1) width 16: "\x{56FA}"
+          LayoutText {#text} at (1636,17) size 18x256
+            text run at (1636,17) width 256: "\x{3088}\x{308A}\x{6025}\x{3050}\x{65C5}\x{3067}\x{306A}\x{3044}\x{304B}\x{3089}\x{3001}\x{3076}\x{3089}\x{3076}\x{3089}\x{3068}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x34
+            LayoutRubyRun (anonymous) at (1634,272) size 22x36
+              LayoutRubyText {RT} at (-10,0) size 13x36
+                LayoutText {#text} at (2,0) size 10x36
+                  text run at (2,0) width 36: "\x{306A}\x{306A}\x{307E}\x{304C}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x36
+                LayoutInline {RB} at (0,0) size 18x34
+                  LayoutText {#text} at (2,1) size 18x34
+                    text run at (2,1) width 34: "\x{4E03}\x{66F2}"
+          LayoutText {#text} at (1636,307) size 18x96
+            text run at (1636,307) width 96: "\x{308A}\x{3078}\x{304B}\x{304B}\x{308B}\x{3002}"
+          LayoutBR {BR} at (1636,403) size 18x0
+          LayoutText {#text} at (1664,0) size 18x144
+            text run at (1664,0) width 144: "\x{3000}\x{305F}\x{3061}\x{307E}\x{3061}\x{8DB3}\x{306E}\x{4E0B}\x{3067}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x33
+            LayoutRubyRun (anonymous) at (1662,143.98) size 22x32
+              LayoutRubyText {RT} at (-10,0) size 13x32
+                LayoutText {#text} at (2,0) size 10x31
+                  text run at (2,0) width 30: "\x{3072}\x{3070}\x{308A}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x32
+                LayoutInline {RB} at (0,0) size 18x32
+                  LayoutText {#text} at (2,0) size 18x32
+                    text run at (2,0) width 32: "\x{96F2}\x{96C0}"
+          LayoutText {#text} at (1664,175) size 18x161
+            text run at (1664,175) width 160: "\x{306E}\x{58F0}\x{304C}\x{3057}\x{51FA}\x{3057}\x{305F}\x{3002}\x{8C37}\x{3092}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x33
+            LayoutRubyRun (anonymous) at (1662,335.98) size 22x32
+              LayoutRubyText {RT} at (-10,0) size 13x32
+                LayoutText {#text} at (2,0) size 10x31
+                  text run at (2,0) width 30: "\x{307F}\x{304A}\x{308D}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x32
+                LayoutInline {RB} at (0,0) size 18x32
+                  LayoutText {#text} at (2,0) size 18x32
+                    text run at (2,0) width 32: "\x{898B}\x{4E0B}"
+          LayoutText {#text} at (1664,367) size 46x496
+            text run at (1664,367) width 128: "\x{3057}\x{305F}\x{304C}\x{3001}\x{3069}\x{3053}\x{3067}\x{9CF4}"
+            text run at (1692,0) width 480: "\x{3044}\x{3066}\x{308B}\x{304B}\x{5F71}\x{3082}\x{5F62}\x{3082}\x{898B}\x{3048}\x{306C}\x{3002}\x{305F}\x{3060}\x{58F0}\x{3060}\x{3051}\x{304C}\x{660E}\x{3089}\x{304B}\x{306B}\x{805E}\x{3048}\x{308B}\x{3002}\x{305B}\x{3063}\x{305B}\x{3068}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x17
+            LayoutRubyRun (anonymous) at (1690,479) size 22x18
+              LayoutRubyText {RT} at (-10,0) size 13x18
+                LayoutText {#text} at (2,0) size 10x18
+                  text run at (2,0) width 18: "\x{305B}\x{308F}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x18
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,1) size 18x16
+                    text run at (2,1) width 16: "\x{5FD9}"
+          LayoutText {#text} at (1720,0) size 18x48
+            text run at (1720,0) width 48: "\x{3057}\x{304F}\x{3001}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x32
+            LayoutRubyRun (anonymous) at (1718,48) size 22x32
+              LayoutRubyText {RT} at (-10,0) size 13x32
+                LayoutText {#text} at (2,0) size 10x31
+                  text run at (2,0) width 30: "\x{305F}\x{3048}\x{307E}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x32
+                LayoutInline {RB} at (0,0) size 18x32
+                  LayoutText {#text} at (2,0) size 18x32
+                    text run at (2,0) width 32: "\x{7D76}\x{9593}"
+          LayoutText {#text} at (1720,80) size 18x128
+            text run at (1720,80) width 128: "\x{306A}\x{304F}\x{9CF4}\x{3044}\x{3066}\x{3044}\x{308B}\x{3002}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x48
+            LayoutRubyRun (anonymous) at (1718,208) size 22x48
+              LayoutRubyText {RT} at (-10,0) size 13x48
+                LayoutText {#text} at (2,0) size 10x48
+                  text run at (2,0) width 47: "\x{307B}\x{3046}\x{3044}\x{304F}\x{308A}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x48
+                LayoutInline {RB} at (0,0) size 18x48
+                  LayoutText {#text} at (2,0) size 18x48
+                    text run at (2,0) width 48: "\x{65B9}\x{5E7E}\x{91CC}"
+          LayoutText {#text} at (1720,256) size 18x112
+            text run at (1720,256) width 112: "\x{306E}\x{7A7A}\x{6C17}\x{304C}\x{4E00}\x{9762}\x{306B}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (1718,367) size 22x18
+              LayoutRubyText {RT} at (-10,0) size 13x18
+                LayoutText {#text} at (2,0) size 10x18
+                  text run at (2,0) width 18: "\x{306E}\x{307F}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x18
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,1) size 18x16
+                    text run at (2,1) width 16: "\x{86A4}"
+          LayoutText {#text} at (1720,384) size 46x496
+            text run at (1720,384) width 112: "\x{306B}\x{523A}\x{3055}\x{308C}\x{3066}\x{3044}\x{305F}"
+            text run at (1748,0) width 304: "\x{305F}\x{307E}\x{308C}\x{306A}\x{3044}\x{3088}\x{3046}\x{306A}\x{6C17}\x{304C}\x{3059}\x{308B}\x{3002}\x{3042}\x{306E}\x{9CE5}\x{306E}\x{9CF4}\x{304F}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (1746,304) size 22x16
+              LayoutRubyText {RT} at (-10,0) size 13x16
+                LayoutText {#text} at (2,3) size 10x10
+                  text run at (2,3) width 9: "\x{306D}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x16
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,0) size 18x16
+                    text run at (2,0) width 16: "\x{97F3}"
+          LayoutText {#text} at (1748,320) size 90x496
+            text run at (1748,320) width 176: "\x{306B}\x{306F}\x{77AC}\x{6642}\x{306E}\x{4F59}\x{88D5}\x{3082}\x{306A}\x{3044}\x{3002}"
+            text run at (1770,0) width 496: "\x{306E}\x{3069}\x{304B}\x{306A}\x{6625}\x{306E}\x{65E5}\x{3092}\x{9CF4}\x{304D}\x{5C3D}\x{304F}\x{3057}\x{3001}\x{9CF4}\x{304D}\x{3042}\x{304B}\x{3057}\x{3001}\x{307E}\x{305F}\x{9CF4}\x{304D}\x{66AE}\x{3089}\x{3055}\x{306A}\x{3051}\x{308C}\x{3070}"
+            text run at (1792,0) width 496: "\x{6C17}\x{304C}\x{6E08}\x{307E}\x{3093}\x{3068}\x{898B}\x{3048}\x{308B}\x{3002}\x{305D}\x{306E}\x{4E0A}\x{3069}\x{3053}\x{307E}\x{3067}\x{3082}\x{767B}\x{3063}\x{3066}\x{884C}\x{304F}\x{3001}\x{3044}\x{3064}\x{307E}\x{3067}\x{3082}\x{767B}\x{3063}"
+            text run at (1820,0) width 432: "\x{3066}\x{884C}\x{304F}\x{3002}\x{96F2}\x{96C0}\x{306F}\x{304D}\x{3063}\x{3068}\x{96F2}\x{306E}\x{4E2D}\x{3067}\x{6B7B}\x{306C}\x{306B}\x{76F8}\x{9055}\x{306A}\x{3044}\x{3002}\x{767B}\x{308A}\x{8A70}\x{3081}\x{305F}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x32
+            LayoutRubyRun (anonymous) at (1818,432) size 22x32
+              LayoutRubyText {RT} at (-10,0) size 13x32
+                LayoutText {#text} at (2,0) size 10x31
+                  text run at (2,0) width 30: "\x{3042}\x{3052}\x{304F}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x32
+                LayoutInline {RB} at (0,0) size 18x32
+                  LayoutText {#text} at (2,0) size 18x32
+                    text run at (2,0) width 32: "\x{63DA}\x{53E5}"
+          LayoutText {#text} at (1820,464) size 46x496
+            text run at (1820,464) width 32: "\x{306F}\x{3001}"
+            text run at (1848,0) width 80: "\x{6D41}\x{308C}\x{3066}\x{96F2}\x{306B}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (1846,80) size 22x16
+              LayoutRubyText {RT} at (-10,0) size 13x16
+                LayoutText {#text} at (2,3) size 10x10
+                  text run at (2,3) width 9: "\x{3044}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x16
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,0) size 18x16
+                    text run at (2,0) width 16: "\x{5165}"
+          LayoutText {#text} at (1848,96) size 18x48
+            text run at (1848,96) width 48: "\x{3063}\x{3066}\x{3001}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x19
+            LayoutRubyRun (anonymous) at (1846,140) size 22x27
+              LayoutRubyText {RT} at (-10,0) size 13x27
+                LayoutText {#text} at (2,0) size 10x27
+                  text run at (2,0) width 27: "\x{305F}\x{3060}\x{3088}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x27
+                LayoutInline {RB} at (0,0) size 18x17
+                  LayoutText {#text} at (2,5) size 18x17
+                    text run at (2,5) width 16: "\x{6F02}"
+          LayoutText {#text} at (1848,163) size 46x499
+            text run at (1848,163) width 336: "\x{3046}\x{3066}\x{3044}\x{308B}\x{3046}\x{3061}\x{306B}\x{5F62}\x{306F}\x{6D88}\x{3048}\x{3066}\x{306A}\x{304F}\x{306A}\x{3063}\x{3066}\x{3001}\x{305F}\x{3060}\x{58F0}"
+            text run at (1876,0) width 80: "\x{3060}\x{3051}\x{304C}\x{7A7A}\x{306E}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (1874,79) size 22x18
+              LayoutRubyText {RT} at (-10,0) size 13x18
+                LayoutText {#text} at (2,0) size 10x18
+                  text run at (2,0) width 18: "\x{3046}\x{3061}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x18
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,1) size 18x16
+                    text run at (2,1) width 16: "\x{88E1}"
+          LayoutText {#text} at (1876,96) size 18x176
+            text run at (1876,96) width 176: "\x{306B}\x{6B8B}\x{308B}\x{306E}\x{304B}\x{3082}\x{77E5}\x{308C}\x{306A}\x{3044}\x{3002}"
+          LayoutBR {BR} at (1876,272) size 18x0
+          LayoutText {#text} at (1904,0) size 18x16
+            text run at (1904,0) width 16: "\x{3000}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x34
+            LayoutRubyRun (anonymous) at (1902,15) size 22x36
+              LayoutRubyText {RT} at (-10,0) size 13x36
+                LayoutText {#text} at (2,0) size 10x36
+                  text run at (2,0) width 36: "\x{3044}\x{308F}\x{304B}\x{3069}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x36
+                LayoutInline {RB} at (0,0) size 18x34
+                  LayoutText {#text} at (2,1) size 18x34
+                    text run at (2,1) width 34: "\x{5DCC}\x{89D2}"
+          LayoutText {#text} at (1904,50) size 18x128
+            text run at (1904,50) width 128: "\x{3092}\x{92ED}\x{3069}\x{304F}\x{5EFB}\x{3063}\x{3066}\x{3001}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x32
+            LayoutRubyRun (anonymous) at (1902,178) size 22x32
+              LayoutRubyText {RT} at (-10,0) size 13x32
+                LayoutText {#text} at (2,0) size 10x31
+                  text run at (2,0) width 30: "\x{3042}\x{3093}\x{307E}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x32
+                LayoutInline {RB} at (0,0) size 18x32
+                  LayoutText {#text} at (2,0) size 18x32
+                    text run at (2,0) width 32: "\x{6309}\x{6469}"
+          LayoutText {#text} at (1904,210) size 18x32
+            text run at (1904,210) width 32: "\x{306A}\x{3089}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x52
+            LayoutRubyRun (anonymous) at (1902,241) size 22x54
+              LayoutRubyText {RT} at (-10,0) size 13x54
+                LayoutText {#text} at (2,0) size 10x54
+                  text run at (2,0) width 54: "\x{307E}\x{3063}\x{3055}\x{304B}\x{3055}\x{307E}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x54
+                LayoutInline {RB} at (0,0) size 18x52
+                  LayoutText {#text} at (2,1) size 18x52
+                    text run at (2,1) width 52: "\x{771F}\x{9006}\x{69D8}"
+          LayoutText {#text} at (1904,294) size 18x144
+            text run at (1904,294) width 144: "\x{306B}\x{843D}\x{3064}\x{308B}\x{3068}\x{3053}\x{308D}\x{3092}\x{3001}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (1902,437) size 22x18
+              LayoutRubyText {RT} at (-10,0) size 13x18
+                LayoutText {#text} at (2,0) size 10x18
+                  text run at (2,0) width 18: "\x{304D}\x{308F}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x18
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,1) size 18x16
+                    text run at (2,1) width 16: "\x{969B}"
+          LayoutText {#text} at (1904,454) size 46x502
+            text run at (1904,454) width 48: "\x{3069}\x{304F}\x{53F3}"
+            text run at (1932,0) width 112: "\x{3078}\x{5207}\x{308C}\x{3066}\x{3001}\x{6A2A}\x{306B}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x32
+            LayoutRubyRun (anonymous) at (1930,112) size 22x32
+              LayoutRubyText {RT} at (-10,0) size 13x32
+                LayoutText {#text} at (2,0) size 10x31
+                  text run at (2,0) width 30: "\x{307F}\x{304A}\x{308D}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x32
+                LayoutInline {RB} at (0,0) size 18x32
+                  LayoutText {#text} at (2,0) size 18x32
+                    text run at (2,0) width 32: "\x{898B}\x{4E0B}"
+          LayoutText {#text} at (1932,144) size 18x48
+            text run at (1932,144) width 48: "\x{3059}\x{3068}\x{3001}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (1930,192) size 22x16
+              LayoutRubyText {RT} at (-10,0) size 13x16
+                LayoutText {#text} at (2,3) size 10x10
+                  text run at (2,3) width 9: "\x{306A}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x16
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,0) size 18x16
+                    text run at (2,0) width 16: "\x{83DC}"
+          LayoutText {#text} at (1932,208) size 46x496
+            text run at (1932,208) width 288: "\x{306E}\x{82B1}\x{304C}\x{4E00}\x{9762}\x{306B}\x{898B}\x{3048}\x{308B}\x{3002}\x{96F2}\x{96C0}\x{306F}\x{3042}\x{3059}\x{3053}\x{3078}\x{843D}"
+            text run at (1960,0) width 240: "\x{3061}\x{308B}\x{306E}\x{304B}\x{3068}\x{601D}\x{3063}\x{305F}\x{3002}\x{3044}\x{3044}\x{3084}\x{3001}\x{3042}\x{306E}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x32
+            LayoutRubyRun (anonymous) at (1958,240) size 22x32
+              LayoutRubyText {RT} at (-10,0) size 13x32
+                LayoutText {#text} at (2,0) size 10x31
+                  text run at (2,0) width 30: "\x{3053}\x{304C}\x{306D}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x32
+                LayoutInline {RB} at (0,0) size 18x32
+                  LayoutText {#text} at (2,0) size 18x32
+                    text run at (2,0) width 32: "\x{9EC4}\x{91D1}"
+          LayoutText {#text} at (1960,272) size 46x496
+            text run at (1960,272) width 224: "\x{306E}\x{539F}\x{304B}\x{3089}\x{98DB}\x{3073}\x{4E0A}\x{304C}\x{3063}\x{3066}\x{304F}\x{308B}\x{306E}\x{304B}"
+            text run at (1988,0) width 240: "\x{3068}\x{601D}\x{3063}\x{305F}\x{3002}\x{6B21}\x{306B}\x{306F}\x{843D}\x{3061}\x{308B}\x{96F2}\x{96C0}\x{3068}\x{3001}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (1986,239) size 22x18
+              LayoutRubyText {RT} at (-10,0) size 13x18
+                LayoutText {#text} at (2,0) size 10x18
+                  text run at (2,0) width 18: "\x{3042}\x{304C}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x18
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,1) size 18x16
+                    text run at (2,1) width 16: "\x{4E0A}"
+          LayoutText {#text} at (1988,256) size 18x16
+            text run at (1988,256) width 16: "\x{308B}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x32
+            LayoutRubyRun (anonymous) at (1986,272) size 22x32
+              LayoutRubyText {RT} at (-10,0) size 13x32
+                LayoutText {#text} at (2,0) size 10x31
+                  text run at (2,0) width 30: "\x{3072}\x{3070}\x{308A}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x32
+                LayoutInline {RB} at (0,0) size 18x32
+                  LayoutText {#text} at (2,0) size 18x32
+                    text run at (2,0) width 32: "\x{96F2}\x{96C0}"
+          LayoutText {#text} at (1988,304) size 46x496
+            text run at (1988,304) width 192: "\x{304C}\x{5341}\x{6587}\x{5B57}\x{306B}\x{3059}\x{308C}\x{9055}\x{3046}\x{306E}\x{304B}\x{3068}"
+            text run at (2016,0) width 400: "\x{601D}\x{3063}\x{305F}\x{3002}\x{6700}\x{5F8C}\x{306B}\x{3001}\x{843D}\x{3061}\x{308B}\x{6642}\x{3082}\x{3001}\x{4E0A}\x{308B}\x{6642}\x{3082}\x{3001}\x{307E}\x{305F}\x{5341}\x{6587}\x{5B57}\x{306B}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (2014,400) size 22x16
+              LayoutRubyText {RT} at (-10,0) size 13x16
+                LayoutText {#text} at (2,3) size 10x10
+                  text run at (2,3) width 9: "\x{3059}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x16
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,0) size 18x16
+                    text run at (2,0) width 16: "\x{64E6}"
+          LayoutText {#text} at (2016,416) size 40x496
+            text run at (2016,416) width 80: "\x{308C}\x{9055}\x{3046}\x{3068}\x{304D}"
+            text run at (2038,0) width 320: "\x{306B}\x{3082}\x{5143}\x{6C17}\x{3088}\x{304F}\x{9CF4}\x{304D}\x{3064}\x{3065}\x{3051}\x{308B}\x{3060}\x{308D}\x{3046}\x{3068}\x{601D}\x{3063}\x{305F}\x{3002}"
+          LayoutBR {BR} at (2038,320) size 18x0
+          LayoutText {#text} at (2066,0) size 18x192
+            text run at (2066,0) width 192: "\x{3000}\x{6625}\x{306F}\x{7720}\x{304F}\x{306A}\x{308B}\x{3002}\x{732B}\x{306F}\x{9F20}\x{3092}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x17
+            LayoutRubyRun (anonymous) at (2064,191.98) size 22x16
+              LayoutRubyText {RT} at (-10,0) size 13x16
+                LayoutText {#text} at (2,3) size 10x10
+                  text run at (2,3) width 9: "\x{3068}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x16
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,0) size 18x16
+                    text run at (2,0) width 16: "\x{6355}"
+          LayoutText {#text} at (2066,207) size 46x496
+            text run at (2066,207) width 288: "\x{308B}\x{4E8B}\x{3092}\x{5FD8}\x{308C}\x{3001}\x{4EBA}\x{9593}\x{306F}\x{501F}\x{91D1}\x{306E}\x{3042}\x{308B}\x{4E8B}\x{3092}\x{5FD8}\x{308C}"
+            text run at (2094,0) width 128: "\x{308B}\x{3002}\x{6642}\x{306B}\x{306F}\x{81EA}\x{5206}\x{306E}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x28
+            LayoutRubyRun (anonymous) at (2092,124) size 22x36
+              LayoutRubyText {RT} at (-10,0) size 13x36
+                LayoutText {#text} at (2,0) size 10x36
+                  text run at (2,0) width 36: "\x{305F}\x{307E}\x{3057}\x{3044}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x36
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,10) size 18x16
+                    text run at (2,10) width 16: "\x{9B42}"
+          LayoutText {#text} at (2094,156) size 18x16
+            text run at (2094,156) width 16: "\x{306E}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x34
+            LayoutRubyRun (anonymous) at (2092,171) size 22x36
+              LayoutRubyText {RT} at (-10,0) size 13x36
+                LayoutText {#text} at (2,0) size 10x36
+                  text run at (2,0) width 36: "\x{3044}\x{3069}\x{3053}\x{308D}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x36
+                LayoutInline {RB} at (0,0) size 18x34
+                  LayoutText {#text} at (2,1) size 18x34
+                    text run at (2,1) width 34: "\x{5C45}\x{6240}"
+          LayoutText {#text} at (2094,206) size 46x494
+            text run at (2094,206) width 288: "\x{3055}\x{3048}\x{5FD8}\x{308C}\x{3066}\x{6B63}\x{4F53}\x{306A}\x{304F}\x{306A}\x{308B}\x{3002}\x{305F}\x{3060}\x{83DC}\x{306E}\x{82B1}\x{3092}"
+            text run at (2122,0) width 160: "\x{9060}\x{304F}\x{671B}\x{3093}\x{3060}\x{3068}\x{304D}\x{306B}\x{773C}\x{304C}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (2120,160) size 22x16
+              LayoutRubyText {RT} at (-10,0) size 13x16
+                LayoutText {#text} at (2,3) size 10x10
+                  text run at (2,3) width 9: "\x{3055}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x16
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,0) size 18x16
+                    text run at (2,0) width 16: "\x{9192}"
+          LayoutText {#text} at (2122,176) size 18x320
+            text run at (2122,176) width 320: "\x{3081}\x{308B}\x{3002}\x{96F2}\x{96C0}\x{306E}\x{58F0}\x{3092}\x{805E}\x{3044}\x{305F}\x{3068}\x{304D}\x{306B}\x{9B42}\x{306E}\x{3042}\x{308A}\x{304B}\x{304C}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x35
+            LayoutRubyRun (anonymous) at (2148,0) size 22x36
+              LayoutRubyText {RT} at (-10,0) size 13x36
+                LayoutText {#text} at (2,0) size 10x36
+                  text run at (2,0) width 36: "\x{306F}\x{3093}\x{305C}\x{3093}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x36
+                LayoutInline {RB} at (0,0) size 18x34
+                  LayoutText {#text} at (2,1) size 18x34
+                    text run at (2,1) width 34: "\x{5224}\x{7136}"
+          LayoutText {#text} at (2150,35) size 62x499
+            text run at (2150,35) width 464: "\x{3059}\x{308B}\x{3002}\x{96F2}\x{96C0}\x{306E}\x{9CF4}\x{304F}\x{306E}\x{306F}\x{53E3}\x{3067}\x{9CF4}\x{304F}\x{306E}\x{3067}\x{306F}\x{306A}\x{3044}\x{3001}\x{9B42}\x{5168}\x{4F53}\x{304C}\x{9CF4}\x{304F}\x{306E}\x{3060}\x{3002}"
+            text run at (2172,0) width 496: "\x{9B42}\x{306E}\x{6D3B}\x{52D5}\x{304C}\x{58F0}\x{306B}\x{3042}\x{3089}\x{308F}\x{308C}\x{305F}\x{3082}\x{306E}\x{306E}\x{3046}\x{3061}\x{3067}\x{3001}\x{3042}\x{308C}\x{307B}\x{3069}\x{5143}\x{6C17}\x{306E}\x{3042}\x{308B}\x{3082}\x{306E}\x{306F}"
+            text run at (2194,0) width 464: "\x{306A}\x{3044}\x{3002}\x{3042}\x{3042}\x{6109}\x{5FEB}\x{3060}\x{3002}\x{3053}\x{3046}\x{601D}\x{3063}\x{3066}\x{3001}\x{3053}\x{3046}\x{6109}\x{5FEB}\x{306B}\x{306A}\x{308B}\x{306E}\x{304C}\x{8A69}\x{3067}\x{3042}\x{308B}\x{3002}"
+          LayoutBR {BR} at (2194,464) size 18x0
+          LayoutText {#text} at (2216,0) size 46x496
+            text run at (2216,0) width 496: "\x{3000}\x{305F}\x{3061}\x{307E}\x{3061}\x{30B7}\x{30A7}\x{30EC}\x{30FC}\x{306E}\x{96F2}\x{96C0}\x{306E}\x{8A69}\x{3092}\x{601D}\x{3044}\x{51FA}\x{3057}\x{3066}\x{3001}\x{53E3}\x{306E}\x{3046}\x{3061}\x{3067}\x{899A}\x{3048}\x{305F}\x{3068}\x{3053}"
+            text run at (2244,0) width 48: "\x{308D}\x{3060}\x{3051}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x39
+            LayoutRubyRun (anonymous) at (2242,45) size 22x45
+              LayoutRubyText {RT} at (-10,0) size 13x45
+                LayoutText {#text} at (2,0) size 10x45
+                  text run at (2,0) width 45: "\x{3042}\x{3093}\x{3057}\x{3087}\x{3046}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x45
+                LayoutInline {RB} at (0,0) size 18x39
+                  LayoutText {#text} at (2,3) size 18x39
+                    text run at (2,3) width 38: "\x{6697}\x{8AA6}"
+          LayoutText {#text} at (2244,87) size 40x503
+            text run at (2244,87) width 416: "\x{3057}\x{3066}\x{898B}\x{305F}\x{304C}\x{3001}\x{899A}\x{3048}\x{3066}\x{3044}\x{308B}\x{3068}\x{3053}\x{308D}\x{306F}\x{4E8C}\x{4E09}\x{53E5}\x{3057}\x{304B}\x{306A}\x{304B}\x{3063}\x{305F}\x{3002}\x{305D}"
+            text run at (2266,0) width 256: "\x{306E}\x{4E8C}\x{4E09}\x{53E5}\x{306E}\x{306A}\x{304B}\x{306B}\x{3053}\x{3093}\x{306A}\x{306E}\x{304C}\x{3042}\x{308B}\x{3002}"
+          LayoutBR {BR} at (2266,256) size 18x0
+        LayoutBlockFlow {DIV} at (2286,32) size 106x472
+          LayoutText {#text} at (2,0) size 18x191
+            text run at (2,0) width 191: "\x{3000}\x{3000}We look before and after"
+          LayoutBR {BR} at (2,190) size 18x1
+          LayoutText {#text} at (24,0) size 18x225
+            text run at (24,0) width 225: "\x{3000}\x{3000}\x{3000}\x{3000}And pine for what is not:"
+          LayoutBR {BR} at (24,224) size 18x1
+          LayoutText {#text} at (46,0) size 18x174
+            text run at (46,0) width 174: "\x{3000}\x{3000}Our sincerest laughter"
+          LayoutBR {BR} at (46,173) size 18x1
+          LayoutText {#text} at (68,0) size 18x234
+            text run at (68,0) width 234: "\x{3000}\x{3000}\x{3000}\x{3000}With some pain is fraught;"
+          LayoutBR {BR} at (68,234) size 18x0
+          LayoutText {#text} at (88,0) size 18x363
+            text run at (88,0) width 363: "Our sweetest songs are those that tell of saddest thought."
+          LayoutBR {BR} at (88,362) size 18x1
+        LayoutBlockFlow (anonymous) at (2392,0) size 1714x504
+          LayoutText {#text} at (10,0) size 18x112
+            text run at (10,0) width 112: "\x{300C}\x{524D}\x{3092}\x{307F}\x{3066}\x{306F}\x{3001}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (8,111) size 22x18
+              LayoutRubyText {RT} at (-10,0) size 13x18
+                LayoutText {#text} at (2,0) size 10x18
+                  text run at (2,0) width 18: "\x{3057}\x{308A}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x18
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,1) size 18x16
+                    text run at (2,1) width 16: "\x{5F8C}"
+          LayoutText {#text} at (10,128) size 18x96
+            text run at (10,128) width 96: "\x{3048}\x{3092}\x{898B}\x{3066}\x{306F}\x{3001}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x32
+            LayoutRubyRun (anonymous) at (8,224) size 22x32
+              LayoutRubyText {RT} at (-10,0) size 13x32
+                LayoutText {#text} at (2,0) size 10x31
+                  text run at (2,0) width 30: "\x{3082}\x{306E}\x{307B}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x32
+                LayoutInline {RB} at (0,0) size 18x32
+                  LayoutText {#text} at (2,0) size 18x32
+                    text run at (2,0) width 32: "\x{7269}\x{6B32}"
+          LayoutText {#text} at (10,256) size 46x496
+            text run at (10,256) width 240: "\x{3057}\x{3068}\x{3001}\x{3042}\x{3053}\x{304C}\x{308B}\x{308B}\x{304B}\x{306A}\x{308F}\x{308C}\x{3002}\x{8179}\x{304B}"
+            text run at (38,0) width 448: "\x{3089}\x{306E}\x{3001}\x{7B11}\x{3068}\x{3044}\x{3048}\x{3069}\x{3001}\x{82E6}\x{3057}\x{307F}\x{306E}\x{3001}\x{305D}\x{3053}\x{306B}\x{3042}\x{308B}\x{3079}\x{3057}\x{3002}\x{3046}\x{3064}\x{304F}\x{3057}\x{304D}\x{3001}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (36,447) size 22x18
+              LayoutRubyText {RT} at (-10,0) size 13x18
+                LayoutText {#text} at (2,0) size 10x18
+                  text run at (2,0) width 18: "\x{304D}\x{308F}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x18
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,1) size 18x16
+                    text run at (2,1) width 16: "\x{6975}"
+          LayoutText {#text} at (38,464) size 46x496
+            text run at (38,464) width 32: "\x{307F}\x{306E}"
+            text run at (66,0) width 176: "\x{6B4C}\x{306B}\x{3001}\x{60B2}\x{3057}\x{3055}\x{306E}\x{3001}\x{6975}\x{307F}\x{306E}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x19
+            LayoutRubyRun (anonymous) at (64,172) size 22x27
+              LayoutRubyText {RT} at (-10,0) size 13x27
+                LayoutText {#text} at (2,0) size 10x27
+                  text run at (2,0) width 27: "\x{304A}\x{3082}\x{3044}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x27
+                LayoutInline {RB} at (0,0) size 18x17
+                  LayoutText {#text} at (2,5) size 18x17
+                    text run at (2,5) width 16: "\x{60F3}"
+          LayoutText {#text} at (66,195) size 18x16
+            text run at (66,195) width 16: "\x{3001}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (64,210) size 22x18
+              LayoutRubyText {RT} at (-10,0) size 13x18
+                LayoutText {#text} at (2,0) size 10x18
+                  text run at (2,0) width 18: "\x{3053}\x{3082}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x18
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,1) size 18x16
+                    text run at (2,1) width 16: "\x{7C60}"
+          LayoutText {#text} at (66,227) size 18x96
+            text run at (66,227) width 96: "\x{308B}\x{3068}\x{305E}\x{77E5}\x{308C}\x{300D}"
+          LayoutBR {BR} at (66,323) size 18x0
+          LayoutText {#text} at (88,0) size 46x496
+            text run at (88,0) width 496: "\x{3000}\x{306A}\x{308B}\x{307B}\x{3069}\x{3044}\x{304F}\x{3089}\x{8A69}\x{4EBA}\x{304C}\x{5E78}\x{798F}\x{3067}\x{3082}\x{3001}\x{3042}\x{306E}\x{96F2}\x{96C0}\x{306E}\x{3088}\x{3046}\x{306B}\x{601D}\x{3044}\x{5207}\x{3063}\x{3066}\x{3001}\x{4E00}"
+            text run at (116,0) width 320: "\x{5FC3}\x{4E0D}\x{4E71}\x{306B}\x{3001}\x{524D}\x{5F8C}\x{3092}\x{5FD8}\x{5374}\x{3057}\x{3066}\x{3001}\x{308F}\x{304C}\x{559C}\x{3073}\x{3092}\x{6B4C}\x{3046}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (114,319) size 22x18
+              LayoutRubyText {RT} at (-10,0) size 13x18
+                LayoutText {#text} at (2,0) size 10x18
+                  text run at (2,0) width 18: "\x{308F}\x{3051}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x18
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,1) size 18x16
+                    text run at (2,1) width 16: "\x{8A33}"
+          LayoutText {#text} at (116,336) size 46x496
+            text run at (116,336) width 160: "\x{306B}\x{306F}\x{884C}\x{304F}\x{307E}\x{3044}\x{3002}\x{897F}\x{6D0B}\x{306E}"
+            text run at (144,0) width 256: "\x{8A69}\x{306F}\x{7121}\x{8AD6}\x{306E}\x{4E8B}\x{3001}\x{652F}\x{90A3}\x{306E}\x{8A69}\x{306B}\x{3082}\x{3001}\x{3088}\x{304F}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x34
+            LayoutRubyRun (anonymous) at (142,255) size 22x36
+              LayoutRubyText {RT} at (-10,0) size 13x36
+                LayoutText {#text} at (2,0) size 10x36
+                  text run at (2,0) width 36: "\x{3070}\x{3093}\x{3053}\x{304F}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x36
+                LayoutInline {RB} at (0,0) size 18x34
+                  LayoutText {#text} at (2,1) size 18x34
+                    text run at (2,1) width 34: "\x{4E07}\x{659B}"
+          LayoutText {#text} at (144,290) size 18x16
+            text run at (144,290) width 16: "\x{306E}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x19
+            LayoutRubyRun (anonymous) at (142,302) size 22x27
+              LayoutRubyText {RT} at (-10,0) size 13x27
+                LayoutText {#text} at (2,0) size 10x27
+                  text run at (2,0) width 27: "\x{3046}\x{308C}\x{3044}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x27
+                LayoutInline {RB} at (0,0) size 18x17
+                  LayoutText {#text} at (2,5) size 18x17
+                    text run at (2,5) width 16: "\x{6101}"
+          LayoutText {#text} at (144,325) size 46x501
+            text run at (144,325) width 176: "\x{306A}\x{3069}\x{3068}\x{4E91}\x{3046}\x{5B57}\x{304C}\x{3042}\x{308B}\x{3002}\x{8A69}"
+            text run at (172,0) width 112: "\x{4EBA}\x{3060}\x{304B}\x{3089}\x{4E07}\x{659B}\x{3067}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x34
+            LayoutRubyRun (anonymous) at (170,111) size 22x36
+              LayoutRubyText {RT} at (-10,0) size 13x36
+                LayoutText {#text} at (2,0) size 10x36
+                  text run at (2,0) width 36: "\x{3057}\x{308D}\x{3046}\x{3068}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x36
+                LayoutInline {RB} at (0,0) size 18x34
+                  LayoutText {#text} at (2,1) size 18x34
+                    text run at (2,1) width 34: "\x{7D20}\x{4EBA}"
+          LayoutText {#text} at (172,146) size 18x48
+            text run at (172,146) width 48: "\x{306A}\x{3089}\x{4E00}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (170,193) size 22x18
+              LayoutRubyText {RT} at (-10,0) size 13x18
+                LayoutText {#text} at (2,0) size 10x18
+                  text run at (2,0) width 18: "\x{3054}\x{3046}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x18
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,1) size 18x16
+                    text run at (2,1) width 16: "\x{5408}"
+          LayoutText {#text} at (172,210) size 46x498
+            text run at (172,210) width 288: "\x{3067}\x{6E08}\x{3080}\x{304B}\x{3082}\x{77E5}\x{308C}\x{306C}\x{3002}\x{3057}\x{3066}\x{898B}\x{308B}\x{3068}\x{8A69}\x{4EBA}\x{306F}\x{5E38}"
+            text run at (200,0) width 160: "\x{306E}\x{4EBA}\x{3088}\x{308A}\x{3082}\x{82E6}\x{52B4}\x{6027}\x{3067}\x{3001}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x34
+            LayoutRubyRun (anonymous) at (198,159) size 22x36
+              LayoutRubyText {RT} at (-10,0) size 13x36
+                LayoutText {#text} at (2,0) size 10x36
+                  text run at (2,0) width 36: "\x{307C}\x{3093}\x{3053}\x{3064}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x36
+                LayoutInline {RB} at (0,0) size 18x34
+                  LayoutText {#text} at (2,1) size 18x34
+                    text run at (2,1) width 34: "\x{51E1}\x{9AA8}"
+          LayoutText {#text} at (200,194) size 46x498
+            text run at (200,194) width 304: "\x{306E}\x{500D}\x{4EE5}\x{4E0A}\x{306B}\x{795E}\x{7D4C}\x{304C}\x{92ED}\x{654F}\x{306A}\x{306E}\x{304B}\x{3082}\x{77E5}\x{308C}\x{3093}\x{3002}\x{8D85}"
+            text run at (228,0) width 208: "\x{4FD7}\x{306E}\x{559C}\x{3073}\x{3082}\x{3042}\x{308D}\x{3046}\x{304C}\x{3001}\x{7121}\x{91CF}\x{306E}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x28
+            LayoutRubyRun (anonymous) at (226,204) size 22x36
+              LayoutRubyText {RT} at (-10,0) size 13x36
+                LayoutText {#text} at (2,0) size 10x36
+                  text run at (2,0) width 36: "\x{304B}\x{306A}\x{3057}\x{307F}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x36
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,10) size 18x16
+                    text run at (2,10) width 16: "\x{60B2}"
+          LayoutText {#text} at (228,236) size 40x492
+            text run at (228,236) width 256: "\x{3082}\x{591A}\x{304B}\x{308D}\x{3046}\x{3002}\x{305D}\x{3093}\x{306A}\x{3089}\x{3070}\x{8A69}\x{4EBA}\x{306B}\x{306A}\x{308B}"
+            text run at (250,0) width 112: "\x{306E}\x{3082}\x{8003}\x{3048}\x{7269}\x{3060}\x{3002}"
+          LayoutBR {BR} at (250,112) size 18x0
+          LayoutText {#text} at (278,0) size 18x128
+            text run at (278,0) width 128: "\x{3000}\x{3057}\x{3070}\x{3089}\x{304F}\x{306F}\x{8DEF}\x{304C}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x20
+            LayoutRubyRun (anonymous) at (276,123.98) size 22x27
+              LayoutRubyText {RT} at (-10,0) size 13x27
+                LayoutText {#text} at (2,0) size 10x27
+                  text run at (2,0) width 27: "\x{305F}\x{3044}\x{3089}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x27
+                LayoutInline {RB} at (0,0) size 18x17
+                  LayoutText {#text} at (2,5) size 18x17
+                    text run at (2,5) width 16: "\x{5E73}"
+          LayoutText {#text} at (278,146) size 18x65
+            text run at (278,146) width 64: "\x{3067}\x{3001}\x{53F3}\x{306F}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x49
+            LayoutRubyRun (anonymous) at (276,210.98) size 22x48
+              LayoutRubyText {RT} at (-10,0) size 13x48
+                LayoutText {#text} at (2,0) size 10x48
+                  text run at (2,0) width 47: "\x{305E}\x{3046}\x{304D}\x{3084}\x{307E}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x48
+                LayoutInline {RB} at (0,0) size 18x48
+                  LayoutText {#text} at (2,0) size 18x48
+                    text run at (2,0) width 48: "\x{96D1}\x{6728}\x{5C71}"
+          LayoutText {#text} at (278,258) size 46x499
+            text run at (278,258) width 240: "\x{3001}\x{5DE6}\x{306F}\x{83DC}\x{306E}\x{82B1}\x{306E}\x{898B}\x{3064}\x{3065}\x{3051}\x{3067}\x{3042}\x{308B}\x{3002}"
+            text run at (306,0) width 96: "\x{8DB3}\x{306E}\x{4E0B}\x{306B}\x{6642}\x{3005}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x48
+            LayoutRubyRun (anonymous) at (304,96) size 22x48
+              LayoutRubyText {RT} at (-10,0) size 13x48
+                LayoutText {#text} at (2,1) size 10x46
+                  text run at (2,1) width 45: "\x{305F}\x{3093}\x{307D}\x{307D}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x48
+                LayoutInline {RB} at (0,0) size 18x48
+                  LayoutText {#text} at (2,0) size 18x48
+                    text run at (2,0) width 48: "\x{84B2}\x{516C}\x{82F1}"
+          LayoutText {#text} at (306,144) size 18x112
+            text run at (306,144) width 112: "\x{3092}\x{8E0F}\x{307F}\x{3064}\x{3051}\x{308B}\x{3002}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x28
+            LayoutRubyRun (anonymous) at (304,252) size 22x36
+              LayoutRubyText {RT} at (-10,0) size 13x36
+                LayoutText {#text} at (2,0) size 10x36
+                  text run at (2,0) width 36: "\x{306E}\x{3053}\x{304E}\x{308A}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x36
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,10) size 18x16
+                    text run at (2,10) width 16: "\x{92F8}"
+          LayoutText {#text} at (306,284) size 46x492
+            text run at (306,284) width 208: "\x{306E}\x{3088}\x{3046}\x{306A}\x{8449}\x{304C}\x{9060}\x{616E}\x{306A}\x{304F}\x{56DB}\x{65B9}\x{3078}"
+            text run at (334,0) width 144: "\x{306E}\x{3057}\x{3066}\x{771F}\x{4E2D}\x{306B}\x{9EC4}\x{8272}\x{306A}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (332,143) size 22x18
+              LayoutRubyText {RT} at (-10,0) size 13x18
+                LayoutText {#text} at (2,0) size 10x18
+                  text run at (2,0) width 18: "\x{305F}\x{307E}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x18
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,1) size 18x16
+                    text run at (2,1) width 16: "\x{73E0}"
+          LayoutText {#text} at (334,160) size 68x496
+            text run at (334,160) width 336: "\x{3092}\x{64C1}\x{8B77}\x{3057}\x{3066}\x{3044}\x{308B}\x{3002}\x{83DC}\x{306E}\x{82B1}\x{306B}\x{6C17}\x{3092}\x{3068}\x{3089}\x{308C}\x{3066}\x{3001}\x{8E0F}\x{307F}"
+            text run at (356,0) width 496: "\x{3064}\x{3051}\x{305F}\x{3042}\x{3068}\x{3067}\x{3001}\x{6C17}\x{306E}\x{6BD2}\x{306A}\x{4E8B}\x{3092}\x{3057}\x{305F}\x{3068}\x{3001}\x{632F}\x{308A}\x{5411}\x{3044}\x{3066}\x{898B}\x{308B}\x{3068}\x{3001}\x{9EC4}\x{8272}\x{306A}\x{73E0}\x{306F}"
+            text run at (384,0) width 160: "\x{4F9D}\x{7136}\x{3068}\x{3057}\x{3066}\x{92F8}\x{306E}\x{306A}\x{304B}\x{306B}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x32
+            LayoutRubyRun (anonymous) at (382,160) size 22x32
+              LayoutRubyText {RT} at (-10,0) size 13x32
+                LayoutText {#text} at (2,0) size 10x31
+                  text run at (2,0) width 30: "\x{3061}\x{3093}\x{3056}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x32
+                LayoutInline {RB} at (0,0) size 18x32
+                  LayoutText {#text} at (2,0) size 18x32
+                    text run at (2,0) width 32: "\x{93AE}\x{5EA7}"
+          LayoutText {#text} at (384,192) size 18x80
+            text run at (384,192) width 80: "\x{3057}\x{3066}\x{3044}\x{308B}\x{3002}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x32
+            LayoutRubyRun (anonymous) at (382,272) size 22x32
+              LayoutRubyText {RT} at (-10,0) size 13x32
+                LayoutText {#text} at (2,0) size 10x31
+                  text run at (2,0) width 30: "\x{306E}\x{3093}\x{304D}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x32
+                LayoutInline {RB} at (0,0) size 18x32
+                  LayoutText {#text} at (2,0) size 18x32
+                    text run at (2,0) width 32: "\x{5451}\x{6C17}"
+          LayoutText {#text} at (384,304) size 40x496
+            text run at (384,304) width 192: "\x{306A}\x{3082}\x{306E}\x{3060}\x{3002}\x{307E}\x{305F}\x{8003}\x{3048}\x{3092}\x{3064}\x{3065}"
+            text run at (406,0) width 48: "\x{3051}\x{308B}\x{3002}"
+          LayoutBR {BR} at (406,48) size 18x0
+          LayoutText {#text} at (434,0) size 18x64
+            text run at (434,0) width 64: "\x{3000}\x{8A69}\x{4EBA}\x{306B}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x20
+            LayoutRubyRun (anonymous) at (432,59.98) size 22x27
+              LayoutRubyText {RT} at (-10,0) size 13x27
+                LayoutText {#text} at (2,0) size 10x27
+                  text run at (2,0) width 27: "\x{3046}\x{308C}\x{3044}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x27
+                LayoutInline {RB} at (0,0) size 18x17
+                  LayoutText {#text} at (2,5) size 18x17
+                    text run at (2,5) width 16: "\x{6182}"
+          LayoutText {#text} at (434,82) size 18x241
+            text run at (434,82) width 240: "\x{306F}\x{3064}\x{304D}\x{3082}\x{306E}\x{304B}\x{3082}\x{77E5}\x{308C}\x{306A}\x{3044}\x{304C}\x{3001}\x{3042}\x{306E}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x33
+            LayoutRubyRun (anonymous) at (432,322.98) size 22x32
+              LayoutRubyText {RT} at (-10,0) size 13x32
+                LayoutText {#text} at (2,0) size 10x31
+                  text run at (2,0) width 30: "\x{3072}\x{3070}\x{308A}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x32
+                LayoutInline {RB} at (0,0) size 18x32
+                  LayoutText {#text} at (2,0) size 18x32
+                    text run at (2,0) width 32: "\x{96F2}\x{96C0}"
+          LayoutText {#text} at (434,354) size 18x145
+            text run at (434,354) width 144: "\x{3092}\x{805E}\x{304F}\x{5FC3}\x{6301}\x{306B}\x{306A}\x{308C}\x{3070}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x32
+            LayoutRubyRun (anonymous) at (460,0) size 22x32
+              LayoutRubyText {RT} at (-10,0) size 13x32
+                LayoutText {#text} at (2,0) size 10x31
+                  text run at (2,0) width 30: "\x{307F}\x{3058}\x{3093}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x32
+                LayoutInline {RB} at (0,0) size 18x32
+                  LayoutText {#text} at (2,0) size 18x32
+                    text run at (2,0) width 32: "\x{5FAE}\x{5875}"
+          LayoutText {#text} at (462,32) size 18x16
+            text run at (462,32) width 16: "\x{306E}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (460,48) size 22x16
+              LayoutRubyText {RT} at (-10,0) size 13x16
+                LayoutText {#text} at (2,3) size 10x10
+                  text run at (2,3) width 9: "\x{304F}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x16
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,0) size 18x16
+                    text run at (2,0) width 16: "\x{82E6}"
+          LayoutText {#text} at (462,64) size 18x336
+            text run at (462,64) width 336: "\x{3082}\x{306A}\x{3044}\x{3002}\x{83DC}\x{306E}\x{82B1}\x{3092}\x{898B}\x{3066}\x{3082}\x{3001}\x{305F}\x{3060}\x{3046}\x{308C}\x{3057}\x{304F}\x{3066}\x{80F8}\x{304C}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (460,399) size 22x18
+              LayoutRubyText {RT} at (-10,0) size 13x18
+                LayoutText {#text} at (2,0) size 10x18
+                  text run at (2,0) width 18: "\x{304A}\x{3069}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x18
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,1) size 18x16
+                    text run at (2,1) width 16: "\x{8E8D}"
+          LayoutText {#text} at (462,416) size 68x496
+            text run at (462,416) width 64: "\x{308B}\x{3070}\x{304B}\x{308A}"
+            text run at (484,0) width 496: "\x{3060}\x{3002}\x{84B2}\x{516C}\x{82F1}\x{3082}\x{305D}\x{306E}\x{901A}\x{308A}\x{3001}\x{685C}\x{3082}\x{2015}\x{2015}\x{685C}\x{306F}\x{3044}\x{3064}\x{304B}\x{898B}\x{3048}\x{306A}\x{304F}\x{306A}\x{3063}\x{305F}\x{3002}\x{3053}\x{3046}\x{5C71}"
+            text run at (512,0) width 128: "\x{306E}\x{4E2D}\x{3078}\x{6765}\x{3066}\x{81EA}\x{7136}\x{306E}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x34
+            LayoutRubyRun (anonymous) at (510,127) size 22x36
+              LayoutRubyText {RT} at (-10,0) size 13x36
+                LayoutText {#text} at (2,0) size 10x36
+                  text run at (2,0) width 36: "\x{3051}\x{3044}\x{3076}\x{3064}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x36
+                LayoutInline {RB} at (0,0) size 18x34
+                  LayoutText {#text} at (2,1) size 18x34
+                    text run at (2,1) width 34: "\x{666F}\x{7269}"
+          LayoutText {#text} at (512,162) size 46x498
+            text run at (512,162) width 336: "\x{306B}\x{63A5}\x{3059}\x{308C}\x{3070}\x{3001}\x{898B}\x{308B}\x{3082}\x{306E}\x{3082}\x{805E}\x{304F}\x{3082}\x{306E}\x{3082}\x{9762}\x{767D}\x{3044}\x{3002}\x{9762}"
+            text run at (540,0) width 384: "\x{767D}\x{3044}\x{3060}\x{3051}\x{3067}\x{5225}\x{6BB5}\x{306E}\x{82E6}\x{3057}\x{307F}\x{3082}\x{8D77}\x{3089}\x{306C}\x{3002}\x{8D77}\x{308B}\x{3068}\x{3059}\x{308C}\x{3070}\x{8DB3}\x{304C}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x32
+            LayoutRubyRun (anonymous) at (538,384) size 22x32
+              LayoutRubyText {RT} at (-10,0) size 13x32
+                LayoutText {#text} at (2,0) size 10x31
+                  text run at (2,0) width 30: "\x{304F}\x{305F}\x{3073}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x32
+                LayoutInline {RB} at (0,0) size 18x32
+                  LayoutText {#text} at (2,0) size 18x32
+                    text run at (2,0) width 32: "\x{8349}\x{81E5}"
+          LayoutText {#text} at (540,416) size 18x48
+            text run at (540,416) width 48: "\x{308C}\x{3066}\x{3001}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (538,463) size 22x18
+              LayoutRubyText {RT} at (-10,0) size 13x18
+                LayoutText {#text} at (2,0) size 10x18
+                  text run at (2,0) width 18: "\x{3046}\x{307E}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x18
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,1) size 18x16
+                    text run at (2,1) width 16: "\x{65E8}"
+          LayoutText {#text} at (540,480) size 40x496
+            text run at (540,480) width 16: "\x{3044}"
+            text run at (562,0) width 272: "\x{3082}\x{306E}\x{304C}\x{98DF}\x{3079}\x{3089}\x{308C}\x{306C}\x{304F}\x{3089}\x{3044}\x{306E}\x{4E8B}\x{3060}\x{308D}\x{3046}\x{3002}"
+          LayoutBR {BR} at (562,272) size 18x0
+          LayoutText {#text} at (590,0) size 18x416
+            text run at (590,0) width 416: "\x{3000}\x{3057}\x{304B}\x{3057}\x{82E6}\x{3057}\x{307F}\x{306E}\x{306A}\x{3044}\x{306E}\x{306F}\x{306A}\x{305C}\x{3060}\x{308D}\x{3046}\x{3002}\x{305F}\x{3060}\x{3053}\x{306E}\x{666F}\x{8272}\x{3092}\x{4E00}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (588,415) size 22x18
+              LayoutRubyText {RT} at (-10,0) size 13x18
+                LayoutText {#text} at (2,0) size 10x18
+                  text run at (2,0) width 18: "\x{3077}\x{304F}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x18
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,1) size 18x16
+                    text run at (2,1) width 16: "\x{5E45}"
+          LayoutText {#text} at (590,432) size 18x16
+            text run at (590,432) width 16: "\x{306E}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (588,448) size 22x16
+              LayoutRubyText {RT} at (-10,0) size 13x16
+                LayoutText {#text} at (2,3) size 10x10
+                  text run at (2,3) width 9: "\x{3048}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x16
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,0) size 18x16
+                    text run at (2,0) width 16: "\x{753B}"
+          LayoutText {#text} at (590,464) size 46x496
+            text run at (590,464) width 32: "\x{3068}\x{3057}"
+            text run at (618,0) width 16: "\x{3066}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (616,16) size 22x16
+              LayoutRubyText {RT} at (-10,0) size 13x16
+                LayoutText {#text} at (2,3) size 10x10
+                  text run at (2,3) width 9: "\x{307F}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x16
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,0) size 18x16
+                    text run at (2,0) width 16: "\x{89B3}"
+          LayoutText {#text} at (618,32) size 18x32
+            text run at (618,32) width 32: "\x{3001}\x{4E00}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (616,63) size 22x18
+              LayoutRubyText {RT} at (-10,0) size 13x18
+                LayoutText {#text} at (2,0) size 10x18
+                  text run at (2,0) width 18: "\x{304B}\x{3093}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x18
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,1) size 18x16
+                    text run at (2,1) width 16: "\x{5DFB}"
+          LayoutText {#text} at (618,80) size 18x208
+            text run at (618,80) width 208: "\x{306E}\x{8A69}\x{3068}\x{3057}\x{3066}\x{8AAD}\x{3080}\x{304B}\x{3089}\x{3067}\x{3042}\x{308B}\x{3002}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (616,288) size 22x16
+              LayoutRubyText {RT} at (-10,0) size 13x16
+                LayoutText {#text} at (2,3) size 10x10
+                  text run at (2,3) width 9: "\x{304C}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x16
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,0) size 18x16
+                    text run at (2,0) width 16: "\x{753B}"
+          LayoutText {#text} at (618,304) size 18x160
+            text run at (618,304) width 160: "\x{3067}\x{3042}\x{308A}\x{8A69}\x{3067}\x{3042}\x{308B}\x{4EE5}\x{4E0A}\x{306F}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x32
+            LayoutRubyRun (anonymous) at (616,464) size 22x32
+              LayoutRubyText {RT} at (-10,0) size 13x32
+                LayoutText {#text} at (2,0) size 10x31
+                  text run at (2,0) width 30: "\x{3058}\x{3081}\x{3093}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x32
+                LayoutInline {RB} at (0,0) size 18x32
+                  LayoutText {#text} at (2,0) size 18x32
+                    text run at (2,0) width 32: "\x{5730}\x{9762}"
+          LayoutText {#text} at (646,0) size 18x368
+            text run at (646,0) width 368: "\x{3092}\x{8CB0}\x{3063}\x{3066}\x{3001}\x{958B}\x{62D3}\x{3059}\x{308B}\x{6C17}\x{306B}\x{3082}\x{306A}\x{3089}\x{306D}\x{3070}\x{3001}\x{9244}\x{9053}\x{3092}\x{304B}\x{3051}\x{3066}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x34
+            LayoutRubyRun (anonymous) at (644,367) size 22x36
+              LayoutRubyText {RT} at (-10,0) size 13x36
+                LayoutText {#text} at (2,0) size 10x36
+                  text run at (2,0) width 36: "\x{3072}\x{3068}\x{3082}\x{3046}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x36
+                LayoutInline {RB} at (0,0) size 18x34
+                  LayoutText {#text} at (2,1) size 18x34
+                    text run at (2,1) width 34: "\x{4E00}\x{5132}"
+          LayoutText {#text} at (646,402) size 18x48
+            text run at (646,402) width 48: "\x{3051}\x{3059}\x{308B}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x42
+            LayoutRubyRun (anonymous) at (644,447) size 22x45
+              LayoutRubyText {RT} at (-10,0) size 13x45
+                LayoutText {#text} at (2,0) size 10x45
+                  text run at (2,0) width 45: "\x{308A}\x{3087}\x{3046}\x{3051}\x{3093}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x45
+                LayoutInline {RB} at (0,0) size 18x39
+                  LayoutText {#text} at (2,3) size 18x39
+                    text run at (2,3) width 38: "\x{4E86}\x{898B}"
+          LayoutText {#text} at (674,0) size 18x256
+            text run at (674,0) width 256: "\x{3082}\x{8D77}\x{3089}\x{306C}\x{3002}\x{305F}\x{3060}\x{3053}\x{306E}\x{666F}\x{8272}\x{304C}\x{2015}\x{2015}\x{8179}\x{306E}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (672,256) size 22x16
+              LayoutRubyText {RT} at (-10,0) size 13x16
+                LayoutText {#text} at (2,3) size 10x10
+                  text run at (2,3) width 9: "\x{305F}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x16
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,0) size 18x16
+                    text run at (2,0) width 16: "\x{8DB3}"
+          LayoutText {#text} at (674,272) size 68x496
+            text run at (674,272) width 224: "\x{3057}\x{306B}\x{3082}\x{306A}\x{3089}\x{306C}\x{3001}\x{6708}\x{7D66}\x{306E}\x{88DC}\x{3044}\x{306B}\x{3082}"
+            text run at (696,0) width 496: "\x{306A}\x{3089}\x{306C}\x{3053}\x{306E}\x{666F}\x{8272}\x{304C}\x{666F}\x{8272}\x{3068}\x{3057}\x{3066}\x{306E}\x{307F}\x{3001}\x{4F59}\x{304C}\x{5FC3}\x{3092}\x{697D}\x{307E}\x{305B}\x{3064}\x{3064}\x{3042}\x{308B}\x{304B}\x{3089}\x{82E6}\x{52B4}"
+            text run at (724,0) width 64: "\x{3082}\x{5FC3}\x{914D}\x{3082}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x19
+            LayoutRubyRun (anonymous) at (722,60) size 22x27
+              LayoutRubyText {RT} at (-10,0) size 13x27
+                LayoutText {#text} at (2,0) size 10x27
+                  text run at (2,0) width 27: "\x{3068}\x{3082}\x{306A}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x27
+                LayoutInline {RB} at (0,0) size 18x17
+                  LayoutText {#text} at (2,5) size 18x17
+                    text run at (2,5) width 16: "\x{4F34}"
+          LayoutText {#text} at (724,83) size 18x288
+            text run at (724,83) width 288: "\x{308F}\x{306C}\x{306E}\x{3060}\x{308D}\x{3046}\x{3002}\x{81EA}\x{7136}\x{306E}\x{529B}\x{306F}\x{3053}\x{3053}\x{306B}\x{304A}\x{3044}\x{3066}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (722,370) size 22x18
+              LayoutRubyText {RT} at (-10,0) size 13x18
+                LayoutText {#text} at (2,0) size 10x18
+                  text run at (2,0) width 18: "\x{305F}\x{3063}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x18
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,1) size 18x16
+                    text run at (2,1) width 16: "\x{5C0A}"
+          LayoutText {#text} at (724,387) size 46x499
+            text run at (724,387) width 112: "\x{3068}\x{3044}\x{3002}\x{543E}\x{4EBA}\x{306E}\x{6027}"
+            text run at (752,0) width 80: "\x{60C5}\x{3092}\x{77AC}\x{523B}\x{306B}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x32
+            LayoutRubyRun (anonymous) at (750,80) size 22x32
+              LayoutRubyText {RT} at (-10,0) size 13x32
+                LayoutText {#text} at (2,0) size 10x31
+                  text run at (2,0) width 30: "\x{3068}\x{3046}\x{3084}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x32
+                LayoutInline {RB} at (0,0) size 18x32
+                  LayoutText {#text} at (2,0) size 18x32
+                    text run at (2,0) width 32: "\x{9676}\x{51B6}"
+          LayoutText {#text} at (752,112) size 18x32
+            text run at (752,112) width 32: "\x{3057}\x{3066}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x34
+            LayoutRubyRun (anonymous) at (750,143) size 22x36
+              LayoutRubyText {RT} at (-10,0) size 13x36
+                LayoutText {#text} at (2,0) size 10x36
+                  text run at (2,0) width 36: "\x{3058}\x{3085}\x{3093}\x{3053}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x36
+                LayoutInline {RB} at (0,0) size 18x34
+                  LayoutText {#text} at (2,1) size 18x34
+                    text run at (2,1) width 34: "\x{9187}\x{4E4E}"
+          LayoutText {#text} at (752,178) size 40x498
+            text run at (752,178) width 320: "\x{3068}\x{3057}\x{3066}\x{9187}\x{306A}\x{308B}\x{8A69}\x{5883}\x{306B}\x{5165}\x{3089}\x{3057}\x{3080}\x{308B}\x{306E}\x{306F}\x{81EA}\x{7136}\x{3067}\x{3042}"
+            text run at (774,0) width 32: "\x{308B}\x{3002}"
+          LayoutBR {BR} at (774,32) size 18x0
+          LayoutText {#text} at (796,0) size 46x496
+            text run at (796,0) width 496: "\x{3000}\x{604B}\x{306F}\x{3046}\x{3064}\x{304F}\x{3057}\x{304B}\x{308D}\x{3001}\x{5B5D}\x{3082}\x{3046}\x{3064}\x{304F}\x{3057}\x{304B}\x{308D}\x{3001}\x{5FE0}\x{541B}\x{611B}\x{56FD}\x{3082}\x{7D50}\x{69CB}\x{3060}\x{308D}\x{3046}\x{3002}\x{3057}"
+            text run at (824,0) width 112: "\x{304B}\x{3057}\x{81EA}\x{8EAB}\x{304C}\x{305D}\x{306E}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x19
+            LayoutRubyRun (anonymous) at (822,108) size 22x27
+              LayoutRubyText {RT} at (-10,0) size 13x27
+                LayoutText {#text} at (2,0) size 10x27
+                  text run at (2,0) width 27: "\x{304D}\x{3087}\x{304F}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x27
+                LayoutInline {RB} at (0,0) size 18x17
+                  LayoutText {#text} at (2,5) size 18x17
+                    text run at (2,5) width 16: "\x{5C40}"
+          LayoutText {#text} at (824,131) size 18x112
+            text run at (824,131) width 112: "\x{306B}\x{5F53}\x{308C}\x{3070}\x{5229}\x{5BB3}\x{306E}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x32
+            LayoutRubyRun (anonymous) at (822,243) size 22x32
+              LayoutRubyText {RT} at (-10,0) size 13x32
+                LayoutText {#text} at (2,0) size 10x31
+                  text run at (2,0) width 30: "\x{3064}\x{3080}\x{3058}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x32
+                LayoutInline {RB} at (0,0) size 18x32
+                  LayoutText {#text} at (2,0) size 18x32
+                    text run at (2,0) width 32: "\x{65CB}\x{98A8}"
+          LayoutText {#text} at (824,275) size 18x16
+            text run at (824,275) width 16: "\x{306B}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (822,291) size 22x16
+              LayoutRubyText {RT} at (-10,0) size 13x16
+                LayoutText {#text} at (2,3) size 10x10
+                  text run at (2,3) width 9: "\x{307E}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x16
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,0) size 18x16
+                    text run at (2,0) width 16: "\x{6372}"
+          LayoutText {#text} at (824,307) size 46x499
+            text run at (824,307) width 192: "\x{304D}\x{8FBC}\x{307E}\x{308C}\x{3066}\x{3001}\x{3046}\x{3064}\x{304F}\x{3057}\x{304D}\x{4E8B}"
+            text run at (852,0) width 192: "\x{306B}\x{3082}\x{3001}\x{7D50}\x{69CB}\x{306A}\x{4E8B}\x{306B}\x{3082}\x{3001}\x{76EE}\x{306F}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (850,191) size 22x18
+              LayoutRubyText {RT} at (-10,0) size 13x18
+                LayoutText {#text} at (2,0) size 10x18
+                  text run at (2,0) width 18: "\x{304F}\x{3089}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x18
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,1) size 18x16
+                    text run at (2,1) width 16: "\x{7729}"
+          LayoutText {#text} at (852,208) size 46x496
+            text run at (852,208) width 288: "\x{3093}\x{3067}\x{3057}\x{307E}\x{3046}\x{3002}\x{3057}\x{305F}\x{304C}\x{3063}\x{3066}\x{3069}\x{3053}\x{306B}\x{8A69}\x{304C}\x{3042}\x{308B}"
+            text run at (880,0) width 80: "\x{304B}\x{81EA}\x{8EAB}\x{306B}\x{306F}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (878,80) size 22x16
+              LayoutRubyText {RT} at (-10,0) size 13x16
+                LayoutText {#text} at (2,3) size 10x10
+                  text run at (2,3) width 9: "\x{3052}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x16
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,0) size 18x16
+                    text run at (2,0) width 16: "\x{89E3}"
+          LayoutText {#text} at (880,96) size 18x80
+            text run at (880,96) width 80: "\x{3057}\x{304B}\x{306D}\x{308B}\x{3002}"
+          LayoutBR {BR} at (880,176) size 18x0
+          LayoutText {#text} at (902,0) size 46x496
+            text run at (902,0) width 496: "\x{3000}\x{3053}\x{308C}\x{304C}\x{308F}\x{304B}\x{308B}\x{305F}\x{3081}\x{306B}\x{306F}\x{3001}\x{308F}\x{304B}\x{308B}\x{3060}\x{3051}\x{306E}\x{4F59}\x{88D5}\x{306E}\x{3042}\x{308B}\x{7B2C}\x{4E09}\x{8005}\x{306E}\x{5730}\x{4F4D}\x{306B}\x{7ACB}"
+            text run at (930,0) width 336: "\x{305F}\x{306D}\x{3070}\x{306A}\x{3089}\x{306C}\x{3002}\x{4E09}\x{8005}\x{306E}\x{5730}\x{4F4D}\x{306B}\x{7ACB}\x{3066}\x{3070}\x{3053}\x{305D}\x{829D}\x{5C45}\x{306F}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (928,336) size 22x16
+              LayoutRubyText {RT} at (-10,0) size 13x16
+                LayoutText {#text} at (2,3) size 10x10
+                  text run at (2,3) width 9: "\x{307F}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x16
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,0) size 18x16
+                    text run at (2,0) width 16: "\x{89B3}"
+          LayoutText {#text} at (930,352) size 68x496
+            text run at (930,352) width 144: "\x{3066}\x{9762}\x{767D}\x{3044}\x{3002}\x{5C0F}\x{8AAC}\x{3082}\x{898B}"
+            text run at (952,0) width 496: "\x{3066}\x{9762}\x{767D}\x{3044}\x{3002}\x{829D}\x{5C45}\x{3092}\x{898B}\x{3066}\x{9762}\x{767D}\x{3044}\x{4EBA}\x{3082}\x{3001}\x{5C0F}\x{8AAC}\x{3092}\x{8AAD}\x{3093}\x{3067}\x{9762}\x{767D}\x{3044}\x{4EBA}\x{3082}\x{3001}\x{81EA}\x{5DF1}\x{306E}"
+            text run at (980,0) width 48: "\x{5229}\x{5BB3}\x{306F}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (978,47) size 22x18
+              LayoutRubyText {RT} at (-10,0) size 13x18
+                LayoutText {#text} at (2,0) size 10x18
+                  text run at (2,0) width 18: "\x{305F}\x{306A}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x18
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,1) size 18x16
+                    text run at (2,1) width 16: "\x{68DA}"
+          LayoutText {#text} at (980,64) size 18x416
+            text run at (980,64) width 416: "\x{3078}\x{4E0A}\x{3052}\x{3066}\x{3044}\x{308B}\x{3002}\x{898B}\x{305F}\x{308A}\x{8AAD}\x{3093}\x{3060}\x{308A}\x{3059}\x{308B}\x{9593}\x{3060}\x{3051}\x{306F}\x{8A69}\x{4EBA}\x{3067}\x{3042}\x{308B}\x{3002}"
+          LayoutBR {BR} at (980,480) size 18x0
+          LayoutText {#text} at (1008,0) size 18x304
+            text run at (1008,0) width 304: "\x{3000}\x{305D}\x{308C}\x{3059}\x{3089}\x{3001}\x{666E}\x{901A}\x{306E}\x{829D}\x{5C45}\x{3084}\x{5C0F}\x{8AAC}\x{3067}\x{306F}\x{4EBA}\x{60C5}\x{3092}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (1006,303) size 22x18
+              LayoutRubyText {RT} at (-10,0) size 13x18
+                LayoutText {#text} at (2,0) size 10x18
+                  text run at (2,0) width 18: "\x{307E}\x{306C}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x18
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,1) size 18x16
+                    text run at (2,1) width 16: "\x{514D}"
+          LayoutText {#text} at (1008,320) size 68x496
+            text run at (1008,320) width 176: "\x{304B}\x{308C}\x{306C}\x{3002}\x{82E6}\x{3057}\x{3093}\x{3060}\x{308A}\x{3001}\x{6012}"
+            text run at (1030,0) width 496: "\x{3063}\x{305F}\x{308A}\x{3001}\x{9A12}\x{3044}\x{3060}\x{308A}\x{3001}\x{6CE3}\x{3044}\x{305F}\x{308A}\x{3059}\x{308B}\x{3002}\x{898B}\x{308B}\x{3082}\x{306E}\x{3082}\x{3044}\x{3064}\x{304B}\x{305D}\x{306E}\x{4E2D}\x{306B}\x{540C}\x{5316}\x{3057}"
+            text run at (1058,0) width 384: "\x{3066}\x{82E6}\x{3057}\x{3093}\x{3060}\x{308A}\x{3001}\x{6012}\x{3063}\x{305F}\x{308A}\x{3001}\x{9A12}\x{3044}\x{3060}\x{308A}\x{3001}\x{6CE3}\x{3044}\x{305F}\x{308A}\x{3059}\x{308B}\x{3002}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x32
+            LayoutRubyRun (anonymous) at (1056,384) size 22x32
+              LayoutRubyText {RT} at (-10,0) size 13x32
+                LayoutText {#text} at (2,0) size 10x31
+                  text run at (2,0) width 30: "\x{3068}\x{308A}\x{3048}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x32
+                LayoutInline {RB} at (0,0) size 18x32
+                  LayoutText {#text} at (2,0) size 18x32
+                    text run at (2,0) width 32: "\x{53D6}\x{67C4}"
+          LayoutText {#text} at (1058,416) size 18x64
+            text run at (1058,416) width 64: "\x{306F}\x{5229}\x{617E}\x{304C}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x17
+            LayoutRubyRun (anonymous) at (1056,479) size 22x18
+              LayoutRubyText {RT} at (-10,0) size 13x18
+                LayoutText {#text} at (2,0) size 10x18
+                  text run at (2,0) width 18: "\x{307E}\x{3058}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x18
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,1) size 18x16
+                    text run at (2,1) width 16: "\x{4EA4}"
+          LayoutText {#text} at (1086,0) size 18x112
+            text run at (1086,0) width 112: "\x{3089}\x{306C}\x{3068}\x{4E91}\x{3046}\x{70B9}\x{306B}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (1084,111) size 22x18
+              LayoutRubyText {RT} at (-10,0) size 13x18
+                LayoutText {#text} at (2,0) size 10x18
+                  text run at (2,0) width 18: "\x{305D}\x{3093}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x18
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,1) size 18x16
+                    text run at (2,1) width 16: "\x{5B58}"
+          LayoutText {#text} at (1086,128) size 18x304
+            text run at (1086,128) width 304: "\x{3059}\x{308B}\x{304B}\x{3082}\x{77E5}\x{308C}\x{306C}\x{304C}\x{3001}\x{4EA4}\x{3089}\x{306C}\x{3060}\x{3051}\x{306B}\x{305D}\x{306E}\x{4ED6}\x{306E}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x39
+            LayoutRubyRun (anonymous) at (1084,429) size 22x45
+              LayoutRubyText {RT} at (-10,0) size 13x45
+                LayoutText {#text} at (2,0) size 10x45
+                  text run at (2,0) width 45: "\x{3058}\x{3087}\x{3046}\x{3057}\x{3087}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x45
+                LayoutInline {RB} at (0,0) size 18x39
+                  LayoutText {#text} at (2,3) size 18x39
+                    text run at (2,3) width 38: "\x{60C5}\x{7DD2}"
+          LayoutText {#text} at (1086,471) size 46x503
+            text run at (1086,471) width 32: "\x{306F}\x{5E38}"
+            text run at (1114,0) width 272: "\x{3088}\x{308A}\x{306F}\x{4F59}\x{8A08}\x{306B}\x{6D3B}\x{52D5}\x{3059}\x{308B}\x{3060}\x{308D}\x{3046}\x{3002}\x{305D}\x{308C}\x{304C}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (1112,271) size 22x18
+              LayoutRubyText {RT} at (-10,0) size 13x18
+                LayoutText {#text} at (2,0) size 10x18
+                  text run at (2,0) width 18: "\x{3044}\x{3084}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x18
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,1) size 18x16
+                    text run at (2,1) width 16: "\x{5ACC}"
+          LayoutText {#text} at (1114,288) size 18x32
+            text run at (1114,288) width 32: "\x{3060}\x{3002}"
+          LayoutBR {BR} at (1114,320) size 18x0
+          LayoutText {#text} at (1136,0) size 46x480
+            text run at (1136,0) width 480: "\x{3000}\x{82E6}\x{3057}\x{3093}\x{3060}\x{308A}\x{3001}\x{6012}\x{3063}\x{305F}\x{308A}\x{3001}\x{9A12}\x{3044}\x{3060}\x{308A}\x{3001}\x{6CE3}\x{3044}\x{305F}\x{308A}\x{306F}\x{4EBA}\x{306E}\x{4E16}\x{306B}\x{3064}\x{304D}\x{3082}\x{306E}"
+            text run at (1164,0) width 192: "\x{3060}\x{3002}\x{4F59}\x{3082}\x{4E09}\x{5341}\x{5E74}\x{306E}\x{9593}\x{305D}\x{308C}\x{3092}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x32
+            LayoutRubyRun (anonymous) at (1162,192) size 22x32
+              LayoutRubyText {RT} at (-10,0) size 13x32
+                LayoutText {#text} at (2,0) size 10x31
+                  text run at (2,0) width 30: "\x{3057}\x{3068}\x{304A}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x32
+                LayoutInline {RB} at (0,0) size 18x32
+                  LayoutText {#text} at (2,0) size 18x32
+                    text run at (2,0) width 32: "\x{4ED5}\x{901A}"
+          LayoutText {#text} at (1164,224) size 18x48
+            text run at (1164,224) width 48: "\x{3057}\x{3066}\x{3001}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x34
+            LayoutRubyRun (anonymous) at (1162,271) size 22x36
+              LayoutRubyText {RT} at (-10,0) size 13x36
+                LayoutText {#text} at (2,0) size 10x36
+                  text run at (2,0) width 36: "\x{3042}\x{304D}\x{3042}\x{304D}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x36
+                LayoutInline {RB} at (0,0) size 18x34
+                  LayoutText {#text} at (2,1) size 18x34
+                    text run at (2,1) width 34: "\x{98FD}\x{3005}"
+          LayoutText {#text} at (1164,306) size 18x48
+            text run at (1164,306) width 48: "\x{3057}\x{305F}\x{3002}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (1162,354) size 22x16
+              LayoutRubyText {RT} at (-10,0) size 13x16
+                LayoutText {#text} at (2,3) size 10x10
+                  text run at (2,3) width 9: "\x{3042}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x16
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,0) size 18x16
+                    text run at (2,0) width 16: "\x{98FD}"
+          LayoutText {#text} at (1164,370) size 68x498
+            text run at (1164,370) width 128: "\x{304D}\x{98FD}\x{304D}\x{3057}\x{305F}\x{4E0A}\x{306B}\x{829D}"
+            text run at (1186,0) width 496: "\x{5C45}\x{3084}\x{5C0F}\x{8AAC}\x{3067}\x{540C}\x{3058}\x{523A}\x{6FC0}\x{3092}\x{7E70}\x{308A}\x{8FD4}\x{3057}\x{3066}\x{306F}\x{5927}\x{5909}\x{3060}\x{3002}\x{4F59}\x{304C}\x{6B32}\x{3059}\x{308B}\x{8A69}\x{306F}\x{305D}\x{3093}\x{306A}\x{4E16}"
+            text run at (1214,0) width 96: "\x{9593}\x{7684}\x{306E}\x{4EBA}\x{60C5}\x{3092}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x32
+            LayoutRubyRun (anonymous) at (1212,96) size 22x32
+              LayoutRubyText {RT} at (-10,0) size 13x32
+                LayoutText {#text} at (2,3) size 10x26
+                  text run at (2,3) width 25: "\x{3053}\x{3076}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x32
+                LayoutInline {RB} at (0,0) size 18x32
+                  LayoutText {#text} at (2,0) size 18x32
+                    text run at (2,0) width 32: "\x{9F13}\x{821E}"
+          LayoutText {#text} at (1214,128) size 46x496
+            text run at (1214,128) width 368: "\x{3059}\x{308B}\x{3088}\x{3046}\x{306A}\x{3082}\x{306E}\x{3067}\x{306F}\x{306A}\x{3044}\x{3002}\x{4FD7}\x{5FF5}\x{3092}\x{653E}\x{68C4}\x{3057}\x{3066}\x{3001}\x{3057}\x{3070}\x{3089}"
+            text run at (1242,0) width 48: "\x{304F}\x{3067}\x{3082}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x34
+            LayoutRubyRun (anonymous) at (1240,47) size 22x36
+              LayoutRubyText {RT} at (-10,0) size 13x36
+                LayoutText {#text} at (2,0) size 10x36
+                  text run at (2,0) width 36: "\x{3058}\x{3093}\x{304B}\x{3044}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x36
+                LayoutInline {RB} at (0,0) size 18x34
+                  LayoutText {#text} at (2,1) size 18x34
+                    text run at (2,1) width 34: "\x{5875}\x{754C}"
+          LayoutText {#text} at (1242,82) size 90x498
+            text run at (1242,82) width 416: "\x{3092}\x{96E2}\x{308C}\x{305F}\x{5FC3}\x{6301}\x{3061}\x{306B}\x{306A}\x{308C}\x{308B}\x{8A69}\x{3067}\x{3042}\x{308B}\x{3002}\x{3044}\x{304F}\x{3089}\x{5091}\x{4F5C}\x{3067}\x{3082}\x{4EBA}\x{60C5}\x{3092}"
+            text run at (1264,0) width 496: "\x{96E2}\x{308C}\x{305F}\x{829D}\x{5C45}\x{306F}\x{306A}\x{3044}\x{3001}\x{7406}\x{975E}\x{3092}\x{7D76}\x{3057}\x{305F}\x{5C0F}\x{8AAC}\x{306F}\x{5C11}\x{304B}\x{308D}\x{3046}\x{3002}\x{3069}\x{3053}\x{307E}\x{3067}\x{3082}\x{4E16}\x{9593}\x{3092}"
+            text run at (1286,0) width 496: "\x{51FA}\x{308B}\x{4E8B}\x{304C}\x{51FA}\x{6765}\x{306C}\x{306E}\x{304C}\x{5F7C}\x{3089}\x{306E}\x{7279}\x{8272}\x{3067}\x{3042}\x{308B}\x{3002}\x{3053}\x{3068}\x{306B}\x{897F}\x{6D0B}\x{306E}\x{8A69}\x{306B}\x{306A}\x{308B}\x{3068}\x{3001}\x{4EBA}"
+            text run at (1314,0) width 208: "\x{4E8B}\x{304C}\x{6839}\x{672C}\x{306B}\x{306A}\x{308B}\x{304B}\x{3089}\x{3044}\x{308F}\x{3086}\x{308B}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x32
+            LayoutRubyRun (anonymous) at (1312,208) size 22x32
+              LayoutRubyText {RT} at (-10,0) size 13x32
+                LayoutText {#text} at (2,0) size 10x31
+                  text run at (2,0) width 30: "\x{3057}\x{3044}\x{304B}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x32
+                LayoutInline {RB} at (0,0) size 18x32
+                  LayoutText {#text} at (2,0) size 18x32
+                    text run at (2,0) width 32: "\x{8A69}\x{6B4C}"
+          LayoutText {#text} at (1314,240) size 18x160
+            text run at (1314,240) width 160: "\x{306E}\x{7D14}\x{7C8B}\x{306A}\x{308B}\x{3082}\x{306E}\x{3082}\x{3053}\x{306E}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x19
+            LayoutRubyRun (anonymous) at (1312,396) size 22x27
+              LayoutRubyText {RT} at (-10,0) size 13x27
+                LayoutText {#text} at (2,0) size 10x27
+                  text run at (2,0) width 27: "\x{304D}\x{3087}\x{3046}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x27
+                LayoutInline {RB} at (0,0) size 18x17
+                  LayoutText {#text} at (2,5) size 18x17
+                    text run at (2,5) width 16: "\x{5883}"
+          LayoutText {#text} at (1314,419) size 18x16
+            text run at (1314,419) width 16: "\x{3092}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x32
+            LayoutRubyRun (anonymous) at (1312,435) size 22x32
+              LayoutRubyText {RT} at (-10,0) size 13x32
+                LayoutText {#text} at (2,0) size 10x31
+                  text run at (2,0) width 30: "\x{3052}\x{3060}\x{3064}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x32
+                LayoutInline {RB} at (0,0) size 18x32
+                  LayoutText {#text} at (2,0) size 18x32
+                    text run at (2,0) width 32: "\x{89E3}\x{8131}"
+          LayoutText {#text} at (1314,467) size 68x499
+            text run at (1314,467) width 32: "\x{3059}\x{308B}"
+            text run at (1336,0) width 496: "\x{4E8B}\x{3092}\x{77E5}\x{3089}\x{306C}\x{3002}\x{3069}\x{3053}\x{307E}\x{3067}\x{3082}\x{540C}\x{60C5}\x{3060}\x{3068}\x{304B}\x{3001}\x{611B}\x{3060}\x{3068}\x{304B}\x{3001}\x{6B63}\x{7FA9}\x{3060}\x{3068}\x{304B}\x{3001}\x{81EA}\x{7531}\x{3060}"
+            text run at (1364,0) width 48: "\x{3068}\x{304B}\x{3001}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x32
+            LayoutRubyRun (anonymous) at (1362,48) size 22x32
+              LayoutRubyText {RT} at (-10,0) size 13x32
+                LayoutText {#text} at (2,0) size 10x31
+                  text run at (2,0) width 30: "\x{3046}\x{304D}\x{3088}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x32
+                LayoutInline {RB} at (0,0) size 18x32
+                  LayoutText {#text} at (2,0) size 18x32
+                    text run at (2,0) width 32: "\x{6D6E}\x{4E16}"
+          LayoutText {#text} at (1364,80) size 18x16
+            text run at (1364,80) width 16: "\x{306E}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x48
+            LayoutRubyRun (anonymous) at (1362,96) size 22x48
+              LayoutRubyText {RT} at (-10,0) size 13x48
+                LayoutText {#text} at (2,0) size 10x48
+                  text run at (2,0) width 47: "\x{304B}\x{3093}\x{3053}\x{3046}\x{3070}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x48
+                LayoutInline {RB} at (0,0) size 18x48
+                  LayoutText {#text} at (2,0) size 18x48
+                    text run at (2,0) width 48: "\x{52E7}\x{5DE5}\x{5834}"
+          LayoutText {#text} at (1364,144) size 18x160
+            text run at (1364,144) width 160: "\x{306B}\x{3042}\x{308B}\x{3082}\x{306E}\x{3060}\x{3051}\x{3067}\x{7528}\x{3092}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (1362,303) size 22x18
+              LayoutRubyText {RT} at (-10,0) size 13x18
+                LayoutText {#text} at (2,0) size 10x18
+                  text run at (2,0) width 18: "\x{3079}\x{3093}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x18
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,1) size 18x16
+                    text run at (2,1) width 16: "\x{5F01}"
+          LayoutText {#text} at (1364,320) size 46x496
+            text run at (1364,320) width 176: "\x{3058}\x{3066}\x{3044}\x{308B}\x{3002}\x{3044}\x{304F}\x{3089}\x{8A69}\x{7684}\x{306B}"
+            text run at (1392,0) width 144: "\x{306A}\x{3063}\x{3066}\x{3082}\x{5730}\x{9762}\x{306E}\x{4E0A}\x{3092}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (1390,144) size 22x16
+              LayoutRubyText {RT} at (-10,0) size 13x16
+                LayoutText {#text} at (2,3) size 10x10
+                  text run at (2,3) width 9: "\x{304B}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x16
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,0) size 18x16
+                    text run at (2,0) width 16: "\x{99B3}"
+          LayoutText {#text} at (1392,160) size 18x112
+            text run at (1392,160) width 112: "\x{3051}\x{3066}\x{3042}\x{308B}\x{3044}\x{3066}\x{3001}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (1390,271) size 22x18
+              LayoutRubyText {RT} at (-10,0) size 13x18
+                LayoutText {#text} at (2,0) size 10x18
+                  text run at (2,0) width 18: "\x{305C}\x{306B}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x18
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,1) size 18x16
+                    text run at (2,1) width 16: "\x{92AD}"
+          LayoutText {#text} at (1392,288) size 46x496
+            text run at (1392,288) width 208: "\x{306E}\x{52D8}\x{5B9A}\x{3092}\x{5FD8}\x{308C}\x{308B}\x{3072}\x{307E}\x{304C}\x{306A}\x{3044}\x{3002}"
+            text run at (1420,0) width 80: "\x{30B7}\x{30A7}\x{30EC}\x{30FC}\x{304C}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x32
+            LayoutRubyRun (anonymous) at (1418,80) size 22x32
+              LayoutRubyText {RT} at (-10,0) size 13x32
+                LayoutText {#text} at (2,0) size 10x31
+                  text run at (2,0) width 30: "\x{3072}\x{3070}\x{308A}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x32
+                LayoutInline {RB} at (0,0) size 18x32
+                  LayoutText {#text} at (2,0) size 18x32
+                    text run at (2,0) width 32: "\x{96F2}\x{96C0}"
+          LayoutText {#text} at (1420,112) size 18x256
+            text run at (1420,112) width 256: "\x{3092}\x{805E}\x{3044}\x{3066}\x{5606}\x{606F}\x{3057}\x{305F}\x{306E}\x{3082}\x{7121}\x{7406}\x{306F}\x{306A}\x{3044}\x{3002}"
+          LayoutBR {BR} at (1420,368) size 18x0
+          LayoutText {#text} at (1448,0) size 18x160
+            text run at (1448,0) width 160: "\x{3000}\x{3046}\x{308C}\x{3057}\x{3044}\x{4E8B}\x{306B}\x{6771}\x{6D0B}\x{306E}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x33
+            LayoutRubyRun (anonymous) at (1446,159.98) size 22x32
+              LayoutRubyText {RT} at (-10,0) size 13x32
+                LayoutText {#text} at (2,0) size 10x31
+                  text run at (2,0) width 30: "\x{3057}\x{3044}\x{304B}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x32
+                LayoutInline {RB} at (0,0) size 18x32
+                  LayoutText {#text} at (2,0) size 18x32
+                    text run at (2,0) width 32: "\x{8A69}\x{6B4C}"
+          LayoutText {#text} at (1448,191) size 18x65
+            text run at (1448,191) width 64: "\x{306F}\x{305D}\x{3053}\x{3092}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x33
+            LayoutRubyRun (anonymous) at (1446,255.98) size 22x32
+              LayoutRubyText {RT} at (-10,0) size 13x32
+                LayoutText {#text} at (2,0) size 10x31
+                  text run at (2,0) width 30: "\x{3052}\x{3060}\x{3064}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x32
+                LayoutInline {RB} at (0,0) size 18x32
+                  LayoutText {#text} at (2,0) size 18x32
+                    text run at (2,0) width 32: "\x{89E3}\x{8131}"
+          LayoutText {#text} at (1448,287) size 18x113
+            text run at (1448,287) width 112: "\x{3057}\x{305F}\x{306E}\x{304C}\x{3042}\x{308B}\x{3002}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x43
+            LayoutRubyRun (anonymous) at (1446,396.98) size 22x45
+              LayoutRubyText {RT} at (-10,0) size 13x45
+                LayoutText {#text} at (2,0) size 10x45
+                  text run at (2,0) width 45: "\x{304D}\x{304F}\x{3092}\x{3068}\x{308B}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x45
+                LayoutInline {RB} at (0,0) size 18x39
+                  LayoutText {#text} at (2,3) size 18x39
+                    text run at (2,3) width 38: "\x{63A1}\x{83CA}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x53
+            LayoutRubyRun (anonymous) at (1474,0) size 22x54
+              LayoutRubyText {RT} at (-10,0) size 13x54
+                LayoutText {#text} at (2,0) size 10x54
+                  text run at (2,0) width 54: "\x{3068}\x{3046}\x{308A}\x{306E}\x{3082}\x{3068}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x54
+                LayoutInline {RB} at (0,0) size 18x52
+                  LayoutText {#text} at (2,1) size 18x52
+                    text run at (2,1) width 52: "\x{6771}\x{7C6C}\x{4E0B}"
+          LayoutText {#text} at (1476,53) size 18x16
+            text run at (1476,53) width 16: "\x{3001}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x59
+            LayoutRubyRun (anonymous) at (1474,65) size 22x63
+              LayoutRubyText {RT} at (-10,0) size 13x63
+                LayoutText {#text} at (2,0) size 10x63
+                  text run at (2,0) width 63: "\x{3086}\x{3046}\x{305C}\x{3093}\x{3068}\x{3057}\x{3066}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x63
+                LayoutInline {RB} at (0,0) size 18x48
+                  LayoutText {#text} at (2,7) size 18x48
+                    text run at (2,7) width 47: "\x{60A0}\x{7136}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x61
+            LayoutRubyRun (anonymous) at (1474,128) size 22x63
+              LayoutRubyText {RT} at (-10,0) size 13x63
+                LayoutText {#text} at (2,0) size 10x63
+                  text run at (2,0) width 63: "\x{306A}\x{3093}\x{3056}\x{3093}\x{3092}\x{307F}\x{308B}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x63
+                LayoutInline {RB} at (0,0) size 18x59
+                  LayoutText {#text} at (2,2) size 18x59
+                    text run at (2,2) width 58: "\x{898B}\x{5357}\x{5C71}"
+          LayoutText {#text} at (1476,189) size 18x128
+            text run at (1476,189) width 128: "\x{3002}\x{305F}\x{3060}\x{305D}\x{308C}\x{304E}\x{308A}\x{306E}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (1474,316) size 22x18
+              LayoutRubyText {RT} at (-10,0) size 13x18
+                LayoutText {#text} at (2,0) size 10x18
+                  text run at (2,0) width 18: "\x{3046}\x{3061}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x18
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,1) size 18x16
+                    text run at (2,1) width 16: "\x{88CF}"
+          LayoutText {#text} at (1476,333) size 46x493
+            text run at (1476,333) width 160: "\x{306B}\x{6691}\x{82E6}\x{3057}\x{3044}\x{4E16}\x{306E}\x{4E2D}\x{3092}\x{307E}"
+            text run at (1504,0) width 368: "\x{308B}\x{3067}\x{5FD8}\x{308C}\x{305F}\x{5149}\x{666F}\x{304C}\x{51FA}\x{3066}\x{304F}\x{308B}\x{3002}\x{57A3}\x{306E}\x{5411}\x{3046}\x{306B}\x{96A3}\x{308A}\x{306E}\x{5A18}\x{304C}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (1502,367) size 22x18
+              LayoutRubyText {RT} at (-10,0) size 13x18
+                LayoutText {#text} at (2,0) size 10x18
+                  text run at (2,0) width 18: "\x{306E}\x{305E}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x18
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,1) size 18x16
+                    text run at (2,1) width 16: "\x{8997}"
+          LayoutText {#text} at (1504,384) size 46x496
+            text run at (1504,384) width 112: "\x{3044}\x{3066}\x{308B}\x{8A33}\x{3067}\x{3082}\x{306A}"
+            text run at (1532,0) width 64: "\x{3051}\x{308C}\x{3070}\x{3001}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x34
+            LayoutRubyRun (anonymous) at (1530,63) size 22x36
+              LayoutRubyText {RT} at (-10,0) size 13x36
+                LayoutText {#text} at (2,0) size 10x36
+                  text run at (2,0) width 36: "\x{306A}\x{3093}\x{3056}\x{3093}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x36
+                LayoutInline {RB} at (0,0) size 18x34
+                  LayoutText {#text} at (2,1) size 18x34
+                    text run at (2,1) width 34: "\x{5357}\x{5C71}"
+          LayoutText {#text} at (1532,98) size 18x320
+            text run at (1532,98) width 320: "\x{306B}\x{89AA}\x{53CB}\x{304C}\x{5949}\x{8077}\x{3057}\x{3066}\x{3044}\x{308B}\x{6B21}\x{7B2C}\x{3067}\x{3082}\x{306A}\x{3044}\x{3002}\x{8D85}\x{7136}\x{3068}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x70
+            LayoutRubyRun (anonymous) at (1530,417) size 22x72
+              LayoutRubyText {RT} at (-10,0) size 13x72
+                LayoutText {#text} at (2,0) size 10x72
+                  text run at (2,0) width 72: "\x{3057}\x{3085}\x{3063}\x{305B}\x{3051}\x{3093}\x{3066}\x{304D}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x72
+                LayoutInline {RB} at (0,0) size 18x70
+                  LayoutText {#text} at (2,1) size 18x70
+                    text run at (2,1) width 70: "\x{51FA}\x{4E16}\x{9593}\x{7684}"
+          LayoutText {#text} at (1532,488) size 46x504
+            text run at (1532,488) width 16: "\x{306B}"
+            text run at (1560,0) width 320: "\x{5229}\x{5BB3}\x{640D}\x{5F97}\x{306E}\x{6C57}\x{3092}\x{6D41}\x{3057}\x{53BB}\x{3063}\x{305F}\x{5FC3}\x{6301}\x{3061}\x{306B}\x{306A}\x{308C}\x{308B}\x{3002}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x23
+            LayoutRubyRun (anonymous) at (1558,316) size 22x27
+              LayoutRubyText {RT} at (-10,0) size 13x27
+                LayoutText {#text} at (2,0) size 10x27
+                  text run at (2,0) width 27: "\x{3072}\x{3068}\x{308A}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x27
+                LayoutInline {RB} at (0,0) size 18x17
+                  LayoutText {#text} at (2,5) size 18x17
+                    text run at (2,5) width 16: "\x{72EC}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x87
+            LayoutRubyRun (anonymous) at (1558,343) size 22x90
+              LayoutRubyText {RT} at (-10,0) size 13x90
+                LayoutText {#text} at (2,0) size 10x90
+                  text run at (2,0) width 90: "\x{3086}\x{3046}\x{3053}\x{3046}\x{306E}\x{3046}\x{3061}\x{306B}\x{3056}\x{3057}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x90
+                LayoutInline {RB} at (0,0) size 18x84
+                  LayoutText {#text} at (2,3) size 18x84
+                    text run at (2,3) width 83: "\x{5750}\x{5E7D}\x{7BC1}\x{88CF}"
+          LayoutText {#text} at (1560,430) size 18x16
+            text run at (1560,430) width 16: "\x{3001}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x63
+            LayoutRubyRun (anonymous) at (1586,0) size 22x63
+              LayoutRubyText {RT} at (-10,0) size 13x63
+                LayoutText {#text} at (2,0) size 10x63
+                  text run at (2,0) width 63: "\x{304D}\x{3093}\x{3092}\x{3060}\x{3093}\x{3058}\x{3066}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x63
+                LayoutInline {RB} at (0,0) size 18x48
+                  LayoutText {#text} at (2,7) size 18x48
+                    text run at (2,7) width 47: "\x{5F3E}\x{7434}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x77
+            LayoutRubyRun (anonymous) at (1586,63) size 22x81
+              LayoutRubyText {RT} at (-10,0) size 13x81
+                LayoutText {#text} at (2,0) size 10x81
+                  text run at (2,0) width 81: "\x{307E}\x{305F}\x{3061}\x{3087}\x{3046}\x{3057}\x{3087}\x{3046}\x{3059}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x81
+                LayoutInline {RB} at (0,0) size 18x71
+                  LayoutText {#text} at (2,5) size 18x71
+                    text run at (2,5) width 70: "\x{5FA9}\x{9577}\x{562F}"
+          LayoutText {#text} at (1588,140) size 18x16
+            text run at (1588,140) width 16: "\x{3001}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x35
+            LayoutRubyRun (anonymous) at (1586,155) size 22x36
+              LayoutRubyText {RT} at (-10,0) size 13x36
+                LayoutText {#text} at (2,0) size 10x36
+                  text run at (2,0) width 36: "\x{3057}\x{3093}\x{308A}\x{3093}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x36
+                LayoutInline {RB} at (0,0) size 18x34
+                  LayoutText {#text} at (2,1) size 18x34
+                    text run at (2,1) width 34: "\x{6DF1}\x{6797}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x48
+            LayoutRubyRun (anonymous) at (1586,191) size 22x48
+              LayoutRubyText {RT} at (-10,0) size 13x48
+                LayoutText {#text} at (2,0) size 10x48
+                  text run at (2,0) width 47: "\x{3072}\x{3068}\x{3057}\x{3089}\x{305A}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x48
+                LayoutInline {RB} at (0,0) size 18x48
+                  LayoutText {#text} at (2,0) size 18x48
+                    text run at (2,0) width 48: "\x{4EBA}\x{4E0D}\x{77E5}"
+          LayoutText {#text} at (1588,239) size 18x16
+            text run at (1588,239) width 16: "\x{3001}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x68
+            LayoutRubyRun (anonymous) at (1586,251) size 22x72
+              LayoutRubyText {RT} at (-10,0) size 13x72
+                LayoutText {#text} at (2,0) size 10x72
+                  text run at (2,0) width 72: "\x{3081}\x{3044}\x{3052}\x{3064}\x{304D}\x{305F}\x{308A}\x{3066}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x72
+                LayoutInline {RB} at (0,0) size 18x64
+                  LayoutText {#text} at (2,4) size 18x64
+                    text run at (2,4) width 64: "\x{660E}\x{6708}\x{6765}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x42
+            LayoutRubyRun (anonymous) at (1586,323) size 22x45
+              LayoutRubyText {RT} at (-10,0) size 13x45
+                LayoutText {#text} at (2,0) size 10x45
+                  text run at (2,0) width 45: "\x{3042}\x{3044}\x{3066}\x{3089}\x{3059}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x45
+                LayoutInline {RB} at (0,0) size 18x39
+                  LayoutText {#text} at (2,3) size 18x39
+                    text run at (2,3) width 38: "\x{76F8}\x{7167}"
+          LayoutText {#text} at (1588,365) size 46x493
+            text run at (1588,365) width 128: "\x{3002}\x{305F}\x{3060}\x{4E8C}\x{5341}\x{5B57}\x{306E}\x{3046}"
+            text run at (1616,0) width 32: "\x{3061}\x{306B}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (1614,31) size 22x18
+              LayoutRubyText {RT} at (-10,0) size 13x18
+                LayoutText {#text} at (2,0) size 10x18
+                  text run at (2,0) width 18: "\x{3086}\x{3046}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x18
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,1) size 18x16
+                    text run at (2,1) width 16: "\x{512A}"
+          LayoutText {#text} at (1616,48) size 18x16
+            text run at (1616,48) width 16: "\x{306B}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x52
+            LayoutRubyRun (anonymous) at (1614,63) size 22x54
+              LayoutRubyText {RT} at (-10,0) size 13x54
+                LayoutText {#text} at (2,0) size 10x54
+                  text run at (2,0) width 54: "\x{3079}\x{3064}\x{3051}\x{3093}\x{3053}\x{3093}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x54
+                LayoutInline {RB} at (0,0) size 18x52
+                  LayoutText {#text} at (2,1) size 18x52
+                    text run at (2,1) width 52: "\x{5225}\x{4E7E}\x{5764}"
+          LayoutText {#text} at (1616,116) size 18x16
+            text run at (1616,116) width 16: "\x{3092}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x39
+            LayoutRubyRun (anonymous) at (1614,129) size 22x45
+              LayoutRubyText {RT} at (-10,0) size 13x45
+                LayoutText {#text} at (2,0) size 10x45
+                  text run at (2,0) width 45: "\x{3053}\x{3093}\x{308A}\x{3085}\x{3046}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x45
+                LayoutInline {RB} at (0,0) size 18x39
+                  LayoutText {#text} at (2,3) size 18x39
+                    text run at (2,3) width 38: "\x{5EFA}\x{7ACB}"
+          LayoutText {#text} at (1616,171) size 18x160
+            text run at (1616,171) width 160: "\x{3057}\x{3066}\x{3044}\x{308B}\x{3002}\x{3053}\x{306E}\x{4E7E}\x{5764}\x{306E}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x32
+            LayoutRubyRun (anonymous) at (1614,331) size 22x32
+              LayoutRubyText {RT} at (-10,0) size 13x32
+                LayoutText {#text} at (2,0) size 10x31
+                  text run at (2,0) width 30: "\x{304F}\x{3069}\x{304F}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x32
+                LayoutInline {RB} at (0,0) size 18x32
+                  LayoutText {#text} at (2,0) size 18x32
+                    text run at (2,0) width 32: "\x{529F}\x{5FB3}"
+          LayoutText {#text} at (1616,363) size 18x32
+            text run at (1616,363) width 32: "\x{306F}\x{300C}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x48
+            LayoutRubyRun (anonymous) at (1614,395) size 22x48
+              LayoutRubyText {RT} at (-10,0) size 13x48
+                LayoutText {#text} at (2,0) size 10x48
+                  text run at (2,0) width 47: "\x{307B}\x{3068}\x{3068}\x{304E}\x{3059}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x48
+                LayoutInline {RB} at (0,0) size 18x48
+                  LayoutText {#text} at (2,0) size 18x48
+                    text run at (2,0) width 48: "\x{4E0D}\x{5982}\x{5E30}"
+          LayoutText {#text} at (1616,443) size 46x475
+            text run at (1616,443) width 32: "\x{300D}\x{3084}"
+            text run at (1644,0) width 16: "\x{300C}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x64
+            LayoutRubyRun (anonymous) at (1642,16) size 22x64
+              LayoutRubyText {RT} at (-10,0) size 13x64
+                LayoutText {#text} at (2,0) size 10x64
+                  text run at (2,0) width 63: "\x{3053}\x{3093}\x{3058}\x{304D}\x{3084}\x{3057}\x{3083}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x64
+                LayoutInline {RB} at (0,0) size 18x64
+                  LayoutText {#text} at (2,0) size 18x64
+                    text run at (2,0) width 64: "\x{91D1}\x{8272}\x{591C}\x{53C9}"
+          LayoutText {#text} at (1644,80) size 46x496
+            text run at (1644,80) width 416: "\x{300D}\x{306E}\x{529F}\x{5FB3}\x{3067}\x{306F}\x{306A}\x{3044}\x{3002}\x{6C7D}\x{8239}\x{3001}\x{6C7D}\x{8ECA}\x{3001}\x{6A29}\x{5229}\x{3001}\x{7FA9}\x{52D9}\x{3001}\x{9053}\x{5FB3}\x{3001}\x{793C}\x{7FA9}"
+            text run at (1672,0) width 96: "\x{3067}\x{75B2}\x{308C}\x{679C}\x{3066}\x{305F}"
+          LayoutRuby (inline) {RUBY} at (0,0) size 18x16
+            LayoutRubyRun (anonymous) at (1670,95) size 22x18
+              LayoutRubyText {RT} at (-10,0) size 13x18
+                LayoutText {#text} at (2,0) size 10x18
+                  text run at (2,0) width 18: "\x{306E}\x{3061}"
+              LayoutRubyBase (anonymous) at (0,0) size 22x18
+                LayoutInline {RB} at (0,0) size 18x16
+                  LayoutText {#text} at (2,1) size 18x16
+                    text run at (2,1) width 16: "\x{5F8C}"
+          LayoutText {#text} at (1672,112) size 40x496
+            text run at (1672,112) width 384: "\x{306B}\x{3001}\x{3059}\x{3079}\x{3066}\x{3092}\x{5FD8}\x{5374}\x{3057}\x{3066}\x{3050}\x{3063}\x{3059}\x{308A}\x{5BDD}\x{8FBC}\x{3080}\x{3088}\x{3046}\x{306A}\x{529F}\x{5FB3}\x{3067}\x{3042}"
+            text run at (1694,0) width 32: "\x{308B}\x{3002}"
+          LayoutBR {BR} at (1694,32) size 18x0
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/fast/writing-mode/border-vertical-lr-expected.png b/third_party/WebKit/LayoutTests/platform/mac-retina/fast/writing-mode/border-vertical-lr-expected.png
new file mode 100644
index 0000000..baae611
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-retina/fast/writing-mode/border-vertical-lr-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/fast/writing-mode/border-vertical-lr-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-retina/fast/writing-mode/border-vertical-lr-expected.txt
new file mode 100644
index 0000000..99fd303
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-retina/fast/writing-mode/border-vertical-lr-expected.txt
@@ -0,0 +1,25 @@
+layer at (0,0) size 800x600
+  LayoutView at (0,0) size 800x600
+layer at (0,0) size 772x600
+  LayoutBlockFlow {HTML} at (0,0) size 772x600
+    LayoutBlockFlow {BODY} at (8,8) size 756x584
+      LayoutInline {SPAN} at (0,0) size 219x580 [border: (2px solid #000000)]
+        LayoutText {#text} at (20,4) size 211x580
+          text run at (20,4) width 576: "\x{305B}\x{3063}\x{304B}\x{304F}\x{898B}\x{3064}\x{3051}\x{305F}\x{3059}\x{3070}\x{3089}\x{3057}\x{3044}\x{8A18}\x{4E8B}\x{304C}\x{3069}\x{3053}\x{306B}\x{3042}\x{3063}\x{305F}\x{304B}\x{5FD8}\x{308C}\x{3066}\x{3057}"
+          text run at (83,0) width 555: "\x{307E}\x{3063}\x{305F}\x{7D4C}\x{9A13}\x{306F}\x{3042}\x{308A}\x{307E}\x{3059}\x{304B}\x{306A}\x{3089}\x{30BF}\x{30A4}\x{30C8}\x{30EB}\x{3068}\x{30A2}\x{30C9}\x{30EC}\x{30B9}\x{3060}\x{3051}\x{3067}\x{306A}"
+          text run at (146,0) width 574: "\x{304F}\x{3001}\x{8A2A}\x{554F}\x{3057}\x{305F}\x{30A6}\x{30A7}\x{30D6}\x{30DA}\x{30FC}\x{30B8}\x{306E}\x{30B3}\x{30F3}\x{30C6}\x{30F3}\x{30C4}\x{304B}\x{3089}\x{3082}\x{691C}\x{7D22}\x{3059}\x{308B}\x{3053}\x{3068}"
+          text run at (209,0) width 127: "\x{304C}\x{3067}\x{304D}\x{307E}\x{3059}\x{3002}"
+      LayoutText {#text} at (209,130) size 22x8
+        text run at (209,130) width 8: " "
+      LayoutBR {BR} at (0,0) size 0x0
+      LayoutBR {BR} at (272,0) size 22x0
+      LayoutInline {SPAN} at (0,0) size 414x583 [border: (5px solid #000000)]
+        LayoutText {#text} at (335,7) size 400x583
+          text run at (335,7) width 576: "\x{305B}\x{3063}\x{304B}\x{304F}\x{898B}\x{3064}\x{3051}\x{305F}\x{3059}\x{3070}\x{3089}\x{3057}\x{3044}\x{8A18}\x{4E8B}\x{304C}\x{3069}\x{3053}\x{306B}\x{3042}\x{3063}\x{305F}\x{304B}\x{5FD8}\x{308C}\x{3066}\x{3057}"
+          text run at (398,0) width 562: "\x{307E}\x{3063}\x{305F}\x{7D4C}\x{9A13}\x{306F}\x{3042}\x{308A}\x{307E}\x{3059}\x{304B} \x{306A}\x{3089}\x{30BF}\x{30A4}\x{30C8}\x{30EB}\x{3068}\x{30A2}\x{30C9}\x{30EC}\x{30B9}\x{3060}\x{3051}\x{3067}\x{306A}"
+          text run at (461,0) width 574: "\x{304F}\x{3001}\x{8A2A}\x{554F}\x{3057}\x{305F}\x{30A6}\x{30A7}\x{30D6}\x{30DA}\x{30FC}\x{30B8}\x{306E}\x{30B3}\x{30F3}\x{30C6}\x{30F3}\x{30C4}\x{304B}\x{3089}\x{3082}\x{691C}\x{7D22}\x{3059}\x{308B}\x{3053}\x{3068}"
+          text run at (524,0) width 573: "\x{304C}\x{3067}\x{304D}\x{307E}\x{3059}\x{3002}\x{8A2A}\x{554F}\x{3057}\x{305F}\x{30A6}\x{30A7}\x{30D6}\x{30DA}\x{30FC}\x{30B8}\x{306E}\x{30B3}\x{30F3}\x{30C6}\x{30F3}\x{30C4}\x{304B}\x{3089}\x{3082}\x{691C}\x{7D22}"
+          text run at (587,0) width 575: "\x{3059}\x{308B}\x{3053}\x{3068}\x{304C}\x{3067}\x{304D}\x{307E}\x{3059}\x{3002}\x{305B}\x{3063}\x{304B}\x{304F}\x{898B}\x{3064}\x{3051}\x{305F}\x{3059}\x{3070}\x{3089}\x{3057}\x{3044}\x{8A18}\x{4E8B}\x{304C}\x{3069}"
+          text run at (650,0) width 583: "\x{3053}\x{306B}\x{3042}\x{3063}\x{305F}\x{304B}\x{5FD8}\x{308C}\x{3066}\x{3057}\x{307E}\x{3063}\x{305F}\x{7D4C}\x{9A13}\x{306F}\x{3042}\x{308A}\x{307E}\x{3059}\x{304B} \x{306A}\x{3089}\x{30BF}\x{30A4}\x{30C8}\x{30EB}"
+          text run at (713,0) width 278: "\x{3068}\x{30A2}\x{30C9}\x{30EC}\x{30B9}\x{3060}\x{3051}\x{3067}\x{306A}\x{304F}\x{3001}\x{8A2A}\x{554F}"
+      LayoutText {#text} at (0,0) size 0x0
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/fast/writing-mode/japanese-lr-selection-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-retina/fast/writing-mode/japanese-lr-selection-expected.txt
new file mode 100644
index 0000000..8d243d15
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-retina/fast/writing-mode/japanese-lr-selection-expected.txt
@@ -0,0 +1,24 @@
+layer at (0,0) size 800x600
+  LayoutView at (0,0) size 800x600
+layer at (0,0) size 541x600
+  LayoutBlockFlow {HTML} at (0,0) size 541x600 [border: (10px solid #800000)]
+    LayoutBlockFlow {BODY} at (18,18) size 505x564 [border: (5px solid #000000)]
+      LayoutBlockFlow {DIV} at (5,105) size 495x400
+        LayoutText {#text} at (5,0) size 484x392
+          text run at (5,0) width 384: "\x{305B}\x{3063}\x{304B}\x{304F}\x{898B}\x{3064}\x{3051}\x{305F}\x{3059}\x{3070}\x{3089}\x{3057}\x{3044}\x{8A18}\x{4E8B}\x{304C}\x{3069}\x{3053}"
+          text run at (38,0) width 384: "\x{306B}\x{3042}\x{3063}\x{305F}\x{304B}\x{5FD8}\x{308C}\x{3066}\x{3057}\x{307E}\x{3063}\x{305F}\x{7D4C}\x{9A13}\x{306F}\x{3042}\x{308A}\x{307E}"
+          text run at (71,0) width 363: "\x{3059}\x{304B}\x{306A}\x{3089}\x{30BF}\x{30A4}\x{30C8}\x{30EB}\x{3068}\x{30A2}\x{30C9}\x{30EC}\x{30B9}\x{3060}\x{3051}\x{3067}\x{306A}"
+          text run at (104,0) width 382: "\x{304F}\x{3001}\x{8A2A}\x{554F}\x{3057}\x{305F}\x{30A6}\x{30A7}\x{30D6}\x{30DA}\x{30FC}\x{30B8}\x{306E}\x{30B3}\x{30F3}\x{30C6}\x{30F3}\x{30C4}"
+          text run at (137,0) width 383: "\x{304B}\x{3089}\x{3082}\x{691C}\x{7D22}\x{3059}\x{308B}\x{3053}\x{3068}\x{304C}\x{3067}\x{304D}\x{307E}\x{3059}\x{3002}\x{305B}\x{3063}\x{304B}"
+          text run at (170,0) width 384: "\x{304F}\x{898B}\x{3064}\x{3051}\x{305F}\x{3059}\x{3070}\x{3089}\x{3057}\x{3044}\x{8A18}\x{4E8B}\x{304C}\x{3069}\x{3053}\x{306B}\x{3042}\x{3063}"
+          text run at (203,0) width 392: "\x{305F}\x{304B}\x{5FD8}\x{308C}\x{3066}\x{3057}\x{307E}\x{3063}\x{305F}\x{7D4C}\x{9A13}\x{306F}\x{3042}\x{308A}\x{307E}\x{3059}\x{304B} \x{306A}"
+          text run at (236,0) width 384: "\x{3089}\x{30BF}\x{30A4}\x{30C8}\x{30EB}\x{3068}\x{30A2}\x{30C9}\x{30EC}\x{30B9}\x{3060}\x{3051}\x{3067}\x{306A}\x{304F}\x{3001}\x{8A2A}\x{554F}"
+          text run at (269,0) width 382: "\x{3057}\x{305F}\x{30A6}\x{30A7}\x{30D6}\x{30DA}\x{30FC}\x{30B8}\x{306E}\x{30B3}\x{30F3}\x{30C6}\x{30F3}\x{30C4}\x{304B}\x{3089}\x{3082}\x{691C}"
+          text run at (302,0) width 383: "\x{7D22}\x{3059}\x{308B}\x{3053}\x{3068}\x{304C}\x{3067}\x{304D}\x{307E}\x{3059}\x{3002}\x{8A2A}\x{554F}\x{3057}\x{305F}\x{30A6}\x{30A7}\x{30D6}"
+          text run at (335,0) width 382: "\x{30DA}\x{30FC}\x{30B8}\x{306E}\x{30B3}\x{30F3}\x{30C6}\x{30F3}\x{30C4}\x{304B}\x{3089}\x{3082}\x{691C}\x{7D22}\x{3059}\x{308B}\x{3053}\x{3068}"
+          text run at (368,0) width 383: "\x{304C}\x{3067}\x{304D}\x{307E}\x{3059}\x{3002}\x{305B}\x{3063}\x{304B}\x{304F}\x{898B}\x{3064}\x{3051}\x{305F}\x{3059}\x{3070}\x{3089}\x{3057}"
+          text run at (401,0) width 384: "\x{3044}\x{8A18}\x{4E8B}\x{304C}\x{3069}\x{3053}\x{306B}\x{3042}\x{3063}\x{305F}\x{304B}\x{5FD8}\x{308C}\x{3066}\x{3057}\x{307E}\x{3063}\x{305F}"
+          text run at (434,0) width 392: "\x{7D4C}\x{9A13}\x{306F}\x{3042}\x{308A}\x{307E}\x{3059}\x{304B} \x{306A}\x{3089}\x{30BF}\x{30A4}\x{30C8}\x{30EB}\x{3068}\x{30A2}\x{30C9}\x{30EC}"
+          text run at (467,0) width 192: "\x{30B9}\x{3060}\x{3051}\x{3067}\x{306A}\x{304F}\x{3001}\x{8A2A}\x{554F}"
+selection start: position 5 of child 0 {#text} of child 1 {DIV} of body
+selection end:   position 203 of child 0 {#text} of child 1 {DIV} of body
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/fast/writing-mode/japanese-lr-text-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-retina/fast/writing-mode/japanese-lr-text-expected.txt
new file mode 100644
index 0000000..c0cc83c
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-retina/fast/writing-mode/japanese-lr-text-expected.txt
@@ -0,0 +1,17 @@
+layer at (0,0) size 800x600
+  LayoutView at (0,0) size 800x600
+layer at (0,0) size 409x600
+  LayoutBlockFlow {HTML} at (0,0) size 409x600 [border: (10px solid #800000)]
+    LayoutBlockFlow {BODY} at (18,18) size 373x564 [border: (5px solid #000000)]
+      LayoutText {#text} at (10,5) size 352x553
+        text run at (10,5) width 534: "\x{305B}\x{3063}\x{304B}\x{304F}\x{898B}\x{3064}\x{3051}\x{305F}\x{3059}\x{3070}\x{3089}\x{3057}\x{3044}\x{8A18}\x{4E8B}\x{304C}\x{3069}\x{3053}\x{306B}\x{3042}\x{3063}\x{305F}\x{304B}\x{5FD8}\x{308C}"
+        text run at (43,5) width 534: "\x{3066}\x{3057}\x{307E}\x{3063}\x{305F}\x{7D4C}\x{9A13}\x{306F}\x{3042}\x{308A}\x{307E}\x{3059}\x{304B}\x{306A}\x{3089}\x{30BF}\x{30A4}\x{30C8}\x{30EB}\x{3068}\x{30A2}\x{30C9}\x{30EC}\x{30B9}\x{3060}"
+        text run at (76,5) width 532: "\x{3051}\x{3067}\x{306A}\x{304F}\x{3001}\x{8A2A}\x{554F}\x{3057}\x{305F}\x{30A6}\x{30A7}\x{30D6}\x{30DA}\x{30FC}\x{30B8}\x{306E}\x{30B3}\x{30F3}\x{30C6}\x{30F3}\x{30C4}\x{304B}\x{3089}\x{3082}\x{691C}"
+        text run at (109,5) width 553: "\x{7D22}\x{3059}\x{308B}\x{3053}\x{3068}\x{304C}\x{3067}\x{304D}\x{307E}\x{3059}\x{3002}\x{305B}\x{3063}\x{304B}\x{304F}\x{898B}\x{3064}\x{3051}\x{305F}\x{3059}\x{3070}\x{3089}\x{3057}\x{3044}\x{8A18}\x{4E8B}"
+        text run at (142,5) width 541: "\x{304C}\x{3069}\x{3053}\x{306B}\x{3042}\x{3063}\x{305F}\x{304B}\x{5FD8}\x{308C}\x{3066}\x{3057}\x{307E}\x{3063}\x{305F}\x{7D4C}\x{9A13}\x{306F}\x{3042}\x{308A}\x{307E}\x{3059}\x{304B} \x{306A}\x{3089}"
+        text run at (175,5) width 532: "\x{30BF}\x{30A4}\x{30C8}\x{30EB}\x{3068}\x{30A2}\x{30C9}\x{30EC}\x{30B9}\x{3060}\x{3051}\x{3067}\x{306A}\x{304F}\x{3001}\x{8A2A}\x{554F}\x{3057}\x{305F}\x{30A6}\x{30A7}\x{30D6}\x{30DA}\x{30FC}\x{30B8}"
+        text run at (208,5) width 553: "\x{306E}\x{30B3}\x{30F3}\x{30C6}\x{30F3}\x{30C4}\x{304B}\x{3089}\x{3082}\x{691C}\x{7D22}\x{3059}\x{308B}\x{3053}\x{3068}\x{304C}\x{3067}\x{304D}\x{307E}\x{3059}\x{3002}\x{8A2A}\x{554F}\x{3057}\x{305F}\x{30A6}"
+        text run at (241,5) width 551: "\x{30A7}\x{30D6}\x{30DA}\x{30FC}\x{30B8}\x{306E}\x{30B3}\x{30F3}\x{30C6}\x{30F3}\x{30C4}\x{304B}\x{3089}\x{3082}\x{691C}\x{7D22}\x{3059}\x{308B}\x{3053}\x{3068}\x{304C}\x{3067}\x{304D}\x{307E}\x{3059}\x{3002}"
+        text run at (274,5) width 534: "\x{305B}\x{3063}\x{304B}\x{304F}\x{898B}\x{3064}\x{3051}\x{305F}\x{3059}\x{3070}\x{3089}\x{3057}\x{3044}\x{8A18}\x{4E8B}\x{304C}\x{3069}\x{3053}\x{306B}\x{3042}\x{3063}\x{305F}\x{304B}\x{5FD8}\x{308C}"
+        text run at (307,5) width 541: "\x{3066}\x{3057}\x{307E}\x{3063}\x{305F}\x{7D4C}\x{9A13}\x{306F}\x{3042}\x{308A}\x{307E}\x{3059}\x{304B} \x{306A}\x{3089}\x{30BF}\x{30A4}\x{30C8}\x{30EB}\x{3068}\x{30A2}\x{30C9}\x{30EC}\x{30B9}\x{3060}"
+        text run at (340,5) width 150: "\x{3051}\x{3067}\x{306A}\x{304F}\x{3001}\x{8A2A}\x{554F}"
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/fast/writing-mode/japanese-rl-selection-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-retina/fast/writing-mode/japanese-rl-selection-expected.txt
new file mode 100644
index 0000000..8dad730
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-retina/fast/writing-mode/japanese-rl-selection-expected.txt
@@ -0,0 +1,24 @@
+layer at (0,0) size 800x600
+  LayoutView at (0,0) size 800x600
+layer at (259,0) size 541x600
+  LayoutBlockFlow {HTML} at (0,0) size 541x600 [border: (10px solid #800000)]
+    LayoutBlockFlow {BODY} at (18,18) size 505x564 [border: (5px solid #000000)]
+      LayoutBlockFlow {DIV} at (5,105) size 495x400
+        LayoutText {#text} at (5,0) size 484x392
+          text run at (5,0) width 384: "\x{305B}\x{3063}\x{304B}\x{304F}\x{898B}\x{3064}\x{3051}\x{305F}\x{3059}\x{3070}\x{3089}\x{3057}\x{3044}\x{8A18}\x{4E8B}\x{304C}\x{3069}\x{3053}"
+          text run at (38,0) width 384: "\x{306B}\x{3042}\x{3063}\x{305F}\x{304B}\x{5FD8}\x{308C}\x{3066}\x{3057}\x{307E}\x{3063}\x{305F}\x{7D4C}\x{9A13}\x{306F}\x{3042}\x{308A}\x{307E}"
+          text run at (71,0) width 363: "\x{3059}\x{304B}\x{306A}\x{3089}\x{30BF}\x{30A4}\x{30C8}\x{30EB}\x{3068}\x{30A2}\x{30C9}\x{30EC}\x{30B9}\x{3060}\x{3051}\x{3067}\x{306A}"
+          text run at (104,0) width 382: "\x{304F}\x{3001}\x{8A2A}\x{554F}\x{3057}\x{305F}\x{30A6}\x{30A7}\x{30D6}\x{30DA}\x{30FC}\x{30B8}\x{306E}\x{30B3}\x{30F3}\x{30C6}\x{30F3}\x{30C4}"
+          text run at (137,0) width 383: "\x{304B}\x{3089}\x{3082}\x{691C}\x{7D22}\x{3059}\x{308B}\x{3053}\x{3068}\x{304C}\x{3067}\x{304D}\x{307E}\x{3059}\x{3002}\x{305B}\x{3063}\x{304B}"
+          text run at (170,0) width 384: "\x{304F}\x{898B}\x{3064}\x{3051}\x{305F}\x{3059}\x{3070}\x{3089}\x{3057}\x{3044}\x{8A18}\x{4E8B}\x{304C}\x{3069}\x{3053}\x{306B}\x{3042}\x{3063}"
+          text run at (203,0) width 392: "\x{305F}\x{304B}\x{5FD8}\x{308C}\x{3066}\x{3057}\x{307E}\x{3063}\x{305F}\x{7D4C}\x{9A13}\x{306F}\x{3042}\x{308A}\x{307E}\x{3059}\x{304B} \x{306A}"
+          text run at (236,0) width 384: "\x{3089}\x{30BF}\x{30A4}\x{30C8}\x{30EB}\x{3068}\x{30A2}\x{30C9}\x{30EC}\x{30B9}\x{3060}\x{3051}\x{3067}\x{306A}\x{304F}\x{3001}\x{8A2A}\x{554F}"
+          text run at (269,0) width 382: "\x{3057}\x{305F}\x{30A6}\x{30A7}\x{30D6}\x{30DA}\x{30FC}\x{30B8}\x{306E}\x{30B3}\x{30F3}\x{30C6}\x{30F3}\x{30C4}\x{304B}\x{3089}\x{3082}\x{691C}"
+          text run at (302,0) width 383: "\x{7D22}\x{3059}\x{308B}\x{3053}\x{3068}\x{304C}\x{3067}\x{304D}\x{307E}\x{3059}\x{3002}\x{8A2A}\x{554F}\x{3057}\x{305F}\x{30A6}\x{30A7}\x{30D6}"
+          text run at (335,0) width 382: "\x{30DA}\x{30FC}\x{30B8}\x{306E}\x{30B3}\x{30F3}\x{30C6}\x{30F3}\x{30C4}\x{304B}\x{3089}\x{3082}\x{691C}\x{7D22}\x{3059}\x{308B}\x{3053}\x{3068}"
+          text run at (368,0) width 383: "\x{304C}\x{3067}\x{304D}\x{307E}\x{3059}\x{3002}\x{305B}\x{3063}\x{304B}\x{304F}\x{898B}\x{3064}\x{3051}\x{305F}\x{3059}\x{3070}\x{3089}\x{3057}"
+          text run at (401,0) width 384: "\x{3044}\x{8A18}\x{4E8B}\x{304C}\x{3069}\x{3053}\x{306B}\x{3042}\x{3063}\x{305F}\x{304B}\x{5FD8}\x{308C}\x{3066}\x{3057}\x{307E}\x{3063}\x{305F}"
+          text run at (434,0) width 392: "\x{7D4C}\x{9A13}\x{306F}\x{3042}\x{308A}\x{307E}\x{3059}\x{304B} \x{306A}\x{3089}\x{30BF}\x{30A4}\x{30C8}\x{30EB}\x{3068}\x{30A2}\x{30C9}\x{30EC}"
+          text run at (467,0) width 192: "\x{30B9}\x{3060}\x{3051}\x{3067}\x{306A}\x{304F}\x{3001}\x{8A2A}\x{554F}"
+selection start: position 5 of child 0 {#text} of child 1 {DIV} of body
+selection end:   position 203 of child 0 {#text} of child 1 {DIV} of body
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/fast/writing-mode/japanese-rl-text-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-retina/fast/writing-mode/japanese-rl-text-expected.txt
new file mode 100644
index 0000000..10f00dda
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-retina/fast/writing-mode/japanese-rl-text-expected.txt
@@ -0,0 +1,17 @@
+layer at (0,0) size 800x600
+  LayoutView at (0,0) size 800x600
+layer at (391,0) size 409x600
+  LayoutBlockFlow {HTML} at (0,0) size 409x600 [border: (10px solid #800000)]
+    LayoutBlockFlow {BODY} at (18,18) size 373x564 [border: (5px solid #000000)]
+      LayoutText {#text} at (10,5) size 352x553
+        text run at (10,5) width 534: "\x{305B}\x{3063}\x{304B}\x{304F}\x{898B}\x{3064}\x{3051}\x{305F}\x{3059}\x{3070}\x{3089}\x{3057}\x{3044}\x{8A18}\x{4E8B}\x{304C}\x{3069}\x{3053}\x{306B}\x{3042}\x{3063}\x{305F}\x{304B}\x{5FD8}\x{308C}"
+        text run at (43,5) width 534: "\x{3066}\x{3057}\x{307E}\x{3063}\x{305F}\x{7D4C}\x{9A13}\x{306F}\x{3042}\x{308A}\x{307E}\x{3059}\x{304B}\x{306A}\x{3089}\x{30BF}\x{30A4}\x{30C8}\x{30EB}\x{3068}\x{30A2}\x{30C9}\x{30EC}\x{30B9}\x{3060}"
+        text run at (76,5) width 532: "\x{3051}\x{3067}\x{306A}\x{304F}\x{3001}\x{8A2A}\x{554F}\x{3057}\x{305F}\x{30A6}\x{30A7}\x{30D6}\x{30DA}\x{30FC}\x{30B8}\x{306E}\x{30B3}\x{30F3}\x{30C6}\x{30F3}\x{30C4}\x{304B}\x{3089}\x{3082}\x{691C}"
+        text run at (109,5) width 553: "\x{7D22}\x{3059}\x{308B}\x{3053}\x{3068}\x{304C}\x{3067}\x{304D}\x{307E}\x{3059}\x{3002}\x{305B}\x{3063}\x{304B}\x{304F}\x{898B}\x{3064}\x{3051}\x{305F}\x{3059}\x{3070}\x{3089}\x{3057}\x{3044}\x{8A18}\x{4E8B}"
+        text run at (142,5) width 541: "\x{304C}\x{3069}\x{3053}\x{306B}\x{3042}\x{3063}\x{305F}\x{304B}\x{5FD8}\x{308C}\x{3066}\x{3057}\x{307E}\x{3063}\x{305F}\x{7D4C}\x{9A13}\x{306F}\x{3042}\x{308A}\x{307E}\x{3059}\x{304B} \x{306A}\x{3089}"
+        text run at (175,5) width 532: "\x{30BF}\x{30A4}\x{30C8}\x{30EB}\x{3068}\x{30A2}\x{30C9}\x{30EC}\x{30B9}\x{3060}\x{3051}\x{3067}\x{306A}\x{304F}\x{3001}\x{8A2A}\x{554F}\x{3057}\x{305F}\x{30A6}\x{30A7}\x{30D6}\x{30DA}\x{30FC}\x{30B8}"
+        text run at (208,5) width 553: "\x{306E}\x{30B3}\x{30F3}\x{30C6}\x{30F3}\x{30C4}\x{304B}\x{3089}\x{3082}\x{691C}\x{7D22}\x{3059}\x{308B}\x{3053}\x{3068}\x{304C}\x{3067}\x{304D}\x{307E}\x{3059}\x{3002}\x{8A2A}\x{554F}\x{3057}\x{305F}\x{30A6}"
+        text run at (241,5) width 551: "\x{30A7}\x{30D6}\x{30DA}\x{30FC}\x{30B8}\x{306E}\x{30B3}\x{30F3}\x{30C6}\x{30F3}\x{30C4}\x{304B}\x{3089}\x{3082}\x{691C}\x{7D22}\x{3059}\x{308B}\x{3053}\x{3068}\x{304C}\x{3067}\x{304D}\x{307E}\x{3059}\x{3002}"
+        text run at (274,5) width 534: "\x{305B}\x{3063}\x{304B}\x{304F}\x{898B}\x{3064}\x{3051}\x{305F}\x{3059}\x{3070}\x{3089}\x{3057}\x{3044}\x{8A18}\x{4E8B}\x{304C}\x{3069}\x{3053}\x{306B}\x{3042}\x{3063}\x{305F}\x{304B}\x{5FD8}\x{308C}"
+        text run at (307,5) width 541: "\x{3066}\x{3057}\x{307E}\x{3063}\x{305F}\x{7D4C}\x{9A13}\x{306F}\x{3042}\x{308A}\x{307E}\x{3059}\x{304B} \x{306A}\x{3089}\x{30BF}\x{30A4}\x{30C8}\x{30EB}\x{3068}\x{30A2}\x{30C9}\x{30EC}\x{30B9}\x{3060}"
+        text run at (340,5) width 150: "\x{3051}\x{3067}\x{306A}\x{304F}\x{3001}\x{8A2A}\x{554F}"
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug1188-expected.png b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug1188-expected.png
new file mode 100644
index 0000000..d945c22b
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug1188-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug1188-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug1188-expected.txt
new file mode 100644
index 0000000..2e58825
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug1188-expected.txt
@@ -0,0 +1,140 @@
+layer at (0,0) size 800x600
+  LayoutView at (0,0) size 800x600
+layer at (0,0) size 800x600
+  LayoutBlockFlow {HTML} at (0,0) size 800x600
+    LayoutBlockFlow {BODY} at (8,8) size 784x576
+      LayoutBlockFlow {FORM} at (0,0) size 784x194
+        LayoutBlockFlow {HR} at (0,0) size 602x2 [border: (1px inset #EEEEEE)]
+        LayoutTable {TABLE} at (0,10) size 600x184
+          LayoutTableSection {TBODY} at (0,0) size 600x184
+            LayoutTableRow {TR} at (0,2) size 600x44
+              LayoutTableCell {TD} at (2,2) size 594x44 [r=0 c=0 rs=1 cs=3]
+                LayoutImage {IMG} at (7.50,1) size 579x42
+                LayoutText {#text} at (0,0) size 0x0
+            LayoutTableRow {TR} at (0,48) size 600x55
+              LayoutTableCell {TD} at (2,57) size 594x36 [bgcolor=#99CCCC] [r=1 c=0 rs=1 cs=3]
+                LayoutInline {FONT} at (0,0) size 128x15
+                  LayoutInline {B} at (0,0) size 128x15
+                    LayoutText {#text} at (67,3) size 128x15
+                      text run at (67,3) width 128: "Search the Web with"
+                LayoutText {#text} at (194,1) size 5x18
+                  text run at (194,1) width 5: " "
+                LayoutMenuList {SELECT} at (198.41,2) size 81x18 [bgcolor=#F8F8F8]
+                  LayoutBlockFlow (anonymous) at (0,0) size 81x18
+                    LayoutText (anonymous) at (8,2) size 50x13
+                      text run at (8,2) width 50: "Netscape"
+                LayoutTextControl {INPUT} at (279.41,1) size 191x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)]
+                LayoutText {#text} at (470,1) size 5x18
+                  text run at (470,1) width 5: " "
+                LayoutButton {INPUT} at (474.41,2) size 52.08x18 [bgcolor=#C0C0C0]
+                  LayoutBlockFlow (anonymous) at (8,2) size 36.08x13
+                    LayoutText {#text} at (0,0) size 37x13
+                      text run at (0,0) width 37: "Search"
+                LayoutBR {BR} at (526,15) size 1x0
+                LayoutInline {SMALL} at (0,0) size 568x15
+                  LayoutInline {A} at (0,0) size 101x15 [color=#0000EE]
+                    LayoutText {#text} at (13,20) size 101x15
+                      text run at (13,20) width 101: "Classifieds< /A>   "
+                  LayoutInline {A} at (0,0) size 59x15 [color=#0000EE]
+                    LayoutText {#text} at (113,20) size 59x15
+                      text run at (113,20) width 23: "Net "
+                      text run at (135,20) width 37: "Search"
+                  LayoutText {#text} at (171,20) size 11x15
+                    text run at (171,20) width 11: "   "
+                  LayoutInline {A} at (0,0) size 83x15 [color=#0000EE]
+                    LayoutText {#text} at (181,20) size 83x15
+                      text run at (181,20) width 57: "Find Web "
+                      text run at (237,20) width 27: "Sites"
+                  LayoutText {#text} at (263,20) size 11x15
+                    text run at (263,20) width 4: " "
+                    text run at (266,20) width 8: "  "
+                  LayoutInline {A} at (0,0) size 66x15 [color=#0000EE]
+                    LayoutText {#text} at (273,20) size 66x15
+                      text run at (273,20) width 40: "What's "
+                      text run at (312,20) width 27: "Cool"
+                  LayoutText {#text} at (338,20) size 11x15
+                    text run at (338,20) width 11: "   "
+                  LayoutInline {A} at (0,0) size 66x15 [color=#0000EE]
+                    LayoutText {#text} at (348,20) size 66x15
+                      text run at (348,20) width 66: "What's New"
+                  LayoutText {#text} at (413,20) size 11x15
+                    text run at (413,20) width 11: "   "
+                  LayoutInline {A} at (0,0) size 76x15 [color=#0000EE]
+                    LayoutText {#text} at (423,20) size 76x15
+                      text run at (423,20) width 76: "People Finder"
+                  LayoutText {#text} at (498,20) size 11x15
+                    text run at (498,20) width 11: "   "
+                  LayoutInline {A} at (0,0) size 73x15 [color=#0000EE]
+                    LayoutText {#text} at (508,20) size 73x15
+                      text run at (508,20) width 73: "Yellow Pages"
+                  LayoutText {#text} at (0,0) size 0x0
+                LayoutText {#text} at (0,0) size 0x0
+            LayoutTableRow {TR} at (0,105) size 600x50
+              LayoutTableCell {TD} at (2,114) size 159x32 [r=2 c=0 rs=1 cs=1]
+                LayoutInline {A} at (0,0) size 117x33 [color=#0000EE]
+                  LayoutInline {FONT} at (0,0) size 117x30 [color=#CC0033]
+                    LayoutText {#text} at (21,1) size 117x30
+                      text run at (21,1) width 117: "Download Netscape"
+                      text run at (26,16) width 107: "Communicator 4.5"
+              LayoutTableCell {TD} at (163,105) size 270x50 [r=2 c=1 rs=1 cs=1]
+                LayoutInline {A} at (0,0) size 232x28 [color=#0000EE]
+                  LayoutImage {IMG} at (19,1) size 232x35 [border: (1px solid #0000EE)]
+                  LayoutBR {BR} at (251,36) size 0x0
+                  LayoutInline {FONT} at (0,0) size 48x13
+                    LayoutText {#text} at (111,36) size 48x13
+                      text run at (111,36) width 48: "Click Here!"
+                LayoutBR {BR} at (158,46) size 1x0
+              LayoutTableCell {TD} at (435,121) size 161x17 [r=2 c=2 rs=1 cs=1]
+                LayoutInline {A} at (0,0) size 131x18 [color=#0000EE]
+                  LayoutInline {FONT} at (0,0) size 131x15 [color=#0066FF]
+                    LayoutText {#text} at (15,1) size 131x15
+                      text run at (15,1) width 131: "Hassle-Free Upgrades"
+                LayoutText {#text} at (0,0) size 0x0
+            LayoutTableRow {TR} at (0,157) size 600x20
+              LayoutTableCell {TD} at (2,157) size 594x20 [r=3 c=0 rs=1 cs=3]
+                LayoutInline {A} at (0,0) size 50x18 [color=#0000EE]
+                  LayoutInline {FONT} at (0,0) size 50x15 [color=#0066FF]
+                    LayoutInline {B} at (0,0) size 50x15
+                      LayoutText {#text} at (15,3) size 50x15
+                        text run at (15,3) width 50: "Contact"
+                LayoutText {#text} at (64,1) size 13x18
+                  text run at (64,1) width 13: " : "
+                LayoutInline {SMALL} at (0,0) size 503x15
+                  LayoutInline {A} at (0,0) size 77x15 [color=#0000EE]
+                    LayoutText {#text} at (76,3) size 77x15
+                      text run at (76,3) width 77: "Address Book"
+                  LayoutText {#text} at (152,3) size 12x15
+                    text run at (152,3) width 12: " - "
+                  LayoutInline {A} at (0,0) size 65x15 [color=#0000EE]
+                    LayoutText {#text} at (163,3) size 65x15
+                      text run at (163,3) width 65: "Discussions"
+                  LayoutText {#text} at (227,3) size 12x15
+                    text run at (227,3) width 12: " - "
+                  LayoutInline {A} at (0,0) size 98x15 [color=#0000EE]
+                    LayoutText {#text} at (238,3) size 98x15
+                      text run at (238,3) width 98: "Instant Messenger"
+                  LayoutText {#text} at (335,3) size 12x15
+                    text run at (335,3) width 12: " - "
+                  LayoutInline {A} at (0,0) size 79x15 [color=#0000EE]
+                    LayoutText {#text} at (346,3) size 79x15
+                      text run at (346,3) width 79: "Long Distance"
+                  LayoutText {#text} at (424,3) size 12x15
+                    text run at (424,3) width 12: " - "
+                  LayoutInline {A} at (0,0) size 52x15 [color=#0000EE]
+                    LayoutText {#text} at (435,3) size 52x15
+                      text run at (435,3) width 52: "Members"
+                  LayoutText {#text} at (486,3) size 12x15
+                    text run at (486,3) width 12: " - "
+                  LayoutInline {A} at (0,0) size 82x15 [color=#0000EE]
+                    LayoutText {#text} at (497,3) size 82x15
+                      text run at (497,3) width 82: "WebMail< /A>"
+                LayoutInline {A} at (0,0) size 1x18 [color=#0000EE]
+                  LayoutText {#text} at (0,0) size 0x0
+            LayoutTableRow {TR} at (0,179) size 600x3
+              LayoutTableCell {TD} at (2,179) size 596x3 [bgcolor=#99CCCC] [r=4 c=0 rs=1 cs=4]
+                LayoutTable {TABLE} at (1,1) size 0x1
+                  LayoutTableSection {TBODY} at (0,0) size 0x1
+                    LayoutTableRow {TR} at (0,0) size 0x1
+                      LayoutTableCell {TD} at (0,0) size 0x0 [r=0 c=0 rs=1 cs=1]
+layer at (292,79) size 185x13
+  LayoutBlockFlow {DIV} at (3,3) size 185x13
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug1318-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug1318-expected.txt
new file mode 100644
index 0000000..b0569d1
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug1318-expected.txt
@@ -0,0 +1,49 @@
+layer at (0,0) size 800x600
+  LayoutView at (0,0) size 800x600
+layer at (0,0) size 800x600
+  LayoutBlockFlow {HTML} at (0,0) size 800x600
+    LayoutBlockFlow {BODY} at (8,8) size 784x584
+      LayoutTable {TABLE} at (0,0) size 784x136
+        LayoutTableSection {TBODY} at (0,0) size 784x136
+          LayoutTableRow {TR} at (0,0) size 784x74
+            LayoutTableCell {TD} at (0,0) size 784x74 [r=0 c=0 rs=1 cs=4]
+              LayoutBR {BR} at (392,1) size 0x18
+              LayoutInline {FONT} at (0,0) size 732x53
+                LayoutText {#text} at (26,19) size 732x35
+                  text run at (26,19) width 183: "The Supreme Court says "
+                  text run at (208,19) width 550: "Wisconsin can continue using tuition vouchers to help poor parents send their"
+                  text run at (210,37) width 223: "children to church-run schools. "
+                  text run at (432,37) width 142: "What's your stand? "
+                LayoutBR {BR} at (573,51) size 1x0
+                LayoutBR {BR} at (392,55) size 0x17
+              LayoutText {#text} at (0,0) size 0x0
+          LayoutTableRow {TR} at (0,74) size 784x21
+            LayoutTableCell {TD} at (0,76) size 562x17 [r=1 c=0 rs=1 cs=1]
+              LayoutInline {FONT} at (0,0) size 141x15
+                LayoutText {#text} at (420,1) size 141x15
+                  text run at (420,1) width 141: "I agree with the program"
+              LayoutText {#text} at (0,0) size 0x0
+            LayoutTableCell {TD} at (562,74) size 72x21 [r=1 c=1 rs=1 cs=1]
+              LayoutBlockFlow {INPUT} at (3.89,4) size 12x13
+          LayoutTableRow {TR} at (0,95) size 784x21
+            LayoutTableCell {TD} at (0,97) size 562x17 [r=2 c=0 rs=1 cs=1]
+              LayoutInline {FONT} at (0,0) size 153x15
+                LayoutText {#text} at (408,1) size 153x15
+                  text run at (408,1) width 153: "I think vouchers are wrong"
+              LayoutText {#text} at (0,0) size 0x0
+            LayoutTableCell {TD} at (562,95) size 72x21 [r=2 c=1 rs=1 cs=1]
+              LayoutBlockFlow {INPUT} at (3.89,4) size 12x13
+          LayoutTableRow {TR} at (0,116) size 784x20
+            LayoutTableCell {TD} at (0,117) size 634x17 [r=3 c=0 rs=1 cs=2]
+              LayoutInline {A} at (0,0) size 76x18 [color=#0000EE]
+                LayoutInline {FONT} at (0,0) size 76x15
+                  LayoutText {#text} at (279,1) size 76x15
+                    text run at (279,1) width 76: "View Results"
+              LayoutInline {FONT} at (0,0) size 1x15
+                LayoutText {#text} at (0,0) size 0x0
+            LayoutTableCell {TD} at (634,116) size 150x20 [r=3 c=2 rs=1 cs=2]
+              LayoutButton {INPUT} at (55.77,1) size 38.45x18 [bgcolor=#C0C0C0]
+                LayoutBlockFlow (anonymous) at (8,2) size 22.45x13
+                  LayoutText {#text} at (0,0) size 23x13
+                    text run at (0,0) width 23: "vote"
+              LayoutText {#text} at (0,0) size 0x0
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug138725-expected.png b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug138725-expected.png
new file mode 100644
index 0000000..c782f50
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug138725-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug138725-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug138725-expected.txt
new file mode 100644
index 0000000..8524e91a
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug138725-expected.txt
@@ -0,0 +1,35 @@
+layer at (0,0) size 800x600
+  LayoutView at (0,0) size 800x600
+layer at (0,0) size 800x600
+  LayoutBlockFlow {HTML} at (0,0) size 800x600
+    LayoutBlockFlow {BODY} at (8,8) size 784x584
+      LayoutTable {TABLE} at (0,0) size 144x52
+        LayoutTableSection {TBODY} at (0,0) size 144x52
+          LayoutTableRow {TR} at (0,2) size 144x48
+            LayoutTableCell {TD} at (2,2) size 140x48 [r=0 c=0 rs=1 cs=1]
+              LayoutBlockFlow (anonymous) at (1,1) size 138x0
+                LayoutInline {SPAN} at (0,0) size 0x0
+                  LayoutText {#text} at (0,0) size 0x0
+                  LayoutInline {SPAN} at (0,0) size 0x0
+                    LayoutText {#text} at (0,0) size 0x0
+                    LayoutText {#text} at (0,0) size 0x0
+              LayoutBlockFlow (anonymous) at (1,1) size 138x46
+                LayoutTable {TABLE} at (0,0) size 138x46
+                  LayoutTableSection {TBODY} at (0,0) size 138x46
+                    LayoutTableRow {TR} at (0,2) size 138x42
+                      LayoutTableCell {TD} at (2,2) size 134x42 [r=0 c=0 rs=1 cs=1]
+                        LayoutTable (floating) {TABLE} at (1,1) size 132x40
+                          LayoutTableSection {TBODY} at (0,0) size 132x40
+                            LayoutTableRow {TR} at (0,2) size 132x36
+                              LayoutTableCell {TD} at (2,2) size 128x36 [r=0 c=0 rs=1 cs=1]
+                                LayoutBlockFlow {FORM} at (1,1) size 126x18
+                                  LayoutButton {INPUT} at (0,0) size 125.34x18 [bgcolor=#C0C0C0]
+                                    LayoutBlockFlow (anonymous) at (8,2) size 109.34x13
+                                      LayoutText {#text} at (0,0) size 110x13
+                                        text run at (0,0) width 110: "ApplyForThisPosition"
+                                  LayoutText {#text} at (0,0) size 0x0
+              LayoutBlockFlow (anonymous) at (1,47) size 138x0
+                LayoutInline {SPAN} at (0,0) size 0x0
+                  LayoutInline {SPAN} at (0,0) size 0x0
+                  LayoutText {#text} at (0,0) size 0x0
+                LayoutText {#text} at (0,0) size 0x0
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug18359-expected.png b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug18359-expected.png
new file mode 100644
index 0000000..7bd0345
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug18359-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug18359-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug18359-expected.txt
new file mode 100644
index 0000000..86bec78
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug18359-expected.txt
@@ -0,0 +1,44 @@
+layer at (0,0) size 800x600
+  LayoutView at (0,0) size 800x600
+layer at (0,0) size 800x600
+  LayoutBlockFlow {HTML} at (0,0) size 800x600
+    LayoutBlockFlow {BODY} at (8,8) size 784x576
+      LayoutBlockFlow {H2} at (0,0) size 784x28
+        LayoutText {#text} at (0,0) size 362x28
+          text run at (0,0) width 362: "SeaMonkey XPInstall Trigger Page"
+      LayoutBlockFlow {HR} at (0,47.91) size 784x2 [border: (1px inset #EEEEEE)]
+      LayoutBlockFlow {FORM} at (0,57.91) size 784x47
+        LayoutTable {TABLE} at (0,0) size 600x47
+          LayoutTableSection {TBODY} at (0,0) size 600x47
+            LayoutTableRow {TR} at (0,2) size 600x21
+              LayoutTableCell {TD} at (2,2) size 106x20 [r=0 c=0 rs=1 cs=1]
+                LayoutInline {B} at (0,0) size 95x18
+                  LayoutText {#text} at (1,1) size 95x18
+                    text run at (1,1) width 95: "Trigger URL:"
+              LayoutTableCell {TD} at (110,2) size 403x21 [r=0 c=1 rs=1 cs=1]
+                LayoutTextControl {INPUT} at (1,1) size 401x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)]
+              LayoutTableCell {TD} at (515,2) size 83x20 [r=0 c=2 rs=1 cs=1]
+                LayoutButton {INPUT} at (1,1) size 53.27x18 [bgcolor=#C0C0C0]
+                  LayoutBlockFlow (anonymous) at (8,2) size 37.27x13
+                    LayoutText {#text} at (0,0) size 38x13
+                      text run at (0,0) width 38: "Trigger"
+            LayoutTableRow {TR} at (0,25) size 600x20
+              LayoutTableCell {TD} at (2,25) size 106x20 [r=1 c=0 rs=1 cs=1]
+                LayoutInline {B} at (0,0) size 104x18
+                  LayoutText {#text} at (1,1) size 104x18
+                    text run at (1,1) width 104: "Run Test Case:"
+              LayoutTableCell {TD} at (110,25) size 403x20 [r=1 c=1 rs=1 cs=1]
+                LayoutMenuList {SELECT} at (1,1) size 253x18 [bgcolor=#F8F8F8]
+                  LayoutBlockFlow (anonymous) at (0,0) size 253x18
+                    LayoutText (anonymous) at (8,2) size 70x13
+                      text run at (8,2) width 70: "a_abortinstall"
+                LayoutText {#text} at (0,0) size 0x0
+              LayoutTableCell {TD} at (515,25) size 83x20 [r=1 c=2 rs=1 cs=1]
+                LayoutButton {INPUT} at (1,1) size 80.64x18 [bgcolor=#C0C0C0]
+                  LayoutBlockFlow (anonymous) at (8,2) size 64.64x13
+                    LayoutText {#text} at (0,0) size 65x13
+                      text run at (0,0) width 65: "Trigger case"
+layer at (122,72) size 395x13
+  LayoutBlockFlow {DIV} at (3,3) size 395x13
+    LayoutText {#text} at (0,0) size 94x13
+      text run at (0,0) width 94: "http://jimbob/jars/"
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug194024-expected.png b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug194024-expected.png
new file mode 100644
index 0000000..fb45699
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug194024-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug194024-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug194024-expected.txt
new file mode 100644
index 0000000..47cb4dd8
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug194024-expected.txt
@@ -0,0 +1,146 @@
+layer at (0,0) size 800x600
+  LayoutView at (0,0) size 800x600
+layer at (0,0) size 800x600
+  LayoutBlockFlow {HTML} at (0,0) size 800x600
+    LayoutBlockFlow {BODY} at (8,8) size 784x584
+      LayoutBlockFlow (anonymous) at (0,0) size 784x18
+        LayoutText {#text} at (0,0) size 287x18
+          text run at (0,0) width 287: "border=\"0\" cellspacing=\"0\" cellpadding=\"0\""
+      LayoutTable {TABLE} at (0,18) size 784x32 [bgcolor=#DDDD33]
+        LayoutTableSection {TBODY} at (0,0) size 784x32
+          LayoutTableRow {TR} at (0,0) size 784x32
+            LayoutTableCell {TD} at (0,16) size 12x0 [r=0 c=0 rs=1 cs=1]
+            LayoutTableCell {TD} at (12,0) size 760x32 [r=0 c=1 rs=1 cs=1]
+            LayoutTableCell {TD} at (772,16) size 12x0 [r=0 c=2 rs=1 cs=1]
+      LayoutBlockFlow (anonymous) at (0,50) size 784x18
+        LayoutText {#text} at (0,0) size 211x18
+          text run at (0,0) width 211: "cellspacing=\"0\" cellpadding=\"0\""
+      LayoutTable {TABLE} at (0,68) size 784x32 [bgcolor=#CCCCFF]
+        LayoutTableSection {TBODY} at (0,0) size 784x32
+          LayoutTableRow {TR} at (0,0) size 784x32
+            LayoutTableCell {TD} at (0,16) size 12x0 [r=0 c=0 rs=1 cs=1]
+            LayoutTableCell {TD} at (12,0) size 760x32 [r=0 c=1 rs=1 cs=1]
+            LayoutTableCell {TD} at (772,16) size 12x0 [r=0 c=2 rs=1 cs=1]
+      LayoutBlockFlow (anonymous) at (0,100) size 784x18
+        LayoutText {#text} at (0,0) size 105x18
+          text run at (0,0) width 105: "cellpadding=\"0\""
+      LayoutTable {TABLE} at (0,118) size 784x36 [bgcolor=#FF9999]
+        LayoutTableSection {TBODY} at (0,0) size 784x36
+          LayoutTableRow {TR} at (0,2) size 784x32
+            LayoutTableCell {TD} at (2,18) size 12x0 [r=0 c=0 rs=1 cs=1]
+            LayoutTableCell {TD} at (16,2) size 752x32 [r=0 c=1 rs=1 cs=1]
+            LayoutTableCell {TD} at (770,18) size 12x0 [r=0 c=2 rs=1 cs=1]
+      LayoutBlockFlow (anonymous) at (0,154) size 784x18
+        LayoutText {#text} at (0,0) size 181x18
+          text run at (0,0) width 181: "border=\"0\" cellpadding=\"0\""
+      LayoutTable {TABLE} at (0,172) size 784x36 [bgcolor=#AAEEBB]
+        LayoutTableSection {TBODY} at (0,0) size 784x36
+          LayoutTableRow {TR} at (0,2) size 784x32
+            LayoutTableCell {TD} at (2,18) size 12x0 [r=0 c=0 rs=1 cs=1]
+            LayoutTableCell {TD} at (16,2) size 752x32 [r=0 c=1 rs=1 cs=1]
+            LayoutTableCell {TD} at (770,18) size 12x0 [r=0 c=2 rs=1 cs=1]
+      LayoutBlockFlow (anonymous) at (0,208) size 784x18
+        LayoutInline {FONT} at (0,0) size 31x18 [color=#0000FF]
+          LayoutText {#text} at (0,0) size 31x18
+            text run at (0,0) width 31: "right"
+        LayoutText {#text} at (30,0) size 77x18
+          text run at (30,0) width 77: " border=\"0\""
+      LayoutTable {TABLE} at (0,226) size 784x38 [bgcolor=#FFCCEE]
+        LayoutTableSection {TBODY} at (0,0) size 784x38
+          LayoutTableRow {TR} at (0,2) size 784x34
+            LayoutTableCell {TD} at (2,18) size 14x2 [r=0 c=0 rs=1 cs=1]
+            LayoutTableCell {TD} at (18,2) size 748x34 [r=0 c=1 rs=1 cs=1]
+            LayoutTableCell {TD} at (768,18) size 14x2 [r=0 c=2 rs=1 cs=1]
+      LayoutBlockFlow (anonymous) at (0,264) size 784x18
+        LayoutInline {FONT} at (0,0) size 31x18 [color=#0000FF]
+          LayoutText {#text} at (0,0) size 31x18
+            text run at (0,0) width 31: "right"
+        LayoutText {#text} at (30,0) size 109x18
+          text run at (30,0) width 109: " cellpadding=\"1\""
+      LayoutTable {TABLE} at (0,282) size 784x38 [bgcolor=#66DDFF]
+        LayoutTableSection {TBODY} at (0,0) size 784x38
+          LayoutTableRow {TR} at (0,2) size 784x34
+            LayoutTableCell {TD} at (2,18) size 14x2 [r=0 c=0 rs=1 cs=1]
+            LayoutTableCell {TD} at (18,2) size 748x34 [r=0 c=1 rs=1 cs=1]
+            LayoutTableCell {TD} at (768,18) size 14x2 [r=0 c=2 rs=1 cs=1]
+      LayoutBlockFlow (anonymous) at (0,320) size 784x18
+        LayoutInline {FONT} at (0,0) size 31x18 [color=#0000FF]
+          LayoutText {#text} at (0,0) size 31x18
+            text run at (0,0) width 31: "right"
+        LayoutText {#text} at (30,0) size 291x18
+          text run at (30,0) width 291: " border=\"1\" cellspacing=\"0\" cellpadding=\"0\""
+      LayoutTable {TABLE} at (0,338) size 784x36 [bgcolor=#EEEEEE] [border: (1px outset #808080)]
+        LayoutTableSection {TBODY} at (1,1) size 782x34
+          LayoutTableRow {TR} at (0,0) size 782x34
+            LayoutTableCell {TD} at (0,16) size 14x2 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
+            LayoutTableCell {TD} at (14,0) size 754x34 [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1]
+            LayoutTableCell {TD} at (768,16) size 14x2 [border: (1px inset #808080)] [r=0 c=2 rs=1 cs=1]
+      LayoutBlockFlow (anonymous) at (0,374) size 784x18
+        LayoutInline {FONT} at (0,0) size 31x18 [color=#0000FF]
+          LayoutText {#text} at (0,0) size 31x18
+            text run at (0,0) width 31: "right"
+        LayoutText {#text} at (30,0) size 183x18
+          text run at (30,0) width 183: " border=\"1\" cellspacing=\"0\""
+      LayoutTable {TABLE} at (0,392) size 784x38 [bgcolor=#FFCC66] [border: (1px outset #808080)]
+        LayoutTableSection {TBODY} at (1,1) size 782x36
+          LayoutTableRow {TR} at (0,0) size 782x36
+            LayoutTableCell {TD} at (0,16) size 16x4 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
+            LayoutTableCell {TD} at (16,0) size 750x36 [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1]
+            LayoutTableCell {TD} at (766,16) size 16x4 [border: (1px inset #808080)] [r=0 c=2 rs=1 cs=1]
+      LayoutBlockFlow (anonymous) at (0,430) size 784x18
+        LayoutInline {FONT} at (0,0) size 31x18 [color=#0000FF]
+          LayoutText {#text} at (0,0) size 31x18
+            text run at (0,0) width 31: "right"
+        LayoutText {#text} at (30,0) size 77x18
+          text run at (30,0) width 77: " border=\"1\""
+      LayoutTable {TABLE} at (0,448) size 784x42 [bgcolor=#CCFF33] [border: (1px outset #808080)]
+        LayoutTableSection {TBODY} at (1,1) size 782x40
+          LayoutTableRow {TR} at (0,2) size 782x36
+            LayoutTableCell {TD} at (2,18) size 16x4 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
+            LayoutTableCell {TD} at (20,2) size 742x36 [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1]
+            LayoutTableCell {TD} at (764,18) size 16x4 [border: (1px inset #808080)] [r=0 c=2 rs=1 cs=1]
+layer at (20,26) size 760x32 clip at (21,27) size 758x30
+  LayoutTextControl {TEXTAREA} at (0,0) size 760x32 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
+    LayoutBlockFlow {DIV} at (3,3) size 754x13
+      LayoutText {#text} at (0,0) size 20x13
+        text run at (0,0) width 20: "test"
+layer at (20,76) size 760x32 clip at (21,77) size 758x30
+  LayoutTextControl {TEXTAREA} at (0,0) size 760x32 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
+    LayoutBlockFlow {DIV} at (3,3) size 754x13
+      LayoutText {#text} at (0,0) size 20x13
+        text run at (0,0) width 20: "test"
+layer at (24,128) size 752x32 clip at (25,129) size 750x30
+  LayoutTextControl {TEXTAREA} at (0,0) size 752x32 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
+    LayoutBlockFlow {DIV} at (3,3) size 746x13
+      LayoutText {#text} at (0,0) size 20x13
+        text run at (0,0) width 20: "test"
+layer at (24,182) size 752x32 clip at (25,183) size 750x30
+  LayoutTextControl {TEXTAREA} at (0,0) size 752x32 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
+    LayoutBlockFlow {DIV} at (3,3) size 746x13
+      LayoutText {#text} at (0,0) size 20x13
+        text run at (0,0) width 20: "test"
+layer at (27,237) size 746x32 clip at (28,238) size 744x30
+  LayoutTextControl {TEXTAREA} at (1,1) size 746x32 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
+    LayoutBlockFlow {DIV} at (3,3) size 740x13
+      LayoutText {#text} at (0,0) size 20x13
+        text run at (0,0) width 20: "test"
+layer at (27,293) size 746x32 clip at (28,294) size 744x30
+  LayoutTextControl {TEXTAREA} at (1,1) size 746x32 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
+    LayoutBlockFlow {DIV} at (3,3) size 740x13
+      LayoutText {#text} at (0,0) size 20x13
+        text run at (0,0) width 20: "test"
+layer at (24,348) size 752x32 clip at (25,349) size 750x30
+  LayoutTextControl {TEXTAREA} at (1,1) size 752x32 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
+    LayoutBlockFlow {DIV} at (3,3) size 746x13
+      LayoutText {#text} at (0,0) size 20x13
+        text run at (0,0) width 20: "test"
+layer at (27,403) size 746x32 clip at (28,404) size 744x30
+  LayoutTextControl {TEXTAREA} at (2,2) size 746x32 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
+    LayoutBlockFlow {DIV} at (3,3) size 740x13
+      LayoutText {#text} at (0,0) size 20x13
+        text run at (0,0) width 20: "test"
+layer at (31,461) size 738x32 clip at (32,462) size 736x30
+  LayoutTextControl {TEXTAREA} at (2,2) size 738x32 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
+    LayoutBlockFlow {DIV} at (3,3) size 732x13
+      LayoutText {#text} at (0,0) size 20x13
+        text run at (0,0) width 20: "test"
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug2479-2-expected.png b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug2479-2-expected.png
new file mode 100644
index 0000000..045bb950
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug2479-2-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug2479-2-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug2479-2-expected.txt
new file mode 100644
index 0000000..7c7ced6
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug2479-2-expected.txt
@@ -0,0 +1,120 @@
+layer at (0,0) size 800x600
+  LayoutView at (0,0) size 800x600
+layer at (0,0) size 800x553
+  LayoutBlockFlow {HTML} at (0,0) size 800x553
+    LayoutBlockFlow {BODY} at (57,64) size 686x425 [bgcolor=#99FFCC] [border: (3px solid #000000)]
+      LayoutBlockFlow {P} at (3,3) size 680x64
+        LayoutText {#text} at (0,6) size 632x51
+          text run at (0,6) width 593: "These links are in an element with display table-row, and the li elements "
+          text run at (592,6) width 40: "have"
+          text run at (0,38) width 155: "display: table-cell. "
+          text run at (154,38) width 131: "They disappear:"
+      LayoutTable (anonymous) at (3,67) size 304x19
+        LayoutTableSection (anonymous) at (0,0) size 304x19
+          LayoutTableRow {UL} at (0,0) size 304x19 [bgcolor=#00CC99]
+            LayoutTableCell {LI} at (0,0) size 76x19 [r=0 c=0 rs=1 cs=1]
+              LayoutInline {A} at (0,0) size 54x19 [color=#0000EE]
+                LayoutText {#text} at (11,0) size 54x19
+                  text run at (11,0) width 54: "people"
+            LayoutTableCell {LI} at (76,0) size 76x19 [r=0 c=1 rs=1 cs=1]
+              LayoutInline {A} at (0,0) size 52x19 [color=#0000EE]
+                LayoutText {#text} at (12,0) size 52x19
+                  text run at (12,0) width 52: "places"
+            LayoutTableCell {LI} at (152,0) size 76x19 [r=0 c=2 rs=1 cs=1]
+              LayoutInline {A} at (0,0) size 76x19 [color=#0000EE]
+                LayoutText {#text} at (0,0) size 76x19
+                  text run at (0,0) width 76: "members"
+            LayoutTableCell {LI} at (228,0) size 76x19 [r=0 c=3 rs=1 cs=1]
+              LayoutInline {A} at (0,0) size 38x19 [color=#0000EE]
+                LayoutText {#text} at (19,0) size 38x19
+                  text run at (19,0) width 38: "links"
+      LayoutBlockFlow {DIV} at (3,86) size 680x336
+        LayoutBlockFlow (anonymous) at (16,16) size 648x19
+          LayoutText {#text} at (0,0) size 510x19
+            text run at (0,0) width 227: "This text is not in the form. "
+            text run at (226,0) width 284: "The form should be indented 40px."
+        LayoutBlockFlow {FORM} at (96,35) size 568x285
+          LayoutBlockFlow {P} at (0,0) size 568x64
+            LayoutText {#text} at (0,6) size 541x51
+              text run at (0,6) width 195: "This is text in the form. "
+              text run at (194,6) width 230: "It should be indented 40px. "
+              text run at (423,6) width 118: "The form itself"
+              text run at (0,38) width 373: "has the same table-row/table-cell problem as "
+              text run at (372,38) width 55: "above."
+          LayoutBlockFlow {P} at (0,64) size 568x63
+            LayoutTable {SPAN} at (0,3) size 137x60
+              LayoutTableSection (anonymous) at (0,0) size 137x60
+                LayoutTableRow {SPAN} at (0,0) size 137x28
+                  LayoutTableCell (anonymous) at (0,0) size 137x28 [r=0 c=0 rs=1 cs=1]
+                    LayoutText {#text} at (0,6) size 137x16
+                      text run at (0,6) width 137: "First Name (required)"
+                LayoutTableRow (anonymous) at (0,28) size 137x32
+                  LayoutTableCell (anonymous) at (0,28) size 137x32 [r=1 c=0 rs=1 cs=1]
+                    LayoutTextControl {INPUT} at (0,8) size 107x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)]
+            LayoutText {#text} at (137,6) size 6x19
+              text run at (137,6) width 6: " "
+            LayoutTable {SPAN} at (142.63,3) size 137x60
+              LayoutTableSection (anonymous) at (0,0) size 137x60
+                LayoutTableRow {SPAN} at (0,0) size 137x28
+                  LayoutTableCell (anonymous) at (0,0) size 137x28 [r=0 c=0 rs=1 cs=1]
+                    LayoutText {#text} at (0,6) size 137x16
+                      text run at (0,6) width 137: "Last Name (required)"
+                LayoutTableRow (anonymous) at (0,28) size 137x32
+                  LayoutTableCell (anonymous) at (0,28) size 137x32 [r=1 c=0 rs=1 cs=1]
+                    LayoutTextControl {INPUT} at (0,8) size 107x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)]
+            LayoutText {#text} at (0,0) size 0x0
+          LayoutBlockFlow {P} at (0,127) size 568x63
+            LayoutTable {SPAN} at (0,3) size 251x60
+              LayoutTableSection (anonymous) at (0,0) size 251x60
+                LayoutTableRow {SPAN} at (0,0) size 251x28
+                  LayoutTableCell (anonymous) at (0,0) size 251x28 [r=0 c=0 rs=1 cs=1]
+                    LayoutText {#text} at (0,6) size 93x16
+                      text run at (0,6) width 93: "Email Address"
+                LayoutTableRow (anonymous) at (0,28) size 251x32
+                  LayoutTableCell (anonymous) at (0,28) size 251x32 [r=1 c=0 rs=1 cs=1]
+                    LayoutTextControl {INPUT} at (0,8) size 251x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)]
+            LayoutText {#text} at (0,0) size 0x0
+          LayoutBlockFlow {P} at (0,190) size 568x63
+            LayoutTable {SPAN} at (0,3) size 107x60
+              LayoutTableSection (anonymous) at (0,0) size 107x60
+                LayoutTableRow {SPAN} at (0,0) size 107x28
+                  LayoutTableCell (anonymous) at (0,0) size 107x28 [r=0 c=0 rs=1 cs=1]
+                    LayoutText {#text} at (0,6) size 105x16
+                      text run at (0,6) width 105: "Company Name"
+                LayoutTableRow (anonymous) at (0,28) size 107x32
+                  LayoutTableCell (anonymous) at (0,28) size 107x32 [r=1 c=0 rs=1 cs=1]
+                    LayoutTextControl {INPUT} at (0,8) size 107x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)]
+            LayoutText {#text} at (107,6) size 6x19
+              text run at (107,6) width 6: " "
+            LayoutTable {SPAN} at (112.63,3) size 107x60
+              LayoutTableSection (anonymous) at (0,0) size 107x60
+                LayoutTableRow {SPAN} at (0,0) size 107x28
+                  LayoutTableCell (anonymous) at (0,0) size 107x28 [r=0 c=0 rs=1 cs=1]
+                    LayoutText {#text} at (0,6) size 27x16
+                      text run at (0,6) width 27: "Title"
+                LayoutTableRow (anonymous) at (0,28) size 107x32
+                  LayoutTableCell (anonymous) at (0,28) size 107x32 [r=1 c=0 rs=1 cs=1]
+                    LayoutTextControl {INPUT} at (0,8) size 107x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)]
+            LayoutText {#text} at (0,0) size 0x0
+          LayoutBlockFlow {P} at (0,253) size 568x32
+            LayoutButton {INPUT} at (0,9) size 55.89x18 [bgcolor=#C0C0C0]
+              LayoutBlockFlow (anonymous) at (8,2) size 39.89x13
+                LayoutText {#text} at (0,0) size 40x13
+                  text run at (0,0) width 40: "Submit!"
+            LayoutText {#text} at (55,6) size 7x19
+              text run at (55,6) width 7: " "
+            LayoutButton {INPUT} at (61.52,9) size 72.97x18 [bgcolor=#C0C0C0]
+              LayoutBlockFlow (anonymous) at (8,2) size 56.97x13
+                LayoutText {#text} at (0,0) size 57x13
+                  text run at (0,0) width 57: "Clear Form"
+            LayoutText {#text} at (0,0) size 0x0
+layer at (159,291) size 101x13
+  LayoutBlockFlow {DIV} at (3,3) size 101x13
+layer at (302,291) size 101x13
+  LayoutBlockFlow {DIV} at (3,3) size 101x13
+layer at (159,354) size 245x13
+  LayoutBlockFlow {DIV} at (3,3) size 245x13
+layer at (159,417) size 101x13
+  LayoutBlockFlow {DIV} at (3,3) size 101x13
+layer at (272,417) size 101x13
+  LayoutBlockFlow {DIV} at (3,3) size 101x13
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug2479-3-expected.png b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug2479-3-expected.png
new file mode 100644
index 0000000..325e09d
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug2479-3-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug2479-3-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug2479-3-expected.txt
new file mode 100644
index 0000000..057baa2
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug2479-3-expected.txt
@@ -0,0 +1,120 @@
+layer at (0,0) size 800x600 clip at (0,0) size 785x600 scrollHeight 659
+  LayoutView at (0,0) size 800x600
+layer at (0,0) size 785x659 backgroundClip at (0,0) size 785x600 clip at (0,0) size 785x600
+  LayoutBlockFlow {HTML} at (0,0) size 785x658.50
+    LayoutBlockFlow {BODY} at (8,21.44) size 769x621.06
+      LayoutBlockFlow {H1} at (0,0) size 769x37
+        LayoutText {#text} at (0,0) size 311x37
+          text run at (0,0) width 311: "Generic Table Tests - 1"
+      LayoutBlockFlow {P} at (0,58.44) size 769x18
+        LayoutText {#text} at (0,0) size 397x18
+          text run at (0,0) width 397: "If you have any comments to make regarding this test, e-mail "
+        LayoutInline {A} at (0,0) size 186x18 [color=#0000EE]
+          LayoutText {#text} at (396,0) size 186x18
+            text run at (396,0) width 186: "py8ieh=eviltests@bath.ac.uk"
+        LayoutText {#text} at (581,0) size 5x18
+          text run at (581,0) width 5: "."
+      LayoutBlockFlow {DL} at (0,92.44) size 769x36
+        LayoutBlockFlow {DT} at (0,0) size 769x18
+          LayoutText {#text} at (0,0) size 83x18
+            text run at (0,0) width 83: "Prerequisites"
+        LayoutBlockFlow {DD} at (40,18) size 729x18
+          LayoutText {#text} at (0,0) size 697x18
+            text run at (0,0) width 697: "Browsers that are subjected to this test should support CSS1 and the CSS2 table model, and multiple classes."
+      LayoutBlockFlow {P} at (0,144.44) size 769x98 [border: (5px double #FF0000)]
+        LayoutBlockFlow (anonymous) at (13,13) size 743x18
+          LayoutText {#text} at (0,0) size 239x18
+            text run at (0,0) width 239: "If this paragraph breaks the line here:"
+        LayoutTable {SPAN} at (13,31) size 60x18
+          LayoutTableSection (anonymous) at (0,0) size 60x18
+            LayoutTableRow (anonymous) at (0,0) size 60x18
+              LayoutTableCell (anonymous) at (0,0) size 60x18 [r=0 c=0 rs=1 cs=1]
+                LayoutText {#text} at (0,0) size 60x18
+                  text run at (0,0) width 60: "and here:"
+        LayoutBlockFlow (anonymous) at (13,49) size 743x36
+          LayoutText {#text} at (0,0) size 121x18
+            text run at (0,0) width 121: "then your browser "
+          LayoutInline {EM} at (0,0) size 83x18
+            LayoutText {#text} at (120,0) size 83x18
+              text run at (120,0) width 83: "does support"
+          LayoutText {#text} at (202,0) size 165x18
+            text run at (202,0) width 165: " table values on 'display'. "
+          LayoutInline {STRONG} at (0,0) size 715x36
+            LayoutText {#text} at (366,0) size 715x36
+              text run at (366,0) width 349: "If this paragraphs flows without any undue breaks,"
+              text run at (0,18) width 459: "then you should mark your browser as not supporting table values!"
+      LayoutBlockFlow {H2} at (0,262.34) size 769x28
+        LayoutText {#text} at (0,0) size 218x28
+          text run at (0,0) width 218: "1. Table -> Table Cell"
+      LayoutBlockFlow {P} at (0,310.25) size 769x36
+        LayoutText {#text} at (0,0) size 762x36
+          text run at (0,0) width 762: "Below there should be a gray bar, spanning the width of the BODY, with the text \"Left\" to the left and the text \"Right\","
+          text run at (0,18) width 222: "on the same line, flush to the right."
+      LayoutTable {DIV} at (0,362.25) size 769x18 [bgcolor=#C0C0C0]
+        LayoutTableSection (anonymous) at (0,0) size 769x18
+          LayoutTableRow (anonymous) at (0,0) size 769x18
+            LayoutTableCell {DIV} at (0,0) size 329x18 [r=0 c=0 rs=1 cs=1]
+              LayoutText {#text} at (0,0) size 27x18
+                text run at (0,0) width 27: "Left"
+            LayoutTableCell {DIV} at (329,0) size 440x18 [r=0 c=1 rs=1 cs=1]
+              LayoutText {#text} at (404,0) size 36x18
+                text run at (404,0) width 36: "Right"
+      LayoutBlockFlow {H2} at (0,400.16) size 769x28
+        LayoutText {#text} at (0,0) size 156x28
+          text run at (0,0) width 156: "Submit Results"
+      LayoutBlockFlow {FORM} at (0,448.06) size 769x19
+        LayoutBlockFlow {P} at (0,0) size 769x19
+          LayoutText {#text} at (0,0) size 267x18
+            text run at (0,0) width 267: "How does your browser fare on this test? "
+          LayoutMenuList {SELECT} at (266.59,1) size 238x18 [bgcolor=#F8F8F8]
+            LayoutBlockFlow (anonymous) at (0,0) size 238x18
+              LayoutText (anonymous) at (8,2) size 138x13
+                text run at (8,2) width 138: "The test renders correctly."
+          LayoutText {#text} at (504,0) size 5x18
+            text run at (504,0) width 5: " "
+          LayoutInline {LABEL} at (0,0) size 204x18
+            LayoutText {#text} at (508,0) size 73x18
+              text run at (508,0) width 73: "Comment: "
+            LayoutTextControl {INPUT} at (580.14,0) size 131x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)]
+          LayoutText {#text} at (711,0) size 5x18
+            text run at (711,0) width 5: " "
+          LayoutButton {INPUT} at (715.14,1) size 52.47x18 [bgcolor=#C0C0C0]
+            LayoutBlockFlow (anonymous) at (8,2) size 36.47x13
+              LayoutText {#text} at (0,0) size 37x13
+                text run at (0,0) width 37: "Submit"
+          LayoutText {#text} at (0,0) size 0x0
+      LayoutBlockFlow {HR} at (0,483.06) size 769x2 [border: (1px inset #EEEEEE)]
+      LayoutBlockFlow {P} at (0,501.06) size 769x18
+        LayoutText {#text} at (0,0) size 64x18
+          text run at (0,0) width 64: "Up to the "
+        LayoutInline {A} at (0,0) size 73x18 [color=#0000EE]
+          LayoutText {#text} at (63,0) size 73x18
+            text run at (63,0) width 73: "Table Tests"
+        LayoutText {#text} at (135,0) size 5x18
+          text run at (135,0) width 5: "."
+      LayoutBlockFlow {P} at (0,535.06) size 769x18
+        LayoutText {#text} at (0,0) size 64x18
+          text run at (0,0) width 64: "Up to the "
+        LayoutInline {A} at (0,0) size 99x18 [color=#0000EE]
+          LayoutText {#text} at (63,0) size 99x18
+            text run at (63,0) width 99: "Evil Tests Page"
+        LayoutText {#text} at (161,0) size 5x18
+          text run at (161,0) width 5: "."
+      LayoutBlockFlow {P} at (0,569.06) size 769x18
+        LayoutText {#text} at (0,0) size 177x18
+          text run at (0,0) width 177: "This page is maintained by "
+        LayoutInline {A} at (0,0) size 79x18 [color=#0000EE]
+          LayoutText {#text} at (176,0) size 79x18
+            text run at (176,0) width 79: "Ian Hickson"
+        LayoutText {#text} at (254,0) size 10x18
+          text run at (254,0) width 10: " ("
+        LayoutInline {A} at (0,0) size 125x18 [color=#0000EE]
+          LayoutText {#text} at (263,0) size 125x18
+            text run at (263,0) width 125: "py8ieh@bath.ac.uk"
+        LayoutText {#text} at (387,0) size 10x18
+          text run at (387,0) width 10: ")."
+      LayoutBlockFlow {P} at (0,603.06) size 769x18
+        LayoutText {#text} at (0,0) size 185x18
+          text run at (0,0) width 185: "Last updated in March 1999."
+layer at (591,473) size 125x13
+  LayoutBlockFlow {DIV} at (3,3) size 125x13
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug2479-4-expected.png b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug2479-4-expected.png
new file mode 100644
index 0000000..6a8402f9
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug2479-4-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug2479-4-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug2479-4-expected.txt
new file mode 100644
index 0000000..07df1f8f
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug2479-4-expected.txt
@@ -0,0 +1,243 @@
+layer at (0,0) size 800x600 clip at (0,0) size 785x600 scrollHeight 2582
+  LayoutView at (0,0) size 800x600
+layer at (0,0) size 785x2582 backgroundClip at (0,0) size 785x600 clip at (0,0) size 785x600
+  LayoutBlockFlow {HTML} at (0,0) size 785x2582.22
+    LayoutBlockFlow {BODY} at (8,21.44) size 769x2544.78 [bgcolor=#FFFFFF]
+      LayoutBlockFlow {H1} at (0,0) size 769x37
+        LayoutText {#text} at (0,0) size 361x37
+          text run at (0,0) width 361: "Table Inheritance Tests - 1"
+      LayoutBlockFlow {P} at (0,58.44) size 769x18
+        LayoutText {#text} at (0,0) size 397x18
+          text run at (0,0) width 397: "If you have any comments to make regarding this test, e-mail "
+        LayoutInline {A} at (0,0) size 186x18 [color=#0000EE]
+          LayoutText {#text} at (396,0) size 186x18
+            text run at (396,0) width 186: "py8ieh=eviltests@bath.ac.uk"
+        LayoutText {#text} at (581,0) size 5x18
+          text run at (581,0) width 5: "."
+      LayoutBlockFlow {DL} at (0,92.44) size 769x36
+        LayoutBlockFlow {DT} at (0,0) size 769x18
+          LayoutText {#text} at (0,0) size 83x18
+            text run at (0,0) width 83: "Prerequisites"
+        LayoutBlockFlow {DD} at (40,18) size 729x18
+          LayoutText {#text} at (0,0) size 560x18
+            text run at (0,0) width 560: "Browsers that are subjected to this test should support CSS1 and the CSS2 table model."
+      LayoutBlockFlow {H2} at (0,148.34) size 769x28
+        LayoutText {#text} at (0,0) size 104x28
+          text run at (0,0) width 104: "0. Control"
+      LayoutBlockFlow {P} at (0,196.25) size 769x18
+        LayoutText {#text} at (0,0) size 410x18
+          text run at (0,0) width 410: "The following four tests should look identical, namely, like this:"
+      LayoutBlockFlow {DIV} at (0,230.25) size 769x74 [color=#FFFFFF] [bgcolor=#000000]
+        LayoutText {#text} at (0,0) size 761x74
+          text run at (0,0) width 761: "This text should be white on black, bold, twice the"
+          text run at (0,37) width 523: "size of normal text, and sans serif."
+      LayoutBlockFlow {P} at (0,320.25) size 769x72
+        LayoutText {#text} at (0,0) size 768x72
+          text run at (0,0) width 756: "There are some minor exceptions, however. The x.1 tests should fill the viewport width, the other tests need not. Also,"
+          text run at (0,18) width 766: "browsers attempting to have backwards compatability with the buggy behaviour of legacy browsers may omit to inherit"
+          text run at (0,36) width 768: "the color and font-size in 1.1, which will make 1.1 (but only 1.1) unreadable. That is the problem with not following the"
+          text run at (0,54) width 39: "specs."
+      LayoutBlockFlow {H2} at (0,412.16) size 769x28
+        LayoutText {#text} at (0,0) size 170x28
+          text run at (0,0) width 170: "1. HTML Tables"
+      LayoutBlockFlow {H3} at (0,460.06) size 769x22
+        LayoutText {#text} at (0,0) size 243x22
+          text run at (0,0) width 243: "1.1 Inheritance through a DIV"
+      LayoutBlockFlow {DIV} at (0,500.78) size 769x80 [color=#FFFFFF] [bgcolor=#000000]
+        LayoutTable {TABLE} at (0,0) size 769x80
+          LayoutTableSection {TBODY} at (0,0) size 769x80
+            LayoutTableRow {TR} at (0,2) size 769x76
+              LayoutTableCell {TD} at (2,2) size 765x76 [r=0 c=0 rs=1 cs=1]
+                LayoutText {#text} at (1,1) size 761x74
+                  text run at (1,1) width 761: "This text should be white on black, bold, twice the"
+                  text run at (1,38) width 523: "size of normal text, and sans serif."
+      LayoutBlockFlow {H3} at (0,599.50) size 769x22
+        LayoutText {#text} at (0,0) size 259x22
+          text run at (0,0) width 259: "1.2 Styles set directly on TABLE"
+      LayoutTable {TABLE} at (0,640.22) size 769x80 [color=#FFFFFF] [bgcolor=#000000]
+        LayoutTableSection {TBODY} at (0,0) size 769x80
+          LayoutTableRow {TR} at (0,2) size 769x76
+            LayoutTableCell {TD} at (2,2) size 765x76 [r=0 c=0 rs=1 cs=1]
+              LayoutText {#text} at (1,1) size 761x74
+                text run at (1,1) width 761: "This text should be white on black, bold, twice the"
+                text run at (1,38) width 523: "size of normal text, and sans serif."
+      LayoutBlockFlow {H2} at (0,740.13) size 769x28
+        LayoutText {#text} at (0,0) size 226x28
+          text run at (0,0) width 226: "2. Explicit CSS Tables"
+      LayoutBlockFlow {H3} at (0,788.03) size 769x22
+        LayoutText {#text} at (0,0) size 243x22
+          text run at (0,0) width 243: "2.1 Inheritance through a DIV"
+      LayoutBlockFlow {DIV} at (0,828.75) size 769x74 [color=#FFFFFF] [bgcolor=#000000]
+        LayoutTable {DIV} at (0,0) size 769x74
+          LayoutTableSection (anonymous) at (0,0) size 769x74
+            LayoutTableRow {DIV} at (0,0) size 769x74
+              LayoutTableCell {DIV} at (0,0) size 769x74 [r=0 c=0 rs=1 cs=1]
+                LayoutText {#text} at (0,0) size 761x74
+                  text run at (0,0) width 761: "This text should be white on black, bold, twice the"
+                  text run at (0,37) width 523: "size of normal text, and sans serif."
+      LayoutBlockFlow {H3} at (0,921.47) size 769x22
+        LayoutText {#text} at (0,0) size 259x22
+          text run at (0,0) width 259: "2.2 Styles set directly on TABLE"
+      LayoutTable {DIV} at (0,962.19) size 769x74 [color=#FFFFFF] [bgcolor=#000000]
+        LayoutTableSection (anonymous) at (0,0) size 769x74
+          LayoutTableRow {DIV} at (0,0) size 769x74
+            LayoutTableCell {DIV} at (0,0) size 769x74 [r=0 c=0 rs=1 cs=1]
+              LayoutText {#text} at (0,0) size 761x74
+                text run at (0,0) width 761: "This text should be white on black, bold, twice the"
+                text run at (0,37) width 523: "size of normal text, and sans serif."
+      LayoutBlockFlow {H3} at (0,1054.91) size 769x22
+        LayoutText {#text} at (0,0) size 243x22
+          text run at (0,0) width 243: "2.3 Styles set directly on ROW"
+      LayoutTable {DIV} at (0,1095.63) size 769x74
+        LayoutTableSection (anonymous) at (0,0) size 769x74
+          LayoutTableRow {DIV} at (0,0) size 769x74 [color=#FFFFFF] [bgcolor=#000000]
+            LayoutTableCell {DIV} at (0,0) size 769x74 [r=0 c=0 rs=1 cs=1]
+              LayoutText {#text} at (0,0) size 761x74
+                text run at (0,0) width 761: "This text should be white on black, bold, twice the"
+                text run at (0,37) width 523: "size of normal text, and sans serif."
+      LayoutBlockFlow {H3} at (0,1188.34) size 769x22
+        LayoutText {#text} at (0,0) size 248x22
+          text run at (0,0) width 248: "2.4 Styles set directly on CELL"
+      LayoutTable {DIV} at (0,1229.06) size 769x74
+        LayoutTableSection (anonymous) at (0,0) size 769x74
+          LayoutTableRow {DIV} at (0,0) size 769x74
+            LayoutTableCell {DIV} at (0,0) size 769x74 [color=#FFFFFF] [bgcolor=#000000] [r=0 c=0 rs=1 cs=1]
+              LayoutText {#text} at (0,0) size 761x74
+                text run at (0,0) width 761: "This text should be white on black, bold, twice the"
+                text run at (0,37) width 523: "size of normal text, and sans serif."
+      LayoutBlockFlow {H2} at (0,1322.97) size 769x28
+        LayoutText {#text} at (0,0) size 381x28
+          text run at (0,0) width 381: "3. Implicit CSS Tables (table explicit)"
+      LayoutBlockFlow {H3} at (0,1370.88) size 769x22
+        LayoutText {#text} at (0,0) size 243x22
+          text run at (0,0) width 243: "3.1 Inheritance through a DIV"
+      LayoutBlockFlow {DIV} at (0,1411.59) size 769x74 [color=#FFFFFF] [bgcolor=#000000]
+        LayoutTable {DIV} at (0,0) size 769x74
+          LayoutTableSection (anonymous) at (0,0) size 769x74
+            LayoutTableRow (anonymous) at (0,0) size 769x74
+              LayoutTableCell (anonymous) at (0,0) size 769x74 [r=0 c=0 rs=1 cs=1]
+                LayoutText {#text} at (0,0) size 761x74
+                  text run at (0,0) width 761: "This text should be white on black, bold, twice the"
+                  text run at (0,37) width 523: "size of normal text, and sans serif."
+      LayoutBlockFlow {H3} at (0,1504.31) size 769x22
+        LayoutText {#text} at (0,0) size 259x22
+          text run at (0,0) width 259: "3.2 Styles set directly on TABLE"
+      LayoutTable {DIV} at (0,1545.03) size 769x74 [color=#FFFFFF] [bgcolor=#000000]
+        LayoutTableSection (anonymous) at (0,0) size 769x74
+          LayoutTableRow (anonymous) at (0,0) size 769x74
+            LayoutTableCell (anonymous) at (0,0) size 769x74 [r=0 c=0 rs=1 cs=1]
+              LayoutText {#text} at (0,0) size 761x74
+                text run at (0,0) width 761: "This text should be white on black, bold, twice the"
+                text run at (0,37) width 523: "size of normal text, and sans serif."
+      LayoutBlockFlow {H2} at (0,1638.94) size 769x28
+        LayoutText {#text} at (0,0) size 370x28
+          text run at (0,0) width 370: "4. Implicit CSS Tables (row explicit)"
+      LayoutBlockFlow {H3} at (0,1686.84) size 769x22
+        LayoutText {#text} at (0,0) size 243x22
+          text run at (0,0) width 243: "4.1 Inheritance through a DIV"
+      LayoutBlockFlow {DIV} at (0,1727.56) size 769x74 [color=#FFFFFF] [bgcolor=#000000]
+        LayoutTable (anonymous) at (0,0) size 769x74
+          LayoutTableSection (anonymous) at (0,0) size 769x74
+            LayoutTableRow {DIV} at (0,0) size 769x74
+              LayoutTableCell (anonymous) at (0,0) size 769x74 [r=0 c=0 rs=1 cs=1]
+                LayoutText {#text} at (0,0) size 761x74
+                  text run at (0,0) width 761: "This text should be white on black, bold, twice the"
+                  text run at (0,37) width 523: "size of normal text, and sans serif."
+      LayoutBlockFlow {H3} at (0,1820.28) size 769x22
+        LayoutText {#text} at (0,0) size 243x22
+          text run at (0,0) width 243: "4.2 Styles set directly on ROW"
+      LayoutTable (anonymous) at (0,1861) size 769x74
+        LayoutTableSection (anonymous) at (0,0) size 769x74
+          LayoutTableRow {DIV} at (0,0) size 769x74 [color=#FFFFFF] [bgcolor=#000000]
+            LayoutTableCell (anonymous) at (0,0) size 769x74 [r=0 c=0 rs=1 cs=1]
+              LayoutText {#text} at (0,0) size 761x74
+                text run at (0,0) width 761: "This text should be white on black, bold, twice the"
+                text run at (0,37) width 523: "size of normal text, and sans serif."
+      LayoutBlockFlow {H2} at (0,1954.91) size 769x28
+        LayoutText {#text} at (0,0) size 365x28
+          text run at (0,0) width 365: "5. Implicit CSS Tables (cell explicit)"
+      LayoutBlockFlow {H3} at (0,2002.81) size 769x22
+        LayoutText {#text} at (0,0) size 243x22
+          text run at (0,0) width 243: "5.1 Inheritance through a DIV"
+      LayoutBlockFlow {DIV} at (0,2043.53) size 769x74 [color=#FFFFFF] [bgcolor=#000000]
+        LayoutTable (anonymous) at (0,0) size 769x74
+          LayoutTableSection (anonymous) at (0,0) size 769x74
+            LayoutTableRow (anonymous) at (0,0) size 769x74
+              LayoutTableCell {DIV} at (0,0) size 769x74 [r=0 c=0 rs=1 cs=1]
+                LayoutText {#text} at (0,0) size 761x74
+                  text run at (0,0) width 761: "This text should be white on black, bold, twice the"
+                  text run at (0,37) width 523: "size of normal text, and sans serif."
+      LayoutBlockFlow {H3} at (0,2136.25) size 769x22
+        LayoutText {#text} at (0,0) size 248x22
+          text run at (0,0) width 248: "5.2 Styles set directly on CELL"
+      LayoutTable (anonymous) at (0,2176.97) size 769x74
+        LayoutTableSection (anonymous) at (0,0) size 769x74
+          LayoutTableRow (anonymous) at (0,0) size 769x74
+            LayoutTableCell {DIV} at (0,0) size 769x74 [color=#FFFFFF] [bgcolor=#000000] [r=0 c=0 rs=1 cs=1]
+              LayoutText {#text} at (0,0) size 761x74
+                text run at (0,0) width 761: "This text should be white on black, bold, twice the"
+                text run at (0,37) width 523: "size of normal text, and sans serif."
+      LayoutBlockFlow {H2} at (0,2270.88) size 769x28
+        LayoutText {#text} at (0,0) size 156x28
+          text run at (0,0) width 156: "Submit Results"
+      LayoutBlockFlow {FORM} at (0,2318.78) size 769x38
+        LayoutBlockFlow {P} at (0,0) size 769x38
+          LayoutText {#text} at (0,0) size 267x18
+            text run at (0,0) width 267: "How does your browser fare on this test? "
+          LayoutMenuList {SELECT} at (266.59,1) size 458x18 [bgcolor=#F8F8F8]
+            LayoutBlockFlow (anonymous) at (0,0) size 458x18
+              LayoutText (anonymous) at (8,2) size 427x13
+                text run at (8,2) width 427: "The tests all render identically, and this browser may or may not grok CSS2 tables."
+          LayoutText {#text} at (0,0) size 0x0
+          LayoutInline {LABEL} at (0,0) size 203x18
+            LayoutText {#text} at (0,19) size 72x18
+              text run at (0,19) width 72: "Comment: "
+            LayoutTextControl {INPUT} at (71.55,19) size 131x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)]
+          LayoutText {#text} at (202,19) size 5x18
+            text run at (202,19) width 5: " "
+          LayoutButton {INPUT} at (206.55,20) size 52.47x18 [bgcolor=#C0C0C0]
+            LayoutBlockFlow (anonymous) at (8,2) size 36.47x13
+              LayoutText {#text} at (0,0) size 37x13
+                text run at (0,0) width 37: "Submit"
+          LayoutText {#text} at (0,0) size 0x0
+      LayoutBlockFlow {HR} at (0,2372.78) size 769x2 [border: (1px inset #EEEEEE)]
+      LayoutBlockFlow {P} at (0,2390.78) size 769x18
+        LayoutText {#text} at (0,0) size 64x18
+          text run at (0,0) width 64: "Up to the "
+        LayoutInline {A} at (0,0) size 73x18 [color=#0000EE]
+          LayoutText {#text} at (63,0) size 73x18
+            text run at (63,0) width 73: "Table Tests"
+        LayoutText {#text} at (135,0) size 5x18
+          text run at (135,0) width 5: "."
+      LayoutBlockFlow {P} at (0,2424.78) size 769x18
+        LayoutText {#text} at (0,0) size 64x18
+          text run at (0,0) width 64: "Up to the "
+        LayoutInline {A} at (0,0) size 99x18 [color=#0000EE]
+          LayoutText {#text} at (63,0) size 99x18
+            text run at (63,0) width 99: "Evil Tests Page"
+        LayoutText {#text} at (161,0) size 5x18
+          text run at (161,0) width 5: "."
+      LayoutBlockFlow {P} at (0,2458.78) size 769x18
+        LayoutText {#text} at (0,0) size 63x18
+          text run at (0,0) width 63: "Bugzilla: "
+        LayoutInline {A} at (0,0) size 64x18 [color=#0000EE]
+          LayoutText {#text} at (62,0) size 64x18
+            text run at (62,0) width 64: "Bug 1044"
+      LayoutBlockFlow {P} at (0,2492.78) size 769x18
+        LayoutText {#text} at (0,0) size 177x18
+          text run at (0,0) width 177: "This page is maintained by "
+        LayoutInline {A} at (0,0) size 79x18 [color=#0000EE]
+          LayoutText {#text} at (176,0) size 79x18
+            text run at (176,0) width 79: "Ian Hickson"
+        LayoutText {#text} at (254,0) size 10x18
+          text run at (254,0) width 10: " ("
+        LayoutInline {A} at (0,0) size 125x18 [color=#0000EE]
+          LayoutText {#text} at (263,0) size 125x18
+            text run at (263,0) width 125: "py8ieh@bath.ac.uk"
+        LayoutText {#text} at (387,0) size 10x18
+          text run at (387,0) width 10: ")."
+      LayoutBlockFlow {P} at (0,2526.78) size 769x18
+        LayoutText {#text} at (0,0) size 185x18
+          text run at (0,0) width 185: "Last updated in March 1999."
+layer at (83,2362) size 125x13 backgroundClip at (0,0) size 0x0 clip at (0,0) size 0x0
+  LayoutBlockFlow {DIV} at (3,3) size 125x13
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug26178-expected.png b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug26178-expected.png
new file mode 100644
index 0000000..2ebdacb
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug26178-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug26178-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug26178-expected.txt
new file mode 100644
index 0000000..ed36ede
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug26178-expected.txt
@@ -0,0 +1,22 @@
+layer at (0,0) size 800x600
+  LayoutView at (0,0) size 800x600
+layer at (0,0) size 800x600
+  LayoutBlockFlow {HTML} at (0,0) size 800x600
+    LayoutBlockFlow {BODY} at (8,8) size 784x576
+      LayoutTable {TABLE} at (0,0) size 66x46
+        LayoutTableSection {THEAD} at (0,0) size 66x24
+          LayoutTableRow {TR} at (0,2) size 66x20
+            LayoutTableCell {TD} at (2,2) size 62x20 [r=0 c=0 rs=1 cs=1]
+              LayoutText {#text} at (1,1) size 60x18
+                text run at (1,1) width 60: "The head"
+        LayoutTableSection {TBODY} at (0,24) size 66x22
+          LayoutTableRow {TR} at (0,0) size 66x20
+            LayoutTableCell {TD} at (2,0) size 62x20 [r=0 c=0 rs=1 cs=1]
+              LayoutText {#text} at (1,1) size 59x18
+                text run at (1,1) width 59: "First row"
+      LayoutBlockFlow {FORM} at (0,46) size 784x18
+        LayoutButton {INPUT} at (0,0) size 45.69x18 [bgcolor=#C0C0C0]
+          LayoutBlockFlow (anonymous) at (8,2) size 29.69x13
+            LayoutText {#text} at (0,0) size 30x13
+              text run at (0,0) width 30: "insert"
+        LayoutText {#text} at (0,0) size 0x0
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug28928-expected.png b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug28928-expected.png
new file mode 100644
index 0000000..9be97bc9
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug28928-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug29326-expected.png b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug29326-expected.png
new file mode 100644
index 0000000..a7dde3e
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug29326-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug29326-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug29326-expected.txt
new file mode 100644
index 0000000..d8e9be2a4
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug29326-expected.txt
@@ -0,0 +1,15 @@
+layer at (0,0) size 800x600
+  LayoutView at (0,0) size 800x600
+layer at (0,0) size 800x600
+  LayoutBlockFlow {HTML} at (0,0) size 800x600
+    LayoutBlockFlow {BODY} at (8,8) size 784x584
+      LayoutTable {TABLE} at (192,0) size 400x44 [border: (1px outset #808080)]
+        LayoutTableSection {TBODY} at (1,1) size 398x42
+          LayoutTableRow {TR} at (0,2) size 398x38
+            LayoutTableCell {TD} at (2,2) size 394x38 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
+              LayoutBlockFlow {FORM} at (2,2) size 390x18
+                LayoutMenuList {SELECT} at (0,0) size 54x18 [bgcolor=#F8F8F8]
+                  LayoutBlockFlow (anonymous) at (0,0) size 54x18
+                    LayoutText (anonymous) at (8,2) size 23x13
+                      text run at (8,2) width 23: "Test"
+                LayoutText {#text} at (0,0) size 0x0
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug30559-expected.png b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug30559-expected.png
new file mode 100644
index 0000000..3ffdc42
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug30559-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug30692-expected.png b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug30692-expected.png
new file mode 100644
index 0000000..723437da
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug30692-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug30692-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug30692-expected.txt
new file mode 100644
index 0000000..fb6b805
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug30692-expected.txt
@@ -0,0 +1,56 @@
+layer at (0,0) size 800x600
+  LayoutView at (0,0) size 800x600
+layer at (0,0) size 800x600
+  LayoutBlockFlow {HTML} at (0,0) size 800x600
+    LayoutBlockFlow {BODY} at (8,8) size 784x584
+      LayoutBlockFlow (anonymous) at (0,0) size 784x18
+        LayoutText {#text} at (0,0) size 497x18
+          text run at (0,0) width 497: "BUG: Inside a cell, \"height:x%\" is ignored. It looks like 'auto' is used instead."
+        LayoutBR {BR} at (496,14) size 1x0
+      LayoutListItem {LI} at (0,18) size 784x18
+        LayoutListMarker (anonymous) at (-1,0) size 7x18: bullet
+        LayoutText {#text} at (30,0) size 265x18
+          text run at (30,0) width 265: "Absolute units work correctly (eg. 50px)."
+      LayoutListItem {LI} at (0,36) size 784x490
+        LayoutBlockFlow (anonymous) at (0,0) size 784x18
+          LayoutListMarker (anonymous) at (-1,0) size 7x18: bullet
+          LayoutText {#text} at (30,0) size 183x18
+            text run at (30,0) width 183: "\"width:x%\" works correctly."
+        LayoutBlockFlow {HR} at (0,26) size 784x2 [border: (1px inset #EEEEEE)]
+        LayoutTable {TABLE} at (0,36) size 784x100
+          LayoutTableSection {TBODY} at (0,0) size 784x100
+            LayoutTableRow {TR} at (0,2) size 784x96
+              LayoutTableCell {TD} at (2,11) size 780x77 [bgcolor=#FF0000] [r=0 c=0 rs=1 cs=1]
+                LayoutText {#text} at (0,0) size 0x0
+        LayoutBlockFlow {HR} at (0,144) size 784x2 [border: (1px inset #EEEEEE)]
+        LayoutTable {TABLE} at (0,154) size 784x100
+          LayoutTableSection {TBODY} at (0,0) size 784x100
+            LayoutTableRow {TR} at (0,2) size 784x96
+              LayoutTableCell {TD} at (2,9) size 780x82 [bgcolor=#FF0000] [r=0 c=0 rs=1 cs=1]
+                LayoutText {#text} at (0,0) size 0x0
+        LayoutBlockFlow {HR} at (0,262) size 784x2 [border: (1px inset #EEEEEE)]
+        LayoutTable {TABLE} at (0,272) size 784x100
+          LayoutTableSection {TBODY} at (0,0) size 784x100
+            LayoutTableRow {TR} at (0,2) size 784x96
+              LayoutTableCell {TD} at (2,11) size 780x77.19 [bgcolor=#FF0000] [r=0 c=0 rs=1 cs=1]
+                LayoutBlockFlow {P} at (1,1) size 622.39x75.19 [bgcolor=#FFFFE0]
+                  LayoutText {#text} at (0,0) size 232x18
+                    text run at (0,0) width 232: "BUG: the height of the P is not 80%"
+        LayoutBlockFlow {HR} at (0,380) size 784x2 [border: (1px inset #EEEEEE)]
+        LayoutTable {TABLE} at (0,390) size 784x100
+          LayoutTableSection {TBODY} at (0,0) size 784x100
+            LayoutTableRow {TR} at (0,2) size 784x96
+              LayoutTableCell {TD} at (2,9) size 780x82 [bgcolor=#FF0000] [r=0 c=0 rs=1 cs=1]
+                LayoutBlockFlow {P} at (1,1) size 622.39x80 [bgcolor=#FFFFE0]
+                  LayoutText {#text} at (0,0) size 226x18
+                    text run at (0,0) width 226: "OK: the height of the P is 80 pixels"
+layer at (11,92) size 622x75 clip at (12,93) size 620x73
+  LayoutTextControl {TEXTAREA} at (1,1) size 622.39x75.19 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
+    LayoutBlockFlow {DIV} at (3,3) size 616.39x13
+      LayoutText {#text} at (0,0) size 219x13
+        text run at (0,0) width 219: "BUG: the height of the textarea is not 80%"
+layer at (11,208) size 622x80 clip at (12,209) size 620x78
+  LayoutTextControl {TEXTAREA} at (1,1) size 622.39x80 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
+    LayoutBlockFlow {DIV} at (3,3) size 616.39x13
+      LayoutText {#text} at (0,0) size 216x13
+        text run at (0,0) width 216: "OK: the height of the textarea is 80 pixels"
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug33855-expected.png b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug33855-expected.png
new file mode 100644
index 0000000..3f112728
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug33855-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug33855-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug33855-expected.txt
new file mode 100644
index 0000000..fdc2a5f4
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug33855-expected.txt
@@ -0,0 +1,38 @@
+layer at (0,0) size 800x600
+  LayoutView at (0,0) size 800x600
+layer at (0,0) size 800x600
+  LayoutBlockFlow {HTML} at (0,0) size 800x600
+    LayoutBlockFlow {BODY} at (8,8) size 784x576 [bgcolor=#FFFFFF]
+      LayoutBlockFlow {FORM} at (0,0) size 784x24
+        LayoutTable {TABLE} at (0,0) size 784x24
+          LayoutTableSection {TBODY} at (0,0) size 784x24
+            LayoutTableRow {TR} at (0,2) size 784x20 [bgcolor=#FFFFFF]
+              LayoutTableCell {TD} at (2,2) size 66x20 [r=0 c=0 rs=1 cs=1]
+                LayoutButton {INPUT} at (1.33,1) size 63.33x18 [bgcolor=#C0C0C0]
+                  LayoutBlockFlow (anonymous) at (8,2) size 47.33x13
+                    LayoutText {#text} at (0,0) size 48x13
+                      text run at (0,0) width 48: "Select all"
+              LayoutTableCell {TD} at (70,2) size 52x20 [r=0 c=1 rs=1 cs=1]
+                LayoutButton {INPUT} at (1.23,1) size 49.53x18 [bgcolor=#C0C0C0]
+                  LayoutBlockFlow (anonymous) at (8,2) size 33.53x13
+                    LayoutText {#text} at (0,0) size 34x13
+                      text run at (0,0) width 34: "Delete"
+              LayoutTableCell {TD} at (124,2) size 81x20 [r=0 c=2 rs=1 cs=1]
+                LayoutButton {INPUT} at (1.27,1) size 78.45x18 [bgcolor=#C0C0C0]
+                  LayoutBlockFlow (anonymous) at (8,2) size 62.45x13
+                    LayoutText {#text} at (0,0) size 63x13
+                      text run at (0,0) width 63: "Empty trash"
+              LayoutTableCell {TD} at (207,2) size 399x20 [r=0 c=3 rs=1 cs=1]
+                LayoutText {#text} at (1,1) size 4x18
+                  text run at (1,1) width 4: " "
+              LayoutTableCell {TD} at (608,2) size 63x20 [r=0 c=4 rs=1 cs=1]
+                LayoutButton {INPUT} at (1.14,1) size 60.72x18 [bgcolor=#C0C0C0]
+                  LayoutBlockFlow (anonymous) at (8,2) size 44.72x13
+                    LayoutText {#text} at (0,0) size 45x13
+                      text run at (0,0) width 45: "Move to:"
+              LayoutTableCell {TD} at (673,2) size 109x20 [r=0 c=5 rs=1 cs=1]
+                LayoutMenuList {SELECT} at (1,1) size 107x18 [bgcolor=#F8F8F8]
+                  LayoutBlockFlow (anonymous) at (0,0) size 107x18
+                    LayoutText (anonymous) at (8,2) size 76x13
+                      text run at (8,2) width 76: "Choose folder "
+                LayoutText {#text} at (0,0) size 0x0
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug39209-expected.png b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug39209-expected.png
new file mode 100644
index 0000000..e41f46d
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug39209-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug4382-expected.png b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug4382-expected.png
new file mode 100644
index 0000000..6751598
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug4382-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug4382-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug4382-expected.txt
new file mode 100644
index 0000000..3d83b492
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug4382-expected.txt
@@ -0,0 +1,35 @@
+layer at (0,0) size 800x600
+  LayoutView at (0,0) size 800x600
+layer at (0,0) size 800x600
+  LayoutBlockFlow {HTML} at (0,0) size 800x600
+    LayoutBlockFlow {BODY} at (8,8) size 784x576
+      LayoutBlockFlow (anonymous) at (0,0) size 784x18
+        LayoutText {#text} at (0,0) size 270x18
+          text run at (0,0) width 270: "The select should not contain blank items "
+        LayoutBR {BR} at (269,14) size 1x0
+      LayoutBlockFlow {FORM} at (0,18) size 784x19
+        LayoutInline {B} at (0,0) size 47x18
+          LayoutText {#text} at (0,0) size 47x18
+            text run at (0,0) width 47: "Search"
+        LayoutText {#text} at (46,0) size 5x18
+          text run at (46,0) width 5: " "
+        LayoutTextControl {INPUT} at (50.81,0) size 119x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)]
+        LayoutText {#text} at (169,0) size 5x18
+          text run at (169,0) width 5: " "
+        LayoutMenuList {SELECT} at (173.81,1) size 75x18 [bgcolor=#F8F8F8]
+          LayoutBlockFlow (anonymous) at (0,0) size 75x18
+            LayoutText (anonymous) at (8,2) size 32x13
+              text run at (8,2) width 32: "Excite"
+        LayoutText {#text} at (0,0) size 0x0
+      LayoutBlockFlow (anonymous) at (0,53) size 784x36
+        LayoutBR {BR} at (0,0) size 0x18
+        LayoutText {#text} at (0,18) size 270x18
+          text run at (0,18) width 270: "The select should not contain blank items "
+        LayoutBR {BR} at (269,32) size 1x0
+      LayoutBlockFlow {FORM} at (0,89) size 784x18
+        LayoutMenuList {SELECT} at (0,0) size 218x18 [bgcolor=#F8F8F8]
+          LayoutBlockFlow (anonymous) at (0,0) size 218x18
+            LayoutText (anonymous) at (8,2) size 55x13
+              text run at (8,2) width 55: "Quick Link"
+layer at (62,29) size 113x13
+  LayoutBlockFlow {DIV} at (3,3) size 113x13
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug4429-expected.png b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug4429-expected.png
new file mode 100644
index 0000000..960233a9
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug4429-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug44505-expected.png b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug44505-expected.png
new file mode 100644
index 0000000..e23513f
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug44505-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug44505-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug44505-expected.txt
new file mode 100644
index 0000000..988e2fe
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug44505-expected.txt
@@ -0,0 +1,201 @@
+layer at (0,0) size 800x600 scrollHeight 604
+  LayoutView at (0,0) size 800x600
+layer at (0,0) size 800x604 backgroundClip at (0,0) size 800x600 clip at (0,0) size 800x600
+  LayoutBlockFlow {HTML} at (0,0) size 800x604
+    LayoutBlockFlow {BODY} at (8,8) size 784x588 [bgcolor=#FFFFFF]
+      LayoutTable {TABLE} at (0,0) size 308x52 [border: (1px outset #808080)]
+        LayoutTableCol {COLGROUP} at (0,0) size 0x0
+          LayoutTableCol {COL} at (0,0) size 0x0
+          LayoutTableCol {COL} at (0,0) size 0x0
+        LayoutTableSection {TBODY} at (1,1) size 306x50
+          LayoutTableRow {TR} at (0,2) size 306x22
+          LayoutTableRow {TR} at (0,26) size 306x22
+      LayoutTable {TABLE} at (0,52) size 308x52 [border: (1px outset #808080)]
+        LayoutTableCol {COLGROUP} at (0,0) size 0x0
+          LayoutTableCol {COL} at (0,0) size 0x0
+          LayoutTableCol {COL} at (0,0) size 0x0
+        LayoutTableSection {TBODY} at (1,1) size 306x50
+          LayoutTableRow {TR} at (0,2) size 306x22
+          LayoutTableRow {TR} at (0,26) size 306x22
+      LayoutTable {TABLE} at (0,104) size 300x52 [border: (1px outset #808080)]
+        LayoutTableSection {TBODY} at (1,1) size 298x50
+          LayoutTableRow {TR} at (0,2) size 298x22
+          LayoutTableRow {TR} at (0,26) size 298x22
+      LayoutTable {TABLE} at (0,156) size 300x52 [border: (1px outset #808080)]
+        LayoutTableSection {TBODY} at (1,1) size 298x50
+          LayoutTableRow {TR} at (0,2) size 298x22
+          LayoutTableRow {TR} at (0,26) size 298x22
+      LayoutTable {TABLE} at (0,208) size 300x53 [border: (1px outset #808080)]
+        LayoutTableSection {TBODY} at (1,1) size 298x51
+          LayoutTableRow {TR} at (0,2) size 298x23
+          LayoutTableRow {TR} at (0,27) size 298x22
+      LayoutTable {TABLE} at (0,261) size 300x53 [border: (1px outset #808080)]
+        LayoutTableSection {TBODY} at (1,1) size 298x51
+          LayoutTableRow {TR} at (0,2) size 298x23
+          LayoutTableRow {TR} at (0,27) size 298x22
+      LayoutTable {TABLE} at (0,314) size 300x94 [border: (1px outset #808080)]
+        LayoutTableSection {TBODY} at (1,1) size 298x92
+          LayoutTableRow {TR} at (0,2) size 298x46
+          LayoutTableRow {TR} at (0,50) size 298x40
+      LayoutTable {TABLE} at (0,498) size 300x90 [border: (1px outset #808080)]
+        LayoutTableSection {TBODY} at (1,1) size 298x88
+          LayoutTableRow {TR} at (0,2) size 298x60
+          LayoutTableRow {TR} at (0,64) size 298x22
+layer at (11,11) size 200x22 clip at (12,12) size 198x20
+  LayoutTableCell {TD} at (2,2) size 200x22 [bgcolor=#0000FF] [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
+    LayoutText {#text} at (2,2) size 4x18
+      text run at (2,2) width 4: " "
+layer at (213,11) size 100x22 clip at (214,12) size 98x20
+  LayoutTableCell {TD} at (204,2) size 100x22 [bgcolor=#0000FF] [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1]
+    LayoutText {#text} at (2,2) size 4x18
+      text run at (2,2) width 4: " "
+layer at (11,35) size 200x22 clip at (12,36) size 198x20
+  LayoutTableCell {TD} at (2,26) size 200x22 [bgcolor=#0000FF] [border: (1px inset #808080)] [r=1 c=0 rs=1 cs=1]
+    LayoutText {#text} at (2,2) size 4x18
+      text run at (2,2) width 4: " "
+layer at (213,35) size 100x22 clip at (214,36) size 98x20
+  LayoutTableCell {TD} at (204,26) size 100x22 [bgcolor=#0000FF] [border: (1px inset #808080)] [r=1 c=1 rs=1 cs=1]
+    LayoutText {#text} at (2,2) size 4x18
+      text run at (2,2) width 4: " "
+layer at (11,63) size 200x22 clip at (12,64) size 198x20
+  LayoutTableCell {TD} at (2,2) size 200x22 [bgcolor=#0000FF] [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
+    LayoutText {#text} at (2,2) size 4x18
+      text run at (2,2) width 4: " "
+layer at (213,63) size 100x22 clip at (214,64) size 98x20
+  LayoutTableCell {TD} at (204,2) size 100x22 [bgcolor=#0000FF] [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1]
+    LayoutText {#text} at (2,2) size 4x18
+      text run at (2,2) width 4: " "
+layer at (11,87) size 200x22 clip at (12,88) size 198x20
+  LayoutTableCell {TD} at (2,26) size 200x22 [bgcolor=#0000FF] [border: (1px inset #808080)] [r=1 c=0 rs=1 cs=1]
+    LayoutText {#text} at (2,2) size 4x18
+      text run at (2,2) width 4: " "
+layer at (213,87) size 100x22 clip at (214,88) size 98x20
+  LayoutTableCell {TD} at (204,26) size 100x22 [bgcolor=#0000FF] [border: (1px inset #808080)] [r=1 c=1 rs=1 cs=1]
+    LayoutText {#text} at (2,2) size 4x18
+      text run at (2,2) width 4: " "
+layer at (11,115) size 233x22 clip at (12,116) size 231x20
+  LayoutTableCell {TD} at (2,2) size 233x22 [bgcolor=#0000FF] [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
+    LayoutText {#text} at (2,2) size 4x18
+      text run at (2,2) width 4: " "
+layer at (246,115) size 59x22 clip at (247,116) size 57x20
+  LayoutTableCell {TD} at (237,2) size 59x22 [bgcolor=#0000FF] [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1]
+    LayoutText {#text} at (2,2) size 4x18
+      text run at (2,2) width 4: " "
+layer at (11,139) size 233x22 clip at (12,140) size 231x20
+  LayoutTableCell {TD} at (2,26) size 233x22 [bgcolor=#0000FF] [border: (1px inset #808080)] [r=1 c=0 rs=1 cs=1]
+    LayoutText {#text} at (2,2) size 4x18
+      text run at (2,2) width 4: " "
+layer at (246,139) size 59x22 clip at (247,140) size 57x20
+  LayoutTableCell {TD} at (237,26) size 59x22 [bgcolor=#0000FF] [border: (1px inset #808080)] [r=1 c=1 rs=1 cs=1]
+    LayoutText {#text} at (2,2) size 4x18
+      text run at (2,2) width 4: " "
+layer at (11,167) size 154x22 clip at (12,168) size 152x20
+  LayoutTableCell {TD} at (2,2) size 154x22 [bgcolor=#0000FF] [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
+    LayoutText {#text} at (2,2) size 4x18
+      text run at (2,2) width 4: " "
+layer at (167,167) size 138x22 clip at (168,168) size 136x20
+  LayoutTableCell {TD} at (158,2) size 138x22 [bgcolor=#0000FF] [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1]
+    LayoutText {#text} at (2,2) size 4x18
+      text run at (2,2) width 4: " "
+layer at (11,191) size 154x22 clip at (12,192) size 152x20
+  LayoutTableCell {TD} at (2,26) size 154x22 [bgcolor=#0000FF] [border: (1px inset #808080)] [r=1 c=0 rs=1 cs=1]
+    LayoutText {#text} at (2,2) size 4x18
+      text run at (2,2) width 4: " "
+layer at (167,191) size 138x22 clip at (168,192) size 136x20
+  LayoutTableCell {TD} at (158,26) size 138x22 [bgcolor=#0000FF] [border: (1px inset #808080)] [r=1 c=1 rs=1 cs=1]
+    LayoutText {#text} at (2,2) size 4x18
+      text run at (2,2) width 4: " "
+layer at (11,219) size 154x23 clip at (12,220) size 152x21 scrollWidth 201
+  LayoutTableCell {TD} at (2,2) size 154x23 [bgcolor=#0000FF] [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
+    LayoutBlockFlow {FORM} at (2,2) size 150x19
+      LayoutButton {BUTTON} at (0,1) size 200x18 [bgcolor=#C0C0C0] [border: none (2px outset #C0C0C0) none (2px outset #C0C0C0)]
+        LayoutBlockFlow (anonymous) at (8,2) size 184x13
+          LayoutText {#text} at (75,0) size 34x13
+            text run at (75,0) width 34: "button"
+layer at (167,219) size 138x23 clip at (168,220) size 136x21
+  LayoutTableCell {TD} at (158,2) size 138x22 [bgcolor=#0000FF] [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1]
+    LayoutText {#text} at (2,2) size 4x18
+      text run at (2,2) width 4: " "
+layer at (11,244) size 154x22 clip at (12,245) size 152x20
+  LayoutTableCell {TD} at (2,27) size 154x22 [bgcolor=#0000FF] [border: (1px inset #808080)] [r=1 c=0 rs=1 cs=1]
+    LayoutText {#text} at (2,2) size 4x18
+      text run at (2,2) width 4: " "
+layer at (167,244) size 138x22 clip at (168,245) size 136x20
+  LayoutTableCell {TD} at (158,27) size 138x22 [bgcolor=#0000FF] [border: (1px inset #808080)] [r=1 c=1 rs=1 cs=1]
+    LayoutText {#text} at (2,2) size 4x18
+      text run at (2,2) width 4: " "
+layer at (11,272) size 280x23 clip at (12,273) size 278x21
+  LayoutTableCell {TD} at (2,2) size 280x23 [bgcolor=#0000FF] [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
+    LayoutBlockFlow {FORM} at (2,2) size 276x19
+      LayoutButton {BUTTON} at (0,1) size 200x18 [bgcolor=#C0C0C0] [border: none (2px outset #C0C0C0) none (2px outset #C0C0C0)]
+        LayoutBlockFlow (anonymous) at (8,2) size 184x13
+          LayoutText {#text} at (75,0) size 34x13
+            text run at (75,0) width 34: "button"
+layer at (293,272) size 12x23 clip at (294,273) size 10x21
+  LayoutTableCell {TD} at (284,2) size 12x22 [bgcolor=#0000FF] [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1]
+    LayoutText {#text} at (2,2) size 4x18
+      text run at (2,2) width 4: " "
+layer at (11,297) size 280x22 clip at (12,298) size 278x20
+  LayoutTableCell {TD} at (2,27) size 280x22 [bgcolor=#0000FF] [border: (1px inset #808080)] [r=1 c=0 rs=1 cs=1]
+    LayoutText {#text} at (2,2) size 4x18
+      text run at (2,2) width 4: " "
+layer at (293,297) size 12x22 clip at (294,298) size 10x20
+  LayoutTableCell {TD} at (284,27) size 12x22 [bgcolor=#0000FF] [border: (1px inset #808080)] [r=1 c=1 rs=1 cs=1]
+    LayoutText {#text} at (2,2) size 4x18
+      text run at (2,2) width 4: " "
+layer at (11,325) size 172x46 clip at (12,326) size 170x44 scrollWidth 216
+  LayoutTableCell {TD} at (2,2) size 172x46 [bgcolor=#0000FF] [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
+    LayoutBlockFlow {DIV} at (11,11) size 206x24 [border: (3px solid #000000)]
+      LayoutText {#text} at (3,3) size 21x18
+        text run at (3,3) width 21: "div"
+layer at (185,325) size 120x46 clip at (186,326) size 118x44
+  LayoutTableCell {TD} at (176,5) size 120x40 [bgcolor=#0000FF] [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1]
+    LayoutText {#text} at (11,11) size 4x18
+      text run at (11,11) width 4: " "
+layer at (11,373) size 172x40 clip at (12,374) size 170x38
+  LayoutTableCell {TD} at (2,50) size 172x40 [bgcolor=#0000FF] [border: (1px inset #808080)] [r=1 c=0 rs=1 cs=1]
+    LayoutText {#text} at (11,11) size 4x18
+      text run at (11,11) width 4: " "
+layer at (185,373) size 120x40 clip at (186,374) size 118x38
+  LayoutTableCell {TD} at (176,50) size 120x40 [bgcolor=#0000FF] [border: (1px inset #808080)] [r=1 c=1 rs=1 cs=1]
+    LayoutText {#text} at (11,11) size 4x18
+      text run at (11,11) width 4: " "
+layer at (8,416) size 300x90 clip at (9,417) size 298x88
+  LayoutTable {TABLE} at (0,408) size 300x90 [border: (1px outset #808080)]
+    LayoutTableSection {TBODY} at (1,1) size 298x88
+      LayoutTableRow {TR} at (0,2) size 298x60
+      LayoutTableRow {TR} at (0,64) size 298x22
+layer at (11,419) size 154x60 clip at (12,420) size 152x58 scrollWidth 207
+  LayoutTableCell {TD} at (2,2) size 154x60 [bgcolor=#0000FF] [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
+    LayoutBlockFlow {P} at (2,18) size 206x24 [border: (3px solid #000000)]
+      LayoutText {#text} at (3,3) size 28x18
+        text run at (3,3) width 28: "para"
+layer at (167,419) size 138x60 clip at (168,420) size 136x58
+  LayoutTableCell {TD} at (158,21) size 138x22 [bgcolor=#0000FF] [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1]
+    LayoutText {#text} at (2,2) size 4x18
+      text run at (2,2) width 4: " "
+layer at (11,481) size 154x22 clip at (12,482) size 152x20
+  LayoutTableCell {TD} at (2,64) size 154x22 [bgcolor=#0000FF] [border: (1px inset #808080)] [r=1 c=0 rs=1 cs=1]
+    LayoutText {#text} at (2,2) size 4x18
+      text run at (2,2) width 4: " "
+layer at (167,481) size 138x22 clip at (168,482) size 136x20
+  LayoutTableCell {TD} at (158,64) size 138x22 [bgcolor=#0000FF] [border: (1px inset #808080)] [r=1 c=1 rs=1 cs=1]
+    LayoutText {#text} at (2,2) size 4x18
+      text run at (2,2) width 4: " "
+layer at (11,509) size 254x60 clip at (12,510) size 252x58
+  LayoutTableCell {TD} at (2,2) size 254x60 [bgcolor=#0000FF] [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
+    LayoutBlockFlow {P} at (2,18) size 206x24 [border: (3px solid #000000)]
+      LayoutText {#text} at (3,3) size 28x18
+        text run at (3,3) width 28: "para"
+layer at (267,509) size 38x60 clip at (268,510) size 36x58
+  LayoutTableCell {TD} at (258,21) size 38x22 [bgcolor=#0000FF] [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1]
+    LayoutText {#text} at (2,2) size 4x18
+      text run at (2,2) width 4: " "
+layer at (11,571) size 254x22 clip at (12,572) size 252x20
+  LayoutTableCell {TD} at (2,64) size 254x22 [bgcolor=#0000FF] [border: (1px inset #808080)] [r=1 c=0 rs=1 cs=1]
+    LayoutText {#text} at (2,2) size 4x18
+      text run at (2,2) width 4: " "
+layer at (267,571) size 38x22 clip at (268,572) size 36x20
+  LayoutTableCell {TD} at (258,64) size 38x22 [bgcolor=#0000FF] [border: (1px inset #808080)] [r=1 c=1 rs=1 cs=1]
+    LayoutText {#text} at (2,2) size 4x18
+      text run at (2,2) width 4: " "
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug46368-1-expected.png b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug46368-1-expected.png
new file mode 100644
index 0000000..ce84b733
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug46368-1-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug46368-1-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug46368-1-expected.txt
new file mode 100644
index 0000000..41ab6b65a5
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug46368-1-expected.txt
@@ -0,0 +1,53 @@
+layer at (0,0) size 800x600
+  LayoutView at (0,0) size 800x600
+layer at (0,0) size 800x600
+  LayoutBlockFlow {HTML} at (0,0) size 800x600
+    LayoutBlockFlow {BODY} at (8,8) size 784x584
+      LayoutTable {TABLE} at (0,0) size 784x111 [bgcolor=#00FFFF] [border: (1px outset #808080)]
+        LayoutTableSection {TBODY} at (1,1) size 782x109
+          LayoutTableRow {TR} at (0,2) size 782x105
+            LayoutTableCell {TD} at (2,2) size 453x105 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
+              LayoutTable {TABLE} at (2,2) size 449x101 [bgcolor=#FF00FF] [border: (1px outset #808080)]
+                LayoutTableSection {TBODY} at (1,1) size 447x99
+                  LayoutTableRow {TR} at (0,2) size 447x95
+                    LayoutTableCell {TD} at (2,2) size 443x95 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
+                      LayoutText {#text} at (2,2) size 203x18
+                        text run at (2,2) width 203: "Mozilla To Be Dually-Licensed"
+                      LayoutBR {BR} at (204,16) size 1x0
+                      LayoutText {#text} at (2,35) size 208x18
+                        text run at (2,35) width 208: "Plans are underway to make the "
+                      LayoutInline {FONT} at (0,0) size 101x37 [color=#0000FF]
+                        LayoutText {#text} at (209,20) size 101x37
+                          text run at (209,20) width 101: "Mozilla"
+                      LayoutText {#text} at (309,35) size 404x58
+                        text run at (309,35) width 97: " code available"
+                        text run at (2,57) width 52: "under a "
+                        text run at (53,57) width 157: "dual MPL/GPL license. "
+                        text run at (209,57) width 181: "See the for more info. We're"
+                        text run at (2,75) width 326: "gathering contributor input now, in the newsgroup."
+                      LayoutBR {BR} at (327,89) size 1x0
+            LayoutTableCell {TD} at (457,25) size 323x58 [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1]
+              LayoutText {#text} at (2,2) size 319x54
+                text run at (2,2) width 273: "This status update contains information on"
+                text run at (2,20) width 319: "MailNews, XML/DOM, XPToolkit, Architecture,"
+                text run at (2,38) width 205: "Bidi, Necko/Imglib, and more..."
+      LayoutBlockFlow (anonymous) at (0,111) size 784x37
+        LayoutBR {BR} at (0,0) size 0x18
+        LayoutButton {INPUT} at (0,19) size 51.41x18 [bgcolor=#C0C0C0]
+          LayoutBlockFlow (anonymous) at (8,2) size 35.41x13
+            LayoutText {#text} at (0,0) size 36x13
+              text run at (0,0) width 36: "Reload"
+        LayoutText {#text} at (51,18) size 9x18
+          text run at (51,18) width 9: "  "
+        LayoutButton {INPUT} at (59.41,19) size 82.20x18 [bgcolor=#C0C0C0]
+          LayoutBlockFlow (anonymous) at (8,2) size 66.20x13
+            LayoutText {#text} at (0,0) size 67x13
+              text run at (0,0) width 67: "Change Font"
+        LayoutText {#text} at (141,18) size 9x18
+          text run at (141,18) width 9: "  "
+        LayoutTextControl {INPUT} at (149.61,18) size 131x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)]
+        LayoutText {#text} at (0,0) size 0x0
+layer at (161,140) size 125x13
+  LayoutBlockFlow {DIV} at (3,3) size 125x13
+    LayoutText {#text} at (0,0) size 7x13
+      text run at (0,0) width 7: "6"
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug46368-2-expected.png b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug46368-2-expected.png
new file mode 100644
index 0000000..cf44ad9
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug46368-2-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug46368-2-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug46368-2-expected.txt
new file mode 100644
index 0000000..6457d29
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug46368-2-expected.txt
@@ -0,0 +1,41 @@
+layer at (0,0) size 800x600
+  LayoutView at (0,0) size 800x600
+layer at (0,0) size 800x600
+  LayoutBlockFlow {HTML} at (0,0) size 800x600
+    LayoutBlockFlow {BODY} at (8,8) size 784x584
+      LayoutTable {TABLE} at (0,0) size 784x65 [bgcolor=#00FFFF] [border: (1px outset #808080)]
+        LayoutTableSection {TBODY} at (1,1) size 782x63
+          LayoutTableRow {TR} at (0,2) size 782x59
+            LayoutTableCell {TD} at (2,2) size 304x59 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
+              LayoutInline {FONT} at (0,0) size 100x37 [color=#0000FF]
+                LayoutText {#text} at (2,2) size 100x37
+                  text run at (2,2) width 100: "Mozilla"
+              LayoutText {#text} at (101,17) size 279x40
+                text run at (101,17) width 152: " code available under a "
+                text run at (253,17) width 28: "dual"
+                text run at (2,39) width 124: "MPL/GPL license. "
+                text run at (125,39) width 141: "See the for more info."
+              LayoutBR {BR} at (265,53) size 1x0
+            LayoutTableCell {TD} at (308,20) size 472x22 [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1]
+              LayoutText {#text} at (2,2) size 245x18
+                text run at (2,2) width 245: "foo bar foo bar foo bar foo bar foo bar"
+      LayoutBlockFlow (anonymous) at (0,65) size 784x37
+        LayoutBR {BR} at (0,0) size 0x18
+        LayoutButton {INPUT} at (0,19) size 51.41x18 [bgcolor=#C0C0C0]
+          LayoutBlockFlow (anonymous) at (8,2) size 35.41x13
+            LayoutText {#text} at (0,0) size 36x13
+              text run at (0,0) width 36: "Reload"
+        LayoutText {#text} at (51,18) size 9x18
+          text run at (51,18) width 9: "  "
+        LayoutButton {INPUT} at (59.41,19) size 82.20x18 [bgcolor=#C0C0C0]
+          LayoutBlockFlow (anonymous) at (8,2) size 66.20x13
+            LayoutText {#text} at (0,0) size 67x13
+              text run at (0,0) width 67: "Change Font"
+        LayoutText {#text} at (141,18) size 9x18
+          text run at (141,18) width 9: "  "
+        LayoutTextControl {INPUT} at (149.61,18) size 131x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)]
+        LayoutText {#text} at (0,0) size 0x0
+layer at (161,94) size 125x13
+  LayoutBlockFlow {DIV} at (3,3) size 125x13
+    LayoutText {#text} at (0,0) size 7x13
+      text run at (0,0) width 7: "6"
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug46480-1-expected.png b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug46480-1-expected.png
new file mode 100644
index 0000000..611822a
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug46480-1-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug46480-2-expected.png b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug46480-2-expected.png
new file mode 100644
index 0000000..27884584
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug46480-2-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug51037-expected.png b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug51037-expected.png
new file mode 100644
index 0000000..c7e38c02
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug51037-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug51037-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug51037-expected.txt
new file mode 100644
index 0000000..50a06f5a
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug51037-expected.txt
@@ -0,0 +1,40 @@
+layer at (0,0) size 800x600
+  LayoutView at (0,0) size 800x600
+layer at (0,0) size 800x600
+  LayoutBlockFlow {HTML} at (0,0) size 800x600
+    LayoutBlockFlow {BODY} at (8,8) size 784x576
+      LayoutBlockFlow (anonymous) at (0,0) size 784x18
+        LayoutText {#text} at (0,0) size 245x18
+          text run at (0,0) width 245: "The tables left position should be 250."
+      LayoutBlockFlow {P} at (0,34) size 784x19
+        LayoutText {#text} at (0,0) size 36x18
+          text run at (0,0) width 36: "Left: "
+        LayoutTextControl {INPUT} at (35.09,0) size 131x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)]
+      LayoutBlockFlow {P} at (0,69) size 784x19
+        LayoutText {#text} at (0,0) size 34x18
+          text run at (0,0) width 34: "Top: "
+        LayoutTextControl {INPUT} at (33.09,0) size 131x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)]
+      LayoutBlockFlow {P} at (0,104) size 784x18
+        LayoutButton {INPUT} at (0,0) size 43.94x18 [bgcolor=#C0C0C0]
+          LayoutBlockFlow (anonymous) at (8,2) size 27.94x13
+            LayoutText {#text} at (0,0) size 28x13
+              text run at (0,0) width 28: "Move"
+layer at (46,45) size 125x13
+  LayoutBlockFlow {DIV} at (3,3) size 125x13
+    LayoutText {#text} at (0,0) size 31x13
+      text run at (0,0) width 31: "120px"
+layer at (44,80) size 125x13
+  LayoutBlockFlow {DIV} at (3,3) size 125x13
+    LayoutText {#text} at (0,0) size 31x13
+      text run at (0,0) width 31: "120px"
+layer at (250,120) size 30x48
+  LayoutTable (positioned) {TABLE} at (250,120) size 30x48 [border: (1px outset #808080)]
+    LayoutTableSection {TBODY} at (1,1) size 28x46
+      LayoutTableRow {TR} at (0,2) size 28x20
+        LayoutTableCell {TD} at (2,2) size 24x20 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
+          LayoutText {#text} at (1,1) size 22x18
+            text run at (1,1) width 22: "foo"
+      LayoutTableRow {TR} at (0,24) size 28x20
+        LayoutTableCell {TD} at (2,24) size 24x20 [border: (1px inset #808080)] [r=1 c=0 rs=1 cs=1]
+          LayoutText {#text} at (1,1) size 21x18
+            text run at (1,1) width 21: "bar"
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug51727-expected.png b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug51727-expected.png
new file mode 100644
index 0000000..8924635
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug51727-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug51727-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug51727-expected.txt
new file mode 100644
index 0000000..a641299
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug51727-expected.txt
@@ -0,0 +1,22 @@
+layer at (0,0) size 800x600
+  LayoutView at (0,0) size 800x600
+layer at (0,0) size 800x80
+  LayoutBlockFlow {HTML} at (0,0) size 800x80
+    LayoutBlockFlow {BODY} at (8,8) size 784x64
+      LayoutBlockFlow {FORM} at (0,0) size 784x38
+        LayoutButton {INPUT} at (0,1) size 150.98x18 [bgcolor=#C0C0C0]
+          LayoutBlockFlow (anonymous) at (8,2) size 134.98x13
+            LayoutText {#text} at (0,0) size 135x13
+              text run at (0,0) width 135: "(1) Fill cell with long string"
+        LayoutBR {BR} at (150,0) size 1x18
+        LayoutButton {INPUT} at (0,20) size 157.39x18 [bgcolor=#C0C0C0]
+          LayoutBlockFlow (anonymous) at (8,2) size 141.39x13
+            LayoutText {#text} at (0,0) size 142x13
+              text run at (0,0) width 142: "(2) Fill cell with short string"
+        LayoutBR {BR} at (157,19) size 1x18
+      LayoutTable {TABLE} at (0,38) size 83x26
+        LayoutTableSection {TBODY} at (0,0) size 83x26
+          LayoutTableRow {TR} at (0,2) size 83x22
+            LayoutTableCell {TD} at (2,2) size 79x22 [border: (1px solid #000000)] [r=0 c=0 rs=1 cs=1]
+              LayoutText {#text} at (2,2) size 15x18
+                text run at (2,2) width 15: "aa"
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug52505-expected.png b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug52505-expected.png
new file mode 100644
index 0000000..7e5b6606
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug52505-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug52505-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug52505-expected.txt
new file mode 100644
index 0000000..c1d148d
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug52505-expected.txt
@@ -0,0 +1,30 @@
+layer at (0,0) size 800x600
+  LayoutView at (0,0) size 800x600
+layer at (0,0) size 800x106
+  LayoutBlockFlow {HTML} at (0,0) size 800x106
+    LayoutBlockFlow {BODY} at (8,8) size 784x90
+      LayoutBlockFlow {FORM} at (0,0) size 784x36
+        LayoutButton {INPUT} at (0,0) size 250.20x18 [bgcolor=#C0C0C0]
+          LayoutBlockFlow (anonymous) at (8,2) size 234.20x13
+            LayoutText {#text} at (0,0) size 235x13
+              text run at (0,0) width 235: "[Step 1] Set cell width to 60px (nothing seen)"
+        LayoutButton {INPUT} at (0,18) size 254.75x18 [bgcolor=#C0C0C0]
+          LayoutBlockFlow (anonymous) at (8,2) size 238.75x13
+            LayoutText {#text} at (0,0) size 239x13
+              text run at (0,0) width 239: "[Step 2] Set cell width to 20px (garbage seen)"
+      LayoutTable {TABLE} at (0,36) size 34x54
+        LayoutTableSection {TBODY} at (0,0) size 34x54
+          LayoutTableRow {TR} at (0,2) size 34x24
+            LayoutTableCell {TD} at (2,2) size 14x24 [border: (2px solid #000000)] [r=0 c=0 rs=1 cs=1]
+              LayoutText {#text} at (3,3) size 8x18
+                text run at (3,3) width 8: "1"
+            LayoutTableCell {TD} at (18,2) size 14x24 [border: (2px solid #000000)] [r=0 c=1 rs=1 cs=1]
+              LayoutText {#text} at (3,3) size 8x18
+                text run at (3,3) width 8: "2"
+          LayoutTableRow {TR} at (0,28) size 34x24
+            LayoutTableCell {TD} at (2,28) size 14x24 [border: (2px solid #000000)] [r=1 c=0 rs=1 cs=1]
+              LayoutText {#text} at (3,3) size 8x18
+                text run at (3,3) width 8: "2"
+            LayoutTableCell {TD} at (18,28) size 14x24 [border: (2px solid #000000)] [r=1 c=1 rs=1 cs=1]
+              LayoutText {#text} at (3,3) size 8x18
+                text run at (3,3) width 8: "2"
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug52506-expected.png b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug52506-expected.png
new file mode 100644
index 0000000..43c0b03
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug52506-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug52506-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug52506-expected.txt
new file mode 100644
index 0000000..08cdda66
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug52506-expected.txt
@@ -0,0 +1,30 @@
+layer at (0,0) size 800x600
+  LayoutView at (0,0) size 800x600
+layer at (0,0) size 800x114
+  LayoutBlockFlow {HTML} at (0,0) size 800x114
+    LayoutBlockFlow {BODY} at (8,8) size 784x98
+      LayoutBlockFlow {FORM} at (0,0) size 784x36
+        LayoutButton {INPUT} at (0,0) size 176.41x18 [bgcolor=#C0C0C0]
+          LayoutBlockFlow (anonymous) at (8,2) size 160.41x13
+            LayoutText {#text} at (0,0) size 161x13
+              text run at (0,0) width 161: "[Step 1] Set cell height to 60px"
+        LayoutButton {INPUT} at (0,18) size 177.55x18 [bgcolor=#C0C0C0]
+          LayoutBlockFlow (anonymous) at (8,2) size 161.55x13
+            LayoutText {#text} at (0,0) size 162x13
+              text run at (0,0) width 162: "[Step 2] Set cell height to 20px"
+      LayoutTable {TABLE} at (0,36) size 42x62
+        LayoutTableSection {TBODY} at (0,0) size 42x62
+          LayoutTableRow {TR} at (0,2) size 42x28
+            LayoutTableCell {TD} at (2,2) size 18x28 [border: (4px solid #000000)] [r=0 c=0 rs=1 cs=1]
+              LayoutText {#text} at (5,5) size 8x18
+                text run at (5,5) width 8: "1"
+            LayoutTableCell {TD} at (22,2) size 18x28 [border: (4px solid #000000)] [r=0 c=1 rs=1 cs=1]
+              LayoutText {#text} at (5,5) size 8x18
+                text run at (5,5) width 8: "2"
+          LayoutTableRow {TR} at (0,32) size 42x28
+            LayoutTableCell {TD} at (2,32) size 18x28 [border: (4px solid #000000)] [r=1 c=0 rs=1 cs=1]
+              LayoutText {#text} at (5,5) size 8x18
+                text run at (5,5) width 8: "2"
+            LayoutTableCell {TD} at (22,32) size 18x28 [border: (4px solid #000000)] [r=1 c=1 rs=1 cs=1]
+              LayoutText {#text} at (5,5) size 8x18
+                text run at (5,5) width 8: "2"
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug59354-expected.png b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug59354-expected.png
new file mode 100644
index 0000000..a5e8a71
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug59354-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug59354-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug59354-expected.txt
new file mode 100644
index 0000000..2cf3d99
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug59354-expected.txt
@@ -0,0 +1,60 @@
+layer at (0,0) size 800x600
+  LayoutView at (0,0) size 800x600
+layer at (0,0) size 800x600
+  LayoutBlockFlow {HTML} at (0,0) size 800x600
+    LayoutBlockFlow {BODY} at (8,8) size 784x584
+      LayoutTable {TABLE} at (0,0) size 470x142 [border: (1px outset #808080)]
+        LayoutTableSection {TBODY} at (1,1) size 468x140
+          LayoutTableRow {TR} at (0,0) size 468x140
+            LayoutTableCell {TD} at (0,0) size 468x140 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
+              LayoutTable {TABLE} at (1,1) size 466x138 [border: (1px outset #808080)]
+                LayoutTableSection {TBODY} at (1,1) size 464x136
+                  LayoutTableRow {TR} at (0,1) size 464x28
+                    LayoutTableCell {TD} at (1,1) size 140x28 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
+                      LayoutText {#text} at (5,5) size 130x18
+                        text run at (5,5) width 130: "General Preferences"
+                    LayoutTableCell {TD} at (142,1) size 147x28 [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1]
+                      LayoutInline {A} at (0,0) size 137x18 [color=#0000EE]
+                        LayoutText {#text} at (5,5) size 137x18
+                          text run at (5,5) width 137: "Groups / Permissions"
+                    LayoutTableCell {TD} at (290,1) size 72x28 [border: (1px inset #808080)] [r=0 c=2 rs=1 cs=1]
+                      LayoutInline {A} at (0,0) size 62x18 [color=#0000EE]
+                        LayoutText {#text} at (5,5) size 62x18
+                          text run at (5,5) width 62: "Password"
+                    LayoutTableCell {TD} at (363,1) size 49x28 [border: (1px inset #808080)] [r=0 c=3 rs=1 cs=1]
+                      LayoutInline {A} at (0,0) size 39x18 [color=#0000EE]
+                        LayoutText {#text} at (5,5) size 39x18
+                          text run at (5,5) width 39: "Email"
+                    LayoutTableCell {TD} at (413,1) size 50x28 [border: (1px inset #808080)] [r=0 c=4 rs=1 cs=1]
+                      LayoutText {#text} at (5,5) size 40x18
+                        text run at (5,5) width 40: "Views"
+                  LayoutTableRow {TR} at (0,30) size 464x105
+                    LayoutTableCell {TD} at (1,30) size 462x105 [border: (1px inset #808080)] [r=1 c=0 rs=1 cs=5]
+                      LayoutBlockFlow (anonymous) at (5,5) size 452x18
+                        LayoutBR {BR} at (226,0) size 0x18
+                      LayoutTable {TABLE} at (93,23) size 276x77
+                        LayoutTableSection {TBODY} at (0,0) size 276x77
+                          LayoutTableRow {TR} at (0,2) size 276x73
+                            LayoutTableCell {TD} at (2,2) size 272x73 [r=0 c=0 rs=1 cs=1]
+                              LayoutBlockFlow {FORM} at (1,1) size 270x55
+                                LayoutTable {TABLE} at (0,0) size 270x55 [border: (1px outset #808080)]
+                                  LayoutTableSection {TBODY} at (1,1) size 268x53
+                                    LayoutTableRow {TR} at (0,0) size 268x53
+                                      LayoutTableCell {TD} at (0,0) size 268x53 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
+                                        LayoutBlockFlow (anonymous) at (1,1) size 266x18
+                                          LayoutText {#text} at (78,0) size 110x18
+                                            text run at (78,0) width 110: "User Preferences"
+                                        LayoutTable {TABLE} at (1,19) size 266x33 [border: (1px outset #808080)]
+                                          LayoutTableSection {TBODY} at (1,1) size 264x31
+                                            LayoutTableRow {TR} at (0,1) size 264x29
+                                              LayoutTableCell {TH} at (1,1) size 120x28 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
+                                                LayoutInline {NOBR} at (0,0) size 110x18
+                                                  LayoutText {#text} at (5,5) size 110x18
+                                                    text run at (5,5) width 110: "Email Address :"
+                                              LayoutTableCell {TD} at (122,1) size 141x29 [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1]
+                                                LayoutTextControl {INPUT} at (5,5) size 131x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)]
+                                                LayoutText {#text} at (0,0) size 0x0
+layer at (241,97) size 125x13 scrollWidth 189
+  LayoutBlockFlow {DIV} at (3,3) size 125x13
+    LayoutText {#text} at (0,0) size 188x13
+      text run at (0,0) width 188: "simon.king@pipinghotnetworks.com"
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug60749-expected.png b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug60749-expected.png
new file mode 100644
index 0000000..0c046792
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug60749-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug60749-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug60749-expected.txt
new file mode 100644
index 0000000..7fd1795
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug60749-expected.txt
@@ -0,0 +1,26 @@
+layer at (0,0) size 800x600
+  LayoutView at (0,0) size 800x600
+layer at (0,0) size 800x600
+  LayoutBlockFlow {HTML} at (0,0) size 800x600
+    LayoutBlockFlow {BODY} at (8,8) size 784x576
+      LayoutTable {TABLE} at (0,0) size 379x28 [border: (3px outset #808080)]
+        LayoutTableSection {TBODY} at (3,3) size 373x22
+          LayoutTableRow {TR} at (0,0) size 373x22
+            LayoutTableCell {TD} at (0,0) size 69x22 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
+              LayoutText {#text} at (2,2) size 65x18
+                text run at (2,2) width 65: "fieldLabel"
+            LayoutTableCell {TD} at (69,0) size 304x22 [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1]
+              LayoutText {#text} at (2,2) size 107x18
+                text run at (2,2) width 107: "   InspectionText"
+      LayoutBlockFlow {FORM} at (0,28) size 784x19
+        LayoutButton {INPUT} at (0,1) size 85.78x18 [bgcolor=#C0C0C0]
+          LayoutBlockFlow (anonymous) at (8,2) size 69.78x13
+            LayoutText {#text} at (0,0) size 70x13
+              text run at (0,0) width 70: "change width"
+        LayoutText {#text} at (85,0) size 5x18
+          text run at (85,0) width 5: " "
+        LayoutButton {INPUT} at (89.78,1) size 174.59x18 [bgcolor=#C0C0C0]
+          LayoutBlockFlow (anonymous) at (8,2) size 158.59x13
+            LayoutText {#text} at (0,0) size 159x13
+              text run at (0,0) width 159: "change width with table reflow"
+        LayoutText {#text} at (0,0) size 0x0
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug68912-expected.png b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug68912-expected.png
new file mode 100644
index 0000000..def1f45
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug68912-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug68912-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug68912-expected.txt
new file mode 100644
index 0000000..953c9062
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug68912-expected.txt
@@ -0,0 +1,16 @@
+layer at (0,0) size 800x600
+  LayoutView at (0,0) size 800x600
+layer at (0,0) size 800x600
+  LayoutBlockFlow {HTML} at (0,0) size 800x600
+    LayoutBlockFlow {BODY} at (8,8) size 784x576
+      LayoutBlockFlow {P} at (0,0) size 784x18
+        LayoutText {#text} at (0,0) size 480x18
+          text run at (0,0) width 480: "This test case creates a TR element then tries to assign to the cells property"
+      LayoutBlockFlow {P} at (0,34) size 784x19
+        LayoutText {#text} at (0,0) size 42x18
+          text run at (0,0) width 42: "Crash "
+        LayoutButton {BUTTON} at (41.33,1) size 88.69x18 [bgcolor=#C0C0C0] [border: none (2px outset #C0C0C0) none (2px outset #C0C0C0)]
+          LayoutBlockFlow (anonymous) at (8,2) size 72.69x13
+            LayoutText {#text} at (0,0) size 73x13
+              text run at (0,0) width 73: "TR.cells = null"
+        LayoutText {#text} at (0,0) size 0x0
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug7342-expected.png b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug7342-expected.png
new file mode 100644
index 0000000..1468154f
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug7342-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug7342-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug7342-expected.txt
new file mode 100644
index 0000000..1ad87e4
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug7342-expected.txt
@@ -0,0 +1,80 @@
+layer at (0,0) size 800x600
+  LayoutView at (0,0) size 800x600
+layer at (0,0) size 800x600
+  LayoutBlockFlow {HTML} at (0,0) size 800x600
+    LayoutBlockFlow {BODY} at (8,8) size 784x576 [bgcolor=#FFFFFF]
+      LayoutBlockFlow {P} at (0,0) size 784x36
+        LayoutText {#text} at (0,0) size 775x36
+          text run at (0,0) width 441: "Click on a link on the left hand column. Also note the overlap of the "
+          text run at (440,0) width 335: "text box with the submit button. (And, removing the"
+          text run at (0,18) width 156: "font tag that is wrapped "
+          text run at (155,18) width 239: "around the text box clears up layout)."
+      LayoutBlockFlow (anonymous) at (0,52) size 784x18
+        LayoutBR {BR} at (0,0) size 0x18
+      LayoutBlockFlow {FORM} at (0,70) size 784x136
+        LayoutBlockFlow {CENTER} at (0,0) size 784x136
+          LayoutTable {TABLE} at (92,0) size 600x136 [bgcolor=#EEEEEE] [border: (1px outset #808080)]
+            LayoutTableSection {TBODY} at (1,1) size 598x134
+              LayoutTableRow {TR} at (0,3) size 598x128
+                LayoutTableCell {TD} at (3,3) size 124x128 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
+                  LayoutTable {TABLE} at (4,4) size 116x120 [bgcolor=#FFFFFF] [border: (1px outset #808080)]
+                    LayoutTableSection {TBODY} at (1,1) size 114x118
+                      LayoutTableRow {TR} at (0,2) size 114x27
+                        LayoutTableCell {TD} at (2,3) size 110x24 [bgcolor=#CCCCCC] [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
+                          LayoutInline {A} at (0,0) size 62x18 [color=#660099]
+                            LayoutInline {B} at (0,0) size 62x18
+                              LayoutText {#text} at (3,3) size 62x18
+                                text run at (3,3) width 62: "Netscape"
+                          LayoutText {#text} at (0,0) size 0x0
+                      LayoutTableRow {TR} at (0,31) size 114x27
+                        LayoutTableCell {TD} at (2,32) size 110x24 [bgcolor=#FFFFFF] [border: (1px inset #808080)] [r=1 c=0 rs=1 cs=1]
+                          LayoutInline {A} at (0,0) size 58x18 [color=#660099]
+                            LayoutInline {B} at (0,0) size 58x18
+                              LayoutText {#text} at (3,3) size 58x18
+                                text run at (3,3) width 58: "Infoseek"
+                          LayoutText {#text} at (0,0) size 0x0
+                      LayoutTableRow {TR} at (0,60) size 114x27
+                        LayoutTableCell {TD} at (2,61) size 110x24 [bgcolor=#FFFFFF] [border: (1px inset #808080)] [r=2 c=0 rs=1 cs=1]
+                          LayoutInline {A} at (0,0) size 79x18 [color=#660099]
+                            LayoutInline {B} at (0,0) size 79x18
+                              LayoutText {#text} at (3,3) size 79x18
+                                text run at (3,3) width 79: "LookSmart"
+                          LayoutText {#text} at (0,0) size 0x0
+                      LayoutTableRow {TR} at (0,89) size 114x27
+                        LayoutTableCell {TD} at (2,90) size 110x24 [bgcolor=#FFFFFF] [border: (1px inset #808080)] [r=3 c=0 rs=1 cs=1]
+                          LayoutInline {A} at (0,0) size 66x18 [color=#660099]
+                            LayoutInline {B} at (0,0) size 66x18
+                              LayoutText {#text} at (3,3) size 66x18
+                                text run at (3,3) width 66: "Directory"
+                          LayoutText {#text} at (0,0) size 0x0
+                LayoutTableCell {TD} at (130,27) size 465x79 [bgcolor=#CCCCCC] [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1]
+                  LayoutTable {TABLE} at (4,4) size 457x71 [border: (1px outset #808080)]
+                    LayoutTableSection {TBODY} at (1,1) size 455x69
+                      LayoutTableRow {TR} at (0,4) size 455x29
+                        LayoutTableCell {TD} at (4,4) size 341x29 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=3]
+                          LayoutInline {FONT} at (0,0) size 257x15
+                            LayoutText {#text} at (0,0) size 0x0
+                            LayoutTextControl {INPUT} at (5,5) size 257x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)]
+                            LayoutText {#text} at (0,0) size 0x0
+                          LayoutText {#text} at (0,0) size 0x0
+                        LayoutTableCell {TD} at (349,4) size 102x28 [border: (1px inset #808080)] [r=0 c=3 rs=1 cs=1]
+                          LayoutButton {INPUT} at (5,5) size 52.08x18 [bgcolor=#C0C0C0]
+                            LayoutBlockFlow (anonymous) at (8,2) size 36.08x13
+                              LayoutText {#text} at (0,0) size 37x13
+                                text run at (0,0) width 37: "Search"
+                          LayoutText {#text} at (0,0) size 0x0
+                      LayoutTableRow {TR} at (0,37) size 455x28
+                        LayoutTableCell {TD} at (4,37) size 110x28 [border: (1px inset #808080)] [r=1 c=0 rs=1 cs=1]
+                          LayoutText {#text} at (5,5) size 27x18
+                            text run at (5,5) width 27: "asdf"
+                        LayoutTableCell {TD} at (118,37) size 111x28 [border: (1px inset #808080)] [r=1 c=1 rs=1 cs=1]
+                          LayoutText {#text} at (5,5) size 27x18
+                            text run at (5,5) width 27: "asdf"
+                        LayoutTableCell {TD} at (233,37) size 112x28 [border: (1px inset #808080)] [r=1 c=2 rs=1 cs=1]
+                          LayoutText {#text} at (5,5) size 27x18
+                            text run at (5,5) width 27: "asdf"
+                        LayoutTableCell {TD} at (349,37) size 102x28 [border: (1px inset #808080)] [r=1 c=3 rs=1 cs=1]
+                          LayoutText {#text} at (5,5) size 27x18
+                            text run at (5,5) width 27: "asdf"
+layer at (248,123) size 251x13
+  LayoutBlockFlow {DIV} at (3,3) size 251x13
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug8032-1-expected.png b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug8032-1-expected.png
new file mode 100644
index 0000000..3750390
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug8032-1-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug8858-expected.png b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug8858-expected.png
new file mode 100644
index 0000000..a59487b
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug8858-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug96334-expected.png b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug96334-expected.png
new file mode 100644
index 0000000..c64b5a37
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug96334-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug96334-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug96334-expected.txt
new file mode 100644
index 0000000..0c0ae7c
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/bugs/bug96334-expected.txt
@@ -0,0 +1,45 @@
+layer at (0,0) size 800x600 scrollWidth 984
+  LayoutView at (0,0) size 800x600
+layer at (0,0) size 800x600
+  LayoutBlockFlow {HTML} at (0,0) size 800x600
+    LayoutBlockFlow {BODY} at (8,8) size 784x584
+      LayoutTable {TABLE} at (0,0) size 976x139 [border: (2px solid #0000FF)]
+        LayoutTableSection {TBODY} at (2,2) size 972x135
+          LayoutTableRow {TR} at (0,2) size 972x131
+            LayoutTableCell {TD} at (2,2) size 210x131 [border: (1px solid #C0C0C0)] [r=0 c=0 rs=1 cs=1]
+              LayoutTable {TABLE} at (2,2) size 206x127 [border: (2px solid #008000)]
+                LayoutTableSection {TBODY} at (2,2) size 202x123
+                  LayoutTableRow {TR} at (0,2) size 202x83
+                    LayoutTableCell {TD} at (2,2) size 198x83 [border: (1px solid #C0C0C0)] [r=0 c=0 rs=1 cs=1]
+                      LayoutTable {TABLE} at (2,2) size 143x31 [border: (2px solid #FF0000)]
+                        LayoutTableSection {TBODY} at (2,2) size 139x27
+                          LayoutTableRow {TR} at (0,2) size 139x23
+                            LayoutTableCell {TD} at (2,2) size 135x23 [border: (1px solid #C0C0C0)] [r=0 c=0 rs=1 cs=1]
+                              LayoutTextControl {INPUT} at (2,2) size 131x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)]
+                              LayoutText {#text} at (0,0) size 0x0
+                      LayoutTable {TABLE} at (2,33) size 194x48 [border: (2px solid #FF0000)]
+                        LayoutTableSection {TBODY} at (2,2) size 190x44
+                          LayoutTableRow {TR} at (0,2) size 190x40
+                            LayoutTableCell {TD} at (2,2) size 186x40 [border: (1px solid #C0C0C0)] [r=0 c=0 rs=1 cs=1]
+                              LayoutText {#text} at (2,2) size 171x36
+                                text run at (2,2) width 171: "THIS TABLE NEEDS TO"
+                                text run at (2,20) width 67: "BE HERE"
+                  LayoutTableRow {TR} at (0,87) size 202x34
+                    LayoutTableCell {TD} at (2,87) size 198x34 [border: (1px solid #C0C0C0)] [r=1 c=0 rs=1 cs=1]
+                      LayoutTable {TABLE} at (2,2) size 194x30 [border: (2px solid #FF0000)]
+                        LayoutTableSection {TBODY} at (2,2) size 190x26
+                          LayoutTableRow {TR} at (0,2) size 190x22
+                            LayoutTableCell {TD} at (2,2) size 186x22 [border: (1px solid #C0C0C0)] [r=0 c=0 rs=1 cs=1]
+                              LayoutMenuList {SELECT} at (2,2) size 182x18 [bgcolor=#F8F8F8]
+                                LayoutBlockFlow (anonymous) at (0,0) size 182x18
+                                  LayoutText (anonymous) at (8,2) size 151x13
+                                    text run at (8,2) width 151: "USE THIS JAVASCRIPT HERE"
+                              LayoutText {#text} at (0,0) size 0x0
+            LayoutTableCell {TD} at (214,2) size 756x40 [border: (1px solid #C0C0C0)] [r=0 c=1 rs=1 cs=1]
+              LayoutText {#text} at (2,2) size 752x36
+                text run at (2,2) width 752: "KEEPoTHEoTEXToHEREoASoLONGoASoPOSSIBLEooKEEPoTHEoTEXToHEREoASoLONGoASoPOSSIBLE"
+                text run at (2,20) width 602: "THIS SIMULATES THE PROBLEM ON THE WWW.MAPBLAST.COM/ \"CREATE MAP\""
+layer at (29,29) size 125x13 scrollWidth 132
+  LayoutBlockFlow {DIV} at (3,3) size 125x13
+    LayoutText {#text} at (0,0) size 131x13
+      text run at (0,0) width 131: "THIS NEEDS THIS VALUE"
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/collapsing_borders/bug41262-4-expected.png b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/collapsing_borders/bug41262-4-expected.png
new file mode 100644
index 0000000..dda01e2
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/collapsing_borders/bug41262-4-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/collapsing_borders/bug41262-4-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/collapsing_borders/bug41262-4-expected.txt
new file mode 100644
index 0000000..09f5606d
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/collapsing_borders/bug41262-4-expected.txt
@@ -0,0 +1,41 @@
+layer at (0,0) size 800x600
+  LayoutView at (0,0) size 800x600
+layer at (0,0) size 800x600
+  LayoutBlockFlow {HTML} at (0,0) size 800x600
+    LayoutBlockFlow {BODY} at (8,8) size 784x576
+      LayoutBlockFlow {BLOCKQUOTE} at (40,0) size 704x115
+        LayoutBlockFlow {CENTER} at (0,0) size 704x115
+          LayoutTable {TABLE} at (297.50,0) size 109x80 [border: (2px none #808080)]
+            LayoutTableSection {TBODY} at (2,2) size 104x75
+              LayoutTableRow {TR} at (0,0) size 104x25
+                LayoutTableCell {TD} at (0,0) size 37x25 [border: (3px groove #0000FF)] [r=0 c=0 rs=1 cs=1]
+                  LayoutText {#text} at (4,4) size 29x18
+                    text run at (4,4) width 29: "EST"
+                LayoutTableCell {TD} at (37,0) size 67x25 [border: (3px groove #0000FF)] [r=0 c=1 rs=1 cs=1]
+                  LayoutText {#text} at (4,4) size 60x18
+                    text run at (4,4) width 60: "9:00 a.m."
+              LayoutTableRow {TR} at (0,25) size 104x25
+                LayoutTableCell {TD} at (0,25) size 37x25 [border: (3px groove #0000FF)] [r=1 c=0 rs=1 cs=1]
+                  LayoutText {#text} at (4,4) size 30x18
+                    text run at (4,4) width 30: "CST"
+                LayoutTableCell {TD} at (37,25) size 67x25 [border: (3px groove #0000FF)] [r=1 c=1 rs=1 cs=1]
+                  LayoutText {#text} at (4,4) size 60x18
+                    text run at (4,4) width 60: "8:00 a.m."
+              LayoutTableRow {TR} at (0,50) size 104x25
+                LayoutTableCell {TD} at (0,50) size 37x25 [border: (3px groove #0000FF)] [r=2 c=0 rs=1 cs=1]
+                  LayoutText {#text} at (4,4) size 28x18
+                    text run at (4,4) width 28: "PST"
+                LayoutTableCell {TD} at (37,50) size 67x25 [border: (3px groove #0000FF)] [r=2 c=1 rs=1 cs=1]
+                  LayoutText {#text} at (4,4) size 60x18
+                    text run at (4,4) width 60: "6:00 a.m."
+          LayoutBlockFlow {P} at (0,96) size 704x19
+            LayoutButton {INPUT} at (289.84,1) size 61.28x18 [bgcolor=#C0C0C0]
+              LayoutBlockFlow (anonymous) at (8,2) size 45.28x13
+                LayoutText {#text} at (0,0) size 46x13
+                  text run at (0,0) width 46: "separate"
+            LayoutText {#text} at (351,0) size 5x18
+              text run at (351,0) width 5: " "
+            LayoutButton {INPUT} at (355.13,1) size 59.02x18 [bgcolor=#C0C0C0]
+              LayoutBlockFlow (anonymous) at (8,2) size 43.02x13
+                LayoutText {#text} at (0,0) size 43x13
+                  text run at (0,0) width 43: "collapse"
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/core/bloomberg-expected.png b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/core/bloomberg-expected.png
new file mode 100644
index 0000000..d30f0a4
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/core/bloomberg-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/core/margins-expected.png b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/core/margins-expected.png
new file mode 100644
index 0000000..b23a51b2
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/core/margins-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/core/margins-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/core/margins-expected.txt
new file mode 100644
index 0000000..17fdcb0
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/core/margins-expected.txt
@@ -0,0 +1,105 @@
+layer at (0,0) size 800x600
+  LayoutView at (0,0) size 800x600
+layer at (0,0) size 800x600
+  LayoutBlockFlow {HTML} at (0,0) size 800x600
+    LayoutBlockFlow {BODY} at (8,8) size 784x584
+      LayoutBlockFlow (anonymous) at (0,0) size 784x18
+        LayoutText {#text} at (0,0) size 191x18
+          text run at (0,0) width 191: "outer width=400 align=center"
+      LayoutTable {TABLE} at (192,18) size 400x44 [border: (1px outset #808080)]
+        LayoutTableSection {TBODY} at (1,1) size 398x42
+          LayoutTableRow {TR} at (0,2) size 398x38
+            LayoutTableCell {TD} at (2,2) size 394x38 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
+              LayoutBlockFlow {FORM} at (2,2) size 390x18
+                LayoutMenuList {SELECT} at (0,0) size 54x18 [bgcolor=#F8F8F8]
+                  LayoutBlockFlow (anonymous) at (0,0) size 54x18
+                    LayoutText (anonymous) at (8,2) size 23x13
+                      text run at (8,2) width 23: "Test"
+                LayoutText {#text} at (0,0) size 0x0
+      LayoutBlockFlow (anonymous) at (0,62) size 784x18
+        LayoutText {#text} at (0,0) size 301x18
+          text run at (0,0) width 301: "outer width=400 inner width=200 align=center"
+      LayoutTable {TABLE} at (0,80) size 400x40 [border: (2px outset #808080)]
+        LayoutTableSection {TBODY} at (2,2) size 396x36
+          LayoutTableRow {TR} at (0,2) size 396x32
+            LayoutTableCell {TD} at (2,2) size 392x32 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
+              LayoutTable {TABLE} at (96,2) size 200x28 [border: (1px outset #808080)]
+                LayoutTableSection {TBODY} at (1,1) size 198x26
+                  LayoutTableRow {TR} at (0,2) size 198x22
+                    LayoutTableCell {TD} at (2,2) size 194x22 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
+                      LayoutText {#text} at (2,2) size 22x18
+                        text run at (2,2) width 22: "foo"
+      LayoutBlockFlow (anonymous) at (0,120) size 784x18
+        LayoutText {#text} at (0,0) size 186x18
+          text run at (0,0) width 186: "outer auto inner align=center"
+      LayoutTable {TABLE} at (0,138) size 44x40 [border: (2px outset #808080)]
+        LayoutTableSection {TBODY} at (2,2) size 40x36
+          LayoutTableRow {TR} at (0,2) size 40x32
+            LayoutTableCell {TD} at (2,2) size 36x32 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
+              LayoutTable {TABLE} at (2,2) size 32x28 [border: (1px outset #808080)]
+                LayoutTableSection {TBODY} at (1,1) size 30x26
+                  LayoutTableRow {TR} at (0,2) size 30x22
+                    LayoutTableCell {TD} at (2,2) size 26x22 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
+                      LayoutText {#text} at (2,2) size 22x18
+                        text run at (2,2) width 22: "foo"
+      LayoutBlockFlow (anonymous) at (0,178) size 784x18
+        LayoutText {#text} at (0,0) size 220x18
+          text run at (0,0) width 220: "outer width=50 inner align=center"
+      LayoutTable {TABLE} at (0,196) size 44x40 [border: (2px outset #808080)]
+        LayoutTableSection {TBODY} at (2,2) size 40x36
+          LayoutTableRow {TR} at (0,2) size 40x32
+            LayoutTableCell {TD} at (2,2) size 36x32 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
+              LayoutTable {TABLE} at (2,2) size 32x28 [border: (1px outset #808080)]
+                LayoutTableSection {TBODY} at (1,1) size 30x26
+                  LayoutTableRow {TR} at (0,2) size 30x22
+                    LayoutTableCell {TD} at (2,2) size 26x22 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
+                      LayoutText {#text} at (2,2) size 22x18
+                        text run at (2,2) width 22: "foo"
+      LayoutBlockFlow (anonymous) at (0,236) size 784x18
+        LayoutText {#text} at (0,0) size 232x18
+          text run at (0,0) width 232: "outer width=50 inner margin-left:50"
+      LayoutTable {TABLE} at (0,254) size 94x40 [border: (2px outset #808080)]
+        LayoutTableSection {TBODY} at (2,2) size 90x36
+          LayoutTableRow {TR} at (0,2) size 90x32
+            LayoutTableCell {TD} at (2,2) size 86x32 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
+              LayoutTable {TABLE} at (52,2) size 32x28 [border: (1px outset #808080)]
+                LayoutTableSection {TBODY} at (1,1) size 30x26
+                  LayoutTableRow {TR} at (0,2) size 30x22
+                    LayoutTableCell {TD} at (2,2) size 26x22 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
+                      LayoutText {#text} at (2,2) size 22x18
+                        text run at (2,2) width 22: "foo"
+      LayoutBlockFlow (anonymous) at (0,294) size 784x18
+        LayoutText {#text} at (0,0) size 228x18
+          text run at (0,0) width 228: "outer width=400 inner align=center"
+      LayoutTable {TABLE} at (0,312) size 400x40 [border: (2px outset #808080)]
+        LayoutTableSection {TBODY} at (2,2) size 396x36
+          LayoutTableRow {TR} at (0,2) size 396x32
+            LayoutTableCell {TD} at (2,2) size 117x32 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
+              LayoutTable {TABLE} at (42.50,2) size 32x28 [border: (1px outset #808080)]
+                LayoutTableSection {TBODY} at (1,1) size 30x26
+                  LayoutTableRow {TR} at (0,2) size 30x22
+                    LayoutTableCell {TD} at (2,2) size 26x22 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
+                      LayoutText {#text} at (2,2) size 22x18
+                        text run at (2,2) width 22: "foo"
+            LayoutTableCell {TD} at (121,7) size 273x22 [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1]
+              LayoutText {#text} at (2,2) size 80x18
+                text run at (2,2) width 80: "x x x x x x x"
+      LayoutBlockFlow (anonymous) at (0,352) size 784x18
+        LayoutText {#text} at (0,0) size 228x18
+          text run at (0,0) width 228: "outer width=400 inner align=center"
+      LayoutTable {TABLE} at (0,370) size 400x40 [border: (2px outset #808080)]
+        LayoutTableSection {TBODY} at (2,2) size 396x36
+          LayoutTableRow {TR} at (0,2) size 396x32
+            LayoutTableCell {TD} at (2,2) size 168x32 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
+              LayoutTable {TABLE} at (54,2) size 60x28 [border: (1px outset #808080)]
+                LayoutTableSection {TBODY} at (1,1) size 58x26
+                  LayoutTableRow {TR} at (0,2) size 58x22
+                    LayoutTableCell {TD} at (2,2) size 54x22 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
+                      LayoutText {#text} at (2,2) size 16x18
+                        text run at (2,2) width 16: "50"
+            LayoutTableCell {TD} at (172,7) size 222x22 [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1]
+              LayoutText {#text} at (2,2) size 80x18
+                text run at (2,2) width 80: "x x x x x x x"
+      LayoutBlockFlow (anonymous) at (0,410) size 784x18
+        LayoutText {#text} at (0,0) size 20x18
+          text run at (0,0) width 20: "-->"
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/dom/tableDom-expected.png b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/dom/tableDom-expected.png
new file mode 100644
index 0000000..58e6a13
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/dom/tableDom-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/dom/tableDom-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/dom/tableDom-expected.txt
new file mode 100644
index 0000000..7da4bf3
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/dom/tableDom-expected.txt
@@ -0,0 +1,69 @@
+layer at (0,0) size 800x600
+  LayoutView at (0,0) size 800x600
+layer at (0,0) size 800x600
+  LayoutBlockFlow {HTML} at (0,0) size 800x600
+    LayoutBlockFlow {BODY} at (8,8) size 784x584
+      LayoutBlockFlow {FORM} at (0,0) size 784x19
+        LayoutMenuList {SELECT} at (0,1) size 92x18 [bgcolor=#F8F8F8]
+          LayoutBlockFlow (anonymous) at (0,0) size 92x18
+            LayoutText (anonymous) at (8,2) size 61x13
+              text run at (8,2) width 61: "append cell"
+        LayoutText {#text} at (92,0) size 53x18
+          text run at (92,0) width 53: "   tbody "
+        LayoutTextControl {INPUT} at (144.44,0) size 41x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)]
+        LayoutText {#text} at (185,0) size 42x18
+          text run at (185,0) width 42: "   row "
+        LayoutTextControl {INPUT} at (226.31,0) size 41x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)]
+        LayoutText {#text} at (267,0) size 36x18
+          text run at (267,0) width 36: "   col "
+        LayoutTextControl {INPUT} at (302.86,0) size 41x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)]
+        LayoutText {#text} at (343,0) size 76x18
+          text run at (343,0) width 76: "   row span "
+        LayoutTextControl {INPUT} at (418.06,0) size 41x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)]
+        LayoutText {#text} at (459,0) size 69x18
+          text run at (459,0) width 69: "   col span "
+        LayoutTextControl {INPUT} at (527.94,0) size 41x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)]
+        LayoutText {#text} at (568,0) size 21x18
+          text run at (568,0) width 21: "     "
+        LayoutButton {INPUT} at (588.94,1) size 40.53x18 [bgcolor=#C0C0C0]
+          LayoutBlockFlow (anonymous) at (8,2) size 24.53x13
+            LayoutText {#text} at (0,0) size 25x13
+              text run at (0,0) width 25: "Do It"
+        LayoutText {#text} at (0,0) size 0x0
+      LayoutBlockFlow (anonymous) at (0,35) size 784x18
+        LayoutBR {BR} at (0,0) size 0x18
+      LayoutTable {TABLE} at (0,53) size 64x52 [bgcolor=#FFA500] [border: (1px outset #808080)]
+        LayoutTableSection {TBODY} at (1,1) size 62x50
+          LayoutTableRow {TR} at (0,2) size 62x22
+            LayoutTableCell {TD} at (2,2) size 28x22 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
+              LayoutText {#text} at (2,2) size 23x18
+                text run at (2,2) width 23: "c11"
+          LayoutTableRow {TR} at (0,26) size 62x22
+            LayoutTableCell {TD} at (2,26) size 28x22 [border: (1px inset #808080)] [r=1 c=0 rs=1 cs=1]
+              LayoutText {#text} at (2,2) size 24x18
+                text run at (2,2) width 24: "c21"
+            LayoutTableCell {TD} at (32,26) size 28x22 [border: (1px inset #808080)] [r=1 c=1 rs=1 cs=1]
+              LayoutText {#text} at (2,2) size 24x18
+                text run at (2,2) width 24: "c22"
+      LayoutBlockFlow (anonymous) at (0,105) size 784x18
+        LayoutBR {BR} at (0,0) size 0x18
+layer at (155,11) size 35x13
+  LayoutBlockFlow {DIV} at (3,3) size 35x13
+    LayoutText {#text} at (0,0) size 7x13
+      text run at (0,0) width 7: "0"
+layer at (237,11) size 35x13
+  LayoutBlockFlow {DIV} at (3,3) size 35x13
+    LayoutText {#text} at (0,0) size 7x13
+      text run at (0,0) width 7: "0"
+layer at (314,11) size 35x13
+  LayoutBlockFlow {DIV} at (3,3) size 35x13
+    LayoutText {#text} at (0,0) size 7x13
+      text run at (0,0) width 7: "0"
+layer at (429,11) size 35x13
+  LayoutBlockFlow {DIV} at (3,3) size 35x13
+    LayoutText {#text} at (0,0) size 6x13
+      text run at (0,0) width 6: "1"
+layer at (539,11) size 35x13
+  LayoutBlockFlow {DIV} at (3,3) size 35x13
+    LayoutText {#text} at (0,0) size 6x13
+      text run at (0,0) width 6: "1"
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/other/move_row-expected.png b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/other/move_row-expected.png
new file mode 100644
index 0000000..af44f4b
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/other/move_row-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/other/test3-expected.png b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/other/test3-expected.png
new file mode 100644
index 0000000..02e2d6b
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/other/test3-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/other/test6-expected.png b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/other/test6-expected.png
new file mode 100644
index 0000000..3d3b6c5
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/other/test6-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/other/wa_table_thtd_rowspan-expected.png b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/other/wa_table_thtd_rowspan-expected.png
new file mode 100644
index 0000000..0edb31b
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/other/wa_table_thtd_rowspan-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/other/wa_table_tr_align-expected.png b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/other/wa_table_tr_align-expected.png
new file mode 100644
index 0000000..2ad1279
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla/other/wa_table_tr_align-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla_expected_failures/bugs/bug1128-expected.png b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla_expected_failures/bugs/bug1128-expected.png
new file mode 100644
index 0000000..fc3fd5b
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla_expected_failures/bugs/bug1128-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla_expected_failures/bugs/bug1725-expected.png b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla_expected_failures/bugs/bug1725-expected.png
new file mode 100644
index 0000000..a84f408
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla_expected_failures/bugs/bug1725-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla_expected_failures/bugs/bug1725-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla_expected_failures/bugs/bug1725-expected.txt
new file mode 100644
index 0000000..fe2063ce
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla_expected_failures/bugs/bug1725-expected.txt
@@ -0,0 +1,68 @@
+layer at (0,0) size 800x600
+  LayoutView at (0,0) size 800x600
+layer at (0,0) size 800x600
+  LayoutBlockFlow {HTML} at (0,0) size 800x600
+    LayoutBlockFlow {BODY} at (8,8) size 784x584
+      LayoutTable {TABLE} at (0,0) size 600x276 [bgcolor=#FFC0CB]
+        LayoutTableSection {TBODY} at (0,0) size 600x276
+          LayoutTableRow {TR} at (0,0) size 600x18
+            LayoutTableCell {TD} at (0,0) size 600x18 [bgcolor=#FFFF00] [r=0 c=0 rs=1 cs=3]
+              LayoutText {#text} at (0,0) size 8x18
+                text run at (0,0) width 8: "1"
+          LayoutTableRow {TR} at (0,18) size 600x18
+            LayoutTableCell {TD} at (0,18) size 600x18 [bgcolor=#FF0000] [r=1 c=0 rs=1 cs=3]
+              LayoutText {#text} at (0,0) size 8x18
+                text run at (0,0) width 8: "2"
+          LayoutTableRow {TR} at (0,36) size 600x0
+            LayoutTableCell {TD} at (0,36) size 155x18 [bgcolor=#00FFFF] [r=2 c=0 rs=40 cs=1]
+              LayoutText {#text} at (0,0) size 8x18
+                text run at (0,0) width 8: "3"
+          LayoutTableRow {TR} at (0,36) size 600x24
+            LayoutTableCell {TD} at (155,36) size 445x24 [bgcolor=#FFA500] [r=3 c=1 rs=1 cs=1]
+              LayoutTable {TABLE} at (0,0) size 440x24
+                LayoutTableSection {TBODY} at (0,0) size 440x24
+                  LayoutTableRow {TR} at (0,2) size 440x20
+                    LayoutTableCell {TD} at (2,2) size 217x20 [r=0 c=0 rs=1 cs=1]
+                      LayoutButton {INPUT} at (1,1) size 93.73x18 [bgcolor=#C0C0C0]
+                        LayoutBlockFlow (anonymous) at (8,2) size 77.73x13
+                          LayoutText {#text} at (0,0) size 78x13
+                            text run at (0,0) width 78: "Submit Criteria"
+                    LayoutTableCell {TD} at (221,2) size 217x20 [r=0 c=1 rs=1 cs=1]
+                      LayoutText {#text} at (1,1) size 8x18
+                        text run at (1,1) width 8: "4"
+          LayoutTableRow {TR} at (0,60) size 600x18
+            LayoutTableCell {TD} at (155,60) size 445x18 [bgcolor=#FF0000] [r=4 c=1 rs=1 cs=1]
+              LayoutText {#text} at (0,0) size 8x18
+                text run at (0,0) width 8: "5"
+          LayoutTableRow {TR} at (0,78) size 600x36
+            LayoutTableCell {TD} at (155,78) size 445x36 [bgcolor=#FFFF00] [r=5 c=1 rs=1 cs=1]
+              LayoutText {#text} at (0,0) size 436x36
+                text run at (0,0) width 263: "If you have entered your feature criteria, "
+                text run at (262,0) width 174: "press the \"Submit Criteria\""
+                text run at (0,18) width 88: "button above."
+          LayoutTableRow {TR} at (0,114) size 600x18
+            LayoutTableCell {TD} at (155,114) size 445x18 [bgcolor=#D3D3D3] [r=6 c=1 rs=1 cs=1]
+              LayoutText {#text} at (0,0) size 8x18
+                text run at (0,0) width 8: "6"
+          LayoutTableRow {TR} at (0,132) size 600x54
+            LayoutTableCell {TD} at (155,132) size 445x54 [r=7 c=1 rs=1 cs=1]
+              LayoutText {#text} at (0,0) size 433x54
+                text run at (0,0) width 267: "If you want to do a radius search instead, "
+                text run at (266,0) width 167: "press the \"Radius Search\""
+                text run at (0,18) width 49: "button. "
+                text run at (48,18) width 287: "This will allow you to select a starting point "
+                text run at (334,18) width 71: "and enter a"
+                text run at (0,36) width 204: "radius with new feature criteria."
+          LayoutTableRow {TR} at (0,186) size 600x18
+            LayoutTableCell {TD} at (155,186) size 445x18 [r=8 c=1 rs=1 cs=1]
+              LayoutText {#text} at (0,0) size 4x18
+                text run at (0,0) width 4: " "
+          LayoutTableRow {TR} at (0,204) size 600x72
+            LayoutTableCell {TD} at (155,204) size 445x72 [r=9 c=1 rs=1 cs=1]
+              LayoutText {#text} at (0,0) size 419x72
+                text run at (0,0) width 419: "All information provided is deemed reliable but is not guaranteed"
+                text run at (0,18) width 93: "and should be "
+                text run at (92,18) width 291: "independently verified. The price shown may"
+                text run at (0,36) width 206: "represent the top or bottom of a "
+                text run at (205,36) width 168: "price range listing and not"
+                text run at (0,54) width 193: "necessarily a fixed price offer."
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla_expected_failures/bugs/bug2479-5-expected.png b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla_expected_failures/bugs/bug2479-5-expected.png
new file mode 100644
index 0000000..bd530e3
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla_expected_failures/bugs/bug2479-5-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla_expected_failures/bugs/bug2479-5-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla_expected_failures/bugs/bug2479-5-expected.txt
new file mode 100644
index 0000000..2f1fd4ef
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla_expected_failures/bugs/bug2479-5-expected.txt
@@ -0,0 +1,180 @@
+layer at (0,0) size 800x600 clip at (0,0) size 785x600 scrollHeight 1444
+  LayoutView at (0,0) size 800x600
+layer at (8,8) size 769x1428 backgroundClip at (0,0) size 785x600 clip at (0,0) size 785x600
+  LayoutBlockFlow {HTML} at (8,8) size 769x1428 [border: (16px solid #00FF00)]
+    LayoutTable (anonymous) at (16,16) size 737x1396
+      LayoutTableSection (anonymous) at (0,0) size 737x1396
+        LayoutTableRow (anonymous) at (0,0) size 737x1396
+          LayoutTableCell {HEAD} at (0,0) size 251x472 [color=#FFFFFF] [bgcolor=#FF0000] [border: (5px solid #FFFFFF)] [r=0 c=0 rs=1 cs=1]
+            LayoutBlockFlow {META} at (21,37) size 209x2 [border: (1px dotted #FFFFFF)]
+            LayoutBlockFlow {META} at (21,55) size 209x2 [border: (1px dotted #FFFFFF)]
+            LayoutBlockFlow {META} at (21,73) size 209x2 [border: (1px dotted #FFFFFF)]
+            LayoutBlockFlow {META} at (21,91) size 209x2 [border: (1px dotted #FFFFFF)]
+            LayoutBlockFlow {TITLE} at (21,109) size 209x56 [border: (1px dotted #FFFFFF)]
+              LayoutText {#text} at (1,1) size 188x54
+                text run at (1,1) width 188: "Evil Tests: Rendering BODY"
+                text run at (1,19) width 163: "and HEAD as children of"
+                text run at (1,37) width 67: "HTML - 2"
+            LayoutBlockFlow {STYLE} at (21,181) size 209x254 [border: (1px dotted #FFFFFF)]
+              LayoutText {#text} at (1,1) size 206x252
+                text run at (1,1) width 83: "/* Layout */ "
+                text run at (83,1) width 112: "HTML { display:"
+                text run at (1,19) width 194: "block; border: 1em lime solid;"
+                text run at (1,37) width 98: "margin: 8px; } "
+                text run at (98,37) width 99: "HEAD, BODY"
+                text run at (1,55) width 181: "{ display: table-cell; border:"
+                text run at (1,73) width 76: "solid thick; "
+                text run at (76,73) width 93: "padding: 1em;"
+                text run at (1,91) width 102: "margin: 1em; } "
+                text run at (102,91) width 74: "HEAD > *,"
+                text run at (1,109) width 181: "BODY > * { display: block;"
+                text run at (1,127) width 178: "border: thin dotted; margin:"
+                text run at (1,145) width 60: "1em 0; } "
+                text run at (60,145) width 105: "/* Formatting */"
+                text run at (1,163) width 142: "HTML { color: black;"
+                text run at (1,181) width 140: "background: green; } "
+                text run at (140,181) width 57: "HEAD {"
+                text run at (1,199) width 206: "color: white; background: red; }"
+                text run at (1,217) width 151: "BODY { color: yellow;"
+                text run at (1,235) width 124: "background: teal; }"
+          LayoutTableCell {BODY} at (251,41) size 486x1355 [color=#FFFF00] [bgcolor=#008080] [border: (5px solid #FFFF00)] [r=0 c=1 rs=1 cs=1]
+            LayoutBlockFlow {H1} at (21,53) size 444x76 [border: (1px dotted #FFFF00)]
+              LayoutText {#text} at (1,1) size 152x37
+                text run at (1,1) width 152: "Rendering "
+              LayoutInline {CODE} at (0,0) size 63x30
+                LayoutText {#text} at (153,6) size 63x30
+                  text run at (153,6) width 63: "BODY"
+              LayoutText {#text} at (215,1) size 68x37
+                text run at (215,1) width 68: " and "
+              LayoutInline {CODE} at (0,0) size 63x30
+                LayoutText {#text} at (283,6) size 63x30
+                  text run at (283,6) width 63: "HEAD"
+              LayoutText {#text} at (345,1) size 381x74
+                text run at (345,1) width 37: " as"
+                text run at (1,38) width 156: "children of "
+              LayoutInline {CODE} at (0,0) size 64x30
+                LayoutText {#text} at (156,43) size 64x30
+                  text run at (156,43) width 64: "HTML"
+              LayoutText {#text} at (219,38) size 43x37
+                text run at (219,38) width 43: " - 2"
+            LayoutBlockFlow {P} at (21,161) size 444x38 [border: (1px dotted #FFFF00)]
+              LayoutText {#text} at (1,1) size 393x18
+                text run at (1,1) width 393: "If you have any comments to make regarding this test, e-mail"
+              LayoutInline {A} at (0,0) size 186x18 [color=#0000EE]
+                LayoutText {#text} at (1,19) size 186x18
+                  text run at (1,19) width 186: "py8ieh=eviltests@bath.ac.uk"
+              LayoutText {#text} at (186,19) size 5x18
+                text run at (186,19) width 5: "."
+            LayoutBlockFlow {DL} at (21,215) size 444x92 [border: (1px dotted #FFFF00)]
+              LayoutBlockFlow {DT} at (1,1) size 442x18
+                LayoutText {#text} at (0,0) size 83x18
+                  text run at (0,0) width 83: "Prerequisites"
+              LayoutBlockFlow {DD} at (41,19) size 402x72
+                LayoutText {#text} at (0,0) size 392x54
+                  text run at (0,0) width 392: "Browsers that are subjected to this test should support the the"
+                  text run at (0,18) width 388: "background, padding, margin, border and color properties of"
+                  text run at (0,36) width 160: "CSS, and in addition the "
+                LayoutInline {CODE} at (0,0) size 63x15
+                  LayoutText {#text} at (160,38) size 63x15
+                    text run at (160,38) width 63: "overflow"
+                LayoutText {#text} at (222,36) size 400x36
+                  text run at (222,36) width 178: " property and fixed position"
+                  text run at (0,54) width 109: "stuff from CSS2."
+            LayoutBlockFlow {H2} at (21,331) size 444x58 [border: (1px dotted #FFFF00)]
+              LayoutText {#text} at (1,1) size 440x56
+                text run at (1,1) width 440: "1. Making the BODY and the HEAD into a"
+                text run at (1,29) width 51: "table"
+            LayoutBlockFlow {P} at (21,413) size 444x20 [border: (1px dotted #FFFF00)]
+              LayoutText {#text} at (1,1) size 264x18
+                text run at (1,1) width 264: "This is really evil, but completely valid..."
+            LayoutBlockFlow {P} at (21,449) size 444x110 [border: (1px dotted #FFFF00)]
+              LayoutText {#text} at (1,1) size 430x108
+                text run at (1,1) width 426: "This document should have two cells, side by side: one on the left,"
+                text run at (1,19) width 426: "the other on the right. The one on the left should be red with white"
+                text run at (1,37) width 430: "writing and a thick white border. It should contain four dotted lines"
+                text run at (1,55) width 388: "separated by a blank line, followed by a dotted bordered box"
+                text run at (1,73) width 403: "containing the document title, and another dotted bordered box"
+                text run at (1,91) width 286: "containing the stylesheet, also shown below:"
+            LayoutBlockFlow {PRE} at (21,575) size 444x17 [border: (1px dotted #FFFF00)]
+              LayoutText {#text} at (1,1) size 39x15
+                text run at (1,1) width 39: "  ..."
+                text run at (40,1) width 0: " "
+            LayoutBlockFlow {P} at (21,608) size 444x38 [border: (1px dotted #FFFF00)]
+              LayoutText {#text} at (1,1) size 419x36
+                text run at (1,1) width 419: "The dotted borders and lines and the text in the left cell should be"
+                text run at (1,19) width 40: "white."
+            LayoutBlockFlow {P} at (21,662) size 444x38 [border: (1px dotted #FFFF00)]
+              LayoutText {#text} at (1,1) size 424x36
+                text run at (1,1) width 424: "The right cell should be teal, with yellow text. This paragraph you"
+                text run at (1,19) width 278: "are reading now should be in this right cell."
+            LayoutBlockFlow {P} at (21,716) size 444x38 [border: (1px dotted #FFFF00)]
+              LayoutText {#text} at (1,1) size 413x36
+                text run at (1,1) width 413: "The width of the two cells is left up to the user agent to decide, I"
+                text run at (1,19) width 37: "think."
+            LayoutBlockFlow {P} at (21,770) size 444x74 [border: (1px dotted #FFFF00)]
+              LayoutText {#text} at (1,1) size 439x72
+                text run at (1,1) width 409: "The right cell should look similar to the left cell in formatting --"
+                text run at (1,19) width 399: "each box of text should have a yellow dotted border, and there"
+                text run at (1,37) width 414: "should be a blank line between each such box. No box should be"
+                text run at (1,55) width 439: "nested -- the dotted boxes should always be distinct from each other."
+            LayoutBlockFlow {P} at (21,860) size 444x38 [border: (1px dotted #FFFF00)]
+              LayoutText {#text} at (1,1) size 417x36
+                text run at (1,1) width 417: "The cells should be the same height, and they should have grown"
+                text run at (1,19) width 229: "vertically to accommodate this text."
+            LayoutBlockFlow {P} at (21,914) size 444x56 [border: (1px dotted #FFFF00)]
+              LayoutText {#text} at (1,1) size 437x54
+                text run at (1,1) width 436: "Around the whole setup should be two borders, dark green and light"
+                text run at (1,19) width 437: "green. The cells should be separated from each other and from these"
+                text run at (1,37) width 230: "outer borders by 1em of dark green."
+            LayoutBlockFlow {P} at (21,986) size 444x38 [border: (1px dotted #FFFF00)]
+              LayoutText {#text} at (1,1) size 429x36
+                text run at (1,1) width 429: "There should also be some alternate stylesheets set up to allow you"
+                text run at (1,19) width 404: "to display the <META> content. This may help with diagnosis."
+            LayoutBlockFlow {H2} at (21,1048) size 444x30 [border: (1px dotted #FFFF00)]
+              LayoutText {#text} at (1,1) size 156x28
+                text run at (1,1) width 156: "Submit Results"
+            LayoutBlockFlow {FORM} at (21,1102) size 444x90 [border: (1px dotted #FFFF00)]
+              LayoutBlockFlow {P} at (1,17) size 442x56
+                LayoutText {#text} at (0,0) size 263x18
+                  text run at (0,0) width 263: "How does your browser fare on this test?"
+                LayoutMenuList {SELECT} at (0,19) size 442x18 [color=#000000] [bgcolor=#F8F8F8]
+                  LayoutBlockFlow (anonymous) at (0,0) size 442x18
+                    LayoutText (anonymous) at (8,2) size 210x13
+                      text run at (8,2) width 210: "Document renders exactly as described."
+                LayoutText {#text} at (0,0) size 0x0
+                LayoutInline {LABEL} at (0,0) size 203x18
+                  LayoutText {#text} at (0,37) size 72x18
+                    text run at (0,37) width 72: "Comment: "
+                  LayoutTextControl {INPUT} at (71.55,37) size 131x19 [color=#000000] [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)]
+                LayoutText {#text} at (202,37) size 5x18
+                  text run at (202,37) width 5: " "
+                LayoutButton {INPUT} at (206.55,38) size 52.47x18 [color=#000000] [bgcolor=#C0C0C0]
+                  LayoutBlockFlow (anonymous) at (8,2) size 36.47x13
+                    LayoutText {#text} at (0,0) size 37x13
+                      text run at (0,0) width 37: "Submit"
+                LayoutText {#text} at (0,0) size 0x0
+            LayoutBlockFlow {HR} at (21,1208) size 444x2 [border: (1px dotted #FFFF00)]
+            LayoutBlockFlow {P} at (21,1226) size 444x20 [border: (1px dotted #FFFF00)]
+              LayoutInline {A} at (0,0) size 162x18 [color=#0000EE]
+                LayoutText {#text} at (1,1) size 162x18
+                  text run at (1,1) width 162: "Up to the Evil Tests Page"
+              LayoutText {#text} at (162,1) size 5x18
+                text run at (162,1) width 5: "."
+            LayoutBlockFlow {P} at (21,1262) size 444x20 [border: (1px dotted #FFFF00)]
+              LayoutText {#text} at (1,1) size 177x18
+                text run at (1,1) width 177: "This page is maintained by "
+              LayoutInline {A} at (0,0) size 79x18 [color=#0000EE]
+                LayoutText {#text} at (177,1) size 79x18
+                  text run at (177,1) width 79: "Ian Hickson"
+              LayoutText {#text} at (255,1) size 10x18
+                text run at (255,1) width 10: " ("
+              LayoutInline {A} at (0,0) size 125x18 [color=#0000EE]
+                LayoutText {#text} at (264,1) size 125x18
+                  text run at (264,1) width 125: "py8ieh@bath.ac.uk"
+              LayoutText {#text} at (388,1) size 10x18
+                text run at (388,1) width 10: ")."
+            LayoutBlockFlow {P} at (21,1298) size 444x20 [border: (1px dotted #FFFF00)]
+              LayoutText {#text} at (1,1) size 172x18
+                text run at (1,1) width 172: "Last updated in June 1999."
+layer at (372,1224) size 125x13 backgroundClip at (0,0) size 0x0 clip at (0,0) size 0x0
+  LayoutBlockFlow {DIV} at (3,3) size 125x13
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla_expected_failures/bugs/bug58402-2-expected.png b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla_expected_failures/bugs/bug58402-2-expected.png
new file mode 100644
index 0000000..70f68db
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla_expected_failures/bugs/bug58402-2-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla_expected_failures/bugs/bug58402-2-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla_expected_failures/bugs/bug58402-2-expected.txt
new file mode 100644
index 0000000..f3cd060a
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla_expected_failures/bugs/bug58402-2-expected.txt
@@ -0,0 +1,46 @@
+layer at (0,0) size 800x600
+  LayoutView at (0,0) size 800x600
+layer at (0,0) size 800x600
+  LayoutBlockFlow {HTML} at (0,0) size 800x600
+    LayoutBlockFlow {BODY} at (8,8) size 784x584
+      LayoutTable {TABLE} at (0,0) size 259x240 [border: (1px outset #808080)]
+        LayoutTableSection {TBODY} at (1,1) size 257x238
+          LayoutTableRow {TR} at (0,2) size 257x22
+            LayoutTableCell {TD} at (2,11) size 41x4 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
+            LayoutTableCell {TD} at (45,2) size 76x22 [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1]
+              LayoutText {#text} at (2,2) size 32x18
+                text run at (2,2) width 32: "col 1"
+            LayoutTableCell {TD} at (123,2) size 54x22 [border: (1px inset #808080)] [r=0 c=2 rs=1 cs=1]
+              LayoutText {#text} at (2,2) size 32x18
+                text run at (2,2) width 32: "col 2"
+            LayoutTableCell {TD} at (179,2) size 76x22 [border: (1px inset #808080)] [r=0 c=3 rs=1 cs=1]
+              LayoutText {#text} at (2,2) size 32x18
+                text run at (2,2) width 32: "col 3"
+          LayoutTableRow {TR} at (0,26) size 257x78
+            LayoutTableCell {TD} at (2,54) size 41x22 [border: (1px inset #808080)] [r=1 c=0 rs=1 cs=1]
+              LayoutText {#text} at (2,2) size 37x18
+                text run at (2,2) width 37: "row 1"
+            LayoutTableCell {TD} at (45,26) size 210x210 [border: (1px inset #808080)] [r=1 c=1 rs=3 cs=3]
+              LayoutBlockFlow (floating) {DIV} at (2,2) size 206x206 [border: (3px solid #FF0000)]
+                LayoutText {#text} at (83,3) size 40x18
+                  text run at (83,3) width 40: "tjosan"
+          LayoutTableRow {TR} at (0,106) size 257x50
+            LayoutTableCell {TD} at (2,120) size 41x22 [border: (1px inset #808080)] [r=2 c=0 rs=1 cs=1]
+              LayoutText {#text} at (2,2) size 37x18
+                text run at (2,2) width 37: "row 2"
+          LayoutTableRow {TR} at (0,158) size 257x78
+            LayoutTableCell {TD} at (2,186) size 41x22 [border: (1px inset #808080)] [r=3 c=0 rs=1 cs=1]
+              LayoutText {#text} at (2,2) size 37x18
+                text run at (2,2) width 37: "row 3"
+      LayoutBlockFlow (anonymous) at (0,240) size 784x19
+        LayoutButton {INPUT} at (0,1) size 53.80x18 [bgcolor=#C0C0C0]
+          LayoutBlockFlow (anonymous) at (8,2) size 37.80x13
+            LayoutText {#text} at (0,0) size 38x13
+              text run at (0,0) width 38: "expand"
+        LayoutText {#text} at (53,0) size 5x18
+          text run at (53,0) width 5: " "
+        LayoutButton {INPUT} at (57.80,1) size 42.28x18 [bgcolor=#C0C0C0]
+          LayoutBlockFlow (anonymous) at (8,2) size 26.28x13
+            LayoutText {#text} at (0,0) size 27x13
+              text run at (0,0) width 27: "sizes"
+        LayoutText {#text} at (0,0) size 0x0
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla_expected_failures/bugs/bug91057-expected.png b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla_expected_failures/bugs/bug91057-expected.png
new file mode 100644
index 0000000..2f496d96
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla_expected_failures/bugs/bug91057-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla_expected_failures/collapsing_borders/bug41262-5-expected.png b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla_expected_failures/collapsing_borders/bug41262-5-expected.png
new file mode 100644
index 0000000..63487bc
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla_expected_failures/collapsing_borders/bug41262-5-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla_expected_failures/collapsing_borders/bug41262-5-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla_expected_failures/collapsing_borders/bug41262-5-expected.txt
new file mode 100644
index 0000000..a3a1d3c2
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla_expected_failures/collapsing_borders/bug41262-5-expected.txt
@@ -0,0 +1,83 @@
+layer at (0,0) size 800x600
+  LayoutView at (0,0) size 800x600
+layer at (0,0) size 800x600
+  LayoutBlockFlow {HTML} at (0,0) size 800x600
+    LayoutBlockFlow {BODY} at (8,8) size 784x576
+      LayoutBlockFlow {CENTER} at (0,0) size 784x132
+        LayoutTable {TABLE} at (339,0) size 106x80
+          LayoutTableSection {THEAD} at (0,0) size 106x20
+            LayoutTableRow {TR} at (0,0) size 106x20
+              LayoutTableCell {TD} at (0,0) size 35x20 [r=0 c=0 rs=1 cs=1]
+                LayoutText {#text} at (1,1) size 29x18
+                  text run at (1,1) width 29: "EST"
+              LayoutTableCell {TD} at (35,0) size 31x20 [border: none none none (1px solid #808080)] [r=0 c=1 rs=1 cs=1]
+                LayoutText {#text} at (2,1) size 28x18
+                  text run at (2,1) width 28: "1am"
+              LayoutTableCell {TD} at (66,0) size 40x20 [border: none none none (1px solid #808080)] [r=0 c=2 rs=1 cs=1]
+                LayoutText {#text} at (2,1) size 29x18
+                  text run at (2,1) width 29: "8pm"
+          LayoutTableSection {TBODY} at (0,20) size 106x40
+            LayoutTableRow {TR} at (0,0) size 106x20
+              LayoutTableCell {TD} at (0,0) size 35x20 [r=0 c=0 rs=1 cs=1]
+                LayoutText {#text} at (1,1) size 30x18
+                  text run at (1,1) width 30: "CST"
+              LayoutTableCell {TD} at (35,0) size 31x20 [border: none none none (1px solid #808080)] [r=0 c=1 rs=1 cs=1]
+                LayoutText {#text} at (2,1) size 28x18
+                  text run at (2,1) width 28: "2am"
+              LayoutTableCell {TD} at (66,0) size 40x20 [border: none none none (1px solid #808080)] [r=0 c=2 rs=1 cs=1]
+                LayoutText {#text} at (2,1) size 29x18
+                  text run at (2,1) width 29: "9pm"
+            LayoutTableRow {TR} at (0,20) size 106x20
+              LayoutTableCell {TD} at (0,20) size 35x20 [r=1 c=0 rs=1 cs=1]
+                LayoutText {#text} at (1,1) size 33x18
+                  text run at (1,1) width 33: "MST"
+              LayoutTableCell {TD} at (35,20) size 31x20 [border: none none none (1px solid #808080)] [r=1 c=1 rs=1 cs=1]
+                LayoutText {#text} at (2,1) size 28x18
+                  text run at (2,1) width 28: "3am"
+              LayoutTableCell {TD} at (66,20) size 40x20 [border: none none none (1px solid #808080)] [r=1 c=2 rs=1 cs=1]
+                LayoutText {#text} at (2,1) size 37x18
+                  text run at (2,1) width 37: "10pm"
+          LayoutTableSection {TFOOT} at (0,60) size 106x20
+            LayoutTableRow {TR} at (0,0) size 106x20
+              LayoutTableCell {TD} at (0,0) size 35x20 [r=0 c=0 rs=1 cs=1]
+                LayoutText {#text} at (1,1) size 28x18
+                  text run at (1,1) width 28: "PST"
+              LayoutTableCell {TD} at (35,0) size 31x20 [border: none none none (1px solid #808080)] [r=0 c=1 rs=1 cs=1]
+                LayoutText {#text} at (2,1) size 28x18
+                  text run at (2,1) width 28: "4am"
+              LayoutTableCell {TD} at (66,0) size 40x20 [border: none none none (1px solid #808080)] [r=0 c=2 rs=1 cs=1]
+                LayoutText {#text} at (2,1) size 36x18
+                  text run at (2,1) width 36: "11pm"
+        LayoutBlockFlow {P} at (0,96) size 784x36
+          LayoutButton {BUTTON} at (271.98,0) size 73.94x18 [bgcolor=#C0C0C0] [border: none (2px outset #C0C0C0) none (2px outset #C0C0C0)]
+            LayoutBlockFlow (anonymous) at (8,2) size 57.94x13
+              LayoutText {#text} at (0,0) size 58x13
+                text run at (0,0) width 18: "No "
+                text run at (17,0) width 41: "borders"
+          LayoutButton {BUTTON} at (345.92,0) size 93.84x18 [bgcolor=#C0C0C0] [border: none (2px outset #C0C0C0) none (2px outset #C0C0C0)]
+            LayoutBlockFlow (anonymous) at (8,2) size 77.84x13
+              LayoutText {#text} at (0,0) size 78x13
+                text run at (0,0) width 44: "Exterior "
+                text run at (43,0) width 35: "border"
+          LayoutButton {BUTTON} at (439.77,0) size 72.23x18 [bgcolor=#C0C0C0] [border: none (2px outset #C0C0C0) none (2px outset #C0C0C0)]
+            LayoutBlockFlow (anonymous) at (8,2) size 56.23x13
+              LayoutText {#text} at (0,0) size 57x13
+                text run at (0,0) width 17: "All "
+                text run at (16,0) width 41: "borders"
+          LayoutBR {BR} at (512,13) size 0x0
+          LayoutButton {BUTTON} at (239.50,18) size 98.83x18 [bgcolor=#C0C0C0] [border: none (2px outset #C0C0C0) none (2px outset #C0C0C0)]
+            LayoutBlockFlow (anonymous) at (8,2) size 82.83x13
+              LayoutText {#text} at (0,0) size 83x13
+                text run at (0,0) width 43: "Column "
+                text run at (42,0) width 41: "borders"
+          LayoutButton {BUTTON} at (338.33,18) size 96.91x18 [bgcolor=#C0C0C0] [border: none (2px outset #C0C0C0) none (2px outset #C0C0C0)]
+            LayoutBlockFlow (anonymous) at (8,2) size 80.91x13
+              LayoutText {#text} at (0,0) size 81x13
+                text run at (0,0) width 41: "Groups "
+                text run at (40,0) width 41: "borders"
+          LayoutButton {BUTTON} at (435.23,18) size 109.27x18 [bgcolor=#C0C0C0] [border: none (2px outset #C0C0C0) none (2px outset #C0C0C0)]
+            LayoutBlockFlow (anonymous) at (8,2) size 93.27x13
+              LayoutText {#text} at (0,0) size 94x13
+                text run at (0,0) width 32: "Table "
+                text run at (31,0) width 63: "row borders"
+          LayoutText {#text} at (0,0) size 0x0
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla_expected_failures/collapsing_borders/bug41262-6-expected.png b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla_expected_failures/collapsing_borders/bug41262-6-expected.png
new file mode 100644
index 0000000..730816b
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla_expected_failures/collapsing_borders/bug41262-6-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla_expected_failures/collapsing_borders/bug41262-6-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla_expected_failures/collapsing_borders/bug41262-6-expected.txt
new file mode 100644
index 0000000..8eb2c06
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla_expected_failures/collapsing_borders/bug41262-6-expected.txt
@@ -0,0 +1,83 @@
+layer at (0,0) size 800x600
+  LayoutView at (0,0) size 800x600
+layer at (0,0) size 800x600
+  LayoutBlockFlow {HTML} at (0,0) size 800x600
+    LayoutBlockFlow {BODY} at (8,8) size 784x576
+      LayoutBlockFlow {CENTER} at (0,0) size 784x134
+        LayoutTable {TABLE} at (338,0) size 108x82 [border: none]
+          LayoutTableSection {THEAD} at (0,0) size 107x21
+            LayoutTableRow {TR} at (0,0) size 107x21
+              LayoutTableCell {TD} at (0,0) size 36x21 [border: (1px none #808080) none none (1px solid #808080)] [r=0 c=0 rs=1 cs=1]
+                LayoutText {#text} at (2,2) size 29x18
+                  text run at (2,2) width 29: "EST"
+              LayoutTableCell {TD} at (36,0) size 31x21 [border: (1px none #808080) none none (1px solid #808080)] [r=0 c=1 rs=1 cs=1]
+                LayoutText {#text} at (2,2) size 28x18
+                  text run at (2,2) width 28: "1am"
+              LayoutTableCell {TD} at (67,0) size 40x21 [border: (1px none #808080) none none (1px solid #808080)] [r=0 c=2 rs=1 cs=1]
+                LayoutText {#text} at (2,2) size 29x18
+                  text run at (2,2) width 29: "8pm"
+          LayoutTableSection {TBODY} at (0,21) size 107x40
+            LayoutTableRow {TR} at (0,0) size 107x20
+              LayoutTableCell {TD} at (0,0) size 36x20 [border: none none none (1px solid #808080)] [r=0 c=0 rs=1 cs=1]
+                LayoutText {#text} at (2,1) size 30x18
+                  text run at (2,1) width 30: "CST"
+              LayoutTableCell {TD} at (36,0) size 31x20 [border: none none none (1px solid #808080)] [r=0 c=1 rs=1 cs=1]
+                LayoutText {#text} at (2,1) size 28x18
+                  text run at (2,1) width 28: "2am"
+              LayoutTableCell {TD} at (67,0) size 40x20 [border: none none none (1px solid #808080)] [r=0 c=2 rs=1 cs=1]
+                LayoutText {#text} at (2,1) size 29x18
+                  text run at (2,1) width 29: "9pm"
+            LayoutTableRow {TR} at (0,20) size 107x20
+              LayoutTableCell {TD} at (0,20) size 36x20 [border: none none none (1px solid #808080)] [r=1 c=0 rs=1 cs=1]
+                LayoutText {#text} at (2,1) size 33x18
+                  text run at (2,1) width 33: "MST"
+              LayoutTableCell {TD} at (36,20) size 31x20 [border: none none none (1px solid #808080)] [r=1 c=1 rs=1 cs=1]
+                LayoutText {#text} at (2,1) size 28x18
+                  text run at (2,1) width 28: "3am"
+              LayoutTableCell {TD} at (67,20) size 40x20 [border: none none none (1px solid #808080)] [r=1 c=2 rs=1 cs=1]
+                LayoutText {#text} at (2,1) size 37x18
+                  text run at (2,1) width 37: "10pm"
+          LayoutTableSection {TFOOT} at (0,61) size 107x20
+            LayoutTableRow {TR} at (0,0) size 107x20
+              LayoutTableCell {TD} at (0,0) size 36x20 [border: none none none (1px solid #808080)] [r=0 c=0 rs=1 cs=1]
+                LayoutText {#text} at (2,1) size 28x18
+                  text run at (2,1) width 28: "PST"
+              LayoutTableCell {TD} at (36,0) size 31x20 [border: none none none (1px solid #808080)] [r=0 c=1 rs=1 cs=1]
+                LayoutText {#text} at (2,1) size 28x18
+                  text run at (2,1) width 28: "4am"
+              LayoutTableCell {TD} at (67,0) size 40x20 [border: none none none (1px solid #808080)] [r=0 c=2 rs=1 cs=1]
+                LayoutText {#text} at (2,1) size 36x18
+                  text run at (2,1) width 36: "11pm"
+        LayoutBlockFlow {P} at (0,98) size 784x36
+          LayoutButton {BUTTON} at (271.98,0) size 73.94x18 [bgcolor=#C0C0C0] [border: none (2px outset #C0C0C0) none (2px outset #C0C0C0)]
+            LayoutBlockFlow (anonymous) at (8,2) size 57.94x13
+              LayoutText {#text} at (0,0) size 58x13
+                text run at (0,0) width 18: "No "
+                text run at (17,0) width 41: "borders"
+          LayoutButton {BUTTON} at (345.92,0) size 93.84x18 [bgcolor=#C0C0C0] [border: none (2px outset #C0C0C0) none (2px outset #C0C0C0)]
+            LayoutBlockFlow (anonymous) at (8,2) size 77.84x13
+              LayoutText {#text} at (0,0) size 78x13
+                text run at (0,0) width 44: "Exterior "
+                text run at (43,0) width 35: "border"
+          LayoutButton {BUTTON} at (439.77,0) size 72.23x18 [bgcolor=#C0C0C0] [border: none (2px outset #C0C0C0) none (2px outset #C0C0C0)]
+            LayoutBlockFlow (anonymous) at (8,2) size 56.23x13
+              LayoutText {#text} at (0,0) size 57x13
+                text run at (0,0) width 17: "All "
+                text run at (16,0) width 41: "borders"
+          LayoutBR {BR} at (512,13) size 0x0
+          LayoutButton {BUTTON} at (239.50,18) size 98.83x18 [bgcolor=#C0C0C0] [border: none (2px outset #C0C0C0) none (2px outset #C0C0C0)]
+            LayoutBlockFlow (anonymous) at (8,2) size 82.83x13
+              LayoutText {#text} at (0,0) size 83x13
+                text run at (0,0) width 43: "Column "
+                text run at (42,0) width 41: "borders"
+          LayoutButton {BUTTON} at (338.33,18) size 96.91x18 [bgcolor=#C0C0C0] [border: none (2px outset #C0C0C0) none (2px outset #C0C0C0)]
+            LayoutBlockFlow (anonymous) at (8,2) size 80.91x13
+              LayoutText {#text} at (0,0) size 81x13
+                text run at (0,0) width 41: "Groups "
+                text run at (40,0) width 41: "borders"
+          LayoutButton {BUTTON} at (435.23,18) size 109.27x18 [bgcolor=#C0C0C0] [border: none (2px outset #C0C0C0) none (2px outset #C0C0C0)]
+            LayoutBlockFlow (anonymous) at (8,2) size 93.27x13
+              LayoutText {#text} at (0,0) size 94x13
+                text run at (0,0) width 32: "Table "
+                text run at (31,0) width 63: "row borders"
+          LayoutText {#text} at (0,0) size 0x0
diff --git a/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla_expected_failures/marvin/backgr_fixed-bg-expected.png b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla_expected_failures/marvin/backgr_fixed-bg-expected.png
new file mode 100644
index 0000000..20d9f95
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/platform/mac-retina/tables/mozilla_expected_failures/marvin/backgr_fixed-bg-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug1188-expected.png b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug1188-expected.png
index d945c22b..c269bdd 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug1188-expected.png
+++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug1188-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug1188-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug1188-expected.txt
index 2e58825..c94ea79 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug1188-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug1188-expected.txt
@@ -19,15 +19,15 @@
                       text run at (67,3) width 128: "Search the Web with"
                 LayoutText {#text} at (194,1) size 5x18
                   text run at (194,1) width 5: " "
-                LayoutMenuList {SELECT} at (198.41,2) size 81x18 [bgcolor=#F8F8F8]
+                LayoutMenuList {SELECT} at (198.31,2) size 81x18 [bgcolor=#F8F8F8]
                   LayoutBlockFlow (anonymous) at (0,0) size 81x18
                     LayoutText (anonymous) at (8,2) size 50x13
                       text run at (8,2) width 50: "Netscape"
-                LayoutTextControl {INPUT} at (279.41,1) size 191x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)]
+                LayoutTextControl {INPUT} at (279.31,1) size 191x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)]
                 LayoutText {#text} at (470,1) size 5x18
                   text run at (470,1) width 5: " "
-                LayoutButton {INPUT} at (474.41,2) size 52.08x18 [bgcolor=#C0C0C0]
-                  LayoutBlockFlow (anonymous) at (8,2) size 36.08x13
+                LayoutButton {INPUT} at (474.31,2) size 52.25x18 [bgcolor=#C0C0C0]
+                  LayoutBlockFlow (anonymous) at (8,2) size 36.25x13
                     LayoutText {#text} at (0,0) size 37x13
                       text run at (0,0) width 37: "Search"
                 LayoutBR {BR} at (526,15) size 1x0
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug1318-expected.png b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug1318-expected.png
index 0a71684..d9eea74 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug1318-expected.png
+++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug1318-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug1318-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug1318-expected.txt
index b0569d1..9f1f2e0 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug1318-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug1318-expected.txt
@@ -42,8 +42,8 @@
               LayoutInline {FONT} at (0,0) size 1x15
                 LayoutText {#text} at (0,0) size 0x0
             LayoutTableCell {TD} at (634,116) size 150x20 [r=3 c=2 rs=1 cs=2]
-              LayoutButton {INPUT} at (55.77,1) size 38.45x18 [bgcolor=#C0C0C0]
-                LayoutBlockFlow (anonymous) at (8,2) size 22.45x13
+              LayoutButton {INPUT} at (55.63,1) size 38.75x18 [bgcolor=#C0C0C0]
+                LayoutBlockFlow (anonymous) at (8,2) size 22.75x13
                   LayoutText {#text} at (0,0) size 23x13
                     text run at (0,0) width 23: "vote"
               LayoutText {#text} at (0,0) size 0x0
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug138725-expected.png b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug138725-expected.png
index c782f50..cecf61ee 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug138725-expected.png
+++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug138725-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug138725-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug138725-expected.txt
index 8524e91a..fe9e6109 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug138725-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug138725-expected.txt
@@ -3,32 +3,32 @@
 layer at (0,0) size 800x600
   LayoutBlockFlow {HTML} at (0,0) size 800x600
     LayoutBlockFlow {BODY} at (8,8) size 784x584
-      LayoutTable {TABLE} at (0,0) size 144x52
-        LayoutTableSection {TBODY} at (0,0) size 144x52
-          LayoutTableRow {TR} at (0,2) size 144x48
-            LayoutTableCell {TD} at (2,2) size 140x48 [r=0 c=0 rs=1 cs=1]
-              LayoutBlockFlow (anonymous) at (1,1) size 138x0
+      LayoutTable {TABLE} at (0,0) size 145x52
+        LayoutTableSection {TBODY} at (0,0) size 145x52
+          LayoutTableRow {TR} at (0,2) size 145x48
+            LayoutTableCell {TD} at (2,2) size 141x48 [r=0 c=0 rs=1 cs=1]
+              LayoutBlockFlow (anonymous) at (1,1) size 139x0
                 LayoutInline {SPAN} at (0,0) size 0x0
                   LayoutText {#text} at (0,0) size 0x0
                   LayoutInline {SPAN} at (0,0) size 0x0
                     LayoutText {#text} at (0,0) size 0x0
                     LayoutText {#text} at (0,0) size 0x0
-              LayoutBlockFlow (anonymous) at (1,1) size 138x46
-                LayoutTable {TABLE} at (0,0) size 138x46
-                  LayoutTableSection {TBODY} at (0,0) size 138x46
-                    LayoutTableRow {TR} at (0,2) size 138x42
-                      LayoutTableCell {TD} at (2,2) size 134x42 [r=0 c=0 rs=1 cs=1]
-                        LayoutTable (floating) {TABLE} at (1,1) size 132x40
-                          LayoutTableSection {TBODY} at (0,0) size 132x40
-                            LayoutTableRow {TR} at (0,2) size 132x36
-                              LayoutTableCell {TD} at (2,2) size 128x36 [r=0 c=0 rs=1 cs=1]
-                                LayoutBlockFlow {FORM} at (1,1) size 126x18
-                                  LayoutButton {INPUT} at (0,0) size 125.34x18 [bgcolor=#C0C0C0]
-                                    LayoutBlockFlow (anonymous) at (8,2) size 109.34x13
-                                      LayoutText {#text} at (0,0) size 110x13
-                                        text run at (0,0) width 110: "ApplyForThisPosition"
+              LayoutBlockFlow (anonymous) at (1,1) size 139x46
+                LayoutTable {TABLE} at (0,0) size 139x46
+                  LayoutTableSection {TBODY} at (0,0) size 139x46
+                    LayoutTableRow {TR} at (0,2) size 139x42
+                      LayoutTableCell {TD} at (2,2) size 135x42 [r=0 c=0 rs=1 cs=1]
+                        LayoutTable (floating) {TABLE} at (1,1) size 133x40
+                          LayoutTableSection {TBODY} at (0,0) size 133x40
+                            LayoutTableRow {TR} at (0,2) size 133x36
+                              LayoutTableCell {TD} at (2,2) size 129x36 [r=0 c=0 rs=1 cs=1]
+                                LayoutBlockFlow {FORM} at (1,1) size 127x18
+                                  LayoutButton {INPUT} at (0,0) size 126.09x18 [bgcolor=#C0C0C0]
+                                    LayoutBlockFlow (anonymous) at (8,2) size 110.09x13
+                                      LayoutText {#text} at (0,0) size 111x13
+                                        text run at (0,0) width 111: "ApplyForThisPosition"
                                   LayoutText {#text} at (0,0) size 0x0
-              LayoutBlockFlow (anonymous) at (1,47) size 138x0
+              LayoutBlockFlow (anonymous) at (1,47) size 139x0
                 LayoutInline {SPAN} at (0,0) size 0x0
                   LayoutInline {SPAN} at (0,0) size 0x0
                   LayoutText {#text} at (0,0) size 0x0
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug18359-expected.png b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug18359-expected.png
index 7bd0345..5cb693c4e 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug18359-expected.png
+++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug18359-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug18359-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug18359-expected.txt
index 86bec78..7a6abf85 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug18359-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug18359-expected.txt
@@ -8,36 +8,36 @@
           text run at (0,0) width 362: "SeaMonkey XPInstall Trigger Page"
       LayoutBlockFlow {HR} at (0,47.91) size 784x2 [border: (1px inset #EEEEEE)]
       LayoutBlockFlow {FORM} at (0,57.91) size 784x47
-        LayoutTable {TABLE} at (0,0) size 600x47
-          LayoutTableSection {TBODY} at (0,0) size 600x47
-            LayoutTableRow {TR} at (0,2) size 600x21
+        LayoutTable {TABLE} at (0,0) size 601x47
+          LayoutTableSection {TBODY} at (0,0) size 601x47
+            LayoutTableRow {TR} at (0,2) size 601x21
               LayoutTableCell {TD} at (2,2) size 106x20 [r=0 c=0 rs=1 cs=1]
                 LayoutInline {B} at (0,0) size 95x18
                   LayoutText {#text} at (1,1) size 95x18
                     text run at (1,1) width 95: "Trigger URL:"
               LayoutTableCell {TD} at (110,2) size 403x21 [r=0 c=1 rs=1 cs=1]
                 LayoutTextControl {INPUT} at (1,1) size 401x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)]
-              LayoutTableCell {TD} at (515,2) size 83x20 [r=0 c=2 rs=1 cs=1]
-                LayoutButton {INPUT} at (1,1) size 53.27x18 [bgcolor=#C0C0C0]
-                  LayoutBlockFlow (anonymous) at (8,2) size 37.27x13
+              LayoutTableCell {TD} at (515,2) size 84x20 [r=0 c=2 rs=1 cs=1]
+                LayoutButton {INPUT} at (1,1) size 53.75x18 [bgcolor=#C0C0C0]
+                  LayoutBlockFlow (anonymous) at (8,2) size 37.75x13
                     LayoutText {#text} at (0,0) size 38x13
                       text run at (0,0) width 38: "Trigger"
-            LayoutTableRow {TR} at (0,25) size 600x20
+            LayoutTableRow {TR} at (0,25) size 601x20
               LayoutTableCell {TD} at (2,25) size 106x20 [r=1 c=0 rs=1 cs=1]
                 LayoutInline {B} at (0,0) size 104x18
                   LayoutText {#text} at (1,1) size 104x18
                     text run at (1,1) width 104: "Run Test Case:"
               LayoutTableCell {TD} at (110,25) size 403x20 [r=1 c=1 rs=1 cs=1]
-                LayoutMenuList {SELECT} at (1,1) size 253x18 [bgcolor=#F8F8F8]
-                  LayoutBlockFlow (anonymous) at (0,0) size 253x18
-                    LayoutText (anonymous) at (8,2) size 70x13
-                      text run at (8,2) width 70: "a_abortinstall"
+                LayoutMenuList {SELECT} at (1,1) size 254x18 [bgcolor=#F8F8F8]
+                  LayoutBlockFlow (anonymous) at (0,0) size 254x18
+                    LayoutText (anonymous) at (8,2) size 69x13
+                      text run at (8,2) width 69: "a_abortinstall"
                 LayoutText {#text} at (0,0) size 0x0
-              LayoutTableCell {TD} at (515,25) size 83x20 [r=1 c=2 rs=1 cs=1]
-                LayoutButton {INPUT} at (1,1) size 80.64x18 [bgcolor=#C0C0C0]
-                  LayoutBlockFlow (anonymous) at (8,2) size 64.64x13
-                    LayoutText {#text} at (0,0) size 65x13
-                      text run at (0,0) width 65: "Trigger case"
+              LayoutTableCell {TD} at (515,25) size 84x20 [r=1 c=2 rs=1 cs=1]
+                LayoutButton {INPUT} at (1,1) size 81.13x18 [bgcolor=#C0C0C0]
+                  LayoutBlockFlow (anonymous) at (8,2) size 65.13x13
+                    LayoutText {#text} at (0,0) size 66x13
+                      text run at (0,0) width 66: "Trigger case"
 layer at (122,72) size 395x13
   LayoutBlockFlow {DIV} at (3,3) size 395x13
     LayoutText {#text} at (0,0) size 94x13
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug194024-expected.png b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug194024-expected.png
index fb45699..2a70dee 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug194024-expected.png
+++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug194024-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug194024-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug194024-expected.txt
index 47cb4dd8..7b332bef 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug194024-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug194024-expected.txt
@@ -102,45 +102,45 @@
 layer at (20,26) size 760x32 clip at (21,27) size 758x30
   LayoutTextControl {TEXTAREA} at (0,0) size 760x32 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
     LayoutBlockFlow {DIV} at (3,3) size 754x13
-      LayoutText {#text} at (0,0) size 20x13
-        text run at (0,0) width 20: "test"
+      LayoutText {#text} at (0,0) size 21x13
+        text run at (0,0) width 21: "test"
 layer at (20,76) size 760x32 clip at (21,77) size 758x30
   LayoutTextControl {TEXTAREA} at (0,0) size 760x32 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
     LayoutBlockFlow {DIV} at (3,3) size 754x13
-      LayoutText {#text} at (0,0) size 20x13
-        text run at (0,0) width 20: "test"
+      LayoutText {#text} at (0,0) size 21x13
+        text run at (0,0) width 21: "test"
 layer at (24,128) size 752x32 clip at (25,129) size 750x30
   LayoutTextControl {TEXTAREA} at (0,0) size 752x32 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
     LayoutBlockFlow {DIV} at (3,3) size 746x13
-      LayoutText {#text} at (0,0) size 20x13
-        text run at (0,0) width 20: "test"
+      LayoutText {#text} at (0,0) size 21x13
+        text run at (0,0) width 21: "test"
 layer at (24,182) size 752x32 clip at (25,183) size 750x30
   LayoutTextControl {TEXTAREA} at (0,0) size 752x32 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
     LayoutBlockFlow {DIV} at (3,3) size 746x13
-      LayoutText {#text} at (0,0) size 20x13
-        text run at (0,0) width 20: "test"
+      LayoutText {#text} at (0,0) size 21x13
+        text run at (0,0) width 21: "test"
 layer at (27,237) size 746x32 clip at (28,238) size 744x30
   LayoutTextControl {TEXTAREA} at (1,1) size 746x32 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
     LayoutBlockFlow {DIV} at (3,3) size 740x13
-      LayoutText {#text} at (0,0) size 20x13
-        text run at (0,0) width 20: "test"
+      LayoutText {#text} at (0,0) size 21x13
+        text run at (0,0) width 21: "test"
 layer at (27,293) size 746x32 clip at (28,294) size 744x30
   LayoutTextControl {TEXTAREA} at (1,1) size 746x32 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
     LayoutBlockFlow {DIV} at (3,3) size 740x13
-      LayoutText {#text} at (0,0) size 20x13
-        text run at (0,0) width 20: "test"
+      LayoutText {#text} at (0,0) size 21x13
+        text run at (0,0) width 21: "test"
 layer at (24,348) size 752x32 clip at (25,349) size 750x30
   LayoutTextControl {TEXTAREA} at (1,1) size 752x32 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
     LayoutBlockFlow {DIV} at (3,3) size 746x13
-      LayoutText {#text} at (0,0) size 20x13
-        text run at (0,0) width 20: "test"
+      LayoutText {#text} at (0,0) size 21x13
+        text run at (0,0) width 21: "test"
 layer at (27,403) size 746x32 clip at (28,404) size 744x30
   LayoutTextControl {TEXTAREA} at (2,2) size 746x32 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
     LayoutBlockFlow {DIV} at (3,3) size 740x13
-      LayoutText {#text} at (0,0) size 20x13
-        text run at (0,0) width 20: "test"
+      LayoutText {#text} at (0,0) size 21x13
+        text run at (0,0) width 21: "test"
 layer at (31,461) size 738x32 clip at (32,462) size 736x30
   LayoutTextControl {TEXTAREA} at (2,2) size 738x32 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
     LayoutBlockFlow {DIV} at (3,3) size 732x13
-      LayoutText {#text} at (0,0) size 20x13
-        text run at (0,0) width 20: "test"
+      LayoutText {#text} at (0,0) size 21x13
+        text run at (0,0) width 21: "test"
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug2479-2-expected.png b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug2479-2-expected.png
index 045bb950..7c0bff5a 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug2479-2-expected.png
+++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug2479-2-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug2479-2-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug2479-2-expected.txt
index 7c7ced6..a9a1f1fc8 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug2479-2-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug2479-2-expected.txt
@@ -103,8 +103,8 @@
                   text run at (0,0) width 40: "Submit!"
             LayoutText {#text} at (55,6) size 7x19
               text run at (55,6) width 7: " "
-            LayoutButton {INPUT} at (61.52,9) size 72.97x18 [bgcolor=#C0C0C0]
-              LayoutBlockFlow (anonymous) at (8,2) size 56.97x13
+            LayoutButton {INPUT} at (61.52,9) size 72.86x18 [bgcolor=#C0C0C0]
+              LayoutBlockFlow (anonymous) at (8,2) size 56.86x13
                 LayoutText {#text} at (0,0) size 57x13
                   text run at (0,0) width 57: "Clear Form"
             LayoutText {#text} at (0,0) size 0x0
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug2479-3-expected.png b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug2479-3-expected.png
index 325e09d..0f3eaeb 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug2479-3-expected.png
+++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug2479-3-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug2479-3-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug2479-3-expected.txt
index 057baa2..fd79402 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug2479-3-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug2479-3-expected.txt
@@ -1,8 +1,8 @@
-layer at (0,0) size 800x600 clip at (0,0) size 785x600 scrollHeight 659
+layer at (0,0) size 800x600 clip at (0,0) size 785x600 scrollHeight 678
   LayoutView at (0,0) size 800x600
-layer at (0,0) size 785x659 backgroundClip at (0,0) size 785x600 clip at (0,0) size 785x600
-  LayoutBlockFlow {HTML} at (0,0) size 785x658.50
-    LayoutBlockFlow {BODY} at (8,21.44) size 769x621.06
+layer at (0,0) size 785x678 backgroundClip at (0,0) size 785x600 clip at (0,0) size 785x600
+  LayoutBlockFlow {HTML} at (0,0) size 785x677.50
+    LayoutBlockFlow {BODY} at (8,21.44) size 769x640.06
       LayoutBlockFlow {H1} at (0,0) size 769x37
         LayoutText {#text} at (0,0) size 311x37
           text run at (0,0) width 311: "Generic Table Tests - 1"
@@ -62,29 +62,28 @@
       LayoutBlockFlow {H2} at (0,400.16) size 769x28
         LayoutText {#text} at (0,0) size 156x28
           text run at (0,0) width 156: "Submit Results"
-      LayoutBlockFlow {FORM} at (0,448.06) size 769x19
-        LayoutBlockFlow {P} at (0,0) size 769x19
+      LayoutBlockFlow {FORM} at (0,448.06) size 769x38
+        LayoutBlockFlow {P} at (0,0) size 769x38
           LayoutText {#text} at (0,0) size 267x18
             text run at (0,0) width 267: "How does your browser fare on this test? "
-          LayoutMenuList {SELECT} at (266.59,1) size 238x18 [bgcolor=#F8F8F8]
-            LayoutBlockFlow (anonymous) at (0,0) size 238x18
-              LayoutText (anonymous) at (8,2) size 138x13
-                text run at (8,2) width 138: "The test renders correctly."
-          LayoutText {#text} at (504,0) size 5x18
-            text run at (504,0) width 5: " "
+          LayoutMenuList {SELECT} at (266.59,1) size 240x18 [bgcolor=#F8F8F8]
+            LayoutBlockFlow (anonymous) at (0,0) size 240x18
+              LayoutText (anonymous) at (8,2) size 139x13
+                text run at (8,2) width 139: "The test renders correctly."
+          LayoutText {#text} at (506,0) size 5x18
+            text run at (506,0) width 5: " "
           LayoutInline {LABEL} at (0,0) size 204x18
-            LayoutText {#text} at (508,0) size 73x18
-              text run at (508,0) width 73: "Comment: "
-            LayoutTextControl {INPUT} at (580.14,0) size 131x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)]
-          LayoutText {#text} at (711,0) size 5x18
-            text run at (711,0) width 5: " "
-          LayoutButton {INPUT} at (715.14,1) size 52.47x18 [bgcolor=#C0C0C0]
+            LayoutText {#text} at (510,0) size 73x18
+              text run at (510,0) width 73: "Comment: "
+            LayoutTextControl {INPUT} at (582.14,0) size 131x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)]
+          LayoutText {#text} at (0,0) size 0x0
+          LayoutButton {INPUT} at (0,20) size 52.47x18 [bgcolor=#C0C0C0]
             LayoutBlockFlow (anonymous) at (8,2) size 36.47x13
               LayoutText {#text} at (0,0) size 37x13
                 text run at (0,0) width 37: "Submit"
           LayoutText {#text} at (0,0) size 0x0
-      LayoutBlockFlow {HR} at (0,483.06) size 769x2 [border: (1px inset #EEEEEE)]
-      LayoutBlockFlow {P} at (0,501.06) size 769x18
+      LayoutBlockFlow {HR} at (0,502.06) size 769x2 [border: (1px inset #EEEEEE)]
+      LayoutBlockFlow {P} at (0,520.06) size 769x18
         LayoutText {#text} at (0,0) size 64x18
           text run at (0,0) width 64: "Up to the "
         LayoutInline {A} at (0,0) size 73x18 [color=#0000EE]
@@ -92,7 +91,7 @@
             text run at (63,0) width 73: "Table Tests"
         LayoutText {#text} at (135,0) size 5x18
           text run at (135,0) width 5: "."
-      LayoutBlockFlow {P} at (0,535.06) size 769x18
+      LayoutBlockFlow {P} at (0,554.06) size 769x18
         LayoutText {#text} at (0,0) size 64x18
           text run at (0,0) width 64: "Up to the "
         LayoutInline {A} at (0,0) size 99x18 [color=#0000EE]
@@ -100,7 +99,7 @@
             text run at (63,0) width 99: "Evil Tests Page"
         LayoutText {#text} at (161,0) size 5x18
           text run at (161,0) width 5: "."
-      LayoutBlockFlow {P} at (0,569.06) size 769x18
+      LayoutBlockFlow {P} at (0,588.06) size 769x18
         LayoutText {#text} at (0,0) size 177x18
           text run at (0,0) width 177: "This page is maintained by "
         LayoutInline {A} at (0,0) size 79x18 [color=#0000EE]
@@ -113,8 +112,8 @@
             text run at (263,0) width 125: "py8ieh@bath.ac.uk"
         LayoutText {#text} at (387,0) size 10x18
           text run at (387,0) width 10: ")."
-      LayoutBlockFlow {P} at (0,603.06) size 769x18
+      LayoutBlockFlow {P} at (0,622.06) size 769x18
         LayoutText {#text} at (0,0) size 185x18
           text run at (0,0) width 185: "Last updated in March 1999."
-layer at (591,473) size 125x13
+layer at (593,473) size 125x13
   LayoutBlockFlow {DIV} at (3,3) size 125x13
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug2479-4-expected.png b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug2479-4-expected.png
index 6a8402f9..90da3b8 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug2479-4-expected.png
+++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug2479-4-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug2479-4-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug2479-4-expected.txt
index 07df1f8f..ca4f1c4 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug2479-4-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug2479-4-expected.txt
@@ -184,10 +184,10 @@
         LayoutBlockFlow {P} at (0,0) size 769x38
           LayoutText {#text} at (0,0) size 267x18
             text run at (0,0) width 267: "How does your browser fare on this test? "
-          LayoutMenuList {SELECT} at (266.59,1) size 458x18 [bgcolor=#F8F8F8]
-            LayoutBlockFlow (anonymous) at (0,0) size 458x18
-              LayoutText (anonymous) at (8,2) size 427x13
-                text run at (8,2) width 427: "The tests all render identically, and this browser may or may not grok CSS2 tables."
+          LayoutMenuList {SELECT} at (266.59,1) size 460x18 [bgcolor=#F8F8F8]
+            LayoutBlockFlow (anonymous) at (0,0) size 460x18
+              LayoutText (anonymous) at (8,2) size 429x13
+                text run at (8,2) width 429: "The tests all render identically, and this browser may or may not grok CSS2 tables."
           LayoutText {#text} at (0,0) size 0x0
           LayoutInline {LABEL} at (0,0) size 203x18
             LayoutText {#text} at (0,19) size 72x18
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug26178-expected.png b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug26178-expected.png
index 2ebdacb..dfcf66f 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug26178-expected.png
+++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug26178-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug26178-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug26178-expected.txt
index ed36ede..2dea0483 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug26178-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug26178-expected.txt
@@ -15,8 +15,8 @@
               LayoutText {#text} at (1,1) size 59x18
                 text run at (1,1) width 59: "First row"
       LayoutBlockFlow {FORM} at (0,46) size 784x18
-        LayoutButton {INPUT} at (0,0) size 45.69x18 [bgcolor=#C0C0C0]
-          LayoutBlockFlow (anonymous) at (8,2) size 29.69x13
+        LayoutButton {INPUT} at (0,0) size 45.36x18 [bgcolor=#C0C0C0]
+          LayoutBlockFlow (anonymous) at (8,2) size 29.36x13
             LayoutText {#text} at (0,0) size 30x13
               text run at (0,0) width 30: "insert"
         LayoutText {#text} at (0,0) size 0x0
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug28928-expected.png b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug28928-expected.png
index 9be97bc9..d9e1a2e 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug28928-expected.png
+++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug28928-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug29326-expected.png b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug29326-expected.png
index a7dde3e..7543905 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug29326-expected.png
+++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug29326-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug29326-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug29326-expected.txt
index d8e9be2a4..bf91640d 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug29326-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug29326-expected.txt
@@ -8,8 +8,8 @@
           LayoutTableRow {TR} at (0,2) size 398x38
             LayoutTableCell {TD} at (2,2) size 394x38 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
               LayoutBlockFlow {FORM} at (2,2) size 390x18
-                LayoutMenuList {SELECT} at (0,0) size 54x18 [bgcolor=#F8F8F8]
-                  LayoutBlockFlow (anonymous) at (0,0) size 54x18
+                LayoutMenuList {SELECT} at (0,0) size 55x18 [bgcolor=#F8F8F8]
+                  LayoutBlockFlow (anonymous) at (0,0) size 55x18
                     LayoutText (anonymous) at (8,2) size 23x13
                       text run at (8,2) width 23: "Test"
                 LayoutText {#text} at (0,0) size 0x0
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug30559-expected.png b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug30559-expected.png
index 3ffdc42..fc71643 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug30559-expected.png
+++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug30559-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug30692-expected.png b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug30692-expected.png
index 723437da..42e4f5dc 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug30692-expected.png
+++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug30692-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug30692-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug30692-expected.txt
index fb6b805..d6f792cf 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug30692-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug30692-expected.txt
@@ -47,8 +47,8 @@
 layer at (11,92) size 622x75 clip at (12,93) size 620x73
   LayoutTextControl {TEXTAREA} at (1,1) size 622.39x75.19 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
     LayoutBlockFlow {DIV} at (3,3) size 616.39x13
-      LayoutText {#text} at (0,0) size 219x13
-        text run at (0,0) width 219: "BUG: the height of the textarea is not 80%"
+      LayoutText {#text} at (0,0) size 220x13
+        text run at (0,0) width 220: "BUG: the height of the textarea is not 80%"
 layer at (11,208) size 622x80 clip at (12,209) size 620x78
   LayoutTextControl {TEXTAREA} at (1,1) size 622.39x80 [bgcolor=#FFFFFF] [border: (1px solid #000000)]
     LayoutBlockFlow {DIV} at (3,3) size 616.39x13
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug33855-expected.png b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug33855-expected.png
index 3f112728..b4614314 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug33855-expected.png
+++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug33855-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug33855-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug33855-expected.txt
index fdc2a5f4..a387435 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug33855-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug33855-expected.txt
@@ -8,13 +8,13 @@
           LayoutTableSection {TBODY} at (0,0) size 784x24
             LayoutTableRow {TR} at (0,2) size 784x20 [bgcolor=#FFFFFF]
               LayoutTableCell {TD} at (2,2) size 66x20 [r=0 c=0 rs=1 cs=1]
-                LayoutButton {INPUT} at (1.33,1) size 63.33x18 [bgcolor=#C0C0C0]
-                  LayoutBlockFlow (anonymous) at (8,2) size 47.33x13
+                LayoutButton {INPUT} at (1.39,1) size 63.22x18 [bgcolor=#C0C0C0]
+                  LayoutBlockFlow (anonymous) at (8,2) size 47.22x13
                     LayoutText {#text} at (0,0) size 48x13
                       text run at (0,0) width 48: "Select all"
               LayoutTableCell {TD} at (70,2) size 52x20 [r=0 c=1 rs=1 cs=1]
-                LayoutButton {INPUT} at (1.23,1) size 49.53x18 [bgcolor=#C0C0C0]
-                  LayoutBlockFlow (anonymous) at (8,2) size 33.53x13
+                LayoutButton {INPUT} at (1.19,1) size 49.61x18 [bgcolor=#C0C0C0]
+                  LayoutBlockFlow (anonymous) at (8,2) size 33.61x13
                     LayoutText {#text} at (0,0) size 34x13
                       text run at (0,0) width 34: "Delete"
               LayoutTableCell {TD} at (124,2) size 81x20 [r=0 c=2 rs=1 cs=1]
@@ -22,17 +22,17 @@
                   LayoutBlockFlow (anonymous) at (8,2) size 62.45x13
                     LayoutText {#text} at (0,0) size 63x13
                       text run at (0,0) width 63: "Empty trash"
-              LayoutTableCell {TD} at (207,2) size 399x20 [r=0 c=3 rs=1 cs=1]
+              LayoutTableCell {TD} at (207,2) size 397x20 [r=0 c=3 rs=1 cs=1]
                 LayoutText {#text} at (1,1) size 4x18
                   text run at (1,1) width 4: " "
-              LayoutTableCell {TD} at (608,2) size 63x20 [r=0 c=4 rs=1 cs=1]
-                LayoutButton {INPUT} at (1.14,1) size 60.72x18 [bgcolor=#C0C0C0]
-                  LayoutBlockFlow (anonymous) at (8,2) size 44.72x13
-                    LayoutText {#text} at (0,0) size 45x13
-                      text run at (0,0) width 45: "Move to:"
-              LayoutTableCell {TD} at (673,2) size 109x20 [r=0 c=5 rs=1 cs=1]
-                LayoutMenuList {SELECT} at (1,1) size 107x18 [bgcolor=#F8F8F8]
-                  LayoutBlockFlow (anonymous) at (0,0) size 107x18
-                    LayoutText (anonymous) at (8,2) size 76x13
-                      text run at (8,2) width 76: "Choose folder "
+              LayoutTableCell {TD} at (606,2) size 64x20 [r=0 c=4 rs=1 cs=1]
+                LayoutButton {INPUT} at (1.38,1) size 61.23x18 [bgcolor=#C0C0C0]
+                  LayoutBlockFlow (anonymous) at (8,2) size 45.23x13
+                    LayoutText {#text} at (0,0) size 46x13
+                      text run at (0,0) width 46: "Move to:"
+              LayoutTableCell {TD} at (672,2) size 110x20 [r=0 c=5 rs=1 cs=1]
+                LayoutMenuList {SELECT} at (1,1) size 108x18 [bgcolor=#F8F8F8]
+                  LayoutBlockFlow (anonymous) at (0,0) size 108x18
+                    LayoutText (anonymous) at (8,2) size 77x13
+                      text run at (8,2) width 77: "Choose folder "
                 LayoutText {#text} at (0,0) size 0x0
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug39209-expected.png b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug39209-expected.png
index e41f46d..23927f4 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug39209-expected.png
+++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug39209-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug4382-expected.png b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug4382-expected.png
index 6751598..f0086ff2 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug4382-expected.png
+++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug4382-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug4382-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug4382-expected.txt
index 3d83b492..a64d06e9 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug4382-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug4382-expected.txt
@@ -16,8 +16,8 @@
         LayoutTextControl {INPUT} at (50.81,0) size 119x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)]
         LayoutText {#text} at (169,0) size 5x18
           text run at (169,0) width 5: " "
-        LayoutMenuList {SELECT} at (173.81,1) size 75x18 [bgcolor=#F8F8F8]
-          LayoutBlockFlow (anonymous) at (0,0) size 75x18
+        LayoutMenuList {SELECT} at (173.81,1) size 76x18 [bgcolor=#F8F8F8]
+          LayoutBlockFlow (anonymous) at (0,0) size 76x18
             LayoutText (anonymous) at (8,2) size 32x13
               text run at (8,2) width 32: "Excite"
         LayoutText {#text} at (0,0) size 0x0
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug4429-expected.png b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug4429-expected.png
index 960233a9..1662a14a 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug4429-expected.png
+++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug4429-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug44505-expected.png b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug44505-expected.png
index e23513f..b6e9350b 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug44505-expected.png
+++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug44505-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug44505-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug44505-expected.txt
index 988e2fe..6226b50c 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug44505-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug44505-expected.txt
@@ -110,8 +110,8 @@
     LayoutBlockFlow {FORM} at (2,2) size 150x19
       LayoutButton {BUTTON} at (0,1) size 200x18 [bgcolor=#C0C0C0] [border: none (2px outset #C0C0C0) none (2px outset #C0C0C0)]
         LayoutBlockFlow (anonymous) at (8,2) size 184x13
-          LayoutText {#text} at (75,0) size 34x13
-            text run at (75,0) width 34: "button"
+          LayoutText {#text} at (74,0) size 36x13
+            text run at (74,0) width 36: "button"
 layer at (167,219) size 138x23 clip at (168,220) size 136x21
   LayoutTableCell {TD} at (158,2) size 138x22 [bgcolor=#0000FF] [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1]
     LayoutText {#text} at (2,2) size 4x18
@@ -129,8 +129,8 @@
     LayoutBlockFlow {FORM} at (2,2) size 276x19
       LayoutButton {BUTTON} at (0,1) size 200x18 [bgcolor=#C0C0C0] [border: none (2px outset #C0C0C0) none (2px outset #C0C0C0)]
         LayoutBlockFlow (anonymous) at (8,2) size 184x13
-          LayoutText {#text} at (75,0) size 34x13
-            text run at (75,0) width 34: "button"
+          LayoutText {#text} at (74,0) size 36x13
+            text run at (74,0) width 36: "button"
 layer at (293,272) size 12x23 clip at (294,273) size 10x21
   LayoutTableCell {TD} at (284,2) size 12x22 [bgcolor=#0000FF] [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1]
     LayoutText {#text} at (2,2) size 4x18
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug46368-1-expected.png b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug46368-1-expected.png
index ce84b733..50ca0ca 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug46368-1-expected.png
+++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug46368-1-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug46368-1-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug46368-1-expected.txt
index 41ab6b65a5..864a778 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug46368-1-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug46368-1-expected.txt
@@ -33,19 +33,19 @@
                 text run at (2,38) width 205: "Bidi, Necko/Imglib, and more..."
       LayoutBlockFlow (anonymous) at (0,111) size 784x37
         LayoutBR {BR} at (0,0) size 0x18
-        LayoutButton {INPUT} at (0,19) size 51.41x18 [bgcolor=#C0C0C0]
-          LayoutBlockFlow (anonymous) at (8,2) size 35.41x13
+        LayoutButton {INPUT} at (0,19) size 51.58x18 [bgcolor=#C0C0C0]
+          LayoutBlockFlow (anonymous) at (8,2) size 35.58x13
             LayoutText {#text} at (0,0) size 36x13
               text run at (0,0) width 36: "Reload"
         LayoutText {#text} at (51,18) size 9x18
           text run at (51,18) width 9: "  "
-        LayoutButton {INPUT} at (59.41,19) size 82.20x18 [bgcolor=#C0C0C0]
+        LayoutButton {INPUT} at (59.58,19) size 82.20x18 [bgcolor=#C0C0C0]
           LayoutBlockFlow (anonymous) at (8,2) size 66.20x13
             LayoutText {#text} at (0,0) size 67x13
               text run at (0,0) width 67: "Change Font"
         LayoutText {#text} at (141,18) size 9x18
           text run at (141,18) width 9: "  "
-        LayoutTextControl {INPUT} at (149.61,18) size 131x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)]
+        LayoutTextControl {INPUT} at (149.78,18) size 131x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)]
         LayoutText {#text} at (0,0) size 0x0
 layer at (161,140) size 125x13
   LayoutBlockFlow {DIV} at (3,3) size 125x13
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug46368-2-expected.png b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug46368-2-expected.png
index cf44ad9..347df0a 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug46368-2-expected.png
+++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug46368-2-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug46368-2-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug46368-2-expected.txt
index 6457d29..df4cb46 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug46368-2-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug46368-2-expected.txt
@@ -21,19 +21,19 @@
                 text run at (2,2) width 245: "foo bar foo bar foo bar foo bar foo bar"
       LayoutBlockFlow (anonymous) at (0,65) size 784x37
         LayoutBR {BR} at (0,0) size 0x18
-        LayoutButton {INPUT} at (0,19) size 51.41x18 [bgcolor=#C0C0C0]
-          LayoutBlockFlow (anonymous) at (8,2) size 35.41x13
+        LayoutButton {INPUT} at (0,19) size 51.58x18 [bgcolor=#C0C0C0]
+          LayoutBlockFlow (anonymous) at (8,2) size 35.58x13
             LayoutText {#text} at (0,0) size 36x13
               text run at (0,0) width 36: "Reload"
         LayoutText {#text} at (51,18) size 9x18
           text run at (51,18) width 9: "  "
-        LayoutButton {INPUT} at (59.41,19) size 82.20x18 [bgcolor=#C0C0C0]
+        LayoutButton {INPUT} at (59.58,19) size 82.20x18 [bgcolor=#C0C0C0]
           LayoutBlockFlow (anonymous) at (8,2) size 66.20x13
             LayoutText {#text} at (0,0) size 67x13
               text run at (0,0) width 67: "Change Font"
         LayoutText {#text} at (141,18) size 9x18
           text run at (141,18) width 9: "  "
-        LayoutTextControl {INPUT} at (149.61,18) size 131x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)]
+        LayoutTextControl {INPUT} at (149.78,18) size 131x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)]
         LayoutText {#text} at (0,0) size 0x0
 layer at (161,94) size 125x13
   LayoutBlockFlow {DIV} at (3,3) size 125x13
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug46480-1-expected.png b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug46480-1-expected.png
index 611822a..a0227a1 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug46480-1-expected.png
+++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug46480-1-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug46480-2-expected.png b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug46480-2-expected.png
index 27884584..78745b4 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug46480-2-expected.png
+++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug46480-2-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug51037-expected.png b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug51037-expected.png
index c7e38c02..d81468a 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug51037-expected.png
+++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug51037-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug51037-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug51037-expected.txt
index 50a06f5a..7b5af92 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug51037-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug51037-expected.txt
@@ -15,18 +15,18 @@
           text run at (0,0) width 34: "Top: "
         LayoutTextControl {INPUT} at (33.09,0) size 131x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)]
       LayoutBlockFlow {P} at (0,104) size 784x18
-        LayoutButton {INPUT} at (0,0) size 43.94x18 [bgcolor=#C0C0C0]
-          LayoutBlockFlow (anonymous) at (8,2) size 27.94x13
-            LayoutText {#text} at (0,0) size 28x13
-              text run at (0,0) width 28: "Move"
+        LayoutButton {INPUT} at (0,0) size 44.36x18 [bgcolor=#C0C0C0]
+          LayoutBlockFlow (anonymous) at (8,2) size 28.36x13
+            LayoutText {#text} at (0,0) size 29x13
+              text run at (0,0) width 29: "Move"
 layer at (46,45) size 125x13
   LayoutBlockFlow {DIV} at (3,3) size 125x13
-    LayoutText {#text} at (0,0) size 31x13
-      text run at (0,0) width 31: "120px"
+    LayoutText {#text} at (0,0) size 32x13
+      text run at (0,0) width 32: "120px"
 layer at (44,80) size 125x13
   LayoutBlockFlow {DIV} at (3,3) size 125x13
-    LayoutText {#text} at (0,0) size 31x13
-      text run at (0,0) width 31: "120px"
+    LayoutText {#text} at (0,0) size 32x13
+      text run at (0,0) width 32: "120px"
 layer at (250,120) size 30x48
   LayoutTable (positioned) {TABLE} at (250,120) size 30x48 [border: (1px outset #808080)]
     LayoutTableSection {TBODY} at (1,1) size 28x46
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug51727-expected.png b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug51727-expected.png
index 8924635..736547b 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug51727-expected.png
+++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug51727-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug51727-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug51727-expected.txt
index a641299..32e693b 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug51727-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug51727-expected.txt
@@ -4,15 +4,15 @@
   LayoutBlockFlow {HTML} at (0,0) size 800x80
     LayoutBlockFlow {BODY} at (8,8) size 784x64
       LayoutBlockFlow {FORM} at (0,0) size 784x38
-        LayoutButton {INPUT} at (0,1) size 150.98x18 [bgcolor=#C0C0C0]
-          LayoutBlockFlow (anonymous) at (8,2) size 134.98x13
+        LayoutButton {INPUT} at (0,1) size 150.92x18 [bgcolor=#C0C0C0]
+          LayoutBlockFlow (anonymous) at (8,2) size 134.92x13
             LayoutText {#text} at (0,0) size 135x13
               text run at (0,0) width 135: "(1) Fill cell with long string"
         LayoutBR {BR} at (150,0) size 1x18
-        LayoutButton {INPUT} at (0,20) size 157.39x18 [bgcolor=#C0C0C0]
-          LayoutBlockFlow (anonymous) at (8,2) size 141.39x13
-            LayoutText {#text} at (0,0) size 142x13
-              text run at (0,0) width 142: "(2) Fill cell with short string"
+        LayoutButton {INPUT} at (0,20) size 157.02x18 [bgcolor=#C0C0C0]
+          LayoutBlockFlow (anonymous) at (8,2) size 141.02x13
+            LayoutText {#text} at (0,0) size 141x13
+              text run at (0,0) width 141: "(2) Fill cell with short string"
         LayoutBR {BR} at (157,19) size 1x18
       LayoutTable {TABLE} at (0,38) size 83x26
         LayoutTableSection {TBODY} at (0,0) size 83x26
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug52505-expected.png b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug52505-expected.png
index 7e5b6606..67a1060 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug52505-expected.png
+++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug52505-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug52505-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug52505-expected.txt
index c1d148d..a8ad5a6b 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug52505-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug52505-expected.txt
@@ -4,14 +4,14 @@
   LayoutBlockFlow {HTML} at (0,0) size 800x106
     LayoutBlockFlow {BODY} at (8,8) size 784x90
       LayoutBlockFlow {FORM} at (0,0) size 784x36
-        LayoutButton {INPUT} at (0,0) size 250.20x18 [bgcolor=#C0C0C0]
-          LayoutBlockFlow (anonymous) at (8,2) size 234.20x13
+        LayoutButton {INPUT} at (0,0) size 250.64x18 [bgcolor=#C0C0C0]
+          LayoutBlockFlow (anonymous) at (8,2) size 234.64x13
             LayoutText {#text} at (0,0) size 235x13
               text run at (0,0) width 235: "[Step 1] Set cell width to 60px (nothing seen)"
-        LayoutButton {INPUT} at (0,18) size 254.75x18 [bgcolor=#C0C0C0]
-          LayoutBlockFlow (anonymous) at (8,2) size 238.75x13
-            LayoutText {#text} at (0,0) size 239x13
-              text run at (0,0) width 239: "[Step 2] Set cell width to 20px (garbage seen)"
+        LayoutButton {INPUT} at (0,18) size 255.28x18 [bgcolor=#C0C0C0]
+          LayoutBlockFlow (anonymous) at (8,2) size 239.28x13
+            LayoutText {#text} at (0,0) size 240x13
+              text run at (0,0) width 240: "[Step 2] Set cell width to 20px (garbage seen)"
       LayoutTable {TABLE} at (0,36) size 34x54
         LayoutTableSection {TBODY} at (0,0) size 34x54
           LayoutTableRow {TR} at (0,2) size 34x24
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug52506-expected.png b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug52506-expected.png
index 43c0b03..70c5f88 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug52506-expected.png
+++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug52506-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug52506-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug52506-expected.txt
index 08cdda66..46547df 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug52506-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug52506-expected.txt
@@ -4,12 +4,12 @@
   LayoutBlockFlow {HTML} at (0,0) size 800x114
     LayoutBlockFlow {BODY} at (8,8) size 784x98
       LayoutBlockFlow {FORM} at (0,0) size 784x36
-        LayoutButton {INPUT} at (0,0) size 176.41x18 [bgcolor=#C0C0C0]
-          LayoutBlockFlow (anonymous) at (8,2) size 160.41x13
+        LayoutButton {INPUT} at (0,0) size 176.83x18 [bgcolor=#C0C0C0]
+          LayoutBlockFlow (anonymous) at (8,2) size 160.83x13
             LayoutText {#text} at (0,0) size 161x13
               text run at (0,0) width 161: "[Step 1] Set cell height to 60px"
-        LayoutButton {INPUT} at (0,18) size 177.55x18 [bgcolor=#C0C0C0]
-          LayoutBlockFlow (anonymous) at (8,2) size 161.55x13
+        LayoutButton {INPUT} at (0,18) size 177.98x18 [bgcolor=#C0C0C0]
+          LayoutBlockFlow (anonymous) at (8,2) size 161.98x13
             LayoutText {#text} at (0,0) size 162x13
               text run at (0,0) width 162: "[Step 2] Set cell height to 20px"
       LayoutTable {TABLE} at (0,36) size 42x62
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug59354-expected.png b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug59354-expected.png
index a5e8a71..c3ce2ff 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug59354-expected.png
+++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug59354-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug59354-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug59354-expected.txt
index 2cf3d99..ee1a3ed 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug59354-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug59354-expected.txt
@@ -56,5 +56,5 @@
                                                 LayoutText {#text} at (0,0) size 0x0
 layer at (241,97) size 125x13 scrollWidth 189
   LayoutBlockFlow {DIV} at (3,3) size 125x13
-    LayoutText {#text} at (0,0) size 188x13
-      text run at (0,0) width 188: "simon.king@pipinghotnetworks.com"
+    LayoutText {#text} at (0,0) size 189x13
+      text run at (0,0) width 189: "simon.king@pipinghotnetworks.com"
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug60749-expected.png b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug60749-expected.png
index 0c046792..63b71a6 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug60749-expected.png
+++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug60749-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug60749-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug60749-expected.txt
index 7fd1795..55322c0 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug60749-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug60749-expected.txt
@@ -19,8 +19,8 @@
               text run at (0,0) width 70: "change width"
         LayoutText {#text} at (85,0) size 5x18
           text run at (85,0) width 5: " "
-        LayoutButton {INPUT} at (89.78,1) size 174.59x18 [bgcolor=#C0C0C0]
-          LayoutBlockFlow (anonymous) at (8,2) size 158.59x13
+        LayoutButton {INPUT} at (89.78,1) size 174.97x18 [bgcolor=#C0C0C0]
+          LayoutBlockFlow (anonymous) at (8,2) size 158.97x13
             LayoutText {#text} at (0,0) size 159x13
               text run at (0,0) width 159: "change width with table reflow"
         LayoutText {#text} at (0,0) size 0x0
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug68912-expected.png b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug68912-expected.png
index def1f45..568c98f 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug68912-expected.png
+++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug68912-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug68912-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug68912-expected.txt
index 953c9062..4e25d22 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug68912-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug68912-expected.txt
@@ -9,8 +9,8 @@
       LayoutBlockFlow {P} at (0,34) size 784x19
         LayoutText {#text} at (0,0) size 42x18
           text run at (0,0) width 42: "Crash "
-        LayoutButton {BUTTON} at (41.33,1) size 88.69x18 [bgcolor=#C0C0C0] [border: none (2px outset #C0C0C0) none (2px outset #C0C0C0)]
-          LayoutBlockFlow (anonymous) at (8,2) size 72.69x13
+        LayoutButton {BUTTON} at (41.33,1) size 88.91x18 [bgcolor=#C0C0C0] [border: none (2px outset #C0C0C0) none (2px outset #C0C0C0)]
+          LayoutBlockFlow (anonymous) at (8,2) size 72.91x13
             LayoutText {#text} at (0,0) size 73x13
               text run at (0,0) width 73: "TR.cells = null"
         LayoutText {#text} at (0,0) size 0x0
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug7342-expected.png b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug7342-expected.png
index 1468154f..641b2a7a 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug7342-expected.png
+++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug7342-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug7342-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug7342-expected.txt
index 1ad87e4..9209db4 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug7342-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug7342-expected.txt
@@ -58,8 +58,8 @@
                             LayoutText {#text} at (0,0) size 0x0
                           LayoutText {#text} at (0,0) size 0x0
                         LayoutTableCell {TD} at (349,4) size 102x28 [border: (1px inset #808080)] [r=0 c=3 rs=1 cs=1]
-                          LayoutButton {INPUT} at (5,5) size 52.08x18 [bgcolor=#C0C0C0]
-                            LayoutBlockFlow (anonymous) at (8,2) size 36.08x13
+                          LayoutButton {INPUT} at (5,5) size 52.25x18 [bgcolor=#C0C0C0]
+                            LayoutBlockFlow (anonymous) at (8,2) size 36.25x13
                               LayoutText {#text} at (0,0) size 37x13
                                 text run at (0,0) width 37: "Search"
                           LayoutText {#text} at (0,0) size 0x0
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug8032-1-expected.png b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug8032-1-expected.png
index 3750390..30ca33f 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug8032-1-expected.png
+++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug8032-1-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug8858-expected.png b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug8858-expected.png
index a59487b..f47b84e 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug8858-expected.png
+++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug8858-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug96334-expected.png b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug96334-expected.png
index c64b5a37..be17b42 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug96334-expected.png
+++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug96334-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug96334-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug96334-expected.txt
index 0c0ae7c..bdf9c1c 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug96334-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/bugs/bug96334-expected.txt
@@ -1,45 +1,45 @@
-layer at (0,0) size 800x600 scrollWidth 984
+layer at (0,0) size 800x600 scrollWidth 985
   LayoutView at (0,0) size 800x600
 layer at (0,0) size 800x600
   LayoutBlockFlow {HTML} at (0,0) size 800x600
     LayoutBlockFlow {BODY} at (8,8) size 784x584
-      LayoutTable {TABLE} at (0,0) size 976x139 [border: (2px solid #0000FF)]
-        LayoutTableSection {TBODY} at (2,2) size 972x135
-          LayoutTableRow {TR} at (0,2) size 972x131
-            LayoutTableCell {TD} at (2,2) size 210x131 [border: (1px solid #C0C0C0)] [r=0 c=0 rs=1 cs=1]
-              LayoutTable {TABLE} at (2,2) size 206x127 [border: (2px solid #008000)]
-                LayoutTableSection {TBODY} at (2,2) size 202x123
-                  LayoutTableRow {TR} at (0,2) size 202x83
-                    LayoutTableCell {TD} at (2,2) size 198x83 [border: (1px solid #C0C0C0)] [r=0 c=0 rs=1 cs=1]
+      LayoutTable {TABLE} at (0,0) size 977x139 [border: (2px solid #0000FF)]
+        LayoutTableSection {TBODY} at (2,2) size 973x135
+          LayoutTableRow {TR} at (0,2) size 973x131
+            LayoutTableCell {TD} at (2,2) size 211x131 [border: (1px solid #C0C0C0)] [r=0 c=0 rs=1 cs=1]
+              LayoutTable {TABLE} at (2,2) size 207x127 [border: (2px solid #008000)]
+                LayoutTableSection {TBODY} at (2,2) size 203x123
+                  LayoutTableRow {TR} at (0,2) size 203x83
+                    LayoutTableCell {TD} at (2,2) size 199x83 [border: (1px solid #C0C0C0)] [r=0 c=0 rs=1 cs=1]
                       LayoutTable {TABLE} at (2,2) size 143x31 [border: (2px solid #FF0000)]
                         LayoutTableSection {TBODY} at (2,2) size 139x27
                           LayoutTableRow {TR} at (0,2) size 139x23
                             LayoutTableCell {TD} at (2,2) size 135x23 [border: (1px solid #C0C0C0)] [r=0 c=0 rs=1 cs=1]
                               LayoutTextControl {INPUT} at (2,2) size 131x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)]
                               LayoutText {#text} at (0,0) size 0x0
-                      LayoutTable {TABLE} at (2,33) size 194x48 [border: (2px solid #FF0000)]
-                        LayoutTableSection {TBODY} at (2,2) size 190x44
-                          LayoutTableRow {TR} at (0,2) size 190x40
-                            LayoutTableCell {TD} at (2,2) size 186x40 [border: (1px solid #C0C0C0)] [r=0 c=0 rs=1 cs=1]
+                      LayoutTable {TABLE} at (2,33) size 195x48 [border: (2px solid #FF0000)]
+                        LayoutTableSection {TBODY} at (2,2) size 191x44
+                          LayoutTableRow {TR} at (0,2) size 191x40
+                            LayoutTableCell {TD} at (2,2) size 187x40 [border: (1px solid #C0C0C0)] [r=0 c=0 rs=1 cs=1]
                               LayoutText {#text} at (2,2) size 171x36
                                 text run at (2,2) width 171: "THIS TABLE NEEDS TO"
                                 text run at (2,20) width 67: "BE HERE"
-                  LayoutTableRow {TR} at (0,87) size 202x34
-                    LayoutTableCell {TD} at (2,87) size 198x34 [border: (1px solid #C0C0C0)] [r=1 c=0 rs=1 cs=1]
-                      LayoutTable {TABLE} at (2,2) size 194x30 [border: (2px solid #FF0000)]
-                        LayoutTableSection {TBODY} at (2,2) size 190x26
-                          LayoutTableRow {TR} at (0,2) size 190x22
-                            LayoutTableCell {TD} at (2,2) size 186x22 [border: (1px solid #C0C0C0)] [r=0 c=0 rs=1 cs=1]
-                              LayoutMenuList {SELECT} at (2,2) size 182x18 [bgcolor=#F8F8F8]
-                                LayoutBlockFlow (anonymous) at (0,0) size 182x18
-                                  LayoutText (anonymous) at (8,2) size 151x13
-                                    text run at (8,2) width 151: "USE THIS JAVASCRIPT HERE"
+                  LayoutTableRow {TR} at (0,87) size 203x34
+                    LayoutTableCell {TD} at (2,87) size 199x34 [border: (1px solid #C0C0C0)] [r=1 c=0 rs=1 cs=1]
+                      LayoutTable {TABLE} at (2,2) size 195x30 [border: (2px solid #FF0000)]
+                        LayoutTableSection {TBODY} at (2,2) size 191x26
+                          LayoutTableRow {TR} at (0,2) size 191x22
+                            LayoutTableCell {TD} at (2,2) size 187x22 [border: (1px solid #C0C0C0)] [r=0 c=0 rs=1 cs=1]
+                              LayoutMenuList {SELECT} at (2,2) size 183x18 [bgcolor=#F8F8F8]
+                                LayoutBlockFlow (anonymous) at (0,0) size 183x18
+                                  LayoutText (anonymous) at (8,2) size 152x13
+                                    text run at (8,2) width 152: "USE THIS JAVASCRIPT HERE"
                               LayoutText {#text} at (0,0) size 0x0
-            LayoutTableCell {TD} at (214,2) size 756x40 [border: (1px solid #C0C0C0)] [r=0 c=1 rs=1 cs=1]
+            LayoutTableCell {TD} at (215,2) size 756x40 [border: (1px solid #C0C0C0)] [r=0 c=1 rs=1 cs=1]
               LayoutText {#text} at (2,2) size 752x36
                 text run at (2,2) width 752: "KEEPoTHEoTEXToHEREoASoLONGoASoPOSSIBLEooKEEPoTHEoTEXToHEREoASoLONGoASoPOSSIBLE"
                 text run at (2,20) width 602: "THIS SIMULATES THE PROBLEM ON THE WWW.MAPBLAST.COM/ \"CREATE MAP\""
-layer at (29,29) size 125x13 scrollWidth 132
+layer at (29,29) size 125x13 scrollWidth 133
   LayoutBlockFlow {DIV} at (3,3) size 125x13
-    LayoutText {#text} at (0,0) size 131x13
-      text run at (0,0) width 131: "THIS NEEDS THIS VALUE"
+    LayoutText {#text} at (0,0) size 132x13
+      text run at (0,0) width 132: "THIS NEEDS THIS VALUE"
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/collapsing_borders/bug41262-4-expected.png b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/collapsing_borders/bug41262-4-expected.png
index dda01e2..9fa5109b 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/collapsing_borders/bug41262-4-expected.png
+++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/collapsing_borders/bug41262-4-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/collapsing_borders/bug41262-4-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/collapsing_borders/bug41262-4-expected.txt
index 09f5606d..f85ce5a 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/collapsing_borders/bug41262-4-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/collapsing_borders/bug41262-4-expected.txt
@@ -29,13 +29,13 @@
                   LayoutText {#text} at (4,4) size 60x18
                     text run at (4,4) width 60: "6:00 a.m."
           LayoutBlockFlow {P} at (0,96) size 704x19
-            LayoutButton {INPUT} at (289.84,1) size 61.28x18 [bgcolor=#C0C0C0]
-              LayoutBlockFlow (anonymous) at (8,2) size 45.28x13
+            LayoutButton {INPUT} at (289.81,1) size 61.36x18 [bgcolor=#C0C0C0]
+              LayoutBlockFlow (anonymous) at (8,2) size 45.36x13
                 LayoutText {#text} at (0,0) size 46x13
                   text run at (0,0) width 46: "separate"
             LayoutText {#text} at (351,0) size 5x18
               text run at (351,0) width 5: " "
-            LayoutButton {INPUT} at (355.13,1) size 59.02x18 [bgcolor=#C0C0C0]
+            LayoutButton {INPUT} at (355.17,1) size 59.02x18 [bgcolor=#C0C0C0]
               LayoutBlockFlow (anonymous) at (8,2) size 43.02x13
                 LayoutText {#text} at (0,0) size 43x13
                   text run at (0,0) width 43: "collapse"
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/core/bloomberg-expected.png b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/core/bloomberg-expected.png
index d30f0a4..84b3dbf 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/core/bloomberg-expected.png
+++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/core/bloomberg-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/core/margins-expected.png b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/core/margins-expected.png
index b23a51b2..b02c2bee 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/core/margins-expected.png
+++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/core/margins-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/core/margins-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/core/margins-expected.txt
index 17fdcb0..56ef523 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/core/margins-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/core/margins-expected.txt
@@ -11,8 +11,8 @@
           LayoutTableRow {TR} at (0,2) size 398x38
             LayoutTableCell {TD} at (2,2) size 394x38 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
               LayoutBlockFlow {FORM} at (2,2) size 390x18
-                LayoutMenuList {SELECT} at (0,0) size 54x18 [bgcolor=#F8F8F8]
-                  LayoutBlockFlow (anonymous) at (0,0) size 54x18
+                LayoutMenuList {SELECT} at (0,0) size 55x18 [bgcolor=#F8F8F8]
+                  LayoutBlockFlow (anonymous) at (0,0) size 55x18
                     LayoutText (anonymous) at (8,2) size 23x13
                       text run at (8,2) width 23: "Test"
                 LayoutText {#text} at (0,0) size 0x0
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/dom/tableDom-expected.png b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/dom/tableDom-expected.png
index 58e6a13..2db23d3 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/dom/tableDom-expected.png
+++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/dom/tableDom-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/dom/tableDom-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/dom/tableDom-expected.txt
index 7da4bf3..ab91139 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/dom/tableDom-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/dom/tableDom-expected.txt
@@ -4,28 +4,28 @@
   LayoutBlockFlow {HTML} at (0,0) size 800x600
     LayoutBlockFlow {BODY} at (8,8) size 784x584
       LayoutBlockFlow {FORM} at (0,0) size 784x19
-        LayoutMenuList {SELECT} at (0,1) size 92x18 [bgcolor=#F8F8F8]
-          LayoutBlockFlow (anonymous) at (0,0) size 92x18
+        LayoutMenuList {SELECT} at (0,1) size 93x18 [bgcolor=#F8F8F8]
+          LayoutBlockFlow (anonymous) at (0,0) size 93x18
             LayoutText (anonymous) at (8,2) size 61x13
               text run at (8,2) width 61: "append cell"
-        LayoutText {#text} at (92,0) size 53x18
-          text run at (92,0) width 53: "   tbody "
-        LayoutTextControl {INPUT} at (144.44,0) size 41x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)]
-        LayoutText {#text} at (185,0) size 42x18
-          text run at (185,0) width 42: "   row "
-        LayoutTextControl {INPUT} at (226.31,0) size 41x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)]
-        LayoutText {#text} at (267,0) size 36x18
-          text run at (267,0) width 36: "   col "
-        LayoutTextControl {INPUT} at (302.86,0) size 41x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)]
-        LayoutText {#text} at (343,0) size 76x18
-          text run at (343,0) width 76: "   row span "
-        LayoutTextControl {INPUT} at (418.06,0) size 41x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)]
-        LayoutText {#text} at (459,0) size 69x18
-          text run at (459,0) width 69: "   col span "
-        LayoutTextControl {INPUT} at (527.94,0) size 41x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)]
-        LayoutText {#text} at (568,0) size 21x18
-          text run at (568,0) width 21: "     "
-        LayoutButton {INPUT} at (588.94,1) size 40.53x18 [bgcolor=#C0C0C0]
+        LayoutText {#text} at (93,0) size 53x18
+          text run at (93,0) width 53: "   tbody "
+        LayoutTextControl {INPUT} at (145.44,0) size 41x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)]
+        LayoutText {#text} at (186,0) size 42x18
+          text run at (186,0) width 42: "   row "
+        LayoutTextControl {INPUT} at (227.31,0) size 41x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)]
+        LayoutText {#text} at (268,0) size 36x18
+          text run at (268,0) width 36: "   col "
+        LayoutTextControl {INPUT} at (303.86,0) size 41x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)]
+        LayoutText {#text} at (344,0) size 76x18
+          text run at (344,0) width 76: "   row span "
+        LayoutTextControl {INPUT} at (419.06,0) size 41x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)]
+        LayoutText {#text} at (460,0) size 69x18
+          text run at (460,0) width 69: "   col span "
+        LayoutTextControl {INPUT} at (528.94,0) size 41x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)]
+        LayoutText {#text} at (569,0) size 21x18
+          text run at (569,0) width 21: "     "
+        LayoutButton {INPUT} at (589.94,1) size 40.53x18 [bgcolor=#C0C0C0]
           LayoutBlockFlow (anonymous) at (8,2) size 24.53x13
             LayoutText {#text} at (0,0) size 25x13
               text run at (0,0) width 25: "Do It"
@@ -47,23 +47,23 @@
                 text run at (2,2) width 24: "c22"
       LayoutBlockFlow (anonymous) at (0,105) size 784x18
         LayoutBR {BR} at (0,0) size 0x18
-layer at (155,11) size 35x13
+layer at (156,11) size 35x13
   LayoutBlockFlow {DIV} at (3,3) size 35x13
     LayoutText {#text} at (0,0) size 7x13
       text run at (0,0) width 7: "0"
-layer at (237,11) size 35x13
+layer at (238,11) size 35x13
   LayoutBlockFlow {DIV} at (3,3) size 35x13
     LayoutText {#text} at (0,0) size 7x13
       text run at (0,0) width 7: "0"
-layer at (314,11) size 35x13
+layer at (315,11) size 35x13
   LayoutBlockFlow {DIV} at (3,3) size 35x13
     LayoutText {#text} at (0,0) size 7x13
       text run at (0,0) width 7: "0"
-layer at (429,11) size 35x13
+layer at (430,11) size 35x13
   LayoutBlockFlow {DIV} at (3,3) size 35x13
     LayoutText {#text} at (0,0) size 6x13
       text run at (0,0) width 6: "1"
-layer at (539,11) size 35x13
+layer at (540,11) size 35x13
   LayoutBlockFlow {DIV} at (3,3) size 35x13
     LayoutText {#text} at (0,0) size 6x13
       text run at (0,0) width 6: "1"
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/other/move_row-expected.png b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/other/move_row-expected.png
index af44f4b..8d32efcd 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/other/move_row-expected.png
+++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/other/move_row-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/other/test3-expected.png b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/other/test3-expected.png
index 02e2d6b..aac730c7 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/other/test3-expected.png
+++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/other/test3-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/other/test6-expected.png b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/other/test6-expected.png
index 3d3b6c5..e6104aa4 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/other/test6-expected.png
+++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/other/test6-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/other/wa_table_thtd_rowspan-expected.png b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/other/wa_table_thtd_rowspan-expected.png
index 0edb31b..174fd01a 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/other/wa_table_thtd_rowspan-expected.png
+++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/other/wa_table_thtd_rowspan-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/other/wa_table_tr_align-expected.png b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/other/wa_table_tr_align-expected.png
index 2ad1279..1ad6a142 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/other/wa_table_tr_align-expected.png
+++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla/other/wa_table_tr_align-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla_expected_failures/bugs/bug1128-expected.png b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla_expected_failures/bugs/bug1128-expected.png
index fc3fd5b..c02d9469 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla_expected_failures/bugs/bug1128-expected.png
+++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla_expected_failures/bugs/bug1128-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla_expected_failures/bugs/bug1725-expected.png b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla_expected_failures/bugs/bug1725-expected.png
index a84f408..aac5b2c6 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla_expected_failures/bugs/bug1725-expected.png
+++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla_expected_failures/bugs/bug1725-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla_expected_failures/bugs/bug1725-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla_expected_failures/bugs/bug1725-expected.txt
index fe2063ce..35eb4a31 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla_expected_failures/bugs/bug1725-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla_expected_failures/bugs/bug1725-expected.txt
@@ -23,8 +23,8 @@
                 LayoutTableSection {TBODY} at (0,0) size 440x24
                   LayoutTableRow {TR} at (0,2) size 440x20
                     LayoutTableCell {TD} at (2,2) size 217x20 [r=0 c=0 rs=1 cs=1]
-                      LayoutButton {INPUT} at (1,1) size 93.73x18 [bgcolor=#C0C0C0]
-                        LayoutBlockFlow (anonymous) at (8,2) size 77.73x13
+                      LayoutButton {INPUT} at (1,1) size 93.59x18 [bgcolor=#C0C0C0]
+                        LayoutBlockFlow (anonymous) at (8,2) size 77.59x13
                           LayoutText {#text} at (0,0) size 78x13
                             text run at (0,0) width 78: "Submit Criteria"
                     LayoutTableCell {TD} at (221,2) size 217x20 [r=0 c=1 rs=1 cs=1]
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla_expected_failures/bugs/bug2479-5-expected.png b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla_expected_failures/bugs/bug2479-5-expected.png
index bd530e3..b285487 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla_expected_failures/bugs/bug2479-5-expected.png
+++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla_expected_failures/bugs/bug2479-5-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla_expected_failures/bugs/bug2479-5-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla_expected_failures/bugs/bug2479-5-expected.txt
index 2f1fd4ef..572887f 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla_expected_failures/bugs/bug2479-5-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla_expected_failures/bugs/bug2479-5-expected.txt
@@ -5,17 +5,17 @@
     LayoutTable (anonymous) at (16,16) size 737x1396
       LayoutTableSection (anonymous) at (0,0) size 737x1396
         LayoutTableRow (anonymous) at (0,0) size 737x1396
-          LayoutTableCell {HEAD} at (0,0) size 251x472 [color=#FFFFFF] [bgcolor=#FF0000] [border: (5px solid #FFFFFF)] [r=0 c=0 rs=1 cs=1]
-            LayoutBlockFlow {META} at (21,37) size 209x2 [border: (1px dotted #FFFFFF)]
-            LayoutBlockFlow {META} at (21,55) size 209x2 [border: (1px dotted #FFFFFF)]
-            LayoutBlockFlow {META} at (21,73) size 209x2 [border: (1px dotted #FFFFFF)]
-            LayoutBlockFlow {META} at (21,91) size 209x2 [border: (1px dotted #FFFFFF)]
-            LayoutBlockFlow {TITLE} at (21,109) size 209x56 [border: (1px dotted #FFFFFF)]
+          LayoutTableCell {HEAD} at (0,0) size 250x472 [color=#FFFFFF] [bgcolor=#FF0000] [border: (5px solid #FFFFFF)] [r=0 c=0 rs=1 cs=1]
+            LayoutBlockFlow {META} at (21,37) size 208x2 [border: (1px dotted #FFFFFF)]
+            LayoutBlockFlow {META} at (21,55) size 208x2 [border: (1px dotted #FFFFFF)]
+            LayoutBlockFlow {META} at (21,73) size 208x2 [border: (1px dotted #FFFFFF)]
+            LayoutBlockFlow {META} at (21,91) size 208x2 [border: (1px dotted #FFFFFF)]
+            LayoutBlockFlow {TITLE} at (21,109) size 208x56 [border: (1px dotted #FFFFFF)]
               LayoutText {#text} at (1,1) size 188x54
                 text run at (1,1) width 188: "Evil Tests: Rendering BODY"
                 text run at (1,19) width 163: "and HEAD as children of"
                 text run at (1,37) width 67: "HTML - 2"
-            LayoutBlockFlow {STYLE} at (21,181) size 209x254 [border: (1px dotted #FFFFFF)]
+            LayoutBlockFlow {STYLE} at (21,181) size 208x254 [border: (1px dotted #FFFFFF)]
               LayoutText {#text} at (1,1) size 206x252
                 text run at (1,1) width 83: "/* Layout */ "
                 text run at (83,1) width 112: "HTML { display:"
@@ -37,8 +37,8 @@
                 text run at (1,199) width 206: "color: white; background: red; }"
                 text run at (1,217) width 151: "BODY { color: yellow;"
                 text run at (1,235) width 124: "background: teal; }"
-          LayoutTableCell {BODY} at (251,41) size 486x1355 [color=#FFFF00] [bgcolor=#008080] [border: (5px solid #FFFF00)] [r=0 c=1 rs=1 cs=1]
-            LayoutBlockFlow {H1} at (21,53) size 444x76 [border: (1px dotted #FFFF00)]
+          LayoutTableCell {BODY} at (250,41) size 487x1355 [color=#FFFF00] [bgcolor=#008080] [border: (5px solid #FFFF00)] [r=0 c=1 rs=1 cs=1]
+            LayoutBlockFlow {H1} at (21,53) size 445x76 [border: (1px dotted #FFFF00)]
               LayoutText {#text} at (1,1) size 152x37
                 text run at (1,1) width 152: "Rendering "
               LayoutInline {CODE} at (0,0) size 63x30
@@ -57,7 +57,7 @@
                   text run at (156,43) width 64: "HTML"
               LayoutText {#text} at (219,38) size 43x37
                 text run at (219,38) width 43: " - 2"
-            LayoutBlockFlow {P} at (21,161) size 444x38 [border: (1px dotted #FFFF00)]
+            LayoutBlockFlow {P} at (21,161) size 445x38 [border: (1px dotted #FFFF00)]
               LayoutText {#text} at (1,1) size 393x18
                 text run at (1,1) width 393: "If you have any comments to make regarding this test, e-mail"
               LayoutInline {A} at (0,0) size 186x18 [color=#0000EE]
@@ -65,11 +65,11 @@
                   text run at (1,19) width 186: "py8ieh=eviltests@bath.ac.uk"
               LayoutText {#text} at (186,19) size 5x18
                 text run at (186,19) width 5: "."
-            LayoutBlockFlow {DL} at (21,215) size 444x92 [border: (1px dotted #FFFF00)]
-              LayoutBlockFlow {DT} at (1,1) size 442x18
+            LayoutBlockFlow {DL} at (21,215) size 445x92 [border: (1px dotted #FFFF00)]
+              LayoutBlockFlow {DT} at (1,1) size 443x18
                 LayoutText {#text} at (0,0) size 83x18
                   text run at (0,0) width 83: "Prerequisites"
-              LayoutBlockFlow {DD} at (41,19) size 402x72
+              LayoutBlockFlow {DD} at (41,19) size 403x72
                 LayoutText {#text} at (0,0) size 392x54
                   text run at (0,0) width 392: "Browsers that are subjected to this test should support the the"
                   text run at (0,18) width 388: "background, padding, margin, border and color properties of"
@@ -80,14 +80,14 @@
                 LayoutText {#text} at (222,36) size 400x36
                   text run at (222,36) width 178: " property and fixed position"
                   text run at (0,54) width 109: "stuff from CSS2."
-            LayoutBlockFlow {H2} at (21,331) size 444x58 [border: (1px dotted #FFFF00)]
+            LayoutBlockFlow {H2} at (21,331) size 445x58 [border: (1px dotted #FFFF00)]
               LayoutText {#text} at (1,1) size 440x56
                 text run at (1,1) width 440: "1. Making the BODY and the HEAD into a"
                 text run at (1,29) width 51: "table"
-            LayoutBlockFlow {P} at (21,413) size 444x20 [border: (1px dotted #FFFF00)]
+            LayoutBlockFlow {P} at (21,413) size 445x20 [border: (1px dotted #FFFF00)]
               LayoutText {#text} at (1,1) size 264x18
                 text run at (1,1) width 264: "This is really evil, but completely valid..."
-            LayoutBlockFlow {P} at (21,449) size 444x110 [border: (1px dotted #FFFF00)]
+            LayoutBlockFlow {P} at (21,449) size 445x110 [border: (1px dotted #FFFF00)]
               LayoutText {#text} at (1,1) size 430x108
                 text run at (1,1) width 426: "This document should have two cells, side by side: one on the left,"
                 text run at (1,19) width 426: "the other on the right. The one on the left should be red with white"
@@ -95,50 +95,50 @@
                 text run at (1,55) width 388: "separated by a blank line, followed by a dotted bordered box"
                 text run at (1,73) width 403: "containing the document title, and another dotted bordered box"
                 text run at (1,91) width 286: "containing the stylesheet, also shown below:"
-            LayoutBlockFlow {PRE} at (21,575) size 444x17 [border: (1px dotted #FFFF00)]
+            LayoutBlockFlow {PRE} at (21,575) size 445x17 [border: (1px dotted #FFFF00)]
               LayoutText {#text} at (1,1) size 39x15
                 text run at (1,1) width 39: "  ..."
                 text run at (40,1) width 0: " "
-            LayoutBlockFlow {P} at (21,608) size 444x38 [border: (1px dotted #FFFF00)]
+            LayoutBlockFlow {P} at (21,608) size 445x38 [border: (1px dotted #FFFF00)]
               LayoutText {#text} at (1,1) size 419x36
                 text run at (1,1) width 419: "The dotted borders and lines and the text in the left cell should be"
                 text run at (1,19) width 40: "white."
-            LayoutBlockFlow {P} at (21,662) size 444x38 [border: (1px dotted #FFFF00)]
+            LayoutBlockFlow {P} at (21,662) size 445x38 [border: (1px dotted #FFFF00)]
               LayoutText {#text} at (1,1) size 424x36
                 text run at (1,1) width 424: "The right cell should be teal, with yellow text. This paragraph you"
                 text run at (1,19) width 278: "are reading now should be in this right cell."
-            LayoutBlockFlow {P} at (21,716) size 444x38 [border: (1px dotted #FFFF00)]
+            LayoutBlockFlow {P} at (21,716) size 445x38 [border: (1px dotted #FFFF00)]
               LayoutText {#text} at (1,1) size 413x36
                 text run at (1,1) width 413: "The width of the two cells is left up to the user agent to decide, I"
                 text run at (1,19) width 37: "think."
-            LayoutBlockFlow {P} at (21,770) size 444x74 [border: (1px dotted #FFFF00)]
-              LayoutText {#text} at (1,1) size 439x72
-                text run at (1,1) width 409: "The right cell should look similar to the left cell in formatting --"
-                text run at (1,19) width 399: "each box of text should have a yellow dotted border, and there"
-                text run at (1,37) width 414: "should be a blank line between each such box. No box should be"
-                text run at (1,55) width 439: "nested -- the dotted boxes should always be distinct from each other."
-            LayoutBlockFlow {P} at (21,860) size 444x38 [border: (1px dotted #FFFF00)]
+            LayoutBlockFlow {P} at (21,770) size 445x74 [border: (1px dotted #FFFF00)]
+              LayoutText {#text} at (1,1) size 443x72
+                text run at (1,1) width 443: "The right cell should look similar to the left cell in formatting -- each"
+                text run at (1,19) width 442: "box of text should have a yellow dotted border, and there should be a"
+                text run at (1,37) width 420: "blank line between each such box. No box should be nested -- the"
+                text run at (1,55) width 356: "dotted boxes should always be distinct from each other."
+            LayoutBlockFlow {P} at (21,860) size 445x38 [border: (1px dotted #FFFF00)]
               LayoutText {#text} at (1,1) size 417x36
                 text run at (1,1) width 417: "The cells should be the same height, and they should have grown"
                 text run at (1,19) width 229: "vertically to accommodate this text."
-            LayoutBlockFlow {P} at (21,914) size 444x56 [border: (1px dotted #FFFF00)]
+            LayoutBlockFlow {P} at (21,914) size 445x56 [border: (1px dotted #FFFF00)]
               LayoutText {#text} at (1,1) size 437x54
                 text run at (1,1) width 436: "Around the whole setup should be two borders, dark green and light"
                 text run at (1,19) width 437: "green. The cells should be separated from each other and from these"
                 text run at (1,37) width 230: "outer borders by 1em of dark green."
-            LayoutBlockFlow {P} at (21,986) size 444x38 [border: (1px dotted #FFFF00)]
+            LayoutBlockFlow {P} at (21,986) size 445x38 [border: (1px dotted #FFFF00)]
               LayoutText {#text} at (1,1) size 429x36
                 text run at (1,1) width 429: "There should also be some alternate stylesheets set up to allow you"
                 text run at (1,19) width 404: "to display the <META> content. This may help with diagnosis."
-            LayoutBlockFlow {H2} at (21,1048) size 444x30 [border: (1px dotted #FFFF00)]
+            LayoutBlockFlow {H2} at (21,1048) size 445x30 [border: (1px dotted #FFFF00)]
               LayoutText {#text} at (1,1) size 156x28
                 text run at (1,1) width 156: "Submit Results"
-            LayoutBlockFlow {FORM} at (21,1102) size 444x90 [border: (1px dotted #FFFF00)]
-              LayoutBlockFlow {P} at (1,17) size 442x56
+            LayoutBlockFlow {FORM} at (21,1102) size 445x90 [border: (1px dotted #FFFF00)]
+              LayoutBlockFlow {P} at (1,17) size 443x56
                 LayoutText {#text} at (0,0) size 263x18
                   text run at (0,0) width 263: "How does your browser fare on this test?"
-                LayoutMenuList {SELECT} at (0,19) size 442x18 [color=#000000] [bgcolor=#F8F8F8]
-                  LayoutBlockFlow (anonymous) at (0,0) size 442x18
+                LayoutMenuList {SELECT} at (0,19) size 443x18 [color=#000000] [bgcolor=#F8F8F8]
+                  LayoutBlockFlow (anonymous) at (0,0) size 443x18
                     LayoutText (anonymous) at (8,2) size 210x13
                       text run at (8,2) width 210: "Document renders exactly as described."
                 LayoutText {#text} at (0,0) size 0x0
@@ -153,14 +153,14 @@
                     LayoutText {#text} at (0,0) size 37x13
                       text run at (0,0) width 37: "Submit"
                 LayoutText {#text} at (0,0) size 0x0
-            LayoutBlockFlow {HR} at (21,1208) size 444x2 [border: (1px dotted #FFFF00)]
-            LayoutBlockFlow {P} at (21,1226) size 444x20 [border: (1px dotted #FFFF00)]
+            LayoutBlockFlow {HR} at (21,1208) size 445x2 [border: (1px dotted #FFFF00)]
+            LayoutBlockFlow {P} at (21,1226) size 445x20 [border: (1px dotted #FFFF00)]
               LayoutInline {A} at (0,0) size 162x18 [color=#0000EE]
                 LayoutText {#text} at (1,1) size 162x18
                   text run at (1,1) width 162: "Up to the Evil Tests Page"
               LayoutText {#text} at (162,1) size 5x18
                 text run at (162,1) width 5: "."
-            LayoutBlockFlow {P} at (21,1262) size 444x20 [border: (1px dotted #FFFF00)]
+            LayoutBlockFlow {P} at (21,1262) size 445x20 [border: (1px dotted #FFFF00)]
               LayoutText {#text} at (1,1) size 177x18
                 text run at (1,1) width 177: "This page is maintained by "
               LayoutInline {A} at (0,0) size 79x18 [color=#0000EE]
@@ -173,8 +173,8 @@
                   text run at (264,1) width 125: "py8ieh@bath.ac.uk"
               LayoutText {#text} at (388,1) size 10x18
                 text run at (388,1) width 10: ")."
-            LayoutBlockFlow {P} at (21,1298) size 444x20 [border: (1px dotted #FFFF00)]
+            LayoutBlockFlow {P} at (21,1298) size 445x20 [border: (1px dotted #FFFF00)]
               LayoutText {#text} at (1,1) size 172x18
                 text run at (1,1) width 172: "Last updated in June 1999."
-layer at (372,1224) size 125x13 backgroundClip at (0,0) size 0x0 clip at (0,0) size 0x0
+layer at (371,1224) size 125x13 backgroundClip at (0,0) size 0x0 clip at (0,0) size 0x0
   LayoutBlockFlow {DIV} at (3,3) size 125x13
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla_expected_failures/bugs/bug58402-2-expected.png b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla_expected_failures/bugs/bug58402-2-expected.png
index 70f68db..1237e73 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla_expected_failures/bugs/bug58402-2-expected.png
+++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla_expected_failures/bugs/bug58402-2-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla_expected_failures/bugs/bug58402-2-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla_expected_failures/bugs/bug58402-2-expected.txt
index f3cd060a..767e9835 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla_expected_failures/bugs/bug58402-2-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla_expected_failures/bugs/bug58402-2-expected.txt
@@ -33,14 +33,14 @@
               LayoutText {#text} at (2,2) size 37x18
                 text run at (2,2) width 37: "row 3"
       LayoutBlockFlow (anonymous) at (0,240) size 784x19
-        LayoutButton {INPUT} at (0,1) size 53.80x18 [bgcolor=#C0C0C0]
-          LayoutBlockFlow (anonymous) at (8,2) size 37.80x13
+        LayoutButton {INPUT} at (0,1) size 54.02x18 [bgcolor=#C0C0C0]
+          LayoutBlockFlow (anonymous) at (8,2) size 38.02x13
             LayoutText {#text} at (0,0) size 38x13
               text run at (0,0) width 38: "expand"
-        LayoutText {#text} at (53,0) size 5x18
-          text run at (53,0) width 5: " "
-        LayoutButton {INPUT} at (57.80,1) size 42.28x18 [bgcolor=#C0C0C0]
-          LayoutBlockFlow (anonymous) at (8,2) size 26.28x13
+        LayoutText {#text} at (54,0) size 5x18
+          text run at (54,0) width 5: " "
+        LayoutButton {INPUT} at (58.02,1) size 42.44x18 [bgcolor=#C0C0C0]
+          LayoutBlockFlow (anonymous) at (8,2) size 26.44x13
             LayoutText {#text} at (0,0) size 27x13
               text run at (0,0) width 27: "sizes"
         LayoutText {#text} at (0,0) size 0x0
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla_expected_failures/bugs/bug91057-expected.png b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla_expected_failures/bugs/bug91057-expected.png
index 2f496d96..cd374613 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla_expected_failures/bugs/bug91057-expected.png
+++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla_expected_failures/bugs/bug91057-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla_expected_failures/collapsing_borders/bug41262-5-expected.png b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla_expected_failures/collapsing_borders/bug41262-5-expected.png
index 63487bc..3e3b2920 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla_expected_failures/collapsing_borders/bug41262-5-expected.png
+++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla_expected_failures/collapsing_borders/bug41262-5-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla_expected_failures/collapsing_borders/bug41262-5-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla_expected_failures/collapsing_borders/bug41262-5-expected.txt
index a3a1d3c2..5300bf2 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla_expected_failures/collapsing_borders/bug41262-5-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla_expected_failures/collapsing_borders/bug41262-5-expected.txt
@@ -49,35 +49,35 @@
                 LayoutText {#text} at (2,1) size 36x18
                   text run at (2,1) width 36: "11pm"
         LayoutBlockFlow {P} at (0,96) size 784x36
-          LayoutButton {BUTTON} at (271.98,0) size 73.94x18 [bgcolor=#C0C0C0] [border: none (2px outset #C0C0C0) none (2px outset #C0C0C0)]
-            LayoutBlockFlow (anonymous) at (8,2) size 57.94x13
-              LayoutText {#text} at (0,0) size 58x13
+          LayoutButton {BUTTON} at (271.66,0) size 74.20x18 [bgcolor=#C0C0C0] [border: none (2px outset #C0C0C0) none (2px outset #C0C0C0)]
+            LayoutBlockFlow (anonymous) at (8,2) size 58.20x13
+              LayoutText {#text} at (0,0) size 59x13
                 text run at (0,0) width 18: "No "
-                text run at (17,0) width 41: "borders"
-          LayoutButton {BUTTON} at (345.92,0) size 93.84x18 [bgcolor=#C0C0C0] [border: none (2px outset #C0C0C0) none (2px outset #C0C0C0)]
-            LayoutBlockFlow (anonymous) at (8,2) size 77.84x13
+                text run at (17,0) width 42: "borders"
+          LayoutButton {BUTTON} at (345.86,0) size 93.98x18 [bgcolor=#C0C0C0] [border: none (2px outset #C0C0C0) none (2px outset #C0C0C0)]
+            LayoutBlockFlow (anonymous) at (8,2) size 77.98x13
               LayoutText {#text} at (0,0) size 78x13
                 text run at (0,0) width 44: "Exterior "
                 text run at (43,0) width 35: "border"
-          LayoutButton {BUTTON} at (439.77,0) size 72.23x18 [bgcolor=#C0C0C0] [border: none (2px outset #C0C0C0) none (2px outset #C0C0C0)]
-            LayoutBlockFlow (anonymous) at (8,2) size 56.23x13
+          LayoutButton {BUTTON} at (439.84,0) size 72.50x18 [bgcolor=#C0C0C0] [border: none (2px outset #C0C0C0) none (2px outset #C0C0C0)]
+            LayoutBlockFlow (anonymous) at (8,2) size 56.50x13
               LayoutText {#text} at (0,0) size 57x13
                 text run at (0,0) width 17: "All "
                 text run at (16,0) width 41: "borders"
-          LayoutBR {BR} at (512,13) size 0x0
-          LayoutButton {BUTTON} at (239.50,18) size 98.83x18 [bgcolor=#C0C0C0] [border: none (2px outset #C0C0C0) none (2px outset #C0C0C0)]
-            LayoutBlockFlow (anonymous) at (8,2) size 82.83x13
-              LayoutText {#text} at (0,0) size 83x13
+          LayoutBR {BR} at (512,13) size 1x0
+          LayoutButton {BUTTON} at (238.42,18) size 99.11x18 [bgcolor=#C0C0C0] [border: none (2px outset #C0C0C0) none (2px outset #C0C0C0)]
+            LayoutBlockFlow (anonymous) at (8,2) size 83.11x13
+              LayoutText {#text} at (0,0) size 84x13
                 text run at (0,0) width 43: "Column "
-                text run at (42,0) width 41: "borders"
-          LayoutButton {BUTTON} at (338.33,18) size 96.91x18 [bgcolor=#C0C0C0] [border: none (2px outset #C0C0C0) none (2px outset #C0C0C0)]
-            LayoutBlockFlow (anonymous) at (8,2) size 80.91x13
-              LayoutText {#text} at (0,0) size 81x13
+                text run at (42,0) width 42: "borders"
+          LayoutButton {BUTTON} at (337.53,18) size 97.33x18 [bgcolor=#C0C0C0] [border: none (2px outset #C0C0C0) none (2px outset #C0C0C0)]
+            LayoutBlockFlow (anonymous) at (8,2) size 81.33x13
+              LayoutText {#text} at (0,0) size 82x13
                 text run at (0,0) width 41: "Groups "
-                text run at (40,0) width 41: "borders"
-          LayoutButton {BUTTON} at (435.23,18) size 109.27x18 [bgcolor=#C0C0C0] [border: none (2px outset #C0C0C0) none (2px outset #C0C0C0)]
-            LayoutBlockFlow (anonymous) at (8,2) size 93.27x13
-              LayoutText {#text} at (0,0) size 94x13
+                text run at (40,0) width 42: "borders"
+          LayoutButton {BUTTON} at (434.86,18) size 110.70x18 [bgcolor=#C0C0C0] [border: none (2px outset #C0C0C0) none (2px outset #C0C0C0)]
+            LayoutBlockFlow (anonymous) at (8,2) size 94.70x13
+              LayoutText {#text} at (0,0) size 95x13
                 text run at (0,0) width 32: "Table "
-                text run at (31,0) width 63: "row borders"
+                text run at (31,0) width 64: "row borders"
           LayoutText {#text} at (0,0) size 0x0
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla_expected_failures/collapsing_borders/bug41262-6-expected.png b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla_expected_failures/collapsing_borders/bug41262-6-expected.png
index 730816b..e5feac4 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla_expected_failures/collapsing_borders/bug41262-6-expected.png
+++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla_expected_failures/collapsing_borders/bug41262-6-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla_expected_failures/collapsing_borders/bug41262-6-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla_expected_failures/collapsing_borders/bug41262-6-expected.txt
index 8eb2c06..26983485 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla_expected_failures/collapsing_borders/bug41262-6-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla_expected_failures/collapsing_borders/bug41262-6-expected.txt
@@ -49,35 +49,35 @@
                 LayoutText {#text} at (2,1) size 36x18
                   text run at (2,1) width 36: "11pm"
         LayoutBlockFlow {P} at (0,98) size 784x36
-          LayoutButton {BUTTON} at (271.98,0) size 73.94x18 [bgcolor=#C0C0C0] [border: none (2px outset #C0C0C0) none (2px outset #C0C0C0)]
-            LayoutBlockFlow (anonymous) at (8,2) size 57.94x13
-              LayoutText {#text} at (0,0) size 58x13
+          LayoutButton {BUTTON} at (271.66,0) size 74.20x18 [bgcolor=#C0C0C0] [border: none (2px outset #C0C0C0) none (2px outset #C0C0C0)]
+            LayoutBlockFlow (anonymous) at (8,2) size 58.20x13
+              LayoutText {#text} at (0,0) size 59x13
                 text run at (0,0) width 18: "No "
-                text run at (17,0) width 41: "borders"
-          LayoutButton {BUTTON} at (345.92,0) size 93.84x18 [bgcolor=#C0C0C0] [border: none (2px outset #C0C0C0) none (2px outset #C0C0C0)]
-            LayoutBlockFlow (anonymous) at (8,2) size 77.84x13
+                text run at (17,0) width 42: "borders"
+          LayoutButton {BUTTON} at (345.86,0) size 93.98x18 [bgcolor=#C0C0C0] [border: none (2px outset #C0C0C0) none (2px outset #C0C0C0)]
+            LayoutBlockFlow (anonymous) at (8,2) size 77.98x13
               LayoutText {#text} at (0,0) size 78x13
                 text run at (0,0) width 44: "Exterior "
                 text run at (43,0) width 35: "border"
-          LayoutButton {BUTTON} at (439.77,0) size 72.23x18 [bgcolor=#C0C0C0] [border: none (2px outset #C0C0C0) none (2px outset #C0C0C0)]
-            LayoutBlockFlow (anonymous) at (8,2) size 56.23x13
+          LayoutButton {BUTTON} at (439.84,0) size 72.50x18 [bgcolor=#C0C0C0] [border: none (2px outset #C0C0C0) none (2px outset #C0C0C0)]
+            LayoutBlockFlow (anonymous) at (8,2) size 56.50x13
               LayoutText {#text} at (0,0) size 57x13
                 text run at (0,0) width 17: "All "
                 text run at (16,0) width 41: "borders"
-          LayoutBR {BR} at (512,13) size 0x0
-          LayoutButton {BUTTON} at (239.50,18) size 98.83x18 [bgcolor=#C0C0C0] [border: none (2px outset #C0C0C0) none (2px outset #C0C0C0)]
-            LayoutBlockFlow (anonymous) at (8,2) size 82.83x13
-              LayoutText {#text} at (0,0) size 83x13
+          LayoutBR {BR} at (512,13) size 1x0
+          LayoutButton {BUTTON} at (238.42,18) size 99.11x18 [bgcolor=#C0C0C0] [border: none (2px outset #C0C0C0) none (2px outset #C0C0C0)]
+            LayoutBlockFlow (anonymous) at (8,2) size 83.11x13
+              LayoutText {#text} at (0,0) size 84x13
                 text run at (0,0) width 43: "Column "
-                text run at (42,0) width 41: "borders"
-          LayoutButton {BUTTON} at (338.33,18) size 96.91x18 [bgcolor=#C0C0C0] [border: none (2px outset #C0C0C0) none (2px outset #C0C0C0)]
-            LayoutBlockFlow (anonymous) at (8,2) size 80.91x13
-              LayoutText {#text} at (0,0) size 81x13
+                text run at (42,0) width 42: "borders"
+          LayoutButton {BUTTON} at (337.53,18) size 97.33x18 [bgcolor=#C0C0C0] [border: none (2px outset #C0C0C0) none (2px outset #C0C0C0)]
+            LayoutBlockFlow (anonymous) at (8,2) size 81.33x13
+              LayoutText {#text} at (0,0) size 82x13
                 text run at (0,0) width 41: "Groups "
-                text run at (40,0) width 41: "borders"
-          LayoutButton {BUTTON} at (435.23,18) size 109.27x18 [bgcolor=#C0C0C0] [border: none (2px outset #C0C0C0) none (2px outset #C0C0C0)]
-            LayoutBlockFlow (anonymous) at (8,2) size 93.27x13
-              LayoutText {#text} at (0,0) size 94x13
+                text run at (40,0) width 42: "borders"
+          LayoutButton {BUTTON} at (434.86,18) size 110.70x18 [bgcolor=#C0C0C0] [border: none (2px outset #C0C0C0) none (2px outset #C0C0C0)]
+            LayoutBlockFlow (anonymous) at (8,2) size 94.70x13
+              LayoutText {#text} at (0,0) size 95x13
                 text run at (0,0) width 32: "Table "
-                text run at (31,0) width 63: "row borders"
+                text run at (31,0) width 64: "row borders"
           LayoutText {#text} at (0,0) size 0x0
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla_expected_failures/marvin/backgr_fixed-bg-expected.png b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla_expected_failures/marvin/backgr_fixed-bg-expected.png
index 20d9f95..067ee23 100644
--- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla_expected_failures/marvin/backgr_fixed-bg-expected.png
+++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla_expected_failures/marvin/backgr_fixed-bg-expected.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win7/fast/forms/select/menulist-appearance-rtl-expected.txt b/third_party/WebKit/LayoutTests/platform/win7/fast/forms/select/menulist-appearance-rtl-expected.txt
index 0dfa1a3..f6172e2 100644
--- a/third_party/WebKit/LayoutTests/platform/win7/fast/forms/select/menulist-appearance-rtl-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/win7/fast/forms/select/menulist-appearance-rtl-expected.txt
@@ -64,8 +64,8 @@
         LayoutBlockFlow (anonymous) at (0,34) size 784x20
           LayoutMenuList {SELECT} at (0,0) size 113x20 [bgcolor=#FFFFFF] [border: (1px solid #A9A9A9)]
             LayoutBlockFlow (anonymous) at (1,1) size 111x18
-              LayoutText (anonymous) at (4,1) size 82x16
-                text run at (4,1) width 82 RTL: "\x{627}\x{644}\x{627}\x{642}\x{62A}\x{631}\x{627}\x{62D}\x{627}\x{62A} / \x{627}\x{644}\x{634}\x{643}\x{627}\x{648}\x{64A}"
+              LayoutText (anonymous) at (4,1) size 91x16
+                text run at (4,1) width 91 RTL: "\x{627}\x{644}\x{627}\x{642}\x{62A}\x{631}\x{627}\x{62D}\x{627}\x{62A} / \x{627}\x{644}\x{634}\x{643}\x{627}\x{648}\x{64A}"
           LayoutText {#text} at (0,0) size 0x0
       LayoutBlockFlow {HR} at (0,308) size 784x2 [border: (1px inset #EEEEEE)]
       LayoutBlockFlow {P} at (0,326) size 784x18
diff --git a/third_party/WebKit/Source/core/editing/spellcheck/HotModeSpellCheckRequester.cpp b/third_party/WebKit/Source/core/editing/spellcheck/HotModeSpellCheckRequester.cpp
index 845cd1f..a3b9353 100644
--- a/third_party/WebKit/Source/core/editing/spellcheck/HotModeSpellCheckRequester.cpp
+++ b/third_party/WebKit/Source/core/editing/spellcheck/HotModeSpellCheckRequester.cpp
@@ -102,9 +102,9 @@
   if (!shouldCheckRootEditableInHotMode(*rootEditable, position))
     return;
 
-  SpellCheckRequest* request = SpellCheckRequest::create(
-      calculateHotModeCheckingRange(*rootEditable, position));
-  m_requester->requestCheckingFor(request);
+  const EphemeralRange& checkingRange =
+      calculateHotModeCheckingRange(*rootEditable, position);
+  m_requester->requestCheckingFor(checkingRange);
 }
 
 }  // namespace blink
diff --git a/third_party/WebKit/Source/core/editing/spellcheck/IdleSpellCheckCallback.cpp b/third_party/WebKit/Source/core/editing/spellcheck/IdleSpellCheckCallback.cpp
index bfe787480..404a7ff 100644
--- a/third_party/WebKit/Source/core/editing/spellcheck/IdleSpellCheckCallback.cpp
+++ b/third_party/WebKit/Source/core/editing/spellcheck/IdleSpellCheckCallback.cpp
@@ -173,8 +173,7 @@
 
   // Check the full content if it is short.
   if (fullLength <= kColdModeChunkSize) {
-    SpellCheckRequest* fullRequest = SpellCheckRequest::create(fullRange);
-    spellCheckRequester().requestCheckingFor(fullRequest);
+    spellCheckRequester().requestCheckingFor(fullRange);
     return;
   }
 
@@ -195,9 +194,7 @@
         chunkIndex >= 1 ? expandEndToSentenceBoundary(chunkRange)
                         : expandRangeToSentenceBoundary(chunkRange);
 
-    SpellCheckRequest* chunkRequest =
-        SpellCheckRequest::create(checkRange, chunkIndex);
-    spellCheckRequester().requestCheckingFor(chunkRequest);
+    spellCheckRequester().requestCheckingFor(checkRange, chunkIndex);
 
     chunkStart = checkRange.endPosition();
   }
diff --git a/third_party/WebKit/Source/core/editing/spellcheck/SpellCheckRequester.cpp b/third_party/WebKit/Source/core/editing/spellcheck/SpellCheckRequester.cpp
index caa71e5..aab2e39 100644
--- a/third_party/WebKit/Source/core/editing/spellcheck/SpellCheckRequester.cpp
+++ b/third_party/WebKit/Source/core/editing/spellcheck/SpellCheckRequester.cpp
@@ -143,7 +143,13 @@
   invokeRequest(m_requestQueue.takeFirst());
 }
 
-void SpellCheckRequester::requestCheckingFor(SpellCheckRequest* request) {
+void SpellCheckRequester::requestCheckingFor(const EphemeralRange& range) {
+  requestCheckingFor(range, 0);
+}
+
+void SpellCheckRequester::requestCheckingFor(const EphemeralRange& range,
+                                             int requestNum) {
+  SpellCheckRequest* request = SpellCheckRequest::create(range, requestNum);
   if (!request)
     return;
 
diff --git a/third_party/WebKit/Source/core/editing/spellcheck/SpellCheckRequester.h b/third_party/WebKit/Source/core/editing/spellcheck/SpellCheckRequester.h
index 4fd4c54..5717608 100644
--- a/third_party/WebKit/Source/core/editing/spellcheck/SpellCheckRequester.h
+++ b/third_party/WebKit/Source/core/editing/spellcheck/SpellCheckRequester.h
@@ -43,10 +43,11 @@
 class SpellCheckRequester;
 class TextCheckerClient;
 
+// TODO(xiaochengh): Move this class to dedicated files.
 class SpellCheckRequest final : public TextCheckingRequest {
  public:
   static SpellCheckRequest* create(const EphemeralRange& checkingRange,
-                                   int requestNumber = 0);
+                                   int requestNumber);
 
   ~SpellCheckRequest() override;
   void dispose();
@@ -87,7 +88,8 @@
   ~SpellCheckRequester();
   DECLARE_TRACE();
 
-  void requestCheckingFor(SpellCheckRequest*);
+  void requestCheckingFor(const EphemeralRange&);
+  void requestCheckingFor(const EphemeralRange&, int requestNum);
   void cancelCheck();
 
   int lastRequestSequence() const { return m_lastRequestSequence; }
diff --git a/third_party/WebKit/Source/core/editing/spellcheck/SpellChecker.cpp b/third_party/WebKit/Source/core/editing/spellcheck/SpellChecker.cpp
index c99df19..4371ed5 100644
--- a/third_party/WebKit/Source/core/editing/spellcheck/SpellChecker.cpp
+++ b/third_party/WebKit/Source/core/editing/spellcheck/SpellChecker.cpp
@@ -504,9 +504,7 @@
   // Check the full paragraph instead if the paragraph is short, which saves
   // the cost on sentence boundary finding.
   if (fullParagraphToCheck.rangeLength() <= kChunkSize) {
-    SpellCheckRequest* request = SpellCheckRequest::create(paragraphRange, 0);
-    if (request)
-      m_spellCheckRequester->requestCheckingFor(request);
+    m_spellCheckRequester->requestCheckingFor(paragraphRange);
     return;
   }
 
@@ -522,10 +520,7 @@
                                     ? expandEndToSentenceBoundary(chunkRange)
                                     : expandRangeToSentenceBoundary(chunkRange);
 
-    SpellCheckRequest* request =
-        SpellCheckRequest::create(checkRange, requestNum);
-    if (request)
-      m_spellCheckRequester->requestCheckingFor(request);
+    m_spellCheckRequester->requestCheckingFor(checkRange, requestNum);
 
     if (!checkRangeIterator.atEnd()) {
       checkRangeIterator.advance(1);
diff --git a/third_party/WebKit/Source/core/layout/LayoutBlockFlowLine.cpp b/third_party/WebKit/Source/core/layout/LayoutBlockFlowLine.cpp
index 5d6d52c..73fd82b32 100644
--- a/third_party/WebKit/Source/core/layout/LayoutBlockFlowLine.cpp
+++ b/third_party/WebKit/Source/core/layout/LayoutBlockFlowLine.cpp
@@ -548,9 +548,11 @@
   // FIXME: Having any font feature settings enabled can lead to selection gaps
   // on Chromium-mac. https://bugs.webkit.org/show_bug.cgi?id=113418
   bool canUseCachedWordMeasurements =
-      font.canShapeWordByWord() && !font.getFontDescription().featureSettings();
+      font.canShapeWordByWord() &&
+      !font.getFontDescription().featureSettings() && layoutText.is8Bit();
 #else
-  bool canUseCachedWordMeasurements = font.canShapeWordByWord();
+  bool canUseCachedWordMeasurements =
+      font.canShapeWordByWord() && layoutText.is8Bit();
 #endif
 
   if (canUseCachedWordMeasurements) {
diff --git a/third_party/WebKit/Source/core/paint/PaintPropertyTreeBuilder.cpp b/third_party/WebKit/Source/core/paint/PaintPropertyTreeBuilder.cpp
index 348b3b9..acc863e 100644
--- a/third_party/WebKit/Source/core/paint/PaintPropertyTreeBuilder.cpp
+++ b/third_party/WebKit/Source/core/paint/PaintPropertyTreeBuilder.cpp
@@ -26,9 +26,8 @@
 
 namespace blink {
 
-PaintPropertyTreeBuilderContext
-PaintPropertyTreeBuilder::setupInitialContext() {
-  PaintPropertyTreeBuilderContext context;
+void PaintPropertyTreeBuilder::setupInitialContext(
+    PaintPropertyTreeBuilderContext& context) {
   context.current.clip = context.absolutePosition.clip =
       context.fixedPosition.clip = ClipPaintPropertyNode::root();
   context.currentEffect = EffectPaintPropertyNode::root();
@@ -37,7 +36,6 @@
       context.fixedPosition.transform = TransformPaintPropertyNode::root();
   context.current.scroll = context.absolutePosition.scroll =
       context.fixedPosition.scroll = ScrollPaintPropertyNode::root();
-  return context;
 }
 
 // True if a new property was created, false if an existing one was updated.
diff --git a/third_party/WebKit/Source/core/paint/PaintPropertyTreeBuilder.h b/third_party/WebKit/Source/core/paint/PaintPropertyTreeBuilder.h
index dd18716..669ff3e3 100644
--- a/third_party/WebKit/Source/core/paint/PaintPropertyTreeBuilder.h
+++ b/third_party/WebKit/Source/core/paint/PaintPropertyTreeBuilder.h
@@ -95,7 +95,7 @@
 // InPrePaint phase.
 class PaintPropertyTreeBuilder {
  public:
-  PaintPropertyTreeBuilderContext setupInitialContext();
+  void setupInitialContext(PaintPropertyTreeBuilderContext&);
   // Update the paint properties for a frame and ensure the context is up to
   // date.
   void updateProperties(FrameView&, PaintPropertyTreeBuilderContext&);
diff --git a/third_party/WebKit/Source/core/paint/PrePaintTreeWalk.cpp b/third_party/WebKit/Source/core/paint/PrePaintTreeWalk.cpp
index 10c5d49..d6e05ed 100644
--- a/third_party/WebKit/Source/core/paint/PrePaintTreeWalk.cpp
+++ b/third_party/WebKit/Source/core/paint/PrePaintTreeWalk.cpp
@@ -16,18 +16,25 @@
 
 struct PrePaintTreeWalkContext {
   PrePaintTreeWalkContext()
-      : paintInvalidatorContext(treeBuilderContext),
+      : treeBuilderContext(
+            WTF::wrapUnique(new PaintPropertyTreeBuilderContext)),
+        paintInvalidatorContext(*treeBuilderContext),
         ancestorOverflowPaintLayer(nullptr),
         ancestorTransformedOrRootPaintLayer(nullptr) {}
   PrePaintTreeWalkContext(const PrePaintTreeWalkContext& parentContext)
-      : treeBuilderContext(parentContext.treeBuilderContext),
-        paintInvalidatorContext(treeBuilderContext,
+      : treeBuilderContext(WTF::wrapUnique(new PaintPropertyTreeBuilderContext(
+            *parentContext.treeBuilderContext))),
+        paintInvalidatorContext(*treeBuilderContext,
                                 parentContext.paintInvalidatorContext),
         ancestorOverflowPaintLayer(parentContext.ancestorOverflowPaintLayer),
         ancestorTransformedOrRootPaintLayer(
             parentContext.ancestorTransformedOrRootPaintLayer) {}
 
-  PaintPropertyTreeBuilderContext treeBuilderContext;
+  // PaintPropertyTreeBuilderContext is large and can lead to stack overflows
+  // when recursion is deep so this context object is allocated on the heap.
+  // See: https://crbug.com/698653.
+  std::unique_ptr<PaintPropertyTreeBuilderContext> treeBuilderContext;
+
   PaintInvalidatorContext paintInvalidatorContext;
 
   // The ancestor in the PaintLayer tree which has overflow clip, or
@@ -42,8 +49,7 @@
          DocumentLifecycle::InPrePaint);
 
   PrePaintTreeWalkContext initialContext;
-  initialContext.treeBuilderContext =
-      m_propertyTreeBuilder.setupInitialContext();
+  m_propertyTreeBuilder.setupInitialContext(*initialContext.treeBuilderContext);
   initialContext.ancestorTransformedOrRootPaintLayer =
       rootFrame.layoutView()->layer();
 
@@ -67,7 +73,8 @@
   PrePaintTreeWalkContext context(parentContext);
   // ancestorOverflowLayer does not cross frame boundaries.
   context.ancestorOverflowPaintLayer = nullptr;
-  m_propertyTreeBuilder.updateProperties(frameView, context.treeBuilderContext);
+  m_propertyTreeBuilder.updateProperties(frameView,
+                                         *context.treeBuilderContext);
   m_paintInvalidator.invalidatePaintIfNeeded(frameView,
                                              context.paintInvalidatorContext);
 
@@ -152,8 +159,6 @@
            .paintProperties();
   PropertyTreeState ancestorState =
       *ancestorPaintProperties.localBorderBoxProperties();
-  const EffectPaintPropertyNode* effect =
-      context.treeBuilderContext.currentEffect;
 
 #ifdef CHECK_CLIP_RECTS
   ShouldRespectOverflowClipType respectOverflowClip = RespectOverflowClip;
@@ -180,7 +185,9 @@
       context.ancestorTransformedOrRootPaintLayer->layoutObject().paintOffset();
 
   FloatClipRect clipRect;
-  computeClipRectForContext(context.treeBuilderContext.current, effect,
+  const EffectPaintPropertyNode* effect =
+      context.treeBuilderContext->currentEffect;
+  computeClipRectForContext(context.treeBuilderContext->current, effect,
                             ancestorState, ancestorPaintOffset, hasClip,
                             clipRect);
   clipRects->setOverflowClipRect(clipRect);
@@ -190,7 +197,7 @@
       << "rect= " << clipRects->overflowClipRect().toString();
 #endif
 
-  computeClipRectForContext(context.treeBuilderContext.fixedPosition, effect,
+  computeClipRectForContext(context.treeBuilderContext->fixedPosition, effect,
                             ancestorState, ancestorPaintOffset, hasClip,
                             clipRect);
   clipRects->setFixedClipRect(clipRect);
@@ -199,8 +206,8 @@
       << " fixed=" << clipRects->fixedClipRect().toString();
 #endif
 
-  computeClipRectForContext(context.treeBuilderContext.absolutePosition, effect,
-                            ancestorState, ancestorPaintOffset, hasClip,
+  computeClipRectForContext(context.treeBuilderContext->absolutePosition,
+                            effect, ancestorState, ancestorPaintOffset, hasClip,
                             clipRect);
   clipRects->setPosClipRect(clipRect);
 #ifdef CHECK_CLIP_RECTS
@@ -230,7 +237,7 @@
   return (
       !object.needsPaintPropertyUpdate() &&
       !object.descendantNeedsPaintPropertyUpdate() &&
-      !context.treeBuilderContext.forceSubtreeUpdate &&
+      !context.treeBuilderContext->forceSubtreeUpdate &&
       !context.paintInvalidatorContext.forcedSubtreeInvalidationFlags &&
       !object
            .shouldCheckForPaintInvalidationRegardlessOfPaintInvalidationState());
@@ -241,24 +248,20 @@
   if (shouldEndWalkBefore(object, parentContext))
     return;
 
-  // PrePaintTreeWalkContext is large and can lead to stack overflows when
-  // recursion is deep so this context object is allocated on the heap.
-  // See: https://crbug.com/698653.
-  std::unique_ptr<PrePaintTreeWalkContext> context =
-      WTF::wrapUnique(new PrePaintTreeWalkContext(parentContext));
+  PrePaintTreeWalkContext context(parentContext);
 
   // This must happen before updatePropertiesForSelf, because the latter reads
   // some of the state computed here.
-  updateAuxiliaryObjectProperties(object, *context);
+  updateAuxiliaryObjectProperties(object, context);
 
   m_propertyTreeBuilder.updatePropertiesForSelf(object,
-                                                context->treeBuilderContext);
+                                                *context.treeBuilderContext);
   m_paintInvalidator.invalidatePaintIfNeeded(object,
-                                             context->paintInvalidatorContext);
+                                             context.paintInvalidatorContext);
   m_propertyTreeBuilder.updatePropertiesForChildren(
-      object, context->treeBuilderContext);
+      object, *context.treeBuilderContext);
 
-  invalidatePaintLayerOptimizationsIfNeeded(object, *context);
+  invalidatePaintLayerOptimizationsIfNeeded(object, context);
 
   for (const LayoutObject* child = object.slowFirstChild(); child;
        child = child->nextSibling()) {
@@ -266,19 +269,19 @@
       child->getMutableForPainting().clearPaintFlags();
       continue;
     }
-    walk(*child, *context);
+    walk(*child, context);
   }
 
   if (object.isLayoutPart()) {
     const LayoutPart& layoutPart = toLayoutPart(object);
     FrameViewBase* frameViewBase = layoutPart.frameViewBase();
     if (frameViewBase && frameViewBase->isFrameView()) {
-      context->treeBuilderContext.current.paintOffset +=
+      context.treeBuilderContext->current.paintOffset +=
           layoutPart.replacedContentRect().location() -
           frameViewBase->frameRect().location();
-      context->treeBuilderContext.current.paintOffset =
-          roundedIntPoint(context->treeBuilderContext.current.paintOffset);
-      walk(*toFrameView(frameViewBase), *context);
+      context.treeBuilderContext->current.paintOffset =
+          roundedIntPoint(context.treeBuilderContext->current.paintOffset);
+      walk(*toFrameView(frameViewBase), context);
     }
     // TODO(pdr): Investigate RemoteFrameView (crbug.com/579281).
   }
diff --git a/third_party/WebKit/Source/devtools/BUILD.gn b/third_party/WebKit/Source/devtools/BUILD.gn
index 582de16..d01a5dc 100644
--- a/third_party/WebKit/Source/devtools/BUILD.gn
+++ b/third_party/WebKit/Source/devtools/BUILD.gn
@@ -263,6 +263,7 @@
   "front_end/inline_editor/CSSShadowModel.js",
   "front_end/inline_editor/cssShadowSwatch.css",
   "front_end/inline_editor/module.json",
+  "front_end/inline_editor/swatchPopover.css",
   "front_end/inline_editor/SwatchPopoverHelper.js",
   "front_end/inspector.js",
   "front_end/inspector.json",
diff --git a/third_party/WebKit/Source/devtools/front_end/animation/AnimationTimeline.js b/third_party/WebKit/Source/devtools/front_end/animation/AnimationTimeline.js
index 261abff..6b5486b 100644
--- a/third_party/WebKit/Source/devtools/front_end/animation/AnimationTimeline.js
+++ b/third_party/WebKit/Source/devtools/front_end/animation/AnimationTimeline.js
@@ -173,7 +173,8 @@
 
   /**
    * @param {!Element} anchor
-   * @param {!UI.Popover} popover
+   * @param {!UI.GlassPane} popover
+   * @return {!Promise<boolean>}
    */
   _showPopover(anchor, popover) {
     var animGroup;
@@ -184,20 +185,22 @@
     console.assert(animGroup);
     var screenshots = animGroup.screenshots();
     if (!screenshots.length)
-      return;
+      return Promise.resolve(false);
 
+    var fulfill;
+    var promise = new Promise(x => fulfill = x);
     if (!screenshots[0].complete)
       screenshots[0].onload = onFirstScreenshotLoaded.bind(null, screenshots);
     else
       onFirstScreenshotLoaded(screenshots);
+    return promise;
 
     /**
      * @param  {!Array.<!Image>} screenshots
      */
     function onFirstScreenshotLoaded(screenshots) {
-      var content = new Animation.AnimationScreenshotPopover(screenshots);
-      popover.setNoPadding(true);
-      popover.showView(content, anchor);
+      new Animation.AnimationScreenshotPopover(screenshots).show(popover.contentElement);
+      fulfill(true);
     }
   }
 
diff --git a/third_party/WebKit/Source/devtools/front_end/elements/ElementsPanel.js b/third_party/WebKit/Source/devtools/front_end/elements/ElementsPanel.js
index 1314883..5df8f45 100644
--- a/third_party/WebKit/Source/devtools/front_end/elements/ElementsPanel.js
+++ b/third_party/WebKit/Source/devtools/front_end/elements/ElementsPanel.js
@@ -581,22 +581,27 @@
 
   /**
    * @param {!Element} link
-   * @param {!UI.Popover} popover
+   * @param {!UI.GlassPane} popover
+   * @return {!Promise<boolean>}
    */
   _showPopover(link, popover) {
     var node = this.selectedDOMNode();
-    if (node) {
-      Components.DOMPresentationUtils.buildImagePreviewContents(
-          node.target(), link[Elements.ElementsTreeElement.HrefSymbol], true, showPopover);
-    }
+    if (!node)
+      return Promise.resolve(false);
+
+    var fulfill;
+    var promise = new Promise(x => fulfill = x);
+    Components.DOMPresentationUtils.buildImagePreviewContents(
+        node.target(), link[Elements.ElementsTreeElement.HrefSymbol], true, showPopover);
+    return promise;
 
     /**
      * @param {!Element=} contents
      */
     function showPopover(contents) {
-      if (!contents)
-        return;
-      popover.showForAnchor(contents, link);
+      if (contents)
+        popover.contentElement.appendChild(contents);
+      fulfill(!!contents);
     }
   }
 
@@ -903,6 +908,7 @@
     if (this._popoverHelper)
       this._popoverHelper.hidePopover();
     this._popoverHelper = new UI.PopoverHelper(tabbedPane.element);
+    this._popoverHelper.setHasPadding(true);
     this._popoverHelper.initializeCallbacks(this._getPopoverAnchor.bind(this), this._showPopover.bind(this));
     this._popoverHelper.setTimeout(0);
 
diff --git a/third_party/WebKit/Source/devtools/front_end/elements/ElementsTreeOutline.js b/third_party/WebKit/Source/devtools/front_end/elements/ElementsTreeOutline.js
index e60a30a4..d48b56d 100644
--- a/third_party/WebKit/Source/devtools/front_end/elements/ElementsTreeOutline.js
+++ b/third_party/WebKit/Source/devtools/front_end/elements/ElementsTreeOutline.js
@@ -77,6 +77,7 @@
 
     this._popoverHelper = new UI.PopoverHelper(this._element);
     this._popoverHelper.initializeCallbacks(this._getPopoverAnchor.bind(this), this._showPopover.bind(this));
+    this._popoverHelper.setHasPadding(true);
     this._popoverHelper.setTimeout(0, 100);
 
     /** @type {!Map<!SDK.DOMNode, !Elements.ElementsTreeOutline.UpdateRecord>} */
@@ -572,23 +573,27 @@
 
   /**
    * @param {!Element} link
-   * @param {!UI.Popover} popover
+   * @param {!UI.GlassPane} popover
+   * @return {!Promise<boolean>}
    */
   _showPopover(link, popover) {
+    var fulfill;
+    var promise = new Promise(x => fulfill = x);
     var listItem = link.enclosingNodeOrSelfWithNodeName('li');
     var node = /** @type {!Elements.ElementsTreeElement} */ (listItem.treeElement).node();
     this._loadDimensionsForNode(
         node, Components.DOMPresentationUtils.buildImagePreviewContents.bind(
                   Components.DOMPresentationUtils, node.target(), link[Elements.ElementsTreeElement.HrefSymbol], true,
                   showPopover));
+    return promise;
 
     /**
      * @param {!Element=} contents
      */
     function showPopover(contents) {
-      if (!contents)
-        return;
-      popover.showForAnchor(contents, link);
+      if (contents)
+        popover.contentElement.appendChild(contents);
+      fulfill(!!contents);
     }
   }
 
diff --git a/third_party/WebKit/Source/devtools/front_end/inline_editor/SwatchPopoverHelper.js b/third_party/WebKit/Source/devtools/front_end/inline_editor/SwatchPopoverHelper.js
index b2c9436..e060c8b 100644
--- a/third_party/WebKit/Source/devtools/front_end/inline_editor/SwatchPopoverHelper.js
+++ b/third_party/WebKit/Source/devtools/front_end/inline_editor/SwatchPopoverHelper.js
@@ -7,8 +7,11 @@
 InlineEditor.SwatchPopoverHelper = class extends Common.Object {
   constructor() {
     super();
-    this._popover = new UI.Popover();
-    this._popover.setNoPadding(true);
+    this._popover = new UI.GlassPane();
+    this._popover.registerRequiredCSS('inline_editor/swatchPopover.css');
+    this._popover.setBlockPointerEvents(false);
+    this._popover.setSizeBehavior(UI.GlassPane.SizeBehavior.MeasureContent);
+    this._popover.setShowArrow(true);
     this._popover.element.addEventListener('mousedown', e => e.consume(), false);
 
     this._hideProxy = this.hide.bind(this, true);
@@ -61,9 +64,11 @@
   }
 
   reposition() {
-    // Unbind "blur" listener to avoid reenterability: |popover.showView| will hide the popover and trigger it synchronously.
+    // Unbind "blur" listener to avoid reenterability: |popover.show()| will hide the popover and trigger it synchronously.
     this._view.contentElement.removeEventListener('focusout', this._boundFocusOut, false);
-    this._popover.showView(this._view, this._anchorElement);
+    this._view.show(this._popover.contentElement);
+    this._popover.setContentAnchorBox(this._anchorElement.boxInWindow());
+    this._popover.show(this._anchorElement.ownerDocument);
     this._view.contentElement.addEventListener('focusout', this._boundFocusOut, false);
     if (!this._focusRestorer)
       this._focusRestorer = new UI.WidgetFocusRestorer(this._view);
diff --git a/third_party/WebKit/Source/devtools/front_end/inline_editor/module.json b/third_party/WebKit/Source/devtools/front_end/inline_editor/module.json
index b37b283..00185f75 100644
--- a/third_party/WebKit/Source/devtools/front_end/inline_editor/module.json
+++ b/third_party/WebKit/Source/devtools/front_end/inline_editor/module.json
@@ -15,6 +15,7 @@
         "colorSwatch.css",
         "bezierSwatch.css",
         "cssShadowSwatch.css",
-        "cssShadowEditor.css"
+        "cssShadowEditor.css",
+        "swatchPopover.css"
     ]
 }
diff --git a/third_party/WebKit/Source/devtools/front_end/inline_editor/swatchPopover.css b/third_party/WebKit/Source/devtools/front_end/inline_editor/swatchPopover.css
new file mode 100644
index 0000000..177a70a1
--- /dev/null
+++ b/third_party/WebKit/Source/devtools/front_end/inline_editor/swatchPopover.css
@@ -0,0 +1,15 @@
+/*
+ * Copyright 2017 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.
+ */
+
+.widget {
+    display: flex;
+    background: white;
+    box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.2), 0 2px 4px rgba(0, 0, 0, 0.2), 0 2px 6px rgba(0, 0, 0, 0.1);
+    border-radius: 2px;
+    overflow: auto;
+    -webkit-user-select: text;
+    line-height: 11px;
+}
diff --git a/third_party/WebKit/Source/devtools/front_end/network/NetworkLogViewColumns.js b/third_party/WebKit/Source/devtools/front_end/network/NetworkLogViewColumns.js
index 2e2f3e4..766294e 100644
--- a/third_party/WebKit/Source/devtools/front_end/network/NetworkLogViewColumns.js
+++ b/third_party/WebKit/Source/devtools/front_end/network/NetworkLogViewColumns.js
@@ -91,6 +91,7 @@
     this._popoverHelper = new UI.PopoverHelper(this._networkLogView.element);
     this._popoverHelper.initializeCallbacks(
         this._getPopoverAnchor.bind(this), this._showPopover.bind(this), this._onHidePopover.bind(this));
+    this._popoverHelper.setHasPadding(true);
 
     /** @type {!DataGrid.SortableDataGrid<!Network.NetworkNode>} */
     this._dataGrid =
@@ -538,14 +539,16 @@
 
   /**
    * @param {!Element} anchor
-   * @param {!UI.Popover} popover
+   * @param {!UI.GlassPane} popover
+   * @return {!Promise<boolean>}
    */
   _showPopover(anchor, popover) {
     var request = /** @type {!SDK.NetworkRequest} */ (anchor.request);
     var initiator = /** @type {!Protocol.Network.Initiator} */ (request.initiator());
     var content = Components.DOMPresentationUtils.buildStackTracePreviewContents(
         request.target(), this._popupLinkifier, initiator.stack);
-    popover.showForAnchor(content, anchor);
+    popover.contentElement.appendChild(content);
+    return Promise.resolve(true);
   }
 
   _onHidePopover() {
diff --git a/third_party/WebKit/Source/devtools/front_end/network/NetworkWaterfallColumn.js b/third_party/WebKit/Source/devtools/front_end/network/NetworkWaterfallColumn.js
index 5c8f581..0acb3b1 100644
--- a/third_party/WebKit/Source/devtools/front_end/network/NetworkWaterfallColumn.js
+++ b/third_party/WebKit/Source/devtools/front_end/network/NetworkWaterfallColumn.js
@@ -35,6 +35,7 @@
 
     this._popoverHelper = new UI.PopoverHelper(this.element);
     this._popoverHelper.initializeCallbacks(this._getPopoverAnchor.bind(this), this._showPopover.bind(this));
+    this._popoverHelper.setHasPadding(true);
     this._popoverHelper.setTimeout(300, 300);
 
     /** @type {!Array<!Network.NetworkNode>} */
@@ -168,16 +169,18 @@
 
   /**
    * @param {!Element|!AnchorBox} anchor
-   * @param {!UI.Popover} popover
+   * @param {!UI.GlassPane} popover
+   * @return {!Promise<boolean>}
    */
   _showPopover(anchor, popover) {
     if (!this._hoveredNode)
-      return;
+      return Promise.resolve(false);
     var request = this._hoveredNode.request();
     if (!request)
-      return;
+      return Promise.resolve(false);
     var content = Network.RequestTimingView.createTimingTable(request, this._calculator);
-    popover.showForAnchor(content, anchor);
+    popover.contentElement.appendChild(content);
+    return Promise.resolve(true);
   }
 
   /**
diff --git a/third_party/WebKit/Source/devtools/front_end/object_ui/ObjectPopoverHelper.js b/third_party/WebKit/Source/devtools/front_end/object_ui/ObjectPopoverHelper.js
index b790cd03..72df881 100644
--- a/third_party/WebKit/Source/devtools/front_end/object_ui/ObjectPopoverHelper.js
+++ b/third_party/WebKit/Source/devtools/front_end/object_ui/ObjectPopoverHelper.js
@@ -42,6 +42,7 @@
   constructor(panelElement, getAnchor, queryObject, onHide, disableOnClick) {
     super(panelElement, disableOnClick);
     this.initializeCallbacks(getAnchor, this._showObjectPopover.bind(this), this._onHideObjectPopover.bind(this));
+    this.setHasPadding(true);
     this._queryObject = queryObject;
     this._onHideCallback = onHide;
     this._popoverObjectGroup = 'popover';
@@ -50,20 +51,23 @@
 
   /**
    * @param {!Element} element
-   * @param {!UI.Popover} popover
+   * @param {!UI.GlassPane} popover
+   * @return {!Promise<boolean>}
    */
   _showObjectPopover(element, popover) {
+    var fulfill;
+    var promise = new Promise(x => fulfill = x);
+
     /**
      * @param {!SDK.RemoteObject} funcObject
      * @param {!Element} popoverContentElement
      * @param {!Element} popoverValueElement
-     * @param {!Element} anchorElement
      * @param {?Array.<!SDK.RemoteObjectProperty>} properties
      * @param {?Array.<!SDK.RemoteObjectProperty>} internalProperties
      * @this {ObjectUI.ObjectPopoverHelper}
      */
     function didGetFunctionProperties(
-        funcObject, popoverContentElement, popoverValueElement, anchorElement, properties, internalProperties) {
+        funcObject, popoverContentElement, popoverValueElement, properties, internalProperties) {
       if (internalProperties) {
         for (var i = 0; i < internalProperties.length; i++) {
           if (internalProperties[i].name === '[[TargetFunction]]') {
@@ -75,18 +79,19 @@
       ObjectUI.ObjectPropertiesSection.formatObjectAsFunction(funcObject, popoverValueElement, true);
       funcObject.debuggerModel()
           .functionDetailsPromise(funcObject)
-          .then(didGetFunctionDetails.bind(this, popoverContentElement, anchorElement));
+          .then(didGetFunctionDetails.bind(this, popoverContentElement));
     }
 
     /**
      * @param {!Element} popoverContentElement
-     * @param {!Element} anchorElement
      * @param {?SDK.DebuggerModel.FunctionDetails} response
      * @this {ObjectUI.ObjectPopoverHelper}
      */
-    function didGetFunctionDetails(popoverContentElement, anchorElement, response) {
-      if (!response || this._disposed)
+    function didGetFunctionDetails(popoverContentElement, response) {
+      if (!response || this._disposed) {
+        fulfill(false);
         return;
+      }
 
       var container = createElementWithClass('div', 'object-popover-container');
       var title = container.createChild('div', 'function-popover-title source-code');
@@ -99,24 +104,29 @@
       if (rawLocation && sourceURL)
         linkContainer.appendChild(this._lazyLinkifier().linkifyRawLocation(rawLocation, sourceURL));
       container.appendChild(popoverContentElement);
-      popover.showForAnchor(container, anchorElement);
+      popover.contentElement.appendChild(container);
+      fulfill(true);
     }
 
     /**
      * @param {!SDK.RemoteObject} result
      * @param {boolean} wasThrown
-     * @param {!Element=} anchorOverride
+     * @param {!Element|!AnchorBox=} anchorOverride
      * @this {ObjectUI.ObjectPopoverHelper}
      */
     function didQueryObject(result, wasThrown, anchorOverride) {
-      if (this._disposed)
+      if (this._disposed) {
+        fulfill(false);
         return;
+      }
       if (wasThrown) {
         this.hidePopover();
+        fulfill(false);
         return;
       }
       this._objectTarget = result.target();
-      var anchorElement = anchorOverride || element;
+      var anchor = anchorOverride || element;
+      popover.setContentAnchorBox(anchor instanceof AnchorBox ? anchor : anchor.boxInWindow());
       var description = result.description.trimEnd(ObjectUI.ObjectPopoverHelper.MaxPopoverTextLength);
       var popoverContentElement = null;
       if (result.type !== 'object') {
@@ -134,10 +144,11 @@
         if (result.type === 'function') {
           result.getOwnProperties(
               false /* generatePreview */,
-              didGetFunctionProperties.bind(this, result, popoverContentElement, valueElement, anchorElement));
+              didGetFunctionProperties.bind(this, result, popoverContentElement, valueElement));
           return;
         }
-        popover.showForAnchor(popoverContentElement, anchorElement);
+        popover.contentElement.appendChild(popoverContentElement);
+        fulfill(true);
       } else {
         if (result.subtype === 'node') {
           SDK.DOMModel.highlightObjectAsDOMNode(result);
@@ -160,11 +171,13 @@
         }
         popover.setMaxContentSize(new UI.Size(300, 250));
         popover.setSizeBehavior(UI.GlassPane.SizeBehavior.SetExactSize);
-        popover.showForAnchor(popoverContentElement, anchorElement);
+        popover.contentElement.appendChild(popoverContentElement);
+        fulfill(true);
       }
     }
     this._disposed = false;
     this._queryObject(element, didQueryObject.bind(this), this._popoverObjectGroup);
+    return promise;
   }
 
   _onHideObjectPopover() {
diff --git a/third_party/WebKit/Source/devtools/front_end/object_ui/objectPopover.css b/third_party/WebKit/Source/devtools/front_end/object_ui/objectPopover.css
index c903e287..c04f202 100644
--- a/third_party/WebKit/Source/devtools/front_end/object_ui/objectPopover.css
+++ b/third_party/WebKit/Source/devtools/front_end/object_ui/objectPopover.css
@@ -51,6 +51,11 @@
     margin-left: 10px;
 }
 
+.function-title-link-container .devtools-link {
+    white-space: nowrap;
+    overflow: hidden;
+}
+
 .function-location-step-into {
     position: relative;
     height: 14px;
diff --git a/third_party/WebKit/Source/devtools/front_end/perf_ui/TimelineOverviewPane.js b/third_party/WebKit/Source/devtools/front_end/perf_ui/TimelineOverviewPane.js
index f3e5010..4194f99 100644
--- a/third_party/WebKit/Source/devtools/front_end/perf_ui/TimelineOverviewPane.js
+++ b/third_party/WebKit/Source/devtools/front_end/perf_ui/TimelineOverviewPane.js
@@ -56,6 +56,7 @@
     this._popoverHelper = new UI.PopoverHelper(this._cursorArea);
     this._popoverHelper.initializeCallbacks(
         this._getPopoverAnchor.bind(this), this._showPopover.bind(this), this._onHidePopover.bind(this));
+    this._popoverHelper.setHasPadding(true);
     this._popoverHelper.setTimeout(0);
 
     this._updateThrottler = new Common.Throttler(100);
@@ -76,22 +77,26 @@
 
   /**
    * @param {!Element} anchor
-   * @param {!UI.Popover} popover
+   * @param {!UI.GlassPane} popover
+   * @return {!Promise<boolean>}
    */
   _showPopover(anchor, popover) {
-    this._buildPopoverContents().then(maybeShowPopover.bind(this));
+    return this._buildPopoverContents().then(maybeShowPopover.bind(this));
+
     /**
      * @this {PerfUI.TimelineOverviewPane}
      * @param {!DocumentFragment} fragment
+     * @return {boolean}
      */
     function maybeShowPopover(fragment) {
       if (!fragment.firstChild)
-        return;
+        return false;
       var content = new PerfUI.TimelineOverviewPane.PopoverContents();
       this._popoverContents = content.contentElement.createChild('div');
       this._popoverContents.appendChild(fragment);
       this._popover = popover;
-      popover.showView(content, this._cursorElement);
+      content.show(popover.contentElement);
+      return true;
     }
   }
 
diff --git a/third_party/WebKit/Source/devtools/front_end/sdk/TargetManager.js b/third_party/WebKit/Source/devtools/front_end/sdk/TargetManager.js
index 50b36024..2f7119f 100644
--- a/third_party/WebKit/Source/devtools/front_end/sdk/TargetManager.js
+++ b/third_party/WebKit/Source/devtools/front_end/sdk/TargetManager.js
@@ -422,8 +422,10 @@
    * @return {!Protocol.InspectorBackend.Connection}
    */
   _createMainConnection(params) {
-    if (Runtime.queryParam('ws')) {
-      var ws = 'ws://' + Runtime.queryParam('ws');
+    var wsParam = Runtime.queryParam('ws');
+    var wssParam = Runtime.queryParam('wss');
+    if (wsParam || wssParam) {
+      var ws = wsParam ? `ws://${wsParam}` : `wss://${wssParam}`;
       this._mainConnection = new SDK.WebSocketConnection(ws, this._webSocketConnectionLostCallback, params);
     } else if (InspectorFrontendHost.isHostedMode()) {
       this._mainConnection = new SDK.StubConnection(params);
diff --git a/third_party/WebKit/Source/devtools/front_end/source_frame/UISourceCodeFrame.js b/third_party/WebKit/Source/devtools/front_end/source_frame/UISourceCodeFrame.js
index c9f57c9..d1db34b 100644
--- a/third_party/WebKit/Source/devtools/front_end/source_frame/UISourceCodeFrame.js
+++ b/third_party/WebKit/Source/devtools/front_end/source_frame/UISourceCodeFrame.js
@@ -74,6 +74,7 @@
 
     this._errorPopoverHelper = new UI.PopoverHelper(this.element);
     this._errorPopoverHelper.initializeCallbacks(this._getErrorAnchor.bind(this), this._showErrorPopover.bind(this));
+    this._errorPopoverHelper.setHasPadding(true);
 
     this._errorPopoverHelper.setTimeout(100, 100);
 
@@ -400,14 +401,17 @@
 
   /**
    * @param {!Element} anchor
-   * @param {!UI.Popover} popover
+   * @param {!UI.GlassPane} popover
+   * @return {!Promise<boolean>}
    */
   _showErrorPopover(anchor, popover) {
     var messageBucket = anchor.enclosingNodeOrSelfWithClass('text-editor-line-decoration')._messageBucket;
     var messagesOutline = messageBucket.messagesDescription();
-    var popoverAnchor =
-        anchor.enclosingNodeOrSelfWithClass('text-editor-line-decoration-icon') ? anchor : this._errorWavePopoverAnchor;
-    popover.showForAnchor(messagesOutline, popoverAnchor);
+    popover.setContentAnchorBox(
+        anchor.enclosingNodeOrSelfWithClass('text-editor-line-decoration-icon') ? anchor.boxInWindow() :
+                                                                                  this._errorWavePopoverAnchor);
+    popover.contentElement.appendChild(messagesOutline);
+    return Promise.resolve(true);
   }
 
   _updateBucketDecorations() {
diff --git a/third_party/WebKit/Source/devtools/front_end/ui/Popover.js b/third_party/WebKit/Source/devtools/front_end/ui/Popover.js
index a6ab9a8..8364ab74 100644
--- a/third_party/WebKit/Source/devtools/front_end/ui/Popover.js
+++ b/third_party/WebKit/Source/devtools/front_end/ui/Popover.js
@@ -28,83 +28,6 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-UI.Popover = class extends UI.GlassPane {
-  /**
-   * @param {!UI.PopoverHelper=} popoverHelper
-   */
-  constructor(popoverHelper) {
-    super();
-    this.registerRequiredCSS('ui/popover.css');
-    this.setBlockPointerEvents(false);
-    this.setSizeBehavior(UI.GlassPane.SizeBehavior.MeasureContent);
-    this.setShowArrow(true);
-    this._popoverHelper = popoverHelper;
-  }
-
-  /**
-   * @param {!Element} element
-   * @param {!Element|!AnchorBox} anchor
-   */
-  showForAnchor(element, anchor) {
-    this._innerShow(null, element, anchor);
-  }
-
-  /**
-   * @param {!UI.Widget} view
-   * @param {!Element|!AnchorBox} anchor
-   */
-  showView(view, anchor) {
-    this._innerShow(view, view.element, anchor);
-  }
-
-  /**
-   * @param {?UI.Widget} widget
-   * @param {!Element} contentElement
-   * @param {!Element|!AnchorBox} anchor
-   */
-  _innerShow(widget, contentElement, anchor) {
-    // This should not happen, but we hide previous popup to be on the safe side.
-    if (UI.Popover._popover)
-      UI.Popover._popover.hide();
-    UI.Popover._popover = this;
-
-    var document =
-        /** @type {!Document} */ (anchor instanceof Element ? anchor.ownerDocument : contentElement.ownerDocument);
-    var anchorBox = anchor instanceof AnchorBox ? anchor : anchor.boxInWindow();
-    this.setContentAnchorBox(anchorBox);
-
-    if (widget)
-      widget.show(this.contentElement);
-    else
-      this.contentElement.appendChild(contentElement);
-
-    super.show(document);
-
-    if (this._popoverHelper) {
-      this.contentElement.addEventListener(
-          'mousemove', this._popoverHelper._killHidePopoverTimer.bind(this._popoverHelper), true);
-      this.contentElement.addEventListener(
-          'mouseout', this._popoverHelper._popoverMouseOut.bind(this._popoverHelper), true);
-    }
-  }
-
-  /**
-   * @override
-   */
-  hide() {
-    super.hide();
-    delete UI.Popover._popover;
-  }
-
-  /**
-   * @param {boolean} noPadding
-   */
-  setNoPadding(noPadding) {
-    // TODO(dgozman): remove this. Clients should add padding themselves.
-    this.contentElement.classList.toggle('no-padding', noPadding);
-  }
-};
-
 /**
  * @unrestricted
  */
@@ -115,6 +38,7 @@
    */
   constructor(panelElement, disableOnClick) {
     this._disableOnClick = !!disableOnClick;
+    this._hasPadding = false;
     panelElement.addEventListener('mousedown', this._mouseDown.bind(this), false);
     panelElement.addEventListener('mousemove', this._mouseMove.bind(this), false);
     panelElement.addEventListener('mouseout', this._mouseOut.bind(this), false);
@@ -123,7 +47,7 @@
 
   /**
    * @param {function(!Element, !Event):(!Element|!AnchorBox|undefined)} getAnchor
-   * @param {function(!Element, !UI.Popover):undefined} showPopover
+   * @param {function(!Element, !UI.GlassPane):!Promise<boolean>} showPopover
    * @param {function()=} onHide
    */
   initializeCallbacks(getAnchor, showPopover, onHide) {
@@ -145,6 +69,13 @@
   }
 
   /**
+   * @param {boolean} hasPadding
+   */
+  setHasPadding(hasPadding) {
+    this._hasPadding = hasPadding;
+  }
+
+  /**
    * @param {!MouseEvent} event
    * @return {boolean}
    */
@@ -212,7 +143,8 @@
     if (!this._hoverElement)
       return;
     const toolTipDelay = isMouseDown ? 0 : (this._popup ? this._timeout * 0.6 : this._timeout);
-    this._hoverTimer = setTimeout(this._mouseHover.bind(this, this._hoverElement), toolTipDelay);
+    this._hoverTimer =
+        setTimeout(this._mouseHover.bind(this, this._hoverElement, event.target.ownerDocument), toolTipDelay);
   }
 
   _resetHoverTimer() {
@@ -238,6 +170,7 @@
     if (!this._popover)
       return;
 
+    delete UI.PopoverHelper._popover;
     if (this._onHide)
       this._onHide();
 
@@ -247,12 +180,33 @@
     this._hoverElement = null;
   }
 
-  _mouseHover(element) {
+  _mouseHover(element, document) {
     delete this._hoverTimer;
     this._hoverElement = element;
     this._hidePopover();
-    this._popover = new UI.Popover(this);
-    this._showPopover(element, this._popover);
+
+    this._popover = new UI.GlassPane();
+    this._popover.registerRequiredCSS('ui/popover.css');
+    this._popover.setBlockPointerEvents(false);
+    this._popover.setSizeBehavior(UI.GlassPane.SizeBehavior.MeasureContent);
+    this._popover.setShowArrow(true);
+    this._popover.contentElement.classList.toggle('has-padding', this._hasPadding);
+    this._popover.contentElement.addEventListener('mousemove', this._killHidePopoverTimer.bind(this), true);
+    this._popover.contentElement.addEventListener('mouseout', this._popoverMouseOut.bind(this), true);
+    this._popover.setContentAnchorBox(
+        this._hoverElement instanceof AnchorBox ? this._hoverElement : this._hoverElement.boxInWindow());
+
+    // This should not happen, but we hide previous popover to be on the safe side.
+    if (UI.PopoverHelper._popover) {
+      console.error('One popover is already visible');
+      UI.PopoverHelper._popover.hide();
+    }
+    UI.PopoverHelper._popover = this._popover;
+    var popover = this._popover;
+    this._showPopover(element, this._popover).then(success => {
+      if (success && this._popover === popover && this._hoverElement === element)
+        popover.show(document);
+    });
   }
 
   _killHidePopoverTimer() {
diff --git a/third_party/WebKit/Source/devtools/front_end/ui/popover.css b/third_party/WebKit/Source/devtools/front_end/ui/popover.css
index 493f8de..a1a1bb6 100644
--- a/third_party/WebKit/Source/devtools/front_end/ui/popover.css
+++ b/third_party/WebKit/Source/devtools/front_end/ui/popover.css
@@ -12,9 +12,8 @@
     overflow: auto;
     -webkit-user-select: text;
     line-height: 11px;
-    padding: 6px;
 }
 
-.widget.no-padding {
-    padding: 0;
+.widget.has-padding {
+    padding: 6px;
 }
diff --git a/third_party/WebKit/Source/modules/vr/DEPS b/third_party/WebKit/Source/modules/vr/DEPS
index c7d7eec..fd6692e 100644
--- a/third_party/WebKit/Source/modules/vr/DEPS
+++ b/third_party/WebKit/Source/modules/vr/DEPS
@@ -2,4 +2,5 @@
     "+mojo/public/cpp/bindings/binding.h",
     "+device/vr/vr_service.mojom-blink.h",
     "+gpu/command_buffer/client/gles2_interface.h",
+    "+gpu/command_buffer/common/mailbox_holder.h",
 ]
diff --git a/third_party/WebKit/Source/modules/vr/VRDisplay.cpp b/third_party/WebKit/Source/modules/vr/VRDisplay.cpp
index cc8f103..97475f1 100644
--- a/third_party/WebKit/Source/modules/vr/VRDisplay.cpp
+++ b/third_party/WebKit/Source/modules/vr/VRDisplay.cpp
@@ -8,13 +8,17 @@
 #include "core/dom/DOMException.h"
 #include "core/dom/DocumentUserGestureToken.h"
 #include "core/dom/FrameRequestCallback.h"
-#include "core/dom/Fullscreen.h"
 #include "core/dom/ScriptedAnimationController.h"
 #include "core/dom/TaskRunnerHelper.h"
+#include "core/frame/FrameView.h"
+#include "core/frame/ImageBitmap.h"
 #include "core/frame/UseCounter.h"
 #include "core/inspector/ConsoleMessage.h"
+#include "core/layout/LayoutView.h"
+#include "core/layout/compositing/PaintLayerCompositor.h"
 #include "core/loader/DocumentLoader.h"
 #include "gpu/command_buffer/client/gles2_interface.h"
+#include "gpu/command_buffer/common/mailbox_holder.h"
 #include "modules/EventTargetModules.h"
 #include "modules/vr/NavigatorVR.h"
 #include "modules/vr/VRController.h"
@@ -27,6 +31,7 @@
 #include "modules/webgl/WebGLRenderingContextBase.h"
 #include "platform/Histogram.h"
 #include "platform/UserGestureIndicator.h"
+#include "platform/instrumentation/tracing/TraceEvent.h"
 #include "public/platform/Platform.h"
 #include "wtf/AutoReset.h"
 #include "wtf/Time.h"
@@ -37,10 +42,6 @@
 
 namespace {
 
-// Magic numbers used to mark valid pose index values encoded in frame
-// data. Must match the magic numbers used in vr_shell.cc.
-static constexpr std::array<uint8_t, 2> kWebVrPosePixelMagicNumbers{{42, 142}};
-
 VREye stringToVREye(const String& whichEye) {
   if (whichEye == "left")
     return VREyeLeft;
@@ -59,12 +60,8 @@
       m_capabilities(new VRDisplayCapabilities()),
       m_eyeParametersLeft(new VREyeParameters()),
       m_eyeParametersRight(new VREyeParameters()),
-      m_fullscreenCheckTimer(
-          TaskRunnerHelper::get(TaskType::UnspecedTimer,
-                                navigatorVR->document()->frame()),
-          this,
-          &VRDisplay::onFullscreenCheck),
       m_display(std::move(display)),
+      m_submit_frame_client_binding(this),
       m_displayClientBinding(this, std::move(request)) {}
 
 VRDisplay::~VRDisplay() {}
@@ -239,17 +236,6 @@
     return promise;
   }
 
-  // TODO(mthiesse): Remove fullscreen requirement for presentation. See
-  // crbug.com/687369
-  Document* doc = this->document();
-  if (!doc || !Fullscreen::fullscreenEnabled(*doc)) {
-    DOMException* exception =
-        DOMException::create(InvalidStateError, "Fullscreen is not enabled.");
-    resolver->reject(exception);
-    ReportPresentationResult(PresentationResult::FullscreenNotEnabled);
-    return promise;
-  }
-
   // A valid number of layers must be provided in order to present.
   if (layers.size() == 0 || layers.size() > m_capabilities->maxLayers()) {
     forceExitPresent();
@@ -324,9 +310,12 @@
     }
 
     m_pendingPresentResolvers.append(resolver);
-    m_display->RequestPresent(secureContext, convertToBaseCallback(WTF::bind(
-                                                 &VRDisplay::onPresentComplete,
-                                                 wrapPersistent(this))));
+    m_submit_frame_client_binding.Close();
+    m_display->RequestPresent(
+        secureContext,
+        m_submit_frame_client_binding.CreateInterfacePtrAndBind(),
+        convertToBaseCallback(
+            WTF::bind(&VRDisplay::onPresentComplete, wrapPersistent(this))));
   } else {
     updateLayerBounds();
     resolver->resolve();
@@ -395,50 +384,9 @@
     return;
   } else {
     if (m_layer.source().isHTMLCanvasElement()) {
-      HTMLCanvasElement* canvas = m_layer.source().getAsHTMLCanvasElement();
-      // TODO(klausw,crbug.com/655722): Need a proper VR compositor, but
-      // for the moment on mobile we'll just make the canvas fullscreen
-      // so that VrShell can pick it up through the standard (high
-      // latency) compositing path.      auto canvas =
-      // m_layer.source().getAsHTMLCanvasElement();
-      auto inlineStyle = canvas->inlineStyle();
-      if (inlineStyle) {
-        // THREE.js's VREffect sets explicit style.width/height on its rendering
-        // canvas based on the non-fullscreen window dimensions, and it keeps
-        // those unchanged when presenting. Unfortunately it appears that a
-        // fullscreened canvas just gets centered if it has explicitly set a
-        // size smaller than the fullscreen dimensions. Manually set size to
-        // 100% in this case and restore it when exiting fullscreen. This is a
-        // stopgap measure since THREE.js's usage appears legal according to the
-        // WebVR API spec. This will no longer be necessary once we can get rid
-        // of this fullscreen hack.
-        m_fullscreenOrigWidth = inlineStyle->getPropertyValue(CSSPropertyWidth);
-        if (!m_fullscreenOrigWidth.isNull()) {
-          canvas->setInlineStyleProperty(CSSPropertyWidth, "100%");
-        }
-        m_fullscreenOrigHeight =
-            inlineStyle->getPropertyValue(CSSPropertyHeight);
-        if (!m_fullscreenOrigHeight.isNull()) {
-          canvas->setInlineStyleProperty(CSSPropertyHeight, "100%");
-        }
-      } else {
-        m_fullscreenOrigWidth = String();
-        m_fullscreenOrigHeight = String();
-      }
-
-      if (doc) {
-        // Since the callback for requestPresent is asynchronous, we've lost our
-        // UserGestureToken, and need to create a new one to enter fullscreen.
-        gestureIndicator = WTF::wrapUnique(
-            new UserGestureIndicator(DocumentUserGestureToken::create(
-                doc, UserGestureToken::Status::PossiblyExistingGesture)));
-      }
-      Fullscreen::requestFullscreen(*canvas);
-
-      // Check to see if the canvas is still the current fullscreen
-      // element once every 2 seconds.
-      m_fullscreenCheckTimer.startRepeating(2.0, BLINK_FROM_HERE);
-      m_reenteredFullscreen = false;
+      // TODO(klausw,crbug.com/698923): suppress compositor updates
+      // since they aren't needed, they do a fair amount of extra
+      // work.
     } else {
       DCHECK(m_layer.source().isOffscreenCanvas());
       // TODO(junov, crbug.com/695497): Implement OffscreenCanvas presentation
@@ -519,7 +467,8 @@
   }
 
   m_display->UpdateLayerBounds(m_vrFrameId, std::move(leftBounds),
-                               std::move(rightBounds));
+                               std::move(rightBounds), m_sourceWidth,
+                               m_sourceHeight);
 }
 
 HeapVector<VRLayer> VRDisplay::getLayers() {
@@ -535,6 +484,7 @@
 void VRDisplay::submitFrame() {
   if (!m_display)
     return;
+  TRACE_EVENT1("gpu", "submitFrame", "frame", m_vrFrameId);
 
   Document* doc = this->document();
   if (!m_isPresenting) {
@@ -563,42 +513,109 @@
 
   // No frame Id to write before submitting the frame.
   if (m_vrFrameId < 0) {
-    m_display->SubmitFrame(m_framePose.Clone());
+    // TODO(klausw): There used to be a submitFrame here, but we can't
+    // submit without a frameId and associated pose data. Just drop it.
     return;
   }
 
-  // Write the frame number for the pose used into a bottom left pixel block.
-  // It is read by chrome/browser/android/vr_shell/vr_shell.cc to associate
-  // the correct corresponding pose for submission.
-  auto gl = m_contextGL;
+  m_contextGL->Flush();
 
-  // We must ensure that the WebGL app's GL state is preserved. We do this by
-  // calling low-level GL commands directly so that the rendering context's
-  // saved parameters don't get overwritten.
+  // Check if the canvas got resized, if yes send a bounds update.
+  int currentWidth = m_renderingContext->drawingBufferWidth();
+  int currentHeight = m_renderingContext->drawingBufferHeight();
+  if ((currentWidth != m_sourceWidth || currentHeight != m_sourceHeight) &&
+      currentWidth != 0 && currentHeight != 0) {
+    m_sourceWidth = currentWidth;
+    m_sourceHeight = currentHeight;
+    updateLayerBounds();
+  }
 
-  gl->Enable(GL_SCISSOR_TEST);
-  // Use a few pixels to ensure we get a clean color. The resolution for the
-  // WebGL buffer may not match the final rendered destination size, and
-  // texture filtering could interfere for single pixels. This isn't visible
-  // since the final rendering hides the edges via a vignette effect.
-  gl->Scissor(0, 0, 4, 4);
-  gl->ColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE);
-  // Careful with the arithmetic here. Float color 1.f is equivalent to int 255.
-  // Use the low byte of the index as the red component, and store an arbitrary
-  // magic number in green/blue. This number must match the reading code in
-  // vr_shell.cc. Avoid all-black/all-white.
-  gl->ClearColor((m_vrFrameId & 255) / 255.0f,
-                 kWebVrPosePixelMagicNumbers[0] / 255.0f,
-                 kWebVrPosePixelMagicNumbers[1] / 255.0f, 1.0f);
-  gl->Clear(GL_COLOR_BUFFER_BIT);
+  // There's two types of synchronization needed for submitting frames:
+  //
+  // - Before submitting, need to wait for the previous frame to be
+  //   pulled off the transfer surface to avoid lost frames. This
+  //   is currently a compile-time option, normally we always want
+  //   to defer this wait to increase parallelism.
+  //
+  // - After submitting, need to wait for the mailbox to be consumed,
+  //   and must remain inside the execution context while waiting.
+  //   The waitForPreviousTransferToFinish option defers this wait
+  //   until the next frame. That's more efficient, but seems to
+  //   cause wobbly framerates.
+  bool waitForPreviousTransferToFinish =
+      RuntimeEnabledFeatures::webVRExperimentalRenderingEnabled();
 
-  // Set the GL state back to what was set by the WebVR application.
-  m_renderingContext->restoreScissorEnabled();
-  m_renderingContext->restoreScissorBox();
-  m_renderingContext->restoreColorMask();
-  m_renderingContext->restoreClearColor();
+  if (waitForPreviousTransferToFinish) {
+    TRACE_EVENT0("gpu", "VRDisplay::waitForPreviousTransferToFinish");
+    while (m_pendingSubmitFrame) {
+      if (!m_submit_frame_client_binding.WaitForIncomingMethodCall()) {
+        DLOG(ERROR) << "Failed to receive SubmitFrame response";
+        break;
+      }
+    }
+  }
 
-  m_display->SubmitFrame(m_framePose.Clone());
+  RefPtr<Image> imageRef = m_renderingContext->getImage(
+      PreferAcceleration, SnapshotReasonCreateImageBitmap);
+
+  // Hardware-accelerated rendering should always be texture backed.
+  // I hope nobody is trying to do WebVR with software rendering.
+  DCHECK(imageRef->isTextureBacked());
+
+  // The AcceleratedStaticBitmapImage must be kept alive until the
+  // mailbox is used via createAndConsumeTextureCHROMIUM, the mailbox
+  // itself does not keep it alive. We must keep a reference to the
+  // image until the mailbox was consumed.
+  StaticBitmapImage* staticImage =
+      static_cast<StaticBitmapImage*>(imageRef.get());
+  staticImage->ensureMailbox();
+
+  if (waitForPreviousTransferToFinish) {
+    // Save a reference to the image to keep it alive until next frame,
+    // where we'll wait for the transfer to finish before overwriting
+    // it.
+    m_previousImage = std::move(imageRef);
+  }
+
+  // Wait for the previous render to finish, to avoid losing frames in the
+  // Android Surface / GLConsumer pair. TODO(klausw): make this tunable?
+  // Other devices may have different preferences.
+  {
+    TRACE_EVENT0("gpu", "waitForPreviousRenderToFinish");
+    while (m_pendingPreviousFrameRender) {
+      if (!m_submit_frame_client_binding.WaitForIncomingMethodCall()) {
+        DLOG(ERROR) << "Failed to receive SubmitFrame response";
+        break;
+      }
+    }
+  }
+
+  m_pendingPreviousFrameRender = true;
+  m_pendingSubmitFrame = true;
+  m_display->SubmitFrame(
+      m_vrFrameId, gpu::MailboxHolder(staticImage->mailbox(),
+                                      staticImage->syncToken(), GL_TEXTURE_2D));
+
+  // If we're not deferring the wait for transferring the mailbox,
+  // we need to wait for it now to prevent the image going out of
+  // scope before its mailbox is retrieved.
+  if (!waitForPreviousTransferToFinish) {
+    TRACE_EVENT0("gpu", "waitForCurrentTransferToFinish");
+    while (m_pendingSubmitFrame) {
+      if (!m_submit_frame_client_binding.WaitForIncomingMethodCall()) {
+        DLOG(ERROR) << "Failed to receive SubmitFrame response";
+        break;
+      }
+    }
+  }
+}
+
+void VRDisplay::OnSubmitFrameTransferred() {
+  m_pendingSubmitFrame = false;
+}
+
+void VRDisplay::OnSubmitFrameRendered() {
+  m_pendingPreviousFrameRender = false;
 }
 
 Document* VRDisplay::document() {
@@ -607,7 +624,7 @@
 
 void VRDisplay::OnPresentChange() {
   if (m_isPresenting && !m_isValidDeviceForPresenting) {
-    VLOG(1) << __FUNCTION__ << ": device not valid, not sending event";
+    DVLOG(1) << __FUNCTION__ << ": device not valid, not sending event";
     return;
   }
   m_navigatorVR->enqueueVREvent(VRDisplayEvent::create(
@@ -636,19 +653,8 @@
   if (m_isPresenting) {
     if (!m_capabilities->hasExternalDisplay()) {
       if (m_layer.source().isHTMLCanvasElement()) {
-        auto canvas = m_layer.source().getAsHTMLCanvasElement();
-        Fullscreen::fullyExitFullscreen(canvas->document());
-        m_fullscreenCheckTimer.stop();
-        if (!m_fullscreenOrigWidth.isNull()) {
-          canvas->setInlineStyleProperty(CSSPropertyWidth,
-                                         m_fullscreenOrigWidth);
-          m_fullscreenOrigWidth = String();
-        }
-        if (!m_fullscreenOrigHeight.isNull()) {
-          canvas->setInlineStyleProperty(CSSPropertyWidth,
-                                         m_fullscreenOrigHeight);
-          m_fullscreenOrigHeight = String();
-        }
+        // TODO(klausw,crbug.com/698923): If compositor updates are
+        // suppressed, restore them here.
       } else {
         // TODO(junov, crbug.com/695497): Implement for OffscreenCanvas
       }
@@ -661,6 +667,8 @@
 
   m_renderingContext = nullptr;
   m_contextGL = nullptr;
+  m_pendingSubmitFrame = false;
+  m_pendingPreviousFrameRender = false;
 }
 
 void VRDisplay::OnActivate(device::mojom::blink::VRDisplayEventReason reason) {
@@ -683,18 +691,12 @@
   switch (error) {
     case device::mojom::blink::VRVSyncProvider::Status::SUCCESS:
       break;
-    case device::mojom::blink::VRVSyncProvider::Status::RETRY:
-      m_vrVSyncProvider->GetVSync(convertToBaseCallback(
-          WTF::bind(&VRDisplay::OnVSync, wrapWeakPersistent(this))));
+    case device::mojom::blink::VRVSyncProvider::Status::CLOSING:
       return;
   }
   m_pendingVsync = false;
-  if (m_displayBlurred)
-    return;
-  if (!m_scriptedAnimationController)
-    return;
   Document* doc = this->document();
-  if (!doc)
+  if (!doc || m_displayBlurred || !m_scriptedAnimationController)
     return;
 
   WTF::TimeDelta timeDelta =
@@ -716,6 +718,8 @@
   if (!m_navigatorVR->isFocused() || m_vrVSyncProvider.is_bound())
     return;
   m_display->GetVRVSyncProvider(mojo::MakeRequest(&m_vrVSyncProvider));
+  m_vrVSyncProvider.set_connection_error_handler(convertToBaseCallback(
+      WTF::bind(&VRDisplay::OnVSyncConnectionError, wrapWeakPersistent(this))));
   if (m_pendingRaf && !m_displayBlurred) {
     m_pendingVsync = true;
     m_vrVSyncProvider->GetVSync(convertToBaseCallback(
@@ -723,42 +727,9 @@
   }
 }
 
-void VRDisplay::onFullscreenCheck(TimerBase*) {
-  DCHECK(m_layer.source().isHTMLCanvasElement());
-  if (!m_isPresenting) {
-    m_fullscreenCheckTimer.stop();
-    return;
-  }
-  // TODO: This is a temporary measure to track if fullscreen mode has been
-  // exited by the UA. If so we need to end VR presentation. Soon we won't
-  // depend on the Fullscreen API to fake VR presentation, so this will
-  // become unnessecary. Until that point, though, this seems preferable to
-  // adding a bunch of notification plumbing to Fullscreen.
-  if (!Fullscreen::isCurrentFullScreenElement(
-          *m_layer.source().getAsHTMLCanvasElement())) {
-    // TODO(mthiesse): Due to asynchronous resizing, we might get kicked out of
-    // fullscreen when changing display parameters upon entering WebVR. So one
-    // time only, we reenter fullscreen after having left it; otherwise we exit
-    // presentation.
-    if (m_reenteredFullscreen) {
-      m_isPresenting = false;
-      OnPresentChange();
-      m_fullscreenCheckTimer.stop();
-      if (m_display)
-        m_display->ExitPresent();
-      return;
-    }
-    m_reenteredFullscreen = true;
-    auto canvas = m_layer.source().getAsHTMLCanvasElement();
-    Document* doc = this->document();
-    std::unique_ptr<UserGestureIndicator> gestureIndicator;
-    if (doc) {
-      gestureIndicator = WTF::wrapUnique(
-          new UserGestureIndicator(DocumentUserGestureToken::create(
-              doc, UserGestureToken::Status::PossiblyExistingGesture)));
-    }
-    Fullscreen::requestFullscreen(*canvas);
-  }
+void VRDisplay::OnVSyncConnectionError() {
+  m_vrVSyncProvider.reset();
+  ConnectVSyncProvider();
 }
 
 ScriptedAnimationController& VRDisplay::ensureScriptedAnimationController(
diff --git a/third_party/WebKit/Source/modules/vr/VRDisplay.h b/third_party/WebKit/Source/modules/vr/VRDisplay.h
index af955c5..3eaa741 100644
--- a/third_party/WebKit/Source/modules/vr/VRDisplay.h
+++ b/third_party/WebKit/Source/modules/vr/VRDisplay.h
@@ -41,7 +41,8 @@
 class VRDisplay final : public EventTargetWithInlineData,
                         public ActiveScriptWrappable<VRDisplay>,
                         public ContextLifecycleObserver,
-                        public device::mojom::blink::VRDisplayClient {
+                        public device::mojom::blink::VRDisplayClient,
+                        public device::mojom::blink::VRSubmitFrameClient {
   DEFINE_WRAPPERTYPEINFO();
   USING_GARBAGE_COLLECTED_MIXIN(VRDisplay);
   USING_PRE_FINALIZER(VRDisplay, dispose);
@@ -116,7 +117,6 @@
   VRController* controller();
 
  private:
-  void onFullscreenCheck(TimerBase*);
   void onPresentComplete(bool);
 
   void onConnected();
@@ -126,6 +126,10 @@
 
   void OnPresentChange();
 
+  // VRSubmitFrameClient
+  void OnSubmitFrameTransferred();
+  void OnSubmitFrameRendered();
+
   // VRDisplayClient
   void OnChanged(device::mojom::blink::VRDisplayInfoPtr) override;
   void OnExitPresent() override;
@@ -139,6 +143,7 @@
                int16_t frameId,
                device::mojom::blink::VRVSyncProvider::Status);
   void ConnectVSyncProvider();
+  void OnVSyncConnectionError();
 
   ScriptedAnimationController& ensureScriptedAnimationController(Document*);
 
@@ -162,24 +167,33 @@
   double m_depthNear = 0.01;
   double m_depthFar = 10000.0;
 
+  // Current dimensions of the WebVR source canvas. May be different from
+  // the recommended renderWidth/Height if the client overrides dimensions.
+  int m_sourceWidth = 0;
+  int m_sourceHeight = 0;
+
   void dispose();
 
-  TaskRunnerTimer<VRDisplay> m_fullscreenCheckTimer;
-  String m_fullscreenOrigWidth;
-  String m_fullscreenOrigHeight;
   gpu::gles2::GLES2Interface* m_contextGL = nullptr;
   Member<WebGLRenderingContextBase> m_renderingContext;
 
+  // Used to keep the image alive until the next frame if using
+  // waitForPreviousTransferToFinish.
+  RefPtr<Image> m_previousImage;
+
   Member<ScriptedAnimationController> m_scriptedAnimationController;
   bool m_pendingRaf = false;
   bool m_pendingVsync = false;
   bool m_inAnimationFrame = false;
   bool m_displayBlurred = false;
-  bool m_reenteredFullscreen = false;
   double m_timebase = -1;
+  bool m_pendingPreviousFrameRender = false;
+  bool m_pendingSubmitFrame = false;
 
   device::mojom::blink::VRDisplayPtr m_display;
 
+  mojo::Binding<device::mojom::blink::VRSubmitFrameClient>
+      m_submit_frame_client_binding;
   mojo::Binding<device::mojom::blink::VRDisplayClient> m_displayClientBinding;
   device::mojom::blink::VRVSyncProviderPtr m_vrVSyncProvider;
 
diff --git a/third_party/WebKit/public/blink_typemaps.gni b/third_party/WebKit/public/blink_typemaps.gni
index 0ae60711..7d0461d4 100644
--- a/third_party/WebKit/public/blink_typemaps.gni
+++ b/third_party/WebKit/public/blink_typemaps.gni
@@ -11,5 +11,6 @@
   "//cc/ipc/surface_id.typemap",
   "//cc/ipc/surface_info.typemap",
   "//cc/ipc/surface_sequence.typemap",
+  "//gpu/ipc/common/mailbox_holder_for_blink.typemap",
   "//gpu/ipc/common/sync_token.typemap",
 ]
diff --git a/tools/metrics/histograms/histograms.xml b/tools/metrics/histograms/histograms.xml
index a61d57e..a6958aa8 100644
--- a/tools/metrics/histograms/histograms.xml
+++ b/tools/metrics/histograms/histograms.xml
@@ -51098,6 +51098,10 @@
 </histogram>
 
 <histogram name="Power.BatteryDischargePercentPerHour" units="%">
+  <obsolete>
+    Deprecated 02/2017 in favor of power benchmarks that have less variability
+    than data from users' machines.
+  </obsolete>
   <owner>jeremy@chromium.org</owner>
   <summary>
         The percentage of battery capacity used per hour relative to a full
@@ -51124,6 +51128,10 @@
 </histogram>
 
 <histogram name="Power.BatteryDischargeRate_15" units="%">
+  <obsolete>
+    Deprecated 02/2017 in favor of power benchmarks that have less variability
+    than data from users' machines.
+  </obsolete>
   <owner>jeremy@chromium.org</owner>
   <summary>
         The percent of depleted battery capacity relative to a full battery over
@@ -51138,6 +51146,10 @@
 </histogram>
 
 <histogram name="Power.BatteryDischargeRate_30" units="%">
+  <obsolete>
+    Deprecated 02/2017 in favor of power benchmarks that have less variability
+    than data from users' machines.
+  </obsolete>
   <owner>jeremy@chromium.org</owner>
   <summary>
         The percent of depleted battery capacity relative to a full battery over
@@ -51152,6 +51164,10 @@
 </histogram>
 
 <histogram name="Power.BatteryDischargeRate_5" units="%">
+  <obsolete>
+    Deprecated 02/2017 in favor of power benchmarks that have less variability
+    than data from users' machines.
+  </obsolete>
   <owner>jeremy@chromium.org</owner>
   <summary>
         The percent of depleted battery capacity relative to a full battery over
diff --git a/ui/views/OWNERS b/ui/views/OWNERS
index adf4500..c4ad8565 100644
--- a/ui/views/OWNERS
+++ b/ui/views/OWNERS
@@ -4,3 +4,5 @@
 sadrul@chromium.org
 sky@chromium.org
 tapted@chromium.org
+
+# COMPONENT: Internals>Views
diff --git a/ui/views/bubble/OWNERS b/ui/views/bubble/OWNERS
index 807123d..f04407c 100644
--- a/ui/views/bubble/OWNERS
+++ b/ui/views/bubble/OWNERS
@@ -1,2 +1,4 @@
 msw@chromium.org
 per-file tray_bubble_view.*=stevenjb@chromium.org
+
+# COMPONENT: UI>Browser>Bubbles
diff --git a/ui/views/controls/tabbed_pane/OWNERS b/ui/views/controls/tabbed_pane/OWNERS
index 80d20216..dba3e503 100644
--- a/ui/views/controls/tabbed_pane/OWNERS
+++ b/ui/views/controls/tabbed_pane/OWNERS
@@ -1,2 +1,4 @@
 ellyjones@chromium.org
 msw@chromium.org
+
+# COMPONENT: Internals>Views
diff --git a/ui/views/widget/desktop_aura/desktop_window_tree_host_x11.cc b/ui/views/widget/desktop_aura/desktop_window_tree_host_x11.cc
index c64b0ca..513db16 100644
--- a/ui/views/widget/desktop_aura/desktop_window_tree_host_x11.cc
+++ b/ui/views/widget/desktop_aura/desktop_window_tree_host_x11.cc
@@ -1679,6 +1679,7 @@
   max_size_in_pixels_ = maximum_in_pixels;
 
   XSizeHints hints;
+  hints.flags = 0;
   long supplied_return;
   XGetWMNormalHints(xdisplay_, xwindow_, &hints, &supplied_return);
 
diff --git a/ui/webui/resources/cr_elements/cr_slider/compiled_resources2.gyp b/ui/webui/resources/cr_elements/cr_slider/compiled_resources2.gyp
index a54aaa9..41b2bcd 100644
--- a/ui/webui/resources/cr_elements/cr_slider/compiled_resources2.gyp
+++ b/ui/webui/resources/cr_elements/cr_slider/compiled_resources2.gyp
@@ -6,6 +6,7 @@
     {
       'target_name': 'cr_slider',
       'dependencies': [
+        '<(DEPTH)/ui/webui/resources/cr_elements/policy/compiled_resources2.gyp:cr_policy_pref_behavior',
         '<(DEPTH)/ui/webui/resources/js/compiled_resources2.gyp:assert',
         '<(DEPTH)/third_party/polymer/v1_0/components-chromium/paper-slider/compiled_resources2.gyp:paper-slider-extracted',
       ],
diff --git a/ui/webui/resources/cr_elements/cr_slider/cr_slider.html b/ui/webui/resources/cr_elements/cr_slider/cr_slider.html
index 890950b..6e07aeb4 100644
--- a/ui/webui/resources/cr_elements/cr_slider/cr_slider.html
+++ b/ui/webui/resources/cr_elements/cr_slider/cr_slider.html
@@ -1,10 +1,24 @@
-<link rel="import" href="chrome://resources/html/assert.html">
 <link rel="import" href="chrome://resources/html/polymer.html">
+<link rel="import" href="chrome://resources/cr_elements/policy/cr_policy_pref_behavior.html">
+<link rel="import" href="chrome://resources/html/assert.html">
 <link rel="import" href="chrome://resources/polymer/v1_0/paper-slider/paper-slider.html">
 
 <dom-module id="cr-slider">
   <template>
     <style>
+      :host {
+        display: inline-flex;
+      }
+
+      cr-policy-pref-indicator {
+        -webkit-margin-start: var(--checkbox-spacing);
+        align-self: center;
+      }
+
+      #labels[disabled] {
+        color: var(--paper-grey-400);
+      }
+
       div.outer {
         align-items: stretch;
         display: flex;
@@ -41,12 +55,16 @@
         width: 100%;
       }
     </style>
+    <template is="dom-if" if="[[pref.controlledBy]]" restamp>
+      <cr-policy-pref-indicator pref="[[pref]]"></cr-policy-pref-indicator>
+    </template>
     <div class="outer">
-      <paper-slider id="slider" disabled="[[disabled]]" snaps
+      <paper-slider id="slider"
+          disabled$="[[disableSlider_]]" snaps
           on-immediate-value-changed="onSliderChanged_" max="[[max]]"
           min="[[min]]">
       </paper-slider>
-      <div id="labels">
+      <div id="labels" disabled$="[[disableSlider_]]">
         <div id="label-begin">[[labelMin]]</div>
         <div id="label-end">[[labelMax]]</div>
       </div>
diff --git a/ui/webui/resources/cr_elements/cr_slider/cr_slider.js b/ui/webui/resources/cr_elements/cr_slider/cr_slider.js
index c95743a1..a7be6284 100644
--- a/ui/webui/resources/cr_elements/cr_slider/cr_slider.js
+++ b/ui/webui/resources/cr_elements/cr_slider/cr_slider.js
@@ -14,22 +14,15 @@
 Polymer({
   is: 'cr-slider',
 
+  behaviors: [CrPolicyPrefBehavior],
+
   properties: {
-    /** The value the slider represents and controls. */
-    value: {
-      type: Number,
-      notify: true,
-    },
+    /** @type {!chrome.settingsPrivate.PrefObject} */
+    pref: Object,
 
     /** @type {!Array<number>} Values corresponding to each tick. */
     tickValues: {type: Array, value: []},
 
-    disabled: {
-      type: Boolean,
-      value: false,
-      reflectToAttribute: true,
-    },
-
     min: Number,
 
     max: Number,
@@ -37,33 +30,48 @@
     labelMin: String,
 
     labelMax: String,
+
+    /** @private */
+    disableSlider_: {
+      computed: 'computeDisableSlider_(pref.*)',
+      type: Boolean,
+    },
   },
 
   observers: [
-    'valueChanged_(value, tickValues.*)',
+    'valueChanged_(pref.*, tickValues.*)',
   ],
 
   /**
-   * Sets the |value| property to the value corresponding to the knob position
-   * after a user action.
+   * Sets the |pref.value| property to the value corresponding to the knob
+   * position after a user action.
    * @private
    */
   onSliderChanged_: function() {
+    var newValue;
     if (this.tickValues && this.tickValues.length > 0)
-      this.value = this.tickValues[this.$.slider.immediateValue];
+      newValue = this.tickValues[this.$.slider.immediateValue];
     else
-      this.value = this.$.slider.immediateValue;
+      newValue = this.$.slider.immediateValue;
+
+    this.set('pref.value', newValue);
+  },
+
+  /** @private */
+  computeDisableSlider_: function() {
+    return this.hasAttribute('disabled') || this.isPrefEnforced();
   },
 
   /**
-   * Updates the knob position when |value| changes. If the knob is still being
-   * dragged, this instead forces |value| back to the current position.
+   * Updates the knob position when |pref.value| changes. If the knob is still
+   * being dragged, this instead forces |pref.value| back to the current
+   * position.
    * @private
    */
   valueChanged_: function() {
     // If |tickValues| is empty, simply set current value to the slider.
     if (this.tickValues.length == 0) {
-      this.$.slider.value = this.value;
+      this.$.slider.value = this.pref.value;
       return;
     }
 
@@ -76,23 +84,27 @@
     this.$.slider.maxMarkers = numTicks < MAX_TICKS ? numTicks : 0;
 
     if (this.$.slider.dragging && this.tickValues.length > 0 &&
-        this.value != this.tickValues[this.$.slider.immediateValue]) {
+        this.pref.value != this.tickValues[this.$.slider.immediateValue]) {
       // The value changed outside cr-slider but we're still holding the knob,
       // so set the value back to where the knob was.
       // Async so we don't confuse Polymer's data binding.
       this.async(function() {
-        this.value = this.tickValues[this.$.slider.immediateValue];
+        var newValue = this.tickValues[this.$.slider.immediateValue];
+        this.set('pref.value', newValue);
       });
       return;
     }
 
     // Convert from the public |value| to the slider index (where the knob
     // should be positioned on the slider).
-    var sliderIndex =
-        this.tickValues.length > 0 ? this.tickValues.indexOf(this.value) : 0;
+    var sliderIndex = this.tickValues.length > 0 ?
+        this.tickValues.indexOf(/** @type {number} */ (this.pref.value)) :
+        0;
     if (sliderIndex == -1) {
       // No exact match.
-      sliderIndex = this.findNearestIndex_(this.tickValues, this.value);
+      sliderIndex = this.findNearestIndex_(
+          this.tickValues,
+          /** @type {number} */ (this.pref.value));
     }
     this.$.slider.value = sliderIndex;
   },
diff --git a/ui/webui/resources/cr_elements/network/cr_network_list_item.html b/ui/webui/resources/cr_elements/network/cr_network_list_item.html
index 8a03c87..96bac4f 100644
--- a/ui/webui/resources/cr_elements/network/cr_network_list_item.html
+++ b/ui/webui/resources/cr_elements/network/cr_network_list_item.html
@@ -4,8 +4,8 @@
 <link rel="import" href="chrome://resources/polymer/v1_0/paper-icon-button/paper-icon-button-light.html">
 <link rel="import" href="chrome://resources/cr_elements/network/cr_network_icon.html">
 <link rel="import" href="chrome://resources/cr_elements/network/cr_onc_types.html">
+<link rel="import" href="chrome://resources/cr_elements/policy/cr_policy_indicator.html">
 <link rel="import" href="chrome://resources/cr_elements/policy/cr_policy_network_behavior.html">
-<link rel="import" href="chrome://resources/cr_elements/policy/cr_policy_pref_indicator.html">
 <link rel="import" href="chrome://resources/cr_elements/shared_style_css.html">
 
 <dom-module id="cr-network-list-item">
@@ -85,7 +85,7 @@
         -webkit-margin-end: 8px;
       }
 
-      cr-policy-pref-indicator {
+      cr-policy-indicator {
         padding: 0 var(--cr-icon-padding);
       }
     </style>
@@ -109,9 +109,9 @@
         </div>
       </div>
       <template is="dom-if" if="[[isPolicySource(networkState.Source)]]">
-        <cr-policy-pref-indicator
+        <cr-policy-indicator
             indicator-type="[[getIndicatorTypeForSource(networkState.Source)]]">
-        </cr-policy-pref-indicator>
+        </cr-policy-indicator>
       </template>
       <template is="dom-if"
           if="[[isSubpageButtonVisible_(networkState, showButtons)]]">
diff --git a/ui/webui/resources/cr_elements/policy/README.md b/ui/webui/resources/cr_elements/policy/README.md
index 673fd24..90cad32a 100644
--- a/ui/webui/resources/cr_elements/policy/README.md
+++ b/ui/webui/resources/cr_elements/policy/README.md
@@ -19,10 +19,10 @@
 
 ## Using an indicator
 
-Elements like `<cr-policy-pref-indicator>` and `<cr-policy-network-indicator>`
-are provided to be reused in WebUI pages:
+Elements like `<cr-policy-indicator>` and `<cr-policy-pref-indicator>` are
+provided to be reused in WebUI pages:
 
-    <cr-policy-pref-indicator pref="[[pref]]"></cr-policy-pref-indicator>
+    <cr-policy-indicator indicator-type="userPolicy"></cr-policy-indicator>
 
 Example: [settings-checkbox].
 
diff --git a/ui/webui/resources/cr_elements/policy/compiled_resources2.gyp b/ui/webui/resources/cr_elements/policy/compiled_resources2.gyp
index 9f82600b..d1fc61e3 100644
--- a/ui/webui/resources/cr_elements/policy/compiled_resources2.gyp
+++ b/ui/webui/resources/cr_elements/policy/compiled_resources2.gyp
@@ -4,6 +4,14 @@
 {
   'targets': [
     {
+      'target_name': 'cr_policy_indicator',
+      'dependencies': [
+        '<(DEPTH)/ui/webui/resources/js/compiled_resources2.gyp:assert',
+        'cr_policy_indicator_behavior',
+      ],
+      'includes': ['../../../../../third_party/closure_compiler/compile_js2.gypi'],
+    },
+    {
       'target_name': 'cr_policy_indicator_behavior',
       'dependencies': [
         '<(DEPTH)/ui/webui/resources/js/compiled_resources2.gyp:assert',
diff --git a/ui/webui/resources/cr_elements/policy/cr_policy_indicator.html b/ui/webui/resources/cr_elements/policy/cr_policy_indicator.html
new file mode 100644
index 0000000..cff4f8c
--- /dev/null
+++ b/ui/webui/resources/cr_elements/policy/cr_policy_indicator.html
@@ -0,0 +1,28 @@
+<link rel="import" href="chrome://resources/cr_elements/icons.html">
+<link rel="import" href="chrome://resources/html/polymer.html">
+<link rel="import" href="chrome://resources/polymer/v1_0/iron-icon/iron-icon.html">
+<link rel="import" href="chrome://resources/polymer/v1_0/paper-tooltip/paper-tooltip.html">
+<link rel="import" href="cr_policy_indicator_behavior.html">
+<link rel="import" href="cr_policy_vars_css.html">
+
+<dom-module id="cr-policy-indicator">
+  <style>
+    :host {
+      @apply(--cr-policy-indicator);
+    }
+
+    paper-tooltip {
+      --paper-tooltip: var(--cr-policy-tooltip);
+    }
+  </style>
+  <template>
+    <iron-icon id="indicator" tabindex="0" aria-label$="[[iconAriaLabel]]"
+        aria-describedby="tooltip" hidden$="[[!indicatorVisible]]"
+        icon="[[indicatorIcon]]"></iron-icon>
+    <paper-tooltip id="tooltip" for="indicator" position="top"
+        fit-to-visible-bounds>
+      [[indicatorTooltip]]
+    </paper-tooltip>
+  </template>
+  <script src="cr_policy_indicator.js"></script>
+</dom-module>
diff --git a/ui/webui/resources/cr_elements/policy/cr_policy_indicator.js b/ui/webui/resources/cr_elements/policy/cr_policy_indicator.js
new file mode 100644
index 0000000..bf4f0c5
--- /dev/null
+++ b/ui/webui/resources/cr_elements/policy/cr_policy_indicator.js
@@ -0,0 +1,14 @@
+// Copyright 2017 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.
+
+/** @fileoverview Polymer element for indicating policies by type. */
+Polymer({
+  is: 'cr-policy-indicator',
+
+  behaviors: [CrPolicyIndicatorBehavior],
+
+  properties: {
+    iconAriaLabel: String,
+  },
+});
diff --git a/ui/webui/resources/cr_elements_resources.grdp b/ui/webui/resources/cr_elements_resources.grdp
index a643686..162cc35a 100644
--- a/ui/webui/resources/cr_elements_resources.grdp
+++ b/ui/webui/resources/cr_elements_resources.grdp
@@ -83,6 +83,12 @@
                type="chrome_html"
                preprocess="true" />
   </if>
+  <structure name="IDR_CR_ELEMENTS_CR_POLICY_INDICATOR_HTML"
+             file="../../webui/resources/cr_elements/policy/cr_policy_indicator.html"
+             type="chrome_html" />
+  <structure name="IDR_CR_ELEMENTS_CR_POLICY_INDICATOR_JS"
+             file="../../webui/resources/cr_elements/policy/cr_policy_indicator.js"
+             type="chrome_html" />
   <structure name="IDR_CR_ELEMENTS_CR_POLICY_INDICATOR_BEHAVIOR_HTML"
              file="../../webui/resources/cr_elements/policy/cr_policy_indicator_behavior.html"
              type="chrome_html" />